From 31aed21a00a4411e2f344e1ac516fcc0855ec09f Mon Sep 17 00:00:00 2001 From: SEN Date: Wed, 24 Jan 2024 10:10:13 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E9=9C=80?= =?UTF-8?q?=E6=B1=82:=E9=9A=90=E8=97=8F=E8=A1=A8=E5=8D=95=E9=87=8C?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=AD=97=E6=AE=B5,=E5=A6=82=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E6=A0=87=E8=AF=86/=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/column.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/column.tsx b/src/config/column.tsx index 43aab0452..c7d1e45ac 100644 --- a/src/config/column.tsx +++ b/src/config/column.tsx @@ -150,7 +150,7 @@ export const FullEntityColumns = (fields: model.FieldModel[]) => { remark: '由系统生成的唯一标记,无实义.', options: { fixed: true, - visible: true, + visible: false, }, }, { @@ -160,7 +160,7 @@ export const FullEntityColumns = (fields: model.FieldModel[]) => { valueType: '描述型', remark: '描述信息', options: { - visible: true, + visible: false, }, }, { -- Gitee From 89543c783caea8b550a659f054e07d009d6aad8b Mon Sep 17 00:00:00 2001 From: wangbo Date: Fri, 26 Jan 2024 11:29:16 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=B1=95=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/executor/open/form/config.tsx | 35 ++++- src/executor/open/form/detail/archive.tsx | 12 +- src/executor/open/form/index.tsx | 103 +++++++++++-- src/executor/open/form/matters/index.tsx | 141 ++++++++++++++++++ .../open/form/relateMatters/baseForm.tsx | 57 +++++++ .../open/form/relateMatters/index.tsx | 85 +++++++++++ .../operate/entityForm/labelsForm.tsx | 13 ++ src/hooks/useMenuUpdate.ts | 15 +- src/ts/base/schema.ts | 2 + 9 files changed, 445 insertions(+), 18 deletions(-) create mode 100644 src/executor/open/form/matters/index.tsx create mode 100644 src/executor/open/form/relateMatters/baseForm.tsx create mode 100644 src/executor/open/form/relateMatters/index.tsx diff --git a/src/executor/open/form/config.tsx b/src/executor/open/form/config.tsx index de3425679..ba243b01f 100644 --- a/src/executor/open/form/config.tsx +++ b/src/executor/open/form/config.tsx @@ -2,7 +2,7 @@ import { MenuItemType } from 'typings/globelType'; import { IForm } from '@/ts/core'; import React from 'react'; import EntityIcon from '@/components/Common/GlobalComps/entityIcon'; -import { model } from '@/ts/base'; +import { kernel, model } from '@/ts/base'; import { XEntity } from '@/ts/base/schema'; /** 创建选择字段菜单 */ const buildSpeciesFiledsTree = (fields: model.FieldModel[]): MenuItemType[] => { @@ -67,7 +67,40 @@ const buildSpeciesItemsTree = ( } return result; }; +export const loadCohortMembers = async (): Promise => { + const res = await kernel.querySubTargetById({ + id: '464369144951869440', + subTypeNames: ['单位', '医院', '大学'], + page: { + offset: 0, + limit: 2000, + filter: '', + }, + }); + if (res.success && res.data.total > 0) { + return { + children: res.data.result.map((item) => { + return { + children: [], + icon: undefined, + itemType: '集群单位', + key: item.id, + item, + label: item.name, + }; + }), + icon: undefined, + item: { + name: '浙江省职务科技成果转化组织群', + }, + itemType: 'Tab', + key: '123', + label: '浙江省职务科技成果转化组织群', + }; + } + return; +}; /** 加载表单分类菜单 */ export const loadSpeciesItemMenu = (form: IForm): MenuItemType => { const SpeciesFields = form.fields.filter((i) => i.options?.species); diff --git a/src/executor/open/form/detail/archive.tsx b/src/executor/open/form/detail/archive.tsx index f2612ef17..1f7427198 100644 --- a/src/executor/open/form/detail/archive.tsx +++ b/src/executor/open/form/detail/archive.tsx @@ -19,14 +19,20 @@ const ThingArchive: React.FC = ({ instances }) => { {instances.map((a, index) => ( - + ))} ); }; -const ArchiveItem: React.FC<{ instance: schema.XWorkInstance }> = ({ instance }) => { +const ArchiveItem: React.FC<{ + instance: schema.XWorkInstance; + defaultOpenKey: string; +}> = ({ instance, defaultOpenKey }) => { const [task, setTask] = useState(); const [data, setData] = useState(); const belong = @@ -110,7 +116,7 @@ const ArchiveItem: React.FC<{ instance: schema.XWorkInstance }> = ({ instance }) }; return ( - + void; } - +let selectedKey: string = ''; +let filter = ''; /** 表单查看 */ const FormView: React.FC = ({ form, finished }) => { const [select, setSelcet] = useState(); @@ -28,16 +31,65 @@ const FormView: React.FC = ({ form, finished }) => { const filterExp: any[] = JSON.parse(dataRange?.filterExp ?? '[]'); const labels = dataRange?.labels ?? []; const FormBrower: React.FC = () => { - const [, rootMenu, selectMenu, setSelectMenu] = useMenuUpdate( + const [, rootMenu, selectMenu, setSelectMenu, refreshMenu] = useMenuUpdate( () => config.loadSpeciesItemMenu(form), new Controller(form.key), ); + const [totalCount, setTotalCount] = useState(0); + useEffect(() => { + //赋权-成果库-合同-转化信息- + if ( + [ + '535176821000519681', + '535176818458771457', + '535176822128787457', + '535176818869813249', + '535176823366107137', + ].includes(form.id) + ) { + config.loadCohortMembers().then((res) => { + res && refreshMenu(res); + }); + } + return () => { + selectedKey = ''; + filter = ''; + setTotalCount(0); + }; + }, []); if (!selectMenu || !rootMenu) return <>; const loadContent = () => { if (select) { - return ( - setSelcet(undefined)} /> - ); + switch (form.metadata.openType) { + case '事项': + //办事视图明细 查看 + return ( + setSelcet(undefined)} + openForm={form.metadata.id} + /> + ); + // 成果视图表单 查看 + case '关联事项': + return ( + setSelcet(undefined)} + /> + ); + default: + //默认卡片视图 + return ( + setSelcet(undefined)} + /> + ); + } } return ( = ({ form, finished }) => { mode: 'infinite', showScrollbar: 'onHover', }} - pager={{ visible: false }} + pager={{ + // visible: form.id === '535176818458771457', + visible: true, + showInfo: true, + infoText: '总计: ' + totalCount + ' 个', + }} onRowDblClick={(e: any) => setSelcet(e.data)} filterValue={filterExp} dataSource={ new CustomStore({ key: 'id', - async load(loadOptions) { + async load(loadOptions: any) { if ((filterExp && filterExp.length > 0) || labels.length > 0) { loadOptions.userData = labels.map((a) => a.value); - if (selectMenu.item?.value) { + if (selectMenu.key !== selectedKey) { + loadOptions.skip = 0; + } + + if (selectMenu.itemType === '集群单位' && selectMenu.item.id) { + loadOptions = { + ...loadOptions, + options: { + match: { belongId: selectMenu.item.id }, + }, + }; + } else if (selectMenu.item?.value) { loadOptions.userData.push(selectMenu.item.value); } else if (selectMenu.item?.code) { loadOptions.userData.push(selectMenu.item.code); } - return await form.loadThing(loadOptions); + + const res = await form.loadThing({ + ...loadOptions, + requireTotalCount: true, + }); + + if ( + loadOptions.userData.length > 0 && + JSON.stringify(loadOptions.userData) !== filter + ) { + setTotalCount(res.totalCount); + selectedKey = selectMenu.key; + filter = JSON.stringify(loadOptions.filter); + } + + return res; } return { data: [], success: true, totalCount: 0, groupCount: 0 }; }, diff --git a/src/executor/open/form/matters/index.tsx b/src/executor/open/form/matters/index.tsx new file mode 100644 index 000000000..1d4e88f2b --- /dev/null +++ b/src/executor/open/form/matters/index.tsx @@ -0,0 +1,141 @@ +import { Card, Table } from 'antd'; +import React, { useState, useEffect } from 'react'; +import { ImUndo2 } from 'react-icons/im'; +import { IForm } from '@/ts/core'; +import { schema } from '@/ts/base'; +import orgCtrl from '@/ts/controller'; +import { InstanceDataModel } from '@/ts/base/model'; +import EntityIcon from '@/components/Common/GlobalComps/entityIcon'; +import WorkForm from '@/executor/tools/workForm'; + +/** + * 事项-查看 + */ +interface IProps { + form: IForm; + thingData: schema.XThing; + onBack: () => void; + openForm: string; // 打开的表单 +} +const columns = [ + { + title: '单位名称', + dataIndex: 'belongId', + render: (text: string) => , + }, + { + title: '审批人', + dataIndex: 'createUser', + render: (text: string) => , + }, + { + title: '节点', + dataIndex: 'title', + }, + { + title: '审批时间', + dataIndex: 'createTime', + }, + { + title: '备注信息', + width: 300, + dataIndex: 'comment', + }, +]; +/** + * 物-查看 + * @returns + */ +const WorkFormView: React.FC = (props) => { + const hasDoneTasks = Object.values(props.thingData.archives); + const instance = hasDoneTasks[0]; + const [task, setTask] = useState(); + const [data, setData] = useState(); + const belong = + orgCtrl.user.companys.find((a) => a.id == instance?.belongId) || orgCtrl.user; + + useEffect(() => { + setTimeout(async () => { + const detail = await orgCtrl.work.loadInstanceDetail( + instance.id, + instance.belongId, + ); + if (detail) { + setTask(detail.tasks); + setData(JSON.parse(detail.data || '{}')); + } + }, 0); + }, []); + + /** 渲染表单 */ + const renderWorkForm = () => { + if (!data || !task) { + return <>; + } + const instanceList = [ + { + title: '开始', + belongId: instance?.belongId, + createTime: instance?.createTime, + createUser: instance?.createUser, + comment: '提交', + }, + ]; + task.forEach((tItem) => { + if (!tItem.records) { + return; + } + const instanceItems: any[] = tItem.records?.map((record: any) => { + return { + title: tItem.title, + belongId: instance?.belongId, + createTime: record.createTime, + createUser: record.createUser, + comment: record.comment ?? '同意', + }; + }); + instanceList.push(...instanceItems); + }); + return ( + <> + {data && ( + <> + + 流程明细} + columns={columns} + size="small" + dataSource={instanceList} + /> + + )} + + ); + }; + + return ( + { + props.onBack(); + }}> + + + + 返回 + + }> + {renderWorkForm()} + + ); +}; + +export default WorkFormView; diff --git a/src/executor/open/form/relateMatters/baseForm.tsx b/src/executor/open/form/relateMatters/baseForm.tsx new file mode 100644 index 000000000..b0f7440dd --- /dev/null +++ b/src/executor/open/form/relateMatters/baseForm.tsx @@ -0,0 +1,57 @@ +import React, { useEffect, useState } from 'react'; +import { schema } from '@/ts/base'; +import orgCtrl from '@/ts/controller'; +import { Card, Timeline } from 'antd'; +import WorkForm from '@/executor/tools/workForm'; +import { InstanceDataModel } from '@/ts/base/model'; + +interface IProps { + instances: schema.XWorkInstance[]; +} +/** + * 存储-物-归档日志 + */ +const ThingArchive: React.FC = ({ instances }) => { + return ( + + + {instances + .filter((s) => s.defineId === '535193119474462720') + .map((a, index) => ( + + ))} + + + ); +}; + +const ArchiveItem: React.FC<{ instance: schema.XWorkInstance }> = ({ instance }) => { + const [task, setTask] = useState(); + const [data, setData] = useState(); + const belong = + orgCtrl.user.companys.find((a) => a.id == instance.belongId) || orgCtrl.user; + + useEffect(() => { + setTimeout(async () => { + const detail = await orgCtrl.work.loadInstanceDetail( + instance.id, + instance.belongId, + ); + if (detail) { + setTask(detail.tasks); + setData(JSON.parse(detail.data || '{}')); + } + }, 10); + }, []); + + if (task == undefined) return <>; + + return ( + + {data && data.node && ( + + )} + + ); +}; +export default ThingArchive; diff --git a/src/executor/open/form/relateMatters/index.tsx b/src/executor/open/form/relateMatters/index.tsx new file mode 100644 index 000000000..b2c42409b --- /dev/null +++ b/src/executor/open/form/relateMatters/index.tsx @@ -0,0 +1,85 @@ +import { Card, Tabs } from 'antd'; +import React from 'react'; +import { ImUndo2 } from 'react-icons/im'; +import { IForm } from '@/ts/core'; +import { schema } from '@/ts/base'; +import ThingArchive from '../detail/archive'; +import BaseForm from './baseForm'; +interface IProps { + form: IForm; + thingData: schema.XThing; + onBack: () => void; +} + +/** + * 关联事项 + * @returns + */ +const RelateMatters: React.FC = (props) => { + const hasDoneTasks = Object.values(props.thingData.archives); + + return ( + + , + }, + { + key: '2', + label: `成果转化列表`, + children: ( + i.defineId === '535193248780660736', + )} + /> + ), + }, + { + key: '3', + label: `合同信息`, + children: , + }, + { + key: '4', + label: `收益分配信息`, + children: , + }, + { + key: '5', + label: `赋权信息`, + children: ( + i.defineId === '535193499293855744', + )} + /> + ), + }, + { + key: '6', + label: `流程信息`, + children: , + }, + ]} + tabBarExtraContent={ +
{ + props.onBack(); + }}> + + + + 返回 +
+ } + /> +
+ ); +}; + +export default RelateMatters; diff --git a/src/executor/operate/entityForm/labelsForm.tsx b/src/executor/operate/entityForm/labelsForm.tsx index 8456e6e1a..4efdd6a86 100644 --- a/src/executor/operate/entityForm/labelsForm.tsx +++ b/src/executor/operate/entityForm/labelsForm.tsx @@ -93,6 +93,19 @@ const LabelsForm = (props: Iprops) => { rules: [{ required: true, message: '类型为必填项' }], }, }, + { + title: '查看方式', + dataIndex: 'openType', + valueType: 'select', + fieldProps: { + options: ['卡片', '事项', '关联事项'].map((i) => { + return { + value: i, + label: i, + }; + }), + }, + }, ]; if (readonly) { columns.push(...EntityColumns(props.current!.metadata)); diff --git a/src/hooks/useMenuUpdate.ts b/src/hooks/useMenuUpdate.ts index 1b165460c..8f78c207d 100644 --- a/src/hooks/useMenuUpdate.ts +++ b/src/hooks/useMenuUpdate.ts @@ -18,16 +18,23 @@ const useMenuUpdate = ( MenuItemType | undefined, MenuItemType | undefined, (item: MenuItemType) => void, + (item?: MenuItemType) => void, ] => { const [key, setKey] = useState(''); const [rootMenu, setRootMenu] = useState(); const [selectMenu, setSelectMenu] = useState(); const ctrl = controller || orgCtrl; - + const [defaultMenu, setdefaultMenu] = useState(); /** 刷新菜单 */ - const refreshMenu = () => { + const refreshMenu = (defData?: any) => { setKey(generateUuid()); - const newMenus = loadMenu(); + let newMenus = loadMenu(); + if (defData?.key) { + setdefaultMenu(defData); + newMenus.children.push(defData); + } else if (defaultMenu) { + newMenus.children.push(defaultMenu); + } var item = findMenuItemByKey(newMenus, ctrl.currentKey); if (item === undefined) { item = newMenus; @@ -56,7 +63,7 @@ const useMenuUpdate = ( ctrl.unsubscribe(id); }; }, []); - return [key, rootMenu, selectMenu, onSelectMenu]; + return [key, rootMenu, selectMenu, onSelectMenu, refreshMenu]; }; export default useMenuUpdate; diff --git a/src/ts/base/schema.ts b/src/ts/base/schema.ts index d4cee3fca..97e1be557 100644 --- a/src/ts/base/schema.ts +++ b/src/ts/base/schema.ts @@ -193,6 +193,8 @@ export type XForm = { options: XFormProps | undefined; // 表单的特性 attributes: XAttribute[]; + //打开方式 + openType?: string; // 使用表单的流程节点 bindNodes: XWorkNode[] | undefined; // 表单的目录 -- Gitee From d89cc2097914acca3a033bc00bcbdce555b07655 Mon Sep 17 00:00:00 2001 From: wangbo Date: Fri, 26 Jan 2024 15:30:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=A9=BA?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open/form/relateMatters/index.tsx | 52 +++++++++++++++---- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/src/executor/open/form/relateMatters/index.tsx b/src/executor/open/form/relateMatters/index.tsx index b2c42409b..a021a72c6 100644 --- a/src/executor/open/form/relateMatters/index.tsx +++ b/src/executor/open/form/relateMatters/index.tsx @@ -1,4 +1,4 @@ -import { Card, Tabs } from 'antd'; +import { Card, Tabs, Empty } from 'antd'; import React from 'react'; import { ImUndo2 } from 'react-icons/im'; import { IForm } from '@/ts/core'; @@ -31,32 +31,62 @@ const RelateMatters: React.FC = (props) => { key: '2', label: `成果转化列表`, children: ( - i.defineId === '535193248780660736', + <> + {hasDoneTasks.filter((i) => i.defineId === '535193248780660736').length > + 0 ? ( + i.defineId === '535193248780660736', + )} + /> + ) : ( + )} - /> + ), }, { key: '3', label: `合同信息`, - children: , + children: ( + <> + {hasDoneTasks.filter((i) => i.defineId === '53519324878').length > 0 ? ( + + ) : ( + + )} + + ), }, { key: '4', label: `收益分配信息`, - children: , + children: ( + <> + {hasDoneTasks.filter((i) => i.defineId === '53519324878').length > 0 ? ( + + ) : ( + + )} + + ), }, { key: '5', label: `赋权信息`, children: ( - i.defineId === '535193499293855744', + <> + {hasDoneTasks.filter((i) => i.defineId === '535193499293855744').length > + 0 ? ( + i.defineId === '535193499293855744', + )} + /> + ) : ( + )} - /> + ), }, { -- Gitee From 89fd80e71d9d1068b8bd88b23e41487e02db984e Mon Sep 17 00:00:00 2001 From: wangbo Date: Mon, 29 Jan 2024 13:57:47 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=85=B3=E8=81=94?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=B1=95=E7=A4=BA(=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=AE=9A=E5=88=B6=E5=86=85=E5=AE=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/executor/open/form/config.tsx | 36 +------ src/executor/open/form/index.tsx | 28 +----- .../open/form/relateMatters/baseForm.tsx | 57 ----------- .../open/form/relateMatters/index.tsx | 94 ++++--------------- 4 files changed, 21 insertions(+), 194 deletions(-) delete mode 100644 src/executor/open/form/relateMatters/baseForm.tsx diff --git a/src/executor/open/form/config.tsx b/src/executor/open/form/config.tsx index ba243b01f..946246f08 100644 --- a/src/executor/open/form/config.tsx +++ b/src/executor/open/form/config.tsx @@ -2,7 +2,7 @@ import { MenuItemType } from 'typings/globelType'; import { IForm } from '@/ts/core'; import React from 'react'; import EntityIcon from '@/components/Common/GlobalComps/entityIcon'; -import { kernel, model } from '@/ts/base'; +import { model } from '@/ts/base'; import { XEntity } from '@/ts/base/schema'; /** 创建选择字段菜单 */ const buildSpeciesFiledsTree = (fields: model.FieldModel[]): MenuItemType[] => { @@ -67,40 +67,6 @@ const buildSpeciesItemsTree = ( } return result; }; -export const loadCohortMembers = async (): Promise => { - const res = await kernel.querySubTargetById({ - id: '464369144951869440', - subTypeNames: ['单位', '医院', '大学'], - page: { - offset: 0, - limit: 2000, - filter: '', - }, - }); - if (res.success && res.data.total > 0) { - return { - children: res.data.result.map((item) => { - return { - children: [], - icon: undefined, - itemType: '集群单位', - key: item.id, - item, - label: item.name, - }; - }), - icon: undefined, - item: { - name: '浙江省职务科技成果转化组织群', - }, - itemType: 'Tab', - key: '123', - label: '浙江省职务科技成果转化组织群', - }; - } - - return; -}; /** 加载表单分类菜单 */ export const loadSpeciesItemMenu = (form: IForm): MenuItemType => { const SpeciesFields = form.fields.filter((i) => i.options?.species); diff --git a/src/executor/open/form/index.tsx b/src/executor/open/form/index.tsx index 5220fb2fa..4d7fbb834 100644 --- a/src/executor/open/form/index.tsx +++ b/src/executor/open/form/index.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useState } from 'react'; import FullScreenModal from '@/components/Common/fullScreen'; import { IForm } from '@/ts/core'; import * as config from './config'; @@ -31,32 +31,11 @@ const FormView: React.FC = ({ form, finished }) => { const filterExp: any[] = JSON.parse(dataRange?.filterExp ?? '[]'); const labels = dataRange?.labels ?? []; const FormBrower: React.FC = () => { - const [, rootMenu, selectMenu, setSelectMenu, refreshMenu] = useMenuUpdate( + const [, rootMenu, selectMenu, setSelectMenu] = useMenuUpdate( () => config.loadSpeciesItemMenu(form), new Controller(form.key), ); const [totalCount, setTotalCount] = useState(0); - useEffect(() => { - //赋权-成果库-合同-转化信息- - if ( - [ - '535176821000519681', - '535176818458771457', - '535176822128787457', - '535176818869813249', - '535176823366107137', - ].includes(form.id) - ) { - config.loadCohortMembers().then((res) => { - res && refreshMenu(res); - }); - } - return () => { - selectedKey = ''; - filter = ''; - setTotalCount(0); - }; - }, []); if (!selectMenu || !rootMenu) return <>; const loadContent = () => { if (select) { @@ -71,7 +50,7 @@ const FormView: React.FC = ({ form, finished }) => { openForm={form.metadata.id} /> ); - // 成果视图表单 查看 + // 关联事项表单查看 case '关联事项': return ( = ({ form, finished }) => { showScrollbar: 'onHover', }} pager={{ - // visible: form.id === '535176818458771457', visible: true, showInfo: true, infoText: '总计: ' + totalCount + ' 个', diff --git a/src/executor/open/form/relateMatters/baseForm.tsx b/src/executor/open/form/relateMatters/baseForm.tsx deleted file mode 100644 index b0f7440dd..000000000 --- a/src/executor/open/form/relateMatters/baseForm.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { schema } from '@/ts/base'; -import orgCtrl from '@/ts/controller'; -import { Card, Timeline } from 'antd'; -import WorkForm from '@/executor/tools/workForm'; -import { InstanceDataModel } from '@/ts/base/model'; - -interface IProps { - instances: schema.XWorkInstance[]; -} -/** - * 存储-物-归档日志 - */ -const ThingArchive: React.FC = ({ instances }) => { - return ( - - - {instances - .filter((s) => s.defineId === '535193119474462720') - .map((a, index) => ( - - ))} - - - ); -}; - -const ArchiveItem: React.FC<{ instance: schema.XWorkInstance }> = ({ instance }) => { - const [task, setTask] = useState(); - const [data, setData] = useState(); - const belong = - orgCtrl.user.companys.find((a) => a.id == instance.belongId) || orgCtrl.user; - - useEffect(() => { - setTimeout(async () => { - const detail = await orgCtrl.work.loadInstanceDetail( - instance.id, - instance.belongId, - ); - if (detail) { - setTask(detail.tasks); - setData(JSON.parse(detail.data || '{}')); - } - }, 10); - }, []); - - if (task == undefined) return <>; - - return ( - - {data && data.node && ( - - )} - - ); -}; -export default ThingArchive; diff --git a/src/executor/open/form/relateMatters/index.tsx b/src/executor/open/form/relateMatters/index.tsx index a021a72c6..d4c75f3cb 100644 --- a/src/executor/open/form/relateMatters/index.tsx +++ b/src/executor/open/form/relateMatters/index.tsx @@ -1,10 +1,9 @@ -import { Card, Tabs, Empty } from 'antd'; +import { Card, Tabs } from 'antd'; import React from 'react'; import { ImUndo2 } from 'react-icons/im'; import { IForm } from '@/ts/core'; import { schema } from '@/ts/base'; import ThingArchive from '../detail/archive'; -import BaseForm from './baseForm'; interface IProps { form: IForm; thingData: schema.XThing; @@ -16,85 +15,26 @@ interface IProps { * @returns */ const RelateMatters: React.FC = (props) => { - const hasDoneTasks = Object.values(props.thingData.archives); + const doneTasks = Object.values(props.thingData.archives); + + /** 加载每一项 */ + const loadItems = () => { + const items = []; + for (const task of doneTasks) { + items.push({ + key: task.id, + label: task.title, + forceRender: true, + children: , + }); + } + return items; + }; return ( , - }, - { - key: '2', - label: `成果转化列表`, - children: ( - <> - {hasDoneTasks.filter((i) => i.defineId === '535193248780660736').length > - 0 ? ( - i.defineId === '535193248780660736', - )} - /> - ) : ( - - )} - - ), - }, - { - key: '3', - label: `合同信息`, - children: ( - <> - {hasDoneTasks.filter((i) => i.defineId === '53519324878').length > 0 ? ( - - ) : ( - - )} - - ), - }, - { - key: '4', - label: `收益分配信息`, - children: ( - <> - {hasDoneTasks.filter((i) => i.defineId === '53519324878').length > 0 ? ( - - ) : ( - - )} - - ), - }, - { - key: '5', - label: `赋权信息`, - children: ( - <> - {hasDoneTasks.filter((i) => i.defineId === '535193499293855744').length > - 0 ? ( - i.defineId === '535193499293855744', - )} - /> - ) : ( - - )} - - ), - }, - { - key: '6', - label: `流程信息`, - children: , - }, - ]} + items={loadItems()} tabBarExtraContent={