Repository: lmxdawn/vue-admin-html-java Branch: master Commit: a6f411d113ee Files: 89 Total size: 487.8 KB Directory structure: gitextract_k7zx32wr/ ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── LICENSE ├── README.md ├── babel.config.js ├── jest.config.js ├── package.json ├── public/ │ ├── index-dev.html │ ├── index.html │ └── tinymce4.7.5/ │ ├── langs/ │ │ └── zh_CN.js │ └── plugins/ │ ├── codesample/ │ │ └── css/ │ │ └── prism.css │ └── visualblocks/ │ └── css/ │ └── visualblocks.css ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── ad/ │ │ │ ├── ad.js │ │ │ └── adSite.js │ │ ├── auth/ │ │ │ ├── authAdmin.js │ │ │ ├── authPermissionRule.js │ │ │ ├── authRole.js │ │ │ └── login.js │ │ └── file/ │ │ ├── fileResource.js │ │ ├── fileResourceTag.js │ │ └── upload.js │ ├── assets/ │ │ └── icons/ │ │ ├── demo.css │ │ ├── demo_fontclass.html │ │ ├── demo_symbol.html │ │ ├── demo_unicode.html │ │ ├── iconfont.css │ │ └── iconfont.js │ ├── components/ │ │ ├── File/ │ │ │ ├── Upload.vue │ │ │ └── Upload1.vue │ │ ├── HelloWorld.vue │ │ ├── Tinymce/ │ │ │ ├── index.vue │ │ │ ├── plugins.js │ │ │ └── toolbar.js │ │ └── common/ │ │ ├── FileResource.vue │ │ └── IconSvg.vue │ ├── config/ │ │ └── app.js │ ├── constants/ │ │ └── .gitignore │ ├── element.js │ ├── filtres/ │ │ └── index.js │ ├── main.js │ ├── mock/ │ │ ├── ad.js │ │ ├── adSite.js │ │ ├── authAdmin.js │ │ ├── authPermissionRule.js │ │ ├── authRole.js │ │ ├── fileResource.js │ │ ├── fileResourceTag.js │ │ ├── index.js │ │ ├── login.js │ │ └── upload.js │ ├── role.js │ ├── router/ │ │ └── index.js │ ├── store/ │ │ ├── actions.js │ │ ├── getters.js │ │ ├── index.js │ │ ├── modules/ │ │ │ ├── admin.js │ │ │ └── app.js │ │ └── mutation-types.js │ ├── styles/ │ │ ├── base.scss │ │ └── mixin.scss │ ├── utils/ │ │ ├── auth.js │ │ ├── axios.js │ │ ├── haiZiToPinYin.js │ │ └── store.js │ └── views/ │ ├── adManage/ │ │ ├── ad.vue │ │ └── adSite.vue │ ├── components/ │ │ ├── tinymce-demo.vue │ │ ├── upload-demo.vue │ │ └── uploadList.vue │ ├── error/ │ │ ├── err401.vue │ │ ├── err404.vue │ │ └── err500.vue │ ├── home/ │ │ ├── SidebarItem.vue │ │ ├── TabsView.vue │ │ ├── index-3.0.1.vue │ │ ├── index.vue │ │ └── main.vue │ ├── login/ │ │ └── index.vue │ ├── profile/ │ │ └── index.vue │ └── userManage/ │ └── admin/ │ ├── authAdmin.vue │ ├── authPermissionRule.vue │ ├── authRole.vue │ └── router.vue ├── tests/ │ └── unit/ │ ├── .eslintrc.js │ └── HelloWorld.spec.js └── vue.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 indent_style = space indent_size = 4 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true ================================================ FILE: .eslintrc.js ================================================ module.exports = { root: true, env: { node: true }, 'extends': [ 'plugin:vue/essential', '@vue/prettier' ], plugins: [ 'vue' ], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' }, parserOptions: { parser: 'babel-eslint' } } ================================================ FILE: .gitignore ================================================ .DS_Store node_modules /dist /stage # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw* ================================================ FILE: .postcssrc.js ================================================ module.exports = { plugins: { autoprefixer: {} } } ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 lmxdawn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

vue vue element-ui

# 前言 **项目JAVA前端地址:** https://github.com/lmxdawn/vue-admin-html-java **项目JAVA后端地址:** https://github.com/lmxdawn/vue-admin-java # 欢迎 star # 整体效果 ![donate](https://lmxdawn.github.io/images/show-how1.jpg) # 目前 v3.0.0 版本 点击前往 v1.0.0 版本 ## 更新日志 - [x] 更新vue-cli为3.0版本 这里有篇文章 - [x] 增加广告管理 - [x] 优化路由控制 - [x] 优化一些配置文件 - [x] 登录用户信息存储改为 cookie # 一键操作包 点击下载 1. 集成环境搭建: windows 上面建议用 phpstudy ,其它环境自行百度 2. 把两个文件放到网站根目录 3. 把MySQL的root密码改为 root, 再新建数据库 vue-admin ,再把vue-admin.sql 文件导入到MySQL 4. 打开浏览器 输入 http://localhost/vue-admin-html/dist/index.html # v3.0.0 踩过的坑 1. 这次更新后 vuex 开启严格模式后,出现浅拷贝的问题,就是变量引用的问题 这里有篇文章 2. 还有就是路由导入某个文件时要在文件头部引入具体的某个文件,不用 resolve => require(['xx.vue'], resolve) 或者 () => import('xx.vue') 这种方式 # vue-admin-html > Vue-cli3.0 + Element UI + ThinkPHP5.1 + RBAC权限 + 响应式的后台管理系统 ## 权限演示 ![donate](https://lmxdawn.github.io/images/rule.gif) ## 路由规则图示 > 路径: vue-admin-html/src/router/index.js ![donate](https://lmxdawn.github.io/images/router.png) ## env 配置说明 > 路径: vue-admin-html/.env.development ![donate](https://lmxdawn.github.io/images/env.png) ## 手机版演示 ![donate](https://lmxdawn.github.io/images/phone.gif) ## 上传插件演示 ![donate](https://lmxdawn.github.io/images/upload.gif) ## 添加 阿里巴巴矢量图演示 > 路径: vue-admin-html/src/assets/icons 注意 vue-admin-html/src/assets/icons/iconfont.js 头部需要加 ```/* eslint-disable */``` 去掉 eslint 检查 1.第一步 选好一个图标加入到购物车 -> 把购物车的添加都项目 -> 下载项目到本地 ![donate](https://lmxdawn.github.io/images/icon1.gif) 2.第二步 解压下载好的文件 -> 复制到 src/assets/icons , 覆盖掉 -> 增加 iconfont.js 的 eslint 注释 ![donate](https://lmxdawn.github.io/images/icon2.gif) ## 功能 ## - [x] 管理员登录 - [x] 登录 - [x] 修改密码 - [x] 角色管理 - [x] 权限管理 - [x] 401/404错误页面 - [x] 动态面包屑 - [x] 动态侧边栏 - [x] 广告管理 ## 安装步骤 ## git clone https://github.com/lmxdawn/vue-admin-html.git // 把模板下载到本地 cd vue-admin-html // 进入模板目录 npm install // 安装项目依赖,等待安装完成之后 构建时三种环境可选,解决不同环境来回切换配置的痛楚(serve:本地测试,stage:预上线,build:生产环境) ## 本地开发 ## // 开启服务器,浏览器访问 http://localhost:8080 npm run serve ## 构建预上线 ## // 执行构建命令,生成的stage文件夹放在服务器下即可访问 npm run stage ## 构建生产 ## // 执行构建命令,生成的dist文件夹放在服务器下即可访问 npm run build # 项目目录介绍 ```markdown ├── LICENSE // 版权许可文件 ├── README.md // 文档 ├── babel.config.js // babel 插件配置 ├── jest.config.js // jest 测试配置 ├── package-lock.json // 锁定当前安装的扩展包的版本 ├── package.json // 声明引用了哪些扩展包 ├── public // 公共文件 │   ├── favicon.ico // 图标 │   └── index.html // 入口文件 ├── src // src 主要代码文件 │   ├── App.vue // Vue 入口文件 │   ├── api // API 接口逻辑文件 │   │   ├── ad // 广告相关 │   │   │   ├── ad.js // 广告 │   │   │   └── adSite.js // 广告位 │   │   ├── auth // 权限相关 │   │   │   ├── authAdmin.js // 权限用户 │   │   │   ├── authPermissionRule.js // 权限 │   │   │   └── authRole.js // 角色 │   │   ├── fileResource.js // 文件资源 │   │   ├── fileResourceTag.js // 文件资源的标签 │   │   ├── login.js // 登录相关 │   │   └── upload.js // 旧版本上传插件的接口 │   ├── assets // 资源文件 │   │   ├── icons // 图标(使用的是 阿里巴巴矢量图标库) │   │   │   ├── demo.css // demo 样式 │   │   │   ├── demo_fontclass.html // demo HTML │   │   │   ├── demo_symbol.html // demo │   │   │   ├── demo_unicode.html // demo │   │   │   ├── iconfont.css // css │   │   │   ├── iconfont.eot // │   │   │   ├── iconfont.js // js 文件 │   │   │   ├── iconfont.svg // svg 文件 │   │   │   ├── iconfont.ttf // 字体文件 │   │   │   └── iconfont.woff // 字体文件 │   │   ├── image // 资源图片文件 │   │   │   └── file_type_icon.png // 文件图标文件 │   │   └── logo.png // logo │   ├── components // 组件目录 │   │   ├── HelloWorld.vue // 测试文件 │   │   └── common // 公共组件 │   │   ├── FileResource.vue // 上传资源的组件 │   │   ├── IconSvg.vue // 图标组件 │   │   └── UploadFile.vue // 旧版上传文件的组件 │   ├── config // 自定义的配置 │   │   └── app.js // 项目的配置 │   ├── constants // 项目的常量目录 │   ├── element.js // 引入 element-ui 的js文件 (这个也可直接写在 main.js 里面) │   ├── filtres // 过滤器目录 │   │   └── index.js // 全局过滤器 │   ├── main.js // 主入口 │   ├── mock // 模拟数据 │   │   ├── authAdmin.js // 权限用户的数据 │   │   ├── authPermissionRule.js // 权限的数据 │   │   ├── authRole.js // 角色数据 │   │   ├── fileResource.js // 上传资源的数据 │   │   ├── fileResourceTag.js // 上传资源的分组数据 │   │   ├── index.js // 引入 mockjs 的文件 │   │   ├── login.js // 登录的数据 │   │   └── upload.js // 旧版上传文件的数据 │   ├── role.js // 动态上传 router 路由的主要文件, 并且初始化权限, 检测权限 │   ├── router // 路由相关目录 │   │   └── index.js // 路由主文件 │   ├── store // vuex 状态 目录 │   │   ├── actions.js // Action │   │   ├── getters.js // Getter │   │   ├── index.js // 入口 │   │   ├── modules // 模块 │   │   │   ├── admin.js // Admin 用户相关 │   │   │   └── app.js // APP 项目相关 │   │   └── mutation-types.js // Mutation │   ├── styles // 样式目录 │   │   ├── base.scss // 基础样式 │   │   └── mixin.scss // 基础方法的样式 │   ├── utils // 工具目录 │   │   ├── auth.js // 权限工具 │   │   ├── axios.js // request 请求工具 │   │   ├── haiZiToPinYin.js // 汉字转拼音的工具 │   │   └── store.js // 存放信息的工具 │   └── views // 页面目录 │   ├── adManage // 广告管理 │   │   ├── ad.vue // 广告 │   │   └── adSite.vue // 广告位 │   ├── components // 应用演示 │   │   └── uploadList.vue // 上传插件 │   ├── error // 错误页面目录 │   │   ├── err401.vue // 401 │   │   ├── err404.vue // 404页面 │   │   └── err500.vue // 500页面 │   ├── home // 首页目录 │   │   ├── SidebarItem.vue // 左边栏 │   │   ├── TabsView.vue // 顶部tabs │   │   ├── index.vue // 入口 │   │   └── main.vue // 前言 │   ├── login // 登录相关 │   │   └── index.vue // 登录首页 │   ├── profile // 测试 │   │   └── index.vue │   └── userManage // 用户相关 │   └── admin // 管理员相关 │   ├── authAdmin.vue // 权限用户 │   ├── authPermissionRule.vue // 权限 │   ├── authRole.vue // 角色 │   └── router.vue // 路由文件 ├── tests // 测试 │   └── unit │   └── HelloWorld.spec.js └── vue.config.js // 构建项目的配置文件 ``` # Online Demo (建议使用最新版Chrome浏览器) [在线 Demo](https://lmxdawn.github.io/vue-admin) # Donate 鼓励鼓励鼓励,重要的事情说三遍 ![donate](https://lmxdawn.github.io/images/pay.png) # License [MIT](https://github.com/lmxdawn/vue-admin-html/blob/master/LICENSE) Copyright (c) 2018 lmxdawn ================================================ FILE: babel.config.js ================================================ module.exports = { presets: ["@vue/app"] }; ================================================ FILE: jest.config.js ================================================ module.exports = { moduleFileExtensions: ["js", "jsx", "json", "vue"], transform: { "^.+\\.vue$": "vue-jest", ".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "jest-transform-stub", "^.+\\.jsx?$": "babel-jest" }, moduleNameMapper: { "^@/(.*)$": "/src/$1" }, snapshotSerializers: ["jest-serializer-vue"], testMatch: [ "/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))" ] }; ================================================ FILE: package.json ================================================ { "name": "my-project", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "stage": "vue-cli-service build --mode stage", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "test:unit": "vue-cli-service test:unit" }, "dependencies": { "axios": "^0.18.0", "babel-polyfill": "^6.26.0", "element-ui": "^2.8.2", "js-cookie": "^2.2.0", "mockjs": "^1.0.1-beta3", "nprogress": "^0.2.0", "vue": "^2.5.16", "vue-router": "^3.0.1", "vuedraggable": "^2.17.0", "vuex": "^3.0.1" }, "devDependencies": { "@vue/cli-plugin-babel": "^3.0.0-beta.15", "@vue/cli-plugin-eslint": "^3.0.0-beta.15", "@vue/cli-plugin-unit-jest": "^3.0.0-beta.15", "@vue/cli-service": "^3.0.0-beta.15", "@vue/eslint-config-prettier": "^3.0.0-rc.3", "@vue/test-utils": "^1.0.0-beta.16", "babel-core": "7.0.0-bridge.0", "babel-jest": "^23.0.1", "node-sass": "^4.9.0", "sass-loader": "^7.0.1", "vue-template-compiler": "^2.5.16" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ] } ================================================ FILE: public/index-dev.html ================================================ VUE后台管理系统
================================================ FILE: public/index.html ================================================ VUE后台管理系统
================================================ FILE: public/tinymce4.7.5/langs/zh_CN.js ================================================ tinymce.addI18n('zh_CN',{ "Cut": "\u526a\u5207", "Heading 5": "\u6807\u98985", "Header 2": "\u6807\u98982", "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002", "Heading 4": "\u6807\u98984", "Div": "Div\u533a\u5757", "Heading 2": "\u6807\u98982", "Paste": "\u7c98\u8d34", "Close": "\u5173\u95ed", "Font Family": "\u5b57\u4f53", "Pre": "\u9884\u683c\u5f0f\u6587\u672c", "Align right": "\u53f3\u5bf9\u9f50", "New document": "\u65b0\u6587\u6863", "Blockquote": "\u5f15\u7528", "Numbered list": "\u7f16\u53f7\u5217\u8868", "Heading 1": "\u6807\u98981", "Headings": "\u6807\u9898", "Increase indent": "\u589e\u52a0\u7f29\u8fdb", "Formats": "\u683c\u5f0f", "Headers": "\u6807\u9898", "Select all": "\u5168\u9009", "Header 3": "\u6807\u98983", "Blocks": "\u533a\u5757", "Undo": "\u64a4\u6d88", "Strikethrough": "\u5220\u9664\u7ebf", "Bullet list": "\u9879\u76ee\u7b26\u53f7", "Header 1": "\u6807\u98981", "Superscript": "\u4e0a\u6807", "Clear formatting": "\u6e05\u9664\u683c\u5f0f", "Font Sizes": "\u5b57\u53f7", "Subscript": "\u4e0b\u6807", "Header 6": "\u6807\u98986", "Redo": "\u91cd\u590d", "Paragraph": "\u6bb5\u843d", "Ok": "\u786e\u5b9a", "Bold": "\u7c97\u4f53", "Code": "\u4ee3\u7801", "Italic": "\u659c\u4f53", "Align center": "\u5c45\u4e2d", "Header 5": "\u6807\u98985", "Heading 6": "\u6807\u98986", "Heading 3": "\u6807\u98983", "Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", "Header 4": "\u6807\u98984", "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", "Underline": "\u4e0b\u5212\u7ebf", "Cancel": "\u53d6\u6d88", "Justify": "\u4e24\u7aef\u5bf9\u9f50", "Inline": "\u6587\u672c", "Copy": "\u590d\u5236", "Align left": "\u5de6\u5bf9\u9f50", "Visual aids": "\u7f51\u683c\u7ebf", "Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", "Square": "\u65b9\u5757", "Default": "\u9ed8\u8ba4", "Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", "Circle": "\u7a7a\u5fc3\u5706", "Disc": "\u5b9e\u5fc3\u5706", "Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", "Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", "Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", "Name": "\u540d\u79f0", "Anchor": "\u951a\u70b9", "Id": "\u6807\u8bc6\u7b26", "You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", "Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", "Special character": "\u7279\u6b8a\u7b26\u53f7", "Source code": "\u6e90\u4ee3\u7801", "Language": "\u8bed\u8a00", "Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", "B": "B", "R": "R", "G": "G", "Color": "\u989c\u8272", "Right to left": "\u4ece\u53f3\u5230\u5de6", "Left to right": "\u4ece\u5de6\u5230\u53f3", "Emoticons": "\u8868\u60c5", "Robots": "\u673a\u5668\u4eba", "Document properties": "\u6587\u6863\u5c5e\u6027", "Title": "\u6807\u9898", "Keywords": "\u5173\u952e\u8bcd", "Encoding": "\u7f16\u7801", "Description": "\u63cf\u8ff0", "Author": "\u4f5c\u8005", "Fullscreen": "\u5168\u5c4f", "Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", "Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", "Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", "General": "\u666e\u901a", "Advanced": "\u9ad8\u7ea7", "Source": "\u5730\u5740", "Border": "\u8fb9\u6846", "Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", "Vertical space": "\u5782\u76f4\u8fb9\u8ddd", "Image description": "\u56fe\u7247\u63cf\u8ff0", "Style": "\u6837\u5f0f", "Dimensions": "\u5927\u5c0f", "Insert image": "\u63d2\u5165\u56fe\u7247", "Image": "\u56fe\u7247", "Zoom in": "\u653e\u5927", "Contrast": "\u5bf9\u6bd4\u5ea6", "Back": "\u540e\u9000", "Gamma": "\u4f3d\u9a6c\u503c", "Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", "Resize": "\u8c03\u6574\u5927\u5c0f", "Sharpen": "\u9510\u5316", "Zoom out": "\u7f29\u5c0f", "Image options": "\u56fe\u7247\u9009\u9879", "Apply": "\u5e94\u7528", "Brightness": "\u4eae\u5ea6", "Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", "Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", "Edit image": "\u7f16\u8f91\u56fe\u7247", "Color levels": "\u989c\u8272\u5c42\u6b21", "Crop": "\u88c1\u526a", "Orientation": "\u65b9\u5411", "Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", "Invert": "\u53cd\u8f6c", "Date\/time": "\u65e5\u671f\/\u65f6\u95f4", "Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", "Remove link": "\u5220\u9664\u94fe\u63a5", "Url": "\u5730\u5740", "Text to display": "\u663e\u793a\u6587\u5b57", "Anchors": "\u951a\u70b9", "Insert link": "\u63d2\u5165\u94fe\u63a5", "Link": "\u94fe\u63a5", "New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", "None": "\u65e0", "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", "Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", "Target": "\u6253\u5f00\u65b9\u5f0f", "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", "Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", "Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", "Media": "\u5a92\u4f53", "Alternative source": "\u955c\u50cf", "Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", "Insert video": "\u63d2\u5165\u89c6\u9891", "Poster": "\u5c01\u9762", "Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", "Embed": "\u5185\u5d4c", "Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", "Page break": "\u5206\u9875\u7b26", "Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", "Preview": "\u9884\u89c8", "Print": "\u6253\u5370", "Save": "\u4fdd\u5b58", "Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", "Replace": "\u66ff\u6362", "Next": "\u4e0b\u4e00\u4e2a", "Whole words": "\u5168\u5b57\u5339\u914d", "Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", "Replace with": "\u66ff\u6362\u4e3a", "Find": "\u67e5\u627e", "Replace all": "\u5168\u90e8\u66ff\u6362", "Match case": "\u533a\u5206\u5927\u5c0f\u5199", "Prev": "\u4e0a\u4e00\u4e2a", "Spellcheck": "\u62fc\u5199\u68c0\u67e5", "Finish": "\u5b8c\u6210", "Ignore all": "\u5168\u90e8\u5ffd\u7565", "Ignore": "\u5ffd\u7565", "Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", "Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", "Rows": "\u884c", "Height": "\u9ad8", "Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", "Alignment": "\u5bf9\u9f50\u65b9\u5f0f", "Border color": "\u8fb9\u6846\u989c\u8272", "Column group": "\u5217\u7ec4", "Row": "\u884c", "Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", "Split cell": "\u62c6\u5206\u5355\u5143\u683c", "Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", "Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", "Row type": "\u884c\u7c7b\u578b", "Insert table": "\u63d2\u5165\u8868\u683c", "Body": "\u8868\u4f53", "Caption": "\u6807\u9898", "Footer": "\u8868\u5c3e", "Delete row": "\u5220\u9664\u884c", "Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", "Scope": "\u8303\u56f4", "Delete table": "\u5220\u9664\u8868\u683c", "H Align": "\u6c34\u5e73\u5bf9\u9f50", "Top": "\u9876\u90e8\u5bf9\u9f50", "Header cell": "\u8868\u5934\u5355\u5143\u683c", "Column": "\u5217", "Row group": "\u884c\u7ec4", "Cell": "\u5355\u5143\u683c", "Middle": "\u5782\u76f4\u5c45\u4e2d", "Cell type": "\u5355\u5143\u683c\u7c7b\u578b", "Copy row": "\u590d\u5236\u884c", "Row properties": "\u884c\u5c5e\u6027", "Table properties": "\u8868\u683c\u5c5e\u6027", "Bottom": "\u5e95\u90e8\u5bf9\u9f50", "V Align": "\u5782\u76f4\u5bf9\u9f50", "Header": "\u8868\u5934", "Right": "\u53f3\u5bf9\u9f50", "Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", "Cols": "\u5217", "Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", "Width": "\u5bbd", "Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", "Left": "\u5de6\u5bf9\u9f50", "Cut row": "\u526a\u5207\u884c", "Delete column": "\u5220\u9664\u5217", "Center": "\u5c45\u4e2d", "Merge cells": "\u5408\u5e76\u5355\u5143\u683c", "Insert template": "\u63d2\u5165\u6a21\u677f", "Templates": "\u6a21\u677f", "Background color": "\u80cc\u666f\u8272", "Custom...": "\u81ea\u5b9a\u4e49...", "Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", "No color": "\u65e0", "Text color": "\u6587\u5b57\u989c\u8272", "Table of Contents": "\u5185\u5bb9\u5217\u8868", "Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", "Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", "Words: {0}": "\u5b57\u6570\uff1a{0}", "Insert": "\u63d2\u5165", "File": "\u6587\u4ef6", "Edit": "\u7f16\u8f91", "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", "Tools": "\u5de5\u5177", "View": "\u89c6\u56fe", "Table": "\u8868\u683c", "Format": "\u683c\u5f0f" }); ================================================ FILE: public/tinymce4.7.5/plugins/codesample/css/prism.css ================================================ /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ /** * prism.js default theme for JavaScript, CSS and HTML * Based on dabblet (http://dabblet.com) * @author Lea Verou */ code[class*="language-"], pre[class*="language-"] { color: black; text-shadow: 0 1px white; font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { text-shadow: none; background: #b3d4fc; } pre[class*="language-"]::selection, pre[class*="language-"] ::selection, code[class*="language-"]::selection, code[class*="language-"] ::selection { text-shadow: none; background: #b3d4fc; } @media print { code[class*="language-"], pre[class*="language-"] { text-shadow: none; } } /* Code blocks */ pre[class*="language-"] { padding: 1em; margin: .5em 0; overflow: auto; } :not(pre) > code[class*="language-"], pre[class*="language-"] { background: #f5f2f0; } /* Inline code */ :not(pre) > code[class*="language-"] { padding: .1em; border-radius: .3em; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: slategray; } .token.punctuation { color: #999; } .namespace { opacity: .7; } .token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: #905; } .token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: #690; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { color: #a67f59; background: hsla(0, 0%, 100%, .5); } .token.atrule, .token.attr-value, .token.keyword { color: #07a; } .token.function { color: #DD4A68; } .token.regex, .token.important, .token.variable { color: #e90; } .token.important, .token.bold { font-weight: bold; } .token.italic { font-style: italic; } .token.entity { cursor: help; } ================================================ FILE: public/tinymce4.7.5/plugins/visualblocks/css/visualblocks.css ================================================ .mce-visualblocks p { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); background-repeat: no-repeat; } .mce-visualblocks h1 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); background-repeat: no-repeat; } .mce-visualblocks h2 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); background-repeat: no-repeat; } .mce-visualblocks h3 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); background-repeat: no-repeat; } .mce-visualblocks h4 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); background-repeat: no-repeat; } .mce-visualblocks h5 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); background-repeat: no-repeat; } .mce-visualblocks h6 { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); background-repeat: no-repeat; } .mce-visualblocks div:not([data-mce-bogus]) { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); background-repeat: no-repeat; } .mce-visualblocks section { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); background-repeat: no-repeat; } .mce-visualblocks article { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); background-repeat: no-repeat; } .mce-visualblocks blockquote { padding-top: 10px; border: 1px dashed #BBB; background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); background-repeat: no-repeat; } .mce-visualblocks address { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); background-repeat: no-repeat; } .mce-visualblocks pre { padding-top: 10px; border: 1px dashed #BBB; margin-left: 3px; background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); background-repeat: no-repeat; } .mce-visualblocks figure { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); background-repeat: no-repeat; } .mce-visualblocks hgroup { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); background-repeat: no-repeat; } .mce-visualblocks aside { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); background-repeat: no-repeat; } .mce-visualblocks figcaption { border: 1px dashed #BBB; } .mce-visualblocks ul { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); background-repeat: no-repeat; } .mce-visualblocks ol { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); background-repeat: no-repeat; } .mce-visualblocks dl { padding-top: 10px; border: 1px dashed #BBB; margin: 0 0 1em 3px; background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); background-repeat: no-repeat; } ================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/api/ad/ad.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 谁最懂我相关 // 列表 export function adList(query) { return axios({ url: "/admin/ad/ad/index", method: "get", params: query }); } // 保存 export function adSave(data, formName, method = "post") { var url = formName === "add" ? "/admin/ad/ad/save" : "/admin/ad/ad/edit"; return axios({ url: url, method: method, data: data }); } // 删除 export function adDelete(data) { return axios({ url: "/admin/ad/ad/delete", method: "post", data: data }); } ================================================ FILE: src/api/ad/adSite.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 谁最懂我相关 // 列表 export function adSiteList(query) { return axios({ url: "/admin/ad/site/index", method: "get", params: query }); } // 广告列表 export function adSiteAdList(data) { return axios({ url: "/admin/ad/site/adList", method: "post", data: data }); } // 保存 export function adSiteSave(data, formName, method = "post") { var url = formName === "add" ? "/admin/ad/site/save" : "/admin/ad/site/edit"; return axios({ url: url, method: method, data: data }); } // 删除 export function adSiteDelete(data) { return axios({ url: "/admin/ad/site/delete", method: "post", data: data }); } ================================================ FILE: src/api/auth/authAdmin.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 获取列表 export function authAdminList(query) { return axios({ url: "/admin/auth/admin/index", method: "get", params: query }); } // 获取角色列表 export function authAdminRoleList(query) { return axios({ url: "/admin/auth/admin/roleList", method: "get", params: query }); } // 保存 export function authAdminSave(data, formName, method = "post") { let url = formName === "add" ? "/admin/auth/admin/save" : "/admin/auth/admin/edit"; return axios({ url: url, method: method, data: data }); } // 删除管理员 export function authAdminDelete(data) { return axios({ url: "/admin/auth/admin/delete", method: "post", data: data }); } ================================================ FILE: src/api/auth/authPermissionRule.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 权限管理 // 获取列表 export function authPermissionRuleList(query) { return axios({ url: "/admin/auth/permission_rule/index", method: "get", params: query }); } // 保存 export function authPermissionRuleSave(data, formName, method = "post") { let url = formName !== "edit" ? "/admin/auth/permission_rule/save" : "/admin/auth/permission_rule/edit"; return axios({ url: url, method: method, data: data }); } // 删除 export function authPermissionRuleDelete(data) { return axios({ url: "/admin/auth/permission_rule/delete", method: "post", data: data }); } ================================================ FILE: src/api/auth/authRole.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 获取列表 export function authRoleList(query) { return axios({ url: "/admin/auth/role/index", method: "get", params: query }); } // 编辑 export function authRoleAuthList(query) { return axios({ url: "/admin/auth/role/authList", method: "get", params: query }); } // 添加 export function authRoleAuth(data) { return axios({ url: "/admin/auth/role/auth", method: "post", data: data }); } // 保存 export function authRoleSave(data, formName, method = "post") { let url = formName === "add" ? "/admin/auth/role/save" : "/admin/auth/role/edit"; return axios({ url: url, method: method, data: data }); } // 删除 export function authRoleDelete(data) { return axios({ url: "/admin/auth/role/delete", method: "post", data: data }); } ================================================ FILE: src/api/auth/login.js ================================================ /** * Created by lk on 17/6/4. */ import axios from "../../utils/axios"; // 获取信息 export function userInfo(id, token) { return axios({ url: "/admin/auth/login/userInfo", method: "get", params: { id, token } }); } export function loginName(userName, pwd) { return axios({ url: "/admin/auth/login/index", method: "post", data: { userName, pwd } }); } export function logout(uid, token) { return axios({ url: "/admin/auth/login/out", method: "post", data: { uid, token } }); } export function password(data) { return axios({ url: "/admin/auth/login/password", method: "post", data: data }); } ================================================ FILE: src/api/file/fileResource.js ================================================ /** * 资源管理相关 */ import axios from "../../utils/axios"; // 列表 export function fileResourceList(query) { return axios({ url: "/admin/file/resource/index", method: "get", params: query }); } // 添加 export function fileResourceAdd(data) { return axios({ url: "/admin/file/resource/add", method: "POST", data: data }); } ================================================ FILE: src/api/file/fileResourceTag.js ================================================ /** * 资源分组相关 */ import axios from "../../utils/axios"; // 列表 export function fileResourceTagList(query) { return axios({ url: "/admin/file/resource_tag/index", method: "get", params: query }); } // 创建分组 export function fileResourceTagAdd(data) { return axios({ url: "/admin/file/resource_tag/add", method: "post", data: data }); } ================================================ FILE: src/api/file/upload.js ================================================ /** * 上传相关 */ import axios from "../../utils/axios"; // 获取七牛上传 upToken export function qiuNiuUpToken(query) { return axios({ url: "/admin/file/upload/qiuNiuUpToken", method: "get", params: query }); } // 上传文件 export function createFile(url, formdata) { return axios({ url: url, method: "post", data: formdata }); } ================================================ FILE: src/assets/icons/demo.css ================================================ *{margin: 0;padding: 0;list-style: none;} /* KISSY CSS Reset 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。 2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。 3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。 特色:1. 适应中文;2. 基于最新主流浏览器。 维护:玉伯, 正淳 */ /** 清除内外边距 **/ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ pre, /* text formatting elements 文本格式元素 */ form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ th, td /* table elements 表格元素 */ { margin: 0; padding: 0; } /** 设置默认字体 **/ body, button, input, select, textarea /* for ie */ { font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; } h1, h2, h3, h4, h5, h6 { font-size: 100%; } address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */ code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */ small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ /** 重置列表元素 **/ ul, ol { list-style: none; } /** 重置文本格式元素 **/ a { text-decoration: none; } a:hover { text-decoration: underline; } /** 重置表单元素 **/ legend { color: #000; } /* for ie6 */ fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */ button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */ /* 注:optgroup 无法扶正 */ /** 重置表格元素 **/ table { border-collapse: collapse; border-spacing: 0; } /* 清除浮动 */ .ks-clear:after, .clear:after { content: '\20'; display: block; height: 0; clear: both; } .ks-clear, .clear { *zoom: 1; } .main { padding: 30px 100px; width: 960px; margin: 0 auto; } .main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;} .helps{margin-top:40px;} .helps pre{ padding:20px; margin:10px 0; border:solid 1px #e7e1cd; background-color: #fffdef; overflow: auto; } .icon_lists{ width: 100% !important; } .icon_lists li{ float:left; width: 100px; height:180px; text-align: center; list-style: none !important; } .icon_lists .icon{ font-size: 42px; line-height: 100px; margin: 10px 0; color:#333; -webkit-transition: font-size 0.25s ease-out 0s; -moz-transition: font-size 0.25s ease-out 0s; transition: font-size 0.25s ease-out 0s; } .icon_lists .icon:hover{ font-size: 100px; } .markdown { color: #666; font-size: 14px; line-height: 1.8; } .highlight { line-height: 1.5; } .markdown img { vertical-align: middle; max-width: 100%; } .markdown h1 { color: #404040; font-weight: 500; line-height: 40px; margin-bottom: 24px; } .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 { color: #404040; margin: 1.6em 0 0.6em 0; font-weight: 500; clear: both; } .markdown h1 { font-size: 28px; } .markdown h2 { font-size: 22px; } .markdown h3 { font-size: 16px; } .markdown h4 { font-size: 14px; } .markdown h5 { font-size: 12px; } .markdown h6 { font-size: 12px; } .markdown hr { height: 1px; border: 0; background: #e9e9e9; margin: 16px 0; clear: both; } .markdown p, .markdown pre { margin: 1em 0; } .markdown > p, .markdown > blockquote, .markdown > .highlight, .markdown > ol, .markdown > ul { width: 80%; } .markdown ul > li { list-style: circle; } .markdown > ul li, .markdown blockquote ul > li { margin-left: 20px; padding-left: 4px; } .markdown > ul li p, .markdown > ol li p { margin: 0.6em 0; } .markdown ol > li { list-style: decimal; } .markdown > ol li, .markdown blockquote ol > li { margin-left: 20px; padding-left: 4px; } .markdown code { margin: 0 3px; padding: 0 5px; background: #eee; border-radius: 3px; } .markdown pre { border-radius: 6px; background: #f7f7f7; padding: 20px; } .markdown pre code { border: none; background: #f7f7f7; margin: 0; } .markdown strong, .markdown b { font-weight: 600; } .markdown > table { border-collapse: collapse; border-spacing: 0px; empty-cells: show; border: 1px solid #e9e9e9; width: 95%; margin-bottom: 24px; } .markdown > table th { white-space: nowrap; color: #333; font-weight: 600; } .markdown > table th, .markdown > table td { border: 1px solid #e9e9e9; padding: 8px 16px; text-align: left; } .markdown > table th { background: #F7F7F7; } .markdown blockquote { font-size: 90%; color: #999; border-left: 4px solid #e9e9e9; padding-left: 0.8em; margin: 1em 0; font-style: italic; } .markdown blockquote p { margin: 0; } .markdown .anchor { opacity: 0; transition: opacity 0.3s ease; margin-left: 8px; } .markdown .waiting { color: #ccc; } .markdown h1:hover .anchor, .markdown h2:hover .anchor, .markdown h3:hover .anchor, .markdown h4:hover .anchor, .markdown h5:hover .anchor, .markdown h6:hover .anchor { opacity: 1; display: inline-block; } .markdown > br, .markdown > p > br { clear: both; } .hljs { display: block; background: white; padding: 0.5em; color: #333333; overflow-x: auto; } .hljs-comment, .hljs-meta { color: #969896; } .hljs-string, .hljs-variable, .hljs-template-variable, .hljs-strong, .hljs-emphasis, .hljs-quote { color: #df5000; } .hljs-keyword, .hljs-selector-tag, .hljs-type { color: #a71d5d; } .hljs-literal, .hljs-symbol, .hljs-bullet, .hljs-attribute { color: #0086b3; } .hljs-section, .hljs-name { color: #63a35c; } .hljs-tag { color: #333333; } .hljs-title, .hljs-attr, .hljs-selector-id, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo { color: #795da3; } .hljs-addition { color: #55a532; background-color: #eaffea; } .hljs-deletion { color: #bd2c00; background-color: #ffecec; } .hljs-link { text-decoration: underline; } pre{ background: #fff; } ================================================ FILE: src/assets/icons/demo_fontclass.html ================================================ IconFont

IconFont 图标

  • 通用
    .icon-tongyong
  • wxb账户
    .icon-wxbzhanghu
  • 公用-圈
    .icon-gongyongquan1
  • user
    .icon-user
  • 设置
    .icon-shezhi1
  • 用户管理
    .icon-user-guanli
  • pwd
    .icon-pwd
  • eye
    .icon-eye
  • 广告
    .icon-guanggao
  • 管理员
    .icon-guanliyuan
  • 权限-
    .icon-cloud-permissions
  • 首页
    .icon-shouye
  • 世界杯
    .icon-shijiebei
  • 角色
    .icon-jiaose
  • 报表
    .icon-baobiao
  • 管理员
    .icon-guanliyuan1
  • 题库
    .icon-tiku
  • 小程序
    .icon-xiaochengxu

font-class引用


font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。

与unicode使用方式相比,具有如下特点:

  • 兼容性良好,支持ie8+,及所有现代浏览器。
  • 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。
  • 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。

使用步骤如下:

第一步:引入项目下面生成的fontclass代码:

<link rel="stylesheet" type="text/css" href="./iconfont.css">

第二步:挑选相应图标并获取类名,应用于页面:

<i class="iconfont icon-xxx"></i>

"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

================================================ FILE: src/assets/icons/demo_symbol.html ================================================ IconFont

IconFont 图标

  • 通用
    #icon-tongyong
  • wxb账户
    #icon-wxbzhanghu
  • 公用-圈
    #icon-gongyongquan1
  • user
    #icon-user
  • 设置
    #icon-shezhi1
  • 用户管理
    #icon-user-guanli
  • pwd
    #icon-pwd
  • eye
    #icon-eye
  • 广告
    #icon-guanggao
  • 管理员
    #icon-guanliyuan
  • 权限-
    #icon-cloud-permissions
  • 首页
    #icon-shouye
  • 世界杯
    #icon-shijiebei
  • 角色
    #icon-jiaose
  • 报表
    #icon-baobiao
  • 管理员
    #icon-guanliyuan1
  • 题库
    #icon-tiku
  • 小程序
    #icon-xiaochengxu

symbol引用


这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:

  • 支持多色图标了,不再受单色限制。
  • 通过一些技巧,支持像字体那样,通过font-size,color来调整样式。
  • 兼容性较差,支持 ie9+,及现代浏览器。
  • 浏览器渲染svg的性能一般,还不如png。

使用步骤如下:

第一步:引入项目下面生成的symbol代码:

<script src="./iconfont.js"></script>

第二步:加入通用css代码(引入一次就行):

<style type="text/css">
.icon {
   width: 1em; height: 1em;
   vertical-align: -0.15em;
   fill: currentColor;
   overflow: hidden;
}
</style>

第三步:挑选相应图标并获取类名,应用于页面:

<svg class="icon" aria-hidden="true">
  <use xlink:href="#icon-xxx"></use>
</svg>
        
================================================ FILE: src/assets/icons/demo_unicode.html ================================================ IconFont

IconFont 图标

  • 通用
    &#xe617;
  • wxb账户
    &#xe61f;
  • 公用-圈
    &#xe7eb;
  • user
    &#xe699;
  • 设置
    &#xe6d1;
  • 用户管理
    &#xe6df;
  • pwd
    &#xe819;
  • eye
    &#xe63d;
  • 广告
    &#xe679;
  • 管理员
    &#xe618;
  • 权限-
    &#xe668;
  • 首页
    &#xe602;
  • 世界杯
    &#xe60d;
  • 角色
    &#xe67e;
  • 报表
    &#xe6fc;
  • 管理员
    &#xe65d;
  • 题库
    &#xe62f;
  • 小程序
    &#xe61e;

unicode引用


unicode是字体在网页端最原始的应用方式,特点是:

  • 兼容性最好,支持ie6+,及所有现代浏览器。
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。

注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式

unicode使用步骤如下:

第一步:拷贝项目下面生成的font-face

@font-face {
  font-family: 'iconfont';
  src: url('iconfont.eot');
  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
  url('iconfont.woff') format('woff'),
  url('iconfont.ttf') format('truetype'),
  url('iconfont.svg#iconfont') format('svg');
}

第二步:定义使用iconfont的样式

.iconfont{
  font-family:"iconfont" !important;
  font-size:16px;font-style:normal;
  -webkit-font-smoothing: antialiased;
  -webkit-text-stroke-width: 0.2px;
  -moz-osx-font-smoothing: grayscale;
}

第三步:挑选相应图标并获取字体编码,应用于页面

<i class="iconfont">&#x33;</i>

"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

================================================ FILE: src/assets/icons/iconfont.css ================================================ @font-face {font-family: "iconfont"; src: url('iconfont.eot?t=1531114397320'); /* IE9*/ src: url('iconfont.eot?t=1531114397320#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), url('iconfont.ttf?t=1531114397320') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ url('iconfont.svg?t=1531114397320#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { font-family:"iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-tongyong:before { content: "\e617"; } .icon-wxbzhanghu:before { content: "\e61f"; } .icon-gongyongquan1:before { content: "\e7eb"; } .icon-user:before { content: "\e699"; } .icon-shezhi1:before { content: "\e6d1"; } .icon-user-guanli:before { content: "\e6df"; } .icon-pwd:before { content: "\e819"; } .icon-eye:before { content: "\e63d"; } .icon-guanggao:before { content: "\e679"; } .icon-guanliyuan:before { content: "\e618"; } .icon-cloud-permissions:before { content: "\e668"; } .icon-shouye:before { content: "\e602"; } .icon-shijiebei:before { content: "\e60d"; } .icon-jiaose:before { content: "\e67e"; } .icon-baobiao:before { content: "\e6fc"; } .icon-guanliyuan1:before { content: "\e65d"; } .icon-tiku:before { content: "\e62f"; } .icon-xiaochengxu:before { content: "\e61e"; } ================================================ FILE: src/assets/icons/iconfont.js ================================================ /* eslint-disable */ (function(window){var svgSprite='';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window) ================================================ FILE: src/components/File/Upload.vue ================================================ ================================================ FILE: src/components/File/Upload1.vue ================================================ ================================================ FILE: src/components/HelloWorld.vue ================================================ ================================================ FILE: src/components/Tinymce/index.vue ================================================