diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index ceb331e29..a9effe799 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -14,7 +14,7 @@ "test:ci": "npm run lint && npm run test:unit", "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", "new": "plop" - }, + }, "husky": { "hooks": { "pre-commit": "lint-staged" @@ -45,7 +45,7 @@ "vue-cropper": "0.4.9", "axios": "0.18.1", "echarts": "4.2.1", - "element-ui": "2.11.1", + "element-ui": "2.13.0", "fuse.js": "3.4.4", "js-cookie": "2.2.0", "jsencrypt": "3.0.0-rc.1", diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index fbd3d6d31..d50c997e2 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -10,7 +10,7 @@ import './assets/styles/element-variables.scss' import '@/assets/styles/index.scss' // global css import '@/assets/styles/ruoyi.scss' // ruoyi css import App from './App' -import store from './store' +import store from './store' import router from './router' import permission from './directive/permission' diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js index 4ea9568a3..e7db73588 100644 --- a/ruoyi-ui/src/utils/request.js +++ b/ruoyi-ui/src/utils/request.js @@ -27,39 +27,39 @@ service.interceptors.request.use( // 响应拦截器 service.interceptors.response.use(res => { - const code = res.data.code - if (code === 401) { - MessageBox.confirm( - '登录状态已过期,您可以继续留在该页面,或者重新登录', - '系统提示', - { - confirmButtonText: '重新登录', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - store.dispatch('LogOut').then(() => { - location.reload() // 为了重新实例化vue-router对象 避免bug - }) + const code = res.data.code + if (code === 401) { + MessageBox.confirm( + '登录状态已过期,您可以继续留在该页面,或者重新登录', + '系统提示', + { + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + store.dispatch('LogOut').then(() => { + location.reload() // 为了重新实例化vue-router对象 避免bug }) - } else if (code !== 200) { - Notification.error({ - title: res.data.msg - }) - return Promise.reject('error') - } else { - return res.data - } - }, - error => { - console.log('err' + error) - Message({ - message: error.message, - type: 'error', - duration: 5 * 1000 }) - return Promise.reject(error) + } else if (code !== 200) { + Notification.error({ + title: res.data.msg + }) + return Promise.reject('error') + } else { + return res.data } +}, +error => { + console.log('err' + error) + Message({ + message: error.message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) +} ) export default service diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index b63d0461f..c8d476da9 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -147,7 +147,7 @@ export default { display: flex; justify-content: center; align-items: center; - height: 100%; + height: 100%; background-image: url("../assets/image/login-background.jpg"); background-size: cover; } diff --git a/ruoyi-ui/src/views/monitor/logininfor/index.vue b/ruoyi-ui/src/views/monitor/logininfor/index.vue index e2f422ea2..a0c660f6b 100644 --- a/ruoyi-ui/src/views/monitor/logininfor/index.vue +++ b/ruoyi-ui/src/views/monitor/logininfor/index.vue @@ -2,39 +2,14 @@ <div class="app-container"> <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> <el-form-item label="登录地址" prop="ipaddr"> - <el-input - v-model="queryParams.ipaddr" - placeholder="请输入登录地址" - clearable - style="width: 240px;" - size="small" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.ipaddr" placeholder="请输入登录地址" clearable style="width: 240px;" size="small" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="用户名称" prop="userName"> - <el-input - v-model="queryParams.userName" - placeholder="请输入用户名称" - clearable - style="width: 240px;" - size="small" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px;" size="small" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> - <el-select - v-model="queryParams.status" - placeholder="登录状态" - clearable - size="small" - style="width: 240px" - > - <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" - /> + <el-select v-model="queryParams.status" placeholder="登录状态" clearable size="small" style="width: 240px"> + <el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" /> </el-select> </el-form-item> <el-form-item label="登录时间"> @@ -57,33 +32,10 @@ <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button - type="danger" - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['monitor:logininfor:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - icon="el-icon-delete" - size="mini" - @click="handleClean" - v-hasPermi="['monitor:logininfor:remove']" - >清空</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['system:logininfor:export']" - >导出</el-button> + <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['monitor:logininfor:remove']">删除</el-button> </el-col> + <el-col :span="1.5"><el-button type="danger" icon="el-icon-delete" size="mini" @click="handleClean" v-hasPermi="['monitor:logininfor:remove']">清空</el-button></el-col> + <el-col :span="1.5"><el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:logininfor:export']">导出</el-button></el-col> </el-row> <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange"> @@ -103,21 +55,15 @@ </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </template> <script> -import { list, delLogininfor, cleanLogininfor, exportLogininfor } from "@/api/monitor/logininfor"; +import { list, delLogininfor, cleanLogininfor, exportLogininfor } from '@/api/monitor/logininfor'; export default { - name: "Logininfor", + name: 'Logininfor', data() { return { // 遮罩层 @@ -146,7 +92,7 @@ export default { }, created() { this.getList(); - this.getDicts("sys_common_status").then(response => { + this.getDicts('sys_common_status').then(response => { this.statusOptions = response.data; }); }, @@ -155,11 +101,10 @@ export default { getList() { this.loading = true; list(this.addDateRange(this.queryParams, this.dateRange)).then(response => { - this.list = response.rows; - this.total = response.total; - this.loading = false; - } - ); + this.list = response.rows; + this.total = response.total; + this.loading = false; + }); }, // 登录状态字典翻译 statusFormat(row, column) { @@ -173,55 +118,63 @@ export default { /** 重置按钮操作 */ resetQuery() { this.dateRange = []; - this.resetForm("queryForm"); + this.resetForm('queryForm'); this.handleQuery(); }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.infoId) - this.multiple = !selection.length + this.ids = selection.map(item => item.infoId); + this.multiple = !selection.length; }, /** 删除按钮操作 */ handleDelete(row) { const infoIds = row.infoId || this.ids; - this.$confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return delLogininfor(infoIds); - }).then(() => { + }) + .then(() => { this.getList(); - this.msgSuccess("删除成功"); - }).catch(function() {}); + this.msgSuccess('删除成功'); + }) + .catch(function() {}); }, /** 清空按钮操作 */ handleClean() { - this.$confirm('是否确认清空所有登录日志数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认清空所有登录日志数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return cleanLogininfor(); - }).then(() => { + }) + .then(() => { this.getList(); - this.msgSuccess("清空成功"); - }).catch(function() {}); + this.msgSuccess('清空成功'); + }) + .catch(function() {}); }, /** 导出按钮操作 */ handleExport() { const queryParams = this.queryParams; - this.$confirm('是否确认导出所有操作日志数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认导出所有操作日志数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return exportLogininfor(queryParams); - }).then(response => { + }) + .then(response => { this.download(response.msg); - }).catch(function() {}); + }) + .catch(function() {}); } } }; -</script> - +</script> diff --git a/ruoyi-ui/src/views/system/config/index.vue b/ruoyi-ui/src/views/system/config/index.vue index 354f7e051..2cf9c0084 100644 --- a/ruoyi-ui/src/views/system/config/index.vue +++ b/ruoyi-ui/src/views/system/config/index.vue @@ -2,33 +2,14 @@ <div class="app-container"> <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> <el-form-item label="参数名称" prop="configName"> - <el-input - v-model="queryParams.configName" - placeholder="请输入参数名称" - clearable - size="small" - style="width: 240px" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.configName" placeholder="请输入参数名称" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="参数键名" prop="configKey"> - <el-input - v-model="queryParams.configKey" - placeholder="请输入参数键名" - clearable - size="small" - style="width: 240px" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.configKey" placeholder="请输入参数键名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="系统内置" prop="configType"> <el-select v-model="queryParams.configType" placeholder="系统内置" clearable size="small"> - <el-option - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" - /> + <el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" /> </el-select> </el-form-item> <el-form-item label="创建时间"> @@ -50,44 +31,14 @@ </el-form> <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"><el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:config:add']">新增</el-button></el-col> <el-col :span="1.5"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['system:config:add']" - >新增</el-button> + <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:config:edit']">修改</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="success" - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:config:edit']" - >修改</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['system:config:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['system:config:export']" - >导出</el-button> + <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:config:remove']">删除</el-button> </el-col> + <el-col :span="1.5"><el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:config:export']">导出</el-button></el-col> </el-row> <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange"> @@ -105,56 +56,26 @@ </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:config:edit']" - >修改</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['system:config:remove']" - >删除</el-button> + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:config:edit']">修改</el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:config:remove']">删除</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 添加或修改参数配置对话框 --> <el-dialog :title="title" :visible.sync="open" width="500px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> - <el-form-item label="参数名称" prop="configName"> - <el-input v-model="form.configName" placeholder="请输入参数名称" /> - </el-form-item> - <el-form-item label="参数键名" prop="configKey"> - <el-input v-model="form.configKey" placeholder="请输入参数键名" /> - </el-form-item> - <el-form-item label="参数键值" prop="configValue"> - <el-input v-model="form.configValue" placeholder="请输入参数键值" /> - </el-form-item> + <el-form-item label="参数名称" prop="configName"><el-input v-model="form.configName" placeholder="请输入参数名称" /></el-form-item> + <el-form-item label="参数键名" prop="configKey"><el-input v-model="form.configKey" placeholder="请输入参数键名" /></el-form-item> + <el-form-item label="参数键值" prop="configValue"><el-input v-model="form.configValue" placeholder="请输入参数键值" /></el-form-item> <el-form-item label="系统内置" prop="configType"> <el-radio-group v-model="form.configType"> - <el-radio - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + <el-radio v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictValue">{{ dict.dictLabel }}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> - </el-form-item> + <el-form-item label="备注" prop="remark"><el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /></el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">确 定</el-button> @@ -165,10 +86,10 @@ </template> <script> -import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig } from "@/api/system/config"; +import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig } from '@/api/system/config'; export default { - name: "Config", + name: 'Config', data() { return { // 遮罩层 @@ -184,7 +105,7 @@ export default { // 参数表格数据 configList: [], // 弹出层标题 - title: "", + title: '', // 是否显示弹出层 open: false, // 类型数据字典 @@ -203,21 +124,15 @@ export default { form: {}, // 表单校验 rules: { - configName: [ - { required: true, message: "参数名称不能为空", trigger: "blur" } - ], - configKey: [ - { required: true, message: "参数键名不能为空", trigger: "blur" } - ], - configValue: [ - { required: true, message: "参数键值不能为空", trigger: "blur" } - ] + configName: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }], + configKey: [{ required: true, message: '参数键名不能为空', trigger: 'blur' }], + configValue: [{ required: true, message: '参数键值不能为空', trigger: 'blur' }] } }; }, created() { this.getList(); - this.getDicts("sys_yes_no").then(response => { + this.getDicts('sys_yes_no').then(response => { this.typeOptions = response.data; }); }, @@ -226,11 +141,10 @@ export default { getList() { this.loading = true; listConfig(this.addDateRange(this.queryParams, this.dateRange)).then(response => { - this.configList = response.rows; - this.total = response.total; - this.loading = false; - } - ); + this.configList = response.rows; + this.total = response.total; + this.loading = false; + }); }, // 参数系统内置字典翻译 typeFormat(row, column) { @@ -248,10 +162,10 @@ export default { configName: undefined, configKey: undefined, configValue: undefined, - configType: "Y", + configType: 'Y', remark: undefined }; - this.resetForm("form"); + this.resetForm('form'); }, /** 搜索按钮操作 */ handleQuery() { @@ -261,39 +175,39 @@ export default { /** 重置按钮操作 */ resetQuery() { this.dateRange = []; - this.resetForm("queryForm"); + this.resetForm('queryForm'); this.handleQuery(); }, /** 新增按钮操作 */ handleAdd() { this.reset(); this.open = true; - this.title = "添加参数"; + this.title = '添加参数'; }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.configId) - this.single = selection.length!=1 - this.multiple = !selection.length + this.ids = selection.map(item => item.configId); + this.single = selection.length != 1; + this.multiple = !selection.length; }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); - const configId = row.configId || this.ids + const configId = row.configId || this.ids; getConfig(configId).then(response => { this.form = response.data; this.open = true; - this.title = "修改参数"; + this.title = '修改参数'; }); }, /** 提交按钮 */ submitForm: function() { - this.$refs["form"].validate(valid => { + this.$refs['form'].validate(valid => { if (valid) { if (this.form.configId != undefined) { updateConfig(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("修改成功"); + this.msgSuccess('修改成功'); this.open = false; this.getList(); } else { @@ -303,7 +217,7 @@ export default { } else { addConfig(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("新增成功"); + this.msgSuccess('新增成功'); this.open = false; this.getList(); } else { @@ -317,30 +231,36 @@ export default { /** 删除按钮操作 */ handleDelete(row) { const configIds = row.configId || this.ids; - this.$confirm('是否确认删除参数编号为"' + configIds + '"的数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认删除参数编号为"' + configIds + '"的数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return delConfig(configIds); - }).then(() => { + }) + .then(() => { this.getList(); - this.msgSuccess("删除成功"); - }).catch(function() {}); + this.msgSuccess('删除成功'); + }) + .catch(function() {}); }, /** 导出按钮操作 */ handleExport() { const queryParams = this.queryParams; - this.$confirm('是否确认导出所有参数数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认导出所有参数数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return exportConfig(queryParams); - }).then(response => { + }) + .then(response => { this.download(response.msg); - }).catch(function() {}); + }) + .catch(function() {}); } } }; -</script> \ No newline at end of file +</script> diff --git a/ruoyi-ui/src/views/system/dict/data.vue b/ruoyi-ui/src/views/system/dict/data.vue index dcb8cb70f..55fefadb4 100644 --- a/ruoyi-ui/src/views/system/dict/data.vue +++ b/ruoyi-ui/src/views/system/dict/data.vue @@ -3,31 +3,15 @@ <el-form :model="queryParams" ref="queryForm" :inline="true"> <el-form-item label="字典名称" prop="dictType"> <el-select v-model="queryParams.dictType" size="small"> - <el-option - v-for="item in typeOptions" - :key="item.dictId" - :label="item.dictName" - :value="item.dictType" - /> + <el-option v-for="item in typeOptions" :key="item.dictId" :label="item.dictName" :value="item.dictType" /> </el-select> </el-form-item> <el-form-item label="字典标签" prop="dictLabel"> - <el-input - v-model="queryParams.dictLabel" - placeholder="请输入字典标签" - clearable - size="small" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.dictLabel" placeholder="请输入字典标签" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="数据状态" clearable size="small"> - <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" - /> + <el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" /> </el-select> </el-form-item> <el-form-item> @@ -37,44 +21,14 @@ </el-form> <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"><el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:dict:add']">新增</el-button></el-col> <el-col :span="1.5"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['system:dict:add']" - >新增</el-button> + <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:dict:edit']">修改</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="success" - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:dict:edit']" - >修改</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['system:dict:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['system:dict:export']" - >导出</el-button> + <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:dict:remove']">删除</el-button> </el-col> + <el-col :span="1.5"><el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:dict:export']">导出</el-button></el-col> </el-row> <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> @@ -92,59 +46,27 @@ </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:dict:edit']" - >修改</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['system:dict:remove']" - >删除</el-button> + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:dict:edit']">修改</el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:dict:remove']">删除</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 添加或修改参数配置对话框 --> <el-dialog :title="title" :visible.sync="open" width="500px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> - <el-form-item label="字典类型"> - <el-input v-model="form.dictType" :disabled="true" /> - </el-form-item> - <el-form-item label="数据标签" prop="dictLabel"> - <el-input v-model="form.dictLabel" placeholder="请输入数据标签" /> - </el-form-item> - <el-form-item label="数据键值" prop="dictValue"> - <el-input v-model="form.dictValue" placeholder="请输入数据键值" /> - </el-form-item> - <el-form-item label="显示排序" prop="dictSort"> - <el-input-number v-model="form.dictSort" controls-position="right" :min="0" /> - </el-form-item> + <el-form-item label="字典类型"><el-input v-model="form.dictType" :disabled="true" /></el-form-item> + <el-form-item label="数据标签" prop="dictLabel"><el-input v-model="form.dictLabel" placeholder="请输入数据标签" /></el-form-item> + <el-form-item label="数据键值" prop="dictValue"><el-input v-model="form.dictValue" placeholder="请输入数据键值" /></el-form-item> + <el-form-item label="显示排序" prop="dictSort"><el-input-number v-model="form.dictSort" controls-position="right" :min="0" /></el-form-item> <el-form-item label="状态" prop="status"> <el-radio-group v-model="form.status"> - <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + <el-radio v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictValue">{{ dict.dictLabel }}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> - </el-form-item> + <el-form-item label="备注" prop="remark"><el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input></el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">确 定</el-button> @@ -155,11 +77,11 @@ </template> <script> -import { listData, getData, delData, addData, updateData, exportData } from "@/api/system/dict/data"; -import { listType, getType } from "@/api/system/dict/type"; +import { listData, getData, delData, addData, updateData, exportData } from '@/api/system/dict/data'; +import { listType, getType } from '@/api/system/dict/type'; export default { - name: "Data", + name: 'Data', data() { return { // 遮罩层 @@ -175,9 +97,9 @@ export default { // 字典表格数据 dataList: [], // 默认字典类型 - defaultDictType: "", + defaultDictType: '', // 弹出层标题 - title: "", + title: '', // 是否显示弹出层 open: false, // 状态数据字典 @@ -196,15 +118,9 @@ export default { form: {}, // 表单校验 rules: { - dictLabel: [ - { required: true, message: "数据标签不能为空", trigger: "blur" } - ], - dictValue: [ - { required: true, message: "数据键值不能为空", trigger: "blur" } - ], - dictSort: [ - { required: true, message: "数据顺序不能为空", trigger: "blur" } - ] + dictLabel: [{ required: true, message: '数据标签不能为空', trigger: 'blur' }], + dictValue: [{ required: true, message: '数据键值不能为空', trigger: 'blur' }], + dictSort: [{ required: true, message: '数据顺序不能为空', trigger: 'blur' }] } }; }, @@ -212,7 +128,7 @@ export default { const dictId = this.$route.params && this.$route.params.dictId; this.getType(dictId); this.getTypeList(); - this.getDicts("sys_normal_disable").then(response => { + this.getDicts('sys_normal_disable').then(response => { this.statusOptions = response.data; }); }, @@ -256,10 +172,10 @@ export default { dictLabel: undefined, dictValue: undefined, dictSort: 0, - status: "0", + status: '0', remark: undefined }; - this.resetForm("form"); + this.resetForm('form'); }, /** 搜索按钮操作 */ handleQuery() { @@ -268,7 +184,7 @@ export default { }, /** 重置按钮操作 */ resetQuery() { - this.resetForm("queryForm"); + this.resetForm('queryForm'); this.queryParams.dictType = this.defaultDictType; this.handleQuery(); }, @@ -276,33 +192,33 @@ export default { handleAdd() { this.reset(); this.open = true; - this.title = "添加字典数据"; + this.title = '添加字典数据'; this.form.dictType = this.queryParams.dictType; }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.dictCode) - this.single = selection.length!=1 - this.multiple = !selection.length + this.ids = selection.map(item => item.dictCode); + this.single = selection.length != 1; + this.multiple = !selection.length; }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); - const dictCode = row.dictCode || this.ids + const dictCode = row.dictCode || this.ids; getData(dictCode).then(response => { this.form = response.data; this.open = true; - this.title = "修改字典数据"; + this.title = '修改字典数据'; }); }, /** 提交按钮 */ submitForm: function() { - this.$refs["form"].validate(valid => { + this.$refs['form'].validate(valid => { if (valid) { if (this.form.dictCode != undefined) { updateData(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("修改成功"); + this.msgSuccess('修改成功'); this.open = false; this.getList(); } else { @@ -312,7 +228,7 @@ export default { } else { addData(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("新增成功"); + this.msgSuccess('新增成功'); this.open = false; this.getList(); } else { @@ -326,30 +242,36 @@ export default { /** 删除按钮操作 */ handleDelete(row) { const dictCodes = row.dictCode || this.ids; - this.$confirm('是否确认删除字典编码为"' + dictCodes + '"的数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认删除字典编码为"' + dictCodes + '"的数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return delData(dictCodes); - }).then(() => { + }) + .then(() => { this.getList(); - this.msgSuccess("删除成功"); - }).catch(function() {}); + this.msgSuccess('删除成功'); + }) + .catch(function() {}); }, /** 导出按钮操作 */ handleExport() { const queryParams = this.queryParams; - this.$confirm('是否确认导出所有数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认导出所有数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return exportData(queryParams); - }).then(response => { + }) + .then(response => { this.download(response.msg); - }).catch(function() {}); + }) + .catch(function() {}); } } }; -</script> \ No newline at end of file +</script> diff --git a/ruoyi-ui/src/views/system/dict/index.vue b/ruoyi-ui/src/views/system/dict/index.vue index 44ca109b7..a75455d72 100644 --- a/ruoyi-ui/src/views/system/dict/index.vue +++ b/ruoyi-ui/src/views/system/dict/index.vue @@ -2,39 +2,14 @@ <div class="app-container"> <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> <el-form-item label="字典名称" prop="dictName"> - <el-input - v-model="queryParams.dictName" - placeholder="请输入字典名称" - clearable - size="small" - style="width: 240px" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.dictName" placeholder="请输入字典名称" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="字典类型" prop="dictType"> - <el-input - v-model="queryParams.dictType" - placeholder="请输入字典类型" - clearable - size="small" - style="width: 240px" - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.dictType" placeholder="请输入字典类型" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> - <el-select - v-model="queryParams.status" - placeholder="字典状态" - clearable - size="small" - style="width: 240px" - > - <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" - /> + <el-select v-model="queryParams.status" placeholder="字典状态" clearable size="small" style="width: 240px"> + <el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" /> </el-select> </el-form-item> <el-form-item label="创建时间"> @@ -56,44 +31,14 @@ </el-form> <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"><el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:dict:add']">新增</el-button></el-col> <el-col :span="1.5"> - <el-button - type="primary" - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['system:dict:add']" - >新增</el-button> + <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:dict:edit']">修改</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="success" - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:dict:edit']" - >修改</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="danger" - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['system:dict:remove']" - >删除</el-button> - </el-col> - <el-col :span="1.5"> - <el-button - type="warning" - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['system:dict:export']" - >导出</el-button> + <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:dict:remove']">删除</el-button> </el-col> + <el-col :span="1.5"><el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:dict:export']">导出</el-button></el-col> </el-row> <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange"> @@ -116,53 +61,25 @@ </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-edit" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:dict:edit']" - >修改</el-button> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - v-hasPermi="['system:dict:remove']" - >删除</el-button> + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:dict:edit']">修改</el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:dict:remove']">删除</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 添加或修改参数配置对话框 --> <el-dialog :title="title" :visible.sync="open" width="500px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> - <el-form-item label="字典名称" prop="dictName"> - <el-input v-model="form.dictName" placeholder="请输入字典名称" /> - </el-form-item> - <el-form-item label="字典类型" prop="dictType"> - <el-input v-model="form.dictType" placeholder="请输入字典类型" /> - </el-form-item> + <el-form-item label="字典名称" prop="dictName"><el-input v-model="form.dictName" placeholder="请输入字典名称" /></el-form-item> + <el-form-item label="字典类型" prop="dictType"><el-input v-model="form.dictType" placeholder="请输入字典类型" /></el-form-item> <el-form-item label="状态" prop="status"> <el-radio-group v-model="form.status"> - <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + <el-radio v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictValue">{{ dict.dictLabel }}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> - </el-form-item> + <el-form-item label="备注" prop="remark"><el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input></el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">确 定</el-button> @@ -173,10 +90,10 @@ </template> <script> -import { listType, getType, delType, addType, updateType, exportType } from "@/api/system/dict/type"; +import { listType, getType, delType, addType, updateType, exportType } from '@/api/system/dict/type'; export default { - name: "Dict", + name: 'Dict', data() { return { // 遮罩层 @@ -192,7 +109,7 @@ export default { // 字典表格数据 typeList: [], // 弹出层标题 - title: "", + title: '', // 是否显示弹出层 open: false, // 状态数据字典 @@ -211,18 +128,14 @@ export default { form: {}, // 表单校验 rules: { - dictName: [ - { required: true, message: "字典名称不能为空", trigger: "blur" } - ], - dictType: [ - { required: true, message: "字典类型不能为空", trigger: "blur" } - ] + dictName: [{ required: true, message: '字典名称不能为空', trigger: 'blur' }], + dictType: [{ required: true, message: '字典类型不能为空', trigger: 'blur' }] } }; }, created() { this.getList(); - this.getDicts("sys_normal_disable").then(response => { + this.getDicts('sys_normal_disable').then(response => { this.statusOptions = response.data; }); }, @@ -231,11 +144,11 @@ export default { getList() { this.loading = true; listType(this.addDateRange(this.queryParams, this.dateRange)).then(response => { - this.typeList = response.rows; - this.total = response.total; - this.loading = false; - } - ); + console.log(response); + this.typeList = response.rows; + this.total = response.total; + this.loading = false; + }); }, // 字典状态字典翻译 statusFormat(row, column) { @@ -252,10 +165,10 @@ export default { dictId: undefined, dictName: undefined, dictType: undefined, - status: "0", + status: '0', remark: undefined }; - this.resetForm("form"); + this.resetForm('form'); }, /** 搜索按钮操作 */ handleQuery() { @@ -265,39 +178,39 @@ export default { /** 重置按钮操作 */ resetQuery() { this.dateRange = []; - this.resetForm("queryForm"); + this.resetForm('queryForm'); this.handleQuery(); }, /** 新增按钮操作 */ handleAdd() { this.reset(); this.open = true; - this.title = "添加字典类型"; + this.title = '添加字典类型'; }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.dictId) - this.single = selection.length!=1 - this.multiple = !selection.length + this.ids = selection.map(item => item.dictId); + this.single = selection.length != 1; + this.multiple = !selection.length; }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); - const dictId = row.dictId || this.ids + const dictId = row.dictId || this.ids; getType(dictId).then(response => { this.form = response.data; this.open = true; - this.title = "修改字典类型"; + this.title = '修改字典类型'; }); }, /** 提交按钮 */ submitForm: function() { - this.$refs["form"].validate(valid => { + this.$refs['form'].validate(valid => { if (valid) { if (this.form.dictId != undefined) { updateType(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("修改成功"); + this.msgSuccess('修改成功'); this.open = false; this.getList(); } else { @@ -307,7 +220,7 @@ export default { } else { addType(this.form).then(response => { if (response.code === 200) { - this.msgSuccess("新增成功"); + this.msgSuccess('新增成功'); this.open = false; this.getList(); } else { @@ -321,30 +234,36 @@ export default { /** 删除按钮操作 */ handleDelete(row) { const dictIds = row.dictId || this.ids; - this.$confirm('是否确认删除字典编号为"' + dictIds + '"的数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认删除字典编号为"' + dictIds + '"的数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return delType(dictIds); - }).then(() => { + }) + .then(() => { this.getList(); - this.msgSuccess("删除成功"); - }).catch(function() {}); + this.msgSuccess('删除成功'); + }) + .catch(function() {}); }, /** 导出按钮操作 */ handleExport() { const queryParams = this.queryParams; - this.$confirm('是否确认导出所有类型数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { + this.$confirm('是否确认导出所有类型数据项?', '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(function() { return exportType(queryParams); - }).then(response => { + }) + .then(response => { this.download(response.msg); - }).catch(function() {}); + }) + .catch(function() {}); } } }; -</script> \ No newline at end of file +</script> diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 5dce8d694..42662192f 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -1,5 +1,5 @@ 'use strict' -const path = require('path') +const path = require('path') const defaultSettings = require('./src/settings.js') function resolve(dir) { @@ -8,7 +8,7 @@ function resolve(dir) { const name = defaultSettings.title || '若依管理系统' // 标题 -const port = process.env.port || process.env.npm_config_port || 80 // 端口 +const port = process.env.port || process.env.npm_config_port || 80// 端口 // vue.config.js 配置说明 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions @@ -33,7 +33,7 @@ module.exports = { proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8080`, + target: `http://localhost:8090`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' diff --git a/ruoyi/src/main/resources/application-druid.yml b/ruoyi/src/main/resources/application-druid.yml index cdfb3390b..fe3351f8e 100644 --- a/ruoyi/src/main/resources/application-druid.yml +++ b/ruoyi/src/main/resources/application-druid.yml @@ -8,14 +8,14 @@ spring: master: url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: password + password: root # 从库数据源 slave: # 从数据源开关/默认关闭 enabled: false - url: - username: - password: + url: + username: + password: # 初始连接数 initialSize: 5 # 最小连接池数量 @@ -35,7 +35,7 @@ spring: testWhileIdle: true testOnBorrow: false testOnReturn: false - webStatFilter: + webStatFilter: enabled: true statViewServlet: enabled: true @@ -43,8 +43,8 @@ spring: allow: url-pattern: /druid/* # 控制台管理用户名和密码 - login-username: - login-password: + login-username: + login-password: filter: stat: enabled: true diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml index 0537e7593..36d9eb2a7 100644 --- a/ruoyi/src/main/resources/application.yml +++ b/ruoyi/src/main/resources/application.yml @@ -16,7 +16,7 @@ ruoyi: # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8080 + port: 8090 servlet: # 应用的访问路径 context-path: / @@ -41,7 +41,7 @@ spring: messages: # 国际化资源文件路径 basename: i18n/messages - profiles: + profiles: active: druid # 文件上传 servlet: @@ -62,7 +62,7 @@ spring: # 端口,默认为6379 port: 6379 # 密码 - password: + password: # 连接超时时间 timeout: 10s lettuce: @@ -84,7 +84,7 @@ token: secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 30 - + # MyBatis配置 mybatis: # 搜索指定包别名 @@ -95,23 +95,23 @@ mybatis: configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 -pagehelper: +pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true - params: count=countSql + params: count=countSql # 防止XSS攻击 -xss: +xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice/* # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* - + # 代码生成 -gen: +gen: # 作者 author: ruoyi # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool diff --git a/ruoyi/src/main/resources/logback.xml b/ruoyi/src/main/resources/logback.xml index d69a57207..2200dbe82 100644 --- a/ruoyi/src/main/resources/logback.xml +++ b/ruoyi/src/main/resources/logback.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 日志存放路径 --> - <property name="log.path" value="/home/ruoyi/logs" /> + <property name="log.path" value="/Users/apple/Documents/ruoyi/logs" /> <!-- 日志输出格式 --> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> @@ -11,7 +11,7 @@ <pattern>${log.pattern}</pattern> </encoder> </appender> - + <!-- 系统日志输出 --> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/sys-info.log</file> @@ -34,7 +34,7 @@ <onMismatch>DENY</onMismatch> </filter> </appender> - + <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/sys-error.log</file> <!-- 循环政策:基于时间创建日志文件 --> @@ -56,7 +56,7 @@ <onMismatch>DENY</onMismatch> </filter> </appender> - + <!-- 用户访问日志输出 --> <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/sys-user.log</file> @@ -70,7 +70,7 @@ <pattern>${log.pattern}</pattern> </encoder> </appender> - + <!-- 系统模块日志级别控制 --> <logger name="com.ruoyi" level="info" /> <!-- Spring日志级别控制 --> @@ -79,15 +79,15 @@ <root level="info"> <appender-ref ref="console" /> </root> - + <!--系统操作日志--> <root level="info"> <appender-ref ref="file_info" /> <appender-ref ref="file_error" /> </root> - + <!--系统用户操作日志--> <logger name="sys-user" level="info"> <appender-ref ref="sys-user"/> </logger> -</configuration> \ No newline at end of file +</configuration> \ No newline at end of file