Compare commits

..

837 Commits
v2.1.1 ... thin

Author SHA1 Message Date
unitwk
43a4d986b2 fix: Upgrade Vue version (#3023) 2023-09-13 20:26:07 +08:00
Shell2
c4216e24d6 explicitly checkout the thin branch (#2464)
explicitly checkout the thin branch
2022-12-18 19:54:20 +08:00
saber
d5e2d26a0f Compact main branch (#2255)
* init

* init

* fix: 修改外联路由打包bug

* fix: sime

* wip(lock): remove

* fix: LOCK

* fix: lock

* init

* feat: remove lock

* chore: remove semi

* chore: chore

* chore: chore

* chore: chore

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init

* init
2022-10-10 10:53:48 +08:00
wujieli
39188780ea feat(components): 更新 tinymce skins 目录文件版本 #2155 (#2192) 2022-10-09 16:26:32 +08:00
wangkang
99326342bc 表格查询条件下拉框文本超长显示错乱 (#2242)
* Update index.less

fix: 下拉框文本超长显示问题修改

* Update BasicTable.vue

fix: 表格查询条件下拉框文本超长显示错乱
2022-10-02 06:12:14 +08:00
acdxxx177
dfe560a542 perf: 头像上传组件返回值增加后端接口的返回值 (#2244) 2022-10-02 06:12:01 +08:00
wujieli
692df33fd8 types(components): ApiTransfer props 类型错误,删除多余属性 (#2197) 2022-09-29 13:49:44 +08:00
c37csq
9316d950b1 fix: excel export set width (#2206) 2022-09-29 13:49:32 +08:00
MrAlenZhong
5abb0f2b37 feat: 对BaseTree组件新增treeWrapperClassName属性 (#2217) 2022-09-29 13:49:17 +08:00
wangkang
e47c618b18 Update index.less (#2237)
fix: 下拉框文本超长显示问题修改
2022-09-29 13:49:01 +08:00
adeewu
2abc8275c6 修复调试位置与代码映射位置不一致问题 (#2228) 2022-09-29 13:48:50 +08:00
Aborn Jiang
f1d42769ea Update table.ts (#2223)
兼容row key有可能为number的情况
2022-09-29 13:48:35 +08:00
前端爱码士
dac9301af4 fix: 右键组件缺少PropType类型引用 (#2129)
右键组件缺少PropType类型引用
2022-08-05 11:12:26 +08:00
wjc112233
20c10df846 fix: 修改BasicForm表单的展开和收起按钮状态错误的bug (#2089) (#2109)
Co-authored-by: wjc <7098544231@qq.com>
2022-07-23 19:27:39 +08:00
wjc112233
b11df08aa4 fix: 修复SimpleSubMenu组件被意外地重新渲染的bug (#2106) (#2108)
Co-authored-by: wjc <7098544231@qq.com>
2022-07-23 19:26:33 +08:00
BlackTooth
6e391af3fe fix(keep-alive): disabler (#2101)
Co-authored-by: 隆杰 <longjie.li@taxsoyea.net>
2022-07-23 19:25:15 +08:00
Name6
7925c1ea28 fix(Login): fix display issues when AppLocalePicker's showText property is true (#2097) 2022-07-23 19:24:38 +08:00
newplum
442bd440ba fix(axios): 非GET请求时增加判断config.data是否为FormData (#2082) 2022-07-19 12:10:06 +08:00
wjc112233
4a4321a77d fix: 修改表格的resizeColumn事件的回调函数中,修改列宽度无效的bug (vbenjs#2073) (#2081)
Co-authored-by: wjc <7098544231@qq.com>
2022-07-19 12:09:45 +08:00
Arvin
aee08b14fa Revert "style: 优化滚动条显示,只有在内容超过显示高度时才会出现 (#1978)" (#2080)
This reverts commit deff31bc5d.
2022-07-19 12:09:12 +08:00
zuihou
b9dee8595f feat: 复现:表格中增加比较多的列,且加了rowSelection后,表格错位问题 2022-07-13 19:05:42 +08:00
zuihou
a753eb35cb feat: 表格中增加比较多的列,复现表格错位问题 2022-07-13 18:37:05 +08:00
GauharChan
c001535b56 fix(styleImport): fix ImagePreviewGroup build error (#2068)
Co-authored-by: gauhar chan <chenguohua@gzhtedu.cn>
2022-07-12 01:08:28 +08:00
vancenlee
9afb4318fd fix: inputnumber span 不起作用的问题,增加样式之后可以根据Span动态适应 (#2065)
Co-authored-by: van <vancnblog@126.com>
2022-07-10 18:29:37 +08:00
Henry
baa42a57fd fix: 使用枚举属性表示mock的响应状态 (#2062) 2022-07-10 18:29:21 +08:00
Arvin
6981b73ef6 fix: fix table header and table body cannot be aligned (#2058)
* fix: fix wrong naming

* perf: 表单设置初始值defaultValue时候使用深度拷贝

* perf: 表单设置初始值defaultValue时候使用深度拷贝

* Revert "perf: 表单设置初始值defaultValue时候使用深度拷贝"

This reverts commit a103cd11b4.

* perf: perf Tree Component

* fix: 解决tree树形异步懒加载,点击两次才能关闭

* fix: fix table header and table body cannot be aligned

Co-authored-by: yfh01 <unconfigured@null.spigotmc.org>
2022-07-10 18:28:52 +08:00
sevth
266c33819f fix: 修复使用 extendSlots 时插槽参数未传递的问题。 (#2056)
Co-authored-by: sevth <pengqiang@vastweb>
2022-07-10 18:27:56 +08:00
zhengqbbb
9c26ee1b9c chore: use cz-git commitizen adapter (#2054)
* chore: use `cz-git` commitizen adapter

* workflow: update `cz-git` types description
2022-07-10 18:27:38 +08:00
cn.shperry
f305637366 fix: 中文模式下日期选择框月份及星期异常显示英文 (#1406). (#2053)
Co-authored-by: 舒培培 <622292@ky-tech.com.cn>
2022-07-10 18:26:55 +08:00
Cyrus Zhou
40071529d2 添加 Form ApiTransfer , 修复标签页切换灰屏不显示内容问题 (#2052)
* Table BasicColumn 添加 editDynamicDisabled
Co-authored-by: Cyrus Zhou <6802207@qq.com>
使用方式同 Form FormSchema dynamicDisabled
```
export const Columns: BasicColumn[] = [
  {
    title: 'Title',
    dataIndex: 'Title',
    editRow: true,
    editComponent: 'Select',
    editDynamicDisabled: ({ record }) => record.isDisabled,
  },

* editComponentProps onChange 功能恢复
Co-authored-by: Cyrus Zhou <6802207@qq.com>
说明:
...omit(compProps, 'onChange')
这会忽略 onChange ,导致 editComponentProps onChange 被取消

如下功能将不支持:
```
editComponentProps: ({ record }) => {
  return {
    options: effectTypeData,
    onChange: () => {
    },
  };
},
```

* tableData == null 报错

* ApiSelect 第一次选择触发required错误提示问题

* 恢复 虽然可以解决第一次选择提示报错问题,但是会导致 onChange: (e: any, options: any) => 无法获得 options 的值

* 修复标签页切换灰屏不显示内容问题
Co-authored-by: Cyrus Zhou <6802207@qq.com>
问题描述页面没有用 div 包括 会提示 Component inside <Transition> renders non-element root node that cannot be animated ,
导致页灰屏必须刷新页面才可以显示内容

* 添加 Form ApiTransfer
## 使用方式
api 方式:
```
    ......
    component: 'ApiTransfer',
    componentProps: {
       api: sysUserSelector,
       labelField: 'name',
       valueField: 'id',
    },
    .....
```
数据方式:
```
     ....
     componentProps: {
      dataSource: [
        { title: 'Test01', key: '0', disabled: false, description: 'description 01' },
        { title: 'Test02', key: '1', disabled: false, description: 'description 02' },
        { title: 'Test03', key: '2', disabled: false, description: 'description 03' },
        { title: 'Test04', key: '3', disabled: false, description: 'description 04' },
        { title: 'Test05', key: '4', disabled: false, description: 'description 05' },
      ],
    },
    ....
```
2022-07-10 18:26:39 +08:00
Wit〆苗大
6f5711b088 fix(is.ts): 修复isUrl正则不能匹配到 hash模式的外链 的问题 (#2051)
Co-authored-by: 苗大 <v.caoshm@yoozoo.com>
2022-07-07 15:42:50 +08:00
quyanan
bc55b92c9b fix(expandtable): 恢复可展开表格Demo,修复开启可展开表格后横向滚动失效问题 (#2050)
Co-authored-by: jinmao88 <50581550+jinmao88@users.noreply.github.com>
2022-07-07 15:42:30 +08:00
fuling
f1e8e241b1 feat: ImportExcel组件增加直接获取文件功能,方便后端处理大Excel文件。 (#2045)
* style: 优化系统管理中账号、角色和部门表单样式

* feat: ImportExcel组件增加直接获取文件功能,方便后端处理大Excel文件。

Co-authored-by: 发光的卤蛋 <zdxndy@qq.com>
2022-07-07 15:41:25 +08:00
muamuamu
5833043d14 fix(useRedo): 重新加载页面useRedo方法会添加一条浏览记录 (#2043) 2022-07-07 15:41:08 +08:00
GauharChan
35f2d074ae fix: 修复#2030改动引起的可展开table失效 (#2042) 2022-07-07 15:40:33 +08:00
Tianyuan Zhang
c0e40fa01e refactor: update class AxiosTransform (#2041)
rename transformRequestHook to transformResponseHook
2022-07-07 15:39:48 +08:00
wjc112233
ddb678ddfa fix: fix#2031 修复表格可编辑行在编辑模式下,无法处理数组类型的值的问题 (#2035)
Co-authored-by: wjc <7098544231@qq.com>
2022-07-05 11:56:58 +08:00
Wit〆苗大
91e13c4287 fix(is.ts): fix#2028 修复isUrl正则可以匹配到/www问题 (#2033)
Co-authored-by: 苗大 <v.caoshm@yoozoo.com>
2022-07-05 11:56:45 +08:00
Wit〆苗大
de7279399d fix(table): 彻底修复column.slots已废弃的antd报错, 所有用到的demo页修改为antd 3.x v-slot:headerCell 和 v-slot:bodyCell 写法 (#2030)
Co-authored-by: 苗大 <v.caoshm@yoozoo.com>
2022-07-05 11:56:29 +08:00
Wit〆苗大
a89e497e82 fix: markdown深色模式内容区和代码块未适配bug; markdownViewer改为vidtor自带预览模式 (#2023)
* fix(Markdown): 修复深色模式 内容区和代码块 未改变主题bug

* perf(Markdown): MarkDown组件示例增加不同功能示例; 切换深色主题按钮 同时改变 内容区和代码块主题

* perf(MarkdownViewer): MarkdownViewer改为vditor自带的预览模式; 同时适配深色模式

Co-authored-by: 苗大 <v.caoshm@yoozoo.com>
2022-07-05 11:55:26 +08:00
BlackTooth
0f50e0458e fix(useTableFooter): not synchronization scroll bug (#2022)
Co-authored-by: 隆杰 <longjie.li@taxsoyea.net>
2022-07-05 11:43:53 +08:00
Cyrus Zhou
4730b3af31 Table BasicColumn 添加 editDynamicDisabled (#2018)
* Table BasicColumn 添加 editDynamicDisabled
Co-authored-by: Cyrus Zhou <6802207@qq.com>
使用方式同 Form FormSchema dynamicDisabled
```
export const Columns: BasicColumn[] = [
  {
    title: 'Title',
    dataIndex: 'Title',
    editRow: true,
    editComponent: 'Select',
    editDynamicDisabled: ({ record }) => record.isDisabled,
  },

* editComponentProps onChange 功能恢复
Co-authored-by: Cyrus Zhou <6802207@qq.com>
说明:
...omit(compProps, 'onChange')
这会忽略 onChange ,导致 editComponentProps onChange 被取消

如下功能将不支持:
```
editComponentProps: ({ record }) => {
  return {
    options: effectTypeData,
    onChange: () => {
    },
  };
},
```

* tableData == null 报错

* ApiSelect 第一次选择触发required错误提示问题

* 恢复 虽然可以解决第一次选择提示报错问题,但是会导致 onChange: (e: any, options: any) => 无法获得 options 的值
2022-07-05 11:43:34 +08:00
Charles
740d160198 fix: keep spaces of env config on prod build (#2015) 2022-07-05 11:42:49 +08:00
ParkerFiend
aefde45ad5 Update extensions.json (#1989) 2022-07-05 11:42:16 +08:00
Tanimodori
3cc72d6791 fix: 更新Schema时默认值不应覆盖已有值,fix #1997 (#2003) 2022-06-26 12:47:53 +08:00
Tanimodori
fbcba766ae fix: 修复DrawerFooter border-top导致滚动条出现的问题 (#2002) 2022-06-26 12:47:33 +08:00
Kuizuo
1455eb48db fix: rules validator tips (#2000) 2022-06-26 12:46:43 +08:00
Tanimodori
ba97f80d33 修复tinymce嵌入表单示例页面换行错误,清理!important,revert(vbenjs#1996) (#1999)
* revert: "修改tinymce富文本下拉菜单错位的bug (#1996)"

* style: 修复tinymce嵌入表单示例页面换行错误,清理!important
2022-06-26 12:46:27 +08:00
liuya6
0902de7504 修改tinymce富文本下拉菜单错位的bug (#1996) 2022-06-24 04:37:38 +08:00
cn.shperry
da8e0bdf91 fix: type warning. (#1994)
Co-authored-by: 舒培培 <622292@ky-tech.com.cn>
2022-06-24 04:37:21 +08:00
fuling
06236c9fe0 style: 优化系统管理中账号、角色和部门表单样式 (#1992)
Co-authored-by: 发光的卤蛋 <zdxndy@qq.com>
2022-06-24 04:36:38 +08:00
GauharChan
2c536976e8 feat(function): add table bodyCell slot for antdv3.x; and fix #1705 (#1991) 2022-06-24 04:36:20 +08:00
Tanimodori
c2e2ca9bed style: 修复antdv Modal header高度错误 (#1987) 2022-06-24 04:35:21 +08:00
Tanimodori
02c469b17a types: 再次修复RouteLocationRawEx类型错误 (vbenjs#1968) (#1975) 2022-06-19 17:51:28 +08:00
Micah
deff31bc5d style: 优化滚动条显示,只有在内容超过显示高度时才会出现 (#1978) 2022-06-19 17:50:33 +08:00
cn.shperry
e09a797d05 types: 缩减 setup script 警告 & 修复表格列设置组件中部分方法参数类型错误. (#1980)
Co-authored-by: 舒培培 <622292@ky-tech.com.cn>
2022-06-19 17:50:16 +08:00
cn.shperry
8a7d9bcd4d fix: 修复表格列设置下拉框中偶现列数据区域空白 (#1958) (#1981)
Co-authored-by: 舒培培 <622292@ky-tech.com.cn>
2022-06-19 17:49:47 +08:00
Micah
934ccd34ea fix: 修复 当窗口过窄时,表格中的删除确认框样式错乱 的问题 (#1972) 2022-06-16 19:05:10 +08:00
Tanimodori
85f1e58bcc types: 修复RouteLocationRawEx类型错误 (vbenjs#1968) (#1970) 2022-06-16 19:04:50 +08:00
ChenErik
e073b4c944 fix(echarts): add resize animation (#1950) 2022-06-16 19:04:30 +08:00
You
554f4615a1 fix: 菜单响应式隐藏时宽度计算错误 (#1945)
Co-authored-by: zeozhou <zeozhou@tencent.com>
2022-06-16 19:04:07 +08:00
Arvin
d21578ab33 表单设置初始值defaultValue时候使用深度拷贝 (#1935)
* fix: fix wrong naming

* perf: 表单设置初始值defaultValue时候使用深度拷贝

* perf: 表单设置初始值defaultValue时候使用深度拷贝

* Revert "perf: 表单设置初始值defaultValue时候使用深度拷贝"

This reverts commit a103cd11b4.

* perf: perf Tree Component

* fix: 解决tree树形异步懒加载,点击两次才能关闭

Co-authored-by: yfh01 <unconfigured@null.spigotmc.org>
2022-06-16 19:03:37 +08:00
山田
857af11ced feat(useContext): 删除多余重载 (#1932) 2022-06-16 19:02:51 +08:00
小顾
50468e9581 fix: 修复ColumnSetting中默认隐藏列拖拽排序错误的bug (#1931)
Co-authored-by: 顾佳磊 <jareygu@gmail.com>
2022-06-16 19:02:33 +08:00
Jim
19dc88b4e0 docs: 添加注释, 修复 (#1927)
* docs: 添加注释

* docs: 添加注释

* fix: 后台动态权限changePermissionCode加上await

* docs: 添加注释

* docs: 添加注释

* docs: 添加注释

* docs: 添加注释

* docs: 添加注释
2022-06-16 19:02:10 +08:00
Jim
cfbd52bbe7 docs: 添加注释 (#1924) 2022-05-28 05:49:18 +08:00
前端爱码士
c0edd7b70e fix: 个人中心(data.tsx)多余的html片段 (#1894)
删除个人中心(data.tsx)多余的html片段
2022-05-20 18:02:44 +08:00
chengj
fe5848cf21 feat: contextMenuItem add hidden property (#1890)
* fix: dropdown placement bottomCenter to bottom

* feat: contextMenuItem add hidden property
2022-05-20 18:02:23 +08:00
山田
c3b5abc392 fix(echarts): 修复无法使用散点图表 (#1880) 2022-05-20 18:01:14 +08:00
shellingfordly
a40332cbfe style: fix style error of login page (#1901)
Co-authored-by: liuyao <liuyao@liuyaodeiMac.local>
2022-05-20 18:00:31 +08:00
Joyboo
42908a4535 add TabsForm demo (#1914)
* chore: table size放到settings

* chore(TableAction): 操作确认框增加placement属性支持

* chore(Form): 表单field支持a.b.c嵌套写法

* feat(Form): add TabsForm demo

Co-authored-by: jinmao88 <50581550+jinmao88@users.noreply.github.com>
2022-05-20 18:00:08 +08:00
Felix Hoi
a0920d284d fix(useFormEvents): isNullOrUnDef is not defined (#1915)
* fix/invaild dateFormat

* fix(useFormEvents): isNullOrUnDef is not defined

Co-authored-by: Felix Hoi <felixhoi@ssm.gov.mo>
2022-05-20 17:59:45 +08:00
zuihou
419b7aea07 fix(axios): 请求异常时,无法正确执行 catch 2022-05-06 10:39:46 +08:00
仲灏
e807539b80 perf: Changing variable names (#1869) 2022-05-04 15:11:23 +08:00
Felix Hoi
0634f2ca9e fix/invaild dateFormat (#1871)
Co-authored-by: Felix Hoi <felixhoi@ssm.gov.mo>
2022-05-04 15:11:05 +08:00
Joyboo
d09e998ae7 表单field支持a.b.c的写法 (#1549)
* chore: table size放到settings

* chore(TableAction): 操作确认框增加placement属性支持

* chore(Form): 表单field支持a.b.c嵌套写法

Co-authored-by: jinmao88 <50581550+jinmao88@users.noreply.github.com>
2022-04-30 19:05:02 +08:00
Hongbusi
e097600003 Update README.md (#1861) 2022-04-29 18:39:41 +08:00
chengj
3ee7051950 fix: dropdown placement bottomCenter to bottom (#1865) 2022-04-29 18:39:16 +08:00
chengj
5ad93c6004 feat(function): get selected tree node (#1857) 2022-04-29 09:55:14 +08:00
爱吃薯片的内存条
ce7f382b9b fix: 修复tree组件初次渲染时无法应用已勾选的节点数组及一处字段名错误 (#1854) 2022-04-29 09:54:43 +08:00
Li Kui
1832d0c07a fix: custom validator check failed for prop "placement" (#1851)
[VueTypes warn]: oneOf - value should be one of "topLeft", "topCenter", "topRight", "bottomLeft", "bottomCenter", "bottomRight".
[Vue warn]: Invalid prop: custom validator check failed for prop "placement".
2022-04-29 09:54:18 +08:00
chengj
e05a40f680 feat: specify the position of Pagination in Table component (#1849)
* feat: table add pagination postion property

* feat: specify the postion of Pagination in Table
2022-04-26 13:36:18 +08:00
iconFehu
ee85839ba3 fix: fix wrong naming (#1845)
Co-authored-by: yfh01 <unconfigured@null.spigotmc.org>
2022-04-26 13:35:50 +08:00
Mr Tao
d6a3eecbc2 fix: update @vue/compiler-sfc version (#1836) 2022-04-22 06:32:58 +08:00
George Tan
8932bf9a2d fix(styleImport): fix RangePicker build error (#1820) 2022-04-21 10:48:22 +08:00
JinMao
9d4d78d2c9 chore: update deps 2022-04-21 10:30:04 +08:00
JinMao
2d553f204a chore: update deps 2022-04-18 08:25:20 +08:00
JinMao
3b86435766 feat: ApiTree add afterFetch props,add ApiTree demo 2022-04-18 08:21:04 +08:00
jenson
e3637e7af4 fix: 修复Tree组件如果重新定义fieldNames的title字段后设置actionList失效的问题 (#1778)
Co-authored-by: miaojingu <miaojingu@zclhgroup.com>
2022-04-13 19:46:08 +08:00
Henry Rao
b41e3939ac fix: 修复updateSchema之后会把已填值重置为defaultValue的问题 (#1792) 2022-04-13 19:45:55 +08:00
chengj
23e0932883 fix: 修复Description组件渲染function xxxx() { [native code] }的问题 (#1796)
* fix/description-render-prototype-methods

* fix/description-render-prototype-methods
2022-04-13 19:44:36 +08:00
jinmao88
8f2008ac74 Merge pull request #1799 from hsldymq/fix-fade-transition
fix(Transition): fade-transition淡出淡入无效
2022-04-13 19:41:09 +08:00
jinmao88
2bf48e0f23 合并拉取请求 #1801
feat: 实时监听form表单项值变化
2022-04-13 19:34:58 +08:00
chengj
c0441cf5c3 feat: listen form field value change 2022-04-13 10:49:53 +08:00
hsldymq
b3f6b04981 fix(Transition): fade-transition淡出淡入无效 2022-04-13 00:15:20 +08:00
zuihou
8d93e047d0 fix: 已经存在rules时,required不生效 2022-04-08 23:58:39 +08:00
zuihou
fb43e54847 feat(BasicTree): 支持设置加载中 2022-04-08 18:27:22 +08:00
zuihou
1e0ede09a2 fix: 已经存在rules时,required不生效 2022-04-08 16:39:32 +08:00
JinMao
823f7b3226 chore: update deps 2022-04-08 13:09:03 +08:00
zuihou
28d73f95bd fix: 无需导入 defineExpose 2022-03-30 09:38:48 +08:00
zuihou
418ca2405e Merge remote-tracking branch 'origin/main' 2022-03-28 09:23:52 +08:00
jinmao88
7c21eb9b3a Merge pull request #1752 from chenli1989/main
pref: Optimize tabs dropdown-menu style
2022-03-28 07:25:15 +08:00
zuihou
923ecdab3c fix: 修复表格编辑时 Checkbox 组件无法正常取消勾选 2022-03-28 00:43:07 +08:00
zuihou
eb231120e1 fix(table): 表格编辑支持AutoComplete 2022-03-28 00:41:59 +08:00
zuihou
a343b49014 feat: 表单新增name属性。 配置name后,可以解决同一个页面有多个表单且存在相同字段时, 生成的组件字段的id相同的问题 2022-03-28 00:41:09 +08:00
zuihou
28078d4263 refactor: 支持外部调用展开关闭接口 2022-03-28 00:39:46 +08:00
chenli1989
de266e538d perf: optimize tabs dropdown-menu style 2022-03-26 14:38:24 +08:00
chenli1989
b85a11d0f0 perf: optimize step-by-step form layout 2022-03-26 14:35:38 +08:00
Redon
770574c9b0 fix: 修复 Dropdown 组件 bottomCenter 参数变更的报错提示 (#1745) 2022-03-25 23:40:34 +08:00
chenls
0c633ff67d fix: Set cache overflow of the setTimeout Maximum delay value (#1742) 2022-03-25 23:40:15 +08:00
wangxiaoer5200
d31cb904db fix: 修复控制台一些常见报错和警告 (#1750)
Co-authored-by: wangbin <18695686631@163.com>
2022-03-25 23:39:49 +08:00
jianjianxu
a542317dc3 fix: wrong item.time without the "expires" (#1740) 2022-03-23 22:31:50 +08:00
chenls
e4305daf98 perf: remove ant-design-vue@3.0.0-beta.11 .ant-col fix (#1734) 2022-03-23 22:31:28 +08:00
Micah
10b59395b2 fix: 修复 运行npm run lint:stylelint命令时,无法识别less内置函数 (#1736)
删除 stylelint.config.js文件 rules中重复的selector-class-pattern

Co-authored-by: Micah <yumingsheng@hrbeu.edu.cn>
2022-03-23 22:31:01 +08:00
vben
1dca636521 fix: lint 2022-03-19 07:47:49 +08:00
vben
5db1250a8d fix: stylelint config, close #1658 2022-03-19 06:55:37 +08:00
Captain
136cbb1e3b feat: add request retry (#1553) 2022-03-19 00:07:34 +08:00
LuCat
78535bdd86 fix: 修复右键按钮在弹窗下层级问题 (#1552) 2022-03-19 00:06:37 +08:00
lzdjack
aaa30fbf10 feat(form): appendSchemaByField和updateSchema支持defaultValue (#1608)
1. 兼容appendSchemaByField和updateSchema支持设置默认值
2022-03-19 00:06:01 +08:00
Caisin
9092c34cd5 fix(table):basicColumn加泛型 (#1618)
新版本ant design vue的columnProps使用了泛型,导致xxx.data.ts里面定义的BasicColumn使用customRender地方全部报错
2022-03-19 00:05:49 +08:00
Leo Caan (陈栋)
3d55b0d45b fix: 修复Table当dataIndex为数组时,列设置中勾选列是否展示时使column结构异常的问题 (#1626) 2022-03-19 00:05:30 +08:00
Dack Wang
573a443007 fix(ApiCascader): 引入缺少useI18n库的t方法 (#1648)
* fix():  The Style of tableTitle slot

* fix(ApiCascader): 引入缺少useI18n库的t方法

Co-authored-by: 王英琦 <wangyingqi@91bihu.com>
Co-authored-by: wangyingqi <wangyingqi@chinapost.com.cn>
2022-03-19 00:05:14 +08:00
lee
79eb909c66 feat: make fields key of form deconstructable (#1663)
Co-authored-by: liheng.wu <liheng.wu@tcl.com>
2022-03-19 00:04:11 +08:00
vben
927220933e Merge branch 'main' of https://github.com/anncwb/vue-vben-admin 2022-03-18 21:36:55 +08:00
vben
5a3a7633ac chore: chalk is replaced by piccolors 2022-03-18 18:39:32 +08:00
vben
414101613e chore: lint fix 2022-03-18 20:34:44 +08:00
vben
21bae3ad49 chore: remove jest 2022-03-18 20:22:05 +08:00
vben
b303f1bea3 chore: update deps 2022-03-18 20:07:37 +08:00
JinMao
8f1bd4ae76 fix: Table Title Error 2 2022-03-18 13:50:03 +08:00
JinMao
5c24a1c4c4 fix: Table Title Error 2022-03-15 14:27:16 +08:00
JinMao
e91d757169 chore: update deps 2022-03-15 12:54:27 +08:00
jinmao88
4cda7c6fc1 Merge pull request #1705 from shellingfordly/main
fix(table): 修复antd报错,column.slots已废弃,修改为v-slot:headerCell
2022-03-14 11:38:58 +08:00
liuyao
a23020b76d fix(table): 修复antd报错,将column.slots修改为v-slot:headerCell 2022-03-11 16:17:36 +08:00
vben
af6ab98945 fix: build error 2022-02-28 00:21:26 +08:00
vben
ecc2135b5e chore: update deps 2022-01-24 23:30:26 +08:00
vben
4e4ce944bc feat: support dev https 2022-01-18 22:05:51 +08:00
lzdjack
b63f7d17de feat: 增强可编辑单元格功能 (#1576)
1. 增加可编辑单元格非编辑状态下可自定义样式
2. 扩展editComponentProps,可接受方法
2022-01-18 21:49:24 +08:00
ToQuery
67d514ad0e 新增 api tree 组件 (#1582)
* tsconfig 增加 types , 解决webstorm提示错误

* api-tree
2022-01-18 21:48:58 +08:00
lqxlearn
929141be96 fix:fetch-success total 0 (#1597)
Co-authored-by: qiuxiang <liumeiwang@localhost.com>
2022-01-18 21:48:05 +08:00
wentmac
e82bafa43e fix: 修复EditCellTable 可编辑单元格当columns.ellipsis=true时,回调中取不到key的值。 (#1598) 2022-01-18 21:47:47 +08:00
wangxiaoer5200
5fc28f92d5 fix: 修复CollapseContainer组件按钮插槽问题,close #1555 (#1557) 2021-12-31 09:26:58 +08:00
vben
5ac055be2f fix: build error 2021-12-28 21:48:12 +08:00
ToQuery
266b566850 tsconfig 增加 types , 解决webstorm提示错误 (#1527) 2021-12-28 18:47:57 +08:00
Captain
a281631ae3 fix: The value of ignoreCancelToken is not available in headers (#1506) 2021-12-28 18:47:44 +08:00
1sm
f964533701 feat(BasicForm): add submitOnChange option (#1521) 2021-12-28 18:47:21 +08:00
lzdjack
dd158a17fe feat: 添加table继承父元素高度的功能 (#1523)
在保证了原有的高度计算上,额外新增继承父级高度, 只需设置isCanResizeParent:true
2021-12-28 18:46:57 +08:00
CXM
c8d59a0bbc fix "fix: collapse canExpand (#1501)" (#1525)
* fix(type): fix ant-design-vue  ->

* fix: fix base64 blob

* fix: fix CollapseHeader canExpan bug
2021-12-28 18:46:38 +08:00
wangxiaoer5200
2423aeab64 fix: 修复表单重置某些input类型组件不生效问题,close #1519 (#1526)
Co-authored-by: bingguo <bingguo@gaoding.com>
2021-12-28 18:46:17 +08:00
George Tan
1a43142252 fix(form component): fix form 'vertical' layout row width (#1535) 2021-12-28 18:46:03 +08:00
Eikon
52e295f1d5 docs(enums): update description (#1532) 2021-12-28 18:45:48 +08:00
George Tan
de8ea59177 fix(table component): reduce 'insertTableDataRecord' code logic (#1536) 2021-12-28 18:45:32 +08:00
George Tan
1dc6faf3e6 feat(table component): add 'expandRows' table action (#1537)
* fix(table component): add 'expandRows'

* feat(table component): add 'expandRows' table action
2021-12-28 18:45:14 +08:00
George Tan
598ce5a1bf feat(table component): add 'scrollTo' table action (#1538) 2021-12-28 18:44:51 +08:00
Yinux
8c607b38f1 fix: Fix the date and week display issue on the lock screen(#1539) (#1542) 2021-12-28 18:42:51 +08:00
bingzhe
b84cc5eb06 fix(Modal): repair cancel event missing (#1545) 2021-12-28 18:42:03 +08:00
vben
f015a874e2 chore: update deps 2021-12-19 21:44:29 +08:00
sevth
4f35b95b6b fix: Multiple calls to createAxios function transform parameters are overwritten by other calls (#1474) 2021-12-18 22:28:20 +08:00
Henry Rao
46e28f0203 FixEditcell: 修复可编辑单元格不显示0的bug (#1486)
* fix: 修复可编辑表格不显示 0 的bug

* fix: 修复编辑单元格为空时不能触发编辑的bug
2021-12-18 22:27:44 +08:00
Henry Rao
aab6b4f393 fix: 修复多tab带参数匹配不正确的bug (#1482) 2021-12-18 22:27:28 +08:00
Mark
54ea44cdad fix(Modal): 修复弹窗在最新的360浏览器和搜狗失效的问题 (#1381) (#1488) 2021-12-18 22:26:27 +08:00
lzdjack
a462be0a5e fix: 修复上传附件之后回显了多余条目 (#1495) 2021-12-18 22:25:49 +08:00
lzdjack
b639650397 fix: 修复table自适应高度和title属性声明问题 (#1496)
1.修复table升级ant3.0导致无法自适应剩余高度
2.修复table升级ant3.0导致BasicColumn类型的title属性无法找到
2021-12-18 22:25:33 +08:00
lzdjack
9217a12bcc fix: 修复在windows下pnpm执行package.js里的脚本报错的问题 (#1497) 2021-12-18 22:25:19 +08:00
lzdjack
6b594aec53 fix: Fix the issue that clear verification does not take effect in the reset form (#1498) 2021-12-18 22:24:58 +08:00
CXM
fa33c6b0d7 fix: collapse canExpand (#1501)
* fix(type): fix ant-design-vue  ->

* fix: fix base64 blob

* fix: fix CollapseContainer canExpan
2021-12-18 22:24:28 +08:00
lzdjack
a2b594c962 fix: Fix the problem that the table setting menu cannot be dragged (#1503) 2021-12-18 22:23:42 +08:00
wujieli0207
0dafaa5972 fix(function): Add defineProps reference (#1505) 2021-12-18 22:23:11 +08:00
vben
b0a0cbcd6a fix: Fix context menu not working 2021-12-12 23:17:00 +08:00
Jiang
f6e27aee16 Update ColumnSetting.vue (#1451)
修复配置项中,拖拽后  点击   重置按钮   table 恢复还原,但 拖拽列表并未还原bug
2021-12-12 22:09:29 +08:00
Jiang
23b5538eae 修复 init 运行时机不正确 (#1452)
修复去掉checkList 后,移动配置中的table顺序后,调用tabel.setColum() 时触发 init() ,导致checkList 被重置bug
2021-12-12 22:09:14 +08:00
1sm
ab62739fd1 ApiSelect Add alwaysLoad option (#1461)
* fix(modal): 取消全屏功能后关闭图标颜色异常

* chore: move to pnpm

* fix: RangePicekr在表单项中占满分配的宽度

* chore: comment format

* Revert "fix: RangePicekr在表单项中占满分配的宽度"

This reverts commit cd70e41dac.

* feat(ApiSelect): 新增每次加载选项

Co-authored-by: liushiman <smliu@gk-estor.com>
2021-12-12 22:08:42 +08:00
XC
b70fade587 fix(treeHelper): 修复 listToTree 方法 parent 获取 children 问题 (#1464) 2021-12-12 22:08:23 +08:00
zuihou
05bad7b9dc fix(BasicTree): 加了top参数,操作按钮会错位 2021-12-11 12:18:05 +08:00
zuihou
13d660bede feat: 添加BasicTree使用 fieldNames 后,actionList 和 插槽 会失效的示例代码 2021-12-10 22:19:43 +08:00
zuihou
8523afd512 fix(BasicTree): 修复升级antdv3.x后产生的问题
1. BasicTree组件无法正确使用插槽的问题
2. 无法递归遍历的问题

Closes #1453
2021-12-10 22:17:47 +08:00
zuihou
8480454b73 fix(Form): 修复form宽度问题 2021-12-10 21:24:48 +08:00
vben
e024f6a6e7 fix: typo 2021-12-01 23:09:28 +08:00
vben
cb1759b257 perf(table): remove ExpandIcon 2021-12-01 22:40:29 +08:00
vben
81560fd3c6 fix(tree): fix display error 2021-12-01 22:29:54 +08:00
vben
170a4bceb1 fix(tree-select): replaceFields to fieldNames,close #1423 2021-12-01 22:20:58 +08:00
humanscrew
cfda62ef9c fix: Fix Layout Page Tabs dragable (#1433)
* fix: pnpm install

* fix: Fix Tabs dragable
2021-12-01 22:02:18 +08:00
arika163
16cd2438dd remove duplicate judgment (#1432)
Co-authored-by: zhangchao3 <zhangchao3@corp.netease.com>
2021-12-01 22:01:50 +08:00
JinMao
2a667c9e7f fix: Fix depends @vue/shared @vue/runtime-core 2021-12-01 13:33:59 +08:00
vben
52257f061d refactor(tree): Refactor tree to support antv3.0 2021-11-30 01:01:19 +08:00
vben
50cf2d0b8f chore: update deps 2021-11-28 16:27:56 +08:00
vben
2aabbc788a fix: Fix multi-language errors and installation errors 2021-11-26 00:09:08 +08:00
vben
bc18ecb277 fix: Fix github action running error 2021-11-25 00:23:30 +08:00
vben
413df9f5e1 Merge branch 'feat/antdv3.x' 2021-11-24 23:32:34 +08:00
vben
3fcfac1f37 wip: Upgrade ant-design-vue 3.0 2021-11-24 23:25:13 +08:00
1sm
5fca9ce2c5 chore: comment format (#1398)
* fix(modal): 取消全屏功能后关闭图标颜色异常

* chore: move to pnpm

* fix: RangePicekr在表单项中占满分配的宽度

* chore: comment format

* Revert "fix: RangePicekr在表单项中占满分配的宽度"

This reverts commit cd70e41dac.

Co-authored-by: liushiman <smliu@gk-estor.com>
2021-11-24 23:17:11 +08:00
Carson
dc4b05272f refactor(dashboard): adjust the spacing of Card under the small screen (#1399)
Co-authored-by: huguangju <huguangju@wowkai.cn>
2021-11-24 23:16:53 +08:00
handsomeFu
b8411c9311 chore: fix typo (#1384) 2021-11-22 09:15:59 +08:00
西安十大杰出青年
4806aced85 Update TableAction.vue (#1394)
fix: 解决TableAction组件Dropdown因为权限导致分割线显示错误的问题.
2021-11-22 09:15:50 +08:00
nsk
3b3f6c903a fix: some mistakes close #1349, close #1250 close#1245 (#1373)
* fix(Loading): add theme prop, The repair background prop does not take effect

* fix(AppLogo): fix title line height

* fix(Table,Upload): fix #1349 #1250 #1245
2021-11-15 18:59:28 +08:00
Coderclc
b3c4002b69 fix: Fix setting hideMenu, bread bar jump problem (#1358) 2021-11-15 09:32:14 +08:00
handsomeFu
7e00488635 chore: Update extensions.json (#1359)
Use volar instead of vetur
2021-11-15 09:32:01 +08:00
vben
090d844014 fix: type, #1347 2021-11-11 22:28:39 +08:00
CXM
013cb7f16b fix: fix base64 blob (#1356)
* fix(type): fix ant-design-vue  ->

* fix: fix base64 blob
2021-11-11 22:18:22 +08:00
vben
c2b207dd51 fix: Fix stylelint does not support html files 2021-11-10 23:24:39 +08:00
vben
83921284a6 chore: update deps 2021-11-10 21:49:41 +08:00
HUCHAOQI
59b309aa7e fix(table): 使用lodash 的merge来递归assign,优化在多对象嵌套情况下的结构 (#1350) 2021-11-10 21:45:33 +08:00
liweijie0812
49c890ebec fix: Form appendSchemaByField移除hasInList判断 (#1341) 2021-11-09 09:36:10 +08:00
Joyboo
c8dd3b6c14 TableAction确认框增加placement属性 (#1335)
* chore: table size放到settings

* chore(TableAction): 操作确认框增加placement属性支持
2021-11-08 09:24:53 +08:00
1sm
9999650a9a package.json yarn -> pnpm (#1336)
* fix(modal): 取消全屏功能后关闭图标颜色异常

* chore: move to pnpm

Co-authored-by: liushiman <smliu@gk-estor.com>
2021-11-08 09:24:22 +08:00
miofly
b5364fe546 chore:add rules (#1340) 2021-11-08 09:24:00 +08:00
vben
74b0dfd54f chore: update pkg 2021-11-03 00:38:24 +08:00
vben
642d48870c chore: release 2.8.0 2021-11-03 00:28:43 +08:00
vben
3b63e41b68 chore: move to pnpm 2021-11-03 00:28:32 +08:00
madlight-du
d6cdff97b6 fix: direct import for antdv subcomponents supported(8b00112) (#1322)
* fix: direct import for antdv subcomponents supported

修复commit<8b00112>使用直接过滤部分antdv子组件的方式,导致build后刷新页面子组件样式会丢失的问题。

* Update styleImport.ts

* Update styleImport.ts
2021-11-01 08:00:01 +08:00
Jobin
97fe8e2058 feat(ApiCascader): add asynchronous cascader component (#1321) 2021-11-01 07:59:15 +08:00
zuihou
5c491a4258 fix(Menu): 左侧菜单混合模式 在动态更改路由时,左侧显示的菜单没有实时更新 2021-10-30 01:38:28 +08:00
zuihou
5225345496 fix: 全局日期格式化缺少秒(大多数场景日期格式都需要携带秒!) 2021-10-29 20:09:43 +08:00
vben
a248e20013 chore: fix type 2021-10-26 01:19:51 +08:00
vben
ed40b333f3 chore: Allow git message to be uppercase 2021-10-26 01:11:56 +08:00
vben
b7813b9ba8 perf: typo 2021-10-26 01:06:35 +08:00
vben
dbcc40f5ea chore: remove pretty 2021-10-26 01:00:49 +08:00
vben
acea184320 chore: format code 2021-10-25 23:49:03 +08:00
vben
0f44291c5c chore: update deps 2021-10-25 23:45:58 +08:00
Jungzl
83bce6c1d4 chore: support for pnpm (#1310) 2021-10-25 23:33:24 +08:00
scil
85a68d5fc3 fix: check if searchText is null (#1301) 2021-10-25 23:33:11 +08:00
pq
a0165d1eee perf(useRuleFormItem): more accurate return type (#1290) 2021-10-20 09:13:04 +08:00
Joyboo
8447331197 chore: table size放到settings (#1294) 2021-10-20 09:12:27 +08:00
vben
787bc462e7 chore: update deps 2021-10-20 01:11:29 +08:00
zuihou
89414f173e feat(Form): 新增 ApiRadioGroup 组件 2021-10-16 21:25:57 +08:00
tangyh
34781d42e8 feat(Table): 支持设置默认的排序值 2021-10-14 22:15:19 +08:00
无木
456a661488 fix(table): deleteTableDataRecord not work 2021-10-14 14:59:12 +08:00
miofly
5902886798 fix(type): 修复几个 ts 报错,和文件引用位置 (#1283)
* fix(type): 删除多余的类型定义

* fix(login): 删除登录时的 toRaw 包裹参数

* fix(type): 修复几个 ts 报错,和文件引用位置
2021-10-12 18:30:32 +08:00
miofly
7a1b6e74ab fix(type): typo (#1281)
* fix(type): 删除多余的类型定义

* fix(login): 删除登录时的 toRaw 包裹参数
2021-10-12 11:49:50 +08:00
zmtlwzy
b653412260 fixed: (update pageTitle when change local) (#1278)
If AppLocalePicker reload prop is false, Should be updated when changing the language
2021-10-12 11:49:05 +08:00
nsk
a530ec867b fix(Loading): add theme prop, The repair background prop does not tak… (#1271)
* fix(Loading): add theme prop, The repair background prop does not take effect

* fix(AppLogo): fix title line height
2021-10-12 09:12:10 +08:00
Lowell
d6f65d476e fix(Table): 解决设置了分页的情况下,调整表格分页条数后,如果翻页,分页条数会重置的问题。 (#1270) 2021-10-12 09:11:50 +08:00
Haceral
052eff91c4 perf: Improve the dynamic routing and automatically close the Tab function (#1264)
* 增加动态路由最大打开Tab数控制

* 增加动态路由打开数控制Router参数

* feat(Tab): 新增动态路由打开数限制Demo

* fix(multipleTab.ts): 将原来的打开数限制从固定的 5 修改为读取配置

Co-authored-by: Haceral <18274416193@163.com>
2021-10-12 09:11:25 +08:00
无木
e1cbe23e96 fix(api-tree-select): fetch not triggered when params changed
修复ApiTreeSelect的params变化未能触发重新请求API数据的问题
2021-10-11 07:48:41 +08:00
JinMao
f3f56288af fix: build error 2021-10-06 12:01:13 +08:00
Lowell
473e56e4e0 form的label属性实际上可以使用VNode (#1252) 2021-10-05 22:55:02 +08:00
Haceral
eac2fb4aaa feat: 动态路由 Tab打开数量控制,超出限制自动关闭起始Tab (#1256)
* 增加动态路由最大打开Tab数控制

* 增加动态路由打开数控制Router参数
2021-10-05 22:54:49 +08:00
钱忠旺
7d40773b5b style(buildConf.ts): 增加函数接口和修改默认的 (#1259)
增加CreateConfigParams接口,并修改createConfig参数默认值

Co-authored-by: QIANZW <1870271825@gqq.com>
2021-10-05 22:53:53 +08:00
erniu
935d4fc12d feat(Upload): 兼容ant-design-vue的upload属性 (#1247)
1. 兼容`name`属性,用于自定义发到后台的文件参数名; 2. 兼容`filename`属性

Co-authored-by: erniu <joe.cheng237@gmail.com>
2021-10-05 22:53:21 +08:00
vben
2849743a4d chore: update deps 2021-10-05 22:52:34 +08:00
vben
437211107f chore: update deps 2021-09-28 00:56:47 +08:00
1sm
2f2526c564 fix(modal): 取消全屏功能后关闭图标颜色异常 (#1240)
Co-authored-by: liushiman <smliu@gk-estor.com>
2021-09-28 00:22:23 +08:00
Joyboo
754d1986e9 fix: 修复ApiSelect属性被覆盖的问题 (#1226) 2021-09-28 00:22:04 +08:00
Leon Guan
034e39ef06 fix: 当前路由所在菜单路径是嵌套并且隐藏时无法正常高亮根菜单节点 (#1201)
修复当路由所在菜单路径是嵌套并且隐藏时无法正常高亮根菜单节点的问题。

Fixed #1080
2021-09-28 00:21:53 +08:00
CXM
bfdbccfece fix: Dev/fix modal event (#1241)
* fix(type): fix ant-design-vue  ->

* fix: fix editor BasicModal type event check error
2021-09-28 00:21:16 +08:00
vben
246c5f795b chore: update deps 2021-09-24 15:52:21 +08:00
zuihou
902d38dc2f Merge remote-tracking branch 'origin/main' 2021-09-23 12:32:26 +08:00
zuihou
1abf7fdf5f refactor(route): 动态路由 component 属性支持以 / 开头或者以 .vue 和 .tsx 结尾 2021-09-23 12:28:21 +08:00
无木
96ce18c073 revert(form): revert formItem style 2021-09-23 12:27:25 +08:00
无木
f8102446d0 fix(form): fixed formitem style
修复FormItem样式问题

fixed: #1231
2021-09-23 09:33:29 +08:00
zuihou
07b17b9798 perf: 优化代码 2021-09-23 00:10:03 +08:00
zuihou
452b2599f4 fix(route): 获取 LAYOUT 或 IFRAME 忽略大小写。 并且在通过component找不到页面时打印警告,并返回404页面 2021-09-23 00:05:58 +08:00
zuihou
7028e0031d fix(Breadcrumb): 隐藏面包屑应交给 hideBreadcrumb 参数,而非hideMenu 参数 2021-09-22 23:46:42 +08:00
无木
6e0c70f415 fix(import-excel): support datetime raw data import
importExcel支持导入原始日期时间数据

fixed: #1215
2021-09-21 23:23:32 +08:00
无木
01b667facf fix(form): fixed custom item style
修复自定义FormItem组件的内容宽度可能超出范围的问题

fixed: #1225
2021-09-20 20:48:50 +08:00
无木
a82a69d00d fix(dropdown): add missing function
添加Dropdown组件缺失的函数
2021-09-20 19:06:26 +08:00
无木
8b00112d5a fix: direct import for antdv subcomponents supported
修复直接import部分antdv子组件时会在build过程中报错的问题
2021-09-19 11:14:19 +08:00
无木
853bde9275 fix: fixed prop mode of CodeEditor 2021-09-18 20:18:41 +08:00
无木
5af452754b fix: hmr error fixed
修复部分组件可能会造成热更新异常的问题
2021-09-18 14:58:22 +08:00
无木
9c5f11a54b fix: remove warning in building action
移除build过程中的警告
2021-09-18 12:32:15 +08:00
无木
6c08dae921 fix: build error for CodeEditor 2021-09-18 12:29:54 +08:00
无木
02eabe1f9f chore: update deps 2021-09-18 12:08:18 +08:00
无木
2875a97b70 fix(table): clickToRowSelect support disabled checkbox
修复`clickToRowSelect`会无视行选择框disabled状态的问题
2021-09-17 15:44:39 +08:00
无木
067753d490 feat(env): VITE_PROXY support single quote
env文件中的VITE_PROXY配置支持单引号

close: #1204
2021-09-17 09:40:22 +08:00
无木
7b6d5e44a9 fix(table): reload in useTable not support await
修复useTable返回的reload方法不支持使用await等待加载完毕的问题
2021-09-16 16:29:26 +08:00
无木
e85649bde2 fix(tabs): close tab without navigation
修复多标签在某些情况下关闭页签不会跳转路由的问题

fixed: #1131
2021-09-16 00:09:18 +08:00
无木
cecdfbaf29 fix(tabs): dropdown items enabled unnecessary
修复标签头的右键菜单某些项目不恰当地处于可用状态

fixed: #1207
2021-09-15 23:15:01 +08:00
无木
84c7d516df fix(table): prop inset take no effect
修复BasicTabled的inset属性不起作用的问题

fixed: #1209
2021-09-15 23:04:36 +08:00
无木
15ea0d2f53 fix(tree): node slot take no effect
修复BasicTree节点插槽不起作用的问题
2021-09-15 19:50:26 +08:00
无木
ba2c1a3bf5 fix(table): editable cell can not submit
修复可编辑单元格某些情况下无法提交的问题
2021-09-15 12:51:21 +08:00
无木
2346a90c08 fix(modal): maskClosable and Esc take no effect
修复BasicModal按Esc和点击遮罩无法关闭的问题

fixed: #1203
2021-09-15 10:56:14 +08:00
无木
6544f84bc2 feat(demo): add token expired example
添加token超时例子
2021-09-14 22:11:21 +08:00
vben
2aa5e5da76 chore: release 2.7.2 2021-09-14 00:05:45 +08:00
vben
44b21bfc6c chore: update deps 2021-09-14 00:03:34 +08:00
vben
2820d5a627 fix: improve type introduction, fix #1196 2021-09-13 23:46:31 +08:00
无木
9640484895 fix: fixed token clear error
修复将token设置为undefined时可能失败的问题
2021-09-13 19:04:02 +08:00
无木
f87b0f2f5e fix(api-select): fixed value prop define
修复ApiSelect的value属性定义问题

fixed: #1175
2021-09-11 22:52:52 +08:00
无木
656ee4e5c9 fix(upload): accept not work as expected
修复basicUpload的accept属性未按预期工作的问题
2021-09-11 21:47:04 +08:00
无木
7593ef6a4f fix(table-action): divider not work as expected
修复tableAction中的divider未按预期工作
2021-09-11 20:26:27 +08:00
无木
b3307fe283 fix: warning in logout action
修复退出登录相关代码中的警告
2021-09-11 11:08:34 +08:00
无木
73dc492b2a feat(markdown-viewer): add new component
新增MarkdownViewer组件用于显示Markdown格式的富文本

close: #1181
2021-09-10 11:24:53 +08:00
无木
0bb9c035f7 fix(markdown): value not worked on init
修复Markdown组件的value属性初始值不起作用的问题
2021-09-10 11:22:40 +08:00
Francis Zuo
9e9ea3f43d fix: 修复弹窗全屏按钮异常关闭的问题(#1177) (#1182) 2021-09-09 22:59:53 +08:00
vben
996f2f3c22 chore: update deps 2021-09-09 22:59:10 +08:00
vben
b90a9557a3 chore: update deps 2021-09-09 22:58:29 +08:00
love-life
7df9b51344 fix: 修改axios 中 urlPrefix 字段不生效问题 (#1170)
* fix(样式污染): 会污染其他带有srcollbar的组件样式

* fix(axios): urlPrefix 字段传递不生问题效
2021-09-09 09:41:34 +08:00
handsomeFu
c753d945e0 fix: 修复 apiSelect 绑定值 attrs 的问题 (#1172)
* chore(permission): fix func name typo

* fix(apiSelect): fix `v-bind` value  `attrs` to `$attrs`
2021-09-09 09:40:53 +08:00
无木
83c1683bfd feat(demo): add JsonPreview demo
添加JsonPreview组件的使用演示

close: #1146
2021-09-06 20:36:19 +08:00
无木
044e2e4e86 fix(table): rowClassName not worked with striped
修复rowClassName属性无法和striped同时生效的问题

fixed: #1167
2021-09-06 20:13:13 +08:00
frezs
59a9087728 feat(table): 添加和支持动态删除和插入数据 (#1152) 2021-09-06 09:14:12 +08:00
Lan
3b6b4f7303 perf(tree): 优化Tree搜索功能,添加搜索高亮功能,优化样式表现 (#1153)
1. 修复expandOnSearch与checkOnSearch功能
2. 添加selectOnSearch功能
3. 添加搜索高亮title功能
4. 优化TreeHeader的样式表现: searchInput自动扩充
2021-09-06 09:13:53 +08:00
songweionline
5fa730c49a fix(table): Solve the bug of setting ifshow to false in table column (#1166)
表格列设置ifshow为false,表格的列设置里依然会渲染该列的checkBox,实际应该不渲染。如果需要隐藏应该是设置defaultHidden。
2021-09-06 09:13:35 +08:00
vben
6cadcf087d chore: update deps 2021-09-05 18:11:59 +08:00
江麻妞
95aca2ab8d fix (modal): 修复对话框 hook 不设置 loaded问题 (#1143)
fix (modal):  修复对话框 hook 不设置 loaded问题
2021-08-30 09:05:15 +08:00
Lan
e00578c40a feat(tree): 1. 添加自定义数据过滤判断方法 2. 添加搜索完成自动展开结果选项 3. 添加搜索完成自动选中结果选项 4. 树节点数据变化时强制搜索(同步searchData避免展示错误) (#1132) 2021-08-30 09:04:59 +08:00
Lan
6717fe654e fix: Improve content height calculation (#1136)
* feat(useContentHeight): 为useContentHeight 添加 向上递归 移除差值 的功能。

* feat(useContentHeight): 为useContentHeight 添加 向上递归 移除差值 的功能。 pagewrapper添加 upwardSpace以支持向上递归功能。
2021-08-30 09:04:32 +08:00
无木
ee7c31db44 feat(table): add onValid for editRow
为table的可编辑行添加校验方法
2021-08-27 22:23:39 +08:00
无木
a36825a6d4 fix: add loss action for userStore 2021-08-27 11:24:36 +08:00
无木
628e820684 fix(card-list): fixed build error
修复CardList组件造成的build错误
2021-08-27 08:55:38 +08:00
JinMao
0f5ddbf1ec feat: add CardList component 2021-08-27 05:51:58 +08:00
无木
1ddfc31c3c fix: getUserinfo is compatible with empty roles data
修复getUserinfo接口数据未携带roles字段时登录失败的问题
2021-08-26 21:20:26 +08:00
无木
d27633fb31 fix: fixed build warning for style of intro.js
修复intro.js的样式文件造成的build警告

fixed: #1130
2021-08-26 20:50:25 +08:00
江麻妞
30fa4cfa2a fix(table): 修复表格背景颜色再深色模式下会被穿透问题 (#1133) 2021-08-26 20:01:25 +08:00
love-life
6e7f6f82ed fix(modal): avoid style pollution to the whole world (#1128) 2021-08-26 20:01:05 +08:00
vben
466d4edcd0 perf: optimize css volume 2021-08-25 23:04:15 +08:00
vben
0b0a7ceef9 Revert "Revert "feat: support setup name""
This reverts commit 99daecdb60.
2021-08-25 22:57:00 +08:00
vben
99daecdb60 Revert "feat: support setup name"
This reverts commit d8362f084f.
2021-08-25 22:44:56 +08:00
vben
c8017b1365 fix(markdown): the hierarchy of markDown components after full screen 2021-08-25 22:42:39 +08:00
vben
d8362f084f feat: support setup name 2021-08-25 22:39:28 +08:00
无木
9f6822991c fix: name of vite mode support more characters
修复vite模式名称不支持下划线的问题

fixed: #1115
2021-08-24 22:54:31 +08:00
vben
56a966cfbf chore: format code 2021-08-24 22:41:48 +08:00
vben
2884e863ce perf: not waiting for router.isReady 2021-08-24 22:32:43 +08:00
无木
1235978ab2 fix: useRedo called duplicate may cause exception
修复useRedo的不当调用可能导致异常的问题

fixed: #1121
2021-08-24 21:01:28 +08:00
vben
9dd9fcd334 chore: adjust the windicss reference 2021-08-24 00:29:22 +08:00
无木
a426b9027e fix(table): fix table footer style
修复表尾合计行可能与主体部分的列没有对齐的问题

fixed: #1112
2021-08-23 16:36:26 +08:00
vben
455d109f71 chore: update deps 2021-08-22 12:22:56 +08:00
vben
6e85795737 chore: update vite-plugin-html 2021-08-21 00:13:43 +08:00
vben
d1f59b493d chore: update deps 2021-08-20 21:46:51 +08:00
无木
edc3096565 fix(table): editable icon not show with empty cell
修复可编辑单元格当内容为空时不会显示编辑图标的问题

fixed: #1103
2021-08-20 17:07:42 +08:00
无木
3a5d1a5757 fix: refresh failed while token invalid
修复当token失效时,刷新页面可能出现异常的问题

fixed: #1101
2021-08-20 16:55:42 +08:00
无木
2c867b3d63 feat(table): add beforeEditSubmit for editable cell
单元格编辑功能新增提交回调
2021-08-19 23:57:42 +08:00
无木
fb43fad555 fix(tinymce): fixed tinymce destory method
修复tinymce销毁方法可能出现异常的问题
2021-08-19 19:51:55 +08:00
无木
8e01377481 fix(tinymce): fixed inline mode
修复Tinymce的inline模式在一些场景下会出现异常的问题

fixed: #1092
2021-08-18 22:55:36 +08:00
无木
e7c96363a1 fix(code-editor): fixed formatting error
修复JSON编辑器在格式化无效JSON文本时会抛出异常的问题
2021-08-18 20:52:34 +08:00
无木
93812f734e fix(echarts): theme setting supported
修复useECharts的theme参数不起作用的问题

fixed: #1095
2021-08-18 20:05:40 +08:00
vben
e15b4f14db fix: fix all types of errors, compatible with volar plugin 2021-08-17 23:04:29 +08:00
无木
a5ff59237f feat(form): component Divider support helpMessage
Divider表单组件支持helpMessage配置
2021-08-17 22:59:36 +08:00
vben
65735926d4 chore: update deps 2021-08-17 22:15:27 +08:00
无木
47a448b8ae feat(form): add Divider for schema component type
新增Divider用于较长表单的区域分割
2021-08-17 17:50:54 +08:00
无木
5138e447e7 fix: slots worked in basicTable and basicModal
修复basicTable和basicModal的插槽传递异常的问题
2021-08-17 17:09:48 +08:00
matevip
837a365885 docs: Readme增加后台整合示例 (#1087) 2021-08-17 15:07:22 +08:00
vben
43658e2fb3 chore: release 2.7.1 2021-08-16 23:44:29 +08:00
vben
8fa6015b1a chore: change to setup syntax 2021-08-16 23:43:09 +08:00
handsomeFu
91cbe0a03b chore(permission): fix func name typo (#1082) 2021-08-16 23:15:19 +08:00
CXM
72634ffe6e fix: add axios error info from response (#1083)
* fix(type): fix ant-design-vue  ->

* fix: add axios error info from response
2021-08-16 23:14:40 +08:00
无木
c420174c1d style: fix basicButton style 2021-08-16 20:18:53 +08:00
无木
b7487675ce chore: downgrade vue-json-pretty to 1.8.1 2021-08-16 13:33:20 +08:00
无木
1b577922e7 fix: fixed basicButton primary style
修正BasicButton primary类型的样式
2021-08-16 09:12:48 +08:00
无木
3ba8a67647 fix: fixed basicButton ghost style
修正BasicButton幽灵状态的样式
2021-08-16 08:47:45 +08:00
无木
beb4ae92c1 fix: fixed basicButton style
修正BasicButton的样式
2021-08-16 07:35:47 +08:00
无木
cc46935a82 feat: always refresh userinfo when page reload
每次刷新整个页面时都从接口更新用户信息
2021-08-16 06:04:12 +08:00
无木
53e79a2d94 fix(table): fix injection not found warning
修复injection警告
2021-08-16 05:52:04 +08:00
vben
8ff5c03d53 ci: remove cache 2021-08-15 23:05:00 +08:00
vben
c69996d073 chore: use node16 2021-08-15 22:49:03 +08:00
RemMai
b07003e184 添加v-model:value双向绑定的支持 (#1073)
无需在Change事件中修改绑定的Value。
仅需在属性中设置 v-model:value,选择图标后,value值自动修改。
2021-08-15 22:37:21 +08:00
vben
45a8eb974a refactor(dashboard): change to setup syntax 2021-08-15 22:36:46 +08:00
无木
2dd3d85448 fix: fixed useRedo may loss route params
修复useRedo会丢失当前路由的params数据问题

fixed: #1079
2021-08-15 16:45:13 +08:00
无木
da12da9d8c perf(table): fixed code style
修复一些代码检查警告,并且为table的canResize属性添加不兼容场景警告

close: #1070
2021-08-15 08:54:42 +08:00
无木
30c5fc63c8 fix(demo): fix form style in modal
修复演示页面中Modal内的Form样式问题

closed: #1076
2021-08-14 23:21:05 +08:00
无木
7971896383 fix(table): size not worked in editComponentProps
修复无法设置basicTable编辑组件的size属性的问题

fixed: #1074
2021-08-14 22:31:25 +08:00
无木
a8b18c2697 style: fix selected background color of tr
修复表格选中行的背景颜色与固定列的冲突

fixed: #1069
2021-08-14 21:12:30 +08:00
无木
5ae894a5c7 style: restore default border-color
恢复antd默认的基础边框色
2021-08-14 20:53:52 +08:00
无木
bcfa338227 feat: add updatePath for useTabs
添加更新标签path的方法

close: #1068
2021-08-13 15:13:35 +08:00
无木
b1f31762e3 fix: slots working in components
修复vue新版本改动导致组件传递slots可能出现错误的问题
2021-08-13 15:06:06 +08:00
无木
93f9a19aa1 feat(form): add alwaysShowLines prop
允许设置Form折叠时始终保持显示状态的行数

close: #1051
2021-08-13 11:51:23 +08:00
无木
61d853e6a5 style(types): fix some type statement 2021-08-13 11:13:29 +08:00
无木
1f55c4180f fix(i18n): add i18n translate data
添加部分缺失的翻译文案
2021-08-13 11:11:35 +08:00
无木
4b6025cb9a fix(table): getSelectRows support multi-page
getSelectRows支持跨页选择

close: #914
2021-08-13 08:50:28 +08:00
vben
2f6d133b96 refactor(application): change to setup syntax 2021-08-13 07:29:33 +08:00
vben
9035fd191e fix(types): fix some type errors 2021-08-13 00:12:51 +08:00
vben
bb89c5059c refactor(sys): change to setup syntax 2021-08-12 23:54:12 +08:00
CXM
66feb779a8 fix: fix build handler & misc (#1060)
* fix(type): fix ant-design-vue  ->

* fix: fix build handler & misc
2021-08-12 23:23:44 +08:00
vben
948219c576 chore: update deps 2021-08-12 23:19:28 +08:00
无木
60577d6720 feat(tree): add searchable function
添加搜索功能相关属性和方法

close: #1057
2021-08-11 17:59:07 +08:00
无木
953bfc6f1a fix(modal): helpMessage doesn't work
修复`helpMessage`属性不起作用的问题
2021-08-10 23:02:59 +08:00
无木
2052eb5a65 fix(table): wrong bg-color in fullscreen mode
修复浅色主题下的table在全屏状态时背景颜色不正确的问题
2021-08-10 22:34:41 +08:00
无木
019555be0c fix(table): selection-change not triggered in unchecking
修复selection-change事件在取消勾选时未能正确触发的问题

fixed: #1053
2021-08-10 14:36:29 +08:00
无木
33a335a3f5 fix(table): 0 is not shown in editable cell
修复可编辑单元格中未能正确显示零值的问题

fixed: #1039
2021-08-09 21:49:11 +08:00
vben
9d2231b1cd chore: update deps 2021-08-08 23:05:44 +08:00
CXM
6d5388aaf1 fix(type): fix ant-design-vue -> (#1043) 2021-08-08 10:16:37 +08:00
spking11
b2d49cbbf8 fix(locales): fix that vscode extension i18n-Ally detect zh-CN as zh (#1044) 2021-08-08 10:16:19 +08:00
Leo Caan (陈栋)
1bb5156923 fix(route): the whitelist should include basicRoutes (#1048)
* fix(table): recursive updateTableDataRecord

无刷新更新表格数据时,支持递归查找,用于树状数据时。同时新增 findTableDataRecord 函数,用于支持无刷新新增数据到树状表格中

* fix(router): whitelist include basicRoutes

白名单应包含不在菜单上出现的静态路由,否则在动态切换菜单 resetRouter 时会丢失这些,如在usePermission.resume中

* fix: get basicRoutes whitelist bad code
2021-08-08 10:15:34 +08:00
Vben
62f8468775 chore: add windi.config.ts 2021-08-04 23:26:08 +08:00
Vben
8e5740e715 chore: update deps 2021-08-04 23:21:43 +08:00
JasonYHZ
f3cf162af1 feat(table): add getRawDataSource() function (#1029) 2021-08-04 08:59:21 +08:00
无木
381943078f fix(cropper): cropper not destroy in time
图片剪裁组件未能及时销毁资源

fixed: #1027
2021-08-03 21:17:38 +08:00
无木
26f251e1ed fix(qrcode): qrcode not displayed properly
fixed: #1026
2021-08-03 20:55:40 +08:00
无木
1214b7c32c fix(table): cellFormat support Map
close: #1031
2021-08-03 20:37:02 +08:00
Vben
c82040425d chore: release 2.7.0 2021-08-03 07:41:23 +08:00
Vben
5e17cc8802 refactor: refactor tailwindcss to windicss 2021-08-03 07:40:29 +08:00
Dack Wang
02e7756062 fix(): The Style of tableTitle slot (#1023)
Co-authored-by: 王英琦 <wangyingqi@91bihu.com>
2021-08-03 07:36:40 +08:00
Leo Caan (陈栋)
72f953c8d3 fix(table): recursive updateTableDataRecord (#1024)
无刷新更新表格数据时,支持递归查找,用于树状数据时。同时新增 findTableDataRecord 函数,用于支持无刷新新增数据到树状表格中
2021-08-03 07:36:15 +08:00
yanzhuang
d76cfd7f80 fix: fix iframe heigth error (#1012) 2021-08-01 08:51:52 +08:00
Lowell
2fd0fd281e fix: the position of tinymce upload image is wrong (#1015) 2021-08-01 08:51:01 +08:00
Li Li
be2d11d5d3 fix: Fix the invalid hot update of BasicButton when changing style outside (#1016)
* chore: ignore bak dir

Signed-off-by: LiLi <urfreespace@gmail.com>

* fix: 修复BasicButton在外部改变样式热更新无效问题

Signed-off-by: LiLi <urfreespace@gmail.com>

* chore: remove extra ignore

Signed-off-by: LiLi <urfreespace@gmail.com>

* chore: ignore fix

Signed-off-by: LiLi <urfreespace@gmail.com>
2021-08-01 08:50:21 +08:00
vben
88451565db chore: update deps 2021-08-01 08:46:27 +08:00
无木
26d9476caf feat(use-loading): add setTip method
为useLoading添加setTip方法
2021-07-30 16:59:52 +08:00
无木
ddd1893b11 fix(tree): fix checkAll effects disabled node 2021-07-30 15:25:13 +08:00
Wang Weitao
e8eefd1bca fix: typo for utils/env (#1004) 2021-07-29 22:43:04 +08:00
无木
8879ae8d77 fix(page-wrapper): fix class not working 2021-07-29 20:12:54 +08:00
无木
f2b8bb43a0 fix(table): fix getSelectRows for treeTable
修复getSelectRows不支持树形表格子级数据的问题

fixed: #1003
2021-07-29 18:37:19 +08:00
vben
d2c361803b chore: update .env 2021-07-29 00:09:20 +08:00
vben
e2664f6002 perf: improve legacy compatibility 2021-07-29 00:06:35 +08:00
Lowell
225bd4c39d fix: style property of actionColOpt is invalid (#997) 2021-07-28 23:09:25 +08:00
江麻妞
7e6a89ffeb fix: typo (#980) 2021-07-28 23:08:54 +08:00
周旭
189bc6feb3 feat: Added support for tailwindcss night mode mechanism (#998)
* feat: 新增支持 tailwindcss 的夜间模式支持

(cherry picked from commit 1de8704b61c38c92bc6877d0bec9e6f67766b3c8)

* docs: update changelog
2021-07-28 23:08:41 +08:00
无木
a544dd3e58 fix: auto remove script dom in useScript
修复useScript未能自动移除script节点的问题
2021-07-28 11:24:26 +08:00
无木
0065ab0b2d style(header): fix notify icon color in dark
修复暗色header中的通知图标的颜色问题
2021-07-28 11:09:53 +08:00
无木
e32789373e fix(table): fix pagination props working
修复table的pagination属性无法动态设置数据的问题
2021-07-27 17:10:06 +08:00
无木
c375e32305 fix(demo): fix roles mock data 2021-07-27 12:05:14 +08:00
无木
4c9e8564bd chore: add chinese issue template 2021-07-26 23:11:10 +08:00
无木
bdf0be81b0 type(preview): fix type definition
修复Preview组件的事件参数类型定义
2021-07-26 21:18:55 +08:00
无木
e23bd2696d feat(preview): add more features
为Preview组件添加新的属性及事件
2021-07-26 20:58:18 +08:00
vben
98749ec6fe chore: update deps 2021-07-25 09:07:53 +08:00
Lowell
98c206d9c9 fix: expandIcon slot of BasicTable component is invalid (#975) 2021-07-25 09:01:39 +08:00
江麻妞
fe4eae3714 fix(qrcode): Fix the problem that the QR code cannot be dynamically generated (#974)
* fix: Fix the problem that the QR code cannot be dynamically generated

* Fix the problem that the size of the QR code is automatically changed when dynamically generated
2021-07-25 09:01:09 +08:00
无木
14fb21d0b7 fix(table): fix expand style
修复启用expandRowByClick展开图标样式问题

fixed: #969
2021-07-24 20:09:10 +08:00
无木
dce3fb0f20 fix(table): fix tableSettings popup in fullscreen mode
修复全屏模式下的表格设置组件的弹出层配置
2021-07-24 16:11:17 +08:00
无木
a5a9b3fb34 fix(table): fix dataPicker show in fullscreen mode
修复basicTable编辑组件的校验提示以及日期选择框的弹出层在全屏模式下的显示问题
2021-07-24 14:48:09 +08:00
无木
a07ab6d7aa fix(table): component shown in fullscreen mode
修复表格在全屏模式下编辑组件弹出层的显示问题
2021-07-24 14:36:16 +08:00
无木
9b8f165a36 fix(table-action): stopButtonPropagation not working
修复TableAction组件的stopButtonPropagation属性无效的问题
2021-07-24 13:27:10 +08:00
无木
e1c47233ed fix(demo): multi-modal used with dynamic component
修复以动态组件的方式使用多个modal的演示
2021-07-23 15:55:15 +08:00
loujohn
956ed2e3f7 fix(): Fix vite profile hot update error reporting (#968)
修复vite修改配置文件热更新报错Error: Must provide a proper URL as target

Co-authored-by: lou <825681860@qq.com>
2021-07-23 11:58:02 +08:00
无木
8702965057 fix(demo): account page form validation
修复账号管理页面对不可见表单域的验证问题
2021-07-23 09:57:42 +08:00
无木
cebc6a590e fix(login): fix auto fill style in dark-theme
修复黑暗主题下的自动填充表单域样式
2021-07-23 09:33:14 +08:00
SUPER_AI
525484e7a4 fix(echarts): fix graphic config cannot be used in echarts options (#959) 2021-07-23 07:29:53 +08:00
wl19
350c85accf fix(utils): The date function gets a non-date when the parameter is null (#954)
Co-authored-by: “weilin <“784742294@qq.com>
2021-07-23 07:29:39 +08:00
无木
202aa42b8d fix(table): editable cell display with validation
修复带验证的可编辑表格的组件意外失焦的问题

fixed: #953
2021-07-23 01:18:55 +08:00
无木
8d185bb584 fix(form): remove console error for setFieldsValue
移除setFieldsValue方法输出的控制台错误

fixed: #952
2021-07-23 01:13:10 +08:00
无木
27207a78ca fix: fixed moment locale config
修复moment的英文语言配置
2021-07-23 01:02:05 +08:00
无木
d1e0e8bcea fix(dark-theme): fixed TreeSelect & DatePicker theme
修复黑暗主题下的组件样式

fixed: #955
2021-07-23 00:35:40 +08:00
M69w
d3f08e37c5 fix(style): fix checkbox-checked css in dark mode 2021-07-22 20:52:55 +08:00
vben
ee44d99c74 chore: update deps 2021-07-21 23:45:04 +08:00
Lan
9c4889f085 fix(perm-guard): Fix the problem that the routing query is lost after refreshing the page (#941) 2021-07-21 23:27:24 +08:00
无木
59cf860564 style(alert): fix alert border color
修复Alert组件的默认边框颜色不正确的问题
2021-07-21 23:19:44 +08:00
无木
662b576ac2 fix(dark-theme): style for checked tree nodes
修复黑暗主题下已勾选的Tree的复选框的样式问题
2021-07-21 22:43:47 +08:00
无木
42812162c4 fix(dark-theme): disabled link button color
修复黑暗主题下禁用状态的link类型按钮的颜色
2021-07-21 21:51:48 +08:00
无木
9b7ede09b9 fix(dark-theme): alert color in dark-theme
修复Alert组件在Dark主题下的颜色问题
2021-07-21 21:39:23 +08:00
无木
8cf004a5f5 fix(dark-theme): bgcolor of selected tree node in dark theme
修复tree的被选中节点的背景颜色在黑暗模式下不正确的问题

fixed: #949
2021-07-21 20:34:00 +08:00
无木
32d64dbe81 fix(img-rotate-drag-verify): fix resume method support
修复ImgRotateDragVerify组件的resume方法无效的问题

fixed: #946
2021-07-21 17:52:07 +08:00
无木
8b4b767f4c feat(demo): add async-validator demo
添加表单使用后端接口异步验证的例子
2021-07-21 15:44:46 +08:00
无木
341bd633d8 fix(demo): menu error-log link to 404 page
修复演示菜单的错误日志页面指向了404的问题
2021-07-21 11:20:40 +08:00
无木
571f28138f fix(form): fix validate promise catch
修复自动校验时没有捕获promise catch的错误提示
2021-07-21 11:18:10 +08:00
无木
4bb506fb1f fix(table): fix editable cell not support ellipsis
修复可编辑单元格不支持ellipsis配置的问题

fixed: #944
2021-07-21 00:43:37 +08:00
无木
c734f6858d fix(api-tree-select): auto reload while params changed
修复ApiTreeSelect组件没有正确监听params变化的问题
2021-07-20 18:01:18 +08:00
vben
596670dc88 chore: release 2.6.1 2021-07-19 23:56:14 +08:00
vben
680ad0763c chore: restore vite to version 2.3.6 2021-07-19 23:54:47 +08:00
无木
7a7dab0c4b feat(demo): multi-modal in one page usage
添加使用is动态组件来在页面内使用多个modal的演示
2021-07-19 18:40:02 +08:00
无木
59eb828d4d style: fixed line break style
修正换行符
2021-07-19 16:37:47 +08:00
无木
52af1dd0d4 feat(basic-table): add ApiTreeSelect edit component
为表格添加ApiTreeSelect编辑组件,修复一些其它的已知问题
2021-07-19 16:25:56 +08:00
无木
897bed9729 fix(api-select): fix options-change event data
修复options-change事件参数不是select所使用的标准options数据的问题
2021-07-19 16:19:51 +08:00
无木
a764a95ae9 fix(countdown-input): add slots support
为CountdownInput组件添加Input的插槽支持
2021-07-19 15:27:05 +08:00
无木
535bdddf91 fix(demo): fix display problem of editable table with apiSelect
修复ApiSelect在可编辑表格中的显示问题
2021-07-19 00:51:02 +08:00
vben
18567e13a6 chore: update deps 2021-07-19 00:14:53 +08:00
lzdjack
03b17a8f8b fix(formItem): Fix labelcol type mismatch (#903)
*修复antdv升级后formItem中labelCol没有类型style的bug
2021-07-18 23:25:51 +08:00
无木
8832a074dc fix(code-editor): value not support use as v-model
修复value不支持v-model用法的问题

fixed: #933
2021-07-17 18:01:23 +08:00
无木
61ce25be1b fix(table): value show problem in editable cell
修复可编辑单元格的值不能直接通过修改dataSource来更新显示的问题。

fixed: #922
2021-07-16 13:59:55 +08:00
无木
d9d0071401 fix(api-tree-select): fix event checked in form
修复ApiTreeSelect在BasicForm内使用时可能出现的onChange类型检查失败的警告
2021-07-16 13:17:25 +08:00
无木
f8440175f3 fix(model): auto validate on value change
修复BasicModel的表单值发生变化时未能自动校验

fixed: #920
2021-07-16 13:14:24 +08:00
无木
5baaa58581 fix(modal): fixed fullscreen not worked
修复全屏功能异常的问题

fixed: #918
2021-07-16 11:22:12 +08:00
无木
f707541dda fix(tree): fixed checkedKeys with search mode
修复搜索状态的切换导致的勾选值可能不正确的问题
2021-07-16 10:56:37 +08:00
无木
b06a7ab77b fix(basic-tree): checkedKeys not worked with search
修复搜索功能可能导致`checkedKeys`丢失的问题

fixed: #915
2021-07-15 23:17:31 +08:00
无木
1b3058f825 fix(api-tree-select): auto load data if necessary
修正ApiTreeSelect的数据加载时机
2021-07-15 18:39:54 +08:00
无木
d81db890df feat(api-tree-select): add api options to tree-select
添加ApiTreeSelect组件
2021-07-15 18:05:13 +08:00
无木
c1178027f0 fix: fix homePage affix error
修复当没有通过接口为用户指定首页时,如果默认的首页是一个带有重定向的路由,则可能出现双首页Tab的问题
2021-07-15 17:15:15 +08:00
无木
db7254a5e0 fix(table-action): fix circle button style
修复table-action组件内的圆形按钮内容没有居中的问题
2021-07-15 15:42:47 +08:00
无木
dc51e6a8d4 fix(table-action): fixed icon margin without label
修复当没有label时,icon没有在按钮内居中的问题
2021-07-15 14:36:40 +08:00
无木
4b46a84c2b fix: infinite redirect in BACK mode
修复后端权限模式下的路由无限重定向的问题
2021-07-15 01:59:23 +08:00
无木
87583c8b54 fix: ensure PAGE_NOT_FOUND_ROUTE exist
修复某些情况下404路由可能白屏的问题
2021-07-14 21:37:10 +08:00
无木
1e63379088 fix(multiple-tab): ignore login page
修复标签页可能会创建登录页面标签的问题
2021-07-14 20:44:52 +08:00
无木
237e65eac9 fix: resolving Vue Router warn
移除因为动态加载路由而产生的vue-router警告
2021-07-14 20:32:58 +08:00
无木
6350224a1b style(basic-table): remove scroller patcher
移除table滚动条样式覆盖
2021-07-14 16:37:53 +08:00
Vben
ae7821e296 fix(modal): ensure that props are passed correctly,fix #897 2021-07-13 22:46:01 +08:00
yanzhuang
a1d956d369 fix(useWatermark): fix func call createWatermark call clear to resizeEvent removed (#901) 2021-07-13 22:23:11 +08:00
无木
35e1347029 fix(markdown): set value error
修复markdown组件在完成初始化之前动态设置value可能导致异常的问题
2021-07-13 18:04:42 +08:00
无木
d95815b503 fix(markdown): resolving markdown exceptions
修复markdown组件的异常以及不能正确设置value的问题
2021-07-13 15:28:10 +08:00
无木
0a3683a186 feat: customized user home page
新增自定义的用户首页(可以每个用户都不相同)
2021-07-13 14:10:31 +08:00
无木
f5e31febbd fix(breadcrumb): redirect not worked
修复面包屑组件的重定向菜单不能工作以及eslint警告
2021-07-13 11:09:00 +08:00
周旭
6f830703a2 perf(menu): Optimize the style of the bottom collapse button in the Mix menu layout (#896) 2021-07-13 09:25:46 +08:00
shisan
bfb5ebd7b8 chore: update deps 2021-07-13 00:07:10 +08:00
无木
012020e51c style(notice-list): adjust style
去除通知列表组件标题和内容部分多余的margin-bottom,禁止自动隐藏不可用的翻页按钮
2021-07-12 22:33:28 +08:00
无木
aeebfc4d3d style(notice-list): fix margin-bottom value
去除通知列表组件标题和内容部分多余的margin-bottom
2021-07-12 22:22:33 +08:00
无木
c16be2c499 feat(notice-list): add pagination support
为通知列表组件添加分页、超长自动省略、标题点击响应、标题删除线等功能

fixed: #894
2021-07-12 22:12:16 +08:00
无木
0f28e803d0 fix(table-action): incorrect button color of disabled state
修复表格操作列的按钮在disabled状态下的颜色显示

fixed: #891
2021-07-12 16:46:27 +08:00
无木
cad021c34b fix(menu): fix mix-menu incorrect jumping in hover mode
修复悬停触发模式下左侧混合菜单会在没有子菜单且被激活时直接跳转路由
2021-07-09 19:20:05 +08:00
无木
5ceeefd17d fix(menu): display error when contains hidden items
修复顶栏菜单在包含隐藏项目时的显示问题
2021-07-09 17:25:38 +08:00
无木
a9bbed1973 fix(form): fix suffix slot style
修复suffix插槽的样式问题
2021-07-09 16:39:50 +08:00
无木
0595a72da9 fix(mix-sider): fix mix-sider hover logic
修复左侧混合菜单的悬停处理逻辑
2021-07-09 13:56:33 +08:00
无木
c7c0a7e4c8 fix(table): fix index column style
修复序号列的样式问题
2021-07-09 13:37:13 +08:00
无木
05329ce950 fix(upload): ensure the value type is correct
修复BasicUpload组件在设置null值时的问题
2021-07-09 00:22:00 +08:00
周旭
7b76945bff chore: perf TableAction.vue、build/utils.ts、prettier.config.js (#868)
* perf: 优化 build 时 vite 模式判断

* perf: 优化 TableAction, 仅在 action.tooltip 存在的情况下 才使用 Tooltip 组件

* docs: 仅在 action.tooltip 存在的情况下 才使用 Tooltip 组件

* fix: 在 window 上,拉取代码后 eslint 因 endOfLine 而保错问题

* docs: 修复在 window 上,拉取代码后 eslint 因 endOfLine 而保错问题
2021-07-08 23:20:49 +08:00
无木
540423ecf7 feat(table): add headerTop slot
为表格添加`headerTop`插槽(表格头部的标题之上),以及相关演示

close: #881
2021-07-08 20:16:22 +08:00
无木
9cf070dd63 feat(api-select): clear options before fetch
ApiSelect组件在发起新的请求之前先清空已有的options
2021-07-08 02:50:33 +08:00
无木
41e6d94b3b feat(demo): add search demo for apiSelect
添加ApiSelect的本地搜索和远程搜索例子
2021-07-08 02:46:15 +08:00
Vben
17e47e074e chore: add a multi-environment configuration example 2021-07-07 23:47:47 +08:00
Vben
dafcdd898c fix: ensure that safari is running properly, fix #875 2021-07-07 23:40:29 +08:00
Vben
5bce6528ba chore: update deps 2021-07-07 22:59:35 +08:00
无木
1e61da644f fix(table): fix tree node align
修复树形表格的带有展开图标的单元格的内容对齐问题

fixed: #829
2021-07-07 22:38:00 +08:00
无木
9228282ae2 fix(demo): form pages support keepAlive
修复表单演示页面不支持keepAlive的问题
2021-07-07 21:33:08 +08:00
无木
45a94e41c1 fix(demo): resolve key not exist warnings
修复角色编辑页面可能会出现tree组件报key not exist警告的问题
2021-07-07 21:26:20 +08:00
无木
542121129e feat(demo): add basicTree with async data expand all
演示basicTree使用异步数据并自动展开
2021-07-06 17:10:19 +08:00
Vben
cf840e3e73 perf: image compression configuration optimization 2021-07-06 00:30:16 +08:00
MARVIN
82eb72bbce fix(CountTo): Fix displaying empty string when the value is 0 (#864) 2021-07-05 22:45:13 +08:00
无木
5f1a6cdc59 feat(demo): demo default expanded tree table
演示默认展开树形表格数据
2021-07-05 16:23:58 +08:00
无木
02d3dca57e fix(app-search): exclude items by hideChildrenInMenu
修复菜单搜索组件可能会显示被隐藏的子菜单的问题
2021-07-05 14:50:41 +08:00
无木
faf5c9fd7e fix(app-search): exclude hidden items
修复菜单搜索组件可能会显示被隐藏的菜单的问题
2021-07-05 14:34:49 +08:00
无木
d5d5c4b4bf fix(demo): setup page route config
修复引导页的相关路由配置
2021-07-05 12:18:05 +08:00
无木
993e19dcc3 fix(demo): add mock data account detail route
添加mock数据中缺失的账号详情路由

fixed: #858
2021-07-05 12:04:36 +08:00
无木
808291b503 fix: menuSetting can not set collapsed to false as default
修复无法通过将菜单配置为默认折叠的问题.
2021-07-05 11:07:27 +08:00
无木
d8c38207c0 fix(table): scrollbar style 2021-07-05 00:34:23 +08:00
vben
f4778431de chore: release 2.6.0 2021-07-04 22:12:26 +08:00
vben
acacb32bb5 fix(tailwindcss): remove console warnings 2021-07-04 22:09:25 +08:00
zhangfugui
186b274faa refactor: tree component empty state display (#853) 2021-07-04 21:08:15 +08:00
无木
f1c0e0c52b types: fix CropperAvatar props define 2021-07-04 09:29:57 +08:00
无木
735028c430 fix(table): auto hide unnecessary scrollbar
隐藏无需显示的滚动条时
2021-07-04 02:41:55 +08:00
无木
c8c7615569 docs: update CHANGELOG.zh_CN 2021-07-04 00:10:14 +08:00
无木
c3b907656a feat(modal): add tooltip for action buttons
为最大化、全屏、还原等操作按钮添加工具提示
2021-07-03 23:25:01 +08:00
无木
b96ea0753b feat(avatar-cropper): more props added
为头像剪裁组件添加value属性、onChange事件以及用于自定义上传按钮的属性;更新个人设置页的头像设置
2021-07-03 23:12:54 +08:00
无木
6cbac4b7ec feat(avatar-cropper): add action tooltip
为头像剪裁组件的操作按钮添加工具提示
2021-07-03 20:14:58 +08:00
vben
81cf441373 chore: npm script adjustment 2021-07-03 17:22:51 +08:00
Lan
48fcd7684c feat(param-menu): feature: menu with params (#845) 2021-07-03 17:13:59 +08:00
无木
791b323dbd fix(table): param of handleSearchInfoFn
修复`handleSearchInfoFn`的参数会有多余的空白键
2021-07-03 14:32:38 +08:00
无木
49f39de7b4 feat(axios): use defHttp like axios
当非GET请求并且同时存在data和params,不再忽略data。使defHttp的用法习惯接近axios原生配置

fixed: #850
2021-07-03 14:01:18 +08:00
无木
8819af083c types(action-item): set label optional 2021-07-02 15:45:22 +08:00
无木
73654b7862 fix(popconfirm-button): remove button excess title
移除PopconfirmButton组件多余的title;修改TableAction的tooltip默认位置
2021-07-02 12:17:07 +08:00
无木
5fab267a69 feat(table-action): support tooltip option
为tableAction组件中的操作按钮增加tooltip配置

close: #848
2021-07-02 11:55:13 +08:00
无木
5637588fce fix(demo): fix async tree demo, fixed: #823 2021-07-02 02:27:33 +08:00
无木
5a20df45ad feat(tree): add insertNodesByKey method 2021-07-02 02:26:13 +08:00
无木
d52b0de83e feat(route): add hidePathForChildren in meta
添加`hidePathForChildren`选项用于在子菜单中隐藏本级path
2021-07-02 00:30:48 +08:00
无木
72ac240f28 feat: routers support ignoreRoute option
为路由配置添加`meta`.`ignoreRoute`配置,允许在`ROUTE_MAPPING`及`BACK`模式下配置纯菜单数据

fixed:
2021-07-01 23:54:10 +08:00
无木
b5046f07a2 fix(form): fix some prop declaration
修复`submitButtonOptions`、'resetButtonOptions'的类型定义
2021-07-01 14:42:29 +08:00
无木
ddf116da14 style(demo): replace account page detail icon 2021-07-01 11:36:45 +08:00
无木
5005e6e56b fix(sider): custom trigger does not take effect
修复侧边菜单底部的自定义折叠按钮不起作用的问题
2021-07-01 10:45:59 +08:00
Eric
3871204d08 fix: routes filter can't effective when permission mode set to ROUTE_MAPPING (#836) 2021-06-30 22:27:26 +08:00
无木
b4a3f936cd fix(table): global configuration accidentally modified
修复table的全局配置可能被意外修改的问题
2021-06-30 18:40:33 +08:00
无木
16c5d327f1 feat(basic-upload): value support v-model 2021-06-30 17:02:50 +08:00
无木
76a5f87c0c fix: hasPermission not work in ROLE Mode 2021-06-30 16:52:13 +08:00
无木
49e72a8e76 feat(basic-upload): add preview-delete event
添加预览Modal中删除文件的事件

close: #835
2021-06-30 16:35:00 +08:00
无木
6f845b53bd fix(table): selection-change not triggered on row click
修复selection-change事件在点击行来改变勾选时不会被触发的问题
2021-06-30 15:43:32 +08:00
无木
d509e897be fix(axios): option withToken not work 2021-06-30 01:07:27 +08:00
无木
424b171e0d fix(demo): account list fetch loss param
修复账号管理列表发起请求时可能缺少当前选中的部门ID参数的问题

fixed: #830
2021-06-30 00:50:49 +08:00
Lan
9de6ac1119 refactor(contentHeight): 重构,将PageWrapper的useContentHeight抽象为公共hook,满足自定义扩展组件时的自动高度计算需求。 同时优化高度计算算法。 (#826) 2021-06-30 00:50:19 +08:00
周旭
95c16a5d26 fix: support various vite modes of build, not just production (#832)
(cherry picked from commit bcc4773fbfc3dd1b7a24655bc731be830ad6d72d)
2021-06-30 00:49:19 +08:00
Vben
cdb10cc4ac fix(menu): make sure the menu is activated correctly 2021-06-30 00:47:59 +08:00
SUPER_AI
749ba5c1da feat(table): support asynchrony in beforeFetch and afterFetch (#827) 2021-06-29 23:53:10 +08:00
无木
d38ff6670a fix(lock-screen): ensure lock info is saved
确保打开多个窗口锁屏时,其它窗口不会误覆盖锁屏状态
2021-06-29 20:23:47 +08:00
无木
e5f37885ff fix: multi windows token sharing
修复同时打开多个窗口时令牌没能同步共享的问题

fixed: #761
2021-06-29 19:41:06 +08:00
无木
d7b84c7874 fix(lock-screen): fix lock-screen can skip on new window
修复锁屏功能可以通过刷新页面或复制 URL 打开新的浏览器标签来跳过锁定状态的问题
2021-06-29 18:34:51 +08:00
无木
c99cf5e53f feat(axios): add withToken option
添加withToken配置,用于控制request是否提交token
2021-06-29 17:31:30 +08:00
无木
df0f00085c fix(table): fix rowSelection.onChange not work
修复为table提供rowSelection.onChange时,无法手动变更table的选中项的问题

fixed: #825
2021-06-29 16:39:47 +08:00
无木
99829c79ab fix(svg-icon): fix SvgIcon style 2021-06-29 15:16:21 +08:00
Vben
bdae33e34a chore: revert scrollbar 2021-06-28 23:40:03 +08:00
Vben
e9e51b2fdc perf(scrollbar): scrollbar update when slot changed 2021-06-28 22:45:40 +08:00
无木
1bde404121 fix(sider): bottom trigger not work
修复侧边栏底部的折叠按钮不工作的问题

fixed: #820
2021-06-28 21:16:04 +08:00
无木
c7de65ebba fix(modal): setModalProps support defaultFullscreen
修复setModalProps不支持设置defaultFullscreen的问题
2021-06-28 18:10:26 +08:00
无木
829b366cb2 fix(table): editComponentProps support onChange
修复editComponentProps不支持onChange的问题
2021-06-28 16:27:53 +08:00
无木
3dbbde2662 fix(modal): remove console log 2021-06-28 11:12:52 +08:00
无木
f750ff435f fix(modal): maskClosable not work
修复BasicModal点击遮罩不能关闭的问题
2021-06-28 11:10:58 +08:00
vben
f9cda2e8c0 chore: release 2.5.2 2021-06-28 00:22:34 +08:00
vben
913c22c84f feat(menu): the route is automatically mapped to the menu 2021-06-27 23:58:14 +08:00
vben
327d71b8fb perf(router): reduce the number of guard files 2021-06-27 22:59:59 +08:00
无木
941ad59759 fix(drawer): openDrawer is not normal in some cases
修复BasicDrawer在设置其它属性时可能会影响visible状态的问题
2021-06-27 19:13:57 +08:00
无木
d0b6c496d6 style: remove tailwind lightBlue renamed warning 2021-06-27 16:38:40 +08:00
无木
20d7a25eb8 fix: user drop-down event key loss
修复顶部的用户操作下拉菜单点击事件丢失key参数的问题
2021-06-27 15:33:30 +08:00
vben
59d3e8c80f perf(icon): remove Icon component global registration 2021-06-27 13:56:09 +08:00
无木
c73694ab8b fix: user dropdown event response failure
修正顶部用户下拉菜单不响应点击事件的问题
2021-06-27 02:32:18 +08:00
vben
81a0f478af chore: release 2.5.1 2021-06-27 00:04:01 +08:00
bbkkkk8
d97aa92741 fix(comp-tree): support comp-tree-foreach stop,add insertNodesByKey (#818)
Co-authored-by: git <lixiaokang215@163.com>
2021-06-27 00:01:38 +08:00
vben
480cfb914e fix: fix antdv console warning 2021-06-26 23:56:57 +08:00
无木
0e414ba3c1 feat(demo): add route multi tabs show
添加同一路由演示多个不同参数的tab

close: #817
2021-06-26 21:25:11 +08:00
无木
61d4efd55a revert(axios): remove baseUrl config
无需 baseUrl 配置,已有apiUrl 替代
2021-06-26 12:14:06 +08:00
JinMao
d5f9919b60 fix: fix defHttp baseUrl work 2021-06-26 04:47:17 +08:00
Vben
aed622bd09 chore: update deps 2021-06-26 00:31:21 +08:00
无木
e78af6f228 fix(table): getDataSource not worked on empty data
修复getDataSource获取的数据源在表格为空时返回值错误的问题。

fixed: #752
2021-06-25 15:08:43 +08:00
无木
4ae39c53b4 fix(table): treeTable editable error
修复树表格的编辑问题

fixed: #811
2021-06-25 14:51:58 +08:00
Vben
fa64fc8a62 fix(api-select): ensure that the onchange function parameters are correct 2021-06-24 23:51:14 +08:00
Vben
a2a75a097f fix(demo-form): add fieldMapToTime example,fix #807 2021-06-24 23:17:56 +08:00
Vben
a2d8be3ab2 fix(demo): style error,fix #806 2021-06-24 23:10:43 +08:00
Vben
aec230ca19 fix(design): correct tailwind configuration,fix #800 2021-06-24 22:57:36 +08:00
无木
a6ef771fcc fix(pop-confirm): fix event working unexpected 2021-06-24 18:55:38 +08:00
Lan
4d8e39857e perf(pagewrapper): 优化PageWrapper的高度自适应表现使用getViewportOffset替代useContentViewHeight (#792)
Co-authored-by: NorthLan <lan6995@gmail.com>
2021-06-23 23:16:47 +08:00
Vben
c4b22a225d fix(upload): make sure to carry custom parameters, fix #802 2021-06-23 22:37:30 +08:00
无木
60b80c96e8 fix(dropdown): icon and trigger work unexpected
修复Dropdown中popconfirm的事件响应区域以及icon不正常的问题

fix: #796,#787
2021-06-23 21:56:43 +08:00
JinMao
9298b3c988 feat: add Tree LoadData demo 2021-06-23 15:53:31 +08:00
无木
8d22231a5f fix(table): event editCancel loss params
修复table的editCancel事件缺少部分参数的问题
2021-06-23 00:27:11 +08:00
vben
8eba7fb527 fix(table): fix table jitter problem 2021-06-22 22:46:03 +08:00
Vben
c1525252e8 chore: release 2.5.0 2021-06-20 21:39:59 +08:00
Vben
893f3c79e7 refactor(css): refactored windicss to tailwindcss 2021-06-20 21:36:52 +08:00
vben
e8d6f8851e fix(store): fix type error after pinia version upgrade 2021-06-19 23:17:44 +08:00
Vben
7dce50cb1f chore: typo 2021-06-19 22:38:29 +08:00
Vben
d3d620f4fc perf(utils): mitt default export is changed from Class to Function 2021-06-19 22:38:29 +08:00
无木
ea6834aeec feat: optimize error message for api failure
优化request并发请求失败时的错误提示(同种类型的失败只提示一个message)
2021-06-18 17:14:31 +08:00
Vben
4c89ea7474 fix(menu): fix the jitter problem of menu folding animation,fix #732 2021-06-18 00:39:33 +08:00
Vben
0d0708409c feat(project-setting): added sessionTimeoutProcessing project configuration item,fix #772 2021-06-17 23:39:55 +08:00
Vben
b6d5b0796d feat(axios): added authenticationScheme configuration,fix #774 2021-06-17 23:25:31 +08:00
Vben
f6fe1dd62d feat(test): add jest test suite 2021-06-17 23:00:12 +08:00
无木
154ebc3d96 fix(use-message): content not support vNode
修复封装的`useMessage`部分函数中`content`不支持vNode类型以及`createConfirm`不支持html的问题
2021-06-17 22:38:22 +08:00
Vben
0acc4ab2dd perf(locale): reduce the number of multilingual files 2021-06-17 21:43:53 +08:00
Vben
d196340d27 feat(demo): added guide page example 2021-06-17 21:43:53 +08:00
Vben
4f20d45f9d chore: type optimization 2021-06-17 21:43:53 +08:00
Vben
e9064631c7 chore: update deps 2021-06-17 21:43:52 +08:00
无木
513823bfbd fix(form): loss args on component change event
修复部分组件的change事件不止一个参数时,componentProps中配置的onChange只能接收到第一个参数的问题
2021-06-17 17:34:11 +08:00
JinMao
d683b0f1e8 fix: fix Login Page LocalePicker showLocale condition 2021-06-17 12:41:18 +08:00
JinMao
21c771b59c fix: fix if getDropdownList.length==0 show Dropdown component 2021-06-17 12:40:10 +08:00
xlaoyu
49b66e83ac refactor(axios): control the display of common errors in the request cycle (#758)
Co-authored-by: frankylli <frankylli@tencent.com>
2021-06-16 22:34:32 +08:00
Lan
ab2c7efe69 perf(PageWrapper): fix the height calculation problem when footer and global footer are opened at the same time (#760)
* perf(PageWrapper): 优化PageWrapper在page的footer与全局页脚同时开启时的高度计算表现。

* docs(PageWrapper): 修复footer与全局页脚同时开启时的高度计算问题

Co-authored-by: NorthLan <lan6995@gmail.com>
2021-06-16 22:23:39 +08:00
Vben
655b743236 fix(modal): ensure that the shutdown event is not triggered multiple times 2021-06-14 23:15:30 +08:00
M69W
a03d3cc60c fix(ApiSelect demo): add demo about ApiSelect's use (#757)
* fix(ApiSelect demo): add demo about ApiSelect's use

* fix(ApiSelect demo): typo

* revert(ApiSelect): remove console

Co-authored-by: M69W <M69W@M69W>
2021-06-14 22:10:41 +08:00
bOtalkin
bbce002be1 fix(layout): props warn (#756) 2021-06-14 22:06:20 +08:00
Vben
29b2d344ae chore: typo 2021-06-11 23:35:30 +08:00
Vben
305630e3fd feat(preview): added createImgPreview picture preview function 2021-06-11 23:26:30 +08:00
Vben
3f6920f7a9 perf(component): optimize tree and upload components 2021-06-11 23:19:03 +08:00
Vben
fa828fd972 fix(flow-chart): fix drag and drop menu loss 2021-06-11 23:09:03 +08:00
Vben
bd2039accb refactor: remove useExpose 2021-06-11 22:45:02 +08:00
Vben
3b2c40bec8 refactor(virtual-scroll): refactor virtualScroll component 2021-06-11 22:39:02 +08:00
Vben
1c1755cf5b fix(modal): ensure that the full screen height is calculated correctly 2021-06-11 22:29:02 +08:00
Vben
639520ad5d feat(use-drawer): add closeDrawer function 2021-06-11 22:19:02 +08:00
Vben
c7c95dd2af chore: type Descrition,Drawer,Excel,Dropdown 2021-06-11 22:09:02 +08:00
Vben
6dbbdbac76 perf(cropper-avatar): code optimization 2021-06-11 21:49:02 +08:00
jinmao88
b7c7c46853 perf: add createImgPreview func (#713) 2021-06-11 16:08:39 +08:00
Lan
33cd8fe653 fix(useViewHeight): Fix the problem that useContentViewHeight does not calculate the footer (#747)
Co-authored-by: NorthLan <lan6995@gmail.com>
2021-06-11 09:37:17 +08:00
无木
c6b766d8ea fix(route): dynamically introduce components error
修复后台权限模式下,加载IFrame类型的路由时会丢失component的问题
2021-06-11 00:29:39 +08:00
Vben
a222ec8553 fix(mock): make sure ignore matches the file correctly, fix #745 2021-06-10 22:16:15 +08:00
Vben
8e410fc640 feat: add CropperAvatar component 2021-06-10 21:46:46 +08:00
无木
de12babd31 fix(modal): add v-model support for visible 2021-06-10 19:48:43 +08:00
无木
b387681c00 fix(api): select api type error 2021-06-10 15:43:28 +08:00
Vben
2c5351f9f4 chore: release 2.4.2 2021-06-10 00:36:54 +08:00
Vben
40008bc235 refactor: refactor CountTo component 2021-06-10 00:32:15 +08:00
Vben
00fca0fe6c chore: prettier code 2021-06-09 22:36:30 +08:00
Vben
34a80542de fix: fix darkModeSwitch switch failure 2021-06-09 22:36:30 +08:00
无木
c5f2577f51 fix(api-select): loss option data on event callback
close #733
2021-06-09 18:31:01 +08:00
无木
7c1ffa3d23 fix(mock): type error 2021-06-09 12:13:13 +08:00
Vben
7b9cd09ad8 fix(demo): make sure the map https resource is correct 2021-06-09 00:25:45 +08:00
Vben
55e9d9fc29 perf: optimize components and add comments 2021-06-09 00:22:29 +08:00
无木
84d9300e52 fix(demo): breadcrumb route invalid redirect 2021-06-08 16:45:42 +08:00
无木
df8cd86051 fix(router): loss directory route
修复"目录"路由丢失的问题

fix: #722
2021-06-08 15:14:05 +08:00
无木
448a4c2809 feat(table): updateTableDataRecord support functional rowKey 2021-06-08 15:14:05 +08:00
Leo Caan (陈栋)
f62f378f42 chore: add util for install component (#707) 2021-06-08 14:28:19 +08:00
无木
6d5f9aa699 feat(modal): add closeModal for useModal 2021-06-08 10:55:33 +08:00
无木
21f7a854fe fix(demo): account list page validate and save 2021-06-08 01:13:22 +08:00
无木
8e4f486fcf feat(table): add updateTableDataRecord method
添加updateTableDataRecord以便可以根据指定的rowKey来直接更新行数据而无需reload
2021-06-08 01:08:04 +08:00
vben
5212ea79b4 fix: build error 2021-06-08 00:15:34 +08:00
Vben
cda0f9c10a chore: add some notes 2021-06-07 21:30:27 +08:00
liuzhidong
efce482b32 feat(Tinymce): add dynamics to the read-only state of the rich text editor (#725)
*富文本目前只支持初始化配置,本次增加了只读状态动态设置,只需更改readonly的值
2021-06-07 21:28:26 +08:00
无木
bcad95d32a fix(form): fix form update problem
修复表单组件在特定情况下的卡顿、崩溃问题
fix: #720
2021-06-07 14:52:03 +08:00
无木
125a7d1483 feat(table): support columns-change event
添加列改变事件(含排序、可见性、固定列)。该事件仅由表格设置组件中人为触发。
2021-06-07 12:37:21 +08:00
liuzhidong
966571bdcb fix(Tinymce): Read only status upload button can also be used (#718)
*修复富文本组件在只读状态下上传图片按钮也能点击的bug
2021-06-07 12:23:34 +08:00
无木
aee613034f refactor(mock): remove third-party images 2021-06-07 01:14:07 +08:00
Vben
d677729acb perf(i18n): improve circular dependencies 2021-06-06 23:36:22 +08:00
Vben
d81481c521 fix(table): try to get close to the form stuck 2021-06-06 22:54:25 +08:00
无木
19d8e01e11 feat(table-img): support simple show mode and more props
改进TableImg组件,支持简单显示模式以及更多可配置的属性。
2021-06-06 16:27:19 +08:00
Vben
50f94bfee4 chore(axios): remove useless code 2021-06-06 15:12:15 +08:00
无木
ee384b1fa7 fix(radio-button): fix RadioButton disabled support
fix #710
2021-06-06 13:24:32 +08:00
无木
4fd2051bc0 fix(table): settings indeterminate state effect
修复存在操作列的情况下,表格设置组件中的半选状态显示不正确的问题
2021-06-06 12:03:53 +08:00
Vben
a96cb2509c refactor(test-server): improve test service code 2021-06-05 22:29:56 +08:00
无木
8b6e07b768 fix(demo): fix basic form page style
修复表单基础示例页面,远程下拉的弹出层有时显示不完整的问题。
2021-06-05 22:17:17 +08:00
无木
50207ad702 feat(api-select): auto refetch after params changed
ApiSelect 组件在params改变后自动重新获取远程数据
2021-06-05 22:15:51 +08:00
无木
4805ca2626 chore: vite server options adjustment 2021-06-05 20:14:55 +08:00
无木
437692869a fix(upload): ensure preview items valid 2021-06-05 18:10:58 +08:00
无木
495b1da385 fix(table): wrong indeterminate state
修复table在包含默认不显示的列时,settings的[列展示]复选框的初始indeterminate状态不正确的问题
2021-06-05 16:22:26 +08:00
无木
fe2bcfc6f7 feat(table): support custom update on row editing
在表格进入行编辑状态时,在某一列数据发生修改时,允许获取或同步修改其它列的当前编辑数据。

close #646
2021-06-05 14:11:00 +08:00
无木
808012b544 feat(table-action): add stopButtonPropagation prop
为TableAction组件添加stopButtonPropagation来配置是否要阻止操作列的按钮的点击事件冒泡。

close #699
2021-06-05 12:58:07 +08:00
无木
40e3cb043c fix(lock): fix lock modal height
fixed #701
2021-06-05 12:25:39 +08:00
无木
6c4f947386 fix(page): basic form action btns should be in line
修正基础表单页面的提交和重置按钮没有处于一行的问题
2021-06-04 19:22:30 +08:00
无木
fb6c76db53 feat(echarts): add getInstance for useECharts
为useECharts添加getInstance以便绑定事件或执行更多自定义动作
2021-06-04 17:22:06 +08:00
无木
46899aa3cd feat(demo): switch use in table
演示在table中渲染switch列并响应修改switch的动作
2021-06-04 16:11:18 +08:00
无木
41854121f3 fix(mock): menu list api loss type field 2021-06-04 16:08:41 +08:00
无木
b69dcd79d7 fix(axios): transformRequestHook logic error 2021-06-04 14:18:22 +08:00
Vben
4da3d2c534 chore: vscode configuration adjustment 2021-06-03 23:45:01 +08:00
无木
d62d0ca08c fix(keep-alive): tablist cache updating effect
修复 updateCacheTab 逻辑问题造成的KeepAlive配置可能失效的问题

close: #695
2021-06-03 16:28:48 +08:00
无木
808328dc7e fix(form): schemas update problem
修复某些情况下重设schemas数据不会生效的问题

fixed #688
2021-06-03 10:54:58 +08:00
无木
5d554f184f fix(modal): redoModalHeight not work as expected
修复redoModalHeight根据内容重设高度时,只会增大而不能减少Modal高度的问题
2021-06-03 10:52:17 +08:00
无木
f732b56904 feat(modal): add redoModalHeight for useModalInner
允许在Modal内部动态加载内容后重新调整高度
2021-06-02 23:31:15 +08:00
zuihou
9e2aa20daa fix(form): radioButtonGroup value support boolean 2021-06-02 08:59:39 +08:00
vben
1a429dd4d1 chore: release v2.4.1 2021-06-01 23:43:49 +08:00
vben
d73d43ed91 fix(table): make sure the table width is correct, fix #593 2021-06-01 23:21:04 +08:00
vben
8a3f47d6b8 chore: adjust setting 2021-06-01 21:38:16 +08:00
江麻妞
eca8907a11 fix: Fix the problem that the lang attribute of HTML will not be set when it is first loaded (#682)
* refactor:  Encapsulate the function of changing the page language

* fix(lang): Fix the problem that the `lang` attribute of `HTML` will not be set when it is first loaded
2021-06-01 21:37:59 +08:00
liuzhidong
e1123a2ccb fix(codeMirror): fix the JsonEditor embedded in the bullet frame causing the style to be disordered (#668) 2021-06-01 21:37:25 +08:00
无木
bbddf30e96 fix(form): radioButtonGroup value support number 2021-06-01 17:07:50 +08:00
Netfan
5ddccf6ba2 feat(tabs): add setTabTitle method (#680)
添加设置标签页标题的方法和演示
2021-06-01 01:13:19 +08:00
Vben
644dbe315b fix: fix node12 version data mock error 2021-06-01 01:08:57 +08:00
vben
aebad61b3d fix: ensure that roleList is not empty 2021-05-30 22:30:26 +08:00
vben
b1cb863502 fix(table-action): fix the split line style is missing,fix #674 2021-05-30 20:46:20 +08:00
Netfan
132c7fb944 fix: session timeout login logic error (#678)
修复超时重新登录的页面在某些逻辑下未能正确刷新数据的问题。

fix: #673
2021-05-31 09:23:19 +08:00
无木
9f5085c9f9 fix(table): useTable support onChange
修复useTable无法直接通过设置onChange来注册change事件响应的问题
2021-05-30 18:10:16 +08:00
无木
9f4d1719ca fix(table): support change event
修复表格不支持change事件的问题。

fix #677
2021-05-30 17:52:16 +08:00
vben
035f55af97 fix: login failed 2021-05-29 23:35:07 +08:00
Netfan
9e5e630987 refactor(api): remove unnecessary userId param (#675)
* refactor(api): remove unnecessary userId param

移除getUserInfo、getPermCode、getMenuList接口的userId参数。
这些接口应当始终与当前登录用户相关而无需传递userId。

* fix: fix auth header key case error
2021-05-29 23:11:38 +08:00
vben
70dcd60beb chore: update deps 2021-05-29 23:10:07 +08:00
无木
3ed2339a6d fix(tree): support defaultExpandAll prop
defaultExpandLevel已去除-1的行为定义,由defaultExpandAll代替。
2021-05-29 23:08:10 +08:00
无木
6edca1c19c feat(tree): add defaultExpandLevel prop
新增defaultExpandLevel属性,指定默认要展开的层级数。-1为默认全部展开(等同于ATree的defaultExpandAll),大于0则展开到指定层级。注意:该属性仅在首次渲染时起作用

close: #672
2021-05-29 00:48:56 +08:00
无木
1ae636296d feat(app-search): auto focus on show
菜单搜索组件在显示后input自动获得焦点
2021-05-28 17:58:32 +08:00
Netfan
b218f10e25 fix(login): login page modal style fixed: #662 (#666)
* fix: catch axios error data on request

* fix(login): login page modal style fixed: #662
2021-05-28 00:07:28 +08:00
vben
834fa7eb9c fix(axios): make sure that the parameter is an object before processing, fix #660 2021-05-27 23:58:21 +08:00
vben
566280422d fix(code-editor): fix CodeEditor style problem, fix #655 2021-05-27 23:06:41 +08:00
vben
3a16f2b80a chore: adjust component file name 2021-05-27 22:58:54 +08:00
无木
83c9cd7742 feat(tinymce): support dark theme and I18n
支持暗黑主题和中英文(暂不支持动态切换)
2021-05-27 22:16:40 +08:00
无木
ba2bebb406 fix(codeeditor): empty value set failed.fixed:#659 2021-05-27 19:14:31 +08:00
vben
7e2ca79ece fix: theme switching fails 2021-05-27 00:17:11 +08:00
无木
8eaf575626 feat(table): editable component text align
使可编辑单元格显示的input中的文字对齐方式与列自身的align属性相匹配
2021-05-26 23:06:07 +08:00
vben
d018363ddc fix(layout): fix class loss 2021-05-26 22:03:54 +08:00
无木
2066f66971 fix(avatar): mock data and Account center style
头像链接使用https,修正个人中心头像部分的位置
2021-05-26 21:58:14 +08:00
Netfan
93006c7dc7 feat(table): add editable DatePicker & TimePicker (#654)
为表格的可编辑单元格添加日期选择框和时间选择框组件
2021-05-26 21:47:31 +08:00
江麻妞
4f0d45f1df fix(log): fix Wrong version number (#653)
* fix(log): fix Wrong version number
2021-05-26 21:47:04 +08:00
vben
905e5b714b fix(layout): fix style compatibility issues 2021-05-26 21:45:32 +08:00
vben
6ef62ba6ea perf(i18n): improve warning prompt 2021-05-26 21:30:44 +08:00
vben
afa0eae829 chore: release 2.4.0 2021-05-25 23:47:27 +08:00
vben
5465f058ce feat(user): add user login expiration example 2021-05-25 23:14:05 +08:00
vben
d5b768929e fix(lock): automatic screen lock does not work 2021-05-25 22:35:52 +08:00
liuzhidong
785732f438 feat(form): add 'layout', 'labelAlign', 'rowProps' option (#651)
* feat(form):  add 'layout', 'labelAlign', 'rowProps' option

1.添加Form布局方式,当layout: 'vertical',labelWidth可以控制col间距
2.添加Form的全局label对齐方式, labelAlign: left | right
3.添加Form的Row组件所支持属性,控制Col间的间距,对齐方式,布局方式

* feat(Rate): add 'Rate' module

*添加评分组件,并添加了dome例子
2021-05-25 22:25:13 +08:00
vben
94a826d028 perf: let svg-icon support ssr 2021-05-25 22:10:56 +08:00
无木
6d626d5f00 chore: update deps 2021-05-25 15:17:45 +08:00
vben
cd4b5e14c2 fix(types): fix store types 2021-05-25 01:24:26 +08:00
Mikasa33
765064a190 feat(form): requires Increase function type value (#649)
* feat(form): requires Increase function type value

* feat(form): requires Increase function type value

* fix(form): 修复 rules 赋值错误的问题
2021-05-25 01:17:32 +08:00
vben
bbf178f64b fix(store): fix pinia typo 2021-05-23 23:45:21 +08:00
vben
8e3f84c3b7 fix(style): fix layout style, fix #633 2021-05-23 22:46:22 +08:00
Vben
e3569b81b1 fix: typo, ifx #637 2021-05-23 00:12:17 +08:00
Netfan
7519a00ada fix(avatar): show current user's avatar (#640)
在显示头像的地方正确显示当前登录用户的头像,已补充mock接口返回的avatar字段。
2021-05-23 09:02:47 +08:00
Netfan
d8ff30d9ec fix(tree): onCheck event lose origin param (#636)
修复Tree的onCheck事件缺少节点参数的问题
2021-05-22 22:36:19 +08:00
zuihou
3ef5087be6 style: formatting code 2021-05-22 18:08:53 +08:00
Netfan
2d3d04f547 fix(form): placeholder setting in componentProps (#634)
修复为RangePicker组件设置的placeholder属性无效的BUG
2021-05-21 09:36:41 +08:00
Netfan
bb0d2e1c71 fix(login): incorrect enter event bind (#625)
登录页面的回车事件绑定不正确,导致可能会意外提交登录表单:想按按下Enter关闭错误Modal时、在注册表单或其它表单按下Enter时等等。现已将Enter事件绑定在登录Form上
2021-05-20 22:51:51 +08:00
Netfan
5eee0ceb6e fix(theme): wrong color when RadioButtonGroup checked (#626) 2021-05-20 22:51:02 +08:00
Netfan
9b2d41ea44 feat(form): add prop autoSubmitOnEnter (#620)
为Form添加autoSubmitOnEnter属性,当设置为true时,可以在input组件上按下回车时自动提交表单
2021-05-20 09:19:46 +08:00
Vben
3bb6d11ed1 fix(layout): fix useLockPage not work, fix #611 2021-05-18 23:23:15 +08:00
Vben
d7d6039876 chore: update deps 2021-05-18 23:18:19 +08:00
Netfan
bc82d1a397 fix(tree): typo(#615)
* perf(form): schema required prop support array and strictly tree

* fix(tree): event 'change' triggered correctly
2021-05-18 23:05:33 +08:00
Mikasa33
f455fb97f9 feat(form): helpMessage Increase function type value (#616)
* feat(form): helpMessage

* feat(form): helpMessage
2021-05-18 23:04:31 +08:00
M69W
0e440f0793 style: fix the background color of table striped is lose (#618)
Co-authored-by: ljh <ljh>
2021-05-18 23:03:48 +08:00
Netfan
0112d6b313 fix(tree): value prop type (#613) 2021-05-17 13:32:43 +08:00
Vben
e4c3d0918a chore: update deps 2021-05-17 00:54:45 +08:00
江麻妞
c26dd03416 fix(theme generate): Fix #604 (#605)
fix(theme generate): Fix #604
2021-05-17 09:31:15 +08:00
HUCHAOQI
336be680d3 fix(store): addTab fx (#607)
在更新tabList的时候也能同时更新cacheTab
2021-05-17 09:31:03 +08:00
Netfan
adff788de5 perf(tree): improve the beforeRightClick callback to support more configuration of the menu (#608) 2021-05-17 09:29:24 +08:00
江麻妞
d34467d3f4 fix(cipher): fix #587 (#588) 2021-05-12 20:35:52 +08:00
HUCHAOQI
ec3d51d69b feat(form): add form field nested support (#591)
* feat(form): add form field nested support

* refactor(form): use lodash set replace
2021-05-12 20:35:28 +08:00
zuihou
4c16ffa383 Merge remote-tracking branch 'origin/main' 2021-05-12 13:19:23 +08:00
zuihou
56d8af147e feat(axios): Do you want to return the original response header? For example, use this property when you need to get the response header 2021-05-12 13:19:14 +08:00
江麻妞
a7c8c67c83 chore: typo (#584)
* fix: 变量名错误

* fix: 修复正则可以匹配纯数字问题
2021-05-11 18:56:38 +08:00
江麻妞
ae3f8329c2 perf: optimize i18n to add the initial locale to the locale pool during initialization (#577) 2021-05-11 09:24:03 +08:00
Netfan
2b76b88481 feat(qrcode): custom drawing support (#580) 2021-05-11 09:23:24 +08:00
Vben
9d19546272 chore: update deps 2021-05-10 00:32:37 +08:00
Vben
78191d6658 chore: update deps 2021-05-09 15:46:10 +08:00
Netfan
a579b8456a fix(modal): proptype conflict with ant design modal(fixed: #545) (#575) 2021-05-09 15:21:31 +08:00
Netfan
43e4c21950 fix(table): columns ref fixed(#564) (#573) 2021-05-07 21:01:11 +08:00
Mikasa33
9cd293c283 fix(CodeEditor): add readonly prop (#572) 2021-05-07 21:00:40 +08:00
啝裳
2f8b2183ec fix(tree): basicTree设置blockNode=false后,显示异常 (#567) 2021-05-06 21:11:12 +08:00
Netfan
1ff13bf459 fix:searching with replaceFields fix #548,#557 (#569)
* fix: update selected before row-click event(#548)

* fix(tree): searching with replaceFields(#557)
2021-05-06 21:10:29 +08:00
Yirius
5724bc5b3b perf: set header can use For Qs (#562)
set header can use For Qs
2021-05-05 21:19:12 +08:00
Mikasa33
bf365e26e5 fix(style): add table title min-height (#547) 2021-04-28 20:42:46 +08:00
木头锤纸
e80280fb81 feat(form): add Slider demo (#555)
* feat(function): add 增加Slider滑动输入条组件

* feat(function): add 增加Slider滑动输入条组件demo

* feat(function): add 增加Slider滑动输入条组件demo
2021-04-28 20:33:44 +08:00
zuihou
f4c9703ab9 docs(CHANGELOG): improve documentation 2021-04-27 00:25:54 +08:00
zuihou
9e208411a2 feat(demo): add permission table demo 2021-04-27 00:22:05 +08:00
zuihou
5a3861b9cf feat(table): 表格的数据列和操作列的字段可以根据权限和业务来控制是否显示 2021-04-27 00:20:20 +08:00
Vben
7c41c8673c fix(form): expose formModel,fix #533 2021-04-26 21:02:50 +08:00
M69W
5fae2b02ea perf: add Coordinating the selection of provinces and cities (#534)
Co-authored-by: M69W <M69W@M69W>
2021-04-26 20:53:33 +08:00
Vben
3ff70bb56f fix(form): improve warning prompt, fix #538 2021-04-26 20:52:31 +08:00
zuihou
6afee415a3 feat(table): Table operation columns support permission codes 2021-04-26 16:18:53 +08:00
Vben
8b2e0f665f fix: fix the default value of props 2021-04-25 23:39:56 +08:00
Vben
6a8820597f fix: ensure that the 401 jumps to the login page correctly, fix #512 2021-04-24 20:31:05 +08:00
Vben
b7ea68e6f8 fix(form): improve form props acquisition,fix #527 2021-04-24 20:27:01 +08:00
Vben
ccae5cd924 fix(style): fix icon style, fix #496 2021-04-24 20:19:41 +08:00
Vben
cb35341b8f fix(form): ensure that the DateTime component checked properly,fix #511 2021-04-24 20:10:31 +08:00
Vben
16ecf71850 fix(table): submitButtonOptions not work,fix #531 2021-04-24 18:27:48 +08:00
Vben
ca717602a6 fix: trigger resize in full screen to ensure that the height of other components is normal,fix #508 2021-04-24 11:23:28 +08:00
Vben
6b7f688eaf fix(menu): ensure that the external link jumps correctly, fix #516 2021-04-24 11:11:59 +08:00
Vben
7f6f8eefe9 fix(style): fix build style errors,fix #528 2021-04-24 10:59:45 +08:00
Mikasa33
e2ddf43699 fix(style): fix layout header style, basic arrow style and table search form style (#525)
* style: cursor pointer

* style: light mode, hover background-color

* fix(style): fix form border-radius style
2021-04-23 22:04:27 +08:00
Vben
090c76ba20 chore: vite version downgrade 2021-04-22 23:29:32 +08:00
Vben
f0ae146ca0 chore: update workflow 2021-04-22 22:59:53 +08:00
zuihou
c639e493a5 feat(form): adding resetSchema method 2021-04-22 22:51:00 +08:00
Vben
7e2668f667 chore: update deps 2021-04-22 22:13:03 +08:00
最后
e689ee5fa6 Update useFormEvents.ts (#514)
fix: 修复 表单回显时,参数为null或者''时, 报Invalid date的错
2021-04-22 21:14:42 +08:00
Vben
f4af231172 fix(button): ghost style 2021-04-19 23:53:12 +08:00
Vben
38f5072695 fix(form): remove field binding when deleting schema #471 2021-04-19 23:53:11 +08:00
Vben
b92b8a3c6a fix(tabs): fix the problem that other functions are invalid when the tab is closed, close #376 2021-04-19 23:53:11 +08:00
Vben
4f0c6fbcc7 chore: update stylelint 2021-04-19 23:53:11 +08:00
jinmao88
8c2491fcb6 fix: fix AppendFormDemo (#505)
Co-authored-by: haha <admin@qq.com>
2021-04-19 23:52:37 +08:00
jinmao88
85b92a9add perf: add AppendFormDemo (#503)
Co-authored-by: haha <admin@qq.com>
2021-04-19 18:42:31 +08:00
Li yao
bd83eccdc5 fix: password icon dislocation (#501)
修复登录页密码显示icon不同分辨率下错位
2021-04-19 18:36:44 +08:00
啝裳
94b2222c08 perf: improve countTo (#499) 2021-04-19 13:22:33 +08:00
最后
502cc2701b feat:icon name can be displayed(#498)
feat: 鼠标移上去,能显示图标名
2021-04-19 01:11:38 +08:00
Vben
4a035478ca fix(flow-chart): dark style not work 2021-04-17 23:20:39 +08:00
啝裳
5e36a8b575 perf: improve cropper example (#491) 2021-04-17 22:39:05 +08:00
最后
e1b30a5075 fix: update Axios.ts (#492)
1. 应该使用传递进来的 请求头
2. 针对有数组类型的参数,应该用brackets 或者 repeat 。  最好将arrayFormat参数改成可以让使用者通过入参来改的。  参考: https://blog.csdn.net/pifutan/article/details/86320705
2021-04-17 22:30:53 +08:00
Vben
0649011eba feat: add JsonPreview component 2021-04-17 18:51:19 +08:00
Vben
a812685084 feat: add codeEditor component 2021-04-17 18:42:14 +08:00
Vben
c04e8943bc perf: merge locale file 2021-04-17 18:39:18 +08:00
Vben
e1bc33f5c5 perf: improve flowChart logic 2021-04-17 18:36:49 +08:00
啝裳
2576735ade feat: add flowChart Component (#488) 2021-04-17 06:06:08 +08:00
Vben
a863ad46b4 fix(tinymce): ensure that the public resource path is correct,fix #487 2021-04-17 00:01:31 +08:00
Vben
7db37eedcc chore: update deps 2021-04-16 23:54:53 +08:00
Vben
6b47a8b930 chore: update deps 2021-04-14 21:15:50 +08:00
Vben
2cdf2c28c4 style: background to background-color 2021-04-13 21:43:10 +08:00
Vben
c9089c3243 chore: typo 2021-04-13 21:42:10 +08:00
LiuYa
6dd7d0f928 feat: add spin prop for Icon (#477)
Co-authored-by: 刘亚 <liuya54892@outlook.com>
2021-04-13 21:42:50 +08:00
Vben
021c6364fa chore: update deps 2021-04-13 00:19:36 +08:00
Vben
3c441a05da style(eslint): fix eslint error 2021-04-12 23:02:48 +08:00
Vben
26adbc92be fix: fix dark theme refreshing flashing white screen 2021-04-12 23:00:35 +08:00
Liu Ya
9a21b8b6a4 fix(form): Improve form error handling
* 自定义组件 Array 的元素可能为 null

* 自定义组件时没有抛出错误
2021-04-12 20:50:45 +08:00
Vben
663d13a67f fix: fix case errors 2021-04-10 23:57:50 +08:00
Vben
7e43d88f9c fix: echart import path 2021-04-10 23:49:39 +08:00
Vben
51a9f6b3da chore: bump 2.3.0 2021-04-10 23:30:00 +08:00
Vben
c77f7e62ab fix(theme): make sure the menu style is correct, fix #382 2021-04-10 23:20:29 +08:00
Vben
640a2c1798 fix(theme): make sure the steps style is correct, fix #414 2021-04-10 22:16:06 +08:00
Vben
37c5741601 fix(api-select): make sure the type is correct, fix #468 2021-04-10 21:41:22 +08:00
Vben
967b28c4c0 feat: persistent save tab, fix #359 2021-04-10 21:41:22 +08:00
Vben
2037293aa3 refactor: refactor hooks 2021-04-10 21:41:22 +08:00
Vben
215d8bab38 refactor: refactor store 2021-04-10 21:41:22 +08:00
啝裳
700306bb45 fix: Improve the picture cropping component (#463)
* fix: Improve the picture cropping component

* fix: component /verify/rotate text show problem
2021-04-10 21:19:28 +08:00
Vben
ee1c349858 fix(menu): improve menu logic, fix #461 2021-04-08 23:04:16 +08:00
Vben
780a8a67b8 fix: improve login page style 2021-04-08 22:08:55 +08:00
Vben
96a49ba116 chore: update deps 2021-04-08 22:08:12 +08:00
啝裳
af6d58eb26 fix: login page overflow show problem (#455) 2021-04-08 18:02:38 +08:00
Vben
d2a1e1f0db chore: release 2.2.0 2021-04-08 01:18:38 +08:00
Vben
6b996229e1 fix(use-loading): rendering fails when used with onMounted, fix #438 2021-04-08 01:14:06 +08:00
Vben
67a7a76b73 fix(table-action): ensure that the click event is not triggered, fix #441 2021-04-08 00:42:08 +08:00
Vben
64b6313b4e fix(table): ensure data responsiveness, fix #447 2021-04-08 00:06:30 +08:00
Vben
1e669870cc fix(mock): make sure the background mode login is normal, fix #452 2021-04-07 23:53:16 +08:00
Vben
edc7525103 perf: delete tinymce useless style files 2021-04-07 23:39:54 +08:00
Vben
5b8eb4a49a feat: dark mode 2021-04-07 23:39:54 +08:00
qinjiahui01
f05cc6d34e fix(useColumn): fixed table column changes with hidden columns disappearing after dropping (#453)
Co-authored-by: Alan <alan@ichestnuts.com>
2021-04-07 23:39:08 +08:00
Vben
8b5cbca35a chore: update deps 2021-04-05 22:24:00 +08:00
Vben
3576d0b512 chore: format code 2021-04-05 22:23:39 +08:00
舒培培
f7499cdb0d chore: optimize prod configuration to control whether to delete origin files when using compress plugin (#443) 2021-04-05 22:00:54 +08:00
Vben
ee4829c15d fix(server): grammatical errors 2021-04-01 22:34:31 +08:00
Vben
c030567b38 chore: typo 2021-04-01 01:07:48 +08:00
Vben
6d6e0a1bfe fix(build): fix build error 2021-04-01 01:03:00 +08:00
Vben
b54b794264 fix(table): make sure the editing line is working, fix #439 2021-04-01 00:52:31 +08:00
Vben
8a14069e71 refactor: refactor dashboard 2021-03-31 23:52:11 +08:00
Vben
b9b470f4df fix(drawer): ensure the slot is working 2021-03-29 23:50:10 +08:00
Vben
1e4a250da1 fix(abakysis): fix tooltip style,fix #436 2021-03-29 23:02:03 +08:00
Vben
2e11ea677b wip: add cropper iamge component 2021-03-29 22:48:13 +08:00
Vben
39d629a029 refactor(tinymce): changed to npm introduction,fix #435,fix 434 2021-03-29 22:25:44 +08:00
Vben
37f6660c57 perf: code optimization 2021-03-28 15:31:35 +08:00
Vben
2f99892d96 feat(print): add print example 2021-03-28 00:04:41 +08:00
Vben
bb67692cfd fix(menu): ensure the menu is activated correctly,fix #432 2021-03-27 22:49:05 +08:00
Vben
0b66360cc9 fix(breadcrumb): ensure the breadcrumbs display the icon correctly, fix #433 2021-03-27 21:33:13 +08:00
Vben
6bb19fb2d4 feat(tree): add headerTitle slot 2021-03-27 17:25:37 +08:00
Vben
782cbc0a0b chore: update deps 2021-03-27 16:08:25 +08:00
Vben
979058ad95 perf: refoctor useTitle 2021-03-27 16:03:28 +08:00
Shinigami
3b3a7462f6 chore: add type-safety (#431) 2021-03-27 16:03:03 +08:00
Vben
411eef844c chore: typo 2021-03-27 00:10:55 +08:00
Vben
b25ceb4201 fix(echart): legend not work 2021-03-27 00:04:36 +08:00
Vben
a98835e18b chore: types 2021-03-26 22:22:58 +08:00
Vben
5b4a41ced4 feat(api-select): add immediate option,close #430 2021-03-26 21:36:20 +08:00
Vben
e090689ef5 chore: update deps 2021-03-26 21:16:08 +08:00
938 changed files with 31729 additions and 52354 deletions

View File

@@ -1,5 +1,3 @@
VITE_PORT = 3100
# Whether to open mock
VITE_USE_MOCK = true
@@ -8,7 +6,7 @@ VITE_PUBLIC_PATH = /
# Cross-domain proxy, you can configure multiple
# Please note that no line breaks
VITE_PROXY = [["/basic-api","http://localhost:3000"],["/upload","http://localhost:3001/upload"]]
VITE_PROXY = [["/basic-api","http://localhost:3000"],["/upload","http://localhost:3300/upload"]]
# VITE_PROXY=[["/api","https://vvbin.cn/test"]]
# Delete console

View File

@@ -12,6 +12,9 @@ VITE_DROP_CONSOLE = true
# If you need multiple forms, you can use `,` to separate
VITE_BUILD_COMPRESS = 'none'
# Whether to delete origin files when using compress, default false
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
# Basic interface address SPA
VITE_GLOB_API_URL=/basic-api

36
.env.test Normal file
View File

@@ -0,0 +1,36 @@
NODE_ENV=production
# Whether to open mock
VITE_USE_MOCK = true
# public path
VITE_PUBLIC_PATH = /
# Delete console
VITE_DROP_CONSOLE = true
# Whether to enable gzip or brotli compression
# Optional: gzip | brotli | none
# If you need multiple forms, you can use `,` to separate
VITE_BUILD_COMPRESS = 'none'
# Whether to delete origin files when using compress, default false
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
# Basic interface address SPA
VITE_GLOB_API_URL=/basic-api
# File upload address optional
# It can be forwarded by nginx or write the actual address directly
VITE_GLOB_UPLOAD_URL=/upload
# Interface prefix
VITE_GLOB_API_URL_PREFIX=
# Whether to enable image compression
VITE_USE_IMAGEMIN= true
# use pwa
VITE_USE_PWA = false
# Is it compatible with older browsers
VITE_LEGACY = false

View File

@@ -13,16 +13,15 @@ module.exports = {
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
tsx: true,
},
},
extends: [
'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
'plugin:prettier/recommended',
],
rules: {
'vue/script-setup-uses-vars': 'error',
'@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/no-explicit-any': 'off',
@@ -58,8 +57,8 @@ module.exports = {
'vue/multiline-html-element-content-newline': 'off',
'vue/singleline-html-element-content-newline': 'off',
'vue/attribute-hyphenation': 'off',
// 'vue/html-self-closing': 'off',
'vue/require-default-prop': 'off',
'vue/require-explicit-emits': 'off',
'vue/html-self-closing': [
'error',
{
@@ -72,5 +71,6 @@ module.exports = {
math: 'always',
},
],
'vue/multi-word-component-names': 'off',
},
};

28
.github/ISSUE_TEMPLATE/3-bug-cn.md vendored Normal file
View File

@@ -0,0 +1,28 @@
---
name: 🐛 Bug 报告
about: 向我们报告一个Bug以帮助我们改进
title: ''
labels: 'bug: pending triage'
assignees: ''
---
**⚠️ 重要 ⚠️ 在进一步操作之前,请检查下列选项。如果您忽视此模板或者没有提供关键信息,您的 Issue 将直接被关闭**
- [ ] 已阅读 [文档](https://anncwb.github.io/vue-vben-admin-doc/).
- [ ] 确保您的代码已是最新或者所报告的 Bug 在最新版本中可以重现. (部分 Bug 可能已经在最近的代码中修复)
- [ ] 已在 Issues 中搜索了相关的关键词
- [ ] 不是 ant design vue 组件库的 Bug
### 描述 Bug
请清晰地描述此 Bug 的具体表现。
### 复现 Bug
请描述在演示页面中复现 Bug 的详细步骤,以确保我们可以理解并定位问题。部分 Bug 如果未在 Demo 中涉及,请务必提供关键代码
## 系统信息
- 操作系统:
- Node 版本:
- 包管理器 (npm/yarn/pnpm) 及其版本:

View File

@@ -68,10 +68,10 @@ jobs:
sed -i "s#VITE_BUILD_COMPRESS\s*=.*#VITE_BUILD_COMPRESS = 'gzip'#g" ./.env.production
cat ./.env.production
- name: use Node.js 14
- name: use Node.js 16
uses: actions/setup-node@v2.1.2
with:
node-version: '14.x'
node-version: '16.x'
- name: Get yarn cache
id: yarn-cache

View File

@@ -4,7 +4,7 @@ name: schedule-push-to-ftp
on:
push:
schedule:
- cron: '0 15 * * *'
- cron: '0 20 * * *'
jobs:
schedule-push-to-ftp:
@@ -18,12 +18,13 @@ jobs:
run: |
sed -i 's#VITE_PUBLIC_PATH\s*=.*#VITE_PUBLIC_PATH = /next/#g' ./.env.production
sed -i "s#VITE_BUILD_COMPRESS\s*=.*#VITE_BUILD_COMPRESS = 'gzip'#g" ./.env.production
sed -i "s#VITE_DROP_CONSOLE\s*=.*#VITE_DROP_CONSOLE = true#g" ./.env.production
cat ./.env.production
- name: use Node.js 14
- name: use Node.js 16
uses: actions/setup-node@v2.1.2
with:
node-version: '14.x'
node-version: '16.x'
- name: Get yarn cache
id: yarn-cache

8
.gitignore vendored
View File

@@ -4,12 +4,14 @@ dist
.npmrc
.cache
test/upload-server/static
tests/server/static
tests/server/static/upload
.local
# local env files
.env.local
.env.*.local
.eslintcache
# Log files
npm-debug.log*
@@ -25,3 +27,7 @@ pnpm-debug.log*
*.njsproj
*.sln
*.sw?
package-lock.json
pnpm-lock.yaml

View File

@@ -2,5 +2,5 @@ ports:
- port: 3344
onOpen: open-preview
tasks:
- init: yarn
command: yarn dev
- init: pnpm install
command: pnpm run dev

1
.husky/.gitignore vendored
View File

@@ -1 +0,0 @@
_

View File

@@ -1,8 +0,0 @@
module.exports = {
'*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
'{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --write--parser json'],
'package.json': ['prettier --write'],
'*.vue': ['prettier --write', 'stylelint --fix'],
'*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write'],
'*.md': ['prettier --write'],
};

View File

@@ -6,5 +6,3 @@
# Format and submit code according to lintstagedrc.js configuration
npm run lint:lint-staged
npm run lint:pretty

View File

@@ -1,2 +1,3 @@
/dist/*
/public/*
public/*

View File

@@ -1,6 +1,6 @@
{
"recommendations": [
"octref.vetur",
"vue.volar",
"dbaeumer.vscode-eslint",
"stylelint.vscode-stylelint",
"esbenp.prettier-vscode",

2
.vscode/launch.json vendored
View File

@@ -8,6 +8,6 @@
"url": "http://localhost:3100",
"webRoot": "${workspaceFolder}/src",
"sourceMaps": true
},
}
]
}

148
.vscode/settings.json vendored
View File

@@ -2,55 +2,9 @@
"typescript.tsdk": "./node_modules/typescript/lib",
"volar.tsPlugin": true,
"volar.tsPluginStatus": false,
//===========================================
//============= Editor ======================
//===========================================
"explorer.openEditors.visible": 0,
"npm.packageManager": "pnpm",
"editor.tabSize": 2,
"editor.renderControlCharacters": true,
"editor.minimap.renderCharacters": false,
"editor.minimap.maxColumn": 300,
"editor.minimap.showSlider": "always",
"editor.cursorBlinking": "phase",
"editor.cursorSmoothCaretAnimation": true,
"editor.detectIndentation": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"diffEditor.ignoreTrimWhitespace": false,
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
"editor.suggestSelection": "first",
"editor.trimAutoWhitespace": true,
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
//===========================================
//============= Other =======================
//===========================================
"breadcrumbs.enabled": true,
"open-in-browser.default": "chrome",
//===========================================
//============= emmet =======================
//===========================================
"emmet.triggerExpansionOnTab": true,
"emmet.showAbbreviationSuggestions": true,
"emmet.showExpandedAbbreviation": "always",
"emmet.syntaxProfiles": {
"vue-html": "html",
"vue": "html",
"xml": {
"attr_quotes": "single"
}
},
"emmet.includeLanguages": {
"jsx-sublime-babel-tags": "javascriptreact"
},
//===========================================
//============= files =======================
//===========================================
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"files.eol": "\n",
"search.exclude": {
"**/node_modules": true,
@@ -73,9 +27,14 @@
"CHANGELOG.md": true,
"examples": true,
"res": true,
"screenshots": true
"screenshots": true,
"yarn-error.log": true,
"**/.yarn": true
},
"files.exclude": {
"**/.cache": true,
"**/.editorconfig": true,
"**/.eslintcache": true,
"**/bower_components": true,
"**/.idea": true,
"**/tmp": true,
@@ -96,58 +55,10 @@
"**/yarn.lock": true
},
"stylelint.enable": true,
"stylelint.packageManager": "yarn",
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// ===========================================
// ================ Eslint ===================
// ===========================================
"eslint.alwaysShowStatus": true,
"eslint.options": {
"plugins": ["html", "vue", "javascript", "jsx", "typescript"],
"extensions": [".js", ".jsx", ".ts", ".tsx", ".vue"]
},
"eslint.validate": [
"javascript",
"typescript",
"reacttypescript",
"reactjavascript",
"html",
"vue"
],
// ===========================================
// ================ Vetur ====================
// ===========================================
"vetur.experimental.templateInterpolationService": true,
"vetur.format.options.tabSize": 2,
"vetur.format.defaultFormatter.html": "js-beautify-html",
"vetur.format.defaultFormatter.scss": "prettier",
"vetur.format.defaultFormatter.css": "prettier",
"vetur.format.defaultFormatter.ts": "prettier-tslint",
"vetur.format.defaultFormatter.js": "prettier",
"vetur.languageFeatures.codeActions": false,
"vetur.format.defaultFormatterOptions": {
"js-beautify-html": {
"wrap_attributes": "force-expand-multiline"
},
"prettier": {
"eslintIntegration": true,
"arrowParens": "always",
"semi": false,
"singleQuote": true
}
},
"javascript.updateImportsOnFileMove.enabled": "never",
"liveServer.settings.donotShowInfoMsg": true,
"terminal.integrated.rendererType": "dom",
"telemetry.enableCrashReporter": false,
"telemetry.enableTelemetry": false,
"workbench.settings.enableNaturalLanguageSearch": false,
"stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"],
"path-intellisense.mappings": {
"/@/": "${workspaceRoot}/src"
},
"prettier.requireConfig": true,
"typescript.updateImportsOnFileMove.enabled": "always",
"workbench.sideBar.location": "left",
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
@@ -177,7 +88,8 @@
},
"[vue]": {
"editor.codeActionsOnSave": {
"source.fixAll.eslint": false
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
}
},
"i18n-ally.localesPaths": ["src/locales/lang"],
@@ -187,5 +99,43 @@
"i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
"i18n-ally.enabledParsers": ["ts"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.enabledFrameworks": ["vue", "react"]
"i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": ["vue", "react"],
"cSpell.words": [
"vben",
"windi",
"browserslist",
"tailwindcss",
"esnext",
"antv",
"tinymce",
"sider",
"pinia",
"sider",
"nprogress",
"INTLIFY",
"stylelint",
"esno",
"vitejs",
"sortablejs",
"mockjs",
"codemirror",
"iconify",
"commitlint",
"vditor",
"echarts",
"cropperjs",
"logicflow",
"vueuse",
"zxcvbn",
"lintstagedrc",
"brotli",
"tailwindcss",
"sider",
"pnpm",
"antd"
],
"vetur.format.scriptInitialIndent": true,
"vetur.format.styleInitialIndent": true,
"vetur.validation.script": false
}

View File

@@ -1,48 +0,0 @@
# test directories
__tests__
test
tests
powered-test
# asset directories
docs
doc
website
images
assets
# examples
example
examples
# code coverage directories
coverage
.nyc_output
# build scripts
Makefile
Gulpfile.js
Gruntfile.js
# configs
appveyor.yml
circle.yml
codeship-services.yml
codeship-steps.yml
wercker.yml
.tern-project
.gitattributes
.editorconfig
.*ignore
.eslintrc
.jshintrc
.flowconfig
.documentup.json
.yarn-metadata.json
.travis.yml
# misc
*.md
!istanbul-reports/lib/html/assets
!istanbul-api/node_modules/istanbul-reports/lib/html/assets

View File

@@ -1,860 +0,0 @@
## 2.1.1 (2021-03-26)
### ✨ Features
- Added hideChildrenInMenu configuration for routing. Used to hide submenu
- Built-in expand/collapse all functions in the tree form
### ✨ Refactor
- Refactor the routing multi-layer mode to solve the problem of multiple implementations of nested keepalives
### 🐛 Bug Fixes
- Ensure that the CountDownInput component is reset to the empty value
- Fix the display problem on the small screen in split mode
- Fix table height calculation problem
- Fix the problem that components cannot be obtained by background routing
- Fix Modal component loadingTip configuration does not take effect
- Fix the background permission command does not take effect
- Make sure the progress bar is closed properly
- Fix the problem of invalid table check column configuration
- Ensure that the first level menu can be hidden
- Ensure that the hidden fields of the form are verified properly
### 🎫 Chores
- Remove ls-lint
### 🎫 Chores
- 移除 ls-lint
## 2.1.0 (2021-03-15)
### ✨ Features
- Added svg mode to icon selector
- Added time component
- Added AutoNavi/Baidu/Google Map example
### ✨ Refactor
- Refactor the project to solve the hot update problem caused by circular dependencies
- Remove vueHelper/useClickoutside, use @vueuse/core instead
### 🐛 Bug Fixes
- Ensure that the value of `table action` is updated correctly
- Fix the animation of page switching cannot be closed
- Fix `PageWrapper`title not showing
- Fix the known issues of the table
- Fix the problem that the BasicTree component can't customize the title
- Fix the button style problem after theme switching
## 2.0.3 (2021-03-07)
### ✨ Features
- `BasicTree` added `clickRowToExpand`, used to click tree node to expand
- Added SvgIcon plugin and examples
- Add the department tree on the left side of the account management interface·
### ⚡ Performance Improvements
- Pagination parameters are no longer carried when the table is closed
- The login page monitors the carriage return event to log in
- When the adaptive size of the table is set, the height is filled according to the screen.
- Tree scroll bar optimization
- Optimize the loading speed of local development
### 🐛 Bug Fixes
- Fix known issues with `Description`
- Fix known issues with `BasicForm`
- Fix the logic problem of show attribute of ActionItem under `BasicTree`
- Fix the style error of the tree component demo example
- Repair account management to add new but not cleared old data
- The form component should allow the setFieldsValue method to be null or undefined
- Ensure that the single-level breadcrumbs jump correctly
- Ensure that the Form component does not verify hidden form items
## 2.0.2 (2021-03-04)
### ✨ Refactor
- Refactored multi-language modules to support lazy loading and remote loading
### ✨ Features
- axios supports form-data format request
- Added icon selector component (support local and online methods)
- Added WebSocket examples and service scripts
- Added the `renderIcon` property to the Tree component to control the display of level icons
- Tree->actionItem added show attribute, used to dynamically control button display
- New toolbar/title/search function for Tree
- Added department management/password modification/account management/role management/menu management sample interface
### ⚡ Performance Improvements
- Optimized login interface animation
- Fix the problem of excessively large github warehouse.
- Hide table full screen button by default
- `crypto-es` is changed to `crypto-js` to reduce the package size
- `types` directory moved to the root directory, compatible with other directory global types
### 🐛 Bug Fixes
- Fix the warning problem of verification code component
- Fix the table cannot get the selected row correctly
- Fixed modal height calculation error in full screen state
- Fix some table style issues
- Fix the invalidation of the tree form `indentSize` setting
## 2.0.1 (2021-02-21)
### ✨ Refactor
- Refactored login page, new registration page/reset password page/mobile phone login/QR code login
### ✨ Features
- Added the `settingButtonPosition` configuration item for configuring the position of the `settings` button
- `modal` can switch the full screen by double-clicking the head
- Added `CountDownInput` component
### ⚡ Performance Improvements
- Optimize the editable center style and the width of the drop-down box is too short
- The `edit-change` event listener when the table is added and edited
### 🐛 Bug Fixes
- Fix image preview style error
- Fix icon style problem
- Fix the drop-down echo problem of editable table
## 2.0.0 (2021-02-18)
## Breaking changes
- `echarts` is upgraded to 5.0 and introduced on demand (just use `useECharts`).
### ✨ Refactor
- Removed `global.less`, `mixin.less`, `design/helper`, replaced by `windicss`, and need to modify the corresponding styles if they are useful
### ✨ Features
- useModal adds the return value function `redoModalHeight`, which is used to refresh the modal height when the modal is dynamic content
- Upgrade husky to 5.0
- Added `brotli`|`gzip` compression and related test commands
- Re-introduction of `windicss` (same as `tailwind`). Faster in speed
### ⚡ Performance Improvements
- Adjust the return value of the interface to obtain user information in array format
- Fix the error-log list as the system route
### 🐛 Bug Fixes
- Fix the issue of upload component maxNumber invalid
- Fix package sourcemap error report
- Fix code debugger location display error
- Fix the issue of mock plugin post request error
- Fix some themes color value error
- Fix the table in editable row status and press Enter to confirm
### 🎫 Chores
- Documentation update
- Upgrade ant-design-vue to `2.0.0`
- Upgrade vite to `2.0.0`
## 2.0.0-rc.18 (2021-02-05)
### ✨ Features
- `ApiSelect` adds `numberToString` property, which is used to convert all the value of `number` into `string`
- Added theme color switch
- Packed image compression
### ⚡ Performance Improvements
When mock is not used, move `mock.js` out of the package file
### 🐛 Bug Fixes
- Fix modal height calculation error
- Fix the pop-up menu when the menu is clicked on the tab when the menu is collapsed
- Fix the problem that the initial value of form is 0
- Fix table wrapping problem
- Fix the menu outside link does not jump
- Fix the display problem at the top of the menu
- Fix the issue of `modifyVars` configuration failure
## 2.0.0-rc.17 (2020-01-18)
### ✨ Refactor
- Added `SimpleMenu` component to replace the left menu component (the top menu is not replaced, the function should be as simple as possible without stuck). Solve the menu stuck problem.
- The `ant-design-vue` component is no longer registered globally. In order to better coordinate with the introduction of css on demand. If you need to register globally, you need to add it yourself
### ✨ Features
- `css` import on demand
### 🐛 Bug Fixes
- Fix `TableAction` icon problem
- Fix the problem of missing menu folding buttons
- Fix menu related issues
- Fix moment multilingual issue
## 2.0.0-rc.16 (2020-01-12)
### ✨ Refactor
- Independent component configuration to `/@/settings/componentsSetting`
- `colorSetting` and `designSetting` are now merged into `designSetting`
- `ant-design-vue` component registration moved to `components/registerComponent`
- Remove the `setup` folder
- Upgrade to `vite2`
- Image preview is changed to `Image` component implementation, temporarily removing functional usage
### ✨ Features
- Added `mixSideTrigger` configuration. Used to configure how to open the mixed mode menu on the left. Optional `hover`, default `click`
- Added `mixSideFixed` configuration. Used to fix the left mixed mode menu
- Added `height` and `min-height` properties to the modal component
- Added `PageWrapper` component. And applied to the sample page
- Added tab folding function
- Compatible with older browsers
- tinymce new image upload
### 🐛 Bug Fixes
- Fix known issues with table column configuration
- Restore the `isTreeTable` property of the table
- Fix table memory overflow problem
- Fix the function of `layout` shrinking and expanding in split mode
- Fix modal height calculation error
- Fix file upload error
## 2.0.0-rc.15 (2020-12-31)
### ✨ Table destructive update
- Refactored editable cells and editable rows. See examples for details. The writing has changed. For editable tables.
- Form editing supports form validation
- Added the following configuration in the table column configuration
```bash
{
# Whether to display columns by default. Those that are not displayed can be opened in the column configuration
defaultHidden?: boolean;
# Help text on the right side of the column header
helpMessage?: string | string[];
# Custom formatting Cell content. Support time/enumeration automatic conversion
format?: CellFormat;
# Editable
# Is it an editable cell
edit?: boolean;
# Is it an editable line
editRow?: boolean;
# Edit status.
editable?: boolean;
# Edit component
editComponent?: ComponentType;
# The parameters of the corresponding component
editComponentProps?: Recordable;
# Check
editRule?: boolean | ((text: string, record: Recordable) => Promise<string>);
# Value enumeration conversion
editValueMap?: (value: any) => string;
# Trigger editing Zhenghang
record.onEditRow?: () => void;
}
```
### ✨ Table reconstruction
- Added `clickToRowSelect` attribute. Used to control whether the clicked row is checked or not
- Monitor row click event
- Add column drag and drop and column fix function for the table column configuration button.
- Added `defaultHidden` attribute to table column configuration. Used to hide by default. You can configure the tick display in the table column
- More powerful column configuration
- useTable: Support for dynamically changing parameters. You can pass in `Ref` type and `Computed` type for dynamic changes
- useTable: Added return function `getForm`. Can be used to manipulate forms in the form Fix known issues in the table
### ✨ Features
- Added `v-ripple` water ripple command
- Added the left menu mixed mode
- Add an example of markdown embedded in the form
- Add an example of a page outside the main frame
- `route.meta` added `currentActiveMenu`, `hideTab`, and `hideMenu` parameters to control the display and hide of the crumb-level menu on the detail page.
- Added breadcrumb navigation example
- form: Added `suffix` attribute to configure suffix content
- form: Added remote drop-down `ApiSelect` and examples
- form: Add `autoFocusFirstItem` configuration. Used to configure whether to focus on the first input box of the form
- useForm: Support for dynamically changing parameters. You can pass in `Ref` type and `Computed` type for dynamic changes
### ⚡ Performance Improvements
- Optimize the scroll bar components of `modal` and `drawer`
- table: remove the `isTreeTable` attribute
- Import `less` files globally. No need to manually re-introduce the component
### 🎫 Chores
- Upgrade `ant-design-vue` to `2.0.0-rc.7`
- Upgrade `vue` to `3.0.5`
### 🐛 Bug Fixes
- Fixed the issue of missing scroll bars in mixed mode
- Fix the invalid configuration of environment variables and the logo address problem in history mode
- Fix the calculation error of width and height caused by switching page of chart library
- Fixed the issue of multi-language configuration `Locale.show` causing the configuration not to take effect
- Fix routing type error
- Fix the problem of invalid permissions when the menu is split
- Iframe loads early when closing multi-tab pages
- Fix known issues with `modal` and `drawer`
- Fix the problem of mixing mode adaptation in the left menu
## 2.0.0-rc.14 (2020-12-15)
### ✨ Features
-Remove the left menu search, add the top menu search function -Layout mobile terminal adaptation. Business page is not adapted -axios join the joinTime configuration. Control whether the response includes a timestamp
### ⚡ Performance Improvements
-Import components asynchronously -Optimize the overall structure -Replace the default scroll bar of the menu as a scroll component -Menu performance optimization
### 🎫 Chores
-Return to the top to adjust the style to avoid covering other elements -Upgrade `ant-design-vue` to `2.0.0-rc.5` -Refresh button layout adjustment -`route.meta` removes the `externalLink` attribute
### ✨ Refactor
-`openModal` and `openDrawer` third parameter `openOnSet` is set to true by default
### 🐛 Bug Fixes
-Fixed an issue where multi-level routing cache caused components to render multiple times -Fixed the problem of disappearing after switching the map chart -Fix the issue of successful login and notify disappearing -Modify the names of `VirtualScroll` and `ImportExcel` components as `VScroll` and `ImpExcel` to temporarily solve the memory overflow of components containing keywords in the vue template -Fix axios case problem -Fix button style problem -Fix the problem of menu split mode -Fix the issue of invalid data transmission when using emits in `Modal` and `Drawer` components -Fix the known problems of the menu -Fix the issue of upload component api failure -Fix the problem of invalid menu permission filtering
## 2.0.0-rc.13 (2020-12-10)
## (Breaking changes) Breaking changes
-Route reconstruction, the previous format is no longer supported. Change to support the original default structure of vue-router, the specific format can be changed by referring to the example. Realize multi-level route caching, and no longer convert routes to level 2. -Refactor breadcrumbs and use antd's breadcrumbs component. The previous component has been deleted
### ✨ Features
-Restore the default loading of antdv, refactor the `Loading` component, and add `useLoading` and `v-loading` instructions. And add examples -i18n supports vscode `i18n-ally` plugin -New examples of increased routing cache -Packaged code split (experimental) -Extract upload address to global variable, package can be dynamically configured
### ✨ Refactor
-Tree component ref function call to delete `$` -Reconstruction and beautification of the lock screen interface, delete unnecessary background pictures
### ⚡ Performance Improvements
-Page switching loading logic modification. Regardless of whether the loaded page is closed or not, loading will not be displayed when opened again (pages that have been opened are opened again faster, and loading is not required, and the logic of the top progress bar is the same), and it will be restored after refreshing.
### 🎫 Chores
-First screen loading modification -Upgrade `vue` to `3.0.4` -Upgrade `ant-design-vue` to `2.0.0-rc.3` -Re-introduction of `vueuse` -Remove the `afterCloseLoading` attribute in route meta -Documentation update
### 🐛 Bug Fixes
-Fix form i18n error -Fix the inconsistent size of menu icons -Fix the calculation of the top menu width -Fix table tabSetting problem -Repair file upload and delete invalidation -Fix the problem of editing and saving table rows
## 2.0.0-rc.12 (2020-11-30)
## (破坏性更新) Breaking changes
- The ClickOutSide component import method is changed from `import ClickOutSide from'/@/components/ClickOutSide/index.vue'` to `import {ClickOutSide} from'/@/components/ClickOutSide'`
- Button component import method changed from `import Button from'/@/components/Button/index.vue'` to `import {Button} from'/@/components/Button'`
- StrengthMeter component import method is changed from `import StrengthMeter from'/@/components/StrengthMeter'` to `import {StrengthMeter} from'/@/components/StrengthMeter'`
- In addition to the examples, the global internationalization function is added, supporting Chinese and English
### ✨ Refactor
- Refactor the overall layout. Change the code implementation method. Code is more streamlined
- Configuration item reconstruction
- Remove messageSetting configuration
- BasicTitle component `showSpan`=> `span`
### ✨ Features
- The cache can be configured to encrypt or not, and Aes encryption is enabled in the production environment by default
- Add tab drag and drop sort
- Added LayoutFooter. The default display, can be closed in the configuration
### ⚡ Performance Improvements
- Optimized the problem that the full screen animation of `Modal` component is not smooth
### 🐛 Bug Fixes
- tree: Fix the problem that the text exceeds the operation button
- useRedo: Fix the problem of missing parameters when refreshing the page through useRedo
- form: Fix the problem that the form verification is first set in the verification and the console error message
- `modal`&`drawer` fix the problem of component passing array parameters
- form: fix `updateSchema` does not take effect when the value contains `[]`
- table: Fix the display problem of the table `TableAction` icon
- table: fix table column settings not displayed by `setColumns` setting
### 🎫 Chores
- Update antdv to `2.0.0-rc.2`
- Update vue to `3.0.3`
- Update vite to `1.0.0.rc13`
- Temporarily delete `@vueuse/core`. After it is stable, it will be integrated. It is currently not stable.
## 2.0.0-rc.11 (2020-11-18)
### ✨ Features
- Added base64 file stream download
- Optimize upload components and examples
- New editable row example
- Add a personal page
- New form page
- Add details page
- Integrate upload components into form by default
### 🎫 Chores
- Update antdv to `2.0.0-rc.1` (temporarily restore to beta15, rc1 menu freezes too seriously.)
- Add some notes
### ✨ Refactor
- Removed `receiveDrawerDataRef` and `transferDrawerData` properties of `useModal` and `useDrawer`
- `openModal` and `openDrawer` corresponding to `useModal` and `useDrawer` extend the third parameter. Used to open the trigger callback again
### 🐛 Bug Fixes
- Repair form inputNumber verification error
- Fix the error of setting the default value of the form
- Fix the problem of occupying position when the menu collapse button is hidden
- Fix the form baseColProps does not take effect
## 2.0.0-rc.10 (2020-11-13)
### ✨ Refactor
- Refactor hook, introduce `@vueuse`, delete existing `hook`, optimize existing hook
- ʻUseEvent` renamed ->ʻuseEventListener`
- Delete the four types `SelectOptGroup`, `SelectOption`, `Transfer`, and `Radio` from the form `ComponentType`. Modify the `RadioButtonGroup` component
### ✨ Features
- `componentsProps` support function type of form item
- Added tag display to the menu, supporting 4 types of colors and dot display
- New menu and top bar color selection color matching
- Add sample result page
- New file download example
### ⚡ Wip
- Upload components (not completed, testing...)
### ⚡ Performance Improvements
- Optimize settingDrawer code
- Optimize the switching speed of multiple tabs
- Add form customization and dynamic capabilities
### 🐛 Bug Fixes
- Fixed multiple rich text editors showing only one
- Fixed the problem of not redirecting to the original page after logging in again after expiration
- Fix window system dynamic introduction error
- Fix page type error
- Fixed an error when the form switch and checkBox were used separately
## 2.0.0-rc.9 (2020-11-9)
### ✨ Features
- Menu trigger can select location
- Add an example of rich text embedded form
- Added `required` attribute to form component schema. Simplified configuration
- The second parameter of openModal and openDrawer can be passed internally instead of `transferModalData`
- Routes with parameters can be cached
### ✨ Refactor
- Refactored the logic of the menu generated by the background
- Route Module structural transformation
### ⚡ Performance Improvements
- Menu performance continues to be optimized and smoother
- Optimize lazy loading components and examples
- layout style fine-tuning
### 🎫 Chores
- Delete menu background image
- Update the version of ʻant-design-vue`to`beta15`
- Update `vite` version to `rc.9`
- Exception page adjustment
- `BasicTitle` Color blocks are not displayed by default
### 🐛 Bug Fixes
- Fix table type problem after upgrade
- Fix the problem that the last submenu continues to be displayed when the menu is divided and there is no data in the left menu
- Fix the issue of ʻuseMessage` type
- Fix the problem that the form item setting `disabled` does not take effect
- Fix that ʻuseECharts`can't adapt when`resize`, and an error is reported
- Fix that `resize` is not deleted after ʻuseWatermark` is cleared
- Fix form verification problem
- Fixed the problem that the multi-level header configuration does not take effect
## 2.0.0-rc.8 (2020-11-2)
### ✨ Features
- Global loading add text
- Right-click menu supports multiple levels
### 🎫 Chores
- Login cache changed from sessionStorage to LocalStorage
### ⚡ Performance Improvements
- Update ʻant-design-vue`to`beta.12`
- Layout interface layout style adjustment
- Optimize lazy loading components
- Optimize table rendering performance
- Add animation to form folding search icon
- routeModule can ignore the layout configuration. Convenient to configure the first-level menu
### 🐛 Bug Fixes
- Fix table type error
- Fix bug in mock paging tool
- Fix the folding problem of the search form when the table is opened
- Fix the problem of fixed column style when the table size is samll
- Fixed the error report when closing multiple tabs
- Fix message type error
## 2.0.0-rc.7 (2020-10-31)
### ✨ Features
- The form component now supports directly passing in the model to directly perform the set operation, please refer to **Component -> Popup Extension -> Open Popup and Pass Data**
- The useModalInner of modal now supports the incoming callback function to receive the value passed in from the external `transferModalData`
- Used to handle the setting values of components such as forms when the pop-up window is opened. Refer to **Component -> Popup Extension -> Open Popup and Pass Data**
- The value of `receiveModalDataRef` is temporarily reserved. Use as little as possible. It may be deleted later.
- The drawers useDrawerInner now supports the incoming callback function to receive the value passed in from the external `transferModalData`,
- Used to handle the setting values of components such as forms for opening the drawer Refer to **Component->Drawer Extension->Open the drawer and transfer data**
- The value of `receiveModalDataRef` is temporarily reserved. Use as little as possible. It may be deleted later.
### ✨ Refactor
- Form code optimization and reconstruction
### ⚡ Performance Improvements
- Modal slot can be overwritten
- Optimize table embedding height calculation problem
### 🎫 Chores
- Add some notes
- pwa icon supplement
- Type adjustment
- Upgrade ʻant-design-vue`to`beta.11`, and modify the known issues brought about, and some issues will be resolved after discovery
### 🐛 Bug Fixes
- Fix the timeout error of local proxy post interface to https address
- Fix modal full screen height calculation problem when footer is not displayed
- Fix the error that the verification information is not deleted when the form is reset
- Fix the style problem of the split mode of the top menu
- Fix the invalidation of table expansion icon animation
## 2.0.0-rc.6 (2020-10-28)
### ✨ Features
- Added `pwa` function, which can be turned on in `.env.production`
- Button component extends `preIcon` and `postIcon` attributes to add icons before and after the text
- Restore the breadcrumb display icon function
### 🎫 Chores
- Upgrade vite version to `v1.0.0.rc8`
- vite.config.ts internal plugins extraction
- Build directory structure adjustment
- Dependency update
- Documentation update
- Modify the default route switching animation
### ⚡ Performance Improvements
- `setTitle` logic adjustment
- The sessionStorage and LocalStorage cache settings used by the system expire in `7` days by default
### ✨ Refactor
- Separate `vite-plugin-html` and modify the logic of inserting html
### 🐛 Bug Fixes
- Fix the warning problem of multiple registration components during hot update
- Fix the login tab page appears after login
- Fix the problem of routing switch parameter disappearance
- Fix the useMessage icon style problem
## # 2.0.0-rc.5 (2020-10-26)
### ✨ Features
- Update component documentation
- Breadcrumbs support display icon
- Added tinymce rich text component
- Add submitOnReset to the form to control whether to re-initiate the request when reset
- Added `sortFn` to the table to support custom sorting
- Added animation components and examples
- Added lazy loading/delay loading components and examples
### ✨ Refactor
- The detailType of the Drawer component is changed to isDetail
### 🎫 Chores
- Remove the optional chain syntax in the code
- Form reset logic modification
- Turn off multi-tab page tabs animation
- Upgrade vite version to `v1.0.0.rc6`
- Delete Chinese path warning. rc6 has been fixed
### 🐛 Bug Fixes
- Fix the automatic height and display footer display problems of drawer components
- Reset to default value after repairing form query
- Fix the problem of displaying the collapsed menu when there are no child nodes
- Fix the problem of breadcrumb display style
- Fixed the problem of multiple open drag and drop failure when destroyOnClose=true in modal
- Fixed multiple action columns in the table
# 2.0.0-rc.4 (2020-10-21)
### ✨ Features
- New configuration toolbar for tables
- New message notification module
### 🎫 Chores
- The table does not show borders by default
- Dependency update
- Update vue to `v3.0.2`
- Interface style fine-tuning
### ⚡ Performance Improvements
- Optimize the size of the first screen
- Optimize the TableAction component
- Reduce the folding width of the menu
### 🐛 Bug Fixes
- Fix the problem of the menu name when the first level menu is folded
- Fix the problem that the preview command is not packaged
- Fix the problem that the form actionColOptions parameter does not take effect
- Fix the problem that the loading does not take effect when refreshing the form
# 2.0.0-rc.3 (2020-10-19)
### ✨ Features
- Added excel component and excel/xml/csv/html export example
- Added excel import example
- Added global error handling
- Added markdown components and examples
- The menu name can be displayed when adding a new folding menu
### Docs
- add project doc
### 🎫 Chores
- update deps
### 🐛 Bug Fixes
- Fix the adaptive problem of the top menu
- Fix window system packaging error
# 2.0.0-rc.2 (2020-10-17)
### ✨ Features
- Package can be configured to output `gizp`
- Package can be configured to delete `console`
- Routes and menus do not need to be imported manually, they are imported automatically
### 🎫 Chores
- Upgrade vue to `3.0.1`
- Change `vite` version to daily build version
### 🐛 Bug Fixes
- Fix menu error
- Fix the problem of table adaptive height
- Fix the issue of error reporting when executing script in `window system`
- Fix the problem of folding components
### ⚡ Performance Improvements
- Remove menu to minimize background
- Prevent page refresh and re-render menu
- Some other details are optimized
# 2.0.0-rc.1 (2020-10-14)
### ✨ Features
- Add a tab with parameters
### ⚡ Performance Improvements
- Optimized menu folding
- Page details optimization
- Compress html after packaging
- Functional reconstruction of preview components and right-click menu
- The preview component operation column is centered
### 🎫 Chores
- update deps
- Added `README.en-US.md`
- Added `CHANGELOG.en-US.md`
### 🐛 Bug Fixes
- Fix page refresh and jump to landing page
# 2.0.0-beta.7 (2020-10-12)
### ⚡ Performance Improvements
- The existing tab switching no longer displays animation and progress bar
### ✨ Features
- Added `CountTo` component and sample demo
- Added `closeMessageOnSwitch` and `removeAllHttpPending` to the project configuration file
- The production environment has a separate configuration file for dynamic configuration project configuration
- Added ʻuseEcharts` and ʻuseApexChart` to facilitate the use of charts, and added related demos
- New workbench interface
- New analysis page interface
### 🎫 Chores
- Update dependencies
### 🐛 Bug Fixes
- Fix routing switch, tab inactive problem
# 2.0.0-beta.6 (2020-10-11)
### 💄 Styles
- Menu style adjustment
### 🐛 Bug Fixes
- Fix the problem that editable forms cannot be entered
- Repair packaging errors, no proxy is required in the production environment
### ⚡ Performance Improvements
- Optimize the switching speed of multi-tab pages
- First screen loading animation
# 2.0.0-beta.5 (2020-10-10)
### ♻ Code Refactoring
- Delete `tailwind css`
### ⚡ Performance Improvements
- Optimize page switching speed
### 🎫 Chores
- Add `.vscode` and `.github` configuration
- Change menu icon
- Added `.env` configuration file
- Update readme.md
### 🐛 Bug Fixes
- Fix the failure of `Tree` component check event
# 2.0.0-beta.4 (2020-10-08)
### 🎫 Chores
- Remove redundant dependencies
### 🐛 Bug Fixes
- Fix page refresh blank
- Fix the invalid table style in the production environment
# 2.0.0-beta.3 (2020-10-07)
### ✨ Features
- Added ʻopenNProgress` to the project configuration file to control whether to open the top control bar
- Add `Table` component and demo
### 🎫 Chores
- Add ` github workflows`
# 2.0.0-beta.2 (2020-10-07)
### ✨ Features
- Added image preview component
### 🔧 Continuous Integration
- Add githubAction script
# 2.0.0-beta.1(2020-09-30)
### 🎫 Chores
- Migrate some code from 1.0
- Add README.md description file
### 🐛 Bug Fixes
- Fix the problem of form, animation and packaging failure

File diff suppressed because it is too large Load Diff

View File

@@ -1,898 +0,0 @@
## 2.1.1 (2021-03-26)
### ✨ Features
- 路由新增 hideChildrenInMenu 配置。用于隐藏子菜单
- 树形表格内置展开/折叠全部函数
### ✨ Refactor
- 重构路由多层模式,解决嵌套 keepalive 执行多次问题
### 🐛 Bug Fixes
- 确保 CountDownInput 组件重置清空值
- 修复分割模式下在小屏幕中显示问题
- 修复表格高度计算问题
- 修复后台路由获取不到组件问题
- 修复 Modal 组件 loadingTip 配置不生效
- 修复后台权限指令不生效
- 确保 progress 进度条正确关闭
- 修复表格勾选列配置失效问题
- 确保一级菜单可以被隐藏
- 确保表单隐藏字段校验正常
### 🎫 Chores
- 移除 ls-lint
## 2.1.0 (2021-03-15)
### ✨ Features
- 图标选择器新增 svg 模式
- 新增时间组件
- 新增高德/百度/谷歌地图示例
### ✨ Refactor
- 重构项目以解决循环依赖项导致的热更新问题
- 移除 vueHelper/useClickoutside,使用@vueuse/core 代替
### 🐛 Bug Fixes
- 确保 `table action` 的值被正确更新
- 修复页面切换的动画无法关闭
- 修复`PageWrapper`title 不显示
- 修复表格已知问题
- 修复 BasicTree 组件不能自定义 title 问题
- 修复主题切换后按钮样式问题
## 2.0.3 (2021-03-07)
### ✨ Features
- `BasicTree` 新增`clickRowToExpand`,用于单击树节点展开
- 新增 SvgIcon 插件及示例
- 账号管理界面增加左侧部门树·
### ⚡ Performance Improvements
- 表格关闭分页时不再携带分页参数
- 登录页监听回车事件进行登录
- 当表格设置自适应大小时,根据屏幕来铺满了高度.
- Tree 滚动条优化
- 优化本地开发加载速度
### 🐛 Bug Fixes
- 修复`Description`已知问题
- 修复`BasicForm`已知问题
- 修复`BasicTree`下 ActionItem 的 show 属性逻辑问题
- 修复树组件 demo 示例样式错误
- 修复账号管理新增未清空旧数据
- form 组件应允许 setFieldsValue 方法值为 null 或者 undefined
- 确保单级面包屑正确跳转
- 确保 Form 组件不校验隐藏的表单项
## 2.0.2 (2021-03-04)
### ✨ Refactor
- 重构多语言模块,支持懒加载及远程加载
### ✨ Features
- axios 支持 form-data 格式请求
- 新增图标选择器组件(支持本地和在线方式)
- 新增 WebSocket 示例和服务脚本
- Tree 组件新增 `renderIcon` 属性用于控制层级图标显示
- Tree->actionItem 新增 show 属性,用于动态控制按钮显示
- Tree 新增工具栏/title/搜索功能
- 新增部门管理/修改密码/账号管理/角色管理/菜单管理示例界面
### ⚡ Performance Improvements
- 登录界面动画优化
- 修复 github 仓库体积过大问题.
- 默认隐藏表格全屏按钮
- `crypto-es`改为`crypto-js`,减小打包体积
- `types`目录移动到根目录,兼容其他目录全局类型
### 🐛 Bug Fixes
- 修复验证码组件警告问题
- 修复表格不能正确的获取选中行
- 修复全屏状态下 modal 高度计算错误
- 修复部分表格样式问题
- 修复树形表格 `indentSize`设置失效
## 2.0.1 (2021-02-21)
### ✨ Refactor
- 登录页重构,新增注册页面/重置密码页面/手机登录/二维码登录
### ✨ Features
- 新增 `settingButtonPosition`配置项,用于配置`设置`按钮位置
- `modal`可以通过双击头部切换全屏
- 新增`CountDownInput`组件
### ⚡ Performance Improvements
- 优化可编辑居中样式及下拉框宽度过短
- 表格新增编辑时`edit-change`事件监听
### 🐛 Bug Fixes
- 修复图片预览样式错误
- 修复图标样式问题
- 修复可编辑表格下拉回显问题
## 2.0.0 (2021-02-18)
## (破坏性更新) Breaking changes
- `echarts` 升级到 5.0,并且进行按需引入(只需使用 `useECharts` 即可).
### ✨ Refactor
- 移除`global.less`,`mixin.less`,`design/helper`,由`windicss`代替,有用到的需要修改对应的样式
### ✨ Features
- useModal 新增返回值函数 `redoModalHeight`,用于在 modal 内为动态内容时刷新 modal 高度
- 升级 husky 到 5.0
- 新增 `brotli`|`gzip`压缩及相关测试命令
- 重新引入 `windicss` (与`tailwind`一样).在速度上更快
### ⚡ Performance Improvements
- 调整获取用户信息接口返回值为数组格式
- 将 error-log 列表固定为系统路由
### 🐛 Bug Fixes
- 修复 Upload 组件 maxNumber 失效问题
- 修复打包 sourcemap 报错
- 修复代码 debugger 位置显示错误
- 修复 mock 插件 post 请求错误问题
- 修复部分主题颜色值错误
- 修复表格在可编辑行状态回车确认
### 🎫 Chores
- 文档更新
- 升级 ant-design-vue 到 `2.0.0`
- 升级 vite 到 `2.0.0`
## 2.0.0-rc.18 (2021-02-05)
### ✨ Features
- `ApiSelect`新增 `numberToString`属性,用于将 value 为`number`的值全部转化为`string`
- 新增主题色切换
- 打包图片压缩
### ⚡ Performance Improvements
当不使用 mock 时,将 `mock.js` 移出打包文件
### 🐛 Bug Fixes
- 修复 modal 高度计算错误
- 修复菜单折叠状态下点击标签页弹出菜单
- 修复 form 表单初始化值为 0 问题
- 修复表格换行问题
- 修复菜单外链不跳转
- 修复菜单顶部显示问题
- 修复`modifyVars`配置失效问题
## 2.0.0-rc.17 (2021-01-18)
### ✨ Refactor
- 新增 `SimpleMenu`组件替代左侧菜单组件(顶部菜单没有替换,功能尽量做到简单不卡)。解决菜单卡顿问题。
- `ant-design-vue`组件不再全局注册。以便于更好配合 css 按需引入。如果需要全局注册,需要自己加
### ✨ Features
- `css` 按需引入
### 🐛 Bug Fixes
- 修复 `TableAction`图标问题
- 修复菜单折叠按钮丢失问题
- 修复菜单相关问题
- 修复 moment 多语言问题
## 2.0.0-rc.16 (2021-01-12)
### ✨ Refactor
- 独立组件配置到 `/@/settings/componentsSetting`
- `colorSetting``designSetting`现在合并为`designSetting`
- `ant-design-vue`组件注册移动到`components/registerComponent`
- 移除 `setup` 文件夹
- 升级到`vite2`
- 图片预览改为`Image`组件实现,暂时移除函数式使用方式
### ✨ Features
- 新增`mixSideTrigger`配置。用于配置左侧混合模式菜单打开方式。可选`hover`,默认`click`
- 新增`mixSideFixed`配置。用于固定左侧混合模式菜单
- modal 组件新增`height``min-height`属性
- 新增`PageWrapper`组件。并应用于示例页面
- 新增标签页折叠功能
- 兼容旧版浏览器
- tinymce 新增图片上传
### 🐛 Bug Fixes
- 修复表格列配置已知问题
- 恢复 table 的`isTreeTable`属性
- 修复表格内存溢出问题
- 修复`layout` 收缩展开功能在分割模式下失效
- 修复 modal 高度计算错误
- 修复文件上传错误
- 修复表格已知问题
### 🎫 Chores
- 文档更新
## 2.0.0-rc.15 (2020-12-31)
### ✨ 表格破坏性更新
- 重构了可编辑单元格及可编辑行。具体看示例。写法已改变。针对可编辑表格。
- 表格编辑支持表单校验
- 在表格列配置增加了以下配置
```bash
{
# 默认是否显示列。不显示的可以在列配置打开
defaultHidden?: boolean;
# 列头右侧帮助文本
helpMessage?: string | string[];
# 自定义格式化 单元格内容。 支持时间/枚举自动转化
format?: CellFormat;
# Editable
# 是否是可编辑单元格
edit?: boolean;
# 是否是可编辑行
editRow?: boolean;
# 编辑状态。
editable?: boolean;
# 编辑组件
editComponent?: ComponentType;
# 所对应组件的参数
editComponentProps?: Recordable;
# 校验
editRule?: boolean | ((text: string, record: Recordable) => Promise<string>);
# 值枚举转化
editValueMap?: (value: any) => string;
# 触发编辑正航
record.onEditRow?: () => void;
}
```
### ✨ 表格重构
- 新增`clickToRowSelect`属性。用于控制点击行是否选中勾选框
- 监听行点击事件
- 表格列配置按钮增加 列拖拽,列固定功能。
- 表格列配置新增`defaultHidden` 属性。用于默认隐藏。可在表格列配置勾选显示
- 更强大的列配置
- useTable:支持动态改变参数。可以传入`Ref`类型与`Computed`类型进行动态更改
- useTable:新增返回 `getForm`函数。可以用于操作表格内的表单
- 修复表格已知的问题
### ✨ Features
- 新增 `v-ripple`水波纹指令
- 新增左侧菜单混合模式
- 新增 markdown 嵌入表单内示例
- 新增主框架外页面示例
- `route.meta` 新增`currentActiveMenu`,`hideTab`,`hideMenu`参数 用于控制详情页面包屑级菜单显示隐藏。
- 新增面包屑导航示例
- form: 新增`suffix`属性,用于配置后缀内容
- form: 新增远程下拉`ApiSelect`及示例
- form: 新增`autoFocusFirstItem`配置。用于配置是否聚焦表单第一个输入框
- useForm: 支持动态改变参数。可以传入`Ref`类型与`Computed`类型进行动态更改
### ⚡ Performance Improvements
- 优化`modal``drawer`滚动条组件
- table: 移除 `isTreeTable`属性
- 全局引入`less`文件。无需手动在组件再次引入
### 🎫 Chores
- 升级`ant-design-vue``2.0.0-rc.7`
- 升级`vue``3.0.5`
### 🐛 Bug Fixes
- 修复混合模式下滚动条丢失问题
- 修复环境变量配置失效以及 history 模式下 logo 地址问题
- 修复图表库切换页面导致宽高计算错误
- 修复多语言配置 `Locale.show`导致配置不生效
- 修复路由类型错误
- 修复菜单分割时权限失效问题
- 关闭多标签页时 iframe 提前加载
- 修复`modal``drawer`已知问题
- 修复左侧菜单混合模式适配问题
## 2.0.0-rc.14 (2020-12-15)
### ✨ Features
- 移除左侧菜单搜索,新增顶部菜单搜索功能
- layout 移动端适配。业务页面未适配
- axios 加入 joinTime 配置。控制响应是否加入时间戳
### ⚡ Performance Improvements
- 异步引入组件
- 优化整体结构
- 替换菜单默认滚动条为滚动组件
- 菜单性能优化
### 🎫 Chores
- 返回顶部样式调整,避免遮住其他元素
- 升级`ant-design-vue``2.0.0-rc.5`
- 刷新按钮布局调整
- `route.meta` 移除 `externalLink` 属性
### ✨ Refactor
- `openModal``openDrawer`第三个参数`openOnSet`默认设置为 true
### 🐛 Bug Fixes
- 修复多级路由缓存导致组件渲染多次的问题
- 修复地图图表切换后消失问题
- 修复登录成功 notify 消失问题
- 修改 `VirtualScroll``ImportExcel`组件名为`VScroll``ImpExcel`,暂时解决含有关键字的组件在 vue 模版内使用内存溢出
- 修复 axios 大小写问题
- 修复按钮样式问题
- 修复菜单分割模式问题
- 修复 `Modal``Drawer`组件在使用 emits 数据传递失效问题
- 修复菜单已知问题
- 修复上传组件 api 失效问题
- 修复菜单权限过滤失效问题
## 2.0.0-rc.13 (2020-12-10)
## (破坏性更新) Breaking changes
- 路由重构, 不再支持以前的格式。改为支持 vue-router 最初的默认结构,具体格式可以参考示例更改。实现多级路由缓存,不再将路由转化为 2 级。
- 重构面包屑,使用 antd 的面包屑组件。之前的组件已删除
### ✨ Features
- 还原 antdv 默认 loading重构 `Loading` 组件,增加`useLoading``v-loading`指令。并增加示例
- i18n 支持 vscode `i18n-ally`插件
- 新增多级路由缓存示例
- 打包代码拆分(试验)
- 提取上传地址到全局变量,打包可以动态配置
### ✨ Refactor
- tree 组件 ref 函数调用删除 `$`
- 锁屏界面重构美化,删除不必要的背景图片
### ⚡ Performance Improvements
- 页面切换 loading 逻辑修改。对于已经加载过的页面不管有没有关闭,再次打开不会在显示 loading(已经打开过的页面再次打开速度比较快,可以不需要 loading,同理顶部进度条逻辑也一样),刷新后恢复。
### 🎫 Chores
- 首屏 loading 修改
- 升级`vue``3.0.4`
- 升级`ant-design-vue``2.0.0-rc.3`
- 重新引入`vueuse`
- 移除 route meta 内的`afterCloseLoading`属性
- 文档更新
### 🐛 Bug Fixes
- 修复表格 i18n 错误
- 修复菜单图标大小不一致
- 修复顶部菜单宽度计算问题
- 修复表格 tabSetting 问题
- 修复文件上传删除失效
- 修复表格行编辑保存错误问题
## 2.0.0-rc.12 (2020-11-30)
## (破坏性更新) Breaking changes
- ClickOutSide 组件引入方式由 `import ClickOutSide from '/@/components/ClickOutSide/index.vue'`变更为`import { ClickOutSide } from '/@/components/ClickOutSide'`
- Button 组件引入方式由 `import Button from '/@/components/Button/index.vue'`变更为`import { Button } from '/@/components/Button'`
- StrengthMeter 组件引入方式由 `import StrengthMeter from '/@/components/StrengthMeter'`变更为`import { StrengthMeter } from '/@/components/StrengthMeter'`
- 除示例外加入全局国际化功能,支持中文与英文
### ✨ Refactor
- 重构整体 layout。更改代码实现方式。代码更精简
- 配置项重构
- 移除 messageSetting 配置
- BasicTitle 组件 `showSpan`=> `span`
### ✨ Features
- 缓存可以配置是否加密,默认生产环境开启 Aes 加密
- 新增标签页拖拽排序
- 新增 LayoutFooter.默认显示,可以在配置内关闭
### ⚡ Performance Improvements
- 优化`Modal`组件全屏动画不流畅问题
### 🐛 Bug Fixes
- tree: 修复文本超出挡住操作按钮问题
- useRedo: 修复通过 useRedo 刷新页面参数丢失问题
- form: 修复表单校验先设置在校验及控制台错误信息问题
- `modal`&`drawer` 修复组件传递数组参数问题
- form: 修复`updateSchema`赋值含有`[]`时不生效
- table: 修复表格 `TableAction` 图标显示问题
- table: 修复表格列设置通过`setColumns`设置不显示
### 🎫 Chores
- 更新 antdv 到`2.0.0-rc.2`
- 更新 vue 到`3.0.3`
- 更新 vite 到`1.0.0.rc13`
- 暂时删除 `@vueuse/core`.等稳定后在集成。目前不太稳定。
## 2.0.0-rc.11 (2020-11-18)
### ✨ Features
- 新增 base64 文件流下载
- 优化上传组件及示例
- 新增可编辑行示例
- 新增个人页
- 新增表单页
- 新增详情页
- 将上传组件默认集成到 form
### 🎫 Chores
- 更新 antdv 到`2.0.0-rc.1`(暂时还原到 beta15,rc1 菜单卡顿太严重.
- 添加部分注释
### ✨ Refactor
- 移除`useModal``useDrawer``receiveDrawerDataRef``transferDrawerData`属性
- `useModal``useDrawer`对应的`openModal``openDrawer`扩展第三个参数。用于再次打开触发回调
### 🐛 Bug Fixes
- 修复表单 inputNumber 校验错误
- 修复表单默认值设置错误
- 修复菜单折叠按钮隐藏时占位问题
- 修复表单 baseColProps 不生效
## 2.0.0-rc.10 (2020-11-13)
### ✨ Refactor
- 重构 hook,引入 `@vueuse`,删除其中已有的`hook`,优化现有的 hook
- `useEvent` 更名->`useEventListener`
- 表单`ComponentType`删除 `SelectOptGroup`,`SelectOption`,`Transfer`,`Radio`,四个类型。修改`RadioButtonGroup`组件
### ✨ Features
- 表单项的`componentsProps`支持函数类型
- 菜单新增 tag 显示,支持 4 中类型颜色及 dot 圆点显示
- 新增菜单及顶栏颜色选择配色
- 增加示例结果页
- 新增文件下载示例
### ⚡ Wip
- 上传组件(未完成,测试中...)
### ⚡ Performance Improvements
- 优化 settingDrawer 代码
- 优化多标签页切换速度
- 增加表单自定义及动态能力
### 🐛 Bug Fixes
- 修复多个富文本编辑器只显示一个
- 修复登录过期后重新登录未跳转原来页面的
- 修复 window 系统动态引入错误
- 修复页面类型错误
- 修复表单 switch 和 checkBox 单独使用报错
## 2.0.0-rc.9 (2020-11-9)
### ✨ Features
- 菜单 trigger 可以选择位置
- 增加富文本嵌入表单的示例
- 表单组件 schema 增加 `required`属性。简化配置
- openModal 和 openDrawer 第二个参数可以代替`transferModalData`传参到内部
- 带参路由可以被缓存
### ✨ Refactor
- 重构由后台生成菜单的逻辑
- Route Module 结构改造
### ⚡ Performance Improvements
- 菜单性能继续优化,更流畅
- 优化懒加载组件及示例
- layout 样式微调
### 🎫 Chores
- 删除菜单背景图
- 更新`ant-design-vue`版本为`beta15`
- 更新`vite`版本为`rc.9`
- 异常页调整
- `BasicTitle` 色块默认不显示
### 🐛 Bug Fixes
- 修复升级之后 table 类型问题
- 修复分割菜单且左侧菜单没有数据时候,继续展示上一次子菜单的问题
- 修复`useMessage`类型问题
- 修复表单项设置`disabled`不生效问题
- 修复`useECharts``resize`时不能自适应,报错
- 修复`useWatermark`在清空后`resize`未删除
- 修复表单校验问题
- 修复多级表头配置不生效问题
## 2.0.0-rc.8 (2020-11-2)
### ✨ Features
- 全局 loading 添加文本
- 右键菜单支持多级
### 🎫 Chores
- 登录缓存从 sessionStorage 改为 LocalStorage
### ⚡ Performance Improvements
- 更新`ant-design-vue``beta.12`
- Layout 界面布局样式调整
- 优化懒加载组件
- 优化表格渲染性能
- 表单折叠搜索添图标添加动画
- routeModule 可以忽略 layout 配置不写。方便配置一级菜单
### 🐛 Bug Fixes
- 修复表格类型错误
- 修复 mock 分页工具错误
- 修复表格开启搜索表单折叠问题
- 修复表格 size 为 samll 时候fixed 列样式问题
- 修复多标签页关闭报错问题
- 修复 message 类型错误
## 2.0.0-rc.7 (2020-10-31)
### ✨ Features
- 表单组件现在支持直接传入 model 直接进行 set 操作,参考**组件->弹窗扩展->打开弹窗并传递数据**
- modal 的 useModalInner 现在支持传入回调函数,用于接收外部`transferModalData`传进来的值,
- 用于处理打开弹窗对表单等组件的设置值。参考**组件->弹窗扩展->打开弹窗并传递数据**
- `receiveModalDataRef`这个值暂时保留。尽量少用。后续可能会删除。
- drawer 的 useDrawerInner 现在支持传入回调函数,用于接收外部`transferModalData`传进来的值,
- 用于处理打开抽屉对表单等组件的设置值。参考**组件->抽屉扩展->打开抽屉并传递数据**
- `receiveModalDataRef`这个值暂时保留。尽量少用。后续可能会删除。
### ✨ Refactor
- 表单代码优化重构
### ⚡ Performance Improvements
- Modal slot 可以覆盖
- 优化表格嵌入高度计算问题
### 🎫 Chores
- 添加部分注释
- pwa 图标补充
- types 类型调整
- 升级`ant-design-vue``beta.11`,并修改带来的已知问题,部分问题发现后在解决
### 🐛 Bug Fixes
- 修复本地代理 post 接口到 https 地址超时错误
- 修复 modal 在不显示 footer 的时候全屏高度计算问题
- 修复表单重置未删除校验信息错误
- 修复顶部菜单分割模式样式问题
- 修复表格展开图标动画失效
## 2.0.0-rc.6 (2020-10-28)
### ✨ Features
- 新增`pwa`功能,可在`.env.production`开启
- Button 组件扩展 `preIcon``postIcon`属性用于在文本前后添加图标
- 恢复面包屑显示图标功能
### 🎫 Chores
- 升级 vite 版本为`v1.0.0.rc8`
- vite.config.ts 内部 plugins 抽取
- build 目录结构调整
- 依赖更新
- 文档更新
- 修改默认路由切换动画
### ⚡ Performance Improvements
- `setTitle`逻辑调整
- 将系统用到的 sessionStorage 及 LocalStorage 缓存设置默认 `7` 天过期
### ✨ Refactor
- 独立出`vite-plugin-html`,并修改相关插入 html 的逻辑
### 🐛 Bug Fixes
- 修复热更新时多次注册组件警告问题
- 修复登录后出现登录标签页
- 修复路由切换参数消失问题
- 修复 useMessage 图标样式问题
## 2.0.0-rc.5 (2020-10-26)
### ✨ Features
- 更新组件文档
- 面包屑支持显示图标
- 新增 tinymce 富文本组件
- 表单新增 submitOnReset 控制是否在重置时重新发起请求
- 表格新增`sortFn`支持自定义排序
- 新增动画组件及示例
- 新增懒加载/延时加载组件及示例
### ✨ Refactor
- Drawer 组件的 detailType 修改为 isDetail
### 🎫 Chores
- 删除代码内的可选链语法
- 表单重置逻辑修改
- 关闭多标签页 tabs 动画
- 升级 vite 版本为`v1.0.0.rc6`
- 删除中文路径警告。rc6 已修复
### 🐛 Bug Fixes
- 修复抽屉组件自动高度及显示 footer 显示问题
- 修复表单查询后重置回默认值
- 修复菜单没有子节点时显示折叠的问题
- 修复面包屑显示样式问题
- 修复 modal 在 destroyOnClose=true 时多次打开拖拽失效
- 修复表格出现多个 action 列
# 2.0.0-rc.4 (2020-10-21)
### ✨ Features
- 表格新增配置工具栏
- 新增消息通知模块
### 🎫 Chores
- 表格默认不显示边框
- 依赖更新
- 更新 vue 为`v3.0.2`
- 界面样式微调
### ⚡ Performance Improvements
- 优化首屏体积大小
- 优化 TableAction 组件
- 减小菜单折叠宽度
### 🐛 Bug Fixes
- 修复一级菜单折叠显示菜单名问题
- 修复预览命令不打包问题
- 修复表格 actionColOptions 参数不生效问题
- 修复表格刷新表单 loading 不生效问题
- 修复带参界面刷新参数丢失问题
# 2.0.0-rc.3 (2020-10-19)
### ✨ Features
- 新增 excel 组件及 excel/xml/csv/html 导出示例
- 新增 excel 导入示例
- 新增全局错误处理
- 新增 markdown 组件及示例
- 新增折叠菜单时可显示菜单名
### Docs
- 添加项目文档
### 🎫 Chores
- 升级依赖
- 其他细节优化
### 🐛 Bug Fixes
- 修复顶部菜单自适应问题
- 修复 window 系统打包报错问题
# 2.0.0-rc.2 (2020-10-17)
### ✨ Features
- 打包可以配置输出`gizp`
- 打包可以配置删除`console`
- 路由及菜单不需要在手动引入,改为自动引入
### 🎫 Chores
- 升级 vue 到`3.0.1`
-`vite`版本改为每日构建版本
### 🐛 Bug Fixes
- 修复菜单报错
- 修复表格自适应高度问题
- 修复`window系统`执行 script 报错问题
- 修复折叠组件问题
### ⚡ Performance Improvements
- 删除菜单最小化背景
- 阻止页面刷新重新渲染菜单
- 其他一些细节优化
# 2.0.0-rc.1 (2020-10-14)
### ✨ Features
- 添加带参 tab
### ⚡ Performance Improvements
- 菜单折叠优化
- 页面细节优化
- 打包后压缩 html
- 预览组件及右键菜单函数化重构
- 预览组件操作列居中
### 🎫 Chores
- 更新依赖
- 添加`README.en-US.md`
- 添加`CHANGELOG.en-US.md`
### 🐛 Bug Fixes
- 修复页面刷新跳转到登陆页
# 2.0.0-beta.7 (2020-10-12)
### ⚡ Performance Improvements
- 现有的选项卡切换不再显示动画和和进度条
### ✨ Features
- 新增 `CountTo`组件及示例 demo
- 项目配置文件新增 `closeMessageOnSwitch``removeAllHttpPending`
- 生产环境独立出配置文件,用于动态配置项目配置
- 新增 `useEcharts``useApexChart`来方便图表使用,同时新增相关 demo
- 新增工作台界面
- 新增分析页界面
### 🎫 Chores
- 更新依赖
### 🐛 Bug Fixes
- 修复路由切换tab 未激活问题
# 2.0.0-beta.56 (2020-10-11)
### 💄 Styles
- 菜单样式调整
### 🐛 Bug Fixes
- 修复可编辑表格不能输入问题
- 修复打包报错,生产环境不需要设计 proxy
### ⚡ Performance Improvements
- 优化多标签页切换速度
- 首屏加载动画
# 2.0.0-beta.5 (2020-10-10)
### ♻ Code Refactoring
- 删除`tailwind css`
### ⚡ Performance Improvements
- 优化页面切换速度
### 🎫 Chores
- 添加 `.vscode``.github`配置
- 更改菜单图标
- 新增`.env`配置文件
- 更新 readme.md
### 🐛 Bug Fixes
- 修复`Tree`组件勾选事件失效问题
# 2.0.0-beta.4 (2020-10-08)
### 🎫 Chores
- 删除多余依赖
### 🐛 Bug Fixes
- 修复页面刷新空白
- 修复表格在生产环境样式失效
# 2.0.0-beta.3 (2020-10-07)
### ✨ Features
- 项目配置文件新增`openNProgress`用于控制是否开启顶部控制条
- 添加`table`组件及 demo
### 🎫 Chores
- 添加` github workflows`
# 2.0.0-beta.2 (2020-10-07)
### ✨ Features
- 新增图片预览组件
### 🔧 Continuous Integration
- 增加 githubAction 脚本
# 2.0.0-beta.1(2020-09-30)
### 🎫 Chores
- 从 1.0 迁移部分代码
- 添加 README.md 描述文件
### 🐛 Bug Fixes
- 修复表单,动画及打包失败问题

180
README.md
View File

@@ -5,164 +5,96 @@
<h1>Vue vben admin</h1>
</div>
**English** | [中文](./README.zh-CN.md)
## 简介
## Introduction
精简 Vue Vben Admin。
Vue Vben Admin is a free and open source middle and back-end template. Using the latest `vue3`, `vite2`, `TypeScript` and other mainstream technology development, the out-of-the-box middle and back-end front-end solutions can also be used for learning reference.
## 特性
## Feature
- **State of The Art Development**Use front-end front-end technology development such as Vue3/vite2
- **TypeScript**: Application-level JavaScript language
- **Theming**: Configurable themes
- **International**Built-in complete internationalization program
- **Mock Server** Built-in mock data scheme
- **Authority** Built-in complete dynamic routing permission generation scheme.
- **Component** Multiple commonly used components are encapsulated twice
- **最新技术栈**:使用 Vue3/vite2 等前端前沿技术开发
- **TypeScript**: 应用程序级 JavaScript 的语言
- **主题**:可配置的主题
- **国际化**:内置完善的国际化方案
- **Mock 数据** 内置 Mock 数据方案
- **权限** 内置完善的动态路由权限生成方案
- **组件** 二次封装了多个常用的组件
## 预览
- [vue-vben-admin](https://vvbin.cn/next/) - Full version Chinese site
- [vue-vben-admin-gh-pages](https://anncwb.github.io/vue-vben-admin/) - Full version of the github site
- [vben-admin-thin-next](https://vvbin.cn/thin/next/) - Simplified Chinese site
- [vben-admin-thin-gh-pages](https://anncwb.github.io/vben-admin-thin-next/) -Simplified github site
- [vue-vben-admin](https://vvbin.cn/next/) - 完整版中文站点
- [vue-vben-admin-gh-pages](https://anncwb.github.io/vue-vben-admin/) - 完整版 github 站点
- [vben-admin-thin-next](https://vvbin.cn/thin/next/) - 简化版中文站点
- [vben-admin-thin-gh-pages](https://anncwb.github.io/vben-admin-thin-next/) - 简化版 github 站点
Test account: vben/123456
## 准备
<p align="center">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview1.png">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview2.png">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview3.png">
</p>
- [node](http://nodejs.org/) 和 [git](https://git-scm.com/) -项目开发环境
- [Vite](https://vitejs.dev/) - 熟悉 vite 特性
- [Vue3](https://v3.vuejs.org/) - 熟悉 Vue 基础语法
- [TypeScript](https://www.typescriptlang.org/) - 熟悉`TypeScript`基本语法
- [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法
- [Vue-Router-Next](https://next.router.vuejs.org/) - 熟悉 vue-router 基本使用
- [Ant-Design-Vue](https://2x.antdv.com/docs/vue/introduce-cn/) - ui 基本使用
- [Mock.js](https://github.com/nuysoft/Mock) - mockjs 基本语法
### Use Gitpod
## 安装使用
Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/anncwb/vue-vben-admin)
## Documentation
[Document](https://vvbin.cn/doc-next/)
## Preparation
- [node](http://nodejs.org/) and [git](https://git-scm.com/) - Project development environment
- [Vite](https://vitejs.dev/) - Familiar with vite features
- [Vue3](https://v3.vuejs.org/) - Familiar with Vue basic syntax
- [TypeScript](https://www.typescriptlang.org/) - Familiar with the basic syntax of `TypeScript`
- [Es6+](http://es6.ruanyifeng.com/) - Familiar with es6 basic syntax
- [Vue-Router-Next](https://next.router.vuejs.org/) - Familiar with the basic use of vue-router
- [Ant-Design-Vue](https://2x.antdv.com/docs/vue/introduce-cn/) - ui basic use
- [Mock.js](https://github.com/nuysoft/Mock) - mockjs basic syntax
## Install and use
- Get the project code
- 获取项目代码
```bash
git clone https://github.com/anncwb/vue-vben-admin.git
```
- Installation dependencies
- 安装依赖
```bash
cd vue-vben-admin
yarn install
git checkout thin
pnpm install
```
- run
- 运行
```bash
yarn serve
pnpm serve
```
- build
- 打包
```bash
yarn build
pnpm build
```
## Change Log
## Git 贡献提交规范
[CHANGELOG](./CHANGELOG.zh_CN.md)
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
## Project
- `feat` 增加新功能
- `fix` 修复问题/BUG
- `style` 代码风格相关无影响运行结果的
- `perf` 优化/性能提升
- `refactor` 重构
- `revert` 撤销修改
- `test` 测试相关
- `docs` 文档/注释
- `chore` 依赖更新/脚手架配置修改等
- `workflow` 工作流改进
- `ci` 持续集成
- `types` 类型定义文件更改
- `wip` 开发中
- [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) - full version
- [vue-vben-admin-thin-next](https://github.com/anncwb/vben-admin-thin-next) - Simplified version
## 相关仓库
## How to contribute
如果这些插件对你有帮助,可以给一个 star 支持下
You are very welcome to join[Raise an issue](https://github.com/anncwb/vue-vben-admin/issues/new/choose) Or submit a Pull Request。
**Pull Request:**
1. Fork code!
2. Create your own branch: `git checkout -b feat/xxxx`
3. Submit your changes: `git commit -am 'feat(function): add xxxxx'`
4. Push your branch: `git push origin feat/xxxx`
5. submit`pull request`
## Git Contribution submission specification
- reference [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) specification ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
- `feat` Add new features
- `fix` Fix the problem/BUG
- `style` The code style is related and does not affect the running result
- `perf` Optimization/performance improvement
- `refactor` Refactor
- `revert` Undo edit
- `test` Test related
- `docs` Documentation/notes
- `chore` Dependency update/scaffolding configuration modification etc.
- `workflow` Workflow improvements
- `ci` Continuous integration
- `types` Type definition file changes
- `wip` In development
## Related warehouse
If these plugins are helpful to you, you can give a star support
- [vite-plugin-mock](https://github.com/anncwb/vite-plugin-mock) - Used for local and development environment data mock
- [vite-plugin-html](https://github.com/anncwb/vite-plugin-html) - Used for html template conversion and compression
- [vite-plugin-style-import](https://github.com/anncwb/vite-plugin-style-import) - Used for component library style introduction on demand
- [vite-plugin-theme](https://github.com/anncwb/vite-plugin-theme) - Used for online switching of theme colors and other color-related configurations
- [vite-plugin-imagemin](https://github.com/anncwb/vite-plugin-imagemin) - Used to pack compressed image resources
- [vite-plugin-compression](https://github.com/anncwb/vite-plugin-compression) - Used to pack input .gz|.brotil files
- [vite-plugin-svg-icons](https://github.com/anncwb/vite-plugin-svg-icons) - Used to quickly generate svg sprite
## Browser support
The `Chrome 80+` browser is recommended for local development
Support modern browsers, not IE
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
| :-: | :-: | :-: | :-: | :-: |
| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
## Maintainer
[@Vben](https://github.com/anncwb)
## Donate
If you think this project is helpful to you, you can help the author buy a cup of coffee to show your support!
![donate](https://anncwb.github.io/anncwb/images/sponsor.png)
<a style="display: block;width: 100px;height: 50px;line-height: 50px; color: #fff;text-align: center; background: #408aed;border-radius: 4px;" href="https://www.paypal.com/paypalme/cvvben">Paypal Me</a>
## Discord
- [github discussions](https://github.com/anncwb/vue-vben-admin/discussions)
- [Discord](https://discord.gg/8GuAdwDhj6)
- [vite-plugin-mock](https://github.com/anncwb/vite-plugin-mock) - 用于本地及开发环境数据 mock
- [vite-plugin-html](https://github.com/anncwb/vite-plugin-html) - 用于 html 模版转换及压缩
- [vite-plugin-style-import](https://github.com/anncwb/vite-plugin-style-import) - 用于组件库样式按需引入
- [vite-plugin-theme](https://github.com/anncwb/vite-plugin-theme) - 用于在线切换主题色等颜色相关配置
- [vite-plugin-imagemin](https://github.com/anncwb/vite-plugin-imagemin) - 用于打包压缩图片资源
- [vite-plugin-compression](https://github.com/anncwb/vite-plugin-compression) - 用于打包输出.gz|.brotil 文件
- [vite-plugin-svg-icons](https://github.com/anncwb/vite-plugin-svg-icons) - 用于快速生成 svg 雪碧图
## License

View File

@@ -1,174 +0,0 @@
<div align="center"> <a href="https://github.com/anncwb/vue-vben-admin"> <img alt="VbenAdmin Logo" width="200" height="200" src="https://anncwb.github.io/anncwb/images/logo.png"> </a> <br> <br>
[![license](https://img.shields.io/github/license/anncwb/vue-vben-admin.svg)](LICENSE)
<h1>Vue vben admin</h1>
</div>
**中文** | [English](./README.md)
## 简介
Vue Vben Admin 是一个免费开源的中后台模版。使用了最新的`vue3`,`vite2`,`TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,也可用于学习参考。
## 特性
- **最新技术栈**:使用 Vue3/vite2 等前端前沿技术开发
- **TypeScript**: 应用程序级 JavaScript 的语言
- **主题**:可配置的主题
- **国际化**:内置完善的国际化方案
- **Mock 数据** 内置 Mock 数据方案
- **权限** 内置完善的动态路由权限生成方案
- **组件** 二次封装了多个常用的组件
## 预览
- [vue-vben-admin](https://vvbin.cn/next/) - 完整版中文站点
- [vue-vben-admin-gh-pages](https://anncwb.github.io/vue-vben-admin/) - 完整版 github 站点
- [vben-admin-thin-next](https://vvbin.cn/thin/next/) - 简化版中文站点
- [vben-admin-thin-gh-pages](https://anncwb.github.io/vben-admin-thin-next/) - 简化版 github 站点
测试账号: vben/123456
<p align="center">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview1.png">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview2.png">
<img alt="VbenAdmin Logo" width="100%" src="https://anncwb.github.io/anncwb/images/preview3.png">
</p>
### 使用 Gitpod
在 Gitpod适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/anncwb/vue-vben-admin)
## 文档
[文档地址](https://vvbin.cn/doc-next/)
## 准备
- [node](http://nodejs.org/) 和 [git](https://git-scm.com/) -项目开发环境
- [Vite](https://vitejs.dev/) - 熟悉 vite 特性
- [Vue3](https://v3.vuejs.org/) - 熟悉 Vue 基础语法
- [TypeScript](https://www.typescriptlang.org/) - 熟悉`TypeScript`基本语法
- [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法
- [Vue-Router-Next](https://next.router.vuejs.org/) - 熟悉 vue-router 基本使用
- [Ant-Design-Vue](https://2x.antdv.com/docs/vue/introduce-cn/) - ui 基本使用
- [Mock.js](https://github.com/nuysoft/Mock) - mockjs 基本语法
## 安装使用
- 获取项目代码
```bash
git clone https://github.com/anncwb/vue-vben-admin.git
```
- 安装依赖
```bash
cd vue-vben-admin
yarn install
```
- 运行
```bash
yarn serve
```
- 打包
```bash
yarn build
```
## 更新日志
[CHANGELOG](./CHANGELOG.zh_CN.md)
## 项目地址
- [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) - 完整版
- [vue-vben-admin-thin-next](https://github.com/anncwb/vben-admin-thin-next) - 简化版
## 如何贡献
非常欢迎你的加入![提一个 Issue](https://github.com/anncwb/vue-vben-admin/issues/new/choose) 或者提交一个 Pull Request。
**Pull Request:**
1. Fork 代码!
2. 创建自己的分支: `git checkout -b feat/xxxx`
3. 提交你的修改: `git commit -am 'feat(function): add xxxxx'`
4. 推送您的分支: `git push origin feat/xxxx`
5. 提交`pull request`
## Git 贡献提交规范
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
- `feat` 增加新功能
- `fix` 修复问题/BUG
- `style` 代码风格相关无影响运行结果的
- `perf` 优化/性能提升
- `refactor` 重构
- `revert` 撤销修改
- `test` 测试相关
- `docs` 文档/注释
- `chore` 依赖更新/脚手架配置修改等
- `workflow` 工作流改进
- `ci` 持续集成
- `types` 类型定义文件更改
- `wip` 开发中
## 浏览器支持
本地开发推荐使用`Chrome 80+` 浏览器
支持现代浏览器, 不支持 IE
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
| :-: | :-: | :-: | :-: | :-: |
| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
## 相关仓库
如果这些插件对你有帮助,可以给一个 star 支持下
- [vite-plugin-mock](https://github.com/anncwb/vite-plugin-mock) - 用于本地及开发环境数据 mock
- [vite-plugin-html](https://github.com/anncwb/vite-plugin-html) - 用于 html 模版转换及压缩
- [vite-plugin-style-import](https://github.com/anncwb/vite-plugin-style-import) - 用于组件库样式按需引入
- [vite-plugin-theme](https://github.com/anncwb/vite-plugin-theme) - 用于在线切换主题色等颜色相关配置
- [vite-plugin-imagemin](https://github.com/anncwb/vite-plugin-imagemin) - 用于打包压缩图片资源
- [vite-plugin-compression](https://github.com/anncwb/vite-plugin-compression) - 用于打包输出.gz|.brotil 文件
- [vite-plugin-svg-icons](https://github.com/anncwb/vite-plugin-svg-icons) - 用于快速生成 svg 雪碧图
## 后台整合示例
- [lamp-cloud](https://github.com/zuihou/lamp-cloud) - 基于 SpringCloud Alibaba 的微服务中后台快速开发平台
## 维护者
[@Vben](https://github.com/anncwb)
## 捐赠
如果你觉得这个项目对你有帮助,你可以帮作者买一杯咖啡表示支持!
![donate](https://anncwb.github.io/anncwb/images/sponsor.png)
<a style="display: block;width: 100px;height: 50px;line-height: 50px; color: #fff;text-align: center; background: #408aed;border-radius: 4px;" href="https://www.paypal.com/paypalme/cvvben">Paypal Me</a>
## 交流
`Vue-vben-Admin` 是完全开源免费的项目,在帮助开发者更方便地进行中大型管理系统开发,同时也提供 QQ 交流群使用问题欢迎在群内提问。
- QQ 群 `569291866`
## License
[MIT © Vben-2020](./LICENSE)

View File

@@ -2,12 +2,12 @@ import { generate } from '@ant-design/colors';
export const primaryColor = '#0960bd';
export const themeMode = 'light';
export type ThemeMode = 'dark' | 'light';
export const darkMode = 'light';
type Fn = (...arg: any) => any;
type GenerateTheme = 'default' | 'dark';
export interface GenerateColorsParams {
mixLighten: Fn;
mixDarken: Fn;
@@ -15,20 +15,19 @@ export interface GenerateColorsParams {
color?: string;
}
export function generateAntColors(color: string, mode: ThemeMode) {
export function generateAntColors(color: string, theme: GenerateTheme = 'default') {
return generate(color, {
theme: mode == 'dark' ? 'dark' : 'default',
theme,
});
}
export function getThemeColors(color?: string, theme?: ThemeMode) {
export function getThemeColors(color?: string) {
const tc = color || primaryColor;
const tm = theme || themeMode;
const colors = generateAntColors(tc, tm);
const primary = colors[5];
const modeColors = generateAntColors(primary, tm === 'dark' ? 'light' : 'dark');
const lightColors = generateAntColors(tc);
const primary = lightColors[5];
const modeColors = generateAntColors(primary, 'dark');
return [...colors, ...modeColors];
return [...lightColors, ...modeColors];
}
export function generateColors({
@@ -52,6 +51,8 @@ export function generateColors({
.toRgbString();
});
const shortAlphaColors = alphaColors.map((item) => item.replace(/\s/g, '').replace(/0\./g, '.'));
const tinycolorLightens = arr
.map((_t, i) => {
return tinycolor(color)
@@ -67,38 +68,12 @@ export function generateColors({
.toHexString();
})
.filter((item) => item !== '#000000');
return [...lightens, ...darkens, ...alphaColors, ...tinycolorDarkens, ...tinycolorLightens];
}
/**
* less global variable
*/
export function generateModifyVars() {
const palettes = generateAntColors(primaryColor, themeMode);
const primary = palettes[5];
const primaryColorObj: Record<string, string> = {};
for (let index = 0; index < 10; index++) {
primaryColorObj[`primary-${index + 1}`] = palettes[index];
}
return {
'primary-color': primary,
...primaryColorObj,
'info-color': primary,
'processing-color': primary,
'success-color': '#55D187', // Success color
'error-color': '#ED6F6F', // False color
'warning-color': '#EFBD47', // Warning color
'disabled-color': 'rgba(0, 0, 0, 0.25)', // Failure color
'heading-color': 'rgba(0, 0, 0, 0.85)', // Title color
'text-color': 'rgba(0, 0, 0, 0.85)', // Main text color
'text-color-secondary': 'rgba(0, 0, 0, 0.45)', // Subtext color
'font-size-base': '14px', // Main font size
'box-shadow-base': '0 2px 8px rgba(0, 0, 0, 0.15)', // Floating shadow
'border-color-base': '#d9d9d9', // Border color,
'border-radius-base': '2px', // Component/float fillet
'link-color': primary, // Link color
};
return [
...lightens,
...darkens,
...alphaColors,
...shortAlphaColors,
...tinycolorDarkens,
...tinycolorLightens,
].filter((item) => !item.includes('-'));
}

View File

@@ -0,0 +1,37 @@
import { generateAntColors, primaryColor } from '../config/themeConfig';
import { getThemeVariables } from 'ant-design-vue/dist/theme';
import { resolve } from 'path';
/**
* less global variable
*/
export function generateModifyVars(dark = false) {
const palettes = generateAntColors(primaryColor);
const primary = palettes[5];
const primaryColorObj: Record<string, string> = {};
for (let index = 0; index < 10; index++) {
primaryColorObj[`primary-${index + 1}`] = palettes[index];
}
const modifyVars = getThemeVariables({ dark });
return {
...modifyVars,
// Used for global import to avoid the need to import each style file separately
// reference: Avoid repeated references
hack: `${modifyVars.hack} @import (reference) "${resolve('src/design/config.less')}";`,
'primary-color': primary,
...primaryColorObj,
'info-color': primary,
'processing-color': primary,
'success-color': '#55D187', // Success color
'error-color': '#ED6F6F', // False color
'warning-color': '#EFBD47', // Warning color
//'border-color-base': '#EEEEEE',
'font-size-base': '14px', // Main font size
'border-radius-base': '2px', // Component/float fillet
'link-color': primary, // Link color
'app-content-background': '#fafafa', // Link color
};
}

View File

@@ -1,7 +1,7 @@
import path from 'path';
import fs from 'fs-extra';
import inquirer from 'inquirer';
import chalk from 'chalk';
import colors from 'picocolors';
import pkg from '../../../package.json';
async function generateIcon() {
@@ -52,19 +52,19 @@ async function generateIcon() {
const { prefix } = data;
const isLocal = useType === 'local';
const icons = Object.keys(data.icons).map(
(item) => `${isLocal ? prefix + ':' : ''}${item}`
(item) => `${isLocal ? prefix + ':' : ''}${item}`,
);
await fs.writeFileSync(
path.join(output, `icons.data.ts`),
`export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`
`export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`,
);
prefixSet.push(prefix);
}
}
fs.emptyDir(path.join(process.cwd(), 'node_modules/.vite'));
console.log(
`${chalk.cyan(`[${pkg.name}]`)}` + ' - Icon generated successfully:' + `[${prefixSet}]`
`${colors.cyan(`[${pkg.name}]`)}` + ' - Icon generated successfully:' + `[${prefixSet}]`,
);
});
}

View File

@@ -3,42 +3,45 @@
*/
import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from '../constant';
import fs, { writeFileSync } from 'fs-extra';
import chalk from 'chalk';
import colors from 'picocolors';
import { getRootPath, getEnvConfig } from '../utils';
import { getEnvConfig, getRootPath } from '../utils';
import { getConfigFileName } from '../getConfigFileName';
import pkg from '../../package.json';
function createConfig(
{
configName,
config,
configFileName = GLOB_CONFIG_FILE_NAME,
}: { configName: string; config: any; configFileName?: string } = { configName: '', config: {} }
) {
interface CreateConfigParams {
configName: string;
config: any;
configFileName?: string;
}
function createConfig(params: CreateConfigParams) {
const { configName, config, configFileName } = params;
try {
const windowConf = `window.${configName}`;
// Ensure that the variable will not be modified
const configStr = `${windowConf}=${JSON.stringify(config)};
let configStr = `${windowConf}=${JSON.stringify(config)};`;
configStr += `
Object.freeze(${windowConf});
Object.defineProperty(window, "${configName}", {
configurable: false,
writable: false,
});
`.replace(/\s/g, '');
fs.mkdirp(getRootPath(OUTPUT_DIR));
writeFileSync(getRootPath(`${OUTPUT_DIR}/${configFileName}`), configStr);
console.log(chalk.cyan(`✨ [${pkg.name}]`) + ` - configuration file is build successfully:`);
console.log(chalk.gray(OUTPUT_DIR + '/' + chalk.green(configFileName)) + '\n');
console.log(colors.cyan(`✨ [${pkg.name}]`) + ` - configuration file is build successfully:`);
console.log(colors.gray(OUTPUT_DIR + '/' + colors.green(configFileName)) + '\n');
} catch (error) {
console.log(chalk.red('configuration file configuration file failed to package:\n' + error));
console.log(colors.red('configuration file configuration file failed to package:\n' + error));
}
}
export function runBuildConfig() {
const config = getEnvConfig();
const configFileName = getConfigFileName(config);
createConfig({ config, configName: configFileName });
createConfig({ config, configName: configFileName, configFileName: GLOB_CONFIG_FILE_NAME });
}

View File

@@ -1,23 +1,22 @@
// #!/usr/bin/env node
import { argv } from 'yargs';
import { runBuildConfig } from './buildConf';
import chalk from 'chalk';
import colors from 'picocolors';
import pkg from '../../package.json';
export const runBuild = async () => {
try {
const argvList = argv._;
const argvList = process.argv.splice(2);
// Generate configuration file
if (!argvList.includes('no-conf')) {
await runBuildConfig();
if (!argvList.includes('disabled-config')) {
runBuildConfig();
}
console.log(`${chalk.cyan(`[${pkg.name}]`)}` + ' - build successfully!');
console.log(`${colors.cyan(`[${pkg.name}]`)}` + ' - build successfully!');
} catch (error) {
console.log(chalk.red('vite build error:\n' + error));
console.log(colors.red('vite build error:\n' + error));
process.exit(1);
}
};

View File

@@ -28,33 +28,54 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
if (envName === 'VITE_PORT') {
realName = Number(realName);
}
if (envName === 'VITE_PROXY') {
if (envName === 'VITE_PROXY' && realName) {
try {
realName = JSON.parse(realName);
} catch (error) {}
realName = JSON.parse(realName.replace(/'/g, '"'));
} catch (error) {
realName = '';
}
}
ret[envName] = realName;
process.env[envName] = realName;
if (typeof realName === 'string') {
process.env[envName] = realName;
} else if (typeof realName === 'object') {
process.env[envName] = JSON.stringify(realName);
}
}
return ret;
}
/**
* 获取当前环境下生效的配置文件名
*/
function getConfFiles() {
const script = process.env.npm_lifecycle_script;
const reg = new RegExp('--mode ([a-z_\\d]+)');
const result = reg.exec(script as string) as any;
if (result) {
const mode = result[1] as string;
return ['.env', `.env.${mode}`];
}
return ['.env', '.env.production'];
}
/**
* Get the environment variables starting with the specified prefix
* @param match prefix
* @param confFiles ext
*/
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) {
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = getConfFiles()) {
let envConfig = {};
confFiles.forEach((item) => {
try {
const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
envConfig = { ...envConfig, ...env };
} catch (error) {}
} catch (e) {
console.error(`Error in parsing ${item}`, e);
}
});
const reg = new RegExp(`^(${match})`);
Object.keys(envConfig).forEach((key) => {
const reg = new RegExp(`^(${match})`);
if (!reg.test(key)) {
Reflect.deleteProperty(envConfig, key);
}

View File

@@ -1,16 +0,0 @@
import { resolve } from 'path';
import type { Alias } from 'vite';
function pathResolve(dir: string) {
return resolve(__dirname, '.', dir);
}
export function createAlias(alias: [string, string][]): Alias[] {
return alias.map((item) => {
const [alia, src] = item;
return {
find: new RegExp(alia),
replacement: pathResolve(src) + '/',
};
});
}

View File

@@ -1,21 +0,0 @@
// TODO
import type { GetManualChunk } from 'rollup';
//
const vendorLibs: { match: string[]; output: string }[] = [
// {
// match: ['xlsx'],
// output: 'xlsx',
// },
];
// @ts-ignore
export const configManualChunk: GetManualChunk = (id: string) => {
if (/[\\/]node_modules[\\/]/.test(id)) {
const matchItem = vendorLibs.find((item) => {
const reg = new RegExp(`[\\/]node_modules[\\/]_?(${item.match.join('|')})(.*)`, 'ig');
return reg.test(id);
});
return matchItem ? matchItem.output : null;
}
};

View File

@@ -2,28 +2,33 @@
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
* https://github.com/anncwb/vite-plugin-compression
*/
import type { Plugin } from 'vite';
import type { PluginOption } from 'vite';
import compressPlugin from 'vite-plugin-compression';
export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none'): Plugin | Plugin[] {
export function configCompressPlugin(
compress: 'gzip' | 'brotli' | 'none',
deleteOriginFile = false,
): PluginOption | PluginOption[] {
const compressList = compress.split(',');
const plugins: Plugin[] = [];
const plugins: PluginOption[] = [];
if (compressList.includes('gzip')) {
plugins.push(
compressPlugin({
ext: '.gz',
})
deleteOriginFile,
}),
);
}
if (compressList.includes('brotli')) {
plugins.push(
compressPlugin({
ext: '.br',
algorithm: 'brotliCompress',
})
deleteOriginFile,
}),
);
}
return plugins;

View File

@@ -1,21 +0,0 @@
import type { Plugin } from 'vite';
/**
* TODO
* Temporarily solve the Vite circular dependency problem, and wait for a better solution to fix it later. I don't know what problems this writing will bring.
* @returns
*/
export function configHmrPlugin(): Plugin {
return {
name: 'singleHMR',
handleHotUpdate({ modules, file }) {
if (file.match(/xml$/)) return [];
modules.forEach((m) => {
m.importedModules = new Set();
m.importers = new Set();
});
return modules;
},
};
}

View File

@@ -2,10 +2,8 @@
* Plugin to minimize and use ejs template syntax in index.html.
* https://github.com/anncwb/vite-plugin-html
*/
import type { Plugin } from 'vite';
import html from 'vite-plugin-html';
import type { PluginOption } from 'vite';
import { createHtmlPlugin } from 'vite-plugin-html';
import pkg from '../../../package.json';
import { GLOB_CONFIG_FILE_NAME } from '../../constant';
@@ -18,11 +16,11 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`;
};
const htmlPlugin: Plugin[] = html({
const htmlPlugin: PluginOption[] = createHtmlPlugin({
minify: isBuild,
inject: {
// Inject data into ejs template
injectData: {
data: {
title: VITE_GLOB_APP_TITLE,
},
// Embed the generated app.config.js file

View File

@@ -1,6 +1,5 @@
// Image resource files used to compress the output of the production environment
// https://github.com/anncwb/vite-plugin-imagemin
import viteImagemin from 'vite-plugin-imagemin';
export function configImageminPlugin() {
@@ -12,11 +11,8 @@ export function configImageminPlugin() {
optipng: {
optimizationLevel: 7,
},
webp: {
quality: 75,
},
mozjpeg: {
quality: 8,
quality: 20,
},
pngquant: {
quality: [0.8, 0.9],
@@ -25,10 +21,11 @@ export function configImageminPlugin() {
svgo: {
plugins: [
{
removeViewBox: false,
name: 'removeViewBox',
},
{
removeEmptyAttrs: false,
name: 'removeEmptyAttrs',
active: false,
},
],
},

View File

@@ -1,74 +1,82 @@
import type { Plugin } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import legacy from '@vitejs/plugin-legacy';
import PurgeIcons from 'vite-plugin-purge-icons';
import { configHtmlPlugin } from './html';
import { configPwaConfig } from './pwa';
import { configMockPlugin } from './mock';
import { configCompressPlugin } from './compress';
import { configStyleImportPlugin } from './styleImport';
import { configVisualizerConfig } from './visualizer';
import { configThemePlugin } from './theme';
import { configImageminPlugin } from './imagemin';
import { configWindiCssPlugin } from './windicss';
import { configSvgIconsPlugin } from './svgSprite';
import { configHmrPlugin } from './hmr';
import { PluginOption } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import legacy from '@vitejs/plugin-legacy'
import purgeIcons from 'vite-plugin-purge-icons'
import windiCSS from 'vite-plugin-windicss'
import VitePluginCertificate from 'vite-plugin-mkcert'
//import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import { configHtmlPlugin } from './html'
import { configPwaConfig } from './pwa'
import { configMockPlugin } from './mock'
import { configCompressPlugin } from './compress'
import { configStyleImportPlugin } from './styleImport'
import { configVisualizerConfig } from './visualizer'
import { configThemePlugin } from './theme'
import { configImageminPlugin } from './imagemin'
import { configSvgIconsPlugin } from './svgSprite'
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS } = viteEnv;
const {
VITE_USE_IMAGEMIN,
VITE_USE_MOCK,
VITE_LEGACY,
VITE_BUILD_COMPRESS,
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE,
} = viteEnv
const vitePlugins: (Plugin | Plugin[])[] = [
const vitePlugins: (PluginOption | PluginOption[])[] = [
// have to
vue(),
// have to
vueJsx(),
];
// TODO
!isBuild && vitePlugins.push(configHmrPlugin());
// @vitejs/plugin-legacy
VITE_LEGACY && isBuild && vitePlugins.push(legacy());
// vite-plugin-html
vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
// vite-plugin-svg-icons
vitePlugins.push(configSvgIconsPlugin(isBuild));
// support name
//vueSetupExtend(),
VitePluginCertificate({
source: 'coding',
}),
]
// vite-plugin-windicss
vitePlugins.push(configWindiCssPlugin());
vitePlugins.push(windiCSS())
// @vitejs/plugin-legacy
VITE_LEGACY && isBuild && vitePlugins.push(legacy())
// vite-plugin-html
vitePlugins.push(configHtmlPlugin(viteEnv, isBuild))
// vite-plugin-svg-icons
vitePlugins.push(configSvgIconsPlugin(isBuild))
// vite-plugin-mock
VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild));
VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild))
// vite-plugin-purge-icons
vitePlugins.push(PurgeIcons());
vitePlugins.push(purgeIcons())
// vite-plugin-style-import
vitePlugins.push(configStyleImportPlugin(isBuild));
vitePlugins.push(configStyleImportPlugin(isBuild))
// rollup-plugin-visualizer
vitePlugins.push(configVisualizerConfig());
vitePlugins.push(configVisualizerConfig())
//vite-plugin-theme
vitePlugins.push(configThemePlugin());
// vite-plugin-theme
vitePlugins.push(configThemePlugin(isBuild))
// The following plugins only work in the production environment
if (isBuild) {
//vite-plugin-imagemin
VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin());
// vite-plugin-imagemin
VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin())
// rollup-plugin-gzip
vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS));
vitePlugins.push(
configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE),
)
// vite-plugin-pwa
vitePlugins.push(configPwaConfig(viteEnv));
vitePlugins.push(configPwaConfig(viteEnv))
}
return vitePlugins;
return vitePlugins
}

View File

@@ -2,7 +2,6 @@
* Zero-config PWA for Vite
* https://github.com/antfu/vite-plugin-pwa
*/
import { VitePWA } from 'vite-plugin-pwa';
export function configPwaConfig(env: ViteEnv) {

View File

@@ -2,21 +2,80 @@
* Introduces component library styles on demand.
* https://github.com/anncwb/vite-plugin-style-import
*/
import { createStyleImportPlugin } from 'vite-plugin-style-import'
import styleImport from 'vite-plugin-style-import';
export function configStyleImportPlugin(isBuild: boolean) {
if (!isBuild) return [];
const pwaPlugin = styleImport({
export function configStyleImportPlugin(_isBuild: boolean) {
if (!_isBuild) {
return []
}
const styleImportPlugin = createStyleImportPlugin({
libs: [
{
libraryName: 'ant-design-vue',
esModule: true,
resolveStyle: (name) => {
return `ant-design-vue/es/${name}/style/index`;
// 这里是无需额外引入样式文件的“子组件”列表
const ignoreList = [
'anchor-link',
'sub-menu',
'menu-item',
'menu-divider',
'menu-item-group',
'breadcrumb-item',
'breadcrumb-separator',
'form-item',
'step',
'select-option',
'select-opt-group',
'card-grid',
'card-meta',
'collapse-panel',
'descriptions-item',
'list-item',
'list-item-meta',
'table-column',
'table-column-group',
'tab-pane',
'tab-content',
'timeline-item',
'tree-node',
'skeleton-input',
'skeleton-avatar',
'skeleton-title',
'skeleton-paragraph',
'skeleton-image',
'skeleton-button',
]
// 这里是需要额外引入样式的子组件列表
// 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失
const replaceList = {
'typography-text': 'typography',
'typography-title': 'typography',
'typography-paragraph': 'typography',
'typography-link': 'typography',
'dropdown-button': 'dropdown',
'input-password': 'input',
'input-search': 'input',
'input-group': 'input',
'radio-group': 'radio',
'checkbox-group': 'checkbox',
'layout-sider': 'layout',
'layout-content': 'layout',
'layout-footer': 'layout',
'layout-header': 'layout',
'month-picker': 'date-picker',
'range-picker': 'date-picker',
'image-preview-group': 'image',
}
return ignoreList.includes(name)
? ''
: replaceList.hasOwnProperty(name)
? `ant-design-vue/es/${replaceList[name]}/style/index`
: `ant-design-vue/es/${name}/style/index`
},
},
],
});
return pwaPlugin;
})
return styleImportPlugin
}

View File

@@ -3,11 +3,11 @@
* https://github.com/anncwb/vite-plugin-svg-icons
*/
import SvgIconsPlugin from 'vite-plugin-svg-icons';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import path from 'path';
export function configSvgIconsPlugin(isBuild: boolean) {
const svgIconsPlugin = SvgIconsPlugin({
const svgIconsPlugin = createSvgIconsPlugin({
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
svgoOptions: isBuild,
// default

View File

@@ -2,18 +2,88 @@
* Vite plugin for website theme color switching
* https://github.com/anncwb/vite-plugin-theme
*/
import { viteThemePlugin, mixLighten, mixDarken, tinycolor } from 'vite-plugin-theme';
import type { PluginOption } from 'vite';
import path from 'path';
import {
viteThemePlugin,
antdDarkThemePlugin,
mixLighten,
mixDarken,
tinycolor,
} from 'vite-plugin-theme';
import { getThemeColors, generateColors } from '../../config/themeConfig';
import { generateModifyVars } from '../../generate/generateModifyVars';
export function configThemePlugin() {
export function configThemePlugin(isBuild: boolean): PluginOption[] {
const colors = generateColors({
mixDarken,
mixLighten,
tinycolor,
});
const plugin = [
viteThemePlugin({
resolveSelector: (s) => {
s = s.trim();
switch (s) {
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
return '.ant-steps-item-icon > .ant-steps-icon';
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active':
return s;
case '.ant-steps-item-icon > .ant-steps-icon':
return s;
case '.ant-select-item-option-selected:not(.ant-select-item-option-disabled)':
return s;
default:
if (s.indexOf('.ant-btn') >= -1) {
// 按钮被重新定制过需要过滤掉class防止覆盖
return s;
}
}
return s.startsWith('[data-theme') ? s : `[data-theme] ${s}`;
},
colorVariables: [...getThemeColors(), ...colors],
}),
antdDarkThemePlugin({
preloadFiles: [
path.resolve(process.cwd(), 'node_modules/ant-design-vue/dist/antd.less'),
//path.resolve(process.cwd(), 'node_modules/ant-design-vue/dist/antd.dark.less'),
path.resolve(process.cwd(), 'src/design/index.less'),
],
filter: (id) => (isBuild ? !id.endsWith('antd.less') : true),
// extractCss: false,
darkModifyVars: {
...generateModifyVars(true),
'text-color': '#c9d1d9',
'primary-1': 'rgb(255 255 255 / 8%)',
'text-color-base': '#c9d1d9',
'component-background': '#151515',
'heading-color': 'rgb(255 255 255 / 65%)',
// black: '#0e1117',
// #8b949e
'text-color-secondary': '#8b949e',
'border-color-base': '#303030',
// 'border-color-split': '#30363d',
'item-active-bg': '#111b26',
'app-content-background': '#1e1e1e',
'tree-node-selected-bg': '#11263c',
const plugin = viteThemePlugin({
colorVariables: [...getThemeColors(), ...colors],
});
return plugin;
'alert-success-border-color': '#274916',
'alert-success-bg-color': '#162312',
'alert-success-icon-color': '#49aa19',
'alert-info-border-color': '#153450',
'alert-info-bg-color': '#111b26',
'alert-info-icon-color': '#177ddc',
'alert-warning-border-color': '#594214',
'alert-warning-bg-color': '#2b2111',
'alert-warning-icon-color': '#d89614',
'alert-error-border-color': '#58181c',
'alert-error-bg-color': '#2a1215',
'alert-error-icon-color': '#a61d24',
},
}),
];
return plugin as unknown as PluginOption[];
}

View File

@@ -9,9 +9,7 @@ export function configVisualizerConfig() {
return visualizer({
filename: './node_modules/.cache/visualizer/stats.html',
open: true,
// @ts-ignore
gzipSize: true,
// @ts-ignore
brotliSize: true,
}) as Plugin;
}

View File

@@ -1,12 +0,0 @@
import type { Plugin } from 'vite';
import windiCSS from 'vite-plugin-windicss';
export function configWindiCssPlugin(): Plugin[] {
return windiCSS({
safelist: 'no-select',
preflight: {
enableAll: true,
},
});
}

View File

@@ -1,13 +1,13 @@
/**
* Used to parse the .env.development proxy configuration
*/
import type { ServerOptions } from 'http-proxy';
import type { ProxyOptions } from 'vite';
type ProxyItem = [string, string];
type ProxyList = ProxyItem[];
type ProxyTargetList = Record<string, ServerOptions & { rewrite: (path: string) => string }>;
type ProxyTargetList = Record<string, ProxyOptions>;
const httpsRE = /^https:\/\//;

View File

@@ -1,37 +1,33 @@
const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')
const scopes = fs
.readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name.replace(/s$/, ''))
// precomputed scope
const scopeComplete = execSync('git status --porcelain || true')
.toString()
.trim()
.split('\n')
.find((r) => ~r.indexOf('M src'))
?.replace(/(\/)/g, '%%')
?.match(/src%%((\w|-)*)/)?.[1]
?.replace(/s$/, '')
/** @type {import('cz-git').UserConfig} */
module.exports = {
ignores: [(commit) => commit.includes('init')],
extends: ['@commitlint/config-conventional'],
parserPreset: {
parserOpts: {
headerPattern: /^(\w*|[\u4e00-\u9fa5]*)(?:[\(\](.*)[\)\])?[\:\] (.*)/,
headerCorrespondence: ['type', 'scope', 'subject'],
referenceActions: [
'close',
'closes',
'closed',
'fix',
'fixes',
'fixed',
'resolve',
'resolves',
'resolved',
],
issuePrefixes: ['#'],
noteKeywords: ['BREAKING CHANGE', '不兼容变更'],
fieldPattern: /^-(.*?)-$/,
revertPattern: /^Revert\s"([\s\S]*)"\s*This reverts commit (\w*)\./,
revertCorrespondence: ['header', 'hash'],
warn() {},
mergePattern: null,
mergeCorrespondence: null,
},
},
rules: {
'body-leading-blank': [2, 'always'],
'footer-leading-blank': [1, 'always'],
'header-max-length': [2, 'always', 108],
'subject-empty': [2, 'never'],
'type-empty': [2, 'never'],
'subject-case': [0],
'type-enum': [
2,
'always',
@@ -50,7 +46,62 @@ module.exports = {
'wip',
'workflow',
'types',
'release',
],
],
},
};
prompt: {
/** @use `yarn commit :f` */
alias: {
f: 'docs: fix typos',
r: 'docs: update README',
s: 'style: update code format',
b: 'build: bump dependencies',
c: 'chore: update config',
},
customScopesAlign: !scopeComplete ? 'top' : 'bottom',
defaultScope: scopeComplete,
scopes: [...scopes, 'mock'],
allowEmptyIssuePrefixs: false,
allowCustomIssuePrefixs: false,
// English
typesAppend: [
{ value: 'wip', name: 'wip: work in process' },
{ value: 'workflow', name: 'workflow: workflow improvements' },
{ value: 'types', name: 'types: type definition file changes' },
],
// 中英文对照版
// messages: {
// type: '选择你要提交的类型 :',
// scope: '选择一个提交范围 (可选):',
// customScope: '请输入自定义的提交范围 :',
// subject: '填写简短精炼的变更描述 :\n',
// body: '填写更加详细的变更描述 (可选)。使用 "|" 换行 :\n',
// breaking: '列举非兼容性重大的变更 (可选)。使用 "|" 换行 :\n',
// footerPrefixsSelect: '选择关联issue前缀 (可选):',
// customFooterPrefixs: '输入自定义issue前缀 :',
// footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
// confirmCommit: '是否提交或修改commit ?',
// },
// types: [
// { value: 'feat', name: 'feat: 新增功能' },
// { value: 'fix', name: 'fix: 修复缺陷' },
// { value: 'docs', name: 'docs: 文档变更' },
// { value: 'style', name: 'style: 代码格式' },
// { value: 'refactor', name: 'refactor: 代码重构' },
// { value: 'perf', name: 'perf: 性能优化' },
// { value: 'test', name: 'test: 添加疏漏测试或已有测试改动' },
// { value: 'build', name: 'build: 构建流程、外部依赖变更 (如升级 npm 包、修改打包配置等)' },
// { value: 'ci', name: 'ci: 修改 CI 配置、脚本' },
// { value: 'revert', name: 'revert: 回滚 commit' },
// { value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
// { value: 'wip', name: 'wip: 正在开发中' },
// { value: 'workflow', name: 'workflow: 工作流程改进' },
// { value: 'types', name: 'types: 类型定义文件修改' },
// ],
// emptyScopesAlias: 'empty: 不填写',
// customScopesAlias: 'custom: 自定义',
},
}

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="zh-cn" id="htmlRoot">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
@@ -8,13 +8,30 @@
name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/>
<title><%= title %></title>
<link rel="icon" href="/favicon.ico" />
</head>
<body>
<script>
;(() => {
var htmlRoot = document.getElementById('htmlRoot')
var theme = window.localStorage.getItem('__APP__DARK__MODE__')
if (htmlRoot && theme) {
htmlRoot.setAttribute('data-theme', theme)
theme = htmlRoot = null
}
})()
</script>
<div id="app">
<style>
html[data-theme='dark'] .app-loading {
background-color: #2c344a;
}
html[data-theme='dark'] .app-loading .app-loading-title {
color: rgb(255 255 255 / 85%);
}
.app-loading {
display: flex;
width: 100%;
@@ -22,7 +39,7 @@
justify-content: center;
align-items: center;
flex-direction: column;
background: #f4f7f9;
background-color: #f4f7f9;
}
.app-loading .app-loading-wrap {
@@ -30,7 +47,6 @@
top: 50%;
left: 50%;
display: flex;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
justify-content: center;
align-items: center;
@@ -48,7 +64,7 @@
display: flex;
margin-top: 30px;
font-size: 30px;
color: rgba(0, 0, 0, 0.85);
color: rgb(0 0 0 / 85%);
justify-content: center;
align-items: center;
}
@@ -79,7 +95,7 @@
height: 20px;
background-color: #0065cc;
border-radius: 100%;
opacity: 0.3;
opacity: 30%;
transform: scale(0.75);
animation: antSpinMove 1s infinite linear alternate;
transform-origin: 50% 50%;
@@ -93,43 +109,38 @@
.dot i:nth-child(2) {
top: 0;
right: 0;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.dot i:nth-child(3) {
right: 0;
bottom: 0;
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
.dot i:nth-child(4) {
bottom: 0;
left: 0;
-webkit-animation-delay: 1.2s;
animation-delay: 1.2s;
}
@keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
@-webkit-keyframes antRotate {
@keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
@keyframes antSpinMove {
to {
opacity: 1;
opacity: 100%;
}
}
@-webkit-keyframes antSpinMove {
@keyframes antSpinMove {
to {
opacity: 1;
opacity: 100%;
}
}
</style>

View File

@@ -1,8 +1,9 @@
// Interface data format used to return a unified format
import { ResultEnum } from '/@/enums/httpEnum';
export function resultSuccess<T = Recordable>(result: T, { message = 'ok' } = {}) {
return {
code: 0,
code: ResultEnum.SUCCESS,
result,
message,
type: 'success',
@@ -13,7 +14,7 @@ export function resultPageSuccess<T = any>(
page: number,
pageSize: number,
list: T[],
{ message = 'ok' } = {}
{ message = 'ok' } = {},
) {
const pageData = pagination(page, pageSize, list);
@@ -26,7 +27,10 @@ export function resultPageSuccess<T = any>(
};
}
export function resultError(message = 'Request failed', { code = -1, result = null } = {}) {
export function resultError(
message = 'Request failed',
{ code = ResultEnum.ERROR, result = null } = {},
) {
return {
code,
result,
@@ -37,9 +41,22 @@ export function resultError(message = 'Request failed', { code = -1, result = nu
export function pagination<T = any>(pageNo: number, pageSize: number, array: T[]): T[] {
const offset = (pageNo - 1) * Number(pageSize);
const ret =
offset + Number(pageSize) >= array.length
? array.slice(offset, array.length)
: array.slice(offset, offset + Number(pageSize));
return ret;
return offset + Number(pageSize) >= array.length
? array.slice(offset, array.length)
: array.slice(offset, offset + Number(pageSize));
}
export interface requestParams {
method: string;
body: any;
headers?: { authorization?: string };
query: any;
}
/**
* @description 本函数用于从request数据中获取token请根据项目的实际情况修改
*
*/
export function getRequestToken({ headers }: requestParams): string | undefined {
return headers?.authorization;
}

View File

@@ -1,5 +1,6 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess } from '../_util';
import { resultSuccess, resultError } from '../_util';
import { ResultEnum } from '../../src/enums/httpEnum';
const userInfo = {
name: 'Vben',
@@ -51,4 +52,20 @@ export default [
return resultSuccess(userInfo);
},
},
{
url: '/basic-api/user/sessionTimeout',
method: 'post',
statusCode: 401,
response: () => {
return resultError();
},
},
{
url: '/basic-api/user/tokenExpired',
method: 'post',
statusCode: 200,
response: () => {
return resultError('Token Expired!', { code: ResultEnum.TIMEOUT as number });
},
},
] as MockMethod[];

325
mock/demo/api-cascader.ts Normal file
View File

@@ -0,0 +1,325 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess } from '../_util';
const areaList: any[] = [
{
id: '530825900854620160',
code: '430000',
parentCode: '100000',
levelType: 1,
name: '湖南省',
province: '湖南省',
city: null,
district: null,
town: null,
village: null,
parentPath: '430000',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 16:33:42',
customized: false,
usable: true,
},
{
id: '530825900883980288',
code: '430100',
parentCode: '430000',
levelType: 2,
name: '长沙市',
province: '湖南省',
city: '长沙市',
district: null,
town: null,
village: null,
parentPath: '430000,430100',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 16:33:42',
customized: false,
usable: true,
},
{
id: '530825900951089152',
code: '430102',
parentCode: '430100',
levelType: 3,
name: '芙蓉区',
province: '湖南省',
city: '长沙市',
district: '芙蓉区',
town: null,
village: null,
parentPath: '430000,430100,430102',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 16:33:42',
customized: false,
usable: true,
},
{
id: '530825901014003712',
code: '430104',
parentCode: '430100',
levelType: 3,
name: '岳麓区',
province: '湖南省',
city: '长沙市',
district: '岳麓区',
town: null,
village: null,
parentPath: '430000,430100,430104',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 16:33:42',
customized: false,
usable: true,
},
{
id: '530825900988837888',
code: '430103',
parentCode: '430100',
levelType: 3,
name: '天心区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: null,
village: null,
parentPath: '430000,430100,430103',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 16:33:42',
customized: false,
usable: true,
},
{
id: '530826672489115648',
code: '430103002',
parentCode: '430103',
levelType: 4,
name: '坡子街街道',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: null,
parentPath: '430000,430100,430103,430103002',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-12-14 15:26:43',
customized: false,
usable: true,
},
{
id: '530840241171607552',
code: '430103002001',
parentCode: '430103002',
levelType: 5,
name: '八角亭社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '八角亭社区',
parentPath: '430000,430100,430103,430103002,430103002001',
createTime: '2020-11-30 15:47:31',
updateTime: '2021-01-20 14:07:23',
customized: false,
usable: true,
},
{
id: '530840241200967680',
code: '430103002002',
parentCode: '430103002',
levelType: 5,
name: '西牌楼社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '西牌楼社区',
parentPath: '430000,430100,430103,430103002,430103002002',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241230327808',
code: '430103002003',
parentCode: '430103002',
levelType: 5,
name: '太平街社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '太平街社区',
parentPath: '430000,430100,430103,430103002,430103002003',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241259687936',
code: '430103002005',
parentCode: '430103002',
levelType: 5,
name: '坡子街社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '坡子街社区',
parentPath: '430000,430100,430103,430103002,430103002005',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241284853760',
code: '430103002006',
parentCode: '430103002',
levelType: 5,
name: '青山祠社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '青山祠社区',
parentPath: '430000,430100,430103,430103002,430103002006',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241310019584',
code: '430103002007',
parentCode: '430103002',
levelType: 5,
name: '沙河社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '沙河社区',
parentPath: '430000,430100,430103,430103002,430103002007',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241381322752',
code: '430103002008',
parentCode: '430103002',
levelType: 5,
name: '碧湘社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '碧湘社区',
parentPath: '430000,430100,430103,430103002,430103002008',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241410682880',
code: '430103002009',
parentCode: '430103002',
levelType: 5,
name: '创远社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '创远社区',
parentPath: '430000,430100,430103,430103002,430103002009',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241431654400',
code: '430103002010',
parentCode: '430103002',
levelType: 5,
name: '楚湘社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '楚湘社区',
parentPath: '430000,430100,430103,430103002,430103002010',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241465208832',
code: '430103002011',
parentCode: '430103002',
levelType: 5,
name: '西湖社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '西湖社区',
parentPath: '430000,430100,430103,430103002,430103002011',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241502957568',
code: '430103002012',
parentCode: '430103002',
levelType: 5,
name: '登仁桥社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '登仁桥社区',
parentPath: '430000,430100,430103,430103002,430103002012',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
{
id: '530840241553289216',
code: '430103002013',
parentCode: '430103002',
levelType: 5,
name: '文庙坪社区',
province: '湖南省',
city: '长沙市',
district: '天心区',
town: '坡子街街道',
village: '文庙坪社区',
parentPath: '430000,430100,430103,430103002,430103002013',
createTime: '2020-11-30 15:47:31',
updateTime: '2020-11-30 17:30:41',
customized: false,
usable: true,
},
];
export default [
{
url: '/basic-api/cascader/getAreaRecord',
timeout: 1000,
method: 'post',
response: ({ body }) => {
const { parentCode } = body || {};
if (!parentCode) {
return resultSuccess(areaList.filter((it) => it.code === '430000'));
}
return resultSuccess(areaList.filter((it) => it.parentCode === parentCode));
},
},
] as MockMethod[];

View File

@@ -1,25 +1,28 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess } from '../_util';
const demoList = (() => {
const result: any[] = [];
for (let index = 0; index < 20; index++) {
result.push({
label: `选项${index}`,
value: `${index}`,
const demoList = (keyword, count = 20) => {
const result = {
list: [] as any[],
};
for (let index = 0; index < count; index++) {
result.list.push({
name: `${keyword ?? ''}选项${index}`,
id: `${index}`,
});
}
return result;
})();
};
export default [
{
url: '/basic-api/select/getDemoOptions',
timeout: 2000,
timeout: 1000,
method: 'get',
response: ({ query }) => {
console.log(query);
return resultSuccess(demoList);
const { keyword, count } = query;
console.log(keyword);
return resultSuccess(demoList(keyword, count));
},
},
] as MockMethod[];

View File

@@ -1,5 +1,5 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultPageSuccess, resultSuccess } from '../_util';
import { resultError, resultPageSuccess, resultSuccess } from '../_util';
const accountList = (() => {
const result: any[] = [];
@@ -22,12 +22,13 @@ const roleList = (() => {
const result: any[] = [];
for (let index = 0; index < 4; index++) {
result.push({
id: `${index}`,
id: index + 1,
orderNo: `${index + 1}`,
roleName: ['超级管理员', '管理员', '文章管理员', '普通用户'][index],
roleValue: '@first',
createTime: '@datetime',
remark: '@cword(10,20)',
menu: [['0', '1', '2'], ['0', '1'], ['0', '2'], ['2']][index],
'status|1': ['0', '1'],
});
}
@@ -72,6 +73,7 @@ const menuList = (() => {
id: `${index}`,
icon: ['ion:layers-outline', 'ion:git-compare-outline', 'ion:tv-outline'][index],
component: 'LAYOUT',
type: '0',
menuName: ['Dashboard', '权限管理', '功能'][index],
permission: '',
orderNo: index + 1,
@@ -82,6 +84,7 @@ const menuList = (() => {
for (let j = 0; j < 4; j++) {
children.push({
id: `${index}-${j}`,
type: '1',
menuName: ['菜单1', '菜单2', '菜单3', '菜单4'][j],
icon: 'ion:document',
permission: ['menu1:view', 'menu2:add', 'menu3:update', 'menu4:del'][index],
@@ -95,7 +98,33 @@ const menuList = (() => {
createTime: '@datetime',
'status|1': ['0', '1'],
parentMenu: `${index}`,
children: undefined,
children: (() => {
const children: any[] = [];
for (let k = 0; k < 4; k++) {
children.push({
id: `${index}-${j}-${k}`,
type: '2',
menuName: '按钮' + (j + 1) + '-' + (k + 1),
icon: '',
permission:
['menu1:view', 'menu2:add', 'menu3:update', 'menu4:del'][index] +
':btn' +
(k + 1),
component: [
'/dashboard/welcome/index',
'/dashboard/analysis/index',
'/dashboard/workbench/index',
'/dashboard/test/index',
][j],
orderNo: j + 1,
createTime: '@datetime',
'status|1': ['0', '1'],
parentMenu: `${index}-${j}`,
children: undefined,
});
}
return children;
})(),
});
}
return children;
@@ -124,6 +153,15 @@ export default [
return resultPageSuccess(page, pageSize, roleList);
},
},
{
url: '/basic-api/system/setRoleStatus',
timeout: 500,
method: 'post',
response: ({ query }) => {
const { id, status } = query;
return resultSuccess({ id, status });
},
},
{
url: '/basic-api/system/getAllRoleList',
timeout: 100,
@@ -148,4 +186,17 @@ export default [
return resultSuccess(menuList);
},
},
{
url: '/basic-api/system/accountExist',
timeout: 500,
method: 'post',
response: ({ body }) => {
const { account } = body || {};
if (account && account.indexOf('admin') !== -1) {
return resultError('该字段不能包含admin');
} else {
return resultSuccess(`${account} can use`);
}
},
},
] as MockMethod[];

View File

@@ -1,9 +1,18 @@
import { MockMethod } from 'vite-plugin-mock';
import { Random } from 'mockjs';
import { resultPageSuccess } from '../_util';
function getRandomPics(count = 10): string[] {
const arr: string[] = [];
for (let i = 0; i < count; i++) {
arr.push(Random.image('800x600', Random.color(), Random.color(), Random.title()));
}
return arr;
}
const demoList = (() => {
const result: any[] = [];
for (let index = 0; index < 60; index++) {
for (let index = 0; index < 200; index++) {
result.push({
id: `${index}`,
beginTime: '@datetime',
@@ -18,6 +27,11 @@ const demoList = (() => {
name6: '@cname()',
name7: '@cname()',
name8: '@cname()',
avatar: Random.image('400x400', Random.color(), Random.color(), Random.first()),
imgArr: getRandomPics(Math.ceil(Math.random() * 3) + 1),
imgs: getRandomPics(Math.ceil(Math.random() * 3) + 1),
date: `@date('yyyy-MM-dd')`,
time: `@time('HH:mm')`,
'no|100000-10000000': 100000,
'status|1': ['normal', 'enable', 'disable'],
});

38
mock/demo/tree-demo.ts Normal file
View File

@@ -0,0 +1,38 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess } from '../_util';
const demoTreeList = (keyword) => {
const result = {
list: [] as Recordable[],
};
for (let index = 0; index < 5; index++) {
const children: Recordable[] = [];
for (let j = 0; j < 3; j++) {
children.push({
title: `${keyword ?? ''}选项${index}-${j}`,
value: `${index}-${j}`,
key: `${index}-${j}`,
});
}
result.list.push({
title: `${keyword ?? ''}选项${index}`,
value: `${index}`,
key: `${index}`,
children,
});
}
return result;
};
export default [
{
url: '/basic-api/tree/getDemoOptions',
timeout: 1000,
method: 'get',
response: ({ query }) => {
const { keyword } = query;
console.log(keyword);
return resultSuccess(demoTreeList(keyword));
},
},
] as MockMethod[];

View File

@@ -1,59 +1,46 @@
import { resultSuccess } from '../_util';
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess, resultError, getRequestToken, requestParams } from '../_util'
import { MockMethod } from 'vite-plugin-mock'
import { createFakeUserList } from './user'
// single
const dashboardRoute = {
path: '/home',
name: 'Welcome',
component: '/dashboard/welcome/index',
path: '/dashboard',
name: 'Dashboard',
component: 'LAYOUT',
redirect: '/dashboard/analysis',
meta: {
title: 'routes.dashboard.welcome',
affix: true,
title: 'routes.dashboard.dashboard',
hideChildrenInMenu: true,
icon: 'bx:bx-home',
},
};
const frontRoute = {
path: 'front',
name: 'PermissionFrontDemo',
meta: {
title: 'routes.demo.permission.front',
},
children: [
{
path: 'page',
name: 'FrontPageAuth',
component: '/demo/permission/front/index',
path: 'analysis',
name: 'Analysis',
component: '/dashboard/analysis/index',
meta: {
title: 'routes.demo.permission.frontPage',
hideMenu: true,
hideBreadcrumb: true,
title: 'routes.dashboard.analysis',
currentActiveMenu: '/dashboard',
icon: 'bx:bx-home',
},
},
{
path: 'btn',
name: 'FrontBtnAuth',
component: '/demo/permission/front/Btn',
path: 'workbench',
name: 'Workbench',
component: '/dashboard/workbench/index',
meta: {
title: 'routes.demo.permission.frontBtn',
},
},
{
path: 'auth-pageA',
name: 'FrontAuthPageA',
component: '/demo/permission/front/AuthPageA',
meta: {
title: 'routes.demo.permission.frontTestA',
},
},
{
path: 'auth-pageB',
name: 'FrontAuthPageB',
component: '/demo/permission/front/AuthPageB',
meta: {
title: 'routes.demo.permission.frontTestB',
hideMenu: true,
hideBreadcrumb: true,
title: 'routes.dashboard.workbench',
currentActiveMenu: '/dashboard',
icon: 'bx:bx-home',
},
},
],
};
}
const backRoute = {
path: 'back',
name: 'PermissionBackDemo',
@@ -79,20 +66,9 @@ const backRoute = {
},
},
],
};
}
const authRoute = {
path: '/permission',
name: 'Permission',
component: 'LAYOUT',
redirect: '/permission/front/page',
meta: {
icon: 'carbon:user-role',
title: 'routes.demo.permission.permission',
},
children: [frontRoute, backRoute],
};
const authRoute1 = {
path: '/permission',
name: 'Permission',
component: 'LAYOUT',
@@ -102,7 +78,7 @@ const authRoute1 = {
title: 'routes.demo.permission.permission',
},
children: [backRoute],
};
}
const levelRoute = {
path: '/level',
@@ -158,20 +134,127 @@ const levelRoute = {
},
},
],
};
}
const sysRoute = {
path: '/system',
name: 'System',
component: 'LAYOUT',
redirect: '/system/account',
meta: {
icon: 'ion:settings-outline',
title: 'routes.demo.system.moduleName',
},
children: [
{
path: 'account',
name: 'AccountManagement',
meta: {
title: 'routes.demo.system.account',
ignoreKeepAlive: true,
},
component: '/demo/system/account/index',
},
{
path: 'account_detail/:id',
name: 'AccountDetail',
meta: {
hideMenu: true,
title: 'routes.demo.system.account_detail',
ignoreKeepAlive: true,
showMenu: false,
currentActiveMenu: '/system/account',
},
component: '/demo/system/account/AccountDetail',
},
{
path: 'role',
name: 'RoleManagement',
meta: {
title: 'routes.demo.system.role',
ignoreKeepAlive: true,
},
component: '/demo/system/role/index',
},
{
path: 'dept',
name: 'DeptManagement',
meta: {
title: 'routes.demo.system.dept',
ignoreKeepAlive: true,
},
component: '/demo/system/dept/index',
},
{
path: 'changePassword',
name: 'ChangePassword',
meta: {
title: 'routes.demo.system.password',
ignoreKeepAlive: true,
},
component: '/demo/system/password/index',
},
],
}
const linkRoute = {
path: '/link',
name: 'Link',
component: 'LAYOUT',
meta: {
icon: 'ion:tv-outline',
title: 'routes.demo.iframe.frame',
},
children: [
{
path: 'doc',
name: 'Doc',
meta: {
title: 'routes.demo.iframe.doc',
frameSrc: 'https://vvbin.cn/doc-next/',
},
},
{
path: 'https://vvbin.cn/doc-next/',
name: 'DocExternal',
component: 'LAYOUT',
meta: {
title: 'routes.demo.iframe.docExternal',
},
},
],
}
export default [
{
url: '/basic-api/getMenuListById',
url: '/basic-api/getMenuList',
timeout: 1000,
method: 'get',
response: ({ query }) => {
const { id } = query;
if (!id || id === '1') {
return resultSuccess([dashboardRoute, authRoute, levelRoute]);
response: (request: requestParams) => {
const token = getRequestToken(request)
if (!token) {
return resultError('Invalid token!')
}
if (id === '2') {
return resultSuccess([dashboardRoute, authRoute1, levelRoute]);
const checkUser = createFakeUserList().find((item) => item.token === token)
if (!checkUser) {
return resultError('Invalid user token!')
}
const id = checkUser.userId
let menu: Object[]
switch (id) {
case '1':
dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[0].path
menu = [dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute]
break
case '2':
dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[1].path
menu = [dashboardRoute, authRoute, levelRoute, linkRoute]
break
default:
menu = []
}
return resultSuccess(menu)
},
},
] as MockMethod[];
] as MockMethod[]

View File

@@ -1,15 +1,17 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultError, resultSuccess } from '../_util';
import { resultError, resultSuccess, getRequestToken, requestParams } from '../_util';
function createFakeUserList() {
export function createFakeUserList() {
return [
{
userId: '1',
username: 'vben',
realName: 'Vben Admin',
avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
desc: 'manager',
password: '123456',
token: 'fakeToken1',
homePath: '/dashboard/analysis',
roles: [
{
roleName: 'Super Admin',
@@ -22,8 +24,10 @@ function createFakeUserList() {
username: 'test',
password: '123456',
realName: 'test user',
avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
desc: 'tester',
token: 'fakeToken2',
homePath: '/dashboard/workbench',
roles: [
{
roleName: 'Tester',
@@ -48,7 +52,7 @@ export default [
response: ({ body }) => {
const { username, password } = body;
const checkUser = createFakeUserList().find(
(item) => item.username === username && password === item.password
(item) => item.username === username && password === item.password,
);
if (!checkUser) {
return resultError('Incorrect account or password');
@@ -65,11 +69,12 @@ export default [
},
},
{
url: '/basic-api/getUserInfoById',
url: '/basic-api/getUserInfo',
method: 'get',
response: ({ query }) => {
const { userId } = query;
const checkUser = createFakeUserList().find((item) => item.userId === userId);
response: (request: requestParams) => {
const token = getRequestToken(request);
if (!token) return resultError('Invalid token');
const checkUser = createFakeUserList().find((item) => item.token === token);
if (!checkUser) {
return resultError('The corresponding user information was not obtained!');
}
@@ -77,17 +82,41 @@ export default [
},
},
{
url: '/basic-api/getPermCodeByUserId',
url: '/basic-api/getPermCode',
timeout: 200,
method: 'get',
response: ({ query }) => {
const { userId } = query;
if (!userId) {
return resultError('userId is not null!');
response: (request: requestParams) => {
const token = getRequestToken(request);
if (!token) return resultError('Invalid token');
const checkUser = createFakeUserList().find((item) => item.token === token);
if (!checkUser) {
return resultError('Invalid token!');
}
const codeList = fakeCodeList[userId];
const codeList = fakeCodeList[checkUser.userId];
return resultSuccess(codeList);
},
},
{
url: '/basic-api/logout',
timeout: 200,
method: 'get',
response: (request: requestParams) => {
const token = getRequestToken(request);
if (!token) return resultError('Invalid token');
const checkUser = createFakeUserList().find((item) => item.token === token);
if (!checkUser) {
return resultError('Invalid token!');
}
return resultSuccess(undefined, { message: 'Token has been destroyed' });
},
},
{
url: '/basic-api/testRetry',
statusCode: 405,
method: 'get',
response: () => {
return resultError('Error!');
},
},
] as MockMethod[];

View File

@@ -1,130 +1,151 @@
{
"name": "vben-admin",
"version": "2.1.1",
"version": "2.8.0",
"author": {
"name": "vben",
"email": "anncwb@126.com",
"url": "https://github.com/anncwb"
},
"scripts": {
"bootstrap": "yarn install",
"serve": "npx --max_old_space_size=4096 vite",
"dev": "npx --max_old_space_size=4096 vite",
"build": "vite build && esno ./build/script/postBuild.ts",
"build:no-cache": "yarn clean:cache && npm run build",
"report": "cross-env REPORT=true npm run build ",
"commit": "czg",
"bootstrap": "pnpm install",
"serve": "npm run dev",
"dev": "vite",
"build": "cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts",
"build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts",
"build:no-cache": "pnpm clean:cache && npm run build",
"report": "cross-env REPORT=true npm run build",
"type:check": "vue-tsc --noEmit --skipLibCheck",
"preview": "npm run build && vite preview",
"preview:dist": "vite preview",
"log": "conventional-changelog -p angular -i CHANGELOG.md -s",
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
"clean:lib": "rimraf node_modules",
"lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
"lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
"lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
"lint:pretty": "pretty-quick --staged",
"test:gzip": "http-server dist --cors --gzip -c-1",
"test:br": "http-server dist --cors --brotli -c-1",
"reinstall": "rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",
"install:husky": "is-ci || husky install",
"gen:icon": "esno ./build/generate/icon/index.ts",
"postinstall": "npm run install:husky"
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
"lint:prettier": "prettier --write \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
"lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged",
"test:unit": "jest",
"test:gzip": "npx http-server dist --cors --gzip -c-1",
"test:br": "npx http-server dist --cors --brotli -c-1",
"reinstall": "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",
"prepare": "husky install",
"gen:icon": "esno ./build/generate/icon/index.ts"
},
"dependencies": {
"@iconify/iconify": "^2.0.0-rc.6",
"@vueuse/core": "^4.5.0",
"@zxcvbn-ts/core": "^0.3.0",
"ant-design-vue": "2.1.0",
"apexcharts": "^3.26.0",
"axios": "^0.21.1",
"crypto-js": "^4.0.0",
"echarts": "^5.0.2",
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-vue": "^6.1.0",
"@iconify/iconify": "^2.2.1",
"@logicflow/core": "^1.1.13",
"@logicflow/extension": "^1.1.13",
"@vue/runtime-core": "^3.2.33",
"@vue/shared": "^3.2.33",
"@vueuse/core": "^8.3.0",
"@vueuse/shared": "^8.3.0",
"@zxcvbn-ts/core": "^2.0.1",
"ant-design-vue": "^3.2.0",
"axios": "^0.26.1",
"codemirror": "^5.65.3",
"cropperjs": "^1.5.12",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.1",
"echarts": "^5.3.2",
"intro.js": "^5.1.0",
"lodash-es": "^4.17.21",
"mockjs": "^1.1.0",
"nprogress": "^0.2.0",
"path-to-regexp": "^6.2.0",
"qrcode": "^1.4.4",
"sortablejs": "^1.13.0",
"vditor": "^3.8.3",
"vue": "^3.0.7",
"vue-i18n": "^9.0.0",
"vue-router": "^4.0.5",
"vue-types": "^3.0.2",
"vuex": "^4.0.0",
"vuex-module-decorators": "^1.0.1",
"xlsx": "^0.16.9"
"pinia": "2.0.12",
"qs": "^6.10.3",
"resize-observer-polyfill": "^1.5.1",
"showdown": "^2.1.0",
"sortablejs": "^1.15.0",
"tinymce": "^5.10.3",
"vditor": "^3.8.13",
"vue": "^3.2.34",
"vue-i18n": "^9.1.9",
"vue-json-pretty": "^2.0.6",
"vue-router": "^4.0.14",
"vue-types": "^4.1.1",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@commitlint/cli": "^12.0.1",
"@commitlint/config-conventional": "^12.0.1",
"@iconify/json": "^1.1.322",
"@purge-icons/generated": "^0.7.0",
"@types/crypto-js": "^4.0.1",
"@types/fs-extra": "^9.0.8",
"@types/http-proxy": "^1.17.5",
"@types/inquirer": "^7.3.1",
"@types/lodash-es": "^4.17.4",
"@types/mockjs": "^1.0.3",
"@types/node": "^14.14.35",
"@commitlint/cli": "^16.2.3",
"@commitlint/config-conventional": "^16.2.1",
"@iconify/json": "^2.1.30",
"@purge-icons/generated": "^0.8.1",
"@types/codemirror": "^5.60.5",
"@types/crypto-js": "^4.1.1",
"@types/fs-extra": "^9.0.13",
"@types/inquirer": "^8.2.1",
"@types/intro.js": "^3.0.2",
"@types/lodash-es": "^4.17.6",
"@types/mockjs": "^1.0.6",
"@types/node": "^17.0.25",
"@types/nprogress": "^0.2.0",
"@types/qrcode": "^1.4.0",
"@types/qs": "^6.9.6",
"@types/rollup-plugin-visualizer": "^2.6.0",
"@types/sortablejs": "^1.10.6",
"@types/yargs": "^16.0.0",
"@typescript-eslint/eslint-plugin": "^4.19.0",
"@typescript-eslint/parser": "^4.19.0",
"@vitejs/plugin-legacy": "^1.3.1",
"@vitejs/plugin-vue": "^1.1.5",
"@vitejs/plugin-vue-jsx": "^1.1.2",
"@vue/compiler-sfc": "^3.0.7",
"autoprefixer": "^10.2.5",
"body-parser": "^1.19.0",
"commitizen": "^4.2.3",
"conventional-changelog-cli": "^2.1.1",
"@types/qs": "^6.9.7",
"@types/showdown": "^1.9.4",
"@types/sortablejs": "^1.10.7",
"@typescript-eslint/eslint-plugin": "^5.20.0",
"@typescript-eslint/parser": "^5.20.0",
"@vitejs/plugin-legacy": "^1.8.1",
"@vitejs/plugin-vue": "^2.3.1",
"@vitejs/plugin-vue-jsx": "^1.3.10",
"@vue/compiler-sfc": "^3.2.33",
"@vue/test-utils": "^2.0.0-rc.21",
"autoprefixer": "^10.4.4",
"conventional-changelog-cli": "^2.2.2",
"cross-env": "^7.0.3",
"dotenv": "^8.2.0",
"eslint": "^7.22.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^7.8.0",
"esno": "^0.5.0",
"fs-extra": "^9.1.0",
"http-server": "^0.12.3",
"husky": "^5.2.0",
"inquirer": "^8.0.0",
"is-ci": "^3.0.0",
"less": "^4.1.1",
"lint-staged": "^10.5.4",
"madge": "^4.0.2",
"postcss": "^8.2.8",
"prettier": "^2.2.1",
"pretty-quick": "^3.1.0",
"cz-git": "^1.3.11",
"czg": "^1.3.11",
"dotenv": "^16.0.0",
"eslint": "^8.13.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.6.0",
"esno": "^0.14.1",
"fs-extra": "^10.1.0",
"husky": "^7.0.4",
"inquirer": "^8.2.2",
"less": "^4.1.2",
"lint-staged": "12.3.7",
"npm-run-all": "^4.1.5",
"picocolors": "^1.0.0",
"postcss": "^8.4.12",
"postcss-html": "^1.4.1",
"postcss-less": "^6.0.0",
"prettier": "^2.6.2",
"rimraf": "^3.0.2",
"rollup-plugin-visualizer": "4.2.2",
"stylelint": "^13.12.0",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-standard": "^21.0.0",
"stylelint-order": "^4.1.0",
"ts-node": "^9.1.1",
"typescript": "4.2.3",
"vite": "2.1.3",
"vite-plugin-compression": "^0.2.3",
"vite-plugin-html": "^2.0.3",
"vite-plugin-imagemin": "^0.2.9",
"vite-plugin-mock": "^2.4.0",
"vite-plugin-purge-icons": "^0.7.0",
"vite-plugin-pwa": "^0.6.2",
"vite-plugin-style-import": "^0.8.3",
"vite-plugin-svg-icons": "^0.4.0",
"vite-plugin-theme": "^0.5.0",
"vite-plugin-windicss": "0.9.11",
"vue-eslint-parser": "^7.6.0",
"yargs": "^16.2.0"
"rollup": "^2.70.2",
"rollup-plugin-visualizer": "^5.6.0",
"stylelint": "^14.7.1",
"stylelint-config-prettier": "^9.0.3",
"stylelint-config-recommended": "^7.0.0",
"stylelint-config-recommended-vue": "^1.4.0",
"stylelint-config-standard": "^25.0.0",
"stylelint-order": "^5.0.0",
"ts-node": "^10.7.0",
"typescript": "^4.6.3",
"vite": "^2.9.5",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-html": "^3.2.0",
"vite-plugin-imagemin": "^0.6.1",
"vite-plugin-mkcert": "^1.6.0",
"vite-plugin-mock": "^2.9.6",
"vite-plugin-purge-icons": "^0.8.1",
"vite-plugin-pwa": "^0.11.13",
"vite-plugin-style-import": "^2.0.0",
"vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-theme": "^0.8.6",
"vite-plugin-vue-setup-extend": "^0.4.0",
"vite-plugin-windicss": "^1.8.4",
"vue-eslint-parser": "^8.3.0",
"vue-tsc": "^0.33.9"
},
"resolutions": {
"//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it",
"bin-wrapper": "npm:bin-wrapper-china"
"bin-wrapper": "npm:bin-wrapper-china",
"rollup": "^2.56.3",
"gifsicle": "5.2.0"
},
"repository": {
"type": "git",
@@ -137,5 +158,34 @@
"homepage": "https://github.com/anncwb/vue-vben-admin",
"engines": {
"node": "^12 || >=14"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
"prettier --write--parser json"
],
"package.json": [
"prettier --write"
],
"*.vue": [
"eslint --fix",
"prettier --write",
"stylelint --fix"
],
"*.{scss,less,styl,html}": [
"stylelint --fix",
"prettier --write"
],
"*.md": [
"prettier --write"
]
},
"config": {
"commitizen": {
"path": "node_modules/cz-git"
}
}
}

10230
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +1,10 @@
module.exports = {
printWidth: 100,
tabWidth: 2,
useTabs: false,
semi: true,
semi: false,
vueIndentScriptAndStyle: true,
singleQuote: true,
quoteProps: 'as-needed',
bracketSpacing: true,
trailingComma: 'es5',
jsxBracketSameLine: false,
jsxSingleQuote: false,
arrowParens: 'always',
insertPragma: false,
requirePragma: false,
trailingComma: 'all',
proseWrap: 'never',
htmlWhitespaceSensitivity: 'strict',
endOfLine: 'lf',
rangeStart: 0,
};
endOfLine: 'auto',
}

View File

@@ -0,0 +1,419 @@
tinymce.addI18n('es', {
Redo: 'Rehacer',
Undo: 'Deshacer',
Cut: 'Cortar',
Copy: 'Copiar',
Paste: 'Pegar',
'Select all': 'Seleccionar todo',
'New document': 'Nuevo documento',
Ok: 'Ok',
Cancel: 'Cancelar',
'Visual aids': 'Ayudas visuales',
Bold: 'Negrita',
Italic: 'Cursiva',
Underline: 'Subrayado',
Strikethrough: 'Tachado',
Superscript: 'Super\u00edndice',
Subscript: 'Sub\u00edndice',
'Clear formatting': 'Limpiar formato',
'Align left': 'Alinear a la izquierda',
'Align center': 'Alinear al centro',
'Align right': 'Alinear a la derecha',
Justify: 'Justificar',
'Bullet list': 'Lista de vi\u00f1etas',
'Numbered list': 'Lista numerada',
'Decrease indent': 'Disminuir sangr\u00eda',
'Increase indent': 'Incrementar sangr\u00eda',
Close: 'Cerrar',
Formats: 'Formatos',
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": 'Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X\/C\/V de su teclado.',
Headers: 'Encabezados',
'Header 1': 'Encabezado 1',
'Header 2': 'Encabezado 2',
'Header 3': 'Encabezado 3',
'Header 4': 'Encabezado 4',
'Header 5': 'Encabezado 5',
'Header 6': 'Encabezado 6',
Headings: 'Encabezados',
'Heading 1': 'Encabezado 1',
'Heading 2': 'Encabezado 2',
'Heading 3': 'Encabezado 3',
'Heading 4': 'Encabezado 4',
'Heading 5': 'Encabezado 5',
'Heading 6': 'Encabezado 6',
Preformatted: 'Con formato previo',
Div: 'Div',
Pre: 'Pre',
Code: 'C\u00f3digo',
Paragraph: 'P\u00e1rrafo',
Blockquote: 'Blockquote',
Inline: 'Alineado',
Blocks: 'Bloques',
'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.': 'Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.',
Fonts: 'Fuentes',
'Font Sizes': 'Tama\u00f1os de fuente',
Class: 'Clase',
'Browse for an image': 'Buscar una imagen',
OR: 'OR',
'Drop an image here': 'Arrastre una imagen aqu\u00ed',
Upload: 'Cargar',
Block: 'Bloque',
Align: 'Alinear',
Default: 'Por defecto',
Circle: 'C\u00edrculo',
Disc: 'Disco',
Square: 'Cuadrado',
'Lower Alpha': 'Inferior Alfa',
'Lower Greek': 'Inferior Griega',
'Lower Roman': 'Inferior Romana',
'Upper Alpha': 'Superior Alfa',
'Upper Roman': 'Superior Romana',
'Anchor...': 'Anclaje...',
Name: 'Nombre',
Id: 'Id',
'Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.': 'Deber\u00eda comenzar por una letra, seguida solo de letras, n\u00fameros, guiones, puntos, dos puntos o guiones bajos.',
'You have unsaved changes are you sure you want to navigate away?': 'Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir?',
'Restore last draft': 'Restaurar el \u00faltimo borrador',
'Special character...': 'Car\u00e1cter especial...',
'Source code': 'C\u00f3digo fuente',
'Insert\/Edit code sample': 'Insertar\/editar c\u00f3digo de prueba',
Language: 'Idioma',
'Code sample...': 'Ejemplo de c\u00f3digo...',
'Color Picker': 'Selector de colores',
R: 'R',
G: 'V',
B: 'A',
'Left to right': 'De izquierda a derecha',
'Right to left': 'De derecha a izquierda',
'Emoticons...': 'Emoticones...',
'Metadata and Document Properties': 'Metadatos y propiedades del documento',
Title: 'T\u00edtulo',
Keywords: 'Palabras clave',
Description: 'Descripci\u00f3n',
Robots: 'Robots',
Author: 'Autor',
Encoding: 'Codificaci\u00f3n',
Fullscreen: 'Pantalla completa',
Action: 'Acci\u00f3n',
Shortcut: 'Atajo',
Help: 'Ayuda',
Address: 'Direcci\u00f3n',
'Focus to menubar': 'Enfocar la barra del men\u00fa',
'Focus to toolbar': 'Enfocar la barra de herramientas',
'Focus to element path': 'Enfocar la ruta del elemento',
'Focus to contextual toolbar': 'Enfocar la barra de herramientas contextual',
'Insert link (if link plugin activated)': 'Insertar enlace (si el complemento de enlace est\u00e1 activado)',
'Save (if save plugin activated)': 'Guardar (si el componente de salvar est\u00e1 activado)',
'Find (if searchreplace plugin activated)': 'Buscar (si el complemento buscar-remplazar est\u00e1 activado)',
'Plugins installed ({0}):': 'Plugins instalados ({0}):',
'Premium plugins:': 'Complementos premium:',
'Learn more...': 'Aprende m\u00e1s...',
'You are using {0}': 'Estas usando {0}',
Plugins: 'Complementos',
'Handy Shortcuts': 'Accesos directos',
'Horizontal line': 'L\u00ednea horizontal',
'Insert\/edit image': 'Insertar\/editar imagen',
'Image description': 'Descripci\u00f3n de la imagen',
Source: 'Enlace',
Dimensions: 'Dimensiones',
'Constrain proportions': 'Restringir proporciones',
General: 'General',
Advanced: 'Avanzado',
Style: 'Estilo',
'Vertical space': 'Espacio vertical',
'Horizontal space': 'Espacio horizontal',
Border: 'Borde',
'Insert image': 'Insertar imagen',
'Image...': 'Imagen...',
'Image list': 'Lista de im\u00e1genes',
'Rotate counterclockwise': 'Girar a la izquierda',
'Rotate clockwise': 'Girar a la derecha',
'Flip vertically': 'Invertir verticalmente',
'Flip horizontally': 'Invertir horizontalmente',
'Edit image': 'Editar imagen',
'Image options': 'Opciones de imagen',
'Zoom in': 'Acercar',
'Zoom out': 'Alejar',
Crop: 'Recortar',
Resize: 'Redimensionar',
Orientation: 'Orientaci\u00f3n',
Brightness: 'Brillo',
Sharpen: 'Forma',
Contrast: 'Contraste',
'Color levels': 'Niveles de color',
Gamma: 'Gamma',
Invert: 'Invertir',
Apply: 'Aplicar',
Back: 'Atr\u00e1s',
'Insert date\/time': 'Insertar fecha\/hora',
'Date\/time': 'Fecha\/hora',
'Insert\/Edit Link': 'Insertar\/editar enlace',
'Insert\/edit link': 'Insertar\/editar enlace',
'Text to display': 'Texto para mostrar',
Url: 'URL',
'Open link in...': 'Abrir enlace en...',
'Current window': 'Ventana actual',
None: 'Ninguno',
'New window': 'Nueva ventana',
'Remove link': 'Quitar enlace',
Anchors: 'Anclas',
'Link...': 'Enlace...',
'Paste or type a link': 'Pega o introduce un enlace',
'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?': 'El enlace que has introducido no parece ser una direcci\u00f3n de correo electr\u00f3nico. Quieres a\u00f1adir el prefijo necesario mailto: ?',
'The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?': 'El enlace que has introducido no parece ser una enlace externo. Quieres a\u00f1adir el prefijo necesario http:\/\/ ?',
'Link list': 'Lista de enlaces',
'Insert video': 'Insertar video',
'Insert\/edit video': 'Insertar\/editar video',
'Insert\/edit media': 'Insertar\/editar medio',
'Alternative source': 'Enlace alternativo',
'Alternative source URL': 'Origen de URL alternativo',
'Media poster (Image URL)': 'P\u00f3ster de medio (URL de imagen)',
'Paste your embed code below:': 'Pega tu c\u00f3digo embebido debajo',
Embed: 'Incrustado',
'Media...': 'Medios...',
'Nonbreaking space': 'Espacio fijo',
'Page break': 'Salto de p\u00e1gina',
'Paste as text': 'Pegar como texto',
Preview: 'Previsualizar',
'Print...': 'Imprimir...',
Save: 'Guardar',
Find: 'Buscar',
'Replace with': 'Reemplazar con',
Replace: 'Reemplazar',
'Replace all': 'Reemplazar todo',
Previous: 'Anterior',
Next: 'Siguiente',
'Find and replace...': 'Buscar y reemplazar...',
'Could not find the specified string.': 'No se encuentra la cadena de texto especificada',
'Match case': 'Coincidencia exacta',
'Find whole words only': 'Solo palabras completas',
'Spell check': 'Revisar ortograf\u00eda',
Ignore: 'Ignorar',
'Ignore all': 'Ignorar todos',
Finish: 'Finalizar',
'Add to Dictionary': 'A\u00f1adir al Diccionario',
'Insert table': 'Insertar tabla',
'Table properties': 'Propiedades de la tabla',
'Delete table': 'Eliminar tabla',
Cell: 'Celda',
Row: 'Fila',
Column: 'Columna',
'Cell properties': 'Propiedades de la celda',
'Merge cells': 'Combinar celdas',
'Split cell': 'Dividir celdas',
'Insert row before': 'Insertar fila antes',
'Insert row after': 'Insertar fila despu\u00e9s ',
'Delete row': 'Eliminar fila',
'Row properties': 'Propiedades de la fila',
'Cut row': 'Cortar fila',
'Copy row': 'Copiar fila',
'Paste row before': 'Pegar la fila antes',
'Paste row after': 'Pegar la fila despu\u00e9s',
'Insert column before': 'Insertar columna antes',
'Insert column after': 'Insertar columna despu\u00e9s',
'Delete column': 'Eliminar columna',
Cols: 'Columnas',
Rows: 'Filas',
Width: 'Ancho',
Height: 'Alto',
'Cell spacing': 'Espacio entre celdas',
'Cell padding': 'Relleno de celda',
'Show caption': 'Mostrar t\u00edtulo',
Left: 'Izquierda',
Center: 'Centrado',
Right: 'Derecha',
'Cell type': 'Tipo de celda',
Scope: '\u00c1mbito',
Alignment: 'Alineaci\u00f3n',
'H Align': 'Alineamiento Horizontal',
'V Align': 'Alineamiento Vertical',
Top: 'Arriba',
Middle: 'Centro',
Bottom: 'Abajo',
'Header cell': 'Celda de la cebecera',
'Row group': 'Grupo de filas',
'Column group': 'Grupo de columnas',
'Row type': 'Tipo de fila',
Header: 'Cabecera',
Body: 'Cuerpo',
Footer: 'Pie de p\u00e1gina',
'Border color': 'Color del borde',
'Insert template...': 'Insertar plantilla...',
Templates: 'Plantillas',
Template: 'Plantilla',
'Text color': 'Color del texto',
'Background color': 'Color de fondo',
'Custom...': 'Personalizar...',
'Custom color': 'Color personalizado',
'No color': 'Sin color',
'Remove color': 'Quitar color',
'Table of Contents': 'Tabla de contenidos',
'Show blocks': 'Mostrar bloques',
'Show invisible characters': 'Mostrar caracteres invisibles',
'Word count': 'Contar palabras',
Count: 'Recuento',
Document: 'Documento',
Selection: 'Selecci\u00f3n',
Words: 'Palabras',
'Words: {0}': 'Palabras: {0}',
'{0} words': '{0} palabras',
File: 'Archivo',
Edit: 'Editar',
Insert: 'Insertar',
View: 'Ver',
Format: 'Formato',
Table: 'Tabla',
Tools: 'Herramientas',
'Powered by {0}': 'Desarrollado por {0}',
'Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help': '\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda',
'Image title': 'Titulo de imagen',
'Border width': 'Ancho de borde',
'Border style': 'Estilo de borde',
Error: 'Error',
Warn: 'Advertencia',
Valid: 'V\u00e1lido',
'To open the popup, press Shift+Enter': 'Para abrir el elemento emergente, pulse May\u00fas+Intro',
'Rich Text Area. Press ALT-0 for help.': '\u00c1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.',
'System Font': 'Fuente de sistema',
'Failed to upload image: {0}': 'Fallo al cargar imagen: {0}',
'Failed to load plugin: {0} from url {1}': 'Fallo al cargar complemento: {0} desde URL {1}',
'Failed to load plugin url: {0}': 'Fallo al cargar URL del complemento: {0}',
'Failed to initialize plugin: {0}': 'Fallo al iniciar el complemento: {0}',
example: 'ejemplo',
Search: 'Buscar',
All: 'Todo',
Currency: 'Divisa',
Text: 'Texto',
Quotations: 'Comillas',
Mathematical: 'S\u00edmbolo matem\u00e1tico',
'Extended Latin': 'Latino extendido A',
Symbols: 'S\u00edmbolos',
Arrows: 'Flechas',
'User Defined': 'Definido por el usuario',
'dollar sign': 'signo de d\u00f3lar',
'currency sign': 'signo de divisa',
'euro-currency sign': 'signo de euro',
'colon sign': 'signo de dos puntos',
'cruzeiro sign': 'signo de cruceiro',
'french franc sign': 'signo de franco franc\u00e9s',
'lira sign': 'signo de lira',
'mill sign': 'signo de mill',
'naira sign': 'signo de naira',
'peseta sign': 'signo de peseta',
'rupee sign': 'signo de rupia',
'won sign': 'signo de won',
'new sheqel sign': 'signo de nuevo s\u00e9quel',
'dong sign': 'signo de dong',
'kip sign': 'signo de kip',
'tugrik sign': 'signo de tugrik',
'drachma sign': 'signo de dracma',
'german penny symbol': 'signo de penique alem\u00e1n',
'peso sign': 'signo de peso',
'guarani sign': 'signo de guaran\u00ed',
'austral sign': 'signo de austral',
'hryvnia sign': 'signo de grivna',
'cedi sign': 'signo de cedi',
'livre tournois sign': 'signo de libra tornesa',
'spesmilo sign': 'signo de spesmilo',
'tenge sign': 'signo de tenge',
'indian rupee sign': 'signo de rupia india',
'turkish lira sign': 'signo de lira turca',
'nordic mark sign': 'signo de marco n\u00f3rdico',
'manat sign': 'signo de manat',
'ruble sign': 'signo de rublo',
'yen character': 'car\u00e1cter de yen',
'yuan character': 'car\u00e1cter de yuan',
'yuan character, in hong kong and taiwan': 'car\u00e1cter de yuan en Hong Kong y Taiw\u00e1n',
'yen\/yuan character variant one': 'Variante uno de car\u00e1cter de yen\/yuan',
'Loading emoticons...': 'Cargando emoticonos...',
'Could not load emoticons': 'No se han podido cargar los emoticonos',
People: 'Personas',
'Animals and Nature': 'Animales y naturaleza',
'Food and Drink': 'Comida y bebida',
Activity: 'Actividad',
'Travel and Places': 'Viajes y lugares',
Objects: 'Objetos',
Flags: 'Banderas',
Characters: 'Caracteres',
'Characters (no spaces)': 'Caracteres (sin espacios)',
'{0} characters': '{0} caracteres',
'Error: Form submit field collision.': 'Error: Colisi\u00f3n de campo al enviar formulario.',
'Error: No form element found.': 'Error: No se encuentra ning\u00fan elemento de formulario.',
Update: 'Actualizar',
'Color swatch': 'Muestrario de colores',
Turquoise: 'Turquesa',
Green: 'Verde',
Blue: 'Azul',
Purple: 'P\u00farpura',
'Navy Blue': 'Azul marino',
'Dark Turquoise': 'Turquesa oscuro',
'Dark Green': 'Verde oscuro',
'Medium Blue': 'Azul medio',
'Medium Purple': 'P\u00farpura medio',
'Midnight Blue': 'Azul medio',
Yellow: 'Amarillo',
Orange: 'Naranja',
Red: 'Rojo',
'Light Gray': 'Gris claro',
Gray: 'Gris',
'Dark Yellow': 'Amarillo oscuro',
'Dark Orange': 'Naranja oscuro',
'Dark Red': 'Rojo oscuro',
'Medium Gray': 'Gris medio',
'Dark Gray': 'Gris oscuro',
'Light Green': 'Verde claro',
'Light Yellow': 'Amarillo claro',
'Light Red': 'Rojo claro',
'Light Purple': 'Morado claro',
'Light Blue': 'Azul claro',
'Dark Purple': 'Morado oscuro',
'Dark Blue': 'Azul oscuro',
Black: 'Negro',
White: 'Blanco',
'Switch to or from fullscreen mode': 'Activar o desactivar modo pantalla completa',
'Open help dialog': 'Abrir di\u00e1logo de ayuda',
history: 'historial',
styles: 'estilos',
formatting: 'formato',
alignment: 'alineaci\u00f3n',
indentation: 'sangr\u00eda',
'permanent pen': 'bol\u00edgrafo permanente',
comments: 'comentarios',
'Format Painter': 'Copiar formato',
'Insert\/edit iframe': 'Insertar\/editar iframe',
Capitalization: 'Uso de may\u00fasculas',
lowercase: 'min\u00fasculas',
UPPERCASE: 'MAY\u00daSCULAS',
'Title Case': 'Tipo T\u00edtulo',
'Permanent Pen Properties': 'Propiedades del bol\u00edgrafo permanente',
'Permanent pen properties...': 'Propiedades del bol\u00edgrafo permanente...',
Font: 'Fuente',
Size: 'Tama\u00f1o',
'More...': 'M\u00e1s...',
'Spellcheck Language': 'Corrector',
'Select...': 'Seleccionar...',
Preferences: 'Preferencias',
Yes: 'S\u00ed',
No: 'No',
'Keyboard Navigation': 'Navegaci\u00f3n con el teclado',
Version: 'Versi\u00f3n',
Anchor: 'Ancla',
'Special character': 'Car\u00e1cter especial',
'Code sample': 'Ejemplo de c\u00f3digo',
Color: 'Color',
Emoticons: 'Emoticonos',
'Document properties': 'Propiedades del documento',
Image: 'Imagen',
'Insert link': 'Insertar enlace',
Target: 'Destino',
Link: 'Enlace',
Poster: 'Miniatura',
Media: 'Media',
Print: 'Imprimir',
Prev: 'Anterior',
'Find and replace': 'Buscar y reemplazar',
'Whole words': 'Palabras completas',
Spellcheck: 'Corrector ortogr\u00e1fico',
Caption: 'Subt\u00edtulo',
'Insert template': 'Insertar plantilla'
})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}

View File

@@ -1,35 +1,21 @@
<template>
<ConfigProvider v-bind="lockEvent" :locale="getAntdLocale">
<ConfigProvider :locale="getAntdLocale">
<AppProvider>
<RouterView />
</AppProvider>
</ConfigProvider>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { ConfigProvider } from 'ant-design-vue';
import { AppProvider } from '/@/components/Application';
<script lang="ts" setup>
import { ConfigProvider } from 'ant-design-vue'
import { AppProvider } from '/@/components/Application'
import { useTitle } from '/@/hooks/web/useTitle'
import { useLocale } from '/@/locales/useLocale'
import { initAppConfigStore } from '/@/logics/initAppConfig';
import 'dayjs/locale/zh-cn'
// support Multi-language
const { getAntdLocale } = useLocale()
import { useLockPage } from '/@/hooks/web/useLockPage';
import { useLocale } from '/@/locales/useLocale';
export default defineComponent({
name: 'App',
components: { ConfigProvider, AppProvider },
setup() {
// support Multi-language
const { getAntdLocale } = useLocale();
// Initialize vuex internal system configuration
initAppConfigStore();
// Create a lock screen monitor
const lockEvent = useLockPage();
return { getAntdLocale, lockEvent };
},
});
// Listening to page changes and dynamically changing site titles
useTitle()
</script>

View File

@@ -1,10 +1,16 @@
import { defHttp } from '/@/utils/http/axios';
import { GetAccountInfoModel } from './model/accountModel';
import { defHttp } from '/@/utils/http/axios'
import { GetAccountInfoModel } from './model/accountModel'
enum Api {
ACCOUNT_INFO = '/account/getAccountInfo',
SESSION_TIMEOUT = '/user/sessionTimeout',
TOKEN_EXPIRED = '/user/tokenExpired',
}
// Get personal center-basic settings
export const accountInfoApi = () => defHttp.get<GetAccountInfoModel>({ url: Api.ACCOUNT_INFO });
export const accountInfoApi = () => defHttp.get<GetAccountInfoModel>({ url: Api.ACCOUNT_INFO })
export const sessionTimeoutApi = () => defHttp.post<void>({ url: Api.SESSION_TIMEOUT })
export const tokenExpiredApi = () => defHttp.post<void>({ url: Api.TOKEN_EXPIRED })

9
src/api/demo/cascader.ts Normal file
View File

@@ -0,0 +1,9 @@
import { defHttp } from '/@/utils/http/axios'
import { AreaModel, AreaParams } from '/@/api/demo/model/areaModel'
enum Api {
AREA_RECORD = '/cascader/getAreaRecord',
}
export const areaRecord = (data: AreaParams) =>
defHttp.post<AreaModel>({ url: Api.AREA_RECORD, data })

View File

@@ -1,4 +1,4 @@
import { defHttp } from '/@/utils/http/axios';
import { defHttp } from '/@/utils/http/axios'
enum Api {
// The address does not exist
@@ -9,4 +9,4 @@ enum Api {
* @description: Trigger ajax error
*/
export const fireErrorApi = () => defHttp.get({ url: Api.Error });
export const fireErrorApi = () => defHttp.get({ url: Api.Error })

View File

@@ -1,7 +1,7 @@
export interface GetAccountInfoModel {
email: string;
name: string;
introduction: string;
phone: string;
address: string;
email: string
name: string
introduction: string
phone: string
address: string
}

View File

@@ -0,0 +1,12 @@
export interface AreaModel {
id: string
code: string
parentCode: string
name: string
levelType: number
[key: string]: string | number
}
export interface AreaParams {
parentCode: string
}

View File

@@ -1,11 +1,15 @@
import { BasicFetchResult } from '/@/api/model/baseModel';
import { BasicFetchResult } from '/@/api/model/baseModel'
export interface DemoOptionsItem {
label: string;
value: string;
label: string
value: string
}
export interface selectParams {
id: number | string
}
/**
* @description: Request list return value
*/
export type DemoOptionsGetResultModel = BasicFetchResult<DemoOptionsItem[]>;
export type DemoOptionsGetResultModel = BasicFetchResult<DemoOptionsItem>

View File

@@ -1,74 +1,74 @@
import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel'
export type AccountParams = BasicPageParams & {
account?: string;
nickname?: string;
};
account?: string
nickname?: string
}
export type RoleParams = {
roleName?: string;
status?: string;
};
roleName?: string
status?: string
}
export type RolePageParams = BasicPageParams & RoleParams;
export type RolePageParams = BasicPageParams & RoleParams
export type DeptParams = {
deptName?: string;
status?: string;
};
deptName?: string
status?: string
}
export type MenuParams = {
menuName?: string;
status?: string;
};
menuName?: string
status?: string
}
export interface AccountListItem {
id: string;
account: string;
email: string;
nickname: string;
role: number;
createTime: string;
remark: string;
status: number;
id: string
account: string
email: string
nickname: string
role: number
createTime: string
remark: string
status: number
}
export interface DeptListItem {
id: string;
orderNo: string;
createTime: string;
remark: string;
status: number;
id: string
orderNo: string
createTime: string
remark: string
status: number
}
export interface MenuListItem {
id: string;
orderNo: string;
createTime: string;
status: number;
icon: string;
component: string;
permission: string;
id: string
orderNo: string
createTime: string
status: number
icon: string
component: string
permission: string
}
export interface RoleListItem {
id: string;
roleName: string;
roleValue: string;
status: number;
orderNo: string;
createTime: string;
id: string
roleName: string
roleValue: string
status: number
orderNo: string
createTime: string
}
/**
* @description: Request list return value
*/
export type AccountListGetResultModel = BasicFetchResult<AccountListItem>;
export type AccountListGetResultModel = BasicFetchResult<AccountListItem>
export type DeptListGetResultModel = BasicFetchResult<DeptListItem>;
export type DeptListGetResultModel = BasicFetchResult<DeptListItem>
export type MenuListGetResultModel = BasicFetchResult<MenuListItem>;
export type MenuListGetResultModel = BasicFetchResult<MenuListItem>
export type RolePageListGetResultModel = BasicFetchResult<RoleListItem>;
export type RolePageListGetResultModel = BasicFetchResult<RoleListItem>
export type RoleListGetResultModel = RoleListItem[];
export type RoleListGetResultModel = RoleListItem[]

View File

@@ -1,20 +1,20 @@
import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel'
/**
* @description: Request list interface parameters
*/
export type DemoParams = BasicPageParams;
export type DemoParams = BasicPageParams
export interface DemoListItem {
id: string;
beginTime: string;
endTime: string;
address: string;
name: string;
no: number;
status: number;
id: string
beginTime: string
endTime: string
address: string
name: string
no: number
status: number
}
/**
* @description: Request list return value
*/
export type DemoListGetResultModel = BasicFetchResult<DemoListItem>;
export type DemoListGetResultModel = BasicFetchResult<DemoListItem>

View File

@@ -1,6 +1,5 @@
import { defHttp } from '/@/utils/http/axios';
import { DemoOptionsGetResultModel } from './model/optionsModel';
import { defHttp } from '/@/utils/http/axios'
import { DemoOptionsItem, selectParams } from './model/optionsModel'
enum Api {
OPTIONS_LIST = '/select/getDemoOptions',
}
@@ -8,5 +7,5 @@ enum Api {
/**
* @description: Get sample options value
*/
export const optionsListApi = () =>
defHttp.get<DemoOptionsGetResultModel>({ url: Api.OPTIONS_LIST });
export const optionsListApi = (params?: selectParams) =>
defHttp.get<DemoOptionsItem[]>({ url: Api.OPTIONS_LIST, params })

View File

@@ -9,28 +9,36 @@ import {
AccountListGetResultModel,
RolePageListGetResultModel,
RoleListGetResultModel,
} from './model/systemModel';
import { defHttp } from '/@/utils/http/axios';
} from './model/systemModel'
import { defHttp } from '/@/utils/http/axios'
enum Api {
AccountList = '/system/getAccountList',
IsAccountExist = '/system/accountExist',
DeptList = '/system/getDeptList',
setRoleStatus = '/system/setRoleStatus',
MenuList = '/system/getMenuList',
RolePageList = '/system/getRoleListByPage',
GetAllRoleList = '/system/getAllRoleList',
}
export const getAccountList = (params: AccountParams) =>
defHttp.get<AccountListGetResultModel>({ url: Api.AccountList, params });
defHttp.get<AccountListGetResultModel>({ url: Api.AccountList, params })
export const getDeptList = (params?: DeptListItem) =>
defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params });
defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params })
export const getMenuList = (params?: MenuParams) =>
defHttp.get<MenuListGetResultModel>({ url: Api.MenuList, params });
defHttp.get<MenuListGetResultModel>({ url: Api.MenuList, params })
export const getRoleListByPage = (params?: RolePageParams) =>
defHttp.get<RolePageListGetResultModel>({ url: Api.RolePageList, params });
defHttp.get<RolePageListGetResultModel>({ url: Api.RolePageList, params })
export const getAllRoleList = (params?: RoleParams) =>
defHttp.get<RoleListGetResultModel>({ url: Api.GetAllRoleList, params });
defHttp.get<RoleListGetResultModel>({ url: Api.GetAllRoleList, params })
export const setRoleStatus = (id: number, status: string) =>
defHttp.post({ url: Api.setRoleStatus, params: { id, status } })
export const isAccountExist = (account: string) =>
defHttp.post({ url: Api.IsAccountExist, params: { account } }, { errorMessageMode: 'none' })

View File

@@ -1,5 +1,5 @@
import { defHttp } from '/@/utils/http/axios';
import { DemoParams, DemoListGetResultModel } from './model/tableModel';
import { defHttp } from '/@/utils/http/axios'
import { DemoParams, DemoListGetResultModel } from './model/tableModel'
enum Api {
DEMO_LIST = '/table/getDemoList',
@@ -14,6 +14,7 @@ export const demoListApi = (params: DemoParams) =>
url: Api.DEMO_LIST,
params,
headers: {
// @ts-ignore
ignoreCancelToken: true,
},
});
})

11
src/api/demo/tree.ts Normal file
View File

@@ -0,0 +1,11 @@
import { defHttp } from '/@/utils/http/axios'
enum Api {
TREE_OPTIONS_LIST = '/tree/getDemoOptions',
}
/**
* @description: Get sample options value
*/
export const treeOptionsListApi = (params?: Recordable) =>
defHttp.get<Recordable[]>({ url: Api.TREE_OPTIONS_LIST, params })

View File

@@ -1,9 +1,9 @@
export interface BasicPageParams {
page: number;
pageSize: number;
page: number
pageSize: number
}
export interface BasicFetchResult<T extends any> {
items: T;
total: number;
export interface BasicFetchResult<T> {
items: T[]
total: number
}

View File

@@ -1,14 +1,14 @@
import { defHttp } from '/@/utils/http/axios';
import { getMenuListByIdParams, getMenuListByIdParamsResultModel } from './model/menuModel';
import { defHttp } from '/@/utils/http/axios'
import { getMenuListResultModel } from './model/menuModel'
enum Api {
GetMenuListById = '/getMenuListById',
GetMenuList = '/getMenuList',
}
/**
* @description: Get user menu based on id
*/
export const getMenuListById = (params: getMenuListByIdParams) => {
return defHttp.get<getMenuListByIdParamsResultModel>({ url: Api.GetMenuListById, params });
};
export const getMenuList = () => {
return defHttp.get<getMenuListResultModel>({ url: Api.GetMenuList })
}

View File

@@ -1,23 +1,16 @@
import { RouteMeta } from '/@/router/types';
import type { RouteMeta } from 'vue-router'
export interface RouteItem {
path: string;
component: any;
meta: RouteMeta;
name?: string;
alias?: string | string[];
redirect?: string;
caseSensitive?: boolean;
children?: RouteItem[];
}
/**
* @description: Get menu interface
*/
export interface getMenuListByIdParams {
id: number | string;
path: string
component: any
meta: RouteMeta
name?: string
alias?: string | string[]
redirect?: string
caseSensitive?: boolean
children?: RouteItem[]
}
/**
* @description: Get menu return value
*/
export type getMenuListByIdParamsResultModel = RouteItem[];
export type getMenuListResultModel = RouteItem[]

View File

@@ -1,5 +1,5 @@
export interface UploadApiResult {
message: string;
code: number;
url: string;
message: string
code: number
url: string
}

View File

@@ -2,42 +2,37 @@
* @description: Login interface parameters
*/
export interface LoginParams {
username: string;
password: string;
}
/**
* @description: Get user information
*/
export interface GetUserInfoByUserIdParams {
userId: string | number;
username: string
password: string
}
export interface RoleInfo {
roleName: string;
value: string;
roleName: string
value: string
}
/**
* @description: Login interface return value
*/
export interface LoginResultModel {
userId: string | number;
token: string;
role: RoleInfo;
userId: string | number
token: string
role: RoleInfo
}
/**
* @description: Get user information return value
*/
export interface GetUserInfoByUserIdModel {
roles: RoleInfo[];
export interface GetUserInfoModel {
roles: RoleInfo[]
// 用户id
userId: string | number;
userId: string | number
// 用户名
username: string;
username: string
// 真实名字
realName: string;
realName: string
// 头像
avatar: string
// 介绍
desc?: string;
desc?: string
}

View File

@@ -1,22 +0,0 @@
import { UploadApiResult } from './model/uploadModel';
import { defHttp } from '/@/utils/http/axios';
import { UploadFileParams } from '/@/utils/http/axios/types';
import { useGlobSetting } from '/@/hooks/setting';
const { uploadUrl = '' } = useGlobSetting();
/**
* @description: Upload interface
*/
export function uploadApi(
params: UploadFileParams,
onUploadProgress: (progressEvent: ProgressEvent) => void
) {
return defHttp.uploadFile<UploadApiResult>(
{
url: uploadUrl,
onUploadProgress,
},
params
);
}

View File

@@ -1,17 +1,14 @@
import { defHttp } from '/@/utils/http/axios';
import {
LoginParams,
LoginResultModel,
GetUserInfoByUserIdParams,
GetUserInfoByUserIdModel,
} from './model/userModel';
import { defHttp } from '/@/utils/http/axios'
import { LoginParams, LoginResultModel, GetUserInfoModel } from './model/userModel'
import { ErrorMessageMode } from '/@/utils/http/axios/types';
import { ErrorMessageMode } from '/#/axios'
enum Api {
Login = '/login',
GetUserInfoById = '/getUserInfoById',
GetPermCodeByUserId = '/getPermCodeByUserId',
Logout = '/logout',
GetUserInfo = '/getUserInfo',
GetPermCode = '/getPermCode',
TestRetry = '/testRetry',
}
/**
@@ -25,23 +22,34 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
},
{
errorMessageMode: mode,
}
);
},
)
}
/**
* @description: getUserInfoById
* @description: getUserInfo
*/
export function getUserInfoById(params: GetUserInfoByUserIdParams) {
return defHttp.get<GetUserInfoByUserIdModel>({
url: Api.GetUserInfoById,
params,
});
export function getUserInfo() {
return defHttp.get<GetUserInfoModel>({ url: Api.GetUserInfo }, { errorMessageMode: 'none' })
}
export function getPermCodeByUserId(params: GetUserInfoByUserIdParams) {
return defHttp.get<string[]>({
url: Api.GetPermCodeByUserId,
params,
});
export function getPermCode() {
return defHttp.get<string[]>({ url: Api.GetPermCode })
}
export function doLogout() {
return defHttp.get({ url: Api.Logout })
}
export function testRetry() {
return defHttp.get(
{ url: Api.TestRetry },
{
retryRequest: {
isOpenRetry: true,
count: 5,
waitTime: 1000,
},
},
)
}

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356.99 419.8"><defs><style>.cls-1{fill:#ffa546;}.cls-2{fill:#ff6059;opacity:0.4;}.cls-3{fill:#426572;}.cls-4{fill:#ffd947;}</style></defs><title>Asset 91</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M351,380.73v17.59a15.52,15.52,0,0,1-15.47,15.48H21.46A15.52,15.52,0,0,1,6,398.32V380.73a15.51,15.51,0,0,1,15.47-15.47H335.52A15.51,15.51,0,0,1,351,380.73Z"/><path class="cls-2" d="M351,406.85c0,3.95-7,7.19-15.47,7.19H21.46C13,414,6,410.8,6,406.85V380.73a15.51,15.51,0,0,1,15.47-15.47H37.66l3.44,25.27c0,4,7,7.2,15.47,7.2l283.72,12.44,7.38-2.28Z"/><path class="cls-3" d="M335.52,419.8H21.46A21.5,21.5,0,0,1,0,398.32V380.73a21.49,21.49,0,0,1,21.46-21.47H335.52A21.49,21.49,0,0,1,357,380.73v17.59a21.52,21.52,0,0,1-21.46,21.48ZM21.46,371.26A9.48,9.48,0,0,0,12,380.73v17.59a9.48,9.48,0,0,0,9.46,9.48H335.52a9.52,9.52,0,0,0,9.46-9.48V380.73a9.48,9.48,0,0,0-9.46-9.47Z"/><path class="cls-1" d="M247.93,138H233.23V41.7A35.7,35.7,0,0,0,197.53,6H159.45a35.7,35.7,0,0,0-35.7,35.7V138H109.06C80,138,61.84,169.48,76.37,194.64l34.72,60.13,30,52c16.6,28.76,58.12,28.76,74.72,0l30-52,34.72-60.13C295.14,169.48,277,138,247.93,138Z"/><path class="cls-2" d="M280.62,188l-34.73,60.13-30,52c-11.24,19.46-66.68,32.78-52.52,18.88,60.22-59.12,104.3-182.16,104.3-182.16A37.74,37.74,0,0,1,280.62,188Z"/><path class="cls-4" d="M192.3,6c-.22.23-.42.47-.63.72-38.92,45-18.36,116.49-42.85,170.71-10.14,22.45-29.18,41.51-52.15,49.48L78,194.64C63.52,169.48,81.67,138,110.72,138h14.7V41.7A35.7,35.7,0,0,1,161.12,6Z"/><path class="cls-3" d="M178.49,334.39h0a48.64,48.64,0,0,1-42.56-24.57L71.17,197.64A43.75,43.75,0,0,1,109.06,132h8.69V41.7A41.74,41.74,0,0,1,159.45,0h38.09a41.75,41.75,0,0,1,41.7,41.7V132h8.69a43.75,43.75,0,0,1,37.89,65.62L221,309.82A48.64,48.64,0,0,1,178.49,334.39ZM109.06,144a31.75,31.75,0,0,0-27.49,47.62l64.76,112.17a37.14,37.14,0,0,0,64.33,0l64.76-112.17A31.75,31.75,0,0,0,247.92,144H227.23V41.7A29.73,29.73,0,0,0,197.53,12H159.45a29.73,29.73,0,0,0-29.7,29.7V144Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

16
src/assets/icons/moon.svg Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 499.712 499.712" style="enable-background: new 0 0 499.712 499.712;" xml:space="preserve">
<path style="fill: #FFD93B;" d="M146.88,375.528c126.272,0,228.624-102.368,228.624-228.64c0-55.952-20.16-107.136-53.52-146.88
C425.056,33.096,499.696,129.64,499.696,243.704c0,141.392-114.608,256-256,256c-114.064,0-210.608-74.64-243.696-177.712
C39.744,355.368,90.944,375.528,146.88,375.528z"/>
<path style="fill: #F4C534;" d="M401.92,42.776c34.24,43.504,54.816,98.272,54.816,157.952c0,141.392-114.608,256-256,256
c-59.68,0-114.448-20.576-157.952-54.816c46.848,59.472,119.344,97.792,200.928,97.792c141.392,0,256-114.608,256-256
C499.712,162.12,461.392,89.64,401.92,42.776z"/>
<g>
<polygon style="fill: #FFD83B;" points="128.128,99.944 154.496,153.4 213.472,161.96 170.8,203.56 180.864,262.296
128.128,234.568 75.376,262.296 85.44,203.56 42.768,161.96 101.744,153.4"/>
<polygon style="fill: #FFD83B;" points="276.864,82.84 290.528,110.552 321.104,114.984 298.976,136.552 304.208,166.984
276.864,152.616 249.52,166.984 254.752,136.552 232.624,114.984 263.2,110.552"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

42
src/assets/icons/sun.svg Normal file
View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 60 60" style="enable-background: new 0 0 60 60;" xml:space="preserve">
<g>
<path style="fill: #F0C419;" d="M30,0c-0.552,0-1,0.448-1,1v6c0,0.552,0.448,1,1,1s1-0.448,1-1V1C31,0.448,30.552,0,30,0z"/>
<path style="fill: #F0C419;" d="M30,52c-0.552,0-1,0.448-1,1v6c0,0.552,0.448,1,1,1s1-0.448,1-1v-6C31,52.448,30.552,52,30,52z"/>
<path style="fill: #F0C419;" d="M59,29h-6c-0.552,0-1,0.448-1,1s0.448,1,1,1h6c0.552,0,1-0.448,1-1S59.552,29,59,29z"/>
<path style="fill: #F0C419;" d="M8,30c0-0.552-0.448-1-1-1H1c-0.552,0-1,0.448-1,1s0.448,1,1,1h6C7.552,31,8,30.552,8,30z"/>
<path style="fill: #F0C419;" d="M46.264,14.736c0.256,0,0.512-0.098,0.707-0.293l5.736-5.736c0.391-0.391,0.391-1.023,0-1.414
s-1.023-0.391-1.414,0l-5.736,5.736c-0.391,0.391-0.391,1.023,0,1.414C45.752,14.639,46.008,14.736,46.264,14.736z"/>
<path style="fill: #F0C419;" d="M13.029,45.557l-5.736,5.736c-0.391,0.391-0.391,1.023,0,1.414C7.488,52.902,7.744,53,8,53
s0.512-0.098,0.707-0.293l5.736-5.736c0.391-0.391,0.391-1.023,0-1.414S13.42,45.166,13.029,45.557z"/>
<path style="fill: #F0C419;" d="M46.971,45.557c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l5.736,5.736
C51.488,52.902,51.744,53,52,53s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L46.971,45.557z"/>
<path style="fill: #F0C419;" d="M8.707,7.293c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l5.736,5.736
c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L8.707,7.293z"/>
<path style="fill: #F0C419;" d="M50.251,21.404c0.162,0.381,0.532,0.61,0.921,0.61c0.13,0,0.263-0.026,0.39-0.08l2.762-1.172
c0.508-0.216,0.746-0.803,0.53-1.311s-0.804-0.746-1.311-0.53l-2.762,1.172C50.272,20.309,50.035,20.896,50.251,21.404z"/>
<path style="fill: #F0C419;" d="M9.749,38.596c-0.216-0.508-0.803-0.746-1.311-0.53l-2.762,1.172
c-0.508,0.216-0.746,0.803-0.53,1.311c0.162,0.381,0.532,0.61,0.921,0.61c0.13,0,0.263-0.026,0.39-0.08l2.762-1.172
C9.728,39.691,9.965,39.104,9.749,38.596z"/>
<path style="fill: #F0C419;" d="M54.481,38.813L51.7,37.688c-0.511-0.207-1.095,0.041-1.302,0.553
c-0.207,0.512,0.041,1.095,0.553,1.302l2.782,1.124c0.123,0.049,0.25,0.073,0.374,0.073c0.396,0,0.771-0.236,0.928-0.626
C55.241,39.603,54.994,39.02,54.481,38.813z"/>
<path style="fill: #F0C419;" d="M5.519,21.188L8.3,22.312c0.123,0.049,0.25,0.073,0.374,0.073c0.396,0,0.771-0.236,0.928-0.626
c0.207-0.512-0.041-1.095-0.553-1.302l-2.782-1.124c-0.513-0.207-1.095,0.04-1.302,0.553C4.759,20.397,5.006,20.98,5.519,21.188z"
/>
<path style="fill: #F0C419;" d="M39.907,50.781c-0.216-0.508-0.803-0.745-1.311-0.53c-0.508,0.216-0.746,0.803-0.53,1.311
l1.172,2.762c0.162,0.381,0.532,0.61,0.921,0.61c0.13,0,0.263-0.026,0.39-0.08c0.508-0.216,0.746-0.803,0.53-1.311L39.907,50.781z"
/>
<path style="fill: #F0C419;" d="M21.014,9.829c0.13,0,0.263-0.026,0.39-0.08c0.508-0.216,0.746-0.803,0.53-1.311l-1.172-2.762
c-0.215-0.509-0.802-0.747-1.311-0.53c-0.508,0.216-0.746,0.803-0.53,1.311l1.172,2.762C20.254,9.6,20.625,9.829,21.014,9.829z"/>
<path style="fill: #F0C419;" d="M21.759,50.398c-0.511-0.205-1.095,0.04-1.302,0.553l-1.124,2.782
c-0.207,0.512,0.041,1.095,0.553,1.302c0.123,0.049,0.25,0.073,0.374,0.073c0.396,0,0.771-0.236,0.928-0.626l1.124-2.782
C22.519,51.188,22.271,50.605,21.759,50.398z"/>
<path style="fill: #F0C419;" d="M38.615,9.675c0.396,0,0.771-0.236,0.928-0.626l1.124-2.782c0.207-0.512-0.041-1.095-0.553-1.302
c-0.511-0.207-1.095,0.041-1.302,0.553L37.688,8.3c-0.207,0.512,0.041,1.095,0.553,1.302C38.364,9.651,38.491,9.675,38.615,9.675z"
/>
</g>
<circle style="fill: #F0C419;" cx="30" cy="30" r="20"/>
<circle style="fill: #EDE21B;" cx="30" cy="30" r="15"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 445 271.8"><defs><style>.cls-1{fill:#32caf8;}.cls-2{fill:#00aaf8;opacity:0.5;}.cls-3{fill:#fff;}.cls-4{fill:#426572;}</style></defs><title>Asset 500</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" x="6" y="8.17" width="433" height="259.8" rx="12" ry="12"/><path class="cls-2" d="M439,21.16V255a13,13,0,0,1-13,13H28.72l381-259.8H426A13,13,0,0,1,439,21.16Z"/><path class="cls-3" d="M328,33.24h88.92c3.86,0,3.87-6,0-6H328c-3.86,0-3.87,6,0,6Z"/><path class="cls-3" d="M283.49,33.24H312.6c3.86,0,3.87-6,0-6H283.49c-3.86,0-3.87,6,0,6Z"/><path class="cls-4" d="M427,271.8H18a18,18,0,0,1-18-18V18A18,18,0,0,1,18,0H427a18,18,0,0,1,18,18V253.8A18,18,0,0,1,427,271.8ZM18,12a6,6,0,0,0-6,6V253.8a6,6,0,0,0,6,6H427a6,6,0,0,0,6-6V18a6,6,0,0,0-6-6Z"/><rect class="cls-4" x="37.89" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="55.93" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="73.97" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="92.01" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="118.71" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="136.76" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="154.8" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="172.84" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="199.54" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="217.58" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="235.63" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="253.67" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="280.37" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="298.41" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="316.45" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="334.49" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="43.89" y="177.53" width="161.29" height="12"/><rect class="cls-4" x="43.89" y="204.59" width="68.2" height="12"/><circle class="cls-3" cx="379.46" cy="207.35" r="23.82"/><rect class="cls-3" x="43.89" y="36.31" width="72.53" height="47.63" rx="12" ry="12"/><path class="cls-4" d="M104.42,88.86H55.89a18,18,0,0,1-18-18V47.23a18,18,0,0,1,18-18h48.53a18,18,0,0,1,18,18V70.86A18,18,0,0,1,104.42,88.86ZM55.89,41.23a6,6,0,0,0-6,6V70.86a6,6,0,0,0,6,6h48.53a6,6,0,0,0,6-6V47.23a6,6,0,0,0-6-6Z"/><path class="cls-4" d="M379.46,241.49a29.81,29.81,0,1,1,29.82-29.82A29.85,29.85,0,0,1,379.46,241.49Zm0-47.63a17.81,17.81,0,1,0,17.82,17.81A17.84,17.84,0,0,0,379.46,193.86Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

Some files were not shown because too many files have changed in this diff Show More