| | |
| | | skip_nav: "Skip to content", |
| | | }, |
| | | sort: { |
| | | sort_by: "Sort by %{field} %{order}", |
| | | ASC: "ascending", |
| | | DESC: "descending", |
| | | sort_by: "按照 \"%{field}\" %{order}", |
| | | ASC: "升序排列", |
| | | DESC: "降序排列", |
| | | }, |
| | | auth: { |
| | | auth_check_error: "Please login to continue", |
| | |
| | | locItem: '库存明细', |
| | | locType: '库位类型(废)', |
| | | locArea: '逻辑分区(废)', |
| | | locAreaMat: '逻辑分区(废)', |
| | | locAreaMat: '逻辑分区', |
| | | locAreaMatRela: '库区物料关系', |
| | | container: '容器管理(废)', |
| | | contract: '合同信息(废)', |
| | |
| | | serialRule: '编码规则', |
| | | asnOrder: '入库通知单', |
| | | asnOrderItem: '收货明细', |
| | | asnOrderLog: '收货历史单', |
| | | asnOrderLog: '历史通知单', |
| | | asnOrderItemLog: '收货历史明细', |
| | | purchase: 'PO单', |
| | | purchaseItem: 'PO单明细', |
| | |
| | | fieldsItem: '扩展字段明细', |
| | | warehouseAreasItem: '收货库存', |
| | | deviceSite: '路径管理', |
| | | waitPakin: '组托通知档', |
| | | waitPakin: '组托档', |
| | | waitPakinItem: '组托档明细', |
| | | waitPakinLog: '组托历史档', |
| | | waitPakinItemLog: '组托历史档明细', |
| | |
| | | transfer: '调拔单', |
| | | transferItem: '调拔单明细', |
| | | locRevise: '库存调整', |
| | | statisticReport: '日志报表', |
| | | statisticReport: '报表管理', |
| | | locDeadReport: '库存停滞报表', |
| | | stockStatistic: '日入库汇总查询', |
| | | outStatistic: '日出库汇总查询', |
| | |
| | | preparation: '备料单', |
| | | check: '盘点管理', |
| | | abnormal: '异常管理', |
| | | platform: '平台管理' |
| | | platform: '平台管理', |
| | | freeze: '库存冻结', |
| | | transferPoces: '调拨管理', |
| | | }, |
| | | table: { |
| | | field: { |
| | |
| | | warehouse: { |
| | | name: "仓库名称", |
| | | code: "仓库编码", |
| | | factory: "工厂", |
| | | factory: "使用组织", |
| | | address: "地址", |
| | | longitude: "经度", |
| | | latgitude: "纬度", |
| | |
| | | supplierId: "供应商", |
| | | flagMinus: "允许负库存", |
| | | flagLabelMange: "标签管理", |
| | | flagMix: "混放", |
| | | flagMix: "允许混放", |
| | | }, |
| | | warehouseAreasItem: { |
| | | asnCode: '单号', |
| | |
| | | }, |
| | | asnOrder: { |
| | | code: "ASN单号", |
| | | poCode: "PO编码", |
| | | poCode: "单据编码", |
| | | poId: "PO标识", |
| | | type: "单据类型", |
| | | wkType: "业务类型", |
| | |
| | | }, |
| | | outStock: { |
| | | code: "出库单号", |
| | | poCode: "DO单号", |
| | | poCode: "单据编码", |
| | | poId: "DO标识", |
| | | type: "类型", |
| | | wkType: "业务类型", |
| | | anfme: "数量", |
| | | workQty: '执行数', |
| | | anfme: "应出数量", |
| | | workQty: '实出数量', |
| | | qty: "完成数", |
| | | logisNo: "物流单号", |
| | | arrTime: "预计到达时间", |
| | |
| | | orderId: "主单标识", |
| | | orderCode: "单号", |
| | | poDetlId: "PO单ID", |
| | | poDetlCode: "PO单", |
| | | poDetlCode: "单据编码", |
| | | platItemId: '行号', |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | |
| | | outStockItem: { |
| | | orderId: "主单标识", |
| | | orderCode: "单号", |
| | | poCode: 'DO单号', |
| | | poCode: '单据编码', |
| | | poDetlId: "平台明细ID", |
| | | poDetlCode: "DO单", |
| | | matnrId: "物料标识", |
| | | maktx: "物料名称", |
| | | matnrCode: "物料编码", |
| | | platOrderCode: '客单号', |
| | | anfme: "计划出库数", |
| | | anfme: "应出数量", |
| | | stockUnit: "库存单位", |
| | | workQty: '已出数量', |
| | | purQty: "下单数量", |
| | | purUnit: "单位", |
| | | qty: "完成数量", |
| | | qty: "实出数量", |
| | | splrBatch: "批次", |
| | | splrCode: "供应商编码", |
| | | splrName: "供应商名称", |
| | |
| | | recover: "继续收货", |
| | | modiftySite: '修改库口', |
| | | selectWave: '波次规则', |
| | | transformation: "转换", |
| | | }, |
| | | placeholder: { |
| | | warehouseAreasCode: "用于库位编码前缀占位符", |
| | |
| | | <TextInput |
| | | label="table.field.warehouse.address" |
| | | source="address" |
| | | validate={[required()]} |
| | | // validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | {/* <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouse.longitude" |
| | | source="longitude" |
| | |
| | | label="table.field.warehouse.height" |
| | | source="height" |
| | | /> |
| | | </Grid> |
| | | </Grid> */} |
| | | |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <StatusSelectInput /> |
| | |
| | | parse={v => v} |
| | | fullWidth |
| | | multiline |
| | | minRows={2} |
| | | autoFocus |
| | | // minRows={2} |
| | | // autoFocus |
| | | /> |
| | | {/* <Stack direction="column" spacing={1} width={'100%'}> |
| | | <MemoInput /> |
| | |
| | | source="factory" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.address" |
| | | source="address" |
| | | validate={[required()]} |
| | | // validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | {/* <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.longitude" |
| | | source="longitude" |
| | |
| | | label="table.field.warehouse.height" |
| | | source="height" |
| | | /> |
| | | </Stack> |
| | | </Stack> */} |
| | | <Stack direction='row' gap={2}> |
| | | <SelectInput |
| | | label="common.field.status" |
| | | source="status" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | resettable |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="common.field.memo" |
| | | source="memo" |
| | | validate={[required()]} |
| | | // validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | |
| | | // })); |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | |
| | | <TextInput source="name" label="table.field.warehouse.name" />, |
| | | <TextInput source="code" label="table.field.warehouse.code" />, |
| | | <SearchInput source="condition" placeholder="搜索仓库名称" alwaysOn />, |
| | | <TextInput source="factory" label="table.field.warehouse.factory" />, |
| | | <TextInput source="address" label="table.field.warehouse.address" />, |
| | | <TextInput source="longitude" label="table.field.warehouse.longitude" />, |
| | | <TextInput source="latgitude" label="table.field.warehouse.latgitude" />, |
| | | <NumberInput source="length" label="table.field.warehouse.length" />, |
| | | <NumberInput source="width" label="table.field.warehouse.width" />, |
| | | <NumberInput source="height" label="table.field.warehouse.height" />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | | source="status" |
| | | choices={[ |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | resettable |
| | | />, |
| | | <TextInput source="code" label="table.field.warehouse.code" />, |
| | | <TextInput source="name" label="table.field.warehouse.name" />, |
| | | // <TextInput source="address" label="table.field.warehouse.address" />, |
| | | // <TextInput source="longitude" label="table.field.warehouse.longitude" />, |
| | | // <TextInput source="latgitude" label="table.field.warehouse.latgitude" />, |
| | | // <NumberInput source="length" label="table.field.warehouse.length" />, |
| | | // <NumberInput source="width" label="table.field.warehouse.width" />, |
| | | // <NumberInput source="height" label="table.field.warehouse.height" />, |
| | | // <TextInput label="common.field.memo" source="memo" />, |
| | | // <SelectInput |
| | | // label="common.field.status" |
| | | // source="status" |
| | | // choices={[ |
| | | // { id: '1', name: 'common.enums.statusTrue' }, |
| | | // { id: '0', name: 'common.enums.statusFalse' }, |
| | | // ]} |
| | | // resettable |
| | | // />, |
| | | ] |
| | | |
| | | const WarehouseList = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | |
| | |
| | | preferenceKey='warehouse' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | omit={['id', 'factory', 'createTime', 'createBy', 'memo', 'longitude', 'latgitude', 'length', 'width', 'height']} |
| | | omit={['id', 'updateTime', 'updateBy', 'createTime', 'createBy', 'longitude', 'latgitude', 'length', 'width', 'height']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="factory" label="table.field.warehouse.factory" /> |
| | | <TextField source="code" label="table.field.warehouse.code" /> |
| | | <TextField source="name" label="table.field.warehouse.name" /> |
| | | <TextField source="address" label="table.field.warehouse.address" /> |
| | | <TextField source="factory" label="table.field.warehouse.factory" /> |
| | | <TextField source="longitude" label="table.field.warehouse.longitude" /> |
| | | {/* <TextField source="longitude" label="table.field.warehouse.longitude" /> |
| | | <TextField source="latgitude" label="table.field.warehouse.latgitude" /> |
| | | <NumberField source="length" label="table.field.warehouse.length" /> |
| | | <NumberField source="width" label="table.field.warehouse.width" /> |
| | | <NumberField source="height" label="table.field.warehouse.height" /> |
| | | |
| | | <NumberField source="height" label="table.field.warehouse.height" /> */} |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | |
| | | property={record.address} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={3}> |
| | | {/* <Grid item xs={3}> |
| | | <PanelTypography |
| | | title="table.field.warehouse.longitude" |
| | | property={record.longitude} |
| | |
| | | title="table.field.warehouse.height" |
| | | property={record.height} |
| | | /> |
| | | </Grid> |
| | | </Grid> */} |
| | | |
| | | </Grid> |
| | | </CardContent> |
| | |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | <WrapperField cellClassName="opt" label="common.field.opt"> |
| | | <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} label="toolbar.detail" /> |
| | | {/* <LocButton sx={{ padding: '1px', fontSize: '.75rem' }} ></LocButton> |
| | | <UnLockButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /><UnLockButton /> */} |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | | </List> |
| | |
| | | ) |
| | | } |
| | | |
| | | export default LocPreviewList; |
| | | export default LocPreviewList; |
| | | |
| | | /** |
| | | * 操作 |
| | | * @returns |
| | | */ |
| | | const LocButton = (props) => { |
| | | // const record = useRecordContext(); |
| | | const notify = useNotify(); |
| | | const refresh = useRefresh(); |
| | | const clickComplete = () => { |
| | | completeTask(record) |
| | | }; |
| | | //完成任务 |
| | | const completeTask = async (row) => { |
| | | const { data: { code, data, msg } } = await request.post(`task/complete/` + row.id); |
| | | if (code === 200) { |
| | | notify(msg); |
| | | refresh(); |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | } |
| | | return ( |
| | | <ConfirmButton label={"冻结"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} /> |
| | | ) |
| | | } |
| | | |
| | | /** |
| | | * 取消按钮 |
| | | * @returns |
| | | */ |
| | | const UnLockButton = () => { |
| | | const record = useRecordContext(); |
| | | const notify = useNotify(); |
| | | const refresh = useRefresh(); |
| | | const clickCancel = () => { |
| | | cancleTask(record) |
| | | }; |
| | | //取消任务 |
| | | const cancleTask = async (row) => { |
| | | const { data: { code, data, msg } } = await request.post(`/task/remove/` + row.id); |
| | | if (code === 200) { |
| | | notify(msg); |
| | | refresh(); |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | } |
| | | return ( |
| | | (record.taskStatus == 1 || record.taskStatus == 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 107 || record.taskType == 103 || record.taskType == 11) ? |
| | | <ConfirmButton |
| | | onConfirm={clickCancel} |
| | | startIcon={<CancelIcon />} |
| | | label={"toolbar.cancel"}> |
| | | </ConfirmButton> |
| | | : |
| | | <></> |
| | | ) |
| | | } |
| | |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | <TextField source="memo" label="common.field.memo" sortable={false} />, |
| | | // <TextField source="memo" label="common.field.memo" sortable={false} />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | } else { |
| | |
| | | '& .column-name': { |
| | | }, |
| | | '& .opt': { |
| | | width: 220 |
| | | width: 420 |
| | | }, |
| | | '& .wkType': { |
| | | width: 110 |
| | |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | |
| | | {/* 银座新增 */} |
| | |
| | | <TextField source="customerId" label="客户编码" /> |
| | | <TextField source="customerName" label="客户" /> |
| | | |
| | | <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" /> |
| | | <WrapperField cellClassName="opt" label="common.field.opt" > |
| | | <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} /> |
| | | <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton> |
| | |
| | | <SearchInput source="condition" alwaysOn />, |
| | | // <DateInput label='common.time.after' source="timeStart" />, |
| | | // <DateInput label='common.time.before' source="timeEnd" />, |
| | | <NumberInput source="taskId" label="table.field.taskItem.taskId" />, |
| | | <NumberInput source="orderId" label="table.field.taskItem.orderId" />, |
| | | <NumberInput source="orderType" label="table.field.taskItem.orderType" />, |
| | | <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />, |
| | | // <NumberInput source="taskId" label="table.field.taskItem.taskId" />, |
| | | // <NumberInput source="orderId" label="table.field.taskItem.orderId" />, |
| | | // <NumberInput source="orderType" label="table.field.taskItem.orderType" />, |
| | | // <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />, |
| | | <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />, |
| | | <TextInput source="maktx" label="table.field.taskItem.maktx" />, |
| | | <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />, |
| | |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | // <NumberField source="taskId" label="table.field.taskItem.taskId" />, |
| | | // <NumberField source="orderId" label="table.field.taskItem.orderId" />, |
| | | // <NumberField source="orderType$" label="table.field.taskItem.orderType" />, |
| | | // <NumberField source="wkType$" label="table.field.taskItem.wkType" />, |
| | | <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />, |
| | | <NumberField source="matnrId" label="table.field.taskItem.matnrId" />, |
| | | <TextField source="maktx" label="table.field.taskItem.maktx" />, |
| | | <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />, |
| | | <TextField source="unit" label="table.field.taskItem.unit" />, |
| | | <NumberField source="anfme" label="table.field.taskItem.anfme" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="batch" label="table.field.taskItem.batch" />, |
| | | <TextField source="isptResult$" label="table.field.taskItem.isptResult" />, |
| | | <TextField source="spec" label="table.field.taskItem.spec" />, |
| | | <TextField source="model" label="table.field.taskItem.model" />, |
| | | <TextField source="matnrCode" label="物料编码" />, |
| | | <TextField source="maktx" label="物料名称" />, |
| | | <TextField source="spec" label="规格" />, |
| | | <TextField source="unit" label="单位" />, |
| | | <TextField source="anfme" label="数量" />, |
| | | |
| | | |
| | | // <NumberField source="id" />, |
| | | // // <NumberField source="taskId" label="table.field.taskItem.taskId" />, |
| | | // // <NumberField source="orderId" label="table.field.taskItem.orderId" />, |
| | | // // <NumberField source="orderType$" label="table.field.taskItem.orderType" />, |
| | | // // <NumberField source="wkType$" label="table.field.taskItem.wkType" />, |
| | | // <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />, |
| | | // <NumberField source="matnrId" label="table.field.taskItem.matnrId" />, |
| | | // <TextField source="maktx" label="table.field.taskItem.maktx" />, |
| | | // <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />, |
| | | // <TextField source="unit" label="table.field.taskItem.unit" />, |
| | | // <NumberField source="anfme" label="table.field.taskItem.anfme" />, |
| | | // <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | // <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | // <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | // <TextField source="batch" label="table.field.taskItem.batch" />, |
| | | // <TextField source="isptResult$" label="table.field.taskItem.isptResult" />, |
| | | // <TextField source="spec" label="table.field.taskItem.spec" />, |
| | | // <TextField source="model" label="table.field.taskItem.model" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | |
| | | width: 248 |
| | | }, |
| | | '& .MuiTableCell-root': { |
| | | whiteSpace: 'nowrap', |
| | | overflow: 'visible', |
| | | textOverflow: 'unset' |
| | | whiteSpace: 'nowrap', |
| | | overflow: 'visible', |
| | | textOverflow: 'unset' |
| | | } |
| | | |
| | | })); |
| | |
| | | sort={{ field: "sort", order: "desc" }} |
| | | actions={( |
| | | <TopToolbar> |
| | | <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/> |
| | | {/* <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/> */} |
| | | <BulkAutoPauseButton autoExce={autoExce} setAutoExce={setAutoExce} /> |
| | | <FilterButton /> |
| | | <SelectColumnsButton preferenceKey='preparation' /> |
| | |
| | | rowClick={false} |
| | | expand={<MatPreparationPanel />} |
| | | expandSingle={true} |
| | | omit={['id', 'sort', 'taskCode', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status','warehType$']} |
| | | omit={['id', 'sort', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status','warehType$']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="taskCode" label="备料号" /> |
| | |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> */} |
| | | <WrapperField cellClassName="opt" label="common.field.opt" onClick={(e) => e.stopPropagation()} > |
| | | <EditButton label="toolbar.detail" /> |
| | | <DoneButton sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton> |
| | | <DoneButton title="转换" label="转换" sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton> |
| | | <CancelButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> |
| | | <CheckButton /> |
| | | <PickButton /> |
| | | <SetTopButton /> |
| | | {/* <SetTopButton /> */} |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | | </List> |
| | |
| | | } |
| | | } |
| | | return ( |
| | | ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198)) || (record?.taskType == 11 && record?.taskStatus == 101) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>) |
| | | ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198)) || (record?.taskType == 11 && record?.taskStatus == 101) ? (<ConfirmButton label={"转换"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>) |
| | | ) |
| | | } |
| | | |
| | |
| | | '& .opt': { |
| | | width: 200 |
| | | }, |
| | | // 添加列宽样式 |
| | | '& .col-code': { |
| | | width: 120, |
| | | minWidth: 120, |
| | | maxWidth: 150, |
| | | }, |
| | | '& .col-name': { |
| | | width: 180, |
| | | minWidth: 150, |
| | | maxWidth: 250, |
| | | }, |
| | | '& .col-spec': { |
| | | width: 120, |
| | | minWidth: 120, |
| | | maxWidth: 200, |
| | | }, |
| | | '& .col-unit': { |
| | | width: 80, |
| | | minWidth: 60, |
| | | maxWidth: 100, |
| | | }, |
| | | '& .col-quantity': { |
| | | width: 100, |
| | | minWidth: 80, |
| | | maxWidth: 120, |
| | | }, |
| | | })); |
| | | |
| | | const MatPreparationPanel = () => { |
| | |
| | | expandSingle |
| | | omit={['id', 'taskId', 'createTime', 'createBy$', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']} |
| | | > |
| | | <NumberField source="id" /> |
| | | {/* <NumberField source="taskId" label="table.field.taskItem.taskId" /> */} |
| | | <TextField source="matnrCode" label="物料编码" cellClassName="col-code" />, |
| | | <TextField source="maktx" label="物料名称" cellClassName="col-name" />, |
| | | {/* <TextField source="spec" label="规格" cellClassName="col-spec" />, */} |
| | | {/* <TextField source="unit" label="单位" cellClassName="col-unit" />, */} |
| | | <TextField source="anfme" label="数量" cellClassName="col-quantity" />, |
| | | {/* <NumberField source="id" /> |
| | | <NumberField source="taskId" label="table.field.taskItem.taskId" /> |
| | | <NumberField source="orderId" label="table.field.preparationItem.orderId" /> |
| | | <NumberField source="orderType$" label="table.field.preparationItem.orderType" /> |
| | | {/* <TextField source="sourceCode" label="table.field.taskItem.sourceCode" /> */} |
| | | <TextField source="sourceCode" label="table.field.taskItem.sourceCode" /> |
| | | <NumberField source="orderItemId" label="table.field.preparationItem.orderItemId" /> |
| | | <NumberField source="matnrId" label="table.field.preparationItem.matnrId" /> |
| | | <TextField source="maktx" label="table.field.preparationItem.maktx" /> |
| | |
| | | <NumberField source="anfme" label="table.field.preparationItem.anfme" /> |
| | | <TextField source="batch" label="table.field.preparationItem.batch" /> |
| | | <TextField source="spec" label="table.field.preparationItem.spec" /> |
| | | <TextField source="model" label="table.field.preparationItem.model" /> |
| | | <TextField source="model" label="table.field.preparationItem.model" /> */} |
| | | {/* <TextField source="updateBy$" label="common.field.updateBy"/> |
| | | <TextField source="createBy$" label="common.field.createBy"/> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | |
| | | </>} |
| | | omit={['id', 'splrName', 'qty', 'poCode',]} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="matnrCode" label="物料编码" />, |
| | | <TextField source="maktx" label="物料名称" />, |
| | | <TextField source="spec" label="规格" />, |
| | | <TextField source="unit" label="单位" />, |
| | | <TextField source="anfme" label="数量" />, |
| | | {/* <NumberField source="id" /> |
| | | <TextField source="asnCode" label="table.field.outStockItem.orderCode" /> |
| | | <TextField source="poCode" label="table.field.outStockItem.poCode" /> |
| | | <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" /> |
| | |
| | | <NumberField source="workQty" label="table.field.outStockItem.workQty" /> |
| | | <NumberField source="qty" label="table.field.outStockItem.qty" /> |
| | | <TextField source="stockUnit" label="table.field.outStockItem.stockUnit" /> |
| | | <TextField source="splrName" label="table.field.outStockItem.splrName" /> |
| | | <TextField source="splrName" label="table.field.outStockItem.splrName" /> */} |
| | | </StyledDatagrid> |
| | | </List> |
| | | </Card> |
| | |
| | | <DialogContent sx={{ mt: 2 }}> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={(v) => v} |
| | | /> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={(v) => v} |
| | | placeholder={translate("placeholder.warehouseAreasCode")} |
| | | /> |
| | | <AutocompleteInput |
| | | choices={dicts} |
| | | optionText="label" |
| | | label="table.field.warehouseAreas.type" |
| | | source="type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <ReferenceInput |
| | | source="warehouseId" |
| | | reference="warehouse" |
| | | reference="warehouse" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.wareId" |
| | |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | |
| | | <TextInput |
| | | label="table.field.warehouseAreas.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={(v) => v} |
| | | placeholder={translate("placeholder.warehouseAreasCode")} |
| | | /> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={(v) => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <AutocompleteInput |
| | | choices={dicts} |
| | | optionText="label" |
| | | label="table.field.warehouseAreas.type" |
| | | source="type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | validate={[required()]} |
| | | /> |
| | | {/* <SelectInput |
| | | label="table.field.warehouseAreas.flagLabelMange" |
| | | source="flagLabelMange" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: " 否" }, |
| | | { id: 1, name: " 是" }, |
| | | ]} |
| | | /> */} |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMix" |
| | | source="flagMix" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: "否" }, |
| | | { id: 1, name: "是" }, |
| | | ]} |
| | | /> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMinus" |
| | | source="flagMinus" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: "否" }, |
| | | { id: 1, name: "是" }, |
| | | ]} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <ReferenceInput source="shipperId" reference="companys" filter={{ type: 'shipper' }}> |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.shipperId" |
| | |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMinus" |
| | | source="flagMinus" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: "否" }, |
| | | { id: 1, name: "是" }, |
| | | ]} |
| | | /> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagLabelMange" |
| | | source="flagLabelMange" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: " 否" }, |
| | | { id: 1, name: " 是" }, |
| | | ]} |
| | | /> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMix" |
| | | source="flagMix" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: "否" }, |
| | | { id: 1, name: "是" }, |
| | | ]} |
| | | /> |
| | | </Grid> |
| | | |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <StatusSelectInput /> |
| | | </Grid> |
| | | <Grid item xs={12} display="flex" gap={1}> |
| | | <StatusSelectInput /> |
| | | <TextInput |
| | | label="common.field.memo" |
| | | source="memo" |
| | | parse={v => v} |
| | | // fullWidth |
| | | multiline |
| | | /> |
| | | </Grid> |
| | | {/* <Grid item xs={12} display="flex" gap={1}> |
| | | <Stack direction="column" spacing={1} width={"100%"}> |
| | | <MemoInput /> |
| | | </Stack> |
| | | </Grid> |
| | | </Grid> */} |
| | | </Grid> |
| | | </DialogContent> |
| | | <DialogActions |
| | |
| | | defaultValues={{}} |
| | | // validate={(values) => { }} |
| | | > |
| | | <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}> |
| | | <Grid item xs={16} md={10}> |
| | | <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={1} columnSpacing={3}> |
| | | <Grid item xs={12} md={6} display="flex" flexDirection="column" gap={1} sx={{ '& .MuiFormControl-root': { mb: 0 } }}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | |
| | | autoFocus |
| | | /> |
| | | </Stack> */} |
| | | <Stack xs={16} direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | <DictionarySelect |
| | | label='table.field.warehouseAreas.type' |
| | | name="type" |
| | | dictTypeCode="sys_ware_areas_type" |
| | | alwaysOn |
| | | /> |
| | | <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="warehouseId" |
| | | reference="warehouse" |
| | | autoFocus |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.wareId" |
| | |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | | source="name" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <DictionarySelect |
| | | label='table.field.warehouseAreas.type' |
| | | name="type" |
| | | dictTypeCode="sys_ware_areas_type" |
| | | alwaysOn |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMix" |
| | | source="flagMix" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMinus" |
| | | source="flagMinus" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | /> |
| | | </Stack> |
| | | {/* <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="shipperId" |
| | | reference="companys" |
| | | filter={{ type: 'shipper' }} |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.shipperId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="supplierId" |
| | | reference="companys" |
| | | filter={{ type: 'supplier' }} |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.supplierId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <StatusSelectInput /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="common.field.memo" |
| | | source="memo" |
| | | parse={v => v} |
| | | multiline |
| | | /> |
| | | </Stack> */} |
| | | </Grid> |
| | | {/* <Grid item xs={8} md={2}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.common')} |
| | | </Typography> |
| | | <StatusSelectInput /> |
| | | <Box mt="2em" /> |
| | | <MemoInput /> |
| | | </Grid> */} |
| | | <Grid item xs={12} md={6} display="flex" flexDirection="column" gap={1} sx={{ '& .MuiFormControl-root': { mb: 0 } }}> |
| | | <Typography variant="h6" gutterBottom> |
| | | |
| | | {/* {translate('common.edit.title.main')} */} |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="shipperId" |
| | |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | {/* <SelectInput |
| | | label="table.field.warehouseAreas.flagLabelMange" |
| | | source="flagLabelMange" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: ' 否' }, |
| | | { id: 1, name: ' 是' }, |
| | | ]} |
| | | /> */} |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="supplierId" |
| | | reference="companys" |
| | |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | {/* <StatusSelectInput /> */} |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMinus" |
| | | source="flagMinus" |
| | | label="common.field.status" |
| | | source="status" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | /> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagLabelMange" |
| | | source="flagLabelMange" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: ' 否' }, |
| | | { id: 1, name: ' 是' }, |
| | | ]} |
| | | /> |
| | | <SelectInput |
| | | label="table.field.warehouseAreas.flagMix" |
| | | source="flagMix" |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | resettable |
| | | /> |
| | | </Stack> |
| | | </Grid> |
| | | <Grid item xs={8} md={2}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.common')} |
| | | </Typography> |
| | | <StatusSelectInput /> |
| | | <Box mt="2em" /> |
| | | <MemoInput /> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="common.field.memo" |
| | | source="memo" |
| | | parse={v => v} |
| | | multiline |
| | | /> |
| | | </Stack> |
| | | </Grid> |
| | | </Grid> |
| | | </SimpleForm> |
| | |
| | | })); |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <SearchInput source="condition" placeholder="搜索库区名称" alwaysOn />, |
| | | <ReferenceInput |
| | | source="warehouseId" |
| | | label="table.field.loc.warehouseId" |
| | |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput>, |
| | | <TextInput source="uuid" label="table.field.warehouseAreas.uuid" />, |
| | | <TextInput source="name" label="table.field.warehouseAreas.name" />, |
| | | // <TextInput source="uuid" label="table.field.warehouseAreas.uuid" />, |
| | | <TextInput source="code" label="table.field.warehouseAreas.code" />, |
| | | <TextInput source="name" label="table.field.warehouseAreas.name" />, |
| | | <ReferenceInput source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper"> |
| | | <AutocompleteInput label="table.field.warehouseAreas.shipperId" optionText="name" filterToQuery={(val) => ({ name: val })} /> |
| | | </ReferenceInput>, |
| | | <NumberInput source="supplierId" label="table.field.warehouseAreas.supplierId" />, |
| | | <SelectInput source="flagMinus" label="table.field.warehouseAreas.flagMinus" |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | />, |
| | | <SelectInput source="flagLabelMange" label="table.field.warehouseAreas.flagLabelMange" |
| | | choices={[ |
| | | { id: 0, name: ' 否' }, |
| | | { id: 1, name: ' 是' }, |
| | | ]} |
| | | />, |
| | | <SelectInput source="flagMix" label="table.field.warehouseAreas.flagMix" |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | | source="status" |
| | | choices={[ |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | resettable |
| | | />, |
| | | // <SelectInput source="flagMinus" label="table.field.warehouseAreas.flagMinus" |
| | | // choices={[ |
| | | // { id: 0, name: '否' }, |
| | | // { id: 1, name: '是' }, |
| | | // ]} |
| | | // />, |
| | | // <SelectInput source="flagLabelMange" label="table.field.warehouseAreas.flagLabelMange" |
| | | // choices={[ |
| | | // { id: 0, name: ' 否' }, |
| | | // { id: 1, name: ' 是' }, |
| | | // ]} |
| | | // />, |
| | | // <SelectInput source="flagMix" label="table.field.warehouseAreas.flagMix" |
| | | // choices={[ |
| | | // { id: 0, name: '否' }, |
| | | // { id: 1, name: '是' }, |
| | | // ]} |
| | | // />, |
| | | // <TextInput label="common.field.memo" source="memo" />, |
| | | // <SelectInput |
| | | // label="common.field.status" |
| | | // source="status" |
| | | // choices={[ |
| | | // { id: '1', name: 'common.enums.statusTrue' }, |
| | | // { id: '0', name: 'common.enums.statusFalse' }, |
| | | // ]} |
| | | // resettable |
| | | // />, |
| | | ] |
| | | |
| | | const WarehouseAreasList = () => { |
| | |
| | | )} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | |
| | | |
| | | |
| | | <StyledDatagrid |
| | | preferenceKey='warehouseAreas' |
| | | bulkActionButtons={ |
| | |
| | | </> |
| | | } |
| | | rowClick={(id, resource, record) => false} |
| | | omit={['id', 'createTime', 'createBy', 'memo','statusBool','flagMix$','flagLabelMange$','shipperId$','supplierId']} |
| | | omit={['id', 'createTime', 'createBy', 'statusBool', 'flagLabelMange$','shipperId$','supplierId', 'updateBy', 'updateTime']} |
| | | > |
| | | <NumberField source="id" /> |
| | | {/* <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> */} |
| | | <TextField source="code" label="table.field.warehouseAreas.code" /> |
| | | <TextField source="name" label="table.field.warehouseAreas.name" /> |
| | | |
| | | <TextField source="type$" label="table.field.warehouseAreas.type"/> |
| | | {/* <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}> |
| | | <TextField source="name" /> |
| | | </ReferenceField> */} |
| | | <TextField source="warehouseId$" label="table.field.warehouseAreas.wareId" /> |
| | | <TextField source="code" label="table.field.warehouseAreas.code" /> |
| | | <TextField source="name" label="table.field.warehouseAreas.name" /> |
| | | <TextField source="type$" label="table.field.warehouseAreas.type"/> |
| | | <TextField source="shipperId$" label="table.field.warehouseAreas.shipperId" /> |
| | | <NumberField source="supplierId" label="table.field.warehouseAreas.supplierId" /> |
| | | <TextField source="flagMinus$" label="table.field.warehouseAreas.flagMinus" sortable={false} /> |
| | | <TextField source="flagLabelMange$" label="table.field.warehouseAreas.flagLabelMange" sortable={false} /> |
| | | <TextField source="flagMix$" label="table.field.warehouseAreas.flagMix" sortable={false} /> |
| | | <TextField source="flagMinus$" label="table.field.warehouseAreas.flagMinus" sortable={false} /> |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <BooleanField source="statusBool" label="common.field.status" sortable={false} /> |
| | | {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */} |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | <WrapperField cellClassName="opt" label="common.field.opt"> |
| | | <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> |
| | | <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> |
| | | </WrapperField> |
| | | |
| | | {/* <TextField source="flagLabelMange$" label="table.field.warehouseAreas.flagLabelMange" sortable={false} /> */} |
| | | {/* <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> */} |
| | | {/* <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}> |
| | | <TextField source="name" /> |
| | | </ReferenceField> */} |
| | | </StyledDatagrid> |
| | | |
| | | </List> |
| | |
| | | </IconButton> |
| | | </Tooltip> |
| | | {currentTheme?.dark ? <ToggleThemeButton /> : null} |
| | | {/* <Menu open={open} onClose={handleClose} anchorEl={anchorEl}> |
| | | <Menu open={open} onClose={handleClose} anchorEl={anchorEl}> |
| | | {themes.map((theme, index) => ( |
| | | <MenuItem |
| | | onClick={event => handleChange(event, index)} |
| | |
| | | {ucFirst(theme.name)} |
| | | </MenuItem> |
| | | ))} |
| | | </Menu> */} |
| | | </Menu> |
| | | </> |
| | | ); |
| | | }; |