Commit 97fa0889 authored by krysent's avatar krysent

new

parent 9dbb5e30
......@@ -48,6 +48,11 @@ export default [
name: "库存查询",
component: "./findstore/Storesearch",
},
{
path: "/wms/label",
name: "来料标签打印",
component: "./Printer",
},
{
path: "/wms/record",
name: "出入库记录",
......
......@@ -137,7 +137,7 @@ export default (props) => {
<div style={{ display: "flex", width: "100%" }}>
{(props.childposition == "left" || !props.childposition) &&
props.children}
<div style={{ flex: 1, overflow:"hidden" }}>
<div style={{ flex: 1, overflow: "hidden" }}>
{props.childposition == "top" && props.children}
<Mtable {...props} />
</div>
......
......@@ -24,7 +24,6 @@ const Mtable = (props) => {
} = props;
console.log('额外参数',extraparams);
const actionRefs = actionRef ?? useRef(),
formRefs = formRef ?? useRef(),
......@@ -35,7 +34,6 @@ const Mtable = (props) => {
//调用接口
const request = async (params, sort, filter) => {
console.log('request',extraparams);
if (!path) return;
let newparams = {
...params,
......
import {
factorySelect,
shopSelectByFactory,
productionLineSelectByShop,
sectionSelectByShop,
} from "@/services/system";
export default {
stationNo: {
value: null,
type: "input",
title: "工位编号",
name: ["stationNo"],
required: true,
},
stationName: {
value: null,
type: "input",
title: "工位名称",
name: ["stationName"],
required: true,
},
factoryId: {
value: null,
type: "select",
title: "所属工厂",
name: ["factoryId"],
required: true,
options: {
database: factorySelect,
params: {},
},
linked: true,
},
status: {
value: null,
type: "select",
title: "启用状态",
name: ["status"],
required: true,
options: [
{
label: "启用",
value: 1,
},
{
label: "禁用",
value: 0,
},
],
},
remark: {
value: null,
type: "textarea",
title: "描述",
name: ["remark"],
required: false,
col: { span: 24 },
},
};
import React, { useEffect, useRef, useReducer, useState } from "react";
import { Button, Tooltip, Row, Divider, Drawer } from "antd";
import AutoTable from "@/components/AutoTable";
import getPrem from "@/utils/getPrem"; //权限判断fn
import { useRequest } from "umi";
import defaultFields from "./fields";
import { doFetch } from "@/utils/doFetch";
import InitForm from "@/components/InitForm";
import Details from "@/components/Details";
import { stationDetail } from "@/utils/detailTotalCard";
import Coltext from "@/components/Coltext";
const Station = (props) => {
let actionRef = useRef(),
formRef = useRef(),
ChildRef = null;
function reload() {
actionRef?.current?.reload();
ChildRef?.onRefresh();
}
const { run, loading } = useRequest(doFetch, {
manual: true,
formatResult: (res) => res,
onSuccess: (result, params) => {
if (result.code == "0000") {
reload();
dispatch({ type: "close" });
}
},
}),
columns = [
{
title: "物料编码",
dataIndex: "materieCode",
key: "materieCode",
},
{
title: "物料名称",
dataIndex: "materieName",
key: "materieName",
},
{
title: "规格型号",
dataIndex: "specificationModel",
key: "specificationModel",
},
{
title: "数量",
dataIndex: "weight",
key: "weight",
search: false,
},
{
title: "批号",
dataIndex: "materieControlNo",
key: "materieControlNo",
},
{
title: "供应商",
dataIndex: "supplierName",
key: "supplierName",
search: false,
},
{
title: "宽度",
dataIndex: "width",
key: "width",
search: false,
},
{
title: "片厚",
dataIndex: "sheetThickness",
key: "sheetThickness",
search: false,
},
{
title: "铁损",
dataIndex: "ironLoss",
key: "ironLoss",
search: false,
},
{
title: "单边厚度",
dataIndex: "unilateralThickness",
key: "unilateralThickness",
search: false,
},
{
title: "创建人",
dataIndex: "createUserName",
key: "createUserName",
search: false,
},
{
title: "单据日期",
dataIndex: "orderDate",
key: "orderDate",
search: false,
},
];
const [drawer, setDrawer] = useState({
visible: false,
});
let saveData = (values, fn) => {
let newfields = JSON.parse(JSON.stringify(values));
//新增&修改
let difrid = iftype.val == "edit" ? { id: curitem.id } : {};
run({
url: "/ngic-auth/sysStation/save",
params: { ...newfields, ...difrid },
});
};
const OptionsBtn = () => {
return (
<>
<Button
type="primary"
style={{ marginRight: 8 }}
onClick={() => {
setDrawer((v) => ({ ...v, visible: true, title: " 卷料分卷打码" }));
}}
>
卷料分卷打码
</Button>
<Button
type="primary"
onClick={() => {
setDrawer((v) => ({ ...v, visible: true, title: " 子卷补码" }));
}}
>
子卷补码
</Button>
</>
);
};
return (
<div>
<AutoTable
pagetitle={props.route.name} //页面标题
pageextra={OptionsBtn()} //页面操作 新增or批量删除
columns={columns}
path="/ngic-workmanship/wmsMaterieLabel/page"
actionRef={actionRef}
onRef={(node) => (ChildRef = node)}
></AutoTable>
<Drawer
title={drawer?.title}
visible={drawer?.visible}
onClose={() => setDrawer((v) => ({ ...v, visible: false }))}
footer={false}
destroyOnClose={true}
getContainer={false}
style={{ position: "absolute" }}
width={"100%"}
>
<InitForm
formRef={formRef}
fields={defaultFields}
onChange={(changedValues, allValues) => {}}
actions={() => {
return null;
}}
></InitForm>
<Button
style={{ width: "100%" }}
type="primary"
size="large"
// loading={loading || !vs}
onClick={() => saveData()}
>
保存
</Button>
<Button
style={{ width: "100%" }}
type="primary"
size="large"
// loading={loading || !vs}
onClick={() => saveData()}
>
保存并打印
</Button>
</Drawer>
</div>
);
};
export default Station;
......@@ -175,51 +175,51 @@ const Materiel = (props) => {
title: "物料名称",
dataIndex: "materieName",
key: "materieName",
// render: (_, row) => {
// return (
// <Tooltip title={row.materieName}>
// <a
// className="table-cell"
// onClick={() => {
// doFetch({
// url: "/ngic-workmanship/pmMaterie/queryDetailById",
// params: { id: row.id },
// }).then((res) => {
// if (res.code == "0000") {
// let dataSource = res?.data?.data ?? {},
// specials = res?.data?.data?.materieCharList ?? [];
// let newData = formatFieds(specials, "special")?.data;
render: (_, row) => {
return (
<Tooltip title={row.materieName}>
<a
className="table-cell"
onClick={() => {
doFetch({
url: "/ngic-workmanship/pmMaterie/queryDetailById",
params: { id: row.id },
}).then((res) => {
if (res.code == "0000") {
let dataSource = res?.data?.data ?? {},
specials = res?.data?.data?.materieCharList ?? [];
let newData = formatFieds(specials, "special")?.data;
// let newSpecialData = newData.map((it) => {
// dataSource[it.fieldsKey] = it.fieldRealValue;
// return {
// title: it.fieldName,
// key: it.fieldsKey,
// };
// });
// let itemCol = [
// {
// cardTitle: "特殊属性",
// itemData: newSpecialData,
// },
// ];
// dataSource.newqualityGuaranteePeriod =
// dataSource.qualityGuaranteePeriod == 0 ||
// dataSource.qualityGuaranteePeriod
// ? dataSource.qualityGuaranteePeriod +
// dataSource.qualityGuaranteePeriodUnitName
// : null;
// let totalCard = materielDetail.concat(itemCol);
// dispatch({ type: "see", dataSource, totalCard });
// }
// });
// }}
// >
// {row.materieName}
// </a>
// </Tooltip>
// );
// },
let newSpecialData = newData.map((it) => {
dataSource[it.fieldsKey] = it.fieldRealValue;
return {
title: it.fieldName,
key: it.fieldsKey,
};
});
let itemCol = [
{
cardTitle: "特殊属性",
itemData: newSpecialData,
},
];
dataSource.newqualityGuaranteePeriod =
dataSource.qualityGuaranteePeriod == 0 ||
dataSource.qualityGuaranteePeriod
? dataSource.qualityGuaranteePeriod +
dataSource.qualityGuaranteePeriodUnitName
: null;
let totalCard = materielDetail.concat(itemCol);
dispatch({ type: "see", dataSource, totalCard });
}
});
}}
>
{row.materieName}
</a>
</Tooltip>
);
},
},
{
title: "物料类型",
......
import {
MenuUnfoldOutlined,
MenuFoldOutlined,
HomeOutlined
} from '@ant-design/icons';
import { Breadcrumb, Layout, Menu, Input, Modal, Tree } from 'antd';
import React, { useState } from 'react';
import styles from './index.less'
import TreeRender from '@/components/TreeRender';
import React, { useEffect, useMemo, useRef, useState } from "react";
import { Dropdown, Menu, Button, Tooltip } from "antd";
import { ProTable } from "@ant-design/pro-table";
import { doFetch } from "@/utils/doFetch";
import Details from "@/components/Details";
import AutoTable from "@/components/AutoTable";
const { Header, Content, Footer, Sider } = Layout,
{ Search } = Input
const Storesearch = (props) => {
const [collapsed, setCollapsed] = useState(false);
const [search, setsearch] = useState();
const [select, setselect] = useState({});
const columns = [
{
"title": "物料编码",
"dataIndex": "materieCode",
"key": "materieCode"
},
{
"title": "物料名称",
"dataIndex": "materieName",
"key": "materieName"
},
{
"title": "物料类型",
"dataIndex": "materieTypeName",
"key": "materieTypeName"
},
{
"title": "库存数量",
"dataIndex": "stockNum",
"key": "stockNum",
"search": false
},
{
"title": "可用库存",
"dataIndex": "usableNum",
"key": "usableNum",
"search": false
},
{
"title": "库存单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"search": false
}, {
"title": "库存信息",
"valueType": "option",
"width": 88,
"search": false,
"render": (dom, record) => {
return <a
onClick={() => {
Modal.info({
title: "库存信息",
width: 1200,
okText: "知道了",
content: (
<div>
<AutoTable
withCard={false}
columns={[
{
"title": "仓库编号",
"dataIndex": "storeCode",
"key": "storeCode",
},
{
"title": "仓库名称",
"dataIndex": "storeName",
"key": "storeName"
},
{
"title": "库位名称",
"dataIndex": "storePositionName",
"key": "storePositionName"
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": "供应商编号",
"dataIndex": "supplierNo",
"key": "supplierNo"
},
{
"title": "供应商名称",
"dataIndex": "supplierName",
"key": "supplierName"
},
{
"title": "库存数量",
"dataIndex": "stroeNum",
"key": "stroeNum",
search:false
},
]}
path="/ngic-workmanship/wmsMaterieStore/queryPositionList"
extraparams={{
level: select.level ?? 0,
key: select.selectedKeys ?? "",
materieId: record.materieId
}}
>
</AutoTable>
</div>
)
})
}}
>
查看
</a>
}
}
]
const tableprops = {
...props,
pageextra: "none",
columns,
path: "/ngic-workmanship/wmsMaterieStock/queryStockList",
extraparams: {
level: select.level ?? 0,
key: select.selectedKeys ?? ""
}
}
return (
<Layout
style={{
height: '100%',
}}
>
<Sider theme='light' collapsed={collapsed} width={260}>
<div style={{ padding: 12, justifyContent: "space-between", paddingBottom: collapsed ? 12 : 0, alignItems: "center", display: "flex", flexDirection: !collapsed ? "row" : "column" }} >
<p className={styles.title} style={{ marginBottom: !collapsed ? 0 : 12 }}>
<HomeOutlined />
{!collapsed ? <span style={{ marginLeft: 6 }}>仓库库位</span> : ""}
</p>
{collapsed ? (
<MenuUnfoldOutlined
style={{ cursor: "pointer", fontSize: 20 }}
onClick={() => {
setCollapsed(!collapsed)
}}
/>
) : (
<MenuFoldOutlined
style={{ cursor: "pointer", fontSize: 20 }}
onClick={() => {
setCollapsed(!collapsed)
}}
/>
)}
</div>
import getPrem from "@/utils/getPrem";
function Instore(props) {
const [drawer, setdrawer] = useState({
visible: false,
dataSource: null,
totalCard: null,
});
const extraAction = function (text, record, _, action) {
return [
getPrem("details", action, "查看", () => {
doFetch({
url: "/ngic-workmanship/wmsMaterieInventory/queryById",
params: { id: record.id },
}).then((res) => {
if (res.code === "0000") {
console.log(res);
setdrawer((v) => ({
...v,
dataSource: res?.data?.data,
totalCard: [
{
!collapsed ?
<div style={{ padding: collapsed ? 0 : 12 }}>
<TreeRender
url="/ngic-auth/sysStore/queryTreeList"
params={{}}
noaction={true}
maxWidth={140}
onselected={(selectedKeys, e, alldata) => {
setselect(selectedKeys[0] ? {
title: e.node.title,
selectedKeys: selectedKeys[0],
level: alldata.filter(it => it.key == selectedKeys[0])[0]?.level,
key: e.node.key
} : {
})
}}
>
</TreeRender>
</div> :
<div onDoubleClick={() => {
setCollapsed(false)
}} style={{ writingMode: "vertical-lr", width: "100%", textAlign: "center", height: "80vh", display: "flex", justifyContent: "center", alignItems: "center", userSelect: "none" }}>
双击此处展开
</div>
}
</Sider>
<Layout className={styles.sitelayout}>
<Content
style={{
margin: '0 0 6px 6px',
display: "flex",
flexDirection: "column"
}}
>
<Breadcrumb
style={{
margin: '8px 6px',
}}
>
<Breadcrumb.Item>物料库存</Breadcrumb.Item>
{
select.key != "00000000" && <Breadcrumb.Item style={{ maxWidth: 600 }}>{select.title}</Breadcrumb.Item>
}
</Breadcrumb>
<div
className={styles.sitelayoutbackground}
style={{
padding: 6,
height: "100%",
flex: 1
}}
>
<AutoTable
{
...tableprops
}
withCard={false}
></AutoTable>
</div>
</Content>
</Layout>
</Layout>
);
};
export default Storesearch;
\ No newline at end of file
cardTitle: "库存信息",
itemData: [
{
title: "仓库编号",
key: "storeCode",
},
{
title: "仓库名称",
key: "storeName",
},
{
title: "库位名称",
key: "storePositionName",
},
{
title: "批次号",
key: "materieControlNo",
},
{
title: "供应商名称",
key: "supplierName",
},
{
title: "库存数量",
key: "stockNum",
},
{
title: "上架时间",
key: "upload_time",
},
],
},
],
visible: true,
}));
}
});
}),
];
};
const columns = [
{
title: "仓库名称",
dataIndex: "storeName",
key: "storeName",
search: false,
},
{
title: "库位名称",
dataIndex: "stockNum",
key: "stockNum",
search: false,
},
{
title: "物料编码",
dataIndex: "materieId",
key: "materieId",
search: false,
},
{
title: "物料名称",
dataIndex: "materieName",
key: "materieName",
},
{
title: "规格型号",
dataIndex: "specificationModel",
key: "specificationModel",
search: false,
},
{
title: "批次号",
dataIndex: "materieControlNo",
key: "materieControlNo",
search: false,
},
{
title: "库存数量",
dataIndex: "stockNum",
key: "stockNum",
search: false,
},
{
title: "可用数量",
dataIndex: "usableNum",
key: "usableNum",
search: false,
},
{
title: "库存单位",
dataIndex: "productionUnit",
key: "productionUnit",
search: false,
},
{
title: "片厚",
dataIndex: "SheetThickness",
key: "SheetThickness",
search: false,
},
{
title: "铁损",
dataIndex: "ironLoss",
search: false,
key: "ironLoss",
},
{
title: "宽度",
dataIndex: "width",
key: "width",
search: false,
},
{
title: "米数",
dataIndex: "length",
key: "length",
search: false,
},
{
title: "库存信息",
dataIndex: "option",
key: "option",
valueType: "option",
width: 100,
render: (text, row, _, action) => extraAction(text, row, _, action),
},
];
return (
<div>
<AutoTable
{...props}
pageextra="none"
path="/ngic-workmanship/wmsMaterieInventory/queryList"
columns={columns}
></AutoTable>
<Details
title="库存信息"
onClose={() => {
setdrawer((v) => ({
...v,
visible: false,
}));
}}
footer={false}
destroyOnClose={true}
width={"100%"}
{...drawer}
></Details>
</div>
);
}
export default Instore;
import {
MenuUnfoldOutlined,
MenuFoldOutlined,
HomeOutlined
} from '@ant-design/icons';
import { Breadcrumb, Layout, Menu, Input, Modal, Tree } from 'antd';
import React, { useState } from 'react';
import styles from './index.less'
import TreeRender from '@/components/TreeRender';
import AutoTable from "@/components/AutoTable";
const { Header, Content, Footer, Sider } = Layout,
{ Search } = Input
const Storesearch = (props) => {
const [collapsed, setCollapsed] = useState(false);
const [search, setsearch] = useState();
const [select, setselect] = useState({});
const columns = [
{
"title": "物料编码",
"dataIndex": "materieCode",
"key": "materieCode"
},
{
"title": "物料名称",
"dataIndex": "materieName",
"key": "materieName"
},
{
"title": "物料类型",
"dataIndex": "materieTypeName",
"key": "materieTypeName"
},
{
"title": "库存数量",
"dataIndex": "stockNum",
"key": "stockNum",
"search": false
},
{
"title": "可用库存",
"dataIndex": "usableNum",
"key": "usableNum",
"search": false
},
{
"title": "库存单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"search": false
}, {
"title": "库存信息",
"valueType": "option",
"width": 88,
"search": false,
"render": (dom, record) => {
return <a
onClick={() => {
Modal.info({
title: "库存信息",
width: 1200,
okText: "知道了",
content: (
<div>
<AutoTable
withCard={false}
columns={[
{
"title": "仓库编号",
"dataIndex": "storeCode",
"key": "storeCode",
},
{
"title": "仓库名称",
"dataIndex": "storeName",
"key": "storeName"
},
{
"title": "库位名称",
"dataIndex": "storePositionName",
"key": "storePositionName"
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": "供应商编号",
"dataIndex": "supplierNo",
"key": "supplierNo"
},
{
"title": "供应商名称",
"dataIndex": "supplierName",
"key": "supplierName"
},
{
"title": "库存数量",
"dataIndex": "stroeNum",
"key": "stroeNum",
search:false
},
]}
path="/ngic-workmanship/wmsMaterieStore/queryPositionList"
extraparams={{
level: select.level ?? 0,
key: select.selectedKeys ?? "",
materieId: record.materieId
}}
>
</AutoTable>
</div>
)
})
}}
>
查看
</a>
}
}
]
const tableprops = {
...props,
pageextra: "none",
columns,
path: "/ngic-workmanship/wmsMaterieStock/queryStockList",
extraparams: {
level: select.level ?? 0,
key: select.selectedKeys ?? ""
}
}
return (
<Layout
style={{
height: '100%',
}}
>
<Sider theme='light' collapsed={collapsed} width={260}>
<div style={{ padding: 12, justifyContent: "space-between", paddingBottom: collapsed ? 12 : 0, alignItems: "center", display: "flex", flexDirection: !collapsed ? "row" : "column" }} >
<p className={styles.title} style={{ marginBottom: !collapsed ? 0 : 12 }}>
<HomeOutlined />
{!collapsed ? <span style={{ marginLeft: 6 }}>仓库库位</span> : ""}
</p>
{collapsed ? (
<MenuUnfoldOutlined
style={{ cursor: "pointer", fontSize: 20 }}
onClick={() => {
setCollapsed(!collapsed)
}}
/>
) : (
<MenuFoldOutlined
style={{ cursor: "pointer", fontSize: 20 }}
onClick={() => {
setCollapsed(!collapsed)
}}
/>
)}
</div>
{
!collapsed ?
<div style={{ padding: collapsed ? 0 : 12 }}>
<TreeRender
url="/ngic-auth/sysStore/queryTreeList"
params={{}}
noaction={true}
maxWidth={140}
onselected={(selectedKeys, e, alldata) => {
setselect(selectedKeys[0] ? {
title: e.node.title,
selectedKeys: selectedKeys[0],
level: alldata.filter(it => it.key == selectedKeys[0])[0]?.level,
key: e.node.key
} : {
})
}}
>
</TreeRender>
</div> :
<div onDoubleClick={() => {
setCollapsed(false)
}} style={{ writingMode: "vertical-lr", width: "100%", textAlign: "center", height: "80vh", display: "flex", justifyContent: "center", alignItems: "center", userSelect: "none" }}>
双击此处展开
</div>
}
</Sider>
<Layout className={styles.sitelayout}>
<Content
style={{
margin: '0 0 6px 6px',
display: "flex",
flexDirection: "column"
}}
>
<Breadcrumb
style={{
margin: '8px 6px',
}}
>
<Breadcrumb.Item>物料库存</Breadcrumb.Item>
{
select.key != "00000000" && <Breadcrumb.Item style={{ maxWidth: 600 }}>{select.title}</Breadcrumb.Item>
}
</Breadcrumb>
<div
className={styles.sitelayoutbackground}
style={{
padding: 6,
height: "100%",
flex: 1
}}
>
<AutoTable
{
...tableprops
}
withCard={false}
></AutoTable>
</div>
</Content>
</Layout>
</Layout>
);
};
export default Storesearch;
\ No newline at end of file
......@@ -4,14 +4,15 @@ import { ProTable } from "@ant-design/pro-table";
import { doFetch } from "@/utils/doFetch";
import AutoTable from "@/components/AutoTable";
function Instore(props) {
const columns = [
{
title: "操作时间",
dataIndex: "operateTime",
key: "operateTimeList",
width: 300,
valueType: "dateRange",
search: false,
render: (_, row) => {
return <div>{row.operateTime}</div>;
},
......@@ -25,6 +26,8 @@ function Instore(props) {
title: "物料编码",
dataIndex: "materieCode",
key: "materieCode",
width: 300,
search: false,
},
{
title: "物料名称",
......@@ -32,7 +35,7 @@ function Instore(props) {
key: "materieName",
},
{
title: "批次号/SN号",
title: "批次号",
dataIndex: "materieControlNo",
key: "materieControlNo",
},
......@@ -41,6 +44,7 @@ function Instore(props) {
dataIndex: "currentNum",
key: "currentNum",
search: false,
width: 200,
},
{
title: "操作数量",
......@@ -53,41 +57,34 @@ function Instore(props) {
dataIndex: "productionUnitName",
key: "productionUnitName",
search: false,
width: 280,
},
{
title: "操作类型",
dataIndex: "stockDetailTypeName",
key: "stockDetailTypeName",
},
{
title: "仓库",
title: "仓库名称",
dataIndex: "storeName",
key: "storeId",
fieldProps: {
allowClear: true,
showSearch: true,
},
options: {
database: () =>
doFetch({
url: "/ngic-auth/sysStore/selectionBox",
params: { factoryIdList: [] },
}),
params: {},
},
valueType: "select",
key: "storeName",
search: false,
},
{
title: "库位",
dataIndex: "storePositionName",
key: "storePositionName",
search: false,
},
{
title: "操作类型",
dataIndex: "stockDetailTypeName",
key: "stockDetailTypeName",
width: 280,
},
{
title: "相关单号",
dataIndex: "relatedNo",
key: "relatedNo",
search: false,
},
]
];
return (
<div>
......
......@@ -70,7 +70,7 @@ export default {
type: "select",
name: ["status"],
title: "库位状态",
required: true,
required: false,
options: [
{
label: "启用",
......
......@@ -272,6 +272,7 @@ const Materiel = (props) => {
title: "状态",
dataIndex: "status",
key: "status",
search:false,
render: (_, row) => <span>{row?.status == "1" ? "启用" : "禁用"}</span>,
},
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment