skyouc
昨天 0cd6dfd544b900ff66682881fe4d6df0b90e386d
no message
3个文件已修改
1个文件已添加
176 ■■■■■ 已修改文件
rsf-admin/src/page/dashboard/NbChart.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/dashboard/NbList.jsx 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/dashboard/NbPie.jsx 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/dashboard/index.jsx 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/dashboard/NbChart.jsx
@@ -44,8 +44,6 @@
const NbChart = (props) => {
    const { orders } = props;
    console.log(orders);
    const translate = useTranslate();
    if (!orders) return null;
rsf-admin/src/page/dashboard/NbList.jsx
@@ -5,25 +5,25 @@
    ListItemSecondaryAction,
    ListItemAvatar,
    ListItemText,
    Typography,
    Avatar,
    Box,
    ListItemButton,
    Card,
    CardHeader,
    List,
    Grid,
} from '@mui/material';
import { Link } from 'react-router-dom';
const NbList = (props) => {
    const { orders = [] } = props;
const NbList = ({ deadStock }) => {
    const translate = useTranslate();
    return (
        <Card sx={{ flex: 1 }}>
            <CardHeader title={translate('page.dashboard.list.stock')} />
            <List dense={true}>
                {orders.map(record => (
                    <PendingOrder key={record.id} order={record} />
                {deadStock.map(record => (
                    <PendingOrder key={`record?.id + ${Math.random().toString(36).substr(2, 9)} `} order={record} />
                ))}
            </List>
        </Card>
@@ -32,11 +32,12 @@
export const PendingOrder = (props) => {
    const { order } = props;
    console.log(order);
    const translate = useTranslate();
    const { referenceRecord: customer, isPending } = useReference({
        reference: 'customers',
        id: order.customer_id,
    });
    // const { referenceRecord: customer, isPending } = useReference({
    //     reference: 'customers',
    //     id: order.id,
    // });
    return (
        <ListItem disablePadding>
@@ -52,13 +53,41 @@
                        />
                    )}
                </ListItemAvatar> */}
                <ListItemText
                    primary={new Date(order.date).toLocaleString('en-GB')}
                {/* <ListItemText
                    primary={new Date(order.createTime).toLocaleString('en-GB')}
                    secondary={translate('page.dashboard.list.stock', {
                        name: order.name
                        name: order.maktx
                    })}
                />
                <ListItemSecondaryAction>
                >
                </ListItemText> */}
                <Grid container item md={12}>
                    <Box sx={{ display: 'flex' }}>
                        <Box sx={{ display: 'flex', padding: '1em' }}>
                            <Typography color="textSecondary">{translate("table.field.asnOrderItem.matnrCode")}:</Typography>
                            <Typography color="textSecondary">{order?.matnrCode}</Typography>
                        </Box>
                    </Box>
                    <Box sx={{ display: 'flex' }}>
                        <Box sx={{ display: 'flex', padding: '1em' }}>
                            <Typography color="textSecondary">{translate("table.field.asnOrderItem.maktx")}:</Typography>
                            <Typography color="textSecondary" maxWidth="200" overflow="hidden">{order?.maktx}</Typography>
                        </Box>
                    </Box>
                    <Box sx={{ display: 'flex' }}>
                        <Box sx={{ display: 'flex', padding: '1em' }}>
                            <Typography color="textSecondary">{translate("table.field.asnOrderItem.anfme")}:</Typography>
                            <Typography color="textSecondary">{order?.anfme}</Typography>
                        </Box>
                    </Box>
                    <Box sx={{ display: 'flex' }}>
                        <Box sx={{ display: 'flex', padding: '1em' }}>
                            <Typography color="textSecondary">{translate("table.field.locItem.deadTime")}:</Typography>
                            <Typography color="textSecondary">{order?.deadTime}</Typography>
                        </Box>
                    </Box>
                </Grid>
                {/* <ListItemSecondaryAction>
                    <Box
                        component="span"
                        sx={{
@@ -66,9 +95,9 @@
                            color: 'text.primary',
                        }}
                    >
                        {order.total}$
                        {order.deadTime}
                    </Box>
                </ListItemSecondaryAction>
                </ListItemSecondaryAction> */}
            </ListItemButton>
        </ListItem>
    );
rsf-admin/src/page/dashboard/NbPie.jsx
New file
@@ -0,0 +1,53 @@
import * as React from 'react';
import { Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';
import { Card } from "@mui/material";
import { useTranslate } from "react-admin";
const NbPie = ({ deadStock }) => {
    const translate = useTranslate();
    const data01 = [
        { name: 'Group A', value: 400 },
        { name: 'Group B', value: 300 },
        { name: 'Group C', value: 300 },
        { name: 'Group D', value: 200 },
        { name: 'Group E', value: 278 },
        { name: 'Group F', value: 189 },
    ];
    const data02 = [
        { name: 'Group A', value: 2400 },
        { name: 'Group B', value: 4567 },
        { name: 'Group C', value: 1398 },
        { name: 'Group D', value: 9800 },
        { name: 'Group E', value: 3908 },
        { name: 'Group F', value: 4800 },
    ];
    return (
        <>
            <Card>
                <ResponsiveContainer width="100%" height="100%">
                    <PieChart width={400} height={400}>
                        <Pie
                            dataKey="value"
                            isAnimationActive={false}
                            data={data01}
                            cx="50%"
                            cy="50%"
                            outerRadius={80}
                            fill="#8884d8"
                            label
                        />
                        <Pie dataKey="value" data={data02} cx={500} cy={200} innerRadius={40} outerRadius={80} fill="#82ca9d" />
                        <Tooltip />
                    </PieChart>
                </ResponsiveContainer>
            </Card>
        </>
    );
}
export default NbPie;
rsf-admin/src/page/dashboard/index.jsx
@@ -13,6 +13,8 @@
import NbChart from "./NbChart";
import NbList from "./NbList";
import NbCard from "./NbCard";
import { orderBy } from 'lodash';
import NbPie from './NbPie';
const styles = {
    flex: { display: 'flex' },
@@ -72,6 +74,7 @@
    const notify = useNotify();
    const [statistic, setStatistic] = useState({});
    const [stock, setStock] = useState([]);
    const [deadStock, setDeadStock] = useState([]);
    useEffect(() => {
        getDashBoardHeader()
@@ -94,10 +97,10 @@
    }
    const getRecentStocks = async () => {
        await request.post('/asnOrder/dashbord/header').then(res => {
            const { code, msg, data } = res.data?.data;
        await request.post('/locItem/page', { current: 1, pageSize: 10, orderBy: 'create_time asc' }).then(res => {
            const { code, msg, data } = res?.data;
            if (code === 200) {
                setStatistic(data);
                setDeadStock(data?.records);
            } else {
                notify(msg, { type: 'error', messageArgs: { _: msg } });
            }
@@ -105,7 +108,6 @@
            notify(error.message, { type: 'error', messageArgs: { _: error.message } });
        })
    }
    /**
     * 获取库近一个月出入库信息
@@ -123,47 +125,9 @@
        })
    }
    const recentOrders = [
        {
            id: 1,
            name: 'a',
            date: "2025-08-10T12:23:56.959Z",
            total: 138.94,
            inTotal: 254,
        },
        {
            id: 2,
            name: 'b',
            date: "2025-08-03T07:45:00.304Z",
            total: 214.66,
            inTotal: 258,
        },
        {
            id: 3,
            name: 'c',
            date: "2025-07-28T00:20:10.968Z",
            total: 68.19,
            inTotal: 154,
        },
        {
            id: 4,
            name: 'd',
            date: "2025-07-22T20:39:00.293Z",
            total: 36.56,
            inTotal: 124,
        },
        {
            id: 5,
            name: 'e',
            date: "2025-07-16T17:40:24.791Z",
            total: 100.82,
            inTotal: 354,
        },
    ]
    return (
        <>
            <Grid container md={12}>
            <Grid container md={12} item>
                <Grid item md={8}>
                    <Box sx={{ display: "flex" }}>
                        <CardWithIcon
@@ -180,7 +144,6 @@
                            title={`${statistic?.membersTotalQua}`}
                            type={"out"}
                            statistic={statistic}
                        />
                    </Box>
                    <Spacer />
@@ -188,9 +151,12 @@
                        <NbChart orders={stock} />
                    </Box>
                    <Spacer />
                    <Box>
                        <NbList orders={recentOrders} />
                    <Box sx={{ display: 'flex' }}>
                        <NbList deadStock={deadStock} />
                        <NbPie />
                    </Box>
                    <Spacer />
                </Grid>
                <Grid item md={4}>
                    <Box sx={{ display: 'flex' }}>
@@ -205,7 +171,7 @@
                                    filter: JSON.stringify({ status: 1 }),
                                }),
                            }}
                            list={recentOrders}
                            list={deadStock}
                        />
                    </Box>
                </Grid>