From e05481bd5cc560f3287ceb60f1f771329e27ae4d Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期二, 08 四月 2025 11:05:24 +0800
Subject: [PATCH] feat:收货单新增完成和关闭
---
rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 43 ++++++++++++++++++---
rsf-admin/src/page/components/BillStatusField.jsx | 30 +++++++++++++++
rsf-admin/src/page/components/EditTopToolBar.jsx | 2
rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx | 6 +-
rsf-admin/src/page/components/ConfirmButton.jsx | 2
rsf-admin/src/config/MyDataProvider.js | 2 -
rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx | 13 +++++-
rsf-admin/.env | 2
rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx | 2 -
9 files changed, 84 insertions(+), 18 deletions(-)
diff --git a/rsf-admin/.env b/rsf-admin/.env
index a3c69b2..a8ce658 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=127.0.0.1
+VITE_BASE_IP=192.168.4.24
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/config/MyDataProvider.js b/rsf-admin/src/config/MyDataProvider.js
index cfc312f..897d7ab 100644
--- a/rsf-admin/src/config/MyDataProvider.js
+++ b/rsf-admin/src/config/MyDataProvider.js
@@ -60,7 +60,6 @@
// create a record
create: async (resource, params) => {
- console.log("create", resource, params);
const res = await request.post(resource + "/save", params?.data);
const { code, msg, data } = res.data;
if (code === 200) {
@@ -75,7 +74,6 @@
// update a record based on a patch
update: async (resource, params) => {
- console.log("update", resource, params);
const res = await request.post(resource + "/update", {
id: params.id,
...params.data,
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
index c4da83b..91aca74 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -41,6 +41,8 @@
import EmptyData from "../components/EmptyData";
import MyCreateButton from "../components/MyCreateButton";
import MyExportButton from '../components/MyExportButton';
+import BillStatusField from '../components/BillStatusField';
+import ConfirmButton from '../components/ConfirmButton';
import PageDrawer from "../components/PageDrawer";
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
@@ -49,6 +51,7 @@
import FileDownloadIcon from '@mui/icons-material/FileDownload';
import EditIcon from '@mui/icons-material/Edit';
import TaskIcon from '@mui/icons-material/Task';
+import CloseIcon from '@mui/icons-material/Close';
import request from '@/utils/request';
@@ -62,7 +65,10 @@
'& .column-name': {
},
'& .opt': {
- width: 300
+ width: 320
+ },
+ '& .status': {
+ width: 90
},
}));
@@ -164,8 +170,7 @@
<TextField source="nickname" />
</ReferenceField>
<DateField source="createTime" label="common.field.createTime" showTime />
- <TextField source="exceStatus$" label="common.field.status" />
- {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */}
+ <BillStatusField cellClassName="status" source="exceStatus" label="common.field.status" />
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt" width={300} >
{/* <Button label="toolbar.print" onClick={print}>
@@ -183,7 +188,8 @@
</Button> */}
<InspectionButton />
<CompleteButton />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
+ <CloseButton />
</WrapperField>
</StyledDatagrid>
</List>
@@ -301,8 +307,33 @@
return (
- <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
+ record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
<TaskIcon />
- </Button>
+ </Button> : <ConfirmButton label={"toolbar.complete"} color="success" data={'褰撳墠鏀惰揣鏁伴噺灏忎簬璁″垝鏁伴噺锛屾槸鍚︾‘璁ゅ畬鎴�'} startIcon={<TaskIcon />} onConfirm={requestComplete} />)
+
+ )
+
+
+}
+
+const CloseButton = () => {
+ const record = useRecordContext();
+ const notify = useNotify();
+ const refresh = useRefresh();
+ const requestClose = async () => {
+ const { data: { code, data, msg } } = await request.post(`/asnOrder/close/${record.id}`);
+
+ if (code === 200) {
+ notify(msg);
+ refresh()
+ } else {
+ notify(msg);
+ }
+ }
+
+ return (
+ (<Button onClick={requestClose} label={"toolbar.close"} color="error">
+ <CloseIcon />
+ </Button>)
)
}
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
index 61763e5..4e7f060 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
@@ -14,7 +14,7 @@
import debounce from 'lodash/debounce';
import { DataGrid } from '@mui/x-data-grid';
import PrintModal from './PrintModal';
-import { width } from "@mui/system";
+import PrintIcon from '@mui/icons-material/Print';
const AsnOrderPanel = ({ billReload }) => {
const record = useRecordContext();
if (!record) return null;
@@ -196,7 +196,7 @@
return (
<>
- <Button size="small" variant="contained" color="secondary" onClick={modalChange}>{translate("toolbar.batchPrint")}</Button>
+ <Button size="small" color="secondary" onClick={modalChange} startIcon={<PrintIcon />}>{translate("toolbar.batchPrint")}</Button>
<PrintModal
open={createDialog}
@@ -218,7 +218,7 @@
return (
<>
- <Button size="small" variant="contained" color="secondary" onClick={() => setCreateDialog(true)}>{translate("toolbar.print")}</Button>
+ <Button size="small" color="secondary" onClick={() => setCreateDialog(true)} startIcon={<PrintIcon />}>{translate("toolbar.print")}</Button>
<PrintModal
open={createDialog}
diff --git a/rsf-admin/src/page/components/BillStatusField.jsx b/rsf-admin/src/page/components/BillStatusField.jsx
new file mode 100644
index 0000000..b60ff1c
--- /dev/null
+++ b/rsf-admin/src/page/components/BillStatusField.jsx
@@ -0,0 +1,30 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import {
+ useRecordContext,
+} from 'react-admin';
+import { Box, Typography, Card, Stack } from '@mui/material';
+import { useTheme } from '@mui/material/styles';
+import CircleIcon from '@mui/icons-material/Circle';
+
+const BillStatusField = () => {
+ const record = useRecordContext();
+ const theme = useTheme();
+ const color = {
+ 0: '#BFBFBF',
+ 1: '#FFC53D',
+ 2: '#52C41A',
+ 3: '#595959',
+ 4: '#FF4D4F',
+ }
+ return (
+ <Typography
+ variant="body2"
+ sx={{ display: 'flex', alignItems: 'center' }}
+ >
+ <CircleIcon sx={{ fontSize: 10, color: color[record.exceStatus || 0], marginRight: '3px' }} /> {record.exceStatus$}
+ </Typography >
+ )
+
+}
+
+export default BillStatusField;
\ No newline at end of file
diff --git a/rsf-admin/src/page/components/ConfirmButton.jsx b/rsf-admin/src/page/components/ConfirmButton.jsx
index e39fe98..c315e7c 100644
--- a/rsf-admin/src/page/components/ConfirmButton.jsx
+++ b/rsf-admin/src/page/components/ConfirmButton.jsx
@@ -44,7 +44,7 @@
<DialogTitle>{translate('common.msg.confirm.tip')}</DialogTitle>
<DialogContent>
<DialogContentText>
- {translate('common.msg.confirm.desc')}
+ {data ? data : translate('common.msg.confirm.desc')}
</DialogContentText>
</DialogContent>
<DialogActions>
diff --git a/rsf-admin/src/page/components/EditTopToolBar.jsx b/rsf-admin/src/page/components/EditTopToolBar.jsx
index fbbdb38..8a5c8f6 100644
--- a/rsf-admin/src/page/components/EditTopToolBar.jsx
+++ b/rsf-admin/src/page/components/EditTopToolBar.jsx
@@ -9,7 +9,7 @@
const resource = useResourceContext();
const translate = useTranslate();
-
+
return (
<TopToolbar sx={{
marginTop: 1,
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
index 80fac6f..d04c3e1 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
@@ -19,6 +19,8 @@
required,
useRecordContext,
DeleteButton,
+ useNotify,
+ useRedirect,
} from 'react-admin';
import { useWatch, useFormContext } from "react-hook-form";
import { Stack, Grid, Box, Typography } from '@mui/material';
@@ -30,11 +32,18 @@
import StatusSelectInput from "../../../components/StatusSelectInput";
const FormToolbar = () => {
- const { getValues } = useFormContext();
+ const form = useFormContext();
+ const redirect = useRedirect();
+ const notify = useNotify();
+ const onSuccess = (data) => {
+ const { dictTypeId, dictTypeCode } = data
+ notify(`淇敼鎴愬姛!`);
+ redirect(`/dictData?dictTypeId=${dictTypeId}&code=${dictTypeCode}`);
+ }
return (
<Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
+ <SaveButton type="button" mutationOptions={{ onSuccess }} />
<DeleteButton mutationMode="optimistic" />
</Toolbar>
)
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
index 7af9d9d..5506184 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
@@ -62,8 +62,6 @@
const filters = [
<SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
<TextInput source="dictTypeId" label="table.field.dictData.dictTypeId" />,
<TextInput source="dictTypeCode" label="table.field.dictData.dictTypeCode" />,
--
Gitblit v1.9.1