価格修正、店舗追加

feature-backend-stock-fix
akito.nishiwaki 4 months ago
parent 5ca37822fc
commit dc98e438c5
  1. 43
      frontend/src/pages/TaskListPage.tsx

@ -34,7 +34,7 @@ import {
Add as AddIcon, Delete as DeleteIcon, ShoppingBasket as ShoppingBasketIcon, Add as AddIcon, Delete as DeleteIcon, ShoppingBasket as ShoppingBasketIcon,
SoupKitchen as SoupKitchenIcon SoupKitchen as SoupKitchenIcon
} from '@mui/icons-material'; } from '@mui/icons-material';
import { ToBuy, Stuff, Stock } from '../types/types'; import { ToBuy, Stuff, /*Stock*/ } from '../types/types';
import { TOBUY_ERRORS } from '../constants/errorMessages'; import { TOBUY_ERRORS } from '../constants/errorMessages';
//import { FaCarrot } from "react-icons/fa6"; //エラー起きる いったん保留 //import { FaCarrot } from "react-icons/fa6"; //エラー起きる いったん保留
@ -64,7 +64,7 @@ const TaskListPage: React.FC = () => {
//在庫登録ダイアログの表示状態 //在庫登録ダイアログの表示状態
const [openInfoDialog, setOpenInfoDialog] = useState(false); const [openInfoDialog, setOpenInfoDialog] = useState(false);
const [selectedTask, setSelectedTask] = useState<ToBuy["tobuyId"]>(0); const [selectedTask, setSelectedTask] = useState<ToBuy["tobuyId"]>(0);
const [newToBuy, setNewToBuy] = useState(EMPTY_TOBUY); const [newToBuy, setNewToBuy] = useState(EMPTY_TOBUY);
@ -73,6 +73,8 @@ const TaskListPage: React.FC = () => {
const [newStock, setNewStock] = useState(EMPTY_STOCK); const [newStock, setNewStock] = useState(EMPTY_STOCK);
const [newPrice, setNewPrice] = useState("");//入力用の価格(文字列)
// コンポーネントマウント時にタスク一覧を取得 // コンポーネントマウント時にタスク一覧を取得
useEffect(() => { useEffect(() => {
@ -126,14 +128,21 @@ const TaskListPage: React.FC = () => {
console.error(`${TOBUY_ERRORS.DELETE_FAILED}:`, error); console.error(`${TOBUY_ERRORS.DELETE_FAILED}:`, error);
} }
}; };
/** /**
* *
*/ */
const handleBuy = async (tobuyId: number) => { const handleBuy = async (tobuyId: number) => {
try { try {
const today = new Date().toISOString().substring(0, 10); const today = new Date().toISOString().substring(0, 10);
await toBuyApi.buy({tobuyId, ...newStock, lastUpdate: today}); const parsedPrice = parseInt(newPrice, 10);
if (!isNaN(parsedPrice)) {
setNewStock({ ...newStock, price: parsedPrice });
}else{
alert('入力が無効です')
return
}
await toBuyApi.buy({ tobuyId, ...newStock, lastUpdate: today }); //データベースに送信
fetchTasks(); // 削除後の買うもの一覧を再取得 fetchTasks(); // 削除後の買うもの一覧を再取得
} catch (error) { } catch (error) {
console.error(`${TOBUY_ERRORS.BUY_FAILED}:`, error); console.error(`${TOBUY_ERRORS.BUY_FAILED}:`, error);
@ -253,12 +262,13 @@ const TaskListPage: React.FC = () => {
<Fab <Fab
color="primary" color="primary"
sx={{ position: 'fixed', bottom: 16, left: '60%', transform: 'translateX(-50%)' }} sx={{ position: 'fixed', bottom: 16, left: '60%', transform: 'translateX(-50%)' }}
onClick={() => {setOpenDialog(true); onClick={() => {
//handleNavigate('/AddDishies1'); setOpenDialog(true);
//handleNavigate('/AddDishies1');
}} }}
//selected={isSelected('/test')} //selected={isSelected('/test')}
> >
<SoupKitchenIcon /> <SoupKitchenIcon />
</Fab> </Fab>
@ -286,7 +296,7 @@ const TaskListPage: React.FC = () => {
<Select <Select
labelId="demo-simple-select-label" labelId="demo-simple-select-label"
value={newToBuy.category} value={newToBuy.category}
onChange={(e) => onChangeCategory(e.target.value) } onChange={(e) => onChangeCategory(e.target.value)}
> >
<MenuItem value="乳製品"></MenuItem> <MenuItem value="乳製品"></MenuItem>
<MenuItem value="魚・肉"></MenuItem> <MenuItem value="魚・肉"></MenuItem>
@ -360,8 +370,13 @@ const TaskListPage: React.FC = () => {
margin="dense" margin="dense"
label="価格" label="価格"
fullWidth fullWidth
value={newStock.price} value={newPrice}
onChange={(e) => setNewStock({...newStock, price: parseInt(e.target.value)})} onChange={(e) => {
const value = e.target.value;
if (/^\d*$/.test(value)) {
setNewPrice(value)
} ;
}}
/> />
{/* 購入日入力フィールド */} {/* 購入日入力フィールド */}
<TextField <TextField
@ -369,7 +384,7 @@ const TaskListPage: React.FC = () => {
label="購入日(yyyy/MM/dd)" label="購入日(yyyy/MM/dd)"
fullWidth fullWidth
value={newStock.buyDate} value={newStock.buyDate}
onChange={(e) => setNewStock({...newStock, buyDate: e.target.value})} onChange={(e) => setNewStock({ ...newStock, buyDate: e.target.value })}
/> />
{/* 消費・賞味期限入力フィールド */} {/* 消費・賞味期限入力フィールド */}
<TextField <TextField
@ -377,13 +392,15 @@ const TaskListPage: React.FC = () => {
label="消費・賞味期限(yyyy/MM/dd)" label="消費・賞味期限(yyyy/MM/dd)"
fullWidth fullWidth
value={newStock.expDate} value={newStock.expDate}
onChange={(e) => setNewStock({...newStock, expDate: e.target.value})} onChange={(e) => setNewStock({ ...newStock, expDate: e.target.value })}
/> />
{/* 購入店舗入力フィールド */} {/* 購入店舗入力フィールド */}
<TextField <TextField
margin="dense" margin="dense"
label="店舗" label="店舗"
fullWidth fullWidth
value={newToBuy.shop}
onChange={(e) => setNewToBuy({ ...newToBuy, shop: e.target.value })}
/> />
</Box> </Box>
</DialogContent> </DialogContent>

Loading…
Cancel
Save