Commit 75e0011c authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

新增系统管理页面

parent cfcfb367
......@@ -23,6 +23,7 @@ import contentRoute from './contentRoute'; // 内容管理
import balancedRoute from './balancedRoute'; // 平台结算管理
import capitalAccount from './capitalAccountRoute'; // 会员资金账户
import messageRoute from './messgeRoute'; // 消息管理
import systemManageRoute from './systemManageRoute'; // 系统管理
const routeList = [
pageCustomized,
calssPropertyRoute,
......@@ -41,6 +42,7 @@ const routeList = [
enquiryOfferRoute,
capitalAccount,
messageRoute,
systemManageRoute,
]
const router = [
......
......@@ -26,7 +26,7 @@ const router = {
name: 'inquiryDetails',
hideInMenu: true,
hidePageHeader: true,
component: '@/pages/rfqOffer/details',
component: '@/pages/rfq/details',
}]
}
export default router
\ No newline at end of file
/*
* @Author: HJX
* @Date: 2020-11-12 10:40:40
* @LastEditors: HJX
* @LastEditTime: 2020-11-12 10:40:40
* @RouterName: 系统管理
*/
const router = {
path: '/system',
name: 'system',
icon: 'SmileOutlined',
routes: [{
// 敏感词列表
path: '/system/sensitiveWords',
name: 'sensitiveWords',
hidePageHeader: true,
component: '@/pages/systemManage/sensitiveWords',
},{
// 敏感词列表 - 新建
path: '/system/sensitiveWords/add',
name: 'sensitiveWordsAdd',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/sensitiveWords/template',
},{
// 敏感词列表 - 编辑
path: '/system/sensitiveWords/edit',
name: 'sensitiveWordsEdit',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/sensitiveWords/template',
},{
// 汇率列表
path: '/system/exchangeRate',
name: 'exchangeRate',
hidePageHeader: true,
component: '@/pages/systemManage/exchangeRate',
},{
// 汇率列表 - 新增
path: '/system/exchangeRate/add',
name: 'exchangeRateAdd',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/exchangeRate/template',
},{
// 汇率列表 - 编辑
path: '/system/exchangeRate/edit',
name: 'exchangeRateEdit',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/exchangeRate/template',
},{
// 单位列表
path: '/system/unit',
name: 'unit',
hidePageHeader: true,
component: '@/pages/systemManage/unit',
},{
// 单位列表 - 新增
path: '/system/unit/add',
name: 'unitAdd',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/unit/template',
},{
// 单位列表 - 编辑
path: '/system/unit/edit',
name: 'unitEdit',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/unit/template',
},{
// 平台参数列表
path: '/system/platformArg',
name: 'platformArg',
hidePageHeader: true,
component: '@/pages/systemManage/platformArg',
}]
}
export default router
\ No newline at end of file
......@@ -368,5 +368,8 @@ ol {
}
}
// 没去掉会导致表格上搜索出现40的高度
.god-table-control {
margin-bottom: 0;
}
}
\ No newline at end of file
......@@ -50,7 +50,7 @@ export interface ShopInfo {
type: number;
environment: number;
logoUrl: string;
describe?: any;
describe: string;
state: number;
url: string;
}
......
......@@ -207,5 +207,17 @@ export default {
'menu.message.messageList': '消息列表',
'menu.message.addMessage': '新建消息',
// 系统管理
'menu.system': '系统管理',
'menu.system.sensitiveWords': '敏感词',
'menu.system.sensitiveWordsAdd': '新建敏感词',
'menu.system.sensitiveWordsEdit': '编辑敏感词',
'menu.system.exchangeRate': '汇率',
'menu.system.exchangeRateAdd': '新建汇率',
'menu.system.exchangeRateEdit': '编辑汇率',
'menu.system.unit': '单位',
'menu.system.unitAdd': '新建单位',
'menu.system.unitEdit': '编辑单位',
'menu.system.platformArg': '平他参数',
}
// export default utils.transformDataPre(data, 'menu')
......@@ -7,12 +7,16 @@ import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import moment from 'moment';
const { TabPane } = Tabs;
const { Step } = Steps;
const Details: React.FC<{}> = (props) => {
const { id } = history.location.query;
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
// 拿到pathname,通过判断来显示询价单号或报价单号
const { pathname } = history.location;
const type = pathname.split('/')[pathname.split('/').length - 2];
......@@ -113,12 +117,12 @@ const Details: React.FC<{}> = (props) => {
base: {
title: '交易条件',
leftElem: [
{ title: '交付日期', key: '', value: data.deliveryTime },
{ title: '交付日期', key: '', value: format(data.deliveryTime) },
{ title: '交付地址', key: '', value: data.fullAddress },
{ title: '物流要求', key: '', value: data.logistics }
],
centerElem: [
{ title: '报价截止日期', key: '', value: data.quotationAsTime },
{ title: '报价截止日期', key: '', value: format(data.quotationAsTime )},
{ title: '报价要求', key: '', value: data.offer },
{ title: '包装要求', key: '', value: data.packRequire },
],
......@@ -127,23 +131,7 @@ const Details: React.FC<{}> = (props) => {
{ title: '税费要求', key: '', value: data.taxes },
{ title: '其他要求', key: '', value: data.otherRequire }
],
},
freight: {
title: '其他报价说明',
leftElem: [
{ title: '最小起订', key: '', value: data.minimumOrder },
{ title: '交付说明', key: '', value: data.fullAddress },
{ title: '付款说明', key: '', value: data.paymentType }
],
centerElem: [
{ title: '税费说明', key: '', value: data.taxes },
{ title: '物流说明', key: '', value: data.logistics },
{ title: '包装说明', key: '', value: data.packRequire },
],
rightElem: [
{ title: '其他说明', key: '', value: data.otherRequire }
],
},
}
}
// 外部流转记录&内部流转记录
const flowRecord = {
......@@ -159,6 +147,7 @@ const Details: React.FC<{}> = (props) => {
title: '状态',
key: 'state',
dataIndex: 'state',
render:(text:any) => ExternalState(text)
}, {
title: '操作',
key: 'operation',
......@@ -167,44 +156,12 @@ const Details: React.FC<{}> = (props) => {
title: '操作时间',
key: 'operationTime',
dataIndex: 'operationTime',
render:(text:any) => format(text)
}, {
title: '审核意见',
key: 'auditOpinion',
dataIndex: 'auditOpinion',
}],
interior: [{
title: '流转记录',
key: 'inquiryListId',
dataIndex: 'inquiryListId',
}, {
title: '操作人',
key: 'roleName',
dataIndex: 'roleName',
}, {
title: '部门',
key: 'department',
dataIndex: 'department',
}, {
title: '职位',
key: 'position',
dataIndex: 'position',
}, {
title: '状态',
key: 'state',
dataIndex: 'state',
}, {
title: '操作',
key: 'operation',
dataIndex: 'operation',
}, {
title: '操作时间',
key: 'operationTime',
dataIndex: 'operationTime',
}, {
title: '审核意见',
key: 'auditOpinion',
dataIndex: 'auditOpinion',
}],
}]
}
// 数据请求
......@@ -254,7 +211,7 @@ const Details: React.FC<{}> = (props) => {
</div>
<div className={style['headerMain-left-option']}>
<div>单据时间</div>
<div>{data.voucherTime}</div>
<div>{format(data.voucherTime)}</div>
</div>
<div className={style['headerMain-left-option']}>
<div>外部状态</div>
......@@ -269,7 +226,7 @@ const Details: React.FC<{}> = (props) => {
<Steps
style={{ padding: '20px 0' }}
progressDot
current={1}
current={Number(data.externalState - 1)}
>
{detailData.externalStateStep.items.map((item, index) => {
return (
......
......@@ -6,7 +6,7 @@ import { ColumnType } from 'antd/lib/table/interface';
import NiceForm from '@/components/NiceForm';
import { createFormActions, FormEffectHooks } from '@formily/antd';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import {searchSelectGetSelectCategoryOptionEffect} from '../effect'
import {searchSelectGetSelectCategoryOptionEffect} from '../../systemManage/effect'
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { rfqSearchSchema } from '../schema';
import moment from 'moment';
......
import React, { useState, useEffect, useRef } from 'react';
import React, { useState, useEffect, ReactNode, useRef } from 'react';
import style from './index.less'
import { history } from 'umi';
import { Button, Card, Tabs, Steps, Table } from 'antd';
import { Card, Tabs, Steps, Table, Tag } from 'antd';
import { LinkOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table/interface';
import { EyeOutlined, ClockCircleOutlined, UpOutlined, DownOutlined, StopOutlined, CheckSquareOutlined } from '@ant-design/icons'
import ReutrnEle from '@/components/ReturnEle';
import { StandardTable } from 'god';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import moment from 'moment';
import { StandardTable } from 'god';
const { TabPane } = Tabs;
const { Step } = Steps;
const Details: React.FC<{}> = (props) => {
const [visible, setvisible] = useState(false)
const ref = useRef<any>({});
//page_type: 1.待确认报价单,2.待审核报价单1级,3.待审核报价单2级,4.报价单查询,5.待提交审核报价单
//view: 1.询价单号,2.报价单号
const { id } = history.location.query;
const [headerWrapperData, setheaderWrapperData] = useState<Array<any>>([]);
const ref = useRef<any>({});
// 拿到pathname,通过判断来显示询价单号或报价单号
const { pathname } = history.location;
const type = pathname.split('/')[pathname.split('/').length - 2];
const [view, setview] = useState<Number>(1);
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
// steps 切换
const [detailData, setDetailData] = useState<any>({
externalStateStep: {
......@@ -51,33 +49,6 @@ const Details: React.FC<{}> = (props) => {
]
},
interiorStateStep: {
current: 0,
title: '内部流转',
items: [
{
title: '采购员',
desc: '新增询价单',
},
{
title: '采购经理',
desc: '审核询价单',
},
{
title: '副总经理',
desc: '审核询价单',
},
{
title: '采购员',
desc: '提交询价单',
},
{
title: '完成',
desc: ''
}
]
}
})
// 模拟数据
const [data, setdata] = useState<any>({});
......@@ -93,24 +64,24 @@ const Details: React.FC<{}> = (props) => {
render: (text: any, record: any) => <EyePreview>{text}</EyePreview>
}, {
title: '品类',
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
key: 'category',
dataIndex: 'category',
}, {
title: '品牌',
key: 'brand',
dataIndex: 'brand',
}, {
title: '单位',
key: 'nuit',
dataIndex: 'nuit',
key: 'unit',
dataIndex: 'unit',
}, {
title: '采购数量',
key: 'purchaseQuantity',
dataIndex: 'purchaseQuantity',
key: 'purchaseCount',
dataIndex: 'purchaseCount',
}, {
title: '报价单价',
key: 'pric',
dataIndex: 'pric',
key: 'price',
dataIndex: 'price',
}, {
title: '金额',
key: 'money',
......@@ -149,6 +120,7 @@ const Details: React.FC<{}> = (props) => {
title: '状态',
key: 'state',
dataIndex: 'state',
render: (text:any) => ExternalState(text)
}, {
title: '操作',
key: 'operation',
......@@ -157,41 +129,83 @@ const Details: React.FC<{}> = (props) => {
title: '操作时间',
key: 'operationTime',
dataIndex: 'operationTime',
render: (text:any) => format(text)
}, {
title: '审核意见',
key: 'auditOpinion',
dataIndex: 'auditOpinion',
}],
}]
}
// 数据请求
useEffect(() => {
PublicApi.getOrderPlatformProductQuotationDetails({ id }).then(res => {
if (res.code === 1000) {
setdata(res.data)
}
})
}, [])
const ExternalState = (text:any) => {
let component: ReactNode = null;
text === 1 ? component = <Tag color="default">提交询价单</Tag>:
text === 2 ? component = <Tag color="processing">提交报价单</Tag>:
text === 3 ? component = <Tag color="warning">确认报价单</Tag>:
text === 4 ? component = <Tag color="success">报价通过</Tag>:
component = <Tag color="error">报价不通过</Tag>
return component;
}
//询价商品
// const fetchData = (params:any) => {
// return new Promise(resolve => {
// PublicApi.getOrderInquiryDetails({...params,id}).then(res => {
// console.log(res, 10086)
// resolve(res.data)
// })
// })
// }
return (
<PageHeaderWrapper
className={style.header}
onBack={() => history.goBack()}
title={
<>
<div className={style['headerTop']}>
<div className={style['headerTop-prefix']}></div>
<div className={style['headerTop-name']}>
报价单号 : 100000000
报价单号 : {data.quotationNo}
</div>
<div className={style[`levelIcon${'1'}`]}></div>
</div>
</>
}
extra={{}}
content={
< div className={style['headerMain']} >
<div className={style['headerMain-left']}>
{
Number(page_type) !== 4 &&
<div className={style['headerMain-left-option']}>
<div>询价单号:</div>
<div><a>123132132132</a> </div>
</div>
}
<div className={style['headerMain-left-option']}>
<div>询价会员:</div>
<div><a>123132132132</a> </div>
<div>对应询价单号</div>
<div><a>{data.inquiryListNo}</a></div>
</div>
<div className={style['headerMain-left-option']}>
<div>询价会员</div>
<div><a>{data.memberName}</a></div>
</div>
<div className={style['headerMain-left-option']}>
<div>报价单摘要</div>
<div>{data.details}</div>
</div>
<div className={style['headerMain-left-option']}>
<div>报价截止时间</div>
<div>{format(data.quotationAsTime)}</div>
</div>
<div className={style['headerMain-left-option']}>
<div>单据时间</div>
<div>{format(data.voucherTime)}</div>
</div>
<div className={style['headerMain-left-option']}>
<div>外部状态</div>
<div>{ExternalState(data.externalState)}</div>
</div>
</div>
</div >
......@@ -202,7 +216,7 @@ const Details: React.FC<{}> = (props) => {
<Steps
style={{ padding: '20px 0' }}
progressDot
current={1}
current={Number(data.externalState - 1)}
>
{detailData.externalStateStep.items.map((item, index) => {
return (
......@@ -217,6 +231,12 @@ const Details: React.FC<{}> = (props) => {
</Card>
<Card className={style.item_wrap}>
<div className={style.mainCol_title} style={view === 2 ? { paddingBottom: '0px' } : { paddingBottom: '24px' }}>询价商品</div>
{/* <StandardTable
currentRef={ref}
columns={inquiryGoods}
tableProps={{ rowKew: 'id' }}
fetchTableData={(params: any) => fetchData(params)}
/> */}
<Table columns={inquiryGoods} pagination={false} rowKey='id' dataSource={data.inquiryListProductRequests} />
</Card>
<Card className={style.item_wrap}>
......@@ -287,22 +307,8 @@ const Details: React.FC<{}> = (props) => {
</div>
</Card>
<Card className={style.item_wrap}>
{
Number(page_type) === 4 ?
<>
<div className={style.mainCol_title}>外部流转记录</div>
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={data.externalInquiryListLogResponses} />
</>
:
<Tabs>
<TabPane tab="外部流转记录" key="1">
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={data.externalInquiryListLogResponses} />
</TabPane>
<TabPane tab="内部流转记录" key="2">
<Table columns={flowRecord.interior} rowKey='id' pagination={false} dataSource={data.interiorInquiryListLogResponses} />
</TabPane>
</Tabs>
}
<div className={style.mainCol_title}>外部流转记录</div>
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={data.externalRequisitionFormResponses} />
</Card>
</PageHeaderWrapper >
)
......
......@@ -41,7 +41,7 @@ const List:React.FC<{}> = () => {
key: 'inquiryListNo',
dataIndex: 'inquiryListNo',
render: (text: any, record: any) => <EyePreview
url={`/rfqOffer/inquiry/details?id=${record.id}`}>{text}</EyePreview>
url={`/rfqOffer/inquiry/details?id=${record.inquiryListId}`}>{text}</EyePreview>
},{
title: '报价单摘要',
key: 'details',
......
import React, { useRef } from 'react';
import { Card, Row, Col, Space, Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
{
title: 'ID',
key: 'id',
dataIndex: 'id',
}, {
title: '外币英文简称',
key: 'name',
dataIndex: 'name',
}, {
title: '本地英文简称',
key: 'remarks',
dataIndex: 'remarks',
}, {
title: '汇率',
key: 'hui',
dataIndex: 'hui',
}, {
title: '有效期起',
key: 'qi',
dataIndex: 'qi',
},{
title: '有效期止',
key: 'zhi',
dataIndex: 'zhi',
},{
title: '状态',
key: 'status',
dataIndex: 'status',
},{
title: '操作',
key: 'options',
dataIndex: 'options',
},
]
const controllerBtns = <Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button type="primary" icon={<PlusOutlined />}>新建</Button>
</Space>
</Col>
</Row>
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
layouts: {
order: 1,
span: 4
},
ctx: {
inline: false,
schema: {
type: 'object',
properties: {
megaLayout0: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true,
columns: 1,
},
properties: {
name: {
type: 'string',
'x-component-props': {
placeholder: '属性名称',
},
'x-component': 'Search'
}
}
}
}
}
}
}}
formilyChilds={{
layouts: {
order: 0
},
children: (
<>
{controllerBtns}
</>
)
}}
/>
</Card>
</PageHeaderWrapper>
)
}
export default SensitiveWords;
\ No newline at end of file
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import ReutrnEle from '@/components/ReturnEle';
import { Card, Form, Input, Button, Space, Select, DatePicker } from 'antd';
import moment from 'moment'
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
const tailLayout = {
wrapperCol: { style: { marginLeft: '174px' } },
};
const { Option } = Select;
const Template:React.FC<{}> = () => {
// 只能选当天和之后的日期
const disabledDate = (current) => {
return current && current < moment().startOf('day');
}
return(
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
>
<Card>
<Form
{...layout}
>
<Form.Item label='外币英文简称' name='name' rules={[{ required: true, message: '请输入单位名称' }]}>
<Input />
</Form.Item>
<Form.Item label='本币英文简称' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<Input />
</Form.Item>
<Form.Item label='汇率' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<Input />
</Form.Item>
<Form.Item label='有效期起' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<DatePicker
disabledDate={disabledDate}
/>
</Form.Item>
<Form.Item label='有效期止' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<DatePicker
disabledDate={disabledDate}
/>
</Form.Item>
<Form.Item {...tailLayout}>
<Space size={24}>
<Button type='primary'>保存</Button>
<Button>取消</Button>
</Space>
</Form.Item>
</Form>
</Card>
</PageHeaderWrapper>
)
}
export default Template;
\ No newline at end of file
import React, { useRef } from 'react';
import { Card, Row, Col, Space, Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
{
title: '参数编号',
key: 'id',
dataIndex: 'id',
}, {
title: '参数名称',
key: 'name',
dataIndex: 'name',
}, {
title: '参数描述',
key: 'remarks',
dataIndex: 'remarks',
},{
title: '参数值',
key: 'zhi',
dataIndex: 'zhi',
},{
title: '状态',
key: 'status',
dataIndex: 'status',
},{
title: '操作',
key: 'options',
dataIndex: 'options',
}
]
const controllerBtns = <Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button type="primary" icon={<PlusOutlined />}>新建</Button>
</Space>
</Col>
</Row>
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
/>
</Card>
</PageHeaderWrapper>
)
}
export default SensitiveWords;
\ No newline at end of file
import React, { useRef } from 'react';
import { Card, Row, Col, Space, Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { history } from 'umi';
import { PublicApi } from '@/services/api';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
{
title: '敏感词编码',
key: 'no',
dataIndex: 'no',
}, {
title: '敏感词名称',
key: 'name',
dataIndex: 'name',
}, {
title: '备注',
key: 'remarks',
dataIndex: 'remarks',
}, {
title: '状态',
key: 'status',
dataIndex: 'status',
}, {
title: '操作',
key: 'options',
dataIndex: 'options',
},
]
const controllerBtns = <Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button type="primary" icon={<PlusOutlined />} onClick={() => history.push(`/system/sensitiveWords/add`)}>新建</Button>
<Button>导入</Button>
<Button>导出</Button>
</Space>
</Col>
</Row>
const fetchdata = (params:any) => {
return new Promise(resolve => {
PublicApi.getManageSensitiveWordPage({...params}).then(res => {
if(res.code === 1000) {
resolve(res.data)
}
})
})
}
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
fetchTableData={(params) => fetchdata(params)}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
layouts: {
order: 1,
span: 4
},
ctx: {
inline: false,
schema: {
type: 'object',
properties: {
megaLayout0: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true,
columns: 1,
},
properties: {
name: {
type: 'string',
'x-component-props': {
placeholder: '属性名称',
},
'x-component': 'Search'
}
}
}
}
}
}
}}
formilyChilds={{
layouts: {
order: 0
},
children: (
<>
{controllerBtns}
</>
)
}}
/>
</Card>
</PageHeaderWrapper>
)
}
export default SensitiveWords;
\ No newline at end of file
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import ReutrnEle from '@/components/ReturnEle';
import { Card, Form, Input, Button, Space } from 'antd';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
const tailLayout = {
wrapperCol: { style: { marginLeft: '174px' } },
};
const { TextArea } = Input;
const Template:React.FC<{}> = () => {
return(
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
>
<Card>
<Form
{...layout}
>
<Form.Item label='敏感词名称' name='name' rules={[{ required: true, message: '请输入敏感词名称' }]}>
<Input />
</Form.Item>
<Form.Item label='备注' name='remarks'>
<TextArea rows={4} />
</Form.Item>
<Form.Item {...tailLayout}>
<Space size={24}>
<Button type='primary'>保存</Button>
<Button>取消</Button>
</Space>
</Form.Item>
</Form>
</Card>
</PageHeaderWrapper>
)
}
export default Template;
\ No newline at end of file
import React, { useRef } from 'react';
import { Card, Row, Col, Space, Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
{
title: 'ID',
key: 'id',
dataIndex: 'id',
}, {
title: '单位名称',
key: 'name',
dataIndex: 'name',
}, {
title: '英文简称',
key: 'remarks',
dataIndex: 'remarks',
},{
title: '状态',
key: 'status',
dataIndex: 'status',
},{
title: '操作',
key: 'options',
dataIndex: 'options',
},
]
const controllerBtns = <Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button type="primary" icon={<PlusOutlined />}>新建</Button>
</Space>
</Col>
</Row>
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
layouts: {
order: 1,
span: 4
},
ctx: {
inline: false,
schema: {
type: 'object',
properties: {
megaLayout0: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true,
columns: 1,
},
properties: {
name: {
type: 'string',
'x-component-props': {
placeholder: '属性名称',
},
'x-component': 'Search'
}
}
}
}
}
}
}}
formilyChilds={{
layouts: {
order: 0
},
children: (
<>
{controllerBtns}
</>
)
}}
/>
</Card>
</PageHeaderWrapper>
)
}
export default SensitiveWords;
\ No newline at end of file
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import ReutrnEle from '@/components/ReturnEle';
import { Card, Form, Input, Button, Space } from 'antd';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
const tailLayout = {
wrapperCol: { style: { marginLeft: '174px' } },
};
const Template:React.FC<{}> = () => {
return(
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
>
<Card>
<Form
{...layout}
>
<Form.Item label='单位名称' name='name' rules={[{ required: true, message: '请输入单位名称' }]}>
<Input />
</Form.Item>
<Form.Item label='英文简称' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<Input />
</Form.Item>
<Form.Item {...tailLayout}>
<Space size={24}>
<Button type='primary'>保存</Button>
<Button>取消</Button>
</Space>
</Form.Item>
</Form>
</Card>
</PageHeaderWrapper>
)
}
export default Template;
\ No newline at end of file
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