diff --git a/components.d.ts b/components.d.ts index ec0ad66..bfd18eb 100644 --- a/components.d.ts +++ b/components.d.ts @@ -35,6 +35,7 @@ declare module 'vue' { ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] @@ -43,6 +44,8 @@ declare module 'vue' { ElSelect: typeof import('element-plus/es')['ElSelect'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] @@ -56,7 +59,10 @@ declare module 'vue' { Qrcode: typeof import('./src/components/Qrcode/index.vue')['default'] Redirect: typeof import('./src/components/Redirect/index.vue')['default'] Search: typeof import('./src/components/Search/index.vue')['default'] + Slot: typeof import('./src/components/Table/components/Slot.vue')['default'] SvgIcon: typeof import('./src/components/SvgIcon/index.vue')['default'] + Table: typeof import('./src/components/Table/index.vue')['default'] + TableColumn: typeof import('./src/components/Table/components/TableColumn.vue')['default'] } } diff --git a/src/components/Table/components/Slot.vue b/src/components/Table/components/Slot.vue new file mode 100644 index 0000000..07c1107 --- /dev/null +++ b/src/components/Table/components/Slot.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/Table/components/TableColumn.vue b/src/components/Table/components/TableColumn.vue new file mode 100644 index 0000000..98d57ea --- /dev/null +++ b/src/components/Table/components/TableColumn.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/components/Table/index.vue b/src/components/Table/index.vue new file mode 100644 index 0000000..7d34e4a --- /dev/null +++ b/src/components/Table/index.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/components/index.ts b/src/components/index.ts index 35e696f..3aacce7 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -3,10 +3,12 @@ import SvgIcon from './SvgIcon/index.vue' // svg组件 import ComSearch from './Search/index.vue' // search组件 import ComDialog from './Dialog/index.vue' // dialog组件 import ComDetail from './Detail/index.vue' // detail组件 +import ComTable from './Table/index.vue' // table组件 export function setupGlobCom(app: App): void { app.component('SvgIcon', SvgIcon) app.component('ComSearch', ComSearch) app.component('ComDialog', ComDialog) app.component('ComDetail', ComDetail) + app.component('ComTable', ComTable) } diff --git a/src/router/index.ts b/src/router/index.ts index 6e9d2a2..45814be 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -216,182 +216,190 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [ meta: { title: '文字高亮' } + }, + { + path: 'watermark', + component: () => import('_v/components-demo/watermark/index.vue'), + name: 'WatermarkDemo', + meta: { + title: '水印' + } } ] }, - // { - // path: '/table-demo', - // component: Layout, - // redirect: '/table-demo/basic-table', - // name: 'TableDemo', - // meta: { - // title: '表格', - // icon: 'table', - // alwaysShow: true - // }, - // children: [ - // { - // path: 'basic-table', - // component: () => import('_v/table-demo/basic-table/index.vue'), - // name: 'BasicTable', - // meta: { - // title: '基础表格' - // } - // }, - // { - // path: 'page-table', - // component: () => import('_v/table-demo/page-table/index.vue'), - // name: 'PageTable', - // meta: { - // title: '分页表格' - // } - // }, - // { - // path: 'stripe-table', - // component: () => import('_v/table-demo/stripe-table/index.vue'), - // name: 'StripeTable', - // meta: { - // title: '带斑马纹表格' - // } - // }, - // { - // path: 'border-table', - // component: () => import('_v/table-demo/border-table/index.vue'), - // name: 'BorderTable', - // meta: { - // title: '带边框表格' - // } - // }, - // { - // path: 'state-table', - // component: () => import('_v/table-demo/state-table/index.vue'), - // name: 'StateTable', - // meta: { - // title: '带状态表格' - // } - // }, - // { - // path: 'fixed-header', - // component: () => import('_v/table-demo/fixed-header/index.vue'), - // name: 'FixedHeader', - // meta: { - // title: '固定表头' - // } - // }, - // { - // path: 'fixed-column', - // component: () => import('_v/table-demo/fixed-column/index.vue'), - // name: 'FixedColumn', - // meta: { - // title: '固定列' - // } - // }, - // { - // path: 'fixed-column-header', - // component: () => import('_v/table-demo/fixed-column-header/index.vue'), - // name: 'FixedColumnHeader', - // meta: { - // title: '固定列和表头' - // } - // }, - // { - // path: 'fluid-height', - // component: () => import('_v/table-demo/fluid-height/index.vue'), - // name: 'FluidHeight', - // meta: { - // title: '流体高度' - // } - // }, - // { - // path: 'multi-header', - // component: () => import('_v/table-demo/multi-header/index.vue'), - // name: 'MultiHeader', - // meta: { - // title: '多级表头' - // } - // }, - // { - // path: 'single-choice', - // component: () => import('_v/table-demo/single-choice/index.vue'), - // name: 'SingleChoice', - // meta: { - // title: '单选' - // } - // }, - // { - // path: 'multiple-choice', - // component: () => import('_v/table-demo/multiple-choice/index.vue'), - // name: 'MultipleChoice', - // meta: { - // title: '多选' - // } - // }, - // { - // path: 'sort-table', - // component: () => import('_v/table-demo/sort-table/index.vue'), - // name: 'SortTable', - // meta: { - // title: '排序' - // } - // }, - // { - // path: 'screen-table', - // component: () => import('_v/table-demo/screen-table/index.vue'), - // name: 'ScreenTable', - // meta: { - // title: '筛选' - // } - // }, - // { - // path: 'expand-row', - // component: () => import('_v/table-demo/expand-row/index.vue'), - // name: 'ExpandRow', - // meta: { - // title: '展开行' - // } - // }, - // { - // path: 'tree-and-load', - // component: () => import('_v/table-demo/tree-and-load/index.vue'), - // name: 'TreeAndLoad', - // meta: { - // title: '树形数据与懒加载' - // } - // }, - // { - // path: 'custom-header', - // component: () => import('_v/table-demo/custom-header/index.vue'), - // name: 'CustomHeader', - // meta: { - // title: '自定义表头' - // } - // }, - // { - // path: 'total-table', - // component: () => import('_v/table-demo/total-table/index.vue'), - // name: 'TotalTable', - // meta: { - // title: '表尾合计行' - // } - // }, - // { - // path: 'merge-table', - // component: () => import('_v/table-demo/merge-table/index.vue'), - // name: 'MergeTable', - // meta: { - // title: '合并行或列' - // } - // }, - // { - // path: 'custom-index', - // component: () => import('_v/table-demo/custom-index/index.vue'), - // name: 'CustomIndex', - // meta: { - // title: '自定义索引' - // } - // } - // ] - // }, + { + path: '/table-demo', + component: Layout, + redirect: '/table-demo/basic-table', + name: 'TableDemo', + meta: { + title: '表格', + icon: 'table', + alwaysShow: true + }, + children: [ + { + path: 'basic-table', + component: () => import('_v/table-demo/basic-table/index.vue'), + name: 'BasicTable', + meta: { + title: '基础表格' + } + } + // { + // path: 'page-table', + // component: () => import('_v/table-demo/page-table/index.vue'), + // name: 'PageTable', + // meta: { + // title: '分页表格' + // } + // }, + // { + // path: 'stripe-table', + // component: () => import('_v/table-demo/stripe-table/index.vue'), + // name: 'StripeTable', + // meta: { + // title: '带斑马纹表格' + // } + // }, + // { + // path: 'border-table', + // component: () => import('_v/table-demo/border-table/index.vue'), + // name: 'BorderTable', + // meta: { + // title: '带边框表格' + // } + // }, + // { + // path: 'state-table', + // component: () => import('_v/table-demo/state-table/index.vue'), + // name: 'StateTable', + // meta: { + // title: '带状态表格' + // } + // }, + // { + // path: 'fixed-header', + // component: () => import('_v/table-demo/fixed-header/index.vue'), + // name: 'FixedHeader', + // meta: { + // title: '固定表头' + // } + // }, + // { + // path: 'fixed-column', + // component: () => import('_v/table-demo/fixed-column/index.vue'), + // name: 'FixedColumn', + // meta: { + // title: '固定列' + // } + // }, + // { + // path: 'fixed-column-header', + // component: () => import('_v/table-demo/fixed-column-header/index.vue'), + // name: 'FixedColumnHeader', + // meta: { + // title: '固定列和表头' + // } + // }, + // { + // path: 'fluid-height', + // component: () => import('_v/table-demo/fluid-height/index.vue'), + // name: 'FluidHeight', + // meta: { + // title: '流体高度' + // } + // }, + // { + // path: 'multi-header', + // component: () => import('_v/table-demo/multi-header/index.vue'), + // name: 'MultiHeader', + // meta: { + // title: '多级表头' + // } + // }, + // { + // path: 'single-choice', + // component: () => import('_v/table-demo/single-choice/index.vue'), + // name: 'SingleChoice', + // meta: { + // title: '单选' + // } + // }, + // { + // path: 'multiple-choice', + // component: () => import('_v/table-demo/multiple-choice/index.vue'), + // name: 'MultipleChoice', + // meta: { + // title: '多选' + // } + // }, + // { + // path: 'sort-table', + // component: () => import('_v/table-demo/sort-table/index.vue'), + // name: 'SortTable', + // meta: { + // title: '排序' + // } + // }, + // { + // path: 'screen-table', + // component: () => import('_v/table-demo/screen-table/index.vue'), + // name: 'ScreenTable', + // meta: { + // title: '筛选' + // } + // }, + // { + // path: 'expand-row', + // component: () => import('_v/table-demo/expand-row/index.vue'), + // name: 'ExpandRow', + // meta: { + // title: '展开行' + // } + // }, + // { + // path: 'tree-and-load', + // component: () => import('_v/table-demo/tree-and-load/index.vue'), + // name: 'TreeAndLoad', + // meta: { + // title: '树形数据与懒加载' + // } + // }, + // { + // path: 'custom-header', + // component: () => import('_v/table-demo/custom-header/index.vue'), + // name: 'CustomHeader', + // meta: { + // title: '自定义表头' + // } + // }, + // { + // path: 'total-table', + // component: () => import('_v/table-demo/total-table/index.vue'), + // name: 'TotalTable', + // meta: { + // title: '表尾合计行' + // } + // }, + // { + // path: 'merge-table', + // component: () => import('_v/table-demo/merge-table/index.vue'), + // name: 'MergeTable', + // meta: { + // title: '合并行或列' + // } + // }, + // { + // path: 'custom-index', + // component: () => import('_v/table-demo/custom-index/index.vue'), + // name: 'CustomIndex', + // meta: { + // title: '自定义索引' + // } + // } + ] + }, // { // path: '/directives-demo', // component: Layout, diff --git a/src/utils/index.ts b/src/utils/index.ts index 0e96e52..182bf69 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -129,7 +129,7 @@ export function exportFile(response: AxiosResponse) { ? response.headers['content-disposition'].split(';')[1].split('=')[1] : 'test' ) - const blob = new Blob([response.data], { + const blob = new Blob([response.data as Blob], { type: response.headers['content-type'] }) if (typeof (window.navigator as any).msSaveBlob !== 'undefined') { diff --git a/src/views/components-demo/watermark/index.vue b/src/views/components-demo/watermark/index.vue new file mode 100644 index 0000000..7b08996 --- /dev/null +++ b/src/views/components-demo/watermark/index.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/table-demo/basic-table/index.vue b/src/views/table-demo/basic-table/index.vue new file mode 100644 index 0000000..0d8b659 --- /dev/null +++ b/src/views/table-demo/basic-table/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/views/table-demo/border-table/index.vue b/src/views/table-demo/border-table/index.vue new file mode 100644 index 0000000..e8fcc0f --- /dev/null +++ b/src/views/table-demo/border-table/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/views/table-demo/custom-header/index.vue b/src/views/table-demo/custom-header/index.vue new file mode 100644 index 0000000..88c42b0 --- /dev/null +++ b/src/views/table-demo/custom-header/index.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/table-demo/custom-index/index.vue b/src/views/table-demo/custom-index/index.vue new file mode 100644 index 0000000..4ccb8b2 --- /dev/null +++ b/src/views/table-demo/custom-index/index.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/views/table-demo/expand-row/index.vue b/src/views/table-demo/expand-row/index.vue new file mode 100644 index 0000000..d40d1db --- /dev/null +++ b/src/views/table-demo/expand-row/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/views/table-demo/fixed-column-header/index.vue b/src/views/table-demo/fixed-column-header/index.vue new file mode 100644 index 0000000..f7dceec --- /dev/null +++ b/src/views/table-demo/fixed-column-header/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/table-demo/fixed-column/index.vue b/src/views/table-demo/fixed-column/index.vue new file mode 100644 index 0000000..2060338 --- /dev/null +++ b/src/views/table-demo/fixed-column/index.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/views/table-demo/fixed-header/index.vue b/src/views/table-demo/fixed-header/index.vue new file mode 100644 index 0000000..0ca4c2d --- /dev/null +++ b/src/views/table-demo/fixed-header/index.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/views/table-demo/fluid-height/index.vue b/src/views/table-demo/fluid-height/index.vue new file mode 100644 index 0000000..a614cff --- /dev/null +++ b/src/views/table-demo/fluid-height/index.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/views/table-demo/merge-table/index.vue b/src/views/table-demo/merge-table/index.vue new file mode 100644 index 0000000..d026cb8 --- /dev/null +++ b/src/views/table-demo/merge-table/index.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/views/table-demo/multi-header/index.vue b/src/views/table-demo/multi-header/index.vue new file mode 100644 index 0000000..1a2332f --- /dev/null +++ b/src/views/table-demo/multi-header/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/views/table-demo/multiple-choice/index.vue b/src/views/table-demo/multiple-choice/index.vue new file mode 100644 index 0000000..2b2ae21 --- /dev/null +++ b/src/views/table-demo/multiple-choice/index.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/views/table-demo/page-table/index.vue b/src/views/table-demo/page-table/index.vue new file mode 100644 index 0000000..e93cc00 --- /dev/null +++ b/src/views/table-demo/page-table/index.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/table-demo/screen-table/index.vue b/src/views/table-demo/screen-table/index.vue new file mode 100644 index 0000000..79bca74 --- /dev/null +++ b/src/views/table-demo/screen-table/index.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/table-demo/single-choice/index.vue b/src/views/table-demo/single-choice/index.vue new file mode 100644 index 0000000..7fbb29d --- /dev/null +++ b/src/views/table-demo/single-choice/index.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/views/table-demo/sort-table/index.vue b/src/views/table-demo/sort-table/index.vue new file mode 100644 index 0000000..1b9e360 --- /dev/null +++ b/src/views/table-demo/sort-table/index.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/views/table-demo/state-table/index.vue b/src/views/table-demo/state-table/index.vue new file mode 100644 index 0000000..d28bae5 --- /dev/null +++ b/src/views/table-demo/state-table/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/views/table-demo/stripe-table/index.vue b/src/views/table-demo/stripe-table/index.vue new file mode 100644 index 0000000..6159c96 --- /dev/null +++ b/src/views/table-demo/stripe-table/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/views/table-demo/total-table/index.vue b/src/views/table-demo/total-table/index.vue new file mode 100644 index 0000000..a0d393b --- /dev/null +++ b/src/views/table-demo/total-table/index.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/views/table-demo/tree-and-load/index.vue b/src/views/table-demo/tree-and-load/index.vue new file mode 100644 index 0000000..c1622ac --- /dev/null +++ b/src/views/table-demo/tree-and-load/index.vue @@ -0,0 +1,163 @@ + + + + +