first commit
|
@ -0,0 +1,2 @@
|
||||||
|
NODE_ENV=development
|
||||||
|
VUE_APP_NODE_ENV=dev
|
|
@ -0,0 +1,2 @@
|
||||||
|
NODE_ENV=production
|
||||||
|
VUE_APP_NODE_ENV=prod
|
|
@ -0,0 +1,2 @@
|
||||||
|
NODE_ENV=production
|
||||||
|
VUE_APP_NODE_ENV=prod:sit
|
|
@ -0,0 +1,2 @@
|
||||||
|
NODE_ENV=production
|
||||||
|
VUE_APP_NODE_ENV=prod:uat
|
|
@ -0,0 +1 @@
|
||||||
|
/src/icons/iconfont.js
|
|
@ -0,0 +1,21 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw*
|
|
@ -0,0 +1,21 @@
|
||||||
|
# face-monitoring
|
||||||
|
|
||||||
|
## Project setup
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and hot-reloads for development
|
||||||
|
```
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and minifies for production
|
||||||
|
```
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lints and fixes files
|
||||||
|
```
|
||||||
|
npm run lint
|
||||||
|
```
|
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
'@vue/app'
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
var gulp = require('gulp')
|
||||||
|
var $ = require('gulp-load-plugins')()
|
||||||
|
var fs = require('fs')
|
||||||
|
var path = require('path')
|
||||||
|
var del = require('del')
|
||||||
|
//var colors = require('colors')
|
||||||
|
var child_process = require('child_process')
|
||||||
|
|
||||||
|
var theme = {}
|
||||||
|
var themeList = require('./src/element-ui/config.js').filter(item => !item.hasBuild)
|
||||||
|
var styleFileDir = './src/assets/scss'
|
||||||
|
var styleFileDirTemp = `${styleFileDir}-temp`
|
||||||
|
var themeFileDir = './public/element-theme'
|
||||||
|
var et = require('element-theme')
|
||||||
|
var etOptions = require('./package.json')['element-theme']
|
||||||
|
var themeFileName = etOptions.config.replace(/.*\/(.+\.scss)/, '$1')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建生成主题
|
||||||
|
*/
|
||||||
|
gulp.task('themes', () => {
|
||||||
|
if (themeList.length <= 0) { return del(styleFileDirTemp) }
|
||||||
|
|
||||||
|
// 删除临时文件,保证本次操作正常执行
|
||||||
|
//del(styleFileDirTemp)
|
||||||
|
console.log('del(styleFileDirTemp)');
|
||||||
|
|
||||||
|
// 拷贝一份scss样式文件夹,作为构建的临时处理文件夹
|
||||||
|
//child_process.spawnSync('cp', ['-r', styleFileDir, styleFileDirTemp])
|
||||||
|
console.log('copy styleFileDirTemp');
|
||||||
|
|
||||||
|
// 拷贝element组件scss变量样式文件至临时处理文件夹中,并修改相应配置信息
|
||||||
|
//child_process.spawnSync('cp', ['-r', etOptions.config, styleFileDirTemp])
|
||||||
|
etOptions.config = `${styleFileDirTemp}/${themeFileName}`
|
||||||
|
|
||||||
|
// 开始构建生成
|
||||||
|
fnCreate(themeList)
|
||||||
|
|
||||||
|
function fnCreate (themeList) {
|
||||||
|
if (themeList.length >= 1) {
|
||||||
|
// 保存当前构建生成的主题对象
|
||||||
|
theme = themeList[0]
|
||||||
|
|
||||||
|
console.log('\n')
|
||||||
|
console.log('-------------------- 待构建,主题 -------------------------')
|
||||||
|
console.log(themeList)
|
||||||
|
console.log('\n')
|
||||||
|
console.log('-------------------- 构建中,主题 -------------------------')
|
||||||
|
console.log(theme)
|
||||||
|
console.log('\n')
|
||||||
|
|
||||||
|
// 修改.scss临时文件中的$--color-primary主题变量值
|
||||||
|
var data = fs.readFileSync(etOptions.config, 'utf8')
|
||||||
|
var result = data.replace(/\$--color-primary:(.*) !default;/, `$--color-primary:${theme.color} !default;`)
|
||||||
|
fs.writeFileSync(path.resolve(etOptions.config), result)
|
||||||
|
|
||||||
|
// 修改aui.scss临时文件中引入element组件主题变量文件路径
|
||||||
|
var data = fs.readFileSync(`${styleFileDirTemp}/aui.scss`, 'utf8')
|
||||||
|
var result = data.replace(new RegExp(`(@import \")(.*\/)(${themeFileName}\";)`), '$1./$3')
|
||||||
|
fs.writeFileSync(path.resolve(`${styleFileDirTemp}/aui.scss`), result)
|
||||||
|
|
||||||
|
// 调用element-theme插件,生成element组件主题
|
||||||
|
etOptions.out = `${themeFileDir}/${theme.name}`
|
||||||
|
et.run(etOptions, () => {
|
||||||
|
// 生成后,构建同主题色aui.css项目主题
|
||||||
|
gulp.start(['styles'], () => {
|
||||||
|
// 递归下一步
|
||||||
|
themeList.splice(0, 1)
|
||||||
|
fnCreate(themeList)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 删除临时文件
|
||||||
|
del(styleFileDirTemp)
|
||||||
|
console.log('\n')
|
||||||
|
console.log('-------------------- 构建完毕,删除临时文件 -------------------------')
|
||||||
|
console.log(styleFileDirTemp)
|
||||||
|
console.log('\n')
|
||||||
|
|
||||||
|
// 删除主题不需要的部分文件
|
||||||
|
var files = [
|
||||||
|
`${themeFileDir}/**/*.css`,
|
||||||
|
`!${themeFileDir}/**/index.css`,
|
||||||
|
`!${themeFileDir}/**/aui.css`,
|
||||||
|
`!${themeFileDir}/**/fonts`
|
||||||
|
]
|
||||||
|
del(files)
|
||||||
|
console.log('-------------------- 构建完毕,删除主题独立组件文件 -------------------------')
|
||||||
|
console.log(files)
|
||||||
|
console.log('\n')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('styles', () => {
|
||||||
|
return gulp.src([`${styleFileDirTemp}/aui.scss`])
|
||||||
|
.pipe($.sass().on('error', $.sass.logError))
|
||||||
|
.pipe($.autoprefixer({
|
||||||
|
browsers: etOptions.browsers,
|
||||||
|
cascade: false
|
||||||
|
}))
|
||||||
|
.pipe($.cleanCss())
|
||||||
|
.pipe($.rename('aui.css'))
|
||||||
|
.pipe(gulp.dest(`${themeFileDir}/${theme.name}`))
|
||||||
|
})
|
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
"name": "security-enterprise-admin",
|
||||||
|
"version": "2.4.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"build:sit": "vue-cli-service build --mode production.sit",
|
||||||
|
"build:uat": "vue-cli-service build --mode production.uat",
|
||||||
|
"build:prod": "vue-cli-service build --mode production",
|
||||||
|
"lint": "vue-cli-service lint",
|
||||||
|
"et": "node_modules/.bin/et",
|
||||||
|
"et:init": "node_modules/.bin/et -i",
|
||||||
|
"et:list": "gulp themes"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.19.0",
|
||||||
|
"babel-eslint": "^8.0.1",
|
||||||
|
"babel-plugin-component": "^1.1.1",
|
||||||
|
"echarts": "^4.4.0",
|
||||||
|
"element-theme": "^2.0.1",
|
||||||
|
"element-ui": "^2.11.1",
|
||||||
|
"gulp-autoprefixer": "^6.1.0",
|
||||||
|
"gulp-clean-css": "^4.2.0",
|
||||||
|
"gulp-load-plugins": "^2.0.0",
|
||||||
|
"gulp-rename": "^1.4.0",
|
||||||
|
"gulp-sass": "^4.0.2",
|
||||||
|
"html2canvas": "^1.0.0-rc.5",
|
||||||
|
"js-cookie": "^2.2.0",
|
||||||
|
"jspdf": "^1.5.3",
|
||||||
|
"lodash": "^4.17.15",
|
||||||
|
"node-sass": "^4.12.0",
|
||||||
|
"qs": "^6.7.0",
|
||||||
|
"quill": "^1.3.7",
|
||||||
|
"sass-loader": "^7.1.0",
|
||||||
|
"screenfull": "^4.2.1",
|
||||||
|
"svg-sprite-loader": "^4.1.6",
|
||||||
|
"videojs-flash": "^2.2.1",
|
||||||
|
"vue": "^2.6.10",
|
||||||
|
"vue-amap": "^0.5.10",
|
||||||
|
"vue-baidu-map": "^0.21.22",
|
||||||
|
"vue-cropperjs": "^3.0.0",
|
||||||
|
"vue-i18n": "^8.12.0",
|
||||||
|
"vue-router": "^3.0.7",
|
||||||
|
"vue-video-player": "^5.0.2",
|
||||||
|
"vuex": "^3.1.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "^3.10.0",
|
||||||
|
"@vue/cli-plugin-eslint": "^3.10.0",
|
||||||
|
"@vue/cli-service": "^3.10.0",
|
||||||
|
"@vue/eslint-config-standard": "^4.0.0",
|
||||||
|
"element-theme-chalk": "^2.11.1",
|
||||||
|
"natives": "^1.1.6",
|
||||||
|
"vue-template-compiler": "^2.6.10"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"root": true,
|
||||||
|
"env": {
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"plugin:vue/essential",
|
||||||
|
"@vue/standard"
|
||||||
|
],
|
||||||
|
"rules": {},
|
||||||
|
"parserOptions": {
|
||||||
|
"parser": "babel-eslint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss": {
|
||||||
|
"plugins": {
|
||||||
|
"autoprefixer": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8.11.1",
|
||||||
|
"npm": ">= 5.6.0"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not ie <= 10"
|
||||||
|
],
|
||||||
|
"element-theme": {
|
||||||
|
"config": "./src/element-ui/theme-variables.scss",
|
||||||
|
"out": "./src/element-ui/theme",
|
||||||
|
"minimize": true,
|
||||||
|
"browsers": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not ie <= 10"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
window.GLOBAL_CONFIG = {
|
||||||
|
apiURL: "http://192.168.62.213:8889/face",
|
||||||
|
IMG_SERVER_URL: "http://192.168.1.127:9000",
|
||||||
|
SOCKET_URL: "ws://192.168.1.161:1993/task/webSocket",
|
||||||
|
}
|
After Width: | Height: | Size: 4.2 KiB |
|
@ -0,0 +1,60 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:100,300,400,500,700,900">
|
||||||
|
<!-- 全局配置文件 -->
|
||||||
|
<script src="./config.js"></script>
|
||||||
|
<!-- 站点配置 -->
|
||||||
|
<script>
|
||||||
|
window.SITE_CONFIG = {};
|
||||||
|
window.SITE_CONFIG['version'] = 'v2.4.0';
|
||||||
|
window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>';
|
||||||
|
window.SITE_CONFIG['apiURL'] = ''; // api请求地址
|
||||||
|
window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态(用于不刷新页面的情况下,也能重置初始化项目中所有状态)
|
||||||
|
window.SITE_CONFIG['contentTabDefault'] = { // 内容标签页默认属性对象
|
||||||
|
'name': '', // 名称, 由 this.$route.name 自动赋值(默认,名称 === 路由名称 === 路由路径)
|
||||||
|
'params': {}, // 参数, 由 this.$route.params 自动赋值
|
||||||
|
'query': {}, // 查询参数, 由 this.$route.query 自动赋值
|
||||||
|
'menuId': '', // 菜单id(用于选中侧边栏菜单,与this.$store.state.sidebarMenuActiveName进行匹配)
|
||||||
|
'title': '', // 标题
|
||||||
|
'isTab': true, // 是否通过tab展示内容?
|
||||||
|
'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配)
|
||||||
|
};
|
||||||
|
window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理)
|
||||||
|
window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理)
|
||||||
|
window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表
|
||||||
|
window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表
|
||||||
|
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作)
|
||||||
|
</script>
|
||||||
|
<!-- 开发环境 -->
|
||||||
|
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
|
||||||
|
<script>
|
||||||
|
window.SITE_CONFIG['apiURL'] = window.GLOBAL_CONFIG.apiURL;
|
||||||
|
</script>
|
||||||
|
<% } %>
|
||||||
|
<!-- 集成测试环境 -->
|
||||||
|
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>
|
||||||
|
<script>
|
||||||
|
window.SITE_CONFIG['apiURL'] = window.GLOBAL_CONFIG.apiURL;
|
||||||
|
</script>
|
||||||
|
<% } %>
|
||||||
|
<!-- 验收测试环境 -->
|
||||||
|
<% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %>
|
||||||
|
<script>
|
||||||
|
window.SITE_CONFIG['apiURL'] = window.GLOBAL_CONFIG.apiURL;
|
||||||
|
</script>
|
||||||
|
<% } %>
|
||||||
|
<!-- 生产环境 -->
|
||||||
|
<% if (process.env.VUE_APP_NODE_ENV === 'prod') { %>
|
||||||
|
<script>
|
||||||
|
window.SITE_CONFIG['apiURL'] = window.GLOBAL_CONFIG.apiURL;
|
||||||
|
</script>
|
||||||
|
<% } %>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,98 @@
|
||||||
|
<template>
|
||||||
|
<transition name="el-fade-in-linear">
|
||||||
|
<router-view />
|
||||||
|
</transition>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Cookies from 'js-cookie'
|
||||||
|
import { messages } from '@/i18n'
|
||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
'$i18n.locale': 'i18nHandle'
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.i18nHandle(this.$i18n.locale)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
i18nHandle (val, oldVal) {
|
||||||
|
Cookies.set('language', val)
|
||||||
|
document.querySelector('html').setAttribute('lang', val)
|
||||||
|
document.title = messages[val].brand.lg
|
||||||
|
// 非登录页面,切换语言刷新页面
|
||||||
|
if (this.$route.name !== 'login' && oldVal) {
|
||||||
|
window.location.reload()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.amap-marker-label{
|
||||||
|
border: "0px" !important;
|
||||||
|
background-color: "0.000000000001" !important;
|
||||||
|
background-color: "#9DB7F2" !important;
|
||||||
|
font-size: "12px"!important;
|
||||||
|
height: "20px"!important;
|
||||||
|
border:"1px solid black"!important;
|
||||||
|
}
|
||||||
|
.amap-logo {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.trackquery .amap-copyright{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.el-drawer__open .el-drawer.rtl{
|
||||||
|
height: 900px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.el-tabs__nav-scroll{
|
||||||
|
background-color: white !important
|
||||||
|
}
|
||||||
|
.el-tabs--top .el-tabs__item.is-top:nth-child(2){
|
||||||
|
padding-left: 20px !important;
|
||||||
|
}
|
||||||
|
/* .imgs .el-upload--picture-card{
|
||||||
|
width: 380px !important;
|
||||||
|
height: 200px !important;
|
||||||
|
} */
|
||||||
|
.home .el-header{
|
||||||
|
height: 400px !important;
|
||||||
|
}
|
||||||
|
.aui-page__login .login-body{
|
||||||
|
width: 1200px !important;
|
||||||
|
}
|
||||||
|
#group .el-upload--picture-card{
|
||||||
|
margin-top: 20px !important;
|
||||||
|
margin-left: 20px !important;
|
||||||
|
}
|
||||||
|
/* 布控 */
|
||||||
|
.surveillance_addimg .el-dialog__title{
|
||||||
|
font-weight: bold !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-style: normal;
|
||||||
|
font-family: "Noto Sans SC";
|
||||||
|
}
|
||||||
|
/* 检索 */
|
||||||
|
.retrieval .avatar-uploader-icon{
|
||||||
|
border: 1px dashed #d9d9d9 !important;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
.retrievals .avatar-uploader-icon{
|
||||||
|
border: 1px dashed #d9d9d9 !important;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
.retrieval .avatar-uploader-icon:hover {
|
||||||
|
border-color: #409EFF !important;
|
||||||
|
}
|
||||||
|
.retrievals .avatar-uploader-icon:hover {
|
||||||
|
border-color: #409EFF !important;
|
||||||
|
}
|
||||||
|
.el-pagination {
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
.retrievals .aui-wrapper .el-card+.el-card{
|
||||||
|
margin-bottom: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 178 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 166 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 528 KiB |
After Width: | Height: | Size: 286 KiB |
After Width: | Height: | Size: 262 KiB |
After Width: | Height: | Size: 629 KiB |
After Width: | Height: | Size: 585 KiB |
After Width: | Height: | Size: 293 KiB |
After Width: | Height: | Size: 373 KiB |
After Width: | Height: | Size: 304 KiB |
After Width: | Height: | Size: 344 KiB |
After Width: | Height: | Size: 274 KiB |
After Width: | Height: | Size: 354 KiB |
After Width: | Height: | Size: 208 KiB |
After Width: | Height: | Size: 167 KiB |
After Width: | Height: | Size: 240 KiB |
After Width: | Height: | Size: 135 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 147 B |
After Width: | Height: | Size: 196 B |
After Width: | Height: | Size: 3.4 KiB |