feat: 代码优化

This commit is contained in:
meilin.huang
2023-03-16 16:40:57 +08:00
parent 5f1aaa40d8
commit 110abc4ac7
28 changed files with 430 additions and 340 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,51 @@
{
"id": "3953964",
"name": "mayfly-go",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "23957582",
"name": "MongoDB",
"font_class": "mongo",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "4969649",
"name": "Redis",
"font_class": "op-redis",
"unicode": "e728",
"unicode_decimal": 59176
},
{
"icon_id": "22442993",
"name": "PostgreSQL",
"font_class": "op-postgres",
"unicode": "e8b7",
"unicode_decimal": 59575
},
{
"icon_id": "10055634",
"name": "云数据库MongoDB",
"font_class": "op-mongo",
"unicode": "e7d7",
"unicode_decimal": 59351
},
{
"icon_id": "10055642",
"name": "云数据库 RDS MySQL",
"font_class": "op-mysql",
"unicode": "e7d8",
"unicode_decimal": 59352
},
{
"icon_id": "3876165",
"name": "redis",
"font_class": "redis",
"unicode": "e619",
"unicode_decimal": 58905
}
]
}

View File

@@ -1,42 +1,47 @@
// 字体图标 url
const cssCdnUrlList: Array<string> = [
'//at.alicdn.com/t/font_2298093_ysc3z187xhh.css',
'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
];
// 第三方 js url
const jsCdnUrlList: Array<string> = [];
// 动态设置字体图标
// 动态批量设置字体图标
export function setCssCdn() {
if (cssCdnUrlList.length <= 0) return false;
cssCdnUrlList.map((v) => {
let link = document.createElement('link');
link.rel = 'stylesheet';
link.href = v;
link.crossOrigin = 'anonymous';
document.getElementsByTagName('head')[0].appendChild(link);
});
if (cssCdnUrlList.length <= 0) return false;
cssCdnUrlList.map((v) => {
let link = document.createElement('link');
link.rel = 'stylesheet';
link.href = v;
link.crossOrigin = 'anonymous';
document.getElementsByTagName('head')[0].appendChild(link);
});
}
// 批量设置第三方js
// 动态批量设置第三方js
export function setJsCdn() {
if (jsCdnUrlList.length <= 0) return false;
jsCdnUrlList.map((v) => {
let link = document.createElement('script');
link.src = v;
document.body.appendChild(link);
});
if (jsCdnUrlList.length <= 0) return false;
jsCdnUrlList.map((v) => {
let link = document.createElement('script');
link.src = v;
document.body.appendChild(link);
});
}
// 设置执行函数
/**
* 批量设置字体图标、动态js
* @method cssCdn 动态批量设置字体图标
* @method jsCdn 动态批量设置第三方js
*/
const setIntroduction = {
cssCdn: () => {
setCssCdn();
},
jsCdn: () => {
setJsCdn();
},
// 设置css
cssCdn: () => {
setCssCdn();
},
// 设置js
jsCdn: () => {
setJsCdn();
},
};
// 导出函数方法
export default setIntroduction;
export default setIntroduction;

View File

@@ -1,5 +1,20 @@
import { nextTick } from 'vue';
import * as svg from '@element-plus/icons-vue';
import iconfontJson from '@/assets/iconfont/iconfont.json'
import SvgIcon from '@/components/svgIcon/index.vue';
/**
* element plus svg
* @param app vue
* @description 使https://element-plus.gitee.io/zh-CN/component/icon.html
*/
export function registElSvgIcon(app: any) {
const icons = svg as any;
for (const i in icons) {
app.component(`${icons[i].name}`, icons[i]);
}
app.component('SvgIcon', SvgIcon);
}
// 获取阿里字体图标
const getAlicdnIconfont = () => {
@@ -9,7 +24,8 @@ const getAlicdnIconfont = () => {
let sheetsList = [];
let sheetsIconList = [];
for (let i = 0; i < styles.length; i++) {
if (styles[i].href && styles[i].href.indexOf('at.alicdn.com') > -1) {
console.log(styles[i]);
if (styles[i].href && styles[i].href.indexOf('iconfont') > -1) {
sheetsList.push(styles[i]);
}
}
@@ -28,6 +44,16 @@ const getAlicdnIconfont = () => {
});
};
// 获取本地阿里icons
const getLocalAliIconfont = () => {
return new Promise((resolve, reject) => {
nextTick(() => {
const prefix = iconfontJson.css_prefix_text;
resolve(iconfontJson.glyphs.map((x: any) => prefix + x.font_class));
});
});
}
// 初始化获取 css 样式,获取 element plus 自带图标
const elementPlusIconfont = () => {
return new Promise((resolve, reject) => {
@@ -76,9 +102,9 @@ const awesomeIconfont = () => {
// 定义导出方法集合
const initIconfont = {
// ali: () => {
// return getAlicdnIconfont();
// },
ali: () => {
return getLocalAliIconfont();
},
ele: () => {
return elementPlusIconfont();
},

View File

@@ -16,7 +16,6 @@
:name="state.fontIconPrefix === '' ? prepend : state.fontIconPrefix"
class="font14"
/>
<!-- <i v-else :class="state.fontIconPrefix === '' ? prepend : state.fontIconPrefix" class="font14"></i> -->
</template>
</el-input>
<el-popover
@@ -32,12 +31,12 @@
<div class="icon-selector-warp">
<div class="icon-selector-warp-title">{{ title }}</div>
<el-tabs v-model="state.fontIconTabActive" @tab-click="onIconClick">
<!-- <el-tab-pane lazy label="ali" name="ali">
<IconList :list="fontIconSheetsFilterList" :empty="emptyDescription" :prefix="state.fontIconPrefix" @get-icon="onColClick" />
</el-tab-pane> -->
<el-tab-pane lazy label="ele" name="ele">
<IconList :list="fontIconSheetsFilterList" :empty="emptyDescription" :prefix="state.fontIconPrefix" @get-icon="onColClick" />
</el-tab-pane>
<el-tab-pane lazy label="ali" name="ali">
<IconList :list="fontIconSheetsFilterList" :empty="emptyDescription" :prefix="state.fontIconPrefix" @get-icon="onColClick" />
</el-tab-pane>
<!-- <el-tab-pane lazy label="awe" name="awe">
<IconList :list="fontIconSheetsFilterList" :empty="emptyDescription" :prefix="state.fontIconPrefix" @get-icon="onColClick" />
</el-tab-pane> -->
@@ -51,7 +50,7 @@
<script setup lang="ts" name="iconSelector">
import { defineAsyncComponent, ref, reactive, onMounted, nextTick, computed, watch } from 'vue';
import type { TabsPaneContext } from 'element-plus';
import initIconfont from '@/common/utils/getStyleSheets';
import initIconfont from '@/common/utils/svgIcons';
import '@/theme/iconSelector.scss';
// 定义父组件传过来的值
@@ -158,7 +157,11 @@ const initModeValueEcho = () => {
// 处理 icon 类型用于回显时tab 高亮与初始化数据
const initFontIconName = () => {
let name = 'ele';
// if (props.modelValue!.indexOf('iconfont') > -1) name = 'ali';
if (props.modelValue!.indexOf('iconfont') > -1) {
name = 'ali';
} else {
name = 'ele';
}
// else if (props.modelValue!.indexOf('ele-') > -1) name = 'ele';
// else if (props.modelValue!.indexOf('fa') > -1) name = 'awe';
// 初始化 tab 高亮回显
@@ -169,10 +172,9 @@ const initFontIconName = () => {
const initFontIconData = async (name: string) => {
if (name === 'ali') {
// 阿里字体图标使用 `iconfont xxx`
// if (state.fontIconList.ali.length > 0) return;
// await initIconfont.ali().then((res: any) => {
// state.fontIconList.ali = res.map((i: string) => `iconfont ${i}`);
// });
if (state.fontIconList.ali.length > 0) return;
const res: any = await initIconfont.ali();
state.fontIconList.ali = res.map((i: string) => `iconfont ${i}`);
} else if (name === 'ele') {
// element plus 图标
if (state.fontIconList.ele.length > 0) return;

View File

@@ -1,11 +1,17 @@
<template>
<i v-if="isEle" class="el-icon" :style="setIconSvgStyle">
<component :is="getIconName" />
</i>
<div v-else-if="isShowIconImg" :style="setIconImgOutStyle">
<img :src="getIconName" :style="setIconSvgInsStyle" />
</div>
<i v-else :class="getIconName" :style="setIconSvgStyle" />
<i v-if="isShowIconSvg" class="el-icon icon-middle" :style="setIconSvgStyle">
<component :is="getIconName" :style="setIconSvgStyle" />
</i>
<svg v-else-if="isIconfont()" class="el-icon iconfont-icon icon-middle" aria-hidden="true" :style="setIconSvgStyle">
<use :xlink:href="'#' + getIconfontName()"></use>
</svg>
<div v-else-if="isShowIconImg" :style="setIconImgOutStyle">
<img :src="getIconName" :style="setIconSvgInsStyle" />
</div>
<i v-else :class="getIconName" :style="setIconSvgStyle" />
</template>
<script setup lang="ts" name="svgIcon">
@@ -13,19 +19,19 @@ import { computed } from 'vue';
// 定义父组件传过来的值
const props = defineProps({
// svg 图标组件名字
name: {
type: String,
},
// svg 大小
size: {
type: Number,
default: () => 14,
},
// svg 颜色
color: {
type: String,
},
// svg 图标组件名字
name: {
type: String,
},
// svg 大小
size: {
type: Number,
default: () => 14,
},
// svg 颜色
color: {
type: String,
},
isEle: {
type: Boolean,
default: true,
@@ -33,35 +39,67 @@ const props = defineProps({
});
// 在线链接、本地引入地址前缀
// https://gitee.com/lyt-top/vue-next-admin/issues/I62OVL
const linesString = ['https', 'http', '/src', '/assets', 'data:image', import.meta.env.VITE_PUBLIC_PATH];
// 获取 icon 图标名称
const getIconName = computed(() => {
return props?.name;
return props?.name as any;
});
// 用于判断 element plus 自带 svg 图标的显示、隐藏
// 用于判断 element plus 自带 svg 图标的显示、隐藏。不存在 空格分隔的icon name即为element plus自带icon
const isShowIconSvg = computed(() => {
return props?.name?.startsWith('ele-');
const ss = props?.name?.split(" ")
if (!ss) {
return true;
}
return ss.length == 1;
});
const isIconfont = () => {
return props?.name?.startsWith("iconfont")
}
const getIconfontName = () => {
// iconfont icon-xxxx 获取icon-xxx即可
return props?.name?.split(" ")[1]
}
// 用于判断在线链接、本地引入等图标显示、隐藏
const isShowIconImg = computed(() => {
return linesString.find((str) => props.name?.startsWith(str));
return linesString.find((str) => props.name?.startsWith(str));
});
// 设置图标样式
const setIconSvgStyle = computed(() => {
return `font-size: ${props.size}px;color: ${props.color};`;
return `font-size: ${props.size}px;color: ${props.color};width: ${props.size}px;height: ${props.size}px;`;
});
// 设置图片样式
const setIconImgOutStyle = computed(() => {
return `width: ${props.size}px;height: ${props.size}px;display: inline-block;overflow: hidden;`;
return `width: ${props.size}px;height: ${props.size}px;display: inline-block;overflow: hidden;`;
});
// 设置图片样式
// https://gitee.com/lyt-top/vue-next-admin/issues/I59ND0
const setIconSvgInsStyle = computed(() => {
const filterStyle: string[] = [];
const compatibles: string[] = ['-webkit', '-ms', '-o', '-moz'];
compatibles.forEach((j) => filterStyle.push(`${j}-filter: drop-shadow(${props.color} 30px 0);`));
return `width: ${props.size}px;height: ${props.size}px;position: relative;left: -${props.size}px;${filterStyle.join('')}`;
const filterStyle: string[] = [];
const compatibles: string[] = ['-webkit', '-ms', '-o', '-moz'];
compatibles.forEach((j) => filterStyle.push(`${j}-filter: drop-shadow(${props.color} 30px 0);`));
return `width: ${props.size}px;height: ${props.size}px;position: relative;left: -${props.size}px;${filterStyle.join('')}`;
});
</script>
</script>
<style type="text/css">
.iconfont-icon {
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.icon-middle {
display: inline-flex;
justify-content: center;
align-items: center;
cursor: pointer;
vertical-align: middle;
}
</style>

View File

@@ -1,36 +1,24 @@
import { createApp } from 'vue';
import App from '@/App.vue';
import router from './router';
import pinia from '@/store/index';
import { directive } from '@/directive/index';
import { globalComponentSize } from '@/common/utils/componentSize';
import { registElSvgIcon } from '@/common/utils/svgIcons';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import '@/theme/index.scss';
import { ElMessage } from 'element-plus';
import * as svg from '@element-plus/icons-vue';
import SvgIcon from '@/components/svgIcon/index.vue';
import '@/theme/index.scss';
import '@/assets/font/font.css'
import '@/assets/iconfont/iconfont.js'
const app = createApp(App);
/**
* 导出全局注册 element plus svg 图标
* @param app vue 实例
* @description 使用https://element-plus.gitee.io/zh-CN/component/icon.html
*/
function elSvg(app: any) {
const icons = svg as any;
for (const i in icons) {
app.component(`${icons[i].name}`, icons[i]);
}
app.component('SvgIcon', SvgIcon);
}
elSvg(app);
registElSvgIcon(app);
directive(app);
app.use(pinia)

View File

@@ -340,24 +340,4 @@ body,
.f12 {
font-size: 12px
}
// 图标垂直居中
.icon-middle {
.el-icon {
display: inline-flex;
justify-content: center;
align-items: center;
cursor: pointer;
vertical-align: middle;
}
}
.img-icon {
display: inline-flex;
justify-content: center;
align-items: center;
cursor: pointer;
vertical-align: middle;
height: 16px;
width: 16px;
}

View File

@@ -6,19 +6,19 @@
<template v-for="val in menuLists">
<el-submenu :index="val.path" v-if="val.children && val.children.length > 0" :key="val.path">
<template #title>
<i :class="val.meta.icon ? val.meta.icon : ''"></i>
<SvgIcon :name="val.meta.icon"/>
<span>{{ val.meta.title }}</span>
</template>
<SubItem :chil="val.children" />
</el-submenu>
<el-menu-item :index="val.path" :key="val?.path" v-else>
<template #title v-if="!val.meta.link || (val.meta.link && val.meta.isIframe)">
<i :class="val.meta.icon ? val.meta.icon : ''"></i>
<SvgIcon :name="val.meta.icon"/>
{{ val.meta.title }}
</template>
<template #title v-else>
<a :href="val.meta.link" target="_blank">
<i :class="val.meta.icon ? val.meta.icon : ''"></i>
<SvgIcon :name="val.meta.icon"/>
{{ val.meta.title }}
</a>
</template>

View File

@@ -2,19 +2,19 @@
<template v-for="val in chils">
<el-sub-menu :index="val.path" :key="val.path" v-if="val.children && val.children.length > 0">
<template #title>
<SvgIcon :name="val.meta.icon" />
<SvgIcon :name="val.meta.icon"/>
<span>{{ val.meta.title }}</span>
</template>
<sub-item :chil="val.children" />
</el-sub-menu>
<el-menu-item :index="val.path" :key="val.path" v-else>
<el-menu-item :index="val.path" :key="val?.path" v-else>
<template v-if="!val.meta.link || (val.meta.link && val.meta.isIframe)">
<SvgIcon :name="val.meta.icon" />
<SvgIcon :name="val.meta.icon"/>
<span>{{ val.meta.title }}</span>
</template>
<template v-else>
<a :href="val.meta.link" target="_blank">
<SvgIcon :name="val.meta.icon" />
<SvgIcon :name="val.meta.icon"/>
{{ val.meta.title }}
</a>
</template>
@@ -24,6 +24,7 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import SvgIcon from '@/components/svgIcon/index.vue';
export default defineComponent({
name: 'navMenuSubItem',
props: {
@@ -35,7 +36,7 @@ export default defineComponent({
setup(props) {
// 获取父级菜单数据
const chils = computed(() => {
return props.chil;
return props.chil as any;
});
return {
chils,

View File

@@ -4,13 +4,13 @@
<template v-for="val in menuLists">
<el-sub-menu :index="val.path" v-if="val.children && val.children.length > 0" :key="val.path">
<template #title>
<SvgIcon :name="val.meta.icon" />
<SvgIcon :name="val.meta.icon"/>
<span>{{ val.meta.title }}</span>
</template>
<SubItem :chil="val.children" />
</el-sub-menu>
<el-menu-item :index="val.path" :key="val?.path" v-else>
<SvgIcon :name="val.meta.icon" />
<SvgIcon :name="val.meta.icon"/>
<template #title v-if="!val.meta.link || (val.meta.link && val.meta.isIframe)">
<span>{{ val.meta.title }}</span>
</template>

View File

@@ -6,9 +6,10 @@
<el-tree ref="treeRef" :style="{ maxHeight: state.height, height: state.height, overflow: 'auto' }"
:highlight-current="true" :indent="7" :load="loadNode" :props="treeProps" lazy node-key="key"
:expand-on-click-node="true" :filter-node-method="filterNode" @node-click="treeNodeClick" @node-expand="treeNodeClick">
:expand-on-click-node="true" :filter-node-method="filterNode" @node-click="treeNodeClick"
@node-expand="treeNodeClick">
<template #default="{ node, data }">
<span class="icon-middle ">
<span>
<span v-if="data.type == TagTreeNode.TagPath">
<tag-info :tag-path="data.label" />
</span>
@@ -60,7 +61,7 @@ const { filterText } = toRefs(state)
onMounted(async () => {
if (!props.height) {
state.height = window.innerHeight - 145 + 'px';
state.height = window.innerHeight - 147 + 'px';
} else {
state.height = props.height;
}
@@ -84,7 +85,13 @@ const loadNode = async (node: any, resolve: any) => {
if (typeof resolve !== 'function') {
return;
}
return resolve(await props.load(node));
let nodes = []
try {
nodes = await props.load(node)
} catch (e: any) {
console.error(e);
}
return resolve(nodes)
};
const treeNodeClick = (data: any) => {

View File

@@ -10,7 +10,7 @@
<el-select @focus="getTags" v-model="query.tagPath" placeholder="请选择标签" filterable clearable>
<el-option v-for="item in tags" :key="item" :label="item" :value="item"> </el-option>
</el-select>
<el-button v-waves type="primary" icon="search" @click="search()" class="ml5">查询</el-button>
<el-button type="success" icon="search" @click="search()" class="ml5"></el-button>
</div>
<el-table :data="datas" ref="table" @current-change="choose" show-overflow-tooltip stripe>
<el-table-column label="选择" width="60px">

View File

@@ -28,14 +28,10 @@
<span v-if="data.type == NodeType.DbInst">
<el-popover placement="right-start" title="数据库实例信息" trigger="hover" :width="210">
<template #reference>
<img v-if="data.params.type === 'mysql'" src="@/assets/icon/mysql.png"
class="img-icon" />
<img v-if="data.params.type === 'postgres'" src="@/assets/icon/postgres.png"
class="img-icon" />
<SvgIcon v-if="data.params.type === 'mysql'" name="iconfont icon-op-mysql" :size="18" />
<SvgIcon v-if="data.params.type === 'postgres'" name="iconfont icon-op-postgres" :size="18" />
<el-icon v-else>
<InfoFilled />
</el-icon>
<SvgIcon name="InfoFilled" v-else />
</template>
<template #default>
<el-form class="instances-pop-form" label-width="55px" :size="'small'">
@@ -52,23 +48,16 @@
</el-popover>
</span>
<el-icon v-if="data.type == NodeType.Db">
<Coin color="#67c23a" />
</el-icon>
<SvgIcon v-if="data.type == NodeType.Db" name="Coin" color="#67c23a" />
<SvgIcon name="Calendar" v-if="data.type == NodeType.TableMenu" color="#409eff" />
<el-icon v-if="data.type == NodeType.TableMenu">
<Calendar color="#409eff" />
</el-icon>
<el-tooltip v-if="data.type == NodeType.Table" effect="customized"
:content="data.params.tableComment" placement="top-end">
<el-icon>
<Calendar color="#409eff" />
</el-icon>
<SvgIcon name="Calendar" color="#409eff" />
</el-tooltip>
<el-icon v-if="data.type == NodeType.SqlMenu || data.type == NodeType.Sql">
<Files color="#f56c6c" />
</el-icon>
<SvgIcon name="Files" v-if="data.type == NodeType.SqlMenu || data.type == NodeType.Sql" color="#f56c6c" />
</template>
</tag-tree>
</el-col>

View File

@@ -105,7 +105,8 @@
</el-dropdown-item>
<el-dropdown-item>
<el-link :disabled="!scope.row.hasCli || scope.row.status == -1" type="danger"
<el-link v-auth="'machine:close-cli'"
:disabled="!scope.row.hasCli || scope.row.status == -1" type="danger"
@click="closeCli(scope.row)" plain size="small" :underline="false">关闭连接
</el-link>
</el-dropdown-item>

View File

@@ -9,10 +9,7 @@
</el-button>
<div style="float: right">
<el-select v-model="query.type" placeholder="请选择标签" @clear="search" filterable clearable>
<el-option label="" value="item"> </el-option>
</el-select>
<el-input class="ml5" placeholder="请输入凭证名称" style="width: 150px" v-model="query.name" @clear="search"
<el-input class="ml5" placeholder="请输入凭证名称" style="width: 200px" v-model="query.name" @clear="search"
plain clearable></el-input>
<el-button class="ml5" @click="search" type="success" icon="search"></el-button>
</div>

View File

@@ -7,7 +7,7 @@
<span v-if="data.type == NodeType.Mongo">
<el-popover placement="right-start" title="mongo实例信息" trigger="hover" :width="210">
<template #reference>
<img src="@/assets/icon/mongo.png" class="img-icon" />
<SvgIcon name="iconfont icon-op-mongo" :size="18"/>
</template>
<template #default>
<el-form class="instances-pop-form" label-width="50px" :size="'small'">
@@ -20,13 +20,9 @@
</el-popover>
</span>
<el-icon v-if="data.type == NodeType.Dbs">
<Coin color="#67c23a" />
</el-icon>
<SvgIcon v-if="data.type == NodeType.Dbs" name="Coin" color="#67c23a"/>
<el-icon v-if="data.type == NodeType.Coll || data.type == NodeType.CollMenu">
<Document class="color-primary" />
</el-icon>
<SvgIcon v-if="data.type == NodeType.Coll || data.type == NodeType.CollMenu" name="Document" class="color-primary"/>
</template>
<template #label="{ data }">

View File

@@ -9,7 +9,7 @@
<span v-if="data.type == NodeType.Redis">
<el-popover placement="right-start" title="redis实例信息" trigger="hover" :width="210">
<template #reference>
<img src="@/assets/icon/redis.png" class="img-icon" />
<SvgIcon name="iconfont icon-op-redis" :size="18"/>
</template>
<template #default>
<el-form class="instances-pop-form" label-width="50px" :size="'small'">
@@ -24,9 +24,7 @@
</el-popover>
</span>
<el-icon v-if="data.type == NodeType.Db">
<Coin color="#67c23a" />
</el-icon>
<SvgIcon v-if="data.type == NodeType.Db" name="Coin" color="#67c23a"/>
</template>
</tag-tree>
</el-col>

View File

@@ -9,9 +9,9 @@
<el-button v-auth="'account:del'" :disabled="chooseId == null" @click="deleteAccount()" type="danger"
icon="delete">删除</el-button>
<div style="float: right">
<el-input class="mr2" placeholder="请输入账号名" size="small" style="width: 300px" v-model="query.username"
<el-input class="mr2" placeholder="请输入账号名" style="width: 200px" v-model="query.username"
@clear="search()" clearable></el-input>
<el-button @click="search()" type="success" icon="search" size="small"></el-button>
<el-button @click="search()" type="success" icon="search"></el-button>
</div>
<el-table :data="datas" ref="table" @current-change="choose" show-overflow-tooltip>
<el-table-column label="选择" width="55px">

View File

@@ -219,7 +219,6 @@ const addResource = (data: any) => {
};
const editResource = async (data: any) => {
state.dialogForm.visible = true;
const res = await resourceApi.detail.request({
id: data.id,
});
@@ -230,6 +229,7 @@ const editResource = async (data: any) => {
state.dialogForm.data = res;
state.dialogForm.typeDisabled = true;
state.dialogForm.title = '修改“' + data.name + '”菜单';
state.dialogForm.visible = true;
};
const valChange = () => {

View File

@@ -57,6 +57,7 @@ func InitMachineRouter(router *gin.RouterGroup) {
machines.PUT(":machineId/:status", func(c *gin.Context) {
req.NewCtxWithGin(c).
WithLog(changeStatus).
WithRequiredPermission(saveMachineP).
Handle(m.ChangeStatus)
})
@@ -68,8 +69,12 @@ func InitMachineRouter(router *gin.RouterGroup) {
})
closeCli := req.NewLogInfo("关闭机器客户端").WithSave(true)
closeCliP := req.NewPermission("machine:close-cli")
machines.DELETE(":machineId/close-cli", func(c *gin.Context) {
req.NewCtxWithGin(c).WithLog(closeCli).Handle(m.CloseCli)
req.NewCtxWithGin(c).
WithLog(closeCli).
WithRequiredPermission(closeCliP).
Handle(m.CloseCli)
})
machines.GET(":machineId/terminal", m.WsSSH)

View File

@@ -443,7 +443,7 @@ BEGIN;
INSERT INTO `t_sys_resource` (id,pid,`type`,status,name,code,weight,meta,creator_id,creator,modifier_id,modifier,create_time,update_time) VALUES
(1,0,1,1,'首页','/home',1,'{"component":"home/Home","icon":"HomeFilled","isAffix":true,"isKeepAlive":true,"routeName":"Home"}',1,'admin',1,'admin','2021-05-25 16:44:41','2023-03-14 14:27:07'),
(2,0,1,1,'机器管理','/machine',4,'{"icon":"Monitor","isKeepAlive":true,"redirect":"machine/list","routeName":"Machine"}',1,'admin',1,'admin','2021-05-25 16:48:16','2022-10-06 14:58:49'),
(3,2,1,1,'机器列表','machines',2,'{"component":"ops/machine/MachineList","icon":"Monitor","isKeepAlive":true,"routeName":"MachineList"}',2,'admin',1,'admin','2021-05-25 16:50:04','2023-03-14 14:33:15'),
(3,2,1,1,'机器列表','machines',2,'{"component":"ops/machine/MachineList","icon":"Monitor","isKeepAlive":true,"routeName":"MachineList"}',2,'admin',1,'admin','2021-05-25 16:50:04','2023-03-15 17:14:44'),
(4,0,1,1,'系统管理','/sys',8,'{"icon":"Setting","isKeepAlive":true,"redirect":"/sys/resources","routeName":"sys"}',1,'admin',1,'admin','2021-05-26 15:20:20','2022-10-06 14:59:53'),
(5,4,1,1,'资源管理','resources',3,'{"component":"system/resource/ResourceList","icon":"Menu","isKeepAlive":true,"routeName":"ResourceList"}',1,'admin',1,'admin','2021-05-26 15:23:07','2023-03-14 15:44:34'),
(11,4,1,1,'角色管理','roles',2,'{"component":"system/role/RoleList","icon":"Menu","isKeepAlive":true,"routeName":"RoleList"}',1,'admin',1,'admin','2021-05-27 11:15:35','2023-03-14 15:44:22'),
@@ -469,9 +469,9 @@ INSERT INTO `t_sys_resource` (id,pid,`type`,status,name,code,weight,meta,creator
(32,5,2,1,'资源管理基本权限','resource',0,NULL,1,'admin',1,'admin','2021-05-31 21:25:25','2021-05-31 21:25:25'),
(33,11,2,1,'角色管理基本权限','role',0,NULL,1,'admin',1,'admin','2021-05-31 21:25:40','2021-05-31 21:25:40'),
(34,14,2,1,'账号启用禁用按钮','account:changeStatus',5,NULL,1,'admin',1,'admin','2021-05-31 21:29:48','2021-05-31 21:29:48'),
(36,0,1,1,'DBMS','/dbms',5,'{"icon":"Grid","isKeepAlive":true,"routeName":"DBMS"}',1,'admin',1,'admin','2021-06-01 14:01:33','2022-10-06 15:00:40'),
(36,0,1,1,'DBMS','/dbms',5,'{"icon":"Coin","isKeepAlive":true,"routeName":"DBMS"}',1,'admin',1,'admin','2021-06-01 14:01:33','2023-03-15 17:31:08'),
(37,3,2,1,'添加文件配置','machine:addFile',6,'null',1,'admin',1,'admin','2021-06-01 19:54:23','2021-06-01 19:54:23'),
(38,36,1,1,'数据操作','sql-exec',1,'{"component":"ops/db/SqlExec","icon":"Search","isKeepAlive":true,"routeName":"SqlExec"}',1,'admin',1,'admin','2021-06-03 09:09:29','2023-03-14 15:42:29'),
(38,36,1,1,'数据操作','sql-exec',1,'{"component":"ops/db/SqlExec","icon":"Coin","isKeepAlive":true,"routeName":"SqlExec"}',1,'admin',1,'admin','2021-06-03 09:09:29','2023-03-15 17:31:21'),
(39,0,1,1,'个人中心','/personal',2,'{"component":"personal/index","icon":"UserFilled","isHide":true,"isKeepAlive":true,"routeName":"Personal"}',1,'admin',1,'admin','2021-06-03 14:25:35','2023-03-14 14:28:36'),
(40,3,2,1,'文件管理-新增按钮','machine:file:add',7,'null',1,'admin',1,'admin','2021-06-08 11:06:26','2021-06-08 11:12:28'),
(41,3,2,1,'文件管理-删除按钮','machine:file:del',8,'null',1,'admin',1,'admin','2021-06-08 11:06:49','2021-06-08 11:06:49'),
@@ -481,23 +481,23 @@ INSERT INTO `t_sys_resource` (id,pid,`type`,status,name,code,weight,meta,creator
(45,3,2,1,'脚本管理-保存脚本按钮','machine:script:save',12,'null',1,'admin',1,'admin','2021-06-08 11:09:01','2021-06-08 11:09:01'),
(46,3,2,1,'脚本管理-删除按钮','machine:script:del',13,'null',1,'admin',1,'admin','2021-06-08 11:09:27','2021-06-08 11:09:27'),
(47,3,2,1,'脚本管理-执行按钮','machine:script:run',14,'null',1,'admin',1,'admin','2021-06-08 11:09:50','2021-06-08 11:09:50'),
(49,36,1,1,'数据库管理','dbs',2,'{"component":"ops/db/DbList","icon":"Menu","isKeepAlive":true,"routeName":"DbList"}',1,'admin',1,'admin','2021-07-07 15:13:55','2023-03-14 14:34:01'),
(49,36,1,1,'数据库管理','dbs',2,'{"component":"ops/db/DbList","icon":"Coin","isKeepAlive":true,"routeName":"DbList"}',1,'admin',1,'admin','2021-07-07 15:13:55','2023-03-15 17:31:28'),
(54,49,2,1,'数据库保存','db:save',1,'null',1,'admin',1,'admin','2021-07-08 17:30:36','2021-07-08 17:31:05'),
(55,49,2,1,'数据库删除','db:del',2,'null',1,'admin',1,'admin','2021-07-08 17:30:48','2021-07-08 17:30:48'),
(57,3,2,1,'基本权限','machine',0,'null',1,'admin',1,'admin','2021-07-09 10:48:02','2021-07-09 10:48:02'),
(58,49,2,1,'基本权限','db',0,'null',1,'admin',1,'admin','2021-07-09 10:48:22','2021-07-09 10:48:22'),
(59,38,2,1,'基本权限','db:exec',1,'null',1,'admin',1,'admin','2021-07-09 10:50:13','2021-07-09 10:50:13'),
(60,0,1,1,'Redis','/redis',6,'{"icon":"Menu","isKeepAlive":true,"routeName":"RDS"}',1,'admin',1,'admin','2021-07-19 20:15:41','2022-10-06 15:01:29'),
(61,60,1,1,'数据操作','data-operation',1,'{"component":"ops/redis/DataOperation","icon":"Search","isKeepAlive":true,"routeName":"DataOperation"}',1,'admin',1,'admin','2021-07-19 20:17:29','2023-03-14 15:40:32'),
(60,0,1,1,'Redis','/redis',6,'{"icon":"iconfont icon-redis","isKeepAlive":true,"routeName":"RDS"}',1,'admin',1,'admin','2021-07-19 20:15:41','2023-03-15 16:44:59'),
(61,60,1,1,'数据操作','data-operation',1,'{"component":"ops/redis/DataOperation","icon":"iconfont icon-redis","isKeepAlive":true,"routeName":"DataOperation"}',1,'admin',1,'admin','2021-07-19 20:17:29','2023-03-15 16:37:50'),
(62,61,2,1,'基本权限','redis:data',1,'null',1,'admin',1,'admin','2021-07-19 20:18:54','2021-07-19 20:18:54'),
(63,60,1,1,'redis管理','manage',2,'{"component":"ops/redis/RedisList","icon":"Menu","isKeepAlive":true,"routeName":"RedisList"}',1,'admin',1,'admin','2021-07-20 10:48:04','2023-03-14 15:42:56'),
(63,60,1,1,'redis管理','manage',2,'{"component":"ops/redis/RedisList","icon":"iconfont icon-redis","isKeepAlive":true,"routeName":"RedisList"}',1,'admin',1,'admin','2021-07-20 10:48:04','2023-03-15 16:38:00'),
(64,63,2,1,'基本权限','redis:manage',1,'null',1,'admin',1,'admin','2021-07-20 10:48:26','2021-07-20 10:48:26'),
(71,61,2,1,'数据保存','redis:data:save',6,'null',1,'admin',1,'admin','2021-08-17 11:20:37','2021-08-17 11:20:37'),
(72,3,2,1,'终止进程','machine:killprocess',6,'null',1,'admin',1,'admin','2021-08-17 11:20:37','2021-08-17 11:20:37'),
(79,0,1,1,'Mongo','/mongo',7,'{"icon":"Document","isKeepAlive":true,"routeName":"Mongo"}',1,'admin',1,'admin','2022-05-13 14:00:41','2022-10-06 15:01:34'),
(80,79,1,1,'数据操作','mongo-data-operation',1,'{"component":"ops/mongo/MongoDataOp","icon":"Document","isKeepAlive":true,"routeName":"MongoDataOp"}',1,'admin',1,'admin','2022-05-13 14:03:58','2023-03-14 15:41:02'),
(79,0,1,1,'Mongo','/mongo',7,'{"icon":"iconfont icon-mongo","isKeepAlive":true,"routeName":"Mongo"}',1,'admin',1,'admin','2022-05-13 14:00:41','2023-03-16 14:23:22'),
(80,79,1,1,'数据操作','mongo-data-operation',1,'{"component":"ops/mongo/MongoDataOp","icon":"iconfont icon-mongo","isKeepAlive":true,"routeName":"MongoDataOp"}',1,'admin',1,'admin','2022-05-13 14:03:58','2023-03-15 17:15:02'),
(81,80,2,1,'基本权限','mongo:base',1,'null',1,'admin',1,'admin','2022-05-13 14:04:16','2022-05-13 14:04:16'),
(82,79,1,1,'Mongo管理','mongo-manage',2,'{"component":"ops/mongo/MongoList","icon":"Menu","isKeepAlive":true,"routeName":"MongoList"}',1,'admin',1,'admin','2022-05-16 18:13:06','2023-03-14 15:41:13'),
(82,79,1,1,'Mongo管理','mongo-manage',2,'{"component":"ops/mongo/MongoList","icon":"iconfont icon-mongo","isKeepAlive":true,"routeName":"MongoList"}',1,'admin',1,'admin','2022-05-16 18:13:06','2023-03-15 17:26:55'),
(83,82,2,1,'基本权限','mongo:manage:base',1,'null',1,'admin',1,'admin','2022-05-16 18:13:25','2022-05-16 18:13:25'),
(84,4,1,1,'操作日志','syslogs',4,'{"component":"system/syslog/SyslogList","icon":"Tickets","routeName":"SyslogList"}',1,'admin',1,'admin','2022-07-13 19:57:07','2023-03-14 15:44:45'),
(85,84,2,1,'操作日志基本权限','syslog',1,'null',1,'admin',1,'admin','2022-07-13 19:57:55','2022-07-13 19:57:55'),
@@ -517,7 +517,8 @@ INSERT INTO `t_sys_resource` (id,pid,`type`,status,name,code,weight,meta,creator
(104,103,2,1,'基本权限','authcert',1,'null',1,'admin',1,'admin','2023-02-23 11:37:24','2023-02-23 11:37:24'),
(105,103,2,1,'保存权限','authcert:save',2,'null',1,'admin',1,'admin','2023-02-23 11:37:54','2023-02-23 11:37:54'),
(106,103,2,1,'删除权限','authcert:del',3,'null',1,'admin',1,'admin','2023-02-23 11:38:09','2023-02-23 11:38:09'),
(108,61,2,1,'数据删除','redis:data:del',3,'null',1,'admin',1,'admin','2023-03-14 17:20:00','2023-03-14 17:20:00');
(108,61,2,1,'数据删除','redis:data:del',3,'null',1,'admin',1,'admin','2023-03-14 17:20:00','2023-03-14 17:20:00'),
(109,3,2,1,'关闭连接','machine:close-cli',6,'null',1,'admin',1,'admin','2023-03-16 16:11:04','2023-03-16 16:11:04');
COMMIT;
-- ----------------------------
@@ -568,164 +569,170 @@ CREATE TABLE `t_sys_role_resource` (
-- Records of t_sys_role_resource
-- ----------------------------
BEGIN;
INSERT INTO `t_sys_role_resource` VALUES (1, 1, 1, 1, 'admin', '2021-05-27 15:07:39');
INSERT INTO `t_sys_role_resource` VALUES (323, 1, 2, 1, 'admin', '2021-05-28 09:04:50');
INSERT INTO `t_sys_role_resource` VALUES (326, 1, 4, 1, 'admin', '2021-05-28 09:04:50');
INSERT INTO `t_sys_role_resource` VALUES (327, 1, 5, 1, 'admin', '2021-05-28 09:04:50');
INSERT INTO `t_sys_role_resource` VALUES (328, 1, 11, 1, 'admin', '2021-05-28 09:04:50');
INSERT INTO `t_sys_role_resource` VALUES (335, 1, 14, 1, 'admin', '2021-05-28 17:42:21');
INSERT INTO `t_sys_role_resource` VALUES (336, 1, 3, 1, 'admin', '2021-05-28 17:42:43');
INSERT INTO `t_sys_role_resource` VALUES (337, 1, 12, 1, 'admin', '2021-05-28 17:42:43');
INSERT INTO `t_sys_role_resource` VALUES (338, 6, 2, 1, 'admin', '2021-05-28 19:19:38');
INSERT INTO `t_sys_role_resource` VALUES (339, 6, 3, 1, 'admin', '2021-05-28 19:19:38');
INSERT INTO `t_sys_role_resource` VALUES (342, 6, 1, 1, 'admin', '2021-05-29 01:31:22');
INSERT INTO `t_sys_role_resource` VALUES (343, 5, 1, 1, 'admin', '2021-05-31 14:05:23');
INSERT INTO `t_sys_role_resource` VALUES (344, 5, 4, 1, 'admin', '2021-05-31 14:05:23');
INSERT INTO `t_sys_role_resource` VALUES (345, 5, 14, 1, 'admin', '2021-05-31 14:05:23');
INSERT INTO `t_sys_role_resource` VALUES (346, 5, 5, 1, 'admin', '2021-05-31 14:05:23');
INSERT INTO `t_sys_role_resource` VALUES (347, 5, 11, 1, 'admin', '2021-05-31 14:05:23');
INSERT INTO `t_sys_role_resource` VALUES (348, 5, 3, 1, 'admin', '2021-05-31 16:33:14');
INSERT INTO `t_sys_role_resource` VALUES (349, 5, 12, 1, 'admin', '2021-05-31 16:33:14');
INSERT INTO `t_sys_role_resource` VALUES (350, 5, 2, 1, 'admin', '2021-05-31 16:33:14');
INSERT INTO `t_sys_role_resource` VALUES (353, 1, 15, 1, 'admin', '2021-05-31 17:48:33');
INSERT INTO `t_sys_role_resource` VALUES (354, 1, 16, 1, 'admin', '2021-05-31 17:48:33');
INSERT INTO `t_sys_role_resource` VALUES (355, 1, 17, 1, 'admin', '2021-05-31 17:48:33');
INSERT INTO `t_sys_role_resource` VALUES (356, 1, 18, 1, 'admin', '2021-05-31 17:48:33');
INSERT INTO `t_sys_role_resource` VALUES (358, 1, 20, 1, 'admin', '2021-05-31 17:52:08');
INSERT INTO `t_sys_role_resource` VALUES (360, 1, 22, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (361, 1, 23, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (362, 1, 24, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (363, 1, 25, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (364, 1, 26, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (365, 1, 27, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (366, 1, 28, 1, 'admin', '2021-05-31 18:05:04');
INSERT INTO `t_sys_role_resource` VALUES (369, 1, 31, 1, 'admin', '2021-05-31 21:25:56');
INSERT INTO `t_sys_role_resource` VALUES (370, 1, 32, 1, 'admin', '2021-05-31 21:25:56');
INSERT INTO `t_sys_role_resource` VALUES (371, 1, 33, 1, 'admin', '2021-05-31 21:25:56');
INSERT INTO `t_sys_role_resource` VALUES (374, 1, 36, 1, 'admin', '2021-06-01 14:01:57');
INSERT INTO `t_sys_role_resource` VALUES (375, 1, 19, 1, 'admin', '2021-06-01 17:34:03');
INSERT INTO `t_sys_role_resource` VALUES (376, 1, 21, 1, 'admin', '2021-06-01 17:34:03');
INSERT INTO `t_sys_role_resource` VALUES (377, 1, 29, 1, 'admin', '2021-06-01 17:34:03');
INSERT INTO `t_sys_role_resource` VALUES (378, 1, 30, 1, 'admin', '2021-06-01 17:34:03');
INSERT INTO `t_sys_role_resource` VALUES (379, 1, 34, 1, 'admin', '2021-06-01 17:34:03');
INSERT INTO `t_sys_role_resource` VALUES (380, 1, 37, 1, 'admin', '2021-06-03 09:09:42');
INSERT INTO `t_sys_role_resource` VALUES (381, 1, 38, 1, 'admin', '2021-06-03 09:09:42');
INSERT INTO `t_sys_role_resource` VALUES (383, 1, 40, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (384, 1, 41, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (385, 1, 42, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (386, 1, 43, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (387, 1, 44, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (388, 1, 45, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (389, 1, 46, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (390, 1, 47, 1, 'admin', '2021-06-08 11:21:52');
INSERT INTO `t_sys_role_resource` VALUES (391, 6, 39, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (392, 6, 15, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (395, 6, 31, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (396, 6, 33, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (397, 6, 32, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (398, 6, 4, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (399, 6, 14, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (400, 6, 11, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (401, 6, 5, 1, 'admin', '2021-06-08 15:10:58');
INSERT INTO `t_sys_role_resource` VALUES (403, 7, 1, 1, 'admin', '2021-07-06 15:07:09');
INSERT INTO `t_sys_role_resource` VALUES (405, 1, 49, 1, 'admin', '2021-07-07 15:14:17');
INSERT INTO `t_sys_role_resource` VALUES (410, 1, 54, 1, 'admin', '2021-07-08 17:32:19');
INSERT INTO `t_sys_role_resource` VALUES (411, 1, 55, 1, 'admin', '2021-07-08 17:32:19');
INSERT INTO `t_sys_role_resource` VALUES (413, 1, 57, 1, 'admin', '2021-07-09 10:48:50');
INSERT INTO `t_sys_role_resource` VALUES (414, 1, 58, 1, 'admin', '2021-07-09 10:48:50');
INSERT INTO `t_sys_role_resource` VALUES (415, 8, 1, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (416, 8, 39, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (418, 8, 57, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (419, 8, 12, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (420, 8, 15, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (421, 8, 38, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (422, 8, 58, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (423, 8, 2, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (425, 8, 3, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (426, 8, 36, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (427, 8, 49, 1, 'admin', '2021-07-09 10:49:46');
INSERT INTO `t_sys_role_resource` VALUES (428, 1, 59, 1, 'admin', '2021-07-09 10:50:20');
INSERT INTO `t_sys_role_resource` VALUES (429, 8, 59, 1, 'admin', '2021-07-09 10:50:32');
INSERT INTO `t_sys_role_resource` VALUES (431, 6, 57, 1, 'admin', '2021-07-12 16:44:12');
INSERT INTO `t_sys_role_resource` VALUES (433, 1, 60, 1, 'admin', '2021-07-19 20:19:29');
INSERT INTO `t_sys_role_resource` VALUES (434, 1, 61, 1, 'admin', '2021-07-19 20:19:29');
INSERT INTO `t_sys_role_resource` VALUES (435, 1, 62, 1, 'admin', '2021-07-19 20:19:29');
INSERT INTO `t_sys_role_resource` VALUES (436, 1, 63, 1, 'admin', '2021-07-20 10:48:39');
INSERT INTO `t_sys_role_resource` VALUES (437, 1, 64, 1, 'admin', '2021-07-20 10:48:39');
INSERT INTO `t_sys_role_resource` VALUES (444, 7, 39, 1, 'admin', '2021-09-09 10:10:30');
INSERT INTO `t_sys_role_resource` VALUES (450, 6, 16, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (451, 6, 17, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (452, 6, 18, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (453, 6, 37, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (454, 6, 40, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (455, 6, 41, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (456, 6, 42, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (457, 6, 43, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (458, 6, 44, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (459, 6, 45, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (460, 6, 46, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (461, 6, 47, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (462, 6, 36, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (463, 6, 38, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (464, 6, 59, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (465, 6, 49, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (466, 6, 58, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (467, 6, 54, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (468, 6, 55, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (469, 6, 60, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (470, 6, 61, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (471, 6, 62, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (472, 6, 63, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (473, 6, 64, 1, 'admin', '2021-09-09 15:52:38');
INSERT INTO `t_sys_role_resource` VALUES (479, 6, 19, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (480, 6, 21, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (481, 6, 29, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (482, 6, 30, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (483, 6, 34, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (484, 6, 20, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (485, 6, 22, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (486, 6, 23, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (487, 6, 24, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (488, 6, 25, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (489, 6, 26, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (490, 6, 27, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (491, 6, 28, 1, 'admin', '2021-09-09 15:53:56');
INSERT INTO `t_sys_role_resource` VALUES (492, 8, 42, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (493, 8, 43, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (494, 8, 47, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (495, 8, 60, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (496, 8, 61, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (497, 8, 62, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (498, 8, 63, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (499, 8, 64, 1, 'admin', '2021-11-05 15:59:16');
INSERT INTO `t_sys_role_resource` VALUES (500, 1, 72, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (501, 1, 71, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (502, 1, 79, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (503, 1, 80, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (504, 1, 81, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (505, 1, 82, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (506, 1, 83, 1, 'admin', '2022-07-14 11:03:09');
INSERT INTO `t_sys_role_resource` VALUES (507, 1, 84, 1, 'admin', '2022-07-14 11:10:11');
INSERT INTO `t_sys_role_resource` VALUES (508, 1, 85, 1, 'admin', '2022-07-14 11:10:11');
INSERT INTO `t_sys_role_resource` VALUES (510, 1, 87, 1, 'admin', '2022-07-14 11:10:11');
INSERT INTO `t_sys_role_resource` VALUES (511, 1, 88, 1, 'admin', '2022-10-08 10:54:06');
INSERT INTO `t_sys_role_resource` VALUES (512, 8, 80, 1, 'admin', '2022-10-08 10:54:34');
INSERT INTO `t_sys_role_resource` VALUES (513, 8, 81, 1, 'admin', '2022-10-08 10:54:34');
INSERT INTO `t_sys_role_resource` VALUES (515, 8, 79, 1, 'admin', '2022-10-08 10:54:34');
INSERT INTO `t_sys_role_resource` VALUES (516, 1, 93, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (517, 1, 94, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (518, 1, 96, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (519, 1, 98, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (520, 1, 95, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (521, 1, 97, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (522, 1, 99, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (523, 1, 100, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (524, 1, 101, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (525, 1, 102, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (526, 1, 103, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (527, 1, 104, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (528, 1, 105, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` VALUES (529, 1, 106, 1, 'admin', '2022-10-26 20:03:14');
INSERT INTO `t_sys_role_resource` (id,role_id,resource_id,creator_id,creator,create_time) VALUES
(1,1,1,1,'admin','2021-05-27 15:07:39'),
(323,1,2,1,'admin','2021-05-28 09:04:50'),
(326,1,4,1,'admin','2021-05-28 09:04:50'),
(327,1,5,1,'admin','2021-05-28 09:04:50'),
(328,1,11,1,'admin','2021-05-28 09:04:50'),
(335,1,14,1,'admin','2021-05-28 17:42:21'),
(336,1,3,1,'admin','2021-05-28 17:42:43'),
(337,1,12,1,'admin','2021-05-28 17:42:43'),
(338,6,2,1,'admin','2021-05-28 19:19:38'),
(339,6,3,1,'admin','2021-05-28 19:19:38'),
(342,6,1,1,'admin','2021-05-29 01:31:22'),
(343,5,1,1,'admin','2021-05-31 14:05:23'),
(344,5,4,1,'admin','2021-05-31 14:05:23'),
(345,5,14,1,'admin','2021-05-31 14:05:23'),
(346,5,5,1,'admin','2021-05-31 14:05:23'),
(347,5,11,1,'admin','2021-05-31 14:05:23'),
(348,5,3,1,'admin','2021-05-31 16:33:14'),
(349,5,12,1,'admin','2021-05-31 16:33:14'),
(350,5,2,1,'admin','2021-05-31 16:33:14'),
(353,1,15,1,'admin','2021-05-31 17:48:33'),
(354,1,16,1,'admin','2021-05-31 17:48:33'),
(355,1,17,1,'admin','2021-05-31 17:48:33'),
(356,1,18,1,'admin','2021-05-31 17:48:33'),
(358,1,20,1,'admin','2021-05-31 17:52:08'),
(360,1,22,1,'admin','2021-05-31 18:05:04'),
(361,1,23,1,'admin','2021-05-31 18:05:04'),
(362,1,24,1,'admin','2021-05-31 18:05:04'),
(363,1,25,1,'admin','2021-05-31 18:05:04'),
(364,1,26,1,'admin','2021-05-31 18:05:04'),
(365,1,27,1,'admin','2021-05-31 18:05:04'),
(366,1,28,1,'admin','2021-05-31 18:05:04'),
(369,1,31,1,'admin','2021-05-31 21:25:56'),
(370,1,32,1,'admin','2021-05-31 21:25:56'),
(371,1,33,1,'admin','2021-05-31 21:25:56'),
(374,1,36,1,'admin','2021-06-01 14:01:57'),
(375,1,19,1,'admin','2021-06-01 17:34:03'),
(376,1,21,1,'admin','2021-06-01 17:34:03'),
(377,1,29,1,'admin','2021-06-01 17:34:03'),
(378,1,30,1,'admin','2021-06-01 17:34:03'),
(379,1,34,1,'admin','2021-06-01 17:34:03'),
(380,1,37,1,'admin','2021-06-03 09:09:42'),
(381,1,38,1,'admin','2021-06-03 09:09:42'),
(383,1,40,1,'admin','2021-06-08 11:21:52'),
(384,1,41,1,'admin','2021-06-08 11:21:52'),
(385,1,42,1,'admin','2021-06-08 11:21:52'),
(386,1,43,1,'admin','2021-06-08 11:21:52'),
(387,1,44,1,'admin','2021-06-08 11:21:52'),
(388,1,45,1,'admin','2021-06-08 11:21:52'),
(389,1,46,1,'admin','2021-06-08 11:21:52'),
(390,1,47,1,'admin','2021-06-08 11:21:52'),
(391,6,39,1,'admin','2021-06-08 15:10:58'),
(392,6,15,1,'admin','2021-06-08 15:10:58'),
(395,6,31,1,'admin','2021-06-08 15:10:58'),
(396,6,33,1,'admin','2021-06-08 15:10:58'),
(397,6,32,1,'admin','2021-06-08 15:10:58'),
(398,6,4,1,'admin','2021-06-08 15:10:58'),
(399,6,14,1,'admin','2021-06-08 15:10:58'),
(400,6,11,1,'admin','2021-06-08 15:10:58'),
(401,6,5,1,'admin','2021-06-08 15:10:58'),
(403,7,1,1,'admin','2021-07-06 15:07:09'),
(405,1,49,1,'admin','2021-07-07 15:14:17'),
(410,1,54,1,'admin','2021-07-08 17:32:19'),
(411,1,55,1,'admin','2021-07-08 17:32:19'),
(413,1,57,1,'admin','2021-07-09 10:48:50'),
(414,1,58,1,'admin','2021-07-09 10:48:50'),
(418,8,57,1,'admin','2021-07-09 10:49:46'),
(419,8,12,1,'admin','2021-07-09 10:49:46'),
(420,8,15,1,'admin','2021-07-09 10:49:46'),
(421,8,38,1,'admin','2021-07-09 10:49:46'),
(423,8,2,1,'admin','2021-07-09 10:49:46'),
(425,8,3,1,'admin','2021-07-09 10:49:46'),
(426,8,36,1,'admin','2021-07-09 10:49:46'),
(428,1,59,1,'admin','2021-07-09 10:50:20'),
(429,8,59,1,'admin','2021-07-09 10:50:32'),
(431,6,57,1,'admin','2021-07-12 16:44:12'),
(433,1,60,1,'admin','2021-07-19 20:19:29'),
(434,1,61,1,'admin','2021-07-19 20:19:29'),
(435,1,62,1,'admin','2021-07-19 20:19:29'),
(436,1,63,1,'admin','2021-07-20 10:48:39'),
(437,1,64,1,'admin','2021-07-20 10:48:39'),
(444,7,39,1,'admin','2021-09-09 10:10:30'),
(450,6,16,1,'admin','2021-09-09 15:52:38'),
(451,6,17,1,'admin','2021-09-09 15:52:38'),
(452,6,18,1,'admin','2021-09-09 15:52:38'),
(453,6,37,1,'admin','2021-09-09 15:52:38'),
(454,6,40,1,'admin','2021-09-09 15:52:38'),
(455,6,41,1,'admin','2021-09-09 15:52:38'),
(456,6,42,1,'admin','2021-09-09 15:52:38'),
(457,6,43,1,'admin','2021-09-09 15:52:38'),
(458,6,44,1,'admin','2021-09-09 15:52:38'),
(459,6,45,1,'admin','2021-09-09 15:52:38'),
(460,6,46,1,'admin','2021-09-09 15:52:38'),
(461,6,47,1,'admin','2021-09-09 15:52:38'),
(462,6,36,1,'admin','2021-09-09 15:52:38'),
(463,6,38,1,'admin','2021-09-09 15:52:38'),
(464,6,59,1,'admin','2021-09-09 15:52:38'),
(465,6,49,1,'admin','2021-09-09 15:52:38'),
(466,6,58,1,'admin','2021-09-09 15:52:38'),
(467,6,54,1,'admin','2021-09-09 15:52:38'),
(468,6,55,1,'admin','2021-09-09 15:52:38'),
(469,6,60,1,'admin','2021-09-09 15:52:38'),
(470,6,61,1,'admin','2021-09-09 15:52:38'),
(471,6,62,1,'admin','2021-09-09 15:52:38'),
(472,6,63,1,'admin','2021-09-09 15:52:38'),
(473,6,64,1,'admin','2021-09-09 15:52:38'),
(479,6,19,1,'admin','2021-09-09 15:53:56'),
(480,6,21,1,'admin','2021-09-09 15:53:56'),
(481,6,29,1,'admin','2021-09-09 15:53:56'),
(482,6,30,1,'admin','2021-09-09 15:53:56'),
(483,6,34,1,'admin','2021-09-09 15:53:56'),
(484,6,20,1,'admin','2021-09-09 15:53:56'),
(485,6,22,1,'admin','2021-09-09 15:53:56'),
(486,6,23,1,'admin','2021-09-09 15:53:56'),
(487,6,24,1,'admin','2021-09-09 15:53:56'),
(488,6,25,1,'admin','2021-09-09 15:53:56'),
(489,6,26,1,'admin','2021-09-09 15:53:56'),
(490,6,27,1,'admin','2021-09-09 15:53:56'),
(491,6,28,1,'admin','2021-09-09 15:53:56'),
(492,8,42,1,'admin','2021-11-05 15:59:16'),
(493,8,43,1,'admin','2021-11-05 15:59:16'),
(494,8,47,1,'admin','2021-11-05 15:59:16'),
(495,8,60,1,'admin','2021-11-05 15:59:16'),
(496,8,61,1,'admin','2021-11-05 15:59:16'),
(497,8,62,1,'admin','2021-11-05 15:59:16'),
(500,1,72,1,'admin','2022-07-14 11:03:09'),
(501,1,71,1,'admin','2022-07-14 11:03:09'),
(502,1,79,1,'admin','2022-07-14 11:03:09'),
(503,1,80,1,'admin','2022-07-14 11:03:09'),
(504,1,81,1,'admin','2022-07-14 11:03:09'),
(505,1,82,1,'admin','2022-07-14 11:03:09'),
(506,1,83,1,'admin','2022-07-14 11:03:09'),
(507,1,84,1,'admin','2022-07-14 11:10:11'),
(508,1,85,1,'admin','2022-07-14 11:10:11'),
(510,1,87,1,'admin','2022-07-14 11:10:11'),
(511,1,88,1,'admin','2022-10-08 10:54:06'),
(512,8,80,1,'admin','2022-10-08 10:54:34'),
(513,8,81,1,'admin','2022-10-08 10:54:34'),
(515,8,79,1,'admin','2022-10-08 10:54:34'),
(516,1,93,1,'admin','2022-10-26 20:03:14'),
(517,1,94,1,'admin','2022-10-26 20:03:14'),
(518,1,96,1,'admin','2022-10-26 20:03:14'),
(519,1,98,1,'admin','2022-10-26 20:03:14'),
(520,1,95,1,'admin','2022-10-26 20:03:14'),
(521,1,97,1,'admin','2022-10-26 20:03:14'),
(522,1,99,1,'admin','2022-10-26 20:03:14'),
(523,1,100,1,'admin','2022-10-26 20:03:14'),
(524,1,101,1,'admin','2022-10-26 20:03:14'),
(525,1,102,1,'admin','2022-10-26 20:03:14'),
(527,1,106,1,'admin','2023-02-23 14:30:54'),
(528,1,103,1,'admin','2023-02-23 14:30:54'),
(529,1,105,1,'admin','2023-02-23 14:31:00'),
(530,1,104,1,'admin','2023-02-24 13:40:26'),
(532,1,108,1,'admin','2023-03-14 17:28:06'),
(533,6,79,1,'admin','2023-03-14 17:28:50'),
(534,6,80,1,'admin','2023-03-14 17:28:50'),
(535,6,81,1,'admin','2023-03-14 17:28:50'),
(536,6,82,1,'admin','2023-03-14 17:28:50'),
(537,6,83,1,'admin','2023-03-14 17:28:50'),
(538,6,84,1,'admin','2023-03-14 17:29:00'),
(539,6,85,1,'admin','2023-03-14 17:29:00'),
(540,6,87,1,'admin','2023-03-14 17:29:00'),
(541,6,88,1,'admin','2023-03-14 17:29:00'),
(544,1,109,1,'admin','2023-03-16 16:11:25');
COMMIT;
-- ----------------------------

View File

@@ -6,6 +6,7 @@ import (
"mayfly-go/pkg/global"
"mayfly-go/pkg/model"
"net/http"
"runtime/debug"
"strconv"
"github.com/gin-gonic/gin"
@@ -66,12 +67,10 @@ func ErrorRes(g *gin.Context, err interface{}) {
g.JSON(http.StatusOK, model.Error(t))
case error:
g.JSON(http.StatusOK, model.ServerError())
global.Log.Error(t)
// panic(err)
global.Log.Errorf("%s\n%s", t.Error(), string(debug.Stack()))
case string:
g.JSON(http.StatusOK, model.ServerError())
global.Log.Error(t)
// panic(err)
global.Log.Errorf("%s\n%s", t, string(debug.Stack()))
default:
global.Log.Error(t)
}

View File

@@ -5,7 +5,6 @@ import (
"mayfly-go/pkg/biz"
"mayfly-go/pkg/logger"
"mayfly-go/pkg/utils"
"runtime/debug"
"github.com/sirupsen/logrus"
)
@@ -93,9 +92,9 @@ func getErrMsg(rc *Ctx, err interface{}) string {
case biz.BizError:
errMsg = fmt.Sprintf("\n<-e errCode: %d, errMsg: %s", t.Code(), t.Error())
case error:
errMsg = fmt.Sprintf("\n<-e errMsg: %s\n%s", t.Error(), string(debug.Stack()))
errMsg = fmt.Sprintf("\n<-e errMsg: %s", t.Error())
case string:
errMsg = fmt.Sprintf("\n<-e errMsg: %s\n%s", t, string(debug.Stack()))
errMsg = fmt.Sprintf("\n<-e errMsg: %s", t)
}
return (msg + errMsg)
}