Commit c710903d authored by 前端-许佳敏's avatar 前端-许佳敏
parents f6b36b67 638f80da
......@@ -37,6 +37,45 @@ const MemberRoute = {
component: '@/pages/member/memberMaintain/index',
},
{
path: '/memberCenter/memberAbility/manage/memberPrSubmit',
name: 'memberPrSubmit',
key: 'memberPrSubmit',
component: '@/pages/member/memberPrSubmit/index'
},
{
path: '/memberCenter/memberAbility/manage/auditPrSubmit',
name: 'auditPrSubmit',
key: 'auditPrSubmit',
hideInMenu: true,
component: '@/pages/member/memberPrSubmit/auditPrSubmit'
},
{
path: '/memberCenter/memberAbility/manage/memberPr',
name: 'memberPr',
key: 'memberPr',
component: '@/pages/member/memberPr/index'
},
{
path: '/memberCenter/memberAbility/manage/auditPr',
name: 'auditPr',
key: 'auditPr',
hideInMenu: true,
component: '@/pages/member/memberPr/auditPr'
},
{
path: '/memberCenter/memberAbility/manage/memberPrConfirm',
name: 'memberPrConfirm',
key: 'memberPrConfirm',
component: '@/pages/member/memberPrConfirm/index'
},
{
path: '/memberCenter/memberAbility/manage/auditPrComfirm',
name: 'auditPrComfirm',
key: 'auditPrComfirm',
hideInMenu: true,
component: '@/pages/member/memberPrConfirm/auditPrComfirm'
},
{
path: '/memberCenter/memberAbility/manage/upgradeRule',
name: 'memberUpgradeRule',
key: 'memberUpgradeRule',
......@@ -61,4 +100,4 @@ const MemberRoute = {
}
export default MemberRoute
\ No newline at end of file
export default MemberRoute
......@@ -31,7 +31,7 @@
"@umijs/test": "^3.2.0",
"bizcharts": "^4.0.7",
"god": "0.1.7",
"god-tool": "^2.2.0",
"god-tool": "2.4.0",
"lint-staged": "^10.0.7",
"mobx": "^5.15.4",
"mobx-react": "^6.2.2",
......
......@@ -3,7 +3,7 @@
* @Date: 2020-07-13 14:08:50
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-07-18 16:25:18
*/
*/
export default {
'menu.welcome': '欢迎',
......@@ -50,6 +50,12 @@ export default {
'menu.memberAbility.memberManage.memberImport': '会员导入',
'menu.memberAbility.memberManage.addMember': '新增会员',
'menu.memberAbility.memberManage.memberMaintain': '会员维护',
'menu.memberAbility.memberManage.memberPrSubmit': '待提交审核',
'menu.memberAbility.memberManage.auditPrSubmit': '待提交审核详情',
'menu.memberAbility.memberManage.memberPr': '待审核',
'menu.memberAbility.memberManage.auditPr': '待审核详情',
'menu.memberAbility.memberManage.memberPrConfirm': '待确认审核',
'menu.memberAbility.memberManage.auditPrComfirm': '待确认审核详情',
'menu.memberAbility.memberManage.memberUpgradeRule': '会员升级规则',
'menu.memberAbility.memberManage.memberLevel': '会员等级',
'menu.memberAbility.memberManage.addEquity': '会员权益设置',
......@@ -61,15 +67,15 @@ export default {
//物流能力
'menu.logisticsAbility': '物流',
'menu.logisticsAbility.logistics':'物流管理',
'menu.logisticsAbility.logistics.company':'物流公司管理',
'menu.logisticsAbility.logistics.addCompany':'新建物流公司',
'menu.logisticsAbility.logistics.deliveryAddress':'发货地址管理',
'menu.logisticsAbility.logistics.addressForm':'新建发货地址',
'menu.logisticsAbility.logistics.receivingAddress':'收货地址管理',
'menu.logisticsAbility.logistics.template':'运费模板管理',
'menu.logisticsAbility.logistics.templateForm':'新建运费模板',
'menu.logisticsAbility.logistics': '物流管理',
'menu.logisticsAbility.logistics.company': '物流公司管理',
'menu.logisticsAbility.logistics.addCompany': '新建物流公司',
'menu.logisticsAbility.logistics.deliveryAddress': '发货地址管理',
'menu.logisticsAbility.logistics.addressForm': '新建发货地址',
'menu.logisticsAbility.logistics.receivingAddress': '收货地址管理',
'menu.logisticsAbility.logistics.template': '运费模板管理',
'menu.logisticsAbility.logistics.templateForm': '新建运费模板',
'menu.logisticsAbility.logisticsSubmit':'物流单提交',
'menu.logisticsAbility.logisticsSubmit.orderSearchList':'物流单查询'
'menu.logisticsAbility.logisticsSubmit': '物流单提交',
'menu.logisticsAbility.logisticsSubmit.orderSearchList': '物流单查询'
};
\ No newline at end of file
import React, { ReactNode, useRef, useState } from 'react';
import { history } from 'umi';
import { StopOutlined, CheckSquareOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Row, Col, Button, Tag, Badge, Tabs, Steps, Descriptions } from 'antd';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import style from './index.less';
const { TabPane } = Tabs;
const { Step } = Steps;
interface ItemProps {}
const data = [
{
key: '1',
id: '1',
name: '价格权益',
explain: '交易一方能获得另一方的价格折扣',
type: '交易获取',
setting: '按交易金额比例设置',
params: '1',
status: 2,
},
{
key: '2',
id: '2',
name: '返现权益',
explain: '交易一方能获得另一方的交易返现',
type: '交易获取',
setting: '按交易金额比例设置',
params: '1',
status: 1,
},
];
const auditDetail: React.FC<ItemProps> = props => {
const ref = useRef({});
const [fActived, setfActived] = useState('1');
const [lActived, setlActived] = useState('1');
const [detailData, setDetailData] = useState({
step: {
current: 0,
items: [
{
title: '会员',
desc: '申请注册',
},
{
title: '平台',
desc: '审核会员',
},
{
title: '完成',
desc: '',
},
],
},
});
const columns: ColumnType<any>[] = [
{
title: 'ID',
dataIndex: 'id',
align: 'center',
key: 'id',
},
{
title: '会员权益名称',
dataIndex: 'name',
align: 'center',
key: 'name',
},
{
title: '会员权益说明',
dataIndex: 'explain',
align: 'center',
key: 'explain',
},
{
title: '权益获取方式',
dataIndex: 'type',
align: 'center',
key: 'type',
},
];
// 模拟请求
const fetchData = (params: any) => {
return new Promise((resolve, reject) => {
const queryResult = data.find(v => v.key === params.keywords);
setTimeout(() => {
resolve({
code: 200,
message: '',
data: queryResult ? [queryResult] : data,
});
}, 1000);
});
};
return (
<PageHeaderWrapper
onBack={() => window.history.back()}
title={
<>
<div className={style['headerTop']}>
<div className={style['headerTop-prefix']}>广</div>
<div className={style['headerTop-name']}>
广州市极致皮具有限公司
</div>
<div className={style[`levelIcon${'1'}`]}></div>
</div>
</>
}
extra={
<>
<Button>
<StopOutlined />
审核不通过
</Button>
<Button className={style.saveBtn}>
<CheckSquareOutlined />
审核通过
</Button>
</>
}
content={
<div className={style['headerMain']}>
<div className={style['headerMain-left']}>
<div className={style['headerMain-left-option']}>
<div>会员类型:</div>
<div>企业会员</div>
</div>
<div className={style['headerMain-left-option']}>
<div>会员角色:</div>
<div>供应商</div>
</div>
<div className={style['headerMain-left-option']}>
<div>会员状态:</div>
<div>
<Tag color="green">正常</Tag>
</div>
</div>
<div className={style['headerMain-left-option']}>
<div>外部状态:</div>
<div>
<Tag color="gold">待审核</Tag>
</div>
</div>
<div className={style['headerMain-left-option']}>
<div>内部状态:</div>
<div>
<Badge color="#669EDE" text="待提交审核" />
</div>
</div>
</div>
</div>
}
>
<Row>
<Col className={style.mainCol} span={24}>
<Tabs activeKey={fActived} onChange={val => setfActived(val)}>
<TabPane tab="外部审核流程" key="1">
<Steps
style={{ padding: '34px 0' }}
progressDot
current={detailData.step.current}
>
{detailData.step.items.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
/>
);
})}
</Steps>
</TabPane>
<TabPane tab="内部审核流程" key="2">
<Steps
style={{ padding: '34px 0' }}
progressDot
current={detailData.step.current}
>
{detailData.step.items.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
/>
);
})}
</Steps>
</TabPane>
</Tabs>
</Col>
<Col className={style.mainCol} span={24}>
<Descriptions
style={{ marginTop: '20px' }}
column={2}
title="基本信息"
>
<Descriptions.Item label="登录账户">
185 2929 6547
</Descriptions.Item>
<Descriptions.Item label="注册手机号">
185 2929 6547
</Descriptions.Item>
<Descriptions.Item label="注册邮箱">
kuaimeizheng@163.com
</Descriptions.Item>
<Descriptions.Item label="申请时间">
2020-12-26 13:45
</Descriptions.Item>
</Descriptions>
</Col>
<Col className={style.mainCol} span={24}>
<Descriptions
style={{ marginTop: '20px' }}
column={2}
title="渠道信息"
>
<Descriptions.Item label="渠道级别">二级</Descriptions.Item>
<Descriptions.Item label="渠道类型">电商渠道</Descriptions.Item>
<Descriptions.Item label="代理地市">
广东省/广州市 广东省/广州市
</Descriptions.Item>
<Descriptions.Item label="渠道描述">门店</Descriptions.Item>
</Descriptions>
</Col>
<Col className={style.mainCol} span={24}>
<Descriptions
style={{ marginTop: '20px' }}
column={2}
title="营业执照"
>
<Descriptions.Item label="渠道级别">二级</Descriptions.Item>
<Descriptions.Item label="渠道类型">电商渠道</Descriptions.Item>
<Descriptions.Item label="代理地市">
广东省/广州市 广东省/广州市
</Descriptions.Item>
<Descriptions.Item label="渠道描述">门店</Descriptions.Item>
</Descriptions>
</Col>
<Col className={style.mainCol} span={24}>
<Descriptions
style={{ marginTop: '20px' }}
column={2}
title="法定代表人信息"
>
<Descriptions.Item label="渠道级别">二级</Descriptions.Item>
<Descriptions.Item label="渠道类型">电商渠道</Descriptions.Item>
<Descriptions.Item label="代理地市">
广东省/广州市 广东省/广州市
</Descriptions.Item>
<Descriptions.Item label="渠道描述">门店</Descriptions.Item>
</Descriptions>
</Col>
<Col className={style.mainCol} span={24}>
<Descriptions
style={{ marginTop: '20px' }}
column={2}
title="联系信息"
>
<Descriptions.Item label="渠道级别">二级</Descriptions.Item>
<Descriptions.Item label="渠道类型">电商渠道</Descriptions.Item>
<Descriptions.Item label="代理地市">
广东省/广州市 广东省/广州市
</Descriptions.Item>
<Descriptions.Item label="渠道描述">门店</Descriptions.Item>
</Descriptions>
</Col>
<Col className={style.mainCol} span={24}>
<Tabs activeKey={lActived} onChange={val => setlActived(val)}>
<TabPane tab="流转记录" key="1">
<StandardTable
columns={columns}
currentRef={ref}
fetchTableData={(params: any) => fetchData(params)}
/>
</TabPane>
<TabPane tab="内部单据流转记录" key="2">
Content of Tab Pane 2
</TabPane>
</Tabs>
</Col>
</Row>
</PageHeaderWrapper>
);
};
export default auditDetail;
This diff is collapsed.
.col {
margin-bottom: 16px;
}
.subRow {
width: 100%;
.subCol {
width : 100%;
text-align: right;
.select {
width : 160px;
margin : 0 0 16px 16px;
text-align: left;
&:nth-of-type(1) {
margin-left: 0;
}
}
}
}
.mainCol {
background-color: #fff;
margin-bottom : 24px;
padding : 0 24px;
box-sizing : border-box;
&:nth-last-of-type(1) {
margin: 0;
}
}
.nameCell {
text-align: left;
.nameCellTitle {
color : @main-color;
cursor: pointer;
}
.levelIcon1 {
width : 100%;
height : 16px;
background : url("/static/imgs/level1@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
.levelIcon2 {
width : 100%;
height : 16px;
background : url("/static/imgs/level2@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
.levelIcon3 {
width : 100%;
height : 16px;
background : url("/static/imgs/level3@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
}
.headerTop {
display : flex;
align-items: center;
font-size : 20px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
&-prefix {
width : 48px;
height : 48px;
line-height : 48px;
border-radius : 4px;
border : 1px solid #DFE1E6;
color : #fff;
text-align : center;
background-color: #8777D9;
}
&-name {
color : #172B4D;
margin: 0 8px 0 12px;
}
}
.headerMain {
display: flex;
&-left {
flex : 6;
display : flex;
flex-wrap : wrap;
padding-left: 90px;
&-option {
display : flex;
width : calc(100% / 3);
margin-bottom: 17px;
font-size : 14px;
font-family : PingFangSC-Regular, PingFang SC;
font-weight : 400;
color : #6B778C;
padding-right: 20px;
&:nth-of-type(n + 4) {
margin: 0;
}
div {
flex: 1;
&:nth-last-of-type(1) {
flex: 2;
}
}
}
}
&-right {
flex : 1;
text-align: right;
}
}
.saveBtn {
color : #fff;
background : @main-color;
margin-left: 10px;
}
\ No newline at end of file
import React, { useState, useRef } from 'react'
import { history } from 'umi'
import { Tooltip, Input, Select, Button, Card, Dropdown, Menu, Row, Col } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import React, { useState, useEffect, useRef } from 'react';
import { history } from 'umi';
import {
Tabs,
Badge,
Tooltip,
Button,
Card,
Dropdown,
Menu,
Row,
Col,
} from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import {
PlusOutlined,
EyeOutlined,
UpOutlined,
ContainerOutlined,
DeleteOutlined,
DownOutlined
} from '@ant-design/icons'
import { StandardTable } from 'god'
import { ColumnType } from 'antd/lib/table/interface'
import style from './index.less'
DownOutlined,
} from '@ant-design/icons';
import {
Form,
FormItem,
FormButtonGroup,
createFormActions,
} from '@formily/antd';
import {
MegaLayout,
Select,
Input,
DatePicker,
} from '@formily/antd-components';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import style from './index.less';
import ChinaImg from '../../../../mockStatic/china.png';
import gou from '../../../../mockStatic/gou.png';
import japenImg from '../../../../mockStatic/japen.png';
import korenImg from '../../../../mockStatic/koren.png';
import us from '../../../../mockStatic/us.png';
const { Option } = Select;
const countryTem = `<><img src={} style={{ width: 24, height: 17 }} />`;
const selectList: any = [
{
label: (
<>
<img src={ChinaImg} style={{ width: 24, height: 17 }} /> +86
</>
),
value: '1',
},
{
label: (
<>
<img src={gou} style={{ width: 24, height: 17 }} /> +86
</>
),
value: '2',
},
{
label: (
<>
<img src={japenImg} style={{ width: 24, height: 17 }} /> +86
</>
),
value: '3',
},
{
label: (
<>
<img src={korenImg} style={{ width: 24, height: 17 }} /> +86
</>
),
value: '4',
},
{
label: (
<>
<img src={us} style={{ width: 24, height: 17 }} /> +86
</>
),
value: '5',
},
];
const data = []
const { TabPane } = Tabs;
const data = [];
const addMember: React.FC<[]> = () => {
const [actived, setActived] = useState('2');
const [tabCount, setTabCount] = useState({
'1': 0,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
});
const [editable, setEditable] = useState(true);
useEffect(() => {
// console.log(actived)
});
return (
<div></div>
)
}
<PageHeaderWrapper
onBack={() => history.goBack()}
title={
<>
<div className={style.headerTop}>
<span>返回</span>
<span>新建会员</span>
</div>
</>
}
extra={
<>
<Button className={style.saveBtn} icon={<ContainerOutlined />}>
保存
</Button>
</>
}
>
<Card>
<Tabs
tabBarGutter={30}
activeKey={actived}
onChange={activeKey => setActived(activeKey)}
>
<TabPane
tab={
<Badge count={tabCount['1']} offset={[10, 0]}>
基本信息
</Badge>
}
key="1"
>
<Form
editable={editable}
labelCol={3}
wrapperCol={10}
labelAlign="left"
>
<FormItem
title="会员类型"
name="memberType"
dataSource={[
{ value: 1, label: '企业会员' },
{ value: 2, label: '渠道会员' },
]}
rules={[{ required: true, message: '请选择会员类型!' }]}
component={Select}
/>
<FormItem
title="会员角色"
name="memberRole"
dataSource={[
{ value: 1, label: '企业会员' },
{ value: 2, label: '渠道会员' },
]}
rules={[{ required: true, message: '请选择会员角色!' }]}
component={Select}
/>
<FormItem
title="会员等级"
name="memberLevel"
dataSource={[
{ value: 1, label: '企业会员' },
{ value: 2, label: '渠道会员' },
]}
rules={[{ required: true, message: '请选择会员等级!' }]}
component={Select}
/>
<FormItem label="注册手机号" name="registry">
<Row gutter={10}>
<Col span={6}>
<FormItem
itemStyle={{ marginBottom: 0 }}
name="country"
dataSource={selectList}
initialValue={'1'}
required
component={Select}
/>
</Col>
<Col span={18}>
<FormItem
itemStyle={{ marginBottom: 0 }}
name="phoneMobile"
required
component={Input}
/>
</Col>
</Row>
</FormItem>
<FormItem title="注册邮箱" name="memberEmail" component={Input} />
</Form>
</TabPane>
<TabPane
tab={
<Badge count={tabCount['2']} offset={[10, 0]}>
渠道信息
</Badge>
}
key="2"
>
<Form
editable={editable}
labelCol={3}
wrapperCol={10}
labelAlign="left"
>
<FormItem
title="渠道级别"
name="channelLevel"
component={Input}
/>
<FormItem
title="渠道类型"
name="channelType"
dataSource={[
{ value: 1, label: '企业会员' },
{ value: 2, label: '渠道会员' },
]}
rules={[{ required: true, message: '请选择渠道类型!' }]}
component={Select}
/>
<FormItem title="代理地市" name="address" component={Input}>
{/* <Row gutter={10}>
<Col span={6}>
<FormItem
itemStyle={{ marginBottom: 0 }}
name="country"
dataSource={selectList}
initialValue={'1'}
required
component={Select}
/>
</Col>
<Col span={18}>
<FormItem
itemStyle={{ marginBottom: 0 }}
name="phoneMobile"
required
component={Input}
/>
</Col>
</Row> */}
</FormItem>
<FormItem
mega-props={{
placeholder: '最长200个字符,100个汉字',
}}
title="渠道描述"
name="desc"
rules={[{ required: true, message: '请填写渠道描述!' }]}
component={Input.TextArea}
x-component-props={{
placeholder: '测试',
}}
/>
</Form>
</TabPane>
<TabPane
tab={
<Badge count={tabCount['3']} offset={[10, 0]}>
营业执照
</Badge>
}
key="3"
>
Tab 3
</TabPane>
<TabPane
tab={
<Badge count={tabCount['4']} offset={[10, 0]}>
法定代表人
</Badge>
}
key="4"
>
Tab 4
</TabPane>
<TabPane
tab={
<Badge count={tabCount['5']} offset={[10, 0]}>
联系信息
</Badge>
}
key="5"
>
Tab 5
</TabPane>
<TabPane
tab={
<Badge count={tabCount['6']} offset={[10, 0]}>
流转记录
</Badge>
}
key="6"
>
Tab 6
</TabPane>
</Tabs>
</Card>
</PageHeaderWrapper>
);
};
export default addMember
\ No newline at end of file
export default addMember;
import React, { ReactNode, useState, useRef } from 'react'
import { history } from 'umi'
import { Button, Popconfirm, Card, Input, Slider, Row, Col } from 'antd'
import { Button, Popconfirm, Card, Input, Slider } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PlayCircleOutlined, ContainerOutlined } from '@ant-design/icons'
import { StandardTable } from 'god'
......
import React from 'react';
import AuditDetail from '../components/auditDetail';
const auditPr: React.FC<{}> = () => {
return <AuditDetail />;
};
export default auditPr;
import React from 'react';
import AuditList from '../components/auditList';
const memberPr = () => {
return <AuditList pageType="2" />;
};
export default memberPr;
import React from 'react';
import AuditDetail from '../components/auditDetail';
const auditPrConfirm: React.FC<{}> = () => {
return <AuditDetail />;
};
export default auditPrConfirm;
import React from 'react';
import AuditList from '../components/auditList';
const memberPrConfirm = () => {
return <AuditList pageType="3" />;
};
export default memberPrConfirm;
import React from 'react';
import AuditDetail from '../components/auditDetail';
const auditPrSubmit: React.FC<{}> = () => {
return <AuditDetail />;
};
export default auditPrSubmit;
import React from 'react';
import AuditList from '../components/auditList';
const memberPrSubmit = () => {
return <AuditList pageType="1" />;
};
export default memberPrSubmit;
This source diff could not be displayed because it is too large. You can view the blob instead.
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