trithuc-mvc-react 2.6.8 → 2.7.0
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.
|
@@ -13,8 +13,8 @@ import { TableRowRender } from "./TableRowRender";
|
|
|
13
13
|
import TableToolbar from "./TableToolbar";
|
|
14
14
|
import { useDataTable } from "./hooks";
|
|
15
15
|
import { usePermission } from "../../hooks";
|
|
16
|
-
import { URL_APPLICATION
|
|
17
|
-
const DataTable = ({ multipleActions = [],page, setPage = () => {
|
|
16
|
+
import { URL_APPLICATION, URL_APPLICATION_API } from "@/constants";
|
|
17
|
+
const DataTable = ({ multipleActions = [], page, setPage = () => {}, disableEdit, disableDelete }) => {
|
|
18
18
|
const {
|
|
19
19
|
tableName,
|
|
20
20
|
selectedField,
|
|
@@ -46,6 +46,9 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
|
|
|
46
46
|
}),
|
|
47
47
|
// keepPreviousData: true,
|
|
48
48
|
onSuccess: ({ PermissionModel, status }) => {
|
|
49
|
+
if (dataSearch?.TrangThaiXuLy !== undefined) {
|
|
50
|
+
PermissionModel.TrangThaiXuLy = dataSearch?.TrangThaiXuLy;
|
|
51
|
+
}
|
|
49
52
|
if (status) {
|
|
50
53
|
setPermission(PermissionModel);
|
|
51
54
|
// console.log("LOAD LAI PermissionModel");
|
|
@@ -56,21 +59,31 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
|
|
|
56
59
|
onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
|
|
57
60
|
if (URL_APPLICATION_API) {
|
|
58
61
|
toast.success(message);
|
|
59
|
-
}else{
|
|
62
|
+
} else {
|
|
60
63
|
toast.success("Thay đổi trạng thái thành công !");
|
|
61
64
|
}
|
|
62
65
|
queryClient.invalidateQueries({ queryKey: [tableName] });
|
|
63
66
|
},
|
|
64
|
-
onError: () => {
|
|
65
|
-
|
|
67
|
+
onError: (error) => {
|
|
68
|
+
if (error.response && error.response.data && error.response.data.errors) {
|
|
69
|
+
const errors = error.response.data.errors;
|
|
70
|
+
// Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
|
|
71
|
+
const errorMessages = Object.entries(errors)
|
|
72
|
+
.map(([field, messages]) => `${field}: ${messages.join(", ")}`)
|
|
73
|
+
.join("\n");
|
|
74
|
+
toast.error(errorMessages);
|
|
75
|
+
} else {
|
|
76
|
+
// Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
|
|
77
|
+
toast.error("Đã xảy ra lỗi không mong muốn.");
|
|
78
|
+
}
|
|
66
79
|
}
|
|
67
80
|
});
|
|
68
81
|
const deleteMutation = useMutation(deleteDataFromTable, {
|
|
69
82
|
onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
|
|
70
|
-
if (status) {
|
|
83
|
+
if (status) {
|
|
71
84
|
if (URL_APPLICATION_API) {
|
|
72
85
|
toast.success(message);
|
|
73
|
-
}else{
|
|
86
|
+
} else {
|
|
74
87
|
toast.success("Xóa thành công !");
|
|
75
88
|
}
|
|
76
89
|
} else {
|
|
@@ -79,27 +92,52 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
|
|
|
79
92
|
|
|
80
93
|
queryClient.invalidateQueries({ queryKey: [tableName] });
|
|
81
94
|
},
|
|
82
|
-
onError: () => {
|
|
83
|
-
|
|
95
|
+
onError: (error) => {
|
|
96
|
+
if (error.response && error.response.data && error.response.data.errors) {
|
|
97
|
+
const errors = error.response.data.errors;
|
|
98
|
+
// Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
|
|
99
|
+
const errorMessages = Object.entries(errors)
|
|
100
|
+
.map(([field, messages]) => `${field}: ${messages.join(", ")}`)
|
|
101
|
+
.join("\n");
|
|
102
|
+
toast.error(errorMessages);
|
|
103
|
+
} else {
|
|
104
|
+
// Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
|
|
105
|
+
toast.error("Đã xảy ra lỗi không mong muốn.");
|
|
106
|
+
}
|
|
84
107
|
}
|
|
85
108
|
});
|
|
86
109
|
const deleteMultipleMutation = useMutation(deleteMultipleDataFromTable, {
|
|
87
110
|
onSuccess: ({ status = false, message = " Có lỗi xảy ra !" }) => {
|
|
88
111
|
if (URL_APPLICATION_API) {
|
|
89
112
|
toast.success(message);
|
|
90
|
-
}else{
|
|
113
|
+
} else {
|
|
91
114
|
toast.success("Xóa thành công !");
|
|
92
115
|
}
|
|
93
116
|
setSelectedItems([]);
|
|
94
117
|
queryClient.invalidateQueries({ queryKey: [tableName] });
|
|
95
118
|
},
|
|
96
|
-
onError: () => {
|
|
97
|
-
|
|
119
|
+
onError: (error) => {
|
|
120
|
+
if (error.response && error.response.data && error.response.data.errors) {
|
|
121
|
+
const errors = error.response.data.errors;
|
|
122
|
+
// Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
|
|
123
|
+
const errorMessages = Object.entries(errors)
|
|
124
|
+
.map(([field, messages]) => `${field}: ${messages.join(", ")}`)
|
|
125
|
+
.join("\n");
|
|
126
|
+
toast.error(errorMessages);
|
|
127
|
+
} else {
|
|
128
|
+
// Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
|
|
129
|
+
toast.error("Đã xảy ra lỗi không mong muốn.");
|
|
130
|
+
}
|
|
98
131
|
}
|
|
99
132
|
});
|
|
100
133
|
|
|
101
134
|
const handleDelete = (id) => {
|
|
102
|
-
confirm({
|
|
135
|
+
confirm({
|
|
136
|
+
description: "Bạn có chắc chắn muốn xóa bản ghi này không?",
|
|
137
|
+
title: "Xác nhận",
|
|
138
|
+
cancellationText: "Hủy",
|
|
139
|
+
confirmationText: "Xóa"
|
|
140
|
+
})
|
|
103
141
|
.then(() => {
|
|
104
142
|
deleteMutation.mutate({
|
|
105
143
|
id,
|
|
@@ -177,7 +215,12 @@ const DataTable = ({ multipleActions = [],page, setPage = () => { }, disableEdit
|
|
|
177
215
|
setPage(0);
|
|
178
216
|
};
|
|
179
217
|
const handleDeleteMultiple = () => {
|
|
180
|
-
confirm({
|
|
218
|
+
confirm({
|
|
219
|
+
description: `Bạn có chắc chắn muốn xóa ${selectedItems?.length} bản ghi này không?`,
|
|
220
|
+
title: "Xác nhận",
|
|
221
|
+
cancellationText: "Hủy",
|
|
222
|
+
confirmationText: "Đồng ý"
|
|
223
|
+
})
|
|
181
224
|
.then(() => {
|
|
182
225
|
deleteMultipleMutation.mutate({
|
|
183
226
|
tableName,
|
|
@@ -106,8 +106,18 @@ function EditorForm({ fields, submitRef }) {
|
|
|
106
106
|
toast.error(message);
|
|
107
107
|
}
|
|
108
108
|
},
|
|
109
|
-
onError: () => {
|
|
110
|
-
|
|
109
|
+
onError: (error) => {
|
|
110
|
+
if (error.response && error.response.data && error.response.data.errors) {
|
|
111
|
+
const errors = error.response.data.errors;
|
|
112
|
+
// Chuyển đổi đối tượng lỗi thành chuỗi để hiển thị
|
|
113
|
+
const errorMessages = Object.entries(errors)
|
|
114
|
+
.map(([field, messages]) => `${field}: ${messages.join(", ")}`)
|
|
115
|
+
.join("\n");
|
|
116
|
+
toast.error(errorMessages);
|
|
117
|
+
} else {
|
|
118
|
+
// Nếu lỗi không theo định dạng mong đợi, hiển thị thông tin lỗi chung
|
|
119
|
+
toast.error("Đã xảy ra lỗi không mong muốn.");
|
|
120
|
+
}
|
|
111
121
|
}
|
|
112
122
|
});
|
|
113
123
|
const onSubmit = (data) => {
|
package/hooks/usePermission.js
CHANGED
|
@@ -1,33 +1,62 @@
|
|
|
1
1
|
import { useContext, useMemo } from "react";
|
|
2
2
|
import { PermissionContext } from "../contexts";
|
|
3
3
|
|
|
4
|
-
const usePermission = (
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const usePermission = (tableName) => {
|
|
5
|
+
if (!tableName) {
|
|
6
|
+
throw new Error("api is required");
|
|
7
|
+
}
|
|
8
8
|
const context = useContext(PermissionContext);
|
|
9
9
|
if (!context) {
|
|
10
10
|
throw new Error("usePermission must be used within a PermissionProvider");
|
|
11
11
|
}
|
|
12
12
|
const { permissionMap, setPermission } = context;
|
|
13
13
|
|
|
14
|
-
const permission = permissionMap[
|
|
14
|
+
const permission = permissionMap[tableName];
|
|
15
15
|
|
|
16
16
|
const { canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport } = useMemo(() => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const canSave = !permission || permission.Save;
|
|
21
|
-
const canCreate = !permission || permission.Create;
|
|
22
|
-
const canAction = !permission || permission.Action;
|
|
23
|
-
const canView = !permission || permission.View;
|
|
24
|
-
const canImport = !permission || permission.ImportFile;
|
|
17
|
+
if (permission) {
|
|
18
|
+
if (permission.TrangThaiXuLy !== undefined && permission.ObjTrangThai) {
|
|
19
|
+
const status = permission.ObjTrangThai.find((t) => t.StatusId === permission.TrangThaiXuLy) || {};
|
|
25
20
|
|
|
26
|
-
|
|
21
|
+
return {
|
|
22
|
+
canEdit: status.Edit ?? false,
|
|
23
|
+
canDelete: status.Delete ?? false,
|
|
24
|
+
canDeleteMulti: status.DeleteMulti ?? false,
|
|
25
|
+
canSave: status.Save ?? false,
|
|
26
|
+
canCreate: status.Create ?? false,
|
|
27
|
+
canAction: status.Action ?? false,
|
|
28
|
+
canView: status.View ?? false,
|
|
29
|
+
canImport: status.ImportFile ?? false
|
|
30
|
+
};
|
|
31
|
+
} else {
|
|
32
|
+
return {
|
|
33
|
+
canEdit: permission.Edit ?? false,
|
|
34
|
+
canDelete: permission.Delete ?? false,
|
|
35
|
+
canDeleteMulti: permission.DeleteMulti ?? false,
|
|
36
|
+
canSave: permission.Save ?? false,
|
|
37
|
+
canCreate: permission.Create ?? false,
|
|
38
|
+
canAction: permission.Action ?? false,
|
|
39
|
+
canView: permission.View ?? false,
|
|
40
|
+
canImport: permission.ImportFile ?? false
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
// Trường hợp permission không tồn tại
|
|
45
|
+
return {
|
|
46
|
+
canEdit: false,
|
|
47
|
+
canDelete: false,
|
|
48
|
+
canDeleteMulti: false,
|
|
49
|
+
canSave: false,
|
|
50
|
+
canCreate: false,
|
|
51
|
+
canAction: false,
|
|
52
|
+
canView: false,
|
|
53
|
+
canImport: false
|
|
54
|
+
};
|
|
55
|
+
}
|
|
27
56
|
}, [permission]);
|
|
28
57
|
|
|
29
58
|
const set = (permission) => {
|
|
30
|
-
setPermission({ ...permissionMap, [
|
|
59
|
+
setPermission({ ...permissionMap, [tableName]: permission });
|
|
31
60
|
};
|
|
32
61
|
|
|
33
62
|
return { permission, set, canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport };
|