├── public
├── .gitkeep
├── favicon.ico
├── geeAdmin.png
├── user
│ ├── head.png
│ └── head_.png
└── font
│ ├── iconfont.eot
│ ├── iconfont.ttf
│ └── iconfont.woff
├── static
├── .gitkeep
├── favicon.ico
├── geeAdmin.png
├── user
│ ├── head.png
│ └── head_.png
└── font
│ ├── iconfont.eot
│ ├── iconfont.ttf
│ └── iconfont.woff
├── src
├── core
│ ├── style
│ │ ├── 4B9E65
│ │ │ ├── submenu.css
│ │ │ ├── button-group.css
│ │ │ ├── form-item.css
│ │ │ ├── menu-item.css
│ │ │ ├── tab-pane.css
│ │ │ ├── breadcrumb-item.css
│ │ │ ├── checkbox-button.css
│ │ │ ├── checkbox-group.css
│ │ │ ├── collapse-item.css
│ │ │ ├── dropdown-item.css
│ │ │ ├── dropdown-menu.css
│ │ │ ├── menu-item-group.css
│ │ │ ├── radio-group.css
│ │ │ ├── aside.css
│ │ │ ├── fonts
│ │ │ │ ├── element-icons.ttf
│ │ │ │ └── element-icons.woff
│ │ │ ├── footer.css
│ │ │ ├── header.css
│ │ │ ├── main.css
│ │ │ ├── steps.css
│ │ │ ├── container.css
│ │ │ ├── card.css
│ │ │ ├── option-group.css
│ │ │ ├── rate.css
│ │ │ ├── badge.css
│ │ │ ├── option.css
│ │ │ ├── reset.css
│ │ │ ├── row.css
│ │ │ ├── spinner.css
│ │ │ ├── display.css
│ │ │ ├── breadcrumb.css
│ │ │ ├── scrollbar.css
│ │ │ ├── carousel-item.css
│ │ │ ├── collapse.css
│ │ │ ├── alert.css
│ │ │ ├── popper.css
│ │ │ ├── notification.css
│ │ │ ├── loading.css
│ │ │ ├── switch.css
│ │ │ ├── progress.css
│ │ │ ├── message.css
│ │ │ ├── tree.css
│ │ │ ├── tag.css
│ │ │ ├── carousel.css
│ │ │ ├── popover.css
│ │ │ ├── radio-button.css
│ │ │ ├── tooltip.css
│ │ │ ├── dialog.css
│ │ │ ├── select-dropdown.css
│ │ │ ├── form.css
│ │ │ ├── radio.css
│ │ │ ├── icon.css
│ │ │ └── step.css
│ │ ├── style.scss
│ │ └── table.scss
│ ├── blank.vue
│ ├── lib
│ │ ├── const.js
│ │ ├── directive.js
│ │ └── permission.js
│ └── Layout.vue
├── assets
│ ├── 404.gif
│ ├── geeAdmin.png
│ └── font-class
│ │ ├── iconfont.eot
│ │ ├── iconfont.ttf
│ │ └── iconfont.woff
├── components
│ ├── form
│ │ ├── tinymce
│ │ │ └── gee
│ │ │ │ ├── fonts
│ │ │ │ ├── readme.md
│ │ │ │ ├── tinymce.eot
│ │ │ │ ├── tinymce.ttf
│ │ │ │ ├── tinymce.woff
│ │ │ │ ├── tinymce-small.eot
│ │ │ │ ├── tinymce-small.ttf
│ │ │ │ └── tinymce-small.woff
│ │ │ │ ├── img
│ │ │ │ ├── anchor.gif
│ │ │ │ ├── loader.gif
│ │ │ │ ├── object.gif
│ │ │ │ └── trans.gif
│ │ │ │ ├── skin.json
│ │ │ │ ├── content.inline.min.css
│ │ │ │ └── content.min.css
│ │ ├── select.vue
│ │ ├── form.vue
│ │ ├── ctPicker.vue
│ │ ├── markdown.vue
│ │ ├── item.vue
│ │ ├── checkbox.vue
│ │ └── tinymce.vue
│ ├── upload
│ │ └── font
│ │ │ ├── iconfont.eot
│ │ │ ├── iconfont.ttf
│ │ │ └── iconfont.woff
│ ├── style
│ │ └── dialogClear.scss
│ ├── table
│ │ └── fnGroup.vue
│ ├── other
│ │ ├── magnetic.vue
│ │ ├── graphdracula.vue
│ │ └── echarts.vue
│ └── popover
│ │ └── select.vue
├── view
│ ├── default
│ │ └── index.vue
│ ├── Osharp
│ │ ├── security
│ │ │ ├── column
│ │ │ │ ├── entityinfo.js
│ │ │ │ └── function.js
│ │ │ ├── utils
│ │ │ │ └── utils.js
│ │ │ ├── style
│ │ │ │ └── treeBox.scss
│ │ │ ├── popover
│ │ │ │ └── functionInfo.vue
│ │ │ ├── function.vue
│ │ │ ├── entityinfo.vue
│ │ │ ├── module.vue
│ │ │ └── role-function.vue
│ │ ├── system
│ │ │ ├── column
│ │ │ │ └── Pack.js
│ │ │ ├── utils
│ │ │ │ └── utils.js
│ │ │ ├── style
│ │ │ │ └── treeBox.scss
│ │ │ └── pack.vue
│ │ └── identity
│ │ │ ├── column
│ │ │ ├── user-role.js
│ │ │ ├── role.js
│ │ │ └── user.js
│ │ │ ├── popover
│ │ │ ├── roleConfig.vue
│ │ │ ├── roleInfo.vue
│ │ │ ├── userInfo.vue
│ │ │ └── userConfig.vue
│ │ │ └── user-role.vue
│ └── statusPage
│ │ ├── 404.vue
│ │ └── 401.vue
├── api
│ ├── Enum.js
│ ├── osharp
│ │ ├── Security.js
│ │ ├── Function.js
│ │ ├── User-role.js
│ │ ├── entityinfo.js
│ │ ├── Rolefunction.js
│ │ ├── Userfunction.js
│ │ ├── Common.js
│ │ ├── Identity.js
│ │ ├── Module.js
│ │ ├── User.js
│ │ ├── Pack.js
│ │ ├── Role.js
│ │ └── AuditEntity.js
│ └── ParaEnum.js
├── router
│ ├── core.js
│ └── index.js
├── App.vue
├── config.js
├── utils
│ ├── request.js
│ ├── check.js
│ ├── xlsx.js
│ ├── vextend.js
│ └── system.js
└── main.js
├── babel.config.js
├── postcss.config.js
├── .idea
├── misc.xml
├── vcs.xml
├── modules.xml
└── osharpVue3.iml
├── vue.config.js
├── index.html
├── package.json
├── Readme.md
├── LICENSE
└── .gitignore
/public/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/checkbox-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/collapse-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/app'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/geeAdmin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/geeAdmin.png
--------------------------------------------------------------------------------
/src/assets/404.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/assets/404.gif
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/favicon.ico
--------------------------------------------------------------------------------
/static/geeAdmin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/geeAdmin.png
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {}
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/public/user/head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/user/head.png
--------------------------------------------------------------------------------
/public/user/head_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/user/head_.png
--------------------------------------------------------------------------------
/static/user/head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/user/head.png
--------------------------------------------------------------------------------
/static/user/head_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/user/head_.png
--------------------------------------------------------------------------------
/public/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/font/iconfont.eot
--------------------------------------------------------------------------------
/public/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/font/iconfont.ttf
--------------------------------------------------------------------------------
/src/assets/geeAdmin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/assets/geeAdmin.png
--------------------------------------------------------------------------------
/static/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/font/iconfont.eot
--------------------------------------------------------------------------------
/static/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/font/iconfont.ttf
--------------------------------------------------------------------------------
/public/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/public/font/iconfont.woff
--------------------------------------------------------------------------------
/static/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/static/font/iconfont.woff
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/readme.md:
--------------------------------------------------------------------------------
1 | Icons are generated and provided by the http://icomoon.io service.
2 |
--------------------------------------------------------------------------------
/src/assets/font-class/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/assets/font-class/iconfont.eot
--------------------------------------------------------------------------------
/src/assets/font-class/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/assets/font-class/iconfont.ttf
--------------------------------------------------------------------------------
/src/core/style/4B9E65/radio-group.css:
--------------------------------------------------------------------------------
1 | .el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}
--------------------------------------------------------------------------------
/src/assets/font-class/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/assets/font-class/iconfont.woff
--------------------------------------------------------------------------------
/src/components/upload/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/upload/font/iconfont.eot
--------------------------------------------------------------------------------
/src/components/upload/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/upload/font/iconfont.ttf
--------------------------------------------------------------------------------
/src/components/upload/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/upload/font/iconfont.woff
--------------------------------------------------------------------------------
/src/core/style/4B9E65/aside.css:
--------------------------------------------------------------------------------
1 | .el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/img/anchor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/img/anchor.gif
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/img/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/img/loader.gif
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/img/object.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/img/object.gif
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/img/trans.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/img/trans.gif
--------------------------------------------------------------------------------
/src/core/style/4B9E65/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/core/style/4B9E65/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/src/core/style/4B9E65/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/core/style/4B9E65/fonts/element-icons.woff
--------------------------------------------------------------------------------
/src/core/style/4B9E65/footer.css:
--------------------------------------------------------------------------------
1 | .el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/header.css:
--------------------------------------------------------------------------------
1 | .el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce.eot
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce.ttf
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce.woff
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce-small.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce-small.eot
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce-small.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce-small.ttf
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/fonts/tinymce-small.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zionLZH/osharpVue3/HEAD/src/components/form/tinymce/gee/fonts/tinymce-small.woff
--------------------------------------------------------------------------------
/src/core/blank.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/main.css:
--------------------------------------------------------------------------------
1 | .el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | publicPath: '',
3 | devServer: {
4 | proxy: {
5 | '/api': {
6 | target: 'https://www.osharp.org'
7 | }
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/view/default/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Osharp
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/src/api/Enum.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Enum'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/Read`,
8 | method: 'GET',
9 | params: option
10 | })
11 | }
12 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/column/entityinfo.js:
--------------------------------------------------------------------------------
1 | export default {
2 | Name: {
3 | title: '实体名称',
4 | width: '220px',
5 | sort: true
6 | },
7 | TypeName: {
8 | title: '实体类型',
9 | width: '600px',
10 | sort: true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/api/osharp/Security.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/security'
4 |
5 | export function getauthinfo () {
6 | return request({
7 | url: `${path}/getauthinfo`,
8 | method: 'GET',
9 | noSuffix: true
10 | })
11 | }
12 |
--------------------------------------------------------------------------------
/src/view/Osharp/system/column/Pack.js:
--------------------------------------------------------------------------------
1 | export default {
2 | Display: {
3 | title: '名称'
4 | },
5 | Class: {
6 | title: '名称'
7 | },
8 | Level: {
9 | title: '级别'
10 | },
11 | Order: {
12 | title: '启动顺序'
13 | },
14 | IsEnabled: {
15 | title: '是否启用'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/steps.css:
--------------------------------------------------------------------------------
1 | .el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}
--------------------------------------------------------------------------------
/src/core/lib/const.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | class Core {
4 | constructor (arg) {
5 | this.pageMini = innerWidth <= 640
6 | const self = this
7 | window.addEventListener('resize', () => {
8 | self.pageMini = innerWidth <= 640
9 | })
10 | }
11 | }
12 | const bridge = new Vue()
13 | export {
14 | Core,
15 | bridge
16 | }
17 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/column/user-role.js:
--------------------------------------------------------------------------------
1 | export default {
2 | UserId: {
3 | title: 'UserId',
4 | sort: true
5 | },
6 | UserName: {
7 | title: '用户',
8 | sort: true
9 | },
10 | RoleName: {
11 | title: '角色',
12 | sort: true
13 | },
14 | IsLocked: {
15 | title: '锁定',
16 | sort: true
17 | },
18 | CreatedTime: {
19 | title: '注册时间',
20 | width: '200px',
21 | sort: true
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/container.css:
--------------------------------------------------------------------------------
1 | .el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}
--------------------------------------------------------------------------------
/src/api/osharp/Function.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/function'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/Update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/src/api/osharp/User-role.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/userrole'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/card.css:
--------------------------------------------------------------------------------
1 | .el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/src/api/osharp/entityinfo.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/admin/entityinfo'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/option-group.css:
--------------------------------------------------------------------------------
1 | .el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}
--------------------------------------------------------------------------------
/src/view/Osharp/identity/column/role.js:
--------------------------------------------------------------------------------
1 | export default {
2 | Name: {
3 | title: '角色名',
4 | sort: true
5 | },
6 | Remark: {
7 | title: '备注',
8 | sort: true
9 | },
10 | IsAdmin: {
11 | title: '管理',
12 | sort: true
13 | },
14 | IsDefault: {
15 | title: '默认',
16 | sort: true
17 | },
18 | IsLocked: {
19 | title: '锁定',
20 | sort: true
21 | },
22 | CreatedTime: {
23 | title: '注册时间',
24 | width: '200px',
25 | sort: true
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/router/core.js:
--------------------------------------------------------------------------------
1 | import Layout from '@/core/Layout'
2 | const coreRoutes = [
3 | {
4 | path: '/',
5 | name: 'layout',
6 | component: Layout
7 | },
8 | {
9 | path: '/404',
10 | name: '404',
11 | meta: { pass: true },
12 | component: () => import('@/view/statusPage/404')
13 | },
14 | {
15 | path: '/401',
16 | name: '401',
17 | meta: { pass: true },
18 | component: () => import('@/view/statusPage/401')
19 | }
20 | ]
21 | export {
22 | coreRoutes
23 | }
24 |
--------------------------------------------------------------------------------
/.idea/osharpVue3.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/api/osharp/Rolefunction.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/admin/rolefunction'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Readfunctions (param, option) {
15 | return request({
16 | url: `${path}/readfunctions`,
17 | method: 'POST',
18 | noSuffix: true,
19 | params: param,
20 | data: option
21 | })
22 | }
23 |
--------------------------------------------------------------------------------
/src/api/osharp/Userfunction.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/admin/userfunction'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Readfunctions (param, option) {
15 | return request({
16 | url: `${path}/readfunctions`,
17 | method: 'POST',
18 | noSuffix: true,
19 | params: param,
20 | data: option
21 | })
22 | }
23 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/rate.css:
--------------------------------------------------------------------------------
1 | .el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/badge.css:
--------------------------------------------------------------------------------
1 | .el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/option.css:
--------------------------------------------------------------------------------
1 | .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#4B9E65;font-weight:700}.el-select-dropdown__item span{line-height:34px!important}
--------------------------------------------------------------------------------
/src/api/osharp/Common.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Common'
4 |
5 | export function VerifyCode (option) {
6 | return new Promise((resolve, reject) => {
7 | request({
8 | url: `${path}/VerifyCode`,
9 | method: 'GET'
10 | }).then(res => {
11 | var arr = [ false, false ]
12 | try {
13 | let base64 = atob(res.data)
14 | arr = base64.split('#$#')
15 | } catch (e) {
16 | // nothing
17 | }
18 | resolve({res: res, vcode: arr[0], vcodeId: arr[1]})
19 | }).catch(e => {
20 | console.log(e)
21 | reject(e)
22 | })
23 | })
24 | }
25 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
25 |
--------------------------------------------------------------------------------
/src/api/osharp/Identity.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Identity'
4 |
5 | export function Jwtoken (option) {
6 | return request({
7 | url: `${path}/Jwtoken`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function profile () {
15 | return request({
16 | url: `${path}/profile`,
17 | method: 'GET',
18 | noSuffix: true
19 | })
20 | }
21 |
22 | export function Logout (option) {
23 | return request({
24 | url: `${path}/logout`,
25 | method: 'POST',
26 | noSuffix: true,
27 | data: option
28 | })
29 | }
30 |
31 | export function Register (option) {
32 | return request({
33 | url: `${path}/register`,
34 | method: 'POST',
35 | noSuffix: true,
36 | data: option
37 | })
38 | }
39 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/reset.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";body{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;font-weight:400;font-size:14px;color:#000;-webkit-font-smoothing:antialiased}a{color:#4B9E65;text-decoration:none}a:focus,a:hover{color:rgb(111, 177, 132)}a:active{color:rgb(68, 142, 91)}h1,h2,h3,h4,h5,h6{color:#606266;font-weight:inherit}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0}h1{font-size:20px}h2{font-size:18px}h3{font-size:16px}h4,h5,h6,p{font-size:inherit}p{line-height:1.8}sub,sup{font-size:13px}small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}
--------------------------------------------------------------------------------
/src/core/lib/directive.js:
--------------------------------------------------------------------------------
1 | import { Consts } from '@/utils/system'
2 | var sysConsts = new Consts()
3 |
4 | export function directiveInit (Vue) {
5 | Vue.directive('mShow', {
6 | componentUpdated (el, binding) {
7 | if (binding.value === false) {
8 | return
9 | }
10 | el.style.display = sysConsts.onMobile ? '' : 'none'
11 | window.addEventListener('resize', () => {
12 | el.style.display = sysConsts.onMobile ? '' : 'none'
13 | })
14 | }
15 | })
16 |
17 | Vue.directive('mHide', {
18 | componentUpdated (el, binding) {
19 | if (binding.value === false) {
20 | return
21 | }
22 | el.style.display = !sysConsts.onMobile ? '' : 'none'
23 | window.addEventListener('resize', () => {
24 | el.style.display = !sysConsts.onMobile ? '' : 'none'
25 | })
26 | }
27 | })
28 | }
29 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/row.css:
--------------------------------------------------------------------------------
1 | .el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table;content:""}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}
--------------------------------------------------------------------------------
/src/api/osharp/Module.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/module'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/Read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Readfunctions (option) {
15 | return request({
16 | url: `${path}/readfunctions`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
23 | export function ReadUserModules (option) {
24 | return request({
25 | url: `${path}/ReadUserModules`,
26 | method: 'GET',
27 | noSuffix: true,
28 | params: option
29 | })
30 | }
31 |
32 | export function ReadRoleModules (option) {
33 | return request({
34 | url: `${path}/ReadRoleModules`,
35 | method: 'GET',
36 | noSuffix: true,
37 | params: option
38 | })
39 | }
40 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/spinner.css:
--------------------------------------------------------------------------------
1 | .el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/display.css:
--------------------------------------------------------------------------------
1 | @media only screen and (max-width:767px){.hidden-xs-only{display:none!important}}@media only screen and (min-width:768px){.hidden-sm-and-up{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.hidden-sm-only{display:none!important}}@media only screen and (max-width:991px){.hidden-sm-and-down{display:none!important}}@media only screen and (min-width:992px){.hidden-md-and-up{display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.hidden-md-only{display:none!important}}@media only screen and (max-width:1199px){.hidden-md-and-down{display:none!important}}@media only screen and (min-width:1200px){.hidden-lg-and-up{display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.hidden-lg-only{display:none!important}}@media only screen and (max-width:1919px){.hidden-lg-and-down{display:none!important}}@media only screen and (min-width:1920px){.hidden-xl-only{display:none!important}}
--------------------------------------------------------------------------------
/src/view/Osharp/system/utils/utils.js:
--------------------------------------------------------------------------------
1 | export function transformTozTreeFormat (sNodes) {
2 | // https://www.xuebuyuan.com/385756.html
3 | let i = 0
4 | let l = 0
5 | let key = 'Id'
6 | let parentKey = 'ParentId'
7 | let childKey = 'children'
8 | if (!key || key === '' || !sNodes) {
9 | return []
10 | }
11 |
12 | if (sNodes.constructor === Array) {
13 | let r = []
14 | let tmpMap = []
15 | for (i = 0, l = sNodes.length; i < l; i++) {
16 | tmpMap[sNodes[i][key]] = sNodes[i]
17 | }
18 | for (i = 0, l = sNodes.length; i < l; i++) {
19 | if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] !== sNodes[i][parentKey]) {
20 | if (!tmpMap[sNodes[i][parentKey]][childKey]) {
21 | tmpMap[sNodes[i][parentKey]][childKey] = []
22 | }
23 | tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i])
24 | } else {
25 | r.push(sNodes[i])
26 | }
27 | }
28 | return r
29 | } else {
30 | return [sNodes]
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/utils/utils.js:
--------------------------------------------------------------------------------
1 | export function transformTozTreeFormat (sNodes) {
2 | // https://www.xuebuyuan.com/385756.html
3 | let i = 0
4 | let l = 0
5 | let key = 'Id'
6 | let parentKey = 'ParentId'
7 | let childKey = 'children'
8 | if (!key || key === '' || !sNodes) {
9 | return []
10 | }
11 |
12 | if (sNodes.constructor === Array) {
13 | let r = []
14 | let tmpMap = []
15 | for (i = 0, l = sNodes.length; i < l; i++) {
16 | tmpMap[sNodes[i][key]] = sNodes[i]
17 | }
18 | for (i = 0, l = sNodes.length; i < l; i++) {
19 | if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] !== sNodes[i][parentKey]) {
20 | if (!tmpMap[sNodes[i][parentKey]][childKey]) {
21 | tmpMap[sNodes[i][parentKey]][childKey] = []
22 | }
23 | tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i])
24 | } else {
25 | r.push(sNodes[i])
26 | }
27 | }
28 | return r
29 | } else {
30 | return [sNodes]
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/breadcrumb.css:
--------------------------------------------------------------------------------
1 | .el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#4B9E65;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/scrollbar.css:
--------------------------------------------------------------------------------
1 | .el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}
--------------------------------------------------------------------------------
/src/api/ParaEnum.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/ParaEnum'
4 |
5 | export function ReadLawCase (option) {
6 | return request({
7 | url: `${path}/ReadLawCase`,
8 | method: 'GET',
9 | params: option
10 | })
11 | }
12 |
13 | export function ReadEducationBureauNewsType (option) {
14 | return request({
15 | url: `${path}/ReadEducationBureauNewsType`,
16 | method: 'GET',
17 | params: option
18 | })
19 | }
20 |
21 | export function ReadEducationGroupNewsType (option) {
22 | return request({
23 | url: `${path}/ReadEducationGroupNewsType`,
24 | method: 'GET',
25 | params: option
26 | })
27 | }
28 |
29 | export function ReadRelationType (option) {
30 | return request({
31 | url: `${path}/ReadRelationType`,
32 | method: 'GET',
33 | params: option
34 | })
35 | }
36 |
37 | export function ReadBaseStation (option) {
38 | return request({
39 | url: `${path}/ReadBaseStation`,
40 | method: 'GET',
41 | params: option
42 | })
43 | }
44 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/carousel-item.css:
--------------------------------------------------------------------------------
1 | .el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sjq-webpack",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "dev": "vue-cli-service serve",
8 | "build": "vue-cli-service build"
9 | },
10 | "dependencies": {
11 | "vue": "^2.5.22",
12 | "vue-router": "^3.0.1",
13 | "axios": "^0.18.0",
14 | "babel-polyfill": "^6.26.0",
15 | "babel-preset-env": "^1.7.0",
16 | "element-ui": "^2.4.6",
17 | "express": "^4.16.3",
18 | "file-saver": "^2.0.0",
19 | "font-awesome": "^4.7.0",
20 | "graphdracula": "^1.2.1",
21 | "js-cookie": "^2.2.0",
22 | "raphael": "^2.2.7",
23 | "showdown": "^1.8.6",
24 | "tinymce": "^4.8.2",
25 | "vue-baidu-map": "^0.21.11",
26 | "vue-qriously": "^1.1.1",
27 | "xlsx": "^0.14.1"
28 | },
29 | "devDependencies": {
30 | "@vue/cli-plugin-babel": "^3.4.0",
31 | "@vue/cli-service": "^3.4.0",
32 | "node-sass": "^4.9.0",
33 | "sass-loader": "^7.1.0",
34 | "vue-template-compiler": "^2.5.21"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | ### 适配最新版OSharp请前往https://github.com/zionLZH/slowf-osharp-admin。 当前版本仅限2020年2月份之前的适配
2 |
3 | ### 1.如何使用
4 | #### 1.1 安装依赖
5 | ````
6 | yarn
7 | ````
8 | yarn是一款新型的Node包管理工具,提供更完美的包管理,并且能够通过缓存包的方式解决模块包下载慢的问题。
9 | 如果你正在使用npm或者cnpm,请使用以下命令进行依赖安装
10 | ````
11 | npm install
12 | 或
13 | cnpm install(不推荐!)
14 | ````
15 | 由于cnpm多次出现在docker自动化部署中出现不知名错误,因此推荐使用yarn或者npm,对于node-sass报错的问题,请全局安装window-build-tool模块
16 |
17 | #### 1.2 配置前端代理
18 | 本项目基于Vue-cli3 + Webpack4,因此前端代理配置与Vue-cli2有所不同,在vue.config.js文件中进行配置,配置部分代码如下
19 | ````
20 | devServer: {
21 | proxy: {
22 | '/api': {
23 | target: 'https://www.osharp.org'
24 | }
25 | }
26 | }
27 | ````
28 |
29 | #### 1.3 运行调试
30 | 由于Vue-cli3是一个全新版本,因此不再使用之前的命令,虽然你依然可以使用之前的命令进行调试,但是我们依然推荐使用Vue-cli3的命令
31 | ````
32 | yarn run serve
33 | 或
34 | yarn run dev
35 | ````
36 |
37 | #### 1.4 正式构建
38 | ````
39 | yarn run build
40 | ````
41 | 构建完成之后文件将在./dist目录下面,请勿直接使用file://打开,将无法正常浏览。
42 |
43 | ### 注意事项
44 | Axios 0.18.0 报maxContentLength的漏洞问题无法解决,需要自行配合后端解决问题。最好是禁止跨域调用接口,禁止页面注入调用,大多出现在第三方脚本引起。
45 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/collapse.css:
--------------------------------------------------------------------------------
1 | .el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#4B9E65}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}
--------------------------------------------------------------------------------
/src/view/Osharp/security/column/function.js:
--------------------------------------------------------------------------------
1 | export default {
2 | Name: {
3 | title: '功能名称',
4 | width: '240px',
5 | sort: true
6 | },
7 | Area: {
8 | title: '区域',
9 | width: '120px'
10 | },
11 | Controller: {
12 | title: '控制器',
13 | width: '120px'
14 | },
15 | AccessType: {
16 | title: '功能类型',
17 | width: '120px',
18 | sort: true
19 | },
20 | CacheExpirationSeconds: {
21 | title: '缓存秒数',
22 | width: '120px',
23 | sort: true
24 | },
25 | AuditOperationEnabled: {
26 | title: '操作审计',
27 | width: '110px',
28 | sort: true
29 | },
30 | AuditEntityEnabled: {
31 | title: '数据审计',
32 | width: '110px',
33 | sort: true
34 | },
35 | IsCacheSliding: {
36 | title: '滑动过期',
37 | width: '110px',
38 | sort: true
39 | },
40 | IsLocked: {
41 | title: '已锁定',
42 | width: '110px',
43 | sort: true
44 | },
45 | IsAjax: {
46 | title: 'Ajax访问',
47 | width: '110px',
48 | sort: true
49 | },
50 | IsController: {
51 | title: '是否控制器',
52 | width: '100px',
53 | sort: true
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/core/style/style.scss:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | }
4 | .pointIt {
5 | cursor: pointer !important;
6 | }
7 | /* rewrite */
8 | .el-pagination {
9 | max-width: 100%;
10 | margin: 10px 0px;
11 | text-align: center !important;
12 | }
13 | .el-message-box {
14 | max-width: 100%;
15 | }
16 | /* mobile */
17 | @media only screen and (min-width: 100px) and (max-width: 640px) {
18 | .el-dialog {
19 | width: 100% !important;
20 | max-width: 100% !important;
21 | }
22 | .el-pagination {
23 | padding: 0px !important;
24 | .el-pagination__total {
25 | margin: 0px !important;
26 | display: block !important;
27 | }
28 | .el-pagination__sizes {
29 | display: none !important;
30 | }
31 | .el-pagination__jump {
32 | margin: 0px !important;
33 | display: block !important;
34 | }
35 | }
36 | }
37 | /* iPhone 5 */
38 | @media only screen and (min-width: 100px) and (max-width: 320px) {
39 | .el-pagination {
40 | button[type="button"] {
41 | display: block;
42 | margin: 5px auto;
43 | padding: 0px;
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 zionLZH
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/view/statusPage/404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
页面无法寻找,您可以尝试以下操作。
5 |
6 | 返回
7 | 首页
8 |
9 |
10 |
11 |
12 |
31 |
32 |
53 |
--------------------------------------------------------------------------------
/src/components/style/dialogClear.scss:
--------------------------------------------------------------------------------
1 | .gee-clear-dialog {
2 | //max-width: 100%;
3 | //min-width: 320px;
4 | //width: 320px;
5 | &>* {
6 | max-width: 100%;
7 | }
8 | .el-dialog__body {
9 | padding: 10px 20px;
10 | max-height: 65vh;
11 | overflow-x: hidden;
12 | overflow-y: scroll;
13 | .el-radio-group {
14 | width: 100%;
15 | height: auto;
16 | max-height: 245px;
17 | margin-top: 5px;
18 | padding: 10px;
19 | overflow-x: hidden;
20 | overflow-y: scroll;
21 | border: 1px solid #dcdfe6;
22 | border-radius: 4px;
23 | .el-radio {
24 | display: block;
25 | height: 26px;
26 | margin: 0px;
27 | padding: 0px;
28 | line-height: 26px;
29 | }
30 | }
31 | }
32 | //.el-button {
33 | // color: #fff !important;
34 | // background-color: #4b9e65 !important;
35 | // border-color: #4b9e65 !important;
36 | // &:active {
37 | // opacity: 0.6;
38 | // }
39 | //}
40 | }
41 | @media screen and (max-width: 640px) {
42 | .gee-clear-dialog {
43 | max-width: 100%;
44 | min-width: 320px;
45 | width: 320px;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
--------------------------------------------------------------------------------
/src/api/osharp/User.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/User'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/Read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/Update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
23 | export function Create (option) {
24 | return request({
25 | url: `${path}/Create`,
26 | method: 'POST',
27 | noSuffix: true,
28 | data: option
29 | })
30 | }
31 |
32 | export function Delete (option) {
33 | return request({
34 | url: `${path}/Delete`,
35 | method: 'POST',
36 | noSuffix: true,
37 | data: option
38 | })
39 | }
40 |
41 | export function setroles (option) {
42 | return request({
43 | url: `${path}/setroles`,
44 | method: 'POST',
45 | noSuffix: true,
46 | data: option
47 | })
48 | }
49 |
50 | export function setmodules (option) {
51 | return request({
52 | url: `${path}/setmodules`,
53 | method: 'POST',
54 | noSuffix: true,
55 | data: option
56 | })
57 | }
58 |
--------------------------------------------------------------------------------
/src/api/osharp/Pack.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/pack'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/Update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
23 | export function Create (option) {
24 | return request({
25 | url: `${path}/Create`,
26 | method: 'POST',
27 | noSuffix: true,
28 | data: option
29 | })
30 | }
31 |
32 | export function Delete (option) {
33 | return request({
34 | url: `${path}/Delete`,
35 | method: 'POST',
36 | noSuffix: true,
37 | data: option
38 | })
39 | }
40 |
41 | export function ReadUserRoles (option) {
42 | return request({
43 | url: `${path}/ReadUserRoles`,
44 | method: 'GET',
45 | noSuffix: true,
46 | params: option
47 | })
48 | }
49 |
50 | export function SetModules (option) {
51 | return request({
52 | url: `${path}/SetModules`,
53 | method: 'POST',
54 | noSuffix: true,
55 | data: option
56 | })
57 | }
58 |
--------------------------------------------------------------------------------
/src/api/osharp/Role.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/role'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/Update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
23 | export function Create (option) {
24 | return request({
25 | url: `${path}/Create`,
26 | method: 'POST',
27 | noSuffix: true,
28 | data: option
29 | })
30 | }
31 |
32 | export function Delete (option) {
33 | return request({
34 | url: `${path}/Delete`,
35 | method: 'POST',
36 | noSuffix: true,
37 | data: option
38 | })
39 | }
40 |
41 | export function ReadUserRoles (option) {
42 | return request({
43 | url: `${path}/ReadUserRoles`,
44 | method: 'GET',
45 | noSuffix: true,
46 | params: option
47 | })
48 | }
49 |
50 | export function SetModules (option) {
51 | return request({
52 | url: `${path}/SetModules`,
53 | method: 'POST',
54 | noSuffix: true,
55 | data: option
56 | })
57 | }
58 |
--------------------------------------------------------------------------------
/src/api/osharp/AuditEntity.js:
--------------------------------------------------------------------------------
1 | import { request } from '@/utils/request'
2 |
3 | let path = '/Admin/pack'
4 |
5 | export function Read (option) {
6 | return request({
7 | url: `${path}/read`,
8 | method: 'POST',
9 | noSuffix: true,
10 | data: option
11 | })
12 | }
13 |
14 | export function Update (option) {
15 | return request({
16 | url: `${path}/Update`,
17 | method: 'POST',
18 | noSuffix: true,
19 | data: option
20 | })
21 | }
22 |
23 | export function Create (option) {
24 | return request({
25 | url: `${path}/Create`,
26 | method: 'POST',
27 | noSuffix: true,
28 | data: option
29 | })
30 | }
31 |
32 | export function Delete (option) {
33 | return request({
34 | url: `${path}/Delete`,
35 | method: 'POST',
36 | noSuffix: true,
37 | data: option
38 | })
39 | }
40 |
41 | export function ReadUserRoles (option) {
42 | return request({
43 | url: `${path}/ReadUserRoles`,
44 | method: 'GET',
45 | noSuffix: true,
46 | params: option
47 | })
48 | }
49 |
50 | export function SetModules (option) {
51 | return request({
52 | url: `${path}/SetModules`,
53 | method: 'POST',
54 | noSuffix: true,
55 | data: option
56 | })
57 | }
58 |
--------------------------------------------------------------------------------
/src/view/Osharp/system/style/treeBox.scss:
--------------------------------------------------------------------------------
1 | .com-tree-box {
2 | height: 100%;
3 | * {
4 | user-select: none;
5 | }
6 | .scroll {
7 | overflow: scroll;
8 | }
9 | .left {
10 | &:after {
11 | content: '';
12 | display: block;
13 | clear: both;
14 | }
15 | float: left;
16 | width: 65%;
17 | height: 100%;
18 | .tree {
19 | width: 100%;
20 | min-width: 1024px;
21 | .tree-node {
22 | width: 100%;
23 | * {
24 | white-space: nowrap;
25 | overflow: hidden;
26 | text-overflow: ellipsis;
27 | }
28 | }
29 | }
30 | }
31 | .bar {
32 | float: left;
33 | width: 8px;
34 | height: 100%;
35 | background-color: #eee;
36 | cursor: col-resize;
37 | }
38 | .right {
39 | &:after {
40 | content: '';
41 | display: block;
42 | clear: both;
43 | }
44 | float: left;
45 | width: calc(35% - 8px);
46 | height: 100%;
47 | .tree {
48 | width: 100%;
49 | min-width: 800px;
50 | .tree-node {
51 | width: 100%;
52 | * {
53 | white-space: nowrap;
54 | overflow: hidden;
55 | text-overflow: ellipsis;
56 | }
57 | }
58 | }
59 | }
60 | .fnBar {
61 | width: 100%;
62 | padding: 10px;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/style/treeBox.scss:
--------------------------------------------------------------------------------
1 | .com-tree-box {
2 | height: 100%;
3 | * {
4 | user-select: none;
5 | }
6 | .scroll {
7 | overflow: scroll;
8 | }
9 | .left {
10 | &:after {
11 | content: '';
12 | display: block;
13 | clear: both;
14 | }
15 | float: left;
16 | width: 65%;
17 | height: 100%;
18 | .tree {
19 | width: 100%;
20 | min-width: 1024px;
21 | .tree-node {
22 | width: 100%;
23 | * {
24 | white-space: nowrap;
25 | overflow: hidden;
26 | text-overflow: ellipsis;
27 | }
28 | }
29 | }
30 | }
31 | .bar {
32 | float: left;
33 | width: 8px;
34 | height: 100%;
35 | background-color: #eee;
36 | cursor: col-resize;
37 | }
38 | .right {
39 | &:after {
40 | content: '';
41 | display: block;
42 | clear: both;
43 | }
44 | float: left;
45 | width: calc(35% - 8px);
46 | height: 100%;
47 | .tree {
48 | width: 100%;
49 | min-width: 800px;
50 | .tree-node {
51 | width: 100%;
52 | * {
53 | white-space: nowrap;
54 | overflow: hidden;
55 | text-overflow: ellipsis;
56 | }
57 | }
58 | }
59 | }
60 | .fnBar {
61 | width: 100%;
62 | padding: 10px;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/view/statusPage/401.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 您的用户
6 |
7 | 访问此页面,您可以尝试以下操作。
8 |
9 |
10 | 返回
11 | 首页
12 |
13 |
14 |
15 |
16 |
45 |
46 |
62 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/alert.css:
--------------------------------------------------------------------------------
1 | .el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/components/table/fnGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
25 |
26 |
71 |
--------------------------------------------------------------------------------
/src/components/other/magnetic.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
44 |
45 |
63 |
--------------------------------------------------------------------------------
/src/config.js:
--------------------------------------------------------------------------------
1 | import * as system from '@/utils/system'
2 |
3 | export default {
4 | baseUrl: '/api',
5 | enableIdSuffix: false,
6 | whileList: ['login', 'reg'],
7 | routerHook: (to, from, next) => {
8 | // next()
9 | var enableIdSuffix = false
10 | if (!to.name) {
11 | next()
12 | return
13 | }
14 | let toRouter = {
15 | name: to.name,
16 | query: JSON.parse(JSON.stringify(to.query))
17 | }
18 | if (from.query && from.query._suffixId) {
19 | toRouter.query._suffixId = from.query._suffixId
20 | window._suffixId = window._suffixId || toRouter.query._suffixId
21 | }
22 | if (to.meta.title) {
23 | document.title = to.meta.title + ' - OSharp'
24 | }
25 | if (!system.dataGet('auth', true)) {
26 | if (to.name === 'login') {
27 | next()
28 | } else {
29 | let loginRouter = {
30 | replace: true,
31 | name: 'login',
32 | query: {}
33 | }
34 | if (toRouter.query._suffixId) {
35 | loginRouter.query._suffixId = toRouter.query._suffixId
36 | }
37 | next(loginRouter)
38 | }
39 | return false
40 | } else {
41 | if (to.query._suffixId) {
42 | next()
43 | return false
44 | }
45 | if (enableIdSuffix || from.query._suffixId) {
46 | next(toRouter)
47 | } else {
48 | next()
49 | }
50 | }
51 | },
52 | reqHook: false
53 | }
54 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/column/user.js:
--------------------------------------------------------------------------------
1 | export default {
2 | UserName: {
3 | width: '100px',
4 | title: '用户名',
5 | sort: true
6 | },
7 | NickName: {
8 | width: '100px',
9 | title: '昵称',
10 | sort: true
11 | },
12 | Email: {
13 | title: '邮箱',
14 | sort: true
15 | },
16 | EmailConfirmed: {
17 | width: '95x',
18 | title: '邮箱确认',
19 | sort: true
20 | },
21 | PhoneNumber: {
22 | width: '110x',
23 | title: '手机号',
24 | sort: true
25 | },
26 | PhoneNumberConfirmed: {
27 | width: '100x',
28 | title: '手机确认',
29 | sort: true
30 | },
31 | Roles: {
32 | title: '角色',
33 | sort: true,
34 | format (item) {
35 | try {
36 | return item.Roles.join(',')
37 | } catch (e) {
38 | return ''
39 | }
40 | }
41 | },
42 | IsLocked: {
43 | width: '100x',
44 | title: '是否锁定',
45 | sort: true
46 | },
47 | LockoutEnabled: {
48 | width: '90x',
49 | title: '登陆锁',
50 | sort: true
51 | },
52 | AccessFailedCount: {
53 | width: '120x',
54 | title: '登陆错误',
55 | sort: true
56 | },
57 | LockoutEnd: {
58 | width: '90x',
59 | title: '锁时间',
60 | sort: true
61 | },
62 | CreatedTime: {
63 | title: '注册时间',
64 | width: '200px',
65 | sort: true,
66 | format (item) {
67 | try {
68 | return new Date(item.CreatedTime).Format('yyyy-MM-dd hh:mm:ss')
69 | } catch (e) {
70 | return item.CreatedTime
71 | }
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/core/lib/permission.js:
--------------------------------------------------------------------------------
1 | import config from '@/config'
2 | import * as system from '@/utils/system'
3 |
4 | export function routerHook (to, from, next) {
5 | if (to.query._suffixId || from.query._suffixId) {
6 | window._suffixId = to.query._suffixId || from.query._suffixId || false
7 | }
8 | if (typeof to === 'string') {
9 | return
10 | }
11 | if (to.matched.length === 0) {
12 | if (from.matched.length !== 0 && to.name.indexOf('/') !== -1) {
13 | next(from)
14 | return
15 | }
16 | next({
17 | name: '404',
18 | query: {
19 | _suffixId: window._suffixId
20 | },
21 | replace: false
22 | })
23 | return
24 | }
25 | if (!to.name || config.whileList.indexOf(to.name) !== -1 || config.whileList.indexOf(to.path) !== -1) {
26 | next()
27 | return
28 | }
29 | // console.log(to)
30 | if (config.routerHook) {
31 | config.routerHook(to, from, next)
32 | }
33 | if (to.path === '/') {
34 | next({ path: '/default', replace: true })
35 | } else {
36 | next()
37 | }
38 | return false
39 | // const XToken = system.getXToken()
40 | // if (XToken) {
41 | // // 已经登陆,权限判断
42 | // const userPermission = system.varGet('userPermission')
43 | // if (userPermission && userPermission.indexOf(to.name) !== -1) {
44 | // next()
45 | // } else {
46 | // next({ path: '/401', replace: true })
47 | // }
48 | // } else {
49 | // if (to.meta && to.meta.pass) {
50 | // next()
51 | // return
52 | // }
53 | // }
54 | }
55 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/popper.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/notification.css:
--------------------------------------------------------------------------------
1 | .el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/loading.css:
--------------------------------------------------------------------------------
1 | .el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#4B9E65;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#4B9E65;stroke-linecap:round}.el-loading-spinner i{color:#4B9E65}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/src/utils/request.js:
--------------------------------------------------------------------------------
1 | import Axios from 'axios'
2 | import Config from '@/config'
3 | import * as system from './system'
4 | const qs = require('qs')
5 |
6 | export function request (opt) {
7 | if (system.dataGet('auth', true)) {
8 | opt.headers = opt.headers || {}
9 | opt.headers.Authorization = 'Bearer ' + system.dataGet('auth', true)
10 | }
11 | // BaseUrl拼接
12 | opt.url = (Config.baseUrl || '') + opt.url
13 | if (opt.form) {
14 | opt.headers = opt.headers || {}
15 | opt['Content-Type'] = 'application/x-www-form-urlencoded'
16 | opt.data = qs.stringify(opt.form)
17 | }
18 | // 查询Id后缀
19 | try {
20 | let pArr = location.href.split('_suffixId=')
21 | pArr = pArr[1].split('&')
22 | window._suffixId = parseInt(pArr[0])
23 | } catch (e) {
24 |
25 | }
26 | if (window._suffixId && !opt.hb && !opt.noSuffix) {
27 | opt.url = opt.url + '/' + window._suffixId
28 | }
29 | return new Promise((resolve, reject) => {
30 | Axios(opt).then(res => {
31 | Config.reqHook && Config.reqHook(true, res)
32 | resolve(res)
33 | }).catch(e => {
34 | Config.reqHook && Config.reqHook(false, e)
35 | reject(e)
36 | })
37 | })
38 | }
39 | export default request
40 | export function requestAll (arr) {
41 | if (!arr || arr.length === 0) {
42 | console.error(new Error('requestAll: arr must be a Array'))
43 | return null
44 | }
45 | return new Promise((resolve, reject) => {
46 | Axios.all(arr).then(resArr => {
47 | Config.reqHook && Config.reqHook(true, resArr)
48 | resolve(resArr)
49 | }).catch(e => {
50 | Config.reqHook && Config.reqHook(false, e)
51 | reject(e)
52 | })
53 | })
54 | }
55 |
--------------------------------------------------------------------------------
/src/components/other/graphdracula.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
69 |
70 |
72 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/switch.css:
--------------------------------------------------------------------------------
1 | .el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer;vertical-align:middle}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;color:#303133}.el-switch__label.is-active{color:#4B9E65}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus~.el-switch__core{outline:#4B9E65 solid 1px}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#4B9E65;background-color:#4B9E65}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/utils/check.js:
--------------------------------------------------------------------------------
1 | const baseCheck = (val) => {
2 | return !!(val && val.replace(/( |\r|\n|\t)/gi, '') !== '' ? 1 : 0)
3 | }
4 | export default {
5 | noEmpty (val) {
6 | return !!(baseCheck(val) ? 1 : 0)
7 | },
8 | mail (val) {
9 | return !!(baseCheck(val) && /(^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+$)|(^$)/.test(val) ? 1 : 0)
10 | },
11 | phone (val) {
12 | return !!(baseCheck(val) && /^(1)+\d{10}$/.test(val) ? 1 : 0)
13 | },
14 | password (val) {
15 | return !!(baseCheck(val) && val.length >= 6 ? 1 : 0)
16 | },
17 | passwordMid (val) {
18 | return !!(baseCheck(val) && /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$/.test(val) ? 1 : 0)
19 | },
20 | passwordHight (val) {
21 | return !!(baseCheck(val) && /^(?=.*[a-z])(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z]{6,}$/.test(val) ? 1 : 0)
22 | },
23 | passwordMax (val) {
24 | return !!(baseCheck(val) && /^(?=.*[a-z])(?=.*\d)(?=.*[A-Z])(?=.*[_.#?])[0-9a-zA-Z_.#?]{6,}$/.test(val) ? 1 : 0)
25 | },
26 | url (val) {
27 | return !!(baseCheck(val) && /(^[http,https]+:\/\/[a-zA-Z\d]+\.[a-zA-Z]{2})/.test(val) ? 1 : 0)
28 | },
29 | idCard (val) {
30 | return !!(baseCheck(val) && (val.length === 15 || val.length === 18) && /^\d{6}(18|19|20|)\d{2}(1[0-2]|0[1-9])([0-3][0-9])\d{3}(\d{1}|X|)$/.test(val) ? 1 : 0)
31 | },
32 | filename (val) {
33 | return !!(baseCheck(val) && !/(\\|\/|:|\?|\*|<|>|\|)/.test(val) && /(^[a-zA-Z0-9]+\.[a-zA-Z0-9])/.test(val) ? 1 : 0)
34 | },
35 | sex (val) {
36 | return !!(baseCheck(val) && /^(男|女|未知)/.test(val) ? 1 : 0)
37 | },
38 | number (val) {
39 | return !!(val * 1 && (val * 1 >= 0 || val * 1 < 0) ? 1 : 0)
40 | },
41 | date (val) {
42 | return !!(baseCheck(val) && new Date(val).getTime() * 1 ? 1 : 0)
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/components/other/echarts.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
76 |
77 |
79 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/progress.css:
--------------------------------------------------------------------------------
1 | .el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#4B9E65;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.el-progress-bar__inner::after{content:"";height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/src/utils/xlsx.js:
--------------------------------------------------------------------------------
1 | import FileSaver from 'file-saver'
2 | import XLSX from 'xlsx'
3 | export function exportExcel (tableColumn, rtable, fileName) {
4 | let header = []
5 | let dts = []
6 | let table = JSON.parse(JSON.stringify(rtable))
7 | for (let key in tableColumn) {
8 | header.push(tableColumn[key].title || key)
9 | }
10 | for (let i = 0; i < table.length; i++) {
11 | let item = table[i]
12 | for (let key in item) {
13 | if (tableColumn[key]) {
14 | item[tableColumn[key].title] = item[key]
15 | }
16 | if (tableColumn[key] && tableColumn[key].format) {
17 | try {
18 | let tempDiv = document.createElement('div')
19 | tempDiv.innerHTML = tableColumn[key].format(item)
20 | tempDiv = tempDiv.outerText.replace(/( |\r)/gi, '').replace(/\n/gi, ',').replace(/,,/gi, ',')
21 | while (tempDiv.indexOf(',,') !== -1) {
22 | tempDiv = tempDiv.replace(/,,/gi, ',')
23 | }
24 | tempDiv = tempDiv.replace(/(^,|,$)/gi, '')
25 | item[tableColumn[key].title] = tempDiv
26 | tempDiv = null
27 | } catch (e) {
28 | console.error(e)
29 | // nothing
30 | }
31 | }
32 | }
33 | for (let key in item) {
34 | if (header.indexOf(key) === -1) {
35 | delete item[key]
36 | }
37 | }
38 | dts.push(item)
39 | }
40 | var wb = XLSX.utils.json_to_sheet(dts, {header: header, skipHeader: false})
41 | var wbout = XLSX.utils.book_new()
42 | XLSX.utils.book_append_sheet(wbout, wb, 'Sheet1')
43 | wbout = XLSX.write(wbout,{ bookType:'xls', bookSST:true, type:'array' })
44 | try {
45 | FileSaver.saveAs(new Blob([wbout], { type: 'application/vnd.ms-excel;charset=utf-8' }), fileName + '.xls')
46 | } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
47 | }
48 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/message.css:
--------------------------------------------------------------------------------
1 | .el-message__closeBtn:focus,.el-message__content:focus{outline-width:0}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/src/core/style/table.scss:
--------------------------------------------------------------------------------
1 | /* 表格组件处理 */
2 | table,table *{border: 0px;margin: 0px;padding: 0px;font-size: 14px !important;line-height: 1.428 !important;border-collapse: collapse;background-color: #fff;}
3 | table {border: 1px solid #000 !important;border-bottom: 0px !important;font-family: "lucida grande", "lucida sans unicode", lucida, helvetica, "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif !important;}
4 | table tr {border-bottom: 1px solid #000;}
5 | table th,table td {padding: 5px 10px !important;border-left: 1px solid #000 !important;}
6 | table th:nth-child(1),table td:nth-child(1) {border: 0px !important;}
7 | /* 不换行 */
8 | @media screen and (max-width: 640px) {
9 | table * {white-space: nowrap;}
10 | table[nowrap] * {white-space: nowrap !important;}
11 | table[wrap] * {white-space: wrap !important;}
12 | table {width: inherit;max-width: 100% !important;display: inline-block;box-sizing: border-box;overflow: hidden;overflow-x: scroll;}
13 | table::-webkit-scrollbar {background-color: #EEE;border-bottom: 1px solid #999;height: 5px;}
14 | table::-webkit-scrollbar-thumb {background-color: #24ab60;}
15 | table tbody {min-width: 100%;}
16 | }
17 | table,table tbody,table tr,table th,table td {border-color: #999 !important;color: #000 !important;}
18 | /*table tr:nth-child(2n-1) {background-color: #F9F9F9;}*/
19 | /* 自定义通配样式 */
20 | table tr>td:nth-child(1) {width: 90px;}
21 | table tr>td.clear {width: auto;}
22 | table * {font-weight: 500;}
23 | table input.block {display: block;min-width: 30px;width: 100%;height: 100%;border: 0px;outline: none;}
24 | table input[type="radio"] {margin-right: 5px;}
25 | table input[type="radio"] + input[type="radio"] {margin-left: 5px;}
26 | table input[type="checkbox"] {margin-right: 5px;}
27 | table tr td[rowspan],table tr td[colspan] {position: relative;background-color: #fff;border: 1px solid #999 !important;}
--------------------------------------------------------------------------------
/src/components/form/select.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
15 |
80 |
81 |
83 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/tree.css:
--------------------------------------------------------------------------------
1 | .el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#4B9E65}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#4B9E65;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/tag.css:
--------------------------------------------------------------------------------
1 | .el-tag{background-color:rgba(64,158,255,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#4B9E65;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px;color:#4B9E65}.el-tag .el-icon-close::before{display:block}.el-tag .el-icon-close:hover{background-color:#4B9E65;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:rgba(144,147,153,.1);border-color:rgba(144,147,153,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:rgba(245,108,108,.1);border-color:rgba(245,108,108,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}
--------------------------------------------------------------------------------
/src/utils/vextend.js:
--------------------------------------------------------------------------------
1 | function typeReformat (val) {
2 | // ~:String $: Object ^: Boolean !: int
3 | if (val === undefined || val === null) {
4 | return val
5 | }
6 | let types = ['~', '$', '^', '!']
7 | if (typeof val === 'string' && types.indexOf(val.substr(0, 1)) !== -1) {
8 | let option = val.substr(0, 1)
9 | val = val.substr(1, val.length)
10 | switch (option) {
11 | case '~':
12 | return '' + val
13 | case '$':
14 | return JSON.parse(val)
15 | case '^':
16 | return val === 'true'
17 | case '!':
18 | return parseInt(val)
19 | default:
20 | return val
21 | }
22 | } else {
23 | switch (typeof val) {
24 | case 'string':
25 | return '~' + val
26 | case 'object':
27 | return '$' + JSON.stringify(val)
28 | case 'boolean':
29 | return '^' + val.toString()
30 | case 'number':
31 | return '!' + val
32 | default:
33 | return val
34 | }
35 | }
36 | }
37 |
38 | export function routerPath (filterMap, sync) {
39 | let query = JSON.parse(JSON.stringify(this.$route.query))
40 | let params = JSON.parse(JSON.stringify(this.$route.params))
41 | for (let key in query) {
42 | let val = filterMap[key]
43 | if (val === undefined) { continue }
44 | (val.constructor === Object && val['value'] !== undefined) && (val = filterMap[key].value)
45 | if (sync) {
46 | (filterMap[key].constructor === Object && filterMap[key]['value'] !== undefined) ? (filterMap[key].value = typeReformat(query[key])) : (filterMap[key] = typeReformat(query[key]))
47 | } else {
48 | query[key] = typeReformat(val)
49 | }
50 | }
51 | for (let key in filterMap) {
52 | let val = filterMap[key]
53 | if (val === undefined) { continue }
54 | (val.constructor === Object && val['value'] !== undefined) && (val = filterMap[key].value)
55 | query[key] = typeReformat(val)
56 | }
57 | this.$router.replace({ name: this.$route.name, query, params })
58 | }
59 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/carousel.css:
--------------------------------------------------------------------------------
1 | .el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/src/components/form/form.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
16 |
17 |
18 |
87 |
88 |
93 |
--------------------------------------------------------------------------------
/src/core/Layout.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
50 |
51 |
69 |
70 |
78 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/popover.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/radio-button.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#4B9E65}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#4B9E65;border-color:#4B9E65;-webkit-box-shadow:-1px 0 0 0 #4B9E65;box-shadow:-1px 0 0 0 #4B9E65}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #4B9E65;box-shadow:0 0 2px 2px #4B9E65}
--------------------------------------------------------------------------------
/src/components/form/ctPicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
97 |
98 |
101 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/tooltip.css:
--------------------------------------------------------------------------------
1 | .el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}
--------------------------------------------------------------------------------
/src/components/form/markdown.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
82 |
83 |
101 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/dialog.css:
--------------------------------------------------------------------------------
1 | .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#4B9E65}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/src/core/style/4B9E65/select-dropdown.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#4B9E65;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}
--------------------------------------------------------------------------------
/src/components/form/item.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
15 |
99 |
100 |
110 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/form.css:
--------------------------------------------------------------------------------
1 | .el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item::after,.el-form-item__content::after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form-item__content .el-input-group,.el-form-item__label{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#f56c6c}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/skin.json:
--------------------------------------------------------------------------------
1 | {
2 | "skin-name": "gee",
3 | "preview-bg": "#ffffff",
4 | "text": "#333333",
5 | "text-inverse": "#ffffff",
6 | "text-disabled": "#aaaaaa",
7 | "has-gradients": false,
8 | "has-radius": true,
9 | "has-boxshadow": false,
10 | "has-button-borders": true,
11 | "btn-text": "#828b95",
12 | "btn-text-shadow": "#ffffff",
13 | "btn-bg": "#ffffff",
14 | "btn-bg-hlight": "#ffffff",
15 | "btn-border-top": "transparent",
16 | "btn-border-right": "transparent",
17 | "btn-border-bottom": "transparent",
18 | "btn-border-left": "transparent",
19 | "btn-split-border": "#bdbdbd",
20 | "btn-primary-text": "#ffffff",
21 | "btn-primary-text-shadow": "#333333",
22 | "btn-primary-bg": "#4b9e65",
23 | "btn-primary-bg-hlight": "#4b9e65",
24 | "btn-padding": "4px 8px",
25 | "menu-bg": "#ffffff",
26 | "menu-border": "rgba(221,221,221,1)",
27 | "menuitem-text": "#828b95",
28 | "menuitem-bg-selected": "#4b9e65",
29 | "menuitem-bg-selected-hlight": "#4b9e65",
30 | "menuitem-separator-top": "#cbcbcb",
31 | "menuitem-separator-bottom": "#ffffff",
32 | "menuitem-text-inverse": "#ffffff",
33 | "menuitem-bg-active": "#77b089",
34 | "menuitem-text-active": "#ffffff",
35 | "menuitem-preview-border-active": "#aaaaaa",
36 | "menubar-menubtn-text": "#dddddd",
37 | "checkbox-border": "#c5c5c5",
38 | "checkbox-border-focus": "#59a5e1",
39 | "panel-border": "#dddddd",
40 | "panel-bg": "#ffffff",
41 | "panel-bg-hlight": "#ffffff",
42 | "textbox-bg": "#ffffff",
43 | "textbox-border": "#c5c5c5",
44 | "textbox-border-focus": "#59a5e1",
45 | "window-bg": "#ffffff",
46 | "window-border": "#c4c4c4",
47 | "tab-bg": "#e3e3e3",
48 | "tab-bg-hover": "#fdfdfd",
49 | "tab-bg-active": "#fdfdfd",
50 | "tab-border": "#c5c5c5",
51 | "tabs-bg": "#ffffff",
52 | "notification-bg": "#f0f0f0",
53 | "notification-border": "#cccccc",
54 | "notification-text": "#333333",
55 | "notification-success-bg": "#dff0d8",
56 | "notification-success-border": "#d6e9c6",
57 | "notification-success-text": "#3c763d",
58 | "notification-info-bg": "#d9edf7",
59 | "notification-info-border": "#779ecb",
60 | "notification-info-text": "#31708f",
61 | "notification-warning-bg": "#fcf8e3",
62 | "notification-warning-border": "#faebcc",
63 | "notification-warning-text": "#8a6d3b",
64 | "notification-error-bg": "#f2dede",
65 | "notification-error-border": "#ebccd1",
66 | "notification-error-text": "#a94442",
67 | "progress-bar-bg": "#dfdfdf",
68 | "progress-bar-bg-hlight": "#cccccc",
69 | "progress-border": "#cccccc",
70 | "progress-text": "#333333",
71 | "progress-text-shadow": "#ffffff",
72 | "slider-bg": "#eeeeee",
73 | "slider-border": "#aaaaaa",
74 | "slider-handle-bg": "#dddddd",
75 | "slider-handle-border": "#bbbbbb",
76 | "colorbtn-backcolor-bg": "#bbbbbb",
77 | "grid-border": "#d6d6d6",
78 | "grid-border-active": "#a1a1a1"
79 | }
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/content.inline.min.css:
--------------------------------------------------------------------------------
1 | .mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}.mce-content-body p,.mce-content-body div,.mce-content-body h1,.mce-content-body h2,.mce-content-body h3,.mce-content-body h4,.mce-content-body h5,.mce-content-body h6{line-height:1.2em}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-content-body a[data-mce-selected],.mce-content-body code[data-mce-selected]{background:#bfe6ff}.mce-content-body hr{cursor:default}
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import "babel-polyfill"
4 | import Vue from 'vue'
5 | // element-ui
6 | import ElementUI from 'element-ui'
7 | import 'element-ui/lib/theme-chalk/index.css'
8 | import '@/core/style/4B9E65/index.css'
9 | // router
10 | import App from './App'
11 | import router from './router'
12 | // baiduMap
13 | import BaiduMap from 'vue-baidu-map'
14 | Vue.use(BaiduMap, {
15 | // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
16 | ak: 'DEoKuz2v5YYrRK2nibNRN8tv387ylFCb'
17 | })
18 |
19 | // Core
20 | import { routerHook } from '@/core/lib/permission'
21 | import { directiveInit } from '@/core/lib/directive'
22 | import '@/assets/font-class/iconfont.css'
23 | // var Dracula = require('graphdracula')
24 | // console.log(Dracula)
25 |
26 | // Extras
27 | import qriously from 'vue-qriously'
28 | import * as system from '@/utils/system'
29 | import * as vExtend from './utils/vextend'
30 |
31 | Vue.prototype.routerPath = vExtend.routerPath
32 |
33 | directiveInit(Vue)
34 | router.beforeEach(routerHook)
35 |
36 | // 特殊需求
37 | window.vModuleArr = system.dataGet('modules', true)
38 | Vue.prototype.$moduleCheck = function (moduleName) {
39 | if (!window.vModuleArr || window.vModuleArr.constructor !== Array) {
40 | window.vModuleArr = system.dataGet('modules', true)
41 | }
42 | try {
43 | for (let i = 0; i < moduleName.length; i++) {
44 | if (window.vModuleArr.indexOf(moduleName[i]) === -1) {
45 | return false
46 | }
47 | }
48 | } catch (e) {
49 | return false
50 | }
51 | return true
52 | }
53 | // 对Date的扩展,将 Date 转化为指定格式的String
54 | // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
55 | // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
56 | // 例子:
57 | // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
58 | // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
59 | Date.prototype.Format = function(fmt)
60 | {
61 | var o = {
62 | "M+" : this.getMonth()+1, //月份
63 | "d+" : this.getDate(), //日
64 | "h+" : this.getHours(), //小时
65 | "m+" : this.getMinutes(), //分
66 | "s+" : this.getSeconds(), //秒
67 | "q+" : Math.floor((this.getMonth()+3)/3), //季度
68 | "S" : this.getMilliseconds() //毫秒
69 | };
70 | if(/(y+)/.test(fmt))
71 | fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
72 | for(var k in o)
73 | if(new RegExp("("+ k +")").test(fmt))
74 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
75 | return fmt;
76 | }
77 |
78 | Vue.config.productionTip = false
79 |
80 | Vue.use(ElementUI, { size: 'small' })
81 | Vue.use(qriously)
82 |
83 | /* eslint-disable no-new */
84 | new Vue({
85 | el: '#app',
86 | router,
87 | components: { App },
88 | template: '',
89 | render: h => h(App)
90 | })
91 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/radio.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio,.el-radio__input{white-space:nowrap;line-height:1;outline:0}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-radio{color:#606266;font-weight:500;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#4B9E65}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#4B9E65;background:#4B9E65}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#4B9E65}.el-radio__input.is-focus .el-radio__inner{border-color:#4B9E65}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#4B9E65}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #4B9E65;box-shadow:0 0 2px 2px #4B9E65}.el-radio__label{font-size:14px;padding-left:10px}
--------------------------------------------------------------------------------
/src/components/form/tinymce/gee/content.min.css:
--------------------------------------------------------------------------------
1 | body{background-color:#FFFFFF;color:#000000;bak-font-family:Verdana,Arial,Helvetica,sans-serif;bak-font-size:14px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{bak-font-family:Verdana,Arial,Helvetica,sans-serif;bak-font-size:14px}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;bak-font-family:Arial;bak-font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}.mce-content-body p,.mce-content-body div,.mce-content-body h1,.mce-content-body h2,.mce-content-body h3,.mce-content-body h4,.mce-content-body h5,.mce-content-body h6{line-height:1.2em}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-content-body a[data-mce-selected],.mce-content-body code[data-mce-selected]{background:#bfe6ff}.mce-content-body hr{cursor:default}
2 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/popover/functionInfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 保 存
36 | 取 消
37 |
38 |
39 |
40 |
41 |
42 |
111 |
112 |
115 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/icon.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:"\e61a"}.el-icon-error:before{content:"\e62c"}.el-icon-success:before{content:"\e62d"}.el-icon-warning:before{content:"\e62e"}.el-icon-question:before{content:"\e634"}.el-icon-back:before{content:"\e606"}.el-icon-arrow-left:before{content:"\e600"}.el-icon-arrow-down:before{content:"\e603"}.el-icon-arrow-right:before{content:"\e604"}.el-icon-arrow-up:before{content:"\e605"}.el-icon-caret-left:before{content:"\e60a"}.el-icon-caret-bottom:before{content:"\e60b"}.el-icon-caret-top:before{content:"\e60c"}.el-icon-caret-right:before{content:"\e60e"}.el-icon-d-arrow-left:before{content:"\e610"}.el-icon-d-arrow-right:before{content:"\e613"}.el-icon-minus:before{content:"\e621"}.el-icon-plus:before{content:"\e62b"}.el-icon-remove:before{content:"\e635"}.el-icon-circle-plus:before{content:"\e601"}.el-icon-remove-outline:before{content:"\e63c"}.el-icon-circle-plus-outline:before{content:"\e602"}.el-icon-close:before{content:"\e60f"}.el-icon-check:before{content:"\e611"}.el-icon-circle-close:before{content:"\e607"}.el-icon-circle-check:before{content:"\e639"}.el-icon-circle-close-outline:before{content:"\e609"}.el-icon-circle-check-outline:before{content:"\e63e"}.el-icon-zoom-out:before{content:"\e645"}.el-icon-zoom-in:before{content:"\e641"}.el-icon-d-caret:before{content:"\e615"}.el-icon-sort:before{content:"\e640"}.el-icon-sort-down:before{content:"\e630"}.el-icon-sort-up:before{content:"\e631"}.el-icon-tickets:before{content:"\e63f"}.el-icon-document:before{content:"\e614"}.el-icon-goods:before{content:"\e618"}.el-icon-sold-out:before{content:"\e63b"}.el-icon-news:before{content:"\e625"}.el-icon-message:before{content:"\e61b"}.el-icon-date:before{content:"\e608"}.el-icon-printer:before{content:"\e62f"}.el-icon-time:before{content:"\e642"}.el-icon-bell:before{content:"\e622"}.el-icon-mobile-phone:before{content:"\e624"}.el-icon-service:before{content:"\e63a"}.el-icon-view:before{content:"\e643"}.el-icon-menu:before{content:"\e620"}.el-icon-more:before{content:"\e646"}.el-icon-more-outline:before{content:"\e626"}.el-icon-star-on:before{content:"\e637"}.el-icon-star-off:before{content:"\e63d"}.el-icon-location:before{content:"\e61d"}.el-icon-location-outline:before{content:"\e61f"}.el-icon-phone:before{content:"\e627"}.el-icon-phone-outline:before{content:"\e628"}.el-icon-picture:before{content:"\e629"}.el-icon-picture-outline:before{content:"\e62a"}.el-icon-delete:before{content:"\e612"}.el-icon-search:before{content:"\e619"}.el-icon-edit:before{content:"\e61c"}.el-icon-edit-outline:before{content:"\e616"}.el-icon-rank:before{content:"\e632"}.el-icon-refresh:before{content:"\e633"}.el-icon-share:before{content:"\e636"}.el-icon-setting:before{content:"\e638"}.el-icon-upload:before{content:"\e60d"}.el-icon-upload2:before{content:"\e644"}.el-icon-download:before{content:"\e617"}.el-icon-loading:before{content:"\e61e"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/view/Osharp/identity/popover/roleConfig.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
22 | 保 存
23 |
24 |
25 |
26 |
27 |
28 |
123 |
124 |
127 |
128 |
135 |
--------------------------------------------------------------------------------
/src/view/Osharp/system/pack.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 刷新
5 |
6 |
7 |
8 |
17 |
18 |
19 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
129 |
130 |
132 |
--------------------------------------------------------------------------------
/src/components/popover/select.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 | {{title}}
9 |
10 | 确定
11 |
12 |
13 |
14 | 暂无数据
15 |
16 | {{showKey ? item[showKey] : item}}
17 |
18 |
19 |
20 |
21 |
22 |
100 |
101 |
140 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable*/
2 | import Vue from 'vue'
3 | import Router from 'vue-router'
4 | import Layout from '@/core/Layout'
5 | import Blank from '@/core/blank'
6 | import { coreRoutes } from '@/router/core'
7 |
8 | Vue.use(Router)
9 | /**
10 | * Full Page Routes
11 | * Login/404/401..
12 | * example:
13 | * {
14 | * path: '/login',
15 | * name: 'login'
16 | * component: () => import('Vue File Path')
17 | * }
18 | */
19 | const fullPageRoutes = [
20 | {
21 | path: '/login',
22 | name: 'login',
23 | meta: { title: '登陆', pass: true },
24 | component: () => import('@/view/login/login.vue')
25 | },
26 | {
27 | path: '/reg',
28 | name: 'reg',
29 | meta: { title: '注册', pass: true },
30 | component: () => import('@/view/login/reg.vue')
31 | }
32 | ]
33 | /**
34 | * 1
35 | */
36 | const currentRoutes = [
37 | {
38 | path: '/',
39 | component: Layout,
40 | meta: {title: '首页'},
41 | children: [
42 | { path: 'default', name: 'default', component: () => import('@/view/default/index'), meta: {title: '首页', hidden: false} },
43 | ]
44 | },
45 | // {
46 | // path: '/test',
47 | // name: 'test',
48 | // meta: { title: 'Test' },
49 | // component: Layout,
50 | // children: [
51 | // { path: 'upload', name: 'testUpload', component: () => import('@/view/test/page/upload'), meta: {title: '演示上传'} },
52 | // { path: 'list', name: 'testList', component: () => import('@/view/test/page/list'), meta: {title: '演示列表 - 页面', hidden: false} },
53 | // { path: 'poplist', name: 'testpopList', component: () => import('@/view/test/pop/list'), meta: {title: '演示列表 - 弹窗', hidden: false} },
54 | // { path: 'detail', name: 'testDetail', component: () => import('@/view/test/page/detail'), meta: {title: '演示详情', hidden: true} }
55 | // ]
56 | // },
57 | {
58 | path: '/identity',
59 | name: 'identity',
60 | meta: { title: '身份认证' },
61 | component: Layout,
62 | children: [
63 | { path: 'user', name: 'identityUser', component: () => import('@/view/Osharp/identity/user'), meta: {title: '用户信息管理', hidden: false} },
64 | { path: 'role', name: 'identityRole', component: () => import('@/view/Osharp/identity/role'), meta: {title: '角色信息管理', hidden: false} },
65 | { path: 'user-role', name: 'identityUserRole', component: () => import('@/view/Osharp/identity/user-role'), meta: {title: '用户角色管理', hidden: false} },
66 | ]
67 | },
68 | {
69 | path: '/security',
70 | name: 'security',
71 | meta: { title: '权限安全' },
72 | component: Layout,
73 | children: [
74 | { path: 'module', name: 'securityModule', component: () => import('@/view/Osharp/security/module'), meta: {title: '模块信息管理', hidden: false} },
75 | { path: 'function', name: 'securityFunction', component: () => import('@/view/Osharp/security/function'), meta: {title: '功能信息管理', hidden: false} },
76 | { path: 'role-function', name: 'securityRoleFunction', component: () => import('@/view/Osharp/security/role-function'), meta: {title: '角色功能管理', hidden: false} },
77 | { path: 'user-function', name: 'securityUserFunction', component: () => import('@/view/Osharp/security/user-function'), meta: {title: '用户功能管理', hidden: false} },
78 | { path: 'entityinfo', name: 'securityentityinfo', component: () => import('@/view/Osharp/security/entityinfo'), meta: {title: '实体信息管理', hidden: false} },
79 | { path: 'pack', name: 'systemPack', component: () => import('@/view/Osharp/system/pack'), meta: {title: '模块包', hidden: false} },
80 | { path: 'audtEntity', name: 'systemAuditEntity', component: () => import('@/view/Osharp/system/auditEntity'), meta: {title: '数据审计', hidden: false} }
81 | ]
82 | }
83 | ]
84 |
85 | export default new Router({
86 | routes: fullPageRoutes.concat(coreRoutes).concat(currentRoutes)
87 | })
88 | export { currentRoutes }
89 |
--------------------------------------------------------------------------------
/src/components/form/checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
116 |
117 |
142 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/popover/roleInfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 保 存
32 | 取 消
33 |
34 |
35 |
36 |
37 |
38 |
128 |
129 |
132 |
--------------------------------------------------------------------------------
/src/components/form/tinymce.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
98 |
99 |
132 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/function.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 刷新
5 |
6 |
7 |
8 |
17 |
18 | 功能配置
19 |
20 |
21 |
22 |
32 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
44 |
141 |
142 |
144 |
--------------------------------------------------------------------------------
/src/utils/system.js:
--------------------------------------------------------------------------------
1 | import Cookie from 'js-cookie'
2 | import { currentRoutes } from '@/router/index'
3 |
4 | const varScope = '_gee_var_'
5 | const dataScope = '_gee_data_'
6 | var globalVar = window[varScope] || {}
7 | // var USER_PERMISSION = 'userPermission'
8 |
9 | class Consts {
10 | // onMobile = innerWidth <= 640
11 | constructor (arg) {
12 | this.onMobile = innerWidth <= 640
13 | let self = this
14 | window.addEventListener('resize', () => {
15 | self.onMobile = innerWidth <= 640
16 | })
17 | }
18 | }
19 |
20 | export { Consts }
21 |
22 | export function cookieSet (key, value, opt) {
23 | Cookie.set(key, value, opt)
24 | }
25 | export function cookieGet (key) {
26 | return Cookie.get(key)
27 | }
28 | export function setXToken (token) {
29 | Cookie.set('XToken', token)
30 | }
31 | export function getXToken (token) {
32 | return Cookie.get('XToken') || false
33 | }
34 | export function removeXToken () {
35 | Cookie.remove('XToken')
36 | }
37 | export function varSet (key, val) {
38 | globalVar[key] = val
39 | }
40 | export function varGet (key) {
41 | return globalVar[key]
42 | }
43 | export function varModel () {
44 | return globalVar
45 | }
46 | export function dataSet (key, val, disableXToken) {
47 | var dataKey = dataScope + (disableXToken ? '' : Cookie.get('XToken')) + key
48 | if (typeof val === 'object') {
49 | val = encodeURI(JSON.stringify(val))
50 | }
51 | localStorage.setItem(dataKey, val)
52 | if (key === 'auth') {
53 | localStorage.setItem('auth-time', new Date().getTime()+45*60*1000)
54 | }
55 | }
56 | export function dataGet (key, disableXToken) {
57 | var dataKey = dataScope + (disableXToken ? '' : Cookie.get('XToken')) + key
58 | var dataVal = localStorage.getItem(dataKey)
59 | try {
60 | dataVal = JSON.parse(decodeURI(dataVal))
61 | } catch (e) {
62 | // nothing
63 | }
64 | if (key === 'auth') {
65 | let dt = parseInt(localStorage.getItem('auth-time'))
66 | if (new Date().getTime() > dt && localStorage.getItem('auth')) {
67 | alert('登陆过期,重新登陆')
68 | localStorage.clear()
69 | location.reload()
70 | } else {
71 | localStorage.setItem('auth-time', new Date().getTime()+45*60*1000)
72 | }
73 | }
74 | return dataVal
75 | }
76 | export function dataRemove (key, disableXToken) {
77 | localStorage.removeItem(dataScope + (disableXToken ? '' : Cookie.get('XToken')) + key)
78 | }
79 | export function getRoutesTable () {
80 | var navRoutes = []
81 | var pageRoutes = []
82 | for (let i = 0; i < currentRoutes.length; i++) {
83 | if (currentRoutes[i].name && currentRoutes[i].meta && currentRoutes[i].meta.title) {
84 | navRoutes.push({
85 | name: currentRoutes[i].name,
86 | title: currentRoutes[i].meta.title,
87 | hidden: currentRoutes[i].meta.hidden,
88 | path: currentRoutes[i].path
89 | })
90 | if (!currentRoutes[i].children) {
91 | pageRoutes.push({
92 | name: currentRoutes[i].name,
93 | title: currentRoutes[i].meta.title,
94 | path: currentRoutes[i].path
95 | })
96 | } else {
97 | let routesItem = currentRoutes[i]
98 | for (let j = 0; j < routesItem.children.length; j++) {
99 | if (routesItem.children[j].name && routesItem.children[j].meta && routesItem.children[j].meta.title) {
100 | pageRoutes.push({
101 | name: routesItem.children[j].name,
102 | title: routesItem.children[j].meta.title,
103 | hidden: routesItem.children[j].meta.hidden,
104 | supName: routesItem.name,
105 | path: routesItem.path + '/' + routesItem.children[j].path
106 | })
107 | }
108 | }
109 | }
110 | } else if (currentRoutes[i].children.length === 1) {
111 | navRoutes.push({
112 | name: currentRoutes[i].children[0].name,
113 | title: currentRoutes[i].children[0].meta.title,
114 | hidden: currentRoutes[i].children[0].meta.hidden,
115 | path: currentRoutes[i].children[0].path
116 | })
117 | pageRoutes.push({
118 | name: currentRoutes[i].children[0].name,
119 | title: currentRoutes[i].children[0].meta.title,
120 | hidden: currentRoutes[i].children[0].meta.hidden,
121 | path: currentRoutes[i].children[0].path
122 | })
123 | }
124 | }
125 | return {
126 | nav: navRoutes,
127 | page: pageRoutes
128 | }
129 | }
130 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/entityinfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 刷新
5 |
6 |
7 |
8 |
17 |
18 |
19 |
20 |
21 |
22 |
32 |
33 |
34 |
35 |
36 |
37 |
148 |
149 |
151 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/popover/userInfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | 保 存
38 | 取 消
39 |
40 |
41 |
42 |
43 |
44 |
140 |
141 |
144 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/user-role.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 刷新
5 |
6 |
7 |
8 |
16 |
17 | {{item.data.IsLocked?'解锁':'锁定'}}
18 |
19 |
20 |
21 |
31 |
32 |
33 |
34 |
35 |
36 |
154 |
155 |
157 |
--------------------------------------------------------------------------------
/src/core/style/4B9E65/step.css:
--------------------------------------------------------------------------------
1 | .el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#4B9E65;border-color:#4B9E65}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#4B9E65}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#4B9E65}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}
--------------------------------------------------------------------------------
/src/view/Osharp/security/module.vue:
--------------------------------------------------------------------------------
1 |
2 |
43 |
44 |
45 |
138 |
139 |
142 |
--------------------------------------------------------------------------------
/src/view/Osharp/security/role-function.vue:
--------------------------------------------------------------------------------
1 |
2 |
43 |
44 |
45 |
143 |
144 |
147 |
--------------------------------------------------------------------------------
/src/view/Osharp/identity/popover/userConfig.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
18 |
19 | 保 存
20 |
21 |
22 |
23 |
24 |
30 |
31 |
32 |
33 | 保 存
34 |
35 |
36 |
37 |
38 |
39 |
40 |
173 |
174 |
177 |
178 |
185 |
--------------------------------------------------------------------------------