diff --git a/src/components/system/message/AddTemplate.jsx b/src/components/system/message/AddTemplate.jsx index dbd8268ef002d2a29ba59b2c2ce54cbdd325fb46..8316e24aecdafd8f28618d69cb7a2f77df0fff84 100644 --- a/src/components/system/message/AddTemplate.jsx +++ b/src/components/system/message/AddTemplate.jsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Space, Table } from 'antd'; +import { Button, Drawer, Form, Space, Table } from 'antd'; import React, { useEffect, useState } from 'react'; import request from '@/utils/request'; import { @@ -11,6 +11,7 @@ function AddTemplate(props) { const { drawerVisible, setFalse, smsArea, setSelectedRowKeys, selectedRowKeys, fetchTableData } = props; const [drawerDataSource, setDrawerDataSource] = useState([]); + const [searchForm] = Form.useForm(); const [pagination, setPagination] = useState({ total: 0, current: 1, pageSize: 10 }); const columns = [ ...publicMessageAuthorization, @@ -28,10 +29,11 @@ function AddTemplate(props) { fetchAddHostTableData(); } }, [drawerVisible]); - function fetchAddHostTableData() { + function fetchAddHostTableData(values) { request - .getWMessage('/manager/smsTemplate/templateList', { - isEnable: true, + .getWMessage('/manager/smsTemplateAccredit/templateList', { + smsArea, + ...values, }) .then((res) => { setDrawerDataSource(res.data.list || []); @@ -61,6 +63,14 @@ function AddTemplate(props) { function onSearch(value) { fetchAddHostTableData({ pageSize: pagination.pageSize, ...value }); } + function onChange(page, filters) { + const params = { + current: page.current, + pageSize: page.pageSize, + ...filters, + }; + fetchAddHostTableData({ ...params, ...searchForm.getFieldsValue() }); + } return ( <Drawer title="娣诲姞鐭俊妯℃澘" @@ -72,18 +82,19 @@ function AddTemplate(props) { <div className="text-right"> <Space> <Button onClick={onClose}>鍙栨秷</Button> - <Button type="primary" onClick={handleSave}> + <Button type="primary" onClick={handleSave} disabled={selectedRowKeys?.length === 0}> 纭畾 </Button> </Space> </div> } > - <SearchBar onSearch={onSearch} itemList={publicMessageItemList} /> + <SearchBar onSearch={onSearch} itemList={publicMessageItemList} form={searchForm} /> <Table dataSource={drawerDataSource} columns={columns} rowKey="id" + onChange={onChange} rowSelection={{ selectedRowKeys, type: 'checkbox', diff --git a/src/components/system/message/DataAcquisition.jsx b/src/components/system/message/DataAcquisition.jsx index ce0e4bf69160a0eed175902478a2196b70251ad7..92da2678c7d7affe6c6b2f7ca42f454d9b00b5b8 100644 --- a/src/components/system/message/DataAcquisition.jsx +++ b/src/components/system/message/DataAcquisition.jsx @@ -10,6 +10,10 @@ import EvalToolbar from '@/components/evalBid/EvalToolbar'; import { useHistory, useParams } from 'react-router-dom'; import request from '@/utils/request'; +const fieldTypeMap = { + baseAttributes: '1', //鍩虹灞炴€� + labelParameters: '2', //鏍囩鍙傛暟 +}; function MappingFieldsSelect({ tableName, onChange, value }) { const [options, setOptions] = useState([]); function fetchSelectOptions() { @@ -31,7 +35,7 @@ function MappingFieldsSelect({ tableName, onChange, value }) { style={{ width: '100%' }} showSearch onChange={onChange} - defaultValue={value} + value={value} /> ); } @@ -124,15 +128,15 @@ function DataAcquisition({ setCurrent }) { dataIndex: 'labelName', width: 200, renderFormItem: (_, config) => { - const { labelName } = config.record; + const { labelName, fieldType } = config.record; return ( <Space> <span>{labelName}</span> - {/*{ifAvailable ? (*/} - {/* <Tag color="warning">鏍囩鍙傛暟</Tag>*/} - {/*) : (*/} - <Tag color="processing">鍩虹灞炴€�</Tag> - {/*)}*/} + {fieldType === fieldTypeMap.labelParameters ? ( + <Tag color="warning">鏍囩鍙傛暟</Tag> + ) : ( + <Tag color="processing">鍩虹灞炴€�</Tag> + )} </Space> ); }, @@ -151,7 +155,14 @@ function DataAcquisition({ setCurrent }) { ], }, renderFormItem: (_, item) => { - return <Select style={{ width: '100%' }} options={tableOptions} showSearch />; + return ( + <Select + style={{ width: '100%' }} + options={associationOptions} + showSearch + onSelect={() => onSelect(item)} + /> + ); }, }, { @@ -172,6 +183,23 @@ function DataAcquisition({ setCurrent }) { }, }, ]; + function onSelect(item) { + const { record } = item; + fieldMappingFormRef.current?.setRowData(item.recordKey, { + mappingField: null, + }); + setFieldMappingList( + fieldMappingList.map((i) => { + if (i.id === record.id) { + return { + ...i, + mappingField: null, + }; + } + return i; + }), + ); + } function handleChange() { const formValues = editTableForm.getFieldsValue(); const resultArray = Object.keys(formValues).map((key) => ({ @@ -262,10 +290,16 @@ function DataAcquisition({ setCurrent }) { id: key, ...res2[key], })); - const smsRelationshipList = Object.keys(dataSource).map((key) => ({ - id: key, - ...dataSource[key], - })); + const smsRelationshipList = Object.keys(dataSource).map((key) => { + const currentData = dataSource[key]; + if (currentData?.filterCondition && typeof currentData?.filterCondition === 'string') { + currentData.filterCondition = JSON.parse(currentData.filterCondition); + } + return { + id: key, + ...currentData, + }; + }); const result = extractUniqueAAValues(associatedCondition); const tables = dataSource.map((item) => item.smsRelationshipTable); const uniqueDataSource = new Set(tables); @@ -279,10 +313,7 @@ function DataAcquisition({ setCurrent }) { } return request.postWMessage('/manager/smsTemplate/saveDataConfig', { id, - associatedCondition: - typeof associatedCondition === 'string' - ? JSON.parse(associatedCondition) - : associatedCondition, + associatedCondition, smsFieldMappings, smsRelationshipList, }); @@ -309,11 +340,13 @@ function DataAcquisition({ setCurrent }) { }); } function fetchFieldMappingList() { - return request.getWMessage('/manager/smsFieldMapping/fieldMappingList').then((res) => { - const { data } = res; - setFieldMappingList(data); - setMappingEditableKeys(data.map((i) => i.id)); - }); + return request + .getWMessage('/manager/smsTemplateFieldMapping/fieldMappingList', { templateId: id }) + .then((res) => { + const { data } = res; + setFieldMappingList(data); + setMappingEditableKeys(data.map((i) => i.id)); + }); } function fetchSelectOptions(tableName) { return request.getWMessage('/syndata/dataModel/getTableColumn', { tableName }).then((res) => { diff --git a/src/components/system/message/MessageDetailLog.jsx b/src/components/system/message/MessageDetailLog.jsx index dcdc0537474cd313542c94a826743180fbacba47..9e362c92821ffe6b64adfd4c4e9ac5800cd9915d 100644 --- a/src/components/system/message/MessageDetailLog.jsx +++ b/src/components/system/message/MessageDetailLog.jsx @@ -1,4 +1,4 @@ -import { Cascader, Drawer, Table, Typography } from 'antd'; +import { Cascader, Drawer, Form, Table, Typography } from 'antd'; import React, { useEffect, useState } from 'react'; import request from '@/utils/request'; import SearchBar from '@/components/forms/SearchBar'; @@ -9,6 +9,7 @@ function MessageDetailLog(props) { const { drawerVisible, setFalse, templateId } = props; const [drawerDataSource, setDrawerDataSource] = useState([]); const [areaList, setAreaList] = useState([]); + const [searchForm] = Form.useForm(); const [pagination, setPagination] = useState({ total: 0, current: 1, pageSize: 10 }); const columns = [ { @@ -60,8 +61,8 @@ function MessageDetailLog(props) { }, { title: '鐢ㄦ埛鍚嶇О', - dataIndex: 'smsReceiveName', - key: 'smsReceiveName', + dataIndex: 'smsReceiverName', + key: 'smsReceiverName', align: 'center', width: 100, render: (text) => text || '-', @@ -134,6 +135,14 @@ function MessageDetailLog(props) { setDrawerDataSource(res.data.list); }); } + function onChange(page, filters) { + const params = { + current: page.current, + pageSize: page.pageSize, + ...filters, + }; + fetchAddHostTableData({ ...params, ...searchForm.getFieldsValue() }); + } function onClose() { setFalse(); } @@ -142,8 +151,19 @@ function MessageDetailLog(props) { } return ( <Drawer title="鐭俊鐢熸垚鏄庣粏" open={drawerVisible} onClose={onClose} width={'65vw'}> - <SearchBar onSearch={onSearch} itemList={itemList} /> - <Table dataSource={drawerDataSource} columns={columns} rowKey="id" pagination={false} /> + <SearchBar onSearch={onSearch} itemList={itemList} form={searchForm} /> + <Table + dataSource={drawerDataSource} + columns={columns} + rowKey="id" + onChange={onChange} + pagination={{ + ...pagination, + showQuickJumper: true, + showSizeChanger: true, + showTotal: (total) => `鍏� ${total} 椤筦, + }} + /> </Drawer> ); } diff --git a/src/components/system/message/MessageTemplates.jsx b/src/components/system/message/MessageTemplates.jsx index 015bddabad4f984843625c412cc185acf74875b3..8817a30f16fe41821c383d35ae58581293ae3411 100644 --- a/src/components/system/message/MessageTemplates.jsx +++ b/src/components/system/message/MessageTemplates.jsx @@ -58,7 +58,7 @@ function MessageTemplates({ isAuthorization = true, setEditor, form }) { ]} > <EditorFormItem - height={400} + height={'400px'} getEditor={getEditor} initProps={{ paste_data_images: false, diff --git a/src/components/system/message/TemplateConfiguration.jsx b/src/components/system/message/TemplateConfiguration.jsx index 05f3092a9909eb2bf51f10a8cecc771ad09bbdd8..05cc0bc9659dab6c8239e4b644d593ad727ab0cd 100644 --- a/src/components/system/message/TemplateConfiguration.jsx +++ b/src/components/system/message/TemplateConfiguration.jsx @@ -40,7 +40,7 @@ function TemplateConfiguration({ setCurrent }) { templateContent: params.templateContent, triggerCondition: params.triggerCondition, }; - request.postWMessage('/manager/smsTemplate/saveTemplate', { ...saveParam }); + return request.postWMessage('/manager/smsTemplate/saveTemplate', { ...saveParam }); } function handleSaveTemplates() { return form.validateFields().then((values) => { @@ -54,7 +54,7 @@ function TemplateConfiguration({ setCurrent }) { const { data } = res; form.setFieldsValue({ ...data, - triggerCondition: JSON.parse(data.triggerCondition), + triggerCondition: data.triggerCondition ? JSON.parse(data.triggerCondition) : {}, conditions: data.triggerCondition, }); fetchSelectOptions(res.data.tableName); @@ -63,7 +63,7 @@ function TemplateConfiguration({ setCurrent }) { function handleSaveTagging() { const html = editor.getContent(); const labelIds = parseInputIds(html); - request.postWMessage('/manager/smsTemplateLabel/saveTemplateLabel', { + return request.postWMessage('/manager/smsTemplateLabel/saveTemplateLabel', { templateId: id, labelIds, }); diff --git a/src/pages/system/message/MessageLog.jsx b/src/pages/system/message/MessageLog.jsx index 9c6b1903010a7a7f3c8c37f19ef6f22e387d8477..62357b8e08732b8dd5d9c30e514ceefd42c40ab8 100644 --- a/src/pages/system/message/MessageLog.jsx +++ b/src/pages/system/message/MessageLog.jsx @@ -18,6 +18,7 @@ function MessageLog() { ...publicMessageItemList, { name: 'smsArea', + key: 'smsArea', label: '鍦板尯', component: Cascader, componentProps: { @@ -88,7 +89,11 @@ function MessageLog() { return ( <> <Card title="鐭俊鐢熸垚鏃ュ織"> - <ManagePage tableColumns={tableColumns} searchBarItemList={searchBarItemList} /> + <ManagePage + tableColumns={tableColumns} + searchBarItemList={searchBarItemList} + tableProps={{ rowKey: 'templateId' }} + /> </Card> <MessageDetailLog drawerVisible={visible} setFalse={setFalse} templateId={templateId} /> </> diff --git a/src/pages/system/message/MessageTemplateConfiguration.jsx b/src/pages/system/message/MessageTemplateConfiguration.jsx index fe9c92adc2e152301be74637c671c97cf305635b..6f640773e889c28c0717176ab59f78f901ee48c9 100644 --- a/src/pages/system/message/MessageTemplateConfiguration.jsx +++ b/src/pages/system/message/MessageTemplateConfiguration.jsx @@ -20,7 +20,8 @@ function MessageTemplateConfiguration(props) { } function handleEdit(record) { setTrue(); - form.setFieldsValue(record); + const param = { ...record, sendUser: record?.sendUser.toString() }; + form.setFieldsValue(param); } function handleFormSubmit() { return form.validateFields().then((values) => { @@ -91,6 +92,8 @@ function MessageTemplateConfiguration(props) { ]; const formItems = [ { name: 'id', key: 'id', visible: false }, + { name: 'templateContent', key: 'templateContent', visible: false }, + { name: 'sendUserName', key: 'sendUserName', visible: false }, { name: 'templateIdentification', key: 'templateIdentification', @@ -119,12 +122,14 @@ function MessageTemplateConfiguration(props) { key: 'dbName', label: '搴撳悕', required: true, + disabled: form.getFieldValue('templateContent'), }, { name: 'tableName', key: 'tableName', label: '琛ㄥ悕', required: true, + disabled: form.getFieldValue('templateContent'), }, { name: 'sendUser', @@ -139,6 +144,9 @@ function MessageTemplateConfiguration(props) { requestParam: { dictType: 'office_type' }, titleAttr: 'dictLabel', valueAttr: 'dictValue', + onSelect: (_, item) => { + form.setFieldValue('sendUserName', item.label); + }, }, }, {