Commit f4724461 authored by 李腾's avatar 李腾

feat: 新增权限控制逻辑判断

parent d80e9769
/** @name 商品管理 */
// 商品库
export const GOOD_MANAGE = {
LIST: {
name: '商品列表',
id: '020101',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '020101',
apis: [],
},
};
// 配送区域
export const DISTRIBUTION_AREA = {
LIST: {
name: '配送区域列表',
id: '020201',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '020202',
apis: [],
},
};
/** @name 订单管理 */
/** @name 售后地址设置 */
export const AFTER_SALE_ADDRESS = {
LIST: {
name: '地址列表',
id: '030101',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '030102',
apis: [],
},
};
/** @name 货款结算 */
/** @name 售后管理 */
export const AFTER_SALE_ORDER = {
LIST: {
name: '售后订单列表',
id: '050101',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '050102',
apis: [],
},
};
/** @name 取消订单审核管理 */
export const CANCEL_BILL_MANAGE = {
LIST: {
name: '取消订单审核列表',
id: '060101',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '060102',
apis: [],
},
};
/** @name 供应商对账结算管理 */
//对账单查询
export const RECONCILIATION_QUERY = {
LIST: {
name: '对账单列表',
id: '070101',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '070102',
apis: [],
},
};
// 结算单查询
export const SETTLEMENT_SHEET = {
LIST: {
name: '结算单列表',
id: '070201',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '070202',
apis: [],
},
};
// 付款单查询
export const PAYMENT_MANAGE = {
LIST: {
name: '付款单列表',
id: '070301',
apis: [],
},
EDITABLE: {
name: '新增/修改',
id: '070302',
apis: [],
},
};
/** @name 系统管理 */ /** @name 系统管理 */
// 账号管理 // 账号管理
export const ACCOUNT_MANAGE = { export const ACCOUNT_MANAGE = {
LIST: { LIST: {
name: '账号列表', name: '账号列表',
id: '010101', id: '010101',
apis: [],
}, },
EDITABLE: { EDITABLE: {
name: '新增/修改', name: '新增/修改',
id: '010102', id: '010102',
apis: [],
}, },
}; };
// 角色管理 // 角色管理
...@@ -15,36 +135,34 @@ export const ROLE_MANAGE = { ...@@ -15,36 +135,34 @@ export const ROLE_MANAGE = {
LIST: { LIST: {
name: '角色列表', name: '角色列表',
id: '010201', id: '010201',
apis: [],
}, },
EDITABLE: { EDITABLE: {
name: '新增/修改', name: '新增/修改',
id: '010202', id: '010202',
apis: [],
}, },
}; };
// 日志管理 // 日志管理
export const LOG_MANAGE = {}; export const LOG_MANAGE = {};
/** @name 商品管理 */ /** @name 小程序 */
// 商品库 // 核销功能
export const GOOD_MANAGE = { export const WRITE_OFF = {
LIST: { SCAN_QR_CODE: {
name: '商品列表', name: '点击扫描',
id: '020101', id: '080101',
}, },
EDITABLE: { ENTER_CODE: {
name: '新增/修改', name: '手动输入核销码',
id: '020101', id: '080102',
}, },
}; };
// 我的订单
// 配送区域 // 添加商品
// export const
/** @name 订单管理 */
/** @name 售后地址设置 */
/** @name 售后管理 */ // 售后功能
/** @name 供应商对账结算管理 */ // 查看合同
/** @name 系统管理 */
...@@ -11,7 +11,8 @@ import LogisticsCom from '../../orderManage/pendingDeliveryOrder/components/Logi ...@@ -11,7 +11,8 @@ import LogisticsCom from '../../orderManage/pendingDeliveryOrder/components/Logi
import AppealDetail from '../../afterSale/components/detail'; import AppealDetail from '../../afterSale/components/detail';
import AfterLog from '../components/AfterLog'; import AfterLog from '../components/AfterLog';
export default () => { export default props => {
const { canEditable } = props;
const table = useRef(); const table = useRef();
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [detailVisible, setDetailVisible] = useState(false); const [detailVisible, setDetailVisible] = useState(false);
...@@ -165,10 +166,20 @@ export default () => { ...@@ -165,10 +166,20 @@ export default () => {
</Button>, </Button>,
]; ];
// 服务订单删除物流拦截 // 没权限返回详情、查看物流、查看记录
if (!canEditable) {
// 服务订单返回订单详情和查看记录
if (!['vip', 'self'].includes(r.supplierType)) {
return [operations[2], operations[4]];
}
return [operations[2], operations[3], operations[4]];
}
// 有权限 服务订单 不反返回物流
if (!['vip', 'self'].includes(r.supplierType)) { if (!['vip', 'self'].includes(r.supplierType)) {
operations.splice(3, 1); return [operations[0], operations[1], operations[2], operations[4]];
} }
// 有修改权限&&非服务订单 全部返回
return operations; return operations;
}, },
}, },
......
...@@ -16,7 +16,8 @@ import styles from '../styles.less'; ...@@ -16,7 +16,8 @@ import styles from '../styles.less';
const { Countdown } = Statistic; const { Countdown } = Statistic;
const { confirm } = Modal; const { confirm } = Modal;
export default () => { export default props => {
const { canEditable } = props;
const table = useRef(); const table = useRef();
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [detailVisible, setDetailVisible] = useState(false); const [detailVisible, setDetailVisible] = useState(false);
...@@ -167,9 +168,14 @@ export default () => { ...@@ -167,9 +168,14 @@ export default () => {
</Button>, </Button>,
]; ];
// 不可编辑直接隐藏可操作按钮
if (!canEditable) {
return [operations[2], operations[3]];
}
// 服务订单删除物流拦截 // 服务订单删除物流拦截
if (!['vip', 'self'].includes(r.supplierType)) { if (!['vip', 'self'].includes(r.supplierType)) {
operations.splice(1, 1); return [operations[0], operations[2], operations[3]];
} }
return operations; return operations;
}, },
......
import { Tabs } from 'antd'; import { Tabs } from 'antd';
import React from 'react'; import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { AFTER_SALE_ORDER } from '@/../config/permission.config';
import { connect } from 'dva';
import Pending from './Pending'; import Pending from './Pending';
import PassAudit from './PassAudit'; import PassAudit from './PassAudit';
const { TabPane } = Tabs; const { TabPane } = Tabs;
export default function AfterSale() { function AfterSale(props) {
const { permissions } = props;
const canEditable = permissions[AFTER_SALE_ORDER.EDITABLE.id];
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Tabs defaultActiveKey="1"> <Tabs defaultActiveKey="1">
<TabPane tab="未审核" key="1"> <TabPane tab="未审核" key="1">
<Pending /> <Pending canEditable={canEditable} />
</TabPane> </TabPane>
<TabPane tab="已审核" key="2"> <TabPane tab="已审核" key="2">
<PassAudit /> <PassAudit canEditable={canEditable} />
</TabPane> </TabPane>
</Tabs> </Tabs>
</PageHeaderWrapper> </PageHeaderWrapper>
); );
} }
export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(AfterSale);
...@@ -70,7 +70,7 @@ class goodsManage extends Component { ...@@ -70,7 +70,7 @@ class goodsManage extends Component {
componentDidMount() { componentDidMount() {
this.props.goodsManage.tableData = {}; this.props.goodsManage.tableData = {};
this.canEditable = this.props.permissions[GOOD_MANAGE.EDITABLE.id]; this.canEditable = true || this.props.permissions[GOOD_MANAGE.EDITABLE.id];
this.categoryList(); this.categoryList();
this.getVirtualCategory(); this.getVirtualCategory();
this.specList(); this.specList();
......
...@@ -147,24 +147,33 @@ export function columns(res, pages) { ...@@ -147,24 +147,33 @@ export function columns(res, pages) {
fixed: 'right', fixed: 'right',
render: (_, row) => ( render: (_, row) => (
<div> <div>
<Button {res.canEditable ? (
type="primary" <>
disabled={row.payState !== 1} <Button
className={styles.button} type="primary"
onClick={() => res.edit(0, row)} disabled={row.payState !== 1}
> className={styles.button}
申请结算 onClick={() => res.edit(0, row)}
</Button> >
<Button 申请结算
type="primary" </Button>
disabled={ <Button
!((row.blueInvoiceState === 1 || row.blueInvoiceState === 3) && row.payState === 3) type="primary"
} disabled={
className={styles.button} !(
onClick={() => res.edit(1, row)} (row.blueInvoiceState === 1 || row.blueInvoiceState === 3) &&
> row.payState === 3
上传发票 )
</Button> }
className={styles.button}
onClick={() => res.edit(1, row)}
>
上传发票
</Button>
</>
) : (
''
)}
<Button <Button
type="primary" type="primary"
disabled={row.blueInvoiceState === 1} disabled={row.blueInvoiceState === 1}
......
...@@ -7,6 +7,8 @@ import ProTable from '@ant-design/pro-table'; ...@@ -7,6 +7,8 @@ import ProTable from '@ant-design/pro-table';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { format } from 'date-fns'; import { format } from 'date-fns';
import moment from 'moment'; import moment from 'moment';
import { connect } from 'dva';
import { PAYMENT_MANAGE } from '@/../config/permission.config';
import ToExamineModal from './ToExamine'; import ToExamineModal from './ToExamine';
import { columns, toolBarRender } from './data'; import { columns, toolBarRender } from './data';
import { import {
...@@ -19,7 +21,9 @@ import { ...@@ -19,7 +21,9 @@ import {
const { confirm } = Modal; const { confirm } = Modal;
const PaymentMange = () => { const PaymentMange = props => {
const { permissions } = props;
const canEditable = permissions[PAYMENT_MANAGE.EDITABLE.id];
const actionRef = useRef(); const actionRef = useRef();
const formRef = useRef(); const formRef = useRef();
const [toExamineData, settoExamineData] = useState({}); const [toExamineData, settoExamineData] = useState({});
...@@ -125,6 +129,7 @@ const PaymentMange = () => { ...@@ -125,6 +129,7 @@ const PaymentMange = () => {
const res = { const res = {
edit, edit,
canEditable,
}; };
const searchRender = ({ searchText, resetText }, { form }) => [ const searchRender = ({ searchText, resetText }, { form }) => [
...@@ -199,4 +204,6 @@ const PaymentMange = () => { ...@@ -199,4 +204,6 @@ const PaymentMange = () => {
); );
}; };
export default PaymentMange; export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(PaymentMange);
...@@ -88,13 +88,17 @@ export function columns(pages) { ...@@ -88,13 +88,17 @@ export function columns(pages) {
} }
export const toolBarRender = gather => { export const toolBarRender = gather => {
const { onDownload, confirmAction } = gather; const { onDownload, confirmAction, canEditable } = gather;
return () => [ return () => [
<Button type="primary" style={{ marginRight: '20px' }} onClick={onDownload}> <Button type="primary" style={{ marginRight: '20px' }} onClick={onDownload}>
下载 下载
</Button>, </Button>,
<Button type="primary" onClick={confirmAction}> canEditable ? (
确认 <Button type="primary" onClick={confirmAction}>
</Button>, 确认
</Button>
) : (
''
),
]; ];
}; };
...@@ -5,10 +5,15 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout'; ...@@ -5,10 +5,15 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { format } from 'date-fns'; import { format } from 'date-fns';
import { connect } from 'dva';
import { RECONCILIATION_QUERY } from '@/../config/permission.config';
import { columns, toolBarRender } from './data'; import { columns, toolBarRender } from './data';
import { query, confirmSelfBill, downloadSelfBillDetail } from './service'; import { query, confirmSelfBill, downloadSelfBillDetail } from './service';
const ReconciliationQuery = () => { const ReconciliationQuery = props => {
const { permissions } = props;
const canEditable = permissions[RECONCILIATION_QUERY.EDITABLE.id];
const actionRef = useRef(); const actionRef = useRef();
const [selectedRowKeys, setselectedRowKeys] = useState([]); const [selectedRowKeys, setselectedRowKeys] = useState([]);
const [selectedRows, setselectedRows] = useState([]); const [selectedRows, setselectedRows] = useState([]);
...@@ -105,6 +110,7 @@ const ReconciliationQuery = () => { ...@@ -105,6 +110,7 @@ const ReconciliationQuery = () => {
const gather = { const gather = {
onDownload, onDownload,
confirmAction, confirmAction,
canEditable,
}; };
const onToolBarRender = toolBarRender(gather); const onToolBarRender = toolBarRender(gather);
...@@ -161,4 +167,6 @@ const ReconciliationQuery = () => { ...@@ -161,4 +167,6 @@ const ReconciliationQuery = () => {
); );
}; };
export default ReconciliationQuery; export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(ReconciliationQuery);
...@@ -124,8 +124,12 @@ export function columns(pages) { ...@@ -124,8 +124,12 @@ export function columns(pages) {
]; ];
} }
export const toolBarRender = paymentOrder => () => [ export const toolBarRender = ({ paymentOrder, canEditable }) => () => [
<Button type="primary" onClick={paymentOrder}> canEditable ? (
生成付款单 <Button type="primary" onClick={paymentOrder}>
</Button>, 生成付款单
</Button>
) : (
<></>
),
]; ];
...@@ -5,10 +5,14 @@ import { Button, Upload, notification, Spin } from 'antd'; ...@@ -5,10 +5,14 @@ import { Button, Upload, notification, Spin } from 'antd';
import React, { useRef, useEffect, useState } from 'react'; import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import { connect } from 'dva';
import { columns, toolBarRender, dateStateEnum } from './data'; import { columns, toolBarRender, dateStateEnum } from './data';
import { query, selfPaymentBill } from './service'; import { query, selfPaymentBill } from './service';
import { SETTLEMENT_SHEET } from '@/../config/permission.config';
const SettlementSheet = () => { const SettlementSheet = props => {
const { permissions } = props;
const canEditable = permissions[SETTLEMENT_SHEET.EDITABLE.id];
const actionRef = useRef(); const actionRef = useRef();
const [selectedRowKeys, setselectedRowKeys] = useState([]); const [selectedRowKeys, setselectedRowKeys] = useState([]);
const [selectedRowsList, setselectedRowsList] = useState([]); const [selectedRowsList, setselectedRowsList] = useState([]);
...@@ -107,7 +111,7 @@ const SettlementSheet = () => { ...@@ -107,7 +111,7 @@ const SettlementSheet = () => {
return data; return data;
}; };
const onToolBarRender = toolBarRender(paymentOrder); const onToolBarRender = toolBarRender({ paymentOrder, canEditable });
const rowSelection = { const rowSelection = {
selectedRowKeys, selectedRowKeys,
...@@ -164,4 +168,6 @@ const SettlementSheet = () => { ...@@ -164,4 +168,6 @@ const SettlementSheet = () => {
); );
}; };
export default SettlementSheet; export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(SettlementSheet);
...@@ -3,13 +3,17 @@ import React, { useRef, useEffect, useState } from 'react'; ...@@ -3,13 +3,17 @@ import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import lodash from 'lodash'; import lodash from 'lodash';
import { connect } from 'dva';
import { AFTER_SALE_ADDRESS } from '@/../config/permission.config';
import styles from './index.less'; import styles from './index.less';
import AddrForm from './form'; import AddrForm from './form';
import { del, query, supplier } from './services'; import { del, query, supplier } from './services';
const { Option } = Select; const { Option } = Select;
const TableList = () => { const TableList = props => {
const { permissions } = props;
const canEditable = permissions[AFTER_SALE_ADDRESS.EDITABLE.id];
const [supplierList, setSupplierList] = useState([]); const [supplierList, setSupplierList] = useState([]);
const [shopId, setShopId] = useState(null); const [shopId, setShopId] = useState(null);
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
...@@ -143,30 +147,35 @@ const TableList = () => { ...@@ -143,30 +147,35 @@ const TableList = () => {
dataIndex: 'option', dataIndex: 'option',
key: 'option', key: 'option',
valueType: 'option', valueType: 'option',
render: (_, row) => [ render: (_, row) => {
<Button if (canEditable) {
key="edit" return [
type="primary" <Button
onClick={() => { key="edit"
editAction(row); type="primary"
}} onClick={() => {
> editAction(row);
修改 }}
</Button>, >
<Popconfirm 修改
placement="topLeft" </Button>,
title="确定要删除吗?" <Popconfirm
onConfirm={() => { placement="topLeft"
delAction(row); title="确定要删除吗?"
}} onConfirm={() => {
okText="删除" delAction(row);
cancelText="取消" }}
> okText="删除"
<Button key="del" type="danger" className={styles.btn}> cancelText="取消"
删除 >
</Button> <Button key="del" type="danger" className={styles.btn}>
</Popconfirm>, 删除
], </Button>
</Popconfirm>,
];
}
return [];
},
}, },
]; ];
return ( return (
...@@ -181,9 +190,13 @@ const TableList = () => { ...@@ -181,9 +190,13 @@ const TableList = () => {
bordered bordered
scroll={{ x: 1500 }} scroll={{ x: 1500 }}
toolBarRender={() => [ toolBarRender={() => [
<Button key="3" type="primary" onClick={addAction}> canEditable ? (
添加售后地址 <Button key="3" type="primary" onClick={addAction}>
</Button>, 添加售后地址
</Button>
) : (
<></>
),
]} ]}
onReset={() => reload('reset')} onReset={() => reload('reset')}
/> />
...@@ -197,4 +210,6 @@ const TableList = () => { ...@@ -197,4 +210,6 @@ const TableList = () => {
); );
}; };
export default TableList; export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(TableList);
...@@ -12,7 +12,8 @@ import AuditModal from './components/auditModal'; ...@@ -12,7 +12,8 @@ import AuditModal from './components/auditModal';
import DetailTable from './components/detailTable'; import DetailTable from './components/detailTable';
import { dateDiff } from './common'; import { dateDiff } from './common';
export default () => { export default props => {
const { canEditable } = props;
const table = useRef(); const table = useRef();
const ref = useRef(); const ref = useRef();
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
...@@ -148,14 +149,23 @@ export default () => { ...@@ -148,14 +149,23 @@ export default () => {
width: 250, width: 250,
fixed: 'right', fixed: 'right',
// eslint-disable-next-line no-shadow // eslint-disable-next-line no-shadow
render: (_, r) => [ render: (_, r) => {
<Button key="link1" onClick={() => openAudit(r)} className="mr10" type="primary"> const examine = (
审核 <Button key="link1" onClick={() => openAudit(r)} className="mr10" type="primary">
</Button>, 审核
<Button key="link" onClick={() => viewDetail(r)} type="primary"> </Button>
订单详情 );
</Button>, const detail = (
], <Button key="link" onClick={() => viewDetail(r)} type="primary">
订单详情
</Button>
);
if (!canEditable) {
return [detail];
}
return [examine, detail];
},
}, },
]; ];
return ( return (
......
import { Tabs } from 'antd'; import { Tabs } from 'antd';
import React from 'react'; import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { CANCEL_BILL_MANAGE } from '@/../config/permission.config';
import Pending from './Pending'; import Pending from './Pending';
import PassAudit from './PassAudit'; import PassAudit from './PassAudit';
const { TabPane } = Tabs; const { TabPane } = Tabs;
export default function CancelBillManage() { function CancelBillManage(props) {
const { permissions } = props;
const canEditable = permissions[CANCEL_BILL_MANAGE.EDITABLE.id];
// const [tabKey, setTabKey] = useState({}); // const [tabKey, setTabKey] = useState({});
// const changeTab = () => { // const changeTab = () => {
// const key = tabKey + 1; // const key = tabKey + 1;
// setTabKey(key) // setTabKey(key)
// } // }
console.log('permissions', canEditable);
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Tabs defaultActiveKey="1"> <Tabs defaultActiveKey="1">
<TabPane tab="未审核" key="1"> <TabPane tab="未审核" key="1">
<Pending /> <Pending canEditable={canEditable} />
</TabPane> </TabPane>
<TabPane tab="已审核" key="2"> <TabPane tab="已审核" key="2">
<PassAudit /> <PassAudit canEditable={canEditable} />
</TabPane> </TabPane>
</Tabs> </Tabs>
</PageHeaderWrapper> </PageHeaderWrapper>
); );
} }
export default connect(({ menu }) => ({
permissions: menu.permissions,
}))(CancelBillManage);
...@@ -7,7 +7,7 @@ export const getColumns = props => { ...@@ -7,7 +7,7 @@ export const getColumns = props => {
openRolePermissionsModal, openRolePermissionsModal,
openUpdateStatusModal, openUpdateStatusModal,
openResetPasswordModal, openResetPasswordModal,
canAddEdit, canEditable,
} = props; } = props;
return [ return [
{ {
...@@ -47,6 +47,7 @@ export const getColumns = props => { ...@@ -47,6 +47,7 @@ export const getColumns = props => {
dataIndex: 'status', dataIndex: 'status',
width: 150, width: 150,
initialValue: '3', initialValue: '3',
hideInFilter: true,
valueEnum: { valueEnum: {
all: { text: '全部', status: '' }, all: { text: '全部', status: '' },
close: { text: '使用中', status: 2 }, close: { text: '使用中', status: 2 },
...@@ -59,39 +60,38 @@ export const getColumns = props => { ...@@ -59,39 +60,38 @@ export const getColumns = props => {
key: 'action', key: 'action',
width: 220, width: 220,
hideInSearch: true, hideInSearch: true,
render: (value, record) => ( render: (value, record) => {
<> if (!canEditable) {
{canAddEdit ? ( return <>-</>;
<> }
<a return (
onClick={() => { <>
toUserInfo(record); <a
}} onClick={() => {
> toUserInfo(record);
编辑 }}
</a> >
<Divider type="vertical" /> 编辑
</> </a>
) : ( <Divider type="vertical" />
'' <a
)} onClick={() => {
<a openUpdateStatusModal(record);
onClick={() => { }}
openUpdateStatusModal(record); >
}} 修改状态
> </a>
修改状态 <Divider type="vertical" />
</a> <a
<Divider type="vertical" /> onClick={() => {
<a openResetPasswordModal(record);
onClick={() => { }}
openResetPasswordModal(record); >
}} 重置密码
> </a>
重置密码 </>
</a> );
</> },
),
}, },
]; ];
}; };
...@@ -27,7 +27,7 @@ const Account = props => { ...@@ -27,7 +27,7 @@ const Account = props => {
const resetPasswordModal = useRef(); const resetPasswordModal = useRef();
// 权限控制-新增/修改 // 权限控制-新增/修改
const canAddEdit = permissions[ACCOUNT_MANAGE.EDITABLE.id]; const canEditable = permissions[ACCOUNT_MANAGE.EDITABLE.id];
// 获取当前用户组织信息 // 获取当前用户组织信息
const userInfo = JSON.parse(localStorage.getItem('user') || '{}'); const userInfo = JSON.parse(localStorage.getItem('user') || '{}');
...@@ -66,7 +66,7 @@ const Account = props => { ...@@ -66,7 +66,7 @@ const Account = props => {
openRolePermissionsModal, openRolePermissionsModal,
openUpdateStatusModal, openUpdateStatusModal,
openResetPasswordModal, openResetPasswordModal,
canAddEdit, canEditable,
}); });
// 表格属性 // 表格属性
...@@ -90,7 +90,7 @@ const Account = props => { ...@@ -90,7 +90,7 @@ const Account = props => {
}, },
toolBarRender: () => { toolBarRender: () => {
// TODO: 权限控制 // TODO: 权限控制
if (canAddEdit) { if (canEditable) {
return [ return [
<Button type="primary" onClick={() => toUserInfo()}> <Button type="primary" onClick={() => toUserInfo()}>
新增用户 新增用户
...@@ -109,12 +109,7 @@ const Account = props => { ...@@ -109,12 +109,7 @@ const Account = props => {
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<ProTable <ProTable actionRef={actionRef} formRef={formRef} {...tableProps} search={false}></ProTable>
actionRef={actionRef}
formRef={formRef}
{...tableProps}
search={searchProps}
></ProTable>
<RolePermissionsModal ref={rolePermissionsModalRef} /> <RolePermissionsModal ref={rolePermissionsModalRef} />
<UpdateStatusModal reload={reload} ref={updateStatusModalRef} /> <UpdateStatusModal reload={reload} ref={updateStatusModalRef} />
......
...@@ -118,7 +118,13 @@ const RoleInfo = props => { ...@@ -118,7 +118,13 @@ const RoleInfo = props => {
}; };
// 初始化权限数据 // 初始化权限数据
// TODO:分离接口
const initPermissions = (res, roleId) => { const initPermissions = (res, roleId) => {
if (res.code !== 2000) {
notification.warning({
message: res.msg,
});
}
let resource = []; let resource = [];
let selected = []; let selected = [];
if (roleId) { if (roleId) {
......
...@@ -2,11 +2,12 @@ import React from 'react'; ...@@ -2,11 +2,12 @@ import React from 'react';
import { Divider, Popconfirm } from 'antd'; import { Divider, Popconfirm } from 'antd';
export const getColumns = props => { export const getColumns = props => {
const { onDeleteRole, toRoleInfo, canAddEdit } = props; const { onDeleteRole, toRoleInfo, canEditable } = props;
return [ return [
{ {
title: '角色ID', title: '角色ID',
dataIndex: 'id', dataIndex: 'id',
hideInTable: true,
}, },
{ {
title: '角色名称', title: '角色名称',
...@@ -41,25 +42,33 @@ export const getColumns = props => { ...@@ -41,25 +42,33 @@ export const getColumns = props => {
{ {
title: '操作', title: '操作',
key: 'action', key: 'action',
render: (value, record) => ( hideInSearch: true,
<> render: (value, record) => {
{canAddEdit ? <a onClick={() => toRoleInfo(record)}>编辑</a> : ''} if (!canEditable) {
{canAddEdit && record.userCount !== 0 ? <Divider type="vertical" /> : ''} return '-';
{record.userCount === 0 ? ( }
<Popconfirm return (
placement="top" <>
title="确定删除该角色吗?" <a onClick={() => toRoleInfo(record)}>编辑</a>
onConfirm={() => onDeleteRole(record)} {record.userCount === 0 ? (
okText="确定" <>
cancelText="取消" <Divider type="vertical" />
> <Popconfirm
<a>删除</a> placement="top"
</Popconfirm> title="确定删除该角色吗?"
) : ( onConfirm={() => onDeleteRole(record)}
'' okText="确定"
)} cancelText="取消"
</> >
), <a>删除</a>
</Popconfirm>
</>
) : (
''
)}
</>
);
},
}, },
]; ];
}; };
...@@ -17,7 +17,7 @@ const Role = props => { ...@@ -17,7 +17,7 @@ const Role = props => {
const history = useHistory(); const history = useHistory();
// 权限控制 // 权限控制
const canAddEdit = permissions[ROLE_MANAGE.EDITABLE.id]; const canEditable = permissions[ROLE_MANAGE.EDITABLE.id];
const toRoleInfo = ({ id = null } = {}) => { const toRoleInfo = ({ id = null } = {}) => {
const query = id ? { id } : {}; const query = id ? { id } : {};
...@@ -44,7 +44,7 @@ const Role = props => { ...@@ -44,7 +44,7 @@ const Role = props => {
const columns = getColumns({ const columns = getColumns({
onDeleteRole, onDeleteRole,
toRoleInfo, toRoleInfo,
canAddEdit, canEditable,
}); });
// 表格属性 // 表格属性
...@@ -57,13 +57,13 @@ const Role = props => { ...@@ -57,13 +57,13 @@ const Role = props => {
const res = await getRoleList({ page, size, ...params }); const res = await getRoleList({ page, size, ...params });
const { content, totalElements } = res.data; const { content, totalElements } = res.data;
return { return {
data: content,
success: true, success: true,
data: content,
total: totalElements, total: totalElements,
}; };
}, },
toolBarRender: () => [ toolBarRender: () => [
canAddEdit ? ( canEditable ? (
<Button type="primary" onClick={() => toRoleInfo()}> <Button type="primary" onClick={() => toRoleInfo()}>
新增角色 新增角色
</Button> </Button>
...@@ -80,12 +80,7 @@ const Role = props => { ...@@ -80,12 +80,7 @@ const Role = props => {
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<ProTable <ProTable actionRef={actionRef} formRef={formRef} {...tableProps} search={false}></ProTable>
actionRef={actionRef}
formRef={formRef}
{...tableProps}
search={searchProps}
></ProTable>
</PageHeaderWrapper> </PageHeaderWrapper>
); );
}; };
......
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