Sfoglia il codice sorgente

po page user right

production_process
MSI\2Fi 2 mesi fa
parent
commit
0df2248a8c
7 ha cambiato i file con 49 aggiunte e 13 eliminazioni
  1. +1
    -0
      src/app/(main)/layout.tsx
  2. +3
    -1
      src/app/(main)/po/page.tsx
  3. +2
    -2
      src/components/PoDetail/PoInputGrid.tsx
  4. +8
    -9
      src/components/PoSearch/PoSearch.tsx
  5. +1
    -1
      src/components/UserSearch/UserSearch.tsx
  6. +18
    -0
      src/i18n/en/user.json
  7. +16
    -0
      src/i18n/zh/po.json

+ 1
- 0
src/app/(main)/layout.tsx Vedi File

@@ -12,6 +12,7 @@ import { CameraProvider } from "@/components/Cameras/CameraProvider";
import { UploadProvider } from "@/components/UploadProvider/UploadProvider";
import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper";
import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider";
import { I18nProvider } from "@/i18n";

export default async function MainLayout({
children,


+ 3
- 1
src/app/(main)/po/page.tsx Vedi File

@@ -1,7 +1,7 @@
import { preloadClaims } from "@/app/api/claims";
import ClaimSearch from "@/components/ClaimSearch";
import PoSearch from "@/components/PoSearch";
import { getServerI18n } from "@/i18n";
import { getServerI18n, I18nProvider } from "@/i18n";
import Add from "@mui/icons-material/Add";
import Button from "@mui/material/Button";
import Stack from "@mui/material/Stack";
@@ -35,9 +35,11 @@ const PurchaseOrder: React.FC = async () => {
{t("Create Po")}
</Button> */}
</Stack>
<I18nProvider namespaces={["po", "common"]}>
<Suspense fallback={<PoSearch.Loading />}>
<PoSearch />
</Suspense>
</I18nProvider>
</>
);
};


+ 2
- 2
src/components/PoDetail/PoInputGrid.tsx Vedi File

@@ -110,7 +110,7 @@ function PoInputGrid({
warehouse,
}: Props) {
console.log(itemDetail);
const { t } = useTranslation("home");
const { t } = useTranslation("po");
const apiRef = useGridApiRef();
const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});
const getRowId = useCallback<GridRowIdGetter<StockInLineRow>>(
@@ -479,7 +479,7 @@ function PoInputGrid({
stockInLineStatusMap[status] === 9 ||
stockInLineStatusMap[status] <= 2 ||
stockInLineStatusMap[status] >= 7 ||
(!session?.user?.abilities?.includes("APPROVAL") && stockInLineStatusMap[status] >= 3 && stockInLineStatusMap[status] <= 5)
(!session?.user?.abilities?.includes("APPROVAL") && (stockInLineStatusMap[status] >= 3 || stockInLineStatusMap[status] <= 5))
}
// set _isNew to false after posting
// or check status


+ 8
- 9
src/components/PoSearch/PoSearch.tsx Vedi File

@@ -28,14 +28,12 @@ const PoSearch: React.FC<Props> = ({ po, warehouse }) => {
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => {
var searchCriteria: Criterion<SearchParamNames>[] = [
{ label: t("Code"), paramName: "code", type: "text" },
// { label: t("Name"), paramName: "name", type: "text" },
{ label: t("Status"), paramName: "status", type: "select", options: ["PENDING", "RECEIVING", "COMPLETED"] },
{ label: t("Escalated"), paramName: "escalated", type: "select", options: [t("Escalated"), t("NotEscalated")] },
];
return searchCriteria;
}, [t, po]);

const {data: session} = useSession();

console.log(session);

const onDetailClick = useCallback(
(po: PoResult) => {
@@ -75,7 +73,7 @@ const PoSearch: React.FC<Props> = ({ po, warehouse }) => {
label: t("Escalated"),
renderCell: (params) => {
return params.escalated ? <NotificationIcon color="warning"/> : undefined
}
}
},
// {
// name: "name",
@@ -133,10 +131,11 @@ const PoSearch: React.FC<Props> = ({ po, warehouse }) => {
onSearch={(query) => {
setFilteredPo(
po.filter((p) => {
return p.code
.toLowerCase()
.includes(query.code.toLowerCase());
// p.name.toLowerCase().includes(query.name.toLowerCase())
return (
p.code.toLowerCase().includes(query.code.toLowerCase()) &&
(query.status === "All" || p.status === query.status) &&
(query.escalated === "All" || p.escalated === (query.escalated === t("Escalated")))
)
})
);
}}


+ 1
- 1
src/components/UserSearch/UserSearch.tsx Vedi File

@@ -20,7 +20,7 @@ type SearchQuery = Partial<Omit<UserResult, "id">>;
type SearchParamNames = keyof SearchQuery;

const UserSearch: React.FC<Props> = ({ users }) => {
const { t } = useTranslation();
const { t } = useTranslation("user");
const [filteredUser, setFilteredUser] = useState(users);
const router = useRouter();



+ 18
- 0
src/i18n/en/user.json Vedi File

@@ -0,0 +1,18 @@
{
"Create User": "新增用戶",
"User Detail": "用戶詳細資料",
"User Authority": "用戶權限",
"Authority Pool": "權限池",
"Allocated Authority": "已分配權限",
"username": "用戶名稱",
"password": "密碼",
"Confirm Password": "確認密碼",
"Reset": "重置",
"Cancel": "取消",
"Confirm": "確認",
"name": "姓名",
"User ID": "用戶ID",
"User Name": "用戶名稱",
"User Group": "用戶群組",
"Authority": "權限"
}

+ 16
- 0
src/i18n/zh/po.json Vedi File

@@ -0,0 +1,16 @@
{
"code": "代码",
"status": "状态",
"escalated": "已升级",
"notEscalated": "未升级",
"All": "全部",
"Pending": "待处理",
"Receiving": "接收中",
"Completed": "已完成",
"Purchase Order": "采购订单",
"Details": "详情",
"OrderDate": "订单日期",
"Supplier": "供应商",
"Escalated": "已升级",
"NotEscalated": "未升级"
}

Caricamento…
Annulla
Salva