Commit 4850cd88 authored by 邓超's avatar 邓超

fix: 修改流程中心样式,新版消息平台

parent e1371d2e
Pipeline #65951 passed with stages
/*
* @Author: dengchao 754083046@qq.com
* @Date: 2022-12-14 14:44:25
* @LastEditors: dengchao 754083046@qq.com
* @LastEditTime: 2022-12-14 14:55:12
* @FilePath: \maintenance\src\components\ImageLibrary\index.jsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import React, { useState, useEffect, useRef } from 'react';
const ImageLibrary = () => {
return <div>index</div>;
};
export default ImageLibrary;
import React, { useEffect, useState, useRef } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
import classnames from 'classnames'; import classnames from 'classnames';
import { Tabs, Input, message, Modal } from 'antd'; import { Tabs, Input, message, Modal, Button } from 'antd';
import { import {
PlusOutlined, PlusOutlined,
EditOutlined, EditOutlined,
DeleteOutlined, DeleteOutlined,
ExclamationCircleOutlined, ExclamationCircleOutlined,
HighlightOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import FlowModal from './workFlowComponents/FlowModal'; import FlowModal from './workFlowComponents/FlowModal';
import FlowGroupModal from './workFlowComponents/FlowGroupModal'; import FlowGroupModal from './workFlowComponents/FlowGroupModal';
...@@ -43,11 +44,12 @@ const WorkflowHomePage = () => { ...@@ -43,11 +44,12 @@ const WorkflowHomePage = () => {
WFGetAllFlow().then(res => { WFGetAllFlow().then(res => {
if (res.code === 0) { if (res.code === 0) {
let flowNameList = []; let flowNameList = [];
let list = res.data.map(item => { let list = res.data.map((item, index) => {
item.children.forEach(ele => { item.children.forEach(ele => {
flowNameList.push(ele.FlowName); flowNameList.push(ele.FlowName);
}); });
item.isOld = true; item.isOld = true;
item.bgType = (index + 1) % 5;
return item; return item;
}); });
setFlowList(list); setFlowList(list);
...@@ -214,10 +216,10 @@ const WorkflowHomePage = () => { ...@@ -214,10 +216,10 @@ const WorkflowHomePage = () => {
</Tabs> </Tabs>
</div> </div>
</div> </div>
<div className={styles.right} onClick={addFlowGroup}> {/* <div className={styles.right} onClick={addFlowGroup}>
<div className={styles.icon} /> <div className={styles.icon} />
<div>新增分组</div> <div>新增分组</div>
</div> </div> */}
</div> </div>
<div className={styles.controlBox}> <div className={styles.controlBox}>
<div className={styles.left}> <div className={styles.left}>
...@@ -251,23 +253,35 @@ const WorkflowHomePage = () => { ...@@ -251,23 +253,35 @@ const WorkflowHomePage = () => {
</div> </div>
<div className={styles.groupBox}> <div className={styles.groupBox}>
{item.children.map(ele => ( {item.children.map(ele => (
<div <div className={styles.flowBox} type={item.bgType} key={ele.Code}>
className={styles.flowBox}
type={(index + 1) % 5}
key={ele.Code}
onClick={() => chooseNode(ele)}
>
<div className={styles.header}> <div className={styles.header}>
<div className={styles.title}>{ele.FlowName}</div> <div className={styles.title}>{ele.FlowName}</div>
<div className={styles.delete}>
<DeleteOutlined onClick={e => delFlow(ele, e)} />
</div>
<div className={styles.editBtn} onClick={e => editFlow(ele, e)}> <div className={styles.editBtn} onClick={e => editFlow(ele, e)}>
<EditOutlined /> <EditOutlined />
编辑 修改
</div> </div>
</div> </div>
<div className={styles.imgBox}> <div className={styles.imgBox}>
<div className={styles.mask}>
<div className={styles.lookDetail}>
<Button type="primary" onClick={() => chooseNode(ele)}>
设计
</Button>
{/* <HighlightOutlined onClick={e => chooseNode(ele, e)} /> */}
</div>
<div className={styles.delete}>
<Button
style={{ background: '#5a5d69', border: '#5a5d69' }}
type="primary"
onClick={e => delFlow(ele, e)}
>
删除
</Button>
{/* <DeleteOutlined onClick={e => delFlow(ele, e)} /> */}
</div>
</div>
<img <img
src={`${window.location.origin}/${ src={`${window.location.origin}/${
ele.PreviewImage ele.PreviewImage
...@@ -276,7 +290,7 @@ const WorkflowHomePage = () => { ...@@ -276,7 +290,7 @@ const WorkflowHomePage = () => {
/> />
</div> </div>
<div className={styles.bottom}> <div className={styles.bottom}>
<div className={styles.left}>创建人{ele.CreateUser || '--'}</div> <div className={styles.left}>拥有者{ele.CreateUser || '--'}</div>
<div className={styles.right}>更新于{ele.UpdateTime || '--'}</div> <div className={styles.right}>更新于{ele.UpdateTime || '--'}</div>
</div> </div>
</div> </div>
......
...@@ -43,6 +43,10 @@ ...@@ -43,6 +43,10 @@
border-bottom: none; border-bottom: none;
} }
.ant-tabs-tab .anticon {
margin-right: 0;
}
.ant-tabs-tab-active { .ant-tabs-tab-active {
border-top: 2px solid #3D78FF; border-top: 2px solid #3D78FF;
border-bottom: none; border-bottom: none;
...@@ -163,9 +167,10 @@ ...@@ -163,9 +167,10 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
cursor: pointer; // cursor: pointer;
transition: transform 0.5s; transition: transform 0.5s;
margin-bottom: 5px; margin-bottom: 5px;
position: relative;
.header { .header {
display: flex; display: flex;
...@@ -183,17 +188,12 @@ ...@@ -183,17 +188,12 @@
} }
.delete {
color: #FE5557;
cursor: pointer;
font-size: 16px;
margin-top: 22px;
}
.editBtn { .editBtn {
font-size: 14px; font-size: 14px;
display: flex; display: flex;
margin-left: 31px; margin-left: 46px;
width: 67px; width: 67px;
margin-top: 11px; margin-top: 11px;
justify-content: center; justify-content: center;
...@@ -203,6 +203,43 @@ ...@@ -203,6 +203,43 @@
} }
} }
.mask {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
left: 50%;
transform: translateX(-50%);
width: 333px;
height: 141px;
border-radius: 0 20px 20px 20px;
font-size: 16px;
.delete {
display: none;
}
.lookDetail {
display: none;
margin-right: 10px;
}
}
.mask:hover {
background-color: rgba(0, 0, 0, 0.8);
.lookDetail {
display: block;
}
.delete {
display: block;
cursor: pointer;
}
}
.imgBox { .imgBox {
display: flex; display: flex;
justify-content: center; justify-content: center;
...@@ -211,6 +248,7 @@ ...@@ -211,6 +248,7 @@
margin-top: 1px; margin-top: 1px;
height: 130px; height: 130px;
overflow: hidden; overflow: hidden;
img { img {
width: 320px; width: 320px;
} }
...@@ -251,9 +289,9 @@ ...@@ -251,9 +289,9 @@
} }
} }
.flowBox:hover { // .flowBox:hover {
transform: translateY(-10px); // transform: translateY(-10px);
} // }
} }
} }
} }
......
...@@ -343,16 +343,13 @@ const ConfigNodeMsg = (props, ref) => { ...@@ -343,16 +343,13 @@ const ConfigNodeMsg = (props, ref) => {
<Form.Item label="移交方式" name="Handover"> <Form.Item label="移交方式" name="Handover">
<Radio.Group> <Radio.Group>
<Radio value="移交选择人">移交选择人</Radio> <Radio value="移交选择人">移交选择人</Radio>
<Radio <Radio value="自处理" style={{ display: editMsg.NodeType === '1' ? 'none' : 'flex' }}>
value="自处理"
style={{ display: editMsg.NodeType === '1' ? 'none' : 'block' }}
>
自处理 自处理
</Radio> </Radio>
<Radio value="移交默认人">移交默认人</Radio> <Radio value="移交默认人">移交默认人</Radio>
<Radio <Radio
value="移交发起人" value="移交发起人"
style={{ display: editMsg.NodeType === '1' ? 'none' : 'block' }} style={{ display: editMsg.NodeType === '1' ? 'none' : 'flex' }}
> >
移交发起人 移交发起人
</Radio> </Radio>
......
.pageContent {
height: 100%;
width: 100%;
padding: 20px;
background-color: #fff;
.header {
margin-bottom: 15px;
}
.content {
height: calc(100% - 35px);
:global {
.ant-table-wrapper {
height: 100%;
.ant-table {
height: 100%;
.ant-table-container {
height: 100%;
border: 1px solid #f0f0f0;
.ant-table-content {
height: 100%;
}
}
}
}
}
}
}
\ No newline at end of file
import React, { useState, useEffect, useRef } from 'react';
import { useHistory } from 'react-router-dom';
import { Tabs, Table, Form, Input, Button, Tooltip, Tag, Space, Popconfirm, message } from 'antd';
import { FundViewOutlined, EditTwoTone, DeleteOutlined } from '@ant-design/icons';
import { GetMessageConfigs, DelMessageConfigs } from '@/services/messagemanage/messagemanage';
import PageContainer from '@/components/BasePageContainer';
import styles from './index.less';
const { TabPane } = Tabs;
const { Search } = Input;
const HostManager = () => {
const history = useHistory();
const [dataList, setDataList] = useState([]);
const [loading, setLoading] = useState(false);
const searchValue = useRef();
const [form] = Form.useForm();
useEffect(() => {
getData();
}, []);
const getData = query => {
setLoading(true);
GetMessageConfigs({ keyword: query }).then(res => {
setLoading(false);
if (res.code === 0) {
setDataList(res.data);
} else {
message.error(res.msg);
}
});
};
const onChage = value => {
searchValue.current = value.target.value;
};
const onSearch = value => {
getData(value);
};
const changeDesc = value => {
history.push({
pathname: `/platform/SchemeDetailNew`,
state: { schemeMsg: value },
});
};
// 消息发送测试
const TestDesc = () => {};
// 删除消息
const DeleteProject = val => {
DelMessageConfigs({ Id: val.Id }).then(res => {
if (res.code === 0) {
message.success('删除成功');
getData(searchValue.current);
} else {
message.error(res.msg);
}
});
};
const columns = [
{
title: '序号',
dataIndex: 'ID',
align: 'center',
key: 'ID',
width: 60,
render: (text, record, index) => <span>{index + 1}</span>,
},
{
title: '方案名称',
dataIndex: 'SchemeName',
align: 'center',
key: 'SchemeName',
render: (text, record) => <div>{text === null || !text ? '-' : text}</div>,
},
{
title: '推送组',
dataIndex: 'TimeJobGroup',
key: 'TimeJobGroup',
align: 'center',
ellipsis: true,
width: 500,
render: (text, record) => (
<span>
<Tooltip placement="topLeft" title={text.map(item => item.name).join(',')}>
{text.map(item => item.name).join(',') || '--'}
</Tooltip>
</span>
),
},
{
title: '消息平台',
dataIndex: 'Platform',
align: 'center',
key: 'Platform',
width: '100px',
render: record => {
if (record.PlatformStatus === 1) {
return <Tag color="success"></Tag>;
}
return <Tag color="processing"></Tag>;
},
},
{
title: '短信推送',
dataIndex: 'SMS',
align: 'center',
key: 'SMS',
width: '100px',
render: record => {
if (record.PlatformStatus === 1) {
return <Tag color="success"></Tag>;
}
return <Tag color="processing"></Tag>;
},
},
{
title: '公众号推送',
dataIndex: 'Wechat',
align: 'center',
key: 'Wechat',
width: '100px',
render: record => {
if (record.PlatformStatus === 1) {
return <Tag color="success"></Tag>;
}
return <Tag color="processing"></Tag>;
},
},
{
title: '企业微信推送',
dataIndex: 'WorkWechat',
align: 'center',
key: 'WorkWechat',
width: '110px',
render: record => {
if (record.PlatformStatus === 1) {
return <Tag color="success"></Tag>;
}
return <Tag color="processing"></Tag>;
},
},
{
title: '是否启用',
dataIndex: 'IsEnable',
align: 'center',
key: 'IsEnable',
width: '100px',
render: record => {
if (record === 1) {
return <Tag color="success"></Tag>;
}
return <Tag color="processing"></Tag>;
},
},
{
title: '操作',
width: 250,
align: 'center',
ellipsis: true,
render: (text, record) => (
<Space>
{/* <Tooltip title="测试">
<FundViewOutlined
style={{ fontSize: '16px', color: '#1890FF' }}
onClick={() => {
TestDesc(record);
}}
/>
</Tooltip> */}
<Tooltip title="编辑">
<EditTwoTone
style={{ fontSize: '16px', color: '#e86060' }}
onClick={() => {
changeDesc(record);
}}
/>
</Tooltip>
<Popconfirm
title="是否删除方案?"
okText="确认"
cancelText="取消"
onConfirm={() => {
DeleteProject(record);
}}
>
<DeleteOutlined style={{ fontSize: '16px', color: '#e86060' }} />
</Popconfirm>
</Space>
),
},
];
return (
<div className={styles.pageContent}>
<div className={styles.header}>
<Form name={form} layout="inline">
<Form.Item>
<Search
placeholder="请输入方案名称"
onChange={onChage}
onSearch={onSearch}
enterButton
allowClear
/>
</Form.Item>
<Form.Item>
<Button
onClick={() => {
history.push({
pathname: `/platform/schemeDetailNew`,
state: { schemeMsg: null },
});
}}
>
新增
</Button>
</Form.Item>
</Form>
</div>
<div className={styles.content}>
<Table
loading={loading}
bordered
columns={columns}
dataSource={dataList}
pagination={false}
rowKey="Id"
scroll={{ y: 'calc(100% - 55px)' }}
/>
</div>
</div>
);
};
export default HostManager;
import React, { useEffect, useState } from 'react';
import { Modal, Checkbox } from 'antd';
import { RoleGroupList } from '@/services/messagemanage/messagemanage';
import styles from './RoleModal.less';
const CheckboxGroup = Checkbox.Group;
const RoleModal = porps => {
const { visible, rolCallBack, onCancel, selectValue } = porps;
const [roleList, setRoleList] = useState([]); // 角色列表
useEffect(() => {
if (visible) {
let hasCheckList = selectValue ? selectValue.split('|') : [];
console.log(hasCheckList, 'hasCheckList');
RoleGroupList().then(res => {
if (res.code === 0) {
let roleListData = res.data.roleList;
// 给子角色分类放到外面来
roleListData.forEach((item, index) => {
if (item.child.length > 0) {
item.child.forEach((val, i) => {
val.visibleTitle = `${item.visibleTitle}(${val.visibleTitle})`;
roleListData.splice(index + 1 + i, 0, val);
});
}
});
let list = roleListData.map(item => {
let checkedList = []; // 已选
let options = []; // 数据源
let indeterminate = false; // 有选中但没全选样式
let checkAll = false; // 全选样式
options = item.roleList.map(val => {
let value = JSON.stringify({ value: Number(val.roleID), label: val.roleName });
hasCheckList.forEach(ele => {
if (value === ele) {
checkedList.push(ele);
}
});
return value;
});
// console.log(options, 'options');
if (checkedList.length === options.length && checkedList.length > 0) {
checkAll = true;
}
if (checkedList.length < options.length && checkedList.length > 0) {
indeterminate = true;
}
return {
options,
checkedList,
checkAll,
indeterminate,
visibleTitle: item.visibleTitle,
};
});
console.log(list, 'list');
setRoleList(list);
}
});
console.log(selectValue, 'selectValue');
}
}, [visible]);
// 多选change事件
const onCheckAllChange = (e, index) => {
let newCheckList = JSON.parse(JSON.stringify(roleList));
newCheckList[index].checkedList = e.target.checked ? newCheckList[index].options : [];
newCheckList[index].indeterminate = false;
newCheckList[index].checkAll = e.target.checked;
setRoleList(newCheckList);
};
// 单选change事件
const onChange = (list, index) => {
let newCheckList = JSON.parse(JSON.stringify(roleList));
newCheckList[index].checkedList = list;
newCheckList[index].indeterminate =
!!list.length && list.length < newCheckList[index].options.length;
newCheckList[index].checkAll = list.length === newCheckList[index].options.length;
setRoleList(newCheckList);
};
return (
<div>
<Modal
title="选择推送人"
visible={visible}
onOk={() => rolCallBack(roleList)}
width="900px"
onCancel={onCancel}
maskClosable={false}
destroyOnClose
centered
>
<div className={styles.checkContainer}>
{roleList.map((item, index) => (
<div className={styles.checkContent} key={item.visibleTitle}>
<div className={styles.topCheckbox}>
<Checkbox
indeterminate={item.indeterminate}
onChange={e => onCheckAllChange(e, index)}
checked={item.checkAll}
>
{item.visibleTitle}
</Checkbox>
</div>
<div className={styles.bottomCheckbox}>
<CheckboxGroup
value={item.checkedList}
onChange={list => onChange(list, index)}
style={{ display: 'flex', flexWrap: 'wrap' }}
>
{item.options.map(val => (
<Checkbox key={val} value={val}>
{JSON.parse(val).label}
</Checkbox>
))}
</CheckboxGroup>
</div>
</div>
))}
</div>
</Modal>
</div>
);
};
export default RoleModal;
import React, { useState, useEffect, useRef } from 'react';
import { Form, Input, Select, Space, TreeSelect, Empty, Switch, Button, message } from 'antd';
import { FolderFilled, FileOutlined, MobileOutlined } from '@ant-design/icons';
import { AddWorkWechatStatus } from '@/services/messagemanage/messagemanage';
const { Option } = Select;
const { TextArea } = Input;
const { TreeNode } = TreeSelect;
const typeList = [
{ name: '文字', value: 1 },
{ name: '卡片', value: 2 },
{ name: '图文', value: 3 },
{ name: '图片', value: 4 },
];
const EnterpriseWeChatConfig = props => {
const { menuMoblieList, formValue, id } = props;
const [flag, setFlag] = useState(0);
const [form] = Form.useForm();
useEffect(() => {
getFormData();
}, []);
const getFormData = () => {
console.log(formValue, 'formValue');
if (formValue) {
form.setFieldsValue({ ...formValue, WorkWechatStatus: formValue.WorkWechatStatus === 1 });
}
};
// 监听表单
const changeValue = (changedFields, allFields) => {
// console.log(Object.keys(changedFields), allFields, 'changedFields');
if (Object.keys(changedFields)[0] === 'WorkWechatContent') {
let regex = /\{@(.+?)\}/g;
let originalList = allFields.lines || [];
let list = changedFields.WorkWechatContent.match(regex)?.map(item => {
let Name = item.substring(2, item.length - 1);
let orgItem = originalList.find(ele => ele.Name === Name);
return {
Name,
Description: orgItem ? orgItem.Description : '',
DefaultValue: orgItem ? orgItem.DefaultValue : '',
};
});
if (list) {
form.setFieldsValue({ lines: list });
} else {
form.setFieldsValue({ lines: [] });
}
}
if (Object.keys(changedFields)[0] === 'WorkWechatType') {
setFlag(flag + 1);
}
};
const mapAppTree = org => {
const haveChildren = Array.isArray(org.children) && org.children.length > 0;
let icon;
let value = org.id;
if (org.menuType === 'MiniAppsingleStation') {
value = org.stationID;
icon = <MobileOutlined />;
}
if (org.menuType === 'MiniAppMenuGroup' || org.menuType === '"MiniAppMenuGroupTwo"') {
value = org.id;
icon = <FolderFilled />;
}
if (org.menuType === 'MiniAppMenuThree' || org.menuType === 'MiniAppMenu') {
icon = <FileOutlined style={{ color: '#1890ff' }} />;
value = org.pageUrl || org.id;
}
return (
<TreeNode
value={value}
title={org.text}
icon={icon}
key={value}
disabled={org.menuType !== 'MiniAppMenuThree' && org.menuType !== 'MiniAppMenu'}
>
{haveChildren ? org.children.map(item => mapAppTree(item)) : null}
</TreeNode>
);
};
const onFinish = () => {
if (!id) {
message.error('请保存基础信息');
return;
}
let value = form.getFieldsValue(true);
AddWorkWechatStatus({
...value,
WorkWechatStatus: value.WorkWechatStatus ? 1 : 0,
id,
}).then(res => {
if (res.code === 0) {
message.success('保存成功');
} else {
message.error(res.msg);
}
});
};
return (
<div>
<Form
form={form}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
onValuesChange={changeValue}
labelAlign="left"
>
<div style={{ display: 'flex' }}>
<Form.Item
label="消息类型"
name="WorkWechatType"
labelCol={{ span: 5 }}
wrapperCol={{ span: 19 }}
style={{ width: '400px', display: 'block' }}
>
<Select placeholder="请选择消息类型">
{typeList.map(item => (
<Option value={item.value} key={item.value}>
{item.name}
</Option>
))}
</Select>
</Form.Item>
<Form.Item
label="企业应用ID"
name="WorkWechatAppID"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 5 }}
wrapperCol={{ span: 19 }}
>
<Input placeholder="请填写企业应用ID" />
</Form.Item>
<Form.Item
label="是否开启"
name="WorkWechatStatus"
valuePropName="checked"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 5 }}
wrapperCol={{ span: 19 }}
>
<Switch checkedChildren="是" unCheckedChildren="否" />
</Form.Item>
</div>
<div style={{ display: 'flex' }}>
<Form.Item
label="标题"
name="WorkWechatTitle"
style={{
width: '400px',
display:
form.getFieldValue('WorkWechatType') === 2 ||
form.getFieldValue('WorkWechatType') === 3
? 'block'
: 'none',
}}
labelCol={{ span: 5 }}
wrapperCol={{ span: 19 }}
>
<Input placeholder="请填写标题" />
</Form.Item>
<Form.Item
label="底部文字"
name="WorkWechatBtnText"
style={{
width: '400px',
display: form.getFieldValue('WorkWechatType') === 2 ? 'block' : 'none',
}}
labelCol={{ span: 5 }}
wrapperCol={{ span: 19 }}
>
<Input placeholder="请填写底部文字" />
</Form.Item>
</div>
<Form.Item
label="图片路径"
name="WorkWechatImgUrl"
style={{
width: '1200px',
display:
form.getFieldValue('WorkWechatType') === 3 ||
form.getFieldValue('WorkWechatType') === 4
? 'block'
: 'none',
}}
>
<Input placeholder="请填写底部文字" />
</Form.Item>
<Form.Item
label="跳转路径"
name="WorkWechatUrl"
style={{
display:
form.getFieldValue('WorkWechatType') === 3 ||
form.getFieldValue('WorkWechatType') === 2
? 'block'
: 'none',
width: '1200px',
}}
>
<Input placeholder="请填写跳转路径" />
{/* <TreeSelect
showSearch
treeNodeFilterProp="title"
treeNodeLabelProp="value"
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
placeholder="请选择功能路径"
allowClear
treeDefaultExpandAll
treeIcon
>
{menuMoblieList ? (
menuMoblieList.map(item => mapAppTree(item))
) : (
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
)}
</TreeSelect> */}
</Form.Item>
<Form.Item
label="内容"
name="WorkWechatContent"
style={{
display: form.getFieldValue('WorkWechatType') !== 4 ? 'block' : 'none',
width: '1200px',
}}
>
<TextArea rows={4} placeholder="请输入内容" />
</Form.Item>
<Form.List name="lines">
{fields => (
<div
style={{
display: form.getFieldValue('WorkWechatType') !== 4 ? 'block' : 'none',
}}
>
{fields.map(({ key, name, ...restField }) => (
<Space
key={key}
style={{
display: 'flex',
marginBottom: 8,
}}
align="baseline"
>
<Form.Item
{...restField}
label="参数名"
name={[name, 'Name']}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Input readOnly />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'Description']}
label="含义"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写含义',
// },
// ]}
>
<Input placeholder="请填写含义" />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'DefaultValue']}
label="默认值"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写默认值',
// },
// ]}
>
<Input placeholder="请填写默认值" />
</Form.Item>
{/* <MinusCircleOutlined onClick={() => remove(name)} /> */}
</Space>
))}
{/* <Form.Item>
<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
Add field
</Button>
</Form.Item> */}
</div>
)}
</Form.List>
<Form.Item>
<Button type="primary" onClick={onFinish}>
保存
</Button>
</Form.Item>
</Form>
</div>
);
};
export default EnterpriseWeChatConfig;
.formImg {
position: relative;
width: 80px;
height: 80px;
.mask {
position: absolute;
display: flex;
align-items: center;
justify-content: space-around;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .6);
z-index: 1;
cursor: pointer;
.icon {
font-size: 24px;
color: #fff;
}
}
img {
width: 80px;
height: 80px;
cursor: pointer;
background-color: #ccc;
}
}
\ No newline at end of file
import React, { useState, useEffect, useRef } from 'react';
import { Form, Input, Select, Space, TreeSelect, Empty, Switch, Button, message } from 'antd';
import { DeleteOutlined } from '@ant-design/icons';
import { AddSMSStatus } from '@/services/messagemanage/messagemanage';
const { Option } = Select;
const { TextArea } = Input;
const typeList = [
{ name: '通用报警', value: 1 },
{ name: '系统通知', value: 2 },
{ name: '自定义', value: 3 },
];
const ShortMessageConfig = props => {
const { formValue, id } = props;
const [form] = Form.useForm();
useEffect(() => {
getFormData();
}, []);
const getFormData = () => {
console.log(formValue, 'formValue');
if (formValue) {
form.setFieldsValue({ ...formValue, SMSStaus: formValue.SMSStaus === 1 });
}
};
// 监听表单
const changeValue = (changedFields, allFields) => {
// console.log(Object.keys(changedFields), allFields, 'changedFields');
if (Object.keys(changedFields)[0] === 'SMSContent') {
let regex = /\{@(.+?)\}/g;
let originalList = allFields.lines || [];
let list = changedFields.SMSContent.match(regex)?.map(item => {
let Name = item.substring(2, item.length - 1);
let orgItem = originalList.find(ele => ele.Name === Name);
return {
Name,
Description: orgItem ? orgItem.Description : '',
DefaultValue: orgItem ? orgItem.DefaultValue : '',
};
});
if (list) {
form.setFieldsValue({ lines: list });
} else {
form.setFieldsValue({ lines: [] });
}
}
};
const onFinish = () => {
if (!id) {
message.error('请保存基础信息');
return;
}
let value = form.getFieldsValue(true);
AddSMSStatus({
...value,
SMSStaus: value.SMSStaus ? 1 : 0,
id,
}).then(res => {
if (res.code === 0) {
message.success('保存成功');
} else {
message.error(res.msg);
}
});
};
return (
<div>
<Form
form={form}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
onValuesChange={changeValue}
labelAlign="left"
>
<div style={{ display: 'flex' }}>
<Form.Item
label="消息类型"
name="SMSType"
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
style={{ width: '400px', marginRight: '15px', display: 'block' }}
>
<Select placeholder="请选择消息类型" allowClear>
{typeList.map(item => (
<Option value={item.value} key={item.value}>
{item.name}
</Option>
))}
</Select>
</Form.Item>
<Form.Item
label="短信编号"
name="SMSNumber"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
>
<Input placeholder="请填写消息标题" />
</Form.Item>
<Form.Item
label="是否开启"
name="SMSStaus"
valuePropName="checked"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
>
<Switch checkedChildren="是" unCheckedChildren="否" />
</Form.Item>
</div>
<Form.Item label="内容" name="SMSContent" style={{ display: 'block', width: '1200px' }}>
<TextArea rows={4} placeholder="请输入内容" />
</Form.Item>
<Form.List name="lines">
{fields => (
<>
{fields.map(({ key, name, ...restField }) => (
<Space
key={key}
style={{
display: 'flex',
marginBottom: 8,
}}
align="baseline"
>
<Form.Item
{...restField}
label="参数名"
name={[name, 'Name']}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Input readOnly />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'Description']}
label="含义"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写含义',
// },
// ]}
>
<Input placeholder="请填写含义" />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'DefaultValue']}
label="默认值"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写默认值',
// },
// ]}
>
<Input placeholder="请填写默认值" />
</Form.Item>
{/* <MinusCircleOutlined onClick={() => remove(name)} /> */}
</Space>
))}
{/* <Form.Item>
<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
Add field
</Button>
</Form.Item> */}
</>
)}
</Form.List>
<Form.Item>
<Button type="primary" onClick={onFinish}>
保存
</Button>
</Form.Item>
</Form>
</div>
);
};
export default ShortMessageConfig;
import React, { useState, useEffect, useRef } from 'react';
import { Form, Input, Select, Space, TreeSelect, Empty, Switch, Button, message } from 'antd';
import { FolderFilled, FileOutlined, MobileOutlined } from '@ant-design/icons';
import { AddWechatStatus } from '@/services/messagemanage/messagemanage';
const { Option } = Select;
const { TextArea } = Input;
const { TreeNode } = TreeSelect;
const typeList = [{ name: '报警通知', value: 1 }, { name: '运行简报', value: 2 }];
const WeChatConfig = props => {
const { menuMoblieList, formValue, id } = props;
const [form] = Form.useForm();
useEffect(() => {
getFormData();
}, []);
const getFormData = () => {
console.log(formValue, 'formValue');
if (formValue) {
form.setFieldsValue({ ...formValue, WechatStaus: formValue.WechatStaus === 1 });
}
};
// 监听表单
const changeValue = (changedFields, allFields) => {
// console.log(Object.keys(changedFields), allFields, 'changedFields');
if (Object.keys(changedFields)[0] === 'WechatContent') {
let regex = /\{@(.+?)\}/g;
let originalList = allFields.lines || [];
let list = changedFields.WechatContent.match(regex)?.map(item => {
let Name = item.substring(2, item.length - 1);
let orgItem = originalList.find(ele => ele.Name === Name);
return {
Name,
Description: orgItem ? orgItem.Description : '',
DefaultValue: orgItem ? orgItem.DefaultValue : '',
};
});
if (list) {
form.setFieldsValue({ lines: list });
} else {
form.setFieldsValue({ lines: [] });
}
}
};
const mapAppTree = org => {
const haveChildren = Array.isArray(org.children) && org.children.length > 0;
let icon;
let value = org.id;
if (org.menuType === 'MiniAppsingleStation') {
value = org.stationID;
icon = <MobileOutlined />;
}
if (org.menuType === 'MiniAppMenuGroup' || org.menuType === '"MiniAppMenuGroupTwo"') {
value = org.id;
icon = <FolderFilled />;
}
if (org.menuType === 'MiniAppMenuThree' || org.menuType === 'MiniAppMenu') {
icon = <FileOutlined style={{ color: '#1890ff' }} />;
value = org.pageUrl || org.id;
}
return (
<TreeNode
value={value}
title={org.text}
icon={icon}
key={value}
disabled={org.menuType !== 'MiniAppMenuThree' && org.menuType !== 'MiniAppMenu'}
>
{haveChildren ? org.children.map(item => mapAppTree(item)) : null}
</TreeNode>
);
};
const onFinish = () => {
if (!id) {
message.error('请保存基础信息');
return;
}
let value = form.getFieldsValue(true);
AddWechatStatus({
...value,
WechatStaus: value.WechatStaus ? 1 : 0,
id,
}).then(res => {
if (res.code === 0) {
message.success('保存成功');
} else {
message.error(res.msg);
}
});
};
return (
<div>
<Form
form={form}
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
onValuesChange={changeValue}
labelAlign="left"
>
<div style={{ display: 'flex' }}>
<Form.Item
label="消息类型"
name="WechatType"
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
style={{ width: '400px', marginRight: '15px', display: 'block' }}
>
<Select placeholder="请选择消息类型" allowClear>
{typeList.map(item => (
<Option value={item.value} key={item.value}>
{item.name}
</Option>
))}
</Select>
</Form.Item>
<Form.Item
label="模板编号"
name="WechatCode"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
>
<Input placeholder="请填写消息标题" />
</Form.Item>
<Form.Item
label="是否开启"
name="WechatStaus"
valuePropName="checked"
style={{ width: '400px', display: 'block' }}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
>
<Switch checkedChildren="是" unCheckedChildren="否" />
</Form.Item>
</div>
<Form.Item label="跳转路径" name="WechatUrl" style={{ display: 'block', width: '1200px' }}>
<Input placeholder="请填写跳转路径" />
{/* <TreeSelect
showSearch
treeNodeFilterProp="title"
treeNodeLabelProp="value"
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
placeholder="请选择功能路径"
allowClear
treeDefaultExpandAll
treeIcon
>
{menuMoblieList ? (
menuMoblieList.map(item => mapAppTree(item))
) : (
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
)}
</TreeSelect> */}
</Form.Item>
<Form.Item label="内容" name="WechatContent" style={{ display: 'block', width: '1200px' }}>
<TextArea rows={6} placeholder="请输入内容" />
</Form.Item>
<Form.List name="lines">
{fields => (
<>
{fields.map(({ key, name, ...restField }) => (
<Space
key={key}
style={{
display: 'flex',
marginBottom: 8,
}}
align="baseline"
>
<Form.Item
{...restField}
label="参数名"
name={[name, 'Name']}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Input readOnly />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'Description']}
label="含义"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写含义',
// },
// ]}
>
<Input placeholder="请填写含义" />
</Form.Item>
<Form.Item
{...restField}
name={[name, 'DefaultValue']}
label="默认值"
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
// rules={[
// {
// required: true,
// message: '请填写默认值',
// },
// ]}
>
<Input placeholder="请填写默认值" />
</Form.Item>
{/* <MinusCircleOutlined onClick={() => remove(name)} /> */}
</Space>
))}
{/* <Form.Item>
<Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
Add field
</Button>
</Form.Item> */}
</>
)}
</Form.List>
<Form.Item>
<Button type="primary" onClick={onFinish}>
保存
</Button>
</Form.Item>
</Form>
</div>
);
};
export default WeChatConfig;
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { Button, Form, Input, Switch, Tooltip, Divider, Collapse, PageHeader, message } from 'antd';
import { FieldTimeOutlined, UsergroupAddOutlined } from '@ant-design/icons';
import { getWebModuleTree } from '@/services/webConfig/api';
import { getMiniAppModuleTree } from '@/services/mobileConfig/api';
import {
AddMessageConfigs,
UpdateMessageConfigs,
AddIISAgentConfig,
} from '@/services/messagemanage/messagemanage';
import { useHistory } from 'react-router-dom';
import PlatformConfig from './components/PlatformConfig';
import ShortMessageConfig from './components/ShortMessageConfig';
import WeChatConfig from './components/WeChatConfig';
import EnterpriseWeChatConfig from './components/EnterpriseWeChatConfig';
import RoleModal from '../projectManage/components/RolseSelect/RoleModalNew';
import VisibleIISAgentConfig from '../projectManage/components/IISAgentConfig/VisibleIISAgentConfigNew';
import styles from './schemeDetails.less';
const { Panel } = Collapse;
const SchemeDetails = props => {
const history = useHistory();
const { schemeMsg } = props.location.state;
const [baseForm] = Form.useForm();
const [menuWebList, setMenuWebList] = useState([]); // web菜单列表
const [menuMoblieList, setMenuMoblieList] = useState([]); // app菜单列表
const [IISConfig, setIISConfig] = useState(null); // 定时计划配置
const [showRoleModal, setShowRoleModal] = useState(false); // 推送组选择角色弹窗
const [flag, setFlag] = useState(0);
const schemeTypeList = useRef({});
const schemeId = useRef();
const timePlan = useRef();
const roleSelect = useRef([]);
useEffect(() => {
console.log(schemeMsg, 'schemeMsg');
getFormData();
getWebTree();
getAppTRee();
}, []);
const getFormData = () => {
if (!schemeMsg) {
return;
}
roleSelect.current = schemeMsg.TimeJobGroup.map(item =>
JSON.stringify({
value: item.id,
label: item.name,
}),
);
console.log(roleSelect.current, 'roleSelect.current');
baseForm.setFieldsValue({
SchemeName: schemeMsg.SchemeName,
TimeJobGroup: schemeMsg.TimeJobGroup.map(item => item.name).join(','),
TimeJobOpen: schemeMsg.TimeJobOpen === 1,
IsEnable: schemeMsg.IsEnable === 1,
});
setFlag(flag + 1);
};
// 获取apptree数据
const getAppTRee = () => {
getMiniAppModuleTree({
userMode: 'super',
})
.then(res => {
if (res.code === 0) {
let list = res.data.find(item => item.id === 'MiniAppSite');
let applist = list.children.map(item => ({
...item,
children: item.children[1].children,
}));
setMenuMoblieList(applist);
} else {
message.error(res.msg);
}
})
.catch(err => {
message.error('网络异常请稍后再试');
});
};
const getWebTree = () => {
getWebModuleTree('super')
.then(res => {
const { code, data } = res;
if (code === 0) {
let list = data.find(item => item.id === 'Web4SingleStation');
let weblist = list.children.map(item => ({
...item,
children: item.children[1].children,
}));
setMenuWebList(weblist);
} else {
message.error(res.msg);
}
})
.catch(err => {
message.error('网络异常请稍后再试');
});
};
const headerRender = value => {
return value;
};
// 角色回调函数
const rolCallBack = useCallback(list => {
console.log(list, 'list');
let strList = [];
roleSelect.current = [];
if (list.length > 0) {
list.forEach(item => {
item.checkedList.forEach(ele => {
strList.push(JSON.parse(ele).label);
roleSelect.current.push(ele);
});
});
baseForm.setFieldsValue({ TimeJobGroup: strList.join(',') });
setShowRoleModal(false);
}
});
// 定时计划
const onIISAgentSubmit = val => {
console.log(val, 'valfadsf');
setIISConfig(val);
};
const onFinish = () => {
let val = baseForm.getFieldsValue(true);
let obj = {
SchemeName: val.SchemeName,
IsEnable: val.IsEnable ? 1 : 0,
TimeJobOpen: val.TimeJobOpen ? 1 : 0,
TimeJobGroup: roleSelect.current.map(item => JSON.parse(item).value).join(','),
};
if (schemeMsg) {
UpdateMessageConfigs({ ...obj, id: schemeMsg.Id }).then(res => {
if (res.code === 0) {
message.success('保存成功');
saveIISAgentConfig();
} else {
message.error(res.msg);
}
});
} else {
AddMessageConfigs(obj).then(res => {
if (res.code === 0) {
schemeId.current = res.data;
setFlag(flag + 1);
message.success('保存成功');
saveIISAgentConfig();
} else {
message.error(res.msg);
}
});
}
};
const saveIISAgentConfig = () => {
if (IISConfig) {
AddIISAgentConfig(IISConfig).then(res => {
if (res.code === 0) {
// message.success('保存成功');
} else {
message.error(res.msg);
}
});
}
};
return (
<div className={styles.detailContent}>
<PageHeader
className="site-page-header"
onBack={() =>
history.push({
pathname: '/platform/notificationNew',
})
}
title="返回"
subTitle=""
/>
<div className={styles.configContent}>
<Divider
orientation="left"
style={{
borderTopColor: '#99bbe8',
color: '#15428b',
fontWeight: 700,
}}
>
基础设置
</Divider>
<Form form={baseForm} layout="inline">
<Form.Item label="方案名称" name="SchemeName">
<Input />
</Form.Item>
<Form.Item label="是否启用" name="IsEnable" valuePropName="checked">
<Switch checkedChildren="是" unCheckedChildren="否" />
</Form.Item>
<Form.Item label="启用定时计划" name="TimeJobOpen" valuePropName="checked">
<Switch checkedChildren="是" unCheckedChildren="否" />
</Form.Item>
<Form.Item label="推送组">
<Input.Group
compact
style={{
display: 'flex',
}}
>
<Form.Item name="TimeJobGroup">
<Input readOnly />
</Form.Item>
<Tooltip title="选择推送组">
<Button icon={<UsergroupAddOutlined />} onClick={() => setShowRoleModal(true)} />
</Tooltip>
</Input.Group>
</Form.Item>
<Form.Item label="定时计划">
<Input.Group
compact
style={{
display: 'flex',
}}
>
{/* <Input /> */}
<Tooltip title="配置定时计划">
<Button
icon={<FieldTimeOutlined />}
onClick={() => {
setFlag(flag + 1);
timePlan.current.setPreviewVisible(true);
}}
/>
</Tooltip>
</Input.Group>
</Form.Item>
<Form.Item>
<Button type="primary" onClick={onFinish}>
保存
</Button>
</Form.Item>
</Form>
<Divider
orientation="left"
style={{
borderTopColor: '#99bbe8',
color: '#15428b',
fontWeight: 700,
}}
>
方案管理
</Divider>
<Collapse accordion defaultActiveKey={['1']}>
<Panel header={headerRender('平台消息配置')} key="1">
<PlatformConfig
id={schemeMsg ? schemeMsg?.Id : schemeId.current}
menuWebList={menuWebList}
menuMoblieList={menuMoblieList}
formValue={schemeMsg?.Platform}
/>
</Panel>
<Panel header={headerRender('短信消息配置')} key="2">
<ShortMessageConfig
formValue={schemeMsg?.SMS}
id={schemeMsg ? schemeMsg?.Id : schemeId.current}
/>
</Panel>
<Panel header={headerRender('微信公众号配置')} key="3">
<WeChatConfig
menuMoblieList={menuMoblieList}
formValue={schemeMsg?.Wechat}
id={schemeMsg ? schemeMsg?.Id : schemeId.current}
/>
</Panel>
<Panel header={headerRender('企业微信配置')} key="4">
<EnterpriseWeChatConfig
menuMoblieList={menuMoblieList}
formValue={schemeMsg?.WorkWechat}
id={schemeMsg ? schemeMsg?.Id : schemeId.current}
/>
</Panel>
</Collapse>
</div>
<RoleModal
selectValue={roleSelect.current.join('|')}
visible={showRoleModal}
rolCallBack={roleList => rolCallBack(roleList)}
onCancel={() => {
setShowRoleModal(false);
}}
/>
<VisibleIISAgentConfig
ref={timePlan}
agentConfig={schemeMsg?.AgentConfig}
value={baseForm.getFieldValue('SchemeName')}
onIISAgentSubmit={onIISAgentSubmit}
/>
</div>
);
};
export default SchemeDetails;
.detailContent {
position: relative;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
background-color: #fff;
border-radius: 5px;
padding: 15px;
:global {
.ant-page-heade {
padding: 0;
}
}
.header {
display: flex;
justify-content: right;
margin-bottom: 10px;
padding-right: 25px;
}
.configContent {
flex: 1;
overflow-y: scroll;
padding: 5px;
}
}
\ No newline at end of file
...@@ -114,9 +114,12 @@ const PanoramaConfig = asyncComponent(() => ...@@ -114,9 +114,12 @@ const PanoramaConfig = asyncComponent(() =>
import('@/pages/platformCenter/gis/panoramaConfig/index'), import('@/pages/platformCenter/gis/panoramaConfig/index'),
); );
const MessageManager = asyncComponent(() => import('@/pages/platformCenter/messageManage')); const MessageManager = asyncComponent(() => import('@/pages/platformCenter/messageManage'));
// const SchemeDetail = asyncComponent(() => const MessageManagerNew = asyncComponent(() =>
// import('@/pages/platformCenter/messageManage/schemeDetails/schemeDetails'), import('@/pages/platformCenter/messageManage/indexNew'),
// ); );
const SchemeDetailNew = asyncComponent(() =>
import('@/pages/platformCenter/messageManage/schemeDetails/schemeDetails'),
);
const SchemeDetail = asyncComponent(() => const SchemeDetail = asyncComponent(() =>
import('@/pages/platformCenter/messageManage/schemeDetail/schemeDetail'), import('@/pages/platformCenter/messageManage/schemeDetail/schemeDetail'),
); );
...@@ -333,11 +336,11 @@ export default { ...@@ -333,11 +336,11 @@ export default {
hideMenu: true, hideMenu: true,
component: FlowNode, component: FlowNode,
}, },
{ // {
path: '/biz/workflow/editor', // path: '/biz/workflow/editor',
name: '工作流编辑', // name: '工作流编辑',
component: Workflow, // component: Workflow,
}, // },
{ {
path: '/biz/workflow/center', path: '/biz/workflow/center',
name: '流程中心', name: '流程中心',
...@@ -429,6 +432,17 @@ export default { ...@@ -429,6 +432,17 @@ export default {
name: '消息中心', name: '消息中心',
component: MessageManager, component: MessageManager,
}, },
// {
// path: '/platform/notificationNew',
// name: '消息中心(新)',
// component: MessageManagerNew,
// },
{
path: '/platform/SchemeDetailNew',
name: '模板编辑',
component: SchemeDetailNew,
hideMenu: true,
},
{ {
path: '/platform/schemeDetail', path: '/platform/schemeDetail',
name: '模板编辑', name: '模板编辑',
......
/* /*
* @Description: * @Author: dengchao 754083046@qq.com
* @Author: leizhe * @Date: 2022-11-28 19:05:07
* @Date: 2022-01-13 17:26:14 * @LastEditors: dengchao 754083046@qq.com
* @LastEditTime: 2022-03-23 10:46:01 * @LastEditTime: 2022-12-27 11:18:37
* @LastEditors: leizhe * @FilePath: \maintenance\src\services\messagemanage\messagemanage.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
import { get, post, PUBLISH_SERVICE, CITY_SERVICE } from '@/services/index'; import { get, post, PUBLISH_SERVICE, CITY_SERVICE } from '@/services/index';
...@@ -45,4 +46,28 @@ export const GetGroupUserTree = param => ...@@ -45,4 +46,28 @@ export const GetGroupUserTree = param =>
get(`${PUBLISH_SERVICE}/UserCenter/GetGroupUserTree`, param); get(`${PUBLISH_SERVICE}/UserCenter/GetGroupUserTree`, param);
// 获取图片路径接口 // 获取图片路径接口
export const GetMessageIcon = param => get(`${PUBLISH_SERVICE}/MessageConfig/GetMessageIcon`, param); export const GetMessageIcon = param =>
\ No newline at end of file get(`${PUBLISH_SERVICE}/MessageConfig/GetMessageIcon`, param);
// 查询新消息平台配置
export const GetMessageConfigs = param =>
get(`${PUBLISH_SERVICE}/MessageConfig/GetMessageConfigs`, param);
// 新增消息平台方案配置
export const AddMessageConfigs = param =>
post(`${PUBLISH_SERVICE}/MessageConfig/AddMessage_Configs`, param);
// 修改消息平台方案配置
export const UpdateMessageConfigs = param =>
post(`${PUBLISH_SERVICE}/MessageConfig/UpdateMessage_Configs`, param);
// 添加或修改平台弹框配置
export const AddPlatformStatus = param =>
post(`${PUBLISH_SERVICE}/MessageConfig/AddPlatformStatus`, param);
// 添加或修改短信推送配置
export const AddSMSStatus = param => post(`${PUBLISH_SERVICE}/MessageConfig/AddSMSStatus`, param);
// 添加或修改微信公众号推送配置
export const AddWechatStatus = param =>
post(`${PUBLISH_SERVICE}/MessageConfig/AddWechatStatus`, param);
// 添加或修改企业微信推送设置
export const AddWorkWechatStatus = param =>
post(`${PUBLISH_SERVICE}/MessageConfig/AddWorkWechatStatus`, param);
// 删除
export const DelMessageConfigs = param =>
get(`${PUBLISH_SERVICE}/MessageConfig/DelMessage_Configs`, param);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment