Commit c03fdab0 authored by wuhao's avatar wuhao 🎯

asder

parent f548e09d
...@@ -13,7 +13,7 @@ export default { ...@@ -13,7 +13,7 @@ export default {
dev: { dev: {
[defaultSetting.proxypath]: { [defaultSetting.proxypath]: {
// 要代理的地址 // 要代理的地址
target: 'http://192.168.40.64:28001', //jf哥 target: 'http://192.168.40.64:28000', //jf哥
// target: 'http://192.168.40.203:8000', //dj哥 // target: 'http://192.168.40.203:8000', //dj哥
changeOrigin: true, changeOrigin: true,
}, },
......
...@@ -12,6 +12,8 @@ function isString(obj) { ...@@ -12,6 +12,8 @@ function isString(obj) {
} }
export default (props) => { export default (props) => {
let { childposition } = props;
childposition = childposition ?? 'left';
const actionbtn = { const actionbtn = {
add: <PremButton {...props?.addconfig}>新增</PremButton>, add: <PremButton {...props?.addconfig}>新增</PremButton>,
export: ( export: (
...@@ -58,14 +60,20 @@ export default (props) => { ...@@ -58,14 +60,20 @@ export default (props) => {
children: ( children: (
<> <>
<div style={{ display: 'flex', width: '100%' }}> <div style={{ display: 'flex', width: '100%' }}>
{(props.childposition == 'left' || !props.childposition) && props.children} {(childposition == 'left' || !childposition) && props.children}
<div style={{ flex: 1, overflow: 'hidden', paddingLeft: `${props.childposition == 'left' ? '15px' : '0'}` }}> <div
{props.childposition == 'top' && props.children} style={{
flex: 1,
overflow: 'hidden',
paddingLeft: `${childposition == 'left' && props.children ? '15px' : '0'}`,
}}
>
{childposition == 'top' && props.children}
<Mtable {...props} activeTabKey={null} /> <Mtable {...props} activeTabKey={null} />
</div> </div>
{(props.childposition == 'right' || !props.childposition) && props.children} {(childposition == 'right' || !childposition) && props.children}
</div> </div>
{props.childposition == 'bottom' && props.children} {childposition == 'bottom' && props.children}
</> </>
), ),
}; };
...@@ -77,14 +85,14 @@ export default (props) => { ...@@ -77,14 +85,14 @@ export default (props) => {
{props.withCard === false ? ( {props.withCard === false ? (
<> <>
<div style={{ display: 'flex', width: '100%' }}> <div style={{ display: 'flex', width: '100%' }}>
{(props.childposition == 'left' || !props.childposition) && props.children} {(childposition == 'left' || !childposition) && props.children}
<div style={{ flex: 1, width: '100%' }}> <div style={{ flex: 1, width: '100%' }}>
{props.childposition == 'top' && props.children} {childposition == 'top' && props.children}
<Mtable {...props} /> <Mtable {...props} />
</div> </div>
{(props.childposition == 'right' || !props.childposition) && props.children} {(childposition == 'right' || !childposition) && props.children}
</div> </div>
{props.childposition == 'bottom' && props.children} {childposition == 'bottom' && props.children}
</> </>
) : !props.nocardtab ? ( ) : !props.nocardtab ? (
<Card <Card
...@@ -97,14 +105,20 @@ export default (props) => { ...@@ -97,14 +105,20 @@ export default (props) => {
onTabChange={props.onTabChange} onTabChange={props.onTabChange}
> >
<div style={{ display: 'flex', width: '100%' }}> <div style={{ display: 'flex', width: '100%' }}>
{(props.childposition == 'left' || !props.childposition) && props.children} {(childposition == 'left' || !childposition) && props.children}
<div style={{ flex: 1, overflow: 'hidden', paddingLeft: `${props.childposition == 'left' ? '15px' : '0'}` }}> <div
{props.childposition == 'top' && props.children} style={{
flex: 1,
overflow: 'hidden',
paddingLeft: `${childposition == 'left' && props.children ? '15px' : '0'}`,
}}
>
{childposition == 'top' && props.children}
<Mtable {...props} /> <Mtable {...props} />
</div> </div>
{(props.childposition == 'right' || !props.childposition) && props.children} {(childposition == 'right' || !childposition) && props.children}
</div> </div>
{props.childposition == 'bottom' && props.children} {childposition == 'bottom' && props.children}
</Card> </Card>
) : ( ) : (
<div className="tabsTable"> <div className="tabsTable">
......
...@@ -40,6 +40,7 @@ const Mtable = (props) => { ...@@ -40,6 +40,7 @@ const Mtable = (props) => {
refreshDep, //依赖刷新 (已废弃) refreshDep, //依赖刷新 (已废弃)
getDefaultSelected, //存在默认选中向上返回选中值 getDefaultSelected, //存在默认选中向上返回选中值
resizeable = true, resizeable = true,
dataSource,
} = props; } = props;
const actionRefs = actionRef ?? useRef(), const actionRefs = actionRef ?? useRef(),
...@@ -345,10 +346,14 @@ const Mtable = (props) => { ...@@ -345,10 +346,14 @@ const Mtable = (props) => {
}, },
} }
: {}; : {};
const datas = dataSource ? { dataSource, toolBarRender: false } : { request };
return ( return (
<ProTable <ProTable
{...props} {...props}
{...components} {...components}
{...datas}
size={size} size={size}
onSubmit={(params) => { onSubmit={(params) => {
////console.log(params, 'onSubmit'); ////console.log(params, 'onSubmit');
...@@ -379,7 +384,6 @@ const Mtable = (props) => { ...@@ -379,7 +384,6 @@ const Mtable = (props) => {
formRef={formRefs} formRef={formRefs}
rowKey={rowKey ?? 'id'} //表格每行数据的key rowKey={rowKey ?? 'id'} //表格每行数据的key
dateFormatter="string" dateFormatter="string"
request={request}
scroll={ scroll={
x x
? { ? {
...@@ -387,17 +391,13 @@ const Mtable = (props) => { ...@@ -387,17 +391,13 @@ const Mtable = (props) => {
} }
: {} : {}
} }
pagination={ pagination={{
ifspagination
? false
: {
showTotal: (total, range) => <span>{total}</span>, showTotal: (total, range) => <span>{total}</span>,
showQuickJumper: true, showQuickJumper: true,
showSizeChanger: true, showSizeChanger: true,
pageSizeOptions: [5, 10, 15, 30, 50, 100, 200], pageSizeOptions: [5, 10, 15, 30, 50, 100, 200],
defaultPageSize: pageSize || 15, defaultPageSize: pageSize || 15,
} }}
}
search={{ search={{
filterType: 'light', //轻量模式 filterType: 'light', //轻量模式
}} }}
......
...@@ -44,6 +44,13 @@ function DetailPro(props) { ...@@ -44,6 +44,13 @@ function DetailPro(props) {
} ?? {}, } ?? {},
}; };
} }
setcuritem({
...(res?.data?.data ?? {}),
});
return {
success: res?.code == '0000',
data: { ...(res?.data?.data ?? {}) },
};
}, },
}; };
} }
......
...@@ -19,6 +19,7 @@ const EditTable = (props) => { ...@@ -19,6 +19,7 @@ const EditTable = (props) => {
x, //横向滚动 x, //横向滚动
refreshDep, //依赖刷新 (已废弃) refreshDep, //依赖刷新 (已废弃)
getDefaultSelected, //存在默认选中向上返回选中值 getDefaultSelected, //存在默认选中向上返回选中值
dataSource,
} = props; } = props;
const actionRefs = actionRef ?? useRef(), const actionRefs = actionRef ?? useRef(),
...@@ -28,7 +29,12 @@ const EditTable = (props) => { ...@@ -28,7 +29,12 @@ const EditTable = (props) => {
//调用接口 //调用接口
const request = async (params, sort, filter) => { const request = async (params, sort, filter) => {
if (!path) return; if (!path)
return {
data: dataSource ?? [],
success: true,
total: dataSource?.length ?? 0,
};
let newparams = { let newparams = {
...params, ...params,
...extraparams, //父组件传参 ...extraparams, //父组件传参
......
...@@ -1510,7 +1510,7 @@ function TableSelect({ item, value, onChange, params = {} }) { ...@@ -1510,7 +1510,7 @@ function TableSelect({ item, value, onChange, params = {} }) {
} }
/> />
); );
console.log(value);
const Todo = ( const Todo = (
<EditTable <EditTable
actionRef={actionRef} actionRef={actionRef}
......
...@@ -126,20 +126,36 @@ function InitForm(props) { ...@@ -126,20 +126,36 @@ function InitForm(props) {
res?.data?.data[extendField]?.forEach?.((it) => { res?.data?.data[extendField]?.forEach?.((it) => {
obj[it?.fieldId] = it?.fieldRealValue; obj[it?.fieldId] = it?.fieldRealValue;
}); });
console.log('dddddd', {
console.log({
...obj, ...obj,
...defaultFormValue, ...defaultFormValue,
...(res?.data?.data ?? {}), ...(res?.data?.data ?? {}),
}); });
return { return {
...obj, ...obj,
...defaultFormValue, ...defaultFormValue,
...(res?.data?.data ?? {}), ...(res?.data?.data ?? {}),
...relationSupplierList,
}; };
} }
//反填参数 格式化
const relationSupplierList = res?.data?.data?.relationSupplierList
? {
relationSupplierList: res?.data?.data?.relationSupplierList?.map?.((it, i) => {
return {
...it,
id: it?.supplierId,
};
}),
}
: {};
return { return {
...(res?.data?.data ?? {}),
...defaultFormValue, ...defaultFormValue,
...(res?.data?.data ?? {}),
...relationSupplierList,
}; };
} else { } else {
console.log({ console.log({
......
...@@ -41,7 +41,17 @@ const getParentKey = (key, tree) => { ...@@ -41,7 +41,17 @@ const getParentKey = (key, tree) => {
/> */ /> */
} }
function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, maxWidth, style }) { function TreeRender({
url,
deleteurl,
saveurl,
onselected,
params,
noaction,
maxWidth,
style,
submitKey,
}) {
const [search, setsearch] = useState(''); const [search, setsearch] = useState('');
const [savetitle, setsavetitle] = useState(null); const [savetitle, setsavetitle] = useState(null);
const [modal, setModal] = useState({ const [modal, setModal] = useState({
...@@ -80,8 +90,8 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max ...@@ -80,8 +90,8 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max
let res = data?.data?.dataList ?? []; let res = data?.data?.dataList ?? [];
return [ return [
{ {
title: '设备树', title: '全部类型',
key: '00000000', key: '',
children: res, children: res,
}, },
]; ];
...@@ -275,20 +285,6 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max ...@@ -275,20 +285,6 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max
); );
} }
// if (item.children) {
// return (
// <TreeNode key={item.key} title={actiontitle}>
// {loop(item.children)}
// </TreeNode>
// );
// }
// return <TreeNode key={item.key} title={title} />;
// return (
// <TreeNode key={item.key} title={noaction ? title : actiontitle}>
// {item.children && loop(item.children)}
// </TreeNode>
// );
if (item.children) { if (item.children) {
return { return {
title: noaction ? title : actiontitle, title: noaction ? title : actiontitle,
...@@ -341,7 +337,7 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max ...@@ -341,7 +337,7 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max
doFetch({ doFetch({
url: saveurl, url: saveurl,
params: { params: {
materieTypeName: savetitle, [submitKey]: savetitle,
id: modal.key, id: modal.key,
}, },
}).then((res) => { }).then((res) => {
...@@ -366,7 +362,7 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max ...@@ -366,7 +362,7 @@ function TreeRender({ url, deleteurl, saveurl, onselected, params, noaction, max
doFetch({ doFetch({
url: saveurl, url: saveurl,
params: { params: {
materieTypeName: savetitle, [submitKey]: savetitle,
parentId: modal.key, parentId: modal.key,
}, },
}).then((res) => { }).then((res) => {
......
...@@ -58,14 +58,13 @@ ol { ...@@ -58,14 +58,13 @@ ol {
width: 100%; width: 100%;
overflow-x: auto; overflow-x: auto;
&-thead>tr, &-thead > tr,
&-tbody>tr { &-tbody > tr {
> th,
>th, > td {
>td {
white-space: pre; white-space: pre;
>span { > span {
display: block; display: block;
} }
} }
...@@ -314,7 +313,7 @@ ol { ...@@ -314,7 +313,7 @@ ol {
} }
.lightblue { .lightblue {
>td:first-child { > td:first-child {
position: relative; position: relative;
&::before { &::before {
...@@ -336,14 +335,14 @@ ol { ...@@ -336,14 +335,14 @@ ol {
width: 100%; width: 100%;
padding-left: 0 !important; padding-left: 0 !important;
>span:first-child { > span:first-child {
flex: 1; flex: 1;
>span:first-child { > span:first-child {
display: none !important; display: none !important;
} }
>.ant-spin-nested-loading { > .ant-spin-nested-loading {
width: 100%; width: 100%;
} }
} }
...@@ -387,9 +386,12 @@ ol { ...@@ -387,9 +386,12 @@ ol {
.container, .container,
.diycard { .diycard {
width: 100%;
height: 100%; height: 100%;
} }
.ant-pro-table {
width: 100%;
}
.ant-drawer-wrapper-body { .ant-drawer-wrapper-body {
.diycard { .diycard {
height: unset; height: unset;
...@@ -397,7 +399,7 @@ ol { ...@@ -397,7 +399,7 @@ ol {
} }
.runtime-keep-alive-layout { .runtime-keep-alive-layout {
>div { > div {
height: 100% !important; height: 100% !important;
} }
} }
...@@ -445,7 +447,7 @@ ol { ...@@ -445,7 +447,7 @@ ol {
min-height: 100% !important; min-height: 100% !important;
overflow: hidden !important; overflow: hidden !important;
>div { > div {
height: 100%; height: 100%;
min-height: calc(100vh - 96px); min-height: calc(100vh - 96px);
} }
...@@ -457,12 +459,12 @@ ol { ...@@ -457,12 +459,12 @@ ol {
// 横向滚动条 // 横向滚动条
.scrollHoriz { .scrollHoriz {
>div { > div {
display: flex !important; display: flex !important;
flex-wrap: nowrap !important; flex-wrap: nowrap !important;
align-items: center !important; align-items: center !important;
>div { > div {
flex-shrink: 0 !important; flex-shrink: 0 !important;
} }
} }
......
import AutoTable from '@/components/AutoTable/mtable';
function getcolumns(setdrawer) { function getcolumns(setdrawer) {
return { const columns = [
"pathconfig": { {
"enableadd": false, title: '备件料号/名称',
"enableedit": false, dataIndex: 'sparePartId',
"enabledelete": false, key: 'sparePartId',
"enabledetail": false, editable: false,
"add": "", hideInSearch: true,
"edit": "", colProps: {
"list": "/repair/umRepairOrder/queryRepairOrderList", span: 6,
"delete": "", },
"detail": "" valueType: 'select',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
options: {
path: '/sparepart/sparePart/queryAllSelect',
params: {},
},
},
{
title: '供应商编号/名称',
dataIndex: 'supplierId',
key: 'supplierId',
editable: false,
hideInSearch: true,
colProps: {
span: 6,
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
valueType: 'select',
options: {
path: '/sparepart/sparePartSupplier/queryOnSelect',
params: {},
},
}, },
"columns": [
{ {
"title": "维修单号", title: '入库数量',
"dataIndex": "repairOrderNo", dataIndex: 'operateNum',
"key": "repairOrderNo" valueType: 'digit',
fieldProps: {
precision: 0,
}, },
formItemProps: {
rules: [
{ {
"title": "设备编号", required: true,
"dataIndex": "equipmentNo", message: '此项为必填项',
"key": "equipmentNo"
}, },
],
},
hideInSearch: true,
colProps: {
span: 6,
},
},
{
title: '库存单位',
dataIndex: 'unit',
key: 'unit',
formItemProps: {
rules: [
{ {
"title": "设备名称", required: true,
"dataIndex": "equipmentName", message: '此项为必填项',
"key": "equipmentName" },
],
},
fieldProps: {
disabled: true,
},
hideInSearch: true,
editable: false,
colProps: {
span: 6,
}, },
},
];
return [
{ {
"title": "故障描述", tab: '未完成',
"dataIndex": "faultDescription", key: '1',
"key": "faultDescription" columns: [
{
title: '入库单号',
dataIndex: 'taskNo',
key: 'taskNo',
}, },
{ {
"title": "报修人员", title: '入库类型',
"dataIndex": "repairUserName", dataIndex: 'inTypeName',
"key": "repairUserName" key: 'inType',
valueType: 'select',
options: [
{
label: '采购入库',
value: '1',
}, },
{ {
"title": "报修时间", label: '生产入库',
"dataIndex": "repairTime", value: '2',
"key": "repairTimeList",
"valueType": "dateTimeRange"
}, },
{ {
"title": "报修单号", label: '其他入库',
"dataIndex": "repairNo", value: '3',
"key": "repairNo"
}, },
],
formItemProps: {
rules: [
{ {
"title": "工单状态", required: true,
"dataIndex": "statusName", message: '此项为必填项',
"key": "statusName" },
} ],
] },
}; },
{
title: '入库仓库',
dataIndex: 'inWarehouseName',
key: 'inWarehouseName',
hideInForm: true,
},
{
title: '出库仓库',
dataIndex: 'outWarehouseName',
key: 'outWarehouseName',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '备件种类',
dataIndex: 'spareTypeNum',
key: 'spareTypeNum',
hideInForm: true,
hideInSearch: true,
},
{
title: '相关单号',
dataIndex: 'relationNo',
key: 'relationNo',
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
valueType: 'textarea',
hideInSearch: true,
},
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserId',
hideInForm: true,
valueType: 'select',
fieldProps: {
showSearch: true,
},
options: {
path: '/auth/sysUser/selection',
params: {},
},
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.createTime}</span>;
},
},
{
title: '备件信息',
dataIndex: 'details',
key: 'details',
valueType: 'split',
},
{
title: '备件',
dataIndex: 'detailsList',
key: 'detailsList',
valueType: 'formList',
colProps: {
span: 24,
},
columns,
span: 12,
path: '/sparepart/sparePart/queryList',
hideInSearch: true,
hideInTable: true,
render: (text, row) => {
return (
<AutoTable
columns={columns?.map((it) => ({
...it,
hideInSearch: true,
}))}
dataSource={row?.detailsList}
/>
);
},
},
],
pathconfig: {
enableadd: true,
enableedit: true,
enabledelete: true,
enabledetail: true,
add: '/sparepart/inWarehouseTask/save',
edit: '/sparepart/inWarehouseTask/save',
list: '/sparepart/inWarehouseTask/queryNoComplete',
delete: '',
detail: '/sparepart/inWarehouseTask/queryDetails',
},
},
{
tab: '已完成',
key: '2',
columns: [
{
title: '入库单号',
dataIndex: 'taskNo',
key: 'taskNo',
},
{
title: '入库类型',
dataIndex: 'inTypeName',
key: 'inType',
valueType: 'select',
options: [
{
label: '采购入库',
value: '1',
},
{
label: '生产入库',
value: '2',
},
{
label: '其他入库',
value: '3',
},
],
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '入库仓库',
dataIndex: 'inWarehouseName',
key: 'inWarehouseName',
hideInForm: true,
},
{
title: '出库仓库',
dataIndex: 'outWarehouseName',
key: 'outWarehouseName',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '备件种类',
dataIndex: 'spareTypeNum',
key: 'spareTypeNum',
hideInForm: true,
hideInSearch: true,
},
{
title: '相关单号',
dataIndex: 'relationNo',
key: 'relationNo',
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
valueType: 'textarea',
hideInSearch: true,
},
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserId',
hideInForm: true,
valueType: 'select',
fieldProps: {
showSearch: true,
},
options: {
path: '/auth/sysUser/selection',
params: {},
},
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.createTime}</span>;
},
},
{
title: '完成时间',
dataIndex: 'completeTime',
key: 'completeTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.completeTime}</span>;
},
},
{
title: '备件信息',
dataIndex: 'details',
key: 'details',
valueType: 'split',
},
{
title: '备件',
dataIndex: 'detailsList',
key: 'detailsList',
valueType: 'formList',
colProps: {
span: 24,
},
columns,
span: 12,
path: '/sparepart/sparePart/queryList',
hideInSearch: true,
hideInTable: true,
render: (text, row) => {
return (
<AutoTable
columns={columns?.map((it) => ({
...it,
hideInSearch: true,
}))}
dataSource={row?.detailsList}
/>
);
},
},
{
dataIndex: 'splias',
valueType: 'split',
title: '入库/关单信息',
key: 'splisa',
},
{
title: '状态',
dataIndex: 'statusName',
key: 'status',
hideInForm: true,
valueType: 'select',
width: 120,
options: [
{ label: '已入库', value: 2 },
{ label: '已关单', value: 3 },
],
},
{
title: '操作人',
dataIndex: 'operateUserName',
key: 'operateUserName',
hideInSearch: true,
hideInTable: true,
hideInForm: true,
},
{
title: '操作时间',
dataIndex: 'operateTime',
key: 'operateTime',
hideInSearch: true,
hideInTable: true,
hideInForm: true,
},
],
pathconfig: {
enableadd: true,
enableedit: false,
enabledelete: false,
enabledetail: true,
add: '/sparepart/inWarehouseTask/save',
edit: '/sparepart/inWarehouseTask/save',
list: '/sparepart/inWarehouseTask/queryYesComplete',
delete: '',
detail: '/sparepart/inWarehouseTask/queryDetails',
},
},
];
} }
export default getcolumns; export default getcolumns;
import * as React from 'react'; import * as React from 'react';
import { useState, useMemo, useRef } from 'react'; import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro'; import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable'; import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton'; import PremButton from '@/components/PremButton';
import getcolumns from './columns'; import getcolumns from './columns';
import { useRequest } from 'ahooks'; import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch'; import { doFetch } from '@/utils/doFetch';
function Instore(props) { function Instore(props) {
const actionRef = useRef(), const actionRef = useRef(),
formRef = useRef(); formRef = useRef();
const [drawer, setdrawer] = useState({ const [drawer, setdrawer] = useState({
open: false, open: false,
}); }),
const pathconfig = useMemo(() => { [activeTabKey, setactiveTabKey] = useState('1');
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
return pathconf;
}, []);
const { run, loading } = useRequest(doFetch, { const { run, loading } = useRequest(doFetch, {
manual: true, manual: true,
onSuccess: (res, params) => { onSuccess: (res, params) => {
...@@ -56,20 +54,19 @@ import * as React from 'react'; ...@@ -56,20 +54,19 @@ import * as React from 'react';
const edit = (text, row, _, action) => { const edit = (text, row, _, action) => {
return ( return (
<PremButton <PremButton
pop={{
title: '是否入库?',
okText: '确认',
cancelText: '取消',
onConfirm: () => {
run({ url: '/sparepart/inWarehouseTask/inWarehouse', params: { id: row?.id } });
},
}}
btn={{ btn={{
size: 'small', size: 'small',
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: row,
title: '编辑',
val: 'edit',
}));
},
}} }}
> >
编辑 入库
</PremButton> </PremButton>
); );
}; };
...@@ -78,11 +75,11 @@ import * as React from 'react'; ...@@ -78,11 +75,11 @@ import * as React from 'react';
return ( return (
<PremButton <PremButton
pop={{ pop={{
title: '是否删除?', title: '是否关单?',
okText: '确认', okText: '确认',
cancelText: '取消', cancelText: '取消',
onConfirm: () => { onConfirm: () => {
run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } }); run({ url: '/sparepart/inWarehouseTask/shut', params: { id: row?.id } });
}, },
}} }}
btn={{ btn={{
...@@ -90,34 +87,47 @@ import * as React from 'react'; ...@@ -90,34 +87,47 @@ import * as React from 'react';
type: 'danger', type: 'danger',
}} }}
> >
删除 关单
</PremButton> </PremButton>
); );
}; };
const columns = useMemo(() => { const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer)?.columns; let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns;
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defcolumn.concat({ return defcolumn.concat({
title: '操作', title: '操作',
valueType: 'option', valueType: 'option',
width: 150, width: 150,
render: (text, row, _, action) => [ render: (text, row, _, action) => [
pathconfig?.enabledetail && detail(text, row, _, action), defpath?.enabledetail && detail(text, row, _, action),
pathconfig?.enableedit && edit(text, row, _, action), defpath?.enableedit && edit(text, row, _, action),
pathconfig?.enabledelete && remove(text, row, _, action), defpath?.enabledelete && remove(text, row, _, action),
], ],
}); });
}, []); }, [activeTabKey]);
const pathconfig = useMemo(() => {
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defpath;
}, [activeTabKey]);
const { data } = useRequest(async () => {
let res = await doFetch({ url: '/sparepart/sparePart/queryAllSelect', params: {} });
return res?.data?.dataList;
});
console.log(data);
return ( return (
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<AutoTable <AutoTable
pagetitle="入库管理" pagetitle="入库管理"
columns={columns} columns={columns}
actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'} path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
actionRef={actionRef}
pageextra={pathconfig?.enableadd ? 'add' : null} pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={true} resizeable={false}
addconfig={{ addconfig={{
// access: 'sysDepartment_save', // access: 'sysDepartment_save',
btn: { btn: {
...@@ -133,16 +143,20 @@ import * as React from 'react'; ...@@ -133,16 +143,20 @@ import * as React from 'react';
}, },
}, },
}} }}
tabList={getcolumns()}
activeTabKey={activeTabKey}
onTabChange={(key) => {
setactiveTabKey(key);
}}
/> />
<DrawerPro <DrawerPro
fields={columns} fields={columns}
detailpath={pathconfig?.detail || null}
defaultFormValue={drawer?.item}
params={{ id: drawer?.item?.id }} params={{ id: drawer?.item?.id }}
formRef={formRef} formRef={formRef}
placement="right" placement="right"
detailpath={pathconfig?.detail || null}
detailData={drawer?.item}
defaultFormValue={drawer?.item}
onClose={() => { onClose={() => {
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
...@@ -157,10 +171,23 @@ import * as React from 'react'; ...@@ -157,10 +171,23 @@ import * as React from 'react';
run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } }); run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } });
} }
}} }}
onValuesChange={(curval, allval) => {
if (Object.keys(curval)[0] == 'detailsList') {
formRef.current.setFieldsValue({
detailsList: allval.detailsList?.map((it) => {
if (it.sparePartId) {
it.unit = data?.filter?.((item) => {
return item.value == it.sparePartId;
})?.[0]?.unit;
}
return it;
}),
});
}
}}
/> />
</div> </div>
); );
} }
export default Instore;
export default Instore;
import AutoTable from '@/components/AutoTable/mtable';
function getcolumns(setdrawer) { function getcolumns(setdrawer) {
return { const columns = [
"pathconfig": { {
"enableadd": false, title: '备件料号',
"enableedit": false, dataIndex: 'sparePartNo',
"enabledelete": false, key: 'sparePartNo',
"enabledetail": false, editable: false,
"add": "",
"edit": "",
"list": "/repair/umRepairOrder/queryRepairOrderList",
"delete": "",
"detail": ""
}, },
"columns": [
{ {
"title": "维修单号", title: '备件名称',
"dataIndex": "repairOrderNo", dataIndex: 'sparePartName',
"key": "repairOrderNo" key: 'sparePartName',
editable: false,
}, },
{ {
"title": "设备编号", title: '可用库存',
"dataIndex": "equipmentNo", dataIndex: 'usedStock',
"key": "equipmentNo" key: 'usedStock',
editable: false,
hideInSearch: true,
}, },
{ {
"title": "设备名称", title: '出库数量',
"dataIndex": "equipmentName", dataIndex: 'operateNum',
"key": "equipmentName" key: 'operateNum',
hideInSearch: true,
valueType: 'digit',
fieldProps: {
precision: 3,
},
}, },
{ {
"title": "故障描述", title: '库存单位',
"dataIndex": "faultDescription", dataIndex: 'unit',
"key": "faultDescription" editable: false,
hideInSearch: true,
}, },
];
return [
{ {
"title": "报修人员", tab: '未完成',
"dataIndex": "repairUserName", key: '1',
"key": "repairUserName" columns: [
{
title: '出库单号',
dataIndex: 'taskNo',
key: 'taskNo',
}, },
{ {
"title": "报修时间", title: '出库类型',
"dataIndex": "repairTime", dataIndex: 'outTypeName',
"key": "repairTimeList", key: 'outType',
"valueType": "dateTimeRange" formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
}, },
valueType: 'select',
options: [
{ {
"title": "报修单号", label: '销售出库',
"dataIndex": "repairNo", value: '1',
"key": "repairNo"
}, },
{ {
"title": "工单状态", label: '报废出库',
"dataIndex": "statusName", value: '2',
"key": "statusName" },
} {
] label: '其它出库',
}; value: '3',
},
{
label: '备件申领出库',
value: '4',
},
],
},
{
title: '入库仓库',
dataIndex: 'inWarehouseName',
key: 'inWarehouseName',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '出库仓库',
dataIndex: 'outWarehouseName',
key: 'outWarehouseName',
hideInForm: true,
},
{
title: '备件种类',
dataIndex: 'spareTypeNum',
key: 'spareTypeNum',
hideInSearch: true,
hideInForm: true,
},
{
title: '相关单号',
dataIndex: 'relationNo',
key: 'relationNo',
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
colProps: {
span: 24,
},
hideInSearch: true,
valueType: 'textarea',
},
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserId',
hideInForm: true,
valueType: 'select',
fieldProps: {
showSearch: true,
},
options: {
path: '/auth/sysUser/selection',
params: {},
},
hideInForm: true,
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.createTime}</span>;
},
hideInForm: true,
},
{
title: '备件信息',
dataIndex: 'details',
key: 'details',
valueType: 'split',
},
{
title: '备件',
dataIndex: 'taskSpareList',
key: 'taskSpareList',
valueType: 'formSelectList',
colProps: {
span: 24,
},
columns,
span: 12,
path: '/sparepart/spareStock/queryByOperate',
hideInSearch: true,
hideInTable: true,
render: (text, row) => {
return (
<AutoTable
columns={columns?.map((it) => ({
...it,
hideInSearch: true,
}))}
dataSource={row?.taskSpareList}
/>
);
},
},
],
pathconfig: {
enableadd: true,
enableedit: true,
enabledelete: true,
enabledetail: true,
add: '/sparepart/outWarehouseTask/save',
edit: '',
list: '/sparepart/outWarehouseTask/queryNoComplete',
delete: '',
detail: '/sparepart/outWarehouseTask/queryDetails',
},
},
{
tab: '已完成',
key: '2',
columns: [
{
title: '出库单号',
dataIndex: 'taskNo',
key: 'taskNo',
},
{
title: '出库类型',
dataIndex: 'outTypeName',
key: 'outType',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
valueType: 'select',
options: [
{
label: '销售出库',
value: '1',
},
{
label: '报废出库',
value: '2',
},
{
label: '其它出库',
value: '3',
},
{
label: '备件申领出库',
value: '4',
},
],
},
{
title: '入库仓库',
dataIndex: 'inWarehouseName',
key: 'inWarehouseName',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '出库仓库',
dataIndex: 'outWarehouseName',
key: 'outWarehouseName',
hideInForm: true,
},
{
title: '备件种类',
dataIndex: 'spareTypeNum',
key: 'spareTypeNum',
hideInSearch: true,
hideInForm: true,
},
{
title: '相关单号',
dataIndex: 'relationNo',
key: 'relationNo',
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
colProps: {
span: 24,
},
hideInSearch: true,
valueType: 'textarea',
},
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserId',
hideInForm: true,
valueType: 'select',
fieldProps: {
showSearch: true,
},
options: {
path: '/auth/sysUser/selection',
params: {},
},
hideInForm: true,
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.createTime}</span>;
},
hideInForm: true,
},
{
title: '完成时间',
dataIndex: 'completeTime',
key: 'completeTimeList',
hideInForm: true,
valueType: 'dateRange',
render: (text, row) => {
return <span>{row?.completeTime}</span>;
},
hideInForm: true,
},
{
title: '备件信息',
dataIndex: 'details',
key: 'details',
valueType: 'split',
},
{
title: '备件',
dataIndex: 'taskSpareList',
key: 'taskSpareList',
valueType: 'formSelectList',
colProps: {
span: 24,
},
columns,
span: 12,
path: '/sparepart/spareStock/queryByOperate',
hideInSearch: true,
hideInTable: true,
render: (text, row) => {
return (
<AutoTable
columns={columns?.map((it) => ({
...it,
hideInSearch: true,
}))}
dataSource={row?.taskSpareList}
/>
);
},
},
{
dataIndex: 'splias',
valueType: 'split',
title: '出库/关单信息',
key: 'splisa',
},
{
dataIndex: 'statusName',
valueType: 'select',
title: '状态',
key: 'status',
options: [
{
label: '已出库',
value: 2,
},
{
label: '已关单',
value: 3,
},
],
hideInForm: true,
},
{
title: '操作人',
dataIndex: 'operateUserName',
key: 'operateUserName',
hideInSearch: true,
hideInTable: true,
hideInForm: true,
},
{
title: '操作时间',
dataIndex: 'operateTime',
key: 'operateTime',
hideInSearch: true,
hideInTable: true,
hideInForm: true,
},
],
pathconfig: {
enableadd: true,
enableedit: false,
enabledelete: false,
enabledetail: true,
add: '/sparepart/outWarehouseTask/save',
edit: '',
list: '/sparepart/outWarehouseTask/queryYesComplete',
delete: '',
detail: '/sparepart/outWarehouseTask/queryDetails',
},
},
];
} }
export default getcolumns; export default getcolumns;
import * as React from 'react'; import * as React from 'react';
import { useState, useMemo, useRef } from 'react'; import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro'; import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable'; import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton'; import PremButton from '@/components/PremButton';
import getcolumns from './columns'; import getcolumns from './columns';
import { useRequest } from 'ahooks'; import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch'; import { doFetch } from '@/utils/doFetch';
import DetailPro from '@/components/DetailPro';
import EditTable from '@/components/InitForm/EditTable';
import { Button } from 'antd';
function Outstore(props) { function Outstore(props) {
const actionRef = useRef(), const actionRef = useRef(),
formRef = useRef(); formRef = useRef();
const [drawer, setdrawer] = useState({ const [drawer, setdrawer] = useState({
open: false, open: false,
}); }),
const pathconfig = useMemo(() => { [activeTabKey, setactiveTabKey] = useState('1');
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {}; const [value, setvalue] = useState([]);
return pathconf;
}, []);
const { run, loading } = useRequest(doFetch, { const { run, loading } = useRequest(doFetch, {
manual: true, manual: true,
onSuccess: (res, params) => { onSuccess: (res, params) => {
...@@ -59,17 +61,23 @@ import * as React from 'react'; ...@@ -59,17 +61,23 @@ import * as React from 'react';
btn={{ btn={{
size: 'small', size: 'small',
onClick: () => { onClick: () => {
doFetch({
url: '/sparepart/outWarehouseTask/queryByBeforeOut',
params: { id: row?.id },
}).then((res) => {
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
open: true, open: true,
item: row, item: row,
title: '编辑', title: '出库',
val: 'edit', val: 'only',
submitdata: res?.data?.data?.taskSpareList ?? [],
})); }));
});
}, },
}} }}
> >
编辑 出库
</PremButton> </PremButton>
); );
}; };
...@@ -78,11 +86,11 @@ import * as React from 'react'; ...@@ -78,11 +86,11 @@ import * as React from 'react';
return ( return (
<PremButton <PremButton
pop={{ pop={{
title: '是否删除?', title: '是否关单?',
okText: '确认', okText: '确认',
cancelText: '取消', cancelText: '取消',
onConfirm: () => { onConfirm: () => {
run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } }); run({ url: '/sparepart/outWarehouseTask/shut', params: { id: row?.id } });
}, },
}} }}
btn={{ btn={{
...@@ -90,34 +98,42 @@ import * as React from 'react'; ...@@ -90,34 +98,42 @@ import * as React from 'react';
type: 'danger', type: 'danger',
}} }}
> >
删除 关单
</PremButton> </PremButton>
); );
}; };
const columns = useMemo(() => { const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer)?.columns; let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns;
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defcolumn.concat({ return defcolumn.concat({
title: '操作', title: '操作',
valueType: 'option', valueType: 'option',
width: 150, width: 150,
render: (text, row, _, action) => [ render: (text, row, _, action) => [
pathconfig?.enabledetail && detail(text, row, _, action), defpath?.enabledetail && detail(text, row, _, action),
pathconfig?.enableedit && edit(text, row, _, action), defpath?.enableedit && edit(text, row, _, action),
pathconfig?.enabledelete && remove(text, row, _, action), defpath?.enabledelete && remove(text, row, _, action),
], ],
}); });
}, []); }, [activeTabKey]);
const pathconfig = useMemo(() => {
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defpath;
}, [activeTabKey]);
console.log(value);
return ( return (
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<AutoTable <AutoTable
pagetitle="出库管理" pagetitle="出库管理"
columns={columns} columns={columns}
actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'} path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
actionRef={actionRef}
pageextra={pathconfig?.enableadd ? 'add' : null} pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={true} resizeable={false}
addconfig={{ addconfig={{
// access: 'sysDepartment_save', // access: 'sysDepartment_save',
btn: { btn: {
...@@ -133,16 +149,20 @@ import * as React from 'react'; ...@@ -133,16 +149,20 @@ import * as React from 'react';
}, },
}, },
}} }}
tabList={getcolumns()}
activeTabKey={activeTabKey}
onTabChange={(key) => {
setactiveTabKey(key);
}}
/> />
<DrawerPro <DrawerPro
fields={columns} fields={columns}
detailpath={pathconfig?.detail || null}
defaultFormValue={drawer?.item}
params={{ id: drawer?.item?.id }} params={{ id: drawer?.item?.id }}
formRef={formRef} formRef={formRef}
placement="right" placement="right"
detailpath={pathconfig?.detail || null}
detailData={drawer?.item}
defaultFormValue={drawer?.item}
onClose={() => { onClose={() => {
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
...@@ -151,16 +171,204 @@ import * as React from 'react'; ...@@ -151,16 +171,204 @@ import * as React from 'react';
}} }}
{...drawer} {...drawer}
onFinish={(vals) => { onFinish={(vals) => {
const taskSpareList = vals?.taskSpareList?.map?.((it, i) => {
return {
spareStockId: it?.id,
operateNum: it?.operateNum,
};
});
if (drawer?.val == 'add') { if (drawer?.val == 'add') {
run({ url: pathconfig?.add || '/add', params: { ...vals } }); run({ url: pathconfig?.add || '/add', params: { ...vals, taskSpareList } });
} else if (drawer?.val == 'edit') { } else if (drawer?.val == 'edit') {
run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } }); run({
url: pathconfig?.edit || '/edit',
params: { ...vals, id: drawer?.item?.id, taskSpareList },
});
} }
}} }}
>
{drawer?.val == 'only' && (
<div>
<DetailPro
detailpath={pathconfig?.detail || null}
params={{ id: drawer?.item?.id }}
fields={columns?.filter(
(it) => !['details', 'taskSpareList'].includes(it?.key) && it.valueType != 'option',
)}
/> />
</div> <AutoTable
); columns={[
{
title: '备件料号',
dataIndex: 'sparePartNo',
key: 'sparePartNo',
},
{
title: '备件名称',
dataIndex: 'sparePartName',
key: 'sparePartName',
},
{
title: '库存单位',
dataIndex: 'unit',
key: 'unit',
},
{
title: '出库数量',
dataIndex: 'operateNum',
key: 'operateNum',
},
{
title: '未下架数量',
dataIndex: 'outNum',
key: 'outNum',
},
]}
pagetitle="备件信息"
dataSource={drawer?.submitdata}
expandable={{
expandedRowRender: (record) => {
return (
<div style={{ padding: '4px 4px 4px 36px', backgroundColor: '#cccccc' }}>
<EditTable
resizeable={false}
alwaysShowAlert={false}
tableAlertRender={false}
tableAlertOptionRender={false}
columns={[
{
title: '供应商编号',
dataIndex: 'supplierNo',
key: 'supplierNo',
editable: false,
},
{
title: '供应商名称',
dataIndex: 'supplierName',
key: 'supplierName',
editable: false,
},
{
title: '库存数量',
dataIndex: 'actualStock',
key: 'actualStock',
editable: false,
},
{
title: '下架数量',
dataIndex: 'operateNum',
key: 'operateNum',
valueType: 'digit',
fieldProps: {
precision: 3,
},
},
]}
dataSource={record?.spareSupplierStockList ?? []}
rowSelection={{
columnWidth: 44,
preserveSelectedRowKeys: true,
selectedRowKeys:
value &&
value
?.filter?.((it) => it?.id == record.id)[0]
?.taskSpareSupplierList?.map?.((it) => it?.spareSupplierStockId),
onChange: (selectedKeys, selectedRows) => {
const curval =
value?.filter?.((it) => it?.id == record.id)[0]
?.taskSpareSupplierList ?? [];
const rowkeylist = curval
? curval?.map((it) => it?.spareSupplierStockId)
: [];
const newValue = selectedRows?.map((its) => {
if (rowkeylist.includes(its?.id)) {
return curval.filter(
(it) => it?.spareSupplierStockId == its?.id,
)[0];
} else {
return {
spareSupplierStockId: its.id,
operateNum: its.operateNum,
};
}
});
console.log(newValue);
let nvalue = value ? [...value] : [];
if (value && value.some((it) => it.id == record?.id)) {
nvalue = value?.map((it, i) => {
if (it.id == record.id) {
it.taskSpareSupplierList = newValue;
}
return it;
});
} else {
nvalue.push({
id: record.id,
taskSpareSupplierList: newValue,
});
} }
export default Outstore; setvalue(nvalue);
},
}}
editable={{
onValuesChange: (rower, recordList) => {
const curval =
value?.filter?.((it) => it?.id == record.id)[0]
?.taskSpareSupplierList ?? [];
const newValue = curval?.map((its) => {
if (its?.spareSupplierStockId == rower?.id) {
return {
spareSupplierStockId: rower.id,
operateNum: rower.operateNum,
};
} else {
return its;
}
});
console.log(newValue);
let nvalue = value ? [...value] : [];
if (value && value.some((it) => it.id == record?.id)) {
nvalue = value?.map((it, i) => {
if (it.id == record.id) {
it.taskSpareSupplierList = newValue;
}
return it;
});
} else {
nvalue.push({
id: record.id,
taskSpareSupplierList: newValue,
});
}
setvalue(nvalue);
},
}}
/>
</div>
);
},
}}
/>
<Button
style={{ marginTop: 12 }}
type="primary"
onClick={() => {
run({
url: '/sparepart/outWarehouseTask/OutWarehouse',
params: { id: drawer?.item?.id, taskSpareList: value },
});
}}
>
出库
</Button>
</div>
)}
</DrawerPro>
</div>
);
}
export default Outstore;
function getcolumns(setdrawer) { function getcolumns(setdrawer) {
return { return {
"pathconfig": {
"enableadd": false,
"enableedit": false,
"enabledelete": false,
"enabledetail": false,
"add": "",
"edit": "",
"list": "/repair/umRepairOrder/queryRepairOrderList",
"delete": "",
"detail": ""
},
"columns": [ "columns": [
{ {
"title": "维修单号", "title": "操作时间",
"dataIndex": "repairOrderNo", "dataIndex": "operateTime",
"key": "repairOrderNo" "key": "operateTimeList",
"valueType": "dateRange"
},
{
"title": "操作人",
"dataIndex": "operateUserName",
"key": "operateUserId",
"valueType": "select",
"options": {
"path": "/auth/sysUser/selection",
"params": {}
},
"hideInSearch": false,
"hideInTable": false
},
{
"title": "备件料号",
"dataIndex": "sparePartNo",
"key": "sparePartNo",
"hideInSearch": false,
"hideInTable": false
},
{
"title": "备件名",
"dataIndex": "sparePartName",
"key": "sparePartName"
},
{
"title": "供应商编号",
"dataIndex": "supplierNo",
"key": "supplierNo"
},
{
"title": "供应商名称",
"dataIndex": "supplierName",
"key": "supplierName"
}, },
{ {
"title": "设备编号", "title": "库存单位",
"dataIndex": "equipmentNo", "dataIndex": "unit",
"key": "equipmentNo" "key": "unit"
}, },
{ {
"title": "设备名称", "title": "入库仓库",
"dataIndex": "equipmentName", "dataIndex": "inWarehouseName",
"key": "equipmentName" "key": "inWarehouseName"
}, },
{ {
"title": "故障描述", "title": "出库仓库",
"dataIndex": "faultDescription", "dataIndex": "outWarehouseName",
"key": "faultDescription" "key": "outWarehouseName"
}, },
{ {
"title": "报修人员", "title": "出入库类型",
"dataIndex": "repairUserName", "dataIndex": "operateTypeName",
"key": "repairUserName" "key": "operateTypeName"
}, },
{ {
"title": "报修时间", "title": "操作后的备件库存",
"dataIndex": "repairTime", "dataIndex": "actualStock",
"key": "repairTimeList", "key": "actualStock"
"valueType": "dateTimeRange"
}, },
{ {
"title": "报修单号", "title": "操作数量",
"dataIndex": "repairNo", "dataIndex": "operateNum",
"key": "repairNo" "key": "operateNum"
}, },
{ {
"title": "工单状态", "title": "相关单号",
"dataIndex": "statusName", "dataIndex": "relationNo",
"key": "statusName" "key": "relationNo"
}
],
"pathconfig": {
"enableadd": false,
"enableedit": false,
"enabledelete": false,
"enabledetail": false,
"add": "",
"edit": "",
"list": "/sparepart/spareStockAccess/queryList",
"delete": "",
"detail": ""
} }
]
}; };
}
export default getcolumns;
\ No newline at end of file
}
export default getcolumns;
\ No newline at end of file
import * as React from 'react'; import * as React from 'react';
import { useState, useMemo, useRef } from 'react'; import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro'; import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable'; import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton'; import PremButton from '@/components/PremButton';
import getcolumns from './columns'; import getcolumns from './columns';
import { useRequest } from 'ahooks'; import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch'; import { doFetch } from '@/utils/doFetch';
function Record(props) { function Record(props) {
const actionRef = useRef(), const actionRef = useRef(),
formRef = useRef(); formRef = useRef();
const [drawer, setdrawer] = useState({ const [drawer, setdrawer] = useState({
...@@ -97,16 +97,7 @@ import * as React from 'react'; ...@@ -97,16 +97,7 @@ import * as React from 'react';
const columns = useMemo(() => { const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer)?.columns; let defcolumn = getcolumns(setdrawer)?.columns;
return defcolumn.concat({ return defcolumn;
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => [
pathconfig?.enabledetail && detail(text, row, _, action),
pathconfig?.enableedit && edit(text, row, _, action),
pathconfig?.enabledelete && remove(text, row, _, action),
],
});
}, []); }, []);
return ( return (
...@@ -160,7 +151,6 @@ import * as React from 'react'; ...@@ -160,7 +151,6 @@ import * as React from 'react';
/> />
</div> </div>
); );
} }
export default Record;
export default Record;
import AutoTable from '@/components/AutoTable/mtable';
function getcolumns(setdrawer) { function getcolumns(setdrawer) {
const columns = [
{
title: '供应商编号',
dataIndex: 'supplierNo',
key: 'supplierNo',
editable: false,
},
{
title: '供应商名称',
dataIndex: 'supplierName',
key: 'supplierName',
editable: false,
},
{
title: '保质期(天)',
dataIndex: 'qualityGuarantee',
valueType: 'digit',
precision: 2,
fieldProps: {
precision: 2,
},
hideInSearch: true,
},
{
title: '价值',
dataIndex: 'value',
valueType: 'money',
hideInSearch: true,
},
];
return { return {
columns: [ columns: [
{ {
...@@ -44,18 +77,21 @@ function getcolumns(setdrawer) { ...@@ -44,18 +77,21 @@ function getcolumns(setdrawer) {
path: '/sparepart/sparePartType/queryTreeList', path: '/sparepart/sparePartType/queryTreeList',
params: {}, params: {},
}, },
hideInSearch: true,
}, },
{ {
title: '库存上限', title: '库存上限',
dataIndex: 'stockUpper', dataIndex: 'stockUpper',
key: 'stockUpper', key: 'stockUpper',
valueType: 'digit', valueType: 'digit',
hideInSearch: true,
}, },
{ {
title: '库存下限', title: '库存下限',
dataIndex: 'stockLower', dataIndex: 'stockLower',
key: 'stockLower', key: 'stockLower',
valueType: 'digit', valueType: 'digit',
hideInSearch: true,
}, },
{ {
title: '库存单位', title: '库存单位',
...@@ -69,6 +105,7 @@ function getcolumns(setdrawer) { ...@@ -69,6 +105,7 @@ function getcolumns(setdrawer) {
}, },
], ],
}, },
hideInSearch: true,
}, },
{ {
title: '是否寿命件', title: '是否寿命件',
...@@ -85,6 +122,8 @@ function getcolumns(setdrawer) { ...@@ -85,6 +122,8 @@ function getcolumns(setdrawer) {
value: 2, value: 2,
}, },
], ],
hideInSearch: true,
hideInTable: true,
}, },
{ {
title: '供应商信息', title: '供应商信息',
...@@ -93,43 +132,30 @@ function getcolumns(setdrawer) { ...@@ -93,43 +132,30 @@ function getcolumns(setdrawer) {
valueType: 'split', valueType: 'split',
}, },
{ {
title: '选择供应商', title: '供应商',
dataIndex: 'relationSupplierList', dataIndex: 'relationSupplierList',
key: 'relationSupplierList', key: 'relationSupplierList',
valueType: 'formSelectList', valueType: 'formSelectList',
colProps: { colProps: {
span: 24, span: 24,
}, },
columns: [ columns,
{ span: 12,
title: '供应商编号',
dataIndex: 'supplierNo',
key: 'supplierNo',
editable: false,
},
{
title: '供应商名称',
dataIndex: 'supplierName',
key: 'supplierName',
editable: false,
},
{
title: '保质期(天)',
dataIndex: 'qualityGuarantee',
valueType: 'digit',
precision: 2,
fieldProps: {
precision: 2,
},
},
{
title: '价值',
dataIndex: 'value',
valueType: 'money',
},
],
path: '/sparepart/sparePartSupplier/queryList', path: '/sparepart/sparePartSupplier/queryList',
params: { status: 1 }, params: { status: 1 },
hideInSearch: true,
hideInTable: true,
render: (text, row) => {
return (
<AutoTable
columns={columns?.map((it) => ({
...it,
hideInSearch: true,
}))}
dataSource={row?.relationSupplierList}
/>
);
},
}, },
], ],
pathconfig: { pathconfig: {
......
...@@ -7,6 +7,7 @@ import getcolumns from './columns'; ...@@ -7,6 +7,7 @@ import getcolumns from './columns';
import { useRequest } from 'ahooks'; import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch'; import { doFetch } from '@/utils/doFetch';
import { message } from 'antd'; import { message } from 'antd';
import TreeRender from '@/components/TreeRender';
function Setting(props) { function Setting(props) {
const actionRef = useRef(), const actionRef = useRef(),
...@@ -18,6 +19,7 @@ function Setting(props) { ...@@ -18,6 +19,7 @@ function Setting(props) {
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {}; let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
return pathconf; return pathconf;
}, []); }, []);
const [sparePartTypeId, setsparePartTypeId] = useState();
const { run, loading } = useRequest(doFetch, { const { run, loading } = useRequest(doFetch, {
manual: true, manual: true,
onSuccess: (res, params) => { onSuccess: (res, params) => {
...@@ -135,7 +137,18 @@ function Setting(props) { ...@@ -135,7 +137,18 @@ function Setting(props) {
}, },
}, },
}} }}
extraparams={{ sparePartTypeId }}
>
<TreeRender
url="/sparepart/sparePartType/queryTreeList"
deleteurl="/sparepart/sparePartType/deleteById"
saveurl="/sparepart/sparePartType/save"
submitKey="sparePartTypeName"
onselected={(vals) => {
setsparePartTypeId(vals[0] ?? '');
}}
/> />
</AutoTable>
<DrawerPro <DrawerPro
fields={columns} fields={columns}
...@@ -143,8 +156,7 @@ function Setting(props) { ...@@ -143,8 +156,7 @@ function Setting(props) {
formRef={formRef} formRef={formRef}
placement="right" placement="right"
detailpath={pathconfig?.detail || null} detailpath={pathconfig?.detail || null}
detailData={drawer?.item} defaultFormValue={{ sparePartTypeId }}
defaultFormValue={drawer?.item}
onClose={() => { onClose={() => {
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
......
function getcolumns(setdrawer) { function getcolumns(setdrawer) {
return { return {
"pathconfig": { columns: [
"enableadd": false,
"enableedit": false,
"enabledelete": false,
"enabledetail": false,
"add": "",
"edit": "",
"list": "/repair/umRepairOrder/queryRepairOrderList",
"delete": "",
"detail": ""
},
"columns": [
{ {
"title": "维修单号", title: '备件料号',
"dataIndex": "repairOrderNo", dataIndex: 'sparePartNo',
"key": "repairOrderNo" key: 'sparePartNo',
}, },
{ {
"title": "设备编号", title: '备件名称',
"dataIndex": "equipmentNo", dataIndex: 'sparePartName',
"key": "equipmentNo" key: 'sparePartName',
}, },
{ {
"title": "设备名称", title: '备件类型',
"dataIndex": "equipmentName", dataIndex: 'sparePartTypeName',
"key": "equipmentName" key: 'sparePartTypeName',
}, },
{ {
"title": "故障描述", title: '库存单位',
"dataIndex": "faultDescription", dataIndex: 'unit',
"key": "faultDescription" key: 'unit',
hideInSearch: true,
}, },
{ {
"title": "报修人员", title: '库存数量',
"dataIndex": "repairUserName", dataIndex: 'actualStock',
"key": "repairUserName" key: 'actualStock',
hideInSearch: true,
}, },
{ {
"title": "报修时间", title: '可用库存',
"dataIndex": "repairTime", dataIndex: 'usedStock',
"key": "repairTimeList", key: 'usedStock',
"valueType": "dateTimeRange" hideInSearch: true,
}, },
{ ],
"title": "报修单号", pathconfig: {
"dataIndex": "repairNo", enableadd: false,
"key": "repairNo" enableedit: false,
enabledelete: false,
enabledetail: false,
add: '',
edit: '',
list: '/sparepart/spareStock/queryList',
delete: '',
detail: '',
}, },
{ };
"title": "工单状态",
"dataIndex": "statusName",
"key": "statusName"
}
]
};
} }
export default getcolumns; export default getcolumns;
import * as React from 'react'; import * as React from 'react';
import { useState, useMemo, useRef } from 'react'; import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro'; import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable'; import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton'; import PremButton from '@/components/PremButton';
import getcolumns from './columns'; import getcolumns from './columns';
import { useRequest } from 'ahooks'; import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch'; import { doFetch } from '@/utils/doFetch';
import AutoTables from '@/components/AutoTable/mtable';
function ExtraTable({ spareStockId }) {
return (
<div style={{ padding: '4px 4px 4px 36px', backgroundColor: '#cccccc' }}>
<AutoTables
path={'/sparepart/spareSupplierStock/queryBySpareStockId'}
extraparams={{ spareStockId: spareStockId }}
pagination={false}
resizeable={false}
columns={[
{ title: '供应商编号', dataIndex: 'supplierNo', key: 'supplierNo' },
{ title: '供应商名称', dataIndex: 'supplierName', key: 'supplierName' },
{ title: '库存数量', dataIndex: 'actualStock', key: 'actualStock', hideInSearch: true },
]}
/>
</div>
);
}
function Stock(props) { function Stock(props) {
const actionRef = useRef(), const actionRef = useRef();
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
});
const pathconfig = useMemo(() => { const pathconfig = useMemo(() => {
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {}; let pathconf = getcolumns()?.pathconfig ?? {};
return pathconf; return pathconf;
}, []); }, []);
const { run, loading } = useRequest(doFetch, {
manual: true,
onSuccess: (res, params) => {
if (res?.code == '0000') {
actionRef?.current?.reload();
setdrawer((s) => ({
...s,
open: false,
}));
}
},
});
const detail = (text, row, _, action) => {
return (
<PremButton
btn={{
size: 'small',
type: 'link',
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: row,
title: '详情',
val: 'detail',
title: '详细信息',
}));
},
}}
>
详情
</PremButton>
);
};
const edit = (text, row, _, action) => {
return (
<PremButton
btn={{
size: 'small',
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: row,
title: '编辑',
val: 'edit',
}));
},
}}
>
编辑
</PremButton>
);
};
const remove = (text, row, _, action) => {
return (
<PremButton
pop={{
title: '是否删除?',
okText: '确认',
cancelText: '取消',
onConfirm: () => {
run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } });
},
}}
btn={{
size: 'small',
type: 'danger',
}}
>
删除
</PremButton>
);
};
const columns = useMemo(() => { const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer)?.columns; let defcolumn = getcolumns()?.columns;
return defcolumn.concat({ return defcolumn;
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => [
pathconfig?.enabledetail && detail(text, row, _, action),
pathconfig?.enableedit && edit(text, row, _, action),
pathconfig?.enabledelete && remove(text, row, _, action),
],
});
}, []); }, []);
return ( return (
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<AutoTable <AutoTable
pagetitle=" 备件库存" pagetitle="备件库存"
columns={columns} columns={columns}
actionRef={actionRef} actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'} path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
pageextra={pathconfig?.enableadd ? 'add' : null} resizeable={false}
resizeable={true} expandable={{
addconfig={{ expandedRowRender: (record) => <ExtraTable spareStockId={record?.id} />,
// access: 'sysDepartment_save',
btn: {
disabled: false,
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: null,
title: '新增',
val: 'add',
}));
},
},
}}
/>
<DrawerPro
fields={columns}
params={{ id: drawer?.item?.id }}
formRef={formRef}
placement="right"
detailpath={pathconfig?.detail || null}
detailData={drawer?.item}
defaultFormValue={drawer?.item}
onClose={() => {
setdrawer((s) => ({
...s,
open: false,
}));
}}
{...drawer}
onFinish={(vals) => {
if (drawer?.val == 'add') {
run({ url: pathconfig?.add || '/add', params: { ...vals } });
} else if (drawer?.val == 'edit') {
run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } });
}
}} }}
/> />
</div> </div>
); );
} }
export default Stock;
export default Stock;
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