Compare commits
No commits in common. "dev" and "main" have entirely different histories.
3
.env
|
@ -1,3 +1,4 @@
|
|||
VITE_BASE_URL=http://192.168.0.17:8001/
|
||||
VITE_PROXY=/api
|
||||
VITE_FILE_URL=https://file.zcloudchina.com/YTHFile
|
||||
VITE_TEMPLATE_URL=https://qaaq.qhdsafety.com/file/
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
VITE_BASE_URL=http://192.168.0.16:7082/
|
||||
VITE_ON_LINE_WEB_SOCKET_URL=ws://192.168.20.240:8869
|
||||
VITE_LEARNING_WEB_SOCKET_URL=ws://192.168.20.240:8899
|
|
@ -1,16 +0,0 @@
|
|||
#测试
|
||||
VITE_BASE_URL=http://192.168.20.240:8412/integrated_traffic/
|
||||
#websocket t掉线
|
||||
VITE_ON_LINE_WEB_SOCKET_URL=ws://192.168.20.240:8869
|
||||
#websocket 在线学习
|
||||
VITE_LEARNING_WEB_SOCKET_URL=ws://192.168.20.240:8899
|
||||
|
||||
##正式
|
||||
#VITE_BASE_URL=http://39.101.166.211:8073/integrated_traffic/
|
||||
##websocket t掉线
|
||||
#VITE_ON_LINE_WEB_SOCKET_URL=ws://39.101.166.211:8869
|
||||
## VITE_ON_LINE_WEB_SOCKET_URL=wss://qaaqjt.qhdsafety.com/disconnected/
|
||||
##websocket 在线学习
|
||||
#VITE_LEARNING_WEB_SOCKET_URL=ws://39.101.166.211:8899
|
||||
## VITE_LEARNING_WEB_SOCKET_URL=wss://qaaqjt.qhdsafety.com/onlinelearning/
|
||||
|
|
@ -2,4 +2,3 @@ public
|
|||
dist
|
||||
package.json
|
||||
!.prettierrc.cjs
|
||||
env.d.ts
|
||||
|
|
|
@ -5,7 +5,7 @@ module.exports = {
|
|||
node: true
|
||||
},
|
||||
extends: [
|
||||
"plugin:vue/vue3-recommended",
|
||||
"plugin:vue/vue3-essential",
|
||||
"standard",
|
||||
"@vue/prettier",
|
||||
"eslint:recommended"
|
||||
|
@ -18,23 +18,9 @@ module.exports = {
|
|||
rules: {
|
||||
"no-console": "warn",
|
||||
"vue/multi-word-component-names": "off",
|
||||
"vue/no-v-html": "off",
|
||||
"vue/require-default-prop": "off",
|
||||
"camelcase": "off",
|
||||
"eqeqeq": "error",
|
||||
"vue/no-template-shadow": "error",
|
||||
"vue/attribute-hyphenation": "error",
|
||||
"vue/html-end-tags": "error",
|
||||
camelcase: "off",
|
||||
eqeqeq: "error",
|
||||
"vue/eqeqeq": "error",
|
||||
"vue/component-name-in-template-casing": ["error", "kebab-case"],
|
||||
"vue/enforce-style-attribute": [
|
||||
"error",
|
||||
{ "allow": ["scoped", "module"] }
|
||||
],
|
||||
"vue/v-on-event-hyphenation": ["error", "always",{
|
||||
"autofix": true,
|
||||
}],
|
||||
"vue/require-explicit-emits": "error",
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{ vars: "all", args: "after-used", ignoreRestSiblings: false }
|
||||
|
@ -44,7 +30,5 @@ module.exports = {
|
|||
globals: {
|
||||
BMapGL: "readonly",
|
||||
JSEncrypt: "readonly",
|
||||
Aliplayer: "readonly",
|
||||
AliyunUpload: "readonly",
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
interface ImportMetaEnv {
|
||||
// Auto generate by env-parse
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_PROXY: string
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_FILE_URL: string
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_TEMPLATE_URL: string
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_BASE_URL: string
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_ON_LINE_WEB_SOCKET_URL: string
|
||||
/**
|
||||
* undefined
|
||||
*/
|
||||
readonly VITE_LEARNING_WEB_SOCKET_URL: string
|
||||
}
|
10
index.html
|
@ -2,10 +2,9 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
|
||||
<title>交通运输安全生产综合管理系统</title>
|
||||
|
||||
<title>管理平台</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
@ -16,10 +15,5 @@
|
|||
src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
|
||||
<script type="text/javascript" src="/jsencrypt.min.js"></script>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
|
||||
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
|
||||
<script src="/aliyun-upload-sdk-1.5.6/lib/es6-promise.min.js"></script>
|
||||
<script src="/aliyun-upload-sdk-1.5.6/lib/aliyun-oss-sdk-6.17.1.min.js"></script>
|
||||
<script src="/aliyun-upload-sdk-1.5.6/aliyun-upload-sdk-1.5.6.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,289 +0,0 @@
|
|||
<template>
|
||||
<canvas ref="canvas" @mousedown="mouseDown" @mousemove="mouseMove" @mouseup="mouseUp"
|
||||
@touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd"></canvas>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
width: {
|
||||
type: Number,
|
||||
default: 800
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 300
|
||||
},
|
||||
lineWidth: {
|
||||
type: Number,
|
||||
default: 4
|
||||
},
|
||||
lineColor: {
|
||||
type: String,
|
||||
default: '#000000'
|
||||
},
|
||||
bgColor: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
isCrop: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
isClearBgColor: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
format: {
|
||||
type: String,
|
||||
default: 'image/png'
|
||||
},
|
||||
quality: {
|
||||
type: Number,
|
||||
default: 1
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
hasDrew: false,
|
||||
resultImg: '',
|
||||
points: [],
|
||||
canvasTxt: null,
|
||||
startX: 0,
|
||||
startY: 0,
|
||||
isDrawing: false,
|
||||
sratio: 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
ratio () {
|
||||
return this.height / this.width
|
||||
},
|
||||
stageInfo () {
|
||||
return this.$refs.canvas.getBoundingClientRect()
|
||||
},
|
||||
myBg () {
|
||||
return this.bgColor ? this.bgColor : 'rgba(255, 255, 255, 0)'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'myBg': function (newVal) {
|
||||
this.$refs.canvas.style.background = newVal
|
||||
}
|
||||
},
|
||||
beforeMount () {
|
||||
window.addEventListener('resize', this.$_resizeHandler)
|
||||
},
|
||||
beforeDestroy () {
|
||||
window.removeEventListener('resize', this.$_resizeHandler)
|
||||
},
|
||||
mounted () {
|
||||
const canvas = this.$refs.canvas
|
||||
canvas.height = this.height
|
||||
canvas.width = this.width
|
||||
canvas.style.background = this.myBg
|
||||
this.$_resizeHandler()
|
||||
// 在画板以外松开鼠标后冻结画笔
|
||||
document.onmouseup = () => {
|
||||
this.isDrawing = false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
$_resizeHandler () {
|
||||
const canvas = this.$refs.canvas
|
||||
canvas.style.width = this.width + "px"
|
||||
const realw = parseFloat(window.getComputedStyle(canvas).width)
|
||||
canvas.style.height = this.ratio * realw + "px";
|
||||
this.canvasTxt = canvas.getContext('2d')
|
||||
this.canvasTxt.scale(1 * this.sratio, 1 * this.sratio)
|
||||
this.sratio = realw / this.width
|
||||
this.canvasTxt.scale(1 / this.sratio, 1 / this.sratio)
|
||||
},
|
||||
// pc
|
||||
mouseDown (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
this.isDrawing = true
|
||||
this.hasDrew = true
|
||||
let obj = {
|
||||
x: e.offsetX,
|
||||
y: e.offsetY
|
||||
}
|
||||
this.drawStart(obj)
|
||||
},
|
||||
mouseMove (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
if (this.isDrawing) {
|
||||
let obj = {
|
||||
x: e.offsetX,
|
||||
y: e.offsetY
|
||||
}
|
||||
this.drawMove(obj)
|
||||
}
|
||||
},
|
||||
mouseUp (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
let obj = {
|
||||
x: e.offsetX,
|
||||
y: e.offsetY
|
||||
}
|
||||
this.drawEnd(obj)
|
||||
this.isDrawing = false
|
||||
},
|
||||
// mobile
|
||||
touchStart (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
this.hasDrew = true
|
||||
if (e.touches.length === 1) {
|
||||
let obj = {
|
||||
x: e.targetTouches[0].clientX - this.$refs.canvas.getBoundingClientRect().left,
|
||||
y: e.targetTouches[0].clientY - this.$refs.canvas.getBoundingClientRect().top
|
||||
}
|
||||
this.drawStart(obj)
|
||||
}
|
||||
},
|
||||
touchMove (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
if (e.touches.length === 1) {
|
||||
let obj = {
|
||||
x: e.targetTouches[0].clientX - this.$refs.canvas.getBoundingClientRect().left,
|
||||
y: e.targetTouches[0].clientY - this.$refs.canvas.getBoundingClientRect().top
|
||||
}
|
||||
this.drawMove(obj)
|
||||
}
|
||||
},
|
||||
touchEnd (e) {
|
||||
e = e || event
|
||||
e.preventDefault()
|
||||
if (e.touches.length === 1) {
|
||||
let obj = {
|
||||
x: e.targetTouches[0].clientX - this.$refs.canvas.getBoundingClientRect().left,
|
||||
y: e.targetTouches[0].clientY - this.$refs.canvas.getBoundingClientRect().top
|
||||
}
|
||||
this.drawEnd(obj)
|
||||
}
|
||||
},
|
||||
// 绘制
|
||||
drawStart (obj) {
|
||||
this.startX = obj.x
|
||||
this.startY = obj.y
|
||||
this.canvasTxt.beginPath()
|
||||
this.canvasTxt.moveTo(this.startX, this.startY)
|
||||
this.canvasTxt.lineTo(obj.x, obj.y)
|
||||
this.canvasTxt.lineCap = 'round'
|
||||
this.canvasTxt.lineJoin = 'round'
|
||||
this.canvasTxt.lineWidth = this.lineWidth * this.sratio
|
||||
this.canvasTxt.stroke()
|
||||
this.canvasTxt.closePath()
|
||||
this.points.push(obj)
|
||||
},
|
||||
drawMove (obj) {
|
||||
this.canvasTxt.beginPath()
|
||||
this.canvasTxt.moveTo(this.startX, this.startY)
|
||||
this.canvasTxt.lineTo(obj.x, obj.y)
|
||||
this.canvasTxt.strokeStyle = this.lineColor
|
||||
this.canvasTxt.lineWidth = this.lineWidth * this.sratio
|
||||
this.canvasTxt.lineCap = 'round'
|
||||
this.canvasTxt.lineJoin = 'round'
|
||||
this.canvasTxt.stroke()
|
||||
this.canvasTxt.closePath()
|
||||
this.startY = obj.y
|
||||
this.startX = obj.x
|
||||
this.points.push(obj)
|
||||
},
|
||||
drawEnd (obj) {
|
||||
this.canvasTxt.beginPath()
|
||||
this.canvasTxt.moveTo(this.startX, this.startY)
|
||||
this.canvasTxt.lineTo(obj.x, obj.y)
|
||||
this.canvasTxt.lineCap = 'round'
|
||||
this.canvasTxt.lineJoin = 'round'
|
||||
this.canvasTxt.stroke()
|
||||
this.canvasTxt.closePath()
|
||||
this.points.push(obj)
|
||||
this.points.push({x: -1, y: -1})
|
||||
},
|
||||
// 操作
|
||||
generate (options) {
|
||||
let imgFormat = options && options.format ? options.format: this.format
|
||||
let imgQuality = options && options.quality ? options.quality: this.quality
|
||||
const pm = new Promise((resolve, reject) => {
|
||||
if (!this.hasDrew) {
|
||||
reject(`Warning: Not Signned!`)
|
||||
return
|
||||
}
|
||||
var resImgData = this.canvasTxt.getImageData(0, 0, this.$refs.canvas.width, this.$refs.canvas.height)
|
||||
this.canvasTxt.globalCompositeOperation = "destination-over"
|
||||
this.canvasTxt.fillStyle = this.myBg
|
||||
this.canvasTxt.fillRect(0,0,this.$refs.canvas.width ,this.$refs.canvas.height)
|
||||
this.resultImg = this.$refs.canvas.toDataURL(imgFormat, imgQuality)
|
||||
var resultImg = this.resultImg
|
||||
this.canvasTxt.clearRect(0, 0, this.$refs.canvas.width ,this.$refs.canvas.height)
|
||||
this.canvasTxt.putImageData(resImgData, 0, 0)
|
||||
this.canvasTxt.globalCompositeOperation = "source-over"
|
||||
if (this.isCrop) {
|
||||
const crop_area = this.getCropArea(resImgData.data)
|
||||
var crop_canvas = document.createElement('canvas')
|
||||
const crop_ctx = crop_canvas.getContext('2d')
|
||||
crop_canvas.width = crop_area[2] - crop_area[0]
|
||||
crop_canvas.height = crop_area[3] - crop_area[1]
|
||||
const crop_imgData = this.canvasTxt.getImageData(...crop_area)
|
||||
crop_ctx.globalCompositeOperation = "destination-over"
|
||||
crop_ctx.putImageData(crop_imgData, 0, 0)
|
||||
crop_ctx.fillStyle = this.myBg
|
||||
crop_ctx.fillRect(0, 0, crop_canvas.width , crop_canvas.height)
|
||||
resultImg = crop_canvas.toDataURL(imgFormat, imgQuality)
|
||||
crop_canvas = null
|
||||
}
|
||||
resolve(resultImg)
|
||||
})
|
||||
return pm
|
||||
},
|
||||
reset () {
|
||||
this.canvasTxt.clearRect(
|
||||
0,
|
||||
0,
|
||||
this.$refs.canvas.width,
|
||||
this.$refs.canvas.height
|
||||
)
|
||||
if (this.isClearBgColor) {
|
||||
this.$emit('update:bgColor', '')
|
||||
this.$refs.canvas.style.background = 'rgba(255, 255, 255, 0)'
|
||||
}
|
||||
this.points = []
|
||||
this.hasDrew = false
|
||||
this.resultImg = ''
|
||||
},
|
||||
getCropArea (imgData) {
|
||||
var topX = this.$refs.canvas.width; var btmX = 0; var topY = this.$refs.canvas.height; var btnY = 0
|
||||
for (var i = 0; i < this.$refs.canvas.width; i++) {
|
||||
for (var j = 0; j < this.$refs.canvas.height; j++) {
|
||||
var pos = (i + this.$refs.canvas.width * j) * 4
|
||||
if (imgData[pos] > 0 || imgData[pos + 1] > 0 || imgData[pos + 2] || imgData[pos + 3] > 0) {
|
||||
btnY = Math.max(j, btnY)
|
||||
btmX = Math.max(i, btmX)
|
||||
topY = Math.min(j, topY)
|
||||
topX = Math.min(i, topX)
|
||||
}
|
||||
}
|
||||
}
|
||||
topX++
|
||||
btmX++
|
||||
topY++
|
||||
btnY++
|
||||
const data = [topX, topY, btmX, btnY]
|
||||
return data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
canvas {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
48
package.json
|
@ -10,69 +10,51 @@
|
|||
"lint": "eslint --ext .js,.vue --fix src .prettierrc.cjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@element-plus/icons-vue": "^2.1.0",
|
||||
"@icon-park/vue-next": "^1.4.2",
|
||||
"@vueuse/core": "^9.13.0",
|
||||
"@vueuse/integrations": "^10.7.1",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"@vueuse/integrations": "^10.7.0",
|
||||
"animate.css": "^4.1.1",
|
||||
"autofit.js": "^3.0.7",
|
||||
"axios": "^1.6.3",
|
||||
"dayjs": "^1.11.10",
|
||||
"echarts": "^5.4.3",
|
||||
"element-plus": "^2.6.1",
|
||||
"html2canvas": "^1.4.1",
|
||||
"jspdf": "^2.5.1",
|
||||
"element-plus": "^2.4.4",
|
||||
"lodash-es": "^4.17.21",
|
||||
"mitt": "^3.0.1",
|
||||
"nanoid": "^5.0.4",
|
||||
"normalize.css": "^8.0.1",
|
||||
"pako": "^2.1.0",
|
||||
"pinia": "^2.1.7",
|
||||
"pinia-plugin-persistedstate": "^3.2.1",
|
||||
"pinia-plugin-persistedstate": "^3.2.0",
|
||||
"qrcode": "^1.5.3",
|
||||
"qs": "^6.11.2",
|
||||
"relation-graph": "^2.1.24",
|
||||
"throttle-debounce": "^5.0.0",
|
||||
"v-viewer": "^3.0.11",
|
||||
"vant": "^4.8.4",
|
||||
"viewerjs": "^1.11.6",
|
||||
"vue": "^3.4.3",
|
||||
"vue-countup-v3": "^1.4.1",
|
||||
"vue-draggable-plus": "^0.3.4",
|
||||
"vue-esign": "^1.1.4",
|
||||
"vue": "^3.3.13",
|
||||
"vue-router": "^4.2.5",
|
||||
"vue3-pdfjs": "^0.1.6",
|
||||
"vue3-print-nb": "^0.1.4",
|
||||
"vue3-puzzle-vcode": "^1.1.5",
|
||||
"vue3-seamless-scroll": "^2.0.1",
|
||||
"xlsx": "^0.18.5"
|
||||
"vue3-puzzle-vcode": "^1.0.16"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@our-patches/postcss-px-to-viewport": "^1.2.0",
|
||||
"@types/node": "^18.19.4",
|
||||
"@vitejs/plugin-basic-ssl": "^1.0.2",
|
||||
"@vitejs/plugin-vue": "^4.6.2",
|
||||
"@types/node": "^18.18.4",
|
||||
"@vitejs/plugin-basic-ssl": "^1.0.1",
|
||||
"@vitejs/plugin-vue": "^4.4.0",
|
||||
"@vue/eslint-config-prettier": "^7.1.0",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint": "^8.51.0",
|
||||
"eslint-config-prettier": "^8.10.0",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-import": "^2.28.1",
|
||||
"eslint-plugin-n": "^15.7.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.19.2",
|
||||
"eslint-plugin-vue": "^9.17.0",
|
||||
"prettier": "^2.8.8",
|
||||
"sass": "^1.69.0",
|
||||
"unplugin-auto-import": "^0.12.2",
|
||||
"unplugin-vue-components": "^0.22.12",
|
||||
"vite": "^4.5.1",
|
||||
"vite": "^4.4.11",
|
||||
"vite-plugin-enhance-log": "^0.5.2",
|
||||
"vite-plugin-env-parse": "^1.0.10",
|
||||
"vite-plugin-eslint": "^1.8.1",
|
||||
"vite-plugin-remove-console": "^2.2.0",
|
||||
"vue-eslint-parser": "^9.3.2"
|
||||
"vite-plugin-remove-console": "^2.1.1",
|
||||
"vue-eslint-parser": "^9.3.1"
|
||||
}
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -15,4 +15,4 @@
|
|||
import zhCn from "element-plus/dist/locale/zh-cn.mjs";
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
<style lang="scss"></style>
|
||||
|
|
|
@ -6,13 +6,11 @@ import { cloneDeep } from "lodash-es";
|
|||
import pinia from "./pinia";
|
||||
import children from "@/components/children/index";
|
||||
import { MODEL } from "@/assets/js/constant";
|
||||
// import asyncRouter from "@/assets/js/asyncRouter";
|
||||
import asyncRouter from "@/assets/js/asyncRouter";
|
||||
import { getAsyncRouter } from "@/request/api";
|
||||
// import { getRouteTreeAll } from "@/request/system_management.js";
|
||||
|
||||
const modules = import.meta.glob([
|
||||
"./views/**/*.vue",
|
||||
"!./views/**/components/*.vue",
|
||||
]); // 获取到views下所有的vue文件
|
||||
const modules = import.meta.glob("./views/**/*.vue"); // 获取到views下所有的vue文件
|
||||
let storageRouter = null; // 用来获取后台拿到的路由
|
||||
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
|
@ -29,9 +27,10 @@ router.beforeEach(async (to, from, next) => {
|
|||
// 变量里没有储存路由
|
||||
// pinia里没有储存路由,去后台获取路由
|
||||
if (routerStore.getRouters.length === 0) {
|
||||
const resData = await getAsyncRouter();
|
||||
storageRouter = resData.routeList; // 后台请求得到的路由数据
|
||||
// storageRouter = asyncRouter; // 死路由
|
||||
await getAsyncRouter();
|
||||
// const resData = await getRouteTreeAll();
|
||||
// storageRouter = resData.menuList; // 后台请求得到的路由数据
|
||||
storageRouter = asyncRouter; // 死路由
|
||||
routerStore.setRouters(storageRouter); // 存储路由
|
||||
routerGo(to, next); // 执行路由跳转方法
|
||||
} else {
|
||||
|
@ -74,7 +73,6 @@ function routerGo(to, next) {
|
|||
function filterAsyncRouter(asyncRouterMap) {
|
||||
// 遍历后台传来的路由字符串,转换为组件对象
|
||||
return asyncRouterMap.filter((route) => {
|
||||
route.meta = JSON.parse(route.meta);
|
||||
if (route.component) {
|
||||
if (route.component === "children") {
|
||||
route.component = children;
|
||||
|
|
|
@ -115,6 +115,7 @@
|
|||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
font-size: 14px;
|
||||
|
||||
&:not(dd,dl,dt) {
|
||||
margin: 0;
|
||||
|
@ -126,10 +127,11 @@ h1, h2, h3, h4, h5, h6 {
|
|||
font-size: revert;
|
||||
}
|
||||
|
||||
.layout-container {
|
||||
background-color: #051a55;
|
||||
#app {
|
||||
background-color: #030f2f;
|
||||
min-height: 100vh;
|
||||
|
||||
background-image: url("/src/assets/images/public/bg.jpg");
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
a {
|
||||
|
@ -159,14 +161,6 @@ a {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.mb {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.mt {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.text-blue {
|
||||
color: #3b3bff;
|
||||
}
|
||||
|
@ -191,38 +185,6 @@ a {
|
|||
display: none;
|
||||
}
|
||||
|
||||
@mixin table($tdTextAlign,$titleTextAlign) {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
display: table;
|
||||
font-size: 12px;
|
||||
|
||||
tr {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px;
|
||||
line-height: 1.6;
|
||||
text-align: $tdTextAlign;
|
||||
}
|
||||
|
||||
.title {
|
||||
background: var(--el-fill-color-light);
|
||||
width: 200px;
|
||||
text-align: $titleTextAlign;
|
||||
}
|
||||
}
|
||||
|
||||
.print_table {
|
||||
@include table(center,left);
|
||||
}
|
||||
|
||||
.archive_print_table {
|
||||
@include table(left,center);
|
||||
}
|
||||
|
||||
img.ml-10:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
@ -237,7 +199,6 @@ input:-webkit-autofill:active {
|
|||
|
||||
div::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
div::-webkit-scrollbar-thumb {
|
||||
|
@ -295,6 +256,14 @@ div::-webkit-scrollbar-track {
|
|||
border-bottom: 1px dashed var(--el-border-color-darker);
|
||||
}
|
||||
|
||||
.w-e-bar-item:has([data-menu-key="group-video"]) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.w-e-bar-item-menus-container .w-e-bar-item:has([data-menu-key="insertImage"]) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.vue-auth-box_ {
|
||||
background: #020f3a !important;
|
||||
border: 1px solid #223765 !important;
|
||||
|
@ -320,7 +289,7 @@ div::-webkit-scrollbar-track {
|
|||
margin: 3mm;
|
||||
}
|
||||
|
||||
.page_break {
|
||||
.page_break{
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
|
@ -328,7 +297,6 @@ div::-webkit-scrollbar-track {
|
|||
.el-descriptions__label.el-descriptions__cell.is-bordered-label {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
.el-descriptions {
|
||||
--el-text-color-primary: #000 !important;
|
||||
}
|
||||
|
@ -338,16 +306,19 @@ div::-webkit-scrollbar-track {
|
|||
}
|
||||
|
||||
.print_use {
|
||||
@include table(center,left);
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
display: table;
|
||||
|
||||
td, th {
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px;
|
||||
line-height: 1.6;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.print_no_use {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.mobile {
|
||||
padding: 10px;
|
||||
background-color: #fafafa;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
:root {
|
||||
--el-header-height: 69px;
|
||||
--el-aside-scrollbar-height: calc(100vh - var(--el-header-height));
|
||||
--el-main-scrollbar-height: calc(100vh - var(--el-header-height) - 40px);
|
||||
--el-main-scrollbar-height: calc(100vh - var(--el-header-height) - 60px);
|
||||
--el-border-color: #273868 !important; // 边框颜色
|
||||
--el-text-color-regular: #fff !important;
|
||||
--el-fill-color-light: #0e1d44 !important; //hover背景色
|
||||
--el-color-check: #14affe !important; //hover、选中 文字颜色
|
||||
--el-aside-bg-color: #08277e !important;
|
||||
--el-aside-bg-color: #081e42 !important;
|
||||
--el-input-bg-color: #081435 !important;
|
||||
--el-fill-color-blank: #081435 !important; // 背景色
|
||||
--el-border-color-lighter: var(--el-border-color) !important;
|
||||
--el-bullet-frame-bg-color: #08163b !important;
|
||||
--el-text-color-primary: #fff !important;
|
||||
}
|
||||
|
||||
.el-button:focus, .el-button:hover {
|
||||
|
@ -90,8 +89,9 @@
|
|||
|
||||
.el-menu-item {
|
||||
&:hover, &.is-active {
|
||||
//background: #1d3f77;
|
||||
background-image: linear-gradient(to right, #2c6ee9, rgba(0, 0, 0, 0));
|
||||
background-image: url("/src/assets/images/public/list_on.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,14 +118,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
.el-select, .el-cascader, .el-date-editor.el-input, .el-date-editor.el-input__wrapper, .el-input__wrapper, .el-input-number, .el-select-v2 {
|
||||
.el-select, .el-cascader, .el-date-editor.el-input, .el-date-editor.el-input__wrapper, .el-input__wrapper, .el-input-number {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.el-textarea.is-disabled .el-textarea__inner, .el-select {
|
||||
--el-disabled-border-color: var(--el-border-color);
|
||||
}
|
||||
|
||||
.el-table {
|
||||
--el-table-bg-color: #071a43 !important;
|
||||
--el-bg-color: #071a43 !important;
|
||||
|
@ -153,14 +149,6 @@
|
|||
--el-pagination-bg-color: var(--el-fill-color-blank) !important;
|
||||
}
|
||||
|
||||
.el-pagination .el-select {
|
||||
width: 128px !important;
|
||||
}
|
||||
|
||||
.el-pagination--small .el-select {
|
||||
width: 100px !important;
|
||||
}
|
||||
|
||||
.el-radio {
|
||||
--el-radio-input-bg-color: #091839 !important;
|
||||
}
|
||||
|
@ -200,7 +188,7 @@
|
|||
--el-checkbox-disabled-border-color: var(--el-border-color);
|
||||
}
|
||||
|
||||
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner, .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner {
|
||||
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
|
||||
--el-checkbox-disabled-checked-input-fill: var(--el-checkbox-bg-color);
|
||||
--el-checkbox-disabled-checked-input-border-color: var(--el-color-check);
|
||||
}
|
||||
|
@ -251,19 +239,11 @@
|
|||
color: var(--el-text-color-regular) !important;
|
||||
}
|
||||
|
||||
.el-date-table.is-week-mode .el-date-table__row {
|
||||
&.current, &:hover {
|
||||
.el-date-table-cell {
|
||||
--el-datepicker-inrange-bg-color: var(--el-fill-color-light) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-input.is-disabled .el-input__wrapper {
|
||||
box-shadow: 0 0 0 1px var(--el-border-color) inset !important;
|
||||
}
|
||||
|
||||
.el-select .el-tag.el-tag--info {
|
||||
.el-select__tags .el-tag--info {
|
||||
background-color: #214082 !important;
|
||||
--el-tag-text-color: var(--el-text-color-regular) !important;
|
||||
}
|
||||
|
@ -295,10 +275,14 @@
|
|||
--el-border-color-light: var(--el-border-color);
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
font-size: 16px !important;
|
||||
font-weight: 700 !important;
|
||||
}
|
||||
|
||||
.el-dialog {
|
||||
background: transparent !important;
|
||||
--el-dialog-margin-top: 50px !important;
|
||||
padding: 0 !important;
|
||||
|
||||
.el-dialog__header {
|
||||
background-image: url("/src/assets/images/public/tctitlebg.png");
|
||||
|
@ -322,14 +306,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
.el-dialog__body {
|
||||
.el-dialog__body, .el-dialog__footer {
|
||||
background-color: var(--el-bullet-frame-bg-color);
|
||||
padding: calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
background-color: var(--el-bullet-frame-bg-color);
|
||||
padding: var(--el-dialog-padding-primary);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -358,8 +336,6 @@
|
|||
}
|
||||
|
||||
.el-divider__text {
|
||||
font-size: 16px !important;
|
||||
font-weight: 700 !important;
|
||||
background-color: var(--el-fill-color-blank) !important;
|
||||
color: var(--el-text-color-regular) !important;
|
||||
}
|
||||
|
@ -404,28 +380,6 @@
|
|||
color: var(--el-text-color-regular) !important;
|
||||
}
|
||||
|
||||
.el-step__title, .el-select-dropdown__option-item {
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.el-step__description {
|
||||
* {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.el-notification {
|
||||
--el-notification-title-color: #000 !important;
|
||||
|
||||
.el-notification__closeBtn:hover {
|
||||
--el-notification-close-hover-color: #000 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.el-color-predefine__color-selector.selected {
|
||||
--el-color-primary: #fff !important;
|
||||
}
|
||||
|
||||
.el-input-number.is-disabled .el-input-number__decrease, .el-input-number.is-disabled .el-input-number__increase{
|
||||
border-color: var(--el-border-color) !important;
|
||||
.el-step__title{
|
||||
font-size: 14px !important;;
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 424 B |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 850 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 2.5 MiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.0 KiB |