Commit 9ca2a12a by 夏新然

解决冲突

2 parents 5cfbf6d1 8f739a8a
Showing 64 changed files with 7012 additions and 2705 deletions
No preview for this file type
......@@ -6,36 +6,37 @@
<script>
export default {
data() {
return {
}
return {};
},
created(){
let menus = JSON.parse(localStorage.getItem('menu'))
if(menus) {
this.$store.dispatch('GetMenuRole',menus).then(res => {})
created() {
let menus = JSON.parse(localStorage.getItem("menu"));
if (menus) {
this.$store.dispatch("GetMenuRole", menus).then(res => {});
}
let token = localStorage.getItem("atoken");
if (!token) {
console.log('errtoken')
this.$router.push("/login");
}
},
mounted(){
window.videoEquitTableHeight = document.body.clientHeight - 142 + 'px';
window.opsTableHeight = document.body.clientHeight - 260 + 'px';
if(document.body.clientWidth>1366){
window.oneSearchTableHeight = document.body.clientHeight - 250 + 'px';
window.twoSearchTableHeight = document.body.clientHeight - 280 + 'px';
}else {
window.oneSearchTableHeight = document.body.clientHeight - 280 + 'px';
window.twoSearchTableHeight = document.body.clientHeight - 315 + 'px';
}
mounted() {
window.videoEquitTableHeight = document.body.clientHeight - 142 + "px";
window.opsTableHeight = document.body.clientHeight - 260 + "px";
if (document.body.clientWidth > 1366) {
window.oneSearchTableHeight = document.body.clientHeight - 250 + "px";
window.twoSearchTableHeight = document.body.clientHeight - 280 + "px";
} else {
window.oneSearchTableHeight = document.body.clientHeight - 280 + "px";
window.twoSearchTableHeight = document.body.clientHeight - 315 + "px";
}
}
}
};
</script>
<style lang="scss">
#app {
height: 100%;
font-family:MicrosoftYaHeiUI;
font-family: MicrosoftYaHeiUI;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
......
import axios from 'axios'
import store from '../store/index.js'
import axios from "axios";
import store from "../store/index.js";
import router from "../router/index";
import {Message,Loading} from 'element-ui'
let loading;
......@@ -27,15 +28,17 @@ function endLoading() {
let service = axios.create({
// headers: {'Content-Type': 'application/json'},
timeout: 60000
})
});
// 添加请求拦截器
service.interceptors.request.use(
(config) => {
startLoading();
if (store.state.users.atoken) { // 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.authorization = store.state.users.atoken;
}else{
router.push("/login");
endLoading();
}
if (config.method == 'get') {
config.params = {
......@@ -43,16 +46,35 @@ service.interceptors.request.use(
...config.params
}
}
startLoading();
return config
},
(err) => {
// 请求错误处理
return Promise.reject(err)
// config => {
// let token = localStorage.getItem("atoken");
// if (token) {
// // 判断是否存在token,如果存在的话,则每个http header都加上token
// config.headers.authorization = token;
// } else {
// router.push("/login");
// }
// if (config.method == "get") {
// config.params = {
// _t: Date.parse(new Date()) / 1000,
// ...config.params
// };
// }
// return config;
// },
// error => {
// // 请求错误处理
// return Promise.reject(error);
}
)
);
// 添加响应拦截器
service.interceptors.response.use(
(response) => {
endLoading();
......@@ -69,12 +91,12 @@ service.interceptors.response.use(
}
return Promise.reject(err)
}
)
);
/**
* 创建统一封装过的 axios 实例
* @return {AxiosInstance}
*/
export default function() {
return service
return service;
}
......@@ -10,7 +10,7 @@ switch (process.env.NODE_ENV) {
baseUrl = "https://pre-server.feleti.cn"; // 预上线环境url
break;
case "production":
baseUrl = "http://192.168.9.133:20080"; // 生产环境url
baseUrl = "http://vion-panda.51vip.biz:52510"; // 生产环境url
break;
}
......
......@@ -32,9 +32,12 @@ export default {
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${devuid}/vchans/${refid}`); //获取分析流
},
sipSet(devid, userid) {
return api.get(`${baseUrl}/devconf_fx/devs/${devid}/${userid}/sip_server`)
return api.get(`${baseUrl}/devconf_fx/devs/${devid}/${userid}/sip_server`);
},
getStore(params) {
return api.get(`${baseUrl}/api/v1/devconf_fx/store_confs`, params)
return api.get(`${baseUrl}/api/v1/devconf_fx/store_confs`, params);
},
getFreelist(dev_unid, params) {
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${dev_unid}/fx_devs/free`, params)
}
};
import api from '../index'
import baseUrl from '../baseUrl'
import api from "../index";
import baseUrl from "../baseUrl";
export default {
devs(params){
return api.get(`${baseUrl}/api/v1/devconf_fx/devs`, params)
......@@ -19,7 +19,7 @@ export default {
getCode(params,id){
return api.get(`${baseUrl}/api/v1/codes/custom/cates/${id}/codes`, params)
},
editCamera(params,id,unid){
editCode(params,id,unid){
return api.post(`${baseUrl}/api/v1/codes/custom/cates/${id}/codes/${unid}`, params)
},
delCode(params,id,unid){
......@@ -52,35 +52,48 @@ export default {
return api.post(`${baseUrl}/api/v1/devconf_fx/devs/${id}/vfile_vchans`, params,{'Content-Type': 'multipart/form-data'})
},
getResource(params,id){
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${id}/status`, params)
},
getDevsName(params,id){
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${id}/fx_devs`, params)
},
getStoreConList(params){
return api.get(`${baseUrl}/api/v1/devconf_fx/store_confs`, params)
},
uploadStore(params){
return api.post(`${baseUrl}/api/v1/devconf_fx/store_confs`, params,{'Content-Type': 'multipart/form-data'})
},
getSubTask(params,id){
return api.get(`${baseUrl}/api/v1/devconf_fx/tasks/${id}/subtasks`, params)
},
delStore(params,id){
return api.delete(`${baseUrl}/api/v1/devconf_fx/store_confs/${id}`, params)
},
getsip(params,id,id2){
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/sip_server`, params)
},
addSip(params,id,id2){
return api.post(`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/sip_server`, params)
},
editSip(params,id,id2,id3){
return api.post(`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/${id3}/sip_server`, params)
},
delSip(params,id,id2,id3){
return api.delete(`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/${id3}/sip_server`, params)
}
}
\ No newline at end of file
getResource(params, id) {
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${id}/status`, params);
},
getDevsName(params, id) {
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${id}/fx_devs`, params);
},
getStoreConList(params) {
return api.get(`${baseUrl}/api/v1/devconf_fx/store_confs`, params);
},
uploadStore(params) {
return api.post(`${baseUrl}/api/v1/devconf_fx/store_confs`, params, {
"Content-Type": "multipart/form-data"
});
},
getSubTask(params, id) {
return api.get(`${baseUrl}/api/v1/devconf_fx/tasks/${id}/subtasks`, params);
},
delStore(params, id) {
return api.delete(`${baseUrl}/api/v1/devconf_fx/store_confs/${id}`, params);
},
getsip(params, id, id2) {
return api.get(
`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/sip_server`,
params
);
},
addSip(params, id, id2) {
return api.post(
`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/sip_server`,
params
);
},
editSip(params, id, id2, id3) {
return api.post(
`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/${id3}/sip_server`,
params
);
},
delSip(params, id, id2, id3) {
return api.delete(
`${baseUrl}/api/v1/devconf_fx/devs/${id}/${id2}/${id3}/sip_server`,
params
);
}
};
......@@ -13,7 +13,7 @@ export default {
return api.post(urls.editTask(taskid), params);
},
editSubTask(taskid, params) {
return api.post2(urls.setSubTask(taskid), params)
return api.post2(urls.setSubTask(taskid), params);
},
editRoi(taskid, subtaskid, params) {
return api.post(urls.editroi(taskid, subtaskid), params);
......
......@@ -8,7 +8,7 @@ export default {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}`;
},
editroi: (taskid, subtaskid) => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtasks/${subtaskid}}`; // ROI设置
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtasks/${subtaskid}`; // ROI设置
},
alternatestate: (taskid, subtaskid) => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}/suspend_alternate_task?s=${gitTimer()}`;
......
......@@ -160,6 +160,8 @@ html,body{
}
.nav-tag-box {
line-height: 40px;
height: 40px;
overflow: hidden;
}
.nav-tag-box .el-tag{
border-radius: 0;
......@@ -209,4 +211,7 @@ html,body{
}
.codes-tab-box .el-tabs__item{
width: 112px!important;
}
.is-opend {
background: red;
}
\ No newline at end of file
......@@ -23,7 +23,7 @@
<li class="dib"><span>Symbol</span></li>
</ul>
<a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=1565499" target="_blank" class="nav-more">查看项目</a>
<a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=1592179" target="_blank" class="nav-more">查看项目</a>
</div>
<div class="tab-container">
......@@ -31,75 +31,285 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe61e;</span>
<span class="icon iconfont">&#xe611;</span>
<div class="name"></div>
<div class="code-name">&amp;#xe611;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe612;</span>
<div class="name"></div>
<div class="code-name">&amp;#xe612;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe615;</span>
<div class="name"></div>
<div class="code-name">&amp;#xe615;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe619;</span>
<div class="name">左下</div>
<div class="code-name">&amp;#xe619;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61f;</span>
<div class="name">右下</div>
<div class="code-name">&amp;#xe61f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe620;</span>
<div class="name">左上</div>
<div class="code-name">&amp;#xe620;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe621;</span>
<div class="name"></div>
<div class="code-name">&amp;#xe621;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe626;</span>
<div class="name">右上</div>
<div class="code-name">&amp;#xe626;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe628;</span>
<div class="name">启动</div>
<div class="code-name">&amp;#xe628;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe629;</span>
<div class="name">密码</div>
<div class="code-name">&amp;#xe629;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62a;</span>
<div class="name">迁移</div>
<div class="code-name">&amp;#xe62a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62b;</span>
<div class="name">用户名</div>
<div class="code-name">&amp;#xe62b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62c;</span>
<div class="name">修 改</div>
<div class="code-name">&amp;#xe62c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62d;</span>
<div class="name">修 改 copy</div>
<div class="code-name">&amp;#xe62d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62e;</span>
<div class="name">暂停</div>
<div class="code-name">&amp;#xe62e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61a;</span>
<div class="name">导出</div>
<div class="code-name">&amp;#xe61a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61b;</span>
<div class="name">重型罐式</div>
<div class="code-name">&amp;#xe61b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61c;</span>
<div class="name">展示</div>
<div class="code-name">&amp;#xe61c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61d;</span>
<div class="name">导入</div>
<div class="code-name">&amp;#xe61d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61e;</span>
<div class="name">危险品</div>
<div class="code-name">&amp;#xe61e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe616;</span>
<div class="name">日历</div>
<div class="code-name">&amp;#xe616;</div>
<span class="icon iconfont">&#xe622;</span>
<div class="name">运行路数</div>
<div class="code-name">&amp;#xe622;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe623;</span>
<div class="name">开启</div>
<div class="code-name">&amp;#xe623;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe624;</span>
<div class="name">icon 选中智能检索</div>
<div class="code-name">&amp;#xe624;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe625;</span>
<div class="name">系统版本</div>
<div class="code-name">&amp;#xe625;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe627;</span>
<div class="name">运行异常</div>
<div class="code-name">&amp;#xe627;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe600;</span>
<div class="name">导入</div>
<div class="name">icon 选中首页(2)</div>
<div class="code-name">&amp;#xe600;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe87a;</span>
<div class="name">展示</div>
<div class="code-name">&amp;#xe87a;</div>
<span class="icon iconfont">&#xe601;</span>
<div class="name">icon 选中任务管理(1)</div>
<div class="code-name">&amp;#xe601;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe662;</span>
<div class="name">添加</div>
<div class="code-name">&amp;#xe662;</div>
<span class="icon iconfont">&#xe602;</span>
<div class="name">icon 选中资源管理</div>
<div class="code-name">&amp;#xe602;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61c;</span>
<div class="name">播放</div>
<div class="code-name">&amp;#xe61c;</div>
<span class="icon iconfont">&#xe603;</span>
<div class="name">icon 选中首页(1)</div>
<div class="code-name">&amp;#xe603;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe604;</span>
<div class="name">icon 选中资源管理(1)</div>
<div class="code-name">&amp;#xe604;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe605;</span>
<div class="name">信息存储</div>
<div class="code-name">&amp;#xe605;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe606;</span>
<div class="name">icon 选中系统运维</div>
<div class="code-name">&amp;#xe606;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe607;</span>
<div class="name">播放</div>
<div class="name">icon 选中智能检索(1)</div>
<div class="code-name">&amp;#xe607;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe644;</span>
<div class="name">删 除</div>
<div class="code-name">&amp;#xe644;</div>
<span class="icon iconfont">&#xe608;</span>
<div class="name">icon 选中任务管理</div>
<div class="code-name">&amp;#xe608;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe664;</span>
<div class="name">迁移</div>
<div class="code-name">&amp;#xe664;</div>
<span class="icon iconfont">&#xe609;</span>
<div class="name">删 除(1)</div>
<div class="code-name">&amp;#xe609;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe685;</span>
<div class="name">暂停</div>
<div class="code-name">&amp;#xe685;</div>
<span class="icon iconfont">&#xe60a;</span>
<div class="name">定位 位置</div>
<div class="code-name">&amp;#xe60a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe643;</span>
<div class="name">暂停 停止</div>
<div class="code-name">&amp;#xe643;</div>
<span class="icon iconfont">&#xe60b;</span>
<div class="name">系统信息</div>
<div class="code-name">&amp;#xe60b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe632;</span>
<div class="name">修 改</div>
<div class="code-name">&amp;#xe632;</div>
<span class="icon iconfont">&#xe60c;</span>
<div class="name">分析资源</div>
<div class="code-name">&amp;#xe60c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60d;</span>
<div class="name">渣土车抓拍</div>
<div class="code-name">&amp;#xe60d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60e;</span>
<div class="name">多选/选中</div>
<div class="code-name">&amp;#xe60e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60f;</span>
<div class="name">单选/选中</div>
<div class="code-name">&amp;#xe60f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe610;</span>
<div class="name">设备信息</div>
<div class="code-name">&amp;#xe610;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe613;</span>
<div class="name">icon 选中首页</div>
<div class="code-name">&amp;#xe613;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe614;</span>
<div class="name">保存 面性</div>
<div class="code-name">&amp;#xe614;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe616;</span>
<div class="name">重置</div>
<div class="code-name">&amp;#xe616;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe617;</span>
<div class="name">添加</div>
<div class="code-name">&amp;#xe617;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe618;</span>
<div class="name">删 除</div>
<div class="code-name">&amp;#xe618;</div>
</li>
</ul>
......@@ -153,236 +363,831 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-daochu"></span>
<span class="icon iconfont iconshang"></span>
<div class="name">
导出
</div>
<div class="code-name">.icon-daochu
<div class="code-name">.iconshang
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-rili"></span>
<span class="icon iconfont iconxia"></span>
<div class="name">
日历
</div>
<div class="code-name">.icon-rili
<div class="code-name">.iconxia
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-login"></span>
<span class="icon iconfont iconzuo"></span>
<div class="name">
导入
</div>
<div class="code-name">.icon-login
<div class="code-name">.iconzuo
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zhanshi"></span>
<span class="icon iconfont iconzuoxia"></span>
<div class="name">
展示
左下
</div>
<div class="code-name">.icon-zhanshi
<div class="code-name">.iconzuoxia
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-add-circle-s"></span>
<span class="icon iconfont iconyouxia"></span>
<div class="name">
添加
右下
</div>
<div class="code-name">.icon-add-circle-s
<div class="code-name">.iconyouxia
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bofang1"></span>
<span class="icon iconfont iconzuoshang"></span>
<div class="name">
播放
左上
</div>
<div class="code-name">.icon-bofang1
<div class="code-name">.iconzuoshang
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bofang"></span>
<span class="icon iconfont iconyou"></span>
<div class="name">
播放
</div>
<div class="code-name">.icon-bofang
<div class="code-name">.iconyou
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-detail"></span>
<span class="icon iconfont iconyoushang"></span>
<div class="name">
删 除
右上
</div>
<div class="code-name">.icon-detail
<div class="code-name">.iconyoushang
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-Migration"></span>
<span class="icon iconfont iconqidong"></span>
<div class="name">
迁移
启动
</div>
<div class="code-name">.icon-Migration
<div class="code-name">.iconqidong
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zanting"></span>
<span class="icon iconfont iconmima"></span>
<div class="name">
暂停
密码
</div>
<div class="code-name">.icon-zanting
<div class="code-name">.iconmima
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zantingtingzhi"></span>
<span class="icon iconfont iconqianyi"></span>
<div class="name">
暂停 停止
迁移
</div>
<div class="code-name">.iconqianyi
</div>
</li>
<li class="dib">
<span class="icon iconfont iconyonghuming"></span>
<div class="name">
用户名
</div>
<div class="code-name">.icon-zantingtingzhi
<div class="code-name">.iconyonghuming
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xiugai"></span>
<span class="icon iconfont iconxiugai"></span>
<div class="name">
修 改
</div>
<div class="code-name">.icon-xiugai
<div class="code-name">.iconxiugai
</div>
</li>
</ul>
<div class="article markdown">
<h2 id="font-class-">font-class 引用</h2>
<hr>
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
<p>与 Unicode 使用方式相比,具有如下特点:</p>
<ul>
<li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
<li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"
iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont iconxiugaicopy"></span>
<div class="name">
修 改 copy
</div>
<div class="code-name">.iconxiugaicopy
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-daochu"></use>
</svg>
<div class="name">导出</div>
<div class="code-name">#icon-daochu</div>
</li>
<li class="dib">
<span class="icon iconfont iconzanting"></span>
<div class="name">
暂停
</div>
<div class="code-name">.iconzanting
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-rili"></use>
</svg>
<div class="name">日历</div>
<div class="code-name">#icon-rili</div>
</li>
<li class="dib">
<span class="icon iconfont icondaochu"></span>
<div class="name">
导出
</div>
<div class="code-name">.icondaochu
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-login"></use>
</svg>
<div class="name">导入</div>
<div class="code-name">#icon-login</div>
</li>
<li class="dib">
<span class="icon iconfont iconzhongxingguanshi"></span>
<div class="name">
重型罐式
</div>
<div class="code-name">.iconzhongxingguanshi
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zhanshi"></use>
</svg>
<div class="name">展示</div>
<div class="code-name">#icon-zhanshi</div>
</li>
<li class="dib">
<span class="icon iconfont iconzhanshi"></span>
<div class="name">
展示
</div>
<div class="code-name">.iconzhanshi
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-add-circle-s"></use>
</svg>
<div class="name">添加</div>
<div class="code-name">#icon-add-circle-s</div>
</li>
<li class="dib">
<span class="icon iconfont icondaoru"></span>
<div class="name">
导入
</div>
<div class="code-name">.icondaoru
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bofang1"></use>
</svg>
<div class="name">播放</div>
<div class="code-name">#icon-bofang1</div>
</li>
<li class="dib">
<span class="icon iconfont iconweixianpin"></span>
<div class="name">
危险品
</div>
<div class="code-name">.iconweixianpin
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bofang"></use>
</svg>
<div class="name">播放</div>
<div class="code-name">#icon-bofang</div>
</li>
<li class="dib">
<span class="icon iconfont iconyunhanglushu"></span>
<div class="name">
运行路数
</div>
<div class="code-name">.iconyunhanglushu
</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-detail"></use>
</svg>
<div class="name">删 除</div>
<div class="code-name">#icon-detail</div>
</li>
<li class="dib">
<span class="icon iconfont iconkaiqi"></span>
<div class="name">
开启
</div>
<div class="code-name">.iconkaiqi
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongzhinengjiansuo1"></span>
<div class="name">
icon 选中智能检索
</div>
<div class="code-name">.iconiconxuanzhongzhinengjiansuo1
</div>
</li>
<li class="dib">
<span class="icon iconfont iconxitongbanben"></span>
<div class="name">
系统版本
</div>
<div class="code-name">.iconxitongbanben
</div>
</li>
<li class="dib">
<span class="icon iconfont iconyunhangyichang"></span>
<div class="name">
运行异常
</div>
<div class="code-name">.iconyunhangyichang
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongshouye"></span>
<div class="name">
icon 选中首页(2)
</div>
<div class="code-name">.iconiconxuanzhongshouye
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongrenwuguanli"></span>
<div class="name">
icon 选中任务管理(1)
</div>
<div class="code-name">.iconiconxuanzhongrenwuguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongziyuanguanli"></span>
<div class="name">
icon 选中资源管理
</div>
<div class="code-name">.iconiconxuanzhongziyuanguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongshouye1"></span>
<div class="name">
icon 选中首页(1)
</div>
<div class="code-name">.iconiconxuanzhongshouye1
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongziyuanguanli1"></span>
<div class="name">
icon 选中资源管理(1)
</div>
<div class="code-name">.iconiconxuanzhongziyuanguanli1
</div>
</li>
<li class="dib">
<span class="icon iconfont iconxinxicunchu"></span>
<div class="name">
信息存储
</div>
<div class="code-name">.iconxinxicunchu
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongxitongyunwei"></span>
<div class="name">
icon 选中系统运维
</div>
<div class="code-name">.iconiconxuanzhongxitongyunwei
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongzhinengjiansuo"></span>
<div class="name">
icon 选中智能检索(1)
</div>
<div class="code-name">.iconiconxuanzhongzhinengjiansuo
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongrenwuguanli1"></span>
<div class="name">
icon 选中任务管理
</div>
<div class="code-name">.iconiconxuanzhongrenwuguanli1
</div>
</li>
<li class="dib">
<span class="icon iconfont iconshanchu"></span>
<div class="name">
删 除(1)
</div>
<div class="code-name">.iconshanchu
</div>
</li>
<li class="dib">
<span class="icon iconfont icondingweiweizhi"></span>
<div class="name">
定位 位置
</div>
<div class="code-name">.icondingweiweizhi
</div>
</li>
<li class="dib">
<span class="icon iconfont iconxitongxinxi"></span>
<div class="name">
系统信息
</div>
<div class="code-name">.iconxitongxinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont iconfenxiziyuan"></span>
<div class="name">
分析资源
</div>
<div class="code-name">.iconfenxiziyuan
</div>
</li>
<li class="dib">
<span class="icon iconfont iconzhatuchezhuapai"></span>
<div class="name">
渣土车抓拍
</div>
<div class="code-name">.iconzhatuchezhuapai
</div>
</li>
<li class="dib">
<span class="icon iconfont iconduoxuanxuanzhong"></span>
<div class="name">
多选/选中
</div>
<div class="code-name">.iconduoxuanxuanzhong
</div>
</li>
<li class="dib">
<span class="icon iconfont icondanxuanxuanzhong"></span>
<div class="name">
单选/选中
</div>
<div class="code-name">.icondanxuanxuanzhong
</div>
</li>
<li class="dib">
<span class="icon iconfont iconshebeixinxi"></span>
<div class="name">
设备信息
</div>
<div class="code-name">.iconshebeixinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont iconiconxuanzhongshouye2"></span>
<div class="name">
icon 选中首页
</div>
<div class="code-name">.iconiconxuanzhongshouye2
</div>
</li>
<li class="dib">
<span class="icon iconfont iconbaocunmianxing"></span>
<div class="name">
保存 面性
</div>
<div class="code-name">.iconbaocunmianxing
</div>
</li>
<li class="dib">
<span class="icon iconfont iconzhongzhi"></span>
<div class="name">
重置
</div>
<div class="code-name">.iconzhongzhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icontianjia"></span>
<div class="name">
添加
</div>
<div class="code-name">.icontianjia
</div>
</li>
<li class="dib">
<span class="icon iconfont iconshanchu1"></span>
<div class="name">
删 除
</div>
<div class="code-name">.iconshanchu1
</div>
</li>
</ul>
<div class="article markdown">
<h2 id="font-class-">font-class 引用</h2>
<hr>
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
<p>与 Unicode 使用方式相比,具有如下特点:</p>
<ul>
<li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
<li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont iconxxx"&gt;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"
iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconshang"></use>
</svg>
<div class="name"></div>
<div class="code-name">#iconshang</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxia"></use>
</svg>
<div class="name"></div>
<div class="code-name">#iconxia</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzuo"></use>
</svg>
<div class="name"></div>
<div class="code-name">#iconzuo</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzuoxia"></use>
</svg>
<div class="name">左下</div>
<div class="code-name">#iconzuoxia</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconyouxia"></use>
</svg>
<div class="name">右下</div>
<div class="code-name">#iconyouxia</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzuoshang"></use>
</svg>
<div class="name">左上</div>
<div class="code-name">#iconzuoshang</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconyou"></use>
</svg>
<div class="name"></div>
<div class="code-name">#iconyou</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-Migration"></use>
<use xlink:href="#iconyoushang"></use>
</svg>
<div class="name">右上</div>
<div class="code-name">#iconyoushang</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconqidong"></use>
</svg>
<div class="name">启动</div>
<div class="code-name">#iconqidong</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconmima"></use>
</svg>
<div class="name">密码</div>
<div class="code-name">#iconmima</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconqianyi"></use>
</svg>
<div class="name">迁移</div>
<div class="code-name">#icon-Migration</div>
<div class="code-name">#iconqianyi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zanting"></use>
<use xlink:href="#iconyonghuming"></use>
</svg>
<div class="name">用户名</div>
<div class="code-name">#iconyonghuming</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxiugai"></use>
</svg>
<div class="name">修 改</div>
<div class="code-name">#iconxiugai</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxiugaicopy"></use>
</svg>
<div class="name">修 改 copy</div>
<div class="code-name">#iconxiugaicopy</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzanting"></use>
</svg>
<div class="name">暂停</div>
<div class="code-name">#icon-zanting</div>
<div class="code-name">#iconzanting</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zantingtingzhi"></use>
<use xlink:href="#icondaochu"></use>
</svg>
<div class="name">暂停 停止</div>
<div class="code-name">#icon-zantingtingzhi</div>
<div class="name">导出</div>
<div class="code-name">#icondaochu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xiugai"></use>
<use xlink:href="#iconzhongxingguanshi"></use>
</svg>
<div class="name">修 改</div>
<div class="code-name">#icon-xiugai</div>
<div class="name">重型罐式</div>
<div class="code-name">#iconzhongxingguanshi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzhanshi"></use>
</svg>
<div class="name">展示</div>
<div class="code-name">#iconzhanshi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icondaoru"></use>
</svg>
<div class="name">导入</div>
<div class="code-name">#icondaoru</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconweixianpin"></use>
</svg>
<div class="name">危险品</div>
<div class="code-name">#iconweixianpin</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconyunhanglushu"></use>
</svg>
<div class="name">运行路数</div>
<div class="code-name">#iconyunhanglushu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconkaiqi"></use>
</svg>
<div class="name">开启</div>
<div class="code-name">#iconkaiqi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongzhinengjiansuo1"></use>
</svg>
<div class="name">icon 选中智能检索</div>
<div class="code-name">#iconiconxuanzhongzhinengjiansuo1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxitongbanben"></use>
</svg>
<div class="name">系统版本</div>
<div class="code-name">#iconxitongbanben</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconyunhangyichang"></use>
</svg>
<div class="name">运行异常</div>
<div class="code-name">#iconyunhangyichang</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongshouye"></use>
</svg>
<div class="name">icon 选中首页(2)</div>
<div class="code-name">#iconiconxuanzhongshouye</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongrenwuguanli"></use>
</svg>
<div class="name">icon 选中任务管理(1)</div>
<div class="code-name">#iconiconxuanzhongrenwuguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongziyuanguanli"></use>
</svg>
<div class="name">icon 选中资源管理</div>
<div class="code-name">#iconiconxuanzhongziyuanguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongshouye1"></use>
</svg>
<div class="name">icon 选中首页(1)</div>
<div class="code-name">#iconiconxuanzhongshouye1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongziyuanguanli1"></use>
</svg>
<div class="name">icon 选中资源管理(1)</div>
<div class="code-name">#iconiconxuanzhongziyuanguanli1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxinxicunchu"></use>
</svg>
<div class="name">信息存储</div>
<div class="code-name">#iconxinxicunchu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongxitongyunwei"></use>
</svg>
<div class="name">icon 选中系统运维</div>
<div class="code-name">#iconiconxuanzhongxitongyunwei</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongzhinengjiansuo"></use>
</svg>
<div class="name">icon 选中智能检索(1)</div>
<div class="code-name">#iconiconxuanzhongzhinengjiansuo</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongrenwuguanli1"></use>
</svg>
<div class="name">icon 选中任务管理</div>
<div class="code-name">#iconiconxuanzhongrenwuguanli1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconshanchu"></use>
</svg>
<div class="name">删 除(1)</div>
<div class="code-name">#iconshanchu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icondingweiweizhi"></use>
</svg>
<div class="name">定位 位置</div>
<div class="code-name">#icondingweiweizhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconxitongxinxi"></use>
</svg>
<div class="name">系统信息</div>
<div class="code-name">#iconxitongxinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconfenxiziyuan"></use>
</svg>
<div class="name">分析资源</div>
<div class="code-name">#iconfenxiziyuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzhatuchezhuapai"></use>
</svg>
<div class="name">渣土车抓拍</div>
<div class="code-name">#iconzhatuchezhuapai</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconduoxuanxuanzhong"></use>
</svg>
<div class="name">多选/选中</div>
<div class="code-name">#iconduoxuanxuanzhong</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icondanxuanxuanzhong"></use>
</svg>
<div class="name">单选/选中</div>
<div class="code-name">#icondanxuanxuanzhong</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconshebeixinxi"></use>
</svg>
<div class="name">设备信息</div>
<div class="code-name">#iconshebeixinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconiconxuanzhongshouye2"></use>
</svg>
<div class="name">icon 选中首页</div>
<div class="code-name">#iconiconxuanzhongshouye2</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconbaocunmianxing"></use>
</svg>
<div class="name">保存 面性</div>
<div class="code-name">#iconbaocunmianxing</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzhongzhi"></use>
</svg>
<div class="name">重置</div>
<div class="code-name">#iconzhongzhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icontianjia"></use>
</svg>
<div class="name">添加</div>
<div class="code-name">#icontianjia</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconshanchu1"></use>
</svg>
<div class="name">删 除</div>
<div class="code-name">#iconshanchu1</div>
</li>
</ul>
......
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1578278184611'); /* IE9 */
src: url('iconfont.eot?t=1578278184611#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAeoAAsAAAAADmAAAAdbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCEWgqNTIsRATYCJAM0CxwABCAFhG0HgSQbQQwRFazBIPuZkMmls+tcW2MxEMf6VTTR1jP59LRp7+/fRXZhQ4yo1sQXiErF6WnayXLnULGYVUzgTJLUkBPLdY66HwFQA//7zvX3CYWOMEN59pMC9l2XtrlC9tLs09V+v6reoOkizUKitid++2Xxw9QSQ4OkIRGSiEznJ8QaGVKi1IxF7Go26cAe5N1AAPCIRleQseOnSlCBBbMIui2cV5oP1UAm2BnhBCq7YsKZLMh6cFAxnzOtANbZ3ye30JuoAAYcBbvXzJJxRRjpxfX3qeyTkUVlWDbHASTbARRAVwBsYjszseAYqG/oCgq++qssPgMQCh0oVF54lV69N9Ib7e3tHest8BZ5P77+vi+lGzMxW0oQyr3D/8kDKJRgoACBBgJU4KAGDxYgCoBpwlnNA1leSAKtUAkLFvUgMMBIEBTAaBAIsDfkTeAYEATgWBBUwAIQOGARCGrgx+Dg8XgpUB9spqW+4QBSAEagrPNgQUUoYMDdXsbwAiVYewUak6LRhPIB+liNmmg0JCxSJdNRntXpWDZPGUTc1xBFTs1mugwejwny/qQKwZZSWFVnqdUX7OCtQdv2AU7ne9ZdgMspadxuE3V7TMLOvZY9PE94p1NiXC6D35KnEsueQq2tylKp12zeLFeY2nBeYzVLF2KQLjh2LpJpON9Pe9IRQxvt2dXnEjU77OHUL0IkdY4UAQIJ2mw/H1ZWVbl206IirZuBRwzOr7CFLDJW7uB5Ay9pjEYTb90WJG2uDjZUVAj+tqoQU1XtAqcztuU0jolpdEs77BaH7bx8LpHuI3OdXJ7bnSVMoxP7xTG80GoEd1tMOffYDMRdspTXOTMgV2ws3yhUHUEVTyorD2ClXBFctqE+6dLmHXpatbO6lVwmHrsYyTZc6ud38koM13h5Ls0fzoM/6XOl0aAxmTTbdoVK1bsFrW1vuLF2T7q47VxYds35JO1OR0RunX0unyGk81S2e4+32sO5yyFehgi2+lxJa4EYJKOA3hx+8sPBo+xbVxzb7Bz7nTuesxx1/Czafjx/GCNFWz1lh6REcwsGvo3ZWCSZFkgGk8My3G591x+6I1GYFjK2m+Vy02oyKXhU2DVdSLew3366k3D3x7Dfo0N118JGB086Su887TVzu75VP5ybPXrhOlK7mQwzc0YoV2TMGU/ozNYubXpK+hiJ2UyMbcRgCoykGMcZavWtmHhjsfIz8bO8xXk6U5FXMCVKN2R37sLM/+Xgzj19rlBfz132mv7JjC5uV5yOkYJEfR4TF9u5f5f+/+NTdI6NY9Dz0uO4FHbnM2Wtaqtyj/LZDjYljtwbI45hxJZVxUb1yBO1zunLBkxZehnnaierx7/VvKp4VuqIb1JfqsvUL0PdVqGj4OuRy35sTk5Gsly2gPtgZdeuDQXP7reO5Mnu3z7A3rjBHhC0qEb1Wq80s9vWMdNDIexlZs3ctgo6AQKONnPwkenjo8ZGzp0XOSZ6fL0YHDl27tyxUeOj6ieYUT2zPg8bM3eeYLbNmdum3uO/R4XWdjm+urqtXbnXf6+qvV11xv/MUsQmiLvYjn/oLk4dHaqW/tPB7sLW//xDm1+s86z1i/Vb43bn/BCFPuboxYdqhMVCzaHoqm8WNM5rR2+KkbJBFYtYleHiSLFIFEc9G4GeN/oGfBw4P3hk0PxAumLir7XD85ppeJ8Rnc3r/zlU2LnviHD603BpjEN2UO0XcpMjT7kI/fL6Do+I52+p45uHr49X3+Lj1604s/LMqudnnp9+PuzsCz4+/Gz4LP/1Z40XI1ug9xz50qxZUX9EUealDjdAqhnXNXpcjTRq75iyPboFxo3sQ9fTPiNHJpjChO8Q48gJTwnfq0P7yt4f9fD+6Hx7bs6RvZmZ/Qr7SYVdjs6aa56L8ucA4KthQUsAgHZmnL6rX7IRVJnG/quRRm9Xzvjgu083UDGo69BEY4hkykXwn1VsR0BBuZOD0X/rQuOaGukpWvBfsReWv/OdItdv6BOV8Hmu/m2gPTUUd+dePlgGoAIDLKz8MxCLGW7/6bXGsrRsqcpFfFcHJwF5A7FaTIWyjgHA8wXAP0JJAP7ajS14YeWPyBbcAwZKRAGFConurHdX4CCgLyigwgjg0QUTzhcQiOWgIKwaQGd8HACBDgeBgQgHUOjQ5s56/wkc9LgDCugIBR5GEnhFAcl0Quc3gkZxhukPyHJxIkfPXfc39Gsy0q/ZqC+UStUwtP1w8wMWlE0cU7/9qOrACWe4D+6HKTEswju02gbVZdt1btKxreW8OceNoFGddAZMf2nJcnHL6/nIz7+hX5ORGeNWab9QKm0eMKBFv4D7AysLjXsofeu3H6HEHcihwhlwTxwTb2DAMnm3HVptEVaoW7boaD63KGt3b8v3+QYAHuwGWsIQSljCEQVREhVRk1/aK2mIlog4LjJsw3oolOgosady8h9MqYEuzTw3lsQmbOrJxM4UPxzb7Y5nVEPp7JH8zSPiJbqaolT8NUlyx/9Ax7+0ekObDQ==') format('woff2'),
url('iconfont.woff?t=1578278184611') format('woff'),
url('iconfont.ttf?t=1578278184611') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1578278184611#iconfont') format('svg'); /* iOS 4.1- */
src: url('iconfont.eot?t=1582789434394'); /* IE9 */
src: url('iconfont.eot?t=1582789434394#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAABZoAAsAAAAAKvgAABYXAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCHdAq+aLEdATYCJAOBKAtWAAQgBYRtB4RXGw4jZQRsHIDYM198RKWmlf3/hwRuDJFyWO8VUbGkpo7GxXHYEN0STft86NREkJISUQCHfwL2jONm+499rE8swiEcJ13e+t/xulm4otlQSp6HP+R33vhrTeCfjQmyFnCAJR6lkQR4Wz/w2+z9IvpjgUoIxmYF5ikKBmurESdWA2u0WerGqi/XzkWn61Cvigg4nMvHAWDU5JOcRY/+ml6TK1y6NFcSwk/ICbnHVIOZpKhkrPn17fv3cu3f5OHMbo6KrsIAKiBJFPgAXFW+s4k9+EQFRNWpOhh0+7ek9aTtGfJFZDoRGZGKGp8lWZMbgSffDKkKcl4zZD2VHWmgCVGybeH7X6EMDvYiiQCC5+NUDuASfACQu08rSQdNsDkAq7aptZagwAXE/p9OXaWiUh4JVdr6smwds033JRnOrPBZJaUol3wuGUoAUzfAUWfnpVJRKqFToCkwLG0nHDuhTl0Lx0MZoDumxkO2/XtgxXRETTyPmmMjDd77v99TMGrTuXL3ev85mo49Kiif6d0LNKGrE2kxXA8iT7tzHxCGqwW9gm/+78t/t4UGqoEG7KPH+nuvKd/Ki5ltvgKsHczyeli+ouEcnfIDHXyHhXru+yg2wH2hrcNRXpuNGK5ou8iKVWvwfWvWbVi0atOWbTt27dl3oKg2HGqOHDvRTZk2Y9acAYOGzFuwaMmwZSNGjRk3cf7jTVIGgW2OQ72zx1fE4LBCAFaJgDViCh0WCBY2wDpxYIO4sEg8kRcIsEl82CIf2CYEO0TCLlGwRzTsE4YDEkAhIVQSiV4RAxySBBpJ4YhkcExyOCEFdFLCFKlgmtQwQxqjR7RgIDqAAdLDIBlgiIwwTyZYILN0aywAS2SFYbIZvWMHGCEHjJITxsgF4+SGCfJIHC8smwSlzvEcwE8w8mvR/QqsKMNwqp2TOmokIey5huU7CYnt7vtfUr2Ve5PFwDM4V0CsbOlwcpfZubiNzY7YjVvbtzQ3G1C0I6bETNMWqPy1KLFAGEBfUoiQO9gC8B6rCC3EqQwZSWsglLKQYexavsV8P0kxkJbCzJOAqpot5gVSSi5W3ER9TdPsEAGl+YjSxPQP9dbOHzBcV+Hq764SGiOXhYBCIuzxZKRGXHGQD+tBwPLO9/eW9+6+XiMhwsd8YkTn69QH7JbgvcsGI739pd17r5IY5MYj6LowF2329LK9+64ryqipzUSd3mJCqPF5BQB34Ha4C35dfS4wxtp6Wkeve3fKA8LHVYkB4U55KefH2xtbRjTXutw5WcuBJKO225sn1T7eN9Ii0HVhE9c1myYpnXukt8fat5dorSjkETFrFUVtF0F+q3KNtrH+0dbrNnv4xxWAZ1Qd/uTv67Ca63R1h5lCyebu++QV79+uRlxWCZWkupPh+9aDfP3b102Tbz68+apx7KUBCx3kohvvRLW16XAvQKRCkbikocviLgGKrmRsmfpfS7NtptCTy9L/XKsKHus+xW/hxXOyh6thLtS3/Is4/+y8R1zT+iIVkqYszyFR+FhS15t91W1E4l/sjLDp7k5GaVXqunvrzgUA6TbWXQAZFJZLL+fWcTHoNwIUzAqUTIViOqW+2WEwJ8hltWQaMl4QOL3xsmE6k5ZCVWl0Oy1Rz+sefh+A72E02ePhD3sOqJtITPuKH/GExizcEVxl06zfwd//0/Xf67rqlFgwYZlAHu5UTJ23b59pw6/YmraSXbX4ev7O563ixkwcCcqBg0BbIBcsS+zti99kVN7tAoGUNRrS0VwHD8tiYzSPN/JFuTmpNscVTLxmLxuQrsIylvBZwbNBHCb5Zc2IPh+1IyJCiHSd5NNISzGV78KtJS4e+iVk0hbafcVIsKkVag4bMRu5A+xvsk4cSDTiW3NSuHB5iw6kb2MYyEuffss+v9sYAXOoxcwlHg+oGlsWMIsRNjCW1DG6Wx9C5y6PLCrAaCoAyEYQDGkYOOj8TkRCFtNkV9AoJr5lAE6QrWE1OLIeTvVyjbQgEzh7iV0g4vEYrUt22WkWR6uSutMtwoo3j+8l9bN9KvIJjTd1LHQvdDIi1k5BZ5FHs9M2ZBLIohOQ1tU6PrJxoHQ913bX8busF7K/aoPsN1qWrWTfW8+1DXeCXb3PHrhcLe0N1lIm8I9DMj/jRmAtwXLtG+EMc6ry1qRor58tMNNkrZXalexj0S7vtC7lTdW6xccvTsrDhpqxdECKummh8Zh3wiNp2iI2L1HHfMh6esKyNy9vXbIQvY80SGTkj2oJ8gSWo9vBhPTx6lFXnVORTE2cU15PyfSKH268yzq4LOYd0inu8G51j25krymDFqsfP3imkmkVoXAU39Xy7KhF6XlqaRgpfs+1f+N6B6vrk8s3zXJHUOI2sZijhhYC7fAUjMbWlxLKMUqigXwM9Bq8nVLtdFvs2kpVEJJNh91r2HjQAFp5dxL15VnfnBy5CtVpNRxpshpkW52NNzNNYUs906u5JrvHJg6cjTUBug7MLWvnYUwCSca+yphb2/gZ5KxC9c1z/m7YiDegpTxQLwmDnc/PPlfVtwLe0/ph/ty14kf6L1vhcvrdAOMdH2QOjVoSCjDNl6vgCWZ5AID5sLvqd43FuhoSiSYF5AcE6+V8yAPYU2mm9EYDHRBTCmABStaVTLsdkuI0keXWcd9FhwDdL9+6j3TgbtfHJjQlaZ/DhD2WjXHhz8677ycl6uzaxxb/+kv6QJcr+M5H4UbQlrjX5vL+ksTrQHxP7App2po2QABq5qkFlunlp4/ME4ktisiaczrvEEsyCPr2AKpaZ29zStgyttDQ17PmX7LXTa6qHXXGrwihtx9h0BmzXRALsF4DodqJWiBvpe9CxEhkkmPg5jUbFJ2qAylvTxoKMyUJXMmyQqLnRiWn6oPPfJzySx4yh8oqmRfFecc2KlsKQOQQEw0B0rlqrBtkfjnvcMvOdFLy3n5ZHmjvFLC/lmIM2B1pih3EtCU0oAB82+hYCUYKXwOtDhwtHjgShAKJ1I08iUMmQaeA59DQAgixVbsSUQjjBQe+JRSB5bqI1WApBoAJz7OVIymnga8vIXdf+se8D8vmUXQV4ORK+BBx9OP4GqwG15MnmFuyuwcdRxPyHJnGvjncNPb4+ssEjDVT3qcDqCg14+600j8VwzgNLdc3FySaE2NpCCQTeGFK8/UALJf5EoVyQQMZaRJwTyRoe8Q17S/VPMCBi681wXR93Ffw6TdaqJOjbLBZWNt6epPUt8/Fb0TFS3n6uIZog1Am5IUQu0UGfi/fQK4kfcTp4c2x85oUaHYOCeKaMy9jLw9lRe8ylhUxQpKQV8Z5+bxm56shetBocObTDHSyz2B2c7bei10PzyA1ogbEFLE4X0SSIoLgicU8IFSmfDMpmCYgzfkNJHUalQwP5OWTveQ0vuES+CYGaVK8zGeTPNH/O44tmfypzm5mQx9JN9D4zrP/QDsTYkCNUgOvx2PQQopEJEGIeTwxqA0NoFQmYYhwue4sk1AuXN5HIthik0xuuWpnagK3PN3z1XxSEkByKOuO+BIIfWXeJP8wsk6+HVEXF2mQHxPF+57Q6LSC/8Czwfkv5lZ03Wq0BRKurFvWmyRNNJZNLbnqcXWp9YnsyXa6e+CokiMzoWtWIy3Nq1aZpt+4zGJevtEPwWRdhpAp46L7cJHIleiLNhNMEQufsWCgSzafz38+9ylhgCGyNw+Y7Sns4DtxcGUMQIXgkPuCfR5fI32MYAB39DVswf5D8tP+lnepS6AR0XW116JelO52RAcNGdY/TRPhf8HgDvOchF9/VU09X1y8Z0dBgSNSEqoqqYljb4e3hDWwVGYVkpcLqjm+Y1PGeWcmmiv5zgFVbu5CRIXk3uyaMb6p5OUmIHBUkCZMDux99sMSZKJjetQ7Uhjr/XZo2GN4yPsdq12X4TThKP4PFhq4XfvVMZ7ITmxagexegyRMo+SzaTO02eMQDOZ+w04YoshHpk9D8t8Yskn5yNw8of5Njl8Bbhsr7SsrPSrd96MI8vFK1URuGvKBuX4MfpIqzO04HJ25LOPWx20cO45Meai4KFR0j8Pn8NjzBzauYd9jr9loKgdS/sYl3PixwYFB18TwsMjQcPUm1/Dhn0XhI/TuQne9nKY79lVOBHJk7Go2nw22XAPx7SJMJdRpBmI6deNKLy/PmR7UoKdS9Q2Q7FX0gJBKifI/IIAvTmcvsV9EuTSAa4Uc7aRF1EsH8BxDVnSIueUUEqG8oGJcpZ+hX2VAwkXlGHlYZCY/s8ru5Hex/RMfXbYVWY151v9eXs7tj32adldETUCj/BlBTH/vW/Wu6JA2MyrdK21nCv79yMzUSamZjawRVmVAZrRTUkBeOnZCMwMrWSOat8wJKM51M/JaEwhuVbpEaXlcIqGVZwyaJjbB4eIoet4hBucFmnitQQRvfIYkXZrHI4JaSWMgD49x3I+OPlTk4MyrQaoyaWtG0BMmEVUvpVLrA+KrQBlXT6W6rZ8+fZtE45ErXvYiTbJ5G42QhdI5TKoiMXtbei6NONe9an/teFdGPyGHuKx5PO6chF/ubsQ+ldlx2UmNBPMQMqVsZFX8qrhZ9TYI04Bhp54inpKabaY4SvXacELPmpo4i0I4fCxIy+MQI356uOEjJTTlljFblOyC87Rqv3i1d2F6ncR5J9knY7APBzPb6TfKo/Xg342foqJn8XN4oy2tEPFZsAo5Sdxzcx3Cv3uIy1yJeyqCTPQQ/24IdxNB5PPGyurmkutl5Zm8zJ5ld0Y1Oqy9E9HBpL1Dh5UiHZ1oKUw7O3UrxyOlpcg4ZHzj8QuwARDvJGcQretaU4YGxmO7n9EaNZOZWjc2j1VOG1elKVs7FF/r7mc7pqSAbQ7gD6XSh/DjBPDF5rcevFr8qmvyfcV9l/thy6+I2smLFc8dhl3olmbkJ183cnA1SYjzfqy/P9nfh+Yzyf9dXkS7c6qYPLx1WmCg0m5ceUrOT8t4NGn3wbqFTmmZYZobwTeKF21wC5WFyULdhJmsp45PnL68dx9Xvrm685vOoz8c5laMXtQfQr9Ih/8QkIJGAUL94zeZTbbnE1TyDkN4X3aAZCnjFmOpxEPHtD6f8tzK1HmkXLhYzxwR+YjO/pA/Uezr6snuqBOK9/k821OT0DhidZVWqA9MXZIwt1wtZXU+2CRZGm6NtUZY4SieKq19iAj1VDwVT4vTojcqEvw+hLknmm3+xrB58TQsjp3guxqD718rbB1a/oRxhX/Fnude/Jl+hPGYccTe3Q5SBcF3iUpXWDZviOC5LnYW6S6pBS1wPLFo2LCMWJnIOMLohNdGawJ6lnGGns7ELHwd34I1YBaI2mwuGtnCjeduGaHedfkHclfavggTCxXjSseXhr1BAW02D/095Ndh98MNPdspxImtX+FPTzmbH2uv32FuqR9LK7LnfHqOitlaUWnT2+P81XyPDfyLgdrAi3zPDXaWyeuTHVVF81SF6sJWVbK6CCRZiW/Xt6Fb96A9Kv/m1fdfauJ2vxblgV6/xra7jZoMLnA16Y3QmJIuAUlKRuNIY9MllK9ag/Yr5TuK9juPEjewgFXDVYvF2fXnDUQH6RHF1FjBFQ4TO4A9esW6Dafme7z14HAn+VT6wp+n6zb2PXZ4Qv/Tk0pf8Mths4Fz/wFn5Kp1K06tCXuT5+nehCl8U1ezgL2WBbtW7wLWWjYMm1pNAR/ZwMIw4n8OwgqwGFuNALfNXy4W2342vxc41AjW8d8LHapnsbbcvgcCxxqaOHZHYw71anbwHwgdq2nr0gyAxLdVnTAa6NcZN5nXhfGJjgdpjjhvPA/f7TZnX/oVejvRNz5LsszfrgelOEKzJzY4iCpKEUcqvzciEwGFyl2VMbUpPm2K8uXP5uZ7CVNDQkJzeBHC1ZHCZZl2PXZUz1IFOnga9WwGRwrSG5kJSFJI+VDuXtrAn1+y0jJUcnWK2PeBV82j3NdnV+f16YvqufrA7JSc9av1/Cv8sl3b9dLX3ppbJtXXtmXBUCv4+fp1+viG7Fj61Pj5+IECak8MTJrkcsIF0YHwJyDWbdhQWorje/boSsH8xKRFPURSq6tTEaHeBkmNV/EZczX6i4eAsoJqpa6geAkQOE8/TH/MLc4j7vuPHDhiGRdE6AkWUpVBAwwWg5mcm8Kk6Ikgis+cpgHaSt7KBmhYSQsx1SKruKt29CoqQl1F0+wKbOH+pEUaLNy51HV8CxW5r07RrAtzV2oR7U+8nygaRLvSAjd1SgrC6O/v2+JVN2VQKnTJGDS3C+tPyE7UC9vlD21rb4t8re2h67Me3MiMssNfuDKunu3m6sbWc2SgxMwKq+JSjCOqnl9/Ly4OKDqqKvHeHK926fJZia9YI0/it2T8XB5QfESl++qpVPt0lmDLOdKitgd++R0+2PQxJeXghGsc2N8/4eA1NMsJlrsTHz3mJIoTOY8fcRMlISOIcVX0c+lwJESSCEF2WEiDmioZllDVl2PZJdS0Go39O/CBO7/dbZ5dhN08t9va/cLy8HShvSA4ZKyu765L6Vikj7E/Hlwk3jvrMKfvm7V6b1FlwBzbsW9QAjuvtl5/Yib/4BafMNociTXbbEAQzAxah9cwaJ8GLHfQaoNYLWpyAGsD7cR4J5Uw9w3WDiP4BTPa/q8YPoY7xdFnAgBgWkytzd+tELe4avtAMwey9v/RKdAsfs8b7tLlQF2GqLa/aEt80YksUw/KPz/rg7/fLQov5sb8RmP+j3Tq0CxrlC/pB3po7QD/apC2GNnI/9hUKVsI7n/fwcsqvfHdKnKePDjYbPg6MXF/gmf7f3coW+RJsLmB9LIgaz3EG4aBZ6AAwDhPBbABm8CHp00LO+RW/lUcdohFFKggEjGggTuPt/cVCWBCqEgBGsSJDPCB5EJMsIMmwADB6RqFu0BEgAc7RRQ4cFzEIObALz9p/ydOnfkX1xyUsbjluxw73PZQCD2dRAgYq6hTpB0nWR22ggXf0UgOPun1B36jr2iqWs4W17PfkNHLsKlqswohUYl3hXqd3RvmuVOldynqMLMhlI/zeYLZzrQrBlueeAgEd+SYEulKE81hyYGDrdSXf4cMkQOeWOG+9DfkVejslaWZRQ7+Lci5VqhLZqVmrASLJBRf3HMKyqtFUH6e4SglXiiFtGDGljBKj+bWhpK8wZn6cPFqBY2+lbLboE8BJlhggwMueIDwbxr4G1WzAgUaOAijOEmzvCirumm7fhineVm3/TgvM0Rlgc24JRj34tY4RPpa58TDGyflHhzwBpePzLUfih2bSUEFzCngjra6K91KQUS+lsQArffAYZ8Zg9NWDnpL4tamjABXdh+0Pp4C5WWrQVKVxSXxTie8wfkxS6YZ0A/djDPclpErQEUTI5uUTrS45U5LAekZAUfhvYLxjrS3/nGhM1fWSYcX6YRHbqQ+B8jpUoFKXaSgE7db4iRa2IgV5FDUwgNB98B6ywBZuxsTQYQN1DO0fV8uTbYTdBWpeL/pVw2iLfZWoAQ6iMUdfdVWHsQJ31Viu7IYtRGU1/cicLqoBVGgKLLRKup6WMMuvKFHfDkAAAAA') format('woff2'),
url('iconfont.woff?t=1582789434394') format('woff'),
url('iconfont.ttf?t=1582789434394') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1582789434394#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
.icon-font {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
[class^="icon-faxing"], [class*="icon-fanxing"] {
font-family:"iconfont" !important;
/* 以下内容参照第三方图标库本身的规则 */
font-size: 18px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-fanxing-shang:before {
content: "\e611";
}
.icon-fanxing-xia:before {
content: "\e612";
}
.icon-fanxing-zuo:before {
content: "\e615";
}
.icon-fanxing-zuoxia:before {
content: "\e619";
}
.icon-fanxing-youxia:before {
content: "\e61f";
}
.icon-fanxing-zuoshang:before {
content: "\e620";
}
.icon-daochu:before {
.icon-fanxing-you:before {
content: "\e621";
}
.icon-fanxing-youshang:before {
content: "\e626";
}
.icon-fanxing-qidong:before {
content: "\e628";
}
.icon-fanxing-mima:before {
content: "\e629";
}
.icon-fanxing-qianyi:before {
content: "\e62a";
}
.icon-fanxing-yonghuming:before {
content: "\e62b";
}
.icon-fanxing-xiugai:before {
content: "\e62c";
}
.icon-fanxing-xiugaicopy:before {
content: "\e62d";
}
.icon-fanxing-zanting:before {
content: "\e62e";
}
.icon-fanxing-daochu:before {
content: "\e61a";
}
.icon-fanxing-zhongxingguanshi:before {
content: "\e61b";
}
.icon-fanxing-zhanshi:before {
content: "\e61c";
}
.icon-fanxing-daoru:before {
content: "\e61d";
}
.icon-fanxing-weixianpin:before {
content: "\e61e";
}
.icon-rili:before {
content: "\e616";
.icon-fanxing-yunhanglushu:before {
content: "\e622";
}
.icon-fanxing-kaiqi:before {
content: "\e623";
}
.icon-fanxing-iconxuanzhongzhinengjiansuo1:before {
content: "\e624";
}
.icon-fanxing-xitongbanben:before {
content: "\e625";
}
.icon-login:before {
.icon-fanxing-yunhangyichang:before {
content: "\e627";
}
.icon-fanxing-iconxuanzhongshouye:before {
content: "\e600";
}
.icon-zhanshi:before {
content: "\e87a";
.icon-fanxing-iconxuanzhongrenwuguanli:before {
content: "\e601";
}
.icon-add-circle-s:before {
content: "\e662";
.icon-fanxing-iconxuanzhongziyuanguanli:before {
content: "\e602";
}
.icon-bofang1:before {
content: "\e61c";
.icon-fanxing-iconxuanzhongshouye1:before {
content: "\e603";
}
.icon-fanxing-iconxuanzhongziyuanguanli1:before {
content: "\e604";
}
.icon-fanxing-xinxicunchu:before {
content: "\e605";
}
.icon-fanxing-iconxuanzhongxitongyunwei:before {
content: "\e606";
}
.icon-bofang:before {
.icon-fanxing-iconxuanzhongzhinengjiansuo:before {
content: "\e607";
}
.icon-detail:before {
content: "\e644";
.icon-fanxing-iconxuanzhongrenwuguanli1:before {
content: "\e608";
}
.icon-Migration:before {
content: "\e664";
.icon-fanxing-shanchu:before {
content: "\e609";
}
.icon-zanting:before {
content: "\e685";
.icon-fanxing-dingweiweizhi:before {
content: "\e60a";
}
.icon-fanxing-xitongxinxi:before {
content: "\e60b";
}
.icon-fanxing-fenxiziyuan:before {
content: "\e60c";
}
.icon-fanxing-zhatuchezhuapai:before {
content: "\e60d";
}
.icon-fanxing-duoxuanxuanzhong:before {
content: "\e60e";
}
.icon-fanxing-danxuanxuanzhong:before {
content: "\e60f";
}
.icon-fanxing-shebeixinxi:before {
content: "\e610";
}
.icon-fanxing-iconxuanzhongshouye2:before {
content: "\e613";
}
.icon-fanxing-baocunmianxing:before {
content: "\e614";
}
.icon-fanxing-zhongzhi:before {
content: "\e616";
}
.icon-zantingtingzhi:before {
content: "\e643";
.icon-fanxing-tianjia:before {
content: "\e617";
}
.icon-xiugai:before {
content: "\e632";
.icon-fanxing-shanchu1:before {
content: "\e618";
}
!function(a){var t,n='<svg><symbol id="icon-daochu" viewBox="0 0 1024 1024"><path d="M179.2 610.4c0 51.2 8.8 100.8 24.8 146.4 58.4-170.4 213.6-292 397.6-292l0 72.8c0 28 15.2 52.8 39.2 65.6 9.6 4.8 20.8 8 31.2 8 15.2 0 29.6-4.8 42.4-14.4l281.6-219.2c17.6-13.6 28-35.2 28-58.4 0-23.2-10.4-44.8-28-58.4L714.4 40.8c-12-9.6-27.2-14.4-42.4-14.4-10.4 0-21.6 2.4-31.2 8-24 12-39.2 37.6-39.2 65.6l0 72.8C368.8 172 179.2 368.8 179.2 610.4z" ></path><path d="M972.8 588.8c-28 0-51.2 23.2-51.2 51.2l0 51.2 0 10.4c0 108-4 194.4-204.8 194.4L307.2 896c-207.2 0-204.8-92-204.8-204.8l0-256C88 274.4 164 239.2 256 232l0 0 3.2 0c28 0 51.2-23.2 51.2-51.2 0-28-23.2-52-51.2-52l-3.2 0L256 128l-51.2 0C92 128 0 220 0 332.8l0 460.8c0 112.8 92 204.8 204.8 204.8l613.6 0c112.8 0 204.8-92 204.8-204.8L1023.2 640C1024 612 1000.8 588.8 972.8 588.8z" ></path></symbol><symbol id="icon-rili" viewBox="0 0 1024 1024"><path d="M329.197037 662.186667l365.605926 0c9.102222 0 16.402963-7.395556 16.402963-16.402963s-7.395556-16.402963-16.402963-16.402963L329.197037 629.380741c-9.102222 0-16.402963 7.395556-16.402963 16.402963S320.094815 662.186667 329.197037 662.186667z" ></path><path d="M329.197037 565.380741l365.605926 0c9.102222 0 16.402963-7.395556 16.402963-16.402963 0-9.102222-7.395556-16.402963-16.402963-16.402963L329.197037 532.574815c-9.102222 0-16.402963 7.395556-16.402963 16.402963C312.794074 557.985185 320.094815 565.380741 329.197037 565.380741z" ></path><path d="M724.385185 214.755556l-42.477037 0 0-42.477037-42.477037 0 0 42.477037L384.568889 214.755556l0-42.477037-42.477037 0 0 42.477037L299.614815 214.755556c-46.648889 0-84.859259 38.21037-84.859259 84.859259l0 467.247407c0 46.648889 38.21037 84.859259 84.859259 84.859259l424.77037 0c46.648889 0 84.859259-38.21037 84.859259-84.859259L809.244444 299.614815C809.244444 252.965926 771.034074 214.755556 724.385185 214.755556zM778.145185 766.862222c0 23.419259-30.435556 53.76-53.76 53.76L299.614815 820.622222c-23.419259 0-53.76-30.435556-53.76-53.76L245.854815 427.045926l532.385185 0L778.24 766.862222zM779.093333 395.946667 244.906667 395.946667 244.906667 299.614815c0-23.419259 31.383704-53.76 54.708148-53.76l42.477037 0L342.091852 299.614815l42.477037 0 0-53.854815 254.767407 0L639.336296 299.614815l42.477037 0 0-53.854815L724.385185 245.76c23.419259 0 54.708148 30.435556 54.708148 53.76L779.093333 395.946667z" ></path></symbol><symbol id="icon-login" viewBox="0 0 1024 1024"><path d="M780.875 396.388c1.754-1.622 2.427-4.217 1.501-6.574-0.924-2.365-3.182-3.804-5.574-3.804h-166.755l0.359-246.761c0.005-4.603-1.742-9.209-5.254-12.72-3.508-3.514-8.111-5.274-12.715-5.274h-163.328c-4.597 0-9.201 1.76-12.715 5.274-3.506 3.513-5.255 8.117-5.25 12.72l0.332 246.761h-166.764c-2.387 0-4.643 1.438-5.575 3.804-0.925 2.359-0.252 4.951 1.504 6.574l257.895 239.15c3.209 2.971 7.502 4.794 12.218 4.794 4.72 0 9.013-1.824 12.219-4.794l257.902-239.15zM1037.742 650.941l-161.68-126.155c-9.159-7.147-26.16-12.993-37.775-12.993h-64.199l182.757 155.557-211.754 0.103-79.019 113.225h-311.316l-75.815-113.121-210.615-0.103 188.985-155.756-74.142 0.097c-11.617 0-28.618 5.847-37.776 12.993l-161.68 126.154c-9.159 7.148-13.701 22.029-10.091 33.073l64.499 197.362c3.609 11.043 16.067 20.078 27.684 20.078h891.089c11.617 0 24.032-9.049 27.591-20.108l63.447-197.302c3.554-11.061-1.029-25.956-10.19-33.103z" ></path></symbol><symbol id="icon-zhanshi" viewBox="0 0 1024 1024"><path d="M512 336.1c-124.1 0-232.7 108.6-232.7 175.9 0 67.2 108.6 175.9 232.7 175.9 129.3 0 232.7-124.1 232.7-175.9 0-51.7-103.4-175.9-232.7-175.9z m0 253.5c-41.4 0-77.6-36.2-77.6-77.6 0-41.4 36.2-77.6 77.6-77.6 41.4 0 77.6 36.2 77.6 77.6 0 41.4-36.2 77.6-77.6 77.6z m0 0" ></path><path d="M512 98.2C284.4 98.2 98.2 284.4 98.2 512S284.4 925.8 512 925.8 925.8 739.6 925.8 512 739.6 98.2 512 98.2z m0 641.4c-150 0-284.5-129.3-284.5-227.6 0-98.3 134.5-227.6 284.5-227.6S796.5 424.1 796.5 512 662 739.6 512 739.6z m0 0" ></path></symbol><symbol id="icon-add-circle-s" viewBox="0 0 1024 1024"><path d="M512 894.5c-51.6 0-101.7-10.1-148.9-30.1-45.6-19.3-86.5-46.8-121.6-82-35.1-35.1-62.7-76-82-121.6-20-47.2-30.1-97.3-30.1-148.9s10.1-101.7 30.1-148.9c19.3-45.6 46.8-86.5 82-121.6 35.1-35.1 76-62.7 121.6-82 47.2-20 97.3-30.1 148.9-30.1s101.7 10.1 148.9 30.1c45.6 19.3 86.5 46.8 121.6 82 35.1 35.1 62.7 76 82 121.6 20 47.2 30.1 97.3 30.1 148.9s-10.1 101.7-30.1 148.9c-19.3 45.6-46.8 86.5-82 121.6-35.1 35.1-76 62.7-121.6 82-47.2 20-97.3 30.1-148.9 30.1z m-17.3-361.9v205.8c0 11 9 20 20 20s20-9 20-20l-1-205.7h206.7c11 0 20-9 20-20s-9-20-20-20H534.7V287c0-11-9-20-20-20s-20 9-20 20v205.7H289c-11 0-20 9-20 20s9 20 20 20l205.7-0.1z" ></path></symbol><symbol id="icon-bofang1" viewBox="0 0 1024 1024"><path d="M514 114.3c-219.9 0-398.9 178.9-398.9 398.9 0.1 219.9 179 398.8 398.9 398.8 219.9 0 398.8-178.9 398.8-398.8S733.9 114.3 514 114.3z m173 421.9L437.1 680.5c-17.7 10.2-39.8-2.6-39.8-23V368.9c0-20.4 22.1-33.2 39.8-23L687 490.2c17.7 10.2 17.7 35.8 0 46z" ></path></symbol><symbol id="icon-bofang" viewBox="0 0 1024 1024"><path d="M822.824 97.58H201.176c-57.196 0-103.595 46.398-103.595 103.595v621.647c0 57.197 46.4 103.597 103.595 103.597h621.649c57.196 0 103.595-46.4 103.595-103.597V201.176c0-57.198-46.4-103.596-103.596-103.596zM356.607 719.147V304.851l362.54 207.108-362.54 207.188z" ></path></symbol><symbol id="icon-detail" viewBox="0 0 1024 1024"><path d="M800.111944 127.936032H223.888056C171.178411 127.936032 128.191904 170.922539 128.191904 224.143928V255.872064h767.616192v-32.23988c0-52.709645-42.986507-95.696152-95.696152-95.696152m-167.852074-63.968016l14.328836 100.813593H377.411294l14.328836-100.813593h240.51974M639.936032 0H384.063968c-26.610695 0-51.174413 21.493253-54.756622 47.592204l-18.934532 134.076961c-3.582209 26.098951 14.84058 47.592204 41.451274 47.592204h319.84008c26.610695 0 45.033483-21.493253 41.451274-47.592204l-18.934532-134.076961C691.110445 21.493253 666.546727 0 639.936032 0m176.03998 319.84008H208.023988c-35.310345 0-61.409295 28.657671-58.338831 63.968016l52.197901 576.223888c3.070465 34.798601 34.798601 63.968016 69.597202 63.968016h480.015992c35.310345 0 66.526737-28.657671 69.597201-63.968016L873.803098 383.808096c3.582209-35.310345-22.516742-63.968016-57.827086-63.968016M384.063968 895.552224H287.856072L256.127936 447.776112h127.936032V895.552224z m191.904048 0h-127.936032V447.776112h127.936032V895.552224z m160.175912 0H639.936032V447.776112h127.936032l-31.728136 447.776112z" fill="" ></path></symbol><symbol id="icon-Migration" viewBox="0 0 1024 1024"><path d="M853.840124 948.467989h-62.27438c-34.42119 0-62.274379-27.853189-62.274379-62.274379v-746.806034c0-34.42119 27.853189-62.274379 62.274379-62.27438h62.27438c34.42119 0 62.274379 27.853189 62.274379 62.27438v746.806034c-0.12163 34.42119-27.974819 62.274379-62.274379 62.274379z m-373.403017-373.403017H293.735598V450.516213h186.701509V326.089084l248.975887 186.701509-248.975887 186.701508V575.064972zM231.461219 637.217722h186.701508v248.975888c0 34.42119-27.853189 62.274379-62.274379 62.274379H169.186839c-34.42119 0-62.274379-27.853189-62.274379-62.274379v-746.806034c0-34.42119 27.853189-62.274379 62.274379-62.27438h186.701509c34.42119 0 62.274379 27.853189 62.274379 62.27438v248.975888H231.461219v248.854258z m0 0" fill="" ></path></symbol><symbol id="icon-zanting" viewBox="0 0 1024 1024"><path d="M804.571429 0a146.285714 146.285714 0 0 1 146.285714 146.285714v731.428572a146.285714 146.285714 0 1 1-292.571429 0V146.285714a146.285714 146.285714 0 0 1 146.285715-146.285714zM219.428571 0a146.285714 146.285714 0 0 1 146.285715 146.285714v731.428572a146.285714 146.285714 0 1 1-292.571429 0V146.285714a146.285714 146.285714 0 0 1 146.285714-146.285714z" ></path></symbol><symbol id="icon-zantingtingzhi" viewBox="0 0 1024 1024"><path d="M720.896 95.232c-47.616 0-89.6 41.472-89.6 89.088v655.36c0 47.616 41.984 89.088 89.6 89.088s89.6-41.472 89.6-89.088V184.32c-0.512-47.616-41.984-89.088-89.6-89.088z m-417.792 0c-47.616 0-89.6 41.472-89.6 89.088v655.36c0 47.616 41.984 89.088 89.6 89.088s89.6-41.472 89.6-89.088V184.32c0-47.616-41.984-89.088-89.6-89.088z" ></path></symbol><symbol id="icon-xiugai" viewBox="0 0 1024 1024"><path d="M768.487 388.361L590.76 215.067 210.93 594.492l-66.201 242.161v0.4L386.483 769.8zM739.523 66.62l-95.197 95.04 178.296 172.65 92.375-92.296c48.487-48.406 48.487-126.985 0-175.392-48.405-48.407-127.069-48.407-175.474-0.002zM79.029 878.71h872.333v114.976H79.029z" ></path></symbol></svg>',c=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var c=function(){document.removeEventListener("DOMContentLoaded",c,!1),t()};document.addEventListener("DOMContentLoaded",c,!1)}else document.attachEvent&&(l=t,o=a.document,i=!1,(n=function(){try{o.documentElement.doScroll("left")}catch(t){return void setTimeout(n,50)}e()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,e())});function e(){i||(i=!0,l())}var l,o,i,n}(function(){var t,c,e,l,o,i;(t=document.createElement("div")).innerHTML=n,n=null,(c=t.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",e=c,(l=document.body).firstChild?(o=e,(i=l.firstChild).parentNode.insertBefore(o,i)):l.appendChild(e))})}(window);
\ No newline at end of file
!function(m){var a,t='<svg><symbol id="iconshang" viewBox="0 0 1024 1024"><path d="M1015.322034 954.576271V69.423729A60.745763 60.745763 0 0 0 954.576271 8.677966H69.423729A60.745763 60.745763 0 0 0 8.677966 69.423729v885.152542A60.745763 60.745763 0 0 0 69.423729 1015.322034h885.152542a60.745763 60.745763 0 0 0 60.745763-60.745763z m-17.355932-885.152542v885.152542a43.389831 43.389831 0 0 1-43.389831 43.389831H69.423729A43.389831 43.389831 0 0 1 26.033898 954.576271V69.423729A43.389831 43.389831 0 0 1 69.423729 26.033898h885.152542A43.389831 43.389831 0 0 1 997.966102 69.423729z" fill="#3BB7FF" ></path><path d="M111.077966 880.813559l395.715254-370.983051L902.508475 880.813559V509.830508L506.79322 138.847458 111.077966 509.830508z" fill="#3BB7FF" ></path></symbol><symbol id="iconxia" viewBox="0 0 1024 1024"><path d="M1015.322034 69.423729v885.152542a60.745763 60.745763 0 0 1-60.745763 60.745763H69.423729A60.745763 60.745763 0 0 1 8.677966 954.576271V69.423729A60.745763 60.745763 0 0 1 69.423729 8.677966h885.152542A60.745763 60.745763 0 0 1 1015.322034 69.423729z m-17.355932 885.152542V69.423729A43.389831 43.389831 0 0 0 954.576271 26.033898H69.423729A43.389831 43.389831 0 0 0 26.033898 69.423729v885.152542A43.389831 43.389831 0 0 0 69.423729 997.966102h885.152542a43.389831 43.389831 0 0 0 43.389831-43.389831z" fill="#E5E5E5" ></path><path d="M111.077966 143.186441l395.715254 370.983051L902.508475 143.186441v370.983051L506.79322 885.152542 111.077966 514.169492z" fill="#CCCCCC" ></path></symbol><symbol id="iconzuo" viewBox="0 0 1024 1024"><path d="M954.576271 1015.322034H69.423729A60.745763 60.745763 0 0 1 8.677966 954.576271V69.423729A60.745763 60.745763 0 0 1 69.423729 8.677966h885.152542A60.745763 60.745763 0 0 1 1015.322034 69.423729v885.152542a60.745763 60.745763 0 0 1-60.745763 60.745763z m-885.152542-17.355932h885.152542a43.389831 43.389831 0 0 0 43.389831-43.389831V69.423729A43.389831 43.389831 0 0 0 954.576271 26.033898H69.423729A43.389831 43.389831 0 0 0 26.033898 69.423729v885.152542A43.389831 43.389831 0 0 0 69.423729 997.966102z" fill="#E5E5E5" ></path><path d="M880.813559 111.077966L509.830508 506.79322 880.813559 902.508475H509.830508L138.847458 506.79322 509.830508 111.077966z" fill="#CCCCCC" ></path></symbol><symbol id="iconzuoxia" viewBox="0 0 1024 1024"><path d="M954.576271 8.677966H68.781559A60.745763 60.745763 0 0 0 8.035797 69.423729v885.794712a60.745763 60.745763 0 0 0 60.745762 60.745762H954.576271a60.745763 60.745763 0 0 0 60.745763-60.745762V69.423729A60.745763 60.745763 0 0 0 954.576271 8.677966z m-885.794712 17.355932H954.576271A43.389831 43.389831 0 0 1 997.966102 69.423729v885.794712a43.389831 43.389831 0 0 1-43.389831 43.38983H68.781559a43.389831 43.389831 0 0 1-43.38983-43.38983V69.423729a43.389831 43.389831 0 0 1 43.38983-43.389831z" fill="#E5E5E5" ></path><path d="M955.461424 628.527729l-542.494373-17.49478-17.49478-542.494373L132.981153 331.029695 150.475932 873.524068l542.494373 17.494779z" fill="#CCCCCC" ></path></symbol><symbol id="iconyouxia" viewBox="0 0 1024 1024"><path d="M83.934426 8.393443h859.40459a58.754098 58.754098 0 0 1 58.754099 58.754098v888.731279a58.754098 58.754098 0 0 1-58.754099 58.754098H83.934426a58.754098 58.754098 0 0 1-58.754098-58.754098V67.147541A58.754098 58.754098 0 0 1 83.934426 8.393443z m859.40459 16.786885H83.934426A41.967213 41.967213 0 0 0 41.967213 67.147541v888.731279a41.967213 41.967213 0 0 0 41.967213 41.967213h859.40459a41.967213 41.967213 0 0 0 41.967214-41.967213V67.147541a41.967213 41.967213 0 0 0-41.967214-41.967213z" fill="#E5E5E5" ></path><path d="M83.21259 627.661639L609.363934 610.169705l16.971541-542.216394 254.606689 262.36223-16.988328 542.216393-526.151344 17.508722z" fill="#CCCCCC" ></path></symbol><symbol id="iconzuoshang" viewBox="0 0 1024 1024"><path d="M1015.322034 954.576271V68.781559a60.745763 60.745763 0 0 0-60.745763-60.745762H68.781559a60.745763 60.745763 0 0 0-60.745762 60.745762V954.576271a60.745763 60.745763 0 0 0 60.745762 60.745763H954.576271a60.745763 60.745763 0 0 0 60.745763-60.745763z m-17.355932-885.794712V954.576271a43.389831 43.389831 0 0 1-43.389831 43.389831H68.781559a43.389831 43.389831 0 0 1-43.38983-43.389831V68.781559a43.389831 43.389831 0 0 1 43.38983-43.38983H954.576271a43.389831 43.389831 0 0 1 43.389831 43.38983z" fill="#E5E5E5" ></path><path d="M395.472271 955.461424l17.49478-542.494373 542.494373-17.49478L692.970305 132.981153 150.475932 150.475932 132.981153 692.970305z" fill="#CCCCCC" ></path></symbol><symbol id="iconyou" viewBox="0 0 1024 1024"><path d="M69.423729 1015.322034h885.152542a60.745763 60.745763 0 0 0 60.745763-60.745763V69.423729A60.745763 60.745763 0 0 0 954.576271 8.677966H69.423729A60.745763 60.745763 0 0 0 8.677966 69.423729v885.152542A60.745763 60.745763 0 0 0 69.423729 1015.322034z m885.152542-17.355932H69.423729A43.389831 43.389831 0 0 1 26.033898 954.576271V69.423729A43.389831 43.389831 0 0 1 69.423729 26.033898h885.152542A43.389831 43.389831 0 0 1 997.966102 69.423729v885.152542a43.389831 43.389831 0 0 1-43.389831 43.389831z" fill="#E5E5E5" ></path><path d="M143.186441 111.077966l370.983051 395.715254L143.186441 902.508475h370.983051L885.152542 506.79322 514.169492 111.077966z" fill="#CCCCCC" ></path></symbol><symbol id="iconyoushang" viewBox="0 0 1041 1024"><path d="M0 963.254237V74.717288a60.745763 60.745763 0 0 1 60.745763-60.745763h918.857762a60.745763 60.745763 0 0 1 60.745763 60.745763V963.254237a60.745763 60.745763 0 0 1-60.745763 60.745763H60.745763A60.745763 60.745763 0 0 1 0 963.254237zM17.355932 74.717288V963.254237A43.389831 43.389831 0 0 0 60.745763 1006.644068h918.857762a43.389831 43.389831 0 0 0 43.389831-43.389831V74.717288a43.389831 43.389831 0 0 0-43.389831-43.38983H60.745763a43.389831 43.389831 0 0 0-43.389831 43.38983z" fill="#E5E5E5" ></path><path d="M640.260339 964.000542L622.175458 420.013559l-560.596611-17.546847L332.817356 139.229288l560.59661 17.564204 18.102237 543.986983z" fill="#CCCCCC" ></path></symbol><symbol id="iconqidong" viewBox="0 0 1024 1024"><path d="M845.901531 0H171.743817A171.52 171.52 0 0 0 0.004389 172.763429v684.836571C0.004389 947.2 76.292389 1024 171.743817 1024h680.521143A171.52 171.52 0 0 0 1024.004389 851.163429V172.836571C1017.64096 76.8 941.35296 0 845.901531 0zM381.590674 768v-512L807.72096 512l-426.130286 256z" fill="#36BEA6" ></path></symbol><symbol id="iconmima" viewBox="0 0 1024 1024"><path d="M718.879004 0C565.677227 0 438.587449 123.619556 438.587449 276.366222c0 43.633778 11.207111 87.267556 29.923555 127.260445L53.620338 810.837333a83.968 83.968 0 0 0 0 120.035556c33.678222 32.711111 89.713778 32.711111 119.637333 0l22.414222-21.845333 100.920889 98.190222a43.804444 43.804444 0 0 0 63.488 0l149.504-149.048889c18.716444-18.204444 18.716444-43.690667 0-61.838222l-100.920889-98.190223L588.091449 519.964444c37.376 18.204444 82.204444 29.070222 127.032889 29.070223 157.013333 0 280.348444-123.619556 280.348444-276.309334C999.17056 123.676444 875.835449 0 718.879004 0z m0 381.781333c-59.790222 0-108.373333-47.217778-108.373333-105.415111 0-58.197333 48.583111-105.472 108.373333-105.472 59.790222 0 108.373333 47.274667 108.373334 105.472 0 58.140444-48.583111 105.415111-108.373334 105.415111z" fill="#000000" opacity=".7" ></path></symbol><symbol id="iconqianyi" viewBox="0 0 1024 1024"><path d="M820.736 969.792H761.6c-32.64 0-59.072-29.76-59.072-66.56V105.984c0-36.8 26.432-66.56 59.072-66.56h59.136c32.64 0 59.072 29.76 59.072 66.56v797.376c-0.064 36.736-26.496 66.496-59.072 66.496z m-354.368-398.72h-177.28V438.08h177.28V305.28l236.288 199.36L466.368 704V571.072zM230.016 637.44h177.28v265.856c0 36.736-26.496 66.496-59.136 66.496H170.88c-32.64 0-59.072-29.76-59.072-66.56V105.984c0-36.8 26.496-66.56 59.136-66.56H348.16c32.64 0 59.072 29.76 59.072 66.56v265.792H230.016V637.44z" fill="#36BEA6" ></path></symbol><symbol id="iconyonghuming" viewBox="0 0 1024 1024"><path d="M617.301333 615.082667c252.871111 39.537778 325.688889 211.512889 325.688889 273.976889 0 85.504-308.906667 105.813333-448.568889 105.813333s-448.568889-20.309333-448.568889-105.813333c0-61.44 71.907556-236.657778 324.721778-273.863112 16.156444-2.389333 37.432889-52.167111 23.665778-61.212444-82.887111-54.613333-146.545778-149.048889-146.545778-301.511111C247.694222 122.595556 350.094222 19.342222 494.364444 19.342222s246.784 103.253333 246.784 233.130667c0 150.186667-67.015111 246.897778-150.186666 302.08-12.856889 8.533333 10.410667 58.026667 26.282666 60.529778z" fill="#0069FF" ></path></symbol><symbol id="iconxiugai" viewBox="0 0 1024 1024"><path d="M766.77798 359.038344L586.802214 183.567091 202.144112 567.815692 135.05417 813.106896v0.341251l244.881701-68.113696 386.842109-386.296107v-0.06825zM737.498646 33.14366L640.99287 129.376436l180.521767 174.925251 93.707519-93.502768A125.785111 125.785111 0 0 0 737.430396 33.14366h0.06825zM68.373728 855.695018h883.567033v116.434833H68.373728v-116.434833H68.373728z" fill="#0069FF" ></path></symbol><symbol id="iconxiugaicopy" viewBox="0 0 1024 1024"><path d="M766.77798 359.038344L586.802214 183.567091 202.144112 567.815692 135.05417 813.106896v0.341251l244.881701-68.113696 386.842109-386.296107v-0.06825zM737.498646 33.14366L640.99287 129.376436l180.521767 174.925251 93.707519-93.502768A125.785111 125.785111 0 0 0 737.430396 33.14366h0.06825zM68.373728 855.695018h883.567033v116.434833H68.373728v-116.434833H68.373728z" fill="#87D14B" ></path></symbol><symbol id="iconzanting" viewBox="0 0 1024 1024"><path d="M196.388571 0c88.283429 0 159.890286 71.533714 159.890286 159.817143v639.414857a159.817143 159.817143 0 1 1-319.707428 0V159.817143C36.571429 71.533714 108.105143 0 196.388571 0zM782.628571 0c88.283429 0 159.817143 71.533714 159.817143 159.817143v639.414857a159.817143 159.817143 0 1 1-319.634285 0V159.817143C622.665143 71.533714 694.198857 0 782.482286 0z" fill="#FFC62E" ></path></symbol><symbol id="icondaochu" viewBox="0 0 1084 1024"><path d="M189.741176 615.243294c0 53.910588 9.336471 106.194824 26.262589 154.202353 61.801412-179.501176 226.183529-307.621647 420.98447-307.621647v76.739765c0 29.515294 16.082824 55.597176 41.562353 69.089882 10.119529 5.059765 21.985882 8.432941 32.948706 8.432941 16.143059 0 31.322353-5.059765 44.93553-15.179294l298.164705-230.942118c18.672941-14.275765 29.635765-37.044706 29.635765-61.500235 0-24.455529-11.023059-47.224471-29.635765-61.500235L756.434824 15.179294A72.161882 72.161882 0 0 0 678.490353 8.432941c-25.419294 12.649412-41.502118 39.634824-41.502118 69.089883V154.202353C390.505412 153.419294 189.741176 360.688941 189.741176 615.243294z m840.282353-22.768941c-29.635765 0-54.211765 24.455529-54.211764 53.970823v64.873412c0 113.784471-4.216471 204.8-216.847059 204.8H325.270588c-219.376941 0-216.847059-96.918588-216.847059-215.762823V430.682353c-15.239529-169.441882 65.234824-206.486588 162.635295-214.076235h3.373176c29.635765 0 54.211765-24.455529 54.211765-53.970824s-24.576-54.814118-54.211765-54.814118H271.058824v-0.783058h-54.211765C97.400471 107.038118 0 203.956706 0 322.800941v485.496471C0 927.021176 97.400471 1024 216.847059 1024h649.697882c119.446588 0 216.847059-96.978824 216.847059-215.762824v-161.792a53.187765 53.187765 0 0 0-53.368471-53.970823z" fill="#CCCCCC" ></path></symbol><symbol id="iconzhongxingguanshi" viewBox="0 0 1024 1024"><path d="M13.128205 9.242256m105.025641 0l787.692308 0q105.025641 0 105.025641 105.025641l0 804.706462q0 105.025641-105.025641 105.025641l-787.692308 0q-105.025641 0-105.025641-105.025641l0-804.706462q0-105.025641 105.025641-105.025641Z" fill="#B3E5FC" opacity=".24" ></path><path d="M879.826051 307.751385L840.467692 226.172718c-6.406564-13.390769-21.609026-20.663795-36.548923-17.644308L585.124103 252.639179l0.078769 0.262565c-53.563077 13.364513-92.973949 60.284718-92.89518 116.053333 0.157538 65.851077 57.501538 120.123077 125.820718 119.256615a127.553641 127.553641 0 0 0 60.941128-16.278974l0.183795 0.446359 189.387488-125.164308c13.233231-8.795897 17.906872-25.468718 11.18523-39.489641z" fill="#3BB7FF" ></path><path d="M418.133333 554.456615v-172.425846c0-18.773333-14.257231-33.975795-31.849025-33.975795h-34.264616c-24.20841 0-47.524103 9.846154-65.299692 27.516718l-95.835897 95.573334A70.052103 70.052103 0 0 0 170.666667 520.717128v213.805949c0 18.773333 14.257231 33.975795 31.849025 33.975795h16.173949c0-60.127179 45.738667-109.069128 102.189949-109.069128 56.477538 0 102.137436 48.758154 102.137436 108.964102 0 0.105026 213.858462 0.183795 213.858461 0.105026 0-60.127179 45.686154-109.069128 102.11118-109.069128 56.372513 0 102.111179 49.020718 102.111179 109.147897 0 0.105026 32.899282-0.078769 32.899282-0.078769 17.591795 0 31.849026-15.202462 31.849026-33.975795v-112.114872c0-18.773333-14.257231-34.002051-31.849026-34.002051H450.008615c-17.591795 0-31.875282-15.202462-31.875282-33.975795z" fill="#3BB7FF" ></path><path d="M239.589744 748.649026c0 36.864 28.934564 66.717538 64.643282 66.717538s64.643282-29.853538 64.643282-66.691282c0-36.864-28.960821-66.717538-64.643282-66.717538-35.708718 0-64.643282 29.853538-64.643282 66.691282z m418.947282 0c0 36.864 28.960821 66.717538 64.643282 66.717538 35.708718 0 64.643282-29.853538 64.643282-66.691282 0-36.864-28.934564-66.717538-64.643282-66.717538s-64.643282 29.853538-64.643282 66.691282z m224.334769-344.14277c0.078769-26.440205-28.488205-42.167795-49.729641-27.411692l-135.089231 93.630359c-46.683897 29.643487-83.547897 28.488205-108.622769 24.20841-65.982359-11.290256-99.669333-50.412308-116.736-90.584615-21.477744-50.674872-16.541538 26.781538-16.541539 26.781538v48.049231c0 18.221949 14.309744 32.951795 31.927795 32.951795H850.707692c17.644308 0 31.849026-14.651077 31.927795-32.846769l0.236308-74.778257z" fill="#3BB7FF" ></path></symbol><symbol id="iconzhanshi" viewBox="0 0 1024 1024"><path d="M512 294.343111C358.4 294.343111 224.085333 428.714667 224.085333 512c0 83.171556 134.371556 217.656889 287.914667 217.656889 159.971556 0 287.914667-153.6 287.914667-217.656889 0-63.943111-127.943111-217.656889-287.914667-217.656889z m0 313.685333c-51.2 0-96.028444-44.828444-96.028444-96.028444 0-51.2 44.828444-96.028444 96.028444-96.028444 51.2 0 96.028444 44.828444 96.028444 96.028444 0 51.2-44.828444 96.028444-96.028444 96.028444zM512 0C230.4 0 0 230.4 0 512s230.4 512 512 512 512-230.4 512-512-230.4-512-512-512z m0 793.6c-185.571556 0-352.028444-159.971556-352.028444-281.6 0-121.628444 166.456889-281.6 352.028444-281.6 185.571556 0 352.028444 172.828444 352.028444 281.6 0 108.771556-166.456889 281.6-352.028444 281.6z" fill="#CCCCCC" ></path></symbol><symbol id="icondaoru" viewBox="0 0 1296 1024"><path d="M973.183381 360.866032a8.32243 8.32243 0 0 0 1.841849-8.663514 7.230964 7.230964 0 0 0-6.753447-4.979815h-200.693358l0.4093-323.619745A24.557991 24.557991 0 0 0 761.711794 6.821664 20.669642 20.669642 0 0 0 746.294833 0H549.830906a20.737859 20.737859 0 0 0-15.280527 6.889881 24.626207 24.626207 0 0 0-6.344148 16.713077l0.4093 323.619745H327.785739a7.230964 7.230964 0 0 0-6.685231 4.979815 8.32243 8.32243 0 0 0 1.84185 8.663514l310.385717 313.660115a20.669642 20.669642 0 0 0 14.734794 6.275931 20.669642 20.669642 0 0 0 14.734795-6.275931l310.385717-313.660115z m309.226034 333.852241l-194.622077-165.493571a81.859969 81.859969 0 0 0-45.5005-17.05416h-77.221237L1184.927835 716.274732l-254.857371 0.136433-95.093998 148.507628H460.262456L369.056807 716.479382l-253.493038-0.136433 227.502498-204.240624-89.295583 0.068217a81.859969 81.859969 0 0 0-45.432283 17.05416L13.648107 694.718273c-11.051096 9.34568-16.508427 28.855639-12.142562 43.385784l77.630537 258.813936c4.365865 14.461928 19.373526 26.331623 33.357938 26.331624h1072.570248c13.984411 0 28.923856-11.869696 33.221505-26.39984l76.402638-258.74572c4.229432-14.530145-1.2279-34.040104-12.278996-43.385784z" fill="#3BB7FF" ></path></symbol><symbol id="iconweixianpin" viewBox="0 0 1024 1024"><path d="M13.128205 4.621128m105.025641 0l787.692308 0q105.025641 0 105.025641 105.025641l0 804.706462q0 105.025641-105.025641 105.025641l-787.692308 0q-105.025641 0-105.025641-105.025641l0-804.706462q0-105.025641 105.025641-105.025641Z" fill="#B3E5FC" opacity=".24" ></path><path d="M877.568 732.186256H821.037949C813.948718 682.036513 772.594872 643.43959 722.051282 643.43959s-92.238769 38.964513-98.986667 88.746666h-113.086359c-15.543795 0-28.278154-12.970667-28.278153-29.223384V342.409846h47.707897v340.70318h58.341744c23.683282-52.696615 75.618462-88.772923 134.301538-88.772923 58.683077 0 110.618256 36.076308 134.301539 88.772923h2.126769V342.409846H905.846154v360.553026c0 15.885128-12.734359 29.249641-28.278154 29.249641z m-61.860103-230.977641c7.771897 0 13.075692 4.332308 15.911385 12.629334 0.36759 1.837949 0.708923 3.623385 0.708923 5.77641 0 10.476308-6.354051 16.252718-19.429743 16.961641 5.303795 5.435077 7.771897 11.185231 7.771897 16.252718 0 5.408821-2.835692 10.108718-8.139487 14.073436a17.092923 17.092923 0 0 1-9.531077 2.888205c-10.24 0-17.329231-8.664615-21.556513-26.702769l-84.125538-32.137846-84.125539 32.137846c-4.253538 17.670564-11.290256 26.702769-21.215179 26.702769a21.924103 21.924103 0 0 1-9.898667-2.888205c-5.303795-3.964718-7.771897-8.297026-7.771897-14.073436 0-5.408821 2.468103-10.817641 7.771897-16.252718-13.075692-0.708923-19.797333-6.485333-19.797333-16.961641 0-2.153026 0.36759-3.938462 0.708923-5.77641 3.177026-8.297026 8.480821-12.603077 16.278974-12.603077 6.354051 0 13.784615 3.229538 22.265436 9.373538l48.41682-18.06441-49.125743-18.747077c-8.139487 5.408821-15.911385 8.297026-22.633026 8.297026-7.430564 0-12.366769-4.332308-15.202461-12.629334-0.341333-1.837949-0.708923-3.623385-0.708923-5.77641 0-10.476308 6.721641-16.252718 19.797333-16.961641-5.303795-5.435077-7.771897-11.211487-7.771897-16.252718 0-5.408821 2.468103-10.108718 7.771897-14.073436a19.928615 19.928615 0 0 1 8.84841-2.179282c10.60759 0 17.670564 9.399795 21.530257 27.805539l84.493128 32.111589 84.493128-32.820512c3.885949-18.06441 10.948923-27.096615 21.530256-27.096616 3.203282 0 6.038974 0.735179 8.848411 2.179282 5.671385 3.964718 8.139487 8.664615 8.139487 14.073436 0 5.408821-2.835692 10.817641-7.771898 16.252718 13.075692 0.708923 19.429744 6.485333 19.429744 16.961641 0 1.785436-0.341333 3.938462-0.708923 5.77641-2.468103 8.297026-7.430564 12.603077-15.202462 12.603077-7.062974 0-14.493538-2.888205-22.606769-8.270769l-48.78441 18.747077 48.049231 18.405744c9.189744-6.485333 16.987897-9.714872 23.368205-9.714872z m-64.328205-89.508102v4.332308c0 7.220513-2.100513 12.996923-6.695384 17.69682-4.594872 4.673641-10.24 7.561846-16.987898 8.297026-6.354051 0.36759-11.290256-0.735179-14.834872-3.255795a25.915077 25.915077 0 0 1-16.620307 5.77641c-6.354051 0-12.340513-2.153026-17.670564-6.144-3.518359 2.888205-8.480821 4.332308-15.543795 3.623385a25.153641 25.153641 0 0 1-23.683282-25.626257v-5.77641c-24.024615-7.220513-42.771692-18.773333-55.847385-34.658462a85.412103 85.412103 0 0 1-19.797333-55.558564c0-4.726154 0.36759-9.767385 1.417846-15.176205 4.594872-32.479179 18.747077-59.181949 42.062769-80.475897 24.733538-22.370462 54.797128-33.214359 90.47959-33.214359 35.708718 0 65.746051 11.185231 90.47959 33.581949 23.683282 20.926359 37.809231 47.629128 42.430359 80.108307 1.050256 5.408821 1.417846 10.476308 1.417846 15.176205 0 21.635282-6.721641 40.434872-20.506257 56.293744-14.152205 15.885128-34.290872 27.779282-60.100923 34.999795z m-84.808205-133.907692c-7.089231-8.664615-15.911385-12.970667-25.810051-12.970667-10.24 0-18.747077 4.332308-25.810051 12.996923-7.089231 8.664615-10.948923 19.114667-10.948923 31.770256 0 12.261744 3.518359 23.079385 10.948923 31.744 7.089231 8.664615 15.911385 12.996923 25.810051 12.996923 10.24 0 18.720821-4.332308 25.810051-12.996923 7.062974-8.664615 10.948923-19.140923 10.948923-31.770256 0-12.603077-3.885949-23.105641-10.948923-31.770256z m40.644923 87.69641c-3.203282-5.382564-6.380308-7.929436-9.557333-7.929436-3.518359 0-6.721641 2.546872-10.24 7.220513a23.499487 23.499487 0 0 0-5.303795 14.441025c0 2.888205 0.708923 5.408821 2.468103 7.588103 2.835692 3.255795 7.430564 4.699897 13.443282 4.699897 9.189744 0 13.784615-3.623385 13.784615-10.843897a35.708718 35.708718 0 0 0-4.594872-15.149949z m69.973334-87.69641c-7.089231-8.664615-15.911385-12.970667-26.151385-12.970667-9.898667 0-18.747077 4.332308-25.810051 12.996923-7.062974 8.664615-10.60759 19.114667-10.60759 31.770256 0 12.261744 3.544615 23.079385 10.60759 31.744 7.089231 8.664615 15.543795 12.996923 25.810051 12.996923 10.24 0 19.08841-4.332308 26.151385-12.996923 7.089231-8.664615 10.60759-19.140923 10.607589-31.770256a46.552615 46.552615 0 0 0-10.607589-31.770256zM425.143795 732.238769c-7.062974-50.176-48.416821-88.799179-98.96041-88.799179s-92.238769 38.990769-98.986667 88.799179H198.971077C183.401026 732.186256 170.666667 719.21559 170.666667 702.962872v-145.460513c0-27.411692 21.556513-58.814359 21.556512-58.814359l63.277949-86.619897c13.075692-15.885128 21.530256-29.223385 42.404103-29.223385h127.238564c15.570051 0 28.278154 12.970667 28.278154 29.223385v290.921025c0 15.858872-12.708103 28.855795-28.278154 29.223385z m-19.429744-300.294564H301.42359c-1.785436 2.179282-4.253538 5.041231-6.380308 7.588103l-2.100513 2.888205-62.227692 85.175795c-6.354051 9.714872-12.708103 24.155897-12.708103 29.932307l1.417847 12.288 186.262974-1.811692v-136.060718z m-80.239589 238.198154c40.644923 0 73.885538 34.290872 73.885538 76.14359 0 41.878974-33.240615 76.169846-73.885538 76.169846s-73.859282-34.290872-73.859283-76.14359c0-41.878974 33.214359-76.14359 73.859283-76.14359z m397.994666 0c40.644923 0 73.859282 34.290872 73.859282 76.14359 0 41.878974-33.214359 76.169846-73.859282 76.169846-40.644923 0-73.885538-34.290872-73.885538-76.14359 0-42.246564 33.240615-76.14359 73.885538-76.14359z" fill="#3BB7FF" ></path></symbol><symbol id="iconyunhanglushu" viewBox="0 0 1024 1024"><path d="M160.627451 60.235294m80.313725 0l542.117648 0q80.313725 0 80.313725 80.313726l0 542.117647q0 80.313725-80.313725 80.313725l-542.117648 0q-80.313725 0-80.313725-80.313725l0-542.117647q0-80.313725 80.313725-80.313726Z" fill="#B3E5FC" opacity=".24" ></path><path d="M713.446902 220.862745a69.792627 69.792627 0 0 0-69.591843 69.933177 69.672157 69.672157 0 0 0 23.050039 52.003137l-70.174118 126.694902a65.515922 65.515922 0 0 0-10.882509-0.863373c-13.352157 0-25.820863 4.216471-35.960471 11.344314l-93.103686-82.863686c3.774745-7.42902 5.802667-15.861961 5.802666-24.756706a55.215686 55.215686 0 0 0-55.095215-55.356235 55.215686 55.215686 0 0 0-55.115294 55.336156c0 14.737569 5.802667 28.270431 15.219451 38.189177l-43.489883 61.901804a47.666196 47.666196 0 0 0-15.239529-2.489726A47.987451 47.987451 0 0 0 261.019608 518.003451a47.987451 47.987451 0 0 0 47.846902 48.067765 47.987451 47.987451 0 0 0 40.31749-73.848471l46.120157-65.837176a55.496784 55.496784 0 0 0 39.434039-5.983373l94.569412 84.048314a62.584471 62.584471 0 0 0 56.400314 89.288784c34.334118 0 62.343529-28.109804 62.343529-62.624627 0-19.375686-8.693961-36.723451-22.487843-48.228392l69.190274-124.827608c5.943216 1.766902 12.167529 2.630275 18.69302 2.630274A69.792627 69.792627 0 0 0 783.058824 290.775843 69.792627 69.792627 0 0 0 713.446902 220.862745z" fill="#3BB7FF" ></path></symbol><symbol id="iconkaiqi" viewBox="0 0 1706 1024"><path d="M47.047111 504.604444C47.047111 251.221333 256.284444 45.681778 514.446222 45.681778c258.161778 0 467.399111 205.482667 467.399111 458.922666s-209.237333 458.922667-467.399111 458.922667c-258.161778 0-467.399111-205.482667-467.399111-458.922667M0 505.742222c0 279.267556 230.570667 505.685333 515.072 505.685334h676.522667c284.444444 0 515.072-226.417778 515.072-505.742223C1706.666667 226.417778 1476.096 0 1191.594667 0H515.072C230.627556 0 0 226.417778 0 505.685333" fill="#0069FF" ></path></symbol><symbol id="iconiconxuanzhongzhinengjiansuo1" viewBox="0 0 1024 1024"><path d="M926.08 1008.896l-106.496-107.712c10.368-4.992 27.52-17.28 44.736-38.016l17.28 17.664 84.672 86.4c7.68 7.68 7.68 20.096 0 27.712a120.32 120.32 0 0 1-19.584 14.72c-8.064 3.84-16.832 3.008-20.608-0.768zM690.56 940.8a235.52 235.52 0 0 1 0-470.976 235.648 235.648 0 0 1 235.328 235.52c0 129.92-105.6 235.52-235.328 235.52z m0-413.12a177.728 177.728 0 0 0-177.472 177.6 177.856 177.856 0 0 0 177.472 177.728 177.856 177.856 0 0 0 177.536-177.728 177.728 177.728 0 0 0-177.536-177.6z m-269.632 182.464c0-143.36 107.136-271.232 238.976-271.232 48 0 92.736-4.352 130.176 22.272V237.952H525.824c-72.192 0-130.752-63.68-130.752-142.336V0h-264.32C58.624 0 0 63.744 0 142.336v651.136c0 78.592 58.56 142.336 130.816 142.336H541.44c-71.936-44.928-120.576-129.216-120.576-225.664z m133.44-494.08h237.888L425.408 0v86.848c0 71.36 57.728 129.216 128.96 129.216z" fill="#0069FF" ></path></symbol><symbol id="iconxitongbanben" viewBox="0 0 1024 1024"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#3BB7FF" opacity=".2" ></path><path d="M216.064 767.156706H699.030588V364.724706H216.064v402.462118z m134.144-321.957647h214.648471v53.669647h-214.648471v-53.669647z m0 80.50447h214.648471v53.63953h-214.648471v-53.63953z m0 80.474353h53.669647v53.669647h-53.669647v-53.669647zM269.733647 257.385412v53.669647H752.64V713.487059h53.669647V257.385412H269.733647z" fill="#3BB7FF" ></path></symbol><symbol id="iconyunhangyichang" viewBox="0 0 1024 1024"><path d="M160.627451 60.235294m80.313725 0l542.117648 0q80.313725 0 80.313725 80.313726l0 542.117647q0 80.313725-80.313725 80.313725l-542.117648 0q-80.313725 0-80.313725-80.313725l0-542.117647q0-80.313725 80.313725-80.313726Z" fill="#B3E5FC" opacity=".24" ></path><path d="M718.888157 608.215843H305.111843c-20.680784 0-31.663686-24.094118-17.889882-39.313568l1.887372-2.088157c45.638275-50.497255 58.508549-110.170353 74.832314-185.725491 2.208627-10.300235 4.497569-20.841412 6.90698-31.623529 17.066667-76.117333 81.960157-103.243294 137.015216-103.243294 1.546039 0 2.851137 0 3.915294 0.060235 1.084235-0.040157 2.389333-0.060235 3.915294-0.060235 55.03498 0 119.948549 27.105882 137.015216 103.243294 3.995608 17.78949 7.288471 34.916392 10.460863 51.481098 13.091137 68.186353 23.431529 122.056784 69.611921 164.161255l2.369255 2.168471c16.022588 14.59702 5.541647 40.96-16.263529 40.96z m-361.210981-49.734274h304.38902c-28.551529-44.493804-38.289569-95.292235-48.489412-148.299294a1581.578039 1581.578039 0 0 0-10.119529-49.995295c-13.010824-57.966431-65.696627-64.25098-87.742745-64.25098-1.224784 0-2.208627 0.040157-2.931451 0.060235l-1.003922 0.060236-1.003921-0.060236-2.911373-0.040157c-22.046118 0-74.731922 6.264471-87.742745 64.250981-2.369255 10.641569-4.618039 21.062275-6.826667 31.242039-13.332078 61.841569-25.258667 117.11749-55.617255 167.052549z m54.492863 74.430745h207.731451V682.666667H412.170039v-49.754353z m95.372549-350.248157c-34.133333 0-61.921882-27.366902-61.921882-61.038432C445.620706 188.014431 473.409255 160.627451 507.542588 160.627451c34.133333 0 61.901804 27.366902 61.901804 61.018353 0 33.651451-27.768471 61.018353-61.901804 61.018353z m0-86.939608c-14.516706 0-26.302745 11.625412-26.302745 25.921255s11.786039 25.921255 26.302745 25.921255c14.496627 0 26.302745-11.625412 26.302745-25.901177 0-14.336-11.806118-25.941333-26.302745-25.941333z" fill="#3BB7FF" ></path></symbol><symbol id="iconiconxuanzhongshouye" viewBox="0 0 1024 1024"><path d="M569.6 21.312a82.048 82.048 0 0 0-110.336 0L13.312 444.736a41.152 41.152 0 0 0 55.04 61.12l7.104-6.72v441.92c0 45.44 36.736 82.304 82.176 82.368h239.552v-247.68a57.92 57.92 0 0 1 57.984-57.984h112.64a57.92 57.92 0 0 1 57.984 57.984v247.68h245.12a82.304 82.304 0 0 0 82.304-82.368V504.512c18.304 16.512 44.16 15.296 59.392-1.664a41.152 41.152 0 0 0-2.944-58.112L569.536 21.312z" fill="#0069FF" ></path></symbol><symbol id="iconiconxuanzhongrenwuguanli" viewBox="0 0 1024 1024"><path d="M888.832 983.232H73.92C33.472 983.232 0 953.6 0 917.568V196.288c0-35.904 33.472-65.664 73.92-65.664h36.992v98.56c0 35.968 33.408 65.728 73.92 65.728h592.192c40.512 0 73.92-29.76 73.92-65.728v-98.56h36.992c40.448 0 73.92 29.76 73.92 65.728v721.216c0.896 35.968-32.576 65.664-73.024 65.664z m-165.44-445.824a62.72 62.72 0 0 0-79.232 0l-198.016 167.36L353.792 626.56a62.72 62.72 0 0 0-79.232 0c-22.016 18.752-22.016 48.512 0 66.496l132.032 111.04a62.72 62.72 0 0 0 79.168 0l237.632-200.192c21.952-18.048 21.952-47.744 0-66.56z m-57.216-308.224H296.576c-40.512 0-73.92-29.696-73.92-65.728v-32.832C370.496 34.432 372.224 32.832 410.88 0h147.008c36.032 30.528 35.2 34.432 182.144 130.624v32.832c0 36.8-32.576 65.728-73.92 65.728zM481.28 65.728c-40.448 0-73.92 29.696-73.92 65.664 0 36.032 33.472 65.728 73.92 65.728 40.512 0 73.92-29.696 73.92-65.728 0-36.736-33.408-65.664-73.92-65.664z" fill="#000000" fill-opacity=".85" opacity=".5" ></path></symbol><symbol id="iconiconxuanzhongziyuanguanli" viewBox="0 0 1024 1024"><path d="M0 194.56c0 107.456 229.248 194.56 512 194.56s512-87.104 512-194.56S794.752 0 512 0 0 87.104 0 194.56zM959.296 422.4C871.808 481.92 704.256 522.24 512 522.24S152.192 481.92 64.704 422.4C23.488 450.56 0 482.688 0 517.12c0 107.52 229.248 194.56 512 194.56s512-87.04 512-194.56c0-34.432-23.488-66.56-64.704-94.72z m0 312.32c-87.488 59.52-255.04 99.84-447.296 99.84s-359.808-40.32-447.296-99.84C23.488 762.88 0 795.008 0 829.44 0 936.96 229.248 1024 512 1024s512-87.04 512-194.56c0-34.432-23.488-66.56-64.704-94.72z" fill="#0069FF" ></path></symbol><symbol id="iconiconxuanzhongshouye1" viewBox="0 0 1024 1024"><path d="M569.6 21.312a82.048 82.048 0 0 0-110.336 0L13.312 444.736a41.152 41.152 0 0 0 55.04 61.12l7.104-6.72v441.92c0 45.44 36.736 82.304 82.176 82.368h239.552v-247.68a57.92 57.92 0 0 1 57.984-57.984h112.64a57.92 57.92 0 0 1 57.984 57.984v247.68h245.12a82.304 82.304 0 0 0 82.304-82.368V504.512c18.304 16.512 44.16 15.296 59.392-1.664a41.152 41.152 0 0 0-2.944-58.112L569.536 21.312z" fill="#000000" fill-opacity=".85" opacity=".5" ></path></symbol><symbol id="iconiconxuanzhongziyuanguanli1" viewBox="0 0 1024 1024"><path d="M0 194.56c0 107.456 229.248 194.56 512 194.56s512-87.104 512-194.56S794.752 0 512 0 0 87.104 0 194.56zM959.296 422.4C871.808 481.92 704.256 522.24 512 522.24S152.192 481.92 64.704 422.4C23.488 450.56 0 482.688 0 517.12c0 107.52 229.248 194.56 512 194.56s512-87.04 512-194.56c0-34.432-23.488-66.56-64.704-94.72z m0 312.32c-87.488 59.52-255.04 99.84-447.296 99.84s-359.808-40.32-447.296-99.84C23.488 762.88 0 795.008 0 829.44 0 936.96 229.248 1024 512 1024s512-87.04 512-194.56c0-34.432-23.488-66.56-64.704-94.72z" fill="#000000" fill-opacity=".85" opacity=".5" ></path></symbol><symbol id="iconxinxicunchu" viewBox="0 0 1024 1024"><path d="M160.627451 60.235294m80.313725 0l542.117648 0q80.313725 0 80.313725 80.313726l0 542.117647q0 80.313725-80.313725 80.313725l-542.117648 0q-80.313725 0-80.313725-80.313725l0-542.117647q0-80.313725 80.313725-80.313726Z" fill="#B3E5FC" opacity=".24" ></path><path d="M453.029647 281.941333c0-12.709647 9.878588-23.009882 22.086275-23.009882 12.187608 0 22.086275 10.300235 22.086274 23.009882 0 12.689569-9.898667 23.009882-22.086274 23.009883-12.207686 0-22.086275-10.320314-22.086275-23.009883zM654.556863 535.009882c0 12.689569-9.878588 23.009882-22.086275 23.009883h-220.862745c-12.207686 0-22.086275-10.320314-22.086274-23.009883 0-12.709647 9.878588-23.009882 22.086274-23.009882h220.862745c12.207686 0 22.086275 10.300235 22.086275 23.009882z m0-92.039529c0 12.709647-9.878588 23.009882-22.086275 23.009882h-220.862745c-12.207686 0-22.086275-10.300235-22.086274-22.989804 0-12.709647 9.878588-23.009882 22.086274-23.009882h220.862745c12.207686 0 22.086275 10.300235 22.086275 22.989804z m44.172549 138.039216c0 12.709647-9.878588 23.009882-22.086275 23.009882H367.435294c-12.207686 0-22.086275-10.300235-22.086274-22.989804V351.974902c0-3.072 1.184627-5.983373 3.212549-8.131765l40.96-42.646588v26.744471c0 25.419294 19.777255 46.019765 44.172549 46.019764h176.690196c24.395294 0 44.172549-20.600471 44.172549-46.019764V235.921569h22.086274c12.207686 0 22.086275 10.300235 22.086275 23.009882v322.098196zM433.694118 255.196863l15.259607-15.902118a10.842353 10.842353 0 0 1 7.790432-3.353098H610.384314v69.009569c0 12.709647-9.878588 23.009882-22.086275 23.009882h-132.517647c-12.207686 0-22.086275-10.300235-22.086274-23.009882V255.196863z m265.035294-65.254902H443.151059c-5.822745 0-11.444706 2.409412-15.560784 6.706196l-119.868236 124.586667a23.491765 23.491765 0 0 0-6.485333 16.263529L301.176471 604.039529c0 25.399216 19.777255 46.019765 44.15247 46.019765H698.729412c24.395294 0 44.172549-20.600471 44.172549-46.019765V235.921569c0-25.419294-19.777255-46.019765-44.172549-46.019765z" fill="#3BB7FF" ></path></symbol><symbol id="iconiconxuanzhongxitongyunwei" viewBox="0 0 1024 1024"><path d="M938.048 0H75.776C33.984 0 0 33.92 0 75.776v577.472c0 41.856 33.92 75.84 75.776 75.84h263.68L124.8 1013.44l764.032 0.768-214.656-285.12h263.872c41.792 0 75.776-33.984 75.776-75.84V75.776C1013.824 33.984 979.712 0 938.048 0z m-46.464 606.848H582.144L506.88 506.88 431.36 606.848H122.24V122.24H891.52v484.608z" fill="#0069FF" ></path></symbol><symbol id="iconiconxuanzhongzhinengjiansuo" viewBox="0 0 1024 1024"><path d="M926.08 1008.896l-106.496-107.712c10.368-4.992 27.52-17.28 44.736-38.016l17.28 17.664 84.672 86.4c7.68 7.68 7.68 20.096 0 27.712a120.32 120.32 0 0 1-19.584 14.72c-8.064 3.84-16.832 3.008-20.608-0.768zM690.56 940.8a235.52 235.52 0 0 1 0-470.976 235.648 235.648 0 0 1 235.328 235.52c0 129.92-105.6 235.52-235.328 235.52z m0-413.12a177.728 177.728 0 0 0-177.472 177.6 177.856 177.856 0 0 0 177.472 177.728 177.856 177.856 0 0 0 177.536-177.728 177.728 177.728 0 0 0-177.536-177.6z m-269.632 182.464c0-143.36 107.136-271.232 238.976-271.232 48 0 92.736-4.352 130.176 22.272V237.952H525.824c-72.192 0-130.752-63.68-130.752-142.336V0h-264.32C58.624 0 0 63.744 0 142.336v651.136c0 78.592 58.56 142.336 130.816 142.336H541.44c-71.936-44.928-120.576-129.216-120.576-225.664z m133.44-494.08h237.888L425.408 0v86.848c0 71.36 57.728 129.216 128.96 129.216z" fill="#000000" fill-opacity=".85" opacity=".5" ></path></symbol><symbol id="iconiconxuanzhongrenwuguanli1" viewBox="0 0 1024 1024"><path d="M888.832 983.232H73.92C33.472 983.232 0 953.6 0 917.568V196.288c0-35.904 33.472-65.664 73.92-65.664h36.992v98.56c0 35.968 33.408 65.728 73.92 65.728h592.192c40.512 0 73.92-29.76 73.92-65.728v-98.56h36.992c40.448 0 73.92 29.76 73.92 65.728v721.216c0.896 35.968-32.576 65.664-73.024 65.664z m-165.44-445.824a62.72 62.72 0 0 0-79.232 0l-198.016 167.36L353.792 626.56a62.72 62.72 0 0 0-79.232 0c-22.016 18.752-22.016 48.512 0 66.496l132.032 111.04a62.72 62.72 0 0 0 79.168 0l237.632-200.192c21.952-18.048 21.952-47.744 0-66.56z m-57.216-308.224H296.576c-40.512 0-73.92-29.696-73.92-65.728v-32.832C370.496 34.432 372.224 32.832 410.88 0h147.008c36.032 30.528 35.2 34.432 182.144 130.624v32.832c0 36.8-32.576 65.728-73.92 65.728zM481.28 65.728c-40.448 0-73.92 29.696-73.92 65.664 0 36.032 33.472 65.728 73.92 65.728 40.512 0 73.92-29.696 73.92-65.728 0-36.736-33.408-65.664-73.92-65.664z" fill="#0069FF" ></path></symbol><symbol id="iconshanchu" viewBox="0 0 1072 1024"><path d="M39.204571 0h985.721905v1018.441143H39.204571z" fill="#FFFFFF" ></path><path d="M766.927238 231.472762H344.112762c-38.66819 0-70.217143 31.110095-70.217143 69.632v22.918095h563.248762v-23.30819c0-38.13181-31.50019-69.241905-70.217143-69.241905z m-123.172571-46.32381l10.532571 72.996572h-197.485714l10.483809-72.996572h176.518096z m5.656381-46.275047h-187.733334c-19.553524 0-37.546667 15.60381-40.228571 34.425905l-13.897143 97.03619a29.647238 29.647238 0 0 0 30.427429 34.474667h234.691047c19.504762 0 33.060571-15.60381 30.427429-34.474667l-13.897143-97.03619c-2.243048-18.870857-20.284952-34.425905-39.789714-34.425905z m129.170285 231.472762H332.458667a41.935238 41.935238 0 0 0-42.812953 46.323809l38.326857 416.963048c2.243048 25.209905 25.551238 46.32381 51.053715 46.323809h352.256c25.892571 0 48.761905-20.772571 51.053714-46.323809l38.66819-417.01181c2.633143-25.551238-16.530286-46.275048-42.422857-46.275047z m-316.952381 416.621714H391.070476l-23.30819-324.022857h93.866666v324.022857z m140.824381 0H508.586667V462.945524h93.866666v324.022857z m117.516191 0h-70.558476V462.945524h93.866666l-23.259428 324.022857z" fill="#F2284F" ></path></symbol><symbol id="icondingweiweizhi" viewBox="0 0 1024 1024"><path d="M0 0h985.721905v1018.441143H0z" fill="#FFFFFF" ></path><path d="M492.885333 138.873905c-168.521143 0-305.152 143.457524-305.152 320.512 0 88.502857 34.182095 168.618667 89.380572 226.645333l215.771428 226.596572 215.722667-226.596572a327.875048 327.875048 0 0 0 89.380571-226.645333c0-177.005714-136.630857-320.512-305.103238-320.512z m0 472.795428C420.473905 611.474286 361.910857 544.182857 362.105905 461.287619v-0.097524C361.910857 378.392381 420.327619 311.100952 492.78781 310.808381h0.097523c72.362667 0.24381 130.925714 67.535238 130.730667 150.381714v0.097524c0.24381 82.846476-58.270476 150.186667-130.633143 150.430476h-0.097524z" fill="#799AF4" ></path></symbol><symbol id="iconxitongxinxi" viewBox="0 0 1024 1024"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#3BB7FF" opacity=".2" ></path><path d="M271.058824 326.113882C271.058824 295.695059 295.695059 271.058824 326.113882 271.058824h117.76c30.388706 0 55.024941 24.636235 55.024942 55.055058v165.104942c0 4.216471-3.433412 7.68-7.68 7.68h-165.104942A55.055059 55.055059 0 0 1 271.058824 443.873882v-117.76z m30.72 5.12c0-16.293647 13.161412-29.455059 29.455058-29.455058h107.52c16.263529 0 29.424941 13.161412 29.424942 29.455058v136.944942h-136.944942a29.455059 29.455059 0 0 1-29.455058-29.424942v-107.52z m481.28-5.12C783.058824 295.695059 758.422588 271.058824 728.033882 271.058824h-117.76c-30.418824 0-55.055059 24.636235-55.055058 55.055058v165.104942c0 4.216471 3.433412 7.68 7.68 7.68h165.135058c30.388706 0 55.024941-24.636235 55.024942-55.024942v-117.76z m-30.72 5.12a29.455059 29.455059 0 0 0-29.424942-29.455058h-107.52a29.455059 29.455059 0 0 0-29.455058 29.455058v136.944942h136.975058c16.263529 0 29.424941-13.191529 29.424942-29.424942v-107.52zM271.058824 728.033882C271.058824 758.422588 295.695059 783.058824 326.113882 783.058824h117.76c30.388706 0 55.024941-24.636235 55.024942-55.024942V562.898824a7.68 7.68 0 0 0-7.68-7.68h-165.104942c-30.418824 0-55.055059 24.636235-55.055058 55.055058v117.76z m30.72-5.12c0 16.263529 13.161412 29.424941 29.455058 29.424942h107.52c16.263529 0 29.424941-13.191529 29.424942-29.424942v-136.975058h-136.944942a29.455059 29.455059 0 0 0-29.455058 29.455058v107.52z m481.28 5.12C783.058824 758.422588 758.422588 783.058824 728.033882 783.058824h-117.76a55.055059 55.055059 0 0 1-55.055058-55.024942V562.898824c0-4.216471 3.433412-7.68 7.68-7.68h165.135058c30.388706 0 55.024941 24.636235 55.024942 55.055058v117.76z m-30.72-5.12c0 16.263529-13.191529 29.424941-29.424942 29.424942h-107.52a29.455059 29.455059 0 0 1-29.455058-29.424942v-136.975058h136.975058c16.263529 0 29.424941 13.161412 29.424942 29.455058v107.52z" fill="#3BB7FF" ></path></symbol><symbol id="iconfenxiziyuan" viewBox="0 0 1024 1024"><path d="M160.627451 60.235294m80.313725 0l542.117648 0q80.313725 0 80.313725 80.313726l0 542.117647q0 80.313725-80.313725 80.313725l-542.117648 0q-80.313725 0-80.313725-80.313725l0-542.117647q0-80.313725 80.313725-80.313726Z" fill="#B3E5FC" opacity=".24" ></path><path d="M464.996392 585.687843a154.644078 154.644078 0 0 1-60.737255-15.179294c-27.949176-13.834039-45.979608-35.940392-53.549176-65.415529h4.21647a11.846275 11.846275 0 0 0 10.340393-6.083765 12.589176 12.589176 0 0 0 0.080313-12.227765l-30.920784-54.432627a11.90651 11.90651 0 0 0-10.340392-6.144 11.90651 11.90651 0 0 0-10.340392 6.144l-31.061334 54.492862a12.589176 12.589176 0 0 0 0.020079 12.267922 11.846275 11.846275 0 0 0 10.36047 6.103843h8.673883c11.083294 62.443922 50.457098 93.906824 81.598745 109.226667 25.6 12.348235 53.408627 19.19498 81.65898 20.118588 13.131294 0.040157 23.833098-10.88251 23.893333-24.415372a24.495686 24.495686 0 0 0-6.967215-17.307608 23.511843 23.511843 0 0 0-16.926118-7.147922z m276.439843-249.173333a11.886431 11.886431 0 0 0-10.440784-6.284549h-8.673882c-11.083294-62.443922-50.457098-93.906824-81.598745-109.327059a202.912627 202.912627 0 0 0-81.638902-20.078431 23.572078 23.572078 0 0 0-21.162667 11.966745c-4.417255 7.649882-4.417255 17.187137 0 24.857098 4.417255 7.649882 12.508863 12.247843 21.162667 11.966745a156.912941 156.912941 0 0 1 60.757333 15.199372c27.949176 13.854118 45.979608 35.940392 53.549176 65.41553h-4.21647a11.846275 11.846275 0 0 0-10.521098 6.083764 12.569098 12.569098 0 0 0 0.020078 12.408471l30.900706 54.432628a11.90651 11.90651 0 0 0 10.340392 6.144 11.90651 11.90651 0 0 0 10.360471-6.144l30.84047-54.372393a12.488784 12.488784 0 0 0 0.321255-12.288z m-45.839059 81.01647h-154.403137c-16.183216-0.040157-29.354667 13.392314-29.43498 30.037334v157.013333c0.080314 16.64502 13.251765 30.07749 29.43498 30.017255h154.403137c16.183216 0.060235 29.334588-13.372235 29.434981-30.017255v-157.013333c-0.100392-16.665098-13.251765-30.07749-29.434981-30.037334z m-18.291451 48.830745v119.326118H559.585882v-119.326118h117.719843zM512 230.801569c-0.100392-16.64502-13.251765-30.07749-29.43498-30.017255H328.101647c-16.163137-0.040157-29.31451 13.392314-29.394823 30.017255v157.013333c0 8.031373 3.112157 15.701333 8.633725 21.343373 5.50149 5.662118 12.970667 8.83451 20.761098 8.814431h154.403137a28.912941 28.912941 0 0 0 20.841412-8.774275c5.541647-5.662118 8.653804-13.352157 8.673882-21.383529v-157.013333z m-47.826824 18.81349v119.42651H346.553725V249.615059h117.659608z" fill="#3BB7FF" ></path></symbol><symbol id="iconzhatuchezhuapai" viewBox="0 0 1024 1024"><path d="M13.128205 0m105.025641 0l787.692308 0q105.025641 0 105.025641 105.025641l0 804.706462q0 105.025641-105.025641 105.025641l-787.692308 0q-105.025641 0-105.025641-105.025641l0-804.706462q0-105.025641 105.025641-105.025641Z" fill="#B3E5FC" opacity=".24" ></path><path d="M698.00041 499.449436a22.081641 22.081641 0 0 1 26.072616 17.014154l22.16041 108.465231a21.714051 21.714051 0 0 1-17.381744 25.547487 22.055385 22.055385 0 0 1-26.072615-17.014154l-22.134154-108.491487a21.714051 21.714051 0 0 1 17.329231-25.521231h0.026256z m-88.615384 0a22.055385 22.055385 0 0 1 26.072615 17.014154l22.16041 108.465231a21.714051 21.714051 0 0 1-17.381743 25.547487 22.055385 22.055385 0 0 1-26.072616-17.014154l-22.134154-108.491487a21.714051 21.714051 0 0 1 17.329231-25.521231h0.026257z m-88.615385 0a22.055385 22.055385 0 0 1 26.072615 17.014154l22.160411 108.465231a21.714051 21.714051 0 0 1-17.381744 25.547487 22.055385 22.055385 0 0 1-26.072615-17.014154l-22.134154-108.491487a21.714051 21.714051 0 0 1 17.355487-25.521231z m-347.897436 120.621949c0.078769-0.183795 0.026256-0.393846 0.131282-0.577641l66.454975-130.179282a22.212923 22.212923 0 0 1 19.823589-11.99918h119.204103l-8.008205-39.122051a21.714051 21.714051 0 0 1 21.714051-25.96759h465.237333a21.924103 21.924103 0 0 1 21.740308 25.96759l-66.481231 325.421948a22.055385 22.055385 0 0 1-21.714051 17.460513h-22.16041c0 47.944205-39.673436 86.803692-88.615385 86.803693s-88.615385-38.859487-88.615385-86.803693h-177.230769c0 47.917949-39.673436 86.803692-88.615384 86.803693s-88.615385-38.859487-88.615385-86.803693H192.800821A21.897846 21.897846 0 0 1 170.666667 759.387897v-130.179282a20.795077 20.795077 0 0 1 2.205538-9.110974z m55.794872-12.576821h74.909538v-86.777436H272.961641L228.693333 607.494564zM680.198564 824.451282c24.444718 0 44.268308-19.429744 44.320821-43.37559a42.010256 42.010256 0 0 0-2.625641-14.099692c-0.026256-0.131282-0.131282-0.210051-0.183795-0.341333a43.979487 43.979487 0 0 0-27.201641-26.440205l-2.021744-0.603898a40.539897 40.539897 0 0 0-24.602256 0c-0.65641 0.183795-1.312821 0.36759-1.969231 0.603898a44.032 44.032 0 0 0-27.227898 26.466461l-0.210051 0.36759a42.115282 42.115282 0 0 0-2.573128 14.047179c0.026256 23.945846 19.849846 43.349333 44.294564 43.37559z m-76.458667-86.777436c0.262564-0.446359 0.603897-0.840205 0.866462-1.286564 1.470359-2.363077 3.072-4.699897 4.75241-6.931692 1.312821-1.732923 2.730667-3.308308 4.148513-4.909949 2.573128-2.914462 5.330051-5.671385 8.270769-8.244513 2.048-1.759179 4.096-3.492103 6.301539-5.093743a89.429333 89.429333 0 0 1 14.493538-8.402052c1.706667-0.787692 3.360821-1.627897 5.146257-2.284307 4.043487-1.575385 8.218256-2.835692 12.471794-3.80718 1.470359-0.341333 2.940718-0.630154 4.411077-0.892718a79.451897 79.451897 0 0 1 31.218872 0 88.300308 88.300308 0 0 1 17.014154 4.726154c1.654154 0.65641 3.229538 1.417846 4.83118 2.153026 3.124513 1.444103 6.170256 3.072 9.110974 4.831179 1.837949 1.155282 3.675897 2.363077 5.461333 3.623385 2.310564 1.654154 4.46359 3.492103 6.590359 5.330051 2.809436 2.468103 5.461333 5.093744 7.90318 7.876923 1.496615 1.68041 2.993231 3.334564 4.332307 5.12 1.706667 2.231795 3.229538 4.516103 4.726154 6.905436 0.262564 0.446359 0.603897 0.840205 0.866462 1.286564h16.173948l57.580308-282.046359h-411.175384l57.580307 282.046359h126.923487zM325.737026 824.451282c24.444718 0 44.268308-19.429744 44.32082-43.37559a41.668923 41.668923 0 0 0-2.625641-14.099692 43.979487 43.979487 0 0 0-27.359179-26.781538l-2.048-0.603898a40.487385 40.487385 0 0 0-24.602257 0c-0.65641 0.183795-1.312821 0.36759-1.969231 0.603898a44.032 44.032 0 0 0-27.227897 26.466461l-0.210051 0.36759a42.115282 42.115282 0 0 0-2.573128 14.047179c0.026256 23.945846 19.849846 43.349333 44.294564 43.37559z m-76.458667-86.777436c0.262564-0.446359 0.603897-0.840205 0.866462-1.286564 1.470359-2.363077 3.072-4.699897 4.75241-6.931692 1.312821-1.732923 2.730667-3.308308 4.148513-4.909949a90.164513 90.164513 0 0 1 14.572307-13.338256 89.429333 89.429333 0 0 1 14.493539-8.402052c1.706667-0.787692 3.360821-1.627897 5.146256-2.284307 4.043487-1.575385 8.218256-2.835692 12.471795-3.80718 1.470359-0.341333 2.940718-0.630154 4.437333-0.892718a79.451897 79.451897 0 0 1 31.192616 0 88.300308 88.300308 0 0 1 17.014154 4.726154c1.654154 0.65641 3.229538 1.417846 4.831179 2.153026 3.124513 1.444103 6.170256 3.072 9.110974 4.831179 1.837949 1.155282 3.675897 2.363077 5.461334 3.623385 2.310564 1.654154 4.46359 3.492103 6.590359 5.330051 2.809436 2.468103 5.461333 5.093744 7.903179 7.876923 1.496615 1.68041 2.993231 3.334564 4.332308 5.12 1.68041 2.231795 3.255795 4.542359 4.726154 6.905436 0.262564 0.446359 0.603897 0.840205 0.866461 1.286564h29.433436l-44.294564-216.956718H347.897436v108.491487a21.924103 21.924103 0 0 1-22.16041 21.687795H214.961231v86.777436h34.317128z m586.043077-347.109743a22.317949 22.317949 0 0 1-17.066667-7.824411l-95.232-111.931077-49.309538 48.285539a22.501744 22.501744 0 0 1-32.978052-1.785436l-73.124102-89.534359-159.744 156.409436a22.475487 22.475487 0 0 1-31.323898 0.420102 21.398974 21.398974 0 0 1 0-31.087589l177.23077-173.554872a21.740308 21.740308 0 0 1 16.882872-6.327795c6.301538 0.341333 12.130462 3.282051 16.095179 8.086974l73.124103 89.534359 48.968205-47.917948a22.212923 22.212923 0 0 1 16.67282-6.327795c6.222769 0.262564 12.025436 3.072 16.01641 7.771897l110.775795 130.153026c7.82441 9.189744 6.564103 22.89559-2.809436 30.562461a22.422974 22.422974 0 0 1-14.178461 5.041231z m-110.802051 0h-44.320821V347.109744h44.320821v43.401846z m-132.936206 0V347.109744h44.320821v43.401846H591.556923z m-88.615384-43.428103h44.32082v43.401846h-44.32082v-43.401846z m44.32082-65.063385h44.294564v43.37559h-44.294564v-43.37559z" fill="#3BB7FF" ></path></symbol><symbol id="iconduoxuanxuanzhong" viewBox="0 0 1024 1024"><path d="M864 1004.8h-704c-78.016 0-140.8-62.656-140.8-140.8v-704C19.2 81.984 81.856 19.2 160 19.2h704c78.016 0 140.8 62.656 140.8 140.8v704c0 78.144-62.784 140.8-140.8 140.8z" fill="#3BB7FF" ></path><path d="M406.4 588.48L244.992 427.008 145.408 526.592l260.992 260.928 436.992-436.928-99.584-99.584z" fill="#FFFFFF" ></path></symbol><symbol id="icondanxuanxuanzhong" viewBox="0 0 1024 1024"><path d="M0 512a512 512 0 1 0 1024 0A512 512 0 0 0 0 512z" fill="#3BB7FF" ></path><path d="M320 512a192 192 0 1 0 384 0 192 192 0 1 0-384 0z" fill="#FFFFFF" ></path></symbol><symbol id="iconshebeixinxi" viewBox="0 0 1024 1024"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#3BB7FF" opacity=".2" ></path><path d="M759.265882 538.142118L721.076706 256.903529A18.522353 18.522353 0 0 0 702.644706 240.941176H298.827294a18.462118 18.462118 0 0 0-18.311529 15.902118l-39.393883 281.298824h0.39153l-0.39153 0.451764v199.740236c0 11.685647 9.456941 21.142588 21.142589 21.142588H738.183529a21.142588 21.142588 0 0 0 21.142589-21.142588v-199.740236l-0.39153-0.451764h0.331294z m-37.014588 184.169411H278.106353v-184.169411h444.144941v184.169411z" fill="#3BB7FF" ></path><path d="M327.619765 613.165176h49.061647a12.559059 12.559059 0 0 0 12.498823-12.528941v-11.715764a12.498824 12.498824 0 0 0-12.498823-12.438589h-49.091765a12.498824 12.498824 0 0 0-12.468706 12.438589v11.745882a12.559059 12.559059 0 0 0 12.498824 12.498823z m0 73.728h49.061647a12.559059 12.559059 0 0 0 12.498823-12.528941v-11.655529a12.498824 12.498824 0 0 0-12.498823-12.498824h-49.091765a12.498824 12.498824 0 0 0-12.468706 12.498824v11.655529c0 6.927059 5.601882 12.528941 12.498824 12.528941z m116.314353-73.728h0.391529a18.311529 18.311529 0 1 0 0-36.683294h-0.391529a18.311529 18.311529 0 0 0-18.371765 18.251294v0.060236c0 10.149647 8.222118 18.371765 18.371765 18.371764z m0 73.728h0.391529a18.311529 18.311529 0 1 0 0-36.683294h-0.391529a18.311529 18.311529 0 0 0-18.371765 18.251294v0.060236a18.311529 18.311529 0 0 0 18.251294 18.371764h0.120471z m73.999058-73.728h0.39153a18.371765 18.371765 0 0 0 18.582588-18.371764 18.311529 18.311529 0 0 0-18.311529-18.31153h-0.662589a18.371765 18.371765 0 0 0 0 36.683294z m0 73.728h0.39153a18.371765 18.371765 0 0 0 18.582588-18.371764 18.311529 18.311529 0 0 0-18.311529-18.31153h-0.662589a18.311529 18.311529 0 1 0 0 36.683294z m73.456942-73.728h0.391529a18.371765 18.371765 0 0 0 0-36.683294h-0.391529a18.371765 18.371765 0 0 0-18.371765 18.31153 18.432 18.432 0 0 0 18.371765 18.371764z m0 73.728h0.391529a18.371765 18.371765 0 0 0 0-36.683294h-0.391529a18.371765 18.371765 0 0 0 0 36.683294z m73.878588-73.728h0.391529a18.311529 18.311529 0 1 0 0.060236-36.683294h-0.451765a18.371765 18.371765 0 0 0 0 36.683294z m0 73.728h0.391529a18.311529 18.311529 0 1 0 0.060236-36.683294h-0.451765a18.311529 18.311529 0 1 0-0.060235 36.683294h0.060235z" fill="#3BB7FF" ></path></symbol><symbol id="iconiconxuanzhongshouye2" viewBox="0 0 1024 1024"><path d="M938.048 0H75.776C33.984 0 0 33.92 0 75.776v577.472c0 41.856 33.92 75.84 75.776 75.84h263.68L124.8 1013.44l764.032 0.768-214.656-285.12h263.872c41.792 0 75.776-33.984 75.776-75.84V75.776C1013.824 33.984 979.712 0 938.048 0z m-46.464 606.848H582.144L506.88 506.88 431.36 606.848H122.24V122.24H891.52v484.608z" fill="#000000" fill-opacity=".85" opacity=".5" ></path></symbol><symbol id="iconbaocunmianxing" viewBox="0 0 1024 1024"><path d="M170.642286 0v385.974857c0 31.890286 30.573714 57.782857 68.315428 57.782857h546.084572c37.741714 0 68.315429-25.892571 68.315428-57.782857V0A170.642286 170.642286 0 0 1 1024 170.642286v682.715428A170.642286 170.642286 0 0 1 853.357714 1024H170.642286A170.642286 170.642286 0 0 1 0 853.357714V170.642286A170.642286 170.642286 0 0 1 170.642286 0z m68.315428 0h546.084572v375.442286H238.957714V0z m443.684572 136.557714a34.157714 34.157714 0 0 0-34.084572 34.084572v102.4a34.157714 34.157714 0 0 0 68.242286 0v-102.4a34.157714 34.157714 0 0 0-34.157714-34.084572z" fill="#6783E3" ></path></symbol><symbol id="iconzhongzhi" viewBox="0 0 1024 1024"><path d="M1024 0m0 53.894737l0 916.210526q0 53.894737-53.894737 53.894737l-916.210526 0q-53.894737 0-53.894737-53.894737l0-916.210526q0-53.894737 53.894737-53.894737l916.210526 0q53.894737 0 53.894737 53.894737Z" fill="#6783E3" ></path><path d="M835.116912 324.033123L891.957895 267.551439 892.335158 512l-246.029474-0.377263 95.752983-95.142176c-59.176421-125.556772-209.596632-179.667088-335.961825-120.867929a251.724351 251.724351 0 0 0-127.155649 133.425403l-132.652912-0.07186C198.512281 227.579509 405.162667 106.388211 607.860772 158.288842a378.826105 378.826105 0 0 1 227.25614 165.744281z m-538.606035 298.217544c59.266246 125.538807 209.740351 179.577263 336.069614 120.670315a251.778246 251.778246 0 0 0 126.976-133.245754l132.778667-0.053895c-52.241965 201.422596-258.928281 322.63186-461.626386 270.713263a378.88 378.88 0 0 1-227.184281-165.690385l-56.858947 56.481684-0.377263-244.502456 246.047438 0.377263-95.824842 95.178105 0 0.053895z" fill="#FFFFFF" ></path></symbol><symbol id="icontianjia" viewBox="0 0 1024 1024"><path d="M874.03928 149.903832A508.584406 508.584406 0 0 0 512 0.002276a508.755072 508.755072 0 0 0-362.03928 149.901556A508.698184 508.698184 0 0 0 0.002276 512c0 136.81717 53.304652 265.442376 150.015333 362.096168A508.584406 508.584406 0 0 0 512 1023.997724a508.299963 508.299963 0 0 0 361.982391-149.901556A509.039515 509.039515 0 0 0 1023.997724 512a508.356852 508.356852 0 0 0-149.958444-362.03928zM767.998862 548.69317H548.636282v220.443465a36.636282 36.636282 0 0 1-36.579393 36.750059 36.636282 36.636282 0 0 1-36.579393-36.750059V548.750059H256.001138A36.636282 36.636282 0 0 1 219.421745 512c0-20.309243 16.383927-36.750059 36.579393-36.750059h219.476358V254.863365c0-20.309243 16.383927-36.750059 36.579393-36.750059 20.195466 0 36.579393 16.440816 36.579393 36.750059v220.386576H767.998862c20.195466 0 36.579393 16.497704 36.579393 36.750059a36.636282 36.636282 0 0 1-36.579393 36.750059z" fill="#CCCCCC" ></path></symbol><symbol id="iconshanchu1" viewBox="0 0 1024 1024"><path d="M784.96 125.12H221.568C170.048 125.12 128 167.04 128 219.2v30.976h750.528v-31.488c0-51.584-41.984-93.568-93.568-93.568zM620.864 62.528l14.016 98.56H371.712l13.952-98.56h235.2zM628.352 0H378.24a55.68 55.68 0 0 0-53.504 46.528l-18.56 131.136a39.872 39.872 0 0 0 40.576 46.528h312.704a39.872 39.872 0 0 0 40.512-46.528L681.408 46.528A54.72 54.72 0 0 0 628.352 0z m172.16 312.704H206.08a56.384 56.384 0 0 0-57.088 62.592l51.072 563.392c3.008 34.048 33.984 62.528 68.032 62.528h469.376c34.56 0 65.024-27.968 68.032-62.528l51.52-563.392a55.744 55.744 0 0 0-56.512-62.592z m-422.336 562.944H284.16l-30.976-437.824h125.056v437.824z m187.648 0H440.704V437.824h125.12v437.824z m156.608 0h-94.08V437.824h125.12l-31.04 437.824z" fill="#F2284F" ></path></symbol></svg>',l=(a=document.getElementsByTagName("script"))[a.length-1].getAttribute("data-injectcss");if(l&&!m.__iconfont__svg__cssinject__){m.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(a){console&&console.log(a)}}!function(a){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(a,0);else{var l=function(){document.removeEventListener("DOMContentLoaded",l,!1),a()};document.addEventListener("DOMContentLoaded",l,!1)}else document.attachEvent&&(h=a,i=m.document,o=!1,(t=function(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(t,50)}c()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,c())});function c(){o||(o=!0,h())}var h,i,o,t}(function(){var a,l,c,h,i,o;(a=document.createElement("div")).innerHTML=t,t=null,(l=a.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",c=l,(h=document.body).firstChild?(i=c,(o=h.firstChild).parentNode.insertBefore(i,o)):h.appendChild(c))})}(window);
\ No newline at end of file
{
"id": "1565499",
"name": "繁星2.0",
"id": "1592179",
"name": "fanxin_new",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"css_prefix_text": "icon",
"description": "",
"glyphs": [
{
"icon_id": "831114",
"icon_id": "13192442",
"name": "上",
"font_class": "shang",
"unicode": "e611",
"unicode_decimal": 58897
},
{
"icon_id": "13192443",
"name": "下",
"font_class": "xia",
"unicode": "e612",
"unicode_decimal": 58898
},
{
"icon_id": "13192444",
"name": "左",
"font_class": "zuo",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "13192445",
"name": "左下",
"font_class": "zuoxia",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "13192446",
"name": "右下",
"font_class": "youxia",
"unicode": "e61f",
"unicode_decimal": 58911
},
{
"icon_id": "13192447",
"name": "左上",
"font_class": "zuoshang",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "13192448",
"name": " 右",
"font_class": "you",
"unicode": "e621",
"unicode_decimal": 58913
},
{
"icon_id": "13192449",
"name": "右上",
"font_class": "youshang",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "13191358",
"name": "启动",
"font_class": "qidong",
"unicode": "e628",
"unicode_decimal": 58920
},
{
"icon_id": "13191359",
"name": "密码",
"font_class": "mima",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "13191361",
"name": "迁移",
"font_class": "qianyi",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "13191411",
"name": "用户名",
"font_class": "yonghuming",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "13191425",
"name": "修 改",
"font_class": "xiugai",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "13191430",
"name": "修 改 copy",
"font_class": "xiugaicopy",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "13191446",
"name": "暂停",
"font_class": "zanting",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "13176280",
"name": "导出",
"font_class": "daochu",
"unicode": "e61a",
"unicode_decimal": 58906
},
{
"icon_id": "13176281",
"name": "重型罐式",
"font_class": "zhongxingguanshi",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "13176282",
"name": "展示",
"font_class": "zhanshi",
"unicode": "e61c",
"unicode_decimal": 58908
},
{
"icon_id": "13176283",
"name": "导入",
"font_class": "daoru",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "13176284",
"name": "危险品",
"font_class": "weixianpin",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "1010109",
"name": "日历",
"font_class": "rili",
"unicode": "e616",
"unicode_decimal": 58902
"icon_id": "13176288",
"name": "运行路数",
"font_class": "yunhanglushu",
"unicode": "e622",
"unicode_decimal": 58914
},
{
"icon_id": "1355658",
"name": "导入",
"font_class": "login",
"icon_id": "13176289",
"name": "开启",
"font_class": "kaiqi",
"unicode": "e623",
"unicode_decimal": 58915
},
{
"icon_id": "13176290",
"name": "icon 选中智能检索",
"font_class": "iconxuanzhongzhinengjiansuo1",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "13176291",
"name": "系统版本",
"font_class": "xitongbanben",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "13176293",
"name": "运行异常",
"font_class": "yunhangyichang",
"unicode": "e627",
"unicode_decimal": 58919
},
{
"icon_id": "13176254",
"name": "icon 选中首页(2)",
"font_class": "iconxuanzhongshouye",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "6237827",
"name": "展示",
"font_class": "zhanshi",
"unicode": "e87a",
"unicode_decimal": 59514
"icon_id": "13176255",
"name": "icon 选中任务管理(1)",
"font_class": "iconxuanzhongrenwuguanli",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "6367958",
"name": "添加",
"font_class": "add-circle-s",
"unicode": "e662",
"unicode_decimal": 58978
"icon_id": "13176256",
"name": "icon 选中资源管理",
"font_class": "iconxuanzhongziyuanguanli",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "7588088",
"name": "播放",
"font_class": "bofang1",
"unicode": "e61c",
"unicode_decimal": 58908
"icon_id": "13176257",
"name": "icon 选中首页(1)",
"font_class": "iconxuanzhongshouye1",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "13176258",
"name": "icon 选中资源管理(1)",
"font_class": "iconxuanzhongziyuanguanli1",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "13176259",
"name": "信息存储",
"font_class": "xinxicunchu",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "7815001",
"name": "播放",
"font_class": "bofang",
"icon_id": "13176260",
"name": "icon 选中系统运维",
"font_class": "iconxuanzhongxitongyunwei",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "13176261",
"name": "icon 选中智能检索(1)",
"font_class": "iconxuanzhongzhinengjiansuo",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "7978614",
"name": "删 除",
"font_class": "detail",
"unicode": "e644",
"unicode_decimal": 58948
"icon_id": "13176262",
"name": "icon 选中任务管理",
"font_class": "iconxuanzhongrenwuguanli1",
"unicode": "e608",
"unicode_decimal": 58888
},
{
"icon_id": "8147570",
"name": "迁移",
"font_class": "Migration",
"unicode": "e664",
"unicode_decimal": 58980
"icon_id": "13176263",
"name": "删 除(1)",
"font_class": "shanchu",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "8386986",
"name": "暂停",
"font_class": "zanting",
"unicode": "e685",
"unicode_decimal": 59013
"icon_id": "13176264",
"name": "定位 位置",
"font_class": "dingweiweizhi",
"unicode": "e60a",
"unicode_decimal": 58890
},
{
"icon_id": "9356268",
"name": "暂停 停止",
"font_class": "zantingtingzhi",
"unicode": "e643",
"unicode_decimal": 58947
"icon_id": "13176265",
"name": "系统信息",
"font_class": "xitongxinxi",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "10905634",
"name": "修 改",
"font_class": "xiugai",
"unicode": "e632",
"unicode_decimal": 58930
"icon_id": "13176266",
"name": "分析资源",
"font_class": "fenxiziyuan",
"unicode": "e60c",
"unicode_decimal": 58892
},
{
"icon_id": "13176267",
"name": "渣土车抓拍",
"font_class": "zhatuchezhuapai",
"unicode": "e60d",
"unicode_decimal": 58893
},
{
"icon_id": "13176268",
"name": "多选/选中",
"font_class": "duoxuanxuanzhong",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "13176269",
"name": "单选/选中",
"font_class": "danxuanxuanzhong",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "13176270",
"name": "设备信息",
"font_class": "shebeixinxi",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "13176273",
"name": "icon 选中首页",
"font_class": "iconxuanzhongshouye2",
"unicode": "e613",
"unicode_decimal": 58899
},
{
"icon_id": "13176274",
"name": "保存 面性",
"font_class": "baocunmianxing",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "13176276",
"name": "重置",
"font_class": "zhongzhi",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "13176277",
"name": "添加",
"font_class": "tianjia",
"unicode": "e617",
"unicode_decimal": 58903
},
{
"icon_id": "13176278",
"name": "删 除",
"font_class": "shanchu1",
"unicode": "e618",
"unicode_decimal": 58904
}
]
}
......@@ -20,40 +20,145 @@ Created by iconfont
/>
<missing-glyph />
<glyph glyph-name="daochu" unicode="&#58910;" d="M179.2 285.6c0-51.2 8.8-100.8 24.8-146.4 58.4 170.4 213.6 292 397.6 292l0-72.8c0-28 15.2-52.8 39.2-65.6 9.6-4.8 20.8-8 31.2-8 15.2 0 29.6 4.8 42.4 14.4l281.6 219.2c17.6 13.6 28 35.2 28 58.4 0 23.2-10.4 44.8-28 58.4L714.4 855.2c-12 9.6-27.2 14.4-42.4 14.4-10.4 0-21.6-2.4-31.2-8-24-12-39.2-37.6-39.2-65.6l0-72.8C368.8 724 179.2 527.2 179.2 285.6zM972.8 307.2c-28 0-51.2-23.2-51.2-51.2l0-51.2 0-10.4c0-108-4-194.4-204.8-194.4L307.2 0c-207.2 0-204.8 92-204.8 204.8l0 256C88 621.6 164 656.8 256 664l0 0 3.2 0c28 0 51.2 23.2 51.2 51.2 0 28-23.2 52-51.2 52l-3.2 0L256 768l-51.2 0C92 768 0 676 0 563.2l0-460.8c0-112.8 92-204.8 204.8-204.8l613.6 0c112.8 0 204.8 92 204.8 204.8L1023.2 256C1024 284 1000.8 307.2 972.8 307.2z" horiz-adv-x="1024" />
<glyph glyph-name="shang" unicode="&#58897;" d="M1015.322034-58.576271V826.576271A60.745763 60.745763 0 0 1 954.576271 887.322034H69.423729A60.745763 60.745763 0 0 1 8.677966 826.576271v-885.152542A60.745763 60.745763 0 0 1 69.423729-119.322034h885.152542a60.745763 60.745763 0 0 1 60.745763 60.745763z m-17.355932 885.152542v-885.152542a43.389831 43.389831 0 0 0-43.389831-43.389831H69.423729A43.389831 43.389831 0 0 0 26.033898-58.576271V826.576271A43.389831 43.389831 0 0 0 69.423729 869.966102h885.152542A43.389831 43.389831 0 0 0 997.966102 826.576271zM111.077966 15.186441l395.715254 370.983051L902.508475 15.186441V386.169492L506.79322 757.152542 111.077966 386.169492z" horiz-adv-x="1024" />
<glyph glyph-name="rili" unicode="&#58902;" d="M329.197037 233.813333l365.605926 0c9.102222 0 16.402963 7.395556 16.402963 16.402963s-7.395556 16.402963-16.402963 16.402963L329.197037 266.619259c-9.102222 0-16.402963-7.395556-16.402963-16.402963S320.094815 233.813333 329.197037 233.813333zM329.197037 330.619259l365.605926 0c9.102222 0 16.402963 7.395556 16.402963 16.402963 0 9.102222-7.395556 16.402963-16.402963 16.402963L329.197037 363.425185c-9.102222 0-16.402963-7.395556-16.402963-16.402963C312.794074 338.014815 320.094815 330.619259 329.197037 330.619259zM724.385185 681.244444l-42.477037 0 0 42.477037-42.477037 0 0-42.477037L384.568889 681.244444l0 42.477037-42.477037 0 0-42.477037L299.614815 681.244444c-46.648889 0-84.859259-38.21037-84.859259-84.859259l0-467.247407c0-46.648889 38.21037-84.859259 84.859259-84.859259l424.77037 0c46.648889 0 84.859259 38.21037 84.859259 84.859259L809.244444 596.385185C809.244444 643.034074 771.034074 681.244444 724.385185 681.244444zM778.145185 129.137778c0-23.419259-30.435556-53.76-53.76-53.76L299.614815 75.377778c-23.419259 0-53.76 30.435556-53.76 53.76L245.854815 468.954074l532.385185 0L778.24 129.137778zM779.093333 500.053333 244.906667 500.053333 244.906667 596.385185c0 23.419259 31.383704 53.76 54.708148 53.76l42.477037 0L342.091852 596.385185l42.477037 0 0 53.854815 254.767407 0L639.336296 596.385185l42.477037 0 0 53.854815L724.385185 650.24c23.419259 0 54.708148-30.435556 54.708148-53.76L779.093333 500.053333z" horiz-adv-x="1024" />
<glyph glyph-name="xia" unicode="&#58898;" d="M1015.322034 826.576271v-885.152542a60.745763 60.745763 0 0 0-60.745763-60.745763H69.423729A60.745763 60.745763 0 0 0 8.677966-58.576271V826.576271A60.745763 60.745763 0 0 0 69.423729 887.322034h885.152542A60.745763 60.745763 0 0 0 1015.322034 826.576271z m-17.355932-885.152542V826.576271A43.389831 43.389831 0 0 1 954.576271 869.966102H69.423729A43.389831 43.389831 0 0 1 26.033898 826.576271v-885.152542A43.389831 43.389831 0 0 1 69.423729-101.966102h885.152542a43.389831 43.389831 0 0 1 43.389831 43.389831zM111.077966 752.813559l395.715254-370.983051L902.508475 752.813559v-370.983051L506.79322 10.847458 111.077966 381.830508z" horiz-adv-x="1024" />
<glyph glyph-name="login" unicode="&#58880;" d="M780.875 499.612c1.754 1.622 2.427 4.217 1.501 6.574-0.924 2.365-3.182 3.804-5.574 3.804h-166.755l0.359 246.761c0.005 4.603-1.742 9.209-5.254 12.72-3.508 3.514-8.111 5.274-12.715 5.274h-163.328c-4.597 0-9.201-1.76-12.715-5.274-3.506-3.513-5.255-8.117-5.25-12.72l0.332-246.761h-166.764c-2.387 0-4.643-1.438-5.575-3.804-0.925-2.359-0.252-4.951 1.504-6.574l257.895-239.15c3.209-2.971 7.502-4.794 12.218-4.794 4.72 0 9.013 1.824 12.219 4.794l257.902 239.15zM1037.742 245.059l-161.68 126.155c-9.159 7.147-26.16 12.993-37.775 12.993h-64.199l182.757-155.557-211.754-0.103-79.019-113.225h-311.316l-75.815 113.121-210.615 0.103 188.985 155.756-74.142-0.097c-11.617 0-28.618-5.847-37.776-12.993l-161.68-126.154c-9.159-7.148-13.701-22.029-10.091-33.073l64.499-197.362c3.609-11.043 16.067-20.078 27.684-20.078h891.089c11.617 0 24.032 9.049 27.591 20.108l63.447 197.302c3.554 11.061-1.029 25.956-10.19 33.103z" horiz-adv-x="1024" />
<glyph glyph-name="zuo" unicode="&#58901;" d="M954.576271-119.322034H69.423729A60.745763 60.745763 0 0 0 8.677966-58.576271V826.576271A60.745763 60.745763 0 0 0 69.423729 887.322034h885.152542A60.745763 60.745763 0 0 0 1015.322034 826.576271v-885.152542a60.745763 60.745763 0 0 0-60.745763-60.745763z m-885.152542 17.355932h885.152542a43.389831 43.389831 0 0 1 43.389831 43.389831V826.576271A43.389831 43.389831 0 0 1 954.576271 869.966102H69.423729A43.389831 43.389831 0 0 1 26.033898 826.576271v-885.152542A43.389831 43.389831 0 0 1 69.423729-101.966102zM880.813559 784.922034L509.830508 389.20678 880.813559-6.508475H509.830508L138.847458 389.20678 509.830508 784.922034z" horiz-adv-x="1024" />
<glyph glyph-name="zhanshi" unicode="&#59514;" d="M512 559.9c-124.1 0-232.7-108.6-232.7-175.9 0-67.2 108.6-175.9 232.7-175.9 129.3 0 232.7 124.1 232.7 175.9 0 51.7-103.4 175.9-232.7 175.9z m0-253.5c-41.4 0-77.6 36.2-77.6 77.6 0 41.4 36.2 77.6 77.6 77.6 41.4 0 77.6-36.2 77.6-77.6 0-41.4-36.2-77.6-77.6-77.6z m0 0M512 797.8C284.4 797.8 98.2 611.6 98.2 384S284.4-29.8 512-29.8 925.8 156.4 925.8 384 739.6 797.8 512 797.8z m0-641.4c-150 0-284.5 129.3-284.5 227.6 0 98.3 134.5 227.6 284.5 227.6S796.5 471.9 796.5 384 662 156.4 512 156.4z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="zuoxia" unicode="&#58905;" d="M954.576271 887.322034H68.781559A60.745763 60.745763 0 0 1 8.035797 826.576271v-885.794712a60.745763 60.745763 0 0 1 60.745762-60.745762H954.576271a60.745763 60.745763 0 0 1 60.745763 60.745762V826.576271A60.745763 60.745763 0 0 1 954.576271 887.322034z m-885.794712-17.355932H954.576271A43.389831 43.389831 0 0 0 997.966102 826.576271v-885.794712a43.389831 43.389831 0 0 0-43.389831-43.38983H68.781559a43.389831 43.389831 0 0 0-43.38983 43.38983V826.576271a43.389831 43.389831 0 0 0 43.38983 43.389831zM955.461424 267.472271l-542.494373 17.49478-17.49478 542.494373L132.981153 564.970305 150.475932 22.475932l542.494373-17.494779z" horiz-adv-x="1024" />
<glyph glyph-name="add-circle-s" unicode="&#58978;" d="M512 1.5c-51.6 0-101.7 10.1-148.9 30.1-45.6 19.3-86.5 46.8-121.6 82-35.1 35.1-62.7 76-82 121.6-20 47.2-30.1 97.3-30.1 148.9s10.1 101.7 30.1 148.9c19.3 45.6 46.8 86.5 82 121.6 35.1 35.1 76 62.7 121.6 82 47.2 20 97.3 30.1 148.9 30.1s101.7-10.1 148.9-30.1c45.6-19.3 86.5-46.8 121.6-82 35.1-35.1 62.7-76 82-121.6 20-47.2 30.1-97.3 30.1-148.9s-10.1-101.7-30.1-148.9c-19.3-45.6-46.8-86.5-82-121.6-35.1-35.1-76-62.7-121.6-82-47.2-20-97.3-30.1-148.9-30.1z m-17.3 361.9v-205.8c0-11 9-20 20-20s20 9 20 20l-1 205.7h206.7c11 0 20 9 20 20s-9 20-20 20H534.7V609c0 11-9 20-20 20s-20-9-20-20v-205.7H289c-11 0-20-9-20-20s9-20 20-20l205.7 0.1z" horiz-adv-x="1024" />
<glyph glyph-name="youxia" unicode="&#58911;" d="M83.934426 887.606557h859.40459a58.754098 58.754098 0 0 0 58.754099-58.754098v-888.731279a58.754098 58.754098 0 0 0-58.754099-58.754098H83.934426a58.754098 58.754098 0 0 0-58.754098 58.754098V828.852459A58.754098 58.754098 0 0 0 83.934426 887.606557z m859.40459-16.786885H83.934426A41.967213 41.967213 0 0 1 41.967213 828.852459v-888.731279a41.967213 41.967213 0 0 1 41.967213-41.967213h859.40459a41.967213 41.967213 0 0 1 41.967214 41.967213V828.852459a41.967213 41.967213 0 0 1-41.967214 41.967213zM83.21259 268.338361L609.363934 285.830295l16.971541 542.216394 254.606689-262.36223-16.988328-542.216393-526.151344-17.508722z" horiz-adv-x="1024" />
<glyph glyph-name="bofang1" unicode="&#58908;" d="M514 781.7c-219.9 0-398.9-178.9-398.9-398.9 0.1-219.9 179-398.8 398.9-398.8 219.9 0 398.8 178.9 398.8 398.8S733.9 781.7 514 781.7z m173-421.9L437.1 215.5c-17.7-10.2-39.8 2.6-39.8 23V527.1c0 20.4 22.1 33.2 39.8 23L687 405.8c17.7-10.2 17.7-35.8 0-46z" horiz-adv-x="1024" />
<glyph glyph-name="zuoshang" unicode="&#58912;" d="M1015.322034-58.576271V827.218441a60.745763 60.745763 0 0 1-60.745763 60.745762H68.781559a60.745763 60.745763 0 0 1-60.745762-60.745762V-58.576271a60.745763 60.745763 0 0 1 60.745762-60.745763H954.576271a60.745763 60.745763 0 0 1 60.745763 60.745763z m-17.355932 885.794712V-58.576271a43.389831 43.389831 0 0 0-43.389831-43.389831H68.781559a43.389831 43.389831 0 0 0-43.38983 43.389831V827.218441a43.389831 43.389831 0 0 0 43.38983 43.38983H954.576271a43.389831 43.389831 0 0 0 43.389831-43.38983zM395.472271-59.461424l17.49478 542.494373 542.494373 17.49478L692.970305 763.018847 150.475932 745.524068 132.981153 203.029695z" horiz-adv-x="1024" />
<glyph glyph-name="bofang" unicode="&#58887;" d="M822.824 798.42H201.176c-57.196 0-103.595-46.398-103.595-103.595v-621.647c0-57.197 46.4-103.597 103.595-103.597h621.649c57.196 0 103.595 46.4 103.595 103.597V694.824c0 57.198-46.4 103.596-103.596 103.596zM356.607 176.853V591.149l362.54-207.108-362.54-207.188z" horiz-adv-x="1024" />
<glyph glyph-name="you" unicode="&#58913;" d="M69.423729-119.322034h885.152542a60.745763 60.745763 0 0 1 60.745763 60.745763V826.576271A60.745763 60.745763 0 0 1 954.576271 887.322034H69.423729A60.745763 60.745763 0 0 1 8.677966 826.576271v-885.152542A60.745763 60.745763 0 0 1 69.423729-119.322034z m885.152542 17.355932H69.423729A43.389831 43.389831 0 0 0 26.033898-58.576271V826.576271A43.389831 43.389831 0 0 0 69.423729 869.966102h885.152542A43.389831 43.389831 0 0 0 997.966102 826.576271v-885.152542a43.389831 43.389831 0 0 0-43.389831-43.389831zM143.186441 784.922034l370.983051-395.715254L143.186441-6.508475h370.983051L885.152542 389.20678 514.169492 784.922034z" horiz-adv-x="1024" />
<glyph glyph-name="detail" unicode="&#58948;" d="M800.111944 768.063968H223.888056C171.178411 768.063968 128.191904 725.077461 128.191904 671.856072V640.127936h767.616192v32.23988c0 52.709645-42.986507 95.696152-95.696152 95.696152m-167.852074 63.968016l14.328836-100.813593H377.411294l14.328836 100.813593h240.51974M639.936032 896H384.063968c-26.610695 0-51.174413-21.493253-54.756622-47.592204l-18.934532-134.076961c-3.582209-26.098951 14.84058-47.592204 41.451274-47.592204h319.84008c26.610695 0 45.033483 21.493253 41.451274 47.592204l-18.934532 134.076961C691.110445 874.506747 666.546727 896 639.936032 896m176.03998-319.84008H208.023988c-35.310345 0-61.409295-28.657671-58.338831-63.968016l52.197901-576.223888c3.070465-34.798601 34.798601-63.968016 69.597202-63.968016h480.015992c35.310345 0 66.526737 28.657671 69.597201 63.968016L873.803098 512.191904c3.582209 35.310345-22.516742 63.968016-57.827086 63.968016M384.063968 0.4477759999999762H287.856072L256.127936 448.223888h127.936032V0.4477759999999762z m191.904048 0h-127.936032V448.223888h127.936032V0.4477759999999762z m160.175912 0H639.936032V448.223888h127.936032l-31.728136-447.776112z" horiz-adv-x="1024" />
<glyph glyph-name="youshang" unicode="&#58918;" d="M0-67.254237V821.282712a60.745763 60.745763 0 0 0 60.745763 60.745763h918.857762a60.745763 60.745763 0 0 0 60.745763-60.745763V-67.254237a60.745763 60.745763 0 0 0-60.745763-60.745763H60.745763A60.745763 60.745763 0 0 0 0-67.254237zM17.355932 821.282712V-67.254237A43.389831 43.389831 0 0 1 60.745763-110.644068h918.857762a43.389831 43.389831 0 0 1 43.389831 43.389831V821.282712a43.389831 43.389831 0 0 1-43.389831 43.38983H60.745763a43.389831 43.389831 0 0 1-43.389831-43.38983zM640.260339-68.000542L622.175458 475.986441l-560.596611 17.546847L332.817356 756.770712l560.59661-17.564204 18.102237-543.986983z" horiz-adv-x="1041" />
<glyph glyph-name="Migration" unicode="&#58980;" d="M853.840124-52.46798899999999h-62.27438c-34.42119 0-62.274379 27.853189-62.274379 62.274379v746.806034c0 34.42119 27.853189 62.274379 62.274379 62.27438h62.27438c34.42119 0 62.274379-27.853189 62.274379-62.27438v-746.806034c-0.12163-34.42119-27.974819-62.274379-62.274379-62.274379z m-373.403017 373.403017H293.735598V445.483787h186.701509V569.910916l248.975887-186.701509-248.975887-186.701508V320.935028zM231.461219 258.782278h186.701508v-248.975888c0-34.42119-27.853189-62.274379-62.274379-62.274379H169.186839c-34.42119 0-62.274379 27.853189-62.274379 62.274379v746.806034c0 34.42119 27.853189 62.274379 62.274379 62.27438h186.701509c34.42119 0 62.274379-27.853189 62.274379-62.27438v-248.975888H231.461219v-248.854258z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="qidong" unicode="&#58920;" d="M845.901531 896H171.743817A171.52 171.52 0 0 1 0.004389 723.236571v-684.836571C0.004389-51.2 76.292389-128 171.743817-128h680.521143A171.52 171.52 0 0 1 1024.004389 44.836571V723.163429C1017.64096 819.2 941.35296 896 845.901531 896zM381.590674 128v512L807.72096 384l-426.130286-256z" horiz-adv-x="1024" />
<glyph glyph-name="zanting" unicode="&#59013;" d="M804.571429 896a146.285714 146.285714 0 0 0 146.285714-146.285714v-731.428572a146.285714 146.285714 0 1 0-292.571429 0V749.714286a146.285714 146.285714 0 0 0 146.285715 146.285714zM219.428571 896a146.285714 146.285714 0 0 0 146.285715-146.285714v-731.428572a146.285714 146.285714 0 1 0-292.571429 0V749.714286a146.285714 146.285714 0 0 0 146.285714 146.285714z" horiz-adv-x="1024" />
<glyph glyph-name="mima" unicode="&#58921;" d="M718.879004 896C565.677227 896 438.587449 772.380444 438.587449 619.633778c0-43.633778 11.207111-87.267556 29.923555-127.260445L53.620338 85.162667a83.968 83.968 0 0 1 0-120.035556c33.678222-32.711111 89.713778-32.711111 119.637333 0l22.414222 21.845333 100.920889-98.190222a43.804444 43.804444 0 0 1 63.488 0l149.504 149.048889c18.716444 18.204444 18.716444 43.690667 0 61.838222l-100.920889 98.190223L588.091449 376.035556c37.376-18.204444 82.204444-29.070222 127.032889-29.070223 157.013333 0 280.348444 123.619556 280.348444 276.309334C999.17056 772.323556 875.835449 896 718.879004 896z m0-381.781333c-59.790222 0-108.373333 47.217778-108.373333 105.415111 0 58.197333 48.583111 105.472 108.373333 105.472 59.790222 0 108.373333-47.274667 108.373334-105.472 0-58.140444-48.583111-105.415111-108.373334-105.415111z" horiz-adv-x="1024" />
<glyph glyph-name="zantingtingzhi" unicode="&#58947;" d="M720.896 800.768c-47.616 0-89.6-41.472-89.6-89.088v-655.36c0-47.616 41.984-89.088 89.6-89.088s89.6 41.472 89.6 89.088V711.68c-0.512 47.616-41.984 89.088-89.6 89.088z m-417.792 0c-47.616 0-89.6-41.472-89.6-89.088v-655.36c0-47.616 41.984-89.088 89.6-89.088s89.6 41.472 89.6 89.088V711.68c0 47.616-41.984 89.088-89.6 89.088z" horiz-adv-x="1024" />
<glyph glyph-name="qianyi" unicode="&#58922;" d="M820.736-73.792H761.6c-32.64 0-59.072 29.76-59.072 66.56V790.016c0 36.8 26.432 66.56 59.072 66.56h59.136c32.64 0 59.072-29.76 59.072-66.56v-797.376c-0.064-36.736-26.496-66.496-59.072-66.496z m-354.368 398.72h-177.28V457.92h177.28V590.72l236.288-199.36L466.368 192V324.928zM230.016 258.56h177.28v-265.856c0-36.736-26.496-66.496-59.136-66.496H170.88c-32.64 0-59.072 29.76-59.072 66.56V790.016c0 36.8 26.496 66.56 59.136 66.56H348.16c32.64 0 59.072-29.76 59.072-66.56v-265.792H230.016V258.56z" horiz-adv-x="1024" />
<glyph glyph-name="xiugai" unicode="&#58930;" d="M768.487 507.639L590.76 680.933 210.93 301.508l-66.201-242.161v-0.4L386.483 126.2zM739.523 829.38l-95.197-95.04 178.296-172.65 92.375 92.296c48.487 48.406 48.487 126.985 0 175.392-48.405 48.407-127.069 48.407-175.474 0.002zM79.029 17.29h872.333v-114.976H79.029z" horiz-adv-x="1024" />
<glyph glyph-name="yonghuming" unicode="&#58923;" d="M617.301333 280.917333c252.871111-39.537778 325.688889-211.512889 325.688889-273.976889 0-85.504-308.906667-105.813333-448.568889-105.813333s-448.568889 20.309333-448.568889 105.813333c0 61.44 71.907556 236.657778 324.721778 273.863112 16.156444 2.389333 37.432889 52.167111 23.665778 61.212444-82.887111 54.613333-146.545778 149.048889-146.545778 301.511111C247.694222 773.404444 350.094222 876.657778 494.364444 876.657778s246.784-103.253333 246.784-233.130667c0-150.186667-67.015111-246.897778-150.186666-302.08-12.856889-8.533333 10.410667-58.026667 26.282666-60.529778z" horiz-adv-x="1024" />
<glyph glyph-name="xiugai" unicode="&#58924;" d="M766.77798 536.961656L586.802214 712.432909 202.144112 328.184308 135.05417 82.893104v-0.341251l244.881701 68.113696 386.842109 386.296107v0.06825zM737.498646 862.85634L640.99287 766.623564l180.521767-174.925251 93.707519 93.502768A125.785111 125.785111 0 0 1 737.430396 862.85634h0.06825zM68.373728 40.304982h883.567033v-116.434833H68.373728v116.434833H68.373728z" horiz-adv-x="1024" />
<glyph glyph-name="xiugaicopy" unicode="&#58925;" d="M766.77798 536.961656L586.802214 712.432909 202.144112 328.184308 135.05417 82.893104v-0.341251l244.881701 68.113696 386.842109 386.296107v0.06825zM737.498646 862.85634L640.99287 766.623564l180.521767-174.925251 93.707519 93.502768A125.785111 125.785111 0 0 1 737.430396 862.85634h0.06825zM68.373728 40.304982h883.567033v-116.434833H68.373728v116.434833H68.373728z" horiz-adv-x="1024" />
<glyph glyph-name="zanting" unicode="&#58926;" d="M196.388571 896c88.283429 0 159.890286-71.533714 159.890286-159.817143v-639.414857a159.817143 159.817143 0 1 0-319.707428 0V736.182857C36.571429 824.466286 108.105143 896 196.388571 896zM782.628571 896c88.283429 0 159.817143-71.533714 159.817143-159.817143v-639.414857a159.817143 159.817143 0 1 0-319.634285 0V736.182857C622.665143 824.466286 694.198857 896 782.482286 896z" horiz-adv-x="1024" />
<glyph glyph-name="daochu" unicode="&#58906;" d="M189.741176 280.756706c0-53.910588 9.336471-106.194824 26.262589-154.202353 61.801412 179.501176 226.183529 307.621647 420.98447 307.621647v-76.739765c0-29.515294 16.082824-55.597176 41.562353-69.089882 10.119529-5.059765 21.985882-8.432941 32.948706-8.432941 16.143059 0 31.322353 5.059765 44.93553 15.179294l298.164705 230.942118c18.672941 14.275765 29.635765 37.044706 29.635765 61.500235 0 24.455529-11.023059 47.224471-29.635765 61.500235L756.434824 880.820706A72.161882 72.161882 0 0 1 678.490353 887.567059c-25.419294-12.649412-41.502118-39.634824-41.502118-69.089883V741.797647C390.505412 742.580706 189.741176 535.311059 189.741176 280.756706z m840.282353 22.768941c-29.635765 0-54.211765-24.455529-54.211764-53.970823v-64.873412c0-113.784471-4.216471-204.8-216.847059-204.8H325.270588c-219.376941 0-216.847059 96.918588-216.847059 215.762823V465.317647c-15.239529 169.441882 65.234824 206.486588 162.635295 214.076235h3.373176c29.635765 0 54.211765 24.455529 54.211765 53.970824s-24.576 54.814118-54.211765 54.814118H271.058824v0.783058h-54.211765C97.400471 788.961882 0 692.043294 0 573.199059v-485.496471C0-31.021176 97.400471-128 216.847059-128h649.697882c119.446588 0 216.847059 96.978824 216.847059 215.762824v161.792a53.187765 53.187765 0 0 1-53.368471 53.970823z" horiz-adv-x="1084" />
<glyph glyph-name="zhongxingguanshi" unicode="&#58907;" d="M13.128205 886.757744m105.025641 0l787.692308 0q105.025641 0 105.025641-105.025641l0-804.706462q0-105.025641-105.025641-105.025641l-787.692308 0q-105.025641 0-105.025641 105.025641l0 804.706462q0 105.025641 105.025641 105.025641ZM879.826051 588.248615L840.467692 669.827282c-6.406564 13.390769-21.609026 20.663795-36.548923 17.644308L585.124103 643.360821l0.078769-0.262565c-53.563077-13.364513-92.973949-60.284718-92.89518-116.053333 0.157538-65.851077 57.501538-120.123077 125.820718-119.256615a127.553641 127.553641 0 0 1 60.941128 16.278974l0.183795-0.446359 189.387488 125.164308c13.233231 8.795897 17.906872 25.468718 11.18523 39.489641zM418.133333 341.543385v172.425846c0 18.773333-14.257231 33.975795-31.849025 33.975795h-34.264616c-24.20841 0-47.524103-9.846154-65.299692-27.516718l-95.835897-95.573334A70.052103 70.052103 0 0 1 170.666667 375.282872v-213.805949c0-18.773333 14.257231-33.975795 31.849025-33.975795h16.173949c0 60.127179 45.738667 109.069128 102.189949 109.069128 56.477538 0 102.137436-48.758154 102.137436-108.964102 0-0.105026 213.858462-0.183795 213.858461-0.105026 0 60.127179 45.686154 109.069128 102.11118 109.069128 56.372513 0 102.111179-49.020718 102.111179-109.147897 0-0.105026 32.899282 0.078769 32.899282 0.078769 17.591795 0 31.849026 15.202462 31.849026 33.975795v112.114872c0 18.773333-14.257231 34.002051-31.849026 34.002051H450.008615c-17.591795 0-31.875282 15.202462-31.875282 33.975795zM239.589744 147.350974c0-36.864 28.934564-66.717538 64.643282-66.717538s64.643282 29.853538 64.643282 66.691282c0 36.864-28.960821 66.717538-64.643282 66.717538-35.708718 0-64.643282-29.853538-64.643282-66.691282z m418.947282 0c0-36.864 28.960821-66.717538 64.643282-66.717538 35.708718 0 64.643282 29.853538 64.643282 66.691282 0 36.864-28.934564 66.717538-64.643282 66.717538s-64.643282-29.853538-64.643282-66.691282z m224.334769 344.14277c0.078769 26.440205-28.488205 42.167795-49.729641 27.411692l-135.089231-93.630359c-46.683897-29.643487-83.547897-28.488205-108.622769-24.20841-65.982359 11.290256-99.669333 50.412308-116.736 90.584615-21.477744 50.674872-16.541538-26.781538-16.541539-26.781538v-48.049231c0-18.221949 14.309744-32.951795 31.927795-32.951795H850.707692c17.644308 0 31.849026 14.651077 31.927795 32.846769l0.236308 74.778257z" horiz-adv-x="1024" />
<glyph glyph-name="zhanshi" unicode="&#58908;" d="M512 601.656889C358.4 601.656889 224.085333 467.285333 224.085333 384c0-83.171556 134.371556-217.656889 287.914667-217.656889 159.971556 0 287.914667 153.6 287.914667 217.656889 0 63.943111-127.943111 217.656889-287.914667 217.656889z m0-313.685333c-51.2 0-96.028444 44.828444-96.028444 96.028444 0 51.2 44.828444 96.028444 96.028444 96.028444 51.2 0 96.028444-44.828444 96.028444-96.028444 0-51.2-44.828444-96.028444-96.028444-96.028444zM512 896C230.4 896 0 665.6 0 384s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512z m0-793.6c-185.571556 0-352.028444 159.971556-352.028444 281.6 0 121.628444 166.456889 281.6 352.028444 281.6 185.571556 0 352.028444-172.828444 352.028444-281.6 0-108.771556-166.456889-281.6-352.028444-281.6z" horiz-adv-x="1024" />
<glyph glyph-name="daoru" unicode="&#58909;" d="M973.183381 535.133968a8.32243 8.32243 0 0 1 1.841849 8.663514 7.230964 7.230964 0 0 1-6.753447 4.979815h-200.693358l0.4093 323.619745A24.557991 24.557991 0 0 1 761.711794 889.178336 20.669642 20.669642 0 0 1 746.294833 896H549.830906a20.737859 20.737859 0 0 1-15.280527-6.889881 24.626207 24.626207 0 0 1-6.344148-16.713077l0.4093-323.619745H327.785739a7.230964 7.230964 0 0 1-6.685231-4.979815 8.32243 8.32243 0 0 1 1.84185-8.663514l310.385717-313.660115a20.669642 20.669642 0 0 1 14.734794-6.275931 20.669642 20.669642 0 0 1 14.734795 6.275931l310.385717 313.660115z m309.226034-333.852241l-194.622077 165.493571a81.859969 81.859969 0 0 1-45.5005 17.05416h-77.221237L1184.927835 179.725268l-254.857371-0.136433-95.093998-148.507628H460.262456L369.056807 179.520618l-253.493038 0.136433 227.502498 204.240624-89.295583-0.068217a81.859969 81.859969 0 0 1-45.432283-17.05416L13.648107 201.281727c-11.051096-9.34568-16.508427-28.855639-12.142562-43.385784l77.630537-258.813936c4.365865-14.461928 19.373526-26.331623 33.357938-26.331624h1072.570248c13.984411 0 28.923856 11.869696 33.221505 26.39984l76.402638 258.74572c4.229432 14.530145-1.2279 34.040104-12.278996 43.385784z" horiz-adv-x="1296" />
<glyph glyph-name="weixianpin" unicode="&#58910;" d="M13.128205 891.378872m105.025641 0l787.692308 0q105.025641 0 105.025641-105.025641l0-804.706462q0-105.025641-105.025641-105.025641l-787.692308 0q-105.025641 0-105.025641 105.025641l0 804.706462q0 105.025641 105.025641 105.025641ZM877.568 163.813744H821.037949C813.948718 213.963487 772.594872 252.56041 722.051282 252.56041s-92.238769-38.964513-98.986667-88.746666h-113.086359c-15.543795 0-28.278154 12.970667-28.278153 29.223384V553.590154h47.707897v-340.70318h58.341744c23.683282 52.696615 75.618462 88.772923 134.301538 88.772923 58.683077 0 110.618256-36.076308 134.301539-88.772923h2.126769V553.590154H905.846154v-360.553026c0-15.885128-12.734359-29.249641-28.278154-29.249641z m-61.860103 230.977641c7.771897 0 13.075692-4.332308 15.911385-12.629334 0.36759-1.837949 0.708923-3.623385 0.708923-5.77641 0-10.476308-6.354051-16.252718-19.429743-16.961641 5.303795-5.435077 7.771897-11.185231 7.771897-16.252718 0-5.408821-2.835692-10.108718-8.139487-14.073436a17.092923 17.092923 0 0 0-9.531077-2.888205c-10.24 0-17.329231 8.664615-21.556513 26.702769l-84.125538 32.137846-84.125539-32.137846c-4.253538-17.670564-11.290256-26.702769-21.215179-26.702769a21.924103 21.924103 0 0 0-9.898667 2.888205c-5.303795 3.964718-7.771897 8.297026-7.771897 14.073436 0 5.408821 2.468103 10.817641 7.771897 16.252718-13.075692 0.708923-19.797333 6.485333-19.797333 16.961641 0 2.153026 0.36759 3.938462 0.708923 5.77641 3.177026 8.297026 8.480821 12.603077 16.278974 12.603077 6.354051 0 13.784615-3.229538 22.265436-9.373538l48.41682 18.06441-49.125743 18.747077c-8.139487-5.408821-15.911385-8.297026-22.633026-8.297026-7.430564 0-12.366769 4.332308-15.202461 12.629334-0.341333 1.837949-0.708923 3.623385-0.708923 5.77641 0 10.476308 6.721641 16.252718 19.797333 16.961641-5.303795 5.435077-7.771897 11.211487-7.771897 16.252718 0 5.408821 2.468103 10.108718 7.771897 14.073436a19.928615 19.928615 0 0 0 8.84841 2.179282c10.60759 0 17.670564-9.399795 21.530257-27.805539l84.493128-32.111589 84.493128 32.820512c3.885949 18.06441 10.948923 27.096615 21.530256 27.096616 3.203282 0 6.038974-0.735179 8.848411-2.179282 5.671385-3.964718 8.139487-8.664615 8.139487-14.073436 0-5.408821-2.835692-10.817641-7.771898-16.252718 13.075692-0.708923 19.429744-6.485333 19.429744-16.961641 0-1.785436-0.341333-3.938462-0.708923-5.77641-2.468103-8.297026-7.430564-12.603077-15.202462-12.603077-7.062974 0-14.493538 2.888205-22.606769 8.270769l-48.78441-18.747077 48.049231-18.405744c9.189744 6.485333 16.987897 9.714872 23.368205 9.714872z m-64.328205 89.508102v-4.332308c0-7.220513-2.100513-12.996923-6.695384-17.69682-4.594872-4.673641-10.24-7.561846-16.987898-8.297026-6.354051-0.36759-11.290256 0.735179-14.834872 3.255795a25.915077 25.915077 0 0 0-16.620307-5.77641c-6.354051 0-12.340513 2.153026-17.670564 6.144-3.518359-2.888205-8.480821-4.332308-15.543795-3.623385a25.153641 25.153641 0 0 0-23.683282 25.626257v5.77641c-24.024615 7.220513-42.771692 18.773333-55.847385 34.658462a85.412103 85.412103 0 0 0-19.797333 55.558564c0 4.726154 0.36759 9.767385 1.417846 15.176205 4.594872 32.479179 18.747077 59.181949 42.062769 80.475897 24.733538 22.370462 54.797128 33.214359 90.47959 33.214359 35.708718 0 65.746051-11.185231 90.47959-33.581949 23.683282-20.926359 37.809231-47.629128 42.430359-80.108307 1.050256-5.408821 1.417846-10.476308 1.417846-15.176205 0-21.635282-6.721641-40.434872-20.506257-56.293744-14.152205-15.885128-34.290872-27.779282-60.100923-34.999795z m-84.808205 133.907692c-7.089231 8.664615-15.911385 12.970667-25.810051 12.970667-10.24 0-18.747077-4.332308-25.810051-12.996923-7.089231-8.664615-10.948923-19.114667-10.948923-31.770256 0-12.261744 3.518359-23.079385 10.948923-31.744 7.089231-8.664615 15.911385-12.996923 25.810051-12.996923 10.24 0 18.720821 4.332308 25.810051 12.996923 7.062974 8.664615 10.948923 19.140923 10.948923 31.770256 0 12.603077-3.885949 23.105641-10.948923 31.770256z m40.644923-87.69641c-3.203282 5.382564-6.380308 7.929436-9.557333 7.929436-3.518359 0-6.721641-2.546872-10.24-7.220513a23.499487 23.499487 0 0 1-5.303795-14.441025c0-2.888205 0.708923-5.408821 2.468103-7.588103 2.835692-3.255795 7.430564-4.699897 13.443282-4.699897 9.189744 0 13.784615 3.623385 13.784615 10.843897a35.708718 35.708718 0 0 1-4.594872 15.149949z m69.973334 87.69641c-7.089231 8.664615-15.911385 12.970667-26.151385 12.970667-9.898667 0-18.747077-4.332308-25.810051-12.996923-7.062974-8.664615-10.60759-19.114667-10.60759-31.770256 0-12.261744 3.544615-23.079385 10.60759-31.744 7.089231-8.664615 15.543795-12.996923 25.810051-12.996923 10.24 0 19.08841 4.332308 26.151385 12.996923 7.089231 8.664615 10.60759 19.140923 10.607589 31.770256a46.552615 46.552615 0 0 1-10.607589 31.770256zM425.143795 163.761231c-7.062974 50.176-48.416821 88.799179-98.96041 88.799179s-92.238769-38.990769-98.986667-88.799179H198.971077C183.401026 163.813744 170.666667 176.78441 170.666667 193.037128v145.460513c0 27.411692 21.556513 58.814359 21.556512 58.814359l63.277949 86.619897c13.075692 15.885128 21.530256 29.223385 42.404103 29.223385h127.238564c15.570051 0 28.278154-12.970667 28.278154-29.223385v-290.921025c0-15.858872-12.708103-28.855795-28.278154-29.223385z m-19.429744 300.294564H301.42359c-1.785436-2.179282-4.253538-5.041231-6.380308-7.588103l-2.100513-2.888205-62.227692-85.175795c-6.354051-9.714872-12.708103-24.155897-12.708103-29.932307l1.417847-12.288 186.262974 1.811692v136.060718z m-80.239589-238.198154c40.644923 0 73.885538-34.290872 73.885538-76.14359 0-41.878974-33.240615-76.169846-73.885538-76.169846s-73.859282 34.290872-73.859283 76.14359c0 41.878974 33.214359 76.14359 73.859283 76.14359z m397.994666 0c40.644923 0 73.859282-34.290872 73.859282-76.14359 0-41.878974-33.214359-76.169846-73.859282-76.169846-40.644923 0-73.885538 34.290872-73.885538 76.14359 0 42.246564 33.240615 76.14359 73.885538 76.14359z" horiz-adv-x="1024" />
<glyph glyph-name="yunhanglushu" unicode="&#58914;" d="M160.627451 835.764706m80.313725 0l542.117648 0q80.313725 0 80.313725-80.313726l0-542.117647q0-80.313725-80.313725-80.313725l-542.117648 0q-80.313725 0-80.313725 80.313725l0 542.117647q0 80.313725 80.313725 80.313726ZM713.446902 675.137255a69.792627 69.792627 0 0 1-69.591843-69.933177 69.672157 69.672157 0 0 1 23.050039-52.003137l-70.174118-126.694902a65.515922 65.515922 0 0 1-10.882509 0.863373c-13.352157 0-25.820863-4.216471-35.960471-11.344314l-93.103686 82.863686c3.774745 7.42902 5.802667 15.861961 5.802666 24.756706a55.215686 55.215686 0 0 1-55.095215 55.356235 55.215686 55.215686 0 0 1-55.115294-55.336156c0-14.737569 5.802667-28.270431 15.219451-38.189177l-43.489883-61.901804a47.666196 47.666196 0 0 1-15.239529 2.489726A47.987451 47.987451 0 0 1 261.019608 377.996549a47.987451 47.987451 0 0 1 47.846902-48.067765 47.987451 47.987451 0 0 1 40.31749 73.848471l46.120157 65.837176a55.496784 55.496784 0 0 1 39.434039 5.983373l94.569412-84.048314a62.584471 62.584471 0 0 1 56.400314-89.288784c34.334118 0 62.343529 28.109804 62.343529 62.624627 0 19.375686-8.693961 36.723451-22.487843 48.228392l69.190274 124.827608c5.943216-1.766902 12.167529-2.630275 18.69302-2.630274A69.792627 69.792627 0 0 1 783.058824 605.224157 69.792627 69.792627 0 0 1 713.446902 675.137255z" horiz-adv-x="1024" />
<glyph glyph-name="kaiqi" unicode="&#58915;" d="M47.047111 391.395556C47.047111 644.778667 256.284444 850.318222 514.446222 850.318222c258.161778 0 467.399111-205.482667 467.399111-458.922666s-209.237333-458.922667-467.399111-458.922667c-258.161778 0-467.399111 205.482667-467.399111 458.922667M0 390.257778c0-279.267556 230.570667-505.685333 515.072-505.685334h676.522667c284.444444 0 515.072 226.417778 515.072 505.742223C1706.666667 669.582222 1476.096 896 1191.594667 896H515.072C230.627556 896 0 669.582222 0 390.314667" horiz-adv-x="1706" />
<glyph glyph-name="iconxuanzhongzhinengjiansuo1" unicode="&#58916;" d="M926.08-112.896l-106.496 107.712c10.368 4.992 27.52 17.28 44.736 38.016l17.28-17.664 84.672-86.4c7.68-7.68 7.68-20.096 0-27.712a120.32 120.32 0 0 0-19.584-14.72c-8.064-3.84-16.832-3.008-20.608 0.768zM690.56-44.8a235.52 235.52 0 0 0 0 470.976 235.648 235.648 0 0 0 235.328-235.52c0-129.92-105.6-235.52-235.328-235.52z m0 413.12a177.728 177.728 0 0 1-177.472-177.6 177.856 177.856 0 0 1 177.472-177.728 177.856 177.856 0 0 1 177.536 177.728 177.728 177.728 0 0 1-177.536 177.6z m-269.632-182.464c0 143.36 107.136 271.232 238.976 271.232 48 0 92.736 4.352 130.176-22.272V658.048H525.824c-72.192 0-130.752 63.68-130.752 142.336V896h-264.32C58.624 896 0 832.256 0 753.664v-651.136c0-78.592 58.56-142.336 130.816-142.336H541.44c-71.936 44.928-120.576 129.216-120.576 225.664z m133.44 494.08h237.888L425.408 896v-86.848c0-71.36 57.728-129.216 128.96-129.216z" horiz-adv-x="1024" />
<glyph glyph-name="xitongbanben" unicode="&#58917;" d="M512 384m-512 0a512 512 0 1 1 1024 0 512 512 0 1 1-1024 0ZM216.064 128.843294H699.030588V531.275294H216.064v-402.462118z m134.144 321.957647h214.648471v-53.669647h-214.648471v53.669647z m0-80.50447h214.648471v-53.63953h-214.648471v53.63953z m0-80.474353h53.669647v-53.669647h-53.669647v53.669647zM269.733647 638.614588v-53.669647H752.64V182.512941h53.669647V638.614588H269.733647z" horiz-adv-x="1024" />
<glyph glyph-name="yunhangyichang" unicode="&#58919;" d="M160.627451 835.764706m80.313725 0l542.117648 0q80.313725 0 80.313725-80.313726l0-542.117647q0-80.313725-80.313725-80.313725l-542.117648 0q-80.313725 0-80.313725 80.313725l0 542.117647q0 80.313725 80.313725 80.313726ZM718.888157 287.784157H305.111843c-20.680784 0-31.663686 24.094118-17.889882 39.313568l1.887372 2.088157c45.638275 50.497255 58.508549 110.170353 74.832314 185.725491 2.208627 10.300235 4.497569 20.841412 6.90698 31.623529 17.066667 76.117333 81.960157 103.243294 137.015216 103.243294 1.546039 0 2.851137 0 3.915294-0.060235 1.084235 0.040157 2.389333 0.060235 3.915294 0.060235 55.03498 0 119.948549-27.105882 137.015216-103.243294 3.995608-17.78949 7.288471-34.916392 10.460863-51.481098 13.091137-68.186353 23.431529-122.056784 69.611921-164.161255l2.369255-2.168471c16.022588-14.59702 5.541647-40.96-16.263529-40.96z m-361.210981 49.734274h304.38902c-28.551529 44.493804-38.289569 95.292235-48.489412 148.299294a1581.578039 1581.578039 0 0 1-10.119529 49.995295c-13.010824 57.966431-65.696627 64.25098-87.742745 64.25098-1.224784 0-2.208627-0.040157-2.931451-0.060235l-1.003922-0.060236-1.003921 0.060236-2.911373 0.040157c-22.046118 0-74.731922-6.264471-87.742745-64.250981-2.369255-10.641569-4.618039-21.062275-6.826667-31.242039-13.332078-61.841569-25.258667-117.11749-55.617255-167.052549z m54.492863-74.430745h207.731451V213.333333H412.170039v49.754353z m95.372549 350.248157c-34.133333 0-61.921882 27.366902-61.921882 61.038432C445.620706 707.985569 473.409255 735.372549 507.542588 735.372549c34.133333 0 61.901804-27.366902 61.901804-61.018353 0-33.651451-27.768471-61.018353-61.901804-61.018353z m0 86.939608c-14.516706 0-26.302745-11.625412-26.302745-25.921255s11.786039-25.921255 26.302745-25.921255c14.496627 0 26.302745 11.625412 26.302745 25.901177 0 14.336-11.806118 25.941333-26.302745 25.941333z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongshouye" unicode="&#58880;" d="M569.6 874.688a82.048 82.048 0 0 1-110.336 0L13.312 451.264a41.152 41.152 0 0 1 55.04-61.12l7.104 6.72v-441.92c0-45.44 36.736-82.304 82.176-82.368h239.552v247.68a57.92 57.92 0 0 0 57.984 57.984h112.64a57.92 57.92 0 0 0 57.984-57.984v-247.68h245.12a82.304 82.304 0 0 1 82.304 82.368V391.488c18.304-16.512 44.16-15.296 59.392 1.664a41.152 41.152 0 0 1-2.944 58.112L569.536 874.688z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongrenwuguanli" unicode="&#58881;" d="M888.832-87.232H73.92C33.472-87.232 0-57.6 0-21.568V699.712c0 35.904 33.472 65.664 73.92 65.664h36.992v-98.56c0-35.968 33.408-65.728 73.92-65.728h592.192c40.512 0 73.92 29.76 73.92 65.728v98.56h36.992c40.448 0 73.92-29.76 73.92-65.728v-721.216c0.896-35.968-32.576-65.664-73.024-65.664z m-165.44 445.824a62.72 62.72 0 0 1-79.232 0l-198.016-167.36L353.792 269.44a62.72 62.72 0 0 1-79.232 0c-22.016-18.752-22.016-48.512 0-66.496l132.032-111.04a62.72 62.72 0 0 1 79.168 0l237.632 200.192c21.952 18.048 21.952 47.744 0 66.56z m-57.216 308.224H296.576c-40.512 0-73.92 29.696-73.92 65.728v32.832C370.496 861.568 372.224 863.168 410.88 896h147.008c36.032-30.528 35.2-34.432 182.144-130.624v-32.832c0-36.8-32.576-65.728-73.92-65.728zM481.28 830.272c-40.448 0-73.92-29.696-73.92-65.664 0-36.032 33.472-65.728 73.92-65.728 40.512 0 73.92 29.696 73.92 65.728 0 36.736-33.408 65.664-73.92 65.664z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongziyuanguanli" unicode="&#58882;" d="M0 701.44c0-107.456 229.248-194.56 512-194.56s512 87.104 512 194.56S794.752 896 512 896 0 808.896 0 701.44zM959.296 473.6C871.808 414.08 704.256 373.76 512 373.76S152.192 414.08 64.704 473.6C23.488 445.44 0 413.312 0 378.88c0-107.52 229.248-194.56 512-194.56s512 87.04 512 194.56c0 34.432-23.488 66.56-64.704 94.72z m0-312.32c-87.488-59.52-255.04-99.84-447.296-99.84s-359.808 40.32-447.296 99.84C23.488 133.12 0 100.992 0 66.56 0-40.96 229.248-128 512-128s512 87.04 512 194.56c0 34.432-23.488 66.56-64.704 94.72z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongshouye1" unicode="&#58883;" d="M569.6 874.688a82.048 82.048 0 0 1-110.336 0L13.312 451.264a41.152 41.152 0 0 1 55.04-61.12l7.104 6.72v-441.92c0-45.44 36.736-82.304 82.176-82.368h239.552v247.68a57.92 57.92 0 0 0 57.984 57.984h112.64a57.92 57.92 0 0 0 57.984-57.984v-247.68h245.12a82.304 82.304 0 0 1 82.304 82.368V391.488c18.304-16.512 44.16-15.296 59.392 1.664a41.152 41.152 0 0 1-2.944 58.112L569.536 874.688z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongziyuanguanli1" unicode="&#58884;" d="M0 701.44c0-107.456 229.248-194.56 512-194.56s512 87.104 512 194.56S794.752 896 512 896 0 808.896 0 701.44zM959.296 473.6C871.808 414.08 704.256 373.76 512 373.76S152.192 414.08 64.704 473.6C23.488 445.44 0 413.312 0 378.88c0-107.52 229.248-194.56 512-194.56s512 87.04 512 194.56c0 34.432-23.488 66.56-64.704 94.72z m0-312.32c-87.488-59.52-255.04-99.84-447.296-99.84s-359.808 40.32-447.296 99.84C23.488 133.12 0 100.992 0 66.56 0-40.96 229.248-128 512-128s512 87.04 512 194.56c0 34.432-23.488 66.56-64.704 94.72z" horiz-adv-x="1024" />
<glyph glyph-name="xinxicunchu" unicode="&#58885;" d="M160.627451 835.764706m80.313725 0l542.117648 0q80.313725 0 80.313725-80.313726l0-542.117647q0-80.313725-80.313725-80.313725l-542.117648 0q-80.313725 0-80.313725 80.313725l0 542.117647q0 80.313725 80.313725 80.313726ZM453.029647 614.058667c0 12.709647 9.878588 23.009882 22.086275 23.009882 12.187608 0 22.086275-10.300235 22.086274-23.009882 0-12.689569-9.898667-23.009882-22.086274-23.009883-12.207686 0-22.086275 10.320314-22.086275 23.009883zM654.556863 360.990118c0-12.689569-9.878588-23.009882-22.086275-23.009883h-220.862745c-12.207686 0-22.086275 10.320314-22.086274 23.009883 0 12.709647 9.878588 23.009882 22.086274 23.009882h220.862745c12.207686 0 22.086275-10.300235 22.086275-23.009882z m0 92.039529c0-12.709647-9.878588-23.009882-22.086275-23.009882h-220.862745c-12.207686 0-22.086275 10.300235-22.086274 22.989804 0 12.709647 9.878588 23.009882 22.086274 23.009882h220.862745c12.207686 0 22.086275-10.300235 22.086275-22.989804z m44.172549-138.039216c0-12.709647-9.878588-23.009882-22.086275-23.009882H367.435294c-12.207686 0-22.086275 10.300235-22.086274 22.989804V544.025098c0 3.072 1.184627 5.983373 3.212549 8.131765l40.96 42.646588v-26.744471c0-25.419294 19.777255-46.019765 44.172549-46.019764h176.690196c24.395294 0 44.172549 20.600471 44.172549 46.019764V660.078431h22.086274c12.207686 0 22.086275-10.300235 22.086275-23.009882v-322.098196zM433.694118 640.803137l15.259607 15.902118a10.842353 10.842353 0 0 0 7.790432 3.353098H610.384314v-69.009569c0-12.709647-9.878588-23.009882-22.086275-23.009882h-132.517647c-12.207686 0-22.086275 10.300235-22.086274 23.009882V640.803137z m265.035294 65.254902H443.151059c-5.822745 0-11.444706-2.409412-15.560784-6.706196l-119.868236-124.586667a23.491765 23.491765 0 0 1-6.485333-16.263529L301.176471 291.960471c0-25.399216 19.777255-46.019765 44.15247-46.019765H698.729412c24.395294 0 44.172549 20.600471 44.172549 46.019765V660.078431c0 25.419294-19.777255 46.019765-44.172549 46.019765z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongxitongyunwei" unicode="&#58886;" d="M938.048 896H75.776C33.984 896 0 862.08 0 820.224v-577.472c0-41.856 33.92-75.84 75.776-75.84h263.68L124.8-117.44l764.032-0.768-214.656 285.12h263.872c41.792 0 75.776 33.984 75.776 75.84V820.224C1013.824 862.016 979.712 896 938.048 896z m-46.464-606.848H582.144L506.88 389.12 431.36 289.152H122.24V773.76H891.52v-484.608z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongzhinengjiansuo" unicode="&#58887;" d="M926.08-112.896l-106.496 107.712c10.368 4.992 27.52 17.28 44.736 38.016l17.28-17.664 84.672-86.4c7.68-7.68 7.68-20.096 0-27.712a120.32 120.32 0 0 0-19.584-14.72c-8.064-3.84-16.832-3.008-20.608 0.768zM690.56-44.8a235.52 235.52 0 0 0 0 470.976 235.648 235.648 0 0 0 235.328-235.52c0-129.92-105.6-235.52-235.328-235.52z m0 413.12a177.728 177.728 0 0 1-177.472-177.6 177.856 177.856 0 0 1 177.472-177.728 177.856 177.856 0 0 1 177.536 177.728 177.728 177.728 0 0 1-177.536 177.6z m-269.632-182.464c0 143.36 107.136 271.232 238.976 271.232 48 0 92.736 4.352 130.176-22.272V658.048H525.824c-72.192 0-130.752 63.68-130.752 142.336V896h-264.32C58.624 896 0 832.256 0 753.664v-651.136c0-78.592 58.56-142.336 130.816-142.336H541.44c-71.936 44.928-120.576 129.216-120.576 225.664z m133.44 494.08h237.888L425.408 896v-86.848c0-71.36 57.728-129.216 128.96-129.216z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongrenwuguanli1" unicode="&#58888;" d="M888.832-87.232H73.92C33.472-87.232 0-57.6 0-21.568V699.712c0 35.904 33.472 65.664 73.92 65.664h36.992v-98.56c0-35.968 33.408-65.728 73.92-65.728h592.192c40.512 0 73.92 29.76 73.92 65.728v98.56h36.992c40.448 0 73.92-29.76 73.92-65.728v-721.216c0.896-35.968-32.576-65.664-73.024-65.664z m-165.44 445.824a62.72 62.72 0 0 1-79.232 0l-198.016-167.36L353.792 269.44a62.72 62.72 0 0 1-79.232 0c-22.016-18.752-22.016-48.512 0-66.496l132.032-111.04a62.72 62.72 0 0 1 79.168 0l237.632 200.192c21.952 18.048 21.952 47.744 0 66.56z m-57.216 308.224H296.576c-40.512 0-73.92 29.696-73.92 65.728v32.832C370.496 861.568 372.224 863.168 410.88 896h147.008c36.032-30.528 35.2-34.432 182.144-130.624v-32.832c0-36.8-32.576-65.728-73.92-65.728zM481.28 830.272c-40.448 0-73.92-29.696-73.92-65.664 0-36.032 33.472-65.728 73.92-65.728 40.512 0 73.92 29.696 73.92 65.728 0 36.736-33.408 65.664-73.92 65.664z" horiz-adv-x="1024" />
<glyph glyph-name="shanchu" unicode="&#58889;" d="M39.204571 896h985.721905v-1018.441143H39.204571zM766.927238 664.527238H344.112762c-38.66819 0-70.217143-31.110095-70.217143-69.632v-22.918095h563.248762v23.30819c0 38.13181-31.50019 69.241905-70.217143 69.241905z m-123.172571 46.32381l10.532571-72.996572h-197.485714l10.483809 72.996572h176.518096z m5.656381 46.275047h-187.733334c-19.553524 0-37.546667-15.60381-40.228571-34.425905l-13.897143-97.03619a29.647238 29.647238 0 0 1 30.427429-34.474667h234.691047c19.504762 0 33.060571 15.60381 30.427429 34.474667l-13.897143 97.03619c-2.243048 18.870857-20.284952 34.425905-39.789714 34.425905z m129.170285-231.472762H332.458667a41.935238 41.935238 0 0 1-42.812953-46.323809l38.326857-416.963048c2.243048-25.209905 25.551238-46.32381 51.053715-46.323809h352.256c25.892571 0 48.761905 20.772571 51.053714 46.323809l38.66819 417.01181c2.633143 25.551238-16.530286 46.275048-42.422857 46.275047z m-316.952381-416.621714H391.070476l-23.30819 324.022857h93.866666v-324.022857z m140.824381 0H508.586667V433.054476h93.866666v-324.022857z m117.516191 0h-70.558476V433.054476h93.866666l-23.259428-324.022857z" horiz-adv-x="1072" />
<glyph glyph-name="dingweiweizhi" unicode="&#58890;" d="M0 896h985.721905v-1018.441143H0zM492.885333 757.126095c-168.521143 0-305.152-143.457524-305.152-320.512 0-88.502857 34.182095-168.618667 89.380572-226.645333l215.771428-226.596572 215.722667 226.596572a327.875048 327.875048 0 0 1 89.380571 226.645333c0 177.005714-136.630857 320.512-305.103238 320.512z m0-472.795428C420.473905 284.525714 361.910857 351.817143 362.105905 434.712381v0.097524C361.910857 517.607619 420.327619 584.899048 492.78781 585.191619h0.097523c72.362667-0.24381 130.925714-67.535238 130.730667-150.381714v-0.097524c0.24381-82.846476-58.270476-150.186667-130.633143-150.430476h-0.097524z" horiz-adv-x="1024" />
<glyph glyph-name="xitongxinxi" unicode="&#58891;" d="M512 384m-512 0a512 512 0 1 1 1024 0 512 512 0 1 1-1024 0ZM271.058824 569.886118C271.058824 600.304941 295.695059 624.941176 326.113882 624.941176h117.76c30.388706 0 55.024941-24.636235 55.024942-55.055058v-165.104942c0-4.216471-3.433412-7.68-7.68-7.68h-165.104942A55.055059 55.055059 0 0 0 271.058824 452.126118v117.76z m30.72-5.12c0 16.293647 13.161412 29.455059 29.455058 29.455058h107.52c16.263529 0 29.424941-13.161412 29.424942-29.455058v-136.944942h-136.944942a29.455059 29.455059 0 0 0-29.455058 29.424942v107.52z m481.28 5.12C783.058824 600.304941 758.422588 624.941176 728.033882 624.941176h-117.76c-30.418824 0-55.055059-24.636235-55.055058-55.055058v-165.104942c0-4.216471 3.433412-7.68 7.68-7.68h165.135058c30.388706 0 55.024941 24.636235 55.024942 55.024942v117.76z m-30.72-5.12a29.455059 29.455059 0 0 1-29.424942 29.455058h-107.52a29.455059 29.455059 0 0 1-29.455058-29.455058v-136.944942h136.975058c16.263529 0 29.424941 13.191529 29.424942 29.424942v107.52zM271.058824 167.966118C271.058824 137.577412 295.695059 112.941176 326.113882 112.941176h117.76c30.388706 0 55.024941 24.636235 55.024942 55.024942V333.101176a7.68 7.68 0 0 1-7.68 7.68h-165.104942c-30.418824 0-55.055059-24.636235-55.055058-55.055058v-117.76z m30.72 5.12c0-16.263529 13.161412-29.424941 29.455058-29.424942h107.52c16.263529 0 29.424941 13.191529 29.424942 29.424942v136.975058h-136.944942a29.455059 29.455059 0 0 1-29.455058-29.455058v-107.52z m481.28-5.12C783.058824 137.577412 758.422588 112.941176 728.033882 112.941176h-117.76a55.055059 55.055059 0 0 0-55.055058 55.024942V333.101176c0 4.216471 3.433412 7.68 7.68 7.68h165.135058c30.388706 0 55.024941-24.636235 55.024942-55.055058v-117.76z m-30.72 5.12c0-16.263529-13.191529-29.424941-29.424942-29.424942h-107.52a29.455059 29.455059 0 0 0-29.455058 29.424942v136.975058h136.975058c16.263529 0 29.424941-13.161412 29.424942-29.455058v-107.52z" horiz-adv-x="1024" />
<glyph glyph-name="fenxiziyuan" unicode="&#58892;" d="M160.627451 835.764706m80.313725 0l542.117648 0q80.313725 0 80.313725-80.313726l0-542.117647q0-80.313725-80.313725-80.313725l-542.117648 0q-80.313725 0-80.313725 80.313725l0 542.117647q0 80.313725 80.313725 80.313726ZM464.996392 310.312157a154.644078 154.644078 0 0 0-60.737255 15.179294c-27.949176 13.834039-45.979608 35.940392-53.549176 65.415529h4.21647a11.846275 11.846275 0 0 1 10.340393 6.083765 12.589176 12.589176 0 0 1 0.080313 12.227765l-30.920784 54.432627a11.90651 11.90651 0 0 1-10.340392 6.144 11.90651 11.90651 0 0 1-10.340392-6.144l-31.061334-54.492862a12.589176 12.589176 0 0 1 0.020079-12.267922 11.846275 11.846275 0 0 1 10.36047-6.103843h8.673883c11.083294-62.443922 50.457098-93.906824 81.598745-109.226667 25.6-12.348235 53.408627-19.19498 81.65898-20.118588 13.131294-0.040157 23.833098 10.88251 23.893333 24.415372a24.495686 24.495686 0 0 1-6.967215 17.307608 23.511843 23.511843 0 0 1-16.926118 7.147922z m276.439843 249.173333a11.886431 11.886431 0 0 1-10.440784 6.284549h-8.673882c-11.083294 62.443922-50.457098 93.906824-81.598745 109.327059a202.912627 202.912627 0 0 1-81.638902 20.078431 23.572078 23.572078 0 0 1-21.162667-11.966745c-4.417255-7.649882-4.417255-17.187137 0-24.857098 4.417255-7.649882 12.508863-12.247843 21.162667-11.966745a156.912941 156.912941 0 0 0 60.757333-15.199372c27.949176-13.854118 45.979608-35.940392 53.549176-65.41553h-4.21647a11.846275 11.846275 0 0 1-10.521098-6.083764 12.569098 12.569098 0 0 1 0.020078-12.408471l30.900706-54.432628a11.90651 11.90651 0 0 1 10.340392-6.144 11.90651 11.90651 0 0 1 10.360471 6.144l30.84047 54.372393a12.488784 12.488784 0 0 1 0.321255 12.288z m-45.839059-81.01647h-154.403137c-16.183216 0.040157-29.354667-13.392314-29.43498-30.037334v-157.013333c0.080314-16.64502 13.251765-30.07749 29.43498-30.017255h154.403137c16.183216-0.060235 29.334588 13.372235 29.434981 30.017255v157.013333c-0.100392 16.665098-13.251765 30.07749-29.434981 30.037334z m-18.291451-48.830745v-119.326118H559.585882v119.326118h117.719843zM512 665.198431c-0.100392 16.64502-13.251765 30.07749-29.43498 30.017255H328.101647c-16.163137 0.040157-29.31451-13.392314-29.394823-30.017255v-157.013333c0-8.031373 3.112157-15.701333 8.633725-21.343373 5.50149-5.662118 12.970667-8.83451 20.761098-8.814431h154.403137a28.912941 28.912941 0 0 1 20.841412 8.774275c5.541647 5.662118 8.653804 13.352157 8.673882 21.383529v157.013333z m-47.826824-18.81349v-119.42651H346.553725V646.384941h117.659608z" horiz-adv-x="1024" />
<glyph glyph-name="zhatuchezhuapai" unicode="&#58893;" d="M13.128205 896m105.025641 0l787.692308 0q105.025641 0 105.025641-105.025641l0-804.706462q0-105.025641-105.025641-105.025641l-787.692308 0q-105.025641 0-105.025641 105.025641l0 804.706462q0 105.025641 105.025641 105.025641ZM698.00041 396.550564a22.081641 22.081641 0 0 0 26.072616-17.014154l22.16041-108.465231a21.714051 21.714051 0 0 0-17.381744-25.547487 22.055385 22.055385 0 0 0-26.072615 17.014154l-22.134154 108.491487a21.714051 21.714051 0 0 0 17.329231 25.521231h0.026256z m-88.615384 0a22.055385 22.055385 0 0 0 26.072615-17.014154l22.16041-108.465231a21.714051 21.714051 0 0 0-17.381743-25.547487 22.055385 22.055385 0 0 0-26.072616 17.014154l-22.134154 108.491487a21.714051 21.714051 0 0 0 17.329231 25.521231h0.026257z m-88.615385 0a22.055385 22.055385 0 0 0 26.072615-17.014154l22.160411-108.465231a21.714051 21.714051 0 0 0-17.381744-25.547487 22.055385 22.055385 0 0 0-26.072615 17.014154l-22.134154 108.491487a21.714051 21.714051 0 0 0 17.355487 25.521231z m-347.897436-120.621949c0.078769 0.183795 0.026256 0.393846 0.131282 0.577641l66.454975 130.179282a22.212923 22.212923 0 0 0 19.823589 11.99918h119.204103l-8.008205 39.122051a21.714051 21.714051 0 0 0 21.714051 25.96759h465.237333a21.924103 21.924103 0 0 0 21.740308-25.96759l-66.481231-325.421948a22.055385 22.055385 0 0 0-21.714051-17.460513h-22.16041c0-47.944205-39.673436-86.803692-88.615385-86.803693s-88.615385 38.859487-88.615385 86.803693h-177.230769c0-47.917949-39.673436-86.803692-88.615384-86.803693s-88.615385 38.859487-88.615385 86.803693H192.800821A21.897846 21.897846 0 0 0 170.666667 136.612103v130.179282a20.795077 20.795077 0 0 0 2.205538 9.110974z m55.794872 12.576821h74.909538v86.777436H272.961641L228.693333 288.505436zM680.198564 71.548718c24.444718 0 44.268308 19.429744 44.320821 43.37559a42.010256 42.010256 0 0 1-2.625641 14.099692c-0.026256 0.131282-0.131282 0.210051-0.183795 0.341333a43.979487 43.979487 0 0 1-27.201641 26.440205l-2.021744 0.603898a40.539897 40.539897 0 0 1-24.602256 0c-0.65641-0.183795-1.312821-0.36759-1.969231-0.603898a44.032 44.032 0 0 1-27.227898-26.466461l-0.210051-0.36759a42.115282 42.115282 0 0 1-2.573128-14.047179c0.026256-23.945846 19.849846-43.349333 44.294564-43.37559z m-76.458667 86.777436c0.262564 0.446359 0.603897 0.840205 0.866462 1.286564 1.470359 2.363077 3.072 4.699897 4.75241 6.931692 1.312821 1.732923 2.730667 3.308308 4.148513 4.909949 2.573128 2.914462 5.330051 5.671385 8.270769 8.244513 2.048 1.759179 4.096 3.492103 6.301539 5.093743a89.429333 89.429333 0 0 0 14.493538 8.402052c1.706667 0.787692 3.360821 1.627897 5.146257 2.284307 4.043487 1.575385 8.218256 2.835692 12.471794 3.80718 1.470359 0.341333 2.940718 0.630154 4.411077 0.892718a79.451897 79.451897 0 0 0 31.218872 0 88.300308 88.300308 0 0 0 17.014154-4.726154c1.654154-0.65641 3.229538-1.417846 4.83118-2.153026 3.124513-1.444103 6.170256-3.072 9.110974-4.831179 1.837949-1.155282 3.675897-2.363077 5.461333-3.623385 2.310564-1.654154 4.46359-3.492103 6.590359-5.330051 2.809436-2.468103 5.461333-5.093744 7.90318-7.876923 1.496615-1.68041 2.993231-3.334564 4.332307-5.12 1.706667-2.231795 3.229538-4.516103 4.726154-6.905436 0.262564-0.446359 0.603897-0.840205 0.866462-1.286564h16.173948l57.580308 282.046359h-411.175384l57.580307-282.046359h126.923487zM325.737026 71.548718c24.444718 0 44.268308 19.429744 44.32082 43.37559a41.668923 41.668923 0 0 1-2.625641 14.099692 43.979487 43.979487 0 0 1-27.359179 26.781538l-2.048 0.603898a40.487385 40.487385 0 0 1-24.602257 0c-0.65641-0.183795-1.312821-0.36759-1.969231-0.603898a44.032 44.032 0 0 1-27.227897-26.466461l-0.210051-0.36759a42.115282 42.115282 0 0 1-2.573128-14.047179c0.026256-23.945846 19.849846-43.349333 44.294564-43.37559z m-76.458667 86.777436c0.262564 0.446359 0.603897 0.840205 0.866462 1.286564 1.470359 2.363077 3.072 4.699897 4.75241 6.931692 1.312821 1.732923 2.730667 3.308308 4.148513 4.909949a90.164513 90.164513 0 0 0 14.572307 13.338256 89.429333 89.429333 0 0 0 14.493539 8.402052c1.706667 0.787692 3.360821 1.627897 5.146256 2.284307 4.043487 1.575385 8.218256 2.835692 12.471795 3.80718 1.470359 0.341333 2.940718 0.630154 4.437333 0.892718a79.451897 79.451897 0 0 0 31.192616 0 88.300308 88.300308 0 0 0 17.014154-4.726154c1.654154-0.65641 3.229538-1.417846 4.831179-2.153026 3.124513-1.444103 6.170256-3.072 9.110974-4.831179 1.837949-1.155282 3.675897-2.363077 5.461334-3.623385 2.310564-1.654154 4.46359-3.492103 6.590359-5.330051 2.809436-2.468103 5.461333-5.093744 7.903179-7.876923 1.496615-1.68041 2.993231-3.334564 4.332308-5.12 1.68041-2.231795 3.255795-4.542359 4.726154-6.905436 0.262564-0.446359 0.603897-0.840205 0.866461-1.286564h29.433436l-44.294564 216.956718H347.897436v-108.491487a21.924103 21.924103 0 0 0-22.16041-21.687795H214.961231v-86.777436h34.317128z m586.043077 347.109743a22.317949 22.317949 0 0 0-17.066667 7.824411l-95.232 111.931077-49.309538-48.285539a22.501744 22.501744 0 0 0-32.978052 1.785436l-73.124102 89.534359-159.744-156.409436a22.475487 22.475487 0 0 0-31.323898-0.420102 21.398974 21.398974 0 0 0 0 31.087589l177.23077 173.554872a21.740308 21.740308 0 0 0 16.882872 6.327795c6.301538-0.341333 12.130462-3.282051 16.095179-8.086974l73.124103-89.534359 48.968205 47.917948a22.212923 22.212923 0 0 0 16.67282 6.327795c6.222769-0.262564 12.025436-3.072 16.01641-7.771897l110.775795-130.153026c7.82441-9.189744 6.564103-22.89559-2.809436-30.562461a22.422974 22.422974 0 0 0-14.178461-5.041231z m-110.802051 0h-44.320821V548.890256h44.320821v-43.401846z m-132.936206 0V548.890256h44.320821v-43.401846H591.556923z m-88.615384 43.428103h44.32082v-43.401846h-44.32082v43.401846z m44.32082 65.063385h44.294564v-43.37559h-44.294564v43.37559z" horiz-adv-x="1024" />
<glyph glyph-name="duoxuanxuanzhong" unicode="&#58894;" d="M864-108.8h-704c-78.016 0-140.8 62.656-140.8 140.8v704C19.2 814.016 81.856 876.8 160 876.8h704c78.016 0 140.8-62.656 140.8-140.8v-704c0-78.144-62.784-140.8-140.8-140.8zM406.4 307.52L244.992 468.992 145.408 369.408l260.992-260.928 436.992 436.928-99.584 99.584z" horiz-adv-x="1024" />
<glyph glyph-name="danxuanxuanzhong" unicode="&#58895;" d="M0 384a512 512 0 1 1 1024 0A512 512 0 0 1 0 384zM320 384a192 192 0 1 1 384 0 192 192 0 1 1-384 0z" horiz-adv-x="1024" />
<glyph glyph-name="shebeixinxi" unicode="&#58896;" d="M512 384m-512 0a512 512 0 1 1 1024 0 512 512 0 1 1-1024 0ZM759.265882 357.857882L721.076706 639.096471A18.522353 18.522353 0 0 1 702.644706 655.058824H298.827294a18.462118 18.462118 0 0 1-18.311529-15.902118l-39.393883-281.298824h0.39153l-0.39153-0.451764v-199.740236c0-11.685647 9.456941-21.142588 21.142589-21.142588H738.183529a21.142588 21.142588 0 0 1 21.142589 21.142588v199.740236l-0.39153 0.451764h0.331294z m-37.014588-184.169411H278.106353v184.169411h444.144941v-184.169411zM327.619765 282.834824h49.061647a12.559059 12.559059 0 0 1 12.498823 12.528941v11.715764a12.498824 12.498824 0 0 1-12.498823 12.438589h-49.091765a12.498824 12.498824 0 0 1-12.468706-12.438589v-11.745882a12.559059 12.559059 0 0 1 12.498824-12.498823z m0-73.728h49.061647a12.559059 12.559059 0 0 1 12.498823 12.528941v11.655529a12.498824 12.498824 0 0 1-12.498823 12.498824h-49.091765a12.498824 12.498824 0 0 1-12.468706-12.498824v-11.655529c0-6.927059 5.601882-12.528941 12.498824-12.528941z m116.314353 73.728h0.391529a18.311529 18.311529 0 1 1 0 36.683294h-0.391529a18.311529 18.311529 0 0 1-18.371765-18.251294v-0.060236c0-10.149647 8.222118-18.371765 18.371765-18.371764z m0-73.728h0.391529a18.311529 18.311529 0 1 1 0 36.683294h-0.391529a18.311529 18.311529 0 0 1-18.371765-18.251294v-0.060236a18.311529 18.311529 0 0 1 18.251294-18.371764h0.120471z m73.999058 73.728h0.39153a18.371765 18.371765 0 0 1 18.582588 18.371764 18.311529 18.311529 0 0 1-18.311529 18.31153h-0.662589a18.371765 18.371765 0 0 1 0-36.683294z m0-73.728h0.39153a18.371765 18.371765 0 0 1 18.582588 18.371764 18.311529 18.311529 0 0 1-18.311529 18.31153h-0.662589a18.311529 18.311529 0 1 1 0-36.683294z m73.456942 73.728h0.391529a18.371765 18.371765 0 0 1 0 36.683294h-0.391529a18.371765 18.371765 0 0 1-18.371765-18.31153 18.432 18.432 0 0 1 18.371765-18.371764z m0-73.728h0.391529a18.371765 18.371765 0 0 1 0 36.683294h-0.391529a18.371765 18.371765 0 0 1 0-36.683294z m73.878588 73.728h0.391529a18.311529 18.311529 0 1 1 0.060236 36.683294h-0.451765a18.371765 18.371765 0 0 1 0-36.683294z m0-73.728h0.391529a18.311529 18.311529 0 1 1 0.060236 36.683294h-0.451765a18.311529 18.311529 0 1 1-0.060235-36.683294h0.060235z" horiz-adv-x="1024" />
<glyph glyph-name="iconxuanzhongshouye2" unicode="&#58899;" d="M938.048 896H75.776C33.984 896 0 862.08 0 820.224v-577.472c0-41.856 33.92-75.84 75.776-75.84h263.68L124.8-117.44l764.032-0.768-214.656 285.12h263.872c41.792 0 75.776 33.984 75.776 75.84V820.224C1013.824 862.016 979.712 896 938.048 896z m-46.464-606.848H582.144L506.88 389.12 431.36 289.152H122.24V773.76H891.52v-484.608z" horiz-adv-x="1024" />
<glyph glyph-name="baocunmianxing" unicode="&#58900;" d="M170.642286 896v-385.974857c0-31.890286 30.573714-57.782857 68.315428-57.782857h546.084572c37.741714 0 68.315429 25.892571 68.315428 57.782857V896A170.642286 170.642286 0 0 0 1024 725.357714v-682.715428A170.642286 170.642286 0 0 0 853.357714-128H170.642286A170.642286 170.642286 0 0 0 0 42.642286V725.357714A170.642286 170.642286 0 0 0 170.642286 896z m68.315428 0h546.084572v-375.442286H238.957714V896z m443.684572-136.557714a34.157714 34.157714 0 0 1-34.084572-34.084572v-102.4a34.157714 34.157714 0 0 1 68.242286 0v102.4a34.157714 34.157714 0 0 1-34.157714 34.084572z" horiz-adv-x="1024" />
<glyph glyph-name="zhongzhi" unicode="&#58902;" d="M1024 896m0-53.894737l0-916.210526q0-53.894737-53.894737-53.894737l-916.210526 0q-53.894737 0-53.894737 53.894737l0 916.210526q0 53.894737 53.894737 53.894737l916.210526 0q53.894737 0 53.894737-53.894737ZM835.116912 571.966877L891.957895 628.448561 892.335158 384l-246.029474 0.377263 95.752983 95.142176c-59.176421 125.556772-209.596632 179.667088-335.961825 120.867929a251.724351 251.724351 0 0 1-127.155649-133.425403l-132.652912 0.07186C198.512281 668.420491 405.162667 789.611789 607.860772 737.711158a378.826105 378.826105 0 0 0 227.25614-165.744281z m-538.606035-298.217544c59.266246-125.538807 209.740351-179.577263 336.069614-120.670315a251.778246 251.778246 0 0 1 126.976 133.245754l132.778667 0.053895c-52.241965-201.422596-258.928281-322.63186-461.626386-270.713263a378.88 378.88 0 0 0-227.184281 165.690385l-56.858947-56.481684-0.377263 244.502456 246.047438-0.377263-95.824842-95.178105 0-0.053895z" horiz-adv-x="1024" />
<glyph glyph-name="tianjia" unicode="&#58903;" d="M874.03928 746.096168A508.584406 508.584406 0 0 1 512 895.997724a508.755072 508.755072 0 0 1-362.03928-149.901556A508.698184 508.698184 0 0 1 0.002276 384c0-136.81717 53.304652-265.442376 150.015333-362.096168A508.584406 508.584406 0 0 1 512-127.997724a508.299963 508.299963 0 0 1 361.982391 149.901556A509.039515 509.039515 0 0 1 1023.997724 384a508.356852 508.356852 0 0 1-149.958444 362.03928zM767.998862 347.30683H548.636282v-220.443465a36.636282 36.636282 0 0 0-36.579393-36.750059 36.636282 36.636282 0 0 0-36.579393 36.750059V347.249941H256.001138A36.636282 36.636282 0 0 0 219.421745 384c0 20.309243 16.383927 36.750059 36.579393 36.750059h219.476358V641.136635c0 20.309243 16.383927 36.750059 36.579393 36.750059 20.195466 0 36.579393-16.440816 36.579393-36.750059v-220.386576H767.998862c20.195466 0 36.579393-16.497704 36.579393-36.750059a36.636282 36.636282 0 0 0-36.579393-36.750059z" horiz-adv-x="1024" />
<glyph glyph-name="shanchu1" unicode="&#58904;" d="M784.96 770.88H221.568C170.048 770.88 128 728.96 128 676.8v-30.976h750.528v31.488c0 51.584-41.984 93.568-93.568 93.568zM620.864 833.472l14.016-98.56H371.712l13.952 98.56h235.2zM628.352 896H378.24a55.68 55.68 0 0 1-53.504-46.528l-18.56-131.136a39.872 39.872 0 0 1 40.576-46.528h312.704a39.872 39.872 0 0 1 40.512 46.528L681.408 849.472A54.72 54.72 0 0 1 628.352 896z m172.16-312.704H206.08a56.384 56.384 0 0 1-57.088-62.592l51.072-563.392c3.008-34.048 33.984-62.528 68.032-62.528h469.376c34.56 0 65.024 27.968 68.032 62.528l51.52 563.392a55.744 55.744 0 0 1-56.512 62.592z m-422.336-562.944H284.16l-30.976 437.824h125.056v-437.824z m187.648 0H440.704V458.176h125.12v-437.824z m156.608 0h-94.08V458.176h125.12l-31.04-437.824z" horiz-adv-x="1024" />
......
......@@ -142,6 +142,7 @@ a:active{
}
.contentBox{
padding: 12px;
overflow: hidden;
}
}
.detaiCon span{
......
......@@ -9,7 +9,7 @@ import resetCss from "./assets/resetElementCss/index.css";
import api from "./api/install";
import "./assets/css/public.css";
import echarts from "echarts";
import "./assets/icon/icon1/iconfont.css";
// import "./assets/icon/icon1/iconfont.css";
import "./assets/icon/icon2/iconfont.css";
import "../src/assets/js/vporto";
import { buildCode } from "../src/assets/js/buildcodes";
......@@ -18,10 +18,10 @@ Vue.prototype.$echarts = echarts;
Vue.prototype.$moment = moment;
Vue.prototype.$buildCode = buildCode;
Vue.prototype.oParse = new XML.ObjTree();
Vue.prototype.axios=axios;
Vue.prototype.axios = axios;
import VueParticles from 'vue-particles'
Vue.use(VueParticles)
// import VueParticles from "vue-particles";
// Vue.use(VueParticles);
Vue.use(api);
Vue.use(ElementUI, { size: "small", zIndex: 3000 });
......
......@@ -8,7 +8,7 @@ export const constantRouterMap = [
path: "/",
name: "首页",
component: resolve => require(["../views/Layout/index.vue"], resolve),
redirect: "/trficcshow",
redirect: "/login",
children: [
{
path: "/trficcshow",
......@@ -47,7 +47,7 @@ export const asyncRouterMap = [
name: "任务管理",
component: resolve => require(["../views/Layout/index.vue"], resolve),
meta: {
icon: "el-icon-location"
icon: "icon-fanxing-iconxuanzhongrenwuguanli1"
},
children: [
{
......@@ -75,7 +75,7 @@ export const asyncRouterMap = [
name: "智能检索",
component: resolve => require(["../views/Layout/index.vue"], resolve),
meta: {
icon: "el-icon-location"
icon: "icon-fanxing-iconxuanzhongzhinengjiansuo1"
},
children: [
{
......@@ -144,7 +144,7 @@ export const asyncRouterMap = [
name: "资源管理",
component: resolve => require(["../views/Layout/index.vue"], resolve),
meta: {
icon: "el-icon-location"
icon: "icon-fanxing-iconxuanzhongziyuanguanli1"
},
children: [
{
......@@ -208,7 +208,7 @@ export const asyncRouterMap = [
name: "系统运维",
component: resolve => require(["../views/Layout/index.vue"], resolve),
meta: {
icon: "el-icon-location"
icon: "icon-fanxing-iconxuanzhongxitongyunwei"
},
children: [
{
......
......@@ -12,7 +12,6 @@ export default {
}
},
created(){
alert(1)
}
}
</script>
......
......@@ -2,28 +2,28 @@
<div class="home">
<el-container class="home-box">
<el-header class="headers">
<img class="logoImg" src="../../assets/img/home/logo.png" alt="">
<div class="headRight">
<span>2019-11-15 16:50 星期一</span>
<img src="../../assets/img/home/user.png" alt="">
<span class="exit">退出<i class="el-icon-arrow-down"></i></span>
</div>
</el-header>
<img class="logoImg" src="../../assets/img/home/logo.png" alt="" />
<span :class="{'el-icon-s-fold':isopen,'el-icon-s-unfold':!isopen,'menu-switch':true}" @click="openmenu"></span>
<div class="headRight">
<span>{{ curdate }}</span>
<img src="../../assets/img/home/user.png" alt="" />
<span class="exit" @click="logout()">退出<i class="el-icon-arrow-down"></i></span>
</div>
</el-header>
<el-container style="min-height:calc(100vh - 64px);">
<el-aside :width="menuwidth">
<menus @setTopBar="setTopBar" ref="leftmenu"></menus>
</el-aside>
<menus @setTopBar="setTopBar" ref="leftmenu"></menus>
<el-main>
<div class="nav">
<div class="nav-tag-box">
<el-tag
v-for="(tag,index) in topbarArr" :key="index"
v-for="(tag, index) in topbarArr"
:key="index"
closable
@close="closetag(tag,index)"
@close="closetag(tag, index)"
@click="toPath(tag)"
>
<i :class="tag.icon"></i>
{{tag.name}}
>
<!-- <i :class="tag.icon"></i> -->
{{ tag.name }}
</el-tag>
</div>
</div>
......@@ -35,111 +35,172 @@
</template>
<script>
import types from "../../store/types.js";
// import HelloWorld from "@/components/HelloWorld.vue";
import menus from './menu'
import menus from "./menu";
export default {
name: "x",
data(){
return{
isCollapse: false,
conHeight:0,
menuwidth:"254px",
full:false,
topbarArr:[]
};
data() {
return {
curdate: "",
isopen:true,
conHeight: 0,
menuwidth: "15vw",
full: false,
topbarArr: []
};
},
methods:{
setTopBar(data){
if(this.topbarArr.length < 1) {
this.topbarArr.push(data)
methods: {
setTopBar(data) {
if (this.topbarArr.length < 1) {
this.topbarArr.push(data);
}
let hasBar = false;
for(let i = 0; i < this.topbarArr.length; i++) {
if(this.topbarArr[i].path == data.path){
hasBar = true
}
for (let i = 0; i < this.topbarArr.length; i++) {
if (this.topbarArr[i].path == data.path) {
hasBar = true;
}
}
if(!hasBar) {
this.topbarArr.push(data)
if (!hasBar) {
this.topbarArr.push(data);
}
},
toPath(data){
this.$refs.leftmenu.handleSelect(data.path)
openmenu() {
this.isopen = !this.isopen;
this.$refs.leftmenu.collapsemenu();
},
toPath(data) {
this.$refs.leftmenu.handleSelect(data.path);
},
closetag(data, index) {
this.topbarArr.splice(index, 1);
},
closetag(data,index){
this.topbarArr.splice(index,1)
getDate() {
let date = new Date();
let Y = date.getFullYear();
let M = date.getMonth() > 10 ? date.getMonth() : `0${date.getMonth()}`;
let D = date.getDate() > 10 ? date.getDate() : `0${date.getDate()}`;
let h = date.getHours() > 10 ? date.getHours() : `0${date.getHours()}`;
let m = date.getMinutes() > 10 ? date.getMinutes() : `0${date.getMinutes()}`;
let s = date.getSeconds();
let w = date.getDay();
let wtext = "";
switch (w) {
case 1:
wtext = "星期一";
break;
case 2:
wtext = "星期二";
break;
case 3:
wtext = "星期三";
break;
case 4:
wtext = "星期四";
break;
case 5:
wtext = "星期五";
break;
case 6:
wtext = "星期六";
break;
case 7:
wtext = "星期日";
break;
}
this.curdate = `${Y}/${M}/${D} ${h}:${m}:${s} ${wtext}`;
},
logout() {
localStorage.removeItem("menu");
localStorage.removeItem("curmenu");
this.$store.commit(types.ATOKEN, "");
localStorage.removeItem("atoken");
this.$router.push("/login");
}
},
created(){
created() {
this.$api.device.getDev().then(m => {
if(m.length < 1) {
// this.infoFun('未发现运维服务,请联系相关人员')
this.$message({
message: '未发现运维服务,请联系相关人员',
type: 'error'
});
this.setDevunid('9cb6e39adc5176b81879f6c22f1d963')
return
}
this.setDevunid(m[0].dev_unid)
})
if (m.length < 1) {
// this.infoFun('未发现运维服务,请联系相关人员')
this.$message({
message: "未发现运维服务,请联系相关人员",
type: "error"
});
this.setDevunid("9cb6e39adc5176b81879f6c22f1d963");
return;
}
this.setDevunid(m[0].dev_unid);
});
},
components:{
components: {
menus
},
mounted(){
console.log(this.permission_routers)
this.conHeight=window.innerHeight-65;
console.log(this.conHeight)
document.addEventListener("keydown", (event)=>{
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==122 ){ // 按 Esc
if(this.full) {
this.menuwidth = "254px";
this.full = false
return
}
this.menuwidth = 0
this.full = true
}
});
},
beforeMount() {
//建立ws连接
let uid = localStorage.getItem('user_unid');
let clientid = localStorage.getItem('client_unid');
this.$api.device.getGlobalWs(uid, clientid).then(data => {
this.globalWs = new WebSocket(data.ws_url);
let ary = data.ws_url.split('/');
localStorage.setItem('cennect_unid',ary[ary.length-1])
mounted() {
console.log(this.permission_routers);
this.conHeight = window.innerHeight - 65;
console.log(this.conHeight);
document.addEventListener("keydown", event => {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 122) {
// 按 Esc
if (this.full) {
this.menuwidth = "254px";
this.full = false;
return;
}
this.menuwidth = 0;
this.full = true;
}
});
setInterval(() => {
this.getDate();
}, 1000);
},
beforeMount() {
//建立ws连接
let uid = localStorage.getItem("user_unid");
let clientid = localStorage.getItem("client_unid");
this.$api.device.getGlobalWs(uid, clientid).then(data => {
this.globalWs = new WebSocket(data.ws_url);
let ary = data.ws_url.split("/");
localStorage.setItem("cennect_unid", ary[ary.length - 1]);
//监听成功
this.globalWs.onopen = function() {
console.log('全局推送服务连接成功')
}
//监听成功
this.globalWs.onopen = function() {
console.log("全局推送服务连接成功");
};
//监听断开
this.globalWs.onclose = function(){
console.log('全局推送服务连接断开')
}
//监听断开
this.globalWs.onclose = function() {
console.log("全局推送服务连接断开");
};
//监听推送信息
// this.globalWs.onmessage = this.wsdeal;
//监听推送信息
// this.globalWs.onmessage = this.wsdeal;
//保持连接
var $this = this
setInterval(function() {
var send_mesage = '{"type":"request","id":"' + new Date().getTime() + '","mts":"' + new Date().getTime() + '","command": "get /wsapi/v1/users/'+localStorage.getItem('cennect_unid')+'/keep_alive"}'
$this.globalWs.send(send_mesage)
}, 20000)
})
},
//保持连接
var $this = this;
setInterval(function() {
var send_mesage =
'{"type":"request","id":"' +
new Date().getTime() +
'","mts":"' +
new Date().getTime() +
'","command": "get /wsapi/v1/users/' +
localStorage.getItem("cennect_unid") +
'/keep_alive"}';
$this.globalWs.send(send_mesage);
}, 20000);
});
}
};
</script>
<style lang="stylus" scoped>
.menu-switch{
color #fff
font-size 25px;
margin-left 50px;
overflow: hidden;
vertical-align: super;
}
</style>
......@@ -5,26 +5,27 @@
class="el-menu-vertical-demo"
:collapse="isCollapse"
@select="handleSelect"
:unique-opened="true"
>
<el-submenu index="1">
<el-submenu index="1" class="menu-icon">
<template slot="title">
<i class="el-icon-location"></i>
<i class="icon-fanxing-iconxuanzhongshouye1"></i>
<span slot="title">首页</span>
</template>
<el-menu-item index="/trficcshow">
<i class="el-icon-location"></i>交通展示
<i class="submenuicon"></i>交通展示
</el-menu-item>
<el-menu-item index="/behaviorshow">
<i class="el-icon-location"></i>综治展示
<i class="submenuicon"></i>综治展示
</el-menu-item>
</el-submenu>
<el-submenu v-for="(fristmenu,index) in permission_routers" :index="fristmenu.path" :key="index">
<el-submenu v-for="(fristmenu,index) in permission_routers" :index="fristmenu.path" :key="index" class="menu-icon">
<template slot="title">
<i :class="fristmenu.meta.icon"></i>
<span slot="title">{{fristmenu.name}}</span>
</template>
<el-menu-item v-for="(twomenu,index) in fristmenu.children" :key="index" :index="twomenu.path">
<i :class="twomenu.meta.icon"></i>{{twomenu.name}}
<i class="submenuicon"></i>{{twomenu.name}}
</el-menu-item>
</el-submenu>
</el-menu>
......@@ -39,7 +40,7 @@ export default {
return {
full: false,
isCollapse: false,
activemenu: "/",
activemenu: "/indexshow",
topbar:[]
};
},
......@@ -47,28 +48,33 @@ export default {
handleSelect(key, keyPath) {
this.$router.push(key);
localStorage.setItem("curmenu", key);
this.activemenu = key
this.activemenu = key;
},
collapsemenu() {
this.isCollapse = !this.isCollapse;
}
},
computed: {
...mapGetters(["permission_routers"])
},
created() {
let activemenu = localStorage.getItem("curmenu");
// let activemenu = localStorage.getItem("curmenu");
let activemenu = location.href.split('#')[1];
if (activemenu) {
this.activemenu = activemenu;
this.$router.push(activemenu);
} else {
this.$router.push('/');
this.$router.push("/");
this.activemenu = '/';
}
},
watch:{
$route(t, f){
console.log('to',t)
let obj = {
name:f.name,
path:f.path,
icon:f.meta.icon
name:t.name,
path:t.path,
// icon:t.meta.icon
}
this.$emit("setTopBar",obj)
}
......@@ -77,7 +83,26 @@ export default {
</script>
<style lang="stylus" scoped>
.el-menu-vertical-demo:not(.el-menu--collapse) {
width: 200px;
min-height: 400px;
}
.box{
height 100%;
}
.menu-icon i{
font-size 14px;
padding-right:10px;
}
.menu-icon .submenuicon{
display inline-block;
height 3px;
width 3px;
background:rgba(0,0,0,0.85);
opacity .5;
border-radius 5px;
margin-left -10px;
margin-right 10px;
padding-right:0px;
}
</style>
\ No newline at end of file
<template>
<div id="login" :style="{height:innerHeight+'px'}">
<vue-particles
color="#dedede"
:particleOpacity="0.7"
:particlesNumber="80"
shapeType="circle"
:particleSize="4"
linesColor="#dedede"
:linesWidth="1"
:lineLinked="true"
:lineOpacity="0.4"
:linesDistance="150"
:moveSpeed="3"
:hoverEffect="true"
hoverMode="grab"
:clickEffect="true"
clickMode="push"
>
</vue-particles>
<div class="box">
<h1>视频分析综合管理平台</h1>
<div style="width: 60%;margin: 0 auto;">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="0px" class="demo-ruleForm">
<el-form-item label=" " prop="username">
<el-input v-model="ruleForm.username" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label=" " prop="password">
<el-input v-model="ruleForm.password" type="password" placeholder="请输入密码"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">登 录</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
<div id="login" :style="{ height: innerHeight + 'px' }">
<!-- <vue-particles
color="#dedede"
:particleOpacity="0.7"
:particlesNumber="80"
shapeType="circle"
:particleSize="4"
linesColor="#dedede"
:linesWidth="1"
:lineLinked="true"
:lineOpacity="0.4"
:linesDistance="150"
:moveSpeed="3"
:hoverEffect="true"
hoverMode="grab"
:clickEffect="true"
clickMode="push"
>
</vue-particles> -->
<div class="box">
<h1>视频分析综合管理平台</h1>
<div style="width: 60%;margin: 0 auto;">
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="0px"
class="demo-ruleForm"
>
<el-form-item label=" " prop="username">
<el-input
v-model="ruleForm.username"
placeholder="请输入用户名"
></el-input>
</el-form-item>
<el-form-item label=" " prop="password">
<el-input
v-model="ruleForm.password"
type="password"
placeholder="请输入密码"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')"
>登 录</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
let sha1 = require('js-sha1');
import types from '../store/types.js'
export default {
name: 'Login',
data() {
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入密码'));
} else {
callback();
}
};
var validateUser = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入用户名'));
} else {
callback();
}
};
return {
username: '',
password: '',
innerHeight:0,
ruleForm:{
username:'',
password:'',
},
rules: {
password: [
{ validator: validatePass, trigger: 'change' }
],
username: [
{ validator: validateUser, trigger: 'change' }
]
}
}
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.login();
} else {
return false;
}
});
},
initHeight(){
this.innerHeight=window.innerHeight;
},
login(){
this.$api.login.login({
"username":this.ruleForm.username,
"password":this.ruleForm.password,
"user_type": "user"
}).then(res => {
if(!res.ecode){
this.$store.commit(types.ATOKEN,res.atoken);
// localStorage.setItem('rtoken',m.data.rtoken)
sessionStorage.setItem('user_unid',res.user_unid)
//本系统可以直接用本地缓存做
// localStorage.setItem('user_name',this.username)
// 处理登录用户权限菜单显示问题;
//算法配置列表
this.algoList();
//存储配置列表
this.storeConfList();
//code列表
this.getCatesList();
this.getCodeList();
this.getCustomCode();
this.getEventList();
this.getDev();
this.getMenu(res.user_unid);
}
let sha1 = require("js-sha1");
import types from "../store/types.js";
export default {
name: "Login",
data() {
var validatePass = (rule, value, callback) => {
if (value === "") {
callback(new Error("请输入密码"));
} else {
callback();
}
};
var validateUser = (rule, value, callback) => {
if (value === "") {
callback(new Error("请输入用户名"));
} else {
callback();
}
};
return {
username: "",
password: "",
innerHeight: 0,
ruleForm: {
username: "",
password: ""
},
rules: {
password: [{ validator: validatePass, trigger: "change" }],
username: [{ validator: validateUser, trigger: "change" }]
}
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
this.login();
} else {
return false;
}
});
},
initHeight() {
this.innerHeight = window.innerHeight;
},
login() {
this.$api.login
.login({
username: this.ruleForm.username,
password: this.ruleForm.password,
user_type: "user"
})
.then(res => {
if (!res.ecode) {
this.$store.commit(types.ATOKEN, res.atoken);
// localStorage.setItem('rtoken',m.data.rtoken)
sessionStorage.setItem("user_unid", res.user_unid);
//本系统可以直接用本地缓存做
localStorage.setItem("atoken", res.atoken);
// 处理登录用户权限菜单显示问题;
//算法配置列表
this.algoList();
//存储配置列表
this.storeConfList();
//code列表
this.getCatesList();
this.getCodeList();
this.getCustomCode();
this.getEventList();
this.getDev();
this.getMenu(res.user_unid);
}
}).catch((err) => {
})
},
......@@ -244,105 +255,105 @@ import types from '../store/types.js'
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
#particles{
position: absolute;
width: 100%;
height: 100%;
background-color: #b61924;
background-repeat: no-repeat;
background-size: cover;
background-position: 50% 50%;
#particles {
position: absolute;
width: 100%;
height: 100%;
background-color: #b61924;
background-repeat: no-repeat;
background-size: cover;
background-position: 50% 50%;
}
.loginTitle {
height: 60px;
background: #dcdcdc;
position: relative;
}
.loginTitle > div {
position: absolute;
text-align: left;
/*left: 5%;*/
height: 60px;
/*margin-top: 15px;*/
/*background: url(../assets/daer.jpg) no-repeat;*/
padding-left: 50px;
background-size: 100% 60px;
width: 150px;
}
.loginTitle > div span:first-child {
position: absolute;
left: 50px;
top: -5px;
font-weight: bold;
font-size: 18px;
font-family: "隶书";
}
.loginTitle > div span:last-child {
font-weight: 500;
font-size: 12px;
font-family: Aparajita;
position: absolute;
left: 50px;
top: 16px;
}
.loginTitle{
height:60px;
background: #dcdcdc;
position: relative;
}
.loginTitle>div{
position: absolute;
text-align: left;
/*left: 5%;*/
height: 60px;
/*margin-top: 15px;*/
/*background: url(../assets/daer.jpg) no-repeat;*/
padding-left: 50px;
background-size: 100% 60px;
width:150px
}
.loginTitle>div span:first-child{
position: absolute;
left:50px;
top: -5px;
font-weight: bold;
font-size: 18px;
font-family: "隶书";
}
.loginTitle>div span:last-child{
font-weight: 500;
font-size: 12px;
font-family: Aparajita;
position: absolute;
left:50px;
top: 16px;
}
h1 {
color: #000000;
height: 40px;
line-height: 40px;
padding: 60px 0px;
font-size:44px;
}
h1 {
color: #000000;
height: 40px;
line-height: 40px;
padding: 60px 0px;
font-size: 44px;
}
#login {
text-align: center;
position: relative;
background: url(../assets/img/login/background.png) no-repeat 0 0;
background-size:cover
}
#login {
text-align: center;
position: relative;
background: url(../assets/img/login/background.png) no-repeat 0 0;
background-size: cover;
}
#login input:focus {
outline: none;
box-shadow: none;
}
.box{
width: 25%;
position: absolute;
left: 52%;
top: 20%;
#login input:focus {
outline: none;
box-shadow: none;
}
.box {
width: 25%;
position: absolute;
left: 52%;
top: 20%;
}
button {
width: 100%;
margin-top: 40px;
border-radius: 30px;
background: #0069ff;
height: 50px;
font-size: 20px;
}
button {
width: 100%;
margin-top: 40px;
border-radius: 30px;
background: #0069FF;
height: 50px;
font-size: 20px;
}
button:hover {
color: #D6D9DF
}
button:hover {
color: #d6d9df;
}
p {
margin: 0;
}
p {
margin: 0;
}
p:nth-child(1) {
padding-top: 15px
}
@media screen and (max-width: 1366px) {
h1 {
height: 40px;
line-height: 40px;
padding: 60px 0px;
font-size:34px;
}
.box{
width: 25%;
position: absolute;
left: 57%;
top: 20%;
}
}
p:nth-child(1) {
padding-top: 15px;
}
@media screen and (max-width: 1366px) {
h1 {
height: 40px;
line-height: 40px;
padding: 60px 0px;
font-size: 34px;
}
.box {
width: 25%;
position: absolute;
left: 57%;
top: 20%;
}
}
</style>
<template>
<div class="">
<el-header class="headers">
<span class="title">实事分析展示</span>
</el-header>
<el-container style="min-height:calc(100vh - 64px);" class="showbox">
<el-main style="padding: 12px;overflow:hidden">
<div style="margin-bottom: 12px;">
<el-row :gutter="20">
<el-col :span="15">
<div class="videoCon">
<!-- 加入视频 -->
<videoplay ref="videoplay" :playurl="playurl"></videoplay>
</div>
</el-col>
<el-col :span="9">
<div class="imgCon">
<div class="imgDiv">
<!-- 加入img 100% -->
<div v-if="resultData[0]">
<img :src = "resultData[0].pic" class="photos"/>
</div>
</div>
<div style="padding:0 10px 10px 10px">
<div class="textDiv">
<div v-if="resultData[0]">
<p>抓拍时间:{{resultData[0].shoot_dt}}</p>
<p>抓拍地点:{{resultData[0].location_name}}</p>
<p>车牌号码:{{resultData[0].vehicle_plate_text}}</p>
<p>车辆类型:{{resultData[0].vehicle_body_type_text}}</p>
<p>车身颜色:{{resultData[0].vehicle_body_color_text}}</p>
<p>违法类型:{{resultData[0].illegal_text}}</p>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="clear: both;"></div>
</div>
<el-row class="bottomDiv" :gutter="10">
<!-- 循环生成lDiv -->
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[1]">
<img :src = "resultData[1].pic" class="photos"/>
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[1]">
<p>抓拍时间:{{resultData[1].shoot_dt}}</p>
<p>抓拍地点:{{resultData[1].location_name}}</p>
<p>车牌号码:{{resultData[1].vehicle_plate_text}}</p>
<p>车辆类型:{{resultData[1].vehicle_body_type_text}}</p>
<p>车身颜色:{{resultData[1].vehicle_body_color_text}}</p>
<p>违法类型:{{resultData[1].illegal_text}}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[2]">
<img :src = "resultData[2].pic" class="photos"/>
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[2]">
<p>抓拍时间:{{resultData[2].shoot_dt}}</p>
<p>抓拍地点:{{resultData[2].location_name}}</p>
<p>车牌号码:{{resultData[2].vehicle_plate_text}}</p>
<p>车辆类型:{{resultData[2].vehicle_body_type_text}}</p>
<p>车身颜色:{{resultData[2].vehicle_body_color_text}}</p>
<p>违法类型:{{resultData[2].illegal_text}}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[3]">
<img :src = "resultData[3].pic" class="photos"/>
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[3]">
<p>抓拍时间:{{resultData[3].shoot_dt}}</p>
<p>抓拍地点:{{resultData[3].location_name}}</p>
<p>车牌号码:{{resultData[3].vehicle_plate_text}}</p>
<p>车辆类型:{{resultData[3].vehicle_body_type_text}}</p>
<p>车身颜色:{{resultData[3].vehicle_body_color_text}}</p>
<p>违法类型:{{resultData[3].illegal_text}}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<div style="clear: both;"></div>
</el-row>
</el-main>
</el-container>
<div class>
<el-header class="headers">
<span class="title">实事分析展示</span>
</el-header>
<el-container style="min-height:calc(100vh - 64px);" class="showbox">
<el-main style="padding: 12px;overflow:hidden">
<div style="margin-bottom: 12px;">
<el-row :gutter="20">
<el-col :span="15">
<div class="videoCon">
<!-- 加入视频 -->
<videoplay ref="videoplay" :playurl="playurl"></videoplay>
</div>
</el-col>
<el-col :span="9">
<div class="imgCon">
<div class="imgDiv">
<!-- 加入img 100% -->
<div v-if="resultData[0]">
<img :src="resultData[0].pic" class="photos" />
</div>
</div>
<div style="padding:0 10px 10px 10px">
<div class="textDiv">
<div v-if="resultData[0]">
<p>抓拍时间:{{ resultData[0].shoot_dt }}</p>
<p>抓拍地点:{{ resultData[0].location_name }}</p>
<p>车牌号码:{{ resultData[0].vehicle_plate_text }}</p>
<p>
车辆类型:{{ resultData[0].vehicle_body_type_text }}
</p>
<p>
车身颜色:{{ resultData[0].vehicle_body_color_text }}
</p>
<p>违法类型:{{ resultData[0].illegal_text }}</p>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="clear: both;"></div>
</div>
<el-row class="bottomDiv" :gutter="10">
<!-- 循环生成lDiv -->
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[1]">
<img :src="resultData[1].pic" class="photos" />
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[1]">
<p>抓拍时间:{{ resultData[1].shoot_dt }}</p>
<p>抓拍地点:{{ resultData[1].location_name }}</p>
<p>车牌号码:{{ resultData[1].vehicle_plate_text }}</p>
<p>车辆类型:{{ resultData[1].vehicle_body_type_text }}</p>
<p>车身颜色:{{ resultData[1].vehicle_body_color_text }}</p>
<p>违法类型:{{ resultData[1].illegal_text }}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[2]">
<img :src="resultData[2].pic" class="photos" />
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[2]">
<p>抓拍时间:{{ resultData[2].shoot_dt }}</p>
<p>抓拍地点:{{ resultData[2].location_name }}</p>
<p>车牌号码:{{ resultData[2].vehicle_plate_text }}</p>
<p>车辆类型:{{ resultData[2].vehicle_body_type_text }}</p>
<p>车身颜色:{{ resultData[2].vehicle_body_color_text }}</p>
<p>违法类型:{{ resultData[2].illegal_text }}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<el-col :span="8" class="lDiv">
<div class="leftImg">
<!-- 加入img 100% -->
<div v-if="resultData[3]">
<img :src="resultData[3].pic" class="photos" />
</div>
</div>
<div class="rightDiv">
<div v-if="resultData[3]">
<p>抓拍时间:{{ resultData[3].shoot_dt }}</p>
<p>抓拍地点:{{ resultData[3].location_name }}</p>
<p>车牌号码:{{ resultData[3].vehicle_plate_text }}</p>
<p>车辆类型:{{ resultData[3].vehicle_body_type_text }}</p>
<p>车身颜色:{{ resultData[3].vehicle_body_color_text }}</p>
<p>违法类型:{{ resultData[3].illegal_text }}</p>
</div>
</div>
<div style="clear: both;"></div>
</el-col>
<div style="clear: both;"></div>
</el-row>
</el-main>
</el-container>
</div>
</template>
<script>
import videoplay from './public/videoPlay'
import videoplay from "./public/videoPlay";
export default {
name: "home",
data(){
return{
isCollapse: false,
conHeight:0,
playurl:'',
subtaskid:'',
taskid:'',
showws:null,
keepAlive:null,
quitws:false,
resultData:[]
};
data() {
return {
isCollapse: false,
conHeight: 0,
playurl: "",
subtaskid: "",
taskid: "",
showws: null,
keepAlive: null,
quitws: false,
resultData: []
};
},
created() {
let url = location.href;
let params = url.split("?")[1];
this.taskid = this.getQueryVariable("taskid");
this.subtaskid = this.getQueryVariable("subtaskid");
this.playurl = this.getQueryVariable("playurl");
},
created(){
this.taskid = this.$route.params.taskid
this.subtaskid = this.$route.params.subtaskid
this.playurl = this.$route.params.playurl
},
mounted(){
this.$refs.videoplay.videoPlay()
mounted() {
this.$refs.videoplay.videoPlay();
},
components: {
videoplay
videoplay
// HelloWorld
},
methods:{
connectwebsocket(type) {
methods: {
connectwebsocket(type) {
let that = this;
this.connect_id = new Date().getTime();
this.showws = new WebSocket(
......@@ -151,17 +156,18 @@ export default {
this.connect_id
);
this.showws.onopen = () => {
console.log("ws事件推送服务连接成功");
let send_mesage =
'{"type":"request","connect_id": "' +
this.connect_id +
'","subtask_id":"' +
this.subtaskid +
'"}';
this.showws.send(send_mesage);
console.log("ws事件推送服务连接成功");
let send_mesage =
'{"type":"request","connect_id": "' +
this.connect_id +
'","subtask_id":"' +
this.subtaskid +
'"}';
this.showws.send(send_mesage);
};
this.showws.onmessage = evt => {
let data = JSON.parse(evt.data);
// eslint-disable-next-line no-empty
if (data.command) {
} else if (data.type == "response") {
console.log("请求任务推送成功");
......@@ -169,15 +175,18 @@ export default {
if (data.event_cate != "flow") {
try {
data.picsEmpty = data.pics.length == 0 ? true : false;
data.pic =
data.pics[0].src_url || "data:image/jpeg;base64," + data.pics[0].pic_base64;
data.bigpic = data.pics[0].src_url || "data:image/jpeg;base64," + data.pics[0].pic_base64;
that.$buildCode.init(data);
if(that.resultData.length > 4) {
that.resultData.pop(data)
} else {
that.resultData.unshift(data)
}
data.pic =
data.pics[0].src_url ||
"data:image/jpeg;base64," + data.pics[0].pic_base64;
data.bigpic =
data.pics[0].src_url ||
"data:image/jpeg;base64," + data.pics[0].pic_base64;
that.$buildCode.init(data);
if (that.resultData.length > 4) {
that.resultData.pop(data);
} else {
that.resultData.unshift(data);
}
} catch (err) {
console.log(err);
}
......@@ -205,33 +214,44 @@ export default {
} catch (err) {
console.log(err);
}
},
getQueryVariable(variable) {
var query = window.location.href.split("?")[1];
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
},
beforeMount() {
},
beforeMount() {
this.connectwebsocket();
//监听成功
this.showws.onopen = ()=> {
let send_mesage =
'{"type":"request","connect_id": "' +
this.connect_id +
'","subtask_id":"' +
this.subtaskid +
'"}';
this.showws.send(send_mesage);
this.showws.onopen = () => {
let send_mesage =
'{"type":"request","connect_id": "' +
this.connect_id +
'","subtask_id":"' +
this.subtaskid +
'"}';
this.showws.send(send_mesage);
console.log("showws事件推送服务连接成功");
};
//监听断开
this.showws.onclose = function() {
if(quitws) return
if (quitws) return;
window.clearInterval(this.keepAlive);
this.connectwebsocket(1);
};
},
beforeDestroy() {
this.showws.close();
this.quitws = true
this.showws.close();
this.quitws = true;
try {
window.clearTimeout(this.keepAlive);
} catch (error) {}
......@@ -239,80 +259,80 @@ export default {
};
</script>
<style scoped="scoped" lang="scss">
.headers{
line-height: 60px;
}
.title{
font-size:24px;
font-family:MicrosoftYaHeiUI;
color:rgba(255,255,255,1);
-webkit-background-clip:text;
}
.videoCon{
background: #FFFFFF;
width:100%;
height:70vh;
}
.imgCon{
height: 70vh;
background: #FFFFFF;
}
.imgDiv{
padding:0 10px 0 10px;
height:40vh;
}
.imgDiv>div{
height: 100%;
background: #d8d8d8;
}
.lDiv{
float: left;
}
.lDiv:nth-last-of-type(2){
margin: 0;
}
.rightDiv{
width:10.5vw;
height:20vh;
border:1px solid rgba(229,229,229,1);
border-left: none;
color: #555555;
font-size: 12px;
float: left;
}
.rightDiv p{
margin: 10px 0;
margin-left: 10px;
}
.textDiv{
height:29vh;
border:1px solid rgba(229,229,229,1);
color: #555555;
font-size:22px;
}
.textDiv p{
margin: 14px 0;
margin-left: 37px;
}
.bottomDiv{
padding: 7px;
background: #FFFFFF;
display: flex;
flex-flow: row nowrap;
}
.leftImg{
width: 21vw;
height: 20.2vh;
background: #d8d8d8;
overflow: hidden;
float: left;
}
.leftImg>div{
height: 100%;
width: 100%;
}
.photos{
width: 100%;
height: 100%;
}
</style>
\ No newline at end of file
.headers {
line-height: 60px;
}
.title {
font-size: 24px;
font-family: MicrosoftYaHeiUI;
color: rgba(255, 255, 255, 1);
-webkit-background-clip: text;
}
.videoCon {
background: #ffffff;
width: 100%;
height: 70vh;
}
.imgCon {
height: 70vh;
background: #ffffff;
}
.imgDiv {
padding: 0 10px 0 10px;
height: 40vh;
}
.imgDiv > div {
height: 100%;
background: #d8d8d8;
}
.lDiv {
float: left;
}
.lDiv:nth-last-of-type(2) {
margin: 0;
}
.rightDiv {
width: 10.5vw;
height: 20vh;
border: 1px solid rgba(229, 229, 229, 1);
border-left: none;
color: #555555;
font-size: 12px;
float: left;
}
.rightDiv p {
margin: 10px 0;
margin-left: 10px;
}
.textDiv {
height: 29vh;
border: 1px solid rgba(229, 229, 229, 1);
color: #555555;
font-size: 22px;
}
.textDiv p {
margin: 14px 0;
margin-left: 37px;
}
.bottomDiv {
padding: 7px;
background: #ffffff;
display: flex;
flex-flow: row nowrap;
}
.leftImg {
width: 21vw;
height: 20.2vh;
background: #d8d8d8;
overflow: hidden;
float: left;
}
.leftImg > div {
height: 100%;
width: 100%;
}
.photos {
width: 100%;
height: 100%;
}
</style>
......@@ -62,7 +62,7 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -116,7 +116,7 @@
<div class="info-content">
<div class="con-item">
<span class="con-label">平台类型:</span>
<span class="con-text">{{}}</span>
<span class="con-text"></span>
</div>
<div class="con-item">
<span class="con-label">设备类型:</span>
......@@ -358,7 +358,7 @@ export default {
display: none;
}
.right-box {
width: 10vw;
width: 20vw;
height: 100%;
border-left: 10px solid #f5f7f9;
}
......
......@@ -38,11 +38,11 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="编辑角色" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="editUser(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon" @click="editUser(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除角色" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -126,7 +126,7 @@
systemTime:'',
syncTime:false,
computerTime:this.$moment().format("YYYY-MM-DD HH:mm:ss"),
dev_unid:sessionStorage.getItem('dev_unid'),
dev_unid:localStorage.getItem('dev_unid'),
device_id:sessionStorage.getItem('device_id'),
serverAdr:''
}
......
......@@ -117,7 +117,7 @@
selectFilename:'',
timeArr:[],
file:null,
dev_unid:sessionStorage.getItem('dev_unid'),
dev_unid:localStorage.getItem('dev_unid'),
device_id:sessionStorage.getItem('device_id'),
}
},
......
......@@ -43,15 +43,15 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="编辑用户" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="editUser(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon" @click="editUser(scope.$index, scope.row)"></span>
</el-tooltip>
<!-- <span class="tableSpanBorder"></span>
<el-tooltip content="重置密码" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon2" @click="reset(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon2" @click="reset(scope.$index, scope.row)"></span>
</el-tooltip> -->
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -83,9 +83,9 @@ export default {
},
beforeDestroy: function () {
if (this.videoplayer.techName_ == "Flash" && this.videoplayer.pause) {
this.videoplayer.pause();
}
// if (this.videoplayer.techName_ == "Flash" && this.videoplayer.pause) {
// this.videoplayer.pause();
// }
}
};
......
<template>
<div class="contentBox">
<div class="content">
<div>
<span class="selectBox">
<el-select
v-model="curCateUnid"
placeholder="请选择"
@change="cateChange"
:popper-append-to-body="false"
>
<el-option
v-for="item in catesData"
:key="item"
:value="item.cate_unid"
:label="item.name"
></el-option>
</el-select>
</span>
<div class="headerbox">
<span class="addbox">
<el-button type="primary" @click="addcode">添加code</el-button>
<el-button type="primary" @click="addAuthor">添加授权</el-button>
</span>
</div>
<div class="mt10">
......@@ -35,34 +20,25 @@
label="#"
width="40"
></el-table-column>
<el-table-column align="center" prop="code_unid" label="code_unid">
<el-table-column align="center" prop="code_unid" label="模板名称">
</el-table-column>
<el-table-column prop="code" align="center" label="code">
<el-table-column prop="code" align="center" label="授权路数">
</el-table-column>
<el-table-column align="center" prop="name" label="名称">
<el-table-column align="center" prop="name" label="已使用路数">
</el-table-column>
<el-table-column align="center" prop="name" label="备注">
</el-table-column>
<el-table-column align="center" prop="operation" label="操作">
<template slot-scope="scope">
<el-tooltip
content="编辑"
content="详情"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<span
class="iconfont icon-xiugai editIcon"
@click="editCode(scope.$index, scope.row)"
></span>
</el-tooltip>
<el-tooltip
content="删除"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<span
class="iconfont icon-detail delIcon del-btn"
@click="deleteCode(scope.$index, scope.row)"
class="iconfont el-icon-info"
@click="showDetail(scope.$index, scope.row)"
></span>
</el-tooltip>
</template>
......@@ -86,50 +62,30 @@
</div>
</div>
</div>
<el-dialog title="设置CODE" :visible.sync="detailVisible" width="400px">
<el-form
ref="trfficform"
:model="codeData"
label-position="left"
label-width="80px"
<el-dialog title="上传授权文件" :visible.sync="detailVisible" width="400px">
<el-upload
class="upload-demo"
ref="upload"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false"
>
<el-form-item
label="类型"
prop="catename"
:rules="[
{ required: true, message: '类型不能为空!', trigger: 'blur' }
]"
>
<el-input v-model="codeData.catename" disabled></el-input>
</el-form-item>
<el-form-item
label="CODE"
prop="code"
:rules="[
{ required: true, message: 'code不能为空!', trigger: 'blur' }
]"
<el-button slot="trigger" size="small" type="primary"
>选取文件</el-button
>
<el-input v-model="codeData.code"></el-input>
</el-form-item>
<el-form-item
label="名称"
prop="name"
:rules="[
{ required: true, message: '名称不能为空!', trigger: 'blur' }
]"
<el-button
style="margin-left: 10px;"
size="small"
type="success"
@click="submitUpload"
>上传到服务器</el-button
>
<el-input v-model="codeData.name"></el-input>
</el-form-item>
<el-form-item
label="备注"
prop="note"
:rules="[
{ required: true, message: '备注名称不能为空!', trigger: 'blur' }
]"
>
<el-input v-model="codeData.name"></el-input>
</el-form-item>
</el-form>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件,且不超过500kb
</div>
</el-upload>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="detailVisible = false">取 消</el-button>
<el-button size="small" type="primary" @click="saveCode"
......@@ -137,9 +93,13 @@
>
</span>
</el-dialog>
<div>
<authordetail ref="detail"></authordetail>
</div>
</div>
</template>
<script>
import authordetail from "./authorDetail";
export default {
data() {
return {
......@@ -156,88 +116,28 @@ export default {
codeData: {}
};
},
components: {},
components: {
authordetail
},
created() {
this.getCates();
},
methods: {
cateChange(cateunid) {
let offset = (this.page - 1) * this.pageSize;
let obj = {
limit: this.pageSize,
offset: offset
};
this.$api.codes
.codes(obj, cateunid)
.then(res => {
this.tableData = res.list_data;
})
.catch(err => {});
},
addcode() {
this.codeStatus = 0;
this.detailVisible = true;
this.codeData.catename = this.getCateName(this.curCateUnid);
},
editCode(index, row) {
this.codeStatus = 1;
this.detailVisible = true;
this.codeData = row;
this.codeData.catename = this.getCateName(this.curCateUnid);
},
getCateName(cateunid) {
let name = "";
this.catesData.forEach(ele => {
if (ele.cate_unid === cateunid) {
name = ele.name;
}
});
return name;
},
getCates() {
this.$api.codes.cates().then(res => {
this.catesData = res.list_data;
});
submitUpload() {
this.$refs.upload.submit();
},
saveCode() {
this.$refs["trfficform"].validate(valid => {
if (valid) {
if (this.editStatus === 0) {
this.saveAddCode();
}
if (this.editStatus === 1) {
this.saveEditCode();
}
} else {
console.log("error submit!!");
return false;
}
});
handleRemove(file, fileList) {
console.log(file, fileList);
},
saveAddCode() {
this.$api.codes
.addTrafficCode(this.codeData, this.curCateUnid)
.then(res => {
console.log(res);
});
handlePreview(file) {
console.log(file);
},
saveEditCode() {
this.$api.codes
.editTrafficCode(
this.codeData,
this.curCateUnid,
this.codeData.code_unid
)
.then(res => {
console.log(res);
});
showDetail(index, row) {
this.$refs.detail.initahthor(row);
},
deleteCode(index, row) {
this.$api.codes
.editTrafficCode(row, this.curCateUnid, row.code_unid)
.then(res => {
console.log(res);
});
addAuthor() {
this.codeStatus = 0;
this.detailVisible = true;
},
handleSizeChange(val) {
this.pageSize = val;
......@@ -249,16 +149,11 @@ export default {
};
</script>
<style lang="scss" scoped>
.addbox {
float: right;
margin-right: 10px;
.headerbox {
overflow: hidden;
}
.code-btn {
margin-bottom: 10px;
.addbox {
float: right;
margin-right: 10px;
}
.del-btn {
padding-left: 20px;
}
</style>
<template>
<div>
<el-dialog title="业务功能" :visible.sync="detailVisible" width="753px">
<div class="authordetail-box">
<div class="authitembox">
<div class="itemheader">识别</div>
<div></div>
</div>
<div class="authitembox">
<div class="itemheader">违法</div>
<div></div>
</div>
<div class="authitembox">
<div class="itemheader">事件</div>
<div></div>
</div>
<div class="authitembox">
<div class="itemheader">流量</div>
<div></div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="detailVisible = false">取 消</el-button>
<el-button size="small" type="primary" @click="detailVisible = false"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
detailVisible: true,
detailData: {}
};
},
methods: {
initahthor(data) {
this.detailVisible = true;
this.detailData = data;
}
}
};
</script>
<style lang="scss" scoped>
.authordetail-box {
display: flex;
}
.authitembox {
width: 160px;
height: 240px;
margin-left: 15px;
border: 1px solid #E9E9E9;
border-radius: 4px;
}
.authitembox:first-child {
margin-left: 0;
}
.authitembox .itemheader {
height: 40px;
line-height: 40px;
text-align: center;
background:rgba(245,245,245,1);
border-bottom:1px solid rgba(233,233,233,1);
color: #222;
font-size: 16px;
font-weight: 600;
}
</style>
......@@ -56,7 +56,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-xiugai editIcon"
class="icon-fanxing-xiugai editIcon"
@click="editCode(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -67,7 +67,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-detail delIcon del-btn"
class="el-icon-delete delIcon del-btn"
@click="deleteCode(scope.$index, scope.row)"
></span>
</el-tooltip>
......
......@@ -50,7 +50,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-xiugai editIcon"
class="icon-fanxing-xiugai editIcon"
@click="editCode(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -61,7 +61,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-detail delIcon del-btn"
class="el-icon-delete delIcon del-btn"
@click="deleteCode(scope.$index, scope.row)"
></span>
</el-tooltip>
......
<template>
<div class="contentBox">
<div class="content">
<div style="padding: 20px 15px 20px 23px;">
<span class="selectBox">
<el-select v-model="selectDevs" placeholder="请选择" @change="devsChange" :popper-append-to-body=false>
<el-option v-for="item in devsList" :value="item.device_id" :label='item.device_name'></el-option>
</el-select>
</span>
<div class="resourceDiv">
<span>图片可用分析资源:{{resource.picture_free}}</span>
<span>图片在用分析资源:{{resource.picture_busy}}</span>
<span>视频可用分析资源:{{resource.video_free}}</span>
<span>视频在用分析资源:{{resource.video_busy}}</span>
</div>
</div>
<div style="padding: 0 15px 20px 23px;">
<el-table
height="574"
:data="tableData"
stripe
border
style="width: 100%">
<el-table-column
align="center"
prop="device_name"
label="设备名称">
</el-table-column>
<el-table-column
prop="in_ip"
align="center"
label="ip地址">
</el-table-column>
<el-table-column
align="center"
prop="online"
:formatter="statusFormatter"
label="在线状态">
</el-table-column>
<el-table-column
align="center"
prop="video_total"
label="分析资源数">
</el-table-column>
<el-table-column
align="center"
prop="video_free"
label="可用分析资源数">
</el-table-column>
<el-table-column
align="center"
prop="working_status"
label="工作状态">
</el-table-column>
<el-table-column
align="center"
width="300"
prop="operation"
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detail(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 28px;">
<el-pagination
style="float: right;"
background
prev-text="上一页"
next-text="下一页"
:page-sizes="[30, 50, 100, 200]"
layout="prev, pager, next,sizes"
:current-page="page"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="total">
</el-pagination>
<div style="clear: both;"></div>
</div>
</div>
</div>
<el-dialog title="详情" :visible.sync="detailVisible">
<el-table height="574"
:data="detailData"
stripe
border>
<li>{{detail.online == 1 ? (detail.status.hardWareInfo.temperature[0]?detail.status.hardWareInfo.temperature[0].curTemperature : ''):''}}</li>
<el-table-column prop="device_name" align="center" label="核心板名称"></el-table-column>
<el-table-column prop="in_ip" align="center" label="核心板IP"></el-table-column>
<el-table-column
align="center"
prop="online"
:formatter="statusFormatter"
label="在线状态">
</el-table-column>
<el-table-column prop="cpuUse" align="center" label="CPU使用率" :formatter="cpuUseFormatter"></el-table-column>
<el-table-column prop="cpuTem" align="center" label="CPU温度(℃)" :formatter="cpuTemFormatter"></el-table-column>
</el-table>
</el-dialog>
<div class="content">
<div style="padding: 20px 15px 20px 23px;">
<span class="selectBox">
<el-select
v-model="selectDevs"
placeholder="请选择"
@change="devsChange"
:popper-append-to-body="false"
>
<el-option
v-for="(item, index) in devsList"
:key="index"
:value="item.device_id"
:label="item.device_name"
></el-option>
</el-select>
</span>
<div class="resourceDiv">
<span>图片可用分析资源:{{ resource.picture_free }}</span>
<span>图片在用分析资源:{{ resource.picture_busy }}</span>
<span>视频可用分析资源:{{ resource.video_free }}</span>
<span>视频在用分析资源:{{ resource.video_busy }}</span>
</div>
</div>
<div style="padding: 0 15px 20px 23px;">
<el-table
height="574"
:data="tableData"
stripe
border
style="width: 100%"
>
<el-table-column align="center" prop="device_name" label="设备名称">
</el-table-column>
<el-table-column prop="in_ip" align="center" label="ip地址">
</el-table-column>
<el-table-column
align="center"
prop="online"
:formatter="statusFormatter"
label="在线状态"
>
</el-table-column>
<el-table-column align="center" prop="video_total" label="分析资源数">
</el-table-column>
<el-table-column
align="center"
prop="video_free"
label="可用分析资源数"
>
</el-table-column>
<el-table-column
align="center"
prop="working_status"
label="工作状态"
>
</el-table-column>
<el-table-column
align="center"
width="300"
prop="operation"
label="操作"
>
<template slot-scope="scope">
<el-tooltip
content="详情"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<span
class="el-icon-info editIcon"
@click="detail(scope.$index, scope.row)"
></span>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 28px;">
<el-pagination
style="float: right;"
background
prev-text="上一页"
next-text="下一页"
:page-sizes="[30, 50, 100, 200]"
layout="prev, pager, next,sizes"
:current-page="page"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="total"
>
</el-pagination>
<div style="clear: both;"></div>
</div>
</div>
</div>
<el-dialog title="详情" :visible.sync="detailVisible">
<el-table height="574" :data="detailData" stripe border>
<li>
{{
detail.online == 1
? detail.status.hardWareInfo.temperature[0]
? detail.status.hardWareInfo.temperature[0].curTemperature
: ""
: ""
}}
</li>
<el-table-column
prop="device_name"
align="center"
label="核心板名称"
></el-table-column>
<el-table-column
prop="in_ip"
align="center"
label="核心板IP"
></el-table-column>
<el-table-column
align="center"
prop="online"
:formatter="statusFormatter"
label="在线状态"
>
</el-table-column>
<el-table-column
prop="cpuUse"
align="center"
label="CPU使用率"
:formatter="cpuUseFormatter"
></el-table-column>
<el-table-column
prop="cpuTem"
align="center"
label="CPU温度(℃)"
:formatter="cpuTemFormatter"
></el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
export default {
data(){
return{
detailData:[],
dev_unid: sessionStorage.getItem('dev_unid'),
resource:{
picture_busy: 0,
picture_free: 0,
video_busy: 0,
video_free: 0,
},
total:0,
page:1,
pageSize:30,
tableData: [],
devsList:[],
selectDevs:'',
detailVisible:false
}
},
components:{
},
mounted(){
this.getResource();
this.getDevsName();
},
methods:{
devsChange(){
this.getTableList();
},
getResource(){
this.$api.resource.getResource({},this.dev_unid).then(res=>{
this.resource=res.works;
})
},
getDevsName(){
this.$api.resource.getDevsName({
is_leaf: 0
},this.dev_unid).then(res=>{
this.devsList=res.list_data;
if(res.list_data.length>0){
this.selectDevs=res.list_data[0].device_id;
}
this.getTableList();
})
},
statusFormatter(row, column, cellValue, index){
if(cellValue == 1){
return '在线'
}else if(cellValue == 0){
return '离线'
}else {
return '未知'
}
},
cpuUseFormatter(row, column, cellValue, index){
if(row.online == 1){
return parseInt(row.status.hardWareInfo.usedResourceInfo.cpuRatio*60)+'%'
}else{
return ''
}
},
cpuTemFormatter(row, column, cellValue, index){
if(row.online == 1){
if(row.status.hardWareInfo.temperature[0]){
return row.status.hardWareInfo.temperature[0].curTemperature
}else{
return ''
}
}else{
return ''
}
},
handleSizeChange(val) {
this.pageSize=val;
this.getTableList();
},
handleCurrentChange(val) {
this.page=val;
this.getTableList();
},
getTableList(){
this.tableData=[];
let offset = (this.page - 1) * this.pageSize;
this.$api.resource.getDevsName({
limit: this.pageSize,
offset: offset,
parent_id: this.selectDevs,
},this.dev_unid).then((res)=>{
this.total=res.total_num;
if(res.list_data==null){
this.tableData=[]
}else{
this.tableData=res.list_data;
}
}).catch((error)=>{
})
},
detail(index,row){
this.detailData=[];
this.detailVisible=true;
this.$api.resource.getDevsName({
parent_id:row.device_id,
offset: 0,
limit: 10000,
},this.dev_unid).then(res=>{
this.detailData=res.list_data;
this.detailData.unshift(row)
})
},
},
}
export default {
data() {
return {
detailData: [],
dev_unid: sessionStorage.getItem("dev_unid"),
resource: {
picture_busy: 0,
picture_free: 0,
video_busy: 0,
video_free: 0
},
total: 0,
page: 1,
pageSize: 30,
tableData: [],
devsList: [],
selectDevs: "",
detailVisible: false
};
},
components: {},
mounted() {
this.getResource();
this.getDevsName();
},
methods: {
devsChange() {
this.getTableList();
},
getResource() {
this.$api.resource.getResource({}, this.dev_unid).then(res => {
this.resource = res.works;
});
},
getDevsName() {
this.$api.resource
.getDevsName(
{
is_leaf: 0
},
this.dev_unid
)
.then(res => {
this.devsList = res.list_data;
if (res.list_data.length > 0) {
this.selectDevs = res.list_data[0].device_id;
}
this.getTableList();
});
},
statusFormatter(row, column, cellValue, index) {
if (cellValue == 1) {
return "在线";
} else if (cellValue == 0) {
return "离线";
} else {
return "未知";
}
},
cpuUseFormatter(row, column, cellValue, index) {
if (row.online == 1) {
return (
parseInt(row.status.hardWareInfo.usedResourceInfo.cpuRatio * 60) + "%"
);
} else {
return "";
}
},
cpuTemFormatter(row, column, cellValue, index) {
if (row.online == 1) {
if (row.status.hardWareInfo.temperature[0]) {
return row.status.hardWareInfo.temperature[0].curTemperature;
} else {
return "";
}
} else {
return "";
}
},
handleSizeChange(val) {
this.pageSize = val;
this.getTableList();
},
handleCurrentChange(val) {
this.page = val;
this.getTableList();
},
getTableList() {
this.tableData = [];
let offset = (this.page - 1) * this.pageSize;
this.$api.resource
.getDevsName(
{
limit: this.pageSize,
offset: offset,
parent_id: this.selectDevs
},
this.dev_unid
)
.then(res => {
this.total = res.total_num;
if (res.list_data == null) {
this.tableData = [];
} else {
this.tableData = res.list_data;
}
})
.catch(error => {});
},
detail(index, row) {
this.detailData = [];
this.detailVisible = true;
this.$api.resource
.getDevsName(
{
parent_id: row.device_id,
offset: 0,
limit: 10000
},
this.dev_unid
)
.then(res => {
this.detailData = res.list_data;
this.detailData.unshift(row);
});
}
}
};
</script>
<style lang="scss" scoped>
.topCon{
background: $white-back-color;
margin-bottom: 12px;
height: 100px;
.left{
display: inline-block;
margin: {
top: 22px;
left: 30px;
};
img{
width:65px ;
height: 55px;
margin-right: 11px;
}
.topText{
font-size:24px;
font-family:MicrosoftYaHeiUI-Bold,MicrosoftYaHeiUI;
font-weight:bold;
margin-bottom: 4px;
}
.bottomText{
font-size:14px;
font-family:MicrosoftYaHeiUI;
}
}
.right{
float: right;
.topText{
font-size:28px;
font-family:MicrosoftYaHeiUI-Bold,MicrosoftYaHeiUI;
font-weight:bold;
}
.bottomText{
position: relative;
top: -1px;
font-size:14px;
font-family:MicrosoftYaHeiUI;
}
}
.textCon{
display: inline-block;
vertical-align: top;
}
.border{
display: inline-block;
height: 40px;
border: {
left: 2px solid $border-color;
};
}
.rightBox{
margin-top: 14px;
display: inline-block;
img{
margin:{
top:15px;
right: 22px;
}
}
}
.rightBox:nth-of-type(1){
img{
width: 34px;
height: 34px;
}
.textCon{
margin-right:114px ;
}
}
.rightBox:nth-of-type(2){
position: relative;
top: 4px;
img{
width: 40px;
height: 40px;
margin-left: 102px;
}
.textCon{
margin-right:101px ;
}
}
.rightBox:nth-of-type(3){
img{
width: 34px;
height: 35px;
margin-left: 104px;
}
.textCon{
margin-right:184px ;
}
}
}
.resourceDiv{
display: inline-block;
margin-left: 10%;
span{
margin-right: 5%;
}
}
.content{
background: #FFFFFF;
}
.inputBox{
margin-right: 20px;
}
.selectBox{
margin-right: 20px;
}
.editIcon{
cursor: pointer;
color:#0069ff;
font-size:16px;
}
.editIcon2{
cursor: pointer;
color:#87d14b;
font-size:16px;
}
.playIcon{
cursor: pointer;
color:#34b3a2;
font-size:16px;
}
.pauseIcon{
cursor: pointer;
color:#ffc62e;
font-size:14px;
}
.delIcon{
cursor: pointer;
color:#f2365a;
font-size:16px;
}
</style>
\ No newline at end of file
.topCon {
background: $white-back-color;
margin-bottom: 12px;
height: 100px;
.left {
display: inline-block;
margin: {
top: 22px;
left: 30px;
}
img {
width: 65px;
height: 55px;
margin-right: 11px;
}
.topText {
font-size: 24px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold;
margin-bottom: 4px;
}
.bottomText {
font-size: 14px;
font-family: MicrosoftYaHeiUI;
}
}
.right {
float: right;
.topText {
font-size: 28px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold;
}
.bottomText {
position: relative;
top: -1px;
font-size: 14px;
font-family: MicrosoftYaHeiUI;
}
}
.textCon {
display: inline-block;
vertical-align: top;
}
.border {
display: inline-block;
height: 40px;
border: {
left: 2px solid $border-color;
}
}
.rightBox {
margin-top: 14px;
display: inline-block;
img {
margin: {
top: 15px;
right: 22px;
}
}
}
.rightBox:nth-of-type(1) {
img {
width: 34px;
height: 34px;
}
.textCon {
margin-right: 114px;
}
}
.rightBox:nth-of-type(2) {
position: relative;
top: 4px;
img {
width: 40px;
height: 40px;
margin-left: 102px;
}
.textCon {
margin-right: 101px;
}
}
.rightBox:nth-of-type(3) {
img {
width: 34px;
height: 35px;
margin-left: 104px;
}
.textCon {
margin-right: 184px;
}
}
}
.resourceDiv {
display: inline-block;
margin-left: 10%;
span {
margin-right: 5%;
}
}
.content {
background: #ffffff;
}
.inputBox {
margin-right: 20px;
}
.selectBox {
margin-right: 20px;
}
.editIcon {
cursor: pointer;
color: #0069ff;
font-size: 16px;
}
.editIcon2 {
cursor: pointer;
color: #87d14b;
font-size: 16px;
}
.playIcon {
cursor: pointer;
color: #34b3a2;
font-size: 16px;
}
.pauseIcon {
cursor: pointer;
color: #ffc62e;
font-size: 14px;
}
.delIcon {
cursor: pointer;
color: #f2365a;
font-size: 16px;
}
</style>
......@@ -49,7 +49,7 @@
],
},
user_unid:sessionStorage.getItem('user_unid'),
dev_unid:sessionStorage.getItem('dev_unid'),
dev_unid:localStorage.getItem('dev_unid'),
isGetted:false,
sipSetting:{
sip_username: '', // string
......
......@@ -44,11 +44,11 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detail(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detail(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......@@ -127,7 +127,7 @@
isLeaf: 'leaf'
},
detailData:[],
dev_unid: sessionStorage.getItem('dev_unid'),
dev_unid: localStorage.getItem('dev_unid'),
resource:{
picture_busy: 0,
picture_free: 0,
......
......@@ -170,7 +170,7 @@
if(this.type == 'add'){
this.$refs['cameraDialog'].validate((valid) => {
if (valid) {
this.$api.resource.addCamera(this.addVideoParam,this.devsId).then(res=>{
this.$api.resource.addCamera(this.addVideoParam,localStorage.getItem('dev_unid')).then(res=>{
if(res.ecode==200){
this.$message({
message: res.enote,
......
......@@ -16,15 +16,15 @@
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-tooltip content="修改" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="editFun(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon" @click="editFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false >
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......@@ -37,11 +37,11 @@
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-tooltip content="修改" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="editVideo(scope.$index, scope.row)"></span>
<span class="icon-fanxing-xiugai editIcon" @click="editVideo(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delVideo(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delVideo(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......@@ -88,7 +88,7 @@
currentIndex: 0,
eventList: JSON.parse(window.localStorage.getItem('安防事件')),
playurl: '',
dev_unid: sessionStorage.getItem('dev_unid'),
dev_unid: localStorage.getItem('dev_unid'),
cameraArr:[],
cameraTree:[],
videoTree:[],
......
......@@ -129,9 +129,10 @@ export default {
this.subtaskdata = vdata;
this.$refs.setting.getTaskParams();
if (vdata.running_status != "Running") {
this.$refs.displayInfo.showInfo(
"该任务没有运行,无法获取分析视频和抓拍信息"
);
this.$message({
message: "该任务没有运行,无法获取分析视频和抓拍信息",
type: "error"
});
return;
}
this.pushSteam(vdata);
......@@ -273,7 +274,6 @@ export default {
.task-lsit{
display inline-block
cursor pointer
padding 10px 0
.icon {
padding-left 10px
}
......@@ -291,6 +291,9 @@ export default {
}
.task-title{
padding-left 10px
width 100%
display inline-block
overflow hidden
}
.tasklist{
padding-left 10px;
......
<template>
<div>
<el-dialog
<el-dialog
title="区域设置"
:visible.sync="dialogVisible"
width="1100px"
:before-close="beforeHideModal"
>
<TraficCanvas :bgUrl='bgUrl' v-if="type=='0' || type=='5'" ref='canvas'></TraficCanvas>
<FlowCanvas :bgUrl='bgUrl' v-if="type=='1'" ref='canvas'></FlowCanvas>
<SafeCanvas :bgUrl='bgUrl' v-if="type=='2'" ref='canvas'></SafeCanvas>
<FaceCanvas :bgUrl='bgUrl' v-if="type=='4'" ref='canvas'></FaceCanvas>
<ComplexCanvas :bgUrl='bgUrl' v-if="type=='7'" ref='canvas'></ComplexCanvas>
>
<TraficCanvas
:bgUrl="bgUrl"
v-if="type == '0' || type == '5' || type == '3'"
ref="canvas"
></TraficCanvas>
<FlowCanvas :bgUrl="bgUrl" v-if="type == '1'" ref="canvas"></FlowCanvas>
<SafeCanvas :bgUrl="bgUrl" v-if="type == '2'" ref="canvas"></SafeCanvas>
<FaceCanvas :bgUrl="bgUrl" v-if="type == '4'" ref="canvas"></FaceCanvas>
<ComplexCanvas
:bgUrl="bgUrl"
v-if="type == '7'"
ref="canvas"
></ComplexCanvas>
<span slot="footer" class="dialog-footer">
<el-button @click="beforeHideModal">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</span>
</el-dialog>
</el-dialog>
</div>
</template>
<script>
import TraficCanvas from "./areaconfig/TraficCanvas";
import FlowCanvas from "./areaconfig/FlowCanvas";
import SafeCanvas from "./areaconfig/SafeCanvas";
import FaceCanvas from "./areaconfig/FaceCanvas";
import ComplexCanvas from "./areaconfig/ComplexCanvas";
import TraficCanvas from "./areaconfig/TraficCanvas";
import FlowCanvas from "./areaconfig/FlowCanvas";
import SafeCanvas from "./areaconfig/SafeCanvas";
import FaceCanvas from "./areaconfig/FaceCanvas";
import ComplexCanvas from "./areaconfig/ComplexCanvas";
export default {
data() {
return {
dialogVisible: false,
isShow: false,
type: '0',
btnIsactive: false,
showClose: false,
roiBody: {},
XMLStr: "",
taskData:'',
bgUrl:''
};
},
return {
dialogVisible: false,
isShow: false,
type: "0",
btnIsactive: false,
showClose: false,
roiBody: {},
XMLStr: "",
taskData: "",
bgUrl: ""
};
},
components: {
TraficCanvas,
SafeCanvas,
......@@ -46,87 +54,92 @@ export default {
ComplexCanvas
},
methods: {
showModal: function(data,mtaskdata) {
var _this = this;
this.$store.commit('setocxstate',0)
this.taskData = mtaskdata;
this.dialogVisible =true;
this.type = data.algo_type;
// this.type = 2;
this.bgUrl = "";
//获取视频截图
this.$api.task.cutpic(mtaskdata.vchan.vdev_unid, mtaskdata.vchan.vchan_refid,mtaskdata.subtask_id).then(data => {
if (!data.ecode) {
this.bgUrl = "data:image/png;base64," + data.pic_base64;
setTimeout(() => {
let img = document.getElementById('pic').childNodes[0]
let canvas = document.createElement("canvas");
canvas.width = 800;
canvas.height = 500;
try {
canvas.getContext("2d").drawImage(img, 0, 0, 800, 500);
_this.bgUrl = canvas.toDataURL("image/webp");
} catch (error) {}
}, 500);
} else {
alert("区域设置截图失败!" + data.enote);
}
})
.catch(err => {
console.log("区域设置截图返回异常:", err.message);
});
setTimeout(() => {
_this.$refs.canvas.stageInit();
if (data.rois) {
_this.$refs.canvas.configInit(
data.rois[0].roi
);
showModal: function(data, mtaskdata) {
var _this = this;
this.$store.commit("setocxstate", 0);
this.taskData = mtaskdata;
this.dialogVisible = true;
this.type = data.algo_type;
// this.type = 2;
this.bgUrl = "";
//获取视频截图
this.$api.task
.cutpic(
mtaskdata.vchan.vdev_unid,
mtaskdata.vchan.vchan_refid,
mtaskdata.subtask_id
)
.then(data => {
if (!data.ecode) {
this.bgUrl = "data:image/png;base64," + data.pic_base64;
setTimeout(() => {
let img = document.getElementById("pic").childNodes[0];
let canvas = document.createElement("canvas");
canvas.width = 800;
canvas.height = 500;
try {
canvas.getContext("2d").drawImage(img, 0, 0, 800, 500);
_this.bgUrl = canvas.toDataURL("image/webp");
} catch (error) {
console.log(error);
}
}, 500);
} else {
alert("区域设置截图失败!" + data.enote);
}
}, 300);
},
beforeHideModal: function() {
this.$store.commit('setocxstate',1)
this.dialogVisible = false;
this.$refs.canvas.clear();
this.$refs.canvas.cindex = 0;
this.bgUrl = "";
},
getType: function() {
if (this.$parent.subTaskInfo) {
this.type = this.$parent.subTaskInfo.task_algo_type;
} else {
this.type = this.$parent.$parent.subTaskInfo.task_algo_type;
}
this.XMLStr = "";
this.btnIsactive = true;
try {
this.EditList(1);
} catch (error) {}
},
save: function() {
if (this.$refs.canvas.roadFlag === false) {
this.$alert("车道线有修改,请检查车道属性是否正确", "提示", {
confirmButtonText: "确定"
});
//xieminghui
// this.$refs.canvas.roadFlag = "confirm";
return;
})
.catch(err => {
console.log("区域设置截图返回异常:", err.message);
});
setTimeout(() => {
_this.$refs.canvas.stageInit();
if (data.rois) {
_this.$refs.canvas.configInit(data.rois[0].roi);
}
let XMLStr = this.$refs.canvas.save();
if (this.type == "1" && (XMLStr === "dir" || XMLStr === "in")) {
this.$message({
type: "warning",
message: "请检查配置是否正确"
});
return;
}
this.$parent.submit(XMLStr, "roi", this.taskData);
this.beforeHideModal();
}, 300);
},
beforeHideModal: function() {
this.$store.commit("setocxstate", 1);
this.dialogVisible = false;
this.$refs.canvas.clear();
this.$refs.canvas.cindex = 0;
this.bgUrl = "";
},
getType: function() {
if (this.$parent.subTaskInfo) {
this.type = this.$parent.subTaskInfo.task_algo_type;
} else {
this.type = this.$parent.$parent.subTaskInfo.task_algo_type;
}
this.XMLStr = "";
this.btnIsactive = true;
try {
this.EditList(1);
} catch (error) {
console.log(error);
}
},
save: function() {
if (this.$refs.canvas.roadFlag === false) {
this.$alert("车道线有修改,请检查车道属性是否正确", "提示", {
confirmButtonText: "确定"
});
//xieminghui
// this.$refs.canvas.roadFlag = "confirm";
return;
}
let XMLStr = this.$refs.canvas.save();
if (this.type == "1" && (XMLStr === "dir" || XMLStr === "in")) {
this.$message({
type: "warning",
message: "请检查配置是否正确"
});
return;
}
this.$parent.submit(XMLStr, "roi", this.taskData);
this.beforeHideModal();
}
}
}
};
</script>
<style lang="stylus" scoped>
</style>
<style lang="stylus" scoped></style>
This diff could not be displayed because it is too large.
<template>
<div class="modal-body">
<div class="modal-lt">
<button
v-for="(item, index) in typeData"
:class="{ curmodal: index == cindex }"
@click="changeLayer(index)"
:key="index"
>
{{ item }}
</button>
</div>
<div class="modal-editbox">
<div class="modal-lb" id="edit_list" v-if="drawState != -1">
<!--<button>加载图片</button>-->
<!--<button>修改保存路径</button>-->
<!--<button>删除区域</button>-->
<el-radio-group
v-model="canvasState"
@change="changeCanvasState"
:disabled="needLine || needRect"
v-show="drawState != 2"
>
<el-radio-button :label="1" class="editbtn">
<i class="el-icon-circle-plus icon"></i>
</el-radio-button>
<el-radio-button :label="0" class="editbtn">
<i class="el-icon-edit-outline"></i>
</el-radio-button>
</el-radio-group>
<div v-if="!canvasState">
<span
@click="delShape"
class="delbtn editbtn"
v-show="drawState != '2'"
>
<i class="el-icon-delete icon"></i>
</span>
<el-select
v-if="drawState == 1 && selectedShape"
v-model="markLineType"
@change="lineChange"
>
<el-option value="0" label="普通车道线"></el-option>
<el-option value="7" label="白实线"></el-option>
<el-option value="1" label="黄实线"></el-option>
<el-option value="2" label="停止线"></el-option>
<el-option value="3" label="左转判定线"></el-option>
<el-option value="4" label="右转判定线"></el-option>
<el-option value="5" label="直行判定线"></el-option>
<el-option value="9" label="左转弯弧度判定线"></el-option>
</el-select>
<span v-if="drawState == 2 && selectedShape">导向类型</span>
<el-select
v-if="drawState == 2 && selectedShape"
v-model="guidingtype"
>
<el-option value="0" label="直行车道"></el-option>
<el-option value="1" label="左转车道"></el-option>
<el-option value="2" label="右转车道"></el-option>
<el-option value="3" label="直左混行"></el-option>
<el-option value="4" label="直右混行"></el-option>
<el-option value="5" label="左直右混行"></el-option>
</el-select>
<span v-if="drawState == 2 && selectedShape">使用类型</span>
<el-select v-if="drawState == 2 && selectedShape" v-model="lanuse">
<el-option value="0" label="普通车道"></el-option>
<el-option value="1" label="公交车道"></el-option>
<el-option value="2" label="应急车道"></el-option>
<el-option value="3" label="非机动车道"></el-option>
<el-option value="4" label="大货车禁行车道"></el-option>
<el-option value="5" label="隔离带"></el-option>
</el-select>
<span v-if="drawState == 2 && selectedShape">方向</span>
<el-select
v-if="drawState == 2 && selectedShape"
v-model="markLineDirect"
>
<el-option value="0" label="去向"></el-option>
<el-option value="1" label="来向"></el-option>
<el-option value="2" label="双向"></el-option>
</el-select>
<span v-if="drawState == 2 && selectedShape">车道号</span>
<el-input
type="number"
v-model="lineNum"
min="1"
v-if="
((drawState == 1 &&
(markLineType == '0' ||
markLineType == '1' ||
markLineType == '7')) ||
drawState == 2) &&
selectedShape
"
></el-input>
<el-select
name=""
v-model="lightInfo.type"
v-if="drawState == 3 && selectedShape"
>
<el-option value="1" label="左转灯"></el-option>
<el-option value="2" label="直行灯"></el-option>
<el-option value="3" label="左直灯"></el-option>
<el-option value="4" label="右转灯"></el-option>
<el-option value="6" label="右直灯"></el-option>
</el-select>
<el-select
v-model="lightInfo.distribute"
v-if="drawState == 3 && selectedShape"
>
<el-option value="1" label="单眼灯"></el-option>
<el-option value="2" label="两眼灯"></el-option>
<el-option value="3" label="三眼灯"></el-option>
</el-select>
<el-select
name=""
v-model="lightInfo.shap"
v-if="drawState == 3 && selectedShape"
>
<el-option value="1" label="圆形"></el-option>
<el-option value="2" label="箭头"></el-option>
<el-option value="3" label="条形"></el-option>
</el-select>
</div>
<div
class=""
v-if="
!canvasState && (drawState == 6 || drawState == 7 || drawState == 8)
"
>
<el-input
v-model="polygon_id"
disabled="disabled"
type="text"
class="w120"
placeholder="区域ID"
></el-input>
<el-input
v-model="polygon_name"
disabled="disabled"
type="text"
class="w120 mt10"
placeholder="区域名称"
></el-input>
</div>
<div v-if="canvasState" sytle="textAlign:center">
<!-- <button>撤销</button> -->
<el-radio-group v-model="polyline" @change="polyChang">
<el-radio
class="radio"
:label="0"
:style="lineRadioStyle"
v-if="drawState == 1"
>直线</el-radio
>
<el-radio
class="radio"
:label="1"
:style="lineRadioStyle"
v-if="drawState == 1"
>折线</el-radio
>
</el-radio-group>
</div>
</div>
</div>
<div class="modal-right">
<div class="pic" id="pic"><img :src="bgUrl" id="bg" /></div>
<div id="traficCanvas"></div>
</div>
<div class="clear"></div>
<div id="line_type" class="littleModel BR active" v-if="smallWindow">
<div>
<p v-if="typeFlag == 1">线属性</p>
<p v-if="typeFlag == 0">车道属性</p>
<p v-if="typeFlag == 2">灯属性</p>
<div class="item">
<span v-if="typeFlag != 3">类型:</span>
<div>
<el-select v-if="typeFlag == 1" v-model="markLineType">
<el-option
value="0"
label="普通车道线"
v-if="!polyline"
></el-option>
<el-option value="7" label="白实线" v-if="!polyline"></el-option>
<el-option value="1" label="黄实线" v-if="!polyline"></el-option>
<el-option value="2" label="停止线" v-if="!polyline"></el-option>
<el-option
value="3"
label="左转判定线"
v-if="!polyline"
></el-option>
<el-option
value="4"
label="右转判定线"
v-if="!polyline"
></el-option>
<el-option
value="5"
label="直行判定线"
v-if="!polyline"
></el-option>
<el-option value="9" label="左转弯弧度判定线"></el-option>
</el-select>
<el-select v-if="typeFlag == 0" v-model="markLineType">
<el-option value="0" label="左转车道"></el-option>
<el-option value="1" label="右转车道"></el-option>
<el-option value="2" label="直行车道"></el-option>
<el-option value="3" label="直左混行"></el-option>
<el-option value="4" label="直右混行"></el-option>
<el-option value="8" label="公交车道"></el-option>
<el-option value="9" label="应急车道"></el-option>
<el-option value="10" label="非机动车道"></el-option>
</el-select>
<el-select name="" v-model="lightInfo.type" v-if="typeFlag == 2">
<el-option value="1" label="左转灯"></el-option>
<el-option value="2" label="直行灯"></el-option>
<el-option value="3" label="左直灯"></el-option>
<el-option value="4" label="右转灯"></el-option>
<el-option value="6" label="右直灯"></el-option>
</el-select>
</div>
</div>
<div
class="item"
v-if="
(typeFlag == 1 &&
(markLineType == '0' ||
markLineType == '1' ||
markLineType == '7')) ||
drawState == 2
"
>
<span>序号:</span>
<div>
<el-input type="number" v-model="lineNum" min="1"></el-input>
</div>
</div>
<div v-if="typeFlag == 2" class="lightInfo item">
<span>灯眼模式:</span>
<div>
<el-select v-model="lightInfo.distribute">
<el-option value="1" label="单眼灯"></el-option>
<el-option value="2" label="两眼灯"></el-option>
<el-option value="3" label="三眼灯"></el-option>
</el-select>
</div>
</div>
<div v-if="typeFlag == 2" class="item">
<span>形状:</span>
<div>
<el-select name="" v-model="lightInfo.shap">
<el-option value="1" label="圆形"></el-option>
<el-option value="2" label="箭头"></el-option>
<el-option value="3" label="条形"></el-option>
</el-select>
</div>
</div>
<LightCanvas v-if="typeFlag == 3" ref="lightCanvas"></LightCanvas>
</div>
<div v-if="typeFlag != 3">
<button @click="lineTypeCancel">取消</button>
<button @click="lightLast" v-if="typeFlag == 2">上一步</button>
<button @click="lineTypeBtn">确定</button>
</div>
<div v-if="typeFlag == 3">
<button @click="lineTypeCancel">取消</button>
<button @click="childCancle" v-if="lightCancle">撤销</button>
<button @click="lightNext" v-if="lightNextBtn">下一步</button>
</div>
</div>
<div class="pedestrian-area-attr BR" v-if="curLayerstate">
<div class="mt40">
<span class="label">ID号:</span>
<input type="text" v-model="polygon_id" />
</div>
<div class="mt10">
<span class="label">名称:</span>
<input type="text" v-model="polygon_name" />
</div>
<div class="btn-box mt40">
<button @click="bicyEnter">确定</button>
<button @click="curlayCancel">取消</button>
</div>
</div>
</div>
</template>
<script>
import LightCanvas from "./LightCanvas";
export default {
name: "zoneSetting",
data() {
return {
color: [
"222,50,212",
"24,0,254",
"0,254,137",
"255,255,0",
"138,43,226",
"241,31,8",
"31,151,181",
"3,65,76",
"12,222,235"
], //线颜色
typeData: [
"预览",
"车牌检测区域",
"车道标志线",
"车道属性",
"红绿灯区域",
"对向车道",
"违停区域",
"行人检测区域",
"行人密度区域",
"异物检测区域"
],
cindex: 0,
//laneMark:false,
drawState: -1, //配置项类型
lineRadioStyle: {
color: "#fff",
width: "40px",
margin: "10px 15px"
},
canvasState: 0, //控制编辑/添加
polyline: 0, //控制直线/折线
smallWindow: false, //控制属性弹窗
lightCancle: false, //控制属性弹窗是否显示撤销按钮
lightNextBtn: false, //控制属性弹窗是否显示下一步按钮
roadFlag: "", //标记车道线是否有修改
needRect: false, //标记是否处于划矩形状态
needLine: false, //标记是否处于划线状态
lightShootState: 0, //标记选择灯区域截图起止方式,用于放大图片
layers: [], //用于记录各个配置项的图层
blueLines: [], //记录用于连接车道的车道线
greenLines: [], //记录车道中线箭头
roads: [],
selectedShape: null, //当前选中图形
typeFlag: 1, //选择属性弹窗状态
lineNum: 1, //车道线/车道序号
curLayerstate: false, //行人检测区域属性设置
testLayerstate:false,//测试检测区域属性设置
polygon_id: "", //行人检测区域id
polygon_name: "", //行人检测区域name
markLineType: "0",
lanuse:'0',//车道属性类型
guidingtype:'',//车道导向类型
markLineDirect: "",
childUrl: "", //红绿灯区域截图
scale: {}, //红绿灯区域截图放大倍数
lightInfo: {
type: "1",
distribute: "1",
shap: "1",
delay:3
},
roiBody: {},
XMLStr: "",
eventData:[]
};
},
props: ["bgUrl"],
components: {
LightCanvas
},
methods: {
stageInit: function(params) {
console.log("init1");
this.drawState = -1;
this.stage = new Kinetic.Stage({
container: "traficCanvas", //<div>的id
width: 800, //创建的舞台宽度
height: 500 //创建的舞台高度
});
this.shadowLayer = new Kinetic.Layer({
id: "shadowLayer"
});
this.testLayer = new Kinetic.Layer({
id: "testLayer",
name: "layer"
});
this.lineLayer = new Kinetic.Layer({
id: "lineLayer",
name: "layer"
});
this.roadLayer = new Kinetic.Layer({
id: "roadLayer",
name: "layer"
});
this.lightLayer = new Kinetic.Layer({
id: "lightLayer",
name: "layer"
});
this.subtendLayer = new Kinetic.Layer({
id: "subtendLayer",
name: "layer"
});
this.noStopLayer = new Kinetic.Layer({
id: "noStopLayer",
name: "layer"
});
this.bicyLayer = new Kinetic.Layer({ //行人检测区域
id: "bicyLayer",
name: "layer"
});
this.densityLayer = new Kinetic.Layer({//密度
id:'densityLayer',
name:"layer"
});
this.foreignLayer = new Kinetic.Layer({//异物
id:'foreignLayer',
name:"layer"
});
this.testRegionLayer = new Kinetic.Layer({//测试检测区域
id:'testRegionLayer',
name:"layer"
});
let shadow = new Kinetic.Rect({
x: 0, //矩形左上角x坐标
y: 0, //矩形左上角y坐标
width: 800, //矩形的宽度
height: 500, //矩形的高度
fill: "rgba(255,255,255,.2)", //矩形的填充色
stroke: "black", //矩形边缘线的颜色
strokeWidth: 3 //矩形边缘线的宽度
});
let that = this;
this.stage.on("click", function(evt) {
that.stageClick(evt);
});
this.stage.on("dblclick", function(evt) {
if (that.polyline) {
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
};
that.lineStop(that.layers[1], pos);
that.smallWindow = true;
}
});
this.stage.on("mousemove", function(evt) {
that.stageMouseMove(evt);
});
this.shadowLayer.add(shadow);
this.stage.add(this.shadowLayer);
this.stage.add(this.testLayer);
this.stage.add(this.lineLayer);
this.stage.add(this.roadLayer);
this.stage.add(this.lightLayer);
this.stage.add(this.bicyLayer);
this.stage.add(this.subtendLayer);
this.stage.add(this.noStopLayer);
this.stage.add(this.densityLayer);
this.stage.add(this.foreignLayer);
this.stage.add(this.testRegionLayer)
this.layers = [
this.testLayer,
this.lineLayer,
this.roadLayer,
this.lightLayer,
this.subtendLayer,
this.noStopLayer,
this.bicyLayer,
this.densityLayer,
this.foreignLayer,
this.testRegionLayer
];
},
//还原配置
configInit: function(xml) {
let obj = this.oParse.parseXML(xml).roi;
let that = this;
console.log(obj);
//检测区域
// console.log(obj)
let testAry = obj.flow_roi.flow_region.point;
let testRect = [];
try {
testAry.forEach((ele, index) => {
testRect.push(ele.x * 800);
testRect.push(ele.y * 500);
});
let line = this.drawRect("morePoints", testRect, this.color[0]);
this.testLayer.add(line);
} catch (error) {
console.log(error);
}
//车道线
try {
console.log(obj.lane_line);
let normalLines = obj.lane_line.line;
if (!normalLines.length) {
normalLines = [normalLines];
}
normalLines.forEach(ele => {
let points = ele.points.point;
let lineType = ele.line_type;
let color = "24,0,254";
console.log(lineType);
if (lineType == 1) {
color = "255,255,0";
} else if (lineType == 2) {
color = "255,0,0";
} else if (lineType == 7) {
color = "255,255,255";
} else if (
lineType == 3 ||
lineType == 4 ||
lineType == 5 ||
lineType == 9
) {
color = "0,255,0";
}
let ary = [];
for (let i = 0; i < points.length; i++) {
ary.push(points[i].x * 800);
ary.push(points[i].y * 500);
}
let line = this.drawLine("morePoints", ary, color);
line.line_type = ele.line_type;
if (
line.line_type == 0 ||
line.line_type == 1 ||
line.line_type == 7
) {
this.blueLines.push(line);
}
this.lineLayer.add(line);
});
} catch (e) {
//TODO handle the exception
console.log(e);
}
//车道和行人
if (obj.median_lines.lane_count > 0) {
let ary = obj.median_lines.lane;
if (!ary.length) {
ary = [ary];
}
try {
ary.forEach((ele, index) => {
// if (ele.lane_type == "12") {
// let points = [];
// ele.lane_polygon.point.forEach((ele, index) => {
// points.push(ele.x * 800);
// points.push(ele.y * 500);
// });
// let rect = this.drawRect("morePoints", points, this.color[4]);
// this.bicyLayer.add(rect);
// } else
if (ele.lane_type == "11") {
let points = [];
ele.lane_polygon.point.forEach((ele, index) => {
points.push(ele.x * 800);
points.push(ele.y * 500);
});
let rect = this.drawRect("morePoints", points, this.color[5]);
this.subtendLayer.add(rect);
} else {
let points = ele.line.point;
let group = new Kinetic.Group({ name: "arr" });
let line = this.drawLine(
{ x: points[0].x * 800, y: points[0].y * 500 },
{ x: points[1].x * 800, y: points[1].y * 500 },
this.color[2]
);
this.greenLines[ele.lane_seq - 1] = line;
let cPoints, direct;
if (points[0].y < points[1].y) {
cPoints = [
points[0].x * 800,
points[0].y * 500,
points[1].x * 800,
points[1].y * 500
];
direct = "1";
} else {
cPoints = [
points[1].x * 800,
points[1].y * 500,
points[0].x * 800,
points[0].y * 500
];
direct = "0";
}
this.drawArrow(
[points[0].x * 800, points[0].y * 500],
[points[1].x * 800, points[1].y * 500],
30,
20,
3,
this.color[2],
this.roadLayer,
group,
line
);
let arrs = this.roadLayer.get(".arr");
let arr = arrs[arrs.length - 1];
line.index = ele.lane_no;
let lane_guid_type = 0;
let lane_use = 0;
if(obj.lanes.lane_count == 1){
lane_guid_type = obj.lanes.lane.lane_guiding_type
lane_use = obj.lanes.lane.lane_use_type
} else {
lane_guid_type = obj.lanes.lane[index].lane_guiding_type;
lane_use = obj.lanes.lane[index].lane_use_type
}
this.roads[parseInt(ele.lane_seq - 1)] = {
type: ele.lane_type,
index: ele.lane_no,
direct: direct,
lane_guiding_type: obj.lanes.lane[index].lane_guiding_type,
lane_use_type: obj.lanes.lane[index].lane_use_type
};
}
});
} catch (error) {
console.log(error);
}
}
//红绿灯
try {
let ary = obj.lights.light;
if (!ary.length) {
ary = [ary];
}
ary.forEach((ele, index) => {
let points = ele.light_regions.light_region;
let left = points.left * 800;
let top = points.top * 500;
let right = points.right * 800;
let bottom = points.bottom * 500;
let pointsAry = [left, top, left, bottom, right, bottom, right, top];
let rect = this.drawRect("morePoints", pointsAry, this.color[3]);
let linghtRoi = {
light_region_seq: 1,
top: (top / 500).toFixed(6),
right: (right / 800).toFixed(6),
bottom: (bottom / 500).toFixed(6),
left: (left / 800).toFixed(6)
};
(rect.light_seq = index + 1),
(rect.light_type = ele.light_type),
(rect.light_distribute = ele.light_distribute),
(rect.light_shape = ele.light_shape),
(rect.light_delay = ele.light_yellow_delay||ele.light_yellow_interval),
(rect.light_regions = {
light_region_count: 1,
light_region: linghtRoi
});
this.lightLayer.add(rect);
});
} catch (error) {
console.log(error);
}
//违停区域
let noStopAry = obj.no_stop_region.no_stop_polygon;
console.log(noStopAry);
try {
if (!noStopAry.length) {
noStopAry = [noStopAry];
}
noStopAry.forEach(ele => {
let points = ele.point;
let noStopRect = [];
for (let i = 0; i < points.length; i++) {
const point = points[i];
noStopRect.push(point.x * 800);
noStopRect.push(point.y * 500);
}
let line = this.drawRect("morePoints", noStopRect, this.color[5]);
this.noStopLayer.add(line);
});
} catch (error) {
console.log(error);
}
//行人检测区域
try {
let bicyarr = obj.pedestrian_detection_region.polygon;
if (!bicyarr.length) {
bicyarr = [bicyarr];
}
bicyarr.forEach(ele => {
let points = ele.point;
let bicRect = [];
for (let i = 0; i < points.length; i++) {
const point = points[i];
bicRect.push(point.x * 800);
bicRect.push(point.y * 500);
}
let rect = this.drawRect("morePoints", bicRect, this.color[6]);
rect.polygon_name = ele.polygon_name;
rect.polygon_id = ele.polygon_id;
this.bicyLayer.add(rect);
});
} catch (error) {
console.log(error);
}
//行人密度区域
try {
let densityarr = obj.pedestrian_density_region.polygon;
if (!densityarr.length) {
densityarr = [densityarr];
}
densityarr.forEach(ele => {
let points = ele.point;
let densityRect = [];
for (let i = 0; i < points.length; i++) {
const point = points[i];
densityRect.push(point.x * 800);
densityRect.push(point.y * 500);
}
let rect = this.drawRect("morePoints", densityRect, this.color[7]);
rect.polygon_name = ele.polygon_name;
rect.polygon_id = ele.polygon_id;
this.densityLayer.add(rect);
});
} catch (error) {
console.log(error);
}
//异物检测区域
try {
let foreignarr = obj.foreign_detection_region.polygon;
if (!foreignarr.length) {
foreignarr = [foreignarr];
}
foreignarr.forEach(ele => {
let points = ele.point;
let foreignRect = [];
for (let i = 0; i < points.length; i++) {
const point = points[i];
foreignRect.push(point.x * 800);
foreignRect.push(point.y * 500);
}
let rect = this.drawRect("morePoints", foreignRect, this.color[8]);
rect.polygon_name = ele.polygon_name;
rect.polygon_id = ele.polygon_id;
this.foreignLayer.add(rect);
});
} catch (error) {
console.log(error);
}
//测试检测区域
try {
let testarr = obj.test_result_region.polygon;
if (!testarr.length) {
testarr = [testarr];
}
testarr.forEach(ele => {
let points = ele.point;
let bicRect = [];
for (let i = 0; i < points.length; i++) {
const point = points[i];
bicRect.push(point.x * 800);
bicRect.push(point.y * 500);
}
let rect = this.drawRect("morePoints", bicRect, this.color[9]);
rect.polygon_name = ele.polygon_name;
rect.polygon_id = ele.polygon_id;
this.testRegionLayer.add(rect);
});
} catch (error) {
console.log(error);
}
this.selectedShape = null;
this.drawRoad();
console.log(this.stage);
this.stage.draw();
},
//切换编辑、添加状态
changeCanvasState: function() {
if (this.canvasState) {
this.cancleSelectedGroup();
}
if (this.drawState == 1) {
this.lineNum = this.blueLines.length + 1;
} else if (this.drawState == 2) {
this.lineNum = this.roads.length + 1;
}
this.selectedShape = null;
this.markLineType = "0";
this.lightInfo.type = "1";
},
//切换配置项
changeLayer: function(index) {
this.cindex = index;
if (this.needRect || this.needLine) {
let shape = this.needRect ? "区域" : "线段";
this.$message({
type: "error",
message: "当前" + shape + "配置未完成"
});
return;
}
if (this.smallWindow) {
this.$message({
type: "error",
message: "当前属性配置未完成"
});
return;
}
this.layers.forEach(ele => {
ele.setVisible(false);
});
if (this.drawState != -1) {
this.cancleSelectedGroup();
}
this.canvasState = 0;
this.polyline = 0;
this.polygon_name = "";
this.polygon_id = "";
var e = e || window.event;
switch (index - 1) {
case -1:
this.layers.forEach(ele => {
ele.setVisible(true);
});
this.drawRoad();
this.stage.draw();
break;
case 1:
this.typeFlag = 1;
this.lineNum = this.blueLines.length + 1 || 1;
break;
case 2:
this.typeFlag = 0;
this.drawRoad();
break;
}
this.drawState = index - 1;
// this.layers[this.drawState].moveToTop()
if (index) {
console.log(this.drawState);
this.layers[this.drawState].setVisible(true);
this.layers[this.drawState].draw();
}
},
//切换直线/折线
polyChang: function() {
if (this.polyline) {
this.markLineType = "9";
} else {
this.markLineType = "0";
}
},
//点击配置区域
stageClick: function(evt) {
if (this.drawState == -1) {
this.$message({
type: "info",
message: "预览模式下无法操作!"
});
return;
}
if (this.canvasState) {
//点中空白区域添加图形
if (this.smallWindow) return;
this.addShape(evt);
} else {
//点击图形选中
this.cancleSelectedGroup();
if (evt.target.className != "Rect") {
let tar = evt.target;
if (this.drawState == "2" && tar.attrs.name != "rect") {
return;
}
this.makeSelectedGroup(tar);
}
}
},
//添加图形
addShape: function(evt) {
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
};
let layer = this.layers[this.drawState];
switch (this.drawState) {
case 0:
let testRects = layer.get(".rect");
if (testRects.length && !this.needRect) {
this.$message({
type: "error",
message: "只允许设置一个车牌检测区域"
});
return;
}
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 1:
if (this.roadFlag) {
this.roadFlag = false;
}
this.startChangeShape(pos, layer, this.color[this.drawState]);
break;
case 3:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 4:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 6:
let rects = layer.get(".rect");
if (rects.length > 1 && !this.needRect) {
this.$message({
type: "error",
message: "只允许设置两个行人检测区域"
});
return;
}
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 5:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 7:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 8:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
case 9:
if (this.needRect) {
this.endChangeShape(evt);
} else {
this.needRect = true;
this.startChangeShape(pos, layer, this.color[this.drawState]);
}
break;
default:
break;
}
},
//改变选中图形样式
makeSelectedGroup: function(shape) {
console.log(shape);
let points = shape.attrs.points;
let lineType = shape.line_type;
let color = this.color[this.drawState];
if (this.drawState == 2) {
this.lineNum = this.roads[shape.roadIndex].index;
this.markLineType = this.roads[shape.roadIndex].type;
this.markLineDirect = this.roads[shape.roadIndex].direct;
this.guidingtype = this.roads[shape.roadIndex].lane_guiding_type;
this.lanuse = this.roads[shape.roadIndex].lane_use_type || '0';
shape.setFill("rgba(" + this.color[1] + ",0.3)");
let gLine = this.greenLines[shape.roadIndex];
if (gLine.getParent().attrs.name == "arr") {
gLine.getParent().destroy();
this.roadLayer.add(gLine);
}
} else {
if (this.drawState == 1) {
let index = this.blueLines.indexOf(shape);
if (lineType == 0) {
color = "0,0,255";
} else if (lineType == 1) {
color = "255,255,0";
} else if (lineType == 2) {
color = "255,0,0";
} else if (lineType == 7) {
color = "255,255,255";
} else {
color = "0,255,0";
}
if (index > -1) {
this.blueLines.splice(index, 1);
} else {
index = this.blueLines.length;
}
this.lineNum = index + 1;
}
for (let i = 0; i < points.length; i += 2) {
const pos = {
x: points[i],
y: points[i + 1]
};
let cir = this.drawCircle(pos, color, 5);
this.layers[this.drawState].add(cir);
}
}
if (this.drawState == 1) {
this.markLineType = shape.line_type;
} else if (this.drawState == 3) {
this.lightInfo = {
type: shape.light_type,
shap: shape.light_shape,
distribute: shape.light_distribute,
delay:shape.light_delay
};
} else if (
this.drawState == 6 ||
this.drawState == 7 ||
this.drawState == 8
) {
this.polygon_name = shape.polygon_name;
this.polygon_id = shape.polygon_id;
}
this.selectedShape = shape;
this.layers[this.drawState].draw();
},
//取消选中图形样式
cancleSelectedGroup: function(isdel) {
if (!this.selectedShape) return;
let cirs = this.layers[this.drawState].get(".circle");
for (let i = 0; i < cirs.length; i++) {
const cir = cirs[i];
cir.destroy();
}
if (this.drawState == 1) {
if (
(this.markLineType == "0" ||
this.markLineType == "1" ||
this.markLineType == "7") &&
!isdel
) {
this.blueLines.splice(this.lineNum - 1, 0, this.selectedShape);
this.lineNum++;
this.roadFlag = false;
}
this.selectedShape.line_type = this.markLineType;
} else if (this.drawState == 2) {
console.log(this.selectedShape);
let road = this.roads[this.selectedShape.roadIndex];
road.type = this.markLineType;
road.index = this.lineNum;
road.lane_use_type = this.lanuse;
road.lane_guiding_type = this.guidingtype;
this.selectedShape.setFill("rgba(255,255,255,0)");
if (this.markLineDirect != undefined) {
road.direct = this.markLineDirect;
road.cPoints = this.sortLinePoints(road.cPoints);
let points;
if (this.markLineDirect == "0") {
points = [
road.cPoints[2],
road.cPoints[3],
road.cPoints[0],
road.cPoints[1]
];
} else {
points = road.cPoints;
}
let line = this.greenLines[this.selectedShape.roadIndex];
let group = new Kinetic.Group({ name: "arr" });
this.drawArrow(
[points[0], points[1]],
[points[2], points[3]],
30,
20,
3,
this.color[2],
this.roadLayer,
group,
line
);
}
} else if (this.drawState == 3) {
this.selectedShape.light_type = this.lightInfo.type;
this.selectedShape.light_shape = this.lightInfo.shap;
this.selectedShape.light_distribute = this.lightInfo.distribute;
this.selectedShape.light_delay = this.lightInfo.delay;
}
this.selectedShape = null;
this.markLineType = "0";
this.lightInfo = {
type: "1",
distribute: "1",
shap: "1",
delay:3
};
this.layers[this.drawState].draw();
},
//开始绘制图形(第一次点击)
startChangeShape: function(pos, layer, col) {
let ary = layer.get(".circle");
if (
this.drawState == 0 ||
this.drawState == 3 ||
this.drawState == 4 ||
this.drawState == 5 ||
this.drawState == 6 ||
this.drawState == 7 ||
this.drawState == 8 ||
this.drawState == 9
) {
let rect = this.drawRect(pos, pos, col);
rect.moveToBottom();
layer.add(rect);
} else {
if (ary.length == 0 && !this.needLine) {
let circle = this.drawCircle(pos, "rgba(255,255,255,.2)");
layer.add(circle);
this.needLine = true;
let line = this.drawLine(pos, pos, col);
this.selectedShape = line;
layer.add(line);
} else {
if (this.polyline) {
let lines = layer.get(".line");
let lastLine = lines[lines.length - 1];
let points = lastLine.attrs.points;
if (points.length >= 4) {
points.push(pos.x);
points.push(pos.y);
}
lastLine.attrs.points = points;
} else {
this.lineStop(layer, pos);
this.smallWindow = true;
}
}
}
layer.draw();
},
//鼠标移动生成线、矩形
stageMouseMove: function(evt) {
if (!this.needLine && !this.needRect) return;
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
};
let layer = this.layers[this.drawState];
if (this.needLine) {
let lines;
if (this.drawState == 2) {
lines = layer.get(".centerLine");
} else {
lines = layer.get(".line");
}
let points = lines[lines.length - 1].attrs.points;
points[points.length - 2] = pos.x;
points[points.length - 1] = pos.y;
} else if (this.needRect) {
let rects = layer.get(".rect");
let rect = rects[rects.length - 1];
rect.moveToBottom();
rect.attrs.points[3] = pos.y;
rect.attrs.points[4] = pos.x;
(rect.attrs.points[5] = pos.y), pos;
rect.attrs.points[6] = pos.x;
}
layer.draw();
},
//结束一个图形配置
endChangeShape: function(evt) {
evt.cancelBubble = true;
if (!this.needRect) return;
this.needRect = false;
if (this.drawState == 3) {
let layer = this.layers[this.drawState];
let rects = layer.get(".rect");
let rect = rects[rects.length - 1];
let points = rect.attrs.points;
let canvas = document.createElement("canvas");
let img = document.getElementById("pic").childNodes[0];
console.log(img);
let w = Math.abs(points[0] - points[4]);
let h = Math.abs(points[1] - points[5]);
this.scale = {
x: 200 / w,
y: 200 / h
};
console.log(this.scale);
canvas.width = w;
canvas.height = h;
if (points[0] - points[4] > 0 && points[1] - points[5] > 0) {
this.lightShootState = 2;
canvas
.getContext("2d")
.drawImage(img, points[4], points[5], w, h, 0, 0, w, h);
} else if (points[0] - points[4] > 0 && points[1] - points[5] < 0) {
this.lightShootState = 3;
canvas
.getContext("2d")
.drawImage(img, points[6], points[7], w, h, 0, 0, w, h);
} else if (points[0] - points[4] < 0 && points[1] - points[5] > 0) {
this.lightShootState = 1;
canvas
.getContext("2d")
.drawImage(img, points[2], points[3], w, h, 0, 0, w, h);
} else if (points[0] - points[4] < 0 && points[1] - points[5] < 0) {
this.lightShootState = 0;
canvas
.getContext("2d")
.drawImage(img, points[0], points[1], w, h, 0, 0, w, h);
}
console.log(this.lightShootState);
this.typeFlag = 3;
// this.lineTypeShow()
this.smallWindow = true;
let that = this;
this.childUrl = canvas.toDataURL("image/webp");
setTimeout(function() {
that.$refs.lightCanvas.bgUrl = that.childUrl;
that.$refs.lightCanvas.imgSize(w, h);
}, 0);
layer.draw();
}
if (this.drawState == 6 ||
this.drawState == 7 ||
this.drawState == 8) {
this.curLayerstate = true;
}
if(this.drawState == 9){
this.testLayerstate = true;
}
},
lineChange: function name() {
let color = "blue";
if (this.markLineType == 1) {
color = "yellow";
} else if (this.markLineType == 2) {
color = "red";
} else if (this.markLineType == 7) {
color = "white";
} else if (
this.markLineType == 3 ||
this.markLineType == 4 ||
this.markLineType == 5 ||
this.markLineType == 9
) {
color = "rgb(0,255,0)";
}
this.selectedShape.attrs.stroke = color;
this.lineLayer.draw();
},
lineStop: function(layer, pos) {
this.needLine = false;
let start = layer.get(".circle")[0];
let x = start.attrs.x;
let y = start.attrs.y;
start.destroy();
if (this.drawState == 2) {
let group = new Kinetic.Group({
name: "arr"
});
let lines = layer.get(".centerLine");
let line = lines[lines.length - 1];
this.drawArrow(
[x, y],
[pos.x, pos.y],
30,
20,
3,
this.color[2],
layer,
group,
line
);
} else {
layer.draw();
}
},
//行人检测信息/异物检测信息/测试检测区域
bicyEnter() {
let curLayers = this.layers[this.drawState].get(".rect");
let curlay = curLayers[curLayers.length - 1];
curlay.polygon_id = this.polygon_id;
curlay.polygon_name = this.polygon_name;
this.curLayerstate = false;
//测试区域弹窗
this.testLayerstate = false;
//清空输入框
this.polygon_id = "";
this.polygon_name = "";
},
curlayCancel() {
let curLayers = this.layers[this.drawState].get(".rect");
let curlay = curLayers[curLayers.length - 1];
curlay.destroy();
console.log(curlay);
this.selectedShape = null;
this.cancleSelectedGroup();
this.layers[this.drawState].draw();
this.curLayerstate = false;
//测试区域弹窗
this.testLayerstate = false;
//清空输入框
this.polygon_id = "";
this.polygon_name = "";
},
//画圆
drawCircle: function(pos, col, r) {
let size = r || 2;
let circle = new Kinetic.Circle({
x: pos.x,
y: pos.y,
fill: "rgb(" + col + ")",
radius: size,
name: "circle",
draggable: true
});
circle.on("dragmove", evt => {
if (this.canvasState) return;
evt.cancelBubble = true;
this.changeRect(evt);
});
return circle;
},
//画线
drawLine: function(start, end, col, width) {
let points;
if (start === "morePoints") {
points = end;
} else {
points = [start.x, start.y, end.x, end.y];
}
let name = "line";
let size = width || 4;
if (this.drawState == 2 && this.needLine) {
name = "centerLine";
}
let line = new Kinetic.Line({
x: 0,
points: points,
tension: 0,
closed: false,
stroke: "rgb(" + col + ")",
strokeWidth: size,
name: name
});
return line;
},
//画矩形
drawRect: function(start, end, color, boo) {
let points,
isFill = true;
if (boo == false) {
isFill = boo;
}
if (start === "morePoints") {
points = end;
} else {
points = [
start.x,
start.y,
start.x,
end.y,
end.x,
end.y,
end.x,
start.y
];
}
let rect = new Kinetic.Line({
x: 0,
points: points,
// tension: 0.5,
closed: true,
stroke: "rgb(" + color + ")",
strokeWidth: 4,
name: "rect",
fill: isFill ? "rgba(" + color + ",0.3)" : "transparent"
});
return rect;
},
//改变矩形
changeRect: function(evt) {
let rects = evt.target.getParent().get(".rect");
let cirs = evt.target.getParent().get(".circle");
let points = [];
cirs.forEach(ele => {
points.push(ele.attrs.x);
points.push(ele.attrs.y);
});
this.selectedShape.attrs.points = points;
this.layers[this.drawState].draw();
},
//删除图形
delShape: function() {
if (!this.selectedShape) {
return;
}
switch (this.drawState) {
case 1:
if (
this.selectedShape.line_type != 0 &&
this.selectedShape.line_type != 1 &&
this.selectedShape.line_type != 7
) {
let index = this.blueLines.indexOf(this.selectedShape);
this.blueLines.splice(index, 1);
this.lineNum = this.blueLines.length + 1;
}
this.roadFlag = false;
break;
case 2:
let rindex = this.roads.indexOf(this.selectedShape);
console.log(rindex);
this.roads[rindex] = "";
break;
case 6:
this.polygon_name = "";
this.polygon_id = "";
default:
break;
}
this.selectedShape.destroy();
this.cancleSelectedGroup(true);
this.selectedShape = null;
},
//选择线/区域属性弹窗
lineTypeCancel: function() {
if (this.drawState == 3) {
let rects = this.lightLayer.get(".rect");
let rect = rects[rects.length - 1];
rect.destroy();
} else {
this.selectedShape.destroy();
}
this.selectedShape = null;
this.cancleSelectedGroup();
this.layers[this.drawState].draw();
this.smallWindow = false;
},
lineTypeBtn: function() {
this.smallWindow = false;
let layer = this.layers[this.drawState];
if (this.typeFlag == 1) {
let lines = layer.get(".line");
let line = lines[lines.length - 1];
let color = "blue";
line.line_type = this.markLineType;
if (this.markLineType == 1) {
color = "yellow";
} else if (this.markLineType == 2) {
color = "red";
} else if (this.markLineType == 7) {
color = "white";
} else if (
this.markLineType == 3 ||
this.markLineType == 4 ||
this.markLineType == 5 ||
this.markLineType == 9
) {
color = "rgb(0,255,0)";
}
line.attrs.stroke = color;
layer.draw();
if (
this.markLineType == "0" ||
this.markLineType == "1" ||
this.markLineType == "7"
) {
this.blueLines.splice(this.lineNum - 1, 0, lines[lines.length - 1]);
this.lineNum++;
}
} else if (this.typeFlag == 0) {
if (this.roads[this.lineNum - 1]) {
console.log(this.roads[this.lineNum - 1]);
this.roads[this.lineNum - 1].getParent().destroy();
layer.draw();
}
let arrs = layer.get(".arr");
let lastLine = arrs[arrs.length - 1].children[0];
lastLine.line_type = this.markLineType;
lastLine.roadsIndex = this.lineNum - 1;
this.roads[this.lineNum - 1] = lastLine;
this.lineNum++;
} else if (this.typeFlag == 2) {
let that = this;
let rects = layer.get(".rect");
let rect = rects[rects.length - 1];
let points = [];
this.childCirAry.forEach(ele => {
let cir = [];
console.log(this.lightShootState);
switch (this.lightShootState) {
case 0:
cir = [rect.attrs.points[0], rect.attrs.points[1]];
break;
case 1:
cir = [rect.attrs.points[2], rect.attrs.points[3]];
break;
case 2:
cir = [rect.attrs.points[4], rect.attrs.points[5]];
break;
case 3:
cir = [rect.attrs.points[6], rect.attrs.points[7]];
break;
}
let x = parseInt(ele[0] / that.scale.x) + parseInt(cir[0]);
let y = parseInt(ele[1] / that.scale.y) + parseInt(cir[1]);
points.push(x);
points.push(y);
});
console.log(points);
rect.attrs.points = points;
layer.draw();
let length = points;
let top = Math.min(points[1], points[3], points[5], points[7]);
let left = Math.min(points[0], points[2], points[4], points[6]);
let bottom = Math.max(points[1], points[3], points[5], points[7]);
let right = Math.max(points[0], points[2], points[4], points[6]);
let linghtRoi = {
light_region_seq: 1,
top: (top / 500).toFixed(6),
right: (right / 800).toFixed(6),
bottom: (bottom / 500).toFixed(6),
left: (left / 800).toFixed(6)
};
(rect.light_seq = this.lightLayer.get("rect").length + 1),
(rect.light_type = this.lightInfo.type),
(rect.light_distribute = this.lightInfo.distribute),
(rect.light_shape = this.lightInfo.shap),
(rect.light_delay = this.lightInfo.delay),
(rect.light_regions = {
light_region_count: 1,
light_region: linghtRoi
});
this.childCirAry = [];
}
this.markLineType = "0";
this.lightInfo = {
type: "1",
distribute: "1",
shap: "1",
delay:3
};
this.selectedShape = null;
},
//画箭头
drawArrow: function(
c1,
c2,
theta,
headlen,
width,
color,
layer,
group,
line
) {
theta = typeof theta != "undefined" ? theta : 30;
headlen = typeof theta != "undefined" ? headlen : 10;
width = typeof width != "undefined" ? width : 1;
color = typeof color != "color" ? color : "#000";
// 计算各角度和对应的P2,P3坐标
var angle = (Math.atan2(c1[1] - c2[1], c1[0] - c2[0]) * 180) / Math.PI,
angle1 = ((angle + theta) * Math.PI) / 180,
angle2 = ((angle - theta) * Math.PI) / 180,
topX = headlen * Math.cos(angle1),
topY = headlen * Math.sin(angle1),
botX = headlen * Math.cos(angle2),
botY = headlen * Math.sin(angle2);
var arrowX = c1[0] - topX,
arrowY = c1[1] - topY;
// let line = this.drawLine({x:c1[0],y:c1[1]},{x:c2[0],y:c2[1]},color)
line.attrs.name = "centerLine";
arrowX = c2[0] + topX;
arrowY = c2[1] + topY;
let line1 = this.drawLine(
{ x: c2[0], y: c2[1] },
{ x: arrowX, y: arrowY },
color,
3
);
arrowX = c2[0] + botX;
arrowY = c2[1] + botY;
let line2 = this.drawLine(
{ x: c2[0], y: c2[1] },
{ x: arrowX, y: arrowY },
color,
3
);
group.add(line);
group.add(line1);
group.add(line2);
layer.add(group);
layer.draw();
},
//生成车道
drawRoad: function() {
if (this.roadFlag === true) return;
if (this.roadFlag === false) {
this.$alert("车道线有修改,请逐一检查车道属性是否正确", "提示", {
confirmButtonText: "确定"
});
}
let childs = this.roadLayer.children;
//清空层内非中线图形
const num = childs.length - 1;
for (let i = num; i > -1; i--) {
const element = childs[i];
element.destroy();
}
this.roadLayer.draw();
try {
// console.log('蓝色车道线')
// console.log(this.blueLines)
this.blueLines.forEach((ele, index) => {
if(ele.attrs.points[1] - ele.attrs.points[3] > 0) {
var copypoint = Array.from(ele.attrs.points);
ele.attrs.points[0] = copypoint[2]
ele.attrs.points[1] = copypoint[3]
ele.attrs.points[2] = copypoint[0]
ele.attrs.points[3] = copypoint[1]
// console.log('*******蓝色车道线*******')
// console.log(ele)
}
})
//车道线根据坐标排序
function sortBlueLine(arr){
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j].attrs.points[0] > arr[j+1].attrs.points[0]) { //相邻元素两两对比
var temp = arr[j+1]; //元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log('排序后的蓝色车道线')
console.log(sortBlueLine(this.blueLines))
this.blueLines.forEach((ele, index) => {
let points =this.sortLinePoints(ele.attrs.points);
if (index > 0) {
//绘制车道
let lastPoints = this.sortLinePoints(this.blueLines[index - 1].attrs.points);
let num1 =
Math.pow(points[0] - lastPoints[0], 2) +
Math.pow(points[1] - lastPoints[1], 2) +
Math.pow(points[2] - lastPoints[2], 2) +
Math.pow(points[3] - lastPoints[3], 2);
let num2 =
Math.pow(points[0] - lastPoints[2], 2) +
Math.pow(points[1] - lastPoints[3], 2) +
Math.pow(points[2] - lastPoints[0], 2) +
Math.pow(points[3] - lastPoints[1], 2);
let mPoints;
if (num1 < num2) {
mPoints = points.concat([
lastPoints[2],
lastPoints[3],
lastPoints[0],
lastPoints[1]
]);
} else {
mPoints = points.concat([
lastPoints[0],
lastPoints[1],
lastPoints[2],
lastPoints[3]
]);
}
let rect = this.drawRect(
"morePoints",
mPoints,
this.color[1],
false
);
rect.roadIndex = index - 1;
this.roadLayer.add(rect);
//绘制车道中线
if (!this.roads[index - 1]) {
this.roads[index - 1] = {};
}
let road = this.roads[index - 1];
let cPoints = [
(mPoints[0] + mPoints[6]) / 2,
(mPoints[1] + mPoints[7]) / 2,
(mPoints[2] + mPoints[4]) / 2,
(mPoints[3] + mPoints[5]) / 2,
];
road.cPoints = cPoints;
let cLine = this.drawLine("morePoints", cPoints, this.color[2]);
this.greenLines[index - 1] = cLine;
if (road.direct == undefined) {
this.roadLayer.add(cLine);
} else if (road.direct == "1") {
this.drawArrow(
[cPoints[0], cPoints[1]],
[cPoints[2], cPoints[3]],
30,
20,
3,
this.color[2],
this.roadLayer,
new Kinetic.Group({ name: "arr" }),
cLine
);
} else if (road.direct == "0") {
this.drawArrow(
[cPoints[2], cPoints[3]],
[cPoints[0], cPoints[1]],
30,
20,
3,
this.color[2],
this.roadLayer,
new Kinetic.Group({ name: "arr" }),
cLine
);
}
}
});
this.roadFlag = true;
} catch (error) {
console.log(error);
}
this.roadLayer.draw();
},
lightNext: function() {
this.childCirAry = this.$refs.lightCanvas.cirAry;
this.typeFlag = 2;
},
lightLast: function() {
this.typeFlag = 3;
let that = this;
setTimeout(function() {
that.$refs.lightCanvas.cirAry = that.childCirAry;
that.$refs.lightCanvas.bgUrl = that.childUrl;
that.$refs.lightCanvas.draw();
}, 0);
},
childCancle: function() {
this.$refs.lightCanvas.cancle();
},
save: function() {
this.cancleSelectedGroup();
//车牌检测区域
let testAry = [];
try {
const testPoints = this.testLayer.get(".rect")[0].attrs.points;
for (let i = 0; i < testPoints.length; i += 2) {
testAry.push({
point_seq: i / 2 + 1,
x: (testPoints[i] / 800).toFixed(6),
y: (testPoints[i + 1] / 500).toFixed(6)
});
}
} catch (error) {}
this.roiBody.flow_roi = {
flow_type: "",
flow_region: {
polygon_point_count: testAry.length,
point: testAry
}
};
//新增新增
this.roiBody.plate_detect_region = {
detect_polygon: {
polygon_point_count: testAry.length,
point: testAry
}
};
//车道线
let lineAry = [];
try {
this.blueLines.forEach((ele, index) => {
let points = ele.attrs.points;
lineAry.push({
line_seq: index + 1,
lane_no: 1,
line_type: ele.line_type,
points: {
point_count: 2,
point: [
{
point_seq: 1,
x: (points[0] / 800).toFixed(6),
y: (points[1] / 500).toFixed(6)
},
{
point_seq: 2,
x: (points[2] / 800).toFixed(6),
y: (points[3] / 500).toFixed(6)
}
]
}
});
});
} catch (error) {
console.log(error);
}
try {
this.lineLayer.get(".line").forEach((ele, index) => {
if (ele.line_type != 0 && ele.line_type != 1 && ele.line_type != 7) {
let points = ele.attrs.points;
let ary = [];
for (let i = 0; i < points.length; i += 2) {
ary.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
lineAry.push({
line_seq: lineAry.length + 1,
lane_no: 1,
line_type: ele.line_type,
points: {
point_count: points.length / 2,
point: ary
}
});
}
});
} catch (error) {
console.log(error);
}
this.roiBody.lane_line = {
line_count: lineAry.length,
line: lineAry
};
//车道
let roadAry = [];
let lanaAry = [];
console.log(this.roads);
try {
console.log(this.roads);
this.blueLines.forEach((ele, index) => {
if (index != this.blueLines.length - 1) {
let midLine = this.roads[index],
points =
midLine.direct != "1"
? [
midLine.cPoints[2],
midLine.cPoints[3],
midLine.cPoints[0],
midLine.cPoints[1]
]
: midLine.cPoints,
rectPoints1 = this.sortLinePoints(ele.attrs.points),
rectPoints2 = this.sortLinePoints(
this.blueLines[index + 1].attrs.points
);
let options = {
lane_seq: index + 1,
lane_no: midLine.index,
line: {
polygon_point_count: 2,
point: [
{
point_seq: 1,
x: points ? (points[0] / 800).toFixed(6) : "",
y: points ? (points[1] / 500).toFixed(6) : ""
},
{
point_seq: 2,
x: points ? (points[2] / 800).toFixed(6) : "",
y: points ? (points[3] / 500).toFixed(6) : ""
}
]
},
direction_polygon: {
polygon_point_count: 2,
point: [
{
point_seq: 1,
x: points ? (points[0] / 800).toFixed(6) : "",
y: points ? (points[1] / 500).toFixed(6) : ""
},
{
point_seq: 2,
x: points ? (points[2] / 800).toFixed(6) : "",
y: points ? (points[3] / 500).toFixed(6) : ""
}
]
},
lane_polygon: {
polygon_point_count: 4,
point: [
{
point_seq: 1,
x: (rectPoints1[2] / 800).toFixed(6),
y: (rectPoints1[3] / 500).toFixed(6)
},
{
point_seq: 2,
x: (rectPoints1[0] / 800).toFixed(6),
y: (rectPoints1[1] / 500).toFixed(6)
},
{
point_seq: 3,
x: (rectPoints2[0] / 800).toFixed(6),
y: (rectPoints2[1] / 500).toFixed(6)
},
{
point_seq: 4,
x: (rectPoints2[2] / 800).toFixed(6),
y: (rectPoints2[3] / 500).toFixed(6)
}
]
}
};
let linetype = "";
if (midLine.lane_use_type == 0) {
// linetype = this.lanuse;
switch (midLine.lane_guiding_type) {
case "0":
linetype = 2;
break;
case "1":
linetype = 0;
break;
case "2":
linetype = 1;
break;
case "3":
linetype = 3;
break;
case "4":
linetype = 4;
break;
case "5":
linetype = 5;
break;
default:
break;
}
} else if (
midLine.lane_use_type != "" &&
midLine.lane_use_type != 0
) {
// linetype = this.lanuse;
switch (midLine.lane_use_type) {
case "1":
linetype = 8;
break;
case "2":
linetype = 9;
break;
case "3":
linetype = 10;
break;
case "4":
linetype = "";
break;
case "5":
linetype = "";
break;
default:
break;
}
}
options.lane_type = linetype;
roadAry.push(options);
//新增
let L = JSON.stringify(options);
let lanaOptions = JSON.parse(L);
console.log(this.lanuse);
lanaOptions.lane_use_type = midLine.lane_use_type;
lanaOptions.lane_guiding_type = midLine.lane_guiding_type;
lanaOptions.lane_type = linetype;
lanaOptions.lane_user_id = options.lane_no;
lanaOptions.lane_middle_line = {
polygon_point_count: 2,
point1: {
x: points ? (points[0] / 800).toFixed(6) : "",
y: points ? (points[1] / 500).toFixed(6) : ""
},
point2: {
x: points ? (points[2] / 800).toFixed(6) : "",
y: points ? (points[3] / 500).toFixed(6) : ""
}
};
lanaOptions.lane_directions = {
lane_direction_count: "1",
lane_direction: {
lane_direction_type: midLine.direct,
lane_direction_time: "00:00:00-23:59:59"
}
};
lanaAry.push(lanaOptions);
}
});
} catch (error) {
console.log(error);
}
console.log("#######################");
console.log(lanaAry);
console.log("#######################");
this.roiBody.lanes = {
lane_count: lanaAry.length ? lanaAry.length : 0,
lane: lanaAry ? lanaAry : []
}
//对向车道
try {
this.subtendLayer.get(".rect").forEach((el, index) => {
let bicAry = [];
let points = el.attrs.points;
for (let i = 0; i < points.length; i += 2) {
bicAry.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
roadAry.push({
lane_no: 1,
lane_seq: roadAry.length + 1,
lane_type: 11,
lane_polygon: {
polygon_point_count: bicAry.length,
point: bicAry
}
});
lanaAry.push({
lane_no: 1,
lane_seq: roadAry.length + 1,
lane_use_type: 6,
lane_type: 11,
lane_polygon: {
polygon_point_count: bicAry.length,
point: bicAry
}
});
});
} catch (error) {}
// 红绿灯区域
let lightAry = [];
try {
this.lightLayer.get(".rect").forEach((ele, index) => {
lightAry.push({
light_seq: index + 1,
light_type: ele.light_type,
light_id:ele.light_type,
light_distribute: ele.light_distribute,
light_number_type:ele.light_distribute,
light_yellow_delay: Number(ele.light_delay),
light_yellow_interval:Number(ele.light_delay),
light_shape:ele.light_shape,
light_shape_type:ele.light_shape,
light_regions: ele.light_regions,
});
});
} catch (error) {}
this.roiBody.lights = {
light_count: lightAry.length,
light: lightAry
};
//违停区域
let noStopRois = this.noStopLayer.get(".rect");
let noStopAry = [];
try {
noStopRois.forEach((el, index) => {
let points = el.attrs.points;
let ary = [];
for (let i = 0; i < points.length; i += 2) {
ary.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
noStopAry.push({
polygon_seq: index + 1,
polygon_point_count: ary.length,
point: ary
});
});
} catch (error) {}
this.roiBody.no_stop_region = {
region_count: noStopAry.length,
no_stop_polygon: noStopAry
};
//行人检测区域
let bicArys = [];
try {
this.bicyLayer.get(".rect").forEach((el, index) => {
let bicAry = [];
let points = el.attrs.points;
for (let i = 0; i < points.length; i += 2) {
bicAry.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
roadAry.push({
lane_no: 1,
lane_seq: roadAry.length + 1,
lane_type: 12,
lane_polygon: {
polygon_point_count: bicAry.length,
point: bicAry
}
});
bicArys.push({
polygon_id: el.polygon_id,
polygon_name: el.polygon_name,
polygon_point_count: bicAry.length,
point: bicAry
});
});
} catch (error) {}
this.roiBody.pedestrian_detection_region = {
region_count: bicArys.length,
polygon: bicArys
};
this.roiBody.median_lines = {
lane_count: roadAry.length ? roadAry.length : 0,
lane: roadAry ? roadAry : []
};
//行人密度检测区域
let densityAry = [];
try {
this.densityLayer.get(".rect").forEach((el, index) => {
let denAry = [];
let points = el.attrs.points;
for (let i = 0; i < points.length; i += 2) {
denAry.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
densityAry.push({
polygon_id: el.polygon_id,
polygon_name: el.polygon_name,
polygon_point_count: denAry.length,
point: denAry
});
});
} catch (error) {}
this.roiBody.pedestrian_density_region = {
region_count: densityAry.length,
polygon: densityAry
};
//异物检测区域
let foreignAry = [];
try {
this.foreignLayer.get(".rect").forEach((el, index) => {
let foAry = [];
let points = el.attrs.points;
for (let i = 0; i < points.length; i += 2) {
foAry.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
foreignAry.push({
polygon_id: el.polygon_id,
polygon_name: el.polygon_name,
polygon_point_count: foAry.length,
point: foAry
});
});
} catch (error) {}
this.roiBody.foreign_detection_region = {
region_count: foreignAry.length,
polygon: foreignAry
};
//测试检测区域
let testRegion = [];
try {
this.testRegionLayer.get(".rect").forEach((el, index) => {
let foAry = [];
let points = el.attrs.points;
for (let i = 0; i < points.length; i += 2) {
foAry.push({
point_seq: i / 2 + 1,
x: (points[i] / 800).toFixed(6),
y: (points[i + 1] / 500).toFixed(6)
});
}
testRegion.push({
polygon_id:el.polygon_id,
polygon_name:el.polygon_name,
polygon_point_count: foAry.length,
point: foAry
});
});
} catch (error) {}
this.roiBody.test_result_region = {
region_count: foreignAry.length,
polygon: testRegion
};
console.log(this.roiBody);
return this.oParse.writeXML({ roi: this.roiBody });
},
clear: function() {
(this.blueLines = []),
(this.roads = []),
(this.drawState = -1),
(this.smallWindow = false),
(this.roadFlag = ""),
(this.needRect = false),
(this.needLine = false),
(this.canvasState = 0),
(this.polygon_name = ''),
(this.polygon_id = ''),
(this.polyline = 0);
$(".modal-lt button").removeClass("active");
},
sortLinePoints(pointarr){
try{
let newpoint = [];
if((pointarr[1] - pointarr[3]) > 0){
newpoint[0] = pointarr[2]
newpoint[1] = pointarr[3]
newpoint[2] = pointarr[0]
newpoint[3] = pointarr[1]
} else {
newpoint = pointarr
}
return newpoint
}catch(err){
console.log(err)
}
},
changetestid(){
this.eventData.forEach(ele => {
if(ele.value == this.polygon_id){
this.polygon_name = ele.name
}
})
}
},
mounted() {
this.eventData = eventJson
// this.stageInit()
key('alt+1',()=>{
if(this.istest) {
this.istest = false
} else {
this.istest = true
}
})
}
};
</script>
<style scoped>
button {
cursor: pointer;
}
.modal-title {
float: left;
width: 93%;
overflow: hidden;
}
.modal-body {
height: 540px !important;
}
.modal-lt {
width: 100%;
margin-bottom: 10px;
text-align: center;
overflow: hidden;
}
.modal-lt button {
outline: none;
height: 30px;
line-height: 30px;
float: left;
padding: 0 10px;
border-radius: 15px;
margin: 0 0px 10px 15px;
background: #d7edff;
border: 1px solid rgba(59, 183, 255, 1);
cursor: pointer;
color: #666666;
}
.modal-lt .curmodal {
background: #d7edff !important;
border: 1px solid rgba(59, 183, 255, 1);
color: #3bb7ff;
}
.modal-editbox {
position: relative;
float: right;
min-height: 450px;
width: 22%;
color: #fff;
}
.modal-editbox .modal-lb {
position: absolute;
bottom: 0;
}
.modal-right {
position: relative;
float: left;
text-align: center;
}
.modal-editbox button {
display: block;
margin: 10px;
}
.modal-lb button {
float: left;
width: 90px;
margin-left: 15px;
}
#zone_list button.active {
background: #fff;
color: #3d6797;
}
#line_type {
display: none;
position: fixed;
top: 50%;
left: 50%;
width: 500px;
height: 340px;
margin-left: -250px;
margin-top: -150px;
z-index: 52;
color: #fff;
text-align: center;
line-height: 35px;
/* background: #409eff; */
background: rgba(1, 20, 51, 0.9);
}
#line_type.active {
display: block;
z-index: 1001;
opacity: 1;
}
#line_type p {
padding: 15px;
font-size: 17px;
font-weight: bold;
}
#line_type input {
width: 150px;
}
el-select {
width: 90px !important;
}
#line_type button {
color: #fff;
margin: 50px 2%;
width: 100px;
height: 35px;
line-height: 35px;
background: #3a51f2f7;
color: #fff;
border: 0;
}
#c1 {
position: absolute;
top: 0;
left: 0;
}
.pic {
position: absolute;
top: 0;
left: 0;
}
.pic img {
width: 800px;
height: 500px;
margin: 0;
padding: 0;
}
canvas {
margin: 0;
padding: 0;
}
.title {
/*background: url('../../../assets/18.png') no-repeat;*/
width: 24%;
height: 70px;
line-height: 50px;
margin: 0;
margin-left: 3.5%;
font-size: 25px;
letter-spacing: 10px;
display: inline-block;
}
.shadow {
display: none;
position: fixed;
left: 0;
top: 0;
z-index: 1000;
width: 100%;
height: 100%;
background: #000;
filter: alpha(opacity=50);
-moz-opacity: 0.5;
opacity: 0.5;
}
ul {
padding: 10px;
}
li {
width: 130px;
text-align: center;
}
.item {
width: 50%;
margin: 10px auto;
}
.item span {
display: inline-block;
width: 28%;
text-align: right;
}
.item div {
display: inline-block;
width: 70%;
}
.w120 {
width: 120px;
}
.mt10 {
margin-top: 10px;
}
.pedestrian-area-attr {
position: fixed;
top: 50%;
left: 50%;
width: 500px;
height: 300px;
margin-left: -250px;
margin-top: -150px;
z-index: 52;
color: #fff;
text-align: center;
line-height: 35px;
}
.pedestrian-area-attr .label {
width: 80px;
}
.pedestrian-area-attr input {
width: 200px !important;
opacity: 0.8;
height: 30px;
line-height: 30px;
border: 0px;
}
.mt40 {
margin-top: 40px;
}
.btn-box button {
height: 30px;
line-height: 30px;
width: 100px;
border: 0;
cursor: pointer;
background: #145b93;
color: #ffffff;
}
.delbtn {
color: #fff;
background: #e5e5e5;
}
</style>
b
<template>
<div>
<el-dialog title="标定设置" :visible.sync="dialogVisible" width="1000px" :before-close="handleClose">
<el-dialog
title="标定设置"
:visible.sync="dialogVisible"
width="1000px"
:before-close="handleClose"
>
<span>
<el-row>
<el-col :span="7" class="">
......@@ -8,7 +13,11 @@
<span class="bdheader-title">相机高度:</span>
</el-col>
<el-col :lg="15" :md="14">
<el-input type="text" v-model="traffic.cameraH" @input="setChangeModel"></el-input>
<el-input
type="text"
v-model="traffic.cameraH"
@input="setChangeModel"
></el-input>
</el-col>
</el-col>
<el-col :span="7" class="">
......@@ -16,7 +25,11 @@
<span class="bdheader-title">测量线长度:</span>
</el-col>
<el-col :lg="15" :md="14">
<el-input type="text" v-model="traffic.lineL" @input="setChangeModel"></el-input>
<el-input
type="text"
v-model="traffic.lineL"
@input="setChangeModel"
></el-input>
</el-col>
</el-col>
<el-col :span="6" class="">
......@@ -33,14 +46,24 @@
</el-row>
<el-row class="bdbody-box">
<div class="bdbody-left">
<div class="pic2"><img :src='src' /></div>
<div id='CaliContainer'></div>
<div class="pic2"><img :src="src" /></div>
<div id="CaliContainer"></div>
</div>
<div class="bdbody-right">
<div :class="{'line-type':true,'line-type-active':curType==0}" @click="changeState(0)">车辆模型线</div>
<div :class="{'line-type':true,'line-type-active':curType==1}" @click="changeState(1)">行人模型线</div>
<div
:class="{ 'line-type': true, 'line-type-active': curType == 0 }"
@click="changeState(0)"
>
车辆模型线
</div>
<div
:class="{ 'line-type': true, 'line-type-active': curType == 1 }"
@click="changeState(1)"
>
行人模型线
</div>
<div class="edit-box">
<el-radio-group v-model="canvasState" @change='changeCanvasState'>
<el-radio-group v-model="canvasState" @change="changeCanvasState">
<el-radio-button :label="1" class="editbtn">
<i class="el-icon-circle-plus icon"></i>
</el-radio-button>
......@@ -49,12 +72,15 @@
</el-radio-button>
</el-radio-group>
<div>
<span @click='delDraw' class="delbtn editbtn" v-if='!canvasState' >
<span
@click="delDraw"
class="delbtn editbtn"
v-if="!canvasState"
>
<i class="el-icon-delete icon"></i>
</span>
</div>
</div>
</div>
</el-row>
</span>
......@@ -66,649 +92,678 @@
</div>
</template>
<script>
import {
scRTEngineCalcBaseon6Points,
CalcCarOutline,
changeModelData
} from "../../../assets/js/CalibrationCalc.js"
import {
configxml
} from '../../../assets/js/configxml.js'
export default {
data() {
return {
dialogVisible: false,
curType: 0,
canvasState: 0,
data: {},
type: '0',
btnIsactive: false,
isShow: false,
canvasState: 0,
showClose: false,
needLine: false,
stage: {},
traffic: {
cameraH: '6.5',
ccd: '4:3',
lineL: '2.5'
},
shadowLayer: {},
signLayer: {},
measureLayer: {},
layers: [],
src: '',
editIndex: '',
drawState: 0,
changeIdnex: 0,
XMLStr: '',
modelnum: 0, //标记模型编号
bgUrl:'',
taskData:''
};
},
// props: ['bgUrl'],
methods: {
checkBrower: function () {},
showModal: function (data) {
this.$store.commit('setocxstate',0)
this.taskData = data;
this.dialogVisible = true;
this.curType = 0;
// let filePath = 'C:/Program Files (x86)/screen.jpg';
let cur_duid = data.task_id;
let subtask_id = data.task_id;
this.src = '';
this.$api.task.cutpic(data.vchan.vdev_unid, data.vchan.vchan_refid,data.subtask_id).then(res => {
import {
scRTEngineCalcBaseon6Points,
CalcCarOutline,
changeModelData
} from "../../../assets/js/CalibrationCalc.js";
import { configxml } from "../../../assets/js/configxml.js";
export default {
data() {
return {
dialogVisible: false,
curType: 0,
canvasState: 0,
data: {},
type: "0",
btnIsactive: false,
isShow: false,
canvasState: 0,
showClose: false,
needLine: false,
stage: {},
traffic: {
cameraH: "6.5",
ccd: "4:3",
lineL: "2.5"
},
shadowLayer: {},
signLayer: {},
measureLayer: {},
layers: [],
src: "",
editIndex: "",
drawState: 0,
changeIdnex: 0,
XMLStr: "",
modelnum: 0, //标记模型编号
bgUrl: "",
taskData: ""
};
},
// props: ['bgUrl'],
methods: {
checkBrower: function() {},
showModal: function(data) {
this.$store.commit("setocxstate", 0);
this.taskData = data;
this.dialogVisible = true;
this.curType = 0;
// let filePath = 'C:/Program Files (x86)/screen.jpg';
let cur_duid = data.task_id;
let subtask_id = data.task_id;
this.src = "";
this.$api.task
.cutpic(data.vchan.vdev_unid, data.vchan.vchan_refid, data.subtask_id)
.then(res => {
if (!res.ecode) {
this.src = "data:image/png;base64," + res.pic_base64;
} else {
alert('标定设置截图失败!' + res.enote);
alert("标定设置截图失败!" + res.enote);
}
}).catch(err => {
console.log('标定设置截图返回异常:', err.message);
})
// this.src = document.getElementById('VionVideo').CapturePicture(filePath) + '?stamp=' + new Date().getTime();
if (this.src) {
setTimeout(() => {
document.getElementsByClassName('pic2')[0].style.background = 'url(' + this.src + ') no-repeat';
document.getElementsByClassName('pic2')[0].style.backgroundSize = 'cover';
}, 0);
}
.catch(err => {
console.log("标定设置截图返回异常:", err.message);
});
// this.src = document.getElementById('VionVideo').CapturePicture(filePath) + '?stamp=' + new Date().getTime();
if (this.src) {
setTimeout(() => {
// console.log('截图地址为:', this.src)
// this.src = canvas.toDataURL('image/webp')
if (this.type != '1') {
this.stage = new Kinetic.Stage({
container: "CaliContainer", //<div>的id
width: 800, //创建的舞台宽度
height: 500 //创建的舞台高度
});
this.shadowLayer = new Kinetic.Layer({
id: "shadowLayer",
name: 'layer'
});
this.signLayer = new Kinetic.Layer({
id: "signLayer",
name: 'signLayer'
});
this.measureLayer = new Kinetic.Layer({
id: "measureLayer",
name: "measureLayer"
});
let shadow = new Kinetic.Rect({
x: 0, //矩形左上角x坐标
y: 0, //矩形左上角y坐标
width: 800, //矩形的宽度
height: 500, //矩形的高度
fill: 'rgba(255,255,255,.2)', //矩形的填充色
stroke: "black", //矩形边缘线的颜色
strokeWidth: 3 //矩形边缘线的宽度
});
let that = this
this.stage.on('click', function (evt) {
that.stageClick(evt)
})
document.getElementsByClassName("pic2")[0].style.background =
"url(" + this.src + ") no-repeat";
document.getElementsByClassName("pic2")[0].style.backgroundSize =
"cover";
}, 0);
}
setTimeout(() => {
// console.log('截图地址为:', this.src)
// this.src = canvas.toDataURL('image/webp')
if (this.type != "1") {
this.stage = new Kinetic.Stage({
container: "CaliContainer", //<div>的id
width: 800, //创建的舞台宽度
height: 500 //创建的舞台高度
});
this.shadowLayer = new Kinetic.Layer({
id: "shadowLayer",
name: "layer"
});
this.signLayer = new Kinetic.Layer({
id: "signLayer",
name: "signLayer"
});
this.measureLayer = new Kinetic.Layer({
id: "measureLayer",
name: "measureLayer"
});
let shadow = new Kinetic.Rect({
x: 0, //矩形左上角x坐标
y: 0, //矩形左上角y坐标
width: 800, //矩形的宽度
height: 500, //矩形的高度
fill: "rgba(255,255,255,.2)", //矩形的填充色
stroke: "black", //矩形边缘线的颜色
strokeWidth: 3 //矩形边缘线的宽度
});
let that = this;
this.stage.on("click", function(evt) {
that.stageClick(evt);
});
this.stage.on('mousemove', function (evt) {
that.stageMouseMove(evt)
})
this.shadowLayer.add(shadow)
this.stage.add(this.shadowLayer)
this.stage.add(this.signLayer)
this.layers = [this.signLayer]
}
console.log( this.taskData.mtasks[0].scenes[0].calibration)
let cal = this.taskData.mtasks[0].scenes[0].calibration
if (cal != undefined) {
this.configInit(cal.calibration)
}
}, 0)
},
configInit: function (xml) {
if (!xml) {
console.log('xml 为空!');
xml = configxml.xml
this.stage.on("mousemove", function(evt) {
that.stageMouseMove(evt);
});
this.shadowLayer.add(shadow);
this.stage.add(this.shadowLayer);
this.stage.add(this.signLayer);
this.layers = [this.signLayer];
}
let allline = [];
let obj = this.oParse.parseXML(xml).calibration
console.log(obj)
this.traffic.cameraH = obj.camera_height;
this.traffic.ccd = obj.ccd_width + ':' + obj.ccd_height;
this.traffic.lineL = obj.measure_line_length;
let lines = obj.cali_lines.cali_line
if (!lines) {
xml = configxml.xml
let obj = this.oParse.parseXML(xml).calibration
lines = obj.cali_lines.cali_line
console.log(this.taskData.calibration);
let cal = this.taskData.calibration;
if (cal === null || cal == undefined) {
this.configInit("");
}
lines.forEach((ele) => {
if (ele.lane_line_type == '6') {
let points = ele.line.point
let line = this.drawLine({
if (cal != undefined) {
this.configInit(cal.calibration);
}
}, 0);
},
configInit: function(xml) {
if (!xml) {
console.log("xml 为空!");
xml = configxml.xml;
}
let allline = [];
let obj = this.oParse.parseXML(xml).calibration;
console.log(obj);
this.traffic.cameraH = obj.camera_height;
this.traffic.ccd = obj.ccd_width + ":" + obj.ccd_height;
this.traffic.lineL = obj.measure_line_length;
let lines = obj.cali_lines.cali_line;
if (!lines) {
xml = configxml.xml;
let obj = this.oParse.parseXML(xml).calibration;
lines = obj.cali_lines.cali_line;
}
lines.forEach(ele => {
if (ele.lane_line_type == "6") {
let points = ele.line.point;
let line = this.drawLine(
{
x: points[0].x * 800,
y: points[0].y * 500
}, {
},
{
x: points[1].x * 800,
y: points[1].y * 500
}, '#ff0000', 6)
this.signLayer.add(line)
} else if (ele.lane_line_type == '8') {
let points = ele.line.point
let line = this.drawLine({
},
"#ff0000",
6
);
this.signLayer.add(line);
} else if (ele.lane_line_type == "8") {
let points = ele.line.point;
let line = this.drawLine(
{
x: points[0].x * 800,
y: points[0].y * 500
}, {
},
{
x: points[1].x * 800,
y: points[1].y * 500
}, 'blue', 8)
this.signLayer.add(line)
}
});
this.stage.draw()
},
beforeHideModal: function () {
this.clear()
this.stage.destroy()
this.isShow = false;
$('#VionVideo').show()
},
changeState: function (index) {
this.curType = index;
var e = e || window.event
this.drawState = index;
if (this.changeIdnex == index) {
return
},
"blue",
8
);
this.signLayer.add(line);
}
this.changeIdnex = index;
//清除之前的模型和模型线
let allLine = this.signLayer.get('.line');
let allModel = this.signLayer.get('.model');
let allarrows = this.signLayer.get('.arrows');
//清除模型线
allLine.map(e => {
if (e.attrs.linetype == 11) {
e.destroy();
}
});
//清除模型
allModel.map(e => {
e.destroy();
});
//清除箭头
allarrows.map(e => {
});
this.stage.draw();
},
beforeHideModal: function() {
this.clear();
this.stage.destroy();
this.isShow = false;
$("#VionVideo").show();
},
changeState: function(index) {
this.curType = index;
var e = e || window.event;
this.drawState = index;
if (this.changeIdnex == index) {
return;
}
this.changeIdnex = index;
//清除之前的模型和模型线
let allLine = this.signLayer.get(".line");
let allModel = this.signLayer.get(".model");
let allarrows = this.signLayer.get(".arrows");
//清除模型线
allLine.map(e => {
if (e.attrs.linetype == 11) {
e.destroy();
});
this.signLayer.draw();
//变换线模型
let mtype = index == 0 ? 'car' : 'person'
changeModelData(mtype)
},
}
});
//清除模型
allModel.map(e => {
e.destroy();
});
//清除箭头
allarrows.map(e => {
e.destroy();
});
this.signLayer.draw();
//变换线模型
let mtype = index == 0 ? "car" : "person";
changeModelData(mtype);
},
changeCanvasState: function () {
alert(1)
if (this.canvasState) {
this.cancleSelectedGroup()
changeCanvasState: function() {
alert(1);
if (this.canvasState) {
this.cancleSelectedGroup();
}
this.selectedShape = null;
},
stageClick: function(evt) {
if (this.canvasState) {
this.addShape(evt);
} else {
this.cancleSelectedGroup();
if (evt.target.className != "Rect") {
this.makeSelectedGroup(evt.target);
}
this.selectedShape = null
},
stageClick: function (evt) {
if (this.canvasState) {
this.addShape(evt)
} else {
this.cancleSelectedGroup()
if (evt.target.className != 'Rect') {
this.makeSelectedGroup(evt.target)
}
}
},
addShape: function(evt) {
this.needLine = false;
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
};
let layer = this.signLayer;
this.startChangeShape(pos, this.signLayer, "#ff0000");
},
//选择要移动的线
makeSelectedGroup: function(shape) {
let points = shape.attrs.points;
let color = this.drawState ? "blue" : "red";
for (let i = 0; i < points.length; i += 2) {
const pos = {
x: points[i],
y: points[i + 1]
};
let cir = this.drawCircle(pos, color, 5);
this.signLayer.add(cir);
}
this.selectedShape = shape;
this.signLayer.draw();
},
cancleSelectedGroup: function() {
if (!this.selectedShape) return;
let cirs = this.signLayer.get(".circle");
for (let i = 0; i < cirs.length; i++) {
const cir = cirs[i];
cir.destroy();
}
this.selectedShape = null;
this.editIndex = "";
this.signLayer.draw();
},
startChangeShape: function(pos, layer, col, types) {
let ary = layer.get(".circle");
let modelnum = this.modelnum;
if (ary.length == 0 && !this.needLine) {
let circle = this.drawCircle(pos, "rgba(255,255,255,.2)");
layer.add(circle);
this.needLine = true;
let lines = layer.get(".line");
let linenum = lines.length;
this.modelnum = linenum;
if (this.editIndex != "") {
linenum = this.editIndex;
}
},
addShape: function (evt) {
let line = this.drawLine(pos, pos, col, 11, linenum);
this.selectedShape = line;
layer.add(line);
} else {
let lines = layer.get(".line");
let lastLine = lines[lines.length - 1];
let points = lastLine.attrs.points;
lastLine.attrs.points = points;
layer.get(".circle")[0].destroy();
this.needLine = false;
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
}
let layer = this.signLayer;
this.startChangeShape(pos, this.signLayer, '#ff0000')
},
//选择要移动的线
makeSelectedGroup: function (shape) {
let points = shape.attrs.points
let color = this.drawState ? 'blue' : 'red'
for (let i = 0; i < points.length; i += 2) {
const pos = {
x: points[i],
y: points[i + 1]
};
let cir = this.drawCircle(pos, color, 5)
this.signLayer.add(cir)
//添加模型线
this.getModelData(points);
}
},
//g
getModelData(mlinepoints) {
/**
* 根据平行线和一个标定距离计算相机标定
* @param {float} fHeight //相机高度
* @param {float} fRatioW2H //图像宽高比
* @param {Array} Points //标定的6个点的相对坐标,前四个是一组平行线;最后两点是标定好的距离
* @param {float} fDist //标定最后两点的距离
*/
let points = [];
let layer = this.signLayer;
let lines = layer.get(".line");
lines.map(e => {
if (e.attrs.linetype == 6) {
let p = e.attrs.points;
let startpoint = {};
startpoint.x = Number((p[0] / 800).toFixed(6));
startpoint.y = Number((p[1] / 500).toFixed(6));
points.push(startpoint);
let endpoint = {};
endpoint.x = Number((p[2] / 800).toFixed(6));
endpoint.y = Number((p[3] / 500).toFixed(6));
points.push(endpoint);
}
this.selectedShape = shape
this.signLayer.draw()
},
cancleSelectedGroup: function () {
if (!this.selectedShape) return
let cirs = this.signLayer.get('.circle')
for (let i = 0; i < cirs.length; i++) {
const cir = cirs[i];
cir.destroy()
});
lines.map(e => {
if (e.attrs.linetype == 8) {
let p = e.attrs.points;
let startpoint = {};
startpoint.x = Number((p[0] / 800).toFixed(6));
startpoint.y = Number((p[1] / 500).toFixed(6));
points.push(startpoint);
let endpoint = {};
endpoint.x = Number((p[2] / 800).toFixed(6));
endpoint.y = Number((p[3] / 500).toFixed(6));
points.push(endpoint);
}
this.selectedShape = null
this.editIndex = '';
this.signLayer.draw()
},
});
let ccd = this.traffic.ccd.split(":");
let ccdnum = Number(ccd[0]) / Number(ccd[1]);
startChangeShape: function (pos, layer, col, types) {
let ary = layer.get('.circle');
let modelnum = this.modelnum;
if (ary.length == 0 && !this.needLine) {
let circle = this.drawCircle(pos, 'rgba(255,255,255,.2)')
layer.add(circle)
this.needLine = true
let lines = layer.get('.line')
let linenum = lines.length;
this.modelnum = linenum;
if (this.editIndex != '') {
linenum = this.editIndex
}
let line = this.drawLine(pos, pos, col, 11, linenum)
this.selectedShape = line
layer.add(line)
} else {
let lines = layer.get('.line')
let lastLine = lines[lines.length - 1]
let points = lastLine.attrs.points
lastLine.attrs.points = points
layer.get('.circle')[0].destroy()
this.needLine = false
//添加模型线
this.getModelData(points);
}
},
//g
getModelData(mlinepoints) {
/**
* 根据平行线和一个标定距离计算相机标定
* @param {float} fHeight //相机高度
* @param {float} fRatioW2H //图像宽高比
* @param {Array} Points //标定的6个点的相对坐标,前四个是一组平行线;最后两点是标定好的距离
* @param {float} fDist //标定最后两点的距离
*/
let points = [];
let layer = this.signLayer
let lines = layer.get('.line');
lines.map(e => {
if (e.attrs.linetype == 6) {
let p = e.attrs.points;
let startpoint = {};
startpoint.x = Number((p[0] / 800).toFixed(6));
startpoint.y = Number((p[1] / 500).toFixed(6));
points.push(startpoint);
let endpoint = {}
endpoint.x = Number((p[2] / 800).toFixed(6));;
endpoint.y = Number((p[3] / 500).toFixed(6));
points.push(endpoint);
}
});
lines.map(e => {
if (e.attrs.linetype == 8) {
let p = e.attrs.points;
let startpoint = {};
startpoint.x = Number((p[0] / 800).toFixed(6));
startpoint.y = Number((p[1] / 500).toFixed(6));
points.push(startpoint);
let endpoint = {}
endpoint.x = Number((p[2] / 800).toFixed(6));;
endpoint.y = Number((p[3] / 500).toFixed(6));
points.push(endpoint);
}
});
let ccd = this.traffic.ccd.split(':');
let ccdnum = Number(ccd[0]) / Number(ccd[1]);
scRTEngineCalcBaseon6Points(
Number(this.traffic.cameraH),
ccdnum,
points,
Number(this.traffic.lineL)
);
// var pointss = [{x:0.229125, y:0.783},{x:0.311625, y:0.407},{x:0.574125, y:0.797},{x:0.571625, y:0.403},{x:0.981625,y:0.565},{x:0.981625, y:0.805}]
// scRTEngineCalcBaseon6Points(7,1.7777,pointss,2.5);
/**
* CalcCarOutline
* 计算车或人的模型框点位
* @param {*} P1 模型线点
* @param {*} P2 模型线点
* @param {*} CarOutline 传入参数用于接收线的标注点
*/
let P1 = {},
P2 = {};
scRTEngineCalcBaseon6Points(Number(this.traffic.cameraH), ccdnum, points, Number(this.traffic.lineL));
// var pointss = [{x:0.229125, y:0.783},{x:0.311625, y:0.407},{x:0.574125, y:0.797},{x:0.571625, y:0.403},{x:0.981625,y:0.565},{x:0.981625, y:0.805}]
// scRTEngineCalcBaseon6Points(7,1.7777,pointss,2.5);
/**
* CalcCarOutline
* 计算车或人的模型框点位
* @param {*} P1 模型线点
* @param {*} P2 模型线点
* @param {*} CarOutline 传入参数用于接收线的标注点
*/
let P1 = {},
P2 = {};
P1.x = Number((mlinepoints[0] / 800).toFixed(6));
P1.y = Number((mlinepoints[1] / 500).toFixed(6));
P2.x = Number((mlinepoints[2] / 800).toFixed(6));
P2.y = Number((mlinepoints[3] / 500).toFixed(6));
//测试验证
P1.x = Number((mlinepoints[0] / 800).toFixed(6));
P1.y = Number((mlinepoints[1] / 500).toFixed(6));
P2.x = Number((mlinepoints[2] / 800).toFixed(6));
P2.y = Number((mlinepoints[3] / 500).toFixed(6));
//测试验证
let data = CalcCarOutline(P1, P2, [{}, {}, {}, {}, {}, {}, {}, {}]);
let data = CalcCarOutline(P1, P2, [{}, {}, {}, {}, {}, {}, {}, {}]);
this.drawModel(data);
this.drawModel(data);
this.drawArrows(P1, P2)
},
//绘制模型线
drawModel(data) {
if (this.editIndex != '') {
this.modelnum = this.editIndex;
this.drawArrows(P1, P2);
},
//绘制模型线
drawModel(data) {
if (this.editIndex != "") {
this.modelnum = this.editIndex;
}
data.map(e => {
e.x = e.x * 800;
e.y = e.y * 500;
});
let customShape = new Kinetic.Shape({
x: 0,
y: 0,
name: "model",
modelnum: this.modelnum,
// a Kinetic.Canvas renderer is passed into the drawFunc function
drawFunc: function(ctx) {
debugger;
ctx.beginPath();
ctx.lineTo(data[0].x, data[0].y);
ctx.lineTo(data[1].x, data[1].y);
ctx.lineTo(data[2].x, data[2].y);
ctx.lineTo(data[3].x, data[3].y);
ctx.lineTo(data[0].x, data[0].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[4].x, data[4].y);
ctx.lineTo(data[5].x, data[5].y);
ctx.lineTo(data[6].x, data[6].y);
ctx.lineTo(data[7].x, data[7].y);
ctx.lineTo(data[4].x, data[4].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[0].x, data[0].y);
ctx.lineTo(data[4].x, data[4].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[1].x, data[1].y);
ctx.lineTo(data[5].x, data[5].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[2].x, data[2].y);
ctx.lineTo(data[6].x, data[6].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[3].x, data[3].y);
ctx.lineTo(data[7].x, data[7].y);
ctx.stroke("red");
}
data.map(e => {
e.x = e.x * 800;
e.y = e.y * 500
})
let customShape = new Kinetic.Shape({
x: 0,
y: 0,
name: 'model',
modelnum: this.modelnum,
// a Kinetic.Canvas renderer is passed into the drawFunc function
drawFunc: function (ctx) {
debugger
ctx.beginPath();
ctx.lineTo(data[0].x, data[0].y);
ctx.lineTo(data[1].x, data[1].y);
ctx.lineTo(data[2].x, data[2].y);
ctx.lineTo(data[3].x, data[3].y);
ctx.lineTo(data[0].x, data[0].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[4].x, data[4].y);
ctx.lineTo(data[5].x, data[5].y);
ctx.lineTo(data[6].x, data[6].y);
ctx.lineTo(data[7].x, data[7].y);
ctx.lineTo(data[4].x, data[4].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[0].x, data[0].y);
ctx.lineTo(data[4].x, data[4].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[1].x, data[1].y);
ctx.lineTo(data[5].x, data[5].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[2].x, data[2].y);
ctx.lineTo(data[6].x, data[6].y);
ctx.stroke();
//
ctx.beginPath();
ctx.lineTo(data[3].x, data[3].y);
ctx.lineTo(data[7].x, data[7].y);
ctx.stroke('red');
}
});
this.signLayer.add(customShape)
this.signLayer.draw();
});
this.signLayer.add(customShape);
this.signLayer.draw();
},
//绘制箭头
drawArrows(c1, c2) {
let theta = 30;
let headlen = 10;
let width = 1;
let color = "#000";
// 计算各角度和对应的P2,P3坐标
var angle =
(Math.atan2(c1.y * 500 - c2.y * 500, c1.x * 800 - c2.x * 800) * 180) /
Math.PI,
angle1 = ((angle + theta) * Math.PI) / 180,
angle2 = ((angle - theta) * Math.PI) / 180,
topX = headlen * Math.cos(angle1),
topY = headlen * Math.sin(angle1),
botX = headlen * Math.cos(angle2),
botY = headlen * Math.sin(angle2);
var arrowX = c1.x * 800 - topX,
arrowY = c1.y * 500 - topY;
arrowX = c2.x * 800 + topX;
arrowY = c2.y * 500 + topY;
var arrowX1 = c2.x * 800 + botX;
var arrowY1 = c2.y * 500 + botY;
let Arrows = new Kinetic.Shape({
x: 0,
y: 0,
name: "arrows",
arrowsnum: this.modelnum,
// a Kinetic.Canvas renderer is passed into the drawFunc function
drawFunc: function(context) {
context.save();
context.beginPath();
context.lineTo(c2.x * 800, c2.y * 500);
context.lineTo(arrowX, arrowY);
context.stroke();
context.fillStrokeShape(this);
// KineticJS specific context method
context.beginPath();
context.moveTo(c2.x * 800, c2.y * 500);
context.lineTo(arrowX1, arrowY1);
context.stroke();
// KineticJS specific context method
context.fillStrokeShape(this);
},
stroke: "blue",
strokeWidth: 3
});
this.signLayer.add(Arrows);
this.signLayer.draw();
},
stageMouseMove: function(evt) {
if (!this.needLine) return;
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
};
let layer = this.signLayer;
let lines = layer.get(".line");
let points = lines[lines.length - 1].attrs.points;
points[points.length - 2] = pos.x;
points[points.length - 1] = pos.y;
layer.draw();
},
lineStop: function(layer) {
let start = layer.get(".circle")[0];
start.destroy();
this.needLine = false;
},
//绘制选择线的原点
drawCircle: function(pos, col, r) {
let size = r || 1;
let cir = new Kinetic.Circle({
x: pos.x,
y: pos.y,
fill: col,
radius: size,
name: "circle",
draggable: true
});
cir.on("dragmove", evt => {
if (this.canvasState) return;
evt.cancelBubble = true;
this.changeRect(evt);
});
return cir;
},
changeRect: function(evt) {
let rects = evt.target.getParent().get(".rect");
let cirs = evt.target.getParent().get(".circle");
let points = [];
cirs.forEach(ele => {
points.push(ele.attrs.x);
points.push(ele.attrs.y);
});
},
//绘制箭头
drawArrows(c1, c2) {
let theta = 30;
let headlen = 10;
let width = 1;
let color = "#000";
// 计算各角度和对应的P2,P3坐标
var angle = Math.atan2(c1.y * 500 - c2.y * 500, c1.x * 800 - c2.x * 800) * 180 / Math.PI,
angle1 = (angle + theta) * Math.PI / 180,
angle2 = (angle - theta) * Math.PI / 180,
topX = headlen * Math.cos(angle1),
topY = headlen * Math.sin(angle1),
botX = headlen * Math.cos(angle2),
botY = headlen * Math.sin(angle2);
var arrowX = c1.x * 800 - topX,
arrowY = c1.y * 500 - topY;
arrowX = c2.x * 800 + topX;
arrowY = c2.y * 500 + topY;
var arrowX1 = c2.x * 800 + botX;
var arrowY1 = c2.y * 500 + botY;
let Arrows = new Kinetic.Shape({
x: 0,
y: 0,
name: 'arrows',
arrowsnum: this.modelnum,
// a Kinetic.Canvas renderer is passed into the drawFunc function
drawFunc: function (context) {
context.save()
context.beginPath();
context.lineTo(c2.x * 800, c2.y * 500);
context.lineTo(arrowX, arrowY);
context.stroke();
context.fillStrokeShape(this);
// KineticJS specific context method
context.beginPath();
context.moveTo(c2.x * 800, c2.y * 500);
context.lineTo(arrowX1, arrowY1);
context.stroke();
// KineticJS specific context method
context.fillStrokeShape(this);
},
stroke: "blue",
strokeWidth: 3
});
this.signLayer.add(Arrows)
this.signLayer.draw();
},
stageMouseMove: function (evt) {
if (!this.needLine) return
let pos = {
x: evt.evt.offsetX,
y: evt.evt.offsetY
this.selectedShape.attrs.points = points;
let curmodelnun = this.selectedShape.attrs.linenum;
//标定线变化变换模型
if (
this.selectedShape.attrs.linetype == 8 ||
this.selectedShape.attrs.linetype == 6
) {
this.setChangeModel();
}
//模型线变化变换模型
if (this.selectedShape.attrs.linetype == 11) {
this.changeModel(curmodelnun);
}
this.signLayer.draw();
},
//根据模型线改变模型改变箭头
changeModel(modelnum) {
let mlinepoints = this.selectedShape.attrs.points;
let curmodel = this.signLayer.get(".model");
let arrows = this.signLayer.get(".arrows");
curmodel.map(e => {
this.editIndex = modelnum;
if (e.attrs.modelnum == modelnum) {
e.destroy();
}
let layer = this.signLayer
let lines = layer.get('.line');
let points = lines[lines.length - 1].attrs.points
points[points.length - 2] = pos.x
points[points.length - 1] = pos.y
layer.draw()
},
lineStop: function (layer) {
let start = layer.get('.circle')[0]
start.destroy()
this.needLine = false
},
//绘制选择线的原点
drawCircle: function (pos, col, r) {
let size = r || 1
let cir = new Kinetic.Circle({
x: pos.x,
y: pos.y,
fill: col,
radius: size,
name: 'circle',
draggable: true
});
cir.on("dragmove", (evt) => {
if (this.canvasState) return
evt.cancelBubble = true
this.changeRect(evt)
})
return cir
},
changeRect: function (evt) {
let rects = evt.target.getParent().get('.rect')
let cirs = evt.target.getParent().get('.circle')
let points = []
cirs.forEach((ele) => {
points.push(ele.attrs.x)
points.push(ele.attrs.y)
})
this.selectedShape.attrs.points = points
let curmodelnun = this.selectedShape.attrs.linenum;
//标定线变化变换模型
if (this.selectedShape.attrs.linetype == 8 || this.selectedShape.attrs.linetype == 6) {
this.setChangeModel();
});
arrows.map(e => {
this.editIndex = modelnum;
if (e.attrs.arrowsnum == modelnum) {
e.destroy();
}
//模型线变化变换模型
if (this.selectedShape.attrs.linetype == 11) {
this.changeModel(curmodelnun);
});
this.getModelData(mlinepoints);
},
//根据设置参数改变模型
setChangeModel() {
let curmodel = this.signLayer.get(".model").destroy();
this.signLayer.draw();
let allline = this.signLayer.get(".line");
//传入数据重新构建
allline.map(e => {
if (e.attrs.linetype == 11) {
this.editIndex = "";
this.modelnum = e.attrs.linenum;
let mlinepoints = e.attrs.points;
this.getModelData(mlinepoints);
}
this.signLayer.draw()
},
//根据模型线改变模型改变箭头
changeModel(modelnum) {
let mlinepoints = this.selectedShape.attrs.points;
let curmodel = this.signLayer.get('.model');
let arrows = this.signLayer.get('.arrows');
curmodel.map(e => {
this.editIndex = modelnum;
if (e.attrs.modelnum == modelnum) {
e.destroy()
}
})
arrows.map(e => {
this.editIndex = modelnum;
if (e.attrs.arrowsnum == modelnum) {
e.destroy()
}
})
this.getModelData(mlinepoints)
},
//根据设置参数改变模型
setChangeModel() {
let curmodel = this.signLayer.get('.model').destroy();
this.signLayer.draw();
let allline = this.signLayer.get('.line');
//传入数据重新构建
allline.map(e => {
if (e.attrs.linetype == 11) {
this.editIndex = '';
this.modelnum = e.attrs.linenum;
let mlinepoints = e.attrs.points;
this.getModelData(mlinepoints);
}
})
},
drawLine: function (start, end, col, types, linenum) {
linenum = linenum ? linenum : 0;
let points = [start.x, start.y, end.x, end.y]
let line = new Kinetic.Line({
x: 0,
points: points,
tension: 0.5,
closed: false,
stroke: col,
strokeWidth: 4,
name: 'line',
linetype: types,
linenum: linenum
});
let that = this
return line
},
delDraw: function () {
if (this.selectedShape.attrs.linetype == 6 || this.selectedShape.attrs.linetype == 8) {
return
});
},
drawLine: function(start, end, col, types, linenum) {
linenum = linenum ? linenum : 0;
let points = [start.x, start.y, end.x, end.y];
let line = new Kinetic.Line({
x: 0,
points: points,
tension: 0.5,
closed: false,
stroke: col,
strokeWidth: 4,
name: "line",
linetype: types,
linenum: linenum
});
let that = this;
return line;
},
delDraw: function() {
if (
this.selectedShape.attrs.linetype == 6 ||
this.selectedShape.attrs.linetype == 8
) {
return;
}
let modelIndex = this.selectedShape.attrs.linenum;
this.selectedShape.destroy();
let model = this.signLayer.get(".model");
let allarrows = this.signLayer.get(".arrows");
model.map(e => {
if (e.attrs.modelnum == modelIndex) {
e.destroy();
}
let modelIndex = this.selectedShape.attrs.linenum;
this.selectedShape.destroy();
let model = this.signLayer.get('.model');
let allarrows = this.signLayer.get('.arrows');
model.map(e => {
if (e.attrs.modelnum == modelIndex) {
e.destroy();
}
});
allarrows.map(e => {
if (e.attrs.arrowsnum == modelIndex) {
e.destroy();
}
})
this.cancleSelectedGroup()
this.selectedShape = null
this.stage.draw()
},
save: function () {
let ary = [];
let that = this;
let signLines = this.signLayer.get('.line')
if (signLines.length) {
signLines.forEach(function (ele, index) {
if (ele.attrs.linetype == 6 || ele.attrs.linetype == 8) {
let points = ele.attrs.points
ary.push({
cali_line_seq: index + 1,
lane_line_type: ele.attrs.linetype,
lane_no: 1,
line: {
polygon_point_count: 2,
point: [{
});
allarrows.map(e => {
if (e.attrs.arrowsnum == modelIndex) {
e.destroy();
}
});
this.cancleSelectedGroup();
this.selectedShape = null;
this.stage.draw();
},
save: function() {
let ary = [];
let that = this;
let signLines = this.signLayer.get(".line");
if (signLines.length) {
signLines.forEach(function(ele, index) {
if (ele.attrs.linetype == 6 || ele.attrs.linetype == 8) {
let points = ele.attrs.points;
ary.push({
cali_line_seq: index + 1,
lane_line_type: ele.attrs.linetype,
lane_no: 1,
line: {
polygon_point_count: 2,
point: [
{
point_seq: 1,
x: (points[0] / 800).toFixed(6),
y: (points[1] / 500).toFixed(6)
}, {
},
{
point_seq: 2,
x: (points[2] / 800).toFixed(6),
y: (points[3] / 500).toFixed(6)
}]
}
})
}
})
}
var obj = {
calibration: {
camera_height: this.traffic.cameraH,
ccd_width: this.traffic.ccd.split(':')[0],
ccd_height: this.traffic.ccd.split(':')[1],
measure_line_length: this.traffic.lineL,
cali_lines: {
cali_lines_count: ary.length,
cali_line: ary
}
}
]
}
});
}
});
}
var obj = {
calibration: {
camera_height: this.traffic.cameraH,
ccd_width: this.traffic.ccd.split(":")[0],
ccd_height: this.traffic.ccd.split(":")[1],
measure_line_length: this.traffic.lineL,
cali_lines: {
cali_lines_count: ary.length,
cali_line: ary
}
}
this.XMLstr = this.oParse.writeXML(obj)
this.$parent.submit(this.XMLstr, 'calibration',this.taskData)
this.dialogVisible = false;
},
clear: function () {
this.traffic = {
cameraH: '6.5',
ccd: '4:3',
lineL: '2.5'
},
this.drawState = -1,
this.XMLstr = ''
console.log(this.drawState)
},
};
this.XMLstr = this.oParse.writeXML(obj);
this.$parent.submit(this.XMLstr, "calibration", this.taskData);
this.dialogVisible = false;
},
clear: function() {
(this.traffic = {
cameraH: "6.5",
ccd: "4:3",
lineL: "2.5"
}),
(this.drawState = -1),
(this.XMLstr = "");
console.log(this.drawState);
},
handleClose(done) {
this.dialogVisible = false;
this.$store.commit('setocxstate',1)
}
handleClose(done) {
this.dialogVisible = false;
this.$store.commit("setocxstate", 1);
}
}
};
</script>
<style lang="stylus" scoped>
.bdheader-title{
......
......@@ -5,22 +5,19 @@
:data="taskInfo.mtasks[0].scenes"
border
stripe
style="width: 80%;float:left">
<el-table-column
label="序号"
type="index"
width="80">
style="width: 80%;float:left"
height="25vh"
>
<el-table-column label="序号" type="index" width="50" align="center">
</el-table-column>
<el-table-column
prop="name"
align="center"
label="预置位编号"
width="180">
width="180"
>
</el-table-column>
<el-table-column
align="center"
label="预设位置配置"
width="180">
<el-table-column align="center" label="预设位置配置" width="180">
<template>
<div class="yzw-setbox">
<span class="icon el-icon-folder-add"></span>
......@@ -28,122 +25,124 @@
</div>
</template>
</el-table-column>
<el-table-column
prop="address"
align="center"
label="参数设置">
<el-table-column prop="address" align="center" label="参数设置">
<template slot-scope="scope">
<div class="table-set">
<span @click="setParam(scope.row)">参数设置</span>
<span @click="setArea(scope.row)">区域设置</span>
<span @click="setDemarcate(scope.row)">标定设置</span>
<span @click="setTimer(scope.row)">时间设置</span>
<span @click="setParam(scope.row, scope.$index)">参数设置</span>
<span @click="setArea(scope.row, scope.$index)">区域设置</span>
<span @click="setDemarcate(scope.row, scope.$index)">标定设置</span>
<span @click="setTimer(scope.row, scope.$index)">时间设置</span>
</div>
</template>
</el-table-column>
</el-table>
<div class="setting-box">
<div class="set-header ">基础操作</div>
<div class="set-item" @click="setsounces">场景添加 <span class="set-icon el-icon-circle-plus"></span> </div>
<div class="set-item">轮询播放 <span class="set-icon">
<el-switch
:width="25"
v-model="switchstate"
>
</el-switch>
</span>
<div class="set-item" @click="setsounces">
场景添加 <span class="set-icon el-icon-circle-plus"></span>
</div>
<div class="set-item">
轮询播放
<span class="set-icon">
<el-switch :width="25" v-model="switchstate"> </el-switch>
</span>
</div>
<div class="set-item" @click="handleparam('upload')">
配置导入 <span class="set-icon el-icon-download"></span>
</div>
<div class="set-item" @click="handleparam('export')">
配置导出 <span class="set-icon el-icon-upload"></span>
</div>
<div class="set-item" @click="showview()">
效果展示 <span class="set-icon el-icon-s-help"></span>
</div>
<div class="set-item" @click="handleparam('upload')">配置导入 <span class="set-icon el-icon-download"></span> </div>
<div class="set-item" @click="handleparam('export')">配置导出 <span class="set-icon el-icon-upload"></span> </div>
<div class="set-item" @click="showview()">效果展示 <span class="set-icon el-icon-s-help"></span> </div>
</div>
<handleparam ref="handleparam"></handleparam>
</div>
<div class="yt-box">
<ytconfig ref="yt"></ytconfig>
</div>
<ytconfig ref="yt"></ytconfig>
</div>
<div>
<parameter ref="parameter"></parameter>
</div>
<div>
<areas ref="areas"></areas>
<areas ref="areas"></areas>
</div>
<div>
<demarcate ref="demarcate"></demarcate>
<demarcate ref="demarcate"></demarcate>
</div>
<div>
<el-dialog
title="时间设置"
:visible.sync="timerDialog"
width="18%"
top="15%"
:before-close="handleTimerClose">
<div class="settimertype">
<span class="title">时间长度:</span>
<div class="timer-sel">
<el-select v-model="timersel" placeholder="请选择">
<el-option
label="下拉选择"
:value="0">
</el-option>
<el-option
label="自定义"
:value="1">
</el-option>
</el-select>
</div>
<el-dialog
title="时间设置"
:visible.sync="timerDialog"
width="18%"
top="15%"
:before-close="handleTimerClose"
>
<div class="settimertype">
<span class="title">时间长度:</span>
<div class="timer-sel">
<el-select v-model="timersel" placeholder="请选择">
<el-option label="下拉选择" :value="0"> </el-option>
<el-option label="自定义" :value="1"> </el-option>
</el-select>
</div>
<div class="sel-box" v-show ="timersel == 0">
<span class="title">长度选择:</span>
<div class="timer-sel">
<el-select v-model="timer" placeholder="请选择">
<el-option
v-for="item in timeroptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</div>
</div>
<div class="sel-box" v-show="timersel == 0">
<span class="title">长度选择:</span>
<div class="timer-sel">
<el-select v-model="timer" placeholder="请选择">
<el-option
v-for="item in timeroptions"
:key="item"
:label="item"
:value="item"
>
</el-option>
</el-select>
</div>
<div class="sel-box" v-show ="timersel == 1">
<span class="title">时间长度:</span>
<div class="timer-sel">
<el-input v-model="timer" style="padding-right:23px"></el-input>
</div>
</div>
<div class="sel-box" v-show="timersel == 1">
<span class="title">时间长度:</span>
<div class="timer-sel">
<el-input v-model="timer" style="padding-right:23px"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleTimerClose">取 消</el-button>
<el-button type="primary" @click="submitTimer">确 定</el-button>
</span>
</el-dialog>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleTimerClose">取 消</el-button>
<el-button type="primary" @click="submitTimer">确 定</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import areas from './area'
import demarcate from './demarcate'
import parameter from './parameter'
import ytconfig from './ytconfig'
import handleparam from './handleparam'
import areas from "./area";
import demarcate from "./demarcate";
import parameter from "./parameter";
import ytconfig from "./ytconfig";
import handleparam from "./handleparam";
export default {
data(){
return{
timer:0,
timersel:0,
timerDialog:false,
timeroptions:[30,40,50,60,100],
timerscenes:null,
taskInfo:{
mtasks:[{
scenes:[]
}]
data() {
return {
timer: 0,
timersel: 0,
timerDialog: false,
curindex: 0,
timeroptions: [30, 40, 50, 60, 100],
timerscenes: null,
taskInfo: {
mtasks: [
{
scenes: []
}
]
},
switchstate:true,
}
switchstate: true
};
},
props:['taskid','subtaskid','playurl'],
components:{
props: ["taskid", "subtaskid", "playurl"],
components: {
areas,
demarcate,
parameter,
......@@ -151,132 +150,135 @@ export default {
handleparam
},
methods: {
setParam(){
this.$refs.parameter.init(this.taskInfo)
},
setArea(roidata){
this.$refs.areas.showModal(roidata,this.taskInfo)
},
setDemarcate(){
this.$refs.demarcate.showModal(this.taskInfo);
},
handleparam(type){
this.$refs.handleparam.show(type)
},
setsounces(){
this.$refs.yt.openyt()
},
getTaskParams(){
this.$api.task.getTaskParams(this.taskid,this.subtaskid).then(data => {
this.taskInfo = data
})
},
setTimer(data){
this.timerscenes = data;
this.$store.commit('setocxstate',0)
this.timerDialog = true;
},
handleTimerClose(){
this.timerDialog = false;
this.$store.commit('setocxstate',1)
},
submitTimer(item){
item.time_interval = this.timer
let data = {
subtask_id: this.subtaskid,
mtasks: mtasks
setParam(scenesdata, index) {
this.curindex = index;
this.$refs.parameter.init(scenesdata);
},
setArea(roidata, index) {
this.curindex = index;
this.$refs.areas.showModal(roidata, this.taskInfo);
},
setDemarcate(scenesdata, index) {
this.curindex = index;
this.$refs.demarcate.showModal(scenesdata);
},
handleparam(type) {
this.$refs.handleparam.show(type);
},
setsounces() {
this.$refs.yt.openyt();
},
getTaskParams() {
this.$api.task.getTaskParams(this.taskid, this.subtaskid).then(data => {
this.taskInfo = data;
});
},
setTimer(data) {
this.timerscenes = data;
this.$store.commit("setocxstate", 0);
this.timerDialog = true;
},
handleTimerClose() {
this.timerDialog = false;
this.$store.commit("setocxstate", 1);
},
submitTimer(item) {
this.taskInfo.mtasks[0].time_interval = this.timer;
let data = {
subtask_id: this.subtaskid,
mtasks: this.taskInfo.mtasks
};
this.$api.task.editRoi(this.taskid, this.subtaskid, data).then(res => {
if (res.ecode == 200) {
this.timerDialog = false;
this.$message({
message: res.enote,
type: "success"
});
this.$store.commit("setocxstate", 1);
}
});
},
showview() {
let routeData = this.$router.resolve({
name: "show",
query: {
taskid: this.taskid,
subtaskid: this.subtaskid,
playurl: this.playurl
}
this.$api.task.editRoi(this.taskid, this.subtaskid, data).then(res => {
if(res.code == 200) {
this.$message({
message: '设置成功!' ,
type: 'success'
});
this.$store.commit('setocxstate',1)
}
});
},
showview(){
this.$router.push({
name:'show',
params:{
taskid:this.taskid,
subtaskid:this.subtaskid,
playurl:this.playurl
window.open(routeData.href, '_blank');
},
submit: function(xml, type) {
let postObj = {
subtask_id: this.subtaskid,
mtasks: [
{
mtask_unid: this.taskInfo.mtasks[0].mtask_unid,
// type: 0,
// priority: 0,
scenes: this.taskInfo.mtasks[0].scenes
}
})
},
submit: function(xml,type) {
let postObj = {
subtask_id: this.subtaskid,
mtasks: [{
mtask_unid: this.taskInfo.mtasks[0].mtask_unid,
// type: 0,
// priority: 0,
scenes: [{
scene_unid: this.taskInfo.mtasks[0].scenes[0].scene_unid,
play_urls: {
rtsp: this.vchanUrl
},
// algo_args: {}
}]
}]
}
if (type == 'roi') {
postObj.mtasks[0].scenes[0].rois = [
{
roi: xml
}
]
} else if (type == 'config') {
postObj.mtasks[0].scenes[0].config = {
xml : xml
}
} else if (type == 'calibration'){
console.log(xml)
postObj.mtasks[0].scenes[0].calibration = {
calibration : xml
}
]
};
if (type == "roi") {
postObj.mtasks[0].scenes[this.curindex].rois = [
{
roi: xml
}
this.$api.task.editRoi(this.taskid,this.subtaskid,postObj,{
headers: {
'authorization': localStorage.getItem('atoken')
},
}
).then( m => {
if (m.ecode == '200') {
this.$message({
message: '设置成功!' ,
type: 'success'
});
switch (type) {
case 'roi':
this.taskInfo.mtasks[0].scenes[0].rois = [{
];
} else if (type == "config") {
postObj.mtasks[0].scenes[this.curindex].config = {
xml: xml
};
} else if (type == "calibration") {
console.log(xml);
postObj.mtasks[0].scenes[this.curindex].calibration = {
calibration: xml
};
}
this.$api.task
.editRoi(this.taskid, this.subtaskid, postObj, {
headers: {
authorization: localStorage.getItem("atoken")
}
})
.then(m => {
if (m.ecode == "200") {
this.$message({
message: "设置成功!",
type: "success"
});
switch (type) {
case "roi":
this.taskInfo.mtasks[0].scenes[this.curindex].rois = [
{
roi: xml
}]
break;
case 'calibration':
this.taskInfo.mtasks[0].scenes[0].calibration = {
calibration: xml
}
break;
default:
break;
}
];
break;
case "calibration":
this.taskInfo.mtasks[0].scenes[this.curindex].calibration = {
calibration: xml
};
break;
default:
break;
}
})
},
}
});
}
},
watch: {
subtaskid(val){
this.$api.task.getTaskParams(this.taskid,val).then(res => {
subtaskid(val) {
this.$api.task.getTaskParams(this.taskid, val).then(res => {
this.taskInfo = res;
console.log(res.data)
})
console.log(res.data);
});
}
},
}
}
};
</script>
<style lang="stylus" scoped>
.box{
......@@ -327,7 +329,7 @@ export default {
cursor pointer
.set-icon{
display inline-block
float right
float right
line-height 3vh
font-size 20px
color #CCCCCC
......@@ -340,7 +342,7 @@ export default {
margin-right 20px
}
.yt-box{
}
.settimertype,.sel-box{
display flex
......
<template>
<div>
<el-dialog
<el-dialog
title="参数设置"
:visible.sync="dialogVisible"
width="50%"
:before-close="handleClose">
:before-close="handleClose"
>
<span>
<iframe
id="iframe"
ref="iframe"
src="./dynamicParameters.html"
frameborder="0"
width="100%"
height="415"
scrolling="no"
></iframe>
<iframe
id="iframe"
ref="iframe"
src="./dynamicParameters.html"
frameborder="0"
width="100%"
height="415"
scrolling="no"
></iframe>
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</span>
</el-dialog>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
dialogVisible: false,
XMLStr:'',
basicXml:'',
taskData:""
};
},
return {
dialogVisible: false,
XMLStr: "",
basicXml: "",
taskData: ""
};
},
methods: {
init(data){
this.$store.commit('setocxstate',0)
init(data) {
this.$store.commit("setocxstate", 0);
this.dialogVisible = true;
this.taskData = data;
let that = this;
setTimeout(()=>{
that.xmlInit(data.mtasks[0].scenes[0]);
},800)
setTimeout(() => {
that.xmlInit(data);
}, 800);
},
balltaskinit(data){
this.$store.commit('setocxstate',0)
balltaskinit(data) {
this.$store.commit("setocxstate", 0);
this.dialogVisible = true;
setTimeout(()=>{
setTimeout(() => {
this.xmlInit(data);
},800)
}, 800);
},
xmlInit: function(obj) {
this.XMLStr =
obj.config.xml || '<?xml version="1.0" encoding="GBK"?><root></root>';
console.log("XML:" + this.XMLStr.split("@").length);
if (this.XMLStr.split("@").length > 1) {
this.XMLStr = '<?xml version="1.0" encoding="GBK"?><root></root>';
}
this.basicXml = obj.basicConfig.xml;
this.$refs.iframe.contentWindow.loadParameterTree(
this.basicXml,
this.XMLStr
);
},
xmlInit: function (obj) {
this.XMLStr = obj.config.xml || '<?xml version="1.0" encoding="GBK"?><root></root>'
console.log('XML:'+this.XMLStr.split('@').length)
if (this.XMLStr.split('@').length>1) {
this.XMLStr = '<?xml version="1.0" encoding="GBK"?><root></root>'
}
this.basicXml = obj.basicConfig.xml;
this.$refs.iframe.contentWindow.loadParameterTree(this.basicXml,this.XMLStr);
save: function() {
this.$refs.iframe.contentWindow.submit();
//ifram 传递回来的饿xml
this.XMLStr = this.$refs.iframe.contentWindow.xmlStr;
this.dialogVisible = false;
this.$parent.submit(this.XMLStr, "config");
},
save:function () {
this.$refs.iframe.contentWindow.submit();
//ifram 传递回来的饿xml
this.XMLStr = this.$refs.iframe.contentWindow.xmlStr;
this.dialogVisible = false;
this.$parent.submit(this.XMLStr,'config')
},
handleClose(done) {
this.dialogVisible = false;
this.$store.commit('setocxstate',1)
this.$store.commit("setocxstate", 1);
}
}
}
};
</script>
<style lang="stylus" scoped>
</style>
<style lang="stylus" scoped></style>
......@@ -5,70 +5,70 @@
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_UPLEFT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_UPLEFT')"
class="control-btn el-icon-top-left"
class="control-btn icon-fanxing-zuoshang"
></span>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_UP')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_UP')"
class="control-btn el-icon-top"
class="control-btn icon-fanxing-shang"
></span>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_UPRIGHT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_UPRIGHT')"
class="control-btn el-icon-top-right"
class="control-btn icon-fanxing-youshang"
></span>
</div>
<div>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_LEFT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_LEFT')"
class="control-btn el-icon-back"
class="control-btn icon-fanxing-zuo"
></span>
<span
@mousedown="Ytontroller('12')"
@mouseup="stopYtontroller('12')"
class="control-btn el-icon-refresh"
class="control-btn icon-fanxing-zhongzhi"
></span>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_RIGHT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_RIGHT')"
class="control-btn el-icon-right"
class="control-btn icon-fanxing-you"
></span>
</div>
<div>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_DOWNLEFT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_DOWNLEFT')"
class="control-btn el-icon-bottom-left"
class="control-btn icon-fanxing-zuoxia"
></span>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_DOWN')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_DOWN')"
class="control-btn el-icon-bottom"
class="control-btn icon-fanxing-xia"
></span>
<span
@mousedown="Ytontroller('SIP_CTRL_PTZ_DOWNRIGHT')"
@mouseup="stopYtontroller('SIP_CTRL_PTZ_DOWNRIGHT')"
class="control-btn el-icon-bottom-right"
class="control-btn icon-fanxing-youxia"
></span>
</div>
</div>
<div class="control-right-box">
<div class="slider-box">
<span class="title">光圈</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
<el-slider class="slider-item" v-model="value1" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">光倍</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
<el-slider class="slider-item" v-model="value2" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">焦距</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
<el-slider class="slider-item" v-model="value3" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">速度</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
<el-slider class="slider-item" v-model="value4" show-input></el-slider>
</div>
<div class="right-bottom-box">
<div class="setyzw item-box">
......@@ -99,7 +99,11 @@ export default {
data() {
return {
showyt: false,
value: ""
value: 0,
value1: 0,
value2: 0,
value3: 0,
value4: 0,
};
},
methods: {
......@@ -162,12 +166,13 @@ export default {
.control-btn {
height: 5vh;
margin-top: 2vh;
width: 3.5vw;
width: 3.8vw;
overflow: hidden;
font-size: 30px;
text-align: center;
color: #cccccc;
font-weight: 600;
display inline-block
}
}
......
......@@ -107,7 +107,7 @@
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......@@ -163,7 +163,7 @@
<el-button type="primary" @click="detailVisible = false">关 闭</el-button>
</span>
</el-dialog>
<curVideo ref="visableDialog" :playersrc="playurl"></curVideo>
<videoDialog ref="visableDialog" :playersrc="playurl"></videoDialog>
</div>
</template>
<script>
......
......@@ -142,11 +142,11 @@
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -115,7 +115,7 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -115,7 +115,7 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -173,11 +173,11 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -208,11 +208,11 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
......@@ -91,11 +91,11 @@
label="操作">
<template slot-scope="scope">
<el-tooltip content="详情" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon" @click="detailFun(scope.$index, scope.row)"></span>
<span class="el-icon-info editIcon" @click="detailFun(scope.$index, scope.row)"></span>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-detail delIcon" @click="delFun(scope.$index, scope.row)"></span>
<span class="el-icon-delete delIcon" @click="delFun(scope.$index, scope.row)"></span>
</el-tooltip>
</template>
</el-table-column>
......
<template>
<div class="expande-table-row">
<span class="label">视频源文件</span>
<span class="subtask-info">{{ subTaskData.vchan_name }}</span>
<span class="label">设备地址</span>
<span class="subtask-info">192.178.99.99</span>
<span class="label">已用资源</span>
<span class="subtask-info">22</span>
<span class="label">设备容量</span>
<span class="subtask-info">33</span>
<span class="label">指定设备下发</span>
<span class="subtask-info">
<el-select v-model="assign_id">
<el-option
v-for="(item, index) in freeList"
:key="index"
:value="item.device_id"
>
{{ item.in_ip }}
</el-option>
</el-select>
</span>
<span class="label sub-btn" @click="subMove">确定</span>
</div>
</template>
<script>
export default {
data() {
return {
assign_id: ""
};
},
props: ["subTaskData", "freeList", "taskData"],
methods: {
subMove() {
let taskID = this.taskData.task_id;
let subTaksID = this.subTaskData.subtask_id;
this.$api.task.getTaskParams(taskID, subTaksID).then(res => {
let obj = {};
obj.mtasks = res.mtasks;
obj.assign_to = {
id: this.assign_id,
flag: 0
};
this.subRoi(taskID, subTaksID, obj);
});
},
subRoi(taskid, subtaskid, postObj) {
this.$api.task
.editRoi(taskid, subtaskid, postObj, {
headers: {
authorization: localStorage.getItem("atoken")
}
})
.then(m => {
if (m.ecode == "200") {
this.$message({
message: "设置成功!",
type: "success"
});
}
});
}
},
created() {},
watch: {
subTaskData(val) {
console.log(val);
}
},
mounted() {
this.assign_id = this.subTaskData.assign_id
? this.subTaskData.assign_id
: "";
}
};
</script>
<style lang="scss" scoped>
.expande-table-row {
span {
float: left;
border-bottom: 1px solid #ccc;
overflow: hidden;
}
.label {
width: 6vw;
text-align: center;
border-left: 1px solid $border-color;
background: #f0f0f0;
height: 40px;
line-height: 40px;
}
.subtask-info {
border-left: 1px solid #f0f0f0;
text-align: center;
overflow: hidden;
height: 40px;
line-height: 40px;
}
.subtask-info:nth-child(2) {
width: 9vw;
overflow: hidden;
}
.subtask-info:nth-child(4) {
width: 6vw;
}
.subtask-info:nth-child(6) {
width: 4.5vw;
}
.subtask-info:nth-child(8) {
width: 4vw;
}
.subtask-info:nth-child(10) {
width: 12vw;
}
.sub-btn {
cursor: pointer;
}
}
</style>
......@@ -28,19 +28,20 @@
</el-select>
</el-form-item>
<el-form-item label="场景占用">
<el-select
v-model="formData.type"
<el-input
v-model="formData.resource_use"
placeholder="请选择"
:popper-append-to-body="false"
>
<el-option key="1" label="全部" value></el-option>
<el-option key="2" label="222" value="2"></el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="时间计划">
<el-input v-model="formData.type"></el-input>
<el-select v-model="formData.period">
<el-option value="true" label="全天"></el-option>
<el-option value="false" label="时间"></el-option>
</el-select>
</el-form-item>
<el-form-item label="时间">
<el-form-item label="时间" v-show="formData.plate_time != 'day'">
<el-date-picker
style="width:100%"
v-model="formData.timer"
......@@ -65,6 +66,12 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备类型">
<el-input
v-model="formData.plate_type"
placeholder="请选择"
></el-input>
</el-form-item>
<el-form-item label="优先级">
<el-select
v-model="formData.priority"
......@@ -127,7 +134,9 @@ export default {
store_conf: {
unid: ""
},
priority: ""
priority: "",
plate_type: "",
plate_time: "",
};
}
if (type == "edit") {
......@@ -178,6 +187,9 @@ export default {
end_dt: this.setUtcTime(this.formData.timer[1]),
priority: this.formData.priority,
store_conf_unid: this.formData.store_conf.unid,
period: this.formData.period,
plate_type: this.formData.plate_type,
resource_use: this.formData.resource_use,
task_type: "normal"
// algo_comb_unid: this.formData.store_conf,
};
......
......@@ -57,7 +57,7 @@
></el-table-column>
<el-table-column
align="center"
prop="status"
prop="running_status"
label="视频状态"
></el-table-column>
<el-table-column
......@@ -74,7 +74,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-Migration moveIcon"
class="icon-fanxing-qianyi moveIcon"
@click="moveFun(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -86,7 +86,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-detail delIcon"
class="el-icon-delete delIcon"
@click="delFun(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -115,6 +115,7 @@ export default {
user_unid: "",
formData: {},
editData: {},
taskData:{},
setvisible: false,
props: {
id: "vchan_refid",
......@@ -152,6 +153,7 @@ export default {
},
methods: {
showModal(val) {
this.taskData = val;
this.tableData = [];
this.setvisible = true;
this.$store.commit("setocxstate", 1);
......@@ -164,12 +166,14 @@ export default {
data[i].vchan.subtask_id = data[i].subtask_id;
data[i].vchan.refid = data[i].vchan.vchan_refid;
data[i].vchan.name = data[i].vchan.vchan_name;
data[i].vchan.running_status = data[i].running_status
} else {
data.vchan = {
subtask_id: data[i].subtask_id,
refid: "",
vchan_name: data[i].subtask_name,
name: data[i].subtask_name
name: data[i].subtask_name,
running_status: data[i].running_status
};
}
ary.push(data[i].vchan);
......@@ -184,7 +188,8 @@ export default {
if (this.tableData.length > 0) {
for (let i = 0; i < this.tableData.length; i++) {
if (this.tableData[i].vchan_id == data.vchan_id) {
this.tableData.splice(i, 1);
this.delFun(i, this.tableData[i],'tree')
staus = true;
break;
}
......@@ -195,6 +200,12 @@ export default {
staus = false;
}
},
editTask(data) {
// let data = this.taskData;
this.$api.task.editTask(data, data.task_id).then(res => {
this.$emit("refresh");
});
},
editsubTask(vchan) {
let data = {
is_dome: false,
......@@ -206,6 +217,7 @@ export default {
vchan_name: vchan.name
}
};
this.$api.task.editSubTask(this.editData.task_id, data).then(res => {
this.tableData.push(vchan);
});
......@@ -213,14 +225,18 @@ export default {
playVideo(data) {
console.log("b", data);
},
delFun(index, data) {
debugger;
delFun(index, data, action= "tree") {
this.$api.task
.deleteSubTask(this.editData.task_id, data.subtask_id)
.then(res => {
this.tableData.splice(index, 1);
this.checkvckan();
});
this.checkvckan();
if (action != "tree") {
setTimeout(() => {
this.checkvckan();
}, 0);
}
},
append(data) {
const newChild = { id: id++, label: "testtest", children: [] };
......@@ -423,7 +439,9 @@ export default {
this.$store.commit("setocxstate", 0);
this.$refs.tree.setCheckedKeys([]);
},
save() {},
save() {
this.setvisible = false;
},
moveFun(index, row) {
this.innerVisible = true;
}
......
......@@ -65,40 +65,26 @@
>
</span>
</div>
<div style="padding: 0 23px 20px 23px;width:99%">
<div style="padding: 0 23px 20px 23px;width:98%">
<el-table
height="574"
height="50vh"
:data="tableData"
stripe
border
ref="table"
ref="table"
style="width: 100%"
@expand-change="expandchange"
:expand-row-keys="rowkey"
>
<el-table-column type="expand">
<template slot-scope="props">
<div
<subTaskInfo
v-for="(item, index) in props.row.subTaskData"
:key="index"
class="expande-table-row"
:subTaskData="item"
:taskData="props.row"
:freeList="freeList"
>
<span class="label">视频源文件</span>
<span class="subtask-info">{{item.vchan_name}}</span>
<span class="label">设备地址</span>
<span class="subtask-info">192.178.99.99</span>
<span class="label">已用资源</span>
<span class="subtask-info">22</span>
<span class="label">设备容量</span>
<span class="subtask-info">33</span>
<span class="label">指定设备下发</span>
<span class="subtask-info">
<el-select>
<el-option>sss</el-option>
</el-select>
</span>
<span class="label">确定</span>
</div>
</subTaskInfo>
</template>
</el-table-column>
<el-table-column
......@@ -134,6 +120,8 @@
</el-table-column>
<el-table-column align="center" prop="workers_count" label="资源用量">
</el-table-column>
<el-table-column align="center" prop="workers_count" label="设备类型">
</el-table-column>
<el-table-column
align="center"
prop="priority"
......@@ -144,7 +132,6 @@
<el-table-column
align="center"
prop="start_dt"
width="200"
:formatter="dateFormatter"
label="时间计划"
>
......@@ -163,7 +150,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-xiugai editIcon"
class="icon-fanxing-xiugai editIcon"
@click="editVideo(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -175,7 +162,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-xiugai editIcon2"
class="icon-fanxing-xiugai editIcon2"
@click="editTask('edit', scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -187,7 +174,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-bofang playIcon"
class="icon-fanxing-qidong playIcon"
@click="setTaskStatus(scope.row, 'start')"
></span>
</el-tooltip>
......@@ -199,7 +186,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-zanting pauseIcon"
class="icon-fanxing-zanting pauseIcon"
@click="setTaskStatus(scope.row, 'stop')"
></span>
</el-tooltip>
......@@ -211,7 +198,7 @@
:visible-arrow="false"
>
<span
class="iconfont icon-detail delIcon"
class="el-icon-delete delIcon"
@click="delFun(scope.$index, scope.row)"
></span>
</el-tooltip>
......@@ -252,6 +239,7 @@
<script>
import editset from "./editSet";
import editvideo from "./editVideo";
import subTaskInfo from "./subtask.vue";
export default {
data() {
return {
......@@ -260,23 +248,27 @@ export default {
task_algo_type: "",
total: 0,
page: 1,
freeList: [],
pageSize: 30,
setShow: false,
videoShow: false,
editForm: {},
tableData: [],
subTaskData: [],
pedittype: "add",
currentRow:{},
rowkey:["1"]
subTaskData: [],
pedittype: "add",
currentRow: {},
assign_ip: ""
};
},
components: {
editset,
editvideo
editvideo,
subTaskInfo
},
mounted() {
this.getTaskList();
this.getFreelist();
},
methods: {
expandchange(row, prow) {
......@@ -291,12 +283,14 @@ export default {
data[i].vchan.subtask_id = data[i].subtask_id;
data[i].vchan.refid = data[i].vchan.vchan_refid;
data[i].vchan.name = data[i].vchan.vchan_name;
data[i].vchan.assign_id = data[i].assign_to ?data[i].assign_to.id : "";
} else {
data.vchan = {
subtask_id: data[i].subtask_id,
refid: "",
vchan_name: data[i].subtask_name,
name: data[i].subtask_name
name: data[i].subtask_name,
assign_id: data[i].assign_id ? data[i].assign_to.id : ""
};
}
ary.push(data[i].vchan);
......@@ -334,6 +328,12 @@ export default {
return "未知";
}
},
getFreelist() {
this.$api.device.getFreelist(this.dev_unid).then(res => {
this.freeList = res.list_data;
});
// /
},
dateFormatter(row, column, cellValue, index) {
let startDate = cellValue ? cellValue.split(" ")[0] : "";
let endDate = row.end_dt ? row.end_dt.split(" ")[0] : "";
......@@ -389,7 +389,7 @@ export default {
this.tableData = [];
} else {
res.list_data.forEach(item => {
item.subTaskData = []
item.subTaskData = [];
if (item.start_dt) {
//先转utc格式
let date = this.$moment.utc(item.start_dt).format();
......@@ -583,38 +583,20 @@ export default {
color: #f2365a;
font-size: 16px;
}
.expande-table-row {
span {
display: inline-block;
}
.label {
width: 6vw;
text-align: center;
border-left: 1px solid $border-color;
background: #f0f0f0;
}
.subtask-info {
border-left: 1px solid #f0f0f0;
text-align: center;
}
.subtask-info:nth-child(2) {
width: 8vw;
}
.subtask-info:nth-child(4) {
width: 6vw;
}
.subtask-info:nth-child(6) {
width: 4.5vw;
}
.subtask-info:nth-child(8) {
width: 4vw;
}
.subtask-info:nth-child(10) {
width: 12vw;
}
line-height: 40px;
border-bottom: 1px solid #f0f0f0;
.subtask-info:nth-child(2) {
width: 8vw;
}
.subtask-info:nth-child(4) {
width: 6vw;
}
.subtask-info:nth-child(6) {
width: 4.5vw;
}
.subtask-info:nth-child(8) {
width: 4vw;
}
.subtask-info:nth-child(10) {
width: 12vw;
}
</style>
<template>
<div class="expande-table-row">
<span class="label">视频源文件</span>
<span class="subtask-info">{{ subTaskData.vchan_name }}</span>
<span class="label">设备地址</span>
<span class="subtask-info">192.178.99.99</span>
<span class="label">已用资源</span>
<span class="subtask-info">22</span>
<span class="label">设备容量</span>
<span class="subtask-info">33</span>
<span class="label">指定设备下发</span>
<span class="subtask-info">
<el-select v-model="assign_id">
<el-option
v-for="(item, index) in freeList"
:key="index"
:value="item.device_id"
>
{{ item.in_ip }}
</el-option>
</el-select>
</span>
<span class="label sub-btn" @click="subMove">确定</span>
</div>
</template>
<script>
export default {
data() {
return {
assign_id: ""
};
},
props: ["subTaskData", "freeList", "taskData"],
methods: {
subMove() {
let taskID = this.taskData.task_id;
let subTaksID = this.subTaskData.subtask_id;
this.$api.task.getTaskParams(taskID, subTaksID).then(res => {
let obj = {};
obj.mtasks = res.mtasks;
obj.assign_to = {
id: this.assign_id,
flag: 0
};
this.subRoi(taskID, subTaksID, obj);
});
},
subRoi(taskid, subtaskid, postObj) {
this.$api.task
.editRoi(taskid, subtaskid, postObj, {
headers: {
authorization: localStorage.getItem("atoken")
}
})
.then(m => {
if (m.ecode == "200") {
this.$message({
message: "设置成功!",
type: "success"
});
}
});
}
},
created() {},
watch: {
},
mounted() {
this.assign_id = this.subTaskData.assign_id
? this.subTaskData.assign_id
: "";
}
};
</script>
<style lang="scss" scoped>
.expande-table-row {
overflow: hidden;
span {
float: left;
border-bottom: 1px solid #ccc;
overflow: hidden;
}
.label {
width: 6vw;
text-align: center;
border-left: 1px solid $border-color;
background: #f0f0f0;
height: 40px;
line-height: 40px;
}
.subtask-info {
border-left: 1px solid #f0f0f0;
text-align: center;
overflow: hidden;
height: 40px;
line-height: 40px;
}
.subtask-info:nth-child(2) {
width: 9vw;
overflow: hidden;
}
.subtask-info:nth-child(4) {
width: 6vw;
}
.subtask-info:nth-child(6) {
width: 4.5vw;
}
.subtask-info:nth-child(8) {
width: 4vw;
}
.subtask-info:nth-child(10) {
width: 12vw;
}
.sub-btn {
cursor: pointer;
}
}
</style>
......@@ -2,12 +2,29 @@
<div class="alarm-event-box">
<el-table :data="tableData" height="30vh">
<el-table-column type="index" align="center" label="#"></el-table-column>
<el-table-column align="center" prop="camername" label="事件地点"></el-table-column>
<el-table-column align="center" prop="illname" label="抓拍类型"></el-table-column>
<el-table-column align="center" prop="illdt" label="发生时间"></el-table-column>
<el-table-column
align="center"
prop="camername"
label="事件地点"
></el-table-column>
<el-table-column
align="center"
prop="illname"
label="抓拍类型"
></el-table-column>
<el-table-column
align="center"
prop="illdt"
label="发生时间"
></el-table-column>
<el-table-column align="center" prop="operation" label="操作">
<template slot-scope="scope">
<el-tooltip content="查看" placement="bottom" effect="light" :visible-arrow="false">
<el-tooltip
content="查看"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<img
src="../../assets/img/home/look.png"
alt
......@@ -16,7 +33,12 @@
/>
</el-tooltip>
<span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow="false">
<el-tooltip
content="删除"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<img
src="../../assets/img/home/del.png"
alt
......@@ -34,93 +56,104 @@
export default {
data() {
return {
tableData:[]
}
tableData: []
};
},
methods:{
methods: {
delFun(index, rows) {
rows.splice(index, 1);
},
editVideo(index, rows){
this.$emit('event',rows)
},
editVideo(index, rows) {
this.$emit("event", rows);
}
},
beforeMount(){
let that = this;
this.connect_id = new Date().getTime()
// this.cws = new WebSocket('ws://'+ this.API.IP +'/websocket/v1/integrated/connects/' + this.connect_id)
this.cws = new WebSocket(`ws://${this.$api.wsIP}/websocket/api/v1/datahandle/connects/${this.connect_id}`)
beforeMount() {
try {
let that = this;
this.connect_id = new Date().getTime();
// this.cws = new WebSocket('ws://'+ this.API.IP +'/websocket/v1/integrated/connects/' + this.connect_id)
this.cws = new WebSocket(
`ws://${this.$api.wsIP}/websocket/api/v1/datahandle/connects/${this.connect_id}`
);
this.cws.onopen = () =>{
console.log('ws事件推送服务连接成功')
}
//事件断开
this.cws.onclose = () =>{
window.clearTimeout(that.keepAlive)
console.log('ws事件推送服务断开')
that.connect_id = new Date().getTime()
that.cws = new WebSocket(`ws://${this.$api.wsIP}/websocket/api/v1/datahandle/connects/${this.connect_id}`)
this.cws.onopen = () => {
console.log("ws事件推送服务连接成功");
};
//事件断开
this.cws.onclose = () => {
window.clearTimeout(that.keepAlive);
console.log("ws事件推送服务断开");
that.connect_id = new Date().getTime();
that.cws = new WebSocket(
`ws://${this.$api.wsIP}/websocket/api/v1/datahandle/connects/${this.connect_id}`
);
that.keepAlive = setInterval(() => {
let message = {
type: 'request',
type: "request",
id: new Date().getTime(),
mts: new Date().getTime(),
command:'get /websocket/v1/recv_data/connects/' + this.connect_id +'/keep_alive'
}
this.cws.send(JSON.stringify(message))
command:
"get /websocket/v1/recv_data/connects/" +
this.connect_id +
"/keep_alive"
};
this.cws.send(JSON.stringify(message));
}, 20000);
}
//事件推送信息
let _this = this;
this.cws.onmessage = (evt) =>{
let data = JSON.parse(evt.data)
try {
if(data.event_data.illegal.state == 1){
let illname = _this.getCode('违法类型',data.event_data.illegal.code) || '';
let camername = data.event_data.location.name
let dt = this.showLocalTime(data.event_dt).split(' ')[1];
console.log(data.pics[0].src_url)
let pics = data.pics[0].src_url
let pos = data.event_data.location.pos
let obj = {
illname:illname,
illdt:dt,
camername:camername,
pics:pics,
pos:pos
}
if(that.tableData.length > 40) {
that.tableData.pop(obj)
};
//事件推送信息
let _this = this;
this.cws.onmessage = evt => {
let data = JSON.parse(evt.data);
try {
if (data.event_data.illegal.state == 1) {
let illname =
_this.getCode("违法类型", data.event_data.illegal.code) || "";
let camername = data.event_data.location.name;
let dt = this.showLocalTime(data.event_dt).split(" ")[1];
console.log(data.pics[0].src_url);
let pics = data.pics[0].src_url;
let pos = data.event_data.location.pos;
let obj = {
illname: illname,
illdt: dt,
camername: camername,
pics: pics,
pos: pos
};
if (that.tableData.length > 40) {
that.tableData.pop(obj);
} else {
that.tableData.unshift(obj)
}
that.tableData.unshift(obj)
} else{
that.tableData.unshift(obj);
}
that.tableData.unshift(obj);
}
} catch (error) {
console.log(error);
}
} catch (error) {
}
if(data.command){
console.log('推送服务连接正常')
} else if(data.type =='response'){
console.log('请求任务推送成功')
if (data.command) {
console.log("推送服务连接正常");
} else if (data.type == "response") {
console.log("请求任务推送成功");
}
}
};
this.keepAlive = setInterval(() => {
let message = {
type: 'request',
id: new Date().getTime(),
mts: new Date().getTime(),
command:'get /websocket/v1/recv_data/connects/' + this.connect_id +'/keep_alive'
}
this.cws.send(JSON.stringify(message))
}, 50000);
let message = {
type: "request",
id: new Date().getTime(),
mts: new Date().getTime(),
command:
"get /websocket/v1/recv_data/connects/" +
this.connect_id +
"/keep_alive"
};
this.cws.send(JSON.stringify(message));
}, 50000);
} catch (error) {
console.log(error);
}
}
};
</script>
<style>
</style>>
\ No newline at end of file
<style></style>>
......@@ -2553,7 +2553,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
dependencies:
ms "2.0.0"
debug@3.2.6, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6:
debug@3.2.6, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
version "3.2.6"
resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
dependencies:
......@@ -2596,10 +2596,6 @@ deep-equal@^1.0.1:
object-keys "^1.1.1"
regexp.prototype.flags "^1.2.0"
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
......@@ -2687,10 +2683,6 @@ destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
detect-node@^2.0.4:
version "2.0.4"
resolved "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
......@@ -3501,12 +3493,6 @@ fs-extra@^7.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.5:
version "1.2.7"
resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.7.tgz?cache=0&sync_timestamp=1579628689954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
dependencies:
minipass "^2.6.0"
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz?cache=0&sync_timestamp=1579628689954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
......@@ -3988,7 +3974,7 @@ human-signals@^1.1.1:
version "1.1.1"
resolved "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
dependencies:
......@@ -4008,12 +3994,6 @@ iferr@^0.1.5:
version "0.1.5"
resolved "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
ignore-walk@^3.0.1:
version "3.0.3"
resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
dependencies:
minimatch "^3.0.4"
ignore@^3.3.5:
version "3.3.10"
resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
......@@ -4104,10 +4084,6 @@ inherits@2.0.3:
version "2.0.3"
resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
ini@~1.3.0:
version "1.3.5"
resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
inquirer@^6.2.2:
version "6.5.2"
resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz?cache=0&sync_timestamp=1579939863311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca"
......@@ -4986,25 +4962,12 @@ minipass-pipeline@^1.2.2:
dependencies:
minipass "^3.0.0"
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
version "2.9.0"
resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz?cache=0&sync_timestamp=1571953917221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminipass%2Fdownload%2Fminipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"
minipass@^3.0.0, minipass@^3.1.1:
version "3.1.1"
resolved "https://registry.npm.taobao.org/minipass/download/minipass-3.1.1.tgz?cache=0&sync_timestamp=1571953917221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminipass%2Fdownload%2Fminipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
dependencies:
yallist "^4.0.0"
minizlib@^1.2.1:
version "1.3.3"
resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.3.3.tgz?cache=0&sync_timestamp=1570255638980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminizlib%2Fdownload%2Fminizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
dependencies:
minipass "^2.9.0"
mississippi@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
......@@ -5157,14 +5120,6 @@ natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
needle@^2.2.1:
version "2.3.2"
resolved "https://registry.npm.taobao.org/needle/download/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528"
dependencies:
debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
......@@ -5247,21 +5202,6 @@ node-libs-browser@^2.2.1:
util "^0.11.0"
vm-browserify "^1.0.1"
node-pre-gyp@*:
version "0.14.0"
resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-pre-gyp%2Fdownload%2Fnode-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
needle "^2.2.1"
nopt "^4.0.1"
npm-packlist "^1.1.6"
npmlog "^4.0.2"
rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^4.4.2"
node-releases@^1.1.47:
version "1.1.47"
resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.47.tgz?cache=0&sync_timestamp=1579641052401&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4"
......@@ -5300,13 +5240,6 @@ nodent-runtime@^3.2.1:
dependencies:
abbrev "1"
nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
dependencies:
abbrev "1"
osenv "^0.1.4"
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
......@@ -5351,24 +5284,6 @@ normalize-wheel@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45"
npm-bundled@^1.0.1:
version "1.1.1"
resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
dependencies:
npm-normalize-package-bin "^1.0.1"
npm-normalize-package-bin@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/npm-normalize-package-bin/download/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
npm-packlist@^1.1.6:
version "1.4.8"
resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.8.tgz?cache=0&sync_timestamp=1579784145028&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-packlist%2Fdownload%2Fnpm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
npm-normalize-package-bin "^1.0.1"
npm-run-path@^2.0.0:
version "2.0.2"
resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
......@@ -5381,7 +5296,7 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
version "4.1.2"
resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
dependencies:
......@@ -5588,7 +5503,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
osenv@0, osenv@^0.1.4:
osenv@0:
version "0.1.5"
resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
dependencies:
......@@ -5724,6 +5639,10 @@ parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
particles.js@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/particles.js/download/particles.js-2.0.0.tgz#21386c4328d6c7f96780a201e96eedfc09c736f6"
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
......@@ -6367,15 +6286,6 @@ rbush@^3.0.1:
dependencies:
quickselect "^2.0.0"
rc@^1.2.7:
version "1.2.8"
resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
dependencies:
deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
read-pkg-up@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
......@@ -6724,7 +6634,7 @@ sass-loader@^8.0.0:
schema-utils "^2.6.1"
semver "^6.3.0"
sax@^1.2.4, sax@~1.2.4:
sax@~1.2.4:
version "1.2.4"
resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
......@@ -6766,7 +6676,7 @@ selfsigned@^1.10.7:
dependencies:
node-forge "0.9.0"
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0:
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0:
version "5.7.1"
resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1580434257623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
......@@ -7257,7 +7167,7 @@ strip-indent@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
strip-json-comments@2.0.1, strip-json-comments@^2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
......@@ -7365,18 +7275,6 @@ tar@^2.0.0:
fstream "^1.0.12"
inherits "2"
tar@^4.4.2:
version "4.4.13"
resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
dependencies:
chownr "^1.1.1"
fs-minipass "^1.2.5"
minipass "^2.8.6"
minizlib "^1.2.1"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
yallist "^3.0.3"
terser-webpack-plugin@^1.4.3:
version "1.4.3"
resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz?cache=0&sync_timestamp=1580403891929&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
......@@ -7819,6 +7717,13 @@ vue-loader@^15.7.2:
vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0"
vue-particles@^1.0.9:
version "1.0.9"
resolved "https://registry.npm.taobao.org/vue-particles/download/vue-particles-1.0.9.tgz#29d9cc2be0157df1c0a87ec3b96c96f33279526e"
dependencies:
particles.js "^2.0.0"
vue "^2.2.6"
vue-router@^3.1.3:
version "3.1.5"
resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.5.tgz#ff29b8a1e1306c526b52d4dc0532109f16c41231"
......@@ -7841,7 +7746,7 @@ vue-template-es2015-compiler@^1.9.0:
version "1.9.1"
resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
vue@^2.6.10:
vue@^2.2.6, vue@^2.6.10:
version "2.6.11"
resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
......@@ -8145,7 +8050,7 @@ yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!