Commit 711de023 authored by TZW's avatar TZW

寿命件标准和台账

parent 059d7fee
This diff is collapsed.
......@@ -14,7 +14,6 @@ function treeForeach(tree, func) {
}
const TagView = ({ children, home }) => {
console.log(children, home);
const [tagList, setTagList] = useState([]);
const [currentPath, setCurrentPath] = useState();
......@@ -64,7 +63,6 @@ const TagView = ({ children, home }) => {
}
// 判断是否已打开过该页面
let hasOpen = false;
console.log('routeContext', routeContext, 'tagList', tagList);
if (currentMenu.path) {
const tagsCopy = tagList.map((item) => {
if (currentMenu?.path === item.path) {
......@@ -140,7 +138,6 @@ const TagView = ({ children, home }) => {
setrefresh(true);
};
console.log(tagList);
return (
<>
<RouteContext.Consumer>
......
......@@ -2,7 +2,7 @@
* @Author: Li Hanlin
* @Date: 2022-11-10 09:39:56
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-02-15 10:50:14
* @Last Modified time: 2023-02-16 17:23:15
*/
import * as React from 'react';
......
import dayjs from 'dayjs';
function getcolumns(setdrawer) {
const disabledDateOfDay = (current) => {
// Can not select days before today and today
return current && current < dayjs().endOf('day');
};
return {
columns: [
{
dataIndex: 'equipmentNo',
valueType: 'input',
title: '设备编号',
key: 'equipmentNo',
hideInForm: true,
},
{
dataIndex: 'equipmentName',
valueType: 'input',
title: '设备名称',
key: 'equipmentName',
hideInForm: true,
},
{
dataIndex: 'installPosition',
valueType: 'input',
title: '安装部位',
key: 'installPosition',
hideInForm: true,
},
{
dataIndex: 'sparePartNo',
valueType: 'input',
title: '备件料号',
key: 'sparePartNo',
hideInForm: true,
},
{
dataIndex: 'sparePartName',
valueType: 'input',
title: '备件名称',
key: 'sparePartName',
hideInForm: true,
},
{
dataIndex: 'supplierNo',
valueType: 'input',
title: '供应商编号',
key: 'supplierNo',
hideInForm: true,
},
{
dataIndex: 'supplierName',
valueType: 'input',
title: '供应商名称',
key: 'supplierName',
hideInForm: true,
},
{
dataIndex: 'equipmentId',
valueType: 'select',
title: '选择设备',
key: 'equipmentId',
hideInDescriptions: true,
hideInSearch: true,
hideInTable: true,
mode: 'radio',
options: {
path: '/asset/equipment/selection/user/shop',
params: {},
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
dataIndex: 'lifePieceStandardId',
valueType: 'select',
title: '选择部位-寿命件',
key: 'lifePieceStandardId',
hideInDescriptions: true,
hideInSearch: true,
hideInTable: true,
mode: 'radio',
options: {
path: '/sparepart/lifePieceStandard/querySelectByEquipmentId',
linkParams: { equipmentId: '' },
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
dataIndex: 'supplierId',
valueType: 'select',
title: '选择供应商',
key: 'supplierId',
hideInDescriptions: true,
hideInSearch: true,
hideInTable: true,
mode: 'radio',
options: {
path: '/sparepart/sparePartSupplier/queryOnSelect',
params: {},
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
dataIndex: 'installNum',
valueType: 'digit',
searchValueType: 'input',
title: '安装数量',
key: 'installNum',
hideInDescriptions: true,
hideInSearch: false,
hideInTable: false,
fieldProps: {
precision: 0,
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
dataIndex: 'nextReplaceDate',
title: '下次更换日期',
valueType: 'date',
key: 'nextReplaceDateList',
fieldProps: {
disabledDate: disabledDateOfDay,
},
searchValueType: 'dateRange',
hideInSearch: false,
hideInTable: false,
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
],
pathconfig: {
enableadd: true,
enableedit: true,
enabledelete: true,
enabledetail: false,
add: '/sparepart/lifePieceAccount/initialization',
edit: '/sparepart/lifePieceAccount/initialization',
list: '/sparepart/lifePieceAccount/queryWarning',
delete: '/sparepart/lifePieceAccount/deleteById',
detail: '',
},
};
}
export default getcolumns;
import * as React from 'react';
import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton';
import getcolumns from './columns';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
import InitForm from '@/components/InitForm';
function Warning(props) {
const actionRef = useRef(),
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
});
const pathconfig = useMemo(() => {
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
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: 'detailaddon',
}));
},
}}
>
更换
</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(() => {
let defcolumn = getcolumns(setdrawer)?.columns;
return defcolumn.concat({
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 (
<div style={{ position: 'relative' }}>
<AutoTable
pagetitle={<h3 className="page-title">寿命件台账</h3>}
columns={columns}
actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={false}
addconfig={{
// access: 'sysDepartment_save',
name: '初始化寿命件',
btn: {
disabled: false,
type: 'primary',
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') {
const params = { ...vals };
params.nextReplaceDate = params.nextReplaceDateList;
delete params.nextReplaceDateList;
run({ url: pathconfig?.add || '/add', params });
} else if (drawer?.val == 'edit') {
run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } });
}
}}
>
<InitForm />
</DrawerPro>
</div>
);
}
export default Warning;
import AutoTable from '@/components/AutoTable/mtable';
function getcolumns(setdrawer) {
const columns = [
{
title: '供应商编号',
dataIndex: 'supplierNo',
key: 'supplierNo',
editable: false,
},
{
title: '供应商名称',
dataIndex: 'supplierName',
key: 'supplierName',
editable: false,
},
{
title: '更换周期(天)',
dataIndex: 'replaceCycle',
key: 'replaceCycle',
hideInSearch: true,
valueType: 'digit',
fieldProps: {
precision: 0,
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
];
return {
columns: [
{
title: '设备型号',
dataIndex: 'equipmentModelName',
key: 'equipmentModelId',
colProps: {
span: 8,
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
valueType: 'select',
mode: 'radio',
fieldProps: {
showSearch: true,
dropdownMatchSelectWidth: 100,
},
options: {
path: '/asset/equipmentModel/query/selection',
params: {},
},
},
{
title: '安装部位',
dataIndex: 'installPosition',
colProps: {
span: 8,
},
key: 'installPosition',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
dataIndex: 'sparePartId',
valueType: 'select',
title: '选择寿命件',
colProps: {
span: 8,
},
key: 'sparePartId',
hideInDescriptions: true,
hideInSearch: true,
hideInTable: true,
options: {
path: '/sparepart/sparePart/queryLifeSelect',
params: {},
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '备件料号',
dataIndex: 'sparePartNo',
key: 'sparePartNo',
hideInForm: true,
},
{
title: '备件名称',
dataIndex: 'sparePartName',
key: 'sparePartName',
span: 3,
hideInForm: true,
},
{
title: '备件更换周期',
dataIndex: 'supplierList',
key: 'supplierList',
valueType: 'formSelectList',
colProps: {
span: 24,
},
span: 3,
columns,
hideInSearch: true,
hideInTable: true,
path: '/sparepart/sparePartSupplier/queryList',
params: { status: 1 },
rowName: 'supplierList',
render: (text, row) => {
console.log(row);
return <AutoTable columns={columns} dataSource={row?.supplierList} />;
},
},
],
pathconfig: {
enableadd: true,
enableedit: true,
enabledelete: true,
enabledetail: true,
add: '/sparepart/lifePieceStandard/save',
edit: '/sparepart/lifePieceStandard/save',
list: '/sparepart/lifePieceStandard/queryList',
delete: '/sparepart/lifePieceStandard/deleteById',
detail: '/sparepart/lifePieceStandard/queryDetails',
},
};
}
export default getcolumns;
/* 寿命件标准
* @Author: Li Hanlin
* @Date: 2023-02-16 10:36:53
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-02-16 13:57:46
*/
import * as React from 'react';
import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton';
import getcolumns from './columns';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
import { message } from 'antd';
function Criterion(props) {
const actionRef = useRef(),
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
});
const pathconfig = useMemo(() => {
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
return pathconf;
}, []);
const { run, loading } = useRequest(doFetch, {
manual: true,
onSuccess: (res, params) => {
if (res?.code == '0000') {
message.success('操作成功!', 1);
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(() => {
let defcolumn = getcolumns(setdrawer)?.columns;
return defcolumn.concat({
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 (
<div style={{ position: 'relative' }}>
<AutoTable
pagetitle={<h3 className="page-title">寿命件标准</h3>}
columns={columns}
actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={false}
addconfig={{
name: '新增标准',
// access: 'sysDepartment_save',
btn: {
disabled: false,
type: 'primary',
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') {
const params = { ...vals };
params.supplierList = params?.supplierList?.map((it) => {
return {
supplierId: it?.id,
replaceCycle: it?.replaceCycle,
};
});
run({ url: pathconfig?.add || '/add', params });
} else if (drawer?.val == 'edit') {
const params = { ...vals };
params.supplierList = params?.supplierList?.map((it) => {
return {
supplierId: it?.id,
replaceCycle: it?.replaceCycle,
};
});
run({ url: pathconfig?.edit || '/edit', params: { ...params, id: drawer?.item?.id } });
}
}}
/>
</div>
);
}
export default Criterion;
function getcolumns(setdrawer) {
return {
"columns": [
{
"dataIndex": "equipmentNo",
"valueType": "input",
"title": "设备编号",
"key": "equipmentNo",
"hideInForm": true
},
{
"dataIndex": "equipmentName",
"valueType": "input",
"title": "设备名称",
"key": "equipmentName",
"hideInForm": true
},
{
"dataIndex": "installPosition",
"valueType": "input",
"title": "安装部位",
"key": "installPosition",
"hideInForm": true
},
{
"dataIndex": "sparePartNo",
"valueType": "input",
"title": "备件料号",
"key": "sparePartNo",
"hideInForm": true
},
{
"dataIndex": "sparePartName",
"valueType": "input",
"title": "备件名称",
"key": "sparePartName",
"hideInForm": true
},
{
"dataIndex": "supplierNo",
"valueType": "input",
"title": "供应商编号",
"key": "supplierNo",
"hideInForm": true
},
{
"dataIndex": "supplierName",
"valueType": "input",
"title": "供应商名称",
"key": "supplierName",
"hideInForm": true
},
{
"dataIndex": "equipmentId",
"valueType": "select",
"title": "选择设备",
"key": "equipmentId",
"hideInDescriptions": true,
"hideInSearch": true,
"hideInTable": true,
"mode": "radio",
"options": {
"path": "/asset/equipment/selection/user/shop",
"params": {}
},
"formItemProps": {
"rules": [
{
"required": true,
"message": "此项为必填项"
}
]
}
},
{
"dataIndex": "lifePieceStandardId",
"valueType": "select",
"title": "选择部位-寿命件",
"key": "lifePieceStandardId",
"hideInDescriptions": true,
"hideInSearch": true,
"hideInTable": true,
"mode": "radio",
"options": {
"path": "/sparepart/lifePieceStandard/querySelectByEquipmentId",
"linkParams": {}
},
"formItemProps": {
"rules": [
{
"required": true,
"message": "此项为必填项"
}
]
}
},
{
"dataIndex": "supplierId",
"valueType": "select",
"title": "选择供应商",
"key": "supplierId",
"hideInDescriptions": true,
"hideInSearch": true,
"hideInTable": true,
"mode": "radio",
"options": {
"path": "/sparepart/sparePartSupplier/queryOnSelect",
"params": {}
},
"formItemProps": {
"rules": [
{
"required": true,
"message": "此项为必填项"
}
]
}
},
{
"dataIndex": "installNum",
"valueType": "digit",
"title": "安装数量",
"key": "installNum",
"hideInDescriptions": true,
"hideInSearch": false,
"hideInTable": false,
"formItemProps": {
"rules": [
{
"required": true,
"message": "此项为必填项"
}
]
}
},
{
"dataIndex": "nextReplaceDate",
"valueType": "date",
"title": "下次更换日期",
"key": "nextReplaceDateList",
"hideInDescriptions": true,
"hideInSearch": false,
"hideInTable": false,
"formItemProps": {
"rules": [
{
"required": true,
"message": "此项为必填项"
}
]
}
}
],
"pathconfig": {
"enableadd": true,
"enableedit": false,
"enabledelete": false,
"enabledetail": false,
"add": "/sparepart/lifePieceAccount/initialization",
"edit": "",
"list": "/sparepart/lifePieceAccount/queryWarning",
"delete": "",
"detail": ""
}
};
}
export default getcolumns;
\ No newline at end of file
import * as React from 'react';
import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton';
import getcolumns from './columns';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
function Warning(props) {
const actionRef = useRef(),
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
});
const pathconfig = useMemo(() => {
let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
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(() => {
let defcolumn = getcolumns(setdrawer)?.columns;
return defcolumn.concat({
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 (
<div style={{ position: 'relative' }}>
<AutoTable
pagetitle={<h3 className="page-title">寿命件预警</h3>}
columns={columns}
actionRef={actionRef}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={true}
addconfig={{
// 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>
);
}
export default Warning;
......@@ -2,7 +2,7 @@
* @Author: Li Hanlin
* @Date: 2023-01-16 15:35:00
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-02-09 19:53:33
* @Last Modified time: 2023-02-16 17:45:48
*/
import * as React from 'react';
......
......@@ -27,7 +27,6 @@ const codeMessage = {
/* 异常处理程序*/
const errorHandler = (error) => {
console.log(error);
const { response } = error;
if (response && response.status) {
const errorText = codeMessage[response.status] || response.statusText;
......
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