diff --git a/examples/sites/demos/apis/exception.js b/examples/sites/demos/apis/exception.js
index 6d4652545a..98c4b06627 100644
--- a/examples/sites/demos/apis/exception.js
+++ b/examples/sites/demos/apis/exception.js
@@ -1,5 +1,5 @@
export default {
- mode: ['mobile-first'],
+ mode: ['pc', 'mobile-first'],
apis: [
{
name: 'Exception',
@@ -10,11 +10,12 @@ export default {
type: 'boolean',
defaultValue: '',
desc: {
- 'zh-CN': '设置组件级空态',
- 'en-US': 'Set component-level empty state'
+ 'zh-CN': '设置组件级异常',
+ 'en-US': 'Set component-level exception'
},
- mode: ['mobile-first'],
- mfDemo: 'component-empty'
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'component-page',
+ pcDemo: 'component-page'
},
{
name: 'exception-class',
@@ -24,19 +25,21 @@ export default {
'zh-CN': '设置自定义类',
'en-US': 'Setting Custom Classes'
},
- mode: ['mobile-first'],
- mfDemo: ''
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'exception-class',
+ pcDemo: 'exception-class'
},
{
name: 'page-empty',
type: 'boolean',
defaultValue: '',
desc: {
- 'zh-CN': '设置页面级空态',
- 'en-US': ''
+ 'zh-CN': '设置页面级异常',
+ 'en-US': 'Set page-level exception'
},
- mode: ['mobile-first'],
- mfDemo: ''
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'page-empty',
+ pcDemo: 'page-empty'
},
{
name: 'sub-message',
@@ -46,20 +49,22 @@ export default {
'zh-CN': '设置二级标题',
'en-US': 'Set Level-2 Title'
},
- mode: ['mobile-first'],
- mfDemo: 'sub-message'
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'sub-message',
+ pcDemo: 'sub-message'
},
{
name: 'type',
- type: 'string',
+ typeAnchorName: 'IType',
+ type: 'IType',
defaultValue: 'nodata',
desc: {
- 'zh-CN':
- '
设置缺省页类型,默认为nodata,可选值有 weaknet || noperm || busy || build || weaknet || pcview
',
- 'en-US': 'display different button'
+ 'zh-CN': '设置缺省页类型,默认为nodata
',
+ 'en-US': 'Set exception type, The default value is nodata
'
},
- mode: ['mobile-first'],
- mfDemo: 'page-empty'
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'page-empty',
+ pcDemo: 'page-empty'
}
],
events: [],
@@ -71,23 +76,34 @@ export default {
defaultValue: '',
desc: {
'zh-CN': '设置内容
',
- 'en-US': 'Click'
+ 'en-US': 'Set content
'
},
- mode: ['mobile-first'],
- mfDemo: 'content-slot'
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'slot',
+ pcDemo: 'slot'
},
{
- name: 'default',
+ name: 'icon',
type: '',
defaultValue: '',
desc: {
- 'zh-CN': '默认插槽',
- 'en-US': 'Default Slot'
+ 'zh-CN': '图标插槽',
+ 'en-US': 'Icon Slot'
},
- mode: ['mobile-first'],
- mfDemo: ''
+ mode: ['pc', 'mobile-first'],
+ mfDemo: 'slot',
+ pcDemo: 'slot'
}
]
}
+ ],
+ types: [
+ {
+ name: 'IType',
+ type: 'type',
+ code: `
+type IType = 'noperm' | 'nodata' | 'weaknet' | 'noresult' | 'nonews' | 'pagenoperm' | 'pageweaknet' | 'pagenothing' | 'pageservererror'
+`
+ }
]
}
diff --git a/examples/sites/demos/mobile-first/app/exception/webdoc/exception.js b/examples/sites/demos/mobile-first/app/exception/webdoc/exception.js
index edbf0a9c6f..b843e885d8 100644
--- a/examples/sites/demos/mobile-first/app/exception/webdoc/exception.js
+++ b/examples/sites/demos/mobile-first/app/exception/webdoc/exception.js
@@ -29,18 +29,18 @@ export default {
codeFiles: ['page-empty.vue']
},
{
- demoId: 'component-empty',
+ demoId: 'component-page',
name: {
'zh-CN': '组件级空态',
'en-US': 'Component-level empty state'
},
desc: {
'zh-CN':
- '通过添加`component-empty`属性展示组件级空态,其中 type 类型有`noperm、 nodata、 weaknet、noresult、 nonews` 对应场景: `noperm` :无访问权限 `nodata` :暂无数据 `weaknet` :网络不给力 `noresult`:无相关搜索结果 `nonews`:暂无最新消息
',
+ '通过添加`component-page`属性展示组件级空态,其中 type 类型有`noperm、 nodata、 weaknet、noresult、 nonews` 对应场景: `noperm` :无访问权限 `nodata` :暂无数据 `weaknet` :网络不给力 `noresult`:无相关搜索结果 `nonews`:暂无最新消息
',
'en-US':
- 'Add the `component-empty` attribute to display the component-level empty state. The type type can be `noperm, nodata, weaknet, noresult, or nonews` The corresponding scenario is as follows: `noperm`: No access `nodata`: no data `weaknet`: network is not powerful `noresult`: no related search results `nonews`: no latest news
'
+ 'Add the `component-page` attribute to display the component-level empty state. The type type can be `noperm, nodata, weaknet, noresult, or nonews` The corresponding scenario is as follows: `noperm`: No access `nodata`: no data `weaknet`: network is not powerful `noresult`: no related search results `nonews`: no latest news
'
},
- codeFiles: ['component-empty.vue']
+ codeFiles: ['component-page.vue']
},
{
demoId: 'sub-message',
diff --git a/examples/sites/demos/pc/app/exception/basic-usage-composition-api.vue b/examples/sites/demos/pc/app/exception/basic-usage-composition-api.vue
new file mode 100644
index 0000000000..a28390fcf1
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/basic-usage-composition-api.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/basic-usage.vue b/examples/sites/demos/pc/app/exception/basic-usage.vue
new file mode 100644
index 0000000000..c50a5b7805
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/basic-usage.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/button-text-composition-api.vue b/examples/sites/demos/pc/app/exception/button-text-composition-api.vue
new file mode 100644
index 0000000000..86930f5a64
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/button-text-composition-api.vue
@@ -0,0 +1,13 @@
+
+
+ 自定义按钮
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/button-text.vue b/examples/sites/demos/pc/app/exception/button-text.vue
new file mode 100644
index 0000000000..bb70522d11
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/button-text.vue
@@ -0,0 +1,21 @@
+
+
+ 立即新建
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/component-page-composition-api.vue b/examples/sites/demos/pc/app/exception/component-page-composition-api.vue
new file mode 100644
index 0000000000..b457b03ac3
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/component-page-composition-api.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/component-page.vue b/examples/sites/demos/pc/app/exception/component-page.vue
new file mode 100644
index 0000000000..9613482a3a
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/component-page.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/page-empty-composition-api.vue b/examples/sites/demos/pc/app/exception/page-empty-composition-api.vue
new file mode 100644
index 0000000000..2ecec04c89
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/page-empty-composition-api.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/page-empty.vue b/examples/sites/demos/pc/app/exception/page-empty.vue
new file mode 100644
index 0000000000..efac0b0558
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/page-empty.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/slot-composition-api.vue b/examples/sites/demos/pc/app/exception/slot-composition-api.vue
new file mode 100644
index 0000000000..f4e235a909
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/slot-composition-api.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ content插槽
+ 自定义按钮
+
+
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/slot.vue b/examples/sites/demos/pc/app/exception/slot.vue
new file mode 100644
index 0000000000..5d4a9d75d0
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/slot.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ content插槽
+
+ 立即新建
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/sub-message-composition-api.vue b/examples/sites/demos/pc/app/exception/sub-message-composition-api.vue
new file mode 100644
index 0000000000..f1a8b7735d
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/sub-message-composition-api.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/sub-message.vue b/examples/sites/demos/pc/app/exception/sub-message.vue
new file mode 100644
index 0000000000..e592dc872d
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/sub-message.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/examples/sites/demos/pc/app/exception/webdoc/exception.cn.md b/examples/sites/demos/pc/app/exception/webdoc/exception.cn.md
new file mode 100644
index 0000000000..382b923f53
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/webdoc/exception.cn.md
@@ -0,0 +1,5 @@
+---
+title: Exception 缺省页
+---
+
+# Exception 缺省页
diff --git a/examples/sites/demos/pc/app/exception/webdoc/exception.en.md b/examples/sites/demos/pc/app/exception/webdoc/exception.en.md
new file mode 100644
index 0000000000..453c6028a0
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/webdoc/exception.en.md
@@ -0,0 +1,5 @@
+---
+title: Exception
+---
+
+# Exception
diff --git a/examples/sites/demos/pc/app/exception/webdoc/exception.js b/examples/sites/demos/pc/app/exception/webdoc/exception.js
new file mode 100644
index 0000000000..b921c35ba7
--- /dev/null
+++ b/examples/sites/demos/pc/app/exception/webdoc/exception.js
@@ -0,0 +1,84 @@
+export default {
+ column: '2',
+ owner: '',
+ show: true,
+ cloud: true,
+ demos: [
+ {
+ demoId: 'basic-usage',
+ name: {
+ 'zh-CN': '基本用法',
+ 'en-US': 'Basic Usage'
+ },
+ desc: {
+ 'zh-CN': '',
+ 'en-US': ''
+ },
+ codeFiles: ['basic-usage.vue']
+ },
+ {
+ demoId: 'page-empty',
+ name: {
+ 'zh-CN': '页面级异常',
+ 'en-US': 'Page exception'
+ },
+ desc: {
+ 'zh-CN':
+ '通过添加`page-empty`属性展示页面级异常,其中 type 类型有`pagenoperm`、 `pageweaknet`、 `pagenothing`、 `pageservererror` 对应场景: `pagenoperm` :无访问权限 `pageweaknet` :网络异常 `pagenothing` :你访问的页面不存在 `pageservererror`:服务器异常
',
+ 'en-US':
+ 'The page exception is displayed by adding the `page-empty` attribute. The type types include `pagenoperm`, `pageweaknet`, `pagenothing`, and `pageservererror`. Scenario: `pagenoperm`: no access permission `pageweaknet`: network exception `pagenothing`: The page you access does not exist `pageservererror`: The server is abnormal
'
+ },
+ codeFiles: ['page-empty.vue']
+ },
+ {
+ demoId: 'component-page',
+ name: {
+ 'zh-CN': '组件级异常',
+ 'en-US': 'Component exception'
+ },
+ desc: {
+ 'zh-CN':
+ '通过添加`component-page`属性展示组件级异常,其中 type 类型有`noperm`、 `nodata`、 `weaknet`、 `noresult`、 `nonews` 对应场景: `noperm` :无访问权限 `nodata` :暂无数据 `weaknet` :网络不给力 `noresult`:无相关搜索结果 `nonews`:暂无最新消息
',
+ 'en-US':
+ 'Add the `component-page` attribute to display the component exception. The type type can be `noperm`, `nodata`, `weaknet`, `noresult`, or `nonews` The corresponding scenario is as follows: `noperm`: No access `nodata`: no data `weaknet`: network is not powerful `noresult`: no related search results `nonews`: no latest news
'
+ },
+ codeFiles: ['component-page.vue']
+ },
+ {
+ demoId: 'sub-message',
+ name: {
+ 'zh-CN': '自定义二级标题内容',
+ 'en-US': 'User-defined level-2 title content'
+ },
+ desc: {
+ 'zh-CN': '通过`sub-message`自定义二级标题
',
+ 'en-US': 'Customizing Level-2 Titles Using `sub-message`
'
+ },
+ codeFiles: ['sub-message.vue']
+ },
+ {
+ demoId: 'button-text',
+ name: {
+ 'zh-CN': '自定义按钮文本',
+ 'en-US': 'button-text'
+ },
+ desc: {
+ 'zh-CN': '已去除`button-text`自定义按钮文本,直接可以通过插槽自定义
',
+ 'en-US': 'Customizing Level-2 Titles Using `sub-message`
'
+ },
+ codeFiles: ['button-text.vue']
+ },
+ {
+ demoId: 'slot',
+ name: {
+ 'zh-CN': '插槽',
+ 'en-US': 'slot'
+ },
+ desc: {
+ 'zh-CN': '通过命名插槽 `content`,自定义内容区
',
+ 'en-US': 'Customize the content area by naming the slot `content`
'
+ },
+ codeFiles: ['slot.vue']
+ }
+ ]
+}
diff --git a/examples/sites/demos/pc/menus.js b/examples/sites/demos/pc/menus.js
index 848a5be79c..14a1c7a47e 100644
--- a/examples/sites/demos/pc/menus.js
+++ b/examples/sites/demos/pc/menus.js
@@ -283,6 +283,14 @@ export const cmpMenus = [
{ 'nameCn': '警告', 'name': 'Alert', 'key': 'alert' },
{ 'nameCn': '对话框', 'name': 'DialogBox', 'key': 'dialog-box' },
{ 'nameCn': '抽屉', 'name': 'Drawer', 'key': 'drawer' },
+ {
+ 'nameCn': '异常页',
+ 'name': 'Exception',
+ 'key': 'exception',
+ 'meta': {
+ 'stable': '3.27.0'
+ }
+ },
{ 'nameCn': '加载', 'name': 'Loading', 'key': 'loading' },
{ 'nameCn': '模态框', 'name': 'Modal', 'key': 'modal' },
{ 'nameCn': '通知', 'name': 'Notify', 'key': 'notify' },
diff --git a/packages/theme/src/dark-theme-index.less b/packages/theme/src/dark-theme-index.less
index b4266b937b..ce50e793a7 100644
--- a/packages/theme/src/dark-theme-index.less
+++ b/packages/theme/src/dark-theme-index.less
@@ -1 +1 @@
-@import './base/dark-theme.less';
+@import './base/dark-theme.less';
\ No newline at end of file
diff --git a/packages/theme/src/exception/index.less b/packages/theme/src/exception/index.less
new file mode 100644
index 0000000000..a7d0011224
--- /dev/null
+++ b/packages/theme/src/exception/index.less
@@ -0,0 +1,82 @@
+@import '../mixins/common.less';
+@import '../custom.less';
+@import './vars.less';
+
+@exception-prefix-cls: ~'@{css-prefix}exception';
+@svg-prefix-cls: ~'@{css-prefix}svg';
+
+.@{exception-prefix-cls} {
+ .inject-Exception-vars();
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ background-color: transparent;
+ text-align: center;
+
+ &__body {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+
+ &__image {
+ margin-bottom: 16px;
+
+ .@{svg-prefix-cls} {
+ width: 208px;
+ height: 160px;
+ }
+ }
+
+ &__componentpage-image {
+ margin-bottom: 8px;
+
+ .@{svg-prefix-cls} {
+ width: 120px;
+ height: 92px;
+ }
+ }
+
+ &__description {
+ color: var(--tv-Exception-title-color);
+ font-size: var(--tv-Exception-title-font-size);
+ line-height: 1.5;
+ margin-bottom: 8px;
+ }
+
+ &__componentpage {
+ font-size: var(--tv-Exception-sub-title-font-size);
+ }
+
+ &__submessage {
+ color: var(--tv-Exception-sub-title-color);
+ font-size: var(--tv-Exception-sub-title-font-size);
+ line-height: 30px;
+ margin-bottom: 12px;
+ }
+
+ &__footer {
+ padding-top: 8px;
+ }
+
+ &__actions {
+ margin-top: 16px;
+
+ .tiny-button {
+ margin: 0 8px;
+ }
+ }
+
+ // 组件页面模式
+ &__component-page {
+ .tiny-exception__image svg {
+ width: 96px;
+ height: 96px;
+ }
+ }
+}
+
diff --git a/packages/theme/src/exception/vars.less b/packages/theme/src/exception/vars.less
new file mode 100644
index 0000000000..728dc3cf71
--- /dev/null
+++ b/packages/theme/src/exception/vars.less
@@ -0,0 +1,10 @@
+.inject-Exception-vars() {
+ // 一级标题颜色
+ --tv-Exception-title-color: var(--tv-color-text, #191919);
+ // 一级标题字体大小
+ --tv-Exception-title-font-size: var(--tv-font-size-md, 16px);
+ // 二级标题颜色
+ --tv-Exception-sub-title-color: var(--tv-color-text-secondary, #595959);
+ // 一级标题字体大小
+ --tv-Exception-sub-title-font-size: var(--tv-font-size-sm, 14px);
+}
diff --git a/packages/theme/src/index.less b/packages/theme/src/index.less
index c9c6e7a0b8..da188829b9 100644
--- a/packages/theme/src/index.less
+++ b/packages/theme/src/index.less
@@ -54,6 +54,7 @@
@import './dropdown-item/index.less';
@import './dropdown-menu/index.less';
@import './espace/index.less';
+@import './exception/index.less';
@import './fall-menu/index.less';
@import './file-upload/index.less';
@import './filter-box/index.less';
diff --git a/packages/theme/src/svgs/no-data.svg b/packages/theme/src/svgs/no-data.svg
index 8aa86eb2c8..ef26537c03 100644
--- a/packages/theme/src/svgs/no-data.svg
+++ b/packages/theme/src/svgs/no-data.svg
@@ -1,5 +1,6 @@
-
+
@@ -7,26 +8,56 @@
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/packages/theme/src/svgs/no-news.svg b/packages/theme/src/svgs/no-news.svg
index 81b6537bae..eba1b97953 100644
--- a/packages/theme/src/svgs/no-news.svg
+++ b/packages/theme/src/svgs/no-news.svg
@@ -1,28 +1,60 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
-
+
+
diff --git a/packages/theme/src/svgs/no-perm.svg b/packages/theme/src/svgs/no-perm.svg
index d5a3208e16..6099f1e121 100644
--- a/packages/theme/src/svgs/no-perm.svg
+++ b/packages/theme/src/svgs/no-perm.svg
@@ -1,24 +1,44 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
diff --git a/packages/theme/src/svgs/no-result.svg b/packages/theme/src/svgs/no-result.svg
index 7da1416f5a..30c6337aab 100644
--- a/packages/theme/src/svgs/no-result.svg
+++ b/packages/theme/src/svgs/no-result.svg
@@ -1,36 +1,72 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
diff --git a/packages/theme/src/svgs/page-noperm.svg b/packages/theme/src/svgs/page-noperm.svg
index 224e49286c..ca48312d79 100644
--- a/packages/theme/src/svgs/page-noperm.svg
+++ b/packages/theme/src/svgs/page-noperm.svg
@@ -1,23 +1,41 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
+
diff --git a/packages/theme/src/svgs/page-nothing.svg b/packages/theme/src/svgs/page-nothing.svg
index 938ae2c31f..5635f1361c 100644
--- a/packages/theme/src/svgs/page-nothing.svg
+++ b/packages/theme/src/svgs/page-nothing.svg
@@ -1,27 +1,48 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
diff --git a/packages/theme/src/svgs/page-servererror.svg b/packages/theme/src/svgs/page-servererror.svg
index eb8862bbdf..c44083d086 100644
--- a/packages/theme/src/svgs/page-servererror.svg
+++ b/packages/theme/src/svgs/page-servererror.svg
@@ -1,42 +1,88 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/packages/theme/src/svgs/page-weaknet.svg b/packages/theme/src/svgs/page-weaknet.svg
index 3256c1d666..9c100e0211 100644
--- a/packages/theme/src/svgs/page-weaknet.svg
+++ b/packages/theme/src/svgs/page-weaknet.svg
@@ -1,23 +1,41 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
diff --git a/packages/theme/src/svgs/weaknet.svg b/packages/theme/src/svgs/weaknet.svg
index 74fb9d942d..4176d73b23 100644
--- a/packages/theme/src/svgs/weaknet.svg
+++ b/packages/theme/src/svgs/weaknet.svg
@@ -1,24 +1,45 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
diff --git a/packages/vue-locale/src/lang/en.ts b/packages/vue-locale/src/lang/en.ts
index 250b458474..63dd3e7894 100644
--- a/packages/vue-locale/src/lang/en.ts
+++ b/packages/vue-locale/src/lang/en.ts
@@ -265,7 +265,7 @@ export default {
noperm: 'Not find the page',
weaknet: 'Poor network performance',
pcview: 'View the file on the PC',
- nodata: 'Get some rest',
+ nodata: 'No data available.',
create: 'Create',
provide: 'Provided by the TINY Team DEV',
nodatamf: 'No data available.',
diff --git a/packages/vue-locale/src/lang/es-LA.ts b/packages/vue-locale/src/lang/es-LA.ts
index c532b51796..c39d9811d6 100644
--- a/packages/vue-locale/src/lang/es-LA.ts
+++ b/packages/vue-locale/src/lang/es-LA.ts
@@ -265,7 +265,7 @@ export default {
noperm: 'No encontrar la página',
weaknet: 'Bajo rendimiento de la red',
pcview: 'Ver el archivo en la PC',
- nodata: 'Descansa un poco',
+ nodata: 'No hay datos disponibles.',
create: 'Crear',
provide: 'Proporcionado por el equipo TINY DEV',
nodatamf: 'No hay datos disponibles.',
diff --git a/packages/vue-locale/src/lang/pt-BR.ts b/packages/vue-locale/src/lang/pt-BR.ts
index f731de5c39..74fc819436 100644
--- a/packages/vue-locale/src/lang/pt-BR.ts
+++ b/packages/vue-locale/src/lang/pt-BR.ts
@@ -265,7 +265,7 @@ export default {
noperm: 'Não encontrar a página.',
weaknet: 'Desempenho de rede ruim.',
pcview: 'Exibir o arquivo no PC.',
- nodata: 'Descanse um pouco.',
+ nodata: 'Não há dados disponíveis.',
create: 'Criar',
provide: 'Fornecido pela equipe TINY DEV.',
nodatamf: 'Não há dados disponíveis.',
diff --git a/packages/vue-locale/src/lang/zh-CN.ts b/packages/vue-locale/src/lang/zh-CN.ts
index af3e5d89e2..e01bb359fe 100644
--- a/packages/vue-locale/src/lang/zh-CN.ts
+++ b/packages/vue-locale/src/lang/zh-CN.ts
@@ -265,7 +265,7 @@ export default {
noperm: '茫茫大海,找不到页面',
weaknet: '网络不给力',
pcview: '请到PC上查看文件',
- nodata: '休息一下',
+ nodata: '暂无数据',
create: '创建',
provide: 'TINY 开发团队提供',
nodatamf: '暂无数据',
diff --git a/packages/vue/src/exception/index.ts b/packages/vue/src/exception/index.ts
index 7a0d7898c1..4f52bb6f4b 100644
--- a/packages/vue/src/exception/index.ts
+++ b/packages/vue/src/exception/index.ts
@@ -11,6 +11,7 @@
*/
import Exception from './src/index'
import { version } from './package.json'
+import '@opentiny/vue-theme/exception/index.less'
/* istanbul ignore next */
Exception.install = function (Vue) {
diff --git a/packages/vue/src/exception/src/index.ts b/packages/vue/src/exception/src/index.ts
index 5f95fbc717..3f1a8c3894 100644
--- a/packages/vue/src/exception/src/index.ts
+++ b/packages/vue/src/exception/src/index.ts
@@ -1,5 +1,5 @@
import { $setup, $prefix, $props, defineComponent } from '@opentiny/vue-common'
-import template from 'virtual-template?mobile-first'
+import template from 'virtual-template?pc|mobile-first'
export default defineComponent({
name: $prefix + 'Exception',
diff --git a/packages/vue/src/exception/src/pc.vue b/packages/vue/src/exception/src/pc.vue
new file mode 100644
index 0000000000..658e013080
--- /dev/null
+++ b/packages/vue/src/exception/src/pc.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ t(_constants.INTERNALCONFIG[type.toUpperCase()]) }}
+
+
+ {{ subMessage }}
+
+
+
+
+
+
+
+
+