fix 短信模板配置

This commit is contained in:
wkj 2024-09-29 18:10:08 +08:00
parent 0bd528c6f4
commit 3de8a4a0a5
7 changed files with 61 additions and 110 deletions

View File

@ -31,10 +31,9 @@ export default OakComponent({
const selectedTypes = data const selectedTypes = data
? data ? data
.filter((ele) => !ele.$$deleteAt$$) .filter((ele) => !ele.$$deleteAt$$)
.map((ele) => { .map((ele) => ele.type)
ele.type;
})
: []; : [];
return { return {
mtt: data, mtt: data,
dirtyIds, dirtyIds,
@ -54,39 +53,32 @@ export default OakComponent({
}, },
}, },
], ],
listeners: { listeners: {},
async selectedTypes(prev, next) {
if (next.selectedTypes?.length) {
await this.updateMessageTypes(next.selectedTypes);
}
},
},
lifetimes: { lifetimes: {
async ready() { async ready() {
const { systemId, origin } = this.props; await this.getSmsTemplate();
const { data: smsTemplates } = await this.features.cache.refresh('smsTemplate', { await this.getMessageTypes();
data: {
id: 1,
origin: 1,
systemId: 1,
templateName: 1,
templateCode: 1,
templateContent: 1,
},
filter: {
origin,
systemId,
},
});
this.setState({
smsTemplates,
});
}, },
}, },
methods: { methods: {
async syncTemplate() { async syncTemplate() {
const { systemId, origin } = this.props; const { systemId, origin } = this.props;
await this.features.template.syncSmsTemplate(systemId, origin); await this.features.template.syncSmsTemplate(systemId, origin);
await this.getSmsTemplate();
this.setMessage({
content: '同步成功',
type: 'success',
});
},
async getMessageTypes(selectedTypes) {
const { result: MessageTypes } = await this.features.template.getMessageType();
this.setState({
messageTypes: MessageTypes,
});
},
async getSmsTemplate() {
const { systemId, origin } = this.props;
const { data: smsTemplates } = await this.features.cache.refresh('smsTemplate', { const { data: smsTemplates } = await this.features.cache.refresh('smsTemplate', {
data: { data: {
id: 1, id: 1,
@ -104,17 +96,6 @@ export default OakComponent({
this.setState({ this.setState({
smsTemplates, smsTemplates,
}); });
this.setMessage({ }
content: '操作成功',
type: 'success',
});
},
async updateMessageTypes(selectedTypes) {
const { result: MessageTypes } = await this.features.template.getMessageType();
const messageTypes = MessageTypes.filter((ele) => !selectedTypes.includes(ele));
this.setState({
messageTypes,
});
},
}, },
}); });

View File

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { WebComponentProps } from 'oak-frontend-base'; import { WebComponentProps } from 'oak-frontend-base';
import { EntityDict } from '../../../oak-app-domain'; import { EntityDict } from '../../../oak-app-domain';
export default function Render(props: WebComponentProps<EntityDict, 'messageTypeTemplate', true, { export default function Render(props: WebComponentProps<EntityDict, 'messageTypeSmsTemplate', true, {
mtt: EntityDict['messageTypeTemplate']['Schema'][]; mtt: EntityDict['messageTypeSmsTemplate']['Schema'][];
smsTemplates: EntityDict['smsTemplate']['Schema'][]; smsTemplates: EntityDict['smsTemplate']['Schema'][];
dirtyIds: string[]; dirtyIds: string[];
messageTypes: string[]; messageTypes: string[];

View File

@ -1,7 +1,7 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Table, Button, Space, Typography, Select, Modal } from 'antd'; import { Table, Button, Space, Typography, Select, Modal } from 'antd';
export default function Render(props) { export default function Render(props) {
const { oakPagination, mtt = [], dirtyIds = [], oakLoading, messageTypes = [], systemId, smsTemplates = [], } = props.data; const { oakPagination, mtt = [], dirtyIds = [], oakLoading, messageTypes = [], systemId, smsTemplates = [], selectedTypes = [] } = props.data;
const { setCurrentPage, setPageSize, t, addItem, syncTemplate, removeItem, updateItem, recoverItem, resetItem, execute, } = props.methods; const { setCurrentPage, setPageSize, t, addItem, syncTemplate, removeItem, updateItem, recoverItem, resetItem, execute, } = props.methods;
const [syncDisable, setSyncDisable] = useState(false); const [syncDisable, setSyncDisable] = useState(false);
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
@ -9,8 +9,11 @@ export default function Render(props) {
return (<> return (<>
<Space style={{ marginBottom: 16 }}> <Space style={{ marginBottom: 16 }}>
<Button type="default" disabled={!(messageTypes.length > 0 && smsTemplates.length > 0)} onClick={() => { <Button type="default" disabled={!(messageTypes.length > 0 && smsTemplates.length > 0)} onClick={() => {
const messageTypes2 = messageTypes.filter(ele => !selectedTypes.includes(ele))
addItem({ addItem({
type: messageTypes[0], type: messageTypes2[0],
templateId: smsTemplates[0].id, templateId: smsTemplates[0].id,
}); });
}}> }}>
@ -49,6 +52,7 @@ export default function Render(props) {
}, record.id)} options={messageTypes.map((ele) => ({ }, record.id)} options={messageTypes.map((ele) => ({
value: ele, value: ele,
label: ele, label: ele,
disabled: selectedTypes.includes(ele)
}))}/>); }))}/>);
} }
return (<Typography.Text type={!!record.$$deleteAt$$ return (<Typography.Text type={!!record.$$deleteAt$$
@ -77,7 +81,7 @@ export default function Render(props) {
return (<Typography.Text type={!!record.$$deleteAt$$ return (<Typography.Text type={!!record.$$deleteAt$$
? 'danger' ? 'danger'
: undefined} delete={!!record.$$deleteAt$$}> : undefined} delete={!!record.$$deleteAt$$}>
{record?.template?.title} {record?.template?.templateName}
</Typography.Text>); </Typography.Text>);
}, },
}, },

View File

@ -12,7 +12,7 @@ export default function Render(props) {
children: (<MessageTypeSmsTemplateList oakAutoUnmount={true} systemId={systemId} origin={ele} oakPath={`$system-smsTemplate-${systemId}-${ele}`}/>), children: (<MessageTypeSmsTemplateList oakAutoUnmount={true} systemId={systemId} origin={ele} oakPath={`$system-smsTemplate-${systemId}-${ele}`}/>),
}; };
}); });
return (<Tabs items={items} onChange={(key) => { return (<Tabs activeKey={tabKey} items={items} onChange={(key) => {
setTabKey(key); setTabKey(key);
}}/>); }}/>);
} }

View File

@ -27,20 +27,14 @@ export default OakComponent({
const dirtyIds = operations const dirtyIds = operations
? operations ? operations
.map( .map(
(ele) => (ele) => (ele.operation.data as EntityDict['messageTypeSmsTemplate']['CreateSingle']['data'])?.id || ele.operation.filter?.id
(
ele.operation
.data as EntityDict['messageTypeSmsTemplate']['CreateSingle']['data']
)?.id || ele.operation.filter?.id
) )
.filter((ele) => !!ele) .filter((ele) => !!ele)
: ([] as string[]); : ([] as string[]);
const selectedTypes = data const selectedTypes = data
? data ? data
.filter((ele) => !ele.$$deleteAt$$) .filter((ele) => !ele.$$deleteAt$$)
.map((ele) => { .map((ele) => ele.type)
ele.type;
})
: []; : [];
return { return {
mtt: data, mtt: data,
@ -62,41 +56,31 @@ export default OakComponent({
}, },
], ],
listeners: { listeners: {
async selectedTypes(prev, next) {
if (next.selectedTypes?.length) {
await this.updateMessageTypes(next.selectedTypes);
}
},
}, },
lifetimes: { lifetimes: {
async ready() { async ready() {
const { systemId, origin } = this.props; await this.getSmsTemplate();
const { data: smsTemplates } = await this.features.cache.refresh( await this.getMessageTypes();
'smsTemplate',
{
data: {
id: 1,
origin: 1,
systemId: 1,
templateName: 1,
templateCode: 1,
templateContent: 1,
},
filter: {
origin,
systemId,
},
}
);
this.setState({
smsTemplates,
});
}, },
}, },
methods: { methods: {
async syncTemplate() { async syncTemplate() {
const { systemId, origin } = this.props; const { systemId, origin } = this.props;
await this.features.template.syncSmsTemplate(systemId!, origin!); await this.features.template.syncSmsTemplate(systemId!, origin!);
await this.getSmsTemplate();
this.setMessage({
content: '同步成功',
type: 'success',
});
},
async getMessageTypes() {
const { result: MessageTypes } = await this.features.template.getMessageType();
this.setState({
messageTypes: MessageTypes,
});
},
async getSmsTemplate() {
const { systemId, origin } = this.props;
const { data: smsTemplates } = await this.features.cache.refresh( const { data: smsTemplates } = await this.features.cache.refresh(
'smsTemplate', 'smsTemplate',
{ {
@ -117,20 +101,6 @@ export default OakComponent({
this.setState({ this.setState({
smsTemplates, smsTemplates,
}); });
this.setMessage({ }
content: '操作成功',
type: 'success',
});
},
async updateMessageTypes(selectedTypes: string[]) {
const { result: MessageTypes } =
await this.features.template.getMessageType();
const messageTypes = MessageTypes.filter(
(ele: string) => !selectedTypes.includes(ele)
);
this.setState({
messageTypes,
});
},
}, },
}); });

View File

@ -6,15 +6,16 @@ import { EntityDict } from '../../../oak-app-domain';
export default function Render( export default function Render(
props: WebComponentProps< props: WebComponentProps<
EntityDict, EntityDict,
'messageTypeTemplate', 'messageTypeSmsTemplate',
true, true,
{ {
mtt: EntityDict['messageTypeTemplate']['Schema'][]; mtt: EntityDict['messageTypeSmsTemplate']['Schema'][];
smsTemplates: EntityDict['smsTemplate']['Schema'][]; smsTemplates: EntityDict['smsTemplate']['Schema'][];
dirtyIds: string[]; dirtyIds: string[];
messageTypes: string[]; messageTypes: string[];
systemId: string; systemId: string;
origin: EntityDict['smsTemplate']['Schema']['origin']; origin: EntityDict['smsTemplate']['Schema']['origin'];
selectedTypes: string[]
}, },
{ {
syncTemplate: () => Promise<void>; syncTemplate: () => Promise<void>;
@ -29,6 +30,7 @@ export default function Render(
messageTypes = [], messageTypes = [],
systemId, systemId,
smsTemplates = [], smsTemplates = [],
selectedTypes = [],
} = props.data; } = props.data;
const { const {
setCurrentPage, setCurrentPage,
@ -124,17 +126,14 @@ export default function Render(
options={messageTypes.map((ele) => ({ options={messageTypes.map((ele) => ({
value: ele, value: ele,
label: ele, label: ele,
disabled: selectedTypes.includes(ele)
}))} }))}
/> />
); );
} }
return ( return (
<Typography.Text <Typography.Text
type={ type={!!record.$$deleteAt$$ ? 'danger' : undefined}
!!record.$$deleteAt$$
? 'danger'
: undefined
}
delete={!!record.$$deleteAt$$} delete={!!record.$$deleteAt$$}
> >
{value} {value}
@ -174,14 +173,10 @@ export default function Render(
} }
return ( return (
<Typography.Text <Typography.Text
type={ type={!!record.$$deleteAt$$ ? 'danger' : undefined}
!!record.$$deleteAt$$
? 'danger'
: undefined
}
delete={!!record.$$deleteAt$$} delete={!!record.$$deleteAt$$}
> >
{record?.template?.title} {record?.template?.templateName}
</Typography.Text> </Typography.Text>
); );
}, },

View File

@ -1,9 +1,9 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { WebComponentProps } from 'oak-frontend-base'; import { WebComponentProps } from 'oak-frontend-base';
import { Tabs } from 'antd'; import { Tabs } from 'antd';
import MessageTypeSmsTemplateList from '../list';
import { EntityDict } from '../../../oak-app-domain'; import { EntityDict } from '../../../oak-app-domain';
import { Origin } from '../../../oak-app-domain/SmsTemplate/Schema'; import { Origin } from '../../../oak-app-domain/SmsTemplate/Schema';
import MessageTypeSmsTemplateList from '../list';
export default function Render( export default function Render(
props: WebComponentProps< props: WebComponentProps<
@ -37,6 +37,7 @@ export default function Render(
return ( return (
<Tabs <Tabs
items={items} items={items}
activeKey={tabKey}
onChange={(key) => { onChange={(key) => {
setTabKey(key as Origin); setTabKey(key as Origin);
}} }}