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

fix: 修改翻译重复引入intl

parent 0609b1f7
......@@ -13,6 +13,7 @@ import alipay from '@/assets/icons/alipay_icon.png';
import wechat from '@/assets/icons/wechat_icon.png';
import unionpay from '@/assets/icons/unionpay_icon.png';
import balance from '@/assets/icons/balance_icon.png';
import tonglian from '@/assets/icons/tonglian_icon.png';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import NumberInput from './components/number';
import { getOrderMemberPaymentParameterFind, postOrderMemberPaymentParameterCreate } from '@/services/OrderNewV2Api';
......@@ -23,6 +24,11 @@ const PIC_MAP = {
2: wechat,
3: unionpay,
4: balance,
11: wechat,
12: alipay,
13: tonglian,
14: unionpay,
15: balance
};
const { TabPane } = Tabs
......@@ -358,7 +364,29 @@ const PaySettingLayout = () => {
))}
</Tabs>
)}
{(item.payType !== 1 && item.payType !== 3) && (
{item.payType === 6 && (
<Tabs onChange={(key) => setPayChannel(key)}>
{item.channels.map((_item, _index) => (
<TabPane tab={<Space><Image preview={false} width={16} height={16} src={PIC_MAP[_item.payChannel]} />{_item.payChannelName}</Space>} key={_item.payChannel} forceRender>
<Form.Item
label={`${intl.formatMessage({ id: 'payandSettle.paySetting.label' })}${_item.payChannelName}`}
name={`payChannel_${_item.payChannel}`}
initialValue={`_${_item.payChannel}`}
>
<Radio.Group
size="small"
buttonStyle="solid"
onChange={(e) => handleRadioChang(e, item.payType)}
>
<Radio.Button value={_item.payChannel}>{intl.formatMessage({ id: 'payandSettle.paySetting.radio.1' })}</Radio.Button>
<Radio.Button value={`_${_item.payChannel}`}>{intl.formatMessage({ id: 'payandSettle.paySetting.radio.2' })}</Radio.Button>
</Radio.Group>
</Form.Item>
</TabPane>
))}
</Tabs>
)}
{(item.payType !== 1 && item.payType !== 3 && item.payType !== 6) && (
<Fragment>
{item.channels.map((_item, _index) => (
<Fragment key={_item.payChannel}>
......
import { useIntl } from 'umi';
import React from 'react';
import { Tooltip, Image, Typography } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
......
import { useIntl } from 'umi';
import React from 'react';
import { Tooltip, Typography } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
......
import { useIntl } from 'umi';
import React, { useEffect, useState, useMemo } from 'react';
import { Table, Radio, Button, Form, Input, Row, Col, DatePicker, Select, FormInstance, Space } from 'antd';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
......@@ -9,7 +8,7 @@ import TableModel from './tableModel';
import AddGoodsDrawer from './modal/addGoodsDrawer';
import AddCouponsDrawer from './modal/addCouponsDrawer';
import GiveCouponDrawer from './modal/giveCouponDrawer';
import { getIntl} from 'umi'
import { getIntl } from 'umi'
const intl = getIntl();
interface AddFormGoodsProps {
......@@ -27,7 +26,6 @@ const layout: any = {
}
const AddFormGoods: React.FC<AddFormGoodsProps> = (props: any) => {
const intl = useIntl();
const { currentRef, layoutId, layoutTitle, ruleType } = props;
const [form] = Form.useForm();
const [dataSource, setDataSource] = useState<any>([{
......@@ -88,13 +86,13 @@ const AddFormGoods: React.FC<AddFormGoodsProps> = (props: any) => {
autoComplete='off'
>
<Space direction='vertical' style={{ display: 'flex' }}>
{ruleType != 10 && <Button type="dashed" block icon={<PlusOutlined />} onClick={() => { setCouponVisible(true) }}>{ intl.formatMessage({ id: 'marketingAbility.xuanzehuodongshangpin'}) }</Button>}
{ruleType != 10 && <Button type="dashed" block icon={<PlusOutlined />} onClick={() => { setCouponVisible(true) }}>{intl.formatMessage({ id: 'marketingAbility.xuanzehuodongshangpin' })}</Button>}
<Table
columns={columns}
dataSource={dataSource}
pagination={ruleType != 10 ? {} : false}
/>
{ruleType === 10 && <Button type="dashed" block icon={<PlusOutlined />}>{ intl.formatMessage({ id: 'marketingAbility.tianjiaxinjiangxiang'}) }</Button>}
{ruleType === 10 && <Button type="dashed" block icon={<PlusOutlined />}>{intl.formatMessage({ id: 'marketingAbility.tianjiaxinjiangxiang' })}</Button>}
</Space>
</Form>
<AddGoodsDrawer
......@@ -117,7 +115,7 @@ const AddFormGoods: React.FC<AddFormGoodsProps> = (props: any) => {
AddFormGoods.defaultProps = {
layoutId: 'goodsLayout',
layoutTitle: `${intl.formatMessage({ id: 'marketingAbility.huodongshangpin'})}`,
layoutTitle: `${intl.formatMessage({ id: 'marketingAbility.huodongshangpin' })}`,
}
export default AddFormGoods;
import { useIntl } from 'umi';
import { ISchema } from "@formily/antd";
import { environmentList } from '@/constants/environment';
import { getIntl} from 'umi'
......
......@@ -15,7 +15,7 @@ import ActivityItem from './activityItem';
import { GetMarketingAdornMerchantActivityListAdornResponseDetail, getMarketingPlatformActivityGetActivityTypeList } from '@/services/MarketingV2Api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import moment from 'moment';
import { useIntl,getIntl} from 'umi'
import { getIntl } from 'umi'
const intl = getIntl();
const actions = createFormActions();
......@@ -33,8 +33,8 @@ interface Iprops {
mode?: 'radio' | 'checked',
/** mode === 'radio'的时候, 禁用的的活动商品 [`${id}_${activityId}`] */
disabledList?: string[],
/** 去除某些高级筛选 */
ignoresFilters?: string[],
/** 去除某些高级筛选 */
ignoresFilters?: string[],
}
type SubmitType = {
......@@ -48,7 +48,7 @@ type SubmitType = {
const columns: ColumnsType<GetMarketingAdornMerchantActivityListAdornResponseDetail["goodsList"][0]> = [
{
title: `${intl.formatMessage({ id: 'activePage.Commodityinformation'})}`,
title: `${intl.formatMessage({ id: 'activePage.Commodityinformation' })}`,
dataIndex: 'productInfo',
render: (_text, _record) => {
return (
......@@ -61,22 +61,22 @@ const columns: ColumnsType<GetMarketingAdornMerchantActivityListAdornResponseDet
},
{
title: `${intl.formatMessage({ id: 'activePage.category'})}`,
dataIndex:'category',
title: `${intl.formatMessage({ id: 'activePage.category' })}`,
dataIndex: 'category',
render: (_text) => {
return <StatusTag title={_text} type="default" />;
}
},
{
title: `${intl.formatMessage({ id: 'activePage.brand'})}`,
title: `${intl.formatMessage({ id: 'activePage.brand' })}`,
dataIndex: 'brand'
},
{
title: `${intl.formatMessage({ id: 'activePage.Merchantname'})}`,
title: `${intl.formatMessage({ id: 'activePage.Merchantname' })}`,
dataIndex: 'memberName',
},
{
title: `${intl.formatMessage({ id: 'activePage.UnitPrice'})}`,
title: `${intl.formatMessage({ id: 'activePage.UnitPrice' })}`,
dataIndex: 'unit',
render: (_text, _record) => {
return (
......@@ -88,7 +88,7 @@ const columns: ColumnsType<GetMarketingAdornMerchantActivityListAdornResponseDet
}
},
{
title: `${intl.formatMessage({ id: 'activePage.Activityprice'})}`,
title: `${intl.formatMessage({ id: 'activePage.Activityprice' })}`,
dataIndex: 'activityPrice',
render: (_text, _record) => {
return (
......@@ -103,7 +103,6 @@ const columns: ColumnsType<GetMarketingAdornMerchantActivityListAdornResponseDet
const ActivityProductDrawer: React.FC<Iprops> = (props: Iprops) => {
const intl = useIntl();
const { visible, onCancel, fetchData = null, onOk, products = [], activityImage, mode = 'checked', disabledList = [], ignoresFilters = [] } = props;
const [current, setPage] = useState<number>(1);
const [currentPageSize, setPageSize] = useState<number>(10);
......@@ -142,7 +141,7 @@ const ActivityProductDrawer: React.FC<Iprops> = (props: Iprops) => {
if (!visible) {
setSelectKey(null)
setSelectedActivityProductList([])
return ;
return;
}
setCheckedProduct(products);
fetchList({ current, pageSize: currentPageSize });
......@@ -255,53 +254,53 @@ const ActivityProductDrawer: React.FC<Iprops> = (props: Iprops) => {
</div>
}
>
<div className={styles.container}>
<div className={styles.form}>
<NiceForm
schema={ignoredSchema}
actions={actions}
onReset={onReset}
onSubmit={onSubmit}
effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'id', FORM_FILTER_PATH);
useAsyncSelect('activityType', fetchPrimaryOption, ["name", "status"]);
}}
></NiceForm>
</div>
<div className={styles.table}>
{
dataSource?.map((_item) => {
const { outerStatusName, id, activityName, activityTypeName } = _item;
const isActive = selectedKey === id;
const hasChildSelected = selectedRowKeys.some((_rowKey) => _rowKey.split("-")[0] === id.toString());
return (
<div key={_item.id} className={styles.activeItem}>
<ActivityItem
onSelect={onSelect}
isActive={isActive}
id={id}
activityName={activityName}
statusName={outerStatusName}
activityTypeName={activityTypeName}
hasChildSelected={hasChildSelected}
activityImage={activityImage}
/>
</div>
);
})
}
</div>
<div className={styles.expandableTable}>
<Table
rowSelection={rowSelection as any}
rowKey={(_record) => `${_record.activityId!}-${_record.id!}` }
loading={loading}
columns={columns} dataSource={selectedActivityProductList}></Table>
</div>
<div className={styles.pagination}>
<Pagination pageSize={currentPageSize} current={current} showQuickJumper total={totalCount} onChange={onChange}/>
</div>
<div className={styles.container}>
<div className={styles.form}>
<NiceForm
schema={ignoredSchema}
actions={actions}
onReset={onReset}
onSubmit={onSubmit}
effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'id', FORM_FILTER_PATH);
useAsyncSelect('activityType', fetchPrimaryOption, ["name", "status"]);
}}
></NiceForm>
</div>
<div className={styles.table}>
{
dataSource?.map((_item) => {
const { outerStatusName, id, activityName, activityTypeName } = _item;
const isActive = selectedKey === id;
const hasChildSelected = selectedRowKeys.some((_rowKey) => _rowKey.split("-")[0] === id.toString());
return (
<div key={_item.id} className={styles.activeItem}>
<ActivityItem
onSelect={onSelect}
isActive={isActive}
id={id}
activityName={activityName}
statusName={outerStatusName}
activityTypeName={activityTypeName}
hasChildSelected={hasChildSelected}
activityImage={activityImage}
/>
</div>
);
})
}
</div>
<div className={styles.expandableTable}>
<Table
rowSelection={rowSelection as any}
rowKey={(_record) => `${_record.activityId!}-${_record.id!}`}
loading={loading}
columns={columns} dataSource={selectedActivityProductList}></Table>
</div>
<div className={styles.pagination}>
<Pagination pageSize={currentPageSize} current={current} showQuickJumper total={totalCount} onChange={onChange} />
</div>
</div>
</Drawer>
);
};
......
/*
* @Author: XieZhiXiong
* @Date: 2021-06-22 15:34:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-09-30 17:10:42
* @Description: 基本信息
*/
import React from 'react';
import { Badge } from 'antd';
import moment from 'moment';
import { useIntl, getIntl} from 'umi'
import {
MERCHANT_COUPON_TYPE_VOUCHER,
MERCHANT_COUPON_TYPE_UNIVERSAL,
MERCHANT_COUPON_TYPE_CATEGORY,
MERCHANT_COUPON_TYPE_BRAND,
MERCHANT_COUPON_TYPE_PRODUCT,
} from '@/constants/marketing';
import CustomizeColumn, { IProps as CustomizeColumnProps, DataItem } from '@/components/CustomizeColumn';
export type PropsType = Omit<CustomizeColumnProps, 'data' | 'column'> & {
/**
* 数据,模拟数据
*/
dataSource: {
/**
* 数据id
*/
id: number,
/**
* 优惠券类型
*/
type: number,
/**
* 优惠券类型名称
*/
typeName: string,
/**
* 领(发)券起始时间
*/
releaseTimeStart: number,
/**
* 领(发)券结束时间
*/
releaseTimeEnd: number,
/**
* 优惠券名称
*/
name: string,
/**
* 券面额
*/
denomination: number,
/**
* 状态名称
*/
statusName: string,
/**
* 发券数量
*/
quantity: number,
},
}
const intl = getIntl();
const TIPS_TEXT_MAP = {
[MERCHANT_COUPON_TYPE_VOUCHER]: intl.formatMessage({ id: 'merchantCoupon.couponUsingCanPurchase' }),
[MERCHANT_COUPON_TYPE_UNIVERSAL]: intl.formatMessage({ id: 'merchantCoupon.generalAllCategoriesCommodities' }),
[MERCHANT_COUPON_TYPE_CATEGORY]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialCustomerCategoryName' }),
[MERCHANT_COUPON_TYPE_BRAND]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialBrandName' }),
[MERCHANT_COUPON_TYPE_PRODUCT]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialGoods' }),
};
const CouponBacisInfo: React.FC<PropsType> = (props: PropsType) => {
const intl = useIntl();
const { dataSource, ...rest } = props;
const basicInfo: DataItem[] = [
{
title: intl.formatMessage({ id: 'merchantCoupon.activityID' }),
value: dataSource.id || '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponTypeName' }),
value: dataSource.typeName || '',
columnProps: {
tips: true,
tipsText: TIPS_TEXT_MAP[dataSource.type] || '',
},
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponStartTime' }),
value: dataSource.releaseTimeStart ? moment(dataSource.releaseTimeStart).format('YYYY-MM-DD HH:mm:ss') : '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.activityName' }),
value: dataSource.name,
},
{
title: intl.formatMessage({ id: 'merchantCoupon.moneySize' }),
value: ${dataSource.denomination || ''}`,
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponEndTime' }),
value: dataSource.releaseTimeEnd ? moment(dataSource.releaseTimeEnd).format('YYYY-MM-DD HH:mm:ss') : '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.innerState' }),
value: (
<Badge color="blue" text={dataSource.statusName} />
),
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponAmount' }),
value: dataSource.quantity,
},
];
return (
<CustomizeColumn
title={intl.formatMessage({ id: 'merchantCoupon.baseInfo' })}
{...rest}
data={basicInfo}
/>
);
};
export default CouponBacisInfo;
/*
* @Author: XieZhiXiong
* @Date: 2021-06-22 15:34:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-09-30 17:10:42
* @Description: 基本信息
*/
import React from 'react';
import { Badge } from 'antd';
import moment from 'moment';
import { getIntl } from 'umi'
import {
MERCHANT_COUPON_TYPE_VOUCHER,
MERCHANT_COUPON_TYPE_UNIVERSAL,
MERCHANT_COUPON_TYPE_CATEGORY,
MERCHANT_COUPON_TYPE_BRAND,
MERCHANT_COUPON_TYPE_PRODUCT,
} from '@/constants/marketing';
import CustomizeColumn, { IProps as CustomizeColumnProps, DataItem } from '@/components/CustomizeColumn';
export type PropsType = Omit<CustomizeColumnProps, 'data' | 'column'> & {
/**
* 数据,模拟数据
*/
dataSource: {
/**
* 数据id
*/
id: number,
/**
* 优惠券类型
*/
type: number,
/**
* 优惠券类型名称
*/
typeName: string,
/**
* 领(发)券起始时间
*/
releaseTimeStart: number,
/**
* 领(发)券结束时间
*/
releaseTimeEnd: number,
/**
* 优惠券名称
*/
name: string,
/**
* 券面额
*/
denomination: number,
/**
* 状态名称
*/
statusName: string,
/**
* 发券数量
*/
quantity: number,
},
}
const intl = getIntl();
const TIPS_TEXT_MAP = {
[MERCHANT_COUPON_TYPE_VOUCHER]: intl.formatMessage({ id: 'merchantCoupon.couponUsingCanPurchase' }),
[MERCHANT_COUPON_TYPE_UNIVERSAL]: intl.formatMessage({ id: 'merchantCoupon.generalAllCategoriesCommodities' }),
[MERCHANT_COUPON_TYPE_CATEGORY]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialCustomerCategoryName' }),
[MERCHANT_COUPON_TYPE_BRAND]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialBrandName' }),
[MERCHANT_COUPON_TYPE_PRODUCT]: intl.formatMessage({ id: 'merchantCoupon.suitForSpecialGoods' }),
};
const CouponBacisInfo: React.FC<PropsType> = (props: PropsType) => {
const { dataSource, ...rest } = props;
const basicInfo: DataItem[] = [
{
title: intl.formatMessage({ id: 'merchantCoupon.activityID' }),
value: dataSource.id || '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponTypeName' }),
value: dataSource.typeName || '',
columnProps: {
tips: true,
tipsText: TIPS_TEXT_MAP[dataSource.type] || '',
},
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponStartTime' }),
value: dataSource.releaseTimeStart ? moment(dataSource.releaseTimeStart).format('YYYY-MM-DD HH:mm:ss') : '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.activityName' }),
value: dataSource.name,
},
{
title: intl.formatMessage({ id: 'merchantCoupon.moneySize' }),
value: ${dataSource.denomination || ''}`,
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponEndTime' }),
value: dataSource.releaseTimeEnd ? moment(dataSource.releaseTimeEnd).format('YYYY-MM-DD HH:mm:ss') : '',
},
{
title: intl.formatMessage({ id: 'merchantCoupon.innerState' }),
value: (
<Badge color="blue" text={dataSource.statusName} />
),
},
{
title: intl.formatMessage({ id: 'merchantCoupon.couponAmount' }),
value: dataSource.quantity,
},
];
return (
<CustomizeColumn
title={intl.formatMessage({ id: 'merchantCoupon.baseInfo' })}
{...rest}
data={basicInfo}
/>
);
};
export default CouponBacisInfo;
......@@ -47,7 +47,6 @@ const EditableCell = ({
}
const handleValidator = async (_rule, value, dataIndex) => {
const intl = useIntl();
const pattern = /^(\-)?\d+(\.\d{1,4})?$/;
const plummetPrice = await form.getFieldValue('plummetPrice');
if (!value) {
......
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