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 |