Browse Source

系统管理

master
x_ying 3 years ago
parent
commit
638e729883
  1. 18
      src/assets/iconfonts/iconfont.css
  2. 2
      src/assets/iconfonts/iconfont.js
  3. 21
      src/assets/iconfonts/iconfont.json
  4. BIN
      src/assets/iconfonts/iconfont.ttf
  5. BIN
      src/assets/iconfonts/iconfont.woff
  6. BIN
      src/assets/iconfonts/iconfont.woff2
  7. 71
      src/views/system/archiveStatistics/index.vue
  8. 231
      src/views/system/archiveStatistics/module/barEcharts.vue
  9. 23
      src/views/system/logManage/warnLog/index.vue
  10. 28
      src/views/system/messageCenter/data1.json
  11. 24
      src/views/system/messageCenter/index.vue
  12. 36
      src/views/system/notifyManage/index.vue

18
src/assets/iconfonts/iconfont.css

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 3409379 */
src: url('iconfont.woff2?t=1658129042026') format('woff2'),
url('iconfont.woff?t=1658129042026') format('woff'),
url('iconfont.ttf?t=1658129042026') format('truetype');
src: url('iconfont.woff2?t=1658455952870') format('woff2'),
url('iconfont.woff?t=1658455952870') format('woff'),
url('iconfont.ttf?t=1658455952870') format('truetype');
}
.iconfont {
@ -13,6 +13,18 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-fabu-fanbai:before {
content: "\e644";
}
.icon-biaojiyidu-fanbai:before {
content: "\e645";
}
.icon-shoudongchuli-fanbai:before {
content: "\e646";
}
.icon-zhenglishi:before {
content: "\e63c";
}

2
src/assets/iconfonts/iconfont.js
File diff suppressed because it is too large
View File

21
src/assets/iconfonts/iconfont.json

@ -5,6 +5,27 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "30765497",
"name": "发布-反白",
"font_class": "fabu-fanbai",
"unicode": "e644",
"unicode_decimal": 58948
},
{
"icon_id": "30765498",
"name": "标记已读-反白",
"font_class": "biaojiyidu-fanbai",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "30765499",
"name": "手动处理-反白",
"font_class": "shoudongchuli-fanbai",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "30660167",
"name": "整理室",

BIN
src/assets/iconfonts/iconfont.ttf

BIN
src/assets/iconfonts/iconfont.woff

BIN
src/assets/iconfonts/iconfont.woff2

71
src/views/system/archiveStatistics/index.vue

@ -0,0 +1,71 @@
<template>
<div class="app-container">
<div>
<el-row :gutter="20" style="height:296px;">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<radar-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<!-- 档案类别 -->
<!-- <div class="container-wrap"> -->
<div class="top-row container-wrap">
<span class="right-top-line" />
<span class="left-bottom-line" />
<h3 class="table-title">
<p class="title-arrow">档案类别</p>
</h3>
<div class="chart-wrapper">
<pie-chart :width="'100%'" :height="'100%'" />
</div>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
</div>
</el-col>
</el-row>
<!-- 中间 -->
<el-row :gutter="20" style="height:296px;margin:20px 0">
<el-col :xs="24" :sm="24" :lg="12">
<div class="container-wrap">
<BarEcharts />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="12">
<!-- 档案类别 -->
<!-- <div class="container-wrap"> -->
<div class=" container-wrap" />
</el-col>
</el-row>
<!-- 底部 -->
<el-row :gutter="20" style="height:296px;margin:20px 0">
<el-col :xs="24" :sm="24" :lg="25">
<div class=" container-wrap" />
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import RadarChart from '@/components/Echarts/RadarChart'
import PieChart from '@/components/Echarts/PieChart'
import BarEcharts from './module/barEcharts.vue'
export default {
components: { RadarChart, PieChart, BarEcharts }
}
</script>
<style lang="scss" scoped>
@import '~@/assets/styles/lend-manage.scss';
.container-wrap{
min-height:calc(100vh - 636px) ;
}
</style>

231
src/views/system/archiveStatistics/module/barEcharts.vue

@ -0,0 +1,231 @@
<template>
<div class="barEcharts">
<div id="main" />
</div>
</template>
<script>
import echarts from 'echarts'
export default {
name: 'BarEcharts',
mounted() {
this.drawChart()
},
methods: {
drawChart() {
const app = {}
const chartDom = document.getElementById('main')
const myChart = echarts.init(chartDom)
let option = null
const posList = [
'left',
'right',
'top',
'bottom',
'inside',
'insideTop',
'insideLeft',
'insideRight',
'insideBottom',
'insideTopLeft',
'insideTopRight',
'insideBottomLeft',
'insideBottomRight'
]
app.configParameters = {
rotate: {
min: -90,
max: 90
},
align: {
options: {
left: 'left',
center: 'center',
right: 'right'
}
},
verticalAlign: {
options: {
top: 'top',
middle: 'middle',
bottom: 'bottom'
}
},
position: {
options: posList.reduce(function(map, pos) {
map[pos] = pos
return map
}, {})
},
distance: {
min: 0,
max: 100
}
}
app.config = {
rotate: 90,
align: 'left',
verticalAlign: 'middle',
position: 'insideBottom',
distance: 15,
onChange: function() {
const labelOption = {
rotate: app.config.rotate,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
position: app.config.position,
distance: app.config.distance
}
myChart.setOption({
series: [
{
label: labelOption
},
{
label: labelOption
}
]
})
}
}
const labelOption = {
show: false,
position: app.config.position,
distance: app.config.distance,
align: app.config.align,
verticalAlign: app.config.verticalAlign,
rotate: app.config.rotate,
formatter: '{c} {name|{a}}',
fontSize: 16,
rich: {
name: {}
}
}
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['Forest', 'Steppe']
},
toolbox: {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar', 'stack'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
xAxis: [{
type: 'category',
axisTick: { show: false },
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
axisLine: {// 线
lineStyle: {
color: '#113D72',
type: 'solid'
}
},
axisLabel: {// x
show: true,
textStyle: {
color: '#fff'
}
},
splitLine: {// 线
lineStyle: {
color: '#113D72',
type: 'dashed'
}
}
}],
yAxis: [{
min: 0,
max: 900,
splitNumber: 3,
type: 'value',
axisLine: {// 线
show: false
},
axisLabel: {//
show: true,
textStyle: {
color: '#fff'
}
},
splitLine: {// 线
lineStyle: {
color: '#113D72',
type: 'dashed'
}
}
}],
series: [
{
name: '出库',
type: 'bar',
barWidth: 10, //
barGap: '30%',
label: labelOption,
emphasis: {
focus: 'series'
},
data: [320, 332, 301, 334, 390],
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: '#6E48E6'
},
{
offset: 1,
color: '#3AA6FA '
}
])
},
{
name: '入库',
type: 'bar',
barWidth: 10, //
label: labelOption,
emphasis: {
focus: 'series'
},
data: [220, 182, 191, 234, 290],
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: '#9DDD92'
},
{
offset: 1,
color: '#10BFAA'
}
])
}
]
}
option && myChart.setOption(option)
}
}
}
</script>
<style lang="scss" scoped>
#main {
width: 765px;
height:297px;
}
</style>

23
src/views/system/logManage/warnLog/index.vue

@ -135,20 +135,15 @@ export default {
this.handleVisible = true
},
handleConfirm() {
// this.$refs.formDom.validate((valid) => {
// if (valid) {
// this.$message({
// message: '',
// type: 'success'
// })
// this.handleVisible = false
// // this.$refs.recordFormDom.resetFields()
// // this.$refs.recordFormDom.clearValidate()
// } else {
// this.$message.error('')
// return false
// }
// })
this.$refs.formDom.validate((valid) => {
if (valid) {
this.handleVisible = false
this.$refs.formDom.resetFields()
this.$refs.formDom.clearValidate()
} else {
return false
}
})
}
}
}

28
src/views/system/messageCenter/data1.json

@ -0,0 +1,28 @@
{
"rows":[
{
"notification":"内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容",
"msgType":"系统通知",
"pushObj":"全部用户",
"sendRole":"管理员",
"sendTime":"",
"readType":"未读"
},
{
"notification":"内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容",
"msgType":"系统通知",
"pushObj":"全部用户",
"sendRole":"管理员",
"sendTime":"",
"readType":"已读"
},
{
"notification":"内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容",
"msgType":"系统通知",
"pushObj":"全部用户",
"sendRole":"管理员",
"sendTime":"",
"readType":"已读"
}
]
}

24
src/views/system/messageCenter/index.vue

@ -1,9 +1,9 @@
<template>
<div>
<div class="head-container">
<el-button icon="el-icon-delete" size="mini">删除</el-button>
<el-button icon="el-icon-delete" size="mini">标记已读</el-button>
<el-button icon="el-icon-delete" size="mini">全部标记已读</el-button>
<el-button icon="el-icon-delete" :disabled="!(selections.length)" size="mini">删除</el-button>
<el-button class="iconfont icon-biaojiyidu-fanbai" :disabled="!(selections.length)" size="mini">标记已读</el-button>
<el-button class="iconfont icon-biaojiyidu-fanbai" size="mini">全部标记已读</el-button>
<date-range-picker v-model="query.createTime" class="date-item" />
</div>
<div class="app-container container-wrap">
@ -34,21 +34,33 @@
<script>
import DateRangePicker from '@/components/DateRangePicker'
import data1 from './data1.json'
export default {
name: 'MessageCenter',
components: { DateRangePicker },
data() {
return {
tableData: [],
selections: [],
query: {
createTime: null
},
tableData: []
}
}
},
created() {
this.getData()
},
methods: {
getData() {
this.tableData = data1.rows
},
clickRowHandler(row) {
// this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row) //
},
selectionChangeHandler(val) {
this.selections = val
}
}
}
</script>

36
src/views/system/notifyManage/index.vue

@ -1,7 +1,7 @@
<template>
<div>
<div class="head-container">
<el-button icon="el-icon-s-promotion" size="mini" @click="handleSend">发布</el-button>
<el-button class="iconfont icon-fabu-fanbai" size="mini" @click="handleSend">发布</el-button>
<el-button icon="el-icon-edit" size="mini" :disabled="!(selections.length === 1)" @click="handleEdit">修改</el-button>
<el-button icon="el-icon-delete" size="mini" :disabled="!selections.length" @click="handleDel">删除</el-button>
</div>
@ -38,7 +38,7 @@
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="formDom" :model="sendForm" size="small" label-width="80px" style="margin-left:85px">
<el-form ref="formDom" :rules="rules" :model="sendForm" size="small" label-width="80px" style="margin-left:85px">
<el-form-item label="消息类型" prop="msgType" class="down-select">
<el-select v-model="sendForm.msgType" placeholder="请选择" style="width:315px">
<el-option
@ -78,7 +78,7 @@
<div class="setting-dialog">
<p class="delMsg">确定删除所选消息吗</p>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSave">确定</el-button>
<el-button type="primary" @click="handleDelConfirm">确定</el-button>
</div>
</div>
</el-dialog>
@ -126,7 +126,18 @@ export default {
{ value: '3', label: '设备3' }
],
selectOptions: [],
showTags: false
showTags: false,
rules: {
msgType: [
{ required: true, message: '请选择类型', trigger: 'blur' }
],
notification: [
{ required: true, message: '请填写内容', trigger: 'blur' }
],
pushObj: [
{ required: true, message: '请选择推送对象', trigger: 'blur' }
]
}
}
},
computed: {
@ -162,7 +173,15 @@ export default {
},
//
handleSave() {
this.sendVisible = false
this.$refs.formDom.validate((valid) => {
if (valid) {
this.sendVisible = false
this.$refs.formDom.resetFields()
this.$refs.formDom.clearValidate()
} else {
return false
}
})
},
handleClose() {
this.$refs.formDom.resetFields()
@ -172,6 +191,10 @@ export default {
handleDel() {
this.delVisible = true
},
//
handleDelConfirm() {
this.delVisible = false
},
//
handelChange(val) {
if (val.length === this.sendObjOptions.length) {
@ -281,4 +304,7 @@ textarea{
color: #fff;
font-size: 16px;
}
::v-deep .el-form-item__error{
top: 93%;
}
</style>
Loading…
Cancel
Save