Commit 7f77e82f authored by xiexiuxing's avatar xiexiuxing

feat:商品能力按钮权限完成及内容管理公告管理咨询管理

parent ae4408f2
btnCode 是pass 平台配置唯一表示
btnCode 是pass 平台配置唯一表示
btnCode 是pass 平台配置唯一表示
menuCode 是 pass平台菜单属性relationParentCode":"commodityAbility",
menuCode 是 pass平台菜单属性relationParentCode":"属性值",
注意点 如果与后台按钮不匹配 则是没有权限按钮
// 价格策略
priceManage.add" 价格策略列表新曾
......@@ -7,6 +7,8 @@ priceManage.del 价格策略列表删除
priceManage.edit 价格策略编辑
priceManage.state 价格策略设置是否有效按钮
priceManage.see 价格策略查看详情
commodityAbility
// 货品
goods.add : '货品列表新曾'
goods.batch :'货品列表批量'
......@@ -21,6 +23,7 @@ products.copy:'商品拷贝'
// 快捷修改单价
fastModifyPrice.edit :'快捷修改单价'
fastModifyPrice.see:'快捷修改查看'
//渠道直采商品
directChannel.add :渠道直采商品新曾
directChannel.del:渠道直采商品删除
......@@ -29,11 +32,61 @@ directChannel.batch :渠道直采商品批量按钮
directChannel.edit: 渠道直采商品编辑按钮
directChannel.state:渠道直采商品上架下架
//品类及属性
品类
class.synchronization 同步品类 同步品类按钮
class.add 同步保存 同步保存按钮
class.del 同步删除 同步删除按钮
品类及属性-属性
attribute.see 属性查看 属性查看按钮
attribute.add 属性新曾 属性新曾按钮
attribute.state 属性修改是否有效 属性修改是否有效按钮
attribute.del 属性删除 属性删除按钮
attribute.edit 属性编辑 属性编辑按钮
attribute.synchronization 同步平台属性 同步平台属性按钮
品类及属性-属性值
propertyValue.state 属性值是否有效 属性值是否有效按钮
propertyValue.add 属性值新曾 属性值新曾按钮
propertyValue.see 属性值查看 属性值查看按钮
propertyValue.edit 属性值编辑 属性值编辑按钮按钮
propertyValue.del 属性值删除 属性值删除按钮
// 品类及属性-关联商品属性
categoryAttributes.add:'关联品类属性新曾'
categoryAttributes.see:'关联品类属性查看'
categoryAttributes.edit:'关联品类属性解除绑定'
//品牌管理
trademarkApply.add :品牌申请新曾
trademarkApply.see :品牌申请查看
trademarkApply.edit :品牌申请修改
trademarkApply.del :品牌申请删除
trademarkApply.state:'品牌申请状态设置'
待审核品牌
trademarkWillCheck.examine:'待审核品牌按钮'
trademarkWillCheck.see:'待审核品牌查看'
//仓位 pass
repositories.add :'仓位新曾按钮'
repositories.batchadd :'仓位批量新曾按钮'
repositories.batchedit:仓位批量修改按钮
repositories.edit:仓位库存调拨按钮
\ No newline at end of file
repositories.edit:仓位库存调拨按钮
// 内容管理-contentAbility
// 内容管理-资讯管理
infomations.del 资讯管理删除 资讯管理删除按钮
infomations.edit 资讯管理编辑 资讯管理编辑按钮
infomations.state 资讯管理上下架 资讯管理上下架按钮
infomations.see 资讯管理查看 资讯管理查看按钮
infomations.add 资讯管理新曾 资讯管理新曾按钮
//内容管理-公告管理
contentAbility.add 公告管理新曾 公告管理新曾按钮
contentAbility.see 公告管理查看 公告管理查看按钮
contentAbility.state 公告管理操作上架下架 公告管理操作上架下架按钮
contentAbility.edit 公告管理编辑 公告管理编辑按钮
contentAbility.del 公告管理删除 公告管理删除按钮
\ No newline at end of file
......@@ -25,6 +25,8 @@ import { clearModalParams } from '@/utils'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { getProductCustomerGetCustomerAttributeList, getProductPlatformGetAttributeList, postProductCustomerDeleteCustomerAttribute, postProductCustomerSyncAttribute, postProductCustomerUpdateCustomerAttributeStatus } from '@/services/ProductV2Api'
// import styles from './index.less'
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
......@@ -160,22 +162,29 @@ const Attribute: React.FC<{}> = () => {
title: intl.formatMessage({ id: 'classAndProperty.attribute.columns.option' }),
dataIndex: 'option',
render: (text: any, record: any) => record.isEnable ? '' : <>
<Button type='link' onClick={() => handleEdit(record)}>{intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.linke.1' })}</Button>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.title' })}
onConfirm={() => clickDelete(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.linke.2' })}</Button>
</Popconfirm>
<AuthButton btnCode='attribute.edit' menuCode='commodityAbility'>
<Button type='link' onClick={() => handleEdit(record)}>{intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.linke.1' })}</Button>
</AuthButton>
<AuthButton btnCode='attribute.del' menuCode='commodityAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.title' })}
onConfirm={() => clickDelete(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.attribute.columns.option.linke.2' })}</Button>
</Popconfirm>
</AuthButton>
</>
}
];
const handleSee = (record: any) => {
history.push(`/memberCenter/commodityAbility/classAndProperty/attribute/detail?id=${record.id}&isSee=true`)
if (AuthUrl('attribute.see', 'commodityAbility')) {
history.push(`/memberCenter/commodityAbility/classAndProperty/attribute/detail?id=${record.id}&isSee=true`)
}
}
const confirm = (record: any) => {
......@@ -236,15 +245,21 @@ const Attribute: React.FC<{}> = () => {
const Actions = (
<Space>
<Button type="primary" icon={<PlusOutlined />} onClick={() => { history.push('/memberCenter/commodityAbility/classAndProperty/attribute/add') }}>
{intl.formatMessage({ id: 'classAndProperty.attribute.actions.button.1' })}
</Button>
<span>
<Button type="default" style={{ marginLeft: 16 }} onClick={syncAttribute}>{intl.formatMessage({ id: 'classAndProperty.attribute.actions.button.2' })}</Button>
<Tooltip title={intl.formatMessage({ id: 'classAndProperty.attribute.actions.tooltip' })}>
&nbsp;<QuestionCircleOutlined />
</Tooltip>
</span>
<AuthButton btnCode='attribute.add' menuCode='commodityAbility'>
<Button type="primary" icon={<PlusOutlined />} onClick={() => { history.push('/memberCenter/commodityAbility/classAndProperty/attribute/add') }}>
{intl.formatMessage({ id: 'classAndProperty.attribute.actions.button.1' })}
</Button>
</AuthButton>
<AuthButton btnCode='attribute.synchronization' menuCode='commodityAbility'>
<span>
<Button type="default" style={{ marginLeft: 16 }} onClick={syncAttribute}>{intl.formatMessage({ id: 'classAndProperty.attribute.actions.button.2' })}</Button>
<Tooltip title={intl.formatMessage({ id: 'classAndProperty.attribute.actions.tooltip' })}>
&nbsp;<QuestionCircleOutlined />
</Tooltip>
</span>
</AuthButton>
</Space>
);
......
......@@ -18,7 +18,8 @@ import Search from '@/components/NiceForm/components/Search'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import { getProductCustomerGetCustomerCategoryAttributeList, getProductCustomerGetCustomerCategoryTree, postProductCustomerDeleteCustomerCategoryAttribute, postProductCustomerSaveCustomerCategoryAttribute } from '@/services/ProductV2Api';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const fetchCategoryTreeData = async (params?) => {
const res = await getProductCustomerGetCustomerCategoryTree()
......@@ -92,7 +93,9 @@ const CategoryAttributes: React.FC<{}> = () => {
}
const handleSee = (record: any) => {
history.push(`/memberCenter/commodityAbility/classAndProperty/categoryAttributes/viewAttributes?id=${record.id}`)
if (AuthUrl('categoryAttributes.see', 'commodityAbility')) {
history.push(`/memberCenter/commodityAbility/classAndProperty/categoryAttributes/viewAttributes?id=${record.id}`)
}
}
const handleSelectOk = () => {
......@@ -162,14 +165,17 @@ const CategoryAttributes: React.FC<{}> = () => {
render: (text: any, record: any) => {
return (
<>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.popconfirm' })}
onConfirm={() => clickRelief(record.id)}
okText={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.button' })}</Button>
</Popconfirm>
<AuthButton btnCode='categoryAttributes.edit' menuCode='commodityAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.popconfirm' })}
onConfirm={() => clickRelief(record.id)}
okText={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.categoryAttributes.columns.button' })}</Button>
</Popconfirm>
</AuthButton>
</>
)
}
......@@ -305,9 +311,12 @@ const CategoryAttributes: React.FC<{}> = () => {
},
children: (
<>
<Button type="primary" icon={<PlusOutlined />} onClick={handleNewLink}>
{intl.formatMessage({ id: 'classAndProperty.categoryAttributes.formilyChilds.button' })}
</Button>
<AuthButton btnCode='categoryAttributes.add' menuCode='commodityAbility'>
<Button type="primary" icon={<PlusOutlined />} onClick={handleNewLink}>
{intl.formatMessage({ id: 'classAndProperty.categoryAttributes.formilyChilds.button' })}
</Button>
</AuthButton>
</>
)
}}
......
......@@ -12,6 +12,8 @@ import { classSchema } from './schema'
import { useTreeTabs } from '@/hooks/useTreeTabs';
import NiceForm from '@/components/NiceForm';
import { getProductCustomerGetCustomerCategory, getProductCustomerGetCustomerCategoryTree, getProductPlatformGetCategoryTree, postProductCustomerDeleteCustomerCategory, postProductCustomerSaveOrUpdateCustomerCategory, postProductCustomerSyncCategory } from '@/services/ProductV2Api';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const { ON_FORM_INPUT_CHANGE } = LifeCycleTypes
......@@ -192,7 +194,11 @@ const ClassProperty: React.FC<{}> = () => {
<p style={{ display: 'flex', justifyContent: 'space-between' }}>
<h3 className="mb-30">{intl.formatMessage({ id: 'classAndProperty.class.h3' })}</h3>
<p>
<Button type="default" onClick={asyncClass}>{intl.formatMessage({ id: 'classAndProperty.class.h3.button' })}</Button>
<AuthButton btnCode='class.synchronization' menuCode='commodityAbility'>
<Button type="default" onClick={asyncClass}>{intl.formatMessage({ id: 'classAndProperty.class.h3.button' })}</Button>
</AuthButton>
<Tooltip title={intl.formatMessage({ id: 'classAndProperty.class.h3.tooltip' })}>
&nbsp;<QuestionCircleOutlined />
</Tooltip>
......@@ -244,16 +250,21 @@ const ClassProperty: React.FC<{}> = () => {
}}
>
<FormButtonGroup>
<Button loading={finshLoading} htmlType='submit' type="primary" style={{ marginTop: 32, marginBottom: 16, marginRight: 24 }}>
{intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.button.1' })}
</Button>
<Popconfirm title={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.popconfirm' })} okText={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.okText' })} cancelText={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.cancelText' })} onConfirm={handleDeleteMenu}>
{
treeStatus !== FormState.ADD && <Button style={{ marginTop: 32, marginBottom: 16 }}>
{intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.button.2' })}
</Button>
}
</Popconfirm>
<AuthButton btnCode='class.synchronization' menuCode='commodityAbility'>
<Button loading={finshLoading} htmlType='submit' type="primary" style={{ marginTop: 32, marginBottom: 16, marginRight: 24 }}>
{intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.button.1' })}
</Button>
</AuthButton>
<AuthButton btnCode='class.del' menuCode='commodityAbility'>
<Popconfirm title={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.popconfirm' })} okText={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.okText' })} cancelText={intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.cancelText' })} onConfirm={handleDeleteMenu}>
{
treeStatus !== FormState.ADD && <Button style={{ marginTop: 32, marginBottom: 16 }}>
{intl.formatMessage({ id: 'classAndProperty.class.h3.formButtonGroup.button.2' })}
</Button>
}
</Popconfirm>
</AuthButton>
</FormButtonGroup>
</NiceForm>
</Col>
......
......@@ -22,6 +22,8 @@ import { ISchema } from '@formily/antd';
import { clearModalParams } from '@/utils';
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
import { getProductCustomerGetCustomerAttributeTree, getProductCustomerGetCustomerAttributeValueList, getProductPlatformGetSyncAttributeValueList, postProductCustomerDeleteCustomerAttributeValue, postProductCustomerSyncAttributeValue, postProductCustomerUpdateCustomerAttributeValueStatus } from '@/services/ProductV2Api';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const treeActions = createTreeActions()
......@@ -162,7 +164,9 @@ const PropertyValue: React.FC<{}> = () => {
}
const handleSee = (record: any) => {
history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/detail?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}&isSee=true&type=${record.type}`)
if (AuthUrl('propertyValue.see', 'commodityAbility')) {
history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/detail?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}&isSee=true&type=${record.type}`)
}
}
const columns: ColumnType<any>[] = [
......@@ -187,19 +191,22 @@ const PropertyValue: React.FC<{}> = () => {
render: (text: any, record: any) => {
let component: ReactNode = null
component = (
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.title' })}
onConfirm={() => confirm(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.cancelText' })}
>
<Button
type="link"
style={record.isEnable ? { color: '#00B37A' } : { color: 'red' }}>
{record.isEnable ? <>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.button.1' })} <PlayCircleOutlined /></> : <>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.button.2' })} <PauseCircleOutlined /></>}
</Button>
</Popconfirm>
<AuthButton btnCode='propertyValue.state' menuCode='commodityAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.title' })}
onConfirm={() => confirm(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.cancelText' })}
>
<Button
type="link"
style={record.isEnable ? { color: '#00B37A' } : { color: 'red' }}>
{record.isEnable ? <>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.button.1' })} <PlayCircleOutlined /></> : <>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.popconfirm.button.2' })} <PauseCircleOutlined /></>}
</Button>
</Popconfirm>
</AuthButton>
)
return component
}
......@@ -213,21 +220,26 @@ const PropertyValue: React.FC<{}> = () => {
<>
{
record.isEnable ? '' : <>
<Button
type='link'
onClick={() => history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/edit?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}`)}
>
{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.option.button.1' })}
</Button>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.title' })}
onConfirm={() => clickDelete(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2' })}</Button>
</Popconfirm>
<AuthButton btnCode='propertyValue.edit' menuCode='commodityAbility'>
<Button
type='link'
onClick={() => history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/edit?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}`)}
>
{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.option.button.1' })}
</Button>
</AuthButton>
<AuthButton btnCode='propertyValue.del' menuCode='commodityAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.title' })}
onConfirm={() => clickDelete(record)}
onCancel={cancel}
okText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.okText' })}
cancelText={intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2.popconfirm.cancelText' })}
>
<Button type='link'>{intl.formatMessage({ id: 'classAndProperty.propertyValue.columns.button.2' })}</Button>
</Popconfirm>
</AuthButton>
</>
}
</>
......@@ -388,15 +400,18 @@ const PropertyValue: React.FC<{}> = () => {
},
children: (
<>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => {
history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/add?attrId=${selectKey || history.location.query.attrId}&attrName=${selectNode?._title || history.location.query.attrName}&type=${selectNode?.type || history.location.query.type}`)
}}
>
{intl.formatMessage({ id: 'classAndProperty.propertyValue.standardTable.formilyChilds.button' })}
</Button>
<AuthButton btnCode='propertyValue.add' menuCode='commodityAbility'>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => {
history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/add?attrId=${selectKey || history.location.query.attrId}&attrName=${selectNode?._title || history.location.query.attrName}&type=${selectNode?.type || history.location.query.type}`)
}}
>
{intl.formatMessage({ id: 'classAndProperty.propertyValue.standardTable.formilyChilds.button' })}
</Button>
</AuthButton>
</>
)
}}
......
import React, { useRef } from 'react';
import { Row, Col, Card, Button, Dropdown, Menu, Space, Popconfirm, Modal } from 'antd';
import { Row, Col, Card, Button, Dropdown, Menu, Space, Popconfirm, Modal } from 'antd';
import { createFormActions } from '@formily/antd';
import { history, Link, useIntl, getIntl } from 'umi';
import { DownOutlined } from '@ant-design/icons';
......@@ -15,6 +15,8 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { schema } from './schema';
import { ANNOUNCE_COLUMN_TYPE } from '../utils/utils';
import { getManageMemberNoticePage, postManageMemberNoticeDelete, postManageMemberNoticeUpdateStatus } from '@/services/ManageV2Api';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const actions = createFormActions();
......@@ -29,12 +31,15 @@ const CAN_MODIFY = [1, 3];
const controllerBtns = <Row>
<Col span={6}>
<Button
onClick={() => history.push('/memberCenter/contentAbility/announcements/add')}
type="primary"
>
{getIntl().formatMessage({ id: 'common.button.add' })}
</Button>
<AuthButton btnCode='contentAbility.add' menuCode='contentAbility'>
<Button
onClick={() => history.push('/memberCenter/contentAbility/announcements/add')}
type="primary"
>
{getIntl().formatMessage({ id: 'common.button.add' })}
</Button>
</AuthButton>
</Col>
</Row>
......@@ -67,6 +72,7 @@ const Announcements = () => {
dataIndex: 'title',
render: (text: string, record: any) => (
<EyePreview
type={AuthUrl('contentAbility.see', 'contentAbility') ? 'link' : 'button'}
url={`/memberCenter/contentAbility/infomations/detail?id=${record.id}&preview=1`}
>
{text}
......@@ -92,7 +98,7 @@ const Announcements = () => {
// },
render: (text, record) => {
return (
<span style={{...tagColorStyle[record.status], padding: '3px 5px'}}>
<span style={{ ...tagColorStyle[record.status], padding: '3px 5px' }}>
{STATUS_MAP[record.status]}
</span>
)
......@@ -103,38 +109,46 @@ const Announcements = () => {
render: (val, record) => {
const menu = (
<Menu>
<Menu.Item key='edit'>
<Link to={`/memberCenter/contentAbility/announcements/detail?id=${record.id}`}>
{intl.formatMessage({ id: 'common.button.edit' })}
</Link>
</Menu.Item>
<Menu.Item key='delete' onClick={() => handleDelete(record.id)}>
<a>
{intl.formatMessage({ id: 'common.button.delete' })}
</a>
</Menu.Item>
<AuthButton btnCode='contentAbility.edit' menuCode='contentAbility'>
<Menu.Item key='edit'>
<Link to={`/memberCenter/contentAbility/announcements/detail?id=${record.id}`}>
{intl.formatMessage({ id: 'common.button.edit' })}
</Link>
</Menu.Item>
</AuthButton>
<AuthButton btnCode='contentAbility.del' menuCode='contentAbility'>
<Menu.Item key='delete' onClick={() => handleDelete(record.id)}>
<a>
{intl.formatMessage({ id: 'common.button.delete' })}
</a>
</Menu.Item>
</AuthButton>
</Menu>
)
return (
<Space>
<Popconfirm
title={intl.formatMessage({ id: 'common.tip.option.confirm' })}
onConfirm={() => handleUpdateStatus(record.id, STATUS_LIST[record.status] == intl.formatMessage({ id: 'content.common.up' }) ? 2 : 3)}
okText={intl.formatMessage({ id: 'common.button.yes' })}
cancelText={intl.formatMessage({ id: 'common.button.no' })}
>
<a href="#">{STATUS_LIST[record.status]}</a>
</Popconfirm>
<AuthButton btnCode='contentAbility.state' menuCode='contentAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'common.tip.option.confirm' })}
onConfirm={() => handleUpdateStatus(record.id, STATUS_LIST[record.status] == intl.formatMessage({ id: 'content.common.up' }) ? 2 : 3)}
okText={intl.formatMessage({ id: 'common.button.yes' })}
cancelText={intl.formatMessage({ id: 'common.button.no' })}
>
<a href="#">{STATUS_LIST[record.status]}</a>
</Popconfirm>
</AuthButton>
{
CAN_MODIFY.includes(record.status)
? (
? (
<Dropdown overlay={menu}>
<a>
{intl.formatMessage({ id: 'common.text.most' })} <DownOutlined />
</a>
</Dropdown>
)
: null
: null
}
</Space>
)
......@@ -146,7 +160,7 @@ const Announcements = () => {
Modal.confirm({
title: intl.formatMessage({ id: 'common.tip.option.confirm' }),
onOk: () => {
postManageMemberNoticeDelete({id: id}).then((res) => {
postManageMemberNoticeDelete({ id: id }).then((res) => {
if (res.code === 1000) {
ref.current.reload()
}
......@@ -158,7 +172,7 @@ const Announcements = () => {
// 修改状态
const handleUpdateStatus = (id, status) => {
// 该方法是上下架 所以 enableStatus 无用,随意传
postManageMemberNoticeUpdateStatus({id: id, shelfStatus: status, enableStatus: 0}).then((res) => {
postManageMemberNoticeUpdateStatus({ id: id, shelfStatus: status, enableStatus: 0 }).then((res) => {
if (res.code === 1000) {
ref.current.reload()
}
......
......@@ -14,13 +14,15 @@ import { COLUMN_CATEGORY } from '../constant';
import moment from 'moment';
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { getManageMemberColumnAll, getManageMemberInformationPage, postManageMemberInformationBatch, postManageMemberInformationDelete, postManageMemberInformationUpdateStatus } from '@/services/ManageV2Api';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
const tagColorStyle = {
"1": {color: '#606266', background: '#F4F5F7'},
"2": {color: '#00B37A', background: '#EBF7F2'},
"3": {color: '#E63F3B', background: '#FFEBE6'},
"1": { color: '#606266', background: '#F4F5F7' },
"2": { color: '#00B37A', background: '#EBF7F2' },
"3": { color: '#E63F3B', background: '#FFEBE6' },
}
const STATUS_MAP = {
......@@ -49,6 +51,7 @@ const Infomation = () => {
dataIndex: 'title',
render: (text: string, record: any) => (
<EyePreview
type={AuthUrl('infomations.see', 'contentAbility') ? 'link' : 'button'}
url={`/memberCenter/contentAbility/infomations/detail?id=${record.id}&preview=1`}
>
{text}
......@@ -82,7 +85,7 @@ const Infomation = () => {
},
render: (text, record) => {
return (
<span style={{...tagColorStyle[record.status], padding: '3px 5px'}}>
<span style={{ ...tagColorStyle[record.status], padding: '3px 5px' }}>
{STATUS_MAP[record.status]}
</span>
)
......@@ -94,36 +97,45 @@ const Infomation = () => {
// 只有待上架, 下架才有删除
const menu = (
<Menu>
<AuthButton btnCode='infomations.edit' menuCode='contentAbility'>
<Menu.Item>
<Link to={`/memberCenter/contentAbility/infomations/detail?id=${record.id}`}>
{intl.formatMessage({ id: 'common.button.edit' })}
</Link>
</Menu.Item>
</AuthButton>
<AuthButton btnCode='infomations.del' menuCode='contentAbility'>
<Menu.Item onClick={() => handleDelete(record.id)}>
<a>
{intl.formatMessage({ id: 'common.button.delete' })}
</a>
</Menu.Item>
<a>
{intl.formatMessage({ id: 'common.button.delete' })}
</a>
</Menu.Item>
</AuthButton>
</Menu>
)
return (
<Space>
<Popconfirm
title={intl.formatMessage({ id: 'common.tip.option.confirm' })}
onConfirm={() => handleUpdateState(record.id, STATUS_LIST[record.status] == intl.formatMessage({ id: 'content.common.up' }) ? 2 : 3)}
okText={intl.formatMessage({ id: 'common.button.yes' })}
cancelText={intl.formatMessage({ id: 'common.button.no' })}
>
<a href="#">{STATUS_LIST[record.status]}</a>
</Popconfirm>
{/* infomations.state */}
<AuthButton btnCode='infomations.state' menuCode='contentAbility'>
<Popconfirm
title={intl.formatMessage({ id: 'common.tip.option.confirm' })}
onConfirm={() => handleUpdateState(record.id, STATUS_LIST[record.status] == intl.formatMessage({ id: 'content.common.up' }) ? 2 : 3)}
okText={intl.formatMessage({ id: 'common.button.yes' })}
cancelText={intl.formatMessage({ id: 'common.button.no' })}
>
<a href="#">{STATUS_LIST[record.status]}</a>
</Popconfirm>
</AuthButton>
{
CAN_MODIFY.includes(record.status)
? <Dropdown overlay={menu}>
? <Dropdown overlay={menu}>
<a>
{intl.formatMessage({ id: 'common.text.most' })} <DownOutlined />
</a>
</Dropdown>
: null
: null
}
</Space>
)
......@@ -145,7 +157,7 @@ const Infomation = () => {
const { code, data } = res
console.log(res);
if (code === 1000) {
const columnsList = data.map((item) => ({label: item.name, value: item.id}));
const columnsList = data.map((item) => ({ label: item.name, value: item.id }));
formActions.setFieldState('columnId', state => {
state.props.enum = columnsList
});
......@@ -156,7 +168,7 @@ const Infomation = () => {
// 修改状态
const handleUpdateState = (id, status) => {
// 该方法是上下架 所以 enableStatus 无用,随意传
postManageMemberInformationUpdateStatus({id: id, shelfStatus: status, enableStatus: 0}).then((res) => {
postManageMemberInformationUpdateStatus({ id: id, shelfStatus: status, enableStatus: 0 }).then((res) => {
if (res.code === 1000) {
ref.current.reload()
}
......@@ -167,7 +179,7 @@ const Infomation = () => {
Modal.confirm({
title: intl.formatMessage({ id: 'common.tip.option.confirm' }),
onOk: () => {
postManageMemberInformationDelete({id: id}).then((res) => {
postManageMemberInformationDelete({ id: id }).then((res) => {
if (res.code === 1000) {
ref.current.reload()
}
......@@ -178,12 +190,15 @@ const Infomation = () => {
const controllerBtns = <Row>
<Col span={6}>
<Button
onClick={() => history.push('/memberCenter/contentAbility/infomations/add')}
type="primary"
>
{intl.formatMessage({ id: 'common.button.add' })}
</Button>
<AuthButton btnCode='infomations.add' menuCode='contentAbility'>
<Button
onClick={() => history.push('/memberCenter/contentAbility/infomations/add')}
type="primary"
>
{intl.formatMessage({ id: 'common.button.add' })}
</Button>
</AuthButton>
</Col>
</Row>
......
......@@ -13,6 +13,9 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import useSetSearchValueInTable from '@/hooks/useSetSearchValueInTable'
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
......@@ -65,21 +68,25 @@ const CheckBrand: React.FC<{}> = () => {
key: 'id',
},
{
title: intl.formatMessage({id: 'trademark.columns.name'}),
title: intl.formatMessage({ id: 'trademark.columns.name' }),
dataIndex: 'name',
key: 'name',
className: 'commonPickColor',
render: (text, record) => <EyePreview url={`/memberCenter/commodityAbility/trademark/trademarkWillCheck/detail?id=${record.id}&preview=1`}>
{text}
</EyePreview>
render: (text, record) =>
<EyePreview
type={AuthUrl('trademarkWillCheck.see', 'commodityAbility') ? 'link' : 'button'}
url={`/memberCenter/commodityAbility/trademark/trademarkWillCheck/detail?id=${record.id}&preview=1`}
>
{text}
</EyePreview>
},
{
title: intl.formatMessage({id: 'trademark.columns.memberName'}),
title: intl.formatMessage({ id: 'trademark.columns.memberName' }),
dataIndex: 'memberName',
key: 'memberName',
},
{
title: intl.formatMessage({id: 'trademark.columns.applyTime'}),
title: intl.formatMessage({ id: 'trademark.columns.applyTime' }),
dataIndex: 'applyTime',
key: 'applyTime',
render: text => text && moment(text).format('YYYY-MM-DD HH:mm:ss'),
......@@ -87,26 +94,30 @@ const CheckBrand: React.FC<{}> = () => {
sorter: (a, b) => a.applyTime - b.applyTime,
},
{
title: intl.formatMessage({id: 'trademark.columns.status'}),
title: intl.formatMessage({ id: 'trademark.columns.status' }),
dataIndex: 'status',
key: 'status',
render: (text, record) => {
let component: ReactNode = null
if (record.status === 1)
component = (<><span className="commonStatusInvalid"></span>{intl.formatMessage({id: 'trademark.schema.status.2'})}</>)
component = (<><span className="commonStatusInvalid"></span>{intl.formatMessage({ id: 'trademark.schema.status.2' })}</>)
else if (record.status === 2)
component = (<><span className="commonStatusModify"></span>{intl.formatMessage({id: 'trademark.schema.status.3'})}</>)
component = (<><span className="commonStatusModify"></span>{intl.formatMessage({ id: 'trademark.schema.status.3' })}</>)
else if (record.status === 3)
component = (<><span className="commonStatusStop"></span>{intl.formatMessage({id: 'trademark.schema.status.4'})}</>)
component = (<><span className="commonStatusStop"></span>{intl.formatMessage({ id: 'trademark.schema.status.4' })}</>)
else if (record.status === 4)
component = (<><span className="commonStatusValid"></span>{intl.formatMessage({id: 'trademark.schema.status.5'})}</>)
component = (<><span className="commonStatusValid"></span>{intl.formatMessage({ id: 'trademark.schema.status.5' })}</>)
return component
}
},
{
title: intl.formatMessage({id: 'trademark.columns.option'}),
title: intl.formatMessage({ id: 'trademark.columns.option' }),
dataIndex: 'option',
render: (text, record) => <Button type='link' onClick={() => history.push(`/memberCenter/commodityAbility/trademark/trademarkWillCheck/detail?id=${record.id}`)}>{intl.formatMessage({id: 'trademark.columns.check'})}</Button>
render: (text, record) =>
<AuthButton btnCode='trademarkWillCheck.examine' menuCode='commodityAbility'>
<Button type='link' onClick={() => history.push(`/memberCenter/commodityAbility/trademark/trademarkWillCheck/detail?id=${record.id}`)}>{intl.formatMessage({ id: 'trademark.columns.check' })}</Button>
</AuthButton>
}
]
......@@ -149,7 +160,7 @@ const CheckBrand: React.FC<{}> = () => {
type: 'string',
"x-component": 'Search',
'x-component-props': {
placeholder: intl.formatMessage({id: 'trademark.schema.name'}),
placeholder: intl.formatMessage({ id: 'trademark.schema.name' }),
align: 'flex-end',
},
}
......@@ -170,26 +181,26 @@ const CheckBrand: React.FC<{}> = () => {
memberName: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'trademark.schema.status.placeholder0'}),
placeholder: intl.formatMessage({ id: 'trademark.schema.status.placeholder0' }),
}
},
status: {
type: 'string',
enum: [
{ label: intl.formatMessage({id: 'trademark.schema.status.1'}), value: 0 },
{ label: intl.formatMessage({id: 'trademark.schema.status.2'}), value: 1 },
{ label: intl.formatMessage({id: 'trademark.schema.status.3'}), value: 2 },
{ label: intl.formatMessage({id: 'trademark.schema.status.4'}), value: 3 },
{ label: intl.formatMessage({id: 'trademark.schema.status.5'}), value: 4 }
{ label: intl.formatMessage({ id: 'trademark.schema.status.1' }), value: 0 },
{ label: intl.formatMessage({ id: 'trademark.schema.status.2' }), value: 1 },
{ label: intl.formatMessage({ id: 'trademark.schema.status.3' }), value: 2 },
{ label: intl.formatMessage({ id: 'trademark.schema.status.4' }), value: 3 },
{ label: intl.formatMessage({ id: 'trademark.schema.status.5' }), value: 4 }
],
'x-component-props': {
placeholder: intl.formatMessage({id: 'trademark.schema.status.placeholder'}),
placeholder: intl.formatMessage({ id: 'trademark.schema.status.placeholder' }),
}
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: intl.formatMessage({id: 'trademark.schema.submit'}),
children: intl.formatMessage({ id: 'trademark.schema.submit' }),
},
},
},
......
This diff is collapsed.
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