v-nuxt-ui 0.1.32 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/css/main.css +1 -1
  3. package/dist/runtime/components/form/create-modal-template/index.d.vue.ts +3 -1
  4. package/dist/runtime/components/form/create-modal-template/index.vue +1 -0
  5. package/dist/runtime/components/form/create-modal-template/index.vue.d.ts +3 -1
  6. package/dist/runtime/components/sys/role/CreateModal.vue +14 -2
  7. package/dist/runtime/components/sys/table/CreateModal.d.vue.ts +13 -0
  8. package/dist/runtime/components/sys/table/CreateModal.vue +239 -0
  9. package/dist/runtime/components/sys/table/CreateModal.vue.d.ts +13 -0
  10. package/dist/runtime/components/sys/table/Table.d.vue.ts +3 -0
  11. package/dist/runtime/components/sys/table/Table.vue +116 -0
  12. package/dist/runtime/components/sys/table/Table.vue.d.ts +3 -0
  13. package/dist/runtime/components/sys/table/TableColumnModal.d.vue.ts +22 -0
  14. package/dist/runtime/components/sys/table/TableColumnModal.vue +107 -0
  15. package/dist/runtime/components/sys/table/TableColumnModal.vue.d.ts +22 -0
  16. package/dist/runtime/components/sys/user/CreateModal.vue +14 -2
  17. package/dist/runtime/components/table/permission/TablePermissionConfig.d.vue.ts +14 -0
  18. package/dist/runtime/components/table/permission/TablePermissionConfig.vue +230 -0
  19. package/dist/runtime/components/table/permission/TablePermissionConfig.vue.d.ts +14 -0
  20. package/dist/runtime/components/table/permission/TablePermissionTab.d.vue.ts +11 -0
  21. package/dist/runtime/components/table/permission/TablePermissionTab.vue +95 -0
  22. package/dist/runtime/components/table/permission/TablePermissionTab.vue.d.ts +11 -0
  23. package/dist/runtime/components/table/settings/TableSettings.d.vue.ts +3 -0
  24. package/dist/runtime/components/table/settings/TableSettings.vue +118 -0
  25. package/dist/runtime/components/table/settings/TableSettings.vue.d.ts +3 -0
  26. package/dist/runtime/components/table/settings/UserTableColumnModal.d.vue.ts +17 -0
  27. package/dist/runtime/components/table/settings/UserTableColumnModal.vue +106 -0
  28. package/dist/runtime/components/table/settings/UserTableColumnModal.vue.d.ts +17 -0
  29. package/dist/runtime/composables/api/sys/index.d.ts +3 -0
  30. package/dist/runtime/composables/api/sys/index.js +3 -0
  31. package/dist/runtime/composables/api/useTableApi.d.ts +2 -0
  32. package/dist/runtime/composables/api/useTableApi.js +5 -0
  33. package/dist/runtime/composables/api/useTableColumnApi.d.ts +11 -0
  34. package/dist/runtime/composables/api/useTableColumnApi.js +11 -0
  35. package/dist/runtime/composables/api/useTablePermissionApi.d.ts +8 -0
  36. package/dist/runtime/composables/api/useTablePermissionApi.js +8 -0
  37. package/dist/runtime/composables/table/useTableColumnPermission.d.ts +34 -0
  38. package/dist/runtime/composables/table/useTableColumnPermission.js +47 -0
  39. package/dist/runtime/composables/useAuth.d.ts +56 -0
  40. package/dist/runtime/composables/useForm.d.ts +1 -1
  41. package/dist/runtime/composables/useForm.js +7 -3
  42. package/dist/runtime/types/cmds/sys.d.ts +3 -0
  43. package/dist/runtime/types/models/index.d.ts +1 -0
  44. package/dist/runtime/types/models/index.js +1 -0
  45. package/dist/runtime/types/models/sys.d.ts +3 -0
  46. package/dist/runtime/types/models/table.d.ts +59 -0
  47. package/dist/runtime/types/models/table.js +0 -0
  48. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import type { ApiGroup, TableColumn, UserTableColumn, MergedTableColumn } from '#v/types';
2
+ import type { Ref } from 'vue';
3
+ import type { RequestResult } from '#v/types';
4
+ export declare const useTableColumnApi: () => ApiGroup<TableColumn> & {
5
+ getMergedColumns(tblName: string): Promise<{
6
+ data: Ref<RequestResult<MergedTableColumn[]>>;
7
+ }>;
8
+ saveUserColumns(tblName: string, configs: UserTableColumn[]): Promise<{
9
+ data: Ref<RequestResult<void>>;
10
+ }>;
11
+ };
@@ -0,0 +1,11 @@
1
+ import { createSharedComposable } from "@vueuse/core";
2
+ import { useApi, usePostFetch, useGetFetch } from "./useApi.js";
3
+ export const useTableColumnApi = createSharedComposable(() => ({
4
+ ...useApi("/table-columns"),
5
+ async getMergedColumns(tblName) {
6
+ return useGetFetch(`/table-columns/merged?tblName=${encodeURIComponent(tblName)}`);
7
+ },
8
+ async saveUserColumns(tblName, configs) {
9
+ return usePostFetch("/table-columns/user-config", { tblName, configs });
10
+ }
11
+ }));
@@ -0,0 +1,8 @@
1
+ import type { ApiGroup, TablePermission, EffectiveTablePermission } from '#v/types';
2
+ import type { Ref } from 'vue';
3
+ import type { RequestResult } from '#v/types';
4
+ export declare const useTablePermissionApi: () => ApiGroup<TablePermission> & {
5
+ getEffectivePermissions(tblName: string): Promise<{
6
+ data: Ref<RequestResult<EffectiveTablePermission>>;
7
+ }>;
8
+ };
@@ -0,0 +1,8 @@
1
+ import { createSharedComposable } from "@vueuse/core";
2
+ import { useApi, useGetFetch } from "./useApi.js";
3
+ export const useTablePermissionApi = createSharedComposable(() => ({
4
+ ...useApi("/table-permissions"),
5
+ async getEffectivePermissions(tblName) {
6
+ return useGetFetch(`/table-permissions/effective?tblName=${encodeURIComponent(tblName)}`);
7
+ }
8
+ }));
@@ -0,0 +1,34 @@
1
+ import type { Table, TableColumn, UserTableColumn, MergedTableColumn, EffectiveTablePermission } from '#v/types';
2
+ export declare function useTableColumnPermission(): {
3
+ tables: import("vue").Ref<{
4
+ tblName?: string | undefined;
5
+ label?: string | undefined;
6
+ labelI18nKey?: string | undefined;
7
+ id: number;
8
+ createdAt?: string | undefined;
9
+ updatedAt?: string | undefined;
10
+ version?: number | undefined;
11
+ createdBy?: number | undefined;
12
+ creator?: any;
13
+ updatedBy?: number | undefined;
14
+ updater?: any;
15
+ }[], Table[] | {
16
+ tblName?: string | undefined;
17
+ label?: string | undefined;
18
+ labelI18nKey?: string | undefined;
19
+ id: number;
20
+ createdAt?: string | undefined;
21
+ updatedAt?: string | undefined;
22
+ version?: number | undefined;
23
+ createdBy?: number | undefined;
24
+ creator?: any;
25
+ updatedBy?: number | undefined;
26
+ updater?: any;
27
+ }[]>;
28
+ tablesLoading: import("vue").Ref<boolean, boolean>;
29
+ fetchTables: () => Promise<void>;
30
+ fetchColumnsByTableId: (tableId: number) => Promise<TableColumn[]>;
31
+ fetchMergedColumns: (tblName: string) => Promise<MergedTableColumn[]>;
32
+ fetchEffectivePermissions: (tblName: string) => Promise<EffectiveTablePermission | null>;
33
+ saveUserColumns: (tblName: string, configs: UserTableColumn[]) => Promise<void>;
34
+ };
@@ -0,0 +1,47 @@
1
+ import { ref } from "vue";
2
+ import { useTableApi, useTableColumnApi, useTablePermissionApi } from "#v/composables/api";
3
+ export function useTableColumnPermission() {
4
+ const tableApi = useTableApi();
5
+ const tableColumnApi = useTableColumnApi();
6
+ const tablePermissionApi = useTablePermissionApi();
7
+ const tables = ref([]);
8
+ const tablesLoading = ref(false);
9
+ async function fetchTables() {
10
+ tablesLoading.value = true;
11
+ try {
12
+ const { data } = await tableApi.list({ pagination: { pageNum: 0, pageSize: 0 } });
13
+ if (data.value.data) {
14
+ tables.value = data.value.data.list;
15
+ }
16
+ } finally {
17
+ tablesLoading.value = false;
18
+ }
19
+ }
20
+ async function fetchColumnsByTableId(tableId) {
21
+ const { data } = await tableColumnApi.list({
22
+ pagination: { pageNum: 0, pageSize: 0 },
23
+ whereQuery: { items: [{ field: "tableId", opr: "eq", value: tableId }] }
24
+ });
25
+ return data.value.data?.list ?? [];
26
+ }
27
+ async function fetchMergedColumns(tblName) {
28
+ const { data } = await tableColumnApi.getMergedColumns(tblName);
29
+ return data.value.data ?? [];
30
+ }
31
+ async function fetchEffectivePermissions(tblName) {
32
+ const { data } = await tablePermissionApi.getEffectivePermissions(tblName);
33
+ return data.value.data ?? null;
34
+ }
35
+ async function saveUserColumns(tblName, configs) {
36
+ await tableColumnApi.saveUserColumns(tblName, configs);
37
+ }
38
+ return {
39
+ tables,
40
+ tablesLoading,
41
+ fetchTables,
42
+ fetchColumnsByTableId,
43
+ fetchMergedColumns,
44
+ fetchEffectivePermissions,
45
+ saveUserColumns
46
+ };
47
+ }
@@ -32,6 +32,34 @@ export declare const useAuth: () => {
32
32
  updatedBy?: number | undefined;
33
33
  updater?: any;
34
34
  }[] | undefined;
35
+ tablePermissions?: {
36
+ name?: string | undefined;
37
+ tableId?: number | undefined;
38
+ canView?: boolean | undefined;
39
+ canEdit?: boolean | undefined;
40
+ columnPermissions?: {
41
+ tablePermissionId?: number | undefined;
42
+ columnKey?: string | undefined;
43
+ canView?: boolean | undefined;
44
+ canEdit?: boolean | undefined;
45
+ id: number;
46
+ createdAt?: string | undefined;
47
+ updatedAt?: string | undefined;
48
+ version?: number | undefined;
49
+ createdBy?: number | undefined;
50
+ creator?: any;
51
+ updatedBy?: number | undefined;
52
+ updater?: any;
53
+ }[] | undefined;
54
+ id: number;
55
+ createdAt?: string | undefined;
56
+ updatedAt?: string | undefined;
57
+ version?: number | undefined;
58
+ createdBy?: number | undefined;
59
+ creator?: any;
60
+ updatedBy?: number | undefined;
61
+ updater?: any;
62
+ }[] | undefined;
35
63
  id: number;
36
64
  createdAt?: string | undefined;
37
65
  updatedAt?: string | undefined;
@@ -66,6 +94,34 @@ export declare const useAuth: () => {
66
94
  updatedBy?: number | undefined;
67
95
  updater?: any;
68
96
  }[] | undefined;
97
+ tablePermissions?: {
98
+ name?: string | undefined;
99
+ tableId?: number | undefined;
100
+ canView?: boolean | undefined;
101
+ canEdit?: boolean | undefined;
102
+ columnPermissions?: {
103
+ tablePermissionId?: number | undefined;
104
+ columnKey?: string | undefined;
105
+ canView?: boolean | undefined;
106
+ canEdit?: boolean | undefined;
107
+ id: number;
108
+ createdAt?: string | undefined;
109
+ updatedAt?: string | undefined;
110
+ version?: number | undefined;
111
+ createdBy?: number | undefined;
112
+ creator?: any;
113
+ updatedBy?: number | undefined;
114
+ updater?: any;
115
+ }[] | undefined;
116
+ id: number;
117
+ createdAt?: string | undefined;
118
+ updatedAt?: string | undefined;
119
+ version?: number | undefined;
120
+ createdBy?: number | undefined;
121
+ creator?: any;
122
+ updatedBy?: number | undefined;
123
+ updater?: any;
124
+ }[] | undefined;
69
125
  id: number;
70
126
  createdAt?: string | undefined;
71
127
  updatedAt?: string | undefined;
@@ -4,6 +4,6 @@ export declare const useFormValues: <T>(raw: Ref<T>, defaultValues?: Partial<T>)
4
4
  oldValues: Ref<T>;
5
5
  newValues: Ref<T>;
6
6
  };
7
- export declare const useFormSubmission: <T extends BaseModel>(oldValues: Ref<T>, newValues: Ref<T>, close: (ok: boolean) => void, save: (model: T) => void, apiGroup: () => ApiGroup<T>, arrayTypeFieldKeys?: (keyof T)[], rowKey?: keyof T, versionKey?: keyof T) => {
7
+ export declare const useFormSubmission: <T extends BaseModel>(oldValues: Ref<T>, newValues: Ref<T>, close: (ok: boolean) => void, save: (model: T) => void, apiGroup: () => ApiGroup<T>, arrayTypeFieldKeys?: (keyof T)[], rowKey?: keyof T, versionKey?: keyof T, getExtraFields?: () => Record<string, any>) => {
8
8
  onSubmit: () => Promise<void>;
9
9
  };
@@ -18,7 +18,7 @@ export const useFormValues = (raw, defaultValues) => {
18
18
  );
19
19
  return { oldValues, newValues };
20
20
  };
21
- export const useFormSubmission = (oldValues, newValues, close, save, apiGroup, arrayTypeFieldKeys = [], rowKey = "id", versionKey = "version") => {
21
+ export const useFormSubmission = (oldValues, newValues, close, save, apiGroup, arrayTypeFieldKeys = [], rowKey = "id", versionKey = "version", getExtraFields) => {
22
22
  const apiFns = apiGroup();
23
23
  async function onSubmit() {
24
24
  if (oldValues.value[rowKey] === 0) {
@@ -28,7 +28,9 @@ export const useFormSubmission = (oldValues, newValues, close, save, apiGroup, a
28
28
  }
29
29
  }
30
30
  async function onCreate() {
31
- const { data } = await apiFns.create(apiFns.prune(newValues.value));
31
+ const extraFields = getExtraFields ? getExtraFields() : void 0;
32
+ const payload = extraFields ? { ...apiFns.prune(newValues.value), ...extraFields } : apiFns.prune(newValues.value);
33
+ const { data } = await apiFns.create(payload);
32
34
  if (!data.value.error) {
33
35
  save(data.value.data);
34
36
  close(true);
@@ -50,7 +52,9 @@ export const useFormSubmission = (oldValues, newValues, close, save, apiGroup, a
50
52
  });
51
53
  return;
52
54
  }
53
- const { data } = await apiFns.update(apiFns.prune(objWithModifiedFields));
55
+ const extraFields = getExtraFields ? getExtraFields() : void 0;
56
+ const payload = extraFields ? { ...apiFns.prune(objWithModifiedFields), ...extraFields } : apiFns.prune(objWithModifiedFields);
57
+ const { data } = await apiFns.update(payload);
54
58
  if (!data.value.error) {
55
59
  save(data.value.data);
56
60
  close(true);
@@ -5,3 +5,6 @@ export type RowRecordPayload = {
5
5
  export type IdPayload = {
6
6
  id: number;
7
7
  };
8
+ export type IdsPayload = {
9
+ ids: number[];
10
+ };
@@ -1,2 +1,3 @@
1
1
  export * from './base.js';
2
2
  export * from './sys.js';
3
+ export * from './table.js';
@@ -1,2 +1,3 @@
1
1
  export * from "./base.js";
2
2
  export * from "./sys.js";
3
+ export * from "./table.js";
@@ -1,4 +1,5 @@
1
1
  import type { BaseModel } from './base.js';
2
+ import type { TablePermission } from './table.js';
2
3
  export type Menu = {
3
4
  isAdmin?: boolean;
4
5
  type?: string;
@@ -18,6 +19,7 @@ export type Role = {
18
19
  disabled?: boolean;
19
20
  remark?: string;
20
21
  menus?: Menu[];
22
+ tablePermissions?: TablePermission[];
21
23
  } & BaseModel;
22
24
  export type Company = {
23
25
  fullname?: string;
@@ -74,6 +76,7 @@ export type User = {
74
76
  needChangePwd?: boolean;
75
77
  needFillWh?: boolean;
76
78
  isAdmin?: boolean;
79
+ tablePermissions?: TablePermission[];
77
80
  };
78
81
  export type RowRecord = {
79
82
  rowId?: number;
@@ -0,0 +1,59 @@
1
+ import type { BaseModel } from './base.js';
2
+ export interface Table extends BaseModel {
3
+ tblName?: string;
4
+ label?: string;
5
+ labelI18nKey?: string;
6
+ }
7
+ export interface TableColumn extends BaseModel {
8
+ tableId?: number;
9
+ columnKey?: string;
10
+ label?: string;
11
+ labelI18nKey?: string;
12
+ order?: number;
13
+ width?: number;
14
+ fixed?: 'left' | 'right' | '';
15
+ visible?: boolean;
16
+ }
17
+ export interface UserTableColumn extends BaseModel {
18
+ userId?: number;
19
+ tableColumnId?: number;
20
+ order?: number;
21
+ width?: number;
22
+ fixed?: 'left' | 'right' | '';
23
+ visible?: boolean;
24
+ }
25
+ export interface MergedTableColumn {
26
+ tableColumnId?: number;
27
+ columnKey?: string;
28
+ label?: string;
29
+ i18nKey?: string;
30
+ order?: number;
31
+ width?: number;
32
+ fixed?: 'left' | 'right' | '';
33
+ visible?: boolean;
34
+ canView?: boolean;
35
+ canEdit?: boolean;
36
+ }
37
+ export interface TablePermission extends BaseModel {
38
+ name?: string;
39
+ tableId?: number;
40
+ canView?: boolean;
41
+ canEdit?: boolean;
42
+ columnPermissions?: TableColumnPermission[];
43
+ }
44
+ export interface TableColumnPermission extends BaseModel {
45
+ tablePermissionId?: number;
46
+ columnKey?: string;
47
+ canView?: boolean;
48
+ canEdit?: boolean;
49
+ }
50
+ export interface EffectiveTablePermission {
51
+ isConfigured: boolean;
52
+ canViewTable: boolean;
53
+ canEditTable: boolean;
54
+ columns: Record<string, ColumnEffectivePerm>;
55
+ }
56
+ export interface ColumnEffectivePerm {
57
+ canView: boolean;
58
+ canEdit: boolean;
59
+ }
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "v-nuxt-ui",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "description": "Veken UI Component Library - Reusable Nuxt UI components, composables, and utilities for enterprise applications",
5
5
  "type": "module",
6
6
  "style": "./dist/runtime/index.css",