增加操作日志及菜单缺少的icon

This commit is contained in:
龙运模
2024-07-10 17:04:20 +08:00
parent d8aa326825
commit e3b1d2c9c8
19 changed files with 292 additions and 201 deletions
+125
View File
@@ -0,0 +1,125 @@
<template>
<el-container class="mainNoBack userBox">
<el-aside class="userAside" style="width: 226px;">
<el-container>
<el-main class="nopadding">
<el-menu class="menu mainMenu" :default-active="page">
<el-menu-item-group v-for="group in menu" :key="group.groupName" :title="group.groupName">
<el-menu-item v-for="item in group.list" :key="item.component" :index="item.component" @click="openPage">
<el-icon v-if="item.icon"><component :is="item.icon"/></el-icon>
<template #title>
<span>{{item.title}}</span>
</template>
</el-menu-item>
</el-menu-item-group>
</el-menu>
</el-main>
</el-container>
</el-aside>
<el-main class="userMain userMainPadding_0">
<Suspense>
<template #default>
<component :is="page"/>
</template>
<template #fallback>
<el-skeleton :rows="3" />
</template>
</Suspense>
</el-main>
</el-container>
</template>
<script>
import { defineAsyncComponent } from 'vue'
export default {
components: {
account: defineAsyncComponent(() => import('./setup/computerRoom')),
seting: defineAsyncComponent(() => import('./setup/computerRoom')),
pushSettings: defineAsyncComponent(() => import('./setup/computerRoom')),
password: defineAsyncComponent(() => import('./setup/computerRoom')),
space: defineAsyncComponent(() => import('./setup/computerRoom')),
logs: defineAsyncComponent(() => import('./setup/computerRoom')),
upToEnterprise: defineAsyncComponent(() => import('./setup/computerRoom')),
bind: defineAsyncComponent(() => import('./setup/computerRoom')),
},
data() {
return {
menu: [
{
groupName: "账号设置",
list: [
{
icon: "sc-icon-Account",
title: "机房配置",
component: "account"
},
{
icon: "sc-icon-Cost",
title: "费用配置",
component: "password"
},
{
icon: "sc-icon-Secure",
title: "维保代理商维护",
component: "pushSettings"
},
]
},
{
groupName: "数据管理",
list: [
{
icon: "sc-icon-UserLog",
title: "数据源邮件账号设置",
component: "logs"
}
]
},
],
user: {
avatar:this.$store.state.global.login_avatar,
name: this.$store.state.global.login_name,
role: "",
},
userNameF:'',
page: "account"
}
},
//路由跳转进来 判断from是否有特殊标识做特殊处理
beforeRouteEnter (to, from, next){
next((vm)=>{
if(from.is){
//删除特殊标识,防止标签刷新重复执行
delete from.is
//执行特殊方法
vm.$alert('路由跳转过来后含有特殊标识,做特殊处理', '提示', {
type: 'success',
center: true
}).then(() => {}).catch(() => {})
}
})
},
created() {
const userInfo = this.$TOOL.data.get('USER_INFO');
this.user.role = userInfo.user_roles && userInfo.user_roles.role_names.length>0?userInfo.user_roles.role_names[0]:'';
},
methods: {
openPage(item){
this.page = item.index
},
async parentParams(files) {
let params = {
avatar: files
}
const res = await this.$API.user.uploadAvatar.post(params);
if (res.code == 200) {
this.$store.commit("SET_LOGIN_AVATAR", files);
}
}
}
}
</script>
<style scoped lang="scss">
.noBorderRadius{border-radius: 0 !important;}
</style>
@@ -0,0 +1,24 @@
<template>
<view>机房</view>
</template>
<script>
export default {
name: "computerRoom",
data(){
return{
}
},
mounted() {
},
methods:{
}
}
</script>
<style scoped lang="scss">
</style>
+1
View File
@@ -9,6 +9,7 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" @selection-change="selectionChange" stripe>
<el-table-column type="selection" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<el-table-column label="应用ID" prop="appId" width="150"></el-table-column>
<el-table-column label="应用名称" prop="appName" width="250"></el-table-column>
<el-table-column label="状态" width="50">
+9 -4
View File
@@ -13,11 +13,11 @@
<div class="searchMain searchMainNoTop">
<div class="searchItem">
<label class="name">开通日期</label>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.activation_date" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.activation_date" :popper-options="{ placement: 'bottom-start' }" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
</div>
<div class="searchItem">
<label class="name">公司名称</label>
<el-select class="input" :size="size" v-model="params.full_name" @visible-change="getCompanyList" placeholder="请选择公司名称" filterable clearable>
<el-select class="input" :size="size" v-model="params.id" @visible-change="getCompanyList" placeholder="请选择公司名称" filterable clearable>
<el-option v-for="item in setMap.full_name" :key="item" :label="item.full_name" :value="item.id"></el-option>
</el-select>
</div>
@@ -34,7 +34,7 @@
</div>
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" @selection-change="selectionChange">
<el-table-column type="selection" align="center" width="40"></el-table-column>
<el-table-column type="index" align="center" label="序号" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<template #logo="scope">
<el-image class="logoCell" :src="scope.row.logo" fit="contain"></el-image>
</template>
@@ -96,7 +96,7 @@ export default {
selection: [],
params: {
activation_date: '',
full_name:'',
id:'',
active_status:'',
}
}
@@ -197,6 +197,11 @@ export default {
this.$refs.table.upData(this.params);
},
reset(){
this.params = {
activation_date: '',
id:'',
active_status:'',
};
this.$refs.table.reload();
},
+67 -61
View File
@@ -1,67 +1,73 @@
<template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="640" destroy-on-close draggable @closed="$emit('closed')">
<el-dialog :title="titleMap[mode]" v-model="visible" :width="1200" destroy-on-close draggable @closed="$emit('closed')">
<el-scrollbar height="460px" style="padding: 0 20px;">
<el-form :model="form" :rules="rules" ref="dialogForm" label-width="140px">
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业信息</span></div>
<el-form-item label="公司名称" prop="full_name">
<el-input v-model="form.full_name" placeholder="请填写认证企业名称" clearable></el-input>
</el-form-item>
<el-form-item label="公司简称" prop="name">
<el-input v-model="form.name" placeholder="请输入公司简称" clearable></el-input>
</el-form-item>
<el-form-item label="公司系统入口地址" prop="domain">
<el-input v-model="form.domain" placeholder="公司系统入口地址" clearable></el-input>
</el-form-item>
<el-form-item label="公司类型" prop="company_type">
<el-select v-model="form.company_type" @visible-change="getCompanyTypeSelect" placeholder="请选择公司类型" clearable style="width: 100%;">
<el-option v-for="item in setMap.companyType" :key="item" :label="item.label" :value="item.company_type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="公司地址" prop="address">
<el-input v-model="form.address" placeholder="请输入部门名称" clearable></el-input>
</el-form-item>
<el-form-item label="证件照" prop="doc_url">
<ossImgListUpload :list="form.doc_url" :length="3" @parentParams="faultParentParams" />
<p class="el-form-item-msg">可接受格式为:jpg、jpeg、png、gif,图片大小不超过5M。</p>
<p class="el-form-item-msg">可接受证件类型:营业执照、组织机构代码证、统一社会信用代码证、事业单位法人证书。</p>
<p class="el-form-item-msg">可以添加"高德开放平台备案、地图开发申请、地图开发认证"等水印。</p>
<p class="el-form-item-msg">但不能遮挡关键信息,例如公司名称、公司证件号。</p>
</el-form-item>
<el-form-item label="公司LOGO" prop="logo">
<ossImgUpload @parentParams="parentParams" :url="form.logo" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" placeholder="请输入备注"></el-input>
</el-form-item>
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业管理员信息</span></div>
<el-form-item label="负责人/联系方式" required>
<el-row justify="space-between">
<el-col :span="5">
<el-form-item prop="owner">
<el-input v-model="form.owner" placeholder="负责人"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item prop="mobile">
<el-input v-model="form.mobile" placeholder="联系方式"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item prop="email">
<el-input v-model="form.email" placeholder="邮箱地址"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="账号" prop="admin_access">
<el-input v-model="form.admin_access" placeholder="请填写管理员账号"></el-input>
</el-form-item>
<el-form-item label="登录密码" prop="password" v-if="mode == 'add'">
<el-input v-model="form.password" type="password" placeholder="请填写密码"></el-input>
</el-form-item>
<el-form-item label="生成系统使用协议" prop="accord">
<el-switch v-model="form.accord" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-row justify="space-between">
<el-col :span="11">
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业信息</span></div>
<el-form-item label="公司名称" prop="full_name">
<el-input v-model="form.full_name" placeholder="请填写认证企业名称" clearable></el-input>
</el-form-item>
<el-form-item label="公司简称" prop="name">
<el-input v-model="form.name" placeholder="请输入公司简称" clearable></el-input>
</el-form-item>
<el-form-item label="公司系统入口地址" prop="domain">
<el-input v-model="form.domain" placeholder="公司系统入口地址" clearable></el-input>
</el-form-item>
<el-form-item label="公司类型" prop="company_type">
<el-select v-model="form.company_type" @visible-change="getCompanyTypeSelect" placeholder="请选择公司类型" clearable style="width: 100%;">
<el-option v-for="item in setMap.companyType" :key="item" :label="item.label" :value="item.company_type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="公司地址" prop="address">
<el-input v-model="form.address" placeholder="请输入部门名称" clearable></el-input>
</el-form-item>
<el-form-item label="公司LOGO" prop="logo">
<ossImgUpload @parentParams="parentParams" :url="form.logo" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" placeholder="请输入备注"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业管理员信息</span></div>
<el-form-item label="负责人/联系方式" required>
<el-row justify="space-between">
<el-col :span="5">
<el-form-item prop="owner">
<el-input v-model="form.owner" placeholder="负责人"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item prop="mobile">
<el-input v-model="form.mobile" placeholder="联系方式"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item prop="email">
<el-input v-model="form.email" placeholder="邮箱地址"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="账号" prop="admin_access">
<el-input v-model="form.admin_access" placeholder="请填写管理员账号"></el-input>
</el-form-item>
<el-form-item label="登录密码" prop="password" v-if="mode == 'add'">
<el-input v-model="form.password" type="password" placeholder="请填写密码"></el-input>
</el-form-item>
<el-form-item label="证件照" prop="doc_url">
<ossImgListUpload :list="form.doc_url" :length="3" @parentParams="faultParentParams" />
<p class="el-form-item-msg">可接受格式为:jpg、jpeg、png、gif,图片大小不超过5M。</p>
<p class="el-form-item-msg">可接受证件类型:营业执照、组织机构代码证、统一社会信用代码证、事业单位法人证书。</p>
<p class="el-form-item-msg">可以添加"高德开放平台备案、地图开发申请、地图开发认证"等水印。</p>
<p class="el-form-item-msg">但不能遮挡关键信息,例如公司名称、公司证件号。</p>
</el-form-item>
<el-form-item label="生成系统使用协议" prop="accord">
<el-switch v-model="form.accord" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-scrollbar>
<template #footer>
+1 -1
View File
@@ -12,7 +12,7 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" :showPagination="false" @selection-change="selectionChange">
<el-table-column type="selection" width="40"></el-table-column>
<el-table-column type="index" label="序号" align="center" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<el-table-column label="状态" fixed="right" align="center" width="80" prop="active_status">
<template #default="scope">
<el-switch :size="size" v-model="scope.row.active_status" @change="changeSwitch($event, scope.row)" :loading="scope.row.$switch_status" :active-value="true" :inactive-value="false"></el-switch>
+18 -112
View File
@@ -1,54 +1,20 @@
<template>
<el-container>
<!-- <el-aside width="220px">-->
<!-- <el-tree ref="category" class="menu" node-key="label" :data="category" :default-expanded-keys="['系统日志']" current-node-key="系统日志" :highlight-current="true" :expand-on-click-node="false">-->
<!-- </el-tree>-->
<!-- </el-aside>-->
<el-container class="mainBox mainBoxHeaderNoBorder">
<el-main class="nopadding">
<el-container>
<!-- <el-header>-->
<!-- <div class="left-panel">-->
<!-- </div>-->
<!-- <div class="right-panel">-->
<!-- </div>-->
<!-- </el-header>-->
<!-- <el-header style="height:150px;">-->
<!-- <scEcharts height="100%" :option="logsChartOption"></scEcharts>-->
<!-- </el-header>-->
<el-main class="nopadding">
<div class="searchMain">
<div class="searchItem">
<label class="name">时间</label>
<el-date-picker class="input" type="datetimerange" :size="size" v-model="date" align="right" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
</div>
<div class="searchItem searchBtn">
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
<el-button :size="size" type="info" icon="el-icon-RefreshRight">重置</el-button>
</div>
</div>
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" stripe :size="size" highlightCurrentRow @row-click="rowClick">
<el-table-column label="级别" prop="level" width="60">
<template #default="scope">
<el-icon v-if="scope.row.level=='error'" style="color: #F56C6C;"><el-icon-circle-close-filled /></el-icon>
<el-icon v-if="scope.row.level=='warn'" style="color: #E6A23C;"><el-icon-warning-filled /></el-icon>
<el-icon v-if="scope.row.level=='info'" style="color: #409EFF;"><el-icon-info-filled /></el-icon>
</template>
</el-table-column>
<el-table-column label="ID" prop="id" width="180"></el-table-column>
<el-table-column label="日志名" prop="name" width="150"></el-table-column>
<el-table-column label="请求接口" prop="url" width="150"></el-table-column>
<el-table-column label="请求方法" prop="type" width="150"></el-table-column>
<el-table-column label="用户" prop="user" width="150"></el-table-column>
<el-table-column label="客户端IP" prop="cip" width="150"></el-table-column>
<el-table-column label="日志时间" prop="time" width="170"></el-table-column>
</scTable>
</el-main>
</el-container>
</el-main>
</el-container>
<el-container class="mainBox mainBoxHeaderNoBorder">
<el-main class="nopadding">
<div class="searchMain">
<div class="searchItem">
<label class="name">时间</label>
<el-date-picker class="input" type="datetimerange" :size="size" v-model="date" :popper-options="{ placement: 'bottom-start' }" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
</div>
<div class="searchItem searchBtn">
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
<el-button :size="size" type="info" icon="el-icon-RefreshRight">重置</el-button>
</div>
</div>
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" stripe :size="size" highlightCurrentRow @row-click="rowClick">
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
</scTable>
</el-main>
</el-container>
<el-drawer v-model="infoDrawer" title="日志详情" :size="600" destroy-on-close>
@@ -58,80 +24,20 @@
<script>
import info from './info'
import scEcharts from '@/components/scEcharts'
export default {
name: 'log',
components: {
info,
scEcharts
},
data() {
return {
size:"small",
infoDrawer: false,
logsChartOption: {
color: ['#409eff','#e6a23c','#f56c6c'],
grid: {
top: '0px',
left: '10px',
right: '10px',
bottom: '0px'
},
tooltip: {
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['2021-07-01', '2021-07-02', '2021-07-03', '2021-07-04', '2021-07-05', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09', '2021-07-10', '2021-07-11', '2021-07-12', '2021-07-13', '2021-07-14', '2021-07-15']
},
yAxis: {
show: false,
type: 'value'
},
series: [{
data: [120, 200, 150, 80, 70, 110, 130, 120, 200, 150, 80, 70, 110, 130, 70, 110],
type: 'bar',
stack: 'log',
barWidth: '15px'
},
{
data: [15, 26, 7, 12, 13, 9, 21, 15, 26, 7, 12, 13, 9, 21, 12, 3],
type: 'bar',
stack: 'log',
barWidth: '15px'
},
{
data: [0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
type: 'bar',
stack: 'log',
barWidth: '15px'
}]
},
category: [
{
label: '系统日志',
children: [
{label: 'debug'},
{label: 'info'},
{label: 'warn'},
{label: 'error'},
{label: 'fatal'}
]
},
{
label: '应用日志',
children: [
{label: 'selfHelp'},
{label: 'WechatApp'}
]
}
],
date: [],
list:{
apiObj: {},
apiObj: this.$API.system.log.list,
column:[]
},
search: {
@@ -140,7 +46,7 @@
}
},
methods: {
upsearch(){
upSearch(){
},
rowClick(row){
+2 -2
View File
@@ -13,7 +13,7 @@
<div class="searchMain searchMainNoTop">
<div class="searchItem">
<label class="name">操作时间</label>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.keyword" align="right" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.keyword" :popper-options="{ placement: 'bottom-start' }" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
</div>
<div class="searchItem">
<label class="name">物料编码</label>
@@ -33,7 +33,7 @@
</div>
</div>
<scTable ref="table" :apiObj="list.apiObj" row-key="id" @selection-change="selectionChange" stripe :size="size">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<el-table-column label="工单号" prop="order_sn" width="150"></el-table-column>
<el-table-column label="别名" prop="alias" width="200"></el-table-column>
<el-table-column label="排序" prop="sort" width="80"></el-table-column>
+1 -1
View File
@@ -13,7 +13,7 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" @selection-change="selectionChange" stripe :size="size">
<el-table-column type="selection" align="center" width="50"></el-table-column>
<el-table-column label="序号" type="index" align="center" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<el-table-column label="角色名称" prop="label" width="150"></el-table-column>
<el-table-column label="创建时间" prop="date" width="180"></el-table-column>
<el-table-column label="备注" prop="remark" min-width="150"></el-table-column>
+1 -1
View File
@@ -28,7 +28,7 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" @selection-change="selectionChange" stripe :size="size">
<el-table-column type="selection" align="center" width="45"></el-table-column>
<el-table-column label="序号" type="index" align="center" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<template #avatar="scope">
<div class="userImg">
<el-avatar :src="scope.row.avatar" size="small"></el-avatar>
+3 -3
View File
@@ -4,7 +4,7 @@
<div class="searchMain">
<div class="searchItem">
<label class="name">时间</label>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.keyword" align="right" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
<el-date-picker class="input" type="daterange" :size="size" v-model="params.keyword" :popper-options="{ placement: 'bottom-start' }" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
</div>
<div class="searchItem">
<label class="name">工单号</label>
@@ -28,7 +28,7 @@
</div>
</div>
<scTable ref="table" :apiObj="list.apiObj" row-key="id" @selection-change="selectionChange" stripe :size="size">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
<el-table-column label="工单号" prop="order_sn" width="150"></el-table-column>
<el-table-column label="别名" prop="alias" width="200"></el-table-column>
<el-table-column label="排序" prop="sort" width="80"></el-table-column>
@@ -85,7 +85,7 @@ export default {
permission: false
},
list:{
apiObj: {},
apiObj: this.$API.system.log.list,
column:[]
},
selection: [],