/* eslint-disable react/jsx-no-duplicate-props */ /* eslint-disable no-param-reassign */ /* eslint-disable array-callback-return */ import IconFont from '@/components/IconFont'; import { doFetch, getFetch, postFetch } from '@/utils/doFetch'; import { ProForm, ProFormDatePicker, ProFormDateRangePicker, ProFormGroup, ProFormList, ProFormSelect, ProFormText, ProFormUploadButton, } from '@ant-design/pro-components'; import { history } from '@umijs/max'; import { useAsyncEffect } from 'ahooks'; import { Button, message } from 'antd'; import dayjs from 'dayjs'; import { useEffect, useRef } from 'react'; import EditorItem from './EditorItem'; import Tagadder from './Tagadder'; function generateRandomString(length, character) { let randomString = ''; let characters = character ?? 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; for (let i = 0; i < length; i++) { let randomIndex = Math.floor(Math.random() * characters.length); randomString += characters.charAt(randomIndex); } return randomString; } const disabledDate = (current) => { // Can not select days before today and today return current && current < dayjs().startOf('day'); }; const disabledDates = (current, enddate) => { // Can not select days before today and today return ( (current && current < dayjs().startOf('day')) || (current && current > dayjs(enddate).endOf('day')) ); }; const Add = ({ refresh }) => { return ( { let res = await postFetch({ url: '/webtool/v1/org', params: { ...values, org_join_key: generateRandomString(18) }, }); if (res?.code === 0) { message.success('创建并绑定成功!'); refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} > ); }; const Join = ({ refresh }) => { return ( { let res = await postFetch({ url: '/webtool/userbind', params: { ...values }, }); if (res?.code === 0) { message.success('绑定成功!'); refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} > ); }; const Pwd = ({ refresh, currentUser }) => { const formRef = useRef(); useEffect(() => { setTimeout(() => { formRef?.current?.setFieldsValue({ oldpwd: null }); }); }, [formRef]); return ( { delete values?.old; let res = await doFetch({ url: '/webtool/v1/user/' + currentUser?.id, params: { ...values }, method: 'PUT', }); if (res?.code === 0) { doFetch({ url: '/webtool/logout', params: {} }).then((res) => { localStorage.removeItem('TOKENES'); history.push('/user/login'); message.success('密码修改成功,请重新登录'); }); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} >
({ validator(_, value) { if (!value || getFieldValue('password') === value) { return Promise.resolve(); } return Promise.reject(new Error('两次输入的密码不一致!')); }, }), ]} />
); }; const AddPro = ({ refresh, defaultid }) => { const formRef = useRef(); return ( { let steps = values?.steps ?? []; steps = steps?.map?.((it, i) => { return { ...it, }; }); let res = await postFetch({ url: '/webtool/v1/project', params: { ...values, steps }, }); if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} onValuesChange={(a, b) => { const curvalue = Object.values(a)[0]; if (Object?.keys(a).includes('user_list')) { formRef?.current?.setFieldsValue({ user_list: [...new Set([...(curvalue ?? []), defaultid])], }); } }} initialValues={{ user_list: [defaultid], }} > { let res = await getFetch({ url: '/webtool/v1/user', params: {} }); return res?.data?.map((it, i) => { return { label: it?.user_name, value: it?.id, }; }); }} placeholder="请选择" rules={[{ required: true, message: '请选择参与人员!' }]} /> {(f, index, action) => { return ( ); }} { return { output_path: value ? value?.toHTML?.() : null, }; }} name={'output_path'} label={'小组公告'} > ); }; const EditRemark = ({ refresh, initialValues, id }) => { const formRef = useRef(); return ( { let res = await doFetch({ url: '/webtool/v1/project/' + id, params: { ...values }, method: 'PUT', }); if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} onValuesChange={(a, b) => { const curvalue = Object.values(a)[0]; if (Object?.keys(a).includes('user_list')) { formRef?.current?.setFieldsValue({ user_list: [...new Set([...(curvalue ?? []), defaultid])], }); } }} initialValues={initialValues} > { return { output_path: value ? value?.toHTML?.() : null, }; }} name={'output_path'} > ); }; const CopyPro = ({ refresh, defaultid, initialValues = {} }) => { const formRef = useRef(); useAsyncEffect(async () => { let res = await getFetch({ url: '/webtool/v1/tag', params: { project_id: initialValues?.id }, }); res = res?.data?.map((it, i) => { return it?.id; }); formRef?.current?.setFieldsValue({ tags: res }); }, [initialValues]); return ( { let project_name = values?.project_name; if (values.project_name === initialValues.project_name) { project_name = '复制: ' + project_name; } let res = await postFetch({ url: '/webtool/v1/project', params: { ...values, steps: values?.steps?.map((it) => ({ name: it?.name, })), project_name, }, }); if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} onValuesChange={(a, b) => { const curvalue = Object.values(a)[0]; if (Object?.keys(a).includes('user_list')) { formRef?.current?.setFieldsValue({ user_list: [...new Set([...(curvalue ?? []), defaultid])], }); } }} > { let res = await getFetch({ url: '/webtool/v1/user', params: {} }); return res?.data?.map((it, i) => { return { label: it?.user_name, value: it?.id, }; }); }} placeholder="请选择" rules={[{ required: true, message: '请选择参与人员!' }]} /> {(f, index, action) => { return ( ); }} { let res = await getFetch({ url: '/webtool/v1/tag', params: { project_id: initialValues?.id }, }); return res?.data?.map((it, i) => { return { label: it?.tag_name, value: it?.id, }; }); }} placeholder="请选择" rules={[{ required: true, message: '请选择选择标签!' }]} /> ); }; const AddUsers = ({ refresh, project_id, initialValues = {} }) => { const formRef = useRef(); return ( { let res = await doFetch({ url: '/webtool/v1/project/' + project_id, params: { ...values }, method: 'PUT', }); if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} initialValues={initialValues} > { let res = await getFetch({ url: '/webtool/v1/user', params: {} }); return res?.data?.map((it, i) => { return { label: it?.user_name, value: it?.id, }; }); }} placeholder="请选择" rules={[{ required: true, message: '请选择参与人员!' }]} /> ); }; const AddMission = ({ refresh, step_id, sort, project_id, defaultValue, userList, enddate, title, org_id, }) => { return ( { return { ...it, uid: i, name: it?.fileName, status: 'done', url: it?.url, }; }), }} layout={'vertical'} style={{ marginTop: 24 }} grid={true} colProps={{ span: 24, }} onFinish={async (values) => { let res = {}; if (title === '新建任务') { res = await doFetch({ url: '/webtool/v1/item', params: { ...values, project_id, step_id, sort, }, }); } else if (title === '编辑任务') { res = await doFetch({ url: '/webtool/v1/item/' + defaultValue.id, params: { ...values, project_id }, method: 'PUT', }); } else if (title === '任务池-新建任务') { res = await doFetch({ url: '/webtool/v1/item', params: { ...values, project_id, step_id: org_id + 9999999, sort, }, }); } else if (title === '任务池-编辑任务') { res = await doFetch({ url: '/webtool/v1/item/' + defaultValue.id, params: { ...values }, method: 'PUT', }); } if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} > disabledDates(current, enddate), }} colProps={{ span: 12, }} /> { return { label: it?.user_name, value: it?.id, }; })} > { let res = await getFetch({ url: '/webtool/v1/tag', params: { project_id, org_id } }); return res?.data?.map((it, i) => { return { label: it?.tag_name, value: it?.id, }; }); }} placeholder="请选择" rules={[{ required: true, message: '请选择选择标签!' }]} /> { return { remark: value ? value?.toHTML?.() : null, }; }} name={'remark'} label={'备注'} > { const transvalue = value?.map((it) => { if (it.response) { return it?.response; } else { return it; } }); return { other: JSON.stringify(transvalue), }; }} /> ); }; const AddReply = ({ formRef }) => { return ( { return { reply: value ? value?.toHTML?.() : null, }; }} name={'reply'} > ); }; const AddTags = ({ refresh, step_id, sort, project_id, defaultValue, userList, enddate }) => { return ( { const params = { tags: changedvalue.tags?.map((it, i) => ({ ...it, project_id, tag_name: it?.text, })), }; doFetch({ url: '/webtool/v1/mutitag', params: { ...params } }); }} request={async () => { let alldata = await getFetch({ url: '/webtool/v1/tag', params: { project_id } }); return { tags: alldata?.data ? alldata?.data?.map((it) => ({ ...it, text: it.tag_name, })) : [], }; }} > ); }; const AddSteps = ({ refresh, columns, id, step_id, title, initialValues }) => { const formRef = useRef(); return ( { const sort = columns ? columns.length : 0; let res = {}; if (title === '编辑起止时间') { res = await doFetch({ url: '/webtool/v1/step/' + step_id, params: { ...values, project_id: id, other: values?.other?.toString() ?? null, }, method: 'PUT', }); } else { res = await doFetch({ url: '/webtool/v1/step', params: { ...values, sort, project_id: id, other: values?.other?.toString(), }, }); } if (res?.code === 0) { refresh?.(); } }} submitter={{ render: (props, doms) => { return [ , , ]; }, }} > {title === '编辑起止时间' ? null : ( )} ); }; export { Add, Join, Pwd, AddPro, AddMission, AddTags, AddSteps, AddUsers, AddReply, CopyPro, EditRemark, };