Commit dc8eebf1 authored by wuhao's avatar wuhao 🎯

jkuier

parent a5f936be
......@@ -78,6 +78,21 @@ export default [
},
],
},
{
path: "/historystore",
name: "出入库明细",
icon: "search",
routes: [
{
path: "/historystore/histore",
name: "出入库明细",
component: "./historystore/Histore",
},
{
component: "./404",
},
],
},
{
path: "/system",
name: "系统基础管理",
......
import React, { useState, useMemo, useRef, createContext } from 'react';
import { Tree, Input, Popconfirm, Tooltip, Divider, Modal, message } from 'antd';
import { MinusSquareOutlined, FormOutlined, PlusSquareOutlined } from '@ant-design/icons';
import { MinusSquareOutlined, FormOutlined, PlusSquareOutlined, ArrowDownOutlined, ArrowRightOutlined } from '@ant-design/icons';
import getPrem from '@/utils/getPrem';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
......@@ -12,17 +12,34 @@ let { Search } = Input,
function TreeRender({ url, deleteurl, saveurl, onselected }) {
function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, maxWidth }) {
const [search, setsearch] = useState("");
const [savetitle, setsavetitle] = useState(null);
const [modal, setModal] = useState({
visible: false
});
const [expandall, setexpandall] = useState(false);
const [expandedKeys, onExpand] = useState();
const { data, loading, refresh } = useRequest(() => {
return doFetch({ url, params: { title: search } })
return doFetch({ url, params: params ?? { title: search } })
}, {
refreshDeps: [search]
});
const allkeys = useMemo(() => {
let res = [];
const fn = (source) => {
source.map(el => {
res.push(el)
el.children && el.children.length > 0 ? fn(el.children) : "" // 子级递归
})
}
fn(data?.data?.dataList ?? []);
return res.filter(it => it.children).map(it => it.key)
}, [data])
const ref1 = useRef(), ref2 = useRef();
const treeData = useMemo(() => {
let res = data?.data?.dataList ?? [];
......@@ -35,14 +52,15 @@ function TreeRender({ url, deleteurl, saveurl, onselected }) {
]
}, [data]);
const loop = data => data.map(item => {
const index = item.title.indexOf(search);
const beforeStr = item.title.substr(0, index);
const afterStr = item.title.substr(index + search.length);
const title =
let title =
index > -1 ? (
<Tooltip title={item.title} placement="bottom">
<span style={{ display: "inline-block", maxWidth: 88, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<span style={{ display: "inline-block", maxWidth: maxWidth ?? 88, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
{beforeStr}
<span style={{ color: '#f50' }}>{search}</span>
{afterStr}
......@@ -50,88 +68,117 @@ function TreeRender({ url, deleteurl, saveurl, onselected }) {
</Tooltip>
) : (
<Tooltip title={item.title} placement="bottom">
<span style={{ display: "inline-block", maxWidth: 88, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>{item.title}</span>
<span style={{ display: "inline-block", maxWidth: maxWidth ?? 88, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>{item.title}</span>
</Tooltip>
);
const actiontitle = (
<div style={{ display: "flex", alignItems: "center" }}>
<div style={{ display: "flex", alignItems: "center", justifyContent: "space-between" }}>
{title}
{
item.key != "0" && <Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
}
{
item.key != "0" && <Tooltip title="编辑" onClick={(e) => {
e.stopPropagation();
setsavetitle(null)
if (getPrem("enElectricityMeterType_save", "ifs")) {
setModal({
visible: true,
closable: true,
title: "修改节点名称",
okText: "修改",
cancelText: "取消",
placeholder: item.title,
key: item.key
})
}
}}>
<FormOutlined style={{ color: "#1890ff" }} />
</Tooltip>
}
<Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
<Tooltip title="新增">
<PlusSquareOutlined
disabled={!getPrem("enElectricityMeterType_save", "ifs")}
onClick={(e) => {
<div>
{
item.key != "0" && <Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
}
{
item.key != "0" && <Tooltip title="编辑" onClick={(e) => {
e.stopPropagation();
setsavetitle(null)
if (getPrem("enElectricityMeterType_save", "ifs")) {
setModal({
visible: true,
closable: true,
title: "新增子结构",
okText: "新增",
title: "修改节点名称",
okText: "修改",
cancelText: "取消",
placeholder: item.title,
key: item.key
})
}
}}
style={{ color: `${getPrem("enElectricityMeterType_save", "ifs") ? "green" : ""}` }}
/></Tooltip>
{
(!item.children || item.children.length == 0) &&
}}>
<FormOutlined style={{ color: "#1890ff" }} />
</Tooltip>
}
<Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
}
{
(!item.children || item.children.length == 0) && (item.key != "0") &&
<Popconfirm
placement='bottom'
title="是否删除该节点?"
okText="删除"
cancelText="取消"
onConfirm={() => {
doFetch({ url: deleteurl, params: { id: item.key } }).then(res => {
if (res.code == '0000') {
message.success("操作成功")
refresh();
<Tooltip title="新增">
<PlusSquareOutlined
disabled={!getPrem("enElectricityMeterType_save", "ifs")}
onClick={(e) => {
e.stopPropagation();
setsavetitle(null)
if (getPrem("enElectricityMeterType_save", "ifs")) {
setModal({
visible: true,
closable: true,
title: "新增子结构",
okText: "新增",
cancelText: "取消",
placeholder: item.title,
key: item.key
})
}
})
}}
disabled={!getPrem("enElectricityMeterType_deleteById", "ifs")}
>
<Tooltip title="删除">
<MinusSquareOutlined onClick={(e) => { e.stopPropagation() }} style={{ color: "red" }} />
}}
style={{ color: `${getPrem("enElectricityMeterType_save", "ifs") ? "green" : ""}` }}
/></Tooltip>
{
(!item.children || item.children.length == 0) &&
<Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
}
{
(!item.children || item.children.length == 0) && (item.key != "0") &&
<Popconfirm
placement='bottom'
title="是否删除该节点?"
okText="删除"
cancelText="取消"
onConfirm={() => {
doFetch({ url: deleteurl, params: { id: item.key } }).then(res => {
if (res.code == '0000') {
message.success("操作成功")
refresh();
}
})
}}
disabled={!getPrem("enElectricityMeterType_deleteById", "ifs")}
>
<Tooltip title="删除">
<MinusSquareOutlined onClick={(e) => { e.stopPropagation() }} style={{ color: "red" }} />
</Tooltip>
</Popconfirm>
}
{
item.key === "" && <Divider type='vertical' style={{ margin: "0 6px" }}></Divider>
}
{
item.key === "" && <Tooltip title={expandall ? "收起" : "展开"} onClick={(e) => {
e.stopPropagation();
setexpandall(!expandall)
onExpand(expandall ? [] : allkeys)
}}>
{expandall ? <ArrowDownOutlined /> : <ArrowRightOutlined />}
</Tooltip>
</Popconfirm>
}
}
</div>
</div>
)
if (item.key === "") {
title = (
<div style={{ display: "flex", alignItems: "center", justifyContent: "space-between", flex: 1 }}>
{title}
<Tooltip title={expandall ? "收起" : "展开"} onClick={(e) => {
e.stopPropagation();
setexpandall(!expandall)
onExpand(expandall ? [] : allkeys)
}}>
{expandall ? <ArrowDownOutlined /> : <ArrowRightOutlined />}
</Tooltip>
</div>
)
}
// if (item.children) {
// return (
// <TreeNode key={item.key} title={actiontitle}>
......@@ -141,7 +188,7 @@ function TreeRender({ url, deleteurl, saveurl, onselected }) {
// }
// return <TreeNode key={item.key} title={title} />;
return (
<TreeNode key={item.key} title={actiontitle}>
<TreeNode key={item.key} title={noaction ? title : actiontitle}>
{item.children && loop(item.children)}
</TreeNode>
);
......@@ -234,9 +281,15 @@ function TreeRender({ url, deleteurl, saveurl, onselected }) {
<Tree
onSelect={(selectedKeys, e) => {
onselected?.(selectedKeys)
onselected?.(selectedKeys, e)
}}
autoExpandParent={true}
defaultExpandAll={true}
expandedKeys={expandedKeys}
onExpand={(expandedKeys) => {
console.log(expandedKeys);
onExpand(expandedKeys)
}}
>
{loop(treeData ? treeData : [])}
</Tree>
......
......@@ -321,4 +321,17 @@ table {
}
.ant-select-selector{
overflow: hidden !important;
}
.ant-breadcrumb{
span{
>span{
max-width: 600px !important;
}
}
}
.ant-tree .ant-tree-treenode{
width: 100%;
>span:last-child{
flex:1
}
}
\ No newline at end of file
......@@ -6,16 +6,63 @@ import {
import { Breadcrumb, Layout, Menu, Input, Tooltip, 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 = () => {
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
}
]
const tableprops = {
...props,
pageextra: "none",
columns,
path: "/ngic-workmanship/wmsMaterieStock/queryStockList"
}
return (
<Layout
style={{
......@@ -45,25 +92,15 @@ const Storesearch = () => {
/>
)}
</div>
{
!collapsed && <div style={{ padding: 12, paddingBottom: collapsed ? 12 : 0 }}>
<Search value={search} onChange={e => setsearch(e.target.value)} style={{ marginRight: 10 }}></Search>
</div>
}
{
!collapsed ?
<div style={{ padding: collapsed ? 0 : 12 }}>
<Tree
treeData={[
{ title: '全部仓库', key: '0' }, // 菜单项务必填写 key
{ title: '菜单项二', key: 'item-2' },
{
title: '子菜单',
key: 'submenu',
children: [{ title: '子菜单项', key: 'submenu-item-1' }],
},
]}
onSelect={(selectedKeys, e) => {
<TreeRender
url="/ngic-auth/sysStore/queryTreeList"
params={{}}
noaction={true}
maxWidth={140}
onselected={(selectedKeys, e) => {
setselect(selectedKeys[0] ? {
title: e.node.title,
selectedKeys: selectedKeys[0]
......@@ -71,7 +108,9 @@ const Storesearch = () => {
})
}}
/>
>
</TreeRender>
</div> :
<div onDoubleClick={() => {
setCollapsed(false)
......@@ -97,7 +136,7 @@ const Storesearch = () => {
}}
>
<Breadcrumb.Item>物料库存</Breadcrumb.Item>
<Breadcrumb.Item>{select.title}</Breadcrumb.Item>
<Breadcrumb.Item style={{ maxWidth: 600 }}>{select.title}</Breadcrumb.Item>
</Breadcrumb>
<div
className={styles.sitelayoutbackground}
......@@ -107,7 +146,11 @@ const Storesearch = () => {
flex: 1
}}
>
Bill is a cat.
<AutoTable
{
...tableprops
}
></AutoTable>
</div>
</Content>
</Layout>
......
import { factorySelect, shopSelectByFactory } from "@/services/system";
import { doFetch } from "@/utils/doFetch";
import { Table } from "antd";
const one = {
"materieInstoreNo": {
"value": null,
"type": "input",
"title": "入库单号",
"name": [
"materieInstoreNo"
],
"required": false
},
"storeId": {
"value": null,
"type": "select",
"title": "仓库",
"name": [
"storeId"
],
"required": true,
"options": {
database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] } }),
params: {}
},
},
"supplierId": {
"value": null,
"type": "select",
"title": "供应商",
"name": [
"supplierId"
],
"required": true,
"options": {
database: () => doFetch({ url: "/ngic-auth/sysSupplier/query/selection", params: {} }),
params: {}
},
},
"businessNo": {
"value": null,
"type": "input",
"title": "相关单号",
"name": [
"businessNo"
],
"required": false
},
"remark": {
"value": null,
"type": "textarea",
"title": "备注",
"name": [
"remark"
],
"required": false,
"col": {
"span": 24
}
},
"materialList": {
value: [],
title: "物料信息",
type: "table",
col: { span: 24 },
name: ["materialList"],
required: true,
linkconfig: {
urlchangeval: {//根据url接口 改变某个value
database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }),
params: { "materieId": "linked" },
effectresult: {
"productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值
"productionUnitName": "productionUnitName"
}
}
},
columns: [
{
"title": <span>物料编码-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "materieId",
"key": "materieId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": <span>入库数量 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "instroeNum",
"key": "instroeNum",
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"readonly": 'productionUnitName',
"width": 60
},
{
title: "操作",
valueType: "option",
width: 70,
render: (text, record, _, action) => [
<a key="delete" onClick={() => { }}>
删除
</a>,
],
},
],
rowKey: "id",
}
},
two = {
"materieInstoreNo": {
"value": null,
"type": "input",
"title": "入库单号",
"name": [
"materieInstoreNo"
],
"required": false
},
"storeId": {
"value": null,
"type": "select",
"title": "仓库",
"name": [
"storeId"
],
"required": true,
"options": {
database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] } }),
params: {}
},
},
"supplierId": {
"value": "2022070124566476657",
"type": "select",
"title": "供应商",
"name": [
"supplierId"
],
"required": true,
"disabled": true,
"options": [
{
value: "2022070124566476657",
label: "南高(默认)"
}
],
},
"businessNo": {
"value": null,
"type": "input",
"title": "相关单号",
"name": [
"businessNo"
],
"required": false
},
"remark": {
"value": null,
"type": "textarea",
"title": "备注",
"name": [
"remark"
],
"required": false,
"col": {
"span": 24
}
},
"materialList": {
value: [],
title: "物料信息",
type: "table",
col: { span: 24 },
name: ["materialList"],
required: true,
linkconfig: {
urlchangeval: {//根据url接口 改变某个value
database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }),
params: { "materieId": "linked" },
effectresult: {
"productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值
"productionUnitName": "productionUnitName"
}
}
},
columns: [
{
"title": <span>物料编码-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "materieId",
"key": "materieId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": <span>入库数量 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "instroeNum",
"key": "instroeNum",
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"readonly": 'productionUnitName',
"width": 60
},
{
title: "操作",
valueType: "option",
width: 70,
render: (text, record, _, action) => [
<a key="delete" onClick={() => { }}>
删除
</a>,
],
},
],
rowKey: "id",
}
},
three = {
"materieInstoreNo": {
"value": null,
"type": "input",
"title": "入库单号",
"name": [
"materieInstoreNo"
],
"required": false
},
"storeId": {
"value": null,
"type": "select",
"title": "仓库",
"name": [
"storeId"
],
"required": true,
"options": {
database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] } }),
params: {}
},
},
"businessNo": {
"value": null,
"type": "input",
"title": "相关单号",
"name": [
"businessNo"
],
"required": false
},
"remark": {
"value": null,
"type": "textarea",
"title": "备注",
"name": [
"remark"
],
"required": false,
"col": {
"span": 24
}
},
"materialList": {
value: [],
title: "物料信息",
type: "table",
col: { span: 24 },
name: ["materialList"],
required: true,
linkconfig: {
urlchangeval: {//根据url接口 改变某个value
database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }),
params: { "materieId": "linked" },
effectresult: {
"productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值
"productionUnitName": "productionUnitName"
}
}
},
columns: [
{
"title": <span>物料编码-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "materieId",
"key": "materieId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": <span>供应商编号-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "supplierId",
"key": "supplierId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": <span>入库数量 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "instroeNum",
"key": "instroeNum",
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"readonly": 'productionUnitName',
"width": 60
},
{
title: "操作",
valueType: "option",
width: 70,
render: (text, record, _, action) => [
<a key="delete" onClick={() => { }}>
删除
</a>,
],
},
],
rowKey: "id",
}
},
four = {
"materieInstoreNo": {
"value": null,
"type": "input",
"title": "入库单号",
"name": [
"materieInstoreNo"
],
"required": false
},
"storeId": {
"value": null,
"type": "select",
"title": "仓库",
"name": [
"storeId"
],
"required": true,
"options": {
database: () => doFetch({ url: "/ngic-auth/sysStore/selectionBox", params: { factoryIdList: [] } }),
params: {}
},
},
"businessNo": {
"value": null,
"type": "input",
"title": "相关单号",
"name": [
"businessNo"
],
"required": false
},
"remark": {
"value": null,
"type": "textarea",
"title": "备注",
"name": [
"remark"
],
"required": false,
"col": {
"span": 24
}
},
"materialList": {
value: [],
title: "物料信息",
type: "table",
col: { span: 24 },
name: ["materialList"],
required: true,
linkconfig: {
urlchangeval: {//根据url接口 改变某个value
database: (params) => doFetch({ url: "/ngic-workmanship/pmMaterie/queryUnitByMaterieId", params }),
params: { "materieId": "linked" },
effectresult: {
"productionUnit": "productionUnit",//key 为列表更新值 value为response 返回值
"productionUnitName": "productionUnitName"
}
}
},
columns: [
{
"title": <span>物料编码-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "materieId",
"key": "materieId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-workmanship/pmMaterie/query/selectbox", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": <span>供应商编号-名称 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "supplierId",
"key": "supplierId",
"valueType": "select",
"width": 300,
"request": async () => {
let res = await doFetch({ url: "/ngic-auth/sysSupplier/query/selection/withNo", params: {} })
return res?.data?.dataList
},
"fieldProps": {
allowClear: false,
showSearch: true
},
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": <span>入库数量 <b style={{ color: "red" }}>*</b></span>,
"dataIndex": "instroeNum",
"key": "instroeNum",
"formItemProps": () => {
return {
rules: [{ required: true, message: '此项为必填项' }],
};
},
},
{
"title": "单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"readonly": 'productionUnitName',
"width": 60
},
{
title: "操作",
valueType: "option",
width: 70,
render: (text, record, _, action) => [
<a key="delete" onClick={() => { }}>
删除
</a>,
],
},
],
rowKey: "id",
}
},
detail = {
totalCard: [
//物料详情
{
cardTitle: "基本信息",
itemData: [
{
title: "入库单号",
key: "materieInstoreNo",
},
{
title: "入库类型",
key: "instoreTypeName",
},
{
title: "入库仓库",
key: "storeName",
},
{
title: "相关单号",
key: "businessNo",
},
{
title: "备注",
key: "remark",
},
{
title: "创建人",
key: "createUserName",
},
{
title: "创建时间",
key: "createTime",
},
],
},
{
cardTitle: "物料信息列表",
itemData: [
{
key: "materialList",
type: "table",
col: { span: 24 },
columns: [
{
title: "物料名称",
dataIndex: "materieName",
key: "materieName",
search: false,
},
{
title: "物料编码",
dataIndex: "materieCode",
key: "materieCode",
search: false,
},
{
title: "入库数量",
dataIndex: "instroeNum",
key: "instroeNum",
search: false,
},
{
title: "单位",
dataIndex: "productionUnitName",
key: "productionUnitName",
search: false,
},
],
expandable: {
expandedRowRender: record => <Table
style={{ marginLeft: 48 }}
columns={[
{
title: "库位名称",
dataIndex: "storeName",
key: "storeName",
search: false,
},
{
title: "上架数量",
dataIndex: "instroeNum",
key: "instroeNum",
search: false,
}
]}
dataSource={record.uploadList}
pagination={false}
/>,
}
},
],
},
]
};
export default {
one,
two,
three,
four,
detail
};
import React, { useEffect, useMemo, useRef, useState } from "react";
import {
Dropdown,
Menu,
Button,
message,
} from "antd";
import AutoTable from "@/components/AutoTable";
import defaultFields from "./fields";
import { doFetch } from "@/utils/doFetch";
import DrawInitForm from "@/components/DrawInitForm";
import getPrem from '@/utils/getPrem';//权限判断fn
function Instore(props) {
const actionRef = useRef(),
ChildRef = null;
const columns = [
{
"title": "操作时间",
"dataIndex": "operateTime",
"key": "operateTimeList",
"valueType": "dateRange",
"render": (_, row) => {return (<div>{row.operateTime}</div>)},
},
{
"title": "操作人",
"dataIndex": "operateUserName",
"key": "operateUserName"
},
{
"title": "物料编码",
"dataIndex": "materieCode",
"key": "materieCode"
},
{
"title": "物料名称",
"dataIndex": "materieName",
"key": "materieName"
},
{
"title": "批次号/SN号",
"dataIndex": "materieControlNo",
"key": "materieControlNo"
},
{
"title": "当时库存数量",
"dataIndex": "currentNum",
"key": "currentNum",
"search": false
},
{
"title": "操作数量",
"dataIndex": "operateNum",
"key": "operateNum",
"search": false
},
{
"title": "库存单位",
"dataIndex": "productionUnitName",
"key": "productionUnitName",
"search": false
},
{
"title": "操作类型",
"dataIndex": "stockTypeName",
"key": "stockTypeName",
},
{
"title": "仓库名称",
"dataIndex": "storeName",
"key": "storeName"
},
{
"title": "库位",
"dataIndex": "storePositionName",
"key": "storePositionName"
},
{
"title": "相关单号",
"dataIndex": "relatedNo",
"key": "relatedNo"
}
]
const tableprops = {
...props,
pageextra: "none",
columns,
path: "/ngic-workmanship/wmsMaterieStockRecord/queryList"
}
return (
<div>
<AutoTable
{
...tableprops
}
actionRef={actionRef}
onRef={(node) => (ChildRef = node)}
></AutoTable>
</div>
);
}
export default Instore;
\ No newline at end of file
.sitelayout {
min-height: calc(100vh - 98px) !important;
.sitelayoutbackground {
background: #fff;
}
}
.title{
margin: 0px;
}
\ No newline at end of file
......@@ -19,10 +19,10 @@ const keytoval = {
"four": 4
}, items = [
{
key: 'one',
key: 'one',
label: (
<a>
采购出库
生产领料出库
</a>
),
},
......@@ -30,7 +30,7 @@ const keytoval = {
key: 'two',
label: (
<a>
生产出库
销售出库
</a>
),
},
......@@ -38,7 +38,7 @@ const keytoval = {
key: 'three',
label: (
<a>
退料出库
报废出库
</a>
),
},
......@@ -97,7 +97,7 @@ function Instore(props) {
val: "detail",
title: `查看详情`,
...defaultFields?.detail,
totalPath: "/ngic-workmanship/wmsmaterieOutstore/getInStoreInfoById",
totalPath: "/ngic-workmanship/wmsMaterieOutstore/getOutStoreInfoById",
totalParams: { id: record.id }
}))
}}
......@@ -241,7 +241,7 @@ function Instore(props) {
val: "detail",
title: `查看详情`,
...defaultFields?.detail,
totalPath: "/ngic-workmanship/wmsmaterieOutstoreHis/getInStoreInfoById",
totalPath: "/ngic-workmanship/wmsMaterieOutstoreHis/getOutStoreInfoById",
totalParams: { id: record.id }
}))
}}
......@@ -255,15 +255,15 @@ function Instore(props) {
"valueType": "select",
"options": [
{
"label": "采购出库",
"label": "生产领料出库",
"value": "1"
},
{
"label": "生产出库",
"label": "销售出库",
"value": "2"
},
{
"label": "退料出库",
"label": "报废出库",
"value": "3"
},
{
......@@ -404,6 +404,10 @@ function Instore(props) {
{...drawprops}
submitData={async (value) => {
if (drawprops.val == "add") {
value.materialList = value.materialList?.map(it=>{
delete it.usableNum;
return it
})//usableNum
let res = await doFetch({ url: "/ngic-workmanship/wmsMaterieOutstore/saveOutStore", params: { ...value, outstoreType: drawprops.outstoreType } })
if (res.code == "0000") {
reload();
......
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