mirror of
https://github.com/jekip/naive-ui-admin.git
synced 2026-02-10 16:32:25 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d388ae5656 | ||
|
|
8f05b20ffa | ||
|
|
d973b2a543 | ||
|
|
1d5113a663 | ||
|
|
f331d9c4c7 | ||
|
|
c647e19d06 |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,3 +1,15 @@
|
|||||||
|
# 1.5.3 (2021-08-09)
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
- 修复顶部菜单,选中联动
|
||||||
|
- 修复混合菜单模式,切换其他模式菜单未重置
|
||||||
|
- 实例基础列表,和表格组件实例,开启横向滚动特性
|
||||||
|
- `naiveui` 升级成最新版
|
||||||
|
|
||||||
|
- ### ✨ Features
|
||||||
|
- table组件,默认开启 `ellipsis` 特性
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1.5.2 (2021-08-06)
|
# 1.5.2 (2021-08-06)
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
- 修复已知bug
|
- 修复已知bug
|
||||||
|
|||||||
@@ -12,13 +12,13 @@
|
|||||||
|
|
||||||
|
|
||||||
## 在线预览
|
## 在线预览
|
||||||
- [naive-ui-admin](https://jekip.github.io)
|
- [naive-ui-admin](https://naive-ui-admin.vercel.app)
|
||||||
|
|
||||||
账号:admin,密码:123456(随意)
|
账号:admin,密码:123456(随意)
|
||||||
|
|
||||||
## 文档
|
## 文档
|
||||||
|
|
||||||
[文档地址](https://jekip.github.io/docs/)
|
[文档地址](https://naive-ui-admin-docs.vercel.app)
|
||||||
|
|
||||||
## 准备
|
## 准备
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "naive-ui-admin",
|
"name": "naive-ui-admin",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Ahjung",
|
"name": "Ahjung",
|
||||||
"email": "735878602@qq.com",
|
"email": "735878602@qq.com",
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"makeit-captcha": "^1.2.5",
|
"makeit-captcha": "^1.2.5",
|
||||||
"mitt": "^2.1.0",
|
"mitt": "^2.1.0",
|
||||||
"mockjs": "^1.1.0",
|
"mockjs": "^1.1.0",
|
||||||
"naive-ui": "^2.16.0",
|
"naive-ui": "^2.16.2",
|
||||||
"pinia": "^2.0.0-beta.3",
|
"pinia": "^2.0.0-beta.3",
|
||||||
"qs": "^6.10.1",
|
"qs": "^6.10.1",
|
||||||
"vfonts": "^0.1.0",
|
"vfonts": "^0.1.0",
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
type="password"
|
type="password"
|
||||||
autofocus
|
autofocus
|
||||||
v-model:value="loginParams.password"
|
v-model:value="loginParams.password"
|
||||||
|
@keyup.enter="onLogin"
|
||||||
placeholder="请输入登录密码"
|
placeholder="请输入登录密码"
|
||||||
>
|
>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
|
|||||||
@@ -233,9 +233,6 @@
|
|||||||
getCacheColumns,
|
getCacheColumns,
|
||||||
setCacheColumnsField,
|
setCacheColumnsField,
|
||||||
emit,
|
emit,
|
||||||
getSize: () => {
|
|
||||||
return unref(getBindValues).size;
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getCanResize = computed(() => {
|
const getCanResize = computed(() => {
|
||||||
@@ -288,7 +285,6 @@
|
|||||||
densitySelect,
|
densitySelect,
|
||||||
updatePage,
|
updatePage,
|
||||||
updatePageSize,
|
updatePageSize,
|
||||||
updateCheckedRowKeys,
|
|
||||||
pagination,
|
pagination,
|
||||||
tableAction,
|
tableAction,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ export function useColumns(propsRef: ComputedRef<BasicTableProps>) {
|
|||||||
return hasPermission(column.auth) && isIfShow(column);
|
return hasPermission(column.auth) && isIfShow(column);
|
||||||
})
|
})
|
||||||
.map((column) => {
|
.map((column) => {
|
||||||
|
//默认 ellipsis 为true
|
||||||
|
column.ellipsis = typeof column.ellipsis === 'undefined' ? { tooltip: true } : false;
|
||||||
const { edit } = column;
|
const { edit } = column;
|
||||||
if (edit) {
|
if (edit) {
|
||||||
column.render = renderEditCell(column);
|
column.render = renderEditCell(column);
|
||||||
|
|||||||
@@ -278,11 +278,7 @@
|
|||||||
|
|
||||||
function togNavMode(mode) {
|
function togNavMode(mode) {
|
||||||
settingStore.navMode = mode;
|
settingStore.navMode = mode;
|
||||||
// if (mode === 'header-dark') {
|
settingStore.menuSetting.mixMenu = false;
|
||||||
// settingStore.setNavTheme('dark');
|
|
||||||
// } else {
|
|
||||||
// settingStore.setNavTheme('light');
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
import { useAsyncRouteStore } from '@/store/modules/asyncRoute';
|
import { useAsyncRouteStore } from '@/store/modules/asyncRoute';
|
||||||
import { generatorMenu, generatorMenuMix } from '@/utils';
|
import { generatorMenu, generatorMenuMix } from '@/utils';
|
||||||
import { useProjectSettingStore } from '@/store/modules/projectSetting';
|
import { useProjectSettingStore } from '@/store/modules/projectSetting';
|
||||||
|
import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'Menu',
|
name: 'Menu',
|
||||||
@@ -40,7 +41,8 @@
|
|||||||
default: 'left',
|
default: 'left',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup(props) {
|
emits: ['update:collapsed'],
|
||||||
|
setup(props, { emit }) {
|
||||||
// 当前路由
|
// 当前路由
|
||||||
const currentRoute = useRoute();
|
const currentRoute = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -50,6 +52,10 @@
|
|||||||
const selectedKeys = ref<string>(currentRoute.name as string);
|
const selectedKeys = ref<string>(currentRoute.name as string);
|
||||||
const headerMenuSelectKey = ref<string>('');
|
const headerMenuSelectKey = ref<string>('');
|
||||||
|
|
||||||
|
const { getNavMode } = useProjectSetting();
|
||||||
|
|
||||||
|
const navMode = getNavMode;
|
||||||
|
|
||||||
// 获取当前打开的子菜单
|
// 获取当前打开的子菜单
|
||||||
const matched = currentRoute.matched;
|
const matched = currentRoute.matched;
|
||||||
|
|
||||||
@@ -64,7 +70,10 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const getSelectedKeys = computed(() => {
|
const getSelectedKeys = computed(() => {
|
||||||
return props.location === 'left' ? unref(selectedKeys) : unref(headerMenuSelectKey);
|
let location = props.location;
|
||||||
|
return location === 'left' || (location === 'header' && unref(navMode) === 'horizontal')
|
||||||
|
? unref(selectedKeys)
|
||||||
|
: unref(headerMenuSelectKey);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 监听分割菜单
|
// 监听分割菜单
|
||||||
@@ -72,6 +81,9 @@
|
|||||||
() => settingStore.menuSetting.mixMenu,
|
() => settingStore.menuSetting.mixMenu,
|
||||||
() => {
|
() => {
|
||||||
updateMenu();
|
updateMenu();
|
||||||
|
if (props.collapsed) {
|
||||||
|
emit('update:collapsed', !props.collapsed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -92,6 +104,7 @@
|
|||||||
const matched = currentRoute.matched;
|
const matched = currentRoute.matched;
|
||||||
state.openKeys = matched.map((item) => item.name);
|
state.openKeys = matched.map((item) => item.name);
|
||||||
const activeMenu: string = (currentRoute.meta?.activeMenu as string) || '';
|
const activeMenu: string = (currentRoute.meta?.activeMenu as string) || '';
|
||||||
|
console.log(currentRoute);
|
||||||
selectedKeys.value = activeMenu ? (activeMenu as string) : (currentRoute.name as string);
|
selectedKeys.value = activeMenu ? (activeMenu as string) : (currentRoute.name as string);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
placement="bottom-end"
|
placement="bottom-end"
|
||||||
:options="TabsMenuOptions"
|
:options="TabsMenuOptions"
|
||||||
>
|
>
|
||||||
<div class="tabs-close-btn" @click.prevent>
|
<div class="tabs-close-btn">
|
||||||
<n-icon size="16" color="#515a6e">
|
<n-icon size="16" color="#515a6e">
|
||||||
<DownOutlined />
|
<DownOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
@@ -371,6 +371,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
updateNavScroll();
|
updateNavScroll();
|
||||||
|
state.showDropdown = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getCurrentScrollOffset() {
|
function getCurrentScrollOffset() {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { renderIcon } from '@/utils/index';
|
|||||||
const routes: Array<RouteRecordRaw> = [
|
const routes: Array<RouteRecordRaw> = [
|
||||||
{
|
{
|
||||||
path: '/external',
|
path: '/external',
|
||||||
name: 'https://jekip.github.io/docs/',
|
name: 'https://naive-ui-admin-docs.vercel.app',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
meta: {
|
meta: {
|
||||||
title: '项目文档',
|
title: '项目文档',
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ export function generatorMenuMix(routerMap: Array<any>, routerName: string, loca
|
|||||||
* 递归组装子菜单
|
* 递归组装子菜单
|
||||||
* */
|
* */
|
||||||
export function getChildrenRouter(routerMap: Array<any>) {
|
export function getChildrenRouter(routerMap: Array<any>) {
|
||||||
return routerMap.map((item) => {
|
return filterRouter(routerMap).map((item) => {
|
||||||
const isRoot = isRootRouter(item);
|
const isRoot = isRootRouter(item);
|
||||||
const info = isRoot ? item.children[0] : item;
|
const info = isRoot ? item.children[0] : item;
|
||||||
const currentMenu = {
|
const currentMenu = {
|
||||||
|
|||||||
@@ -22,12 +22,16 @@
|
|||||||
</n-descriptions-item>
|
</n-descriptions-item>
|
||||||
<n-descriptions-item label="文档地址">
|
<n-descriptions-item label="文档地址">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<a href="https://jekip.github.io/docs/" class="py-2" target="_blank">查看文档地址</a>
|
<a href="https://naive-ui-admin-docs.vercel.app" class="py-2" target="_blank"
|
||||||
|
>查看文档地址</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</n-descriptions-item>
|
</n-descriptions-item>
|
||||||
<n-descriptions-item label="预览地址">
|
<n-descriptions-item label="预览地址">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<a href="https://jekip.github.io/" class="py-2" target="_blank">查看预览地址</a>
|
<a href="https://naive-ui-admin.vercel.app" class="py-2" target="_blank"
|
||||||
|
>查看预览地址</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</n-descriptions-item>
|
</n-descriptions-item>
|
||||||
<n-descriptions-item label="Github">
|
<n-descriptions-item label="Github">
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: 'id',
|
title: 'id',
|
||||||
key: 'id',
|
key: 'id',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '编码',
|
title: '编码',
|
||||||
key: 'no',
|
key: 'no',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '名称',
|
title: '名称',
|
||||||
@@ -22,6 +24,7 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: '头像',
|
title: '头像',
|
||||||
key: 'avatar',
|
key: 'avatar',
|
||||||
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(NAvatar, {
|
return h(NAvatar, {
|
||||||
size: 48,
|
size: 48,
|
||||||
@@ -47,29 +50,33 @@ export const columns = [
|
|||||||
},
|
},
|
||||||
edit: true,
|
edit: true,
|
||||||
width: 200,
|
width: 200,
|
||||||
|
ellipsis: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '开始日期',
|
title: '开始日期',
|
||||||
key: 'beginTime',
|
key: 'beginTime',
|
||||||
edit: true,
|
edit: true,
|
||||||
width: 250,
|
width: 160,
|
||||||
editComponent: 'NDatePicker',
|
editComponent: 'NDatePicker',
|
||||||
editComponentProps: {
|
editComponentProps: {
|
||||||
type: 'datetime',
|
type: 'datetime',
|
||||||
format: 'yyyy-MM-dd HH:mm:ss',
|
format: 'yyyy-MM-dd HH:mm:ss',
|
||||||
},
|
},
|
||||||
|
ellipsis: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '结束日期',
|
title: '结束日期',
|
||||||
key: 'endTime',
|
key: 'endTime',
|
||||||
width: 200,
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
key: 'date',
|
key: 'date',
|
||||||
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '停留时间',
|
title: '停留时间',
|
||||||
key: 'time',
|
key: 'time',
|
||||||
|
width: 80,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
:row-key="(row) => row.id"
|
:row-key="(row) => row.id"
|
||||||
ref="actionRef"
|
ref="actionRef"
|
||||||
:actionColumn="actionColumn"
|
:actionColumn="actionColumn"
|
||||||
|
:scroll-x="1360"
|
||||||
@update:checked-row-keys="onCheckedRow"
|
@update:checked-row-keys="onCheckedRow"
|
||||||
>
|
>
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
|
|||||||
@@ -5,19 +5,22 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: 'id',
|
title: 'id',
|
||||||
key: 'id',
|
key: 'id',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '编码',
|
title: '编码',
|
||||||
key: 'no',
|
key: 'no',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '名称',
|
title: '名称',
|
||||||
key: 'name',
|
key: 'name',
|
||||||
width: 200,
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '头像',
|
title: '头像',
|
||||||
key: 'avatar',
|
key: 'avatar',
|
||||||
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(NAvatar, {
|
return h(NAvatar, {
|
||||||
size: 48,
|
size: 48,
|
||||||
@@ -28,21 +31,22 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: '地址',
|
title: '地址',
|
||||||
key: 'address',
|
key: 'address',
|
||||||
width: 200,
|
width: 150,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '开始日期',
|
title: '开始日期',
|
||||||
key: 'beginTime',
|
key: 'beginTime',
|
||||||
width: 200,
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '结束日期',
|
title: '结束日期',
|
||||||
key: 'endTime',
|
key: 'endTime',
|
||||||
width: 200,
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '状态',
|
title: '状态',
|
||||||
key: 'status',
|
key: 'status',
|
||||||
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(
|
return h(
|
||||||
NTag,
|
NTag,
|
||||||
@@ -58,9 +62,11 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
key: 'date',
|
key: 'date',
|
||||||
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '停留时间',
|
title: '停留时间',
|
||||||
key: 'time',
|
key: 'time',
|
||||||
|
width: 80,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
:request="loadDataTable"
|
:request="loadDataTable"
|
||||||
:row-key="(row) => row.id"
|
:row-key="(row) => row.id"
|
||||||
ref="actionRef"
|
ref="actionRef"
|
||||||
:actionColumn="actionColumn"
|
|
||||||
@edit-end="editEnd"
|
@edit-end="editEnd"
|
||||||
@edit-change="onEditChange"
|
@edit-change="onEditChange"
|
||||||
@update:checked-row-keys="onCheckedRow"
|
@update:checked-row-keys="onCheckedRow"
|
||||||
|
:scroll-x="1360"
|
||||||
>
|
>
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<n-button type="primary" @click="reloadTable">刷新数据</n-button>
|
<n-button type="primary" @click="reloadTable">刷新数据</n-button>
|
||||||
@@ -35,19 +35,6 @@
|
|||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
name: 'xiaoMa',
|
name: 'xiaoMa',
|
||||||
},
|
},
|
||||||
actionColumn: {
|
|
||||||
width: 150,
|
|
||||||
title: '操作',
|
|
||||||
key: 'action',
|
|
||||||
fixed: 'right',
|
|
||||||
align: 'center',
|
|
||||||
render(record) {
|
|
||||||
return h(TableAction, {
|
|
||||||
style: 'button',
|
|
||||||
actions: createActions(record),
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function handleEdit(record) {
|
function handleEdit(record) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
@edit-end="editEnd"
|
@edit-end="editEnd"
|
||||||
@edit-change="onEditChange"
|
@edit-change="onEditChange"
|
||||||
@update:checked-row-keys="onCheckedRow"
|
@update:checked-row-keys="onCheckedRow"
|
||||||
|
:scroll-x="1510"
|
||||||
>
|
>
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<n-button type="primary" @click="reloadTable">刷新数据</n-button>
|
<n-button type="primary" @click="reloadTable">刷新数据</n-button>
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: 'id',
|
title: 'id',
|
||||||
key: 'id',
|
key: 'id',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '编码',
|
title: '编码',
|
||||||
key: 'no',
|
key: 'no',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '名称',
|
title: '名称',
|
||||||
@@ -23,6 +25,7 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: '头像',
|
title: '头像',
|
||||||
key: 'avatar',
|
key: 'avatar',
|
||||||
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(NAvatar, {
|
return h(NAvatar, {
|
||||||
size: 48,
|
size: 48,
|
||||||
@@ -49,23 +52,25 @@ export const columns = [
|
|||||||
},
|
},
|
||||||
edit: true,
|
edit: true,
|
||||||
width: 200,
|
width: 200,
|
||||||
|
ellipsis: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '开始日期',
|
title: '开始日期',
|
||||||
key: 'beginTime',
|
key: 'beginTime',
|
||||||
editRow: true,
|
editRow: true,
|
||||||
edit: true,
|
edit: true,
|
||||||
width: 250,
|
width: 160,
|
||||||
editComponent: 'NDatePicker',
|
editComponent: 'NDatePicker',
|
||||||
editComponentProps: {
|
editComponentProps: {
|
||||||
type: 'datetime',
|
type: 'datetime',
|
||||||
format: 'yyyy-MM-dd HH:mm:ss',
|
format: 'yyyy-MM-dd HH:mm:ss',
|
||||||
},
|
},
|
||||||
|
ellipsis: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '结束日期',
|
title: '结束日期',
|
||||||
key: 'endTime',
|
key: 'endTime',
|
||||||
width: 200,
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '状态',
|
title: '状态',
|
||||||
@@ -81,9 +86,11 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
key: 'date',
|
key: 'date',
|
||||||
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '停留时间',
|
title: '停留时间',
|
||||||
key: 'time',
|
key: 'time',
|
||||||
|
width: 80,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -33,14 +33,7 @@
|
|||||||
</n-grid>
|
</n-grid>
|
||||||
</n-card>
|
</n-card>
|
||||||
</div>
|
</div>
|
||||||
<n-grid
|
<n-grid class="mt-4" cols="2 s:1 m:1 l:2 xl:2 2xl:2" responsive="screen" :x-gap="12" :y-gap="9">
|
||||||
class="mt-4"
|
|
||||||
cols="2 s:1 m:1 l:2 xl:2 2xl:2"
|
|
||||||
responsive="screen"
|
|
||||||
:x-gap="12"
|
|
||||||
:y-gap="9"
|
|
||||||
:cols="2"
|
|
||||||
>
|
|
||||||
<n-gi>
|
<n-gi>
|
||||||
<n-card
|
<n-card
|
||||||
:segmented="{ content: 'hard' }"
|
:segmented="{ content: 'hard' }"
|
||||||
@@ -75,7 +68,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<span>
|
<span>
|
||||||
<n-icon size="30" style="color: #42b983">
|
<n-icon size="30" color="#42b983">
|
||||||
<LogoVue />
|
<LogoVue />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -91,7 +84,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<span>
|
<span>
|
||||||
<n-icon size="30" style="color: #e44c27">
|
<n-icon size="30" color="#e44c27">
|
||||||
<Html5Outlined />
|
<Html5Outlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -107,7 +100,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<span>
|
<span>
|
||||||
<n-icon size="30" style="color: #dd0031">
|
<n-icon size="30" color="#dd0031">
|
||||||
<LogoAngular />
|
<LogoAngular />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -123,7 +116,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<span>
|
<span>
|
||||||
<n-icon size="30" style="color: #61dafb">
|
<n-icon size="30" color="#61dafb">
|
||||||
<LogoReact />
|
<LogoReact />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -238,7 +231,7 @@
|
|||||||
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
||||||
<div class="flex flex-col justify-center text-gray-500">
|
<div class="flex flex-col justify-center text-gray-500">
|
||||||
<span class="text-center">
|
<span class="text-center">
|
||||||
<n-icon size="30" style="color: #68c755">
|
<n-icon size="30" color="#68c755">
|
||||||
<DashboardOutlined />
|
<DashboardOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -248,7 +241,7 @@
|
|||||||
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
||||||
<div class="flex flex-col justify-center text-gray-500">
|
<div class="flex flex-col justify-center text-gray-500">
|
||||||
<span class="text-center">
|
<span class="text-center">
|
||||||
<n-icon size="30" style="color: #fab251">
|
<n-icon size="30" color="#fab251">
|
||||||
<ProfileOutlined />
|
<ProfileOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -258,7 +251,7 @@
|
|||||||
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
||||||
<div class="flex flex-col justify-center text-gray-500">
|
<div class="flex flex-col justify-center text-gray-500">
|
||||||
<span class="text-center">
|
<span class="text-center">
|
||||||
<n-icon size="30" style="color: #1890ff">
|
<n-icon size="30" color="#1890ff">
|
||||||
<FileProtectOutlined />
|
<FileProtectOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -268,7 +261,7 @@
|
|||||||
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
||||||
<div class="flex flex-col justify-center text-gray-500">
|
<div class="flex flex-col justify-center text-gray-500">
|
||||||
<span class="text-center">
|
<span class="text-center">
|
||||||
<n-icon size="30" style="color: #f06b96">
|
<n-icon size="30" color="#f06b96">
|
||||||
<ApartmentOutlined />
|
<ApartmentOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
@@ -278,7 +271,7 @@
|
|||||||
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
<n-card size="small" class="cursor-pointer project-card-item" hoverable>
|
||||||
<div class="flex flex-col justify-center text-gray-500">
|
<div class="flex flex-col justify-center text-gray-500">
|
||||||
<span class="text-center">
|
<span class="text-center">
|
||||||
<n-icon size="30" style="color: #7238d1">
|
<n-icon size="30" color="#7238d1">
|
||||||
<SettingOutlined />
|
<SettingOutlined />
|
||||||
</n-icon>
|
</n-icon>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -5,14 +5,17 @@ export const columns = [
|
|||||||
{
|
{
|
||||||
title: 'id',
|
title: 'id',
|
||||||
key: 'id',
|
key: 'id',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '名称',
|
title: '名称',
|
||||||
key: 'name',
|
key: 'name',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '头像',
|
title: '头像',
|
||||||
key: 'avatar',
|
key: 'avatar',
|
||||||
|
width: 100,
|
||||||
render(row) {
|
render(row) {
|
||||||
return h(NAvatar, {
|
return h(NAvatar, {
|
||||||
size: 48,
|
size: 48,
|
||||||
@@ -27,48 +30,21 @@ export const columns = [
|
|||||||
ifShow: (_column) => {
|
ifShow: (_column) => {
|
||||||
return true; // 根据业务控制是否显示
|
return true; // 根据业务控制是否显示
|
||||||
},
|
},
|
||||||
|
width: 150,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '开始日期',
|
title: '开始日期',
|
||||||
key: 'beginTime',
|
key: 'beginTime',
|
||||||
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '结束日期',
|
title: '结束日期',
|
||||||
key: 'endTime',
|
key: 'endTime',
|
||||||
|
width: 160,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
key: 'date',
|
key: 'date',
|
||||||
|
width: 100,
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// title: '操作',
|
|
||||||
// key: 'actions',
|
|
||||||
// width: 150,
|
|
||||||
// //简单写一下例子,不建议这么写,过段时间,这里封二次封装
|
|
||||||
// render() {
|
|
||||||
// return [
|
|
||||||
// h(
|
|
||||||
// NButton,
|
|
||||||
// {
|
|
||||||
// size: 'small',
|
|
||||||
// type: 'error',
|
|
||||||
// style: 'margin-right:10px',
|
|
||||||
// onClick: () => {
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// { default: () => '删除' }
|
|
||||||
// ),
|
|
||||||
// h(
|
|
||||||
// NButton,
|
|
||||||
// {
|
|
||||||
// size: 'small',
|
|
||||||
// onClick: () => {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// { default: () => '编辑' }
|
|
||||||
// )
|
|
||||||
// ]
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
ref="actionRef"
|
ref="actionRef"
|
||||||
:actionColumn="actionColumn"
|
:actionColumn="actionColumn"
|
||||||
@update:checked-row-keys="onCheckedRow"
|
@update:checked-row-keys="onCheckedRow"
|
||||||
|
:scroll-x="1010"
|
||||||
>
|
>
|
||||||
<template #tableTitle>
|
<template #tableTitle>
|
||||||
<n-button type="primary" @click="addTable">
|
<n-button type="primary" @click="addTable">
|
||||||
@@ -230,7 +231,7 @@
|
|||||||
name: 'xiaoMa',
|
name: 'xiaoMa',
|
||||||
},
|
},
|
||||||
actionColumn: {
|
actionColumn: {
|
||||||
width: 250,
|
width: 140,
|
||||||
title: '操作',
|
title: '操作',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
|
|||||||
@@ -16,18 +16,9 @@
|
|||||||
"noUnusedLocals": true,
|
"noUnusedLocals": true,
|
||||||
"noUnusedParameters": true,
|
"noUnusedParameters": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"lib": [
|
"lib": ["dom", "esnext"],
|
||||||
"dom",
|
"types": ["vite/client", "jest"],
|
||||||
"esnext"
|
"typeRoots": ["./node_modules/@types/", "./types"],
|
||||||
],
|
|
||||||
"types": [
|
|
||||||
"vite/client",
|
|
||||||
"jest"
|
|
||||||
],
|
|
||||||
"typeRoots": [
|
|
||||||
"./node_modules/@types/",
|
|
||||||
"./types"
|
|
||||||
],
|
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"paths": {
|
"paths": {
|
||||||
@@ -40,7 +31,6 @@
|
|||||||
"src/**/*.d.ts",
|
"src/**/*.d.ts",
|
||||||
"src/**/*.tsx",
|
"src/**/*.tsx",
|
||||||
"src/**/*.vue",
|
"src/**/*.vue",
|
||||||
"types/*.ts",
|
|
||||||
"types/**/*.d.ts",
|
"types/**/*.d.ts",
|
||||||
"types/**/*.ts",
|
"types/**/*.ts",
|
||||||
"build/**/*.ts",
|
"build/**/*.ts",
|
||||||
@@ -48,9 +38,5 @@
|
|||||||
"mock/**/*.ts",
|
"mock/**/*.ts",
|
||||||
"vite.config.ts"
|
"vite.config.ts"
|
||||||
],
|
],
|
||||||
"exclude": [
|
"exclude": ["node_modules", "dist", "**/*.js"]
|
||||||
"node_modules",
|
|
||||||
"dist",
|
|
||||||
"**/*.js"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4999,10 +4999,10 @@ mute-stream@0.0.7:
|
|||||||
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
||||||
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
|
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
|
||||||
|
|
||||||
naive-ui@^2.16.0:
|
naive-ui@^2.16.2:
|
||||||
version "2.16.0"
|
version "2.16.2"
|
||||||
resolved "https://registry.nlark.com/naive-ui/download/naive-ui-2.16.0.tgz#42d8b6120ab061e46a316ac074c5b788139cd744"
|
resolved "https://registry.nlark.com/naive-ui/download/naive-ui-2.16.2.tgz#f7d4b84f15529bc8f367644edcdb2c14c7912372"
|
||||||
integrity sha1-Qti2EgqwYeRqMWrAdMW3iBOc10Q=
|
integrity sha1-99S4TxVSm8jzZ2RO3NssFMeRI3I=
|
||||||
dependencies:
|
dependencies:
|
||||||
"@css-render/plugin-bem" "^0.15.4"
|
"@css-render/plugin-bem" "^0.15.4"
|
||||||
"@css-render/vue3-ssr" "^0.15.4"
|
"@css-render/vue3-ssr" "^0.15.4"
|
||||||
|
|||||||
Reference in New Issue
Block a user