/* 用户管理
* @Author: Li Hanlin
* @Date: 2022-11-09 14:44:44
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-02-10 17:54:56
*/
import * as React from 'react';
import { useState, useMemo, useRef, useEffect, useCallback } from 'react';
import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton';
import InitForm from '@/components/InitForm';
import getcolumns from './columns';
import { doFetch } from '@/utils/doFetch';
import { message, AutoComplete } from 'antd';
import ExtendField from '@/components/ExtendField';
import { useModel } from 'umi';
import { useRequest } from 'ahooks';
import { indexOf } from 'lodash';
function User(props) {
const { initialState: { currentUser }, loading, error, refresh, setInitialState } = useModel('@@initialState');
const [username, setusername] = useState(null),
[fieldColumns, cfc] = useState([]);
let actionRef = useRef(),
formRef = useRef();
const [drawer, setDrawer] = useState({
visible: false,
});
const urlParams = {
save: '/auth/sysUser/save',
remove: '/auth/sysUser/deleteById',
list: '/auth/sysUser/queryList',
detail: '/auth/sysUser/detail',
};
const detail = (text, row, _, action) => {
return (
{
setDrawer((s) => ({
...s,
visible: true,
// item: row,
title: '详情',
val: 'detail',
title: row.userName + '的详细信息',
}));
},
}}
>
详情
);
};
const edit = (text, row, _, action) => {
return (
{
doFetch({ url: urlParams.detail, params: { id: row.id } }).then(res => {
if (res.code == '0000') {
let data = res?.data?.data ?? {};
setDrawer((s) => ({
...s,
visible: true,
item: { ...data, usernamefullname: `${data?.username}-${data?.fullName}` },
type: 'edit',
title: '编辑',
val: 'only'
}));
}
})
},
}}
>
编辑
);
};
const remove = (text, row, _, action) => {
return (
{
let res = await doFetch({ url: urlParams.remove, params: { id: 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, false, formRef, currentUser?.isLease);
return defcolumn.concat({
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => [edit(text, row, _, action), remove(text, row, _, action)],
});
}, [currentUser?.isLease]);
useEffect(() => {
if (drawer.type == 'add') {
cfc(getcolumns(setDrawer, false, formRef, currentUser?.isLease))
} else if (drawer.type == 'edit') {
cfc(getcolumns(setDrawer, true, formRef, currentUser?.isLease))
}
}, [drawer.type]);
const valuechange = (changedValues, allValues) => {
for (let i in changedValues) {
if (i == "factoryIdList" || i == 'shopIdList' || i == "sectionIdList" || i == "productionLineIdList") {
let changeFiefls = fieldColumns?.filter(it => it.key == i)?.[0];
let newValindex = changedValues[i]?.indexOf('all'), oldValindex = drawer.item[i]?.indexOf('all') ?? -1, newObj = [];
if (newValindex != -1 && oldValindex == -1 && changedValues[i].length > 1) {
newObj = ['all'];
} else if (newValindex != -1 && oldValindex != -1 && changedValues[i].length > 1) {
newObj = changedValues[i].filter(it => it != 'all');
} else if (newValindex != -1 && oldValindex == -1 && changedValues[i].length == 1) {
newObj = ['all'];
} else {
newObj = changedValues[i]
}
formRef?.current?.setFieldsValue({ [i]: newObj });
setDrawer((s) => {
return {
...s,
item: { ...drawer.item, ...{ [i]: newObj } }
}
});
}
}
}
function selectType(type) {
switch (type) {
case 'add':
return (
fieldColumns?.length && {
let userCharReqList = [];
for (let i in vals) {
if (!isNaN(Number(i))) {
userCharReqList.push({
fieldId: i,
fieldRealValue: vals[i],
});
delete vals[i];
}
}
let params = {
...vals,
username: vals?.usernamefullname.slice(0, vals?.usernamefullname?.indexOf('-')),
id: drawer?.title == '编辑' ? drawer?.item?.id : '',
userCharReqList,
};
delete params.usernamefullname;
delete params.shopId;
let res = await doFetch({
url: urlParams.save,
params,
});
if (res.code === '0000') {
if (drawer?.title == '编辑') {
message.success('编辑成功!');
} else {
message.success('新增成功!');
}
setDrawer((s) => ({
...s,
visible: false,
}));
actionRef.current.reload();
}
}}
defaultFormValue={drawer.item}
onValuesChange={valuechange}
/>
);
case 'edit':
return (
fieldColumns?.length && {
let userCharReqList = [];
for (let i in vals) {
if (!isNaN(Number(i))) {
userCharReqList.push({
fieldId: i,
fieldRealValue: vals[i],
});
delete vals[i];
}
}
let params = {
...vals,
username: vals?.usernamefullname.slice(0, vals?.usernamefullname?.indexOf('-')),
id: drawer?.title == '编辑' ? drawer?.item?.id : '',
userCharReqList,
};
delete params.shopId;
delete params.usernamefullname;
let res = await doFetch({
url: urlParams.save,
params,
});
if (res.code === '0000') {
if (drawer?.title == '编辑') {
message.success('编辑成功!');
} else {
message.success('新增成功!');
}
setDrawer((s) => ({
...s,
visible: false,
}));
actionRef.current.reload();
}
}}
formRef={formRef}
onValuesChange={valuechange}
defaultFormValue={drawer.item}
/>
);
break;
default:
return null;
}
}
return (
用户管理}
columns={columns}
path={urlParams.list}
actionRef={actionRef}
pageextra={'add'}
resizeable={false}
addconfig={{
// access: 'sysDepartment_save',
btn: {
type: 'primary',
disabled: false,
onClick: () => {
// let res = await doFetch({url:})
setDrawer((s) => ({
...s,
visible: true,
item: {
status: 1,
},
detailpath: '',
params: {},
title: '新增',
type: 'add',
val: 'only',
}));
},
},
}}
/>
{
setDrawer((s) => ({
...s,
visible: false,
}));
}}
{...drawer}
>
{selectType(drawer?.type)}
);
}
export default User;