From c1e2aca279332a9292740ab50c19164652e57c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 11:20:52 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E9=A6=96=E9=A1=B5=EF=BC=9A=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E6=97=A5=E5=BF=97=E7=9A=84=E8=AF=B7=E6=B1=82=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=9B=BE=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- app/Modules/Admin/Console/AutoTableBuild.php | 2 +- .../Http/Controllers/IndexController.php | 12 + .../Resources/vue-element-admin/api/indexs.js | 7 + .../components/Charts/mixins/resize.js | 96 ++--- .../vue-element-admin/router/index.js | 4 - .../router/modules/components.js | 180 ++++---- .../router/modules/nested.js | 66 --- .../vue-element-admin/router/modules/table.js | 41 -- .../views/components-demo/count-to.vue | 400 +++++++++--------- .../views/components-demo/mixin.vue | 310 +++++++------- .../dashboard/admin/components/LineMarker.vue | 244 +++++++++++ .../admin/components/mixins/resize.js | 94 ++-- .../views/dashboard/admin/index.vue | 3 +- .../views/i18n-demo/index.vue | 311 +++++++------- .../views/i18n-demo/local.js | 159 ++++--- .../views/setting/configs/index.vue | 8 + app/Modules/Admin/Routes/web.php | 2 + app/Modules/Admin/Services/IndexService.php | 104 ++++- 19 files changed, 1143 insertions(+), 903 deletions(-) delete mode 100644 app/Modules/Admin/Resources/vue-element-admin/router/modules/nested.js delete mode 100644 app/Modules/Admin/Resources/vue-element-admin/router/modules/table.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineMarker.vue diff --git a/README.md b/README.md index 516f54d..a9ff128 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,7 @@ Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN #### 软件架构 软件架构说明 -文档地址:https://docs.apipost.cn/view/680a60d8e13e4745 - +文档地址(无文档,自己对接):https://docs.apipost.cn/view/680a60d8e13e4745 #### 安装教程 diff --git a/app/Modules/Admin/Console/AutoTableBuild.php b/app/Modules/Admin/Console/AutoTableBuild.php index 7d47e73..88c2774 100644 --- a/app/Modules/Admin/Console/AutoTableBuild.php +++ b/app/Modules/Admin/Console/AutoTableBuild.php @@ -47,7 +47,7 @@ class AutoTableBuild extends Command public function handle() { foreach ($this->model_lists as $model){ - (new $model)->createMonthTable('', strtotime('+0 month')); + (new $model)->createMonthTable('', strtotime('+1 month')); } } diff --git a/app/Modules/Admin/Http/Controllers/IndexController.php b/app/Modules/Admin/Http/Controllers/IndexController.php index 1dd29bc..242b669 100644 --- a/app/Modules/Admin/Http/Controllers/IndexController.php +++ b/app/Modules/Admin/Http/Controllers/IndexController.php @@ -18,6 +18,18 @@ class IndexController extends BaseController return $this->successJson($this->service->index()); } + /** + * 按照日志类型的统计图数据 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function logsStatistics(Request $request) + { + return $this->successJson($this->service->logsStatistics()); + } + /** * 月份表列表 * diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js index e271250..e2ff0f7 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js @@ -6,3 +6,10 @@ export function statistics() { method: 'get' }) } + +export function logsStatistics() { + return request({ + url: '/logsStatistics', + method: 'get' + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js index b1e76e9..89fbed1 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js @@ -1,56 +1,56 @@ -import { debounce } from '@/utils' +import {debounce} from '@/utils' export default { - data() { - return { - $_sidebarElm: null, - $_resizeHandler: null - } - }, - mounted() { - this.initListener() - }, - activated() { - if (!this.$_resizeHandler) { - // avoid duplication init - this.initListener() - } - - // when keep-alive chart activated, auto resize - this.resize() - }, - beforeDestroy() { - this.destroyListener() - }, - deactivated() { - this.destroyListener() - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_sidebarResizeHandler(e) { - if (e.propertyName === 'width') { - this.$_resizeHandler() - } + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } }, - initListener() { - this.$_resizeHandler = debounce(() => { - this.resize() - }, 100) - window.addEventListener('resize', this.$_resizeHandler) - - this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] - this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + mounted() { + this.initListener() }, - destroyListener() { - window.removeEventListener('resize', this.$_resizeHandler) - this.$_resizeHandler = null + activated() { + if (!this.$_resizeHandler) { + // avoid duplication init + this.initListener() + } - this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + // when keep-alive chart activated, auto resize + this.resize() + }, + beforeDestroy() { + this.destroyListener() + }, + deactivated() { + this.destroyListener() }, - resize() { - const { chart } = this - chart && chart.resize() + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + initListener() { + this.$_resizeHandler = debounce(() => { + this.resize() + }, 100) + window.addEventListener('resize', this.$_resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + destroyListener() { + window.removeEventListener('resize', this.$_resizeHandler) + this.$_resizeHandler = null + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + resize() { + const {chart} = this + chart && chart.resize() + } } - } } diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/index.js b/app/Modules/Admin/Resources/vue-element-admin/router/index.js index f8a274f..1950bf7 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/router/index.js +++ b/app/Modules/Admin/Resources/vue-element-admin/router/index.js @@ -9,8 +9,6 @@ import Layout from '@/layout' /* Router Modules */ // import componentsRouter from './modules/components' // import chartsRouter from './modules/charts' -// import tableRouter from './modules/table' -// import nestedRouter from './modules/nested' /** * Note: sub-menu only appear when route children.length >= 1 @@ -119,8 +117,6 @@ export const asyncRoutes = [ /** when your routing map is too long, you can split it into small modules **/ // componentsRouter, // chartsRouter, - // nestedRouter, - // tableRouter, { path: '/error', diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js b/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js index b7407e2..4cffad5 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js +++ b/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js @@ -3,100 +3,94 @@ import Layout from '@/layout' const componentsRouter = { - path: '/components', - component: Layout, - redirect: 'noRedirect', - name: 'ComponentDemo', - meta: { - title: 'components', - icon: 'component' - }, - children: [ - { - path: 'tinymce', - component: () => import('@/views/components-demo/tinymce'), - name: 'TinymceDemo', - meta: { title: 'tinymce' } + path: '/components', + component: Layout, + redirect: 'noRedirect', + name: 'ComponentDemo', + meta: { + title: 'components', + icon: 'component' }, - { - path: 'markdown', - component: () => import('@/views/components-demo/markdown'), - name: 'MarkdownDemo', - meta: { title: 'markdown' } - }, - { - path: 'json-editor', - component: () => import('@/views/components-demo/json-editor'), - name: 'JsonEditorDemo', - meta: { title: 'jsonEditor' } - }, - { - path: 'split-pane', - component: () => import('@/views/components-demo/split-pane'), - name: 'SplitpaneDemo', - meta: { title: 'splitPane' } - }, - { - path: 'avatar-upload', - component: () => import('@/views/components-demo/avatar-upload'), - name: 'AvatarUploadDemo', - meta: { title: 'avatarUpload' } - }, - { - path: 'dropzone', - component: () => import('@/views/components-demo/dropzone'), - name: 'DropzoneDemo', - meta: { title: 'dropzone' } - }, - { - path: 'sticky', - component: () => import('@/views/components-demo/sticky'), - name: 'StickyDemo', - meta: { title: 'sticky' } - }, - { - path: 'count-to', - component: () => import('@/views/components-demo/count-to'), - name: 'CountToDemo', - meta: { title: 'countTo' } - }, - { - path: 'mixin', - component: () => import('@/views/components-demo/mixin'), - name: 'ComponentMixinDemo', - meta: { title: 'componentMixin' } - }, - { - path: 'back-to-top', - component: () => import('@/views/components-demo/back-to-top'), - name: 'BackToTopDemo', - meta: { title: 'backToTop' } - }, - { - path: 'drag-dialog', - component: () => import('@/views/components-demo/drag-dialog'), - name: 'DragDialogDemo', - meta: { title: 'dragDialog' } - }, - { - path: 'drag-select', - component: () => import('@/views/components-demo/drag-select'), - name: 'DragSelectDemo', - meta: { title: 'dragSelect' } - }, - { - path: 'dnd-list', - component: () => import('@/views/components-demo/dnd-list'), - name: 'DndListDemo', - meta: { title: 'dndList' } - }, - { - path: 'drag-kanban', - component: () => import('@/views/components-demo/drag-kanban'), - name: 'DragKanbanDemo', - meta: { title: 'dragKanban' } - } - ] + children: [ + { + path: 'tinymce', + component: () => import('@/views/components-demo/tinymce'), + name: 'TinymceDemo', + meta: {title: 'tinymce'} + }, + { + path: 'markdown', + component: () => import('@/views/components-demo/markdown'), + name: 'MarkdownDemo', + meta: {title: 'markdown'} + }, + { + path: 'json-editor', + component: () => import('@/views/components-demo/json-editor'), + name: 'JsonEditorDemo', + meta: {title: 'jsonEditor'} + }, + { + path: 'split-pane', + component: () => import('@/views/components-demo/split-pane'), + name: 'SplitpaneDemo', + meta: {title: 'splitPane'} + }, + { + path: 'avatar-upload', + component: () => import('@/views/components-demo/avatar-upload'), + name: 'AvatarUploadDemo', + meta: {title: 'avatarUpload'} + }, + { + path: 'dropzone', + component: () => import('@/views/components-demo/dropzone'), + name: 'DropzoneDemo', + meta: {title: 'dropzone'} + }, + { + path: 'sticky', + component: () => import('@/views/components-demo/sticky'), + name: 'StickyDemo', + meta: {title: 'sticky'} + }, + { + path: 'count-to', + component: () => import('@/views/components-demo/count-to'), + name: 'CountToDemo', + meta: {title: 'countTo'} + }, + { + path: 'mixin', + component: () => import('@/views/components-demo/mixin'), + name: 'ComponentMixinDemo', + meta: {title: 'componentMixin'} + }, + { + path: 'back-to-top', + component: () => import('@/views/components-demo/back-to-top'), + name: 'BackToTopDemo', + meta: {title: 'backToTop'} + }, + { + path: 'drag-dialog', + component: () => import('@/views/components-demo/drag-dialog'), + name: 'DragDialogDemo', + meta: {title: 'dragDialog'} + }, + { + path: 'drag-select', + component: () => import('@/views/components-demo/drag-select'), + name: 'DragSelectDemo', + meta: {title: 'dragSelect'} + }, + { + path: 'drag-kanban', + component: () => import('@/views/components-demo/drag-kanban'), + name: 'DragKanbanDemo', + meta: {title: 'dragKanban'} + } + ] } export default componentsRouter diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/modules/nested.js b/app/Modules/Admin/Resources/vue-element-admin/router/modules/nested.js deleted file mode 100644 index c52664c..0000000 --- a/app/Modules/Admin/Resources/vue-element-admin/router/modules/nested.js +++ /dev/null @@ -1,66 +0,0 @@ -/** When your routing table is too long, you can split it into small modules **/ - -import Layout from '@/layout' - -const nestedRouter = { - path: '/nested', - component: Layout, - redirect: '/nested/menu1/menu1-1', - name: 'Nested', - meta: { - title: 'nested', - icon: 'nested' - }, - children: [ - { - path: 'menu1', - component: () => import('@/views/nested/menu1/index'), // Parent router-view - name: 'Menu1', - meta: { title: 'menu1' }, - redirect: '/nested/menu1/menu1-1', - children: [ - { - path: 'menu1-1', - component: () => import('@/views/nested/menu1/menu1-1'), - name: 'Menu1-1', - meta: { title: 'menu1-1' } - }, - { - path: 'menu1-2', - component: () => import('@/views/nested/menu1/menu1-2'), - name: 'Menu1-2', - redirect: '/nested/menu1/menu1-2/menu1-2-1', - meta: { title: 'menu1-2' }, - children: [ - { - path: 'menu1-2-1', - component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'), - name: 'Menu1-2-1', - meta: { title: 'menu1-2-1' } - }, - { - path: 'menu1-2-2', - component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'), - name: 'Menu1-2-2', - meta: { title: 'menu1-2-2' } - } - ] - }, - { - path: 'menu1-3', - component: () => import('@/views/nested/menu1/menu1-3'), - name: 'Menu1-3', - meta: { title: 'menu1-3' } - } - ] - }, - { - path: 'menu2', - name: 'Menu2', - component: () => import('@/views/nested/menu2/index'), - meta: { title: 'menu2' } - } - ] -} - -export default nestedRouter diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/modules/table.js b/app/Modules/Admin/Resources/vue-element-admin/router/modules/table.js deleted file mode 100644 index d8e5030..0000000 --- a/app/Modules/Admin/Resources/vue-element-admin/router/modules/table.js +++ /dev/null @@ -1,41 +0,0 @@ -/** When your routing table is too long, you can split it into small modules **/ - -import Layout from '@/layout' - -const tableRouter = { - path: '/table', - component: Layout, - redirect: '/table/complex-table', - name: 'Table', - meta: { - title: 'Table', - icon: 'table' - }, - children: [ - { - path: 'dynamic-table', - component: () => import('@/views/table/dynamic-table/index'), - name: 'DynamicTable', - meta: { title: 'dynamicTable' } - }, - { - path: 'drag-table', - component: () => import('@/views/table/drag-table'), - name: 'DragTable', - meta: { title: 'dragTable' } - }, - { - path: 'inline-edit-table', - component: () => import('@/views/table/inline-edit-table'), - name: 'InlineEditTable', - meta: { title: 'inlineEditTable' } - }, - { - path: 'complex-table', - component: () => import('@/views/table/complex-table'), - name: 'ComplexTable', - meta: { title: 'complexTable' } - } - ] -} -export default tableRouter diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/count-to.vue b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/count-to.vue index 70681df..ea5ce03 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/count-to.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/count-to.vue @@ -1,218 +1,222 @@ diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/mixin.vue b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/mixin.vue index 425cf4f..b435d37 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/mixin.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/mixin.vue @@ -1,169 +1,171 @@ diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineMarker.vue b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineMarker.vue new file mode 100644 index 0000000..f8dd2a7 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/LineMarker.vue @@ -0,0 +1,244 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/mixins/resize.js b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/mixins/resize.js index 234953b..6567a1e 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/mixins/resize.js +++ b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/components/mixins/resize.js @@ -1,55 +1,55 @@ -import { debounce } from '@/utils' +import {debounce} from '@/utils' export default { - data() { - return { - $_sidebarElm: null, - $_resizeHandler: null - } - }, - mounted() { - this.$_resizeHandler = debounce(() => { - if (this.chart) { - this.chart.resize() - } - }, 100) - this.$_initResizeEvent() - this.$_initSidebarResizeEvent() - }, - beforeDestroy() { - this.$_destroyResizeEvent() - this.$_destroySidebarResizeEvent() - }, - // to fixed bug when cached by keep-alive - // https://github.com/PanJiaChen/vue-element-admin/issues/2116 - activated() { - this.$_initResizeEvent() - this.$_initSidebarResizeEvent() - }, - deactivated() { - this.$_destroyResizeEvent() - this.$_destroySidebarResizeEvent() - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_initResizeEvent() { - window.addEventListener('resize', this.$_resizeHandler) + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.$_resizeHandler = debounce(() => { + if (this.chart) { + this.chart.resize() + } + }, 100) + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() }, - $_destroyResizeEvent() { - window.removeEventListener('resize', this.$_resizeHandler) + beforeDestroy() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() }, - $_sidebarResizeHandler(e) { - if (e.propertyName === 'width') { - this.$_resizeHandler() - } + // to fixed bug when cached by keep-alive + // https://github.com/PanJiaChen/vue-element-admin/issues/2116 + activated() { + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() }, - $_initSidebarResizeEvent() { - this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] - this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + deactivated() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() }, - $_destroySidebarResizeEvent() { - this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_initResizeEvent() { + window.addEventListener('resize', this.$_resizeHandler) + }, + $_destroyResizeEvent() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + $_initSidebarResizeEvent() { + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + $_destroySidebarResizeEvent() { + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + } } - } } diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/index.vue index ad22ab7..56a2139 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/dashboard/admin/index.vue @@ -37,7 +37,7 @@ import LineChart from './components/LineChart' import BarChart from './components/BarChart' import BoxCard from './components/BoxCard' - import Chart from '@/components/Charts/LineMarker' + import Chart from './components/LineMarker' import {statistics} from "@/api/indexs"; const lineChartData = { @@ -77,6 +77,7 @@ } }, created() { + console.log('index-created'); this.statistics(); }, methods: { diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/index.vue index 32cee07..2fe739c 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/index.vue @@ -1,168 +1,171 @@ diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/local.js b/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/local.js index ae38dd2..e6970f5 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/local.js +++ b/app/Modules/Admin/Resources/vue-element-admin/views/i18n-demo/local.js @@ -1,83 +1,82 @@ - export default { - zh: { - i18nView: { - title: '切换语言', - note: '本项目国际化基于 vue-i18n', - datePlaceholder: '请选择日期', - selectPlaceholder: '请选择', - tableDate: '日期', - tableName: '姓名', - tableAddress: '地址', - default: '默认按钮', - primary: '主要按钮', - success: '成功按钮', - info: '信息按钮', - warning: '警告按钮', - danger: '危险按钮', - one: '一', - two: '二', - three: '三' + zh: { + i18nView: { + title: '切换语言', + note: '本项目国际化基于 vue-i18n', + datePlaceholder: '请选择日期', + selectPlaceholder: '请选择', + tableDate: '日期', + tableName: '姓名', + tableAddress: '地址', + default: '默认按钮', + primary: '主要按钮', + success: '成功按钮', + info: '信息按钮', + warning: '警告按钮', + danger: '危险按钮', + one: '一', + two: '二', + three: '三' + } + }, + en: { + i18nView: { + title: 'Switch Language', + note: 'The internationalization of this project is based on vue-i18n', + datePlaceholder: 'Pick a day', + selectPlaceholder: 'Select', + tableDate: 'tableDate', + tableName: 'tableName', + tableAddress: 'tableAddress', + default: 'default:', + primary: 'primary', + success: 'success', + info: 'info', + warning: 'warning', + danger: 'danger', + one: 'One', + two: 'Two', + three: 'Three' + } + }, + es: { + i18nView: { + title: 'Switch Language', + note: 'The internationalization of this project is based on vue-i18n', + datePlaceholder: 'Pick a day', + selectPlaceholder: 'Select', + tableDate: 'tableDate', + tableName: 'tableName', + tableAddress: 'tableAddress', + default: 'default:', + primary: 'primary', + success: 'success', + info: 'info', + warning: 'warning', + danger: 'danger', + one: 'One', + two: 'Two', + three: 'Three' + } + }, + ja: { + i18nView: { + title: '言語切替', + note: 'vue-i18nを使っています', + datePlaceholder: '日時選択', + selectPlaceholder: '選択してください', + tableDate: '日時', + tableName: '姓名', + tableAddress: '住所', + default: 'default', + primary: 'primary', + success: 'success', + info: 'info', + warning: 'warning', + danger: 'danger', + one: '1', + two: '2', + three: '3' + } } - }, - en: { - i18nView: { - title: 'Switch Language', - note: 'The internationalization of this project is based on vue-i18n', - datePlaceholder: 'Pick a day', - selectPlaceholder: 'Select', - tableDate: 'tableDate', - tableName: 'tableName', - tableAddress: 'tableAddress', - default: 'default:', - primary: 'primary', - success: 'success', - info: 'info', - warning: 'warning', - danger: 'danger', - one: 'One', - two: 'Two', - three: 'Three' - } - }, - es: { - i18nView: { - title: 'Switch Language', - note: 'The internationalization of this project is based on vue-i18n', - datePlaceholder: 'Pick a day', - selectPlaceholder: 'Select', - tableDate: 'tableDate', - tableName: 'tableName', - tableAddress: 'tableAddress', - default: 'default:', - primary: 'primary', - success: 'success', - info: 'info', - warning: 'warning', - danger: 'danger', - one: 'One', - two: 'Two', - three: 'Three' - } - }, - ja: { - i18nView: { - title: '言語切替', - note: 'vue-i18nを使っています', - datePlaceholder: '日時選択', - selectPlaceholder: '選択してください', - tableDate: '日時', - tableName: '姓名', - tableAddress: '住所', - default: 'default', - primary: 'primary', - success: 'success', - info: 'info', - warning: 'warning', - danger: 'danger', - one: '1', - two: '2', - three: '3' - } - } } diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/setting/configs/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/setting/configs/index.vue index 8296c96..595960e 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/setting/configs/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/setting/configs/index.vue @@ -53,17 +53,20 @@ class="margin-buttom-10" > + + + + + + + + 编辑 删除 diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 8647a8c..a55f093 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -33,6 +33,8 @@ Route::prefix('admin')->group(function() { Route::middleware([CheckAuth::class, AdminLog::class])->group(function () { // 首页 Route::get('indexs', 'IndexController@index'); + // 按照日志类型的统计图数据 + Route::get('logsStatistics', 'IndexController@logsStatistics'); // 月份表列表 Route::get('get_month_lists', 'IndexController@getMonthList'); diff --git a/app/Modules/Admin/Services/IndexService.php b/app/Modules/Admin/Services/IndexService.php index 5ce8433..f7b1207 100644 --- a/app/Modules/Admin/Services/IndexService.php +++ b/app/Modules/Admin/Services/IndexService.php @@ -3,6 +3,7 @@ namespace App\Modules\Admin\Services; use App\Modules\Admin\Entities\Article\Article; +use App\Modules\Admin\Entities\Log\AdminLog; use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Friendlink; @@ -13,38 +14,113 @@ class IndexService extends BaseService { return [ // 管理员人数 - 'admins_count' => Admin::count(), + 'admins_count' => Admin::count(), // 文章总数 - 'articles_count' => Article::count(), + 'articles_count' => Article::count(), // Banner数量 - 'banners_count' => Banner::count(), + 'banners_count' => Banner::count(), // 友情链接数量 'friendlinks_count' => Friendlink::count(), // 技能 - 'skill' => $this->skill() + 'skill' => $this->skill(), + // 统计图:使用请求日志来做数据 + 'statistics' => $this->logsStatistics(), ]; } private function skill() { $arr = [ - 'cnpscy' => 100, - 'PHP' => rand(70, 99), - 'Mysql' => rand(70, 99), - 'Redis' => rand(70, 99), - 'Thinkphp' => rand(70, 99), - 'Laravel' => rand(50, 99), - 'Hypref' => rand(50, 99), - 'Vue' => rand(10, 99), + 'cnpscy' => 100, + 'PHP' => rand(70, 99), + 'Mysql' => rand(70, 99), + 'Redis' => rand(70, 99), + 'Thinkphp' => rand(70, 99), + 'Laravel' => rand(50, 99), + 'Hypref' => rand(50, 99), + 'Vue' => rand(10, 99), 'JavaScript' => rand(20, 99), ]; $list = []; - foreach ($arr as $key => $value){ + foreach ($arr as $key => $value) { $list[] = [ - 'name' => $key, + 'name' => $key, 'value' => $value, ]; } return $list; } + + /** + * 按照日志的请求类型来获取对应的统计图数据 + * + * @return array + */ + public function logsStatistics() + { + $default_data = [ + 'xAxis' => [ + 'data' => [ + + ], + ], + 'list_name' => [ + // 'GET', + 'POST', + 'PUT', + 'DELETE', + ], + 'data_lists' => [ + // 'GET' => [], + 'POST' => [ + + ], + 'PUT' => [ + + ], + 'DELETE' => [ + + ], + ], + ]; + $adminLogInstance = AdminLog::getInstance(); + $interval_nums = 10; // 时段次数 + $time_interval = 3600; // 时段间隔 + $time = strtotime(date('Y-m-d H', strtotime('+1 hour')) . ':00:00'); + for ($i = 0; $i < $interval_nums; $i++) { + $end_time = $time - $time_interval; + // 默认X轴的时段 + $default_data['xAxis']['data'][$i] = date('Y-m-d H', $end_time) . ':00'; + + $default_data['data_lists']['GET'][$i] + = $default_data['data_lists']['POST'][$i] + = $default_data['data_lists']['PUT'][$i] + = $default_data['data_lists']['DELETE'][$i] + = 0; + + // 数据查询 + $list = $adminLogInstance->whereBetWeen('created_time', [ + $end_time, + $time, + ]) + ->get(); + if ( $list ) { + foreach ($list as $v) { + if ( $v->log_method == 'GET' ) { + // ++$default_data['data_lists']['GET'][$i]; + } elseif ( $v->log_method == 'POST' ) { + ++$default_data['data_lists']['POST'][$i]; + } elseif ( $v->log_method == 'PUT' ) { + ++$default_data['data_lists']['PUT'][$i]; + } elseif ( $v->log_method == 'DELETE' ) { + ++$default_data['data_lists']['DELETE'][$i]; + } + } + } + + // 把当前的结束时间设置为下一次的开始时间 + $time = $end_time; + } + return (array)$default_data; + } } -- Gitee From 80c0432c994047fad4a065bdb2697dc5bfa12e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 13:42:18 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=B9=B4=E4=BB=BD=E5=88=86=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9E=8B=EF=BC=9B=20function.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Helper/functions.php | 55 ++++++++++++++++++++++++- app/Models/YearModel.php | 89 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 app/Models/YearModel.php diff --git a/app/Helper/functions.php b/app/Helper/functions.php index 06b0a2b..981d5da 100644 --- a/app/Helper/functions.php +++ b/app/Helper/functions.php @@ -1,4 +1,40 @@ setMonthTable(); + } + + /** + * 获取从开始分表到明年为止,所有的年份 + * + * @return array + */ + public function getAllMonthes(): array + { + $years = get_year_range(self::MIN_TABLE . '-01', date('Y-01', strtotime('+1 year'))); + krsort($years); + return $years; + } + + /** + * 设置按年分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : (strlen($month) == 4 ? $month : date(self::MONTH_FORMAT, strtotime($month))); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= self::MIN_TABLE ) { + $this->month = $month; + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } + + /** + * 获取原始表名(移除年份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按年分表的表名 + if (preg_match ("/^([0-9]{4})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } +} -- Gitee From b60b7a426b7cb59453b5960afa8f3fdb925b8652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 16:27:39 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=9B=BE=E6=95=B0=E6=8D=AE=EF=BC=9A=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Modules/Admin/Services/IndexService.php | 44 +++++++++++---------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/app/Modules/Admin/Services/IndexService.php b/app/Modules/Admin/Services/IndexService.php index f7b1207..5628bdb 100644 --- a/app/Modules/Admin/Services/IndexService.php +++ b/app/Modules/Admin/Services/IndexService.php @@ -7,6 +7,7 @@ use App\Modules\Admin\Entities\Log\AdminLog; use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Friendlink; +use Monolog\Handler\IFTTTHandler; class IndexService extends BaseService { @@ -84,36 +85,39 @@ class IndexService extends BaseService ], ]; $adminLogInstance = AdminLog::getInstance(); - $interval_nums = 10; // 时段次数 - $time_interval = 3600; // 时段间隔 - $time = strtotime(date('Y-m-d H', strtotime('+1 hour')) . ':00:00'); + $interval_nums = 10; // 时段次数:10个时间段,自己调整 + $time_interval = 600; // 时段间隔:10分钟,自己调整 + $hours = $time_interval / 600; + $time = strtotime(date('Y-m-d H', strtotime('+' . $hours . ' hour')) . ':00:00'); + + // 数据查询 + $list = $adminLogInstance->whereBetWeen('created_time', [ + $time - $interval_nums * $time_interval, + $time, + ])->get(); for ($i = 0; $i < $interval_nums; $i++) { $end_time = $time - $time_interval; // 默认X轴的时段 - $default_data['xAxis']['data'][$i] = date('Y-m-d H', $end_time) . ':00'; + $default_data['xAxis']['data'][$i] = date('Y-m-d H:i', $end_time); - $default_data['data_lists']['GET'][$i] - = $default_data['data_lists']['POST'][$i] + // $default_data['data_lists']['GET'][$i] = + $default_data['data_lists']['POST'][$i] = $default_data['data_lists']['PUT'][$i] = $default_data['data_lists']['DELETE'][$i] = 0; - // 数据查询 - $list = $adminLogInstance->whereBetWeen('created_time', [ - $end_time, - $time, - ]) - ->get(); if ( $list ) { foreach ($list as $v) { - if ( $v->log_method == 'GET' ) { - // ++$default_data['data_lists']['GET'][$i]; - } elseif ( $v->log_method == 'POST' ) { - ++$default_data['data_lists']['POST'][$i]; - } elseif ( $v->log_method == 'PUT' ) { - ++$default_data['data_lists']['PUT'][$i]; - } elseif ( $v->log_method == 'DELETE' ) { - ++$default_data['data_lists']['DELETE'][$i]; + if ($v->created_time >= $end_time && $v->created_time <= $time){ + if ( $v->log_method == 'GET' ) { + // ++$default_data['data_lists']['GET'][$i]; + } elseif ( $v->log_method == 'POST' ) { + ++$default_data['data_lists']['POST'][$i]; + } elseif ( $v->log_method == 'PUT' ) { + ++$default_data['data_lists']['PUT'][$i]; + } elseif ( $v->log_method == 'DELETE' ) { + ++$default_data['data_lists']['DELETE'][$i]; + } } } } -- Gitee From 43483a71c4d7a4230e039939b9b27c686569d512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 16:46:46 +0800 Subject: [PATCH 4/7] optimize --- app/Modules/Admin/Services/IndexService.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Modules/Admin/Services/IndexService.php b/app/Modules/Admin/Services/IndexService.php index 5628bdb..27b1ee2 100644 --- a/app/Modules/Admin/Services/IndexService.php +++ b/app/Modules/Admin/Services/IndexService.php @@ -85,10 +85,10 @@ class IndexService extends BaseService ], ]; $adminLogInstance = AdminLog::getInstance(); - $interval_nums = 10; // 时段次数:10个时间段,自己调整 - $time_interval = 600; // 时段间隔:10分钟,自己调整 - $hours = $time_interval / 600; - $time = strtotime(date('Y-m-d H', strtotime('+' . $hours . ' hour')) . ':00:00'); + $interval_nums = 100; // 时段次数:100个时间段,自己调整 + $time_interval = 300; // 时段间隔:5分钟,自己调整 + $hours = ceil($time_interval / 3600); // 时间间隔设置,超过几小时:查询时的开始时间需要加上才有意义 + $time = strtotime(date('Y-m-d H:i', strtotime('+' . $hours . ' hour')) . ':00'); // 数据查询 $list = $adminLogInstance->whereBetWeen('created_time', [ -- Gitee From 35af8a37f809aebe59495fcbdae26ce404400167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 17:38:23 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=A1=E6=81=AF=EF=BC=9B=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AF=B7=E6=B1=82=E7=BB=93=E6=9E=9C=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=AF=B9=E5=BA=94=E7=9A=84=E5=93=8D=E5=BA=94=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/IndexController.php | 15 + .../vue-element-admin/api/configs.js | 2 +- .../Resources/vue-element-admin/api/indexs.js | 11 + .../views/admins/components/detail.vue | 4 +- .../views/article_categories/index.vue | 4 +- .../articles/components/ArticleDetail.vue | 2 +- .../views/profile/components/Account.vue | 88 +++-- .../views/profile/components/Activity.vue | 315 +++++++++--------- .../vue-element-admin/views/profile/index.vue | 10 +- .../setting/banners/components/detail.vue | 4 +- .../setting/friendlinks/components/detail.vue | 4 +- app/Modules/Admin/Routes/web.php | 2 + app/Modules/Admin/Services/IndexService.php | 18 +- 13 files changed, 276 insertions(+), 203 deletions(-) diff --git a/app/Modules/Admin/Http/Controllers/IndexController.php b/app/Modules/Admin/Http/Controllers/IndexController.php index 242b669..9714576 100644 --- a/app/Modules/Admin/Http/Controllers/IndexController.php +++ b/app/Modules/Admin/Http/Controllers/IndexController.php @@ -39,4 +39,19 @@ class IndexController extends BaseController { return $this->successJson(MonthModel::getInstance()->getAllMonthes()); } + + /** + * 编辑登录管理员信息 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function update(Request $request){ + if ($this->service->updateAdmin($request)){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } } diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js index 6b1452a..0316ce4 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js @@ -20,7 +20,7 @@ export function update(data) { return request({ url: '/configs', method: 'put', - parmas: data + data }) } diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js index e2ff0f7..09086a3 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js @@ -1,5 +1,6 @@ import request from '@/utils/request' +// 首页 - 基础统计数据 export function statistics() { return request({ url: '/indexs', @@ -7,9 +8,19 @@ export function statistics() { }) } +// 首页 - 请求日志统计表数据 export function logsStatistics() { return request({ url: '/logsStatistics', method: 'get' }) } + +// 编辑登录管理员信息 +export function updateAdmin(data) { + return request({ + url: '/updateAdmin', + method: 'put', + data, + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/admins/components/detail.vue b/app/Modules/Admin/Resources/vue-element-admin/views/admins/components/detail.vue index be91fa7..1708698 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/admins/components/detail.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/admins/components/detail.vue @@ -215,10 +215,10 @@ save() { this.$refs['form'].validate(async (valid) => { if (valid) { - const {msg} = this.form.admin_id ? await update(this.form) : await create(this.form); + const {msg, status} = this.form.admin_id ? await update(this.form) : await create(this.form); this.$message({ message: msg, - type: 'success' + type: status == 1 ? 'success' : 'error', }); this.$emit('fetchData'); this.close(); diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/article_categories/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/article_categories/index.vue index bb4cd7e..7734da6 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/article_categories/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/article_categories/index.vue @@ -137,10 +137,10 @@ type: 'warning' }) .then(async () => { - const {msg} = await setDel({category_id: row.category_id}); + const {msg, status} = await setDel({category_id: row.category_id}); this.$message({ message: msg, - type: 'success' + type: status == 1 ? 'success' : 'error', }); this.getMenus(); }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue b/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue index edb4aed..380f497 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue @@ -247,7 +247,7 @@ }else{ this.$message({ message: msg, - type: 'success', + type: 'error', }); } diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue index 9f2e386..dfa10be 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue @@ -1,38 +1,64 @@ diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Activity.vue b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Activity.vue index dd5db3a..8727113 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Activity.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Activity.vue @@ -1,185 +1,188 @@ diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/profile/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/profile/index.vue index c115570..9e765c0 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/profile/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/profile/index.vue @@ -10,15 +10,15 @@ + + + - - - @@ -41,7 +41,7 @@ data() { return { user: {}, - activeTab: 'activity' + activeTab: 'account' } }, computed: { @@ -52,7 +52,7 @@ ]) }, created() { - this.getUser() + this.getUser(); }, methods: { getUser() { diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/setting/banners/components/detail.vue b/app/Modules/Admin/Resources/vue-element-admin/views/setting/banners/components/detail.vue index 574122c..4fbde49 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/setting/banners/components/detail.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/setting/banners/components/detail.vue @@ -159,10 +159,10 @@ this.$refs['form'].validate(async (valid) => { console.log(valid); if (valid) { - const {msg} = this.form.banner_id ? await update(this.form) : await create(this.form); + const {msg, status} = this.form.banner_id ? await update(this.form) : await create(this.form); this.$message({ message: msg, - type: 'success' + type: status == 1 ? 'success' : 'error', }); this.$emit('fetchData'); this.close(); diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/setting/friendlinks/components/detail.vue b/app/Modules/Admin/Resources/vue-element-admin/views/setting/friendlinks/components/detail.vue index 2fdad08..21f9f17 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/setting/friendlinks/components/detail.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/setting/friendlinks/components/detail.vue @@ -160,10 +160,10 @@ this.$refs['form'].validate(async (valid) => { console.log(valid); if (valid) { - const {msg} = this.form.link_id ? await update(this.form) : await create(this.form); + const {msg, status} = this.form.link_id ? await update(this.form) : await create(this.form); this.$message({ message: msg, - type: 'success' + type: status == 1 ? 'success' : 'error', }); this.$emit('fetchData'); this.close(); diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index a55f093..8854528 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -33,6 +33,8 @@ Route::prefix('admin')->group(function() { Route::middleware([CheckAuth::class, AdminLog::class])->group(function () { // 首页 Route::get('indexs', 'IndexController@index'); + // 编辑登录管理员资料 + Route::put('updateAdmin', 'IndexController@update'); // 按照日志类型的统计图数据 Route::get('logsStatistics', 'IndexController@logsStatistics'); // 月份表列表 diff --git a/app/Modules/Admin/Services/IndexService.php b/app/Modules/Admin/Services/IndexService.php index 27b1ee2..1686721 100644 --- a/app/Modules/Admin/Services/IndexService.php +++ b/app/Modules/Admin/Services/IndexService.php @@ -7,7 +7,6 @@ use App\Modules\Admin\Entities\Log\AdminLog; use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Friendlink; -use Monolog\Handler\IFTTTHandler; class IndexService extends BaseService { @@ -127,4 +126,21 @@ class IndexService extends BaseService } return (array)$default_data; } + + /** + * 编辑登录管理员信息 + * + * @param $request + * + * @return mixed + */ + public function updateAdmin($request) + { + $update['admin_name'] = $request->input('admin_name'); + $password = $request->input('password', ''); + if (!empty($password)){ + $update['password'] = $password; + } + return $request->user()->update($update); + } } -- Gitee From 093f0707e17c6dcce84f8cc676e2910bfaadf85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Mon, 4 Jan 2021 17:49:06 +0800 Subject: [PATCH 6/7] update. --- .../vue-element-admin/views/profile/components/Account.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue index dfa10be..ff6cf77 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/profile/components/Account.vue @@ -38,7 +38,9 @@ this.updateAdmin(); - this.loading = false; + setTimeout(() => { + this.loading = false; + }, 500); }, async updateAdmin(){ const {msg, status} = await updateAdmin({ -- Gitee From eac99e474282e031c4aeb1db10d56a4cb2982c07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Tue, 5 Jan 2021 00:11:22 +0800 Subject: [PATCH 7/7] update --- .../vue-element-admin/router/index.js | 38 ++--- .../router/modules/charts.js | 54 +++---- .../router/modules/components.js | 18 --- .../views/components-demo/drag-dialog.vue | 61 -------- .../views/components-demo/split-pane.vue | 67 --------- .../views/components-demo/sticky.vue | 133 ------------------ 6 files changed, 49 insertions(+), 322 deletions(-) delete mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/components-demo/drag-dialog.vue delete mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/components-demo/split-pane.vue delete mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/components-demo/sticky.vue diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/index.js b/app/Modules/Admin/Resources/vue-element-admin/router/index.js index 1950bf7..3b1e38a 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/router/index.js +++ b/app/Modules/Admin/Resources/vue-element-admin/router/index.js @@ -7,8 +7,8 @@ Vue.use(Router) import Layout from '@/layout' /* Router Modules */ -// import componentsRouter from './modules/components' -// import chartsRouter from './modules/charts' +import componentsRouter from './modules/components' +import chartsRouter from './modules/charts' /** * Note: sub-menu only appear when route children.length >= 1 @@ -103,11 +103,17 @@ export const constantRoutes = [ path: 'index', component: () => import('@/views/sundry/icons/index'), name: 'Icons', - meta: { title: 'icons', icon: 'icon', noCache: true } + meta: {title: 'icons', icon: 'icon', noCache: true} } ] }, -] + {path: '*', redirect: '/404', hidden: true}, + + componentsRouter, + chartsRouter +]; +console.log('---componentsRouter---'); +console.log(componentsRouter); /** * asyncRoutes @@ -118,6 +124,18 @@ export const asyncRoutes = [ // componentsRouter, // chartsRouter, + + // { + // path: 'external-link', + // component: Layout, + // children: [ + // { + // path: 'https://github.com/PanJiaChen/vue-element-admin', + // meta: {title: 'externalLink', icon: 'link'} + // } + // ] + // }, + { path: '/error', component: Layout, @@ -142,19 +160,7 @@ export const asyncRoutes = [ } ] }, - // { - // path: 'external-link', - // component: Layout, - // children: [ - // { - // path: 'https://github.com/PanJiaChen/vue-element-admin', - // meta: {title: 'externalLink', icon: 'link'} - // } - // ] - // }, - // 404 page must be placed at the end !!! - {path: '*', redirect: '/404', hidden: true} ] const createRouter = () => new Router({ diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/modules/charts.js b/app/Modules/Admin/Resources/vue-element-admin/router/modules/charts.js index 59ebf18..42d7d20 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/router/modules/charts.js +++ b/app/Modules/Admin/Resources/vue-element-admin/router/modules/charts.js @@ -3,34 +3,34 @@ import Layout from '@/layout' const chartsRouter = { - path: '/charts', - component: Layout, - redirect: 'noRedirect', - name: 'Charts', - meta: { - title: 'charts', - icon: 'chart' - }, - children: [ - { - path: 'keyboard', - component: () => import('@/views/charts/keyboard'), - name: 'KeyboardChart', - meta: { title: 'keyboardChart', noCache: true } + path: '/charts', + component: Layout, + redirect: 'noRedirect', + name: 'Charts', + meta: { + title: 'charts', + icon: 'chart' }, - { - path: 'line', - component: () => import('@/views/charts/line'), - name: 'LineChart', - meta: { title: 'lineChart', noCache: true } - }, - { - path: 'mix-chart', - component: () => import('@/views/charts/mix-chart'), - name: 'MixChart', - meta: { title: 'mixChart', noCache: true } - } - ] + children: [ + { + path: 'keyboard', + component: () => import('@/views/charts/keyboard'), + name: 'KeyboardChart', + meta: {title: 'keyboardChart', noCache: true} + }, + { + path: 'line', + component: () => import('@/views/charts/line'), + name: 'LineChart', + meta: {title: 'lineChart', noCache: true} + }, + { + path: 'mix-chart', + component: () => import('@/views/charts/mix-chart'), + name: 'MixChart', + meta: {title: 'mixChart', noCache: true} + } + ] } export default chartsRouter diff --git a/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js b/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js index 4cffad5..5447699 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js +++ b/app/Modules/Admin/Resources/vue-element-admin/router/modules/components.js @@ -30,12 +30,6 @@ const componentsRouter = { name: 'JsonEditorDemo', meta: {title: 'jsonEditor'} }, - { - path: 'split-pane', - component: () => import('@/views/components-demo/split-pane'), - name: 'SplitpaneDemo', - meta: {title: 'splitPane'} - }, { path: 'avatar-upload', component: () => import('@/views/components-demo/avatar-upload'), @@ -48,12 +42,6 @@ const componentsRouter = { name: 'DropzoneDemo', meta: {title: 'dropzone'} }, - { - path: 'sticky', - component: () => import('@/views/components-demo/sticky'), - name: 'StickyDemo', - meta: {title: 'sticky'} - }, { path: 'count-to', component: () => import('@/views/components-demo/count-to'), @@ -72,12 +60,6 @@ const componentsRouter = { name: 'BackToTopDemo', meta: {title: 'backToTop'} }, - { - path: 'drag-dialog', - component: () => import('@/views/components-demo/drag-dialog'), - name: 'DragDialogDemo', - meta: {title: 'dragDialog'} - }, { path: 'drag-select', component: () => import('@/views/components-demo/drag-select'), diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/drag-dialog.vue b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/drag-dialog.vue deleted file mode 100644 index c815b28..0000000 --- a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/drag-dialog.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/split-pane.vue b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/split-pane.vue deleted file mode 100644 index 7dba353..0000000 --- a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/split-pane.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - - - diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/sticky.vue b/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/sticky.vue deleted file mode 100644 index de86e1a..0000000 --- a/app/Modules/Admin/Resources/vue-element-admin/views/components-demo/sticky.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -- Gitee