Commit 7b67f75d authored by Maofei94's avatar Maofei94

perf: 小程序配置中心

parent c557eab0
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Form, Select, Input, Button, Radio, notification, Spin } from 'antd'; import { Form, Select, Input, Button, Radio, notification, Spin } from 'antd';
import { editWebsite, getWebsite } from '@/services/mobileConfig/api'; import {
editWebsite,
getWebsite,
addWebsite,
} from '@/services/mobileConfig/api';
import PicturesWall from '@/components/Upload/index'; import PicturesWall from '@/components/Upload/index';
const { Item } = Form; const { Item } = Form;
const { Option } = Select; const { Option } = Select;
const SiteConfig = props => { const SiteConfig = props => {
const { miniTitle, submitCallback } = props; const { miniTitle, submitCallback, subType } = props;
console.log(subType, 'ubType');
const [config, setConfig] = useState(''); // 网站配置信息 const [config, setConfig] = useState(''); // 网站配置信息
const [loginList, setLoginList] = useState([ const [loginList, setLoginList] = useState([
{ text: '默认界面', value: 'default' }, { text: '默认界面', value: 'default' },
...@@ -58,9 +63,39 @@ const SiteConfig = props => { ...@@ -58,9 +63,39 @@ const SiteConfig = props => {
setLoading(true); setLoading(true);
const obj = { ...form.getFieldsValue() }; const obj = { ...form.getFieldsValue() };
let params = { ...obj, mode: 'single', client: 'miniapp' }; let params = { ...obj, mode: 'single', client: 'miniapp' };
if (subType === 'add') {
addWebsite(params, {
headers: {
'content-type':
'application/x-www-form-urlencggoded;charset=UTF-8',
},
})
.then(res => {
setLoading(false);
if (res.success) {
submitCallback();
notification.success({
message: '提示',
duration: 3,
description: '新增成功',
});
} else {
notification.error({
message: '提示',
duration: 10,
description: res.message || '新增失败',
});
}
console.log(res, 'res');
})
.catch(err => {
setLoading(false);
});
} else {
editWebsite(params, { editWebsite(params, {
headers: { headers: {
'content-type': 'application/x-www-form-urlencggoded;charset=UTF-8', 'content-type':
'application/x-www-form-urlencggoded;charset=UTF-8',
}, },
}) })
.then(res => { .then(res => {
...@@ -85,6 +120,7 @@ const SiteConfig = props => { ...@@ -85,6 +120,7 @@ const SiteConfig = props => {
setLoading(false); setLoading(false);
}); });
} }
}
}); });
}; };
return ( return (
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect, useMemo } from 'react';
import { Card, Tabs } from 'antd'; import { Card, Tabs, Button, Popconfirm, notification, Spin } from 'antd';
import ProCard from '@ant-design/pro-card'; import ProCard from '@ant-design/pro-card';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import { import {
miniAppSiteTree, miniAppSiteTree,
getMiniAppModuleTree, getMiniAppModuleTree,
deleteWebsite,
} from '@/services/mobileConfig/api'; } from '@/services/mobileConfig/api';
import SiteConfig from './SiteConfig'; import SiteConfig from './SiteConfig';
import MenuConfig from './menuconfig/MenuConfig'; import MenuConfig from './menuconfig/MenuConfig';
...@@ -13,6 +14,10 @@ const MobileConfigPage = props => { ...@@ -13,6 +14,10 @@ const MobileConfigPage = props => {
const [activeKey, setActiveKey] = useState('0'); // tabs活动页 const [activeKey, setActiveKey] = useState('0'); // tabs活动页
const [miniTitle, setMiniTitle] = useState(''); const [miniTitle, setMiniTitle] = useState('');
const [flag, setFlag] = useState(1); const [flag, setFlag] = useState(1);
const [showConfig, setShowConfig] = useState(true);
const [loading, setLoading] = useState(false);
const [position, setPosition] = useState([]);
const [subType, setSubType] = useState('');
useEffect(() => { useEffect(() => {
// miniAppSiteTree({ // miniAppSiteTree({
// userMode: 'admin', // userMode: 'admin',
...@@ -21,18 +26,30 @@ const MobileConfigPage = props => { ...@@ -21,18 +26,30 @@ const MobileConfigPage = props => {
// _dc: new Date().getTime(), // _dc: new Date().getTime(),
// node: -2, // node: -2,
// }) // })
setLoading(true);
getMiniAppModuleTree({ getMiniAppModuleTree({
userMode: 'admin', userMode: 'admin',
}).then(res => { }).then(res => {
setLoading(false);
console.log(res, 'res'); console.log(res, 'res');
if (res.code === 0) { if (res.code === 0) {
const { data } = res; const { data } = res;
if (data[0].children.length > 0) {
const title = data[0].children[0].text || '熊猫掌天下小程序'; const title = data[0].children[0].text || '熊猫掌天下小程序';
setShowConfig(true);
setMiniTitle(title); setMiniTitle(title);
setPosition(['right']);
} else {
setPosition(['left']);
setShowConfig(false);
}
} else {
setShowConfig(false);
} }
console.log(res); console.log(res);
}); });
}, [flag]); }, [flag]);
useEffect(() => { useEffect(() => {
// getMiniAppModuleTree({ // getMiniAppModuleTree({
// userMode: 'super', // userMode: 'super',
...@@ -46,13 +63,74 @@ const MobileConfigPage = props => { ...@@ -46,13 +63,74 @@ const MobileConfigPage = props => {
}; };
const submitCallback = () => { const submitCallback = () => {
setFlag(flag + 1); setFlag(flag + 1);
setSubType('');
}; };
// 删除小程序
const delMini = () => {
deleteWebsite({
client: 'miniapp',
_version: 9999,
_dc: Date.now(),
}).then(res => {
if (res.success) {
setFlag(flag + 1);
notification.success({
message: '提示',
duration: 3,
description: '删除成功',
});
} else {
notification.success({
message: '提示',
duration: 3,
description: res.message || '删除失败',
});
}
});
};
const addMini = () => {
setShowConfig(true);
setSubType('add');
};
const options = {
left: (
<Button type="primary" onClick={addMini}>
新增小程序
</Button>
),
right: (
<Popconfirm
title="是否删除小程序网站,及相关联的角色和菜单"
okText="确认"
cancelText="取消"
placement="left"
onConfirm={delMini}
>
<Button type="primary" danger>
删除小程序
</Button>
</Popconfirm>
),
};
const slot = useMemo(() => {
if (position.length === 0) return null;
return position.reduce((acc, direction) => {
console.log(acc, direction);
return { ...acc, [direction]: options[direction] };
}, {});
}, [position]);
const tabArr = [ const tabArr = [
{ {
title: '网站配置', title: '网站配置',
key: '0', key: '0',
component: ( component: (
<SiteConfig miniTitle={miniTitle} submitCallback={submitCallback} /> <SiteConfig
miniTitle={miniTitle}
submitCallback={submitCallback}
subType={subType}
/>
), ),
}, },
{ {
...@@ -64,14 +142,22 @@ const MobileConfigPage = props => { ...@@ -64,14 +142,22 @@ const MobileConfigPage = props => {
return ( return (
<PageContainer> <PageContainer>
<ProCard> <ProCard>
<Tabs activeKey={activeKey} type="card" onChange={handleChange}> <Spin tip="loading..." spinning={loading}>
{tabArr?.length > 0 && <Tabs
activeKey={activeKey}
type="card"
onChange={handleChange}
tabBarExtraContent={slot}
>
{showConfig &&
tabArr?.length > 0 &&
tabArr.map(item => ( tabArr.map(item => (
<TabPane tab={item.title} key={item.key}> <TabPane tab={item.title} key={item.key}>
{activeKey === item.key && item.component} {activeKey === item.key && item.component}
</TabPane> </TabPane>
))} ))}
</Tabs> </Tabs>
</Spin>
</ProCard> </ProCard>
</PageContainer> </PageContainer>
); );
......
import React, { useState } from 'react'; import React, { useState, useEffect } from 'react';
import { Form, Input, Button, Row, Col } from 'antd'; import { Form, Input, Button, Row, Col } from 'antd';
import styles from './addForm.less'; import styles from './addForm.less';
import PicturesWall from '@/components/Upload/index'; import PicturesWall from '@/components/Upload/index';
import CheckList from './checkBox';
import checkStyles from './checkBox';
const { Item } = Form; const { Item } = Form;
const AddForm = props => { const AddForm = props => {
const { submitCallback, nodeType, nodeObj, addType, submitLoading } = props; const {
submitCallback,
nodeType,
nodeObj,
addType,
submitLoading,
valueCallback,
addList,
} = props;
const [form] = Form.useForm(); const [form] = Form.useForm();
const [otherForm] = Form.useForm(); const [otherForm] = Form.useForm();
console.log(nodeObj, 'nodeObj'); console.log(nodeObj, 'nodeObj');
...@@ -27,6 +37,7 @@ const AddForm = props => { ...@@ -27,6 +37,7 @@ const AddForm = props => {
const finish = () => { const finish = () => {
submit(); submit();
}; };
useEffect(() => {}, [nodeObj, addType]);
return ( return (
<div> <div>
{(addType === 1 || addType === 2) && ( {(addType === 1 || addType === 2) && (
...@@ -186,6 +197,11 @@ const AddForm = props => { ...@@ -186,6 +197,11 @@ const AddForm = props => {
<Item label="功能参数" name="funParam"> <Item label="功能参数" name="funParam">
<Input /> <Input />
</Item> </Item>
{/* <CheckList
nodeType={addType}
valueCallback={valueCallback}
addList={addList}
/> */}
<Item wrapperCol={{ offset: 5 }} style={{ marginTop: '40px' }}> <Item wrapperCol={{ offset: 5 }} style={{ marginTop: '40px' }}>
<Button type="primary" htmlType="submit" loading={submitLoading}> <Button type="primary" htmlType="submit" loading={submitLoading}>
提交 提交
......
...@@ -2,12 +2,10 @@ import React, { useState, useEffect } from 'react'; ...@@ -2,12 +2,10 @@ import React, { useState, useEffect } from 'react';
import { Checkbox, Empty } from 'antd'; import { Checkbox, Empty } from 'antd';
import styles from './checkBox.less'; import styles from './checkBox.less';
const CheckList = props => { const CheckList = props => {
const { info, valueCallback, nodeType } = props; const { info = {}, valueCallback = () => {}, nodeType = '', addList } = props;
console.log(info, 'info'); console.log(info, 'info');
const [list, setList] = useState([]); const [list, setList] = useState([]);
const [checkList, setCheckList] = useState([]); const [addRoleList, setAddRoleList] = useState([]);
const [flag, setFlag] = useState(false);
const a = 'a';
useEffect(() => { useEffect(() => {
if (info.pageUrl) { if (info.pageUrl) {
let arr = [...info.relatedRoleList]; let arr = [...info.relatedRoleList];
...@@ -17,21 +15,15 @@ const CheckList = props => { ...@@ -17,21 +15,15 @@ const CheckList = props => {
arr2.push(item.relatedRoleCode); arr2.push(item.relatedRoleCode);
} }
}); });
console.log(arr2, 'arr2');
setCheckList(arr2);
setList(arr); setList(arr);
setFlag(true);
} }
return () => {
setFlag(false);
setCheckList([]);
};
}, [info]); }, [info]);
useEffect(() => {
if (addList && addList.length > 0) {
setAddRoleList([...addList]);
}
}, [addList]);
const handleSelect = (e, val) => { const handleSelect = (e, val) => {
console.log(e.target, 'e', val);
let arr = [];
list.forEach(item => { list.forEach(item => {
if (item.relatedRoleCode === val) { if (item.relatedRoleCode === val) {
item.related = e.target.checked; item.related = e.target.checked;
...@@ -40,6 +32,15 @@ const CheckList = props => { ...@@ -40,6 +32,15 @@ const CheckList = props => {
setList([...list]); setList([...list]);
valueCallback(list); valueCallback(list);
}; };
const handleRoleSelect = (e, val) => {
addRoleList.forEach(item => {
if (item.roleCode === val) {
item.related = e.target.checked;
}
});
setAddRoleList([...addRoleList]);
valueCallback(addRoleList);
};
return ( return (
<div> <div>
{nodeType === 3 || nodeType === 4 ? ( {nodeType === 3 || nodeType === 4 ? (
...@@ -64,6 +65,25 @@ const CheckList = props => { ...@@ -64,6 +65,25 @@ const CheckList = props => {
) : ( ) : (
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} /> <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
)} )}
{/* {
<div className={styles.box}>
{addRoleList &&
addRoleList.length > 0 &&
addRoleList.map(item => (
<div key={item.roleCode} className={styles.check}>
<Checkbox
checked={item.related}
onChange={e => {
handleRoleSelect(e, item.roleCode);
}}
>
{item.roleName}
</Checkbox>
</div>
))}
</div>
} */}
</div> </div>
); );
}; };
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
padding: 10px; padding: 10px;
margin-top: 10px; margin-top: 10px;
flex-wrap: wrap; flex-wrap: wrap;
border: 1px solid gray;
} }
.check{ .check{
flex-shrink: 0; flex-shrink: 0;
......
...@@ -180,7 +180,6 @@ const EditForm = props => { ...@@ -180,7 +180,6 @@ const EditForm = props => {
}, },
]} ]}
> >
{/* {otherForm.getFieldsValue().offlineImgUrl && <PicturesWall />} */}
<PicturesWall /> <PicturesWall />
</Item> </Item>
)} )}
......
...@@ -2,8 +2,6 @@ import React, { useEffect, useState } from 'react'; ...@@ -2,8 +2,6 @@ import React, { useEffect, useState } from 'react';
import { import {
message, message,
notification, notification,
Popconfirm,
Form,
Tree, Tree,
Tooltip, Tooltip,
Modal, Modal,
...@@ -18,7 +16,6 @@ import { ...@@ -18,7 +16,6 @@ import {
FileOutlined, FileOutlined,
DeleteTwoTone, DeleteTwoTone,
} from '@ant-design/icons'; } from '@ant-design/icons';
import PicturesWall from '@/components/Upload/index';
import classnames from 'classnames'; import classnames from 'classnames';
import { import {
miniAppSiteTree, miniAppSiteTree,
...@@ -27,6 +24,7 @@ import { ...@@ -27,6 +24,7 @@ import {
getMenuInfo, getMenuInfo,
deleteMenu, deleteMenu,
editMenu, editMenu,
getRoleListPlain,
} from '@/services/mobileConfig/api'; } from '@/services/mobileConfig/api';
import styles from './miniMenu.less'; import styles from './miniMenu.less';
import AddForm from './AddForm'; import AddForm from './AddForm';
...@@ -35,7 +33,7 @@ import CheckList from './checkBox'; ...@@ -35,7 +33,7 @@ import CheckList from './checkBox';
const MiniMenu = props => { const MiniMenu = props => {
const [flag, setFlag] = useState(1); // 刷新标志 const [flag, setFlag] = useState(1); // 刷新标志
const [treeFlage, setTreeFlag] = useState(true); const [treeFlag, setTreeFlag] = useState(true);
const [treeData, setTreeData] = useState([]); // 树的数据 const [treeData, setTreeData] = useState([]); // 树的数据
const [loading, setLoading] = useState(false); // 加载 const [loading, setLoading] = useState(false); // 加载
const [menuID, setMenuID] = useState(''); // 选中的树ID const [menuID, setMenuID] = useState(''); // 选中的树ID
...@@ -45,18 +43,28 @@ const MiniMenu = props => { ...@@ -45,18 +43,28 @@ const MiniMenu = props => {
const [addVisible, setAddVisible] = useState(false); // 新增弹窗 const [addVisible, setAddVisible] = useState(false); // 新增弹窗
const [addTwoVisible, setAddTwoVisible] = useState(false); // 编辑弹窗 const [addTwoVisible, setAddTwoVisible] = useState(false); // 编辑弹窗
const [delVisible, setDelVisible] = useState(false); // 删除弹窗 const [delVisible, setDelVisible] = useState(false); // 删除弹窗
const [addFlag, setAddFlag] = useState('root'); // 设置新增标志
const [nodeObj, setNodeObj] = useState({}); const [nodeObj, setNodeObj] = useState({});
const [addType, setAddType] = useState(''); // 添加下级类型 const [addType, setAddType] = useState(''); // 添加下级类型
const [modalTitle, setModalTitle] = useState(''); const [modalTitle, setModalTitle] = useState('');
const [roleList, setRoleList] = useState([]); // 复选框选中的值 const [roleList, setRoleList] = useState([]); // 复选框选中的值
const [modalLoading, setModalLoading] = useState(false); const [modalLoading, setModalLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false); const [submitLoading, setSubmitLoading] = useState(false);
const [addList, setAddList] = useState([]);
// 获取菜单树 // 获取菜单树
useEffect(() => { useEffect(() => {
updateTrees(); updateTrees();
}, [flag]); }, [flag]);
useEffect(() => {
getRoleListPlain({
subSystemValue: 'miniapp',
_dc: Date.now(),
_version: 9999,
}).then(res => {
if (res.success) {
setAddList(res.list);
}
});
}, [flag]);
// 获取菜单信息 // 获取菜单信息
useEffect(() => { useEffect(() => {
getInfo(); getInfo();
...@@ -84,7 +92,7 @@ const MiniMenu = props => { ...@@ -84,7 +92,7 @@ const MiniMenu = props => {
setTreeData(result); setTreeData(result);
console.log(result); console.log(result);
// 第一次加载,默认选择第一个组织 // 第一次加载,默认选择第一个组织
// if (treeFlage) { // if (treeFlag) {
// handleSelect([result[0].menuID], false); // handleSelect([result[0].menuID], false);
// setTreeFlag(false); // setTreeFlag(false);
// } // }
...@@ -111,17 +119,17 @@ const MiniMenu = props => { ...@@ -111,17 +119,17 @@ const MiniMenu = props => {
<div>{obj.text}</div> <div>{obj.text}</div>
<div className={styles.tip}> <div className={styles.tip}>
{obj.menuType === 'MiniAppMenuGroup' && ( {obj.menuType === 'MiniAppMenuGroup' && (
<Tooltip title="新增菜单组" className={styles.fs}> <Tooltip title="新增菜单组" className={styles.fsize}>
<FolderAddTwoTone onClick={() => addMenuGroupTip(obj)} /> <FolderAddTwoTone onClick={() => addMenuGroupTip(obj)} />
</Tooltip> </Tooltip>
)} )}
{obj.menuType === 'MiniAppMenuGroupTwo' && ( {obj.menuType === 'MiniAppMenuGroupTwo' && (
<Tooltip title="新增功能菜单" className={styles.fs}> <Tooltip title="新增功能菜单" className={styles.fsize}>
<FileAddTwoTone onClick={() => addMenuTip(obj)} /> <FileAddTwoTone onClick={() => addMenuTip(obj)} />
</Tooltip> </Tooltip>
)} )}
<Tooltip title="删除菜单" className={styles.fs}> <Tooltip title="删除菜单" className={styles.fsize}>
<DeleteTwoTone onClick={() => deleteMenuTip(obj)} /> <DeleteTwoTone onClick={() => deleteMenuTip(obj)} />
</Tooltip> </Tooltip>
</div> </div>
...@@ -276,7 +284,12 @@ const MiniMenu = props => { ...@@ -276,7 +284,12 @@ const MiniMenu = props => {
const submitCallback = (prop, item) => { const submitCallback = (prop, item) => {
setSubmitLoading(true); setSubmitLoading(true);
console.log(prop, item); console.log(prop, item);
console.log(roleList);
let obj = { ...prop }; let obj = { ...prop };
// if (addType === 3 || addType === 4) {
// obj.relatedRoleList = String(roleList) || '';
// }
console.log(obj);
const parentID = item.menuID ? item.menuID : -1; const parentID = item.menuID ? item.menuID : -1;
addMenu({ addMenu({
_dc: Date.now(), _dc: Date.now(),
...@@ -303,7 +316,6 @@ const MiniMenu = props => { ...@@ -303,7 +316,6 @@ const MiniMenu = props => {
duration: 10, duration: 10,
}); });
} }
console.log(res, 'resadd');
}) })
.catch(err => { .catch(err => {
setSubmitLoading(false); setSubmitLoading(false);
...@@ -350,7 +362,8 @@ const MiniMenu = props => { ...@@ -350,7 +362,8 @@ const MiniMenu = props => {
}); });
}; };
const valueCallback = val => { const valueCallback = val => {
console.log(val); console.log(val, 'val');
// relatedRoleCode
let arr = [...val]; let arr = [...val];
let arr2 = []; let arr2 = [];
arr.map(item => { arr.map(item => {
...@@ -420,9 +433,6 @@ const MiniMenu = props => { ...@@ -420,9 +433,6 @@ const MiniMenu = props => {
cancelText="取消" cancelText="取消"
okText="确认" okText="确认"
onCancel={() => setAddVisible(false)} onCancel={() => setAddVisible(false)}
onConfirm={() => {
submitCallback();
}}
> >
<AddForm <AddForm
nodeType={nodeType} nodeType={nodeType}
...@@ -430,12 +440,19 @@ const MiniMenu = props => { ...@@ -430,12 +440,19 @@ const MiniMenu = props => {
addType={addType} addType={addType}
submitCallback={submitCallback} submitCallback={submitCallback}
submitLoading={submitLoading} submitLoading={submitLoading}
valueCallback={valueCallback}
addList={addList}
/> />
</Modal> </Modal>
<Modal <Modal
visible={addTwoVisible} visible={addTwoVisible}
title={`在${modalTitle}下新增功能菜单`} title={`在${modalTitle}下新增功能菜单`}
bodyStyle={{ width: '100%', minHeight: '100px' }} bodyStyle={{
width: '100%',
minHeight: '100px',
maxHeight: '700px',
overflowY: 'scroll',
}}
style={{ top: 80 }} style={{ top: 80 }}
width="600px" width="600px"
destroyOnClose destroyOnClose
...@@ -449,7 +466,9 @@ const MiniMenu = props => { ...@@ -449,7 +466,9 @@ const MiniMenu = props => {
nodeType={nodeType} nodeType={nodeType}
nodeObj={nodeObj} nodeObj={nodeObj}
addType={addType} addType={addType}
addList={addList}
submitCallback={submitCallback} submitCallback={submitCallback}
valueCallback={valueCallback}
/> />
</Modal> </Modal>
<Modal <Modal
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
width: 100%; width: 100%;
} }
} }
.fs{ .fsize{
font-size: 18px; font-size: 18px;
margin-left: 10px; margin-left: 10px;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
max-height: calc(100vh - 74px); max-height: calc(100vh - 74px);
// overflow-y: scroll; // overflow-y: scroll;
overflow: auto; overflow: auto;
width: 260px; width: 300px;
left: 0; left: 0;
top: 0; top: 0;
margin-right: 10px; margin-right: 10px;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
min-height: calc(100vh - 75px); min-height: calc(100vh - 75px);
max-height: calc(100vh - 75px); max-height: calc(100vh - 75px);
overflow: auto; overflow: auto;
width: 260px; width: 300px;
left: 0; left: 0;
top: 0; top: 0;
margin-right: 10px; margin-right: 10px;
......
...@@ -81,6 +81,23 @@ export const editMenu = params => ...@@ -81,6 +81,23 @@ export const editMenu = params =>
get('/Cityinterface/rest/services/OMS.svc/MiniApp_EditMenu', params); get('/Cityinterface/rest/services/OMS.svc/MiniApp_EditMenu', params);
// 删除菜单 // 删除菜单
export const deleteMenu = params => export const deleteMenu = params =>
get('/Cityinterface/rest/services/OMS.svc/MiniApp_DeleteMenu', params); get('/Cityinterface/rest/services/OMS.svc/MiniApp_DeleteMenu', params);
// 获取角色列表
export const getRoleListPlain = params =>
get('/Cityinterface/rest/services/OMS.svc/P_GetRoleListPlain', params);
// 删除小程序
export const deleteWebsite = params =>
get('/Cityinterface/rest/services/OMS.svc/MiniApp_DeleteWebsite', params);
// 新增小程序
export const addWebsite = (params, options) => {
let strParams = JSON.stringify(params);
let qsParams = qs.stringify({ config: strParams });
return post(
'/Cityinterface/rest/services/OMS.svc/MiniApp_AddWebsite?_version=9999',
qsParams,
options,
);
};
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