@ -1,197 +0,0 @@ |
|||||||
# vue-manage-system |
|
||||||
|
|
||||||
<a href="https://github.com/vuejs/vue"> |
|
||||||
<img src="https://img.shields.io/badge/vue-2.6.10-brightgreen.svg" alt="vue"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/ElemeFE/element"> |
|
||||||
<img src="https://img.shields.io/badge/element--ui-2.8.2-brightgreen.svg" alt="element-ui"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/lin-xin/vue-manage-system/blob/master/LICENSE"> |
|
||||||
<img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/lin-xin/vue-manage-system/releases"> |
|
||||||
<img src="https://img.shields.io/github/release/lin-xin/vue-manage-system.svg" alt="GitHub release"> |
|
||||||
</a> |
|
||||||
<a href="https://lin-xin.gitee.io/example/work/#/donate"> |
|
||||||
<img src="https://img.shields.io/badge/%24-donate-ff69b4.svg" alt="donate"> |
|
||||||
</a> |
|
||||||
|
|
||||||
基于 Vue + Element UI 的后台管理系统解决方案。[线上地址](https://lin-xin.gitee.io/example/work/) |
|
||||||
|
|
||||||
> React + Ant Design 的版本正在开发中,仓库地址:[react-manage-system](https://github.com/lin-xin/react-manage-system) |
|
||||||
|
|
||||||
[English document](https://github.com/lin-xin/manage-system/blob/master/README_EN.md) |
|
||||||
|
|
||||||
## 项目截图 |
|
||||||
|
|
||||||
### 登录 |
|
||||||
|
|
||||||
![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms3.png) |
|
||||||
|
|
||||||
### 默认皮肤 |
|
||||||
|
|
||||||
![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms1.png) |
|
||||||
|
|
||||||
### 浅绿色皮肤 |
|
||||||
|
|
||||||
![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms2.png) |
|
||||||
|
|
||||||
## 赞赏 |
|
||||||
|
|
||||||
请作者喝杯咖啡吧!(微信号:linxin_20) |
|
||||||
|
|
||||||
![微信扫一扫](https://lin-xin.gitee.io/images/weixin.jpg) |
|
||||||
|
|
||||||
## 特别鸣谢 |
|
||||||
|
|
||||||
- [实验楼](https://www.shiyanlou.com?source=vue-manage-system) |
|
||||||
|
|
||||||
## 前言 |
|
||||||
|
|
||||||
该方案作为一套多功能的后台框架模板,适用于绝大部分的后台管理系统(Web Management System)开发。基于 vue.js,使用 vue-cli3 脚手架,引用 Element UI 组件库,方便开发快速简洁好看的组件。分离颜色样式,支持手动切换主题色,而且很方便使用自定义主题色。 |
|
||||||
|
|
||||||
## 功能 |
|
||||||
|
|
||||||
- [x] Element UI |
|
||||||
- [x] 登录/注销 |
|
||||||
- [x] Dashboard |
|
||||||
- [x] 表格 |
|
||||||
- [x] Tab 选项卡 |
|
||||||
- [x] 表单 |
|
||||||
- [x] 图表 :bar_chart: |
|
||||||
- [x] 富文本编辑器 |
|
||||||
- [x] markdown 编辑器 |
|
||||||
- [x] 图片拖拽/裁剪上传 |
|
||||||
- [x] 支持切换主题色 :sparkles: |
|
||||||
- [x] 列表拖拽排序 |
|
||||||
- [x] 权限测试 |
|
||||||
- [x] 404 / 403 |
|
||||||
- [x] 三级菜单 |
|
||||||
- [x] 自定义图标 |
|
||||||
- [x] 可拖拽弹窗 |
|
||||||
- [x] 国际化 |
|
||||||
|
|
||||||
## 安装步骤 |
|
||||||
|
|
||||||
``` |
|
||||||
git clone https://github.com/lin-xin/vue-manage-system.git // 把模板下载到本地 |
|
||||||
cd vue-manage-system // 进入模板目录 |
|
||||||
npm install // 安装项目依赖,等待安装完成之后,安装失败可用 cnpm 或 yarn |
|
||||||
|
|
||||||
// 开启服务器,浏览器访问 http://localhost:8080 |
|
||||||
npm run serve |
|
||||||
|
|
||||||
// 执行构建命令,生成的dist文件夹放在服务器下即可访问 |
|
||||||
npm run build |
|
||||||
``` |
|
||||||
|
|
||||||
## 组件使用说明与演示 |
|
||||||
|
|
||||||
### vue-schart |
|
||||||
|
|
||||||
vue.js 封装 sChart.js 的图表组件。访问地址:[vue-schart](https://github.com/linxin/vue-schart) |
|
||||||
|
|
||||||
<p><a href="https://www.npmjs.com/package/vue-schart"><img src="https://img.shields.io/npm/dm/vue-schart.svg" alt="Downloads"></a></p> |
|
||||||
|
|
||||||
```html |
|
||||||
<template> |
|
||||||
<div> |
|
||||||
<schart class="wrapper" canvasId="myCanvas" :options="options"></schart> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script> |
|
||||||
import Schart from 'vue-schart'; // 导入Schart组件 |
|
||||||
export default { |
|
||||||
data() { |
|
||||||
return { |
|
||||||
options: { |
|
||||||
type: 'bar', |
|
||||||
title: { |
|
||||||
text: '最近一周各品类销售图' |
|
||||||
}, |
|
||||||
labels: ['周一', '周二', '周三', '周四', '周五'], |
|
||||||
datasets: [ |
|
||||||
{ |
|
||||||
label: '家电', |
|
||||||
data: [234, 278, 270, 190, 230] |
|
||||||
}, |
|
||||||
{ |
|
||||||
label: '百货', |
|
||||||
data: [164, 178, 190, 135, 160] |
|
||||||
}, |
|
||||||
{ |
|
||||||
label: '食品', |
|
||||||
data: [144, 198, 150, 235, 120] |
|
||||||
} |
|
||||||
] |
|
||||||
} |
|
||||||
}; |
|
||||||
}, |
|
||||||
components: { |
|
||||||
Schart |
|
||||||
} |
|
||||||
}; |
|
||||||
</script> |
|
||||||
<style> |
|
||||||
.wrapper { |
|
||||||
width: 7rem; |
|
||||||
height: 5rem; |
|
||||||
} |
|
||||||
</style> |
|
||||||
``` |
|
||||||
|
|
||||||
## 其他注意事项 |
|
||||||
|
|
||||||
### 一、如果我不想用到上面的某些组件呢,那我怎么在模板中删除掉不影响到其他功能呢? |
|
||||||
|
|
||||||
举个栗子,我不想用 Vue-Quill-Editor 这个组件,那我需要分四步走。 |
|
||||||
|
|
||||||
第一步:删除该组件的路由,在目录 src/router/index.js 中,找到引入改组件的路由,删除下面这段代码。 |
|
||||||
|
|
||||||
```JavaScript |
|
||||||
{ |
|
||||||
// 富文本编辑器组件 |
|
||||||
path: '/editor', |
|
||||||
component: resolve => require(['../components/page/VueEditor.vue'], resolve) |
|
||||||
}, |
|
||||||
``` |
|
||||||
|
|
||||||
第二步:删除引入该组件的文件。在目录 src/components/page/ 删除 VueEditor.vue 文件。 |
|
||||||
|
|
||||||
第三步:删除该页面的入口。在目录 src/components/common/Sidebar.vue 中,找到该入口,删除下面这段代码。 |
|
||||||
|
|
||||||
```js |
|
||||||
{ |
|
||||||
index: 'editor', |
|
||||||
title: '富文本编辑器' |
|
||||||
}, |
|
||||||
``` |
|
||||||
|
|
||||||
第四步:卸载该组件。执行以下命令: |
|
||||||
npm un vue-quill-editor -S |
|
||||||
|
|
||||||
完成。 |
|
||||||
|
|
||||||
### 二、如何切换主题色呢? |
|
||||||
|
|
||||||
第一步:打开 src/main.js 文件,找到引入 element 样式的地方,换成浅绿色主题。 |
|
||||||
|
|
||||||
```javascript |
|
||||||
import 'element-ui/lib/theme-default/index.css'; // 默认主题 |
|
||||||
// import './assets/css/theme-green/index.css'; // 浅绿色主题 |
|
||||||
``` |
|
||||||
|
|
||||||
第二步:打开 src/App.vue 文件,找到 style 标签引入样式的地方,切换成浅绿色主题。 |
|
||||||
|
|
||||||
```javascript |
|
||||||
@import "./assets/css/main.css"; |
|
||||||
@import "./assets/css/color-dark.css"; /*深色主题*/ |
|
||||||
/*@import "./assets/css/theme-green/color-green.css"; !*浅绿色主题*!*/ |
|
||||||
``` |
|
||||||
|
|
||||||
第三步:打开 src/components/common/Sidebar.vue 文件,找到 el-menu 标签,把 background-color/text-color/active-text-color 属性去掉即可。 |
|
||||||
|
|
||||||
## License |
|
||||||
|
|
||||||
[MIT](https://github.com/lin-xin/vue-manage-system/blob/master/LICENSE) |
|
@ -1,196 +0,0 @@ |
|||||||
# vue-manage-system |
|
||||||
|
|
||||||
<a href="https://github.com/vuejs/vue"> |
|
||||||
<img src="https://img.shields.io/badge/vue-2.6.10-brightgreen.svg" alt="vue"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/ElemeFE/element"> |
|
||||||
<img src="https://img.shields.io/badge/element--ui-2.8.2-brightgreen.svg" alt="element-ui"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/lin-xin/vue-manage-system/blob/master/LICENSE"> |
|
||||||
<img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license"> |
|
||||||
</a> |
|
||||||
<a href="https://github.com/lin-xin/vue-manage-system/releases"> |
|
||||||
<img src="https://img.shields.io/github/release/lin-xin/vue-manage-system.svg" alt="GitHub release"> |
|
||||||
</a> |
|
||||||
<a href="https://lin-xin.gitee.io/example/work/#/donate"> |
|
||||||
<img src="https://img.shields.io/badge/%24-donate-ff69b4.svg" alt="donate"> |
|
||||||
</a> |
|
||||||
|
|
||||||
The web management system solution based on Vue2 and Element-UI。[live demo](https://lin-xin.gitee.io/example/work/) |
|
||||||
|
|
||||||
## Donation |
|
||||||
|
|
||||||
![WeChat](https://lin-xin.gitee.io/images/weixin.jpg) |
|
||||||
|
|
||||||
## Preface |
|
||||||
|
|
||||||
The scheme as a set of multi-function background frame templates, suitable for most of the WEB management system development. Convenient development fast simple good components based on Vue2 and Element-UI. Color separation of color style, support manual switch themes, and it is convenient to use a custom theme color. |
|
||||||
|
|
||||||
## Function |
|
||||||
|
|
||||||
- [x] Element-UI |
|
||||||
- [x] Login/Logout |
|
||||||
- [x] Dashboard |
|
||||||
- [x] Table |
|
||||||
- [x] Tabs |
|
||||||
- [x] From |
|
||||||
- [x] Chart :bar_chart: |
|
||||||
- [x] Editor |
|
||||||
- [x] Markdown |
|
||||||
- [x] Upload pictures by clipping or dragging |
|
||||||
- [x] Support manual switch themes :sparkles: |
|
||||||
- [x] List drag sort |
|
||||||
- [x] Permission |
|
||||||
- [x] 404 / 403 |
|
||||||
- [x] Three level menu |
|
||||||
- [x] Custom icon |
|
||||||
|
|
||||||
## Installation steps |
|
||||||
|
|
||||||
git clone https://github.com/lin-xin/vue-manage-system.git // Clone templates |
|
||||||
cd vue-manage-system // Enter template directory |
|
||||||
npm install // Installation dependency |
|
||||||
|
|
||||||
## Local development |
|
||||||
|
|
||||||
// Open server and access http://localhost:8080 in browser |
|
||||||
npm run serve |
|
||||||
|
|
||||||
## Constructing production |
|
||||||
|
|
||||||
// Constructing project |
|
||||||
npm run build |
|
||||||
|
|
||||||
## Component description and presentation |
|
||||||
|
|
||||||
### vue-schart |
|
||||||
|
|
||||||
Vue.js wrapper for sChart.js. Github : [vue-schart](https://github.com/linxin/vue-schart) |
|
||||||
|
|
||||||
```html |
|
||||||
<template> |
|
||||||
<div> |
|
||||||
<schart class="wrapper" canvasId="myCanvas" :options="options"></schart> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script> |
|
||||||
import Schart from 'vue-schart'; // 导入Schart组件 |
|
||||||
export default { |
|
||||||
data() { |
|
||||||
return { |
|
||||||
options: { |
|
||||||
type: 'bar', |
|
||||||
title: { |
|
||||||
text: '最近一周各品类销售图' |
|
||||||
}, |
|
||||||
labels: ['周一', '周二', '周三', '周四', '周五'], |
|
||||||
datasets: [ |
|
||||||
{ |
|
||||||
label: '家电', |
|
||||||
data: [234, 278, 270, 190, 230] |
|
||||||
}, |
|
||||||
{ |
|
||||||
label: '百货', |
|
||||||
data: [164, 178, 190, 135, 160] |
|
||||||
}, |
|
||||||
{ |
|
||||||
label: '食品', |
|
||||||
data: [144, 198, 150, 235, 120] |
|
||||||
} |
|
||||||
] |
|
||||||
} |
|
||||||
}; |
|
||||||
}, |
|
||||||
components: { |
|
||||||
Schart |
|
||||||
} |
|
||||||
}; |
|
||||||
</script> |
|
||||||
<style> |
|
||||||
.wrapper { |
|
||||||
width: 7rem; |
|
||||||
height: 5rem; |
|
||||||
} |
|
||||||
</style> |
|
||||||
``` |
|
||||||
|
|
||||||
### element-ui |
|
||||||
|
|
||||||
A desktop component library based on vue.js2.0 . Github : [element](http://element.eleme.io/#/zh-CN/component/layout) |
|
||||||
|
|
||||||
### Vue-Quill-Editor |
|
||||||
|
|
||||||
Quill editor component for Vue2. Github : [vue-quill-editor](https://github.com/surmon-china/vue-quill-editor) |
|
||||||
|
|
||||||
### mavonEditor |
|
||||||
|
|
||||||
A markdown editor based on Vue that supports a variety of personalized features. Github: [mavonEditor](https://github.com/hinesboy/mavonEditor) |
|
||||||
|
|
||||||
### vue-cropperjs |
|
||||||
|
|
||||||
A Vue wrapper component for cropperjs. Github: [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs) |
|
||||||
|
|
||||||
## Notice |
|
||||||
|
|
||||||
### 一、If I don't want to use some components, how can I delete it? |
|
||||||
|
|
||||||
For example, I don't want to use the Vue-Quill-Editor component, I need to take four steps. |
|
||||||
|
|
||||||
The first step to remove the component of the routing. Enter 'src/router/index.js' and delete the code below. |
|
||||||
|
|
||||||
```JavaScript |
|
||||||
{ |
|
||||||
path: '/editor', |
|
||||||
component: resolve => require(['../components/page/VueEditor.vue'], resolve) |
|
||||||
}, |
|
||||||
``` |
|
||||||
|
|
||||||
Second,delete the component files. Enter 'src/components/page/' and delete 'VueEditor.vue' file. |
|
||||||
|
|
||||||
The third step is to delete the entry. Enter 'src/components/common/Sidebar.vue' and delete the code below. |
|
||||||
|
|
||||||
```js |
|
||||||
{ |
|
||||||
index: 'editor', |
|
||||||
title: '富文本编辑器' |
|
||||||
}, |
|
||||||
``` |
|
||||||
|
|
||||||
Finally, uninstall this component. |
|
||||||
npm un vue-quill-editor -S |
|
||||||
|
|
||||||
Complete! |
|
||||||
|
|
||||||
### 二、How to switch themes? |
|
||||||
|
|
||||||
The first step to enter 'src/main.js' and change into green theme. |
|
||||||
|
|
||||||
```javascript |
|
||||||
import 'element-ui/lib/theme-default/index.css'; // default theme |
|
||||||
// import '../static/css/theme-green/index.css'; // green theme |
|
||||||
``` |
|
||||||
|
|
||||||
The second step to enter 'src/App.vue' and change into green theme. |
|
||||||
|
|
||||||
```javascript |
|
||||||
@import "../static/css/main.css"; |
|
||||||
@import "../static/css/color-dark.css"; /*深色主题*/ |
|
||||||
/*@import "../static/css/theme-green/color-green.css"; !*浅绿色主题*!*/ |
|
||||||
``` |
|
||||||
|
|
||||||
Finally,enter 'src/components/common/Sidebar.vue' and find el-menu Tags,delete 'background-color/text-color/active-text-color'。 |
|
||||||
|
|
||||||
## Screenshot |
|
||||||
|
|
||||||
### Default theme |
|
||||||
|
|
||||||
![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms1.png) |
|
||||||
|
|
||||||
### Green theme |
|
||||||
|
|
||||||
![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms2.png) |
|
||||||
|
|
||||||
## License |
|
||||||
|
|
||||||
[MIT](https://github.com/lin-xin/vue-manage-system/blob/master/LICENSE) |
|
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 112 KiB |
@ -1,28 +0,0 @@ |
|||||||
.header{ |
|
||||||
background-color: #242f42; |
|
||||||
} |
|
||||||
.login-wrap{ |
|
||||||
background: #324157; |
|
||||||
} |
|
||||||
.plugins-tips{ |
|
||||||
background: #eef1f6; |
|
||||||
} |
|
||||||
.plugins-tips a{ |
|
||||||
color: #20a0ff; |
|
||||||
} |
|
||||||
.el-upload--text em { |
|
||||||
color: #20a0ff; |
|
||||||
} |
|
||||||
.pure-button{ |
|
||||||
background: #20a0ff; |
|
||||||
} |
|
||||||
.tags-li.active { |
|
||||||
border: 1px solid #409EFF; |
|
||||||
background-color: #409EFF; |
|
||||||
} |
|
||||||
.message-title{ |
|
||||||
color: #20a0ff; |
|
||||||
} |
|
||||||
.collapse-btn:hover{ |
|
||||||
background: rgb(40,52,70); |
|
||||||
} |
|
@ -1,4 +0,0 @@ |
|||||||
|
|
||||||
[class*=" icon-"], [class^=icon-] { |
|
||||||
font-family: iconfont!important; |
|
||||||
} |
|
@ -1,384 +0,0 @@ |
|||||||
* { |
|
||||||
margin: 0; |
|
||||||
padding: 0; |
|
||||||
} |
|
||||||
|
|
||||||
html, |
|
||||||
body, |
|
||||||
#app, |
|
||||||
.wrapper { |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
} |
|
||||||
|
|
||||||
body { |
|
||||||
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; |
|
||||||
font-size: 14px; |
|
||||||
background: #f0f0f0; |
|
||||||
} |
|
||||||
|
|
||||||
a { |
|
||||||
text-decoration: none |
|
||||||
} |
|
||||||
i{ |
|
||||||
font-style: normal; |
|
||||||
} |
|
||||||
li { |
|
||||||
list-style-type:none; |
|
||||||
} |
|
||||||
|
|
||||||
.required{ |
|
||||||
margin-right: 5px; |
|
||||||
color: #F56C6C; |
|
||||||
} |
|
||||||
.content-box { |
|
||||||
-webkit-transition: left .3s ease-in-out; |
|
||||||
transition: left .3s ease-in-out; |
|
||||||
} |
|
||||||
|
|
||||||
.content { |
|
||||||
width: auto; |
|
||||||
height: 100%; |
|
||||||
padding: 20px; |
|
||||||
box-sizing: border-box; |
|
||||||
} |
|
||||||
|
|
||||||
.content-collapse { |
|
||||||
left: 65px; |
|
||||||
} |
|
||||||
|
|
||||||
.container { |
|
||||||
padding: 30px; |
|
||||||
background: #fff; |
|
||||||
border: 1px solid #ddd; |
|
||||||
border-radius: 5px; |
|
||||||
} |
|
||||||
|
|
||||||
.crumbs { |
|
||||||
margin: 10px 0; |
|
||||||
} |
|
||||||
|
|
||||||
.el-table th { |
|
||||||
background-color: #f5f7fa !important; |
|
||||||
} |
|
||||||
|
|
||||||
.pagination { |
|
||||||
margin: 20px 0; |
|
||||||
text-align: right; |
|
||||||
} |
|
||||||
|
|
||||||
.plugins-tips { |
|
||||||
padding: 20px 10px; |
|
||||||
margin-bottom: 20px; |
|
||||||
} |
|
||||||
|
|
||||||
.el-button+.el-tooltip { |
|
||||||
margin-left: 10px; |
|
||||||
} |
|
||||||
|
|
||||||
.el-table tr:hover { |
|
||||||
background: #f6faff; |
|
||||||
} |
|
||||||
|
|
||||||
.orderTable td .el-input{ |
|
||||||
width: 60%; |
|
||||||
} |
|
||||||
|
|
||||||
.orderTable .el-select>.el-input{ |
|
||||||
display: inline-block; |
|
||||||
} |
|
||||||
|
|
||||||
.mgb20 { |
|
||||||
margin-bottom: 20px; |
|
||||||
} |
|
||||||
|
|
||||||
.move-enter-active, |
|
||||||
.move-leave-active { |
|
||||||
transition: opacity .5s; |
|
||||||
} |
|
||||||
|
|
||||||
.move-enter, |
|
||||||
.move-leave { |
|
||||||
opacity: 0; |
|
||||||
} |
|
||||||
|
|
||||||
/*BaseForm*/ |
|
||||||
|
|
||||||
.form-box { |
|
||||||
width: 600px; |
|
||||||
} |
|
||||||
|
|
||||||
.form-box .line { |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
.el-time-panel__content::after, |
|
||||||
.el-time-panel__content::before { |
|
||||||
margin-top: -7px; |
|
||||||
} |
|
||||||
|
|
||||||
.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { |
|
||||||
padding-bottom: 0; |
|
||||||
} |
|
||||||
|
|
||||||
/*Upload*/ |
|
||||||
|
|
||||||
.pure-button { |
|
||||||
width: 150px; |
|
||||||
height: 40px; |
|
||||||
line-height: 40px; |
|
||||||
text-align: center; |
|
||||||
color: #fff; |
|
||||||
border-radius: 3px; |
|
||||||
} |
|
||||||
|
|
||||||
.g-core-image-corp-container .info-aside { |
|
||||||
height: 45px; |
|
||||||
} |
|
||||||
|
|
||||||
.avatar-uploader .el-upload--text { |
|
||||||
background-color: #fff; |
|
||||||
border: 1px dashed #d9d9d9; |
|
||||||
border-radius: 6px; |
|
||||||
box-sizing: border-box; |
|
||||||
width: 360px; |
|
||||||
height: 180px; |
|
||||||
text-align: center; |
|
||||||
cursor: pointer; |
|
||||||
position: relative; |
|
||||||
overflow: hidden; |
|
||||||
} |
|
||||||
|
|
||||||
.avatar-uploader .el-upload--text .el-icon-upload { |
|
||||||
font-size: 67px; |
|
||||||
color: #97a8be; |
|
||||||
margin: 40px 0 16px; |
|
||||||
line-height: 50px; |
|
||||||
} |
|
||||||
|
|
||||||
.avatar-uploader .el-upload--text { |
|
||||||
color: #97a8be; |
|
||||||
font-size: 14px; |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
.avatar-uploader .el-upload--text em { |
|
||||||
font-style: normal; |
|
||||||
} |
|
||||||
|
|
||||||
/* .link_upload .el-upload-list{ |
|
||||||
width: 30%; |
|
||||||
} */ |
|
||||||
|
|
||||||
/*VueEditor*/ |
|
||||||
|
|
||||||
.ql-container { |
|
||||||
min-height: 400px; |
|
||||||
} |
|
||||||
|
|
||||||
.ql-snow .ql-tooltip { |
|
||||||
transform: translateX(117.5px) translateY(10px) !important; |
|
||||||
} |
|
||||||
|
|
||||||
.editor-btn { |
|
||||||
margin-top: 20px; |
|
||||||
} |
|
||||||
|
|
||||||
/*markdown*/ |
|
||||||
|
|
||||||
.v-note-wrapper .v-note-panel { |
|
||||||
min-height: 500px; |
|
||||||
} |
|
||||||
|
|
||||||
.ms-login .el-tabs__nav-wrap::after{ |
|
||||||
background-color: #fff; |
|
||||||
opacity: 0; |
|
||||||
} |
|
||||||
.ms-login .el-tabs__item{ |
|
||||||
padding: 0 90px; |
|
||||||
color: #999; |
|
||||||
} |
|
||||||
.ms-login .el-tabs__item:hover{ |
|
||||||
color: #000; |
|
||||||
} |
|
||||||
.ms-login .el-tabs__item.is-active{ |
|
||||||
color: #333; |
|
||||||
font-weight: bold; |
|
||||||
} |
|
||||||
.ms-login .el-tabs__active-bar{ |
|
||||||
background-color: #000; |
|
||||||
border-radius:2px; |
|
||||||
} |
|
||||||
.ms-login .el-tabs__nav-scroll{ |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
} |
|
||||||
|
|
||||||
.ms-login .el-input__inner{ |
|
||||||
height: 80px; |
|
||||||
line-height: 80px; |
|
||||||
border:1px solid rgba(220,220,220,1); |
|
||||||
border-radius:2px; |
|
||||||
} |
|
||||||
|
|
||||||
.el-row { |
|
||||||
margin-bottom: 20px; |
|
||||||
} |
|
||||||
|
|
||||||
.mgb20 { |
|
||||||
margin-bottom: 20px; |
|
||||||
} |
|
||||||
|
|
||||||
#app .el-table thead{ |
|
||||||
color: #fff; |
|
||||||
} |
|
||||||
#app .el-table th{ |
|
||||||
background-color: #cb221c!important; |
|
||||||
font-size: 16px; |
|
||||||
font-weight: normal; |
|
||||||
} |
|
||||||
#app .el-select{ |
|
||||||
display: unset; |
|
||||||
} |
|
||||||
|
|
||||||
/*flex*/ |
|
||||||
.flex-center{ |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
.flex-between{ |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
justify-content: space-between; |
|
||||||
} |
|
||||||
.flex-around{ |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
justify-content: space-around; |
|
||||||
} |
|
||||||
.flex-start-around{ |
|
||||||
display: flex; |
|
||||||
align-items: flex-start; |
|
||||||
justify-content: center; |
|
||||||
} |
|
||||||
.flex-end-around{ |
|
||||||
display: flex; |
|
||||||
align-items: flex-end; |
|
||||||
justify-content: center; |
|
||||||
} |
|
||||||
.flex-column{ |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
flex-direction: column; |
|
||||||
} |
|
||||||
.flex-start{ |
|
||||||
display: flex; |
|
||||||
align-items: flex-start; |
|
||||||
} |
|
||||||
.flex-end{ |
|
||||||
display: flex; |
|
||||||
align-items: flex-end; |
|
||||||
} |
|
||||||
.flex-justify-end{ |
|
||||||
display: flex; |
|
||||||
justify-content: flex-end; |
|
||||||
} |
|
||||||
|
|
||||||
.hr_tag{ |
|
||||||
background-color: #cb221c; |
|
||||||
width: 3px; |
|
||||||
height: 15px; |
|
||||||
margin-right: 5px; |
|
||||||
} |
|
||||||
|
|
||||||
.user_header{ |
|
||||||
padding: 20px 0; |
|
||||||
border-bottom: 1px dashed #eee; |
|
||||||
} |
|
||||||
.addhr_tag{ |
|
||||||
background-color: #666; |
|
||||||
width: 6px; |
|
||||||
height: 17px; |
|
||||||
margin-right: 5px; |
|
||||||
} |
|
||||||
|
|
||||||
.per_title span{ |
|
||||||
font-size: 16px; |
|
||||||
font-weight: bold; |
|
||||||
} |
|
||||||
.per_back{ |
|
||||||
margin-left: 5px; |
|
||||||
} |
|
||||||
.per_school{ |
|
||||||
margin-left: 30px; |
|
||||||
} |
|
||||||
.per_title:hover{ |
|
||||||
cursor:pointer; |
|
||||||
} |
|
||||||
|
|
||||||
/* 溢出省略号 */ |
|
||||||
.ellipsis{ |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
white-space: nowrap; |
|
||||||
} |
|
||||||
|
|
||||||
.tabs{ |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
padding: 20px 1.5% 20px; |
|
||||||
margin-bottom: 20px; |
|
||||||
z-index: 999; |
|
||||||
background-color: #fff; |
|
||||||
} |
|
||||||
.tabs .item{ |
|
||||||
padding: 12px 20px; |
|
||||||
margin-right: 10px; |
|
||||||
color:#606266; |
|
||||||
line-height: 1; |
|
||||||
border-radius: 4px; |
|
||||||
background-color: #fff; |
|
||||||
border: 1px solid #dcdfe6; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
.tabs .active{ |
|
||||||
color: #fff; |
|
||||||
background-color: #cb221c; |
|
||||||
border-color: #cb221c; |
|
||||||
} |
|
||||||
|
|
||||||
.btns{ |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
margin-top: 20px; |
|
||||||
} |
|
||||||
.btns button{ |
|
||||||
height: 30px; |
|
||||||
padding: 0 30px; |
|
||||||
margin: 0 15px; |
|
||||||
font-size: 14px; |
|
||||||
color: #333; |
|
||||||
line-height: 30px; |
|
||||||
background-color: #fff; |
|
||||||
border: 1px solid #ededed; |
|
||||||
border-radius: 4px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
.btns .submit{ |
|
||||||
color: #fff; |
|
||||||
background-color: #e80909; |
|
||||||
border-color: #e80909; |
|
||||||
} |
|
||||||
.btns button:hover{ |
|
||||||
opacity: .8; |
|
||||||
} |
|
||||||
.btns button:focus{ |
|
||||||
outline: none; |
|
||||||
} |
|
||||||
|
|
||||||
.userRadio .el-radio{ |
|
||||||
margin-right: 10px!important; |
|
||||||
} |
|
||||||
.userRadio .el-radio__input{ |
|
||||||
display: none!important; |
|
||||||
} |
|
@ -1,29 +0,0 @@ |
|||||||
.header{ |
|
||||||
background-color: #fff; |
|
||||||
} |
|
||||||
.login-wrap{ |
|
||||||
background: rgba(56, 157, 170, 0.82);; |
|
||||||
} |
|
||||||
.plugins-tips{ |
|
||||||
background: #f2f2f2; |
|
||||||
} |
|
||||||
.plugins-tips a{ |
|
||||||
color: #cb221c; |
|
||||||
} |
|
||||||
.el-upload--text em { |
|
||||||
color: #cb221c; |
|
||||||
} |
|
||||||
.pure-button{ |
|
||||||
background: #cb221c; |
|
||||||
} |
|
||||||
.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, .pagination > .active > span, .pagination > .active > span:hover, .pagination > .active > span:focus { |
|
||||||
background-color: #cb221c !important; |
|
||||||
border-color: #cb221c !important; |
|
||||||
} |
|
||||||
.tags-li.active { |
|
||||||
border: 1px solid #cb221c; |
|
||||||
background-color: #cb221c; |
|
||||||
} |
|
||||||
.collapse-btn:hover{ |
|
||||||
background: #cb221c; |
|
||||||
} |
|
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 875 B After Width: | Height: | Size: 875 B |
@ -0,0 +1,263 @@ |
|||||||
|
<template> |
||||||
|
<div class="box"> |
||||||
|
<h1 class="title">{{paperName }}</h1> |
||||||
|
<div class="metas"> |
||||||
|
<div style="margin-right: 20px;"> |
||||||
|
<span class="name">总分:</span> |
||||||
|
<span class="val">100分</span> |
||||||
|
</div> |
||||||
|
<div> |
||||||
|
<span class="name">考试时长:</span> |
||||||
|
<span class="val">{{time}}分钟</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<ul class="tab"> |
||||||
|
<li v-for="(item,index) in tabs" :key="index" :class="{active: active == item.id}" @click="tabChange(item.id)">{{item.name}}</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<div class="wrap"> |
||||||
|
<div class="item" v-for="(item,index) in curType" :key="index"> |
||||||
|
<div class="answer"> |
||||||
|
<div class="info"> |
||||||
|
<p class="key">序号:</p> |
||||||
|
<p class="val">{{index+1}}</p> |
||||||
|
</div> |
||||||
|
<div class="info"> |
||||||
|
<p class="key">得分:</p> |
||||||
|
<p class="val">{{item.question_score}}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="meta"> |
||||||
|
<p class="key">题干:</p> |
||||||
|
<p class="val" v-html="item.question_stem"></p> |
||||||
|
</div> |
||||||
|
<div class="meta"> |
||||||
|
<p class="key">选项:</p> |
||||||
|
<div class="val"> |
||||||
|
<p v-for="(option,i) in item.options" :key="i">{{i}}.{{item.options[i]}}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="meta ans"> |
||||||
|
<div class="info"> |
||||||
|
<p class="key">正确答案:</p> |
||||||
|
<p class="val">{{item.answer}}</p> |
||||||
|
</div> |
||||||
|
<div class="info"> |
||||||
|
<p class="key">学生答案:</p> |
||||||
|
<p class="val">{{item.user_answer}}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="meta"> |
||||||
|
<p class="key">答案解析:</p> |
||||||
|
<p class="val" v-html="item.answer_analysis"></p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script> |
||||||
|
import mixins from '@/mixins/setBackground' |
||||||
|
import { mapState } from 'vuex' |
||||||
|
export default { |
||||||
|
mixins: [ mixins ], |
||||||
|
data() { |
||||||
|
return { |
||||||
|
paperName: '', |
||||||
|
time: 0, |
||||||
|
selectVisible: false, |
||||||
|
tabs: [ |
||||||
|
{ |
||||||
|
id: 1, |
||||||
|
name: '单选题' |
||||||
|
},{ |
||||||
|
id: 2, |
||||||
|
name: '多选题' |
||||||
|
},{ |
||||||
|
id: 3, |
||||||
|
name: '填空题' |
||||||
|
},{ |
||||||
|
id: 4, |
||||||
|
name: '判断题' |
||||||
|
},{ |
||||||
|
id: 5, |
||||||
|
name: '简答题' |
||||||
|
} |
||||||
|
], |
||||||
|
active: 1, |
||||||
|
curType: [] |
||||||
|
}; |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapState('user', [ |
||||||
|
'userId' |
||||||
|
]), |
||||||
|
...mapState('achievement', [ |
||||||
|
'id','assessmentId' |
||||||
|
]) |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
this.getData() |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
getData() { |
||||||
|
this.$post(`${this.api.answerDetail}?userId=${this.userId}&assessmentId=${this.assessmentId}&paperId=${this.id}`) |
||||||
|
// this.$post(`${this.api.answerDetail}?userId=${1}&assessmentId=${1}&paperId=${1}`) |
||||||
|
.then(res => { |
||||||
|
this.paperName = res.paperName |
||||||
|
this.time = res.time |
||||||
|
this.allData = res.data |
||||||
|
this.curType = this.allData.list1 |
||||||
|
this.handleOptions() |
||||||
|
}) |
||||||
|
.catch(err => {}); |
||||||
|
|
||||||
|
}, |
||||||
|
tabChange(id){ |
||||||
|
this.active = id |
||||||
|
this.curType = this.allData[`list${id}`] |
||||||
|
this.handleOptions() |
||||||
|
}, |
||||||
|
handleOptions(){ |
||||||
|
let curType = this.curType |
||||||
|
curType.forEach(n => { |
||||||
|
if(!n.options){ |
||||||
|
let options = {} |
||||||
|
for(let i in n){ |
||||||
|
if(i.includes('option') && n[i]){ |
||||||
|
console.log(i.replace('option_','')) |
||||||
|
options[i.replace('option_','')] = n[i] |
||||||
|
} |
||||||
|
} |
||||||
|
n.options = options |
||||||
|
} |
||||||
|
}) |
||||||
|
this.curType = curType |
||||||
|
} |
||||||
|
}, |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.box{ |
||||||
|
width: 90%; |
||||||
|
margin: 0 auto; |
||||||
|
} |
||||||
|
.title{ |
||||||
|
text-align: center; |
||||||
|
font-size: 18px; |
||||||
|
font-weight: 600; |
||||||
|
} |
||||||
|
.metas{ |
||||||
|
display: flex; |
||||||
|
justify-content: center; |
||||||
|
margin: 20px 0 30px; |
||||||
|
.name{ |
||||||
|
font-size: 12px; |
||||||
|
color: #717171; |
||||||
|
} |
||||||
|
.val{ |
||||||
|
font-size: 12px; |
||||||
|
color: #929292; |
||||||
|
} |
||||||
|
} |
||||||
|
.tab{ |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
margin-bottom: 10px; |
||||||
|
li{ |
||||||
|
position: relative; |
||||||
|
padding: 0 44px; |
||||||
|
margin-right: 7px; |
||||||
|
font-size: 13px; |
||||||
|
line-height: 46px; |
||||||
|
text-align: center; |
||||||
|
color: #444; |
||||||
|
border: 1px solid #ececec; |
||||||
|
cursor: pointer; |
||||||
|
&:hover{ |
||||||
|
opacity: .8; |
||||||
|
} |
||||||
|
&.active:after{ |
||||||
|
content: ''; |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
width: 100%; |
||||||
|
height: 4px; |
||||||
|
background-color: #e80909; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.wrap{ |
||||||
|
.item{ |
||||||
|
padding-bottom: 30px; |
||||||
|
margin-bottom: 30px; |
||||||
|
border-bottom: 1px dashed #f4f4f4; |
||||||
|
|
||||||
|
.key{ |
||||||
|
font-weight: bold; |
||||||
|
color: #333; |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
.val{ |
||||||
|
color: #757575; |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
.answer{ |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
padding: 15px; |
||||||
|
margin: 15px 0; |
||||||
|
font-size: 12px; |
||||||
|
border: 1px solid #e8e8e8; |
||||||
|
background-color: #f3f2f2; |
||||||
|
.info{ |
||||||
|
display: inline-flex; |
||||||
|
align-items: center; |
||||||
|
margin-right: 30px; |
||||||
|
} |
||||||
|
} |
||||||
|
.meta{ |
||||||
|
padding-left: 10px; |
||||||
|
margin: 20px 0; |
||||||
|
font-size: 12px; |
||||||
|
&.ans{ |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
.info{ |
||||||
|
margin-right: 20px; |
||||||
|
} |
||||||
|
} |
||||||
|
.key{ |
||||||
|
margin-bottom: 5px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.btns{ |
||||||
|
display: flex; |
||||||
|
justify-content: center; |
||||||
|
margin-top: 20px; |
||||||
|
button{ |
||||||
|
height: 30px; |
||||||
|
padding: 0 30px; |
||||||
|
margin: 0 15px; |
||||||
|
font-size: 14px; |
||||||
|
color: #333; |
||||||
|
line-height: 30px; |
||||||
|
background-color: #fff; |
||||||
|
border: 1px solid #ededed; |
||||||
|
border-radius: 4px; |
||||||
|
cursor: pointer; |
||||||
|
&.submit{ |
||||||
|
color: #fff; |
||||||
|
background-color: #e80909; |
||||||
|
border-color: #e80909; |
||||||
|
} |
||||||
|
&:hover{ |
||||||
|
opacity: .8; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,28 @@ |
|||||||
|
/** |
||||||
|
* 成绩管理 |
||||||
|
* */ |
||||||
|
export default { |
||||||
|
namespaced: true, |
||||||
|
state: { |
||||||
|
id: '', |
||||||
|
assessmentId: '', |
||||||
|
assessmentName: '', |
||||||
|
classId: '' |
||||||
|
}, |
||||||
|
getters: { |
||||||
|
|
||||||
|
}, |
||||||
|
mutations: { |
||||||
|
SET_INFO: (state, info) => { |
||||||
|
state.id = info.id |
||||||
|
state.assessmentId = info.assessmentId |
||||||
|
state.assessmentName = info.assessmentName |
||||||
|
state.classId = info.classId |
||||||
|
}, |
||||||
|
}, |
||||||
|
actions: { |
||||||
|
setInfo({ commit },info) { |
||||||
|
commit('SET_INFO',info) |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
/** |
||||||
|
* 考核管理 |
||||||
|
* */ |
||||||
|
export default { |
||||||
|
namespaced: true, |
||||||
|
state: { |
||||||
|
id: '', |
||||||
|
paperId: '', |
||||||
|
isReview: false, |
||||||
|
reviewStatus: '', |
||||||
|
typeList: [ |
||||||
|
{ |
||||||
|
id: 1, |
||||||
|
name: '期中开始' |
||||||
|
},{ |
||||||
|
id: 2, |
||||||
|
name: '期末考试' |
||||||
|
},{ |
||||||
|
id: 3, |
||||||
|
name: '模拟考' |
||||||
|
} |
||||||
|
], |
||||||
|
stateList: [ |
||||||
|
{ |
||||||
|
id: 1, |
||||||
|
name: '待开始' |
||||||
|
},{ |
||||||
|
id: 2, |
||||||
|
name: '进行中' |
||||||
|
},{ |
||||||
|
id: 3, |
||||||
|
name: '已结束' |
||||||
|
}
|
||||||
|
], |
||||||
|
reviewStatusList: [ |
||||||
|
{ |
||||||
|
id: 0, |
||||||
|
name: '未批阅' |
||||||
|
},{ |
||||||
|
id: 1, |
||||||
|
name: '批阅部分' |
||||||
|
},{ |
||||||
|
id: 2, |
||||||
|
name: '已批阅' |
||||||
|
} |
||||||
|
], |
||||||
|
examStatusList: [ |
||||||
|
{ |
||||||
|
id: 0, |
||||||
|
name: '未考' |
||||||
|
},{ |
||||||
|
id: 1, |
||||||
|
name: '已考试' |
||||||
|
} |
||||||
|
], |
||||||
|
correctingList: [ |
||||||
|
{ |
||||||
|
id: 0, |
||||||
|
name: '待阅' |
||||||
|
},{ |
||||||
|
id: 1, |
||||||
|
name: '已阅' |
||||||
|
} |
||||||
|
], |
||||||
|
}, |
||||||
|
getters: { |
||||||
|
getTypeName: state => id => { |
||||||
|
return state.typeList.find(n => n.id == id).name |
||||||
|
}, |
||||||
|
getStateName: state => id => { |
||||||
|
return state.stateList.find(n => n.id == id).name |
||||||
|
}, |
||||||
|
getReviewStatusName: state => id => { |
||||||
|
return state.reviewStatusList.find(n => n.id == id).name |
||||||
|
}, |
||||||
|
getExamStatusName: state => id => { |
||||||
|
return state.examStatusList.find(n => n.id == id).name |
||||||
|
}, |
||||||
|
getCorrectingName: state => id => { |
||||||
|
return state.correctingList.find(n => n.id == id).name |
||||||
|
}, |
||||||
|
}, |
||||||
|
mutations: { |
||||||
|
SET_INFO: (state, info) => { |
||||||
|
state.id = info.id |
||||||
|
state.paperId = info.paperId |
||||||
|
state.isReview = info.isReview |
||||||
|
state.reviewStatus = info.reviewStatus |
||||||
|
}, |
||||||
|
}, |
||||||
|
actions: { |
||||||
|
setAssInfo({ commit },info) { |
||||||
|
commit('SET_INFO',info) |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,145 @@ |
|||||||
|
@import "./default/index.scss"; |
||||||
|
|
||||||
|
.content-box { |
||||||
|
-webkit-transition: left .3s ease-in-out; |
||||||
|
transition: left .3s ease-in-out; |
||||||
|
} |
||||||
|
|
||||||
|
.content { |
||||||
|
width: auto; |
||||||
|
height: 100%; |
||||||
|
padding: 20px; |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
|
||||||
|
.content-collapse { |
||||||
|
left: 65px; |
||||||
|
} |
||||||
|
|
||||||
|
.container { |
||||||
|
padding: 30px; |
||||||
|
background: #fff; |
||||||
|
border: 1px solid #ddd; |
||||||
|
border-radius: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
.crumbs { |
||||||
|
margin: 10px 0; |
||||||
|
} |
||||||
|
|
||||||
|
.pagination { |
||||||
|
margin: 20px 0; |
||||||
|
text-align: right; |
||||||
|
} |
||||||
|
|
||||||
|
.el-button+.el-tooltip { |
||||||
|
margin-left: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
.ql-snow .ql-tooltip { |
||||||
|
transform: translateX(117.5px) translateY(10px) !important; |
||||||
|
} |
||||||
|
|
||||||
|
.el-row { |
||||||
|
margin-bottom: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
#app .el-table thead{ |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
#app .el-table th{ |
||||||
|
background-color: $--color-primary!important; |
||||||
|
font-size: 16px; |
||||||
|
font-weight: normal; |
||||||
|
} |
||||||
|
#app .el-select{ |
||||||
|
display: unset; |
||||||
|
} |
||||||
|
|
||||||
|
.required{ |
||||||
|
margin-right: 5px; |
||||||
|
color: #F56C6C; |
||||||
|
} |
||||||
|
.hr_tag{ |
||||||
|
background-color: $--color-primary; |
||||||
|
width: 3px; |
||||||
|
height: 15px; |
||||||
|
margin-right: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
.per_title span{ |
||||||
|
font-size: 16px; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
.per_back{ |
||||||
|
margin-left: 5px; |
||||||
|
} |
||||||
|
.per_school{ |
||||||
|
margin-left: 30px; |
||||||
|
} |
||||||
|
.per_title:hover{ |
||||||
|
cursor:pointer; |
||||||
|
} |
||||||
|
|
||||||
|
[v-cloak] { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
|
||||||
|
.tabs{ |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
padding: 20px 1.5% 20px; |
||||||
|
margin-bottom: 20px; |
||||||
|
z-index: 999; |
||||||
|
background-color: #fff; |
||||||
|
.item{ |
||||||
|
padding: 12px 20px; |
||||||
|
margin-right: 10px; |
||||||
|
color:#606266; |
||||||
|
line-height: 1; |
||||||
|
border-radius: 4px; |
||||||
|
background-color: #fff; |
||||||
|
border: 1px solid #dcdfe6; |
||||||
|
cursor: pointer; |
||||||
|
&.active{ |
||||||
|
color: #fff; |
||||||
|
background-color: $--color-primary; |
||||||
|
border-color: $--color-primary; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.btns{ |
||||||
|
display: flex; |
||||||
|
justify-content: center; |
||||||
|
margin-top: 20px; |
||||||
|
|
||||||
|
button{ |
||||||
|
height: 30px; |
||||||
|
padding: 0 30px; |
||||||
|
margin: 0 15px; |
||||||
|
font-size: 14px; |
||||||
|
color: #333; |
||||||
|
line-height: 30px; |
||||||
|
background-color: #fff; |
||||||
|
border: 1px solid #ededed; |
||||||
|
border-radius: 4px; |
||||||
|
cursor: pointer; |
||||||
|
&.submit{ |
||||||
|
color: #fff; |
||||||
|
background-color: #e80909; |
||||||
|
border-color: #e80909; |
||||||
|
} |
||||||
|
&:hover{ |
||||||
|
opacity: .8; |
||||||
|
} |
||||||
|
&:focus{ |
||||||
|
outline: none; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.userRadio .el-radio{ |
||||||
|
margin-right: 10px!important; |
||||||
|
} |
||||||
|
.userRadio .el-radio__input{ |
||||||
|
display: none!important; |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
/* 改变主题色变量 */ |
||||||
|
|
||||||
|
$--color-primary: #cb221c; |
||||||
|
|
||||||
|
/* 改变 icon 字体路径变量,必需 */ |
||||||
|
$--font-path: '~element-ui/lib/theme-chalk/fonts'; |
||||||
|
@import "~element-ui/packages/theme-chalk/src/index"; |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,3 @@ |
|||||||
|
[class*=" icon-"], [class^=icon-] { |
||||||
|
font-family: iconfont!important; |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
@import "./default/index.scss"; |
||||||
|
@import "./font/iconfont.css"; |
||||||
|
@import "./font/icon/iconfont.css"; |
||||||
|
@import "./lib/index.scss"; |
||||||
|
@import "./layout/index.scss"; |
||||||
|
@import "./common.scss"; |
@ -0,0 +1,13 @@ |
|||||||
|
@import "lib/var"; |
||||||
|
html, |
||||||
|
body, |
||||||
|
#app, |
||||||
|
.wrapper { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
font-size: 14px; |
||||||
|
background: $bg-grey; |
||||||
|
} |
@ -0,0 +1,375 @@ |
|||||||
|
@import "var"; |
||||||
|
// reset 初始化浏览器样式 |
||||||
|
* { |
||||||
|
box-sizing: border-box; |
||||||
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
||||||
|
} |
||||||
|
|
||||||
|
*:before, |
||||||
|
*:after { |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
|
||||||
|
html { |
||||||
|
-ms-text-size-adjust: 100%; |
||||||
|
-webkit-text-size-adjust: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
body, |
||||||
|
div, |
||||||
|
dl, |
||||||
|
dt, |
||||||
|
dd, |
||||||
|
ul, |
||||||
|
ol, |
||||||
|
li, |
||||||
|
h1, |
||||||
|
h2, |
||||||
|
h3, |
||||||
|
h4, |
||||||
|
h5, |
||||||
|
h6, |
||||||
|
form, |
||||||
|
fieldset, |
||||||
|
legend, |
||||||
|
input, |
||||||
|
textarea, |
||||||
|
p, |
||||||
|
blockquote, |
||||||
|
th, |
||||||
|
td, |
||||||
|
hr, |
||||||
|
button, |
||||||
|
article, |
||||||
|
aside, |
||||||
|
details, |
||||||
|
figcaption, |
||||||
|
figure, |
||||||
|
footer, |
||||||
|
header, |
||||||
|
hgroup, |
||||||
|
menu, |
||||||
|
nav, |
||||||
|
section { |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
|
||||||
|
button, |
||||||
|
input, |
||||||
|
select, |
||||||
|
textarea { |
||||||
|
font-family: inherit; |
||||||
|
font-size: inherit; |
||||||
|
line-height: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
input::-ms-clear, |
||||||
|
input::-ms-reveal { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
|
||||||
|
ol,ul{ |
||||||
|
li{ |
||||||
|
list-style: none; |
||||||
|
} |
||||||
|
} |
||||||
|
h1 { |
||||||
|
font-size: 2em; |
||||||
|
margin: 0.67em 0; |
||||||
|
} |
||||||
|
|
||||||
|
article, |
||||||
|
aside, |
||||||
|
footer, |
||||||
|
header, |
||||||
|
nav, |
||||||
|
section { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
|
||||||
|
figcaption, |
||||||
|
figure, |
||||||
|
main { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
|
||||||
|
figure { |
||||||
|
margin: 1em 40px; |
||||||
|
} |
||||||
|
|
||||||
|
li:focus { |
||||||
|
outline-width: 0; |
||||||
|
} |
||||||
|
|
||||||
|
i{ |
||||||
|
font-style: normal; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Remove the gray background on active links in IE 10. |
||||||
|
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+. |
||||||
|
*/ |
||||||
|
|
||||||
|
a { |
||||||
|
background-color: transparent; |
||||||
|
-webkit-text-decoration-skip: objects; |
||||||
|
text-decoration: none; |
||||||
|
color: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
a:active { |
||||||
|
color: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
a:active, |
||||||
|
a:hover, |
||||||
|
a:focus { |
||||||
|
outline-width: 0; |
||||||
|
} |
||||||
|
|
||||||
|
abbr[title] { |
||||||
|
border-bottom: none; |
||||||
|
text-decoration: underline; |
||||||
|
text-decoration: underline dotted; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Prevent the duplicate application of `bolder` by the next rule in Safari 6. |
||||||
|
*/ |
||||||
|
|
||||||
|
b, |
||||||
|
strong { |
||||||
|
font-weight: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Add the correct font weight in Chrome, Edge, and Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
b, |
||||||
|
strong { |
||||||
|
font-weight: bolder; |
||||||
|
} |
||||||
|
|
||||||
|
pre, |
||||||
|
code, |
||||||
|
kbd, |
||||||
|
samp { |
||||||
|
font-family: monospace, monospace; |
||||||
|
font-size: 1em; |
||||||
|
} |
||||||
|
|
||||||
|
dfn { |
||||||
|
font-style: italic; |
||||||
|
} |
||||||
|
|
||||||
|
mark { |
||||||
|
background-color: #ff0; |
||||||
|
color: #000; |
||||||
|
} |
||||||
|
|
||||||
|
small { |
||||||
|
font-size: 80%; |
||||||
|
} |
||||||
|
|
||||||
|
sub, |
||||||
|
sup { |
||||||
|
font-size: 75%; |
||||||
|
line-height: 0; |
||||||
|
position: relative; |
||||||
|
vertical-align: baseline; |
||||||
|
} |
||||||
|
|
||||||
|
sub { |
||||||
|
bottom: -0.25em; |
||||||
|
} |
||||||
|
|
||||||
|
sup { |
||||||
|
top: -0.5em; |
||||||
|
} |
||||||
|
|
||||||
|
audio, |
||||||
|
video { |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
|
||||||
|
audio:not([controls]) { |
||||||
|
display: none; |
||||||
|
height: 0; |
||||||
|
} |
||||||
|
|
||||||
|
img { |
||||||
|
border-style: none; |
||||||
|
vertical-align: middle; |
||||||
|
} |
||||||
|
|
||||||
|
svg:not(:root) { |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
button, |
||||||
|
input, |
||||||
|
optgroup, |
||||||
|
select, |
||||||
|
textarea { |
||||||
|
font-size: 100%; |
||||||
|
line-height: 1.15; |
||||||
|
margin: 0; |
||||||
|
} |
||||||
|
|
||||||
|
button, |
||||||
|
input { |
||||||
|
overflow: visible; |
||||||
|
} |
||||||
|
|
||||||
|
button, |
||||||
|
select { |
||||||
|
text-transform: none; |
||||||
|
} |
||||||
|
|
||||||
|
button, |
||||||
|
html [type="button"], |
||||||
|
[type="reset"], |
||||||
|
[type="submit"] { |
||||||
|
-webkit-appearance: button; |
||||||
|
} |
||||||
|
|
||||||
|
button::-moz-focus-inner, |
||||||
|
[type="button"]::-moz-focus-inner, |
||||||
|
[type="reset"]::-moz-focus-inner, |
||||||
|
[type="submit"]::-moz-focus-inner { |
||||||
|
border-style: none; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Restore the focus styles unset by the previous rule. |
||||||
|
*/ |
||||||
|
|
||||||
|
button:-moz-focusring, |
||||||
|
[type="button"]:-moz-focusring, |
||||||
|
[type="reset"]:-moz-focusring, |
||||||
|
[type="submit"]:-moz-focusring { |
||||||
|
outline: 1px dotted ButtonText; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Change the border, margin, and padding in all browsers (opinionated). |
||||||
|
*/ |
||||||
|
|
||||||
|
fieldset { |
||||||
|
border: 1px solid #c0c0c0; |
||||||
|
margin: 0 2px; |
||||||
|
padding: 0.35em 0.625em 0.75em; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Correct the text wrapping in Edge and IE. |
||||||
|
* 2. Correct the color inheritance from `fieldset` elements in IE. |
||||||
|
* 3. Remove the padding so developers are not caught out when they zero out |
||||||
|
* `fieldset` elements in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
legend { |
||||||
|
box-sizing: border-box; /* 1 */ |
||||||
|
color: inherit; /* 2 */ |
||||||
|
display: table; /* 1 */ |
||||||
|
max-width: 100%; /* 1 */ |
||||||
|
padding: 0; /* 3 */ |
||||||
|
white-space: normal; /* 1 */ |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Add the correct display in IE 9-. |
||||||
|
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. |
||||||
|
*/ |
||||||
|
|
||||||
|
progress { |
||||||
|
display: inline-block; /* 1 */ |
||||||
|
vertical-align: baseline; /* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Remove the default vertical scrollbar in IE. |
||||||
|
*/ |
||||||
|
|
||||||
|
textarea { |
||||||
|
overflow: auto; |
||||||
|
resize: vertical; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Add the correct box sizing in IE 10-. |
||||||
|
* 2. Remove the padding in IE 10-. |
||||||
|
*/ |
||||||
|
|
||||||
|
[type="checkbox"], |
||||||
|
[type="radio"] { |
||||||
|
box-sizing: border-box; /* 1 */ |
||||||
|
padding: 0; /* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Correct the cursor style of increment and decrement buttons in Chrome. |
||||||
|
*/ |
||||||
|
|
||||||
|
[type="number"]::-webkit-inner-spin-button, |
||||||
|
[type="number"]::-webkit-outer-spin-button { |
||||||
|
height: auto; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Correct the odd appearance in Chrome and Safari. |
||||||
|
* 2. Correct the outline style in Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
[type="search"] { |
||||||
|
-webkit-appearance: textfield; /* 1 */ |
||||||
|
outline-offset: -2px; /* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS. |
||||||
|
*/ |
||||||
|
|
||||||
|
[type="search"]::-webkit-search-cancel-button, |
||||||
|
[type="search"]::-webkit-search-decoration { |
||||||
|
-webkit-appearance: none; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 1. Correct the inability to style clickable types in iOS and Safari. |
||||||
|
* 2. Change font properties to `inherit` in Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
::-webkit-file-upload-button { |
||||||
|
-webkit-appearance: button; /* 1 */ |
||||||
|
font: inherit; /* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* Add the correct display in IE 9-. |
||||||
|
* 1. Add the correct display in Edge, IE, and Firefox. |
||||||
|
*/ |
||||||
|
|
||||||
|
details, /* 1 */ |
||||||
|
menu { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* Add the correct display in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
summary { |
||||||
|
display: list-item; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Add the correct display in IE 9-. |
||||||
|
*/ |
||||||
|
|
||||||
|
canvas { |
||||||
|
display: inline-block; |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
html { |
||||||
|
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; |
||||||
|
} |
@ -0,0 +1,80 @@ |
|||||||
|
// 颜色 size范围 |
||||||
|
$color-black: #333 !default; |
||||||
|
$color-white: #ffffff !default; |
||||||
|
$color-grey: #888 !default; |
||||||
|
$color-green: #19be6b !default; |
||||||
|
$color-blue: #61c3ff !default; |
||||||
|
$color-yellow: #ff9900 !default; |
||||||
|
$color-red: #f35958 !default; |
||||||
|
|
||||||
|
$color-title: #17233d !default; |
||||||
|
$color-content: #515a6e !default; |
||||||
|
$color-disabled: #c5c8ce !default; |
||||||
|
|
||||||
|
$bg-grey:#f0f0f0 !default; |
||||||
|
$bg-white: #ffffff !default; |
||||||
|
$bg-black: #393D49 !default; |
||||||
|
|
||||||
|
$color-border: #dcdfe6 !default; |
||||||
|
|
||||||
|
// 主题背景色 |
||||||
|
$bg-colors: ( |
||||||
|
'white': $bg-white, |
||||||
|
'black': $bg-black, |
||||||
|
'grey': $bg-grey, |
||||||
|
'green': $color-green, |
||||||
|
'blue': $color-blue, |
||||||
|
'yellow': $color-yellow, |
||||||
|
'red': $color-red, |
||||||
|
) !default; |
||||||
|
|
||||||
|
// 文本颜色 |
||||||
|
$text-colors: ( |
||||||
|
'white': $color-white, |
||||||
|
'black': $color-black, |
||||||
|
'grey': $color-grey, |
||||||
|
'green': $color-green, |
||||||
|
'blue': $color-blue, |
||||||
|
'yellow': $color-yellow, |
||||||
|
'red': $color-red, |
||||||
|
'title': $color-title, |
||||||
|
'content': $color-content, |
||||||
|
'disabled': $color-disabled |
||||||
|
) !default; |
||||||
|
|
||||||
|
// 边框颜色 |
||||||
|
$border-colors: ( |
||||||
|
'white': $color-white, |
||||||
|
'black': $color-black, |
||||||
|
'grey': $color-border, |
||||||
|
'green': $color-green, |
||||||
|
'blue': $color-blue, |
||||||
|
'yellow': $color-yellow, |
||||||
|
'red': $color-red |
||||||
|
) !default; |
||||||
|
|
||||||
|
// border |
||||||
|
$border-width-through: 20 !default; |
||||||
|
$border-radius-through: 20 !default; |
||||||
|
|
||||||
|
// margin padding left right top bottom |
||||||
|
$box-sizes: ( |
||||||
|
-20, -15, -12, -10, -8, -6, -5, -4, -3, -2, -1, |
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 25, 30, 35, 40, 50, 60, 80, 100) !default; |
||||||
|
|
||||||
|
// width height |
||||||
|
$sizes: ( |
||||||
|
40, 50, 60, 70, 80, 90, 100, |
||||||
|
120, 150, 200, 250, 300, 400, 500, 600, 800, 1000, 1200) !default; |
||||||
|
|
||||||
|
// font-size |
||||||
|
$font-size-em-through: 10 !default; |
||||||
|
$font-size-em-decimal-through: 5 !default; |
||||||
|
$font-size-rem-through: 10 !default; |
||||||
|
$font-size-rem-decimal-through: 5 !default; |
||||||
|
$font-size-px-through: 80 !default; |
||||||
|
|
||||||
|
// line-height |
||||||
|
$line-height-through: 20 !default; |
||||||
|
$line-height-decimal-through: 5 !default; |
||||||
|
$line-height-px-through: 100 !default; |
@ -0,0 +1,7 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@each $name, $color in $bg-colors { |
||||||
|
.bg-#{$name} { |
||||||
|
background-color: $color; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
.border { |
||||||
|
border: 1px solid $color-border; |
||||||
|
} |
||||||
|
|
||||||
|
// vertical |
||||||
|
.b-v { |
||||||
|
border-top: 1px solid $color-border; |
||||||
|
border-bottom: 1px solid $color-border; |
||||||
|
} |
||||||
|
|
||||||
|
// horizontal |
||||||
|
.b-h { |
||||||
|
border-left: 1px solid $color-border; |
||||||
|
border-right: 1px solid $color-border; |
||||||
|
} |
||||||
|
|
||||||
|
// border double |
||||||
|
.b-double { |
||||||
|
border: double $color-border; |
||||||
|
} |
||||||
|
|
||||||
|
.b-w-thin { |
||||||
|
border-width: 0.55px; |
||||||
|
} |
||||||
|
|
||||||
|
.b-round { |
||||||
|
border-radius: 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.b-none { |
||||||
|
border: none; |
||||||
|
} |
||||||
|
|
||||||
|
@each $side in left, right, top, bottom { |
||||||
|
.b-#{str-slice($side, 0, 1)} { |
||||||
|
border-#{$side}: 1px solid $color-border; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// border-style |
||||||
|
@each $style in dotted, dashed { |
||||||
|
.border-#{$style} { |
||||||
|
border: 1px $style $color-border |
||||||
|
} |
||||||
|
.b-v-#{$style} { |
||||||
|
border-top: 1px $style $color-border; |
||||||
|
border-bottom: 1px $style $color-border; |
||||||
|
} |
||||||
|
.b-h-#{$style} { |
||||||
|
border-left: 1px $style $color-border; |
||||||
|
border-right: 1px $style $color-border; |
||||||
|
} |
||||||
|
@each $side in left, right, top, bottom { |
||||||
|
.b-#{str-slice($side, 0, 1)}-#{$style} { |
||||||
|
border-#{$side}: 1px $style $color-border; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $size from 0 through $border-width-through { |
||||||
|
.b-#{$size} { |
||||||
|
border-width: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $size from 0 through $border-radius-through { |
||||||
|
.b-radius-#{$size}, .b-r-#{$size} { |
||||||
|
border-radius: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@each $name, $color in $border-colors { |
||||||
|
.b-#{$name} { |
||||||
|
border-color: $color; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,56 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
/** |
||||||
|
* margin padding |
||||||
|
* @each 循环多次保证优先级 |
||||||
|
*/ |
||||||
|
|
||||||
|
.m-auto { |
||||||
|
margin-left: auto; |
||||||
|
margin-right: auto; |
||||||
|
} |
||||||
|
|
||||||
|
@each $size in $box-sizes { |
||||||
|
.m-#{$size}, .margin-#{$size} { |
||||||
|
margin: #{$size}px; |
||||||
|
} |
||||||
|
@if $size >= 0 { |
||||||
|
.p-#{$size}, .padding-#{$size} { |
||||||
|
padding: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@each $size in $box-sizes { |
||||||
|
.m-h-#{$size} { |
||||||
|
margin-left: #{$size}px; |
||||||
|
margin-right: #{$size}px; |
||||||
|
} |
||||||
|
.m-v-#{$size} { |
||||||
|
margin-top: #{$size}px; |
||||||
|
margin-bottom: #{$size}px; |
||||||
|
} |
||||||
|
@if $size >= 0 { |
||||||
|
.p-h-#{$size} { |
||||||
|
padding-left: #{$size}px; |
||||||
|
padding-right: #{$size}px; |
||||||
|
} |
||||||
|
.p-v-#{$size} { |
||||||
|
padding-top: #{$size}px; |
||||||
|
padding-bottom: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@each $size in $box-sizes { |
||||||
|
@each $side in top right bottom left { |
||||||
|
.m-#{str-slice($side, 0, 1)}-#{$size} { |
||||||
|
margin-#{$side}: #{$size}px; |
||||||
|
} |
||||||
|
@if $size >= 0 { |
||||||
|
.p-#{str-slice($side, 0, 1)}-#{$size} { |
||||||
|
padding-#{$side}: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
@each $type in default, auto, crosshair, pointer, move, text, wait, help { |
||||||
|
.cursor-#{$type} { |
||||||
|
cursor: $type; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@each $type in inherit, none, inline, inline-block, block, table, inline-table, table-cell { |
||||||
|
.d-#{$type} { |
||||||
|
display: #{$type}; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.hide { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
|
||||||
|
.show { |
||||||
|
display: block |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
.flex { |
||||||
|
display: flex; |
||||||
|
} |
||||||
|
|
||||||
|
.flex-column { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
|
||||||
|
.j-start { |
||||||
|
justify-content: flex-start; |
||||||
|
} |
||||||
|
.j-end { |
||||||
|
justify-content: flex-end; |
||||||
|
} |
||||||
|
.j-center { |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
|
.j-between { |
||||||
|
justify-content: space-between; |
||||||
|
} |
||||||
|
.j-around { |
||||||
|
justify-content: space-around; |
||||||
|
} |
||||||
|
|
||||||
|
.a-start { |
||||||
|
align-items: flex-start; |
||||||
|
} |
||||||
|
|
||||||
|
.a-center { |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
|
||||||
|
.a-end { |
||||||
|
align-items: flex-end; |
||||||
|
} |
||||||
|
|
||||||
|
@each $type in nowrap, wrap, wrap-reverse { |
||||||
|
.flex-#{$type} { |
||||||
|
flex-wrap: $type; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@each $size in 1, 2, 3 { |
||||||
|
.flex-#{$size} { |
||||||
|
flex: $size; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $i from 0 through 3 { |
||||||
|
.flex-s-#{$i} { |
||||||
|
flex-shrink: $i; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
.cl { |
||||||
|
&:before, &:after { |
||||||
|
content: ' '; |
||||||
|
display: table; |
||||||
|
} |
||||||
|
&:after { |
||||||
|
clear: both; |
||||||
|
} |
||||||
|
} |
||||||
|
.fl { |
||||||
|
float: left; |
||||||
|
} |
||||||
|
|
||||||
|
.fr { |
||||||
|
float: right; |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@for $size from 0 through $font-size-em-through { |
||||||
|
.fs-em-#{$size} { |
||||||
|
font-size: #{$size}em; |
||||||
|
} |
||||||
|
@if $size <= $font-size-em-decimal-through { |
||||||
|
@for $i from 0 to 10 { |
||||||
|
.fs-em-#{$size}_#{$i} { |
||||||
|
font-size: #{$size}#{'.'}#{$i}em; |
||||||
|
} |
||||||
|
} |
||||||
|
} @else { |
||||||
|
.fs-em-#{$size}_5 { |
||||||
|
font-size: #{$size}#{'.5'}em; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $size from 0 through $font-size-rem-through { |
||||||
|
.fs-rem-#{$size} { |
||||||
|
font-size: #{$size}rem; |
||||||
|
} |
||||||
|
@if $size <= $font-size-rem-decimal-through { |
||||||
|
@for $i from 0 to 10 { |
||||||
|
.fs-rem-#{$size}_#{$i} { |
||||||
|
font-size: #{$size}#{'.'}#{$i}rem; |
||||||
|
} |
||||||
|
} |
||||||
|
} @else { |
||||||
|
.fs-rem-#{$size}_5 { |
||||||
|
font-size: #{$size}#{'.5'}rem; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $size from 12 through $font-size-px-through { |
||||||
|
.fs-#{$size} { |
||||||
|
font-size: #{$size}px; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
.bold { |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
|
||||||
|
.normal { |
||||||
|
font-weight: normal; |
||||||
|
} |
||||||
|
|
||||||
|
.lighter { |
||||||
|
font-weight: lighter; |
||||||
|
} |
||||||
|
|
||||||
|
@each $weight in 100, 200, 300, 400, 500, 600, 700, 800, 900 { |
||||||
|
.fw-#{$weight} { |
||||||
|
font-weight: $weight; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
/*! |
||||||
|
* quickly-css |
||||||
|
* Github: https://gitee.com/zj1024/quickly-css |
||||||
|
* Author: zhangjing |
||||||
|
*/ |
||||||
|
@import "reset"; |
||||||
|
|
||||||
|
@import "background"; |
||||||
|
@import "border"; |
||||||
|
@import "box"; |
||||||
|
@import "cursor"; |
||||||
|
@import "display"; |
||||||
|
@import "flex"; |
||||||
|
@import "float"; |
||||||
|
@import "font-size"; |
||||||
|
@import "font-weight"; |
||||||
|
@import "line-height"; |
||||||
|
@import "link"; |
||||||
|
@import "overflow"; |
||||||
|
@import "position"; |
||||||
|
@import "size"; |
||||||
|
@import "text-align"; |
||||||
|
@import "text-color"; |
||||||
|
@import "vertical-align"; |
||||||
|
@import "visibility"; |
||||||
|
@import "white-space"; |
||||||
|
|
||||||
|
@import "style"; |
@ -0,0 +1,24 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@for $size from 0 through $line-height-through { |
||||||
|
.l-h-#{$size} { |
||||||
|
line-height: #{$size}em; |
||||||
|
} |
||||||
|
@if $size <= $line-height-decimal-through { |
||||||
|
@for $i from 0 to 10 { |
||||||
|
.l-h-#{$size}_#{$i} { |
||||||
|
line-height: #{$size}#{'.'}#{$i}em; |
||||||
|
} |
||||||
|
} |
||||||
|
} @else { |
||||||
|
.l-h-#{$size}_5 { |
||||||
|
line-height: #{$size}#{'.5'}em; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $size from 0 through $line-height-px-through { |
||||||
|
.lh-#{$size} { |
||||||
|
line-height: #{$size}px; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@each $name, $color in $text-colors { |
||||||
|
.link-#{$name} { |
||||||
|
color: $color; |
||||||
|
text-decoration: none; |
||||||
|
cursor: pointer; |
||||||
|
&:hover, &:active, &:focus { |
||||||
|
color: darken($color, 10%); |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
@each $type in visible, hidden, scroll, auto, inherit { |
||||||
|
.o-#{$type} { |
||||||
|
overflow: $type; |
||||||
|
} |
||||||
|
.o-x-#{$type} { |
||||||
|
overflow-x: $type; |
||||||
|
} |
||||||
|
.o-y-#{$type} { |
||||||
|
overflow-y: $type; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
|
||||||
|
@import "var"; |
||||||
|
|
||||||
|
@each $type in static, relative, absolute, fixed, sticky { |
||||||
|
.#{$type} { |
||||||
|
position: $type; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@each $size in $box-sizes { |
||||||
|
@each $side in top, right, bottom, left { |
||||||
|
.#{$side}-#{$size} { |
||||||
|
#{$side}: #{$size}px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
.w-full { |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
.h-full { |
||||||
|
height: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
@for $percent from 0 to 100 { |
||||||
|
.w-p-#{$percent} { |
||||||
|
width: #{$percent}#{'%'}; |
||||||
|
} |
||||||
|
.h-p-#{$percent} { |
||||||
|
height: #{$percent}#{'%'}; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@for $i from 1 through 30 { |
||||||
|
.h-#{$i} { |
||||||
|
height: #{$i}px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@for $i from 1 through 30 { |
||||||
|
.w-#{$i} { |
||||||
|
width: #{$i}px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@each $i in $sizes { |
||||||
|
.w-#{$i} { |
||||||
|
width: #{$i}px; |
||||||
|
} |
||||||
|
.h-#{$i} { |
||||||
|
height: #{$i}px; |
||||||
|
} |
||||||
|
.max-w-#{$i} { |
||||||
|
max-width: #{$i}px; |
||||||
|
} |
||||||
|
.max-h-#{$i} { |
||||||
|
max-height: #{$i}px; |
||||||
|
} |
||||||
|
.min-w-#{$i} { |
||||||
|
min-width: #{$i}px; |
||||||
|
} |
||||||
|
.min-h-#{$i} { |
||||||
|
min-height: #{$i}px; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
/** |
||||||
|
* 任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit" |
||||||
|
*/ |
||||||
|
@each $type in left, right, center, justify, inherit { |
||||||
|
.text-#{$type} { |
||||||
|
text-align: #{$type}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
@import "var"; |
||||||
|
|
||||||
|
@each $name, $color in $text-colors { |
||||||
|
.text-#{$name} { |
||||||
|
color: $color; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
$types: (baseline, sub, super, top, text-top, middle, bottom, text-bottom, inherit); |
||||||
|
|
||||||
|
@each $type in $types { |
||||||
|
.v-a-#{$type} { |
||||||
|
vertical-align: $type; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
.visible { |
||||||
|
visibility: visible; |
||||||
|
} |
||||||
|
|
||||||
|
.hidden { |
||||||
|
visibility: hidden; |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
@each $type in normal, nowrap, pre, pre-wrap, pre-line { |
||||||
|
.text-#{$type} { |
||||||
|
white-space: $type; |
||||||
|
} |
||||||
|
} |
@ -1,2 +0,0 @@ |
|||||||
@listBackgroundColor: #f0f0f0; |
|
||||||
@actionBackgroundColor: #fff; |
|