/* 编号规则
* @Author: Li Hanlin
* @Date: 2022-11-09 14:44:44
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-01-30 18:43:49
*/
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 { doFetch } from '@/utils/doFetch';
import { message } from 'antd';
import AddRules from './AddRules';
import _ from 'lodash';
function Rules(props) {
let actionRef = useRef(),
formRef = useRef();
const [drawer, setDrawer] = useState({
visible: false,
});
const urlParams = {
save: '/base/bmNumberRule/save',
remove: '/base/bmNumberRule/deleteByNoTypeId',
list: '/base/bmNumberRule/queryList',
detail: '/base/bmNumberRule/queryByNoTypeId',
};
const detail = (text, row, _, action) => {
return (
{
setDrawer((s) => ({
...s,
visible: true,
item: row,
title: '详情',
val: 'detail',
title: row.userName + '的详细信息',
}));
},
}}
>
详情
);
};
const edit = (text, row, i, action) => {
return (
{
setDrawer((s) => ({
...s,
visible: true,
detailpath: urlParams.detail,
params: { noTypeId: row?.id },
title: '编辑',
val: 'edit',
onFinish: async (vals) => {
console.log(vals);
vals.nrList.other = _.pick(vals.nrList.other, [
'formatType',
'increaseList',
'noRuleCode',
'sort',
]);
vals.nrList.value = vals.nrList.value.map((it) => {
return _.pick(it, [
'formatType',
'id',
'noContent',
'noRuleCode',
'sort',
'paramList',
]);
});
let params = { ...vals };
params.nrList = [];
params.nrList = params.nrList.concat(vals?.nrList.value);
if (vals?.nrList.other.sort) {
vals.nrList.other.increaseList = Array.from(
Array(vals?.nrList.value.length + 1),
(_, index) => index + 1,
).filter((it) => it !== vals?.nrList.other.sort + 1);
params.nrList.splice(vals?.nrList.other.sort, 0, vals?.nrList.other);
params.nrList.forEach?.((it, i) => {
it.sort = i + 1;
});
} else {
message.warning('请选择顺序递增规则的位置!');
return;
}
params.id = row?.id;
let res = await doFetch({
url: urlParams.save,
params,
});
if (res.code === '0000') {
message.success('编辑成功!');
setDrawer((s) => ({
...s,
visible: false,
}));
actionRef.current.reload();
}
},
}));
},
}}
>
编辑
);
};
const remove = (text, row, _, action) => {
return (
{
let res = await doFetch({ url: urlParams.remove, params: { noTypeId: row.id } });
if (res.code === '0000') {
message.success('删除成功!');
setDrawer((s) => ({
...s,
visible: false,
}));
actionRef.current.reload();
}
},
}}
btn={{
size: 'small',
type: 'danger',
}}
>
删除
);
};
const columns = useMemo(() => {
let defcolumn = getcolumns(setDrawer);
return defcolumn.concat({
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => [edit(text, row, _, action), remove(text, row, _, action)],
});
}, []);
return (
编号规则}
columns={columns}
pagination={false}
path={urlParams.list}
actionRef={actionRef}
pageextra={'add'}
resizeable={false}
addconfig={{
// access: 'sysDepartment_save',
btn: {
type: 'primary',
disabled: false,
onClick: () => {
setDrawer((s) => ({
...s,
visible: true,
item: null,
detailpath: null,
title: '新增',
val: 'add',
onFinish: async (vals) => {
console.log(vals);
let params = { ...vals };
params.nrList = [];
params.nrList = params.nrList.concat(vals?.nrList.value);
if (vals?.nrList.other.sort) {
// vals.nrList.other.increaseList = Array.from(
// Array(vals?.nrList.value.length + 1),
// (_, index) => index + 1,
// ).filter((it) => it !== vals?.nrList.other.sort + 1);
params.nrList.splice(vals?.nrList.other.sort, 0, vals?.nrList.other);
let arr = [];
params.nrList.forEach?.((it, i) => {
it.sort = i + 1;
});
console.log(arr);
params.nrList.forEach((it) => {
if (it.noRuleCode == 'increasing_order') {
let increaseListArr = [];
it.increaseList.forEach((id) => {
increaseListArr = params.nrList
.filter((item) => item?.id == id)
.map((it) => {
return it?.sort;
});
});
arr = increaseListArr;
}
});
params.nrList.forEach((it) => {
if (it.noRuleCode == 'increasing_order') {
it.increaseList = arr;
}
});
} else {
message.warning('请选择顺序递增规则的位置!');
return;
}
let res = await doFetch({
url: urlParams.save,
params,
});
if (res.code === '0000') {
message.success('新增成功!');
setDrawer((s) => ({
...s,
visible: false,
}));
actionRef.current.reload();
}
},
}));
},
},
}}
/>
{
setDrawer((s) => ({
...s,
visible: false,
}));
}}
{...drawer}
/>
);
}
export default Rules;