diff --git a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionInitiationsContent.tsx b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionInitiationsContent.tsx index bbaa9c44f..11af81a5d 100644 --- a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionInitiationsContent.tsx +++ b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionInitiationsContent.tsx @@ -1,17 +1,22 @@ -import React, { createContext, useEffect, useState } from 'react'; +import React, { createContext, useContext, useEffect, useState } from 'react'; import { CollectionProvider_deprecated, + parseCollectionName, RemoteSchemaComponent, SchemaComponent, SchemaComponentContext, - parseCollectionName, useAPIClient, } from '@tachybase/client'; -import { useContext } from 'react'; + import { NavBar } from 'antd-mobile'; import { useNavigate, useParams } from 'react-router-dom'; + import { useTranslation } from '../../locale'; + import '../../style/style.css'; + +import { MobileProvider } from '@tachybase/plugin-mobile-client/client'; + import { APPROVAL_ACTION_STATUS } from '../../constants'; import { useCreateSubmit } from '../hook/useCreateSubmit'; @@ -41,21 +46,28 @@ export const ViewActionInitiationsContent = () => { const [dataSource, name] = parseCollectionName(formConfig.config.collection); const resSchema = { type: 'void', - 'x-component': 'MPage', - 'x-designer': 'MPage.Designer', - 'x-component-props': {}, + 'x-component': 'MobileProvider', properties: { - Approval: { + page: { type: 'void', - 'x-decorator': 'CollectionProvider_deprecated', - 'x-decorator-props': { - name, - dataSource, - }, - 'x-component': 'RemoteSchemaComponent', - 'x-component-props': { - uid: formConfig.config.applyForm, - noForm: true, + 'x-component': 'MPage', + 'x-designer': 'MPage.Designer', + 'x-decorator': 'MobileProvider', + 'x-component-props': {}, + properties: { + Approval: { + type: 'void', + 'x-decorator': 'CollectionProvider_deprecated', + 'x-decorator-props': { + name, + dataSource, + }, + 'x-component': 'RemoteSchemaComponent', + 'x-component-props': { + uid: formConfig.config.applyForm, + noForm: true, + }, + }, }, }, }, @@ -86,6 +98,7 @@ export const ViewActionInitiationsContent = () => { ApplyActionStatusProvider: ContextInitiationsApprovalStatusProvider, ActionBarProvider, WithdrawActionProvider: WithdrawActionProvider, + MobileProvider, }} scope={{ useSubmit: useCreateSubmit, diff --git a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionUserInitiationsContent.tsx b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionUserInitiationsContent.tsx index 3e8f65015..d3cb6992b 100644 --- a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionUserInitiationsContent.tsx +++ b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/component/ViewActionUserInitiationsContent.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useContext, useEffect, useState } from 'react'; import { RemoteSchemaComponent, SchemaComponent, @@ -11,24 +11,28 @@ import { } from '@tachybase/client'; import { DetailsBlockProvider, FlowContext } from '@tachybase/plugin-workflow/client'; import { useFieldSchema, useForm } from '@tachybase/schema'; + import { Result, Spin } from 'antd'; -import { useContext } from 'react'; -import { ContextWithActionEnabled } from '../../context/WithActionEnabled'; -import { SchemaComponentContextProvider } from '../../context/SchemaComponent'; import { NavBar, Skeleton, TabBar } from 'antd-mobile'; +import { FileOutline, UserContactOutline } from 'antd-mobile-icons'; import { useNavigate, useParams } from 'react-router-dom'; + +import { ContextApprovalExecution } from '../../context/ApprovalExecution'; import { FormBlockProvider } from '../../context/FormBlock'; +import { SchemaComponentContextProvider } from '../../context/SchemaComponent'; +import { ContextWithActionEnabled } from '../../context/WithActionEnabled'; +import { useTranslation } from '../../locale'; +import { useFormBlockProps } from '../hook/useFormBlockProps'; +import { useUpdateSubmit } from '../hook/useUpadteSubmit'; +import { useWithdrawAction } from '../hook/useWithdrawAction'; import { ActionBarProvider } from '../provider/ActionBar'; import { ApplyActionStatusProvider } from '../provider/ApplyActionStatus'; import { WithdrawActionProvider } from '../provider/WithdrawAction'; -import { ContextApprovalExecution } from '../../context/ApprovalExecution'; -import { useUpdateSubmit } from '../hook/useUpadteSubmit'; -import { useFormBlockProps } from '../hook/useFormBlockProps'; -import { useWithdrawAction } from '../hook/useWithdrawAction'; -import { FileOutline, UserContactOutline } from 'antd-mobile-icons'; -import { useTranslation } from '../../locale'; + import '../../style/style.css'; +import { MobileProvider } from '@tachybase/plugin-mobile-client/client'; + export const ViewActionUserInitiationsContent = () => { const params = useParams(); const navigate = useNavigate(); @@ -118,18 +122,25 @@ export const ViewActionUserInitiationsContent = () => { const UserInitiationsComponent = (applyDetail, t, currContext) => { const formContextSchema = { type: 'void', - 'x-component': 'MPage', - 'x-designer': 'MPage.Designer', - 'x-component-props': {}, + 'x-component': 'MobileProvider', properties: { - Approval: { + page: { type: 'void', - 'x-decorator': 'SchemaComponentContextProvider', - 'x-decorator-props': { designable: false }, - 'x-component': 'RemoteSchemaComponent', - 'x-component-props': { - uid: applyDetail, - noForm: true, + 'x-component': 'MPage', + 'x-designer': 'MPage.Designer', + 'x-decorator': 'MobileProvider', + 'x-component-props': {}, + properties: { + Approval: { + type: 'void', + 'x-decorator': 'SchemaComponentContextProvider', + 'x-decorator-props': { designable: false }, + 'x-component': 'RemoteSchemaComponent', + 'x-component-props': { + uid: applyDetail, + noForm: true, + }, + }, }, }, }, @@ -137,14 +148,20 @@ const UserInitiationsComponent = (applyDetail, t, currContext) => { const approvalSchema = { type: 'void', - 'x-component': 'MPage', - 'x-designer': 'MPage.Designer', - 'x-component-props': {}, + 'x-component': 'MobileProvider', properties: { - process: { + page: { type: 'void', - 'x-decorator': 'CardItem', - 'x-component': 'ApprovalCommon.ViewComponent.MApprovalProcess', + 'x-component': 'MPage', + 'x-designer': 'MPage.Designer', + 'x-component-props': {}, + properties: { + process: { + type: 'void', + 'x-decorator': 'CardItem', + 'x-component': 'ApprovalCommon.ViewComponent.MApprovalProcess', + }, + }, }, }, }; @@ -160,6 +177,7 @@ const UserInitiationsComponent = (applyDetail, t, currContext) => { ApplyActionStatusProvider, WithdrawActionProvider, DetailsBlockProvider, + MobileProvider, }} scope={{ useForm, diff --git a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/hook/useCreateSubmit.tsx b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/hook/useCreateSubmit.tsx index 903ec75d1..2c88699e1 100644 --- a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/hook/useCreateSubmit.tsx +++ b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/initiations/hook/useCreateSubmit.tsx @@ -1,8 +1,10 @@ import { joinCollectionName, useAPIClient, useBlockRequestContext, useCollection_deprecated } from '@tachybase/client'; import { useField, useForm } from '@tachybase/schema'; -import { APPROVAL_ACTION_STATUS } from '../../constants'; -import { useNavigate, useParams } from 'react-router-dom'; + import { Toast } from 'antd-mobile'; +import { useNavigate, useParams } from 'react-router-dom'; + +import { APPROVAL_ACTION_STATUS } from '../../constants'; export function useCreateSubmit() { const from = useForm(); @@ -28,7 +30,6 @@ export function useCreateSubmit() { workflowId: workflowId, }, }); - console.log('🚀 ~ res ~ res:', res); if (res.status === 200) { Toast.show({ icon: 'success', diff --git a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/component/ViewActionTodosContent.tsx b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/component/ViewActionTodosContent.tsx index 145b8c9c5..371613ddc 100644 --- a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/component/ViewActionTodosContent.tsx +++ b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/component/ViewActionTodosContent.tsx @@ -1,3 +1,4 @@ +import React, { useContext, useEffect, useState } from 'react'; import { RemoteSchemaComponent, SchemaComponent, @@ -7,26 +8,30 @@ import { useRecord, useRequest, } from '@tachybase/client'; -import { Result } from 'antd'; -import _ from 'lodash'; -import React, { useContext, useEffect, useState } from 'react'; -import { useTranslation } from '../../locale'; import { DetailsBlockProvider } from '@tachybase/plugin-workflow/client'; -import { ContextWithActionEnabled } from '../../context/WithActionEnabled'; -import { ContextApprovalExecution } from '../../context/ApprovalExecution'; + +import { Result } from 'antd'; import { NavBar, Skeleton, TabBar } from 'antd-mobile'; +import { CouponOutline, FileOutline, ScanCodeOutline, UserContactOutline } from 'antd-mobile-icons'; +import _ from 'lodash'; import { useNavigate, useParams } from 'react-router-dom'; + +import { ContextApprovalExecution } from '../../context/ApprovalExecution'; +import { FormBlockProvider } from '../../context/FormBlock'; import { SchemaComponentContextProvider } from '../../context/SchemaComponent'; -import { ApprovalActionProvider } from '../provider/ApprovalAction'; -import { ApprovalFormBlockDecorator } from '../provider/ApprovalFormBlock'; +import { ContextWithActionEnabled } from '../../context/WithActionEnabled'; +import { useTranslation } from '../../locale'; import { useApprovalDetailBlockProps } from '../hook/useApprovalDetailBlockProps'; import { useApprovalFormBlockProps } from '../hook/useApprovalFormBlockProps'; import { useSubmit } from '../hook/useSubmit'; -import { CouponOutline, FileOutline, ScanCodeOutline, UserContactOutline } from 'antd-mobile-icons'; import { ActionBarProvider } from '../provider/ActionBarProvider'; -import { FormBlockProvider } from '../../context/FormBlock'; +import { ApprovalActionProvider } from '../provider/ApprovalAction'; +import { ApprovalFormBlockDecorator } from '../provider/ApprovalFormBlock'; + import '../../style/style.css'; +import { MobileProvider } from '@tachybase/plugin-mobile-client/client'; + // 审批-待办-查看: 内容 export const ViewActionTodosContent = () => { const { t } = useTranslation(); @@ -130,18 +135,25 @@ export const ViewActionTodosContent = () => { const todosComponent = (applyDetail, t, currContext) => { const formContextSchema = { type: 'void', - 'x-component': 'MPage', - 'x-designer': 'MPage.Designer', - 'x-component-props': {}, + 'x-component': 'MobileProvider', properties: { - Approval: { + page: { type: 'void', - 'x-decorator': 'SchemaComponentContextProvider', - 'x-decorator-props': { designable: false }, - 'x-component': 'RemoteSchemaComponent', - 'x-component-props': { - uid: applyDetail, - noForm: true, + 'x-component': 'MPage', + 'x-designer': 'MPage.Designer', + 'x-decorator': 'MobileProvider', + 'x-component-props': {}, + properties: { + Approval: { + type: 'void', + 'x-decorator': 'SchemaComponentContextProvider', + 'x-decorator-props': { designable: false }, + 'x-component': 'RemoteSchemaComponent', + 'x-component-props': { + uid: applyDetail, + noForm: true, + }, + }, }, }, }, @@ -149,14 +161,20 @@ const todosComponent = (applyDetail, t, currContext) => { const approvalSchema = { type: 'void', - 'x-component': 'MPage', - 'x-designer': 'MPage.Designer', - 'x-component-props': {}, + 'x-component': 'MobileProvider', properties: { - process: { + page: { type: 'void', - 'x-decorator': 'CardItem', - 'x-component': 'ApprovalCommon.ViewComponent.MApprovalProcess', + 'x-component': 'MPage', + 'x-designer': 'MPage.Designer', + 'x-component-props': {}, + properties: { + process: { + type: 'void', + 'x-decorator': 'CardItem', + 'x-component': 'ApprovalCommon.ViewComponent.MApprovalProcess', + }, + }, }, }, }; @@ -173,6 +191,7 @@ const todosComponent = (applyDetail, t, currContext) => { ApprovalFormBlockProvider: ApprovalFormBlockDecorator, DetailsBlockProvider, TabBar, + MobileProvider, }} scope={{ useApprovalDetailBlockProps, diff --git a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/index.tsx b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/index.tsx index 11afe4d76..36760c16d 100644 --- a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/index.tsx +++ b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/index.tsx @@ -1,46 +1,49 @@ -import { SchemaComponentOptions } from '@tachybase/client'; import React, { PropsWithChildren } from 'react'; +import { SchemaComponentOptions } from '@tachybase/client'; + import { - MMenuBlockInitializer, - MMenu, - MContainer, - MTabBar, - MPage, - MHeader, - MSettingsBlockInitializer, - MSettings, - useGridCardBlockItemProps, - useGridCardBlockProps, - TabSearch, - TabSearchProvider, - TabSearchBlockInitializer, - TabSearchFieldItem, - TabSearchFieldMItem, - TabSearchCollapsibleInputItem, - TabSearchCollapsibleInputMItem, - TabSearchFieldSchemaInitializerGadget, - SwiperBlockInitializer, - SwiperBlock, - SwiperPage, - ImageSearchView, + CollectionField, ImageSearchInitializer, - ImageSearchProvider, ImageSearchItemIntializer, ImageSearchItemToolbar, ImageSearchItemView, + ImageSearchProvider, + ImageSearchView, + MCheckbox, + MContainer, + MDatePicker, + MHeader, + MImageUploader, + MInput, + MMenu, + MMenuBlockInitializer, + MPage, + MRadio, + MSettings, + MSettingsBlockInitializer, + MTabBar, NoticeBlock, NoticeBlockInitializer, - useSwiperBlockProps, + SwiperBlock, + SwiperBlockInitializer, + SwiperPage, + TabSearch, + TabSearchBlockInitializer, + TabSearchCollapsibleInputItem, + TabSearchCollapsibleInputMItem, + TabSearchFieldItem, + TabSearchFieldMItem, + TabSearchFieldSchemaInitializerGadget, + TabSearchProvider, + useGridCardBlockItemProps, + useGridCardBlockProps, usePropsOptionalImageSearchItemField, usePropsRelatedImageSearchItemField, + useSwiperBlockProps, useTabSearchFieldItemProps, useTabSearchFieldItemRelatedProps, - MInput, - MCheckbox, - MDatePicker, - MRadio, - MImageUploader, } from './schema'; + import './bridge'; import './assets/svg'; @@ -83,6 +86,7 @@ export const MobileCore: React.FC = (props) => { MDatePicker, MRadio, MImageUploader, + CollectionField: CollectionField, }} scope={{ useGridCardBlockItemProps, diff --git a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/DatePicker/DatePicker.tsx b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/DatePicker/DatePicker.tsx index 0166de9f1..4db36bcab 100644 --- a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/DatePicker/DatePicker.tsx +++ b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/DatePicker/DatePicker.tsx @@ -1,7 +1,8 @@ -import { dayjs } from '@tachybase/utils/client'; -import { connect, mapProps } from '@tachybase/schema'; -import { Button, DatePicker, Input, Space } from 'antd-mobile'; import React, { useState } from 'react'; +import { connect, mapProps, mapReadPretty } from '@tachybase/schema'; +import { dayjs } from '@tachybase/utils/client'; + +import { Button, DatePicker, Input, Space } from 'antd-mobile'; export const MDatePicker = connect( (props) => { @@ -33,5 +34,10 @@ export const MDatePicker = connect( mapProps((props) => { return { ...props }; }), + mapReadPretty((props) => { + const changeProps = { ...props }; + changeProps.value = dayjs(props.value).format(props.dateFormat); + return ; + }), ); export default MDatePicker; diff --git a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/ImageUploader/ImageUploader.tsx b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/ImageUploader/ImageUploader.tsx index 37061eb0f..7144ef492 100644 --- a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/ImageUploader/ImageUploader.tsx +++ b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/ImageUploader/ImageUploader.tsx @@ -1,7 +1,8 @@ +import React, { useEffect, useState } from 'react'; import { useAPIClient } from '@tachybase/client'; import { connect, mapProps, mapReadPretty, useForm } from '@tachybase/schema'; -import { ImageUploadItem, ImageUploader } from 'antd-mobile'; -import React, { useEffect, useState } from 'react'; + +import { ImageUploader, ImageUploadItem } from 'antd-mobile'; export const MImageUploader = connect( (props) => { @@ -52,6 +53,18 @@ export const MImageUploader = connect( mapProps((props) => { return { ...props }; }), + mapReadPretty((props) => { + return ( + { + return { url: '' }; + }} + /> + ); + }), ); export default MImageUploader; diff --git a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/Input/Input.tsx b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/Input/Input.tsx index 58976e897..a05671f98 100644 --- a/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/Input/Input.tsx +++ b/packages/plugins/@tachybase/plugin-mobile-client/src/client/core/schema/components/antd-mobile/Input/Input.tsx @@ -1,4 +1,6 @@ -import { connect, mapProps } from '@tachybase/schema'; +import React from 'react'; +import { connect, mapProps, mapReadPretty } from '@tachybase/schema'; + import { Input, InputProps, TextArea, TextAreaProps } from 'antd-mobile'; type ComposedInput = React.FC & { @@ -8,14 +10,20 @@ type ComposedInput = React.FC & { export const MInput: ComposedInput = connect( Input, mapProps((props) => { - return { placeholder: '请输入内容', clearable: true, ...props }; + return { placeholder: '请输入内容', clearable: true, ...props, style: { fontSize: '12px' } }; + }), + mapReadPretty((props) => { + return ; }), ); const MTextArea = connect( TextArea, mapProps((props) => { - return { placeholder: '请输入内容', ...props }; + return { ...props, placeholder: '请输入内容', clearable: true, style: { fontSize: '12px' } }; + }), + mapReadPretty((props) => { + return