Skip to content

Commit

Permalink
fix(table): make sure the editing line is working, fix #439
Browse files Browse the repository at this point in the history
  • Loading branch information
anncwb committed Mar 31, 2021
1 parent 8a14069 commit b54b794
Show file tree
Hide file tree
Showing 14 changed files with 196 additions and 53 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- 新增`headerTitle` slot
- 新增打印示例
- 新增关于界面

### ✨ Refactor

Expand All @@ -15,6 +16,7 @@

- 确保面包屑正确的显示图标
- 修复 tinymce 上传按钮全屏模式下消失问题
- 确保 title 在重新登录后正常改变

## 2.1.1 (2021-03-26)

Expand Down
2 changes: 1 addition & 1 deletion src/components/Table/src/BasicTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
} = useTableForm(getProps, slots, fetch);
const getBindValues = computed(() => {
const dataSource = toRaw(unref(getDataSourceRef));
const dataSource = unref(getDataSourceRef);
let propsData: Recordable = {
size: 'middle',
// ...(dataSource.length === 0 ? { getPopupContainer: () => document.body } : {}),
Expand Down
7 changes: 6 additions & 1 deletion src/components/Table/src/hooks/useTable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@ type UseTableMethod = TableActionType & {

export function useTable(
tableProps?: Props
): [(instance: TableActionType, formInstance: UseTableMethod) => void, TableActionType] {
): [
(instance: TableActionType, formInstance: UseTableMethod) => void,
TableActionType & {
getForm: () => FormActionType;
}
] {
const tableRef = ref<Nullable<TableActionType>>(null);
const loadedRef = ref<Nullable<boolean>>(false);
const formRef = ref<Nullable<UseTableMethod>>(null);
Expand Down
23 changes: 15 additions & 8 deletions src/hooks/web/useTitle.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
import { watch, unref } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { useTitle as usePageTitle } from '@vueuse/core';
import { useGlobSetting } from '/@/hooks/setting';
import { useRouter } from 'vue-router';

import { REDIRECT_NAME } from '/@/router/constant';
import { listenerRouteChange } from '/@/logics/mitt/routeChange';

export function useTitle() {
const { title } = useGlobSetting();
const { t } = useI18n();
const { currentRoute } = useRouter();

const pageTitle = usePageTitle();

listenerRouteChange((route) => {
if (route.name === REDIRECT_NAME) {
return;
}
watch(
() => currentRoute.value.path,
() => {
const route = unref(currentRoute);
if (route.name === REDIRECT_NAME) {
return;
}

const tTitle = t(route?.meta?.title as string);
pageTitle.value = tTitle ? ` ${tTitle} - ${title} ` : `${title}`;
});
const tTitle = t(route?.meta?.title as string);
pageTitle.value = tTitle ? ` ${tTitle} - ${title} ` : `${title}`;
},
{ immediate: true }
);
}
2 changes: 1 addition & 1 deletion src/locales/lang/en/routes/dashboard.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default {
dashboard: 'Dashboard',
welcome: 'Home',
about: 'About',
workbench: 'Workbench',
analysis: 'Analysis',
};
2 changes: 1 addition & 1 deletion src/locales/lang/zh_CN/routes/dashboard.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default {
dashboard: 'Dashboard',
welcome: '首页',
about: '关于',
workbench: '工作台',
analysis: '分析页',
};
11 changes: 11 additions & 0 deletions src/router/menus/modules/about.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { MenuModule } from '/@/router/types';
import { t } from '/@/hooks/web/useI18n';

const about: MenuModule = {
orderNo: 100000,
menu: {
path: '/about/index',
name: t('routes.dashboard.about'),
},
};
export default about;
11 changes: 0 additions & 11 deletions src/router/menus/modules/home.ts

This file was deleted.

28 changes: 28 additions & 0 deletions src/router/routes/modules/about.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import type { AppRouteModule } from '/@/router/types';

import { LAYOUT } from '/@/router/constant';
import { t } from '/@/hooks/web/useI18n';

const dashboard: AppRouteModule = {
path: '/about',
name: 'About',
component: LAYOUT,
redirect: '/about/index',
meta: {
icon: 'simple-icons:about-dot-me',
title: t('routes.dashboard.about'),
},
children: [
{
path: 'index',
name: 'AboutPage',
component: () => import('/@/views/sys/about/index.vue'),
meta: {
title: t('routes.dashboard.about'),
icon: 'simple-icons:about-dot-me',
},
},
],
};

export default dashboard;
29 changes: 0 additions & 29 deletions src/router/routes/modules/home.ts

This file was deleted.

11 changes: 10 additions & 1 deletion src/views/demo/table/FormTable.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
<template>
<BasicTable @register="registerTable">
<template #form-custom> custom-slot </template>

<template #toolbar>
<a-button type="primary" @click="getFormValues">获取表单数据</a-button>
</template>
</BasicTable>
</template>
<script lang="ts">
Expand All @@ -13,7 +17,7 @@
export default defineComponent({
components: { BasicTable },
setup() {
const [registerTable] = useTable({
const [registerTable, { getForm }] = useTable({
title: '开启搜索区域',
api: demoListApi,
columns: getBasicColumns(),
Expand All @@ -23,8 +27,13 @@
rowSelection: { type: 'checkbox' },
});
function getFormValues() {
console.log(getForm().getFieldsValue());
}
return {
registerTable,
getFormValues,
};
},
});
Expand Down
102 changes: 102 additions & 0 deletions src/views/sys/about/index.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<template>
<PageWrapper title="关于">
<template #headerContent>
<div class="flex justify-between items-center">
<span class="flex-1">
<a :href="GITHUB_URL" target="_blank">{{ name }}</a>
是一个基于Vue3.0、Vite、 Ant-Design-Vue 、TypeScript
的后台解决方案,目标是为中大型项目开发,提供现成的开箱解决方案及丰富的示例,原则上不会限制任何代码用于商用。
</span>
</div>
</template>
<Description @register="infoRegister" />
<Description @register="register" class="my-4" />
<Description @register="registerDev" />
</PageWrapper>
</template>
<script lang="ts">
import { defineComponent, h } from 'vue';
import { Tag } from 'ant-design-vue';
import { PageWrapper } from '/@/components/Page';
import { Description, DescItem, useDescription } from '/@/components/Description/index';
import { GITHUB_URL, SITE_URL, DOC_URL } from '/@/settings/siteSetting';
export default defineComponent({
name: 'AboutPage',
components: { Description, PageWrapper },
setup() {
const { pkg, lastBuildTime } = window.__APP_INFO__;
const { dependencies, devDependencies, name, version } = pkg;
const schema: DescItem[] = [];
const devSchema: DescItem[] = [];
const commonTagRender = (color: string) => (curVal) => h(Tag, { color }, () => curVal);
const commonLinkRender = (text: string) => (href) => h('a', { href, target: '_blank' }, text);
const infoSchema: DescItem[] = [
{
label: '版本',
field: 'version',
render: commonTagRender('blue'),
},
{
label: '最后编译时间',
field: 'lastBuildTime',
render: commonTagRender('blue'),
},
{
label: '文档地址',
field: 'doc',
render: commonLinkRender('文档地址'),
},
{
label: '预览地址',
field: 'preview',
render: commonLinkRender('预览地址'),
},
{
label: 'Github',
field: 'github',
render: commonLinkRender('Github'),
},
];
const infoData = {
version,
lastBuildTime,
doc: DOC_URL,
preview: SITE_URL,
github: GITHUB_URL,
};
Object.keys(dependencies).forEach((key) => {
schema.push({ field: key, label: key });
});
Object.keys(devDependencies).forEach((key) => {
devSchema.push({ field: key, label: key });
});
const [register] = useDescription({
title: '生产环境依赖',
data: dependencies,
schema: schema,
column: 3,
});
const [registerDev] = useDescription({
title: '开发环境依赖',
data: devDependencies,
schema: devSchema,
column: 3,
});
const [infoRegister] = useDescription({
title: '项目信息',
data: infoData,
schema: infoSchema,
column: 2,
});
return { register, registerDev, infoRegister, name, GITHUB_URL };
},
});
</script>
10 changes: 10 additions & 0 deletions types/global.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ declare global {
declare interface Window {
// Global vue app instance
__APP__: App<Element>;

__APP_INFO__: {
pkg: {
name: string;
version: string;
dependencies: Recordable<string>;
devDependencies: Recordable<string>;
};
lastBuildTime: string;
};
}

// vue
Expand Down
9 changes: 9 additions & 0 deletions vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ import { createAlias } from './build/vite/alias';
import { wrapperEnv } from './build/utils';
import { createVitePlugins } from './build/vite/plugin';
import { OUTPUT_DIR } from './build/constant';
import pkg from './package.json';
import moment from 'moment';

const APP_INFO = {
pkg,
lastBuildTime: moment().format('YYYY-MM-DD HH:mm:ss'),
};

export default ({ command, mode }: ConfigEnv): UserConfig => {
const root = process.cwd();
Expand Down Expand Up @@ -58,6 +65,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
__VUE_I18N_LEGACY_API__: false,
__VUE_I18N_FULL_INSTALL__: false,
__INTLIFY_PROD_DEVTOOLS__: false,

__APP_INFO__: JSON.stringify(APP_INFO),
},
css: {
preprocessorOptions: {
Expand Down

0 comments on commit b54b794

Please sign in to comment.