Commit fd4a2ece76cf5e944384fbaa34371c765b3bd43d

Authored by zhangdaihao
1 parent 594c3058

jeecgboot 1.1 稳定版本发布

Showing 376 changed files with 48764 additions and 7499 deletions

Too many changes to show.

To preserve performance only 33 of 376 files are displayed.

.gitattributes 0 → 100644
  1 +*.js linguist-language=Java
  2 +*.css linguist-language=Java
  3 +*.html linguist-language=Java
  4 +*.vue linguist-language=Java
... ...
README.md
1 1 Jeecg-Boot 快速开发平台(前后端分离版本)
2 2 ===============
3 3  
4   -当前最新版本: 1.0(发布日期:20190304
  4 +当前最新版本: 1.1(发布日期:20190415
5 5  
6 6 项目介绍:
7 7 -----------------------------------
... ... @@ -69,7 +69,7 @@ JeecgBoot的宗旨是降低前后端分离的开发成本,提高UI能力的同
69 69  
70 70 - 学习思路 : [跟着我们零基础学习前后端分离开发](http://jeecg-boot.mydoc.io/?t=340820)
71 71  
72   -- 常见问题 : [http://www.jeecg.org/forum.php?mod=viewthread&tid=7816&page=1&extra=#pid21237](http://www.jeecg.org/forum.php?mod=viewthread&tid=7816&page=1&extra=#pid21237)
  72 +- 常见问题 : [新手入门必看,汇总了常见各种问题](http://www.jeecg.org/forum.php?mod=viewthread&tid=7816&page=1&extra=#pid21237)
73 73  
74 74 - Angular版本 :[如果你更熟悉Angular,请点击这里找到jeecg-boot的对应版本](https://gitee.com/dangzhenghui/jeecg-boot)
75 75  
... ... @@ -79,30 +79,87 @@ JeecgBoot的宗旨是降低前后端分离的开发成本,提高UI能力的同
79 79 ├─系统管理
80 80 │ ├─用户管理
81 81 │ ├─角色管理
82   -│ ├─菜单管理(权限设置)
  82 +│ ├─菜单管理
  83 +│ ├─权限设置(支持按钮权限、数据权限)
83 84 │ ├─部门管理
84 85 │ └─字典管理
85 86 ├─智能化功能
86   -│ ├─代码生成器功能(一键生成,包括前端页面也可以生成,绝对是后端开发福音)
  87 +│ ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
  88 +│ ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
  89 +│ ├─代码生成器模板(生成代码,自带excel导入导出)
  90 +│ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
  91 +│ ├─高级查询器(弹窗自动组合查询条件)
  92 +│ ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
  93 +│ ├─平台移动自适应支持
  94 +├─Online在线开发
  95 +│ ├─Online在线表单
  96 +│ ├─Online在线图表
  97 +│ ├─Online在线报表
  98 +│ ├─消息中心(支持短信、邮件、微信推送等等)
87 99 ├─系统监控
  100 +│ ├─性能扫描监控
  101 +│ │ ├─监控 Redis
  102 +│ │ ├─Tomcat
  103 +│ │ ├─jvm
  104 +│ │ ├─服务器信息
  105 +│ │ ├─请求追踪
88 106 │ ├─定时任务
89 107 │ ├─系统日志
  108 +│ ├─数据日志(记录数据变更情况,可进行版本对比查看数据变更记录)
90 109 │ ├─系统通知
91 110 │ ├─SQL监控
92 111 │ ├─swagger-ui(在线接口文档)
  112 +│─报表示例
  113 +│ ├─曲线图
  114 +│ └─饼状图
  115 +│ └─柱状图
  116 +│ └─折线图
  117 +│ └─面积图
  118 +│ └─雷达图
  119 +│ └─仪表图
  120 +│ └─进度条
  121 +│ └─排名列表
  122 +│ └─等等
93 123 │─常用示例
94 124 │ ├─单表模型例子
95 125 │ └─一对多模型例子
96 126 │ └─打印例子
97 127 │ └─一对多TAB例子
  128 +│ └─内嵌table例子
  129 +│ └─常用选择组件
  130 +│ └─一对多JEditable
  131 +│ └─接口模拟测试
  132 +│ └─一对多JEditable
  133 +│─封装通用组件
  134 +│ ├─行编辑表格JEditableTable
  135 +│ └─省略显示组件
  136 +│ └─时间控件
  137 +│ └─高级查询
  138 +│ └─通用选择用户组件
  139 +│ └─通过组织机构选择用户组件
  140 +│ └─报表组件封装
  141 +│ └─等等组件
98 142 │─更多页面模板
99 143 │ ├─各种高级表单
100 144 │ ├─各种列表效果
101 145 │ └─结果页面
102 146 │ └─异常页面
103 147 │ └─个人页面
  148 +│─流程模块功能(暂未开源)
  149 +│ ├─在线流程设计
  150 +│ ├─在线表单设计
  151 +│ └─我的任务
  152 +│ └─历史流程
  153 +│ └─历史流程
  154 +│ └─流程实例管理
  155 +│ └─流程监听管理
  156 +│ └─流程表达式
  157 +│ └─我发起的流程
  158 +│ └─我的抄送
  159 +│ └─流程委派、抄送、跳转
  160 +│ └─。。。
104 161 └─其他模块
105   - └─其他
  162 + └─更多功能开发中。。
106 163  
107 164 ```
108 165  
... ... @@ -110,19 +167,31 @@ JeecgBoot的宗旨是降低前后端分离的开发成本,提高UI能力的同
110 167  
111 168 系统效果
112 169 ----
113   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25154007_icdX.png "在这里输入图片标题")
114   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25153956_Q752.png "在这里输入图片标题")
115   -![输入图片说明](https://static.oschina.net/uploads/img/201901/07154149_555Q.png "在这里输入图片标题")
116   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25154209_qlCg.png "在这里输入图片标题")
117   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25154251_XoW9.png "在这里输入图片标题")
118   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25154331_0ndT.png "在这里输入图片标题")
119   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25154414_ckFS.png "在这里输入图片标题")
120   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25155155_Hm6H.png "在这里输入图片标题")
121   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25155213_T04n.png "在这里输入图片标题")
122   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25155224_MRLU.png "在这里输入图片标题")
123   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25155234_7zCP.png "在这里输入图片标题")
124   -![输入图片说明](https://static.oschina.net/uploads/img/201902/25155242_K7Sw.png "在这里输入图片标题")
125 170  
  171 +![输入图片说明](https://static.oschina.net/uploads/img/201902/25154007_icdX.png "在这里输入图片标题")
  172 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14155402_AmlV.png "在这里输入图片标题")
  173 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160623_8fwk.png "在这里输入图片标题")
  174 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
  175 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160643_kCJ7.png "在这里输入图片标题")
  176 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160650_fcgw.png "在这里输入图片标题")
  177 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160657_cHwb.png "在这里输入图片标题")
  178 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160705_NAJn.png "在这里输入图片标题")
  179 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160751_bsO9.png "在这里输入图片标题")
  180 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160801_2AhS.png "在这里输入图片标题")
  181 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160813_KmXS.png "在这里输入图片标题")
  182 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160828_pkFr.png "在这里输入图片标题")
  183 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160834_Lo23.png "在这里输入图片标题")
  184 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160842_QK7B.png "在这里输入图片标题")
  185 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160849_GBm5.png "在这里输入图片标题")
  186 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160858_6RAM.png "在这里输入图片标题")
  187 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160905_RGJ5.png "在这里输入图片标题")
  188 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
  189 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160926_PUDV.png "在这里输入图片标题")
  190 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160935_Nibs.png "在这里输入图片标题")
  191 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160947_gfoN.png "在这里输入图片标题")
  192 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14160957_hN3X.png "在这里输入图片标题")
  193 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14161004_bxQ4.png "在这里输入图片标题")
  194 +![输入图片说明](https://static.oschina.net/uploads/img/201904/14161013_zW5n.png "在这里输入图片标题")
126 195  
127 196  
128 197  
... ... @@ -134,7 +203,7 @@ JeecgBoot的宗旨是降低前后端分离的开发成本,提高UI能力的同
134 203 - jdk8
135 204 - mysql
136 205 - redis
137   -- 数据库脚步:jeecg-boot\docs\dbsys-init-20190225.sql
  206 +- 数据库脚步:jeecg-boot\docs\jeecg-boot_1.1.0-20190415.sql
138 207 - 默认登录账号: admin/123456
139 208  
140 209  
... ...
ant-design-jeecg-vue/README.md
1   -Jeecg-Boot 快速开发平台(前后端分离版本)
2   -===============
  1 +Ant Design Jeecg Vue
  2 +====
3 3  
4   -当前最新版本: 1.0(发布日期:20190225)
  4 +当前最新版本: 1.1(发布日期:20190415)
5 5  
6   -项目介绍:
7   ------------------------------------
8   -Jeecg-boot 一个全新的版本,采用前后端分离方案,提供强大代码生成器的快速开发平台。
  6 +Overview
  7 +----
  8 +
  9 +基于 [Ant Design of Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) 实现的 Ant Design Pro Vue 版
  10 +Jeecg-boot 的前段UI框架,采用前后端分离方案,提供强大代码生成器的快速开发平台。
9 11 前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大!!
10 12  
11 13  
... ...
ant-design-jeecg-vue/package.json
1 1 {
2   - "name": "vue-antd-pro",
3   - "version": "1.1.0",
  2 + "name": "vue-antd-jeecg",
  3 + "version": "1.0.2",
4 4 "private": true,
5 5 "scripts": {
6 6 "serve": "vue-cli-service serve --open",
... ... @@ -11,7 +11,9 @@
11 11 },
12 12 "dependencies": {
13 13 "@antv/data-set": "^0.10.1",
  14 + "@tinymce/tinymce-vue": "^2.0.0",
14 15 "ant-design-vue": "^1.3.1",
  16 + "apexcharts": "^3.6.5",
15 17 "axios": "^0.18.0",
16 18 "dayjs": "^1.8.0",
17 19 "enquire.js": "^2.1.6",
... ... @@ -20,13 +22,15 @@
20 22 "lodash.pick": "^4.4.0",
21 23 "md5": "^2.2.1",
22 24 "nprogress": "^0.2.0",
  25 + "tinymce": "^5.0.2",
23 26 "viser-vue": "^2.4.4",
24 27 "vue": "^2.5.22",
  28 + "vue-apexcharts": "^1.3.2",
25 29 "vue-class-component": "^6.0.0",
26 30 "vue-cropper": "^0.4.8",
27 31 "vue-i18n": "^8.7.0",
28 32 "vue-ls": "^3.2.0",
29   - "vue-print-nb": "^1.0.3",
  33 + "vue-print-nb-jeecg": "^1.0.5",
30 34 "vue-property-decorator": "^7.3.0",
31 35 "vue-router": "^3.0.1",
32 36 "vuex": "^3.0.1",
... ...
ant-design-jeecg-vue/public/color.less
... ... @@ -2175,9 +2175,8 @@ this.tinycolor = tinycolor;
2175 2175 .globalFooter .copyright {
2176 2176 color: rgba(0, 0, 0, 0.45);
2177 2177 }
2178   -.header {
2179   - background: #fff;
2180   - box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
  2178 +.layout .header {
  2179 + background-color: @primary-color !important;
2181 2180 }
2182 2181 i.trigger:hover {
2183 2182 background: rgba(0, 0, 0, 0.025);
... ... @@ -2342,24 +2341,22 @@ i.trigger:hover {
2342 2341 border-radius: 2px;
2343 2342 color: #fff;
2344 2343 }
2345   -.logo {
2346   -}
2347 2344 .logo h1 {
2348 2345 color: white;
2349 2346 }
2350 2347 .sider {
2351   - box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
  2348 + box-shadow: 2px 116px 6px rgba(0, 21, 41, 0.35);
2352 2349 }
2353 2350 .sider.light {
2354   - box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05);
  2351 + box-shadow: 2px 116px 8px 0 rgba(29, 35, 41, 0.05);
2355 2352 background-color: white;
2356 2353 }
2357 2354 .sider.light .logo {
2358   - background: white;
  2355 + background-color: @primary-color !important;
2359 2356 box-shadow: 1px 1px 0 0 #e8e8e8;
2360 2357 }
2361 2358 .sider.light .logo h1 {
2362   - color: @primary-color;
  2359 + color: white;
2363 2360 }
2364 2361 .sider.light :global(.ant-menu-light) {
2365 2362 border-right-color: transparent;
... ... @@ -6808,7 +6805,7 @@ tr.ant-table-expanded-row:hover {
6808 6805 }
6809 6806 .ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active {
6810 6807 background: #fff;
6811   - border-color: #e8e8e8;
  6808 + border-color: @primary-color !important;
6812 6809 color: @primary-color;
6813 6810 }
6814 6811 .ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x {
... ...
ant-design-jeecg-vue/public/goright.png 0 → 100644

1.08 KB

ant-design-jeecg-vue/public/index.html
... ... @@ -5,7 +5,7 @@
5 5 <meta charset="utf-8">
6 6 <meta http-equiv="X-UA-Compatible" content="IE=edge">
7 7 <meta name="viewport" content="width=device-width,initial-scale=1.0">
8   - <title>Jeecg-Boot 快速开发平台(Ant Design Vue)</title>
  8 + <title>Jeecg-Boot 快速开发平台</title>
9 9 <link rel="icon" href="<%= BASE_URL %>logo.png">
10 10 <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.2.5/polyfill.js"></script>
11 11 <style>
... ... @@ -219,6 +219,12 @@
219 219 opacity: 0.5;
220 220 }
221 221 </style>
  222 + <!-- 全局配置 -->
  223 + <script>
  224 + window._CONFIG = {};
  225 + window._CONFIG['domianURL'] = 'http://localhost:8080/jeecg-boot';
  226 + window._CONFIG['imgDomainURL'] = 'http://localhost:8080/jeecg-boot/sys/common/view';
  227 + </script>
222 228 </head>
223 229  
224 230 <body>
... ... @@ -228,7 +234,7 @@
228 234 <div id="loader"></div>
229 235 <div class="loader-section section-left"></div>
230 236 <div class="loader-section section-right"></div>
231   - <div class="load_title">正在加载 Jeecg-Boot 快速开发平台(Ant Design Vue),请耐心等待
  237 + <div class="load_title">正在加载 Jeecg-Boot 快速开发平台,请耐心等待
232 238  
233 239 </div>
234 240 </div>
... ...
ant-design-jeecg-vue/public/logo.png

19.8 KB | W: 200px | H: 200px

3.2 KB | W: 74px | H: 75px

  • 2-up
  • Swipe
  • Onion skin
ant-design-jeecg-vue/public/tinymce/langs/zh_CN.js 0 → 100644
  1 +tinymce.addI18n('zh_CN',{
  2 +"Redo": "\u91cd\u590d",
  3 +"Undo": "\u64a4\u6d88",
  4 +"Cut": "\u526a\u5207",
  5 +"Copy": "\u590d\u5236",
  6 +"Paste": "\u7c98\u8d34",
  7 +"Select all": "\u5168\u9009",
  8 +"New document": "\u65b0\u6587\u6863",
  9 +"Ok": "\u786e\u5b9a",
  10 +"Cancel": "\u53d6\u6d88",
  11 +"Visual aids": "\u7f51\u683c\u7ebf",
  12 +"Bold": "\u7c97\u4f53",
  13 +"Italic": "\u659c\u4f53",
  14 +"Underline": "\u4e0b\u5212\u7ebf",
  15 +"Strikethrough": "\u5220\u9664\u7ebf",
  16 +"Superscript": "\u4e0a\u6807",
  17 +"Subscript": "\u4e0b\u6807",
  18 +"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
  19 +"Align left": "\u5de6\u5bf9\u9f50",
  20 +"Align center": "\u5c45\u4e2d",
  21 +"Align right": "\u53f3\u5bf9\u9f50",
  22 +"Justify": "\u4e24\u7aef\u5bf9\u9f50",
  23 +"Bullet list": "\u9879\u76ee\u7b26\u53f7",
  24 +"Numbered list": "\u7f16\u53f7\u5217\u8868",
  25 +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
  26 +"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
  27 +"Close": "\u5173\u95ed",
  28 +"Formats": "\u683c\u5f0f",
  29 +"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",
  30 +"Headers": "\u6807\u9898",
  31 +"Header 1": "\u6807\u98981",
  32 +"Header 2": "\u6807\u98982",
  33 +"Header 3": "\u6807\u98983",
  34 +"Header 4": "\u6807\u98984",
  35 +"Header 5": "\u6807\u98985",
  36 +"Header 6": "\u6807\u98986",
  37 +"Headings": "\u6807\u9898",
  38 +"Heading 1": "\u6807\u98981",
  39 +"Heading 2": "\u6807\u98982",
  40 +"Heading 3": "\u6807\u98983",
  41 +"Heading 4": "\u6807\u98984",
  42 +"Heading 5": "\u6807\u98985",
  43 +"Heading 6": "\u6807\u98986",
  44 +"Preformatted": "\u9884\u683c\u5f0f\u5316",
  45 +"Div": "Div\u533a\u5757",
  46 +"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
  47 +"Code": "\u4ee3\u7801",
  48 +"Paragraph": "\u6bb5\u843d",
  49 +"Blockquote": "\u5f15\u7528",
  50 +"Inline": "\u6587\u672c",
  51 +"Blocks": "\u533a\u5757",
  52 +"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",
  53 +"Font Family": "\u5b57\u4f53",
  54 +"Font Sizes": "\u5b57\u53f7",
  55 +"Class": "Class",
  56 +"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
  57 +"OR": "\u6216",
  58 +"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
  59 +"Upload": "\u4e0a\u4f20",
  60 +"Block": "\u5757",
  61 +"Align": "\u5bf9\u9f50",
  62 +"Default": "\u9ed8\u8ba4",
  63 +"Circle": "\u7a7a\u5fc3\u5706",
  64 +"Disc": "\u5b9e\u5fc3\u5706",
  65 +"Square": "\u65b9\u5757",
  66 +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
  67 +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
  68 +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
  69 +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
  70 +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
  71 +"Anchor": "\u951a\u70b9",
  72 +"Name": "\u540d\u79f0",
  73 +"Id": "\u6807\u8bc6\u7b26",
  74 +"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",
  75 +"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",
  76 +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
  77 +"Special character": "\u7279\u6b8a\u7b26\u53f7",
  78 +"Source code": "\u6e90\u4ee3\u7801",
  79 +"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
  80 +"Language": "\u8bed\u8a00",
  81 +"Code sample": "\u4ee3\u7801\u793a\u4f8b",
  82 +"Color": "\u989c\u8272",
  83 +"R": "R",
  84 +"G": "G",
  85 +"B": "B",
  86 +"Left to right": "\u4ece\u5de6\u5230\u53f3",
  87 +"Right to left": "\u4ece\u53f3\u5230\u5de6",
  88 +"Emoticons": "\u8868\u60c5",
  89 +"Document properties": "\u6587\u6863\u5c5e\u6027",
  90 +"Title": "\u6807\u9898",
  91 +"Keywords": "\u5173\u952e\u8bcd",
  92 +"Description": "\u63cf\u8ff0",
  93 +"Robots": "\u673a\u5668\u4eba",
  94 +"Author": "\u4f5c\u8005",
  95 +"Encoding": "\u7f16\u7801",
  96 +"Fullscreen": "\u5168\u5c4f",
  97 +"Action": "\u64cd\u4f5c",
  98 +"Shortcut": "\u5feb\u6377\u952e",
  99 +"Help": "\u5e2e\u52a9",
  100 +"Address": "\u5730\u5740",
  101 +"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
  102 +"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
  103 +"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
  104 +"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
  105 +"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
  106 +"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
  107 +"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
  108 +"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
  109 +"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
  110 +"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
  111 +"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
  112 +"Plugins": "\u63d2\u4ef6",
  113 +"Handy Shortcuts": "\u5feb\u6377\u952e",
  114 +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
  115 +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
  116 +"Image description": "\u56fe\u7247\u63cf\u8ff0",
  117 +"Source": "\u5730\u5740",
  118 +"Dimensions": "\u5927\u5c0f",
  119 +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
  120 +"General": "\u666e\u901a",
  121 +"Advanced": "\u9ad8\u7ea7",
  122 +"Style": "\u6837\u5f0f",
  123 +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
  124 +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
  125 +"Border": "\u8fb9\u6846",
  126 +"Insert image": "\u63d2\u5165\u56fe\u7247",
  127 +"Image": "\u56fe\u7247",
  128 +"Image list": "\u56fe\u7247\u5217\u8868",
  129 +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
  130 +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
  131 +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
  132 +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
  133 +"Edit image": "\u7f16\u8f91\u56fe\u7247",
  134 +"Image options": "\u56fe\u7247\u9009\u9879",
  135 +"Zoom in": "\u653e\u5927",
  136 +"Zoom out": "\u7f29\u5c0f",
  137 +"Crop": "\u88c1\u526a",
  138 +"Resize": "\u8c03\u6574\u5927\u5c0f",
  139 +"Orientation": "\u65b9\u5411",
  140 +"Brightness": "\u4eae\u5ea6",
  141 +"Sharpen": "\u9510\u5316",
  142 +"Contrast": "\u5bf9\u6bd4\u5ea6",
  143 +"Color levels": "\u989c\u8272\u5c42\u6b21",
  144 +"Gamma": "\u4f3d\u9a6c\u503c",
  145 +"Invert": "\u53cd\u8f6c",
  146 +"Apply": "\u5e94\u7528",
  147 +"Back": "\u540e\u9000",
  148 +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
  149 +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
  150 +"Insert link": "\u63d2\u5165\u94fe\u63a5",
  151 +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
  152 +"Text to display": "\u663e\u793a\u6587\u5b57",
  153 +"Url": "\u5730\u5740",
  154 +"Target": "\u6253\u5f00\u65b9\u5f0f",
  155 +"None": "\u65e0",
  156 +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
  157 +"Remove link": "\u5220\u9664\u94fe\u63a5",
  158 +"Anchors": "\u951a\u70b9",
  159 +"Link": "\u94fe\u63a5",
  160 +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
  161 +"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",
  162 +"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",
  163 +"Link list": "\u94fe\u63a5\u5217\u8868",
  164 +"Insert video": "\u63d2\u5165\u89c6\u9891",
  165 +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
  166 +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
  167 +"Alternative source": "\u955c\u50cf",
  168 +"Poster": "\u5c01\u9762",
  169 +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
  170 +"Embed": "\u5185\u5d4c",
  171 +"Media": "\u5a92\u4f53",
  172 +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
  173 +"Page break": "\u5206\u9875\u7b26",
  174 +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
  175 +"Preview": "\u9884\u89c8",
  176 +"Print": "\u6253\u5370",
  177 +"Save": "\u4fdd\u5b58",
  178 +"Find": "\u67e5\u627e",
  179 +"Replace with": "\u66ff\u6362\u4e3a",
  180 +"Replace": "\u66ff\u6362",
  181 +"Replace all": "\u5168\u90e8\u66ff\u6362",
  182 +"Prev": "\u4e0a\u4e00\u4e2a",
  183 +"Next": "\u4e0b\u4e00\u4e2a",
  184 +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
  185 +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
  186 +"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
  187 +"Whole words": "\u5168\u5b57\u5339\u914d",
  188 +"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
  189 +"Ignore": "\u5ffd\u7565",
  190 +"Ignore all": "\u5168\u90e8\u5ffd\u7565",
  191 +"Finish": "\u5b8c\u6210",
  192 +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
  193 +"Insert table": "\u63d2\u5165\u8868\u683c",
  194 +"Table properties": "\u8868\u683c\u5c5e\u6027",
  195 +"Delete table": "\u5220\u9664\u8868\u683c",
  196 +"Cell": "\u5355\u5143\u683c",
  197 +"Row": "\u884c",
  198 +"Column": "\u5217",
  199 +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
  200 +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
  201 +"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
  202 +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
  203 +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
  204 +"Delete row": "\u5220\u9664\u884c",
  205 +"Row properties": "\u884c\u5c5e\u6027",
  206 +"Cut row": "\u526a\u5207\u884c",
  207 +"Copy row": "\u590d\u5236\u884c",
  208 +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
  209 +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
  210 +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
  211 +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
  212 +"Delete column": "\u5220\u9664\u5217",
  213 +"Cols": "\u5217",
  214 +"Rows": "\u884c",
  215 +"Width": "\u5bbd",
  216 +"Height": "\u9ad8",
  217 +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
  218 +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
  219 +"Caption": "\u6807\u9898",
  220 +"Left": "\u5de6\u5bf9\u9f50",
  221 +"Center": "\u5c45\u4e2d",
  222 +"Right": "\u53f3\u5bf9\u9f50",
  223 +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
  224 +"Scope": "\u8303\u56f4",
  225 +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
  226 +"H Align": "\u6c34\u5e73\u5bf9\u9f50",
  227 +"V Align": "\u5782\u76f4\u5bf9\u9f50",
  228 +"Top": "\u9876\u90e8\u5bf9\u9f50",
  229 +"Middle": "\u5782\u76f4\u5c45\u4e2d",
  230 +"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
  231 +"Header cell": "\u8868\u5934\u5355\u5143\u683c",
  232 +"Row group": "\u884c\u7ec4",
  233 +"Column group": "\u5217\u7ec4",
  234 +"Row type": "\u884c\u7c7b\u578b",
  235 +"Header": "\u8868\u5934",
  236 +"Body": "\u8868\u4f53",
  237 +"Footer": "\u8868\u5c3e",
  238 +"Border color": "\u8fb9\u6846\u989c\u8272",
  239 +"Insert template": "\u63d2\u5165\u6a21\u677f",
  240 +"Templates": "\u6a21\u677f",
  241 +"Template": "\u6a21\u677f",
  242 +"Text color": "\u6587\u5b57\u989c\u8272",
  243 +"Background color": "\u80cc\u666f\u8272",
  244 +"Custom...": "\u81ea\u5b9a\u4e49...",
  245 +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
  246 +"No color": "\u65e0",
  247 +"Table of Contents": "\u5185\u5bb9\u5217\u8868",
  248 +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
  249 +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
  250 +"Words: {0}": "\u5b57\u6570\uff1a{0}",
  251 +"{0} words": "{0} \u5b57",
  252 +"File": "\u6587\u4ef6",
  253 +"Edit": "\u7f16\u8f91",
  254 +"Insert": "\u63d2\u5165",
  255 +"View": "\u89c6\u56fe",
  256 +"Format": "\u683c\u5f0f",
  257 +"Table": "\u8868\u683c",
  258 +"Tools": "\u5de5\u5177",
  259 +"Powered by {0}": "\u7531{0}\u9a71\u52a8",
  260 +"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"
  261 +});
0 262 \ No newline at end of file
... ...
ant-design-jeecg-vue/public/tinymce/skins/lightgray/content.min.css 0 → 100644
  1 +/**
  2 + * Copyright (c) Tiny Technologies, Inc. All rights reserved.
  3 + * Licensed under the LGPL or a commercial license.
  4 + * For LGPL see License.txt in the project root for license information.
  5 + * For commercial licenses see https://www.tiny.cloud/
  6 + */
  7 +.mce-content-body .mce-item-anchor {
  8 + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
  9 + cursor: default;
  10 + display: inline-block;
  11 + height: 12px !important;
  12 + padding: 0 2px;
  13 + -webkit-user-modify: read-only;
  14 + -moz-user-modify: read-only;
  15 + -webkit-user-select: all;
  16 + -moz-user-select: all;
  17 + -ms-user-select: all;
  18 + user-select: all;
  19 + width: 8px !important;
  20 +}
  21 +.mce-content-body .mce-item-anchor[data-mce-selected] {
  22 + outline-offset: 1px;
  23 +}
  24 +.tox-comments-visible .tox-comment {
  25 + background-color: #fff0b7;
  26 +}
  27 +.tox-comments-visible .tox-comment--active {
  28 + background-color: #ffe168;
  29 +}
  30 +.tox-checklist > li:not(.tox-checklist--hidden) {
  31 + list-style: none;
  32 + margin: .25em 0;
  33 + position: relative;
  34 +}
  35 +.tox-checklist > li:not(.tox-checklist--hidden)::before {
  36 + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
  37 + background-size: 100%;
  38 + content: '';
  39 + cursor: pointer;
  40 + height: 1em;
  41 + left: -1.5em;
  42 + position: absolute;
  43 + top: .125em;
  44 + width: 1em;
  45 +}
  46 +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
  47 + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
  48 +}
  49 +/* stylelint-disable */
  50 +/* http://prismjs.com/ */
  51 +/**
  52 + * prism.js default theme for JavaScript, CSS and HTML
  53 + * Based on dabblet (http://dabblet.com)
  54 + * @author Lea Verou
  55 + */
  56 +code[class*="language-"],
  57 +pre[class*="language-"] {
  58 + color: black;
  59 + text-shadow: 0 1px white;
  60 + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
  61 + font-size: .875rem;
  62 + direction: ltr;
  63 + text-align: left;
  64 + white-space: pre;
  65 + word-spacing: normal;
  66 + word-break: normal;
  67 + word-wrap: normal;
  68 + line-height: 1.5;
  69 + -moz-tab-size: 4;
  70 + tab-size: 4;
  71 + -webkit-hyphens: none;
  72 + -ms-hyphens: none;
  73 + hyphens: none;
  74 +}
  75 +pre[class*="language-"]::-moz-selection,
  76 +pre[class*="language-"] ::-moz-selection,
  77 +code[class*="language-"]::-moz-selection,
  78 +code[class*="language-"] ::-moz-selection {
  79 + text-shadow: none;
  80 + background: #b3d4fc;
  81 +}
  82 +pre[class*="language-"]::selection,
  83 +pre[class*="language-"] ::selection,
  84 +code[class*="language-"]::selection,
  85 +code[class*="language-"] ::selection {
  86 + text-shadow: none;
  87 + background: #b3d4fc;
  88 +}
  89 +@media print {
  90 + code[class*="language-"],
  91 + pre[class*="language-"] {
  92 + text-shadow: none;
  93 + }
  94 +}
  95 +/* Code blocks */
  96 +pre[class*="language-"] {
  97 + padding: 1em;
  98 + margin: .5em 0;
  99 + overflow: auto;
  100 +}
  101 +:not(pre) > code[class*="language-"],
  102 +pre[class*="language-"] {
  103 + background: transparent !important;
  104 + border: 1px solid #ccc;
  105 +}
  106 +/* Inline code */
  107 +:not(pre) > code[class*="language-"] {
  108 + padding: .1em;
  109 + border-radius: .3em;
  110 +}
  111 +.token.comment,
  112 +.token.prolog,
  113 +.token.doctype,
  114 +.token.cdata {
  115 + color: slategray;
  116 +}
  117 +.token.punctuation {
  118 + color: #999;
  119 +}
  120 +.namespace {
  121 + opacity: .7;
  122 +}
  123 +.token.property,
  124 +.token.tag,
  125 +.token.boolean,
  126 +.token.number,
  127 +.token.constant,
  128 +.token.symbol,
  129 +.token.deleted {
  130 + color: #905;
  131 +}
  132 +.token.selector,
  133 +.token.attr-name,
  134 +.token.string,
  135 +.token.char,
  136 +.token.builtin,
  137 +.token.inserted {
  138 + color: #690;
  139 +}
  140 +.token.operator,
  141 +.token.entity,
  142 +.token.url,
  143 +.language-css .token.string,
  144 +.style .token.string {
  145 + color: #a67f59;
  146 + background: rgba(255, 255, 255, 0.5);
  147 +}
  148 +.token.atrule,
  149 +.token.attr-value,
  150 +.token.keyword {
  151 + color: #07a;
  152 +}
  153 +.token.function {
  154 + color: #DD4A68;
  155 +}
  156 +.token.regex,
  157 +.token.important,
  158 +.token.variable {
  159 + color: #e90;
  160 +}
  161 +.token.important,
  162 +.token.bold {
  163 + font-weight: bold;
  164 +}
  165 +.token.italic {
  166 + font-style: italic;
  167 +}
  168 +.token.entity {
  169 + cursor: help;
  170 +}
  171 +/* stylelint-enable */
  172 +.mce-content-body .mce-visual-caret {
  173 + background-color: black;
  174 + background-color: currentcolor;
  175 + position: absolute;
  176 +}
  177 +.mce-content-body .mce-visual-caret-hidden {
  178 + display: none;
  179 +}
  180 +.mce-content-body *[data-mce-caret] {
  181 + left: -1000px;
  182 + margin: 0;
  183 + padding: 0;
  184 + position: absolute;
  185 + right: auto;
  186 + top: 0;
  187 +}
  188 +.mce-content-body .mce-offscreen-selection {
  189 + left: -9999999999px;
  190 + max-width: 1000000px;
  191 + position: absolute;
  192 +}
  193 +.mce-content-body *[contentEditable=false] {
  194 + cursor: default;
  195 +}
  196 +.mce-content-body *[contentEditable=true] {
  197 + cursor: text;
  198 +}
  199 +.tox-cursor-format-painter {
  200 + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
  201 +}
  202 +.mce-content-body figure.align-left {
  203 + float: left;
  204 +}
  205 +.mce-content-body figure.align-right {
  206 + float: right;
  207 +}
  208 +.mce-content-body figure.image.align-center {
  209 + display: table;
  210 + margin-left: auto;
  211 + margin-right: auto;
  212 +}
  213 +.mce-preview-object {
  214 + border: 1px solid gray;
  215 + display: inline-block;
  216 + line-height: 0;
  217 + margin: 0 2px 0 2px;
  218 + position: relative;
  219 +}
  220 +.mce-preview-object .mce-shim {
  221 + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
  222 + height: 100%;
  223 + left: 0;
  224 + position: absolute;
  225 + top: 0;
  226 + width: 100%;
  227 +}
  228 +.mce-preview-object[data-mce-selected="2"] .mce-shim {
  229 + display: none;
  230 +}
  231 +.mce-object {
  232 + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
  233 + border: 1px dashed #aaa;
  234 +}
  235 +.mce-pagebreak {
  236 + border: 1px dashed #aaa;
  237 + cursor: default;
  238 + display: block;
  239 + height: 5px;
  240 + margin-top: 15px;
  241 + page-break-before: always;
  242 + width: 100%;
  243 +}
  244 +@media print {
  245 + .mce-pagebreak {
  246 + border: 0;
  247 + }
  248 +}
  249 +.tiny-pageembed .mce-shim {
  250 + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
  251 + height: 100%;
  252 + left: 0;
  253 + position: absolute;
  254 + top: 0;
  255 + width: 100%;
  256 +}
  257 +.tiny-pageembed[data-mce-selected="2"] .mce-shim {
  258 + display: none;
  259 +}
  260 +.tiny-pageembed {
  261 + display: inline-block;
  262 + position: relative;
  263 +}
  264 +.tiny-pageembed--21by9,
  265 +.tiny-pageembed--16by9,
  266 +.tiny-pageembed--4by3,
  267 +.tiny-pageembed--1by1 {
  268 + display: block;
  269 + overflow: hidden;
  270 + padding: 0;
  271 + position: relative;
  272 + width: 100%;
  273 +}
  274 +.tiny-pageembed--21by9::before,
  275 +.tiny-pageembed--16by9::before,
  276 +.tiny-pageembed--4by3::before,
  277 +.tiny-pageembed--1by1::before {
  278 + content: "";
  279 + display: block;
  280 +}
  281 +.tiny-pageembed--21by9::before {
  282 + padding-top: 42.857143%;
  283 +}
  284 +.tiny-pageembed--16by9::before {
  285 + padding-top: 56.25%;
  286 +}
  287 +.tiny-pageembed--4by3::before {
  288 + padding-top: 75%;
  289 +}
  290 +.tiny-pageembed--1by1::before {
  291 + padding-top: 100%;
  292 +}
  293 +.tiny-pageembed--21by9 iframe,
  294 +.tiny-pageembed--16by9 iframe,
  295 +.tiny-pageembed--4by3 iframe,
  296 +.tiny-pageembed--1by1 iframe {
  297 + border: 0;
  298 + height: 100%;
  299 + left: 0;
  300 + position: absolute;
  301 + top: 0;
  302 + width: 100%;
  303 +}
  304 +.mce-content-body div.mce-resizehandle {
  305 + background-color: #4099ff;
  306 + border-color: #4099ff;
  307 + border-style: solid;
  308 + border-width: 1px;
  309 + box-sizing: border-box;
  310 + height: 10px;
  311 + position: absolute;
  312 + width: 10px;
  313 + z-index: 10000;
  314 +}
  315 +.mce-content-body div.mce-resizehandle:hover {
  316 + background-color: #4099ff;
  317 +}
  318 +.mce-content-body div.mce-resizehandle:nth-of-type(1) {
  319 + cursor: nwse-resize;
  320 +}
  321 +.mce-content-body div.mce-resizehandle:nth-of-type(2) {
  322 + cursor: nesw-resize;
  323 +}
  324 +.mce-content-body div.mce-resizehandle:nth-of-type(3) {
  325 + cursor: nwse-resize;
  326 +}
  327 +.mce-content-body div.mce-resizehandle:nth-of-type(4) {
  328 + cursor: nesw-resize;
  329 +}
  330 +.mce-content-body .mce-clonedresizable {
  331 + opacity: .5;
  332 + outline: 1px dashed black;
  333 + position: absolute;
  334 + z-index: 10000;
  335 +}
  336 +.mce-content-body .mce-resize-helper {
  337 + background: #555;
  338 + background: rgba(0, 0, 0, 0.75);
  339 + border: 1px;
  340 + border-radius: 3px;
  341 + color: white;
  342 + display: none;
  343 + font-family: sans-serif;
  344 + font-size: 12px;
  345 + line-height: 14px;
  346 + margin: 5px 10px;
  347 + padding: 5px;
  348 + position: absolute;
  349 + white-space: nowrap;
  350 + z-index: 10001;
  351 +}
  352 +.mce-match-marker {
  353 + background: #aaa;
  354 + color: #fff;
  355 +}
  356 +.mce-match-marker-selected {
  357 + background: #39f;
  358 + color: #fff;
  359 +}
  360 +.mce-content-body img[data-mce-selected],
  361 +.mce-content-body table[data-mce-selected] {
  362 + outline: 3px solid #b4d7ff;
  363 +}
  364 +.mce-content-body hr[data-mce-selected] {
  365 + outline: 3px solid #b4d7ff;
  366 + outline-offset: 1px;
  367 +}
  368 +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
  369 + outline: 3px solid #b4d7ff;
  370 +}
  371 +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
  372 + outline: 3px solid #b4d7ff;
  373 +}
  374 +.mce-content-body *[contentEditable=false][data-mce-selected] {
  375 + cursor: not-allowed;
  376 + outline: 3px solid #b4d7ff;
  377 +}
  378 +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
  379 +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
  380 + outline: none;
  381 +}
  382 +.mce-content-body *[data-mce-selected="inline-boundary"] {
  383 + background-color: #b4d7ff;
  384 +}
  385 +.mce-content-body .mce-edit-focus {
  386 + outline: 3px solid #b4d7ff;
  387 +}
  388 +.mce-content-body td[data-mce-selected],
  389 +.mce-content-body th[data-mce-selected] {
  390 + background-color: #b4d7ff !important;
  391 +}
  392 +.mce-content-body td[data-mce-selected]::-moz-selection,
  393 +.mce-content-body th[data-mce-selected]::-moz-selection {
  394 + background: none;
  395 +}
  396 +.mce-content-body td[data-mce-selected]::selection,
  397 +.mce-content-body th[data-mce-selected]::selection {
  398 + background: none;
  399 +}
  400 +.mce-content-body td[data-mce-selected] *,
  401 +.mce-content-body th[data-mce-selected] * {
  402 + -webkit-touch-callout: none;
  403 + -webkit-user-select: none;
  404 + -moz-user-select: none;
  405 + -ms-user-select: none;
  406 + user-select: none;
  407 +}
  408 +.mce-content-body img::-moz-selection {
  409 + background: none;
  410 +}
  411 +.mce-content-body img::selection {
  412 + background: none;
  413 +}
  414 +.ephox-snooker-resizer-bar {
  415 + background-color: #b4d7ff;
  416 + opacity: 0;
  417 +}
  418 +.ephox-snooker-resizer-cols {
  419 + cursor: col-resize;
  420 +}
  421 +.ephox-snooker-resizer-rows {
  422 + cursor: row-resize;
  423 +}
  424 +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
  425 + opacity: 1;
  426 +}
  427 +.mce-spellchecker-word {
  428 + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.5'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
  429 + background-position: 0 calc(100% + 1px);
  430 + background-repeat: repeat-x;
  431 + background-size: auto 6px;
  432 + cursor: default;
  433 + height: 2rem;
  434 +}
  435 +.mce-spellchecker-grammar {
  436 + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23008800'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
  437 + background-position: 0 calc(100% + 1px);
  438 + background-repeat: repeat-x;
  439 + background-size: auto 6px;
  440 + cursor: default;
  441 +}
  442 +.mce-toc {
  443 + border: 1px solid gray;
  444 +}
  445 +.mce-toc h2 {
  446 + margin: 4px;
  447 +}
  448 +.mce-toc li {
  449 + list-style-type: none;
  450 +}
  451 +.mce-item-table,
  452 +.mce-item-table td,
  453 +.mce-item-table th,
  454 +.mce-item-table caption {
  455 + border: 1px dashed #bbb;
  456 +}
  457 +.mce-visualblocks p,
  458 +.mce-visualblocks h1,
  459 +.mce-visualblocks h2,
  460 +.mce-visualblocks h3,
  461 +.mce-visualblocks h4,
  462 +.mce-visualblocks h5,
  463 +.mce-visualblocks h6,
  464 +.mce-visualblocks div:not([data-mce-bogus]),
  465 +.mce-visualblocks section,
  466 +.mce-visualblocks article,
  467 +.mce-visualblocks blockquote,
  468 +.mce-visualblocks address,
  469 +.mce-visualblocks pre,
  470 +.mce-visualblocks figure,
  471 +.mce-visualblocks figcaption,
  472 +.mce-visualblocks hgroup,
  473 +.mce-visualblocks aside,
  474 +.mce-visualblocks ul,
  475 +.mce-visualblocks ol,
  476 +.mce-visualblocks dl {
  477 + background-repeat: no-repeat;
  478 + border: 1px dashed #bbb;
  479 + margin-left: 3px;
  480 + padding-top: 10px;
  481 +}
  482 +.mce-visualblocks p {
  483 + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
  484 +}
  485 +.mce-visualblocks h1 {
  486 + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
  487 +}
  488 +.mce-visualblocks h2 {
  489 + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
  490 +}
  491 +.mce-visualblocks h3 {
  492 + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
  493 +}
  494 +.mce-visualblocks h4 {
  495 + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
  496 +}
  497 +.mce-visualblocks h5 {
  498 + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
  499 +}
  500 +.mce-visualblocks h6 {
  501 + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
  502 +}
  503 +.mce-visualblocks div:not([data-mce-bogus]) {
  504 + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
  505 +}
  506 +.mce-visualblocks section {
  507 + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
  508 +}
  509 +.mce-visualblocks article {
  510 + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
  511 +}
  512 +.mce-visualblocks blockquote {
  513 + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
  514 +}
  515 +.mce-visualblocks address {
  516 + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
  517 +}
  518 +.mce-visualblocks pre {
  519 + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
  520 +}
  521 +.mce-visualblocks figure {
  522 + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
  523 +}
  524 +.mce-visualblocks figcaption {
  525 + border: 1px dashed #bbb;
  526 +}
  527 +.mce-visualblocks hgroup {
  528 + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
  529 +}
  530 +.mce-visualblocks aside {
  531 + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
  532 +}
  533 +.mce-visualblocks ul {
  534 + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
  535 +}
  536 +.mce-visualblocks ol {
  537 + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
  538 +}
  539 +.mce-visualblocks dl {
  540 + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
  541 +}
  542 +.mce-nbsp,
  543 +.mce-shy {
  544 + background: #aaa;
  545 +}
  546 +.mce-shy::after {
  547 + content: '-';
  548 +}
  549 +body {
  550 + font-family: sans-serif;
  551 +}
  552 +table {
  553 + border-collapse: collapse;
  554 +}
... ...
ant-design-jeecg-vue/public/tinymce/skins/lightgray/skin.min.css 0 → 100644
  1 +/**
  2 + * Copyright (c) Tiny Technologies, Inc. All rights reserved.
  3 + * Licensed under the LGPL or a commercial license.
  4 + * For LGPL see License.txt in the project root for license information.
  5 + * For commercial licenses see https://www.tiny.cloud/
  6 + */
  7 +.tox,
  8 +.tox *:not(svg) {
  9 + background: transparent;
  10 + border: 0;
  11 + box-sizing: content-box;
  12 + color: #222f3e;
  13 + cursor: auto;
  14 + direction: ltr;
  15 + float: none;
  16 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  17 + font-size: 16px;
  18 + font-style: normal;
  19 + font-weight: normal;
  20 + height: auto;
  21 + line-height: normal;
  22 + margin: 0;
  23 + max-width: none;
  24 + outline: 0;
  25 + padding: 0;
  26 + position: static;
  27 + -webkit-tap-highlight-color: transparent;
  28 + text-align: left;
  29 + text-decoration: none;
  30 + text-shadow: none;
  31 + text-transform: none;
  32 + vertical-align: initial;
  33 + white-space: normal;
  34 + width: auto;
  35 +}
  36 +.tox *:not(svg) {
  37 + color: inherit;
  38 + cursor: inherit;
  39 + font-size: inherit;
  40 +}
  41 +.tox-tinymce {
  42 + border: 1px solid #cccccc;
  43 + border-radius: 0;
  44 + box-shadow: none;
  45 + box-sizing: border-box;
  46 + display: flex;
  47 + flex-direction: column;
  48 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  49 + overflow: hidden;
  50 + visibility: inherit !important;
  51 +}
  52 +.tox-editor-container {
  53 + display: flex;
  54 + flex: 1 1 auto;
  55 + flex-direction: column;
  56 + overflow: hidden;
  57 +}
  58 +.tox-editor-container > *:first-child {
  59 + border-top: none !important;
  60 +}
  61 +.tox-tinymce-aux {
  62 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  63 +}
  64 +.tox-tinymce *:focus,
  65 +.tox-tinymce-aux *:focus {
  66 + outline: none;
  67 +}
  68 +button::-moz-focus-inner {
  69 + border: 0;
  70 +}
  71 +.tox-silver-sink {
  72 + z-index: 1300;
  73 +}
  74 +.tox[dir='rtl'] {
  75 + direction: rtl;
  76 +}
  77 +.tox[dir='rtl'] .tox-statusbar__resize-handle {
  78 + justify-content: flex-start;
  79 + margin-left: -8px;
  80 + margin-right: 0;
  81 + padding-left: 0;
  82 + padding-right: 1ch;
  83 +}
  84 +.tox[dir='rtl'] .tox-statusbar .tox-statusbar__path {
  85 + text-align: right;
  86 +}
  87 +.tox .tox-anchorbar {
  88 + display: flex;
  89 + flex: 0 0 auto;
  90 +}
  91 +.tox .tox-bar {
  92 + display: flex;
  93 + flex: 0 0 auto;
  94 +}
  95 +.tox .tox-button {
  96 + background-color: #3498db;
  97 + background-image: none;
  98 + background-position: none;
  99 + background-repeat: none;
  100 + border-color: #3498db;
  101 + border-radius: 3px;
  102 + border-style: solid;
  103 + border-width: 1px;
  104 + box-shadow: none;
  105 + box-sizing: border-box;
  106 + color: #fff;
  107 + cursor: pointer;
  108 + display: inline-block;
  109 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  110 + font-size: 14px;
  111 + font-weight: bold;
  112 + letter-spacing: 1;
  113 + line-height: 24px;
  114 + margin: 0;
  115 + outline: none;
  116 + padding: 4px 16px;
  117 + text-align: center;
  118 + text-decoration: none;
  119 + text-transform: capitalize;
  120 + white-space: nowrap;
  121 +}
  122 +.tox .tox-button[disabled] {
  123 + background-color: #3498db;
  124 + background-image: none;
  125 + border-color: #3498db;
  126 + box-shadow: none;
  127 + color: rgba(255, 255, 255, 0.5);
  128 + cursor: not-allowed;
  129 +}
  130 +.tox .tox-button:focus:not(:disabled) {
  131 + background-color: #258cd1;
  132 + background-image: none;
  133 + border-color: #258cd1;
  134 + box-shadow: none;
  135 + color: #fff;
  136 +}
  137 +.tox .tox-button:hover:not(:disabled) {
  138 + background-color: #258cd1;
  139 + background-image: none;
  140 + border-color: #258cd1;
  141 + box-shadow: none;
  142 + color: #fff;
  143 +}
  144 +.tox .tox-button:active:not(:disabled) {
  145 + background-color: #217dbb;
  146 + background-image: none;
  147 + border-color: #217dbb;
  148 + box-shadow: none;
  149 + color: #fff;
  150 +}
  151 +.tox .tox-button--secondary {
  152 + background-color: #f0f0f0;
  153 + background-image: none;
  154 + background-position: none;
  155 + background-repeat: none;
  156 + border-color: #f0f0f0;
  157 + border-radius: 3px;
  158 + border-style: solid;
  159 + border-width: 1px;
  160 + box-shadow: none;
  161 + color: #222f3e;
  162 + outline: none;
  163 + padding: 4px 16px;
  164 + text-decoration: none;
  165 + text-transform: capitalize;
  166 +}
  167 +.tox .tox-button--secondary[disabled] {
  168 + background-color: #f0f0f0;
  169 + background-image: none;
  170 + border-color: #f0f0f0;
  171 + box-shadow: none;
  172 + color: rgba(34, 47, 62, 0.5);
  173 +}
  174 +.tox .tox-button--secondary:focus:not(:disabled) {
  175 + background-color: #e3e3e3;
  176 + background-image: none;
  177 + border-color: #e3e3e3;
  178 + box-shadow: none;
  179 + color: #222f3e;
  180 +}
  181 +.tox .tox-button--secondary:hover:not(:disabled) {
  182 + background-color: #e3e3e3;
  183 + background-image: none;
  184 + border-color: #e3e3e3;
  185 + box-shadow: none;
  186 + color: #222f3e;
  187 +}
  188 +.tox .tox-button--secondary:active:not(:disabled) {
  189 + background-color: #d6d6d6;
  190 + background-image: none;
  191 + border-color: #d6d6d6;
  192 + box-shadow: none;
  193 + color: #222f3e;
  194 +}
  195 +.tox .tox-button--icon,
  196 +.tox .tox-button.tox-button--icon,
  197 +.tox .tox-button.tox-button--secondary.tox-button--icon {
  198 + padding: 4px;
  199 +}
  200 +.tox .tox-button--icon .tox-icon svg,
  201 +.tox .tox-button.tox-button--icon .tox-icon svg,
  202 +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
  203 + display: block;
  204 + fill: currentColor;
  205 +}
  206 +.tox .tox-button-link {
  207 + background: 0;
  208 + border: none;
  209 + box-sizing: border-box;
  210 + cursor: pointer;
  211 + display: inline-block;
  212 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  213 + font-size: 16px;
  214 + font-weight: normal;
  215 + line-height: 1.3;
  216 + margin: 0;
  217 + padding: 0;
  218 + white-space: nowrap;
  219 +}
  220 +.tox .tox-button-link--sm {
  221 + font-size: 14px;
  222 +}
  223 +.tox .tox-button--naked {
  224 + background-color: transparent;
  225 + border-color: transparent;
  226 + box-shadow: unset;
  227 + color: #222f3e;
  228 +}
  229 +.tox .tox-button--naked:hover:not(:disabled) {
  230 + background-color: #e3e3e3;
  231 + border-color: #e3e3e3;
  232 + box-shadow: none;
  233 + color: #222f3e;
  234 +}
  235 +.tox .tox-button--naked:focus:not(:disabled) {
  236 + background-color: #e3e3e3;
  237 + border-color: #e3e3e3;
  238 + box-shadow: none;
  239 + color: #222f3e;
  240 +}
  241 +.tox .tox-button--naked:active:not(:disabled) {
  242 + background-color: #d6d6d6;
  243 + border-color: #d6d6d6;
  244 + box-shadow: none;
  245 + color: #222f3e;
  246 +}
  247 +.tox .tox-button--naked .tox-icon svg {
  248 + fill: currentColor;
  249 +}
  250 +.tox .tox-button--naked.tox-button--icon {
  251 + color: currentColor;
  252 +}
  253 +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
  254 + color: #222f3e;
  255 +}
  256 +.tox .tox-checkbox {
  257 + align-items: center;
  258 + border-radius: 3px;
  259 + cursor: pointer;
  260 + display: flex;
  261 + height: 36px;
  262 + min-width: 36px;
  263 +}
  264 +.tox .tox-checkbox__input {
  265 + /* Hide from view but visible to screen readers */
  266 + height: 1px;
  267 + left: -10000px;
  268 + overflow: hidden;
  269 + position: absolute;
  270 + top: auto;
  271 + width: 1px;
  272 +}
  273 +.tox .tox-checkbox__icons {
  274 + border-radius: 3px;
  275 + box-shadow: 0 0 0 2px transparent;
  276 + height: 24px;
  277 + padding: calc(3px);
  278 + width: 24px;
  279 +}
  280 +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
  281 + display: block;
  282 + fill: rgba(34, 47, 62, 0.3);
  283 +}
  284 +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
  285 + display: none;
  286 + fill: #3498db;
  287 +}
  288 +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
  289 + display: none;
  290 + fill: #3498db;
  291 +}
  292 +.tox .tox-checkbox__label {
  293 + margin-left: 4px;
  294 +}
  295 +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
  296 + display: none;
  297 +}
  298 +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
  299 + display: block;
  300 +}
  301 +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
  302 + display: none;
  303 +}
  304 +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
  305 + display: block;
  306 +}
  307 +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
  308 + border-radius: 3px;
  309 + box-shadow: inset 0 0 0 1px #3498db;
  310 + padding: calc(3px);
  311 +}
  312 +.tox .tox-bar .tox-checkbox {
  313 + margin-left: 4px;
  314 +}
  315 +.tox .tox-collection--toolbar .tox-collection__group {
  316 + display: flex;
  317 + padding: 0;
  318 +}
  319 +.tox .tox-collection--grid .tox-collection__group {
  320 + display: flex;
  321 + flex-wrap: wrap;
  322 + max-height: 208px;
  323 + overflow-x: hidden;
  324 + overflow-y: auto;
  325 + padding: 0;
  326 +}
  327 +.tox .tox-collection--list .tox-collection__group {
  328 + border-bottom-width: 0;
  329 + border-color: #cccccc;
  330 + border-left-width: 0;
  331 + border-right-width: 0;
  332 + border-style: solid;
  333 + border-top-width: 1px;
  334 + padding: 4px 0;
  335 +}
  336 +.tox .tox-collection--list .tox-collection__group:first-child {
  337 + border-top-width: 0;
  338 +}
  339 +.tox .tox-collection__group-heading {
  340 + background-color: #e6e6e6;
  341 + color: rgba(34, 47, 62, 0.6);
  342 + cursor: default;
  343 + font-size: 12px;
  344 + font-style: normal;
  345 + font-weight: normal;
  346 + margin-bottom: 4px;
  347 + margin-top: -4px;
  348 + padding: 4px 8px;
  349 + text-transform: none;
  350 + -webkit-touch-callout: none;
  351 + -webkit-user-select: none;
  352 + -moz-user-select: none;
  353 + -ms-user-select: none;
  354 + user-select: none;
  355 +}
  356 +.tox .tox-collection__item {
  357 + align-items: center;
  358 + color: #222f3e;
  359 + cursor: pointer;
  360 + display: flex;
  361 + -webkit-touch-callout: none;
  362 + -webkit-user-select: none;
  363 + -moz-user-select: none;
  364 + -ms-user-select: none;
  365 + user-select: none;
  366 +}
  367 +.tox .tox-collection__item--state-disabled {
  368 + background-color: unset;
  369 + color: rgba(34, 47, 62, 0.5);
  370 + cursor: default;
  371 +}
  372 +.tox .tox-collection--list .tox-collection__item {
  373 + padding: 4px 8px;
  374 +}
  375 +.tox .tox-collection--toolbar .tox-collection__item {
  376 + border-radius: 3px;
  377 + padding: 4px;
  378 +}
  379 +.tox .tox-collection--grid .tox-collection__item {
  380 + border-radius: 3px;
  381 + padding: 4px;
  382 +}
  383 +.tox .tox-collection--list .tox-collection__item--enabled {
  384 + background-color: inherit;
  385 + color: contrast(inherit, #222f3e, #fff);
  386 +}
  387 +.tox .tox-collection--list .tox-collection__item--active {
  388 + background-color: #dee0e2;
  389 + color: #222f3e;
  390 +}
  391 +.tox .tox-collection--toolbar .tox-collection__item--enabled {
  392 + background-color: #c8cbcf;
  393 + color: #222f3e;
  394 +}
  395 +.tox .tox-collection--toolbar .tox-collection__item--active {
  396 + background-color: #dee0e2;
  397 + color: #222f3e;
  398 +}
  399 +.tox .tox-collection--grid .tox-collection__item--enabled {
  400 + background-color: #c8cbcf;
  401 + color: #222f3e;
  402 +}
  403 +.tox .tox-collection--grid .tox-collection__item--active {
  404 + background-color: #dee0e2;
  405 + color: #222f3e;
  406 +}
  407 +.tox .tox-collection__item-icon {
  408 + align-items: center;
  409 + display: flex;
  410 + height: 24px;
  411 + justify-content: center;
  412 + width: 24px;
  413 +}
  414 +.tox .tox-collection__item-icon svg {
  415 + fill: currentColor;
  416 +}
  417 +.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
  418 + height: 48px;
  419 + width: 48px;
  420 +}
  421 +.tox .tox-collection--list .tox-collection__item > *:not(:first-child) {
  422 + margin-left: 8px;
  423 +}
  424 +.tox .tox-collection__item[role="menuitemcheckbox"]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
  425 + display: none;
  426 +}
  427 +.tox .tox-collection__item-label {
  428 + color: currentColor;
  429 + display: inline-block;
  430 + flex: 1;
  431 + -ms-flex-preferred-size: auto;
  432 + font-size: 14px;
  433 + font-style: normal;
  434 + font-weight: normal;
  435 + line-height: 24px;
  436 + text-transform: none;
  437 + word-break: break-all;
  438 +}
  439 +.tox .tox-collection--list .tox-collection__item-label:first-child {
  440 + margin-left: 4px;
  441 +}
  442 +.tox .tox-collection__item-accessory {
  443 + color: rgba(34, 47, 62, 0.6);
  444 + display: inline-block;
  445 + font-size: 14px;
  446 + height: 24px;
  447 + line-height: 24px;
  448 + margin-left: 16px;
  449 + text-align: right;
  450 + text-transform: normal;
  451 +}
  452 +.tox .tox-collection__item-caret {
  453 + align-items: center;
  454 + display: flex;
  455 + margin-left: 16px;
  456 + min-height: 24px;
  457 +}
  458 +.tox .tox-color-picker-container {
  459 + display: flex;
  460 + flex-direction: row;
  461 + height: 225px;
  462 + margin: 0;
  463 +}
  464 +.tox .tox-sv-palette {
  465 + border: 1px solid black;
  466 + box-sizing: border-box;
  467 + display: flex;
  468 + height: 100%;
  469 + margin-right: 15px;
  470 +}
  471 +.tox .tox-sv-palette-spectrum {
  472 + height: 100%;
  473 +}
  474 +.tox .tox-sv-palette,
  475 +.tox .tox-sv-palette-spectrum {
  476 + width: 225px;
  477 +}
  478 +.tox .tox-sv-palette-thumb {
  479 + background: none;
  480 + border: 1px solid black;
  481 + border-radius: 50%;
  482 + height: 12px;
  483 + position: absolute;
  484 + width: 12px;
  485 +}
  486 +.tox .tox-sv-palette-inner-thumb {
  487 + border: 1px solid white;
  488 + border-radius: 50%;
  489 + height: 10px;
  490 + position: absolute;
  491 + width: 10px;
  492 +}
  493 +.tox .tox-hue-slider {
  494 + border: 1px solid black;
  495 + box-sizing: border-box;
  496 + height: 100%;
  497 + margin-right: 15px;
  498 + width: 25px;
  499 +}
  500 +.tox .tox-hue-slider-spectrum {
  501 + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
  502 + height: 100%;
  503 + width: 100%;
  504 +}
  505 +.tox .tox-hue-slider,
  506 +.tox .tox-hue-slider-spectrum {
  507 + width: 20px;
  508 +}
  509 +.tox .tox-hue-slider-thumb {
  510 + background: white;
  511 + border: 1px solid black;
  512 + height: 4px;
  513 + margin-left: -1px;
  514 + width: 100%;
  515 +}
  516 +.tox .tox-rgb-form {
  517 + display: flex;
  518 + flex-direction: column;
  519 + justify-content: space-between;
  520 +}
  521 +.tox .tox-rgb-form div {
  522 + align-items: center;
  523 + display: flex;
  524 + justify-content: space-between;
  525 + margin-bottom: 5px;
  526 + width: inherit;
  527 +}
  528 +.tox .tox-rgb-form input {
  529 + width: 6em;
  530 +}
  531 +.tox .tox-rgb-form input.tox-invalid {
  532 + /* Need !important to override Chrome's focus styling unfortunately */
  533 + border: 1px solid red !important;
  534 +}
  535 +.tox .tox-rgb-form label {
  536 + margin-right: .5em;
  537 +}
  538 +.tox .tox-rgb-form .tox-rgba-preview {
  539 + border: 1px solid black;
  540 + flex-grow: 2;
  541 + margin-bottom: 0;
  542 +}
  543 +.tox .tox-toolbar .tox-swatches,
  544 +.tox .tox-toolbar__primary .tox-swatches,
  545 +.tox .tox-toolbar__overflow .tox-swatches {
  546 + margin: 2px 0 3px 4px;
  547 +}
  548 +.tox .tox-swatches__row {
  549 + display: flex;
  550 +}
  551 +.tox .tox-swatch {
  552 + height: 30px;
  553 + transition: transform 0.15s, box-shadow 0.15s;
  554 + width: 30px;
  555 +}
  556 +.tox .tox-swatch:hover,
  557 +.tox .tox-swatch:focus {
  558 + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
  559 + transform: scale(0.8);
  560 +}
  561 +.tox .tox-swatch--remove {
  562 + align-items: center;
  563 + display: flex;
  564 + justify-content: center;
  565 +}
  566 +.tox .tox-swatch--remove svg path {
  567 + stroke: #e74c3c;
  568 +}
  569 +.tox .tox-swatches__picker-btn {
  570 + align-items: center;
  571 + background-color: transparent;
  572 + border: 0;
  573 + cursor: pointer;
  574 + display: flex;
  575 + height: 30px;
  576 + justify-content: center;
  577 + margin-left: auto;
  578 + outline: none;
  579 + padding: 0;
  580 + width: 30px;
  581 +}
  582 +.tox .tox-swatches__picker-btn svg {
  583 + height: 24px;
  584 + width: 24px;
  585 +}
  586 +.tox .tox-swatches__picker-btn:hover {
  587 + background: #dee0e2;
  588 +}
  589 +.tox .tox-comment-thread {
  590 + background: #fff;
  591 + position: relative;
  592 +}
  593 +.tox .tox-comment-thread > *:not(:first-child) {
  594 + margin-top: 8px;
  595 +}
  596 +.tox .tox-comment {
  597 + background: #fff;
  598 + border: 1px solid #cccccc;
  599 + border-radius: 3px;
  600 + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
  601 + padding: 8px 8px 16px 8px;
  602 + position: relative;
  603 +}
  604 +.tox .tox-comment__header {
  605 + align-items: center;
  606 + color: #222f3e;
  607 + display: flex;
  608 + justify-content: space-between;
  609 +}
  610 +.tox .tox-comment__date {
  611 + color: rgba(34, 47, 62, 0.6);
  612 + font-size: 12px;
  613 +}
  614 +.tox .tox-comment__body {
  615 + color: #222f3e;
  616 + font-size: 14px;
  617 + font-style: normal;
  618 + font-weight: normal;
  619 + line-height: 1.3;
  620 + margin-top: 8px;
  621 + position: relative;
  622 + text-transform: initial;
  623 +}
  624 +.tox .tox-comment__body textarea {
  625 + resize: none;
  626 + white-space: normal;
  627 + width: 100%;
  628 +}
  629 +.tox .tox-comment__expander {
  630 + padding-top: 8px;
  631 +}
  632 +.tox .tox-comment__expander p {
  633 + color: rgba(34, 47, 62, 0.6);
  634 + font-size: 14px;
  635 + font-style: normal;
  636 +}
  637 +.tox .tox-comment__body p {
  638 + margin: 0;
  639 +}
  640 +.tox .tox-comment__buttonspacing {
  641 + padding-top: 16px;
  642 + text-align: center;
  643 +}
  644 +.tox .tox-comment__buttonspacing > *:last-child {
  645 + margin-left: 8px;
  646 +}
  647 +.tox .tox-comment-thread__overlay::after {
  648 + background: #fff;
  649 + bottom: 0;
  650 + content: "";
  651 + display: flex;
  652 + left: 0;
  653 + opacity: .9;
  654 + position: absolute;
  655 + right: 0;
  656 + top: 0;
  657 + z-index: 5;
  658 +}
  659 +.tox .tox-comment__reply {
  660 + display: flex;
  661 + flex-shrink: 0;
  662 + flex-wrap: wrap;
  663 + justify-content: flex-end;
  664 + margin-top: 8px;
  665 +}
  666 +.tox .tox-comment__reply > *:first-child {
  667 + margin-bottom: 8px;
  668 + width: 100%;
  669 +}
  670 +.tox .tox-comment__reply > *:last-child {
  671 + margin-left: 8px;
  672 +}
  673 +.tox .tox-comment__edit {
  674 + display: flex;
  675 + flex-wrap: wrap;
  676 + justify-content: flex-end;
  677 + margin-left: 8px;
  678 + margin-top: 16px;
  679 +}
  680 +.tox .tox-comment__edit > *:last-child {
  681 + margin-left: 8px;
  682 +}
  683 +.tox .tox-comment__gradient::after {
  684 + background: linear-gradient(rgba(255, 255, 255, 0), #fff);
  685 + bottom: 0;
  686 + content: "";
  687 + display: block;
  688 + height: 5em;
  689 + margin-top: -40px;
  690 + position: absolute;
  691 + width: 100%;
  692 +}
  693 +.tox .tox-comment__overlay {
  694 + background: #fff;
  695 + bottom: 0;
  696 + display: flex;
  697 + flex-direction: column;
  698 + flex-grow: 1;
  699 + left: 0;
  700 + opacity: .9;
  701 + position: absolute;
  702 + right: 0;
  703 + text-align: center;
  704 + top: 0;
  705 + z-index: 5;
  706 +}
  707 +.tox .tox-comment__loading-text {
  708 + align-items: center;
  709 + color: #222f3e;
  710 + display: flex;
  711 + flex-direction: column;
  712 + position: relative;
  713 +}
  714 +.tox .tox-comment__loading-text > div {
  715 + padding-bottom: 16px;
  716 +}
  717 +.tox .tox-comment__overlaytext {
  718 + bottom: 0;
  719 + flex-direction: column;
  720 + font-size: 14px;
  721 + left: 0;
  722 + padding: 1em;
  723 + position: absolute;
  724 + right: 0;
  725 + top: 0;
  726 + z-index: 10;
  727 +}
  728 +.tox .tox-comment__overlaytext p {
  729 + background-color: #fff;
  730 + box-shadow: 0 0 8px 8px #fff;
  731 + color: #222f3e;
  732 + text-align: center;
  733 +}
  734 +.tox .tox-comment__overlaytext div:nth-of-type(2) {
  735 + font-size: .8em;
  736 +}
  737 +.tox .tox-comment__busy-spinner {
  738 + align-items: center;
  739 + background-color: #fff;
  740 + bottom: 0;
  741 + display: flex;
  742 + justify-content: center;
  743 + left: 0;
  744 + position: absolute;
  745 + right: 0;
  746 + top: 0;
  747 + z-index: 1103;
  748 +}
  749 +.tox .tox-comment__scroll {
  750 + display: flex;
  751 + flex-direction: column;
  752 + flex-shrink: 1;
  753 + overflow: auto;
  754 +}
  755 +.tox .tox-conversations {
  756 + margin: 8px;
  757 +}
  758 +.tox .tox-user {
  759 + align-items: center;
  760 + display: flex;
  761 +}
  762 +.tox .tox-user__avatar svg {
  763 + fill: rgba(34, 47, 62, 0.6);
  764 + margin-right: 8px;
  765 +}
  766 +.tox .tox-user__name {
  767 + color: rgba(34, 47, 62, 0.6);
  768 + font-size: 12px;
  769 + font-style: normal;
  770 + font-weight: bold;
  771 + text-transform: uppercase;
  772 +}
  773 +.tox .tox-user__avatar + .tox-user__name {
  774 + margin-left: 8px;
  775 +}
  776 +.tox .tox-dialog-wrap {
  777 + align-items: center;
  778 + bottom: 0;
  779 + display: flex;
  780 + justify-content: center;
  781 + left: 0;
  782 + position: fixed;
  783 + right: 0;
  784 + top: 0;
  785 + z-index: 1100;
  786 +}
  787 +.tox .tox-dialog-wrap__backdrop {
  788 + background-color: rgba(255, 255, 255, 0.75);
  789 + bottom: 0;
  790 + left: 0;
  791 + position: absolute;
  792 + right: 0;
  793 + top: 0;
  794 + z-index: 1101;
  795 +}
  796 +.tox .tox-dialog {
  797 + background-color: #fff;
  798 + border-color: #cccccc;
  799 + border-radius: 3px;
  800 + border-style: solid;
  801 + border-width: 1px;
  802 + box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);
  803 + display: flex;
  804 + flex-direction: column;
  805 + max-height: 100%;
  806 + max-width: 480px;
  807 + overflow: hidden;
  808 + position: relative;
  809 + width: 95vw;
  810 + z-index: 1102;
  811 +}
  812 +.tox .tox-dialog__header {
  813 + align-items: center;
  814 + background-color: #fff;
  815 + border-bottom: none;
  816 + color: #222f3e;
  817 + display: flex;
  818 + font-size: 16px;
  819 + justify-content: space-between;
  820 + margin-bottom: 16px;
  821 + padding: 8px 16px 0 16px;
  822 + position: relative;
  823 +}
  824 +.tox .tox-dialog__header .tox-button {
  825 + z-index: 1;
  826 +}
  827 +.tox .tox-dialog__draghandle {
  828 + cursor: grab;
  829 + height: 100%;
  830 + left: 0;
  831 + position: absolute;
  832 + top: 0;
  833 + width: 100%;
  834 +}
  835 +.tox .tox-dialog__draghandle:active {
  836 + cursor: grabbing;
  837 +}
  838 +.tox .tox-dialog__dismiss {
  839 + margin-left: auto;
  840 +}
  841 +.tox .tox-dialog__title {
  842 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  843 + font-size: 20px;
  844 + font-style: normal;
  845 + font-weight: normal;
  846 + line-height: 1.3;
  847 + margin: 0;
  848 + text-transform: normal;
  849 +}
  850 +.tox .tox-dialog__body {
  851 + color: #222f3e;
  852 + display: flex;
  853 + flex: 1;
  854 + -ms-flex-preferred-size: auto;
  855 + font-size: 16px;
  856 + font-style: normal;
  857 + font-weight: normal;
  858 + line-height: 1.3;
  859 + padding: 0 16px;
  860 + text-align: left;
  861 + text-transform: normal;
  862 +}
  863 +.tox .tox-dialog__body-nav {
  864 + align-items: flex-start;
  865 + display: flex;
  866 + flex-direction: column;
  867 + margin-right: 32px;
  868 +}
  869 +.tox .tox-dialog__body-nav-item {
  870 + border-bottom: 2px solid transparent;
  871 + color: rgba(34, 47, 62, 0.6);
  872 + display: inline-block;
  873 + font-size: 14px;
  874 + line-height: 1.3;
  875 + margin-bottom: 8px;
  876 + text-decoration: none;
  877 +}
  878 +.tox .tox-dialog__body-nav-item--active {
  879 + border-bottom: 2px solid #3498db;
  880 + color: #3498db;
  881 +}
  882 +.tox .tox-dialog__body-content {
  883 + display: flex;
  884 + flex: 1;
  885 + flex-direction: column;
  886 + -ms-flex-preferred-size: auto;
  887 + max-height: 650px;
  888 + overflow: auto;
  889 +}
  890 +.tox .tox-dialog__body-content > * {
  891 + margin-bottom: 0;
  892 + margin-top: 16px;
  893 +}
  894 +.tox .tox-dialog__body-content > *:first-child {
  895 + margin-top: 0;
  896 +}
  897 +.tox .tox-dialog__body-content > *:last-child {
  898 + margin-bottom: 0;
  899 +}
  900 +.tox .tox-dialog__body-content > *:only-child {
  901 + margin-bottom: 0;
  902 + margin-top: 0;
  903 +}
  904 +.tox .tox-dialog--width-lg {
  905 + height: 650px;
  906 + max-width: 1200px;
  907 +}
  908 +.tox .tox-dialog--width-md {
  909 + max-width: 800px;
  910 +}
  911 +.tox .tox-dialog--width-md .tox-dialog__body-content {
  912 + overflow: auto;
  913 +}
  914 +.tox .tox-dialog__body-content--centered {
  915 + text-align: center;
  916 +}
  917 +.tox .tox-dialog__body-content--spacious {
  918 + margin-bottom: 16px;
  919 +}
  920 +.tox .tox-dialog__footer {
  921 + align-items: center;
  922 + background-color: #fff;
  923 + border-top: 1px solid #cccccc;
  924 + display: flex;
  925 + justify-content: space-between;
  926 + margin-top: 16px;
  927 + padding: 8px 16px;
  928 +}
  929 +.tox .tox-dialog__footer .tox-dialog__footer-start > *,
  930 +.tox .tox-dialog__footer .tox-dialog__footer-end > * {
  931 + margin-left: 8px;
  932 +}
  933 +.tox .tox-dialog__busy-spinner {
  934 + align-items: center;
  935 + background-color: rgba(255, 255, 255, 0.75);
  936 + bottom: 0;
  937 + display: flex;
  938 + justify-content: center;
  939 + left: 0;
  940 + position: absolute;
  941 + right: 0;
  942 + top: 0;
  943 + z-index: 1103;
  944 +}
  945 +.tox .tox-dialog__table {
  946 + border-collapse: collapse;
  947 + width: 100%;
  948 +}
  949 +.tox .tox-dialog__table thead th {
  950 + font-weight: bold;
  951 + padding-bottom: 8px;
  952 +}
  953 +.tox .tox-dialog__table tbody tr {
  954 + border-bottom: 1px solid #cccccc;
  955 +}
  956 +.tox .tox-dialog__table tbody tr:last-child {
  957 + border-bottom: none;
  958 +}
  959 +.tox .tox-dialog__table td {
  960 + padding-bottom: 8px;
  961 + padding-top: 8px;
  962 +}
  963 +.tox .tox-dialog__popups {
  964 + position: absolute;
  965 + width: 100%;
  966 + z-index: 1100;
  967 +}
  968 +body.tox-dialog__disable-scroll {
  969 + overflow: hidden;
  970 +}
  971 +.tox .tox-dropzone-container {
  972 + display: flex;
  973 + flex: 1;
  974 + -ms-flex-preferred-size: auto;
  975 +}
  976 +.tox .tox-dropzone {
  977 + align-items: center;
  978 + background: #fff;
  979 + border: 2px dashed #cccccc;
  980 + box-sizing: border-box;
  981 + display: flex;
  982 + flex-direction: column;
  983 + flex-grow: 1;
  984 + justify-content: center;
  985 + min-height: 100px;
  986 + padding: 10px;
  987 +}
  988 +.tox .tox-dropzone p {
  989 + color: rgba(34, 47, 62, 0.6);
  990 + margin: 0 0 16px 0;
  991 +}
  992 +.tox .tox-edit-area {
  993 + border-top: 1px solid #cccccc;
  994 + display: flex;
  995 + flex: 1;
  996 + -ms-flex-preferred-size: auto;
  997 + overflow: hidden;
  998 + position: relative;
  999 +}
  1000 +.tox .tox-edit-area__iframe {
  1001 + background-color: #fff;
  1002 + border: 0;
  1003 + box-sizing: border-box;
  1004 + flex: 1;
  1005 + -ms-flex-preferred-size: auto;
  1006 + height: 100%;
  1007 + position: absolute;
  1008 + width: 100%;
  1009 +}
  1010 +.tox.tox-inline-edit-area {
  1011 + border: 1px dotted #cccccc;
  1012 +}
  1013 +.tox .tox-control-wrap {
  1014 + flex: 1;
  1015 + position: relative;
  1016 +}
  1017 +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
  1018 +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
  1019 +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
  1020 + display: none;
  1021 +}
  1022 +.tox .tox-control-wrap svg {
  1023 + display: block;
  1024 +}
  1025 +.tox .tox-control-wrap .tox-textfield {
  1026 + padding-right: 32px;
  1027 +}
  1028 +.tox .tox-control-wrap__status-icon-wrap {
  1029 + position: absolute;
  1030 + right: 4px;
  1031 + top: 50%;
  1032 + transform: translateY(-50%);
  1033 +}
  1034 +.tox .tox-control-wrap__status-icon-invalid svg {
  1035 + fill: #c00;
  1036 +}
  1037 +.tox .tox-control-wrap__status-icon-unknown svg {
  1038 + fill: orange;
  1039 +}
  1040 +.tox .tox-control-wrap__status-icon-valid svg {
  1041 + fill: transparent;
  1042 +}
  1043 +.tox .tox-autocompleter {
  1044 + max-width: 25em;
  1045 +}
  1046 +.tox .tox-autocompleter .tox-menu {
  1047 + max-width: 25em;
  1048 +}
  1049 +.tox .tox-color-input {
  1050 + display: flex;
  1051 +}
  1052 +.tox .tox-color-input .tox-textfield {
  1053 + border-radius: 3px 0 0 3px;
  1054 + display: flex;
  1055 +}
  1056 +.tox .tox-color-input span {
  1057 + border-color: rgba(34, 47, 62, 0.2);
  1058 + border-radius: 0 3px 3px 0;
  1059 + border-style: solid;
  1060 + border-width: 1px 1px 1px 0;
  1061 + box-shadow: none;
  1062 + box-sizing: border-box;
  1063 + cursor: pointer;
  1064 + display: flex;
  1065 + width: 35px;
  1066 +}
  1067 +.tox .tox-color-input span:focus {
  1068 + border-color: #3498db;
  1069 +}
  1070 +.tox .tox-label,
  1071 +.tox .tox-toolbar-label {
  1072 + color: rgba(34, 47, 62, 0.6);
  1073 + display: block;
  1074 + font-size: 14px;
  1075 + font-style: normal;
  1076 + font-weight: normal;
  1077 + line-height: 1.3;
  1078 + padding: 0 8px 0 0;
  1079 + text-transform: normal;
  1080 + white-space: nowrap;
  1081 +}
  1082 +.tox .tox-toolbar-label {
  1083 + padding: 0 8px;
  1084 +}
  1085 +.tox .tox-form {
  1086 + display: flex;
  1087 + flex: 1;
  1088 + flex-direction: column;
  1089 + -ms-flex-preferred-size: auto;
  1090 +}
  1091 +.tox .tox-form__group {
  1092 + box-sizing: border-box;
  1093 + margin-bottom: 4px;
  1094 +}
  1095 +.tox .tox-form__group--error {
  1096 + color: #c00;
  1097 +}
  1098 +.tox .tox-form__group--collection {
  1099 + display: flex;
  1100 +}
  1101 +.tox .tox-form__grid {
  1102 + display: flex;
  1103 + flex-direction: row;
  1104 + flex-wrap: wrap;
  1105 + justify-content: space-between;
  1106 +}
  1107 +.tox .tox-form__grid--2col > .tox-form__group {
  1108 + width: calc(50% - (8px / 2));
  1109 +}
  1110 +.tox .tox-form__grid--3col > .tox-form__group {
  1111 + width: calc(100% / 3 - (8px / 2));
  1112 +}
  1113 +.tox .tox-form__grid--4col > .tox-form__group {
  1114 + width: calc(25% - (8px / 2));
  1115 +}
  1116 +.tox .tox-form__controls-h-stack {
  1117 + align-items: center;
  1118 + display: flex;
  1119 +}
  1120 +.tox .tox-form__controls-h-stack > *:not(:first-child) {
  1121 + margin-left: 4px;
  1122 +}
  1123 +.tox .tox-form__group--inline {
  1124 + align-items: center;
  1125 + display: flex;
  1126 +}
  1127 +.tox .tox-form__group--stretched {
  1128 + display: flex;
  1129 + flex: 1;
  1130 + flex-direction: column;
  1131 + -ms-flex-preferred-size: auto;
  1132 +}
  1133 +.tox .tox-form__group--stretched .tox-textarea {
  1134 + flex: 1;
  1135 + -ms-flex-preferred-size: auto;
  1136 +}
  1137 +.tox .tox-form__group--stretched .tox-navobj {
  1138 + display: flex;
  1139 + flex: 1;
  1140 + -ms-flex-preferred-size: auto;
  1141 +}
  1142 +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
  1143 + flex: 1;
  1144 + -ms-flex-preferred-size: auto;
  1145 + height: 100%;
  1146 +}
  1147 +.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
  1148 +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
  1149 + display: none;
  1150 +}
  1151 +.tox .tox-selectfield {
  1152 + cursor: pointer;
  1153 + position: relative;
  1154 +}
  1155 +.tox .tox-selectfield select {
  1156 + padding-right: 24px;
  1157 +}
  1158 +.tox .tox-selectfield select::-ms-expand {
  1159 + display: none;
  1160 +}
  1161 +.tox .tox-selectfield svg {
  1162 + pointer-events: none;
  1163 + position: absolute;
  1164 + right: 8px;
  1165 + top: 50%;
  1166 + transform: translateY(-50%);
  1167 +}
  1168 +.tox .tox-textarea {
  1169 + white-space: pre-wrap;
  1170 +}
  1171 +.tox .tox-textfield,
  1172 +.tox .tox-selectfield select,
  1173 +.tox .tox-textarea,
  1174 +.tox .tox-toolbar-textfield {
  1175 + -webkit-appearance: none;
  1176 + -moz-appearance: none;
  1177 + appearance: none;
  1178 + background-color: #fff;
  1179 + border-color: #cccccc;
  1180 + border-radius: 3px;
  1181 + border-style: solid;
  1182 + border-width: 1px;
  1183 + box-shadow: none;
  1184 + box-sizing: border-box;
  1185 + color: #222f3e;
  1186 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  1187 + font-size: 16px;
  1188 + line-height: 24px;
  1189 + margin: 0;
  1190 + outline: none;
  1191 + padding: 5px 4.75px;
  1192 + resize: none;
  1193 + width: 100%;
  1194 +}
  1195 +.tox .tox-textfield:focus,
  1196 +.tox .tox-selectfield select:focus,
  1197 +.tox .tox-textarea:focus {
  1198 + border-color: #3498db;
  1199 + box-shadow: none;
  1200 + outline: none;
  1201 +}
  1202 +.tox .tox-toolbar-textfield {
  1203 + border-width: 0;
  1204 + margin-bottom: 3px;
  1205 + margin-top: 2px;
  1206 + max-width: 250px;
  1207 +}
  1208 +.tox .tox-toolbar-textfield + * {
  1209 + margin-left: 4px;
  1210 +}
  1211 +.tox .tox-naked-btn {
  1212 + background-color: transparent;
  1213 + border: 0;
  1214 + border-color: transparent;
  1215 + box-shadow: unset;
  1216 + color: #3498db;
  1217 + cursor: pointer;
  1218 + display: block;
  1219 + margin: 0;
  1220 + padding: 0;
  1221 +}
  1222 +.tox .tox-naked-btn svg {
  1223 + display: block;
  1224 + fill: #222f3e;
  1225 +}
  1226 +.tox-fullscreen {
  1227 + border: 0;
  1228 + height: 100%;
  1229 + left: 0;
  1230 + margin: 0;
  1231 + overflow: hidden;
  1232 + padding: 0;
  1233 + position: fixed;
  1234 + top: 0;
  1235 + width: 100%;
  1236 +}
  1237 +.tox-fullscreen .tox .tox-statusbar__resize-handle {
  1238 + display: none;
  1239 +}
  1240 +.tox-fullscreen .tox.tox-tinymce {
  1241 + z-index: 1200;
  1242 +}
  1243 +.tox-fullscreen .tox.tox-tinymce-aux {
  1244 + z-index: 1201;
  1245 +}
  1246 +.tox .tox-image-tools {
  1247 + width: 100%;
  1248 +}
  1249 +.tox .tox-image-tools__toolbar {
  1250 + align-items: center;
  1251 + display: flex;
  1252 + justify-content: center;
  1253 +}
  1254 +.tox .tox-image-tools__image {
  1255 + background-color: #666;
  1256 + height: 380px;
  1257 + overflow: auto;
  1258 + position: relative;
  1259 + width: 100%;
  1260 +}
  1261 +.tox .tox-image-tools__image,
  1262 +.tox .tox-image-tools__image + .tox-image-tools__toolbar {
  1263 + margin-top: 8px;
  1264 +}
  1265 +.tox .tox-image-tools__image-bg {
  1266 + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
  1267 +}
  1268 +.tox .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
  1269 + margin-left: 8px;
  1270 +}
  1271 +.tox .tox-image-tools__toolbar > .tox-button + .tox-slider {
  1272 + margin-left: 32px;
  1273 +}
  1274 +.tox .tox-image-tools__toolbar > .tox-slider + .tox-button {
  1275 + margin-left: 32px;
  1276 +}
  1277 +.tox .tox-image-tools__toolbar > .tox-spacer {
  1278 + flex: 1;
  1279 + -ms-flex-preferred-size: auto;
  1280 +}
  1281 +.tox .tox-croprect-block {
  1282 + background: black;
  1283 + filter: alpha(opacity=50);
  1284 + opacity: .5;
  1285 + position: absolute;
  1286 + zoom: 1;
  1287 +}
  1288 +.tox .tox-croprect-handle {
  1289 + border: 2px solid white;
  1290 + height: 20px;
  1291 + left: 0;
  1292 + position: absolute;
  1293 + top: 0;
  1294 + width: 20px;
  1295 +}
  1296 +.tox .tox-croprect-handle-move {
  1297 + border: 0;
  1298 + cursor: move;
  1299 + position: absolute;
  1300 +}
  1301 +.tox .tox-croprect-handle-nw {
  1302 + border-width: 2px 0 0 2px;
  1303 + cursor: nw-resize;
  1304 + left: 100px;
  1305 + margin: -2px 0 0 -2px;
  1306 + top: 100px;
  1307 +}
  1308 +.tox .tox-croprect-handle-ne {
  1309 + border-width: 2px 2px 0 0;
  1310 + cursor: ne-resize;
  1311 + left: 200px;
  1312 + margin: -2px 0 0 -20px;
  1313 + top: 100px;
  1314 +}
  1315 +.tox .tox-croprect-handle-sw {
  1316 + border-width: 0 0 2px 2px;
  1317 + cursor: sw-resize;
  1318 + left: 100px;
  1319 + margin: -20px 2px 0 -2px;
  1320 + top: 200px;
  1321 +}
  1322 +.tox .tox-croprect-handle-se {
  1323 + border-width: 0 2px 2px 0;
  1324 + cursor: se-resize;
  1325 + left: 200px;
  1326 + margin: -20px 0 0 -20px;
  1327 + top: 200px;
  1328 +}
  1329 +.tox .tox-insert-table-picker {
  1330 + display: flex;
  1331 + flex-wrap: wrap;
  1332 + width: 169px;
  1333 +}
  1334 +.tox .tox-insert-table-picker > div {
  1335 + border-color: #cccccc;
  1336 + border-style: solid;
  1337 + border-width: 0 1px 1px 0;
  1338 + box-sizing: content-box;
  1339 + height: 16px;
  1340 + width: 16px;
  1341 +}
  1342 +.tox .tox-insert-table-picker > div:nth-child(10n) {
  1343 + border-right: 0;
  1344 +}
  1345 +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
  1346 + margin: -4px 0;
  1347 +}
  1348 +.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
  1349 + background-color: rgba(52, 152, 219, 0.5);
  1350 + border-color: rgba(52, 152, 219, 0.5);
  1351 +}
  1352 +.tox .tox-insert-table-picker__label {
  1353 + color: rgba(34, 47, 62, 0.6);
  1354 + display: block;
  1355 + font-size: 14px;
  1356 + padding: 4px;
  1357 + text-align: center;
  1358 + width: 100%;
  1359 +}
  1360 +.tox {
  1361 + /* stylelint-disable */
  1362 + /* stylelint-enable */
  1363 +}
  1364 +.tox .tox-menu {
  1365 + background-color: #fff;
  1366 + border: 1px solid #cccccc;
  1367 + border-radius: 3px;
  1368 + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
  1369 + display: inline-block;
  1370 + overflow: hidden;
  1371 + vertical-align: top;
  1372 + z-index: 1;
  1373 +}
  1374 +.tox .tox-menu.tox-collection.tox-collection--list {
  1375 + padding: 0;
  1376 +}
  1377 +.tox .tox-menu.tox-collection.tox-collection--toolbar {
  1378 + padding: 4px;
  1379 +}
  1380 +.tox .tox-menu.tox-collection.tox-collection--grid {
  1381 + padding: 4px;
  1382 +}
  1383 +.tox .tox-menu__label h1,
  1384 +.tox .tox-menu__label h2,
  1385 +.tox .tox-menu__label h3,
  1386 +.tox .tox-menu__label h4,
  1387 +.tox .tox-menu__label h5,
  1388 +.tox .tox-menu__label h6,
  1389 +.tox .tox-menu__label p,
  1390 +.tox .tox-menu__label blockquote,
  1391 +.tox .tox-menu__label code {
  1392 + margin: 0;
  1393 +}
  1394 +.tox .tox-menubar {
  1395 + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='43px' viewBox='0 0 40 43px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='42px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
  1396 + background-color: #fff;
  1397 + display: flex;
  1398 + flex: 0 0 auto;
  1399 + flex-shrink: 0;
  1400 + flex-wrap: wrap;
  1401 + margin-bottom: -1px;
  1402 + padding: 0 4px;
  1403 +}
  1404 +.tox .tox-mbtn {
  1405 + align-items: center;
  1406 + background: none;
  1407 + border: 0;
  1408 + border-radius: 3px;
  1409 + box-shadow: none;
  1410 + color: #222f3e;
  1411 + display: flex;
  1412 + flex: 0 0 auto;
  1413 + font-size: 14px;
  1414 + font-style: normal;
  1415 + font-weight: normal;
  1416 + height: 34px;
  1417 + justify-content: center;
  1418 + margin: 2px 0 3px 0;
  1419 + outline: none;
  1420 + overflow: hidden;
  1421 + padding: 0 4px;
  1422 + text-transform: normal;
  1423 + width: auto;
  1424 +}
  1425 +.tox .tox-mbtn[disabled] {
  1426 + background-color: none;
  1427 + border-color: none;
  1428 + box-shadow: none;
  1429 + color: rgba(34, 47, 62, 0.5);
  1430 + cursor: not-allowed;
  1431 +}
  1432 +.tox .tox-mbtn:hover:not(:disabled) {
  1433 + background: #dee0e2;
  1434 + box-shadow: none;
  1435 + color: #222f3e;
  1436 +}
  1437 +.tox .tox-mbtn:focus:not(:disabled) {
  1438 + background: #dee0e2;
  1439 + box-shadow: none;
  1440 + color: #222f3e;
  1441 +}
  1442 +.tox .tox-mbtn--active {
  1443 + background: #c8cbcf;
  1444 + box-shadow: none;
  1445 + color: #222f3e;
  1446 +}
  1447 +.tox .tox-mbtn__select-label {
  1448 + cursor: default;
  1449 + font-weight: normal;
  1450 + margin: 0 4px;
  1451 +}
  1452 +.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
  1453 + cursor: not-allowed;
  1454 +}
  1455 +.tox .tox-mbtn__select-chevron {
  1456 + align-items: center;
  1457 + display: flex;
  1458 + justify-content: center;
  1459 + width: 16px;
  1460 + display: none;
  1461 +}
  1462 +.tox .tox-notification {
  1463 + background-color: #fff;
  1464 + border-color: #c5c5c5;
  1465 + border-style: solid;
  1466 + border-width: 1px;
  1467 + box-sizing: border-box;
  1468 + display: -ms-grid;
  1469 + display: grid;
  1470 + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
  1471 + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
  1472 + margin-top: 5px;
  1473 + opacity: 0;
  1474 + padding: 5px;
  1475 + transition: transform 100ms ease-in, opacity 150ms ease-in;
  1476 +}
  1477 +.tox .tox-notification--in {
  1478 + opacity: 1;
  1479 +}
  1480 +.tox .tox-notification--success {
  1481 + background-color: #dff0d8;
  1482 + border-color: #d6e9c6;
  1483 +}
  1484 +.tox .tox-notification--error {
  1485 + background-color: #f2dede;
  1486 + border-color: #ebccd1;
  1487 +}
  1488 +.tox .tox-notification--warn {
  1489 + background-color: #fcf8e3;
  1490 + border-color: #faebcc;
  1491 +}
  1492 +.tox .tox-notification--info {
  1493 + background-color: #d9edf7;
  1494 + border-color: #779ecb;
  1495 +}
  1496 +.tox .tox-notification__body {
  1497 + -ms-grid-row-align: center;
  1498 + align-self: center;
  1499 + color: #31708f;
  1500 + font-size: 14px;
  1501 + grid-column-end: 3;
  1502 + -ms-grid-column-span: 1;
  1503 + -ms-grid-column: 2;
  1504 + grid-column-start: 2;
  1505 + grid-row-end: 2;
  1506 + -ms-grid-row: 1;
  1507 + grid-row-start: 1;
  1508 + text-align: center;
  1509 + white-space: normal;
  1510 + word-break: break-all;
  1511 + word-break: break-word;
  1512 +}
  1513 +.tox .tox-notification__body > * {
  1514 + margin: 0;
  1515 +}
  1516 +.tox .tox-notification__body > * + * {
  1517 + margin-top: 1rem;
  1518 +}
  1519 +.tox .tox-notification__icon {
  1520 + -ms-grid-row-align: center;
  1521 + align-self: center;
  1522 + -ms-grid-column-align: end;
  1523 + grid-column-end: 2;
  1524 + -ms-grid-column-span: 1;
  1525 + -ms-grid-column: 1;
  1526 + grid-column-start: 1;
  1527 + grid-row-end: 2;
  1528 + -ms-grid-row: 1;
  1529 + grid-row-start: 1;
  1530 + justify-self: end;
  1531 +}
  1532 +.tox .tox-notification__icon svg {
  1533 + display: block;
  1534 +}
  1535 +.tox .tox-notification__dismiss {
  1536 + -ms-grid-row-align: start;
  1537 + align-self: start;
  1538 + -ms-grid-column-align: end;
  1539 + grid-column-end: 4;
  1540 + -ms-grid-column-span: 1;
  1541 + -ms-grid-column: 3;
  1542 + grid-column-start: 3;
  1543 + grid-row-end: 2;
  1544 + -ms-grid-row: 1;
  1545 + grid-row-start: 1;
  1546 + justify-self: end;
  1547 +}
  1548 +.tox .tox-notification .tox-progress-bar {
  1549 + -ms-grid-column-align: center;
  1550 + grid-column-end: 4;
  1551 + -ms-grid-column-span: 3;
  1552 + -ms-grid-column: 1;
  1553 + grid-column-start: 1;
  1554 + grid-row-end: 3;
  1555 + -ms-grid-row-span: 1;
  1556 + -ms-grid-row: 2;
  1557 + grid-row-start: 2;
  1558 + justify-self: center;
  1559 +}
  1560 +.tox .tox-pop {
  1561 + display: inline-block;
  1562 + position: relative;
  1563 +}
  1564 +.tox .tox-pop--resizing {
  1565 + transition: width .1s ease;
  1566 +}
  1567 +.tox .tox-pop--resizing .tox-toolbar {
  1568 + flex-wrap: nowrap;
  1569 +}
  1570 +.tox .tox-pop__dialog {
  1571 + background-color: #fff;
  1572 + border: 1px solid #cccccc;
  1573 + border-radius: 3px;
  1574 + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
  1575 + min-width: 0;
  1576 + overflow: hidden;
  1577 +}
  1578 +.tox .tox-pop__dialog > *:not(.tox-toolbar) {
  1579 + margin: 4px 4px 4px 8px;
  1580 +}
  1581 +.tox .tox-pop__dialog .tox-toolbar {
  1582 + background-color: transparent;
  1583 +}
  1584 +.tox .tox-pop::before,
  1585 +.tox .tox-pop::after {
  1586 + border-style: solid;
  1587 + content: '';
  1588 + display: block;
  1589 + height: 0;
  1590 + position: absolute;
  1591 + width: 0;
  1592 +}
  1593 +.tox .tox-pop.tox-pop--bottom::before,
  1594 +.tox .tox-pop.tox-pop--bottom::after {
  1595 + left: 50%;
  1596 + top: 100%;
  1597 +}
  1598 +.tox .tox-pop.tox-pop--bottom::after {
  1599 + border-color: #fff transparent transparent transparent;
  1600 + border-width: 8px;
  1601 + margin-left: -8px;
  1602 + margin-top: -1px;
  1603 +}
  1604 +.tox .tox-pop.tox-pop--bottom::before {
  1605 + border-color: #cccccc transparent transparent transparent;
  1606 + border-width: 9px;
  1607 + margin-left: -9px;
  1608 +}
  1609 +.tox .tox-pop.tox-pop--top::before,
  1610 +.tox .tox-pop.tox-pop--top::after {
  1611 + left: 50%;
  1612 + top: 0;
  1613 + transform: translateY(-100%);
  1614 +}
  1615 +.tox .tox-pop.tox-pop--top::after {
  1616 + border-color: transparent transparent #fff transparent;
  1617 + border-width: 8px;
  1618 + margin-left: -8px;
  1619 + margin-top: 1px;
  1620 +}
  1621 +.tox .tox-pop.tox-pop--top::before {
  1622 + border-color: transparent transparent #cccccc transparent;
  1623 + border-width: 9px;
  1624 + margin-left: -9px;
  1625 +}
  1626 +.tox .tox-pop.tox-pop--left::before,
  1627 +.tox .tox-pop.tox-pop--left::after {
  1628 + left: 0;
  1629 + top: calc(50% - 1px);
  1630 + transform: translateY(-50%);
  1631 +}
  1632 +.tox .tox-pop.tox-pop--left::after {
  1633 + border-color: transparent #fff transparent transparent;
  1634 + border-width: 8px;
  1635 + margin-left: -15px;
  1636 +}
  1637 +.tox .tox-pop.tox-pop--left::before {
  1638 + border-color: transparent #cccccc transparent transparent;
  1639 + border-width: 10px;
  1640 + margin-left: -19px;
  1641 +}
  1642 +.tox .tox-pop.tox-pop--right::before,
  1643 +.tox .tox-pop.tox-pop--right::after {
  1644 + left: 100%;
  1645 + top: calc(50% + 1px);
  1646 + transform: translateY(-50%);
  1647 +}
  1648 +.tox .tox-pop.tox-pop--right::after {
  1649 + border-color: transparent transparent transparent #fff;
  1650 + border-width: 8px;
  1651 + margin-left: -1px;
  1652 +}
  1653 +.tox .tox-pop.tox-pop--right::before {
  1654 + border-color: transparent transparent transparent #cccccc;
  1655 + border-width: 10px;
  1656 + margin-left: -1px;
  1657 +}
  1658 +.tox .tox-pop.tox-pop--align-left::before,
  1659 +.tox .tox-pop.tox-pop--align-left::after {
  1660 + left: 20px;
  1661 +}
  1662 +.tox .tox-pop.tox-pop--align-right::before,
  1663 +.tox .tox-pop.tox-pop--align-right::after {
  1664 + left: calc(100% - 20px);
  1665 +}
  1666 +.tox .tox-sidebar-wrap {
  1667 + display: flex;
  1668 + flex-direction: row;
  1669 + flex-grow: 1;
  1670 + min-height: 0;
  1671 +}
  1672 +.tox .tox-sidebar {
  1673 + display: flex;
  1674 + flex-direction: row;
  1675 + justify-content: flex-end;
  1676 +}
  1677 +.tox .tox-sidebar__slider {
  1678 + display: flex;
  1679 + overflow: hidden;
  1680 +}
  1681 +.tox .tox-sidebar__pane-container {
  1682 + display: flex;
  1683 +}
  1684 +.tox .tox-sidebar__pane {
  1685 + display: flex;
  1686 +}
  1687 +.tox .tox-sidebar--sliding-closed {
  1688 + opacity: 0;
  1689 +}
  1690 +.tox .tox-sidebar--sliding-open {
  1691 + opacity: 1;
  1692 +}
  1693 +.tox .tox-sidebar--sliding-growing,
  1694 +.tox .tox-sidebar--sliding-shrinking {
  1695 + transition: width .5s ease, opacity .5s ease;
  1696 +}
  1697 +.tox .tox-slider {
  1698 + align-items: center;
  1699 + display: flex;
  1700 + flex: 1;
  1701 + -ms-flex-preferred-size: auto;
  1702 + height: 24px;
  1703 + justify-content: center;
  1704 + position: relative;
  1705 +}
  1706 +.tox .tox-slider__rail {
  1707 + background-color: transparent;
  1708 + border: 1px solid #cccccc;
  1709 + border-radius: 6px;
  1710 + height: 6px;
  1711 + min-width: 120px;
  1712 + width: 100%;
  1713 +}
  1714 +.tox .tox-slider__handle {
  1715 + background-color: #3498db;
  1716 + border-radius: 1.5px;
  1717 + box-shadow: none;
  1718 + height: 24px;
  1719 + left: 50%;
  1720 + position: absolute;
  1721 + top: 50%;
  1722 + transform: translateX(-50%) translateY(-50%);
  1723 + width: 3px;
  1724 +}
  1725 +.tox .tox-source-code {
  1726 + overflow: auto;
  1727 +}
  1728 +.tox .tox-spinner {
  1729 + display: flex;
  1730 +}
  1731 +.tox .tox-spinner > div {
  1732 + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
  1733 + background-color: rgba(34, 47, 62, 0.6);
  1734 + border-radius: 100%;
  1735 + height: 8px;
  1736 + width: 8px;
  1737 +}
  1738 +.tox .tox-spinner > div:nth-child(1) {
  1739 + animation-delay: -0.32s;
  1740 +}
  1741 +.tox .tox-spinner > div:nth-child(2) {
  1742 + animation-delay: -0.16s;
  1743 +}
  1744 +.tox .tox-spinner > div:not(:first-child) {
  1745 + margin-left: 4px;
  1746 +}
  1747 +@keyframes tam-bouncing-dots {
  1748 + 0%,
  1749 + 80%,
  1750 + 100% {
  1751 + transform: scale(0);
  1752 + }
  1753 + 40% {
  1754 + transform: scale(1);
  1755 + }
  1756 +}
  1757 +.tox .tox-statusbar {
  1758 + align-items: center;
  1759 + background-color: #fff;
  1760 + border-top: 1px solid #cccccc;
  1761 + color: rgba(34, 47, 62, 0.6);
  1762 + display: flex;
  1763 + flex: 0 0 auto;
  1764 + font-size: 12px;
  1765 + height: 18px;
  1766 + overflow: hidden;
  1767 + padding: 0 8px;
  1768 + position: relative;
  1769 + text-transform: uppercase;
  1770 +}
  1771 +.tox .tox-statusbar a {
  1772 + color: rgba(34, 47, 62, 0.6);
  1773 + text-decoration: none;
  1774 +}
  1775 +.tox .tox-statusbar a:hover {
  1776 + text-decoration: underline;
  1777 +}
  1778 +.tox .tox-statusbar__text-container {
  1779 + display: flex;
  1780 + flex: 1 1 auto;
  1781 + justify-content: flex-end;
  1782 + overflow: hidden;
  1783 +}
  1784 +.tox .tox-statusbar__path {
  1785 + display: flex;
  1786 + flex: 1 1 auto;
  1787 + margin-right: auto;
  1788 + overflow: hidden;
  1789 + text-overflow: ellipsis;
  1790 + white-space: nowrap;
  1791 +}
  1792 +.tox .tox-statusbar__path > * {
  1793 + display: inline;
  1794 + margin-right: 4px;
  1795 + white-space: nowrap;
  1796 +}
  1797 +.tox .tox-statusbar__wordcount,
  1798 +.tox .tox-statusbar__branding {
  1799 + flex: 0 0 auto;
  1800 + margin-left: 1ch;
  1801 +}
  1802 +.tox .tox-statusbar__resize-handle {
  1803 + align-items: flex-end;
  1804 + align-self: stretch;
  1805 + cursor: nwse-resize;
  1806 + display: flex;
  1807 + flex: 0 0 auto;
  1808 + justify-content: flex-end;
  1809 + margin-left: auto;
  1810 + margin-right: -8px;
  1811 + padding-left: 1ch;
  1812 +}
  1813 +.tox .tox-statusbar__resize-handle svg {
  1814 + display: block;
  1815 + fill: rgba(34, 47, 62, 0.6);
  1816 +}
  1817 +.tox .tox-tbtn {
  1818 + align-items: center;
  1819 + background: none;
  1820 + border: 0;
  1821 + border-radius: 3px;
  1822 + box-shadow: none;
  1823 + color: #222f3e;
  1824 + display: flex;
  1825 + flex: 0 0 auto;
  1826 + font-size: 14px;
  1827 + font-style: normal;
  1828 + font-weight: normal;
  1829 + height: 34px;
  1830 + justify-content: center;
  1831 + margin: 2px 0 3px 0;
  1832 + outline: none;
  1833 + overflow: hidden;
  1834 + padding: 0;
  1835 + text-transform: normal;
  1836 + width: 34px;
  1837 +}
  1838 +.tox .tox-tbtn svg {
  1839 + display: block;
  1840 + fill: #222f3e;
  1841 +}
  1842 +.tox .tox-tbtn.tox-tbtn-more {
  1843 + padding-left: 5px;
  1844 + padding-right: 5px;
  1845 + width: inherit;
  1846 +}
  1847 +.tox .tox-tbtn + .tox-tbtn {
  1848 + margin-left: 0;
  1849 +}
  1850 +.tox .tox-tbtn--enabled {
  1851 + background: #c8cbcf;
  1852 + box-shadow: none;
  1853 + color: #222f3e;
  1854 +}
  1855 +.tox .tox-tbtn--enabled > * {
  1856 + transform: none;
  1857 +}
  1858 +.tox .tox-tbtn--enabled svg {
  1859 + fill: #222f3e;
  1860 +}
  1861 +.tox .tox-tbtn:hover {
  1862 + background: #dee0e2;
  1863 + box-shadow: none;
  1864 + color: #222f3e;
  1865 +}
  1866 +.tox .tox-tbtn:hover svg {
  1867 + fill: #222f3e;
  1868 +}
  1869 +.tox .tox-tbtn:focus {
  1870 + background: #dee0e2;
  1871 + box-shadow: none;
  1872 + color: #222f3e;
  1873 +}
  1874 +.tox .tox-tbtn:focus svg {
  1875 + fill: #222f3e;
  1876 +}
  1877 +.tox .tox-tbtn:active {
  1878 + background: #c8cbcf;
  1879 + box-shadow: none;
  1880 + color: #222f3e;
  1881 +}
  1882 +.tox .tox-tbtn:active svg {
  1883 + fill: #222f3e;
  1884 +}
  1885 +.tox .tox-tbtn--disabled,
  1886 +.tox .tox-tbtn--disabled:hover,
  1887 +.tox .tox-tbtn:disabled,
  1888 +.tox .tox-tbtn:disabled:hover {
  1889 + background: none;
  1890 + box-shadow: none;
  1891 + color: rgba(34, 47, 62, 0.5);
  1892 + cursor: not-allowed;
  1893 +}
  1894 +.tox .tox-tbtn--disabled svg,
  1895 +.tox .tox-tbtn--disabled:hover svg,
  1896 +.tox .tox-tbtn:disabled svg,
  1897 +.tox .tox-tbtn:disabled:hover svg {
  1898 + /* stylelint-disable-line no-descending-specificity */
  1899 + fill: rgba(34, 47, 62, 0.5);
  1900 +}
  1901 +.tox .tox-tbtn:active > * {
  1902 + transform: none;
  1903 +}
  1904 +.tox .tox-tbtn--md {
  1905 + height: 51px;
  1906 + width: 51px;
  1907 +}
  1908 +.tox .tox-tbtn--lg {
  1909 + flex-direction: column;
  1910 + height: 68px;
  1911 + width: 68px;
  1912 +}
  1913 +.tox .tox-tbtn--return {
  1914 + -ms-grid-row-align: stretch;
  1915 + align-self: stretch;
  1916 + height: unset;
  1917 + width: 16px;
  1918 +}
  1919 +.tox .tox-tbtn--labeled {
  1920 + padding: 0 4px;
  1921 + width: unset;
  1922 +}
  1923 +.tox .tox-tbtn__vlabel {
  1924 + display: block;
  1925 + font-size: 10px;
  1926 + font-weight: normal;
  1927 + letter-spacing: -0.025em;
  1928 + margin-bottom: 4px;
  1929 + white-space: nowrap;
  1930 +}
  1931 +.tox .tox-tbtn--select {
  1932 + margin: 2px 0 3px 0;
  1933 + padding: 0 4px;
  1934 + width: auto;
  1935 +}
  1936 +.tox .tox-tbtn__select-label {
  1937 + cursor: default;
  1938 + font-weight: normal;
  1939 + margin: 0 4px;
  1940 +}
  1941 +.tox .tox-tbtn__select-chevron {
  1942 + align-items: center;
  1943 + display: flex;
  1944 + justify-content: center;
  1945 + width: 16px;
  1946 +}
  1947 +.tox .tox-tbtn__select-chevron svg {
  1948 + fill: rgba(34, 47, 62, 0.6);
  1949 +}
  1950 +.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
  1951 + overflow: hidden;
  1952 + text-overflow: ellipsis;
  1953 + white-space: nowrap;
  1954 + width: 7em;
  1955 +}
  1956 +.tox .tox-split-button {
  1957 + border: 0;
  1958 + border-radius: 3px;
  1959 + box-sizing: border-box;
  1960 + display: flex;
  1961 + margin: 2px 0 3px 0;
  1962 + overflow: hidden;
  1963 +}
  1964 +.tox .tox-split-button:hover {
  1965 + box-shadow: 0 0 0 1px #dee0e2 inset;
  1966 +}
  1967 +.tox .tox-split-button:focus {
  1968 + background: #dee0e2;
  1969 + box-shadow: none;
  1970 + color: #222f3e;
  1971 +}
  1972 +.tox .tox-split-button > * {
  1973 + border-radius: 0;
  1974 +}
  1975 +.tox .tox-split-button__chevron {
  1976 + width: 16px;
  1977 +}
  1978 +.tox .tox-split-button__chevron svg {
  1979 + fill: rgba(34, 47, 62, 0.6);
  1980 +}
  1981 +.tox .tox-pop .tox-split-button__chevron svg {
  1982 + transform: rotate(-90deg);
  1983 +}
  1984 +.tox .tox-split-button .tox-tbtn {
  1985 + margin: 0;
  1986 +}
  1987 +.tox .tox-split-button.tox-tbtn--disabled:hover,
  1988 +.tox .tox-split-button.tox-tbtn--disabled:focus,
  1989 +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
  1990 +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
  1991 + background: none;
  1992 + box-shadow: none;
  1993 + color: rgba(34, 47, 62, 0.5);
  1994 +}
  1995 +.tox .tox-toolbar,
  1996 +.tox .tox-toolbar__primary,
  1997 +.tox .tox-toolbar__overflow {
  1998 + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
  1999 + background-color: #fff;
  2000 + border-top: 1px solid #cccccc;
  2001 + display: flex;
  2002 + flex: 0 0 auto;
  2003 + flex-shrink: 0;
  2004 + flex-wrap: wrap;
  2005 + margin-bottom: -1px;
  2006 + padding: 0 0;
  2007 +}
  2008 +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
  2009 + display: none;
  2010 +}
  2011 +.tox .tox-pop .tox-toolbar {
  2012 + border-width: 0;
  2013 +}
  2014 +.tox .tox-toolbar--no-divider {
  2015 + background-image: none;
  2016 +}
  2017 +.tox.tox-tinymce-aux .tox-toolbar__overflow {
  2018 + border-left: 1px solid #cccccc;
  2019 + border-radius: 6px;
  2020 + border-right: 1px solid #cccccc;
  2021 +}
  2022 +.tox .tox-toolbar__group {
  2023 + align-items: center;
  2024 + display: flex;
  2025 + flex-wrap: wrap;
  2026 + margin: 0 0;
  2027 + padding: 0 4px;
  2028 +}
  2029 +.tox .tox-toolbar__group:not(:last-of-type) {
  2030 + border-right: 1px solid #cccccc;
  2031 +}
  2032 +.tox .tox-toolbar__group--pull-right {
  2033 + margin-left: auto;
  2034 +}
  2035 +.tox .tox-tooltip {
  2036 + display: inline-block;
  2037 + padding: 8px;
  2038 + position: relative;
  2039 +}
  2040 +.tox .tox-tooltip__body {
  2041 + background-color: #222f3e;
  2042 + border-radius: 3px;
  2043 + box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);
  2044 + color: rgba(255, 255, 255, 0.75);
  2045 + font-size: 14px;
  2046 + font-style: normal;
  2047 + font-weight: normal;
  2048 + padding: 4px 8px;
  2049 + text-transform: normal;
  2050 +}
  2051 +.tox .tox-tooltip__arrow {
  2052 + position: absolute;
  2053 +}
  2054 +.tox .tox-tooltip--down .tox-tooltip__arrow {
  2055 + border-left: 8px solid transparent;
  2056 + border-right: 8px solid transparent;
  2057 + border-top: 8px solid #222f3e;
  2058 + bottom: 0;
  2059 + left: 50%;
  2060 + position: absolute;
  2061 + transform: translateX(-50%);
  2062 +}
  2063 +.tox .tox-tooltip--up .tox-tooltip__arrow {
  2064 + border-bottom: 8px solid #222f3e;
  2065 + border-left: 8px solid transparent;
  2066 + border-right: 8px solid transparent;
  2067 + left: 50%;
  2068 + position: absolute;
  2069 + top: 0;
  2070 + transform: translateX(-50%);
  2071 +}
  2072 +.tox .tox-tooltip--right .tox-tooltip__arrow {
  2073 + border-bottom: 8px solid transparent;
  2074 + border-left: 8px solid #222f3e;
  2075 + border-top: 8px solid transparent;
  2076 + position: absolute;
  2077 + right: 0;
  2078 + top: 50%;
  2079 + transform: translateY(-50%);
  2080 +}
  2081 +.tox .tox-tooltip--left .tox-tooltip__arrow {
  2082 + border-bottom: 8px solid transparent;
  2083 + border-right: 8px solid #222f3e;
  2084 + border-top: 8px solid transparent;
  2085 + left: 0;
  2086 + position: absolute;
  2087 + top: 50%;
  2088 + transform: translateY(-50%);
  2089 +}
  2090 +.tox .tox-well {
  2091 + border: 1px solid #cccccc;
  2092 + border-radius: 3px;
  2093 + padding: 8px;
  2094 + width: 100%;
  2095 +}
  2096 +.tox .tox-well > *:first-child {
  2097 + margin-top: 0;
  2098 +}
  2099 +.tox .tox-well > *:last-child {
  2100 + margin-bottom: 0;
  2101 +}
  2102 +.tox .tox-well > *:only-child {
  2103 + margin: 0;
  2104 +}
  2105 +.tox .tox-custom-editor {
  2106 + border: 1px solid #cccccc;
  2107 + border-radius: 3px;
  2108 + display: flex;
  2109 + height: 525px;
  2110 +}
  2111 +/* stylelint-disable */
  2112 +.tox {
  2113 + /* stylelint-enable */
  2114 +}
  2115 +.tox .tox-dialog-loading::before {
  2116 + background-color: rgba(0, 0, 0, 0.5);
  2117 + content: "";
  2118 + height: 100%;
  2119 + position: absolute;
  2120 + width: 100%;
  2121 + z-index: 1000;
  2122 +}
  2123 +.tox .tox-tab {
  2124 + cursor: pointer;
  2125 +}
  2126 +.tox .tox-dialog__content-js {
  2127 + display: flex;
  2128 + flex: 1;
  2129 + -ms-flex-preferred-size: auto;
  2130 +}
  2131 +.tox .tox-dialog__body-content .tox-collection {
  2132 + display: flex;
  2133 + flex: 1;
  2134 + -ms-flex-preferred-size: auto;
  2135 +}
  2136 +.tox ul {
  2137 + display: block;
  2138 + list-style-type: disc;
  2139 + -webkit-margin-before: 1em;
  2140 + margin-block-start: 1em;
  2141 + -webkit-margin-after: 1em;
  2142 + margin-block-end: 1em;
  2143 + -webkit-margin-start: 0px;
  2144 + margin-inline-start: 0px;
  2145 + -webkit-margin-end: 0px;
  2146 + margin-inline-end: 0px;
  2147 + -webkit-padding-start: 40px;
  2148 + padding-inline-start: 40px;
  2149 +}
  2150 +.tox a {
  2151 + cursor: pointer;
  2152 + color: #2276d2;
  2153 +}
  2154 +.tox .tox-image-tools-edit-panel {
  2155 + height: 60px;
  2156 +}
  2157 +.tox .tox-image-tools__sidebar {
  2158 + height: 60px;
  2159 +}
... ...
ant-design-jeecg-vue/src/api/api.js
1 1 import { getAction,deleteAction,putAction,postAction} from '@/api/manage'
2 2  
3   -//根路径
4   -const doMian = "/jeecg-boot/";
5   -//图片预览请求地址
6   -const imgView = "http://127.0.0.1:8080/jeecg-boot/sys/common/view/";
  3 +////根路径
  4 +// const doMian = "/jeecg-boot/";
  5 +////图片预览请求地址
  6 +// const imgView = "http://localhost:8080/jeecg-boot/sys/common/view/";
7 7  
8 8  
9 9 //角色管理
10 10 const addRole = (params)=>postAction("/sys/role/add",params);
11 11 const editRole = (params)=>putAction("/sys/role/edit",params);
12   -const getRoleList = (params)=>getAction("/sys/role/list",params);
13   -const deleteRole = (params)=>deleteAction("/sys/role/delete",params);
14   -const deleteRoleList = (params)=>deleteAction("/sys/role/deleteBatch",params);
  12 +// const getRoleList = (params)=>getAction("/sys/role/list",params);
  13 +// const deleteRole = (params)=>deleteAction("/sys/role/delete",params);
  14 +// const deleteRoleList = (params)=>deleteAction("/sys/role/deleteBatch",params);
15 15 const checkRoleCode = (params)=>getAction("/sys/role/checkRoleCode",params);
16 16 const queryall = (params)=>getAction("/sys/role/queryall",params);
17 17  
... ... @@ -20,8 +20,8 @@ const addUser = (params)=&gt;postAction(&quot;/sys/user/add&quot;,params);
20 20 const editUser = (params)=>putAction("/sys/user/edit",params);
21 21 const queryUserRole = (params)=>getAction("/sys/user/queryUserRole",params);
22 22 const getUserList = (params)=>getAction("/sys/user/list",params);
23   -const deleteUser = (params)=>deleteAction("/sys/user/delete",params);
24   -const deleteUserList = (params)=>deleteAction("/sys/user/deleteBatch",params);
  23 +// const deleteUser = (params)=>deleteAction("/sys/user/delete",params);
  24 +// const deleteUserList = (params)=>deleteAction("/sys/user/deleteBatch",params);
25 25 const frozenBatch = (params)=>putAction("/sys/user/frozenBatch",params);
26 26 //验证用户账号是否唯一
27 27 const checkUsername = (params)=>getAction("/sys/user/checkOnlyUser",params);
... ... @@ -32,37 +32,41 @@ const changPassword = (params)=&gt;putAction(&quot;/sys/user/changPassword&quot;,params);
32 32 const addPermission= (params)=>postAction("/sys/permission/add",params);
33 33 const editPermission= (params)=>putAction("/sys/permission/edit",params);
34 34 const getPermissionList = (params)=>getAction("/sys/permission/list",params);
35   -const deletePermission = (params)=>deleteAction("/sys/permission/delete",params);
36   -const deletePermissionList = (params)=>deleteAction("/sys/permission/deleteBatch",params);
  35 +// const deletePermission = (params)=>deleteAction("/sys/permission/delete",params);
  36 +// const deletePermissionList = (params)=>deleteAction("/sys/permission/deleteBatch",params);
37 37 const queryTreeList = (params)=>getAction("/sys/permission/queryTreeList",params);
  38 +const queryTreeListForRole = (params)=>getAction("/sys/role/queryTreeList",params);
38 39 const queryListAsync = (params)=>getAction("/sys/permission/queryListAsync",params);
39 40 const queryRolePermission = (params)=>getAction("/sys/permission/queryRolePermission",params);
40 41 const saveRolePermission = (params)=>postAction("/sys/permission/saveRolePermission",params);
41 42 const queryPermissionsByUser = (params)=>getAction("/sys/permission/queryByUser",params);
42 43 const loadAllRoleIds = (params)=>getAction("/sys/permission/loadAllRoleIds",params);
  44 +const getPermissionRuleList = (params)=>getAction("/sys/permission/getPermRuleListByPermId",params);
  45 +const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermissionRule",params);
43 46  
44 47 // 部门管理
45 48 const queryDepartTreeList = (params)=>getAction("/sysdepart/sysDepart/queryTreeList",params);
46 49 const queryIdTree = (params)=>getAction("/sysdepart/sysDepart/queryIdTree",params);
47 50 const queryParentName = (params)=>getAction("/sysdepart/sysDepart/queryParentName",params);
48 51 const searchByKeywords = (params)=>getAction("/sysdepart/sysDepart/searchBy",params);
  52 +const deleteByDepartId = (params)=>deleteAction("/sysdepart/sysDepart/delete",params);
49 53  
50 54 //日志管理
51   -const getLogList = (params)=>getAction("/sys/log/list",params);
  55 +//const getLogList = (params)=>getAction("/sys/log/list",params);
52 56 const deleteLog = (params)=>deleteAction("/sys/log/delete",params);
53 57 const deleteLogList = (params)=>deleteAction("/sys/log/deleteBatch",params);
54 58  
55 59 //数据字典
56 60 const addDict = (params)=>postAction("/sys/dict/add",params);
57 61 const editDict = (params)=>putAction("/sys/dict/edit",params);
58   -const getDictList = (params)=>getAction("/sys/dict/list",params);
  62 +//const getDictList = (params)=>getAction("/sys/dict/list",params);
59 63 const treeList = (params)=>getAction("/sys/dict/treeList",params);
60   -const delDict = (params)=>deleteAction("/sys/dict/delete",params);
61   -const getDictItemList = (params)=>getAction("/sys/dictItem/list",params);
  64 +// const delDict = (params)=>deleteAction("/sys/dict/delete",params);
  65 +//const getDictItemList = (params)=>getAction("/sys/dictItem/list",params);
62 66 const addDictItem = (params)=>postAction("/sys/dictItem/add",params);
63 67 const editDictItem = (params)=>putAction("/sys/dictItem/edit",params);
64   -const delDictItem = (params)=>deleteAction("/sys/dictItem/delete",params);
65   -const delDictItemList = (params)=>deleteAction("/sys/dictItem/deleteBatch",params);
  68 +//const delDictItem = (params)=>deleteAction("/sys/dictItem/delete",params);
  69 +//const delDictItemList = (params)=>deleteAction("/sys/dictItem/deleteBatch",params);
66 70  
67 71 //字典标签专用(通过code获取字典数组)
68 72 export const ajaxGetDictItems = (code, params)=>getAction(`/sys/dict/getDictItems/${code}`,params);
... ... @@ -72,29 +76,32 @@ const doReleaseData = (params)=&gt;getAction(&quot;/sys/annountCement/doReleaseData&quot;,par
72 76 const doReovkeData = (params)=>getAction("/sys/annountCement/doReovkeData",params);
73 77 //获取系统访问量
74 78 const getLoginfo = (params)=>getAction("/sys/loginfo",params);
  79 +//数据日志访问
  80 +// const getDataLogList = (params)=>getAction("/sys/dataLog/list",params);
  81 +
  82 +// 根据部门主键查询用户信息
  83 +const queryUserByDepId = (params)=>getAction("/sys/user/queryUserByDepId",params);
  84 +
  85 +// 查询用户角色表里的所有信息
  86 +const queryUserRoleMap = (params)=>getAction("/sys/user/queryUserRoleMap",params);
  87 +// 重复校验
  88 +const duplicateCheck = (params)=>getAction("/sys/duplicate/check",params);
75 89  
76 90 export {
77   - imgView,
78   - doMian,
  91 + // imgView,
  92 + // doMian,
79 93 addRole,
80 94 editRole,
81   - getRoleList,
82   - deleteRole,
83   - deleteRoleList,
84 95 checkRoleCode,
85 96 addUser,
86 97 editUser,
87 98 queryUserRole,
88   - queryall,
89 99 getUserList,
90   - deleteUser,
91   - deleteUserList,
  100 + queryall,
92 101 frozenBatch,
93 102 checkUsername,
94 103 changPassword,
95 104 getPermissionList,
96   - deletePermission,
97   - deletePermissionList,
98 105 addPermission,
99 106 editPermission,
100 107 queryTreeList,
... ... @@ -103,26 +110,27 @@ export {
103 110 saveRolePermission,
104 111 queryPermissionsByUser,
105 112 loadAllRoleIds,
  113 + getPermissionRuleList,
  114 + queryPermissionRule,
106 115 queryDepartTreeList,
107 116 queryIdTree,
108 117 queryParentName,
109 118 searchByKeywords,
110   - getLogList,
  119 + deleteByDepartId,
111 120 deleteLog,
112 121 deleteLogList,
113   - getDictList,
114 122 addDict,
115 123 editDict,
116   - delDict,
117 124 treeList,
118   - getDictItemList,
119 125 addDictItem,
120 126 editDictItem,
121   - delDictItem,
122   - delDictItemList,
123 127 doReleaseData,
124 128 doReovkeData,
125   - getLoginfo
  129 + getLoginfo,
  130 + queryUserByDepId,
  131 + queryUserRoleMap,
  132 + duplicateCheck,
  133 + queryTreeListForRole
126 134 }
127 135  
128 136  
... ...
ant-design-jeecg-vue/src/api/index.js
1 1 const api = {
2 2 Login: '/sys/login',
3   - Logout: '/auth/logout',
  3 + Logout: '/sys/logout',
4 4 ForgePassword: '/auth/forge-password',
5 5 Register: '/auth/register',
6 6 SendSms: '/account/sms',
... ...
ant-design-jeecg-vue/src/api/login.js
... ... @@ -38,12 +38,13 @@ export function getInfo() {
38 38 })
39 39 }
40 40  
41   -export function logout() {
  41 +export function logout(logoutToken) {
42 42 return axios({
43   - url: '/api/auth/logout',
  43 + url: '/sys/logout',
44 44 method: 'post',
45 45 headers: {
46   - 'Content-Type': 'application/json;charset=UTF-8'
  46 + 'Content-Type': 'application/json;charset=UTF-8',
  47 + 'X-Access-Token': logoutToken
47 48 }
48 49 })
49 50 }
50 51 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/api/manage.js
... ... @@ -97,3 +97,18 @@ export function saveService(parameter) {
97 97 })
98 98 }
99 99  
  100 +/**
  101 + * 下载文件 用于excel导出
  102 + * @param url
  103 + * @param parameter
  104 + * @returns {*}
  105 + */
  106 +export function downFile(url,parameter){
  107 + return axios({
  108 + url: url,
  109 + params: parameter,
  110 + method:'get' ,
  111 + responseType: 'blob'
  112 + })
  113 +}
  114 +
... ...
ant-design-jeecg-vue/src/assets/less/common.css 0 → 100644
  1 +
  2 +/*列表上方操作按钮*/
  3 +.ant-card-body .table-operator {
  4 + margin-bottom: 18px;
  5 +}
  6 +
  7 +/*列表td的padding设置 可以控制列表大小*/
  8 +.ant-table-tbody .ant-table-row td {
  9 + padding-top: 15px;
  10 + padding-bottom: 15px;
  11 +}
  12 +
  13 +/*列表页面弹出modal*/
  14 +.ant-modal-cust-warp {
  15 + height: 100%
  16 +}
  17 +
  18 +/*弹出modal Y轴滚动条*/
  19 +.ant-modal-cust-warp .ant-modal-body {
  20 + height: calc(100% - 110px) !important;
  21 + overflow-y: auto
  22 +}
  23 +
  24 +/*弹出modal 先有content后有body 故滚动条控制在body上*/
  25 +.ant-modal-cust-warp .ant-modal-content {
  26 + height: 90% !important;
  27 + overflow-y: hidden
  28 +}
  29 +
... ...
ant-design-jeecg-vue/src/assets/less/index.less
  1 +/**
  2 + * 列表查询通用样式,移动端自适应
  3 + */
1 4 .search{
2 5 margin-bottom: 54px;
3 6 }
... ... @@ -19,3 +22,7 @@
19 22 i {
20 23 cursor: pointer;
21 24 }
  25 +.trcolor{
  26 + background-color: rgba(255, 192, 203, 0.31);
  27 + color:red;
  28 +}
... ...
ant-design-jeecg-vue/src/assets/logo.png

19.8 KB | W: 200px | H: 200px

3.2 KB | W: 74px | H: 75px

  • 2-up
  • Swipe
  • Onion skin
ant-design-jeecg-vue/src/components/README.md 0 → 100644
  1 +####1._util包:存放自定义函数 详细见代码注释
  2 +####2.AvatarList:显示头像群并支持tip,用法参考src\views\Home.vue(如下图)
  3 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12181253_O0Xi.png "在这里输入图片标题")
  4 +####3.chart包:存放各种图表相关的组件,条形图柱形图折线图等等 具体用法参考首页
  5 +####4.countDown包:一个倒计时组件,用法参考home页,简单描述,该组件有3个属性,
  6 +target(时间/毫秒数)必填,
  7 +format(function,该方法接收一个毫秒数的参数,用于格式化显示当前倒计时时间)非必填,
  8 +onEnd倒计时结束触发函数
  9 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12182046_mwqJ.png "在这里输入图片标题")
  10 +####5.dict包:数据字典专用,用法参考文件夹下readme文件
  11 +####6.Ellipsis包:字符串截取组件,可以指定字符串的显示长度,并将全部内容显示到tip中,简单使用参考src\views\system\PermissionList.vue
  12 +####7.jeecg包:该包下自定义了很多列表/表单中用到的组件 参考包下readme文件
  13 +####8.jeecgbiz包:该包下定义了一些业务相关的组件,比如选择用户弹框,根据部门选择用户等等
  14 +####9.layouts+page包:系统页面布局相关组件,比如登陆进去之后页面顶部显示什么,底部显示什么,菜单点击触发多个tab的布局等等 一般情况不需要修改
  15 +####10.menun包:菜单组件,俩个,一个折叠菜单一个正常显示的菜单
  16 +####11.NumberInfo:数字信息显示组件 如下图
  17 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12185858_uvJ5.png "在这里输入图片标题")
  18 +####12.online包:该包下封装了online表单的相关组件,用于展示表单各种控件,验证表单等等,相关用法参考readme
  19 +####13.setting包:该包下封装了首页风格切换等功能如下图
  20 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12190520_jySG.png "在这里输入图片标题")
  21 +####14.table包:一个二次封装的table组件,用于展示列表,参考readme
  22 +####15.tools包:
  23 +Breadcrumb.vue:面包屑二次封装,支持路由跳转
  24 +DetailList.vue:详情展示用法参考src\views\profile\advanced\Advanced.vue(效果如下图)
  25 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12193954_Uar6.png "在这里输入图片标题")
  26 +````
  27 +个人认为该页面代码有两点值得学习:
  28 +1.vue provide/inject的使用
  29 +2.该页面css定义方式,只定义一个顶层class,其余样式都定义在其下,这样只要顶层class不和别的页面冲突,整个页面的样式都是唯一生效的
  30 +````
  31 +FooterToolBar.vue:fixed定位的底部,通过是否定义内部控件的属性slot="extra"决定是左浮动或是右浮动
  32 +HeaderNotice.vue:首页通知(如下图)
  33 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12195340_fPe0.png "在这里输入图片标题")
  34 +HeaderInfo.vue:上下文字布局(如下图)
  35 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12195638_dG5o.png "在这里输入图片标题")
  36 +Logo.vue:首页左上侧的log图
  37 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12200908_ihv3.png "在这里输入图片标题")
  38 +UserMenu.vue:首页右上侧的内容
  39 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12201226_laQK.png "在这里输入图片标题")
  40 +####16.trend包 趋势显示组件(如下图)
  41 +![输入图片说明](https://static.oschina.net/uploads/img/201904/12201600_Wo8K.png "在这里输入图片标题")
... ...
ant-design-jeecg-vue/src/components/_util/StringUtil.js
1   -
  1 +/**
  2 + * 获取字符串的长度ascii长度为1 中文长度为2
  3 + * @param str
  4 + * @returns {number}
  5 + */
2 6 export const getStrFullLength = (str = '') =>
3 7 str.split('').reduce((pre, cur) => {
4 8 const charCode = cur.charCodeAt(0)
... ... @@ -8,6 +12,12 @@ export const getStrFullLength = (str = &#39;&#39;) =&gt;
8 12 return pre + 2
9 13 }, 0)
10 14  
  15 +/**
  16 + * 给定一个字符串和一个长度,将此字符串按指定长度截取
  17 + * @param str
  18 + * @param maxLength
  19 + * @returns {string}
  20 + */
11 21 export const cutStrByFullLength = (str = '', maxLength) => {
12 22 let showLength = 0
13 23 return str.split('').reduce((pre, cur) => {
... ...
ant-design-jeecg-vue/src/components/chart/AreaChartTy.vue 0 → 100644
  1 +<template>
  2 + <div :style="{ padding: '0 0 32px 32px' }">
  3 + <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
  4 +
  5 + <v-chart ref="chart" :forceFit="true" :height="height" :data="dataSource" :scale="scale">
  6 + <v-tooltip/>
  7 + <v-axis/>
  8 + <v-line position="x*y" :size="lineSize"/>
  9 + <v-area position="x*y"/>
  10 + </v-chart>
  11 +
  12 + </div>
  13 +</template>
  14 +
  15 +<script>
  16 + import { triggerWindowResizeEvent } from '@/utils/util'
  17 +
  18 + export default {
  19 + name: 'AreaChartTy',
  20 + props: {
  21 + // 图表数据
  22 + dataSource: {
  23 + type: Array,
  24 + required: true
  25 + },
  26 + // 图表标题
  27 + title: {
  28 + type: String,
  29 + default: ''
  30 + },
  31 + // x 轴别名
  32 + x: {
  33 + type: String,
  34 + default: 'x'
  35 + },
  36 + // y 轴别名
  37 + y: {
  38 + type: String,
  39 + default: 'y'
  40 + },
  41 + // 图表高度
  42 + height: {
  43 + type: Number,
  44 + default: 254
  45 + },
  46 + // 线的粗细
  47 + lineSize: {
  48 + type: Number,
  49 + default: 2
  50 + }
  51 + },
  52 + computed: {
  53 + scale() {
  54 + return [
  55 + { dataKey: 'x', title: this.x, alias: this.x },
  56 + { dataKey: 'y', title: this.y, alias: this.y }
  57 + ]
  58 + }
  59 + },
  60 + mounted() {
  61 + triggerWindowResizeEvent()
  62 + }
  63 + }
  64 +</script>
  65 +
  66 +<style lang="scss" scoped>
  67 + @import "chart";
  68 +</style>
0 69 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/Bar.vue
1 1 <template>
2 2 <div :style="{ padding: '0 0 32px 32px' }">
3 3 <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
4   - <v-chart
5   - height="254"
6   - :data="data"
7   - :forceFit="true"
8   - :padding="['auto', 'auto', '40', '50']">
9   - <v-tooltip />
10   - <v-axis />
  4 + <v-chart :forceFit="true" :height="height" :data="dataSource" :padding="padding">
  5 + <v-tooltip/>
  6 + <v-axis/>
11 7 <v-bar position="x*y"/>
12 8 </v-chart>
13 9 </div>
14 10 </template>
15 11  
16 12 <script>
17   - const data = []
18   - for (let i = 0; i < 12; i += 1) {
19   - data.push({
20   - x: `${i + 1}月`,
21   - y: Math.floor(Math.random() * 1000) + 200
22   - })
23   - }
24   - const tooltip = [
25   - 'x*y',
26   - (x, y) => ({
27   - name: x,
28   - value: y
29   - })
30   - ]
31   - const scale = [{
32   - dataKey: 'x',
33   - min: 2
34   - }, {
35   - dataKey: 'y',
36   - title: '时间',
37   - min: 1,
38   - max: 22
39   - }]
  13 + import { triggerWindowResizeEvent } from '@/utils/util'
40 14  
41 15 export default {
42   - name: "Bar",
  16 + name: 'Bar',
43 17 props: {
  18 + dataSource: {
  19 + type: Array,
  20 + required: true
  21 + },
44 22 title: {
45 23 type: String,
46 24 default: ''
  25 + },
  26 + height: {
  27 + type: Number,
  28 + default: 254
47 29 }
48 30 },
49   - data () {
50   - return {
51   - data,
52   - scale,
53   - tooltip
54   - }
  31 + data() {
  32 + return { padding: ['auto', 'auto', '40', '50'] }
  33 + },
  34 + mounted() {
  35 + triggerWindowResizeEvent()
55 36 }
56 37 }
57 38 </script>
58 39 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/BarMultid.vue 0 → 100644
  1 +<template>
  2 + <div :style="{ padding: '0 0 32px 32px' }">
  3 + <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
  4 + <v-chart :forceFit="true" :height="height" :data="data" :padding="['auto', 'auto', '40', '50']">
  5 + <v-tooltip />
  6 + <v-axis />
  7 + <v-legend />
  8 + <v-bar position="x*y" color="type" :adjust="adjust" />
  9 + </v-chart>
  10 + </div>
  11 +</template>
  12 +
  13 +<script>
  14 + import { DataSet } from '@antv/data-set'
  15 +
  16 + const sourceDataConst = [
  17 + { type: 'Jeecg', 'Jan.': 18.9, 'Feb.': 28.8, 'Mar.': 39.3, 'Apr.': 81.4, 'May': 47, 'Jun.': 20.3, 'Jul.': 24, 'Aug.': 35.6 },
  18 + { type: 'Jeebt', 'Jan.': 12.4, 'Feb.': 23.2, 'Mar.': 34.5, 'Apr.': 99.7, 'May': 52.6, 'Jun.': 35.5, 'Jul.': 37.4, 'Aug.': 42.4 }
  19 + ];
  20 + const fieldsConst = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.'];
  21 + export default {
  22 + name: 'BarMultid',
  23 + props: {
  24 + title: {
  25 + type: String,
  26 + default: ''
  27 + },
  28 + dataSource:{
  29 + type:Array,
  30 + default:()=>[]
  31 + },
  32 + fields:{
  33 + type:Array,
  34 + default:()=>[]
  35 + },
  36 + height: {
  37 + type: Number,
  38 + default: 254
  39 + }
  40 + },
  41 + data() {
  42 + return {
  43 + data:"",
  44 + adjust: [{
  45 + type: 'dodge',
  46 + marginRatio: 1 / 32,
  47 + }],
  48 + };
  49 + },
  50 + watch: {
  51 + 'dataSource': function () {
  52 + this.drawChart();
  53 + }
  54 + },
  55 + mounted(){
  56 + this.drawChart()
  57 + },
  58 + methods:{
  59 + drawChart(){
  60 + let temp = sourceDataConst;
  61 + if(this.dataSource && this.dataSource.length>0){
  62 + temp = this.dataSource
  63 + }
  64 + const dv = new DataSet.View().source(temp);
  65 + dv.transform({
  66 + type: 'fold',
  67 + fields:(!this.fields||this.fields.length==0)?fieldsConst:this.fields,
  68 + key: 'x',
  69 + value: 'y',
  70 + });
  71 + this.data=dv.rows;
  72 + }
  73 + }
  74 + }
  75 +</script>
  76 +
  77 +<style scoped>
  78 +
  79 +</style>
0 80 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/DashChartDemo.vue 0 → 100644
  1 +<template>
  2 + <div :style="{ padding: '0 0 32px 32px' }">
  3 + <v-chart :forceFit="true" :height="height" :data="data" :scale="scale">
  4 + <v-coord type="polar" :startAngle="-202.5" :endAngle="22.5" :radius="0.75"></v-coord>
  5 + <v-axis
  6 + dataKey="value"
  7 + :zIndex="2"
  8 + :line="null"
  9 + :label="axisLabel"
  10 + :subTickCount="4"
  11 + :subTickLine="axisSubTickLine"
  12 + :tickLine="axisTickLine"
  13 + :grid="null"
  14 + ></v-axis>
  15 + <v-axis dataKey="1" :show="false"></v-axis>
  16 + <v-series
  17 + gemo="point"
  18 + position="value*1"
  19 + shape="pointer"
  20 + color="#1890FF"
  21 + :active="false"
  22 + ></v-series>
  23 + <v-guide
  24 + type="arc"
  25 + :zIndex="0"
  26 + :top="false"
  27 + :start="arcGuide1Start"
  28 + :end="arcGuide1End"
  29 + :vStyle="arcGuide1Style"
  30 + ></v-guide>
  31 + <v-guide
  32 + type="arc"
  33 + :zIndex="1"
  34 + :start="arcGuide2Start"
  35 + :end="getArcGuide2End"
  36 + :vStyle="arcGuide2Style"
  37 + ></v-guide>
  38 + <v-guide
  39 + type="html"
  40 + :position="htmlGuidePosition"
  41 + :html="getHtmlGuideHtml()"
  42 + ></v-guide>
  43 + </v-chart>
  44 + </div>
  45 +</template>
  46 +
  47 +<script>
  48 + import {registerShape} from 'viser-vue';
  49 +
  50 + registerShape('point', 'pointer', {
  51 + draw(cfg, container) {
  52 + let point = cfg.points[0];
  53 + point = this.parsePoint(point);
  54 + const center = this.parsePoint({
  55 + x: 0,
  56 + y: 0,
  57 + });
  58 + container.addShape('line', {
  59 + attrs: {
  60 + x1: center.x,
  61 + y1: center.y,
  62 + x2: point.x,
  63 + y2: point.y + 15,
  64 + stroke: cfg.color,
  65 + lineWidth: 5,
  66 + lineCap: 'round',
  67 + }
  68 + });
  69 + return container.addShape('circle', {
  70 + attrs: {
  71 + x: center.x,
  72 + y: center.y,
  73 + r: 9.75,
  74 + stroke: cfg.color,
  75 + lineWidth: 4.5,
  76 + fill: '#fff',
  77 + }
  78 + });
  79 + }
  80 + });
  81 +
  82 + const scale = [{
  83 + dataKey: 'value',
  84 + min: 0,
  85 + max: 9,
  86 + tickInterval: 1,
  87 + nice: false,
  88 + }];
  89 +
  90 + const sourceData = [
  91 + {value: 6.7},
  92 + ];
  93 +
  94 + export default {
  95 + name: "DashChartDemo",
  96 + props: {
  97 + value: {
  98 + type: Number,
  99 + default: 6.7
  100 + },
  101 + title: {
  102 + type: String,
  103 + default: ''
  104 + },
  105 + height: {
  106 + type: Number,
  107 + default: 254
  108 + }
  109 + },
  110 + created() {
  111 + if (!this.value) {
  112 + this.data = sourceData;
  113 + } else {
  114 + this.data = [
  115 + {value: this.value},
  116 + ];
  117 + }
  118 + this.getData()
  119 + },
  120 + watch: {
  121 + 'value': function (val) {
  122 + this.data = [
  123 + {value: val},
  124 + ];
  125 + this.getData();
  126 + }
  127 + },
  128 + methods: {
  129 + getData() {
  130 + if (this.data && this.data.length > 0) {
  131 + this.abcd = this.data[0].value * 10
  132 + } else {
  133 + this.abcd = 70
  134 + }
  135 + },
  136 + getHtmlGuideHtml() {
  137 + return '<div style="width: 300px;text-align: center;">\n' +
  138 + '<p style="font-size: 14px;color: #545454;margin: 0;">' + this.title + '</p>\n' +
  139 + '<p style="font-size: 36px;color: #545454;margin: 0;">' + this.abcd + '%</p>\n' +
  140 + '</div>'
  141 + },
  142 + getArcGuide2End() {
  143 + return [this.data[0].value, 0.945]
  144 + }
  145 + },
  146 + data() {
  147 + return {
  148 + data: [],
  149 + scale: scale,
  150 + abcd: 70,
  151 + axisLabel: {
  152 + offset: -16,
  153 + textStyle: {
  154 + fontSize: 18,
  155 + textAlign: 'center',
  156 + textBaseline: 'middle'
  157 + }
  158 + },
  159 + axisSubTickLine: {
  160 + length: -8,
  161 + stroke: '#fff',
  162 + strokeOpacity: 1,
  163 + },
  164 + axisTickLine: {
  165 + length: -17,
  166 + stroke: '#fff',
  167 + strokeOpacity: 1,
  168 + },
  169 + arcGuide1Start: [0, 0.945],
  170 + arcGuide1End: [9, 0.945],
  171 + arcGuide1Style: {
  172 + stroke: '#CBCBCB',
  173 + lineWidth: 18,
  174 + },
  175 + arcGuide2Start: [0, 0.945],
  176 + arcGuide2Style: {
  177 + stroke: '#1890FF',
  178 + lineWidth: 18,
  179 + },
  180 + htmlGuidePosition: ['50%', '100%'],
  181 + htmlGuideHtml: `
  182 + <div style="width: 300px;text-align: center;">
  183 + <p style="font-size: 14px;color: #545454;margin: 0;">${this.title}</p>
  184 + <p style="font-size: 36px;color: #545454;margin: 0;">${this.abcd}%</p>
  185 + </div>
  186 + `,
  187 + };
  188 + },
  189 + };
  190 +</script>
... ...
ant-design-jeecg-vue/src/components/chart/LineChartMultid.vue 0 → 100644
  1 +<template>
  2 + <div :style="{ padding: '0 0 32px 32px' }">
  3 + <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
  4 + <v-chart :force-fit="true" :height="height" :data="data" :scale="scale" :padding="['auto', 'auto', '40', '50']">
  5 + <v-tooltip />
  6 + <v-axis />
  7 + <v-legend />
  8 + <v-line position="type*y" color="x" />
  9 + <v-point position="type*y" color="x" :size="4" :v-style="style" :shape="'circle'" />
  10 + </v-chart>
  11 + </div>
  12 +</template>
  13 +
  14 +<script>
  15 + import { DataSet } from '@antv/data-set'
  16 +
  17 + const sourceDataConst = [
  18 + { type: 'Jan', jeecg: 7.0, jeebt: 3.9 },
  19 + { type: 'Feb', jeecg: 6.9, jeebt: 4.2 },
  20 + { type: 'Mar', jeecg: 9.5, jeebt: 5.7 },
  21 + { type: 'Apr', jeecg: 14.5, jeebt: 8.5 },
  22 + { type: 'May', jeecg: 18.4, jeebt: 11.9 },
  23 + { type: 'Jun', jeecg: 21.5, jeebt: 15.2 },
  24 + { type: 'Jul', jeecg: 25.2, jeebt: 17.0 },
  25 + { type: 'Aug', jeecg: 26.5, jeebt: 16.6 },
  26 + { type: 'Sep', jeecg: 23.3, jeebt: 14.2 },
  27 + { type: 'Oct', jeecg: 18.3, jeebt: 10.3 },
  28 + { type: 'Nov', jeecg: 13.9, jeebt: 6.6 },
  29 + { type: 'Dec', jeecg: 9.6, jeebt: 4.8 }
  30 + ];
  31 +
  32 +
  33 +
  34 + export default {
  35 + name: 'LineChartMultid',
  36 + props: {
  37 + title: {
  38 + type: String,
  39 + default: ''
  40 + },
  41 + dataSource:{
  42 + type:Array,
  43 + default:()=>[]
  44 + },
  45 + fields:{
  46 + type:Array,
  47 + default: () => ['jeecg', 'jeebt']
  48 + },
  49 + height:{
  50 + type:Number,
  51 + default:254
  52 + }
  53 + },
  54 + data() {
  55 + return {
  56 + data:"",
  57 + scale: [{
  58 + dataKey: 'x',
  59 + min: 0,
  60 + max: 1
  61 + }],
  62 + style: { stroke: '#fff', lineWidth: 1 },
  63 + };
  64 + },
  65 + watch: {
  66 + 'dataSource': function () {
  67 + this.drawChart();
  68 + }
  69 + },
  70 + mounted(){
  71 + this.drawChart()
  72 + },
  73 + methods:{
  74 + drawChart(){
  75 + let temp = sourceDataConst;
  76 + if (this.dataSource && this.dataSource.length > 0) {
  77 + temp = this.dataSource.map(item => {
  78 + // 为了防止直接修改源数据导致报错
  79 + let obj = Object.assign({}, item)
  80 + obj.type = obj.x
  81 + return obj
  82 + })
  83 + }
  84 + const dv = new DataSet.View().source(temp);
  85 + dv.transform({
  86 + type: 'fold',
  87 + fields: this.fields,
  88 + key: 'x',
  89 + value: 'y',
  90 + });
  91 +
  92 + this.data=dv.rows;
  93 + }
  94 + }
  95 + }
  96 +</script>
  97 +
  98 +<style scoped>
  99 +
  100 +</style>
0 101 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/Liquid.vue
1 1 <template>
2 2 <div>
3   - <v-chart
4   - :forceFit="true"
5   - :height="height"
6   - :width="width"
7   - :data="data"
8   - :scale="scale"
  3 + <v-chart
  4 + :forceFit="true"
  5 + :height="height"
  6 + :width="width"
  7 + :data="data"
  8 + :scale="scale"
9 9 :padding="0">
10   - <v-tooltip />
  10 + <v-tooltip/>
11 11 <v-interval
12 12 :shape="['liquid-fill-gauge']"
13 13 position="transfer*value"
14 14 color=""
15 15 :v-style="{
16   - lineWidth: 10,
  16 + lineWidth: 8,
17 17 opacity: 0.75
18 18 }"
19 19 :tooltip="[
... ... @@ -47,8 +47,15 @@
47 47 </template>
48 48  
49 49 <script>
  50 +
  51 + const sourceDataConst = [
  52 + { transfer: '一月', value: 813 },
  53 + { transfer: '二月', value: 233 },
  54 + { transfer: '三月', value: 561 }
  55 + ]
  56 +
50 57 export default {
51   - name: "Liquid",
  58 + name: 'Liquid',
52 59 props: {
53 60 height: {
54 61 type: Number,
... ... @@ -58,6 +65,12 @@
58 65 type: Number,
59 66 default: 0
60 67 }
  68 + },
  69 + data() {
  70 + return {
  71 + data: sourceDataConst,
  72 + scale: []
  73 + }
61 74 }
62 75 }
63 76 </script>
... ...
ant-design-jeecg-vue/src/components/chart/MiniArea.vue
1 1 <template>
2 2 <div class="antv-chart-mini">
3 3 <div class="chart-wrapper" :style="{ height: 46 }">
4   - <v-chart :force-fit="true" :height="height" :data="datasource" :padding="[36, 0, 18, 0]">
5   - <v-tooltip />
6   - <v-smooth-area position="x*y" />
  4 + <v-chart :force-fit="true" :height="height" :data="data" :scale="scale" :padding="[36, 0, 18, 0]">
  5 + <v-tooltip/>
  6 + <v-smooth-area position="x*y"/>
7 7 </v-chart>
8 8 </div>
9 9 </div>
... ... @@ -11,53 +11,55 @@
11 11  
12 12 <script>
13 13 import moment from 'dayjs'
14   - const data = []
  14 +
  15 + const sourceData = []
15 16 const beginDay = new Date().getTime()
16 17  
17 18 for (let i = 0; i < 10; i++) {
18   - data.push({
  19 + sourceData.push({
19 20 x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
20 21 y: Math.round(Math.random() * 10)
21 22 })
22 23 }
23 24  
24   - console.log("123321",data)
25   - const tooltip = [
26   - 'x*y',
27   - (x, y) => ({
28   - name: x,
29   - value: y
30   - })
31   - ]
32   - const scale = [{
33   - dataKey: 'x',
34   - min: 2
35   - }, {
36   - dataKey: 'y',
37   - title: '时间',
38   - min: 1,
39   - max: 22
40   - }]
41   -
42 25 export default {
43   - name: "MiniArea",
44   - props:{
45   - datasource:{
  26 + name: 'MiniArea',
  27 + props: {
  28 + dataSource: {
46 29 type: Array,
47   - default:()=>[]
48   - }
49   - },
50   - created(){
51   - if(this.datasource.length==0){
52   - this.datasource = data;
  30 + default: () => []
  31 + },
  32 + // x 轴别名
  33 + x: {
  34 + type: String,
  35 + default: 'x'
  36 + },
  37 + // y 轴别名
  38 + y: {
  39 + type: String,
  40 + default: 'y'
53 41 }
54 42 },
55   - data () {
  43 + data() {
56 44 return {
57   - tooltip,
58   - scale,
  45 + data: [],
59 46 height: 100
60 47 }
  48 + },
  49 + computed: {
  50 + scale() {
  51 + return [
  52 + { dataKey: 'x', title: this.x, alias: this.x },
  53 + { dataKey: 'y', title: this.y, alias: this.y }
  54 + ]
  55 + }
  56 + },
  57 + created() {
  58 + if (this.dataSource.length === 0) {
  59 + this.data = sourceData
  60 + } else {
  61 + this.data = this.dataSource
  62 + }
61 63 }
62 64 }
63 65 </script>
... ...
ant-design-jeecg-vue/src/components/chart/MiniBar.vue
1 1 <template>
2   - <div class="antv-chart-mini">
3   - <div class="chart-wrapper" :style="{ height: 46 }">
4   - <v-chart :force-fit="true" :height="height" :data="datasource" :padding="[36, 5, 18, 5]">
5   - <v-tooltip />
6   - <v-bar position="x*y" />
7   - </v-chart>
8   - </div>
  2 + <div :style="{'width':width==null?'auto':width+'px'}">
  3 + <v-chart :forceFit="width==null" :height="height" :data="data" padding="0">
  4 + <v-tooltip/>
  5 + <v-bar position="x*y"/>
  6 + </v-chart>
9 7 </div>
10 8 </template>
11 9  
12 10 <script>
13 11 import moment from 'dayjs'
14   - const data = []
  12 +
  13 + const sourceData = []
15 14 const beginDay = new Date().getTime()
16 15  
17 16 for (let i = 0; i < 10; i++) {
18   - data.push({
  17 + sourceData.push({
19 18 x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
20 19 y: Math.round(Math.random() * 10)
21 20 })
... ... @@ -40,24 +39,33 @@
40 39 }]
41 40  
42 41 export default {
43   - name: "MiniBar",
44   - props:{
45   - datasource:{
  42 + name: 'MiniBar',
  43 + props: {
  44 + dataSource: {
46 45 type: Array,
47   - default:()=>[]
  46 + default: () => []
  47 + },
  48 + width: {
  49 + type: Number,
  50 + default: null
  51 + },
  52 + height: {
  53 + type: Number,
  54 + default: 200
48 55 }
49 56 },
50   - created(){
51   - if(this.datasource.length==0){
52   - this.datasource = data;
  57 + created() {
  58 + if (this.dataSource.length === 0) {
  59 + this.data = sourceData
  60 + } else {
  61 + this.data = this.dataSource
53 62 }
54 63 },
55   - data () {
  64 + data() {
56 65 return {
57   - data,
58 66 tooltip,
59   - scale,
60   - height: 100
  67 + data: [],
  68 + scale
61 69 }
62 70 }
63 71 }
... ...
ant-design-jeecg-vue/src/components/chart/MiniProgress.vue
1 1 <template>
2 2 <div class="chart-mini-progress">
3 3 <div class="target" :style="{ left: target + '%'}">
4   - <span :style="{ backgroundColor: color }" />
  4 + <span :style="{ backgroundColor: color }"/>
5 5 <span :style="{ backgroundColor: color }"/>
6 6 </div>
7 7 <div class="progress-wrapper">
8   - <div class="progress" :style="{ backgroundColor: color, width: percentage + '%', height: height }"></div>
  8 + <div class="progress" :style="{ backgroundColor: color, width: percentage + '%', height: height+'px' }"></div>
9 9 </div>
10 10 </div>
11 11 </template>
12 12  
13 13 <script>
14 14 export default {
15   - name: "MiniProgress",
  15 + name: 'MiniProgress',
16 16 props: {
17 17 target: {
18 18 type: Number,
19 19 default: 0
20 20 },
21 21 height: {
22   - type: String,
23   - default: '10px'
  22 + type: Number,
  23 + default: 10
24 24 },
25 25 color: {
26 26 type: String,
... ... @@ -64,7 +64,7 @@
64 64 position: relative;
65 65  
66 66 .progress {
67   - transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
  67 + transition: all .4s cubic-bezier(.08, .82, .17, 1) 0s;
68 68 border-radius: 1px 0 0 1px;
69 69 background-color: #1890ff;
70 70 width: 0;
... ...
ant-design-jeecg-vue/src/components/chart/Pie.vue 0 → 100644
  1 +<template>
  2 + <v-chart :forceFit="true" :height="height" :data="data" :scale="scale">
  3 + <v-tooltip :showTitle="false" dataKey="item*percent"/>
  4 + <v-axis/>
  5 + <v-legend dataKey="item"/>
  6 + <v-pie position="percent" color="item" :v-style="pieStyle" :label="labelConfig"/>
  7 + <v-coord type="theta"/>
  8 + </v-chart>
  9 +</template>
  10 +
  11 +<script>
  12 + const DataSet = require('@antv/data-set')
  13 +
  14 + const sourceData = [
  15 + { item: '事例一', percent: 40 },
  16 + { item: '事例二', percent: 21 },
  17 + { item: '事例三', percent: 17 },
  18 + { item: '事例四', percent: 13 },
  19 + { item: '事例五', percent: 9 }
  20 + ]
  21 +
  22 + const scale = [{
  23 + dataKey: 'percent',
  24 + min: 0,
  25 + formatter: '.0%'
  26 + }]
  27 +
  28 + export default {
  29 + props: {
  30 + title: {
  31 + type: String,
  32 + default: ''
  33 + },
  34 + height: {
  35 + type: Number,
  36 + default: 254
  37 + },
  38 + dataSource: {
  39 + type: Array,
  40 + default: () => []
  41 + }
  42 + },
  43 + created() {
  44 + this.change()
  45 + },
  46 + watch: {
  47 + 'dataSource': function() {
  48 + this.change()
  49 + }
  50 + },
  51 + methods: {
  52 + change() {
  53 + if (this.dataSource.length === 0) {
  54 + this.data = sourceData
  55 + } else {
  56 + const dv = new DataSet.View().source(this.dataSource)
  57 + dv.transform({
  58 + type: 'percent',
  59 + field: 'count',
  60 + dimension: 'item',
  61 + as: 'percent'
  62 + })
  63 + this.data = dv.rows
  64 + }
  65 + }
  66 + },
  67 + data() {
  68 + return {
  69 + data: '',
  70 + scale,
  71 + pieStyle: {
  72 + stroke: '#fff',
  73 + lineWidth: 1
  74 + },
  75 + labelConfig: ['percent', {
  76 + formatter: (val, item) => {
  77 + return item.point.item + ': ' + val
  78 + }
  79 + }]
  80 + }
  81 + }
  82 + }
  83 +</script>
0 84 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/README.md 0 → 100644
  1 +# 报表组件文档
  2 +
  3 +## 柱状图
  4 +
  5 +##### 引用方式
  6 +
  7 +```js
  8 +import Bar from '@/components/chart/Bar'
  9 +```
  10 +
  11 +##### 参数列表
  12 +
  13 +| 参数名 | 类型 | 必填 | 说明 |
  14 +|------------|--------|----|------------|
  15 +| title | string | | 报表标题 |
  16 +| dataSource | array | ✔️ | 报表数据源 |
  17 +| height | number | | 报表高度,默认254 |
  18 +
  19 +##### dataSource 示例
  20 +
  21 +```json
  22 +[
  23 + {
  24 + "x": "1月",
  25 + "y": 320
  26 + },
  27 + {
  28 + "x": "2月",
  29 + "y": 457
  30 + },
  31 + {
  32 + "x": "3月",
  33 + "y": 182
  34 + }
  35 +]
  36 +```
  37 +
  38 +## 多列柱状图
  39 +
  40 +##### 引用方式
  41 +
  42 +```js
  43 +import BarMultid from '@/components/chart/BarMultid'
  44 +```
  45 +
  46 +##### 参数列表
  47 +
  48 +| 参数名 | 类型 | 必填 | 说明 |
  49 +|------------|--------|----|------------|
  50 +| title | string | | 报表标题 |
  51 +| fields | array | | 主列字段列表 |
  52 +| dataSource | array | | 报表数据源 |
  53 +| height | number | | 报表高度,默认254 |
  54 +
  55 +##### fields 示例
  56 +
  57 +```json
  58 +["Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug."]
  59 +```
  60 +
  61 +##### dataSource 示例
  62 +
  63 +```json
  64 +[
  65 + {
  66 + "type": "Jeecg", // 列名
  67 + "Jan.": 18.9,
  68 + "Feb.": 28.8,
  69 + "Mar.": 39.3,
  70 + "Apr.": 81.4,
  71 + "May": 47,
  72 + "Jun.": 20.3,
  73 + "Jul.": 24,
  74 + "Aug.": 35.6
  75 + },
  76 + {
  77 + "type": "Jeebt",
  78 + "Jan.": 12.4,
  79 + "Feb.": 23.2,
  80 + "Mar.": 34.5,
  81 + "Apr.": 99.7,
  82 + "May": 52.6,
  83 + "Jun.": 35.5,
  84 + "Jul.": 37.4,
  85 + "Aug.": 42.4
  86 + }
  87 +]
  88 +```
  89 +
  90 +## 迷你柱状图
  91 +
  92 +不带标题和数据轴的柱状图
  93 +
  94 +##### 引用方式
  95 +
  96 +```js
  97 +import MiniBar from '@/components/chart/MiniBar'
  98 +```
  99 +
  100 +##### 参数列表
  101 +
  102 +| 参数名 | 类型 | 必填 | 说明 |
  103 +|------------|--------|----|---------------|
  104 +| width | number | | 报表宽度度,默认自适应宽度 |
  105 +| height | number | | 报表高度,默认200 |
  106 +| dataSource | array | | 报表数据源 |
  107 +
  108 +##### dataSource 示例
  109 +
  110 +```json
  111 +[
  112 + {
  113 + "x": "1月",
  114 + "y": 320
  115 + },
  116 + {
  117 + "x": "2月",
  118 + "y": 457
  119 + },
  120 + {
  121 + "x": "3月",
  122 + "y": 182
  123 + }
  124 +]
  125 +```
  126 +
  127 +## 面积图
  128 +
  129 +##### 引用方式
  130 +
  131 +```js
  132 +import AreaChartTy from '@/components/chart/AreaChartTy'
  133 +```
  134 +
  135 +##### 参数列表
  136 +
  137 +| 参数名 | 类型 | 必填 | 说明 |
  138 +|------------|--------|----|------------|
  139 +| title | string | | 报表标题 |
  140 +| dataSource | array | ✔️ | 报表数据源 |
  141 +| height | number | | 报表高度,默认254 |
  142 +| lineSize | number | | 线的粗细,默认2 |
  143 +
  144 +##### dataSource 示例
  145 +
  146 +```json
  147 +[
  148 + {
  149 + "x": "1月",
  150 + "y": 320
  151 + },
  152 + {
  153 + "x": "2月",
  154 + "y": 457
  155 + },
  156 + {
  157 + "x": "3月",
  158 + "y": 182
  159 + }
  160 +]
  161 +```
  162 +
  163 +## 多行折线图
  164 +
  165 +##### 引用方式
  166 +
  167 +```js
  168 +import LineChartMultid from '@/components/chart/LineChartMultid'
  169 +```
  170 +
  171 +##### 参数列表
  172 +
  173 +| 参数名 | 类型 | 必填 | 说明 |
  174 +|------------|--------|----|------------|
  175 +| title | string | | 报表标题 |
  176 +| fields | array | | 主列字段列表 |
  177 +| dataSource | array | | 报表数据源 |
  178 +| height | number | | 报表高度,默认254 |
  179 +
  180 +##### fields 示例
  181 +
  182 +```json
  183 +["jeecg", "jeebt"]
  184 +```
  185 +
  186 +##### dataSource 示例
  187 +
  188 +```json
  189 +[
  190 + {
  191 + "type": "Jan", // 列名
  192 + "jeecg": 7,
  193 + "jeebt": 3.9
  194 + },
  195 + { "type": "Feb", "jeecg": 6.9, "jeebt": 4.2 },
  196 + { "type": "Mar", "jeecg": 9.5, "jeebt": 5.7 },
  197 + { "type": "Apr", "jeecg": 14.5, "jeebt": 8.5 },
  198 + { "type": "May", "jeecg": 18.4, "jeebt": 11.9 },
  199 + { "type": "Jun", "jeecg": 21.5, "jeebt": 15.2 },
  200 + { "type": "Jul", "jeecg": 25.2, "jeebt": 17 },
  201 + { "type": "Aug", "jeecg": 26.5, "jeebt": 16.6 },
  202 + { "type": "Sep", "jeecg": 23.3, "jeebt": 14.2 },
  203 + { "type": "Oct", "jeecg": 18.3, "jeebt": 10.3 },
  204 + { "type": "Nov", "jeecg": 13.9, "jeebt": 6.6 },
  205 + { "type": "Dec", "jeecg": 9.6, "jeebt": 4.8 }
  206 +]
  207 +```
  208 +
  209 +## 饼状图
  210 +
  211 +##### 引用方式
  212 +
  213 +```js
  214 +import Pie from '@/components/chart/Pie'
  215 +```
  216 +
  217 +##### 参数列表
  218 +
  219 +| 参数名 | 类型 | 必填 | 说明 |
  220 +|------------|--------|----|------------|
  221 +| dataSource | array | | 报表数据源 |
  222 +| height | number | | 报表高度,默认254 |
  223 +
  224 +##### dataSource 示例
  225 +
  226 +```json
  227 +[
  228 + // 所有的 percent 相加等于 100
  229 + { "item": "一月", "percent": 40 },
  230 + { "item": "二月", "percent": 21 },
  231 + { "item": "三月", "percent": 17 },
  232 + { "item": "四月", "percent": 13 },
  233 + { "item": "五月", "percent": 9 }
  234 +]
  235 +```
  236 +
  237 +## 雷达图
  238 +
  239 +##### 引用方式
  240 +
  241 +```js
  242 +import Radar from '@/components/chart/Radar'
  243 +```
  244 +
  245 +##### 参数列表
  246 +
  247 +| 参数名 | 类型 | 必填 | 说明 |
  248 +|------------|--------|----|------------|
  249 +| dataSource | array | | 报表数据源 |
  250 +| height | number | | 报表高度,默认254 |
  251 +
  252 +##### dataSource 示例
  253 +
  254 +```json
  255 +[
  256 + // score 最小值为 0,最大值为 100
  257 + { "item": "一月", "score": 40 },
  258 + { "item": "二月", "score": 20 },
  259 + { "item": "三月", "score": 67 },
  260 + { "item": "四月", "score": 43 },
  261 + { "item": "五月", "score": 90 }
  262 +]
  263 +```
  264 +
  265 +## 进度条
  266 +
  267 +##### 引用方式
  268 +
  269 +```js
  270 +import MiniProgress from '@/components/chart/MiniProgress'
  271 +```
  272 +
  273 +##### 参数列表
  274 +
  275 +| 参数名 | 类型 | 必填 | 说明 |
  276 +|------------|--------|----|-------------------|
  277 +| percentage | number | | 当前进度百分比,默认0,最高100 |
  278 +| target | number | | 目标值,默认10 |
  279 +| height | number | | 进度条高度,默认10 |
  280 +| color | string | | 进度条颜色,默认 #13C2C2 |
  281 +
  282 +## 仪表盘
  283 +
  284 +##### 引用方式
  285 +
  286 +```js
  287 +import DashChartDemo from '@/components/chart/DashChartDemo'
  288 +```
  289 +
  290 +##### 参数列表
  291 +
  292 +| 参数名 | 类型 | 必填 | 说明 |
  293 +|--------|--------|----|----------------|
  294 +| title | string | | 报表标题 |
  295 +| value | number | | 当前值,默认6.7,最大为9 |
  296 +| height | number | | 报表高度,默认254 |
  297 +
  298 +## 排名列表
  299 +
  300 +##### 引用方式
  301 +
  302 +```js
  303 +import RankList from '@/components/chart/RankList'
  304 +```
  305 +
  306 +##### 参数列表
  307 +
  308 +| 参数名 | 类型 | 必填 | 说明 |
  309 +|--------|--------|----|--------------|
  310 +| title | string | | 报表标题 |
  311 +| list | array | | 排名列表数据 |
  312 +| height | number | | 报表高度,默认自适应高度 |
  313 +
  314 +##### list 示例
  315 +
  316 +```json
  317 +[
  318 + {
  319 + "name": "北京朝阳 1 号店",
  320 + "total": 1981
  321 + },
  322 + { "name": "北京朝阳 2 号店", "total": 1359 },
  323 + { "name": "北京朝阳 3 号店", "total": 1354 },
  324 + { "name": "北京朝阳 4 号店", "total": 263 },
  325 + { "name": "北京朝阳 5 号店", "total": 446 },
  326 + { "name": "北京朝阳 6 号店", "total": 796 }
  327 +]
  328 +```
0 329 \ No newline at end of file
... ...
ant-design-jeecg-vue/src/components/chart/Radar.vue
1 1 <template>
2   - <v-chart :forceFit="true" height="400" :data="data" :padding="[20, 20, 95, 20]" :scale="scale">
  2 + <v-chart :forceFit="true" :height="height" :data="data" :padding="[20, 20, 95, 20]" :scale="scale">
3 3 <v-tooltip></v-tooltip>
4   - <v-axis :dataKey="axis1Opts.dataKey" :line="axis1Opts.line" :tickLine="axis1Opts.tickLine" :grid="axis1Opts.grid" />
5   - <v-axis :dataKey="axis2Opts.dataKey" :line="axis2Opts.line" :tickLine="axis2Opts.tickLine" :grid="axis2Opts.grid" />
6   - <v-legend dataKey="user" marker="circle" :offset="30" />
7   - <v-coord type="polar" radius="0.8" />
8   - <v-line position="item*score" color="user" :size="2" />
9   - <v-point position="item*score" color="user" :size="4" shape="circle" />
  4 + <v-axis :dataKey="axis1Opts.dataKey" :line="axis1Opts.line" :tickLine="axis1Opts.tickLine" :grid="axis1Opts.grid"/>
  5 + <v-axis :dataKey="axis2Opts.dataKey" :line="axis2Opts.line" :tickLine="axis2Opts.tickLine" :grid="axis2Opts.grid"/>
  6 + <v-legend dataKey="user" marker="circle" :offset="30"/>
  7 + <v-coord type="polar" radius="0.8"/>
  8 + <v-line position="item*score" color="user" :size="2"/>
  9 + <v-point position="item*score" color="user" :size="4" shape="circle"/>
10 10 </v-chart>
11 11 </template>
12 12  
... ... @@ -38,26 +38,48 @@
38 38 {
39 39 dataKey: 'score',
40 40 min: 0,
41   - max: 80
  41 + max: 100
42 42 }, {
43 43 dataKey: 'user',
44 44 alias: '类型'
45 45 }
46 46 ]
47 47  
  48 + const sourceData = [
  49 + { item: '示例一', score: 40 },
  50 + { item: '示例二', score: 20 },
  51 + { item: '示例三', score: 67 },
  52 + { item: '示例四', score: 43 },
  53 + { item: '示例五', score: 90 }
  54 + ]
  55 +
48 56 export default {
49 57 name: 'Radar',
50 58 props: {
51   - data: {
  59 + height: {
  60 + type: Number,
  61 + default: 254
  62 + },
  63 + dataSource: {
52 64 type: Array,
53   - default: null,
  65 + default: () => []
54 66 }
55 67 },
56   - data () {
  68 + data() {
57 69 return {
58 70 axis1Opts,
59 71 axis2Opts,
60   - scale
  72 + scale,
  73 + data: sourceData
  74 + }
  75 + },
  76 + watch: {
  77 + dataSource(newVal) {
  78 + if (newVal.length === 0) {
  79 + this.data = sourceData
  80 + } else {
  81 + this.data = newVal
  82 + }
61 83 }
62 84 }
63 85 }
... ...
ant-design-jeecg-vue/src/components/chart/RankList.vue
1 1 <template>
2 2 <div class="rank">
3 3 <h4 class="title">{{ title }}</h4>
4   - <ul class="list">
  4 + <ul class="list" :style="{height:height?`${height}px`:'auto',overflow:'auto'}">
5 5 <li :key="index" v-for="(item, index) in list">
6 6 <span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
7 7 <span>{{ item.name }}</span>
... ... @@ -23,6 +23,10 @@
23 23 list: {
24 24 type: Array,
25 25 default: null
  26 + },
  27 + height: {
  28 + type: Number,
  29 + default: null
26 30 }
27 31 }
28 32 }
... ...