diff --git a/packages/app/src/api/migrations/add-china-region-data.ts b/packages/app/src/api/migrations/add-china-region-data.ts
deleted file mode 100644
index 4497f58fe..000000000
--- a/packages/app/src/api/migrations/add-china-region-data.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { init } from '@nocobase/plugin-china-region/src/db/seeders';
-import api from '../app';
-
-(async () => {
- await api.loadPlugins();
- await api.database.sync();
- await init(api);
-})().then(() => {
- process.exit(0);
-}).catch(err => {
- console.error(err);
- process.exit(1);
-});
diff --git a/packages/app/src/api/migrations/add-fields-to-views.ts b/packages/app/src/api/migrations/add-fields-to-views.ts
deleted file mode 100644
index b81db838a..000000000
--- a/packages/app/src/api/migrations/add-fields-to-views.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
- await api.database.sync({
- tables: ['views'],
- });
- const [Collection, View, User] = database.getModels(['collections', 'views', 'users']);
- const table = database.getTable('views');
- const collection = await Collection.findByName('views');
- console.log(table.getOptions().fields);
- await collection.updateAssociations({
- fields: table.getOptions().fields,
- }, {
- migrate: false,
- });
-
- const views = await View.findAll();
- for (const view of views) {
- if (!view.get('mode')) {
- if (view.get('template') === 'SimpleTable') {
- view.set('mode', 'simple');
- } else {
- view.set('mode', 'default');
- }
- await view.save();
- }
- }
-})();
diff --git a/packages/app/src/api/migrations/add-menus.ts b/packages/app/src/api/migrations/add-menus.ts
deleted file mode 100644
index 26ea5d7ec..000000000
--- a/packages/app/src/api/migrations/add-menus.ts
+++ /dev/null
@@ -1,181 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-import views_v2 from '@nocobase/plugin-pages/src/collections/views_v2';
-import { Op } from 'sequelize';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
-
- await api.database.sync();
- await api.database.getModel('collections').load({skipExisting: true});
-
- const [Collection, Field, Page, Menu, View] = database.getModels(['collections', 'fields', 'pages_v2', 'menus', 'views_v2']);
-
- // await Collection.import(require('./collections/authors').default, { update: true });
- // await Collection.import(require('./collections/books').default, { update: true });
-
- await Menu.truncate();
- await Page.destroy({
- where: {
- id: {
- [Op.not]: null,
- },
- }
- });
- await View.destroy({
- where: {
- id: {
- [Op.not]: null,
- },
- }
- });
-
- const collection = await Collection.findOne({
- where: {
- name: 'views_v2',
- }
- });
-
- await collection.updateAssociations({
- fields: views_v2.fields,
- views_v2: views_v2.views_v2,
- });
-
- // const authors = require('./collections/authors').default;
-
- console.log('views_v2.fields', views_v2.fields.map(field=>field.name));
-
- // await collection.updateAssociations({
- // views_v2: authors.views_v2,
- // });
-
-
-
- const tables = database.getTables([
- 'collections',
- 'fields',
- 'menus',
- 'pages_v2',
- 'views_v2',
- 'pages_views_v2',
- 'automations',
- 'automations_jobs',
- 'action_logs',
- 'users',
- 'roles',
- 'scopes',
- 'views_actions_v2',
- 'views_pages_v2',
- 'views_fields_v2',
- ]);
-
- for (let table of tables) {
- console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
- }
-
- const menus = [
- {
- title: '仪表盘',
- icon: 'DashboardOutlined',
- type: 'group',
- children: [
- {
- title: '欢迎光临',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'welcome'
- },
- ],
- },
- {
- title: '数据',
- icon: 'DatabaseOutlined',
- type: 'group',
- children: [
- {
- title: '作者',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'authors.all',
- },
- {
- title: '申请表单',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'authors.form',
- },
- ],
- },
- {
- title: '用户',
- icon: 'TeamOutlined',
- type: 'group',
- children: [
- {
- title: '用户管理',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'users.all',
- },
- ],
- },
- {
- title: '动态',
- icon: 'NotificationOutlined',
- type: 'group',
- children: [
- {
- title: '操作日志',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'action_logs.all',
- },
- ],
- },
- {
- title: '配置',
- icon: 'SettingOutlined',
- type: 'group',
- children: [
- {
- title: '数据表配置',
- icon: 'DatabaseOutlined',
- type: 'page',
- pageName: 'collections.all',
- },
- {
- title: '菜单配置',
- icon: 'MenuOutlined',
- type: 'page',
- pageName: 'menus.all',
- },
- {
- title: '页面配置',
- icon: 'MenuOutlined',
- type: 'page',
- pageName: 'pages_v2.globals',
- },
- {
- title: '权限配置',
- icon: 'MenuOutlined',
- type: 'page',
- pageName: 'roles.all',
- },
- {
- title: '自动化配置',
- icon: 'MenuOutlined',
- type: 'page',
- pageName: 'automations.all',
- },
- ],
- },
- ];
-
- for (const item of menus) {
- const menu = await Menu.create(item);
- await menu.updateAssociations(item);
- }
-
-})();
diff --git a/packages/app/src/api/migrations/add-permissions.ts b/packages/app/src/api/migrations/add-permissions.ts
deleted file mode 100644
index ccb0a42b6..000000000
--- a/packages/app/src/api/migrations/add-permissions.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
- await api.database.sync();
-
- const [Collection, Page, Role] = database.getModels(['collections', 'pages', 'roles']);
-
- const tables = database.getTables();
- for (let table of tables) {
- console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
- }
-
- const parent = await Page.findOne({
- where: {
- path: '/settings',
- }
- });
-
- const roles = await Role.bulkCreate([
- { title: '系统开发组' },
- { title: '数据管理组' },
- { title: '普通用户组' },
- { title: '未登录用户组' },
- ]);
-
- await Page.create({
- title: '权限组配置',
- type: 'collection',
- collection: 'roles',
- path: '/settings/roles',
- icon: 'TableOutlined',
- sort: 120,
- showInMenu: true,
- parent_id: parent.id,
- });
-
- const Scope = database.getModel('scopes');
-
- const collections = await Collection.findAll();
-
- for (const collection of collections) {
- const count = await collection.countScopes();
- if (count === 0) {
- await Scope.bulkCreate([
- {
- title: '全部数据',
- filter: {},
- collection_name: collection.name,
- },
- {
- title: '用户自己的数据',
- filter: {
- "created_by_id.$currentUser": true,
- },
- collection_name: collection.name,
- },
- ]);
- }
- }
-
-})();
diff --git a/packages/app/src/api/migrations/alter-permissions.ts b/packages/app/src/api/migrations/alter-permissions.ts
deleted file mode 100644
index b588924a6..000000000
--- a/packages/app/src/api/migrations/alter-permissions.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
- await api.database.sync({
- // tables: ['roles'],
- });
-
- const [Collection, User, Role] = database.getModels(['collections', 'users', 'roles']);
-
- const tables = database.getTables();
-
- for (let table of tables) {
- console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
- }
-
- let user = await User.findOne({
- where: {
- username: "admin",
- },
- });
-
- const role = await Role.findOne({
- where: {
- title: '系统开发组',
- }
- });
-
- role.set('type', -1);
-
- await role.save();
- await user.setRoles([role]);
-})();
diff --git a/packages/app/src/api/migrations/create-action-logs-table.ts b/packages/app/src/api/migrations/create-action-logs-table.ts
deleted file mode 100644
index 9db4eb413..000000000
--- a/packages/app/src/api/migrations/create-action-logs-table.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
- await api.database.sync({
- tables: ['scopes', 'action_logs', 'action_changes'],
- });
-
- const [Collection, Page] = database.getModels(['collections', 'pages']);
-
- const tables = database.getTables(['scopes', 'action_logs', 'action_changes']);
-
- for (let table of tables) {
- console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
- }
-
- await Page.import({
- title: '动态',
- type: 'layout',
- path: '/activity',
- icon: 'NotificationOutlined',
- template: 'SideMenuLayout',
- sort: 85,
- showInMenu: true,
- parent_id: 1,
- children: [
- {
- title: '操作记录',
- type: 'collection',
- path: '/activity/logs',
- icon: 'HistoryOutlined',
- template: 'collection',
- collection: 'action_logs',
- sort: 80,
- showInMenu: true,
- },
- ]
- });
-})();
diff --git a/packages/app/src/api/migrations/create-automations.ts b/packages/app/src/api/migrations/create-automations.ts
deleted file mode 100644
index 8cefb956a..000000000
--- a/packages/app/src/api/migrations/create-automations.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import api from '../app';
-import Database from '@nocobase/database';
-
-(async () => {
- await api.loadPlugins();
- const database: Database = api.database;
- await api.database.sync({
- tables: ['automations', 'automations_jobs', 'actions_scopes'],
- });
-
- const [Collection, User, Role] = database.getModels(['collections', 'users', 'roles']);
-
- const tables = database.getTables(['automations', 'automations_jobs', 'actions_scopes']);
-
- for (let table of tables) {
- console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
- }
-})();
diff --git a/packages/app/src/api/migrations/init.ts b/packages/app/src/api/migrations/init.ts
index fc7c80002..16ecdfd31 100644
--- a/packages/app/src/api/migrations/init.ts
+++ b/packages/app/src/api/migrations/init.ts
@@ -170,12 +170,40 @@ const data = [
developerMode: true,
children: [
{
- title: '操作日志',
+ title: '数据动态',
icon: 'DatabaseOutlined',
- type: 'page',
- views: ['action_logs.table'],
+ type: 'group',
developerMode: true,
- name: 'auditing',
+ children: [
+ {
+ title: '全部数据',
+ type: 'page',
+ views: ['action_logs.table'],
+ developerMode: true,
+ name: 'auditing',
+ },
+ {
+ title: '新增数据',
+ type: 'page',
+ views: ['action_logs.create'],
+ developerMode: true,
+ name: 'create-auditing',
+ },
+ {
+ title: '更新数据',
+ type: 'page',
+ views: ['action_logs.update'],
+ developerMode: true,
+ name: 'update-auditing',
+ },
+ {
+ title: '删除数据',
+ type: 'page',
+ views: ['action_logs.destroy'],
+ developerMode: true,
+ name: 'destroy-auditing',
+ },
+ ],
},
],
},
diff --git a/packages/app/src/api/migrations/add-lock-to-actions-scopes.ts b/packages/app/src/api/migrations/sync.ts
similarity index 51%
rename from packages/app/src/api/migrations/add-lock-to-actions-scopes.ts
rename to packages/app/src/api/migrations/sync.ts
index 3fe150944..90dba33aa 100644
--- a/packages/app/src/api/migrations/add-lock-to-actions-scopes.ts
+++ b/packages/app/src/api/migrations/sync.ts
@@ -5,15 +5,14 @@ import Database from '@nocobase/database';
await api.loadPlugins();
const database: Database = api.database;
await api.database.sync({
- tables: ['scopes'],
});
- const [Collection, User, Role] = database.getModels(['collections', 'users', 'roles']);
+ const [Collection] = database.getModels(['collections']);
- const tables = database.getTables(['scopes']);
+ const tables = database.getTables();
for (let table of tables) {
console.log(table.getName());
- await Collection.import(table.getOptions(), { update: true, migrate: false });
+ await Collection.import(table.getOptions(), { migrate: false });
}
})();
diff --git a/packages/app/src/components/form.fields/permissions/Scope.tsx b/packages/app/src/components/form.fields/permissions/Scope.tsx
deleted file mode 100644
index 67cef24a8..000000000
--- a/packages/app/src/components/form.fields/permissions/Scope.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import React, { useState } from 'react'
-import { connect } from '@formily/react-schema-renderer'
-import { Select, Drawer, Button, Space } from 'antd'
-import {
- mapStyledProps,
- mapTextComponent,
- compose,
- isStr,
- isArr
-} from '../shared'
-import ViewFactory from '@/components/views'
-
-function transform({value, multiple, labelField, valueField = 'id'}) {
- let selectedKeys = [];
- let selectedValue = [];
- const values = Array.isArray(value) ? value : [value].filter(Boolean);
- selectedKeys = values.map(item => item[valueField]);
- selectedValue = values.map(item => {
- return {
- value: item[valueField],
- label: item[labelField],
- }
- });
- console.log({selectedKeys, selectedValue, values, labelField, valueField})
- if (!multiple) {
- return [selectedKeys.shift(), selectedValue.shift()];
- }
- return [selectedKeys, selectedValue];
-}
-
-export function Scope(props) {
- const { resourceTarget, target, multiple, associatedName, associatedKey, labelField, valueField = 'id', value, onChange } = props;
- const [selectedKeys, selectedValue] = transform({value, multiple, labelField, valueField });
- const [visible, setVisible] = useState(false);
- const [selectedRowKeys, setSelectedRowKeys] = useState(multiple ? selectedKeys : [selectedKeys]);
- const [selectedRows, setSelectedRows] = useState(selectedValue);
- const [options, setOptions] = useState(selectedValue);
- console.log('valuevaluevaluevaluevaluevalue', selectedValue, value);
- return (
- <>
-
-