增加转发对象配置,工作人员管理页面
Some checks failed
Node CI / build (14.x, macOS-latest) (push) Has been cancelled
Node CI / build (14.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (14.x, windows-latest) (push) Has been cancelled
Node CI / build (16.x, macOS-latest) (push) Has been cancelled
Node CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (16.x, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
coverage CI / build (push) Has been cancelled
Node pnpm CI / build (16.x, macOS-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, windows-latest) (push) Has been cancelled

This commit is contained in:
wzm
2025-11-20 16:30:13 +08:00
parent 3f9be705ff
commit 3a17dc786b
252 changed files with 24122 additions and 207 deletions

View File

@@ -152,7 +152,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "preset",
@@ -165,7 +165,7 @@
"config": {},
"time": {
"hooks": {},
"register": 27
"register": 46
},
"enableBy": "register",
"type": "preset",
@@ -178,7 +178,7 @@
"config": {},
"time": {
"hooks": {},
"register": 13
"register": 19
},
"enableBy": "register",
"type": "preset",
@@ -192,10 +192,10 @@
"time": {
"hooks": {
"onStart": [
1
2
]
},
"register": 5
"register": 9
},
"enableBy": "register",
"type": "preset",
@@ -212,7 +212,7 @@
0
]
},
"register": 5
"register": 7
},
"enableBy": "register",
"type": "plugin",
@@ -226,10 +226,10 @@
"time": {
"hooks": {
"onStart": [
2
3
]
},
"register": 4
"register": 7
},
"enableBy": "register",
"type": "plugin",
@@ -246,7 +246,7 @@
0
]
},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -273,10 +273,10 @@
"time": {
"hooks": {
"modifyAppData": [
69
175
]
},
"register": 30
"register": 40
},
"enableBy": "register",
"type": "plugin",
@@ -306,10 +306,10 @@
0
],
"onCheck": [
0
1
]
},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -339,7 +339,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -356,7 +356,7 @@
0
]
},
"register": 15
"register": 21
},
"enableBy": "register",
"type": "plugin",
@@ -1208,7 +1208,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -1222,7 +1222,7 @@
"time": {
"hooks": {
"onStart": [
1
0
]
},
"register": 2
@@ -1238,7 +1238,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 3
},
"enableBy": "register",
"type": "plugin",
@@ -1251,7 +1251,7 @@
"config": {},
"time": {
"hooks": {},
"register": 92
"register": 116
},
"enableBy": "register",
"type": "plugin",
@@ -1264,7 +1264,7 @@
"config": {},
"time": {
"hooks": {},
"register": 90
"register": 133
},
"enableBy": "config",
"type": "plugin",
@@ -1277,7 +1277,7 @@
"config": {},
"time": {
"hooks": {},
"register": 21
"register": 31
},
"enableBy": "config",
"type": "plugin",
@@ -1294,7 +1294,7 @@
0
]
},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1307,7 +1307,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1333,7 +1333,7 @@
"config": {},
"time": {
"hooks": {},
"register": 38
"register": 51
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/mock/mock.js",
@@ -1345,7 +1345,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -1383,7 +1383,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 3
},
"enableBy": "config",
"type": "plugin",
@@ -1397,10 +1397,10 @@
"time": {
"hooks": {
"modifyConfig": [
1
2
]
},
"register": 3
"register": 4
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill.js",
@@ -1425,7 +1425,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 5
},
"enableBy": "register",
"type": "plugin",
@@ -1451,7 +1451,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 1
},
"enableBy": "config",
"type": "plugin",
@@ -1477,7 +1477,7 @@
"config": {},
"time": {
"hooks": {},
"register": 9
"register": 13
},
"enableBy": "register",
"type": "plugin",
@@ -1490,7 +1490,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -1515,7 +1515,7 @@
"config": {},
"time": {
"hooks": {},
"register": 5
"register": 8
},
"enableBy": "config",
"type": "plugin",
@@ -1528,7 +1528,7 @@
"config": {},
"time": {
"hooks": {},
"register": 7
"register": 11
},
"enableBy": "register",
"type": "plugin",
@@ -1541,7 +1541,7 @@
"config": {},
"time": {
"hooks": {},
"register": 5
"register": 8
},
"enableBy": "register",
"type": "plugin",
@@ -1554,7 +1554,7 @@
"config": {},
"time": {
"hooks": {},
"register": 5
"register": 6
},
"enableBy": "config",
"type": "plugin",
@@ -1580,7 +1580,7 @@
"config": {},
"time": {
"hooks": {},
"register": 10
"register": 18
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute.js",
@@ -1592,7 +1592,7 @@
"config": {},
"time": {
"hooks": {},
"register": 27
"register": 39
},
"enableBy": "config",
"type": "plugin",
@@ -1605,7 +1605,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/test/test.js",
@@ -1617,7 +1617,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent.js",
@@ -1629,7 +1629,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -1642,7 +1642,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -1655,7 +1655,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 3
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/webpack/webpack.js",
@@ -1684,7 +1684,7 @@
"config": {},
"time": {
"hooks": {},
"register": 5
"register": 8
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/ui/ui.js",
@@ -1696,7 +1696,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -1709,7 +1709,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 3
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack.js",
@@ -1721,7 +1721,7 @@
"config": {},
"time": {
"hooks": {},
"register": 4
"register": 6
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian.js",
@@ -1733,7 +1733,7 @@
"config": {},
"time": {
"hooks": {},
"register": 34
"register": 48
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad.js",
@@ -1745,7 +1745,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -1758,7 +1758,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 5
},
"enableBy": "register",
"type": "plugin",
@@ -1771,7 +1771,7 @@
"config": {},
"time": {
"hooks": {},
"register": 42
"register": 32
},
"enableBy": "register",
"type": "plugin",
@@ -1784,7 +1784,7 @@
"config": {},
"time": {
"hooks": {},
"register": 50
"register": 70
},
"enableBy": "register",
"type": "plugin",
@@ -1797,7 +1797,7 @@
"config": {},
"time": {
"hooks": {},
"register": 72
"register": 128
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/preset-umi/dist/commands/dev/dev.js",
@@ -1822,7 +1822,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1848,7 +1848,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1874,7 +1874,7 @@
"config": {},
"time": {
"hooks": {},
"register": 4
"register": 8
},
"enableBy": "register",
"type": "plugin",
@@ -1887,7 +1887,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 1
},
"enableBy": "register",
"type": "plugin",
@@ -1900,7 +1900,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1913,7 +1913,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1926,7 +1926,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1965,7 +1965,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -1978,7 +1978,7 @@
"config": {},
"time": {
"hooks": {},
"register": 0
"register": 1
},
"enableBy": "register",
"type": "plugin",
@@ -1991,7 +1991,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -2004,7 +2004,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -2030,7 +2030,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "register",
"type": "plugin",
@@ -2043,7 +2043,7 @@
"config": {},
"time": {
"hooks": {},
"register": 26
"register": 44
},
"enableBy": "register",
"type": "plugin",
@@ -2056,7 +2056,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"enableBy": "register",
"type": "plugin",
@@ -2069,7 +2069,7 @@
"config": {},
"time": {
"hooks": {},
"register": 6
"register": 12
},
"enableBy": "register",
"type": "plugin",
@@ -2082,7 +2082,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -2097,7 +2097,7 @@
},
"time": {
"hooks": {},
"register": 0
"register": 1
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/plugins/dist/analytics.js",
@@ -2110,13 +2110,13 @@
"time": {
"hooks": {
"modifyConfig": [
8
13
],
"modifyAppData": [
0
]
},
"register": 8
"register": 13
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/plugins/dist/antd.js",
@@ -2128,7 +2128,7 @@
"config": {},
"time": {
"hooks": {},
"register": 11
"register": 18
},
"enableBy": "config",
"type": "plugin",
@@ -2166,7 +2166,7 @@
1
]
},
"register": 4
"register": 6
},
"enableBy": "config",
"type": "plugin",
@@ -2179,7 +2179,7 @@
"config": {},
"time": {
"hooks": {},
"register": 4
"register": 7
},
"enableBy": "config",
"type": "plugin",
@@ -2192,7 +2192,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -2205,7 +2205,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -2235,7 +2235,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 4
},
"enableBy": "register",
"type": "plugin",
@@ -2248,7 +2248,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 5
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/plugins/dist/qiankun/master.js",
@@ -2260,7 +2260,7 @@
"config": {},
"time": {
"hooks": {},
"register": 3
"register": 4
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/plugins/dist/qiankun/slave.js",
@@ -2285,7 +2285,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 2
},
"enableBy": "config",
"type": "plugin",
@@ -2298,7 +2298,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 4
},
"enableBy": "config",
"type": "plugin",
@@ -2324,7 +2324,7 @@
"config": {},
"time": {
"hooks": {},
"register": 2
"register": 3
},
"enableBy": "config",
"type": "plugin",
@@ -2341,7 +2341,7 @@
0
]
},
"register": 0
"register": 1
},
"enableBy": "register",
"type": "plugin",
@@ -2355,7 +2355,7 @@
"time": {
"hooks": {
"modifyAppData": [
0
1
]
},
"register": 1
@@ -2392,7 +2392,7 @@
0
]
},
"register": 0
"register": 1
},
"enableBy": "register",
"type": "plugin",
@@ -2422,7 +2422,7 @@
0
]
},
"register": 375
"register": 503
},
"enableBy": "config",
"type": "plugin",
@@ -2435,7 +2435,7 @@
"config": {},
"time": {
"hooks": {},
"register": 264
"register": 386
},
"enableBy": "config",
"type": "plugin",
@@ -2479,7 +2479,7 @@
0
]
},
"register": 80
"register": 111
},
"type": "plugin",
"path": "D:/work/SHIHEZI/shz-admin/node_modules/@umijs/request-record/dist/cjs/index.js",
@@ -2491,7 +2491,7 @@
"config": {},
"time": {
"hooks": {},
"register": 1
"register": 3
},
"enableBy": "register",
"type": "plugin",

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,127 @@
import { useEffect, useState } from 'react';
import {
ModalForm,
ProForm,
ProFormDigit,
ProFormRadio,
ProFormSelect,
ProFormText,
ProFormField,
} from '@ant-design/pro-components';
import { Form,Input } from 'antd';
import { DictValueEnumObj } from '@/components/DictTag';
import ImageUploader from '@/components/ImageUploader/ImageUploader'
export type ListFormProps = {
onCancel: (flag?: boolean, formVals?: unknown) => void;
onSubmit: (values: API.GroupManagement.Group) => Promise<void>;
open: boolean;
values?: Partial<API.GroupManagement.Group>;
// jobGroupOptions: DictOptionType[];
enableStatusEnum?: DictValueEnumObj;
gzryEnum?: DictValueEnumObj;
};
const waitTime = (time: number = 100) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, time);
});
};
const listEdit: React.FC<ListFormProps> = (props) => {
const [form] = Form.useForm();
const { enableStatusEnum, gzryEnum } = props;
useEffect(() => {
form.resetFields();
if (props.values) {
console.log(props.values)
form.setFieldsValue({
...props.values,
communityId: String(props.values.communityId),
isPush: String(props.values.isPush),
});
}
}, [form, props]);
const handleCancel = () => {
props.onCancel();
};
const handleFinish = async (values: Record<string, any>) => {
props.onSubmit(values as API.GroupManagement.Group);
};
const changeCommunityId = (value) => {
for (const valueKey in gzryEnum) {
const val = gzryEnum[value]
console.log(val)
form.setFieldsValue({
phoneNumber: val.listClass,
wechatName: val.label
});
}
}
console.log('gzrylist', gzryEnum)
return (
<ModalForm<{
name: string;
isPush: boolean;
}>
title={`${props.values ? '编辑' : '新增'}企业`}
form={form}
autoFocusFirstInput
open={props.open}
modalProps={{
destroyOnClose: true,
onCancel: () => handleCancel(),
}}
submitTimeout={2000}
onFinish={handleFinish}
initialValues={{
isPush: '1',
}}
>
<ProFormDigit label="InputNumber" name="id" disabled hidden={true} />
<ProForm.Group>
<ProFormText width="md" name="name" label="群聊名称"rules={[{ required: true, message: '请输入群聊名称!' }]} placeholder="请输入群聊名称" />
</ProForm.Group>
<ProForm.Group>
<ProFormSelect
width="md"
name="communityId"
label={'工作人员'}
valueEnum={gzryEnum}
placeholder="请选择工作人员"
onChange={changeCommunityId}
rules={[{ required: true, message: '请选择工作人员!' }]}
/>
</ProForm.Group>
<ProForm.Group>
<ProFormText width="md" name="wechatName" hidden={true} label="管理员微信名" placeholder="请输入管理员微信名" />
</ProForm.Group>
<ProForm.Group>
<ProFormText
width="md"
hidden={true}
name="phoneNumber"
label="管理员手机号"
placeholder="请输入管理员手机号"
/>
</ProForm.Group>
<ProForm.Group>
<ProFormRadio.Group
valueEnum={enableStatusEnum}
name="isPush"
label="启用状态"
width="md"
/>
</ProForm.Group>
</ModalForm>
);
};
export default listEdit;

View File

@@ -0,0 +1,244 @@
import React, { Fragment, useEffect, useRef, useState, useCallback } from 'react';
import { useAccess } from '@umijs/max';
import { Button, FormInstance, message, Modal, Switch, Tooltip } from 'antd';
import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components';
import { DeleteOutlined, FormOutlined, PieChartFilled, PlusOutlined } from '@ant-design/icons';
import EditCompanyListRow from './edit';
import { delCmsCompanyList } from '@/services/company/list';
import { getDictValueEnum } from '@/services/system/dict';
import {
addCmsWechatGroup,
delCmsWechatGroup,
getCmsWechatGroupList,
putCmsWechatGroup
} from "@/services/application/GroupManagement";
import {getCmsCommunityUserList} from "@/services/application/Msmanagement";
import {DictValueEnumObj} from "@/components/DictTag";
const handleRemoveOne = async (companyCardId: string) => {
const hide = message.loading('正在删除');
if (!companyCardId) return true;
try {
const resp = await delCmsWechatGroup(companyCardId);
hide();
if (resp.code === 200) {
message.success('删除成功,即将刷新');
} else {
message.error(resp.msg);
}
return true;
} catch (error) {
hide();
message.error('删除失败,请重试');
return false;
}
};
function ManagementList() {
const access = useAccess();
const formTableRef = useRef<FormInstance>();
const actionRef = useRef<ActionType>();
const [currentRow, setCurrentRow] = useState<API.GroupManagement.Group>();
const [modalVisible, setModalVisible] = useState<boolean>(false);
const [enableStatusEnum, setEnableStatusEnum] = useState<any>([]);
const [gzryEnum, setGzrlEnum] = useState<any>([])
useEffect(() => {
getDictValueEnum('enable_status', true).then((data) => {
setEnableStatusEnum(data);
});
getGzrlList()
}, []);
const getGzrlList = useCallback(async () => {
let resData = await getCmsCommunityUserList({current: 1, pageSize: 100})
if(resData?.code === 200) {
const opts: DictValueEnumObj = {};
resData.rows.forEach((item: any) => {
opts[item.id] = {
text: item.wechatName,
label: item.wechatName,
value: item.id,
key: item.id,
listClass: item.phoneNumber,
status: item.phoneNumber,
};
});
setGzrlEnum(opts)
}
}, [])
const changeStatus = async (record: API.GroupManagement.Params) => {
let resData = await putCmsWechatGroup({
id: record.id,
isPush: record.isPush === 1 ? 0 : 1,
});
if (resData.code === 200) {
message.success('修改成功');
if (actionRef.current) {
actionRef.current.reload();
}
}
};
const columns: ProColumns<API.GroupManagement.Group>[] = [
{
title: '群聊名称',
dataIndex: 'name',
valueType: 'text',
align: 'center',
},
{
title: '创建时间',
dataIndex: 'createTime',
valueType: 'text',
align: 'center',
search: false
},
{
title: "管理员微信名",
dataIndex: 'wechatName',
valueType: 'text',
align: 'center',
search: false
},
{
title: '管理员手机号',
dataIndex: 'phoneNumber',
valueType: 'text',
align: 'center',
search: false
},
{
title: '启用状态',
dataIndex: 'isPush',
valueType: 'select',
align: 'center',
valueEnum: enableStatusEnum,
render: (text, record) => (
<Switch checked={record.isPush === 1} onChange={changeStatus.bind(null, record)} />
)
},
{
title: '操作',
hideInSearch: true,
align: 'center',
dataIndex: 'id',
width: 300,
render: (id, record) => [
<Button
type="link"
size="small"
key="edit"
icon={<FormOutlined />}
hidden={!access.hasPerms('application:group:update')}
onClick={() => {
setModalVisible(true);
setCurrentRow(record);
}}
>
</Button>,
<Button
type="link"
size="small"
danger
key="batchRemove"
icon={<DeleteOutlined />}
hidden={!access.hasPerms('application:group:del')}
onClick={async () => {
Modal.confirm({
title: '删除',
content: '确定删除该项吗?',
okText: '确认',
cancelText: '取消',
onOk: async () => {
const success = await handleRemoveOne(id as string);
if (success) {
if (actionRef.current) {
actionRef.current.reload();
}
}
},
});
}}
>
</Button>,
],
},
];
return (
<Fragment>
<div style={{ width: '100%', float: 'right' }}>
<ProTable<API.GroupManagement.Group>
// params 是需要自带的参数
// 这个参数优先级更高,会覆盖查询表单的参数
actionRef={actionRef}
formRef={formTableRef}
rowKey="companyCardId"
key="index"
columns={columns}
request={(params) =>
getCmsWechatGroupList({ ...params } as API.GroupManagement.Params).then((res) => {
return {
data: res.rows,
total: res.total,
success: true,
};
})
}
toolBarRender={() => [
<Button
type="primary"
key="add"
hidden={!access.hasPerms('application:group:add')}
onClick={async () => {
setCurrentRow(undefined);
setModalVisible(true);
}}
>
<PlusOutlined />
</Button>,
]}
/>
</div>
<EditCompanyListRow
open={modalVisible}
gzryEnum={gzryEnum}
onSubmit={async (values) => {
let resData;
console.log(values)
if (values.id) {
resData = await putCmsWechatGroup(values);
} else {
resData = await addCmsWechatGroup(values);
}
if (resData.code === 200) {
setModalVisible(false);
setCurrentRow(undefined);
if (values.id) {
message.success('修改成功');
} else {
message.success('新增成功');
}
if (actionRef.current) {
actionRef.current.reload();
}
}
}}
onCancel={() => {
setModalVisible(false);
setCurrentRow(undefined);
}}
values={currentRow}
enableStatusEnum={enableStatusEnum}
></EditCompanyListRow>
</Fragment>
);
}
export default ManagementList;

View File

@@ -0,0 +1,96 @@
import { useEffect, useState } from 'react';
import {
ModalForm,
ProForm,
ProFormDigit,
ProFormRadio,
ProFormSelect,
ProFormText,
ProFormField,
} from '@ant-design/pro-components';
import { Form,Input } from 'antd';
import { DictValueEnumObj } from '@/components/DictTag';
import ImageUploader from '@/components/ImageUploader/ImageUploader'
export type ListFormProps = {
onCancel: (flag?: boolean, formVals?: unknown) => void;
onSubmit: (values: API.GroupManagement.Group) => Promise<void>;
open: boolean;
values?: Partial<API.GroupManagement.Group>;
// jobGroupOptions: DictOptionType[];
enableStatusEnum?: DictValueEnumObj;
};
const waitTime = (time: number = 100) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, time);
});
};
const listEdit: React.FC<ListFormProps> = (props) => {
const [form] = Form.useForm();
const { enableStatusEnum } = props;
useEffect(() => {
form.resetFields();
if (props.values) {
form.setFieldsValue({
...props.values,
isPush: String(props.values.isPush),
});
}
}, [form, props]);
const handleCancel = () => {
props.onCancel();
};
const handleFinish = async (values: Record<string, any>) => {
props.onSubmit(values as API.GroupManagement.Group);
};
return (
<ModalForm<{
name: string;
isPush: boolean;
}>
title={`${props.values ? '编辑' : '新增'}企业`}
form={form}
autoFocusFirstInput
open={props.open}
modalProps={{
destroyOnClose: true,
onCancel: () => handleCancel(),
}}
submitTimeout={2000}
onFinish={handleFinish}
initialValues={{
isPush: '1',
}}
>
<ProFormDigit label="InputNumber" name="id" disabled hidden={true} />
<ProForm.Group>
<ProFormText width="md" name="wechatName" label="微信名" placeholder="请输入微信名" />
</ProForm.Group>
<ProForm.Group>
<ProFormText
width="md"
name="phoneNumber"
label="工作人员手机号"
placeholder="请输入工作人员手机号需要和简历手机号一致"
rules={[
{ required: true, message: '请输入联系人手机号!' },
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号格式!'
}
]}
/>
</ProForm.Group>
</ModalForm>
);
};
export default listEdit;

View File

@@ -0,0 +1,176 @@
import React, { Fragment, useEffect, useRef, useState } from 'react';
import { useAccess } from '@umijs/max';
import { Button, FormInstance, message, Modal, Switch, Tooltip } from 'antd';
import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components';
import { DeleteOutlined, FormOutlined, PieChartFilled, PlusOutlined } from '@ant-design/icons';
import EditCompanyListRow from './edit';
import { getDictValueEnum } from '@/services/system/dict';
import {
delCmsCommunityUser,
getCmsCommunityUserList,
addCmsCommunityUser,
putCmsCommunityUser
} from "@/services/application/Msmanagement";
const handleRemoveOne = async (companyCardId: string) => {
const hide = message.loading('正在删除');
if (!companyCardId) return true;
try {
const resp = await delCmsCommunityUser(companyCardId);
hide();
if (resp.code === 200) {
message.success('删除成功,即将刷新');
} else {
message.error(resp.msg);
}
return true;
} catch (error) {
hide();
message.error('删除失败,请重试');
return false;
}
};
function ManagementList() {
const access = useAccess();
const formTableRef = useRef<FormInstance>();
const actionRef = useRef<ActionType>();
const [currentRow, setCurrentRow] = useState<API.GroupManagement.Group>();
const [modalVisible, setModalVisible] = useState<boolean>(false);
const [enableStatusEnum, setEnableStatusEnum] = useState<any>([]);
const columns: ProColumns<API.GroupManagement.Group>[] = [
{
title: '微信名',
dataIndex: 'wechatName',
valueType: 'text',
align: 'center',
},
{
title: '手机号',
dataIndex: 'phoneNumber',
valueType: 'text',
align: 'center',
},
{
title: '操作',
hideInSearch: true,
align: 'center',
dataIndex: 'id',
width: 300,
render: (id, record) => [
<Button
type="link"
size="small"
key="edit"
icon={<FormOutlined />}
hidden={!access.hasPerms('application:group:update')}
onClick={() => {
setModalVisible(true);
setCurrentRow(record);
}}
>
</Button>,
<Button
type="link"
size="small"
danger
key="batchRemove"
icon={<DeleteOutlined />}
hidden={!access.hasPerms('application:group:del')}
onClick={async () => {
Modal.confirm({
title: '删除',
content: '确定删除该项吗?',
okText: '确认',
cancelText: '取消',
onOk: async () => {
const success = await handleRemoveOne(id as string);
if (success) {
if (actionRef.current) {
actionRef.current.reload();
}
}
},
});
}}
>
</Button>,
],
},
];
return (
<Fragment>
<div style={{ width: '100%', float: 'right' }}>
<ProTable<API.GroupManagement.Group>
// params 是需要自带的参数
// 这个参数优先级更高,会覆盖查询表单的参数
actionRef={actionRef}
formRef={formTableRef}
rowKey="companyCardId"
key="index"
columns={columns}
request={(params) =>
getCmsCommunityUserList({...params} as API.GroupManagement.Params).then((res) => {
return {
data: res.rows,
total: res.total,
success: true,
};
})
}
toolBarRender={() => [
<Button
type="primary"
key="add"
hidden={!access.hasPerms('application:group:add')}
onClick={async () => {
setCurrentRow(undefined);
setModalVisible(true);
}}
>
<PlusOutlined />
</Button>,
]}
/>
</div>
<EditCompanyListRow
open={modalVisible}
onSubmit={async (values) => {
let resData;
console.log(values)
if (values.id) {
resData = await putCmsCommunityUser(values);
} else {
resData = await addCmsCommunityUser(values);
}
if (resData.code === 200) {
setModalVisible(false);
setCurrentRow(undefined);
if (values.id) {
message.success('修改成功');
} else {
message.success('新增成功');
}
if (actionRef.current) {
actionRef.current.reload();
}
}
}}
onCancel={() => {
setModalVisible(false);
setCurrentRow(undefined);
}}
values={currentRow}
enableStatusEnum={enableStatusEnum}
></EditCompanyListRow>
</Fragment>
);
}
export default ManagementList;

View File

@@ -0,0 +1,28 @@
import { request } from '@umijs/max';
export async function getCmsWechatGroupList(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/wechatGroup/list`, {
method: 'GET',
params: params,
});
}
export async function addCmsWechatGroup(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/wechatGroup`, {
method: 'POST',
data: params,
});
}
export async function putCmsWechatGroup(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/wechatGroup`, {
method: 'PUT',
data: params,
});
}
export async function delCmsWechatGroup(ids?: string) {
return request<API.GroupManagement.Result>(`/api/cms/wechatGroup/${ids}`, {
method: 'DELETE',
});
}

View File

@@ -0,0 +1,28 @@
import { request } from '@umijs/max';
export async function getCmsCommunityUserList(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/communityUser`, {
method: 'GET',
params: params,
});
}
export async function addCmsCommunityUser(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/communityUser`, {
method: 'POST',
data: params,
});
}
export async function putCmsCommunityUser(params?: API.GroupManagement.Params) {
return request<API.GroupManagement.Result>(`/api/cms/communityUser`, {
method: 'PUT',
data: params,
});
}
export async function delCmsCommunityUser(ids?: string) {
return request<API.GroupManagement.Result>(`/api/cms/communityUser/${ids}`, {
method: 'DELETE',
});
}