Commit 4bbee5c9 authored by unknown's avatar unknown

营销能力

parent 92142653
This diff is collapsed.
This diff is collapsed.
{
"marketingAbility.neirong": "内容",
"marketingAbility.tupianlianjie": "图片链接",
"marketingAbility.yangshi": "样式",
"marketingAbility.youhuiquan": "优惠券",
"marketingAbility.wenbenneirong": "文本内容",
"marketingAbility.guanggaotu": "广告图",
"marketingAbility.huodongtuijian": "活动推荐",
"marketingAbility.zidingyiquyu": "自定义区域",
"marketingAbility.tianjiashangpinjiedian": "添加商品节点",
"marketingAbility.tianjiazijiedian": "添加子节点",
"marketingAbility.zujianshu": "组件树",
"marketingAbility.tejiacuxiao": "特价促销",
"marketingAbility.zhijiangcuxiao": "直降促销",
"marketingAbility.zhekoucuxiao": "折扣促销",
"marketingAbility.duojiancuxiao": "多件促销",
"marketingAbility.zuhecuxiao": "组合促销",
"marketingAbility.pintuan": "拼团",
"marketingAbility.kanjia": "砍价",
"marketingAbility.miaosha": "秒杀",
"marketingAbility.yushou": "预售",
"marketingAbility.taocan": "套餐",
"marketingAbility.shiyong": "试用",
"marketingAbility.zhongzhile": "重置了",
"marketingAbility.youhuijuanID": "优惠劵ID",
"marketingAbility.meihuiyuanIDzonggongkelingqu": "每会员ID总共可领取",
"marketingAbility.quedingyaotijiaoma?": "确定要提交吗?",
"marketingAbility.manliangcuxiao": "满量促销",
"marketingAbility.manecuxiao": "满额促销",
"marketingAbility.zengsongcuxiao": "赠送促销",
"marketingAbility.choujiang": "抽奖",
"marketingAbility.huangou": "换购",
"marketingAbility.zijianyingxiaohuodongguanli": "自建营销活动管理",
"marketingAbility.yijieshu": "已结束",
"marketingAbility.xunjiabaojiaxiadan": "询价报价下单",
"marketingAbility.wenzhoulongchangshoudaiyouxiangongsi": "温州龙昌手袋有限公司",
"marketingAbility.tijiaoyingxiaohuodong": "提交营销活动",
"marketingAbility.gongyingshang": "供应商",
"marketingAbility.shenheyingxiaohuodong": "审核营销活动",
"marketingAbility.pingtai": "平台",
"marketingAbility.shangxianyingxiaohuodong": "上线营销活动",
"marketingAbility.daipingtaishenhe": "待平台审核",
"marketingAbility.tongyi": "同意",
"marketingAbility.daishangxianhuodong": "待上线活动",
"marketingAbility.xinzengyingxiaohuodong": "新增营销活动",
"marketingAbility.shenheyingxiaohuodong(yiji)": "审核营销活动(一级)",
"marketingAbility.shenheyingxiaohuodong(erji)": "审核营销活动(二级)",
"marketingAbility.yunyingzongjian": "运营总监",
"marketingAbility.yunyingrenyuan": "运营人员",
"marketingAbility.yunyingbu": "运营部",
"marketingAbility.zhangsan": "张三",
"marketingAbility.daishenhe(yiji)": "待审核(一级)",
"marketingAbility.liuzhuanjindu": "流转进度",
"marketingAbility.jibenxinxi": "基本信息",
"marketingAbility.huodongguize": "活动规则",
"marketingAbility.huodongshangpin": "活动商品",
"marketingAbility.huodongyonghu": "活动用户",
"marketingAbility.shiyongshangcheng": "适用商城",
"marketingAbility.liuzhuanjilu": "流转记录",
"marketingAbility.huodongID": "活动ID",
"marketingAbility.huodongmingcheng": "活动名称",
"marketingAbility.neibuzhuangtai": "内部状态",
"marketingAbility.youhuiquanleixing": "优惠券类型",
"marketingAbility.quanmiane": "券面额",
"marketingAbility.faquanshuliang": "发券数量",
"marketingAbility.ling(fa)quankaishishijian": "领(发)券开始时间",
"marketingAbility.ling(fa)quanjieshushijian": "领(发)券结束时间",
"marketingAbility.manliangcuxiaoleixing": "满量促销类型",
"marketingAbility.manliangjian": "满量减",
"marketingAbility.zengsongcuxiaoleixing": "赠送促销类型",
"marketingAbility.youhuiguize": "优惠规则",
"marketingAbility.huangouleixing": "换购类型",
"marketingAbility.diejiahuodongleixing": "叠加活动类型",
"marketingAbility.chengtuanrenshu": "成团人数",
"marketingAbility.choujiangleixing": "抽奖类型",
"marketingAbility.choujiangcishu": "抽奖次数",
"marketingAbility.meicikanjiajine": "每次砍价金额",
"marketingAbility.yonghuxianzhicishu": "用户限制次数",
"marketingAbility.meirimiaoshashijianduan": "每日秒杀时间段",
"marketingAbility.dingjinzhifushijian": "定金支付时间",
"marketingAbility.chouquyonghushijian": "抽取用户时间",
"marketingAbility.huodongmiaoshu": "活动描述",
"marketingAbility.huodongqineijinyunxuyonghuyihuodongjiagegoumaiyijian,chaoguoyijianyonghuxuyiyuanjiagoumai": "活动期内仅允许用户以活动价格购买一件,超过一件用户须以原价购买",
"marketingAbility.zengpinleixing": "赠品类型",
"marketingAbility.diejiayouhuiquan": "叠加优惠券",
"marketingAbility.yunxudiejia": "允许叠加",
"marketingAbility.chengtuanshijian": "成团时间",
"marketingAbility.weikuanzhifushijian": "尾款支付时间",
"marketingAbility.shiyongjieshushijian": "试用结束时间",
"marketingAbility.manliangzhe": "满量折",
"marketingAbility.chaoxianguize": "超限规则",
"marketingAbility.yuanjiagoumai": "原价购买",
"marketingAbility.yonghucantuanxianzhi": "用户参团限制",
"marketingAbility.kaishifahuoshijian": "开始发货时间",
"marketingAbility.shangpintupian": "商品图片",
"marketingAbility.shangpinID": "商品ID",
"marketingAbility.shangpinmingcheng": "商品名称",
"marketingAbility.pinlei": "品类",
"marketingAbility.pinpai": "品牌",
"marketingAbility.danwei": "单位",
"marketingAbility.shangpinjiage": "商品价格",
"marketingAbility.gerenxiangoushuliang": "个人限购数量",
"marketingAbility.huodongxiangouzongshuliang": "活动限购总数量",
"marketingAbility.huodongjiagebiaoshishangchengzhijieyigaishangpindehuodongjiagejinxingxiaoshou": "活动价格表示商城直接以该商品的活动价格进行销售",
"marketingAbility.shiyongyonghu": "适用用户",
"marketingAbility.huodongjiage": "活动价格",
"marketingAbility.huodongleixing": "活动类型",
"marketingAbility.huodongkaishishijian": "活动开始时间",
"marketingAbility.huodongjieshushijian": "活动结束时间",
"marketingAbility.baomingshijian": "报名时间",
"marketingAbility.canyukehushu": "参与客户数",
"marketingAbility.yizhixingdingdanshu": "已执行订单数",
"marketingAbility.waibuzhuangtai": "外部状态",
"marketingAbility.daitijiaoshenhe": "待提交审核",
"marketingAbility.sousuo": "搜索",
"marketingAbility.kaopingzhuti": "考评主题",
"marketingAbility.kaopingkaishishijian": "考评开始时间",
"marketingAbility.kaopingwanchengshijian": "考评完成时间",
"marketingAbility.neibuzhuangtai(quanbu)": "内部状态(全部)",
"marketingAbility.chaxun": "查询",
"marketingAbility.daitijiaobaopingtaishenhe": "待提交报平台审核",
"marketingAbility.yonghuzongshu": "用户总数",
"marketingAbility.xinyonghu": "新用户",
"marketingAbility.xinhuiyuan": "新会员",
"marketingAbility.laoyonghu": "老用户",
"marketingAbility.laohuiyuan": "老会员",
"marketingAbility.goumaijine": "购买金额",
"marketingAbility.dingdanshuliang": "订单数量",
"marketingAbility.jinri": "今日",
"marketingAbility.zuijin7ri": "最近7日",
"marketingAbility.quanbu": "全部",
"marketingAbility.dangqianshangpinshuju": "当前商品数据",
"marketingAbility.jinrihuodongshangpingoumaipaiming": "今日活动商品购买排名",
"marketingAbility.dangqianshangpinyonghulaiyuanfenxi": "当前商品用户来源分析",
"marketingAbility.dangqianshangpinkehuqushifenxi": "当前商品客户趋势分析",
"marketingAbility.dangqianshangpinhuodongxiaoguoqushifenxi": "当前商品活动效果趋势分析",
"marketingAbility.dangqianshangpinyonghuleixingfenxi": "当前商品用户类型分析",
"marketingAbility.dangqianshangpinhuiyuandengjifenxi": "当前商品会员等级分析"
}
\ No newline at end of file
const axios = require("axios");
const fs = require('fs')
const { readdir } = require('fs/promises')
const path = require('path')
const { pinyin } = require('pinyin-pro');
// 判断是不是中文 \u4e00-\u9fa5
// () 为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串 $1
// [] 定义匹配的字符范围。比如[a-zA-Z0-9]表示匹配英文字符和数字。[\s*表示空格或者*号]
// + 一次或多次 * 零次或多次 ? 零次或一次
// (1)'' (2)"" (3) > < (4) ='' (5) ="" (6)``
// /'([\u4e00-\u9fa5]+)'/g
// /'([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)'/g
const reg1 = /'([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)'/g
const reg2 = /"([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)"/g
const reg3 = />\s*([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)\s*</g
const reg4 = /=\s*'([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)'/g
const reg5 = /=\s*"([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)"/g
const reg6 = /`([\u4e00-\u9fa5][\u4e00-\u9fa5a-zA-Z0-9??!!%,::()...]*)`/g
const list = new Set()
const unique = []
const map = {}
const fileList = []
function create(file) {
const arr = file.split('\\').slice(6)
return arr.join('-').split('.')[0].replace(/\-/g, '.')
}
async function translateToID(value) {
const str = encodeURI(value);
// 有道翻译api 发送请求 (接口不可用时,请自主替换)
const res = await axios.get('http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=' + str)
let resID = res.data.translateResult[0][0].tgt
// 预处理 转ID 驼峰命名
if (resID.indexOf(" ") != -1) { // 翻译结果为多个单词
resID = resID.split(' ')
// 去除翻译中的(),' 为了省事,直接筛掉含这些的单词
resID = resID.filter( v => !(v.includes("(") || v.includes(")") || v.includes("'") || v.includes(",")) )
// 翻译结果 英文太长 进行裁剪
if (resID.length > 5) {
resID = resID.filter(v => {
return v.length > 5
})
}
resID = resID.map((v, k) => {
// 驼峰命名
if (k == 0) return v.toLowerCase()
return v.charAt(0).toUpperCase() + v.slice(1)
}).join('')
}
return resID
}
async function sleep(time) {
return new Promise((resolve) => {
setTimeout(() => {
resolve()
}, time)
})
}
const exec = async (reg, str, file) => {
let res;
// 反复调用 exec() 方法来遍历字符串中的所有匹配文本
do {
res = reg.exec(str);
if (res && res[1]) {
const f = create(file)
if (!unique.includes(res[1])) {
// let resID = await translateToID(res[1])
// await sleep(500)
let resID = pinyin(res[1],{ toneType: 'none', type: 'array' }).join('');
unique.push(res[1])
list.add(`${res[1]}.${f}`)
map[`${f.slice(22,38)}.${resID}`] = res[1]
// map[`${f}.${res[1]}`] = res[1]
}
}
} while (res)
}
async function readFile(filePath) {
try {
// 返回一个Stats对象,其中包含文件路径的详细信息
const stats = fs.statSync(filePath)
// 判断是否为文件 true false
const isFile = stats.isFile();
// 判断是否为目录 true false
const isDir = stats.isDirectory();
if (isFile) {
fileList.push(filePath)
}
if (isDir) {
await myReaddir(filePath)
}
} catch (err) {
console.log(err)
}
}
async function readFiles(dir, files, index = 0) {
if (index < files.length) {
const filePath = path.join(dir, files[index])
await readFile(filePath)
await readFiles(dir, files, index + 1)
}
}
async function myReaddir(dir) {
try {
// fsPromises.readdir 读取目录内容 返回目录中文件的名称数组(不包括 '.' 和 '..')
const files = await readdir(dir)
await readFiles(dir, files)
} catch (err) {
console.log(err)
}
}
async function generateMap(file) {
try {
// 读文件
const data = fs.readFileSync(file).toString()
await exec(reg1, data, file)
await exec(reg2, data, file)
await exec(reg3, data, file)
await exec(reg4, data, file)
await exec(reg5, data, file)
await exec(reg6, data, file)
} catch (err) {
console.log(err)
}
}
async function generate(index = 0) {
if (index < fileList.length) {
await generateMap(fileList[index])
await generate(index + 1)
}
}
async function transfer() {
const o = require('./map')
const map = Object.keys(o).reduce((obj, key) => {
obj[o[key]] = key
return obj
}, {})
const fileList = require('./fileList')
fileList.forEach(async file => {
let flag = false;
try {
const res = fs.readFileSync(file)
// const data = "import { useIntl } from 'umi';\r\n" + res.toString()
const data = res.toString()
// 注意匹配的顺序
let tData = data.replace(reg4, function (match, $1) {
flag = true;
return `={intl.formatMessage({ id: '${map[$1]}' })}`
})
tData = tData.replace(reg5, function (match, $1) {
flag = true;
return `={intl.formatMessage({ id: '${map[$1]}'})}`
})
tData = tData.replace(reg1, function (match, $1) {
flag = true;
return "`${intl.formatMessage({ id: '" + map[$1] + "'})}`"
})
tData = tData.replace(reg6, function (match, $1) {
flag = true;
return "`${intl.formatMessage({ id: '" + map[$1] + "'})}`"
})
tData = tData.replace(reg2, function (match, $1) {
flag = true;
return "`${intl.formatMessage({ id: '" + map[$1] + "'})}`"
})
tData = tData.replace(reg3, function (match, $1) {
flag = true;
return ">{ intl.formatMessage({ id: '" + map[$1] + "'}) }<"
})
if(flag) {
tData = "import { useIntl } from 'umi';\r\n" + tData
fs.writeFileSync(file, tData)
}
} catch (err) {
console.log(err)
}
})
}
async function tarverse() {
await myReaddir(path.join(__dirname, './src/pages/transaction/marketingAbility'))
// await myReaddir(path.join(__dirname, './src/pages/member/memberEvaluate'))
await generate()
fs.writeFileSync(path.join(__dirname, './list.js'), JSON.stringify(Array.from(list), null, 2))
fs.writeFileSync(path.join(__dirname, './map.js'), JSON.stringify(map, null, 2))
// string.endsWith('XXX') 是否以XXX结尾
fs.writeFileSync(path.join(__dirname, './fileList.js'), JSON.stringify(fileList.filter(file => file.endsWith('tsx') || file.endsWith('ts')), null, 2))
}
// 先执行第一个方法,生成三个文件夹
tarverse()
// 再执行第二个方法,进行umi国际化 intl.formatMessage({id:'resID'}) 替换
// transfer()
\ No newline at end of file
...@@ -406,4 +406,23 @@ export default { ...@@ -406,4 +406,23 @@ export default {
'marketingAbility.shijian': '时间', 'marketingAbility.shijian': '时间',
'marketingAbility.zhijiangjiageweishangpin': 'marketingAbility.zhijiangjiageweishangpin':
'直降价格为商品价格的直降价格,如原价每件¥20.00的商品,每件降价¥2.00,则直降价格输入框中输入 ¥2.00', '直降价格为商品价格的直降价格,如原价每件¥20.00的商品,每件降价¥2.00,则直降价格输入框中输入 ¥2.00',
'marketingAbility.haisheng59miao': '还剩 59 秒',
'marketingAbility.shuruhuiyuanming': '输入 会员名称 进行搜索',
'marketingAbility.2020nian9yuetejiacuxiao': '2020年9月特价促销活动',
'marketingAbility.jinricanyukehushu': '今日参与客户数 (人)',
'marketingAbility.jinridingdanshudan': '今日订单数 (单)',
'marketingAbility.jinrigoumaishuliang': '今日购买数量 (件)',
'marketingAbility.jinrigoumaijine': '今日购买金额 (元)',
'marketingAbility.jinkoutoucenghuangniupi': '进口头层黄牛皮荔枝纹/红色/XL',
'marketingAbility.jianxiangbizuori': '件,相比昨日',
'marketingAbility.zhizhanshiqian10ming': '只展示前 10 名数据',
'marketingAbility.WEBqiyeshangcheng': 'WEB 企业商城',
'marketingAbility.jinrizhengzaizhixinghuodong': '今日正在执行活动数量 (个)',
'marketingAbility.jinricanyuhuodongzongke': '今日参与活动总客户数 (人)',
'marketingAbility.jinrihuodongshangpinzongding': '今日活动商品总订单数量 (单)',
'marketingAbility.jinrihuodongshangpinzonggou': '今日活动商品总购买金额 (元)',
'marketingAbility.huodongshangpinliebiao': '活动商品列表 (28)',
'marketingAbility.xinhuiyuanpingtaihuiyuan': '新会员(平台会员)',
'marketingAbility.laohuiyuanpingtaihuiyuan': '老会员(平台会员)',
} }
...@@ -8,6 +8,8 @@ import IMG_LEVEL1 from '@/assets/imgs/level1.png'; ...@@ -8,6 +8,8 @@ import IMG_LEVEL1 from '@/assets/imgs/level1.png';
import IMG_LEVEL2 from '@/assets/imgs/level2.png'; import IMG_LEVEL2 from '@/assets/imgs/level2.png';
import IMG_LEVEL3 from '@/assets/imgs/level3.png'; import IMG_LEVEL3 from '@/assets/imgs/level3.png';
import IMG_LEVEL4 from '@/assets/imgs/level4.png'; import IMG_LEVEL4 from '@/assets/imgs/level4.png';
import { getIntl} from 'umi'
const intl = getIntl();
interface ActivityUserLayoutProps { interface ActivityUserLayoutProps {
/** 标题 */ /** 标题 */
...@@ -28,6 +30,7 @@ const PIC_MAP = { ...@@ -28,6 +30,7 @@ const PIC_MAP = {
}; };
const ActivityUserLayout: React.FC<ActivityUserLayoutProps> = (props: any) => { const ActivityUserLayout: React.FC<ActivityUserLayoutProps> = (props: any) => {
const intl = useIntl();
const { title, isFlag, dataScoure, allUsers } = props; const { title, isFlag, dataScoure, allUsers } = props;
const [data, setData] = useState<any>({}); const [data, setData] = useState<any>({});
const [memberLevelList, setMemberLevelList] = useState<any[]>([]); const [memberLevelList, setMemberLevelList] = useState<any[]>([]);
...@@ -65,8 +68,8 @@ const ActivityUserLayout: React.FC<ActivityUserLayoutProps> = (props: any) => { ...@@ -65,8 +68,8 @@ const ActivityUserLayout: React.FC<ActivityUserLayoutProps> = (props: any) => {
<h5 className={style.label}>{ intl.formatMessage({ id: 'marketingAbility.shiyongyonghu:'}) }</h5> <h5 className={style.label}>{ intl.formatMessage({ id: 'marketingAbility.shiyongyonghu:'}) }</h5>
<h5 className={style.content}> <h5 className={style.content}>
<Space> <Space>
{data.newMember && <div className={style.selector}>新会员(平台会员)</div>} {data.newMember && <div className={style.selector}>{intl.formatMessage({ id: 'marketingAbility.xinhuiyuanpingtaihuiyuan' })}</div>}
{data.oldMember && <div className={style.selector}>老会员(平台会员)</div>} {data.oldMember && <div className={style.selector}>{intl.formatMessage({ id: 'marketingAbility.laohuiyuanpingtaihuiyuan' })}</div>}
</Space> </Space>
</h5> </h5>
</div> </div>
......
import { ComponentSchemaType, PROPS_SETTING_TYPES, PROPS_TYPES } from '@lingxi-design/core'; import { ComponentSchemaType, PROPS_SETTING_TYPES, PROPS_TYPES } from '@lingxi-design/core';
import { getIntl} from 'umi'
const intl = getIntl();
const View: ComponentSchemaType = { const View: ComponentSchemaType = {
propsConfig: { propsConfig: {
children: { children: {
label: '内容', label: `${intl.formatMessage({ id: 'marketingAbility.neirong'})}`,
type: PROPS_TYPES.string, type: PROPS_TYPES.string,
} }
}, },
...@@ -15,11 +17,11 @@ const Advertisement: ComponentSchemaType = { ...@@ -15,11 +17,11 @@ const Advertisement: ComponentSchemaType = {
type: "Advertisement" as any, type: "Advertisement" as any,
}, },
imageUrl: { imageUrl: {
label: '图片链接', label: `${intl.formatMessage({ id: 'marketingAbility.tupianlianjie'})}`,
type: PROPS_TYPES.string, type: PROPS_TYPES.string,
}, },
style: { style: {
label: '样式', label: `${intl.formatMessage({ id: 'marketingAbility.yangshi'})}`,
type: PROPS_TYPES.object, type: PROPS_TYPES.object,
} }
}, },
...@@ -30,7 +32,7 @@ const Coupon = { ...@@ -30,7 +32,7 @@ const Coupon = {
Coupon: { Coupon: {
propsConfig: { propsConfig: {
children: { children: {
label: '内容', label: `${intl.formatMessage({ id: 'marketingAbility.neirong'})}`,
type: PROPS_TYPES.string, type: PROPS_TYPES.string,
}, },
componentType: { componentType: {
...@@ -44,7 +46,7 @@ const Coupon = { ...@@ -44,7 +46,7 @@ const Coupon = {
type: "CouponSetting", type: "CouponSetting",
}, },
children: { children: {
label: '内容', label: `${intl.formatMessage({ id: 'marketingAbility.neirong'})}`,
type: PROPS_TYPES.string, type: PROPS_TYPES.string,
} }
}, },
...@@ -58,7 +60,7 @@ const MarketingCard = { ...@@ -58,7 +60,7 @@ const MarketingCard = {
"MarketingCard.CouponsItem": { "MarketingCard.CouponsItem": {
propsConfig: { propsConfig: {
componentType: { componentType: {
label: '优惠券', label: `${intl.formatMessage({ id: 'marketingAbility.youhuiquan'})}`,
type: PROPS_SETTING_TYPES.category type: PROPS_SETTING_TYPES.category
}, },
}, },
...@@ -68,7 +70,7 @@ const MarketingCard = { ...@@ -68,7 +70,7 @@ const MarketingCard = {
const Commodity = { const Commodity = {
propsConfig: { propsConfig: {
children: { children: {
label: '文本内容', label: `${intl.formatMessage({ id: 'marketingAbility.wenbenneirong'})}`,
type: PROPS_TYPES.string, type: PROPS_TYPES.string,
}, },
}, },
......
import { useIntl } from 'umi';
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { updatePageConfig } from '@lingxi-design/react'; import { updatePageConfig } from '@lingxi-design/react';
import DEFAULT_DATA from '../mock/index.json'; import DEFAULT_DATA from '../mock/index.json';
...@@ -6,6 +7,8 @@ import { usePageStatus } from '@/hooks/usePageStatus'; ...@@ -6,6 +7,8 @@ import { usePageStatus } from '@/hooks/usePageStatus';
import { arrayToMap } from '@/utils'; import { arrayToMap } from '@/utils';
import { getMarketingAdornActivityGoodsAdorn, postMarketingCouponActivityPageSelectDetail } from '@/services/MarketingV2Api'; import { getMarketingAdornActivityGoodsAdorn, postMarketingCouponActivityPageSelectDetail } from '@/services/MarketingV2Api';
import { getTemplateWebActivityPageGet } from '@/services/TemplateV2Api'; import { getTemplateWebActivityPageGet } from '@/services/TemplateV2Api';
import { getIntl} from 'umi'
const intl = getIntl();
type DataSourceItemType = { type DataSourceItemType = {
sort: number, sort: number,
...@@ -172,10 +175,10 @@ const afterRequestFormat = { ...@@ -172,10 +175,10 @@ const afterRequestFormat = {
}; };
const title = { const title = {
top: '广告图', top: `${intl.formatMessage({ id: 'marketingAbility.guanggaotu'})}`,
coupon: '优惠券', coupon: `${intl.formatMessage({ id: 'marketingAbility.youhuiquan'})}`,
hot: '活动推荐', hot: `${intl.formatMessage({ id: 'marketingAbility.huodongtuijian'})}`,
suggestProduct: '自定义区域' suggestProduct: `${intl.formatMessage({ id: 'marketingAbility.zidingyiquyu'})}`
}; };
function useGetLayout() { function useGetLayout() {
...@@ -245,7 +248,7 @@ function useGetLayout() { ...@@ -245,7 +248,7 @@ function useGetLayout() {
}; };
const suggestProductSonProps = _row.key === 'suggestProduct' ? { const suggestProductSonProps = _row.key === 'suggestProduct' ? {
childComponentName: `CommodityList.Item`, childComponentName: `CommodityList.Item`,
addBtnText: '添加商品节点', addBtnText: `${intl.formatMessage({ id: 'marketingAbility.tianjiashangpinjiedian'})}`,
childProps: { childProps: {
otherProps: { otherProps: {
type: `suggestProductItem` type: `suggestProductItem`
...@@ -254,7 +257,7 @@ function useGetLayout() { ...@@ -254,7 +257,7 @@ function useGetLayout() {
} : {}; } : {};
const childPropsData = _row.key === 'top' ? {} : { const childPropsData = _row.key === 'top' ? {} : {
childComponentName: `${CHILD_COMPONENT_NAME[_row.key]}`, childComponentName: `${CHILD_COMPONENT_NAME[_row.key]}`,
addBtnText: '添加子节点', addBtnText: `${intl.formatMessage({ id: 'marketingAbility.tianjiazijiedian'})}`,
childProps: { childProps: {
otherProps: { otherProps: {
type: _row.key === 'suggestProduct' ? 'suggestProduct' : `${_row.key}Item` type: _row.key === 'suggestProduct' ? 'suggestProduct' : `${_row.key}Item`
...@@ -315,7 +318,7 @@ function useGetLayout() { ...@@ -315,7 +318,7 @@ function useGetLayout() {
}, },
childNodes: [], childNodes: [],
childComponentName: `CommodityList.Item`, childComponentName: `CommodityList.Item`,
addBtnText: '添加子节点', addBtnText: `${intl.formatMessage({ id: 'marketingAbility.tianjiazijiedian'})}`,
childProps: { childProps: {
otherProps: { otherProps: {
type: `suggestProductItem` type: `suggestProductItem`
...@@ -364,7 +367,7 @@ function useGetLayout() { ...@@ -364,7 +367,7 @@ function useGetLayout() {
pageConfig = { pageConfig = {
0: { 0: {
"componentName": "MallLayout", "componentName": "MallLayout",
title: '组件树', title: `${intl.formatMessage({ id: 'marketingAbility.zujianshu'})}`,
"props": { "props": {
"style": { "style": {
"width": "100%", "width": "100%",
......
import { useIntl } from 'umi';
/* /*
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2021-06-22 14:37:24 * @Date: 2021-06-22 14:37:24
...@@ -39,7 +40,7 @@ export const querySchema: ISchema = { ...@@ -39,7 +40,7 @@ export const querySchema: ISchema = {
id: { id: {
type: 'string', type: 'string',
'x-component-props': { 'x-component-props': {
placeholder: '优惠劵ID', placeholder: `${intl.formatMessage({ id: 'marketingAbility.youhuijuanID'})}`,
allowClear: true, allowClear: true,
style: { style: {
width: 160, width: 160,
......
import { useIntl } from 'umi';
/* /*
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2021-06-24 14:05:57 * @Date: 2021-06-24 14:05:57
...@@ -176,7 +177,7 @@ const schema: ISchema = { ...@@ -176,7 +177,7 @@ const schema: ISchema = {
type: 'string', type: 'string',
required: true, required: true,
'x-mega-props': { 'x-mega-props': {
addonBefore: '每会员ID总共可领取', addonBefore: `${intl.formatMessage({ id: 'marketingAbility.meihuiyuanIDzonggongkelingqu'})}`,
}, },
'x-component-props': { 'x-component-props': {
allowClear: false, allowClear: false,
......
import { useIntl } from 'umi';
/* /*
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2021-06-23 17:41:57 * @Date: 2021-06-23 17:41:57
...@@ -50,7 +51,7 @@ export const querySchema: ISchema = { ...@@ -50,7 +51,7 @@ export const querySchema: ISchema = {
id: { id: {
type: 'string', type: 'string',
'x-component-props': { 'x-component-props': {
placeholder: '优惠劵ID', placeholder: `${intl.formatMessage({ id: 'marketingAbility.youhuijuanID'})}`,
allowClear: true, allowClear: true,
}, },
}, },
......
...@@ -100,7 +100,7 @@ const ReadySubmit = () => { ...@@ -100,7 +100,7 @@ const ReadySubmit = () => {
title: `${intl.formatMessage({ id: 'paltformSign.operation'})}`, title: `${intl.formatMessage({ id: 'paltformSign.operation'})}`,
key: 'state', key: 'state',
dataIndex: 'state', dataIndex: 'state',
render: (text, record) => <Popconfirm title="确定要提交吗?" okButtonProps={{ loading: confirmLoading }} disabled={!record.id} okText={intl.formatMessage({ id: 'paltformSign.is'})} cancelText={intl.formatMessage({ id: 'paltformSign.no'})} onConfirm={() => fetchSubmitBatch(record.id)}> render: (text, record) => <Popconfirm title={intl.formatMessage({ id: 'marketingAbility.quedingyaotijiaoma?'})} okButtonProps={{ loading: confirmLoading }} disabled={!record.id} okText={intl.formatMessage({ id: 'paltformSign.is'})} cancelText={intl.formatMessage({ id: 'paltformSign.no'})} onConfirm={() => fetchSubmitBatch(record.id)}>
<Button type='link' disabled={!record.id}>{ intl.formatMessage({ id: 'paltformSign.submit'}) }</Button> <Button type='link' disabled={!record.id}>{ intl.formatMessage({ id: 'paltformSign.submit'}) }</Button>
</Popconfirm> </Popconfirm>
}, },
......
import { getIntl} from 'umi'
const intl = getIntl();
/** /**
* 活动类型 * 活动类型
*/ */
...@@ -40,20 +42,20 @@ export enum ACTIVITYTYPE { ...@@ -40,20 +42,20 @@ export enum ACTIVITYTYPE {
* 活动类型文字 * 活动类型文字
*/ */
export const ACTIVITYTYPENAME = { export const ACTIVITYTYPENAME = {
1: "特价促销", 1: `${intl.formatMessage({ id: 'marketingAbility.tejiacuxiao'})}`,
2: "直降促销", 2: `${intl.formatMessage({ id: 'marketingAbility.zhijiangcuxiao'})}`,
3: "折扣促销", 3: `${intl.formatMessage({ id: 'marketingAbility.zhekoucuxiao'})}`,
4: "满量促销", 4: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`,
5: "满额促销", 5: `${intl.formatMessage({ id: 'marketingAbility.manecuxiao'})}`,
6: "赠送促销", 6: `${intl.formatMessage({ id: 'marketingAbility.zengsongcuxiao'})}`,
7: "多件促销", 7: `${intl.formatMessage({ id: 'marketingAbility.duojiancuxiao'})}`,
8: "组合促销", 8: `${intl.formatMessage({ id: 'marketingAbility.zuhecuxiao'})}`,
9: "拼团", 9: `${intl.formatMessage({ id: 'marketingAbility.pintuan'})}`,
10: "抽奖", 10: `${intl.formatMessage({ id: 'marketingAbility.choujiang'})}`,
11: "砍价", 11: `${intl.formatMessage({ id: 'marketingAbility.kanjia'})}`,
12: "秒杀", 12: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
13: "换购", 13: `${intl.formatMessage({ id: 'marketingAbility.huangou'})}`,
14: "预售", 14: `${intl.formatMessage({ id: 'marketingAbility.yushou'})}`,
15: "套餐", 15: `${intl.formatMessage({ id: 'marketingAbility.taocan'})}`,
16: "试用", 16: `${intl.formatMessage({ id: 'marketingAbility.shiyong'})}`,
} }
import { getIntl} from 'umi'
const intl = getIntl();
export const _data = { export const _data = {
id: 1, id: 1,
activityId: 888, activityId: 888,
activityName: '自建营销活动管理', activityName: `${intl.formatMessage({ id: 'marketingAbility.zijianyingxiaohuodongguanli'})}`,
marketingNo: 'XJBX888888', marketingNo: 'XJBX888888',
externalState: 5, externalState: 5,
externalStateName: '已结束', externalStateName: `${intl.formatMessage({ id: 'marketingAbility.yijieshu'})}`,
interiorState: 5, interiorState: 5,
interiorStateName: '已结束', interiorStateName: `${intl.formatMessage({ id: 'marketingAbility.yijieshu'})}`,
activityType: 1, activityType: 1,
orderModal: '询价报价下单', orderModal: `${intl.formatMessage({ id: 'marketingAbility.xunjiabaojiaxiadan'})}`,
membersName: '温州龙昌手袋有限公司', membersName: `${intl.formatMessage({ id: 'marketingAbility.wenzhoulongchangshoudaiyouxiangongsi'})}`,
creationTime: 1624603001552, creationTime: 1624603001552,
activityStartTime: 1624603001552, activityStartTime: 1624603001552,
activityEndTime: 1624603001552, activityEndTime: 1624603001552,
externalLogStates: [ externalLogStates: [
{ {
isExecute: 1, isExecute: 1,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
roleName: "平台", roleName: `${intl.formatMessage({ id: 'marketingAbility.pingtai'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "上线营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shangxianyingxiaohuodong'})}`,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
...@@ -43,51 +45,51 @@ export const _data = { ...@@ -43,51 +45,51 @@ export const _data = {
createMemberRoleId: 11, createMemberRoleId: 11,
createTime: 1624600139800, createTime: 1624600139800,
id: 1, id: 1,
operation: "提交营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 2, state: 2,
stateName: "待平台审核", stateName: `${intl.formatMessage({ id: 'marketingAbility.daipingtaishenhe'})}`,
}, },
{ {
auditOpinion: "同意", auditOpinion: `${intl.formatMessage({ id: 'marketingAbility.tongyi'})}`,
createMemberId: 20, createMemberId: 20,
createMemberRoleId: 11, createMemberRoleId: 11,
createTime: 1624600139800, createTime: 1624600139800,
id: 2, id: 2,
operation: "审核营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "平台", roleName: `${intl.formatMessage({ id: 'marketingAbility.pingtai'})}`,
state: 2, state: 2,
stateName: "待上线活动", stateName: `${intl.formatMessage({ id: 'marketingAbility.daishangxianhuodong'})}`,
}, },
], ],
interiorLogStates: [ interiorLogStates: [
{ {
isExecute: 1, isExecute: 1,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "新增营销活动", roleName: `${intl.formatMessage({ id: 'marketingAbility.xinzengyingxiaohuodong'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
roleName: "审核营销活动(一级)", roleName: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong(yiji)'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动(二级)", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong(erji)'})}`,
roleName: "运营总监", roleName: `${intl.formatMessage({ id: 'marketingAbility.yunyingzongjian'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "运营人员", roleName: `${intl.formatMessage({ id: 'marketingAbility.yunyingrenyuan'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
...@@ -98,16 +100,16 @@ export const _data = { ...@@ -98,16 +100,16 @@ export const _data = {
createMemberId: 20, createMemberId: 20,
createRoleId: 11, createRoleId: 11,
createTime: 1624600137942, createTime: 1624600137942,
department: "运营人员", department: `${intl.formatMessage({ id: 'marketingAbility.yunyingrenyuan'})}`,
id: 3968, id: 3968,
memberId: null, memberId: null,
memberRoleId: null, memberRoleId: null,
operation: "新增营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.xinzengyingxiaohuodong'})}`,
position: "运营部", position: `${intl.formatMessage({ id: 'marketingAbility.yunyingbu'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "张三", roleName: `${intl.formatMessage({ id: 'marketingAbility.zhangsan'})}`,
state: 1, state: 1,
stateName: "待审核(一级)", stateName: `${intl.formatMessage({ id: 'marketingAbility.daishenhe(yiji)'})}`,
step: 1, step: 1,
}, },
], ],
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import TableLayout from '../../../components/tableLayout'; import TableLayout from '../../../components/tableLayout';
...@@ -5,50 +6,51 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'; ...@@ -5,50 +6,51 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import StatusTag from '@/components/StatusTag'; import StatusTag from '@/components/StatusTag';
const Search = () => { const Search = () => {
const intl = useIntl();
const columns: ColumnType<any>[] = [{ const columns: ColumnType<any>[] = [{
title: 'ID', title: 'ID',
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '活动名称', title: `${intl.formatMessage({ id: 'marketingAbility.huodongmingcheng'})}`,
dataIndex: 'activityName', dataIndex: 'activityName',
align: 'left', align: 'left',
render: (text) => render: (text) =>
<span style={{ color: '#00B37A' }}>{text}</span> <span style={{ color: '#00B37A' }}>{text}</span>
}, },
{ {
title: '活动类型', title: `${intl.formatMessage({ id: 'marketingAbility.huodongleixing'})}`,
dataIndex: 'activityType', dataIndex: 'activityType',
align: 'left', align: 'left',
}, },
{ {
title: '活动开始时间', title: `${intl.formatMessage({ id: 'marketingAbility.huodongkaishishijian'})}`,
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'left', align: 'left',
}, },
{ {
title: '活动结束时间', title: `${intl.formatMessage({ id: 'marketingAbility.huodongjieshushijian'})}`,
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'left', align: 'left',
}, },
{ {
title: '报名时间', title: `${intl.formatMessage({ id: 'marketingAbility.baomingshijian'})}`,
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'left', align: 'left',
}, },
{ {
title: '参与客户数', title: `${intl.formatMessage({ id: 'marketingAbility.canyukehushu'})}`,
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '已执行订单数', title: `${intl.formatMessage({ id: 'marketingAbility.yizhixingdingdanshu'})}`,
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '外部状态', title: `${intl.formatMessage({ id: 'marketingAbility.waibuzhuangtai'})}`,
dataIndex: 'outerStatus', dataIndex: 'outerStatus',
align: 'left', align: 'left',
render: (text) => ( render: (text) => (
...@@ -56,7 +58,7 @@ const Search = () => { ...@@ -56,7 +58,7 @@ const Search = () => {
) )
}, },
{ {
title: '内部状态', title: `${intl.formatMessage({ id: 'marketingAbility.neibuzhuangtai'})}`,
dataIndex: 'innerStatus', dataIndex: 'innerStatus',
align: 'left', align: 'left',
}] }]
...@@ -64,29 +66,29 @@ const Search = () => { ...@@ -64,29 +66,29 @@ const Search = () => {
{ {
id: '1', id: '1',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
}, },
{ {
id: '2', id: '2',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
}, },
{ {
id: '3', id: '3',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
} }
] ]
/* 多选返回的 */ /* 多选返回的 */
...@@ -119,8 +121,8 @@ const Search = () => { ...@@ -119,8 +121,8 @@ const Search = () => {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: `${intl.formatMessage({ id: 'marketingAbility.sousuo'})}`,
tip: '输入 会员名称 进行搜索', tip: intl.formatMessage({ id: 'marketingAbility.shuruhuiyuanming' }),
}, },
}, },
}, },
...@@ -137,7 +139,7 @@ const Search = () => { ...@@ -137,7 +139,7 @@ const Search = () => {
subject: { subject: {
type: 'string', type: 'string',
'x-component-props': { 'x-component-props': {
placeholder: '考评主题', placeholder: `${intl.formatMessage({ id: 'marketingAbility.kaopingzhuti'})}`,
allowClear: true, allowClear: true,
style: { style: {
width: 160, width: 160,
...@@ -147,7 +149,7 @@ const Search = () => { ...@@ -147,7 +149,7 @@ const Search = () => {
'[appraisalDayStart,appraisalDayEnd]': { '[appraisalDayStart,appraisalDayEnd]': {
type: 'daterange', type: 'daterange',
'x-component-props': { 'x-component-props': {
placeholder: ['考评开始时间', '考评完成时间'], placeholder: [`${intl.formatMessage({ id: 'marketingAbility.kaopingkaishishijian'})}`, `${intl.formatMessage({ id: 'marketingAbility.kaopingwanchengshijian'})}`],
allowClear: true, allowClear: true,
style: { style: {
width: 240, width: 240,
...@@ -159,7 +161,7 @@ const Search = () => { ...@@ -159,7 +161,7 @@ const Search = () => {
default: undefined, default: undefined,
enum: [], enum: [],
'x-component-props': { 'x-component-props': {
placeholder: '内部状态(全部)', placeholder: `${intl.formatMessage({ id: 'marketingAbility.neibuzhuangtai(quanbu)'})}`,
allowClear: true, allowClear: true,
style: { style: {
width: 160, width: 160,
...@@ -173,7 +175,7 @@ const Search = () => { ...@@ -173,7 +175,7 @@ const Search = () => {
span: 1, span: 1,
}, },
'x-component-props': { 'x-component-props': {
children: '查询', children: `${intl.formatMessage({ id: 'marketingAbility.chaxun'})}`,
}, },
}, },
}, },
......
...@@ -2,15 +2,17 @@ import React from 'react'; ...@@ -2,15 +2,17 @@ import React from 'react';
import { Row, Col, Typography } from 'antd'; import { Row, Col, Typography } from 'antd';
import style from './index.less'; import style from './index.less';
import { BellOutlined, CheckCircleOutlined, ClockCircleOutlined, StockOutlined } from '@ant-design/icons'; import { BellOutlined, CheckCircleOutlined, ClockCircleOutlined, StockOutlined } from '@ant-design/icons';
import { useIntl} from 'umi'
const ActivityLayout = () => { const ActivityLayout = () => {
const intl = useIntl();
return ( return (
<Row gutter={[16, 16]}> <Row gutter={[16, 16]}>
<Col xl={{ span: 6 }} span={12}> <Col xl={{ span: 6 }} span={12}>
<div className={style.col}> <div className={style.col}>
<div className={style.col_20}> <div className={style.col_20}>
<Typography.Title level={4}>10</Typography.Title> <Typography.Title level={4}>10</Typography.Title>
<Typography.Text type='secondary'>今日正在执行活动数量 (个)</Typography.Text> <Typography.Text type='secondary'>{intl.formatMessage({ id: 'marketingAbility.jinrizhengzaizhixinghuodong' })}</Typography.Text>
</div> </div>
<div className={style.col_4}> <div className={style.col_4}>
<div className={style.col_icon} style={{ backgroundColor: '#00A98F' }}> <div className={style.col_icon} style={{ backgroundColor: '#00A98F' }}>
...@@ -23,7 +25,7 @@ const ActivityLayout = () => { ...@@ -23,7 +25,7 @@ const ActivityLayout = () => {
<div className={style.col}> <div className={style.col}>
<div className={style.col_20}> <div className={style.col_20}>
<Typography.Title level={4}>100</Typography.Title> <Typography.Title level={4}>100</Typography.Title>
<Typography.Text type='secondary'>今日参与活动总客户数 (人)</Typography.Text> <Typography.Text type='secondary'>{intl.formatMessage({ id: 'marketingAbility.jinricanyuhuodongzongke' })}</Typography.Text>
</div> </div>
<div className={style.col_4}> <div className={style.col_4}>
<div className={style.col_icon} style={{ backgroundColor: '#007BFC' }}> <div className={style.col_icon} style={{ backgroundColor: '#007BFC' }}>
...@@ -36,7 +38,7 @@ const ActivityLayout = () => { ...@@ -36,7 +38,7 @@ const ActivityLayout = () => {
<div className={style.col}> <div className={style.col}>
<div className={style.col_20}> <div className={style.col_20}>
<Typography.Title level={4}>100</Typography.Title> <Typography.Title level={4}>100</Typography.Title>
<Typography.Text type='secondary'>今日活动商品总订单数量 (单)</Typography.Text> <Typography.Text type='secondary'>{intl.formatMessage({ id: 'marketingAbility.jinrihuodongshangpinzongding' })}</Typography.Text>
</div> </div>
<div className={style.col_4}> <div className={style.col_4}>
<div className={style.col_icon} style={{ backgroundColor: '#EB9B00' }}> <div className={style.col_icon} style={{ backgroundColor: '#EB9B00' }}>
...@@ -49,7 +51,7 @@ const ActivityLayout = () => { ...@@ -49,7 +51,7 @@ const ActivityLayout = () => {
<div className={style.col}> <div className={style.col}>
<div className={style.col_20}> <div className={style.col_20}>
<Typography.Title level={4}>10,000.00</Typography.Title> <Typography.Title level={4}>10,000.00</Typography.Title>
<Typography.Text type='secondary'>今日活动商品总购买金额 (元)</Typography.Text> <Typography.Text type='secondary'>{intl.formatMessage({ id: 'marketingAbility.jinrihuodongshangpinzonggou' })}</Typography.Text>
</div> </div>
<div className={style.col_4}> <div className={style.col_4}>
<div className={style.col_icon} style={{ backgroundColor: '#EF3346' }}> <div className={style.col_icon} style={{ backgroundColor: '#EF3346' }}>
......
...@@ -2,11 +2,13 @@ import React from 'react'; ...@@ -2,11 +2,13 @@ import React from 'react';
import { Row, Col, Image } from 'antd'; import { Row, Col, Image } from 'antd';
import style from './index.less'; import style from './index.less';
import CardLayout from '../../../selfManagement/readySubmitExamine/components/card'; import CardLayout from '../../../selfManagement/readySubmitExamine/components/card';
import { useIntl} from 'umi'
const ActivityProductList = () => { const ActivityProductList = () => {
const intl = useIntl();
return ( return (
<CardLayout <CardLayout
title='活动商品列表 (28)' title={intl.formatMessage({ id: 'marketingAbility.huodongshangpinliebiao' })}
id='activityProductList' id='activityProductList'
weight weight
classNames={style.cardLayout} classNames={style.cardLayout}
...@@ -18,7 +20,7 @@ const ActivityProductList = () => { ...@@ -18,7 +20,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
...@@ -29,7 +31,7 @@ const ActivityProductList = () => { ...@@ -29,7 +31,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
...@@ -40,7 +42,7 @@ const ActivityProductList = () => { ...@@ -40,7 +42,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
...@@ -51,7 +53,7 @@ const ActivityProductList = () => { ...@@ -51,7 +53,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
...@@ -62,7 +64,7 @@ const ActivityProductList = () => { ...@@ -62,7 +64,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
...@@ -73,7 +75,7 @@ const ActivityProductList = () => { ...@@ -73,7 +75,7 @@ const ActivityProductList = () => {
<Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' /> <Image width={32} height={32} src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' />
</div> </div>
<div className={style.product_item}> <div className={style.product_item}>
<h5 className={style.product_item_title}>进口头层黄牛皮荔枝纹/红色/XL</h5> <h5 className={style.product_item_title}>{intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupili' })}</h5>
<span className={style.product_item_progress}>50%</span> <span className={style.product_item_progress}>50%</span>
</div> </div>
</div> </div>
......
import { useIntl } from 'umi';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Progress } from 'antd'; import { Progress } from 'antd';
import style from './index.less'; import style from './index.less';
const ActivityTypeLayout = () => { const ActivityTypeLayout = () => {
const [dataSource, setDataSource] = useState([1, 2, 3, 4]) const [dataSource, setDataSource] = useState([1, 2, 3, 4])
const intl = useIntl();
return ( return (
<div className={style.list_box}> <div className={style.list_box}>
<div className={style.list_items} style={{ width: dataSource.length * 320 + 'px' }}> <div className={style.list_items} style={{ width: dataSource.length * 320 + 'px' }}>
{dataSource.map(item => ( {dataSource.map(item => (
<div className={style.list_item_row} key={item}> <div className={style.list_item_row} key={item}>
<span className={style.list_item_tag}>特价促销</span> <span className={style.list_item_tag}>{ intl.formatMessage({ id: 'marketingAbility.tejiacuxiao'}) }</span>
<h5 className={style.list_item_title}>2020年9月特价促销活动</h5> <h5 className={style.list_item_title}>{intl.formatMessage({ id: 'marketingAbility.2020nian9yuetejiacuxiao' })}</h5>
<div className={style.list_item_date}>2020-09-01 10:00:00 ~ 2020-10-01 10:00:00</div> <div className={style.list_item_date}>2020-09-01 10:00:00 ~ 2020-10-01 10:00:00</div>
<Progress percent={80} format={(percent) => percent + '%'} /> <Progress percent={80} format={(percent) => percent + '%'} />
</div> </div>
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Row, Col, Badge, Space, Divider, Typography } from 'antd'; import { Row, Col, Badge, Space, Divider, Typography } from 'antd';
import CardLayout from '../../../selfManagement/readySubmitExamine/components/card'; import CardLayout from '../../../selfManagement/readySubmitExamine/components/card';
...@@ -12,22 +13,23 @@ interface AnalysisLayoutProps { ...@@ -12,22 +13,23 @@ interface AnalysisLayoutProps {
const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
const { title } = props; const { title } = props;
const intl = useIntl();
const data = [ const data = [
{ {
type: "新用户", type: `${intl.formatMessage({ id: 'marketingAbility.xinyonghu'})}`,
value: 27, value: 27,
}, },
{ {
type: "老用户", type: `${intl.formatMessage({ id: 'marketingAbility.laoyonghu'})}`,
value: 25, value: 25,
}, },
{ {
type: "新会员", type: `${intl.formatMessage({ id: 'marketingAbility.xinhuiyuan'})}`,
value: 18, value: 18,
}, },
{ {
type: "老会员", type: `${intl.formatMessage({ id: 'marketingAbility.laohuiyuan'})}`,
value: 15, value: 15,
}, },
]; ];
...@@ -58,7 +60,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { ...@@ -58,7 +60,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
statistic={{ statistic={{
title: { title: {
formatter: (text) => { formatter: (text) => {
return '用户总数' return `${intl.formatMessage({ id: 'marketingAbility.yonghuzongshu'})}`
}, },
offsetY: -10, offsetY: -10,
style: { style: {
...@@ -84,7 +86,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { ...@@ -84,7 +86,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
<Row gutter={[16, 16]} style={{ marginTop: '26px' }}> <Row gutter={[16, 16]} style={{ marginTop: '26px' }}>
<Col span={12}> <Col span={12}>
<Space size={12}> <Space size={12}>
<Badge color='#00A98F' text='新用户' /> <Badge color='#00A98F' text={intl.formatMessage({ id: 'marketingAbility.xinyonghu' })} />
<Divider type="vertical" /> <Divider type="vertical" />
<Typography.Text type='secondary'>20%</Typography.Text> <Typography.Text type='secondary'>20%</Typography.Text>
<Typography.Text>12</Typography.Text> <Typography.Text>12</Typography.Text>
...@@ -92,7 +94,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { ...@@ -92,7 +94,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
</Col> </Col>
<Col span={12}> <Col span={12}>
<Space size={12}> <Space size={12}>
<Badge color='#EB9B00' text='新会员' /> <Badge color='#EB9B00' text={intl.formatMessage({ id: 'marketingAbility.xinhuiyuan' })} />
<Divider type="vertical" /> <Divider type="vertical" />
<Typography.Text type='secondary'>20%</Typography.Text> <Typography.Text type='secondary'>20%</Typography.Text>
<Typography.Text>12</Typography.Text> <Typography.Text>12</Typography.Text>
...@@ -100,7 +102,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { ...@@ -100,7 +102,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
</Col> </Col>
<Col span={12}> <Col span={12}>
<Space size={12}> <Space size={12}>
<Badge color='#007BFC' text='老用户' /> <Badge color='#007BFC' text={intl.formatMessage({ id: 'marketingAbility.laoyonghu' })} />
<Divider type="vertical" /> <Divider type="vertical" />
<Typography.Text type='secondary'>20%</Typography.Text> <Typography.Text type='secondary'>20%</Typography.Text>
<Typography.Text>12</Typography.Text> <Typography.Text>12</Typography.Text>
...@@ -108,7 +110,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => { ...@@ -108,7 +110,7 @@ const AnalysisLayout: React.FC<AnalysisLayoutProps> = (props: any) => {
</Col> </Col>
<Col span={12}> <Col span={12}>
<Space size={12}> <Space size={12}>
<Badge color='#EF3346' text='老会员' /> <Badge color='#EF3346' text={intl.formatMessage({ id: 'marketingAbility.laohuiyuan' })} />
<Divider type="vertical" /> <Divider type="vertical" />
<Typography.Text type='secondary'>20%</Typography.Text> <Typography.Text type='secondary'>20%</Typography.Text>
<Typography.Text>12</Typography.Text> <Typography.Text>12</Typography.Text>
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Radio, Badge, Space } from 'antd'; import { Radio, Badge, Space } from 'antd';
import { Axis, Chart, LineAdvance } from 'bizcharts'; import { Axis, Chart, LineAdvance } from 'bizcharts';
...@@ -15,6 +16,7 @@ interface ChartLineAdvanceProps { ...@@ -15,6 +16,7 @@ interface ChartLineAdvanceProps {
} }
const ChartLineAdvance: React.FC<ChartLineAdvanceProps> = (props: any) => { const ChartLineAdvance: React.FC<ChartLineAdvanceProps> = (props: any) => {
const intl = useIntl();
const { title, type = 'lineAdvance' } = props; const { title, type = 'lineAdvance' } = props;
const scale = { const scale = {
count: { count: {
...@@ -128,14 +130,14 @@ const ChartLineAdvance: React.FC<ChartLineAdvanceProps> = (props: any) => { ...@@ -128,14 +130,14 @@ const ChartLineAdvance: React.FC<ChartLineAdvanceProps> = (props: any) => {
const extraButtonType = <Space> const extraButtonType = <Space>
{type === 'lineInterval' && ( {type === 'lineInterval' && (
<> <>
<Badge color='green' text='购买金额' /> <Badge color='green' text={intl.formatMessage({ id: 'marketingAbility.goumaijine' })} />
<Badge color='blue' text='订单数量' /> <Badge color='blue' text={intl.formatMessage({ id: 'marketingAbility.dingdanshuliang' })} />
</> </>
)} )}
<Radio.Group defaultValue={1} size="small"> <Radio.Group defaultValue={1} size="small">
<Radio.Button value={1}>今日</Radio.Button> <Radio.Button value={1}>{ intl.formatMessage({ id: 'marketingAbility.jinri'}) }</Radio.Button>
<Radio.Button value={2}>最近7日</Radio.Button> <Radio.Button value={2}>{ intl.formatMessage({ id: 'marketingAbility.zuijin7ri'}) }</Radio.Button>
<Radio.Button value={3}>全部</Radio.Button> <Radio.Button value={3}>{ intl.formatMessage({ id: 'marketingAbility.quanbu'}) }</Radio.Button>
</Radio.Group> </Radio.Group>
</Space> </Space>
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Row, Col } from 'antd'; import { Row, Col } from 'antd';
import style from './index.less'; import style from './index.less';
...@@ -5,16 +6,17 @@ import CardLayout from '../../../selfManagement/readySubmitExamine/components/ca ...@@ -5,16 +6,17 @@ import CardLayout from '../../../selfManagement/readySubmitExamine/components/ca
import { CaretUpOutlined } from '@ant-design/icons'; import { CaretUpOutlined } from '@ant-design/icons';
const DataLayout = () => { const DataLayout = () => {
const intl = useIntl();
return ( return (
<CardLayout <CardLayout
weight weight
title='当前商品数据' title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinshuju' })}
classNames={style.cardLayout} classNames={style.cardLayout}
> >
<Row gutter={[16, 16]}> <Row gutter={[16, 16]}>
<Col xl={{ span: 6 }} span={12}> <Col xl={{ span: 6 }} span={12}>
<div className={style.dataLayout_wrap}> <div className={style.dataLayout_wrap}>
<h5 className={style.dataLayout_wran}>今日参与客户数 (人)</h5> <h5 className={style.dataLayout_wran}>{intl.formatMessage({ id: 'marketingAbility.jinricanyukehushu' })}</h5>
<div className={style.dataLayout_item}> <div className={style.dataLayout_item}>
<h4 className={style.dataLayout_num}>10</h4> <h4 className={style.dataLayout_num}>10</h4>
<div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div> <div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div>
...@@ -23,7 +25,7 @@ const DataLayout = () => { ...@@ -23,7 +25,7 @@ const DataLayout = () => {
</Col> </Col>
<Col xl={{ span: 6 }} span={12}> <Col xl={{ span: 6 }} span={12}>
<div className={style.dataLayout_wrap}> <div className={style.dataLayout_wrap}>
<h5 className={style.dataLayout_wran}>今日订单数 (单)</h5> <h5 className={style.dataLayout_wran}>{intl.formatMessage({ id: 'marketingAbility.jinridingdanshudan' })}</h5>
<div className={style.dataLayout_item}> <div className={style.dataLayout_item}>
<h4 className={style.dataLayout_num}>10</h4> <h4 className={style.dataLayout_num}>10</h4>
<div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div> <div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div>
...@@ -32,7 +34,7 @@ const DataLayout = () => { ...@@ -32,7 +34,7 @@ const DataLayout = () => {
</Col> </Col>
<Col xl={{ span: 6 }} span={12}> <Col xl={{ span: 6 }} span={12}>
<div className={style.dataLayout_wrap}> <div className={style.dataLayout_wrap}>
<h5 className={style.dataLayout_wran}>今日购买数量 (件)</h5> <h5 className={style.dataLayout_wran}>{intl.formatMessage({ id: 'marketingAbility.jinrigoumaishuliang' })}</h5>
<div className={style.dataLayout_item}> <div className={style.dataLayout_item}>
<h4 className={style.dataLayout_num}>200</h4> <h4 className={style.dataLayout_num}>200</h4>
<div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div> <div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div>
...@@ -41,7 +43,7 @@ const DataLayout = () => { ...@@ -41,7 +43,7 @@ const DataLayout = () => {
</Col> </Col>
<Col xl={{ span: 6 }} span={12}> <Col xl={{ span: 6 }} span={12}>
<div className={style.dataLayout_wrap}> <div className={style.dataLayout_wrap}>
<h5 className={style.dataLayout_wran}>今日购买金额 (元)</h5> <h5 className={style.dataLayout_wran}>{intl.formatMessage({ id: 'marketingAbility.jinrigoumaijine' })}</h5>
<div className={style.dataLayout_item}> <div className={style.dataLayout_item}>
<h4 className={style.dataLayout_num}>1,000.00</h4> <h4 className={style.dataLayout_num}>1,000.00</h4>
<div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div> <div className={style.dataLayout_value}><CaretUpOutlined className={style.info_icon_style} />25%</div>
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Typography, Image } from 'antd'; import { Typography, Image } from 'antd';
import style from './index.less'; import style from './index.less';
...@@ -11,22 +12,23 @@ interface ProductListLayoutProps { ...@@ -11,22 +12,23 @@ interface ProductListLayoutProps {
} }
const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => { const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => {
const intl = useIntl();
const { title, dataSource } = props; const { title, dataSource } = props;
const data = [ const data = [
{ sort: 1, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 1, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 2, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 2, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 3, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 3, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 4, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 4, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 5, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 5, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 6, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 6, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 7, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 7, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 8, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 8, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 9, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 9, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
{ sort: 10, name: '进口头层黄牛皮荔枝纹/红色/XL', tag: '满量促销', img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' }, { sort: 10, name: intl.formatMessage({ id: 'marketingAbility.jinkoutoucenghuangniupi' }), tag: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`, img: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', number: '300', percentum: '25' },
] ]
return ( return (
<div className={style.card}> <div className={style.card}>
<div className={style.card_title}>今日活动商品购买排名</div> <div className={style.card_title}>{ intl.formatMessage({ id: 'marketingAbility.jinrihuodongshangpingoumaipaiming'}) }</div>
<div className={style.card_list}> <div className={style.card_list}>
{data.map(item => ( {data.map(item => (
<div className={style.card_list_item} key={item.sort}> <div className={style.card_list_item} key={item.sort}>
...@@ -39,14 +41,14 @@ const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => { ...@@ -39,14 +41,14 @@ const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => {
<div className={style.card_list_item_info}> <div className={style.card_list_item_info}>
<Typography.Paragraph ellipsis={{ rows: 1, expandable: false }}>{item.name}</Typography.Paragraph> <Typography.Paragraph ellipsis={{ rows: 1, expandable: false }}>{item.name}</Typography.Paragraph>
<div> <div>
<Typography.Text type="secondary">{item.number}件,相比昨日</Typography.Text> <Typography.Text type="secondary">{item.number}{intl.formatMessage({ id: 'marketingAbility.jianxiangbizuori' })}</Typography.Text>
<Typography.Text type="danger"><CaretUpOutlined className={style.info_icon_style} />{item.percentum}%</Typography.Text> <Typography.Text type="danger"><CaretUpOutlined className={style.info_icon_style} />{item.percentum}%</Typography.Text>
</div> </div>
</div> </div>
<div className={style.card_list_item_tag}>{item.tag}</div> <div className={style.card_list_item_tag}>{item.tag}</div>
</div> </div>
))} ))}
<Typography.Text className={style.card_list_wran} type='secondary'>只展示前 10 名数据</Typography.Text> <Typography.Text className={style.card_list_wran} type='secondary'>{intl.formatMessage({ id: 'marketingAbility.zhizhanshiqian10ming' })}</Typography.Text>
</div> </div>
</div> </div>
) )
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Row, Col, Space, Avatar, Typography } from 'antd'; import { Row, Col, Space, Avatar, Typography } from 'antd';
import CardLayout from '../../../selfManagement/readySubmitExamine/components/card'; import CardLayout from '../../../selfManagement/readySubmitExamine/components/card';
import style from './index.less'; import style from './index.less';
const SourceLayout = () => { const SourceLayout = () => {
const intl = useIntl();
return ( return (
<CardLayout <CardLayout
title='当前商品用户来源分析' title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinyonghulaiyuanfenxi' })}
weight weight
classNames={style.cardLayout} classNames={style.cardLayout}
> >
...@@ -18,11 +20,11 @@ const SourceLayout = () => { ...@@ -18,11 +20,11 @@ const SourceLayout = () => {
<Avatar shape="square" size={32}>Logo</Avatar> <Avatar shape="square" size={32}>Logo</Avatar>
</div> </div>
<div className={style.sourceLayout_content}> <div className={style.sourceLayout_content}>
<div className={style.sourceLayout_content_title}>WEB 企业商城</div> <div className={style.sourceLayout_content_title}>{intl.formatMessage({ id: 'marketingAbility.WEBqiyeshangcheng' })}</div>
<div className={style.sourceLayout_content_data}> <div className={style.sourceLayout_content_data}>
<Space> <Space>
<Typography.Text type='success'>15%</Typography.Text> <Typography.Text type='success'>15%</Typography.Text>
<Typography.Text type='secondary'>456</Typography.Text> <Typography.Text type='secondary'>456{intl.formatMessage({ id: 'marketingAbility.ren' })}</Typography.Text>
</Space> </Space>
</div> </div>
</div> </div>
...@@ -36,7 +38,7 @@ const SourceLayout = () => { ...@@ -36,7 +38,7 @@ const SourceLayout = () => {
<Avatar shape="square" size={32}>Logo</Avatar> <Avatar shape="square" size={32}>Logo</Avatar>
</div> </div>
<div className={style.sourceLayout_content}> <div className={style.sourceLayout_content}>
<div className={style.sourceLayout_content_title}>WEB 企业商城</div> <div className={style.sourceLayout_content_title}>{intl.formatMessage({ id: 'marketingAbility.WEBqiyeshangcheng' })}</div>
<div className={style.sourceLayout_content_data}> <div className={style.sourceLayout_content_data}>
<Space> <Space>
<Typography.Text type='success'>15%</Typography.Text> <Typography.Text type='success'>15%</Typography.Text>
...@@ -54,11 +56,11 @@ const SourceLayout = () => { ...@@ -54,11 +56,11 @@ const SourceLayout = () => {
<Avatar shape="square" size={32}>Logo</Avatar> <Avatar shape="square" size={32}>Logo</Avatar>
</div> </div>
<div className={style.sourceLayout_content}> <div className={style.sourceLayout_content}>
<div className={style.sourceLayout_content_title}>WEB 企业商城</div> <div className={style.sourceLayout_content_title}>{intl.formatMessage({ id: 'marketingAbility.WEBqiyeshangcheng' })}</div>
<div className={style.sourceLayout_content_data}> <div className={style.sourceLayout_content_data}>
<Space> <Space>
<Typography.Text type='success'>15%</Typography.Text> <Typography.Text type='success'>15%</Typography.Text>
<Typography.Text type='secondary'>456</Typography.Text> <Typography.Text type='secondary'>456{intl.formatMessage({ id: 'marketingAbility.ren' })}</Typography.Text>
</Space> </Space>
</div> </div>
</div> </div>
...@@ -72,11 +74,11 @@ const SourceLayout = () => { ...@@ -72,11 +74,11 @@ const SourceLayout = () => {
<Avatar shape="square" size={32}>Logo</Avatar> <Avatar shape="square" size={32}>Logo</Avatar>
</div> </div>
<div className={style.sourceLayout_content}> <div className={style.sourceLayout_content}>
<div className={style.sourceLayout_content_title}>WEB 企业商城</div> <div className={style.sourceLayout_content_title}>{intl.formatMessage({ id: 'marketingAbility.WEBqiyeshangcheng' })}</div>
<div className={style.sourceLayout_content_data}> <div className={style.sourceLayout_content_data}>
<Space> <Space>
<Typography.Text type='success'>15%</Typography.Text> <Typography.Text type='success'>15%</Typography.Text>
<Typography.Text type='secondary'>456</Typography.Text> <Typography.Text type='secondary'>456{intl.formatMessage({ id: 'marketingAbility.ren' })}</Typography.Text>
</Space> </Space>
</div> </div>
</div> </div>
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import { Row, Col, Card } from 'antd'; import { Row, Col, Card } from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
...@@ -11,6 +12,7 @@ import SourceLayout from './components/sourceLayout'; ...@@ -11,6 +12,7 @@ import SourceLayout from './components/sourceLayout';
import AnalysisLayout from './components/analysisLayout'; import AnalysisLayout from './components/analysisLayout';
const SelfManagementMonitor = () => { const SelfManagementMonitor = () => {
const intl = useIntl();
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<ActivityLayout /> <ActivityLayout />
...@@ -19,17 +21,17 @@ const SelfManagementMonitor = () => { ...@@ -19,17 +21,17 @@ const SelfManagementMonitor = () => {
<ActivityTypeLayout /> <ActivityTypeLayout />
<ActivityProductList /> <ActivityProductList />
<DataLayout /> <DataLayout />
<ChartLineAdvance title='当前商品客户趋势分析' /> <ChartLineAdvance title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinkehuqushifenxi' })} />
<ChartLineAdvance title='当前商品活动效果趋势分析' type='lineInterval' /> <ChartLineAdvance title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinhuodongxiaoguoqushifenxi' })} type='lineInterval' />
<Row gutter={[16, 16]}> <Row gutter={[16, 16]}>
<Col span={8}> <Col span={8}>
<SourceLayout /> <SourceLayout />
</Col> </Col>
<Col span={8}> <Col span={8}>
<AnalysisLayout title='当前商品用户类型分析' /> <AnalysisLayout title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinyonghuleixingfenxi' })} />
</Col> </Col>
<Col span={8}> <Col span={8}>
<AnalysisLayout title='当前商品会员等级分析' /> <AnalysisLayout title={intl.formatMessage({ id: 'marketingAbility.dangqianshangpinhuiyuandengjifenxi' })} />
</Col> </Col>
</Row> </Row>
</Col> </Col>
......
import { getIntl} from 'umi'
const intl = getIntl();
/** /**
* 活动类型 * 活动类型
*/ */
...@@ -40,20 +42,20 @@ export enum ACTIVITYTYPE { ...@@ -40,20 +42,20 @@ export enum ACTIVITYTYPE {
* 活动类型文字 * 活动类型文字
*/ */
export const ACTIVITYTYPENAME = { export const ACTIVITYTYPENAME = {
1: "特价促销", 1: `${intl.formatMessage({ id: 'marketingAbility.tejiacuxiao'})}`,
2: "直降促销", 2: `${intl.formatMessage({ id: 'marketingAbility.zhijiangcuxiao'})}`,
3: "折扣促销", 3: `${intl.formatMessage({ id: 'marketingAbility.zhekoucuxiao'})}`,
4: "满量促销", 4: `${intl.formatMessage({ id: 'marketingAbility.manliangcuxiao'})}`,
5: "满额促销", 5: `${intl.formatMessage({ id: 'marketingAbility.manecuxiao'})}`,
6: "赠送促销", 6: `${intl.formatMessage({ id: 'marketingAbility.zengsongcuxiao'})}`,
7: "多件促销", 7: `${intl.formatMessage({ id: 'marketingAbility.duojiancuxiao'})}`,
8: "组合促销", 8: `${intl.formatMessage({ id: 'marketingAbility.zuhecuxiao'})}`,
9: "拼团", 9: `${intl.formatMessage({ id: 'marketingAbility.pintuan'})}`,
10: "抽奖", 10: `${intl.formatMessage({ id: 'marketingAbility.choujiang'})}`,
11: "砍价", 11: `${intl.formatMessage({ id: 'marketingAbility.kanjia'})}`,
12: "秒杀", 12: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
13: "换购", 13: `${intl.formatMessage({ id: 'marketingAbility.huangou'})}`,
14: "预售", 14: `${intl.formatMessage({ id: 'marketingAbility.yushou'})}`,
15: "套餐", 15: `${intl.formatMessage({ id: 'marketingAbility.taocan'})}`,
16: "试用", 16: `${intl.formatMessage({ id: 'marketingAbility.shiyong'})}`,
} }
import { getIntl} from 'umi'
const intl = getIntl();
export const _data = { export const _data = {
id: 1, id: 1,
activityId: 888, activityId: 888,
activityName: '自建营销活动管理', activityName: `${intl.formatMessage({ id: 'marketingAbility.zijianyingxiaohuodongguanli'})}`,
marketingNo: 'XJBX888888', marketingNo: 'XJBX888888',
externalState: 5, externalState: 5,
externalStateName: '已结束', externalStateName: `${intl.formatMessage({ id: 'marketingAbility.yijieshu'})}`,
interiorState: 5, interiorState: 5,
interiorStateName: '已结束', interiorStateName: `${intl.formatMessage({ id: 'marketingAbility.yijieshu'})}`,
activityType: 1, activityType: 1,
orderModal: '询价报价下单', orderModal: `${intl.formatMessage({ id: 'marketingAbility.xunjiabaojiaxiadan'})}`,
membersName: '温州龙昌手袋有限公司', membersName: `${intl.formatMessage({ id: 'marketingAbility.wenzhoulongchangshoudaiyouxiangongsi'})}`,
creationTime: 1624603001552, creationTime: 1624603001552,
activityStartTime: 1624603001552, activityStartTime: 1624603001552,
activityEndTime: 1624603001552, activityEndTime: 1624603001552,
externalLogStates: [ externalLogStates: [
{ {
isExecute: 1, isExecute: 1,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
roleName: "平台", roleName: `${intl.formatMessage({ id: 'marketingAbility.pingtai'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "上线营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shangxianyingxiaohuodong'})}`,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
...@@ -43,51 +45,51 @@ export const _data = { ...@@ -43,51 +45,51 @@ export const _data = {
createMemberRoleId: 11, createMemberRoleId: 11,
createTime: 1624600139800, createTime: 1624600139800,
id: 1, id: 1,
operation: "提交营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "供应商", roleName: `${intl.formatMessage({ id: 'marketingAbility.gongyingshang'})}`,
state: 2, state: 2,
stateName: "待平台审核", stateName: `${intl.formatMessage({ id: 'marketingAbility.daipingtaishenhe'})}`,
}, },
{ {
auditOpinion: "同意", auditOpinion: `${intl.formatMessage({ id: 'marketingAbility.tongyi'})}`,
createMemberId: 20, createMemberId: 20,
createMemberRoleId: 11, createMemberRoleId: 11,
createTime: 1624600139800, createTime: 1624600139800,
id: 2, id: 2,
operation: "审核营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "平台", roleName: `${intl.formatMessage({ id: 'marketingAbility.pingtai'})}`,
state: 2, state: 2,
stateName: "待上线活动", stateName: `${intl.formatMessage({ id: 'marketingAbility.daishangxianhuodong'})}`,
}, },
], ],
interiorLogStates: [ interiorLogStates: [
{ {
isExecute: 1, isExecute: 1,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "新增营销活动", roleName: `${intl.formatMessage({ id: 'marketingAbility.xinzengyingxiaohuodong'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong'})}`,
roleName: "审核营销活动(一级)", roleName: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong(yiji)'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "审核营销活动(二级)", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.shenheyingxiaohuodong(erji)'})}`,
roleName: "运营总监", roleName: `${intl.formatMessage({ id: 'marketingAbility.yunyingzongjian'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
{ {
isExecute: 0, isExecute: 0,
operationalProcess: "提交营销活动", operationalProcess: `${intl.formatMessage({ id: 'marketingAbility.tijiaoyingxiaohuodong'})}`,
roleName: "运营人员", roleName: `${intl.formatMessage({ id: 'marketingAbility.yunyingrenyuan'})}`,
state: 1, state: 1,
stateName: null, stateName: null,
}, },
...@@ -98,16 +100,16 @@ export const _data = { ...@@ -98,16 +100,16 @@ export const _data = {
createMemberId: 20, createMemberId: 20,
createRoleId: 11, createRoleId: 11,
createTime: 1624600137942, createTime: 1624600137942,
department: "运营人员", department: `${intl.formatMessage({ id: 'marketingAbility.yunyingrenyuan'})}`,
id: 3968, id: 3968,
memberId: null, memberId: null,
memberRoleId: null, memberRoleId: null,
operation: "新增营销活动", operation: `${intl.formatMessage({ id: 'marketingAbility.xinzengyingxiaohuodong'})}`,
position: "运营部", position: `${intl.formatMessage({ id: 'marketingAbility.yunyingbu'})}`,
purchaseInquiryId: 956, purchaseInquiryId: 956,
roleName: "张三", roleName: `${intl.formatMessage({ id: 'marketingAbility.zhangsan'})}`,
state: 1, state: 1,
stateName: "待审核(一级)", stateName: `${intl.formatMessage({ id: 'marketingAbility.daishenhe(yiji)'})}`,
step: 1, step: 1,
}, },
], ],
......
import { useIntl } from 'umi';
import React from 'react'; import React from 'react';
import TableLayout from '../../../components/tableLayout'; import TableLayout from '../../../components/tableLayout';
...@@ -5,50 +6,51 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'; ...@@ -5,50 +6,51 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import StatusTag from '@/components/StatusTag'; import StatusTag from '@/components/StatusTag';
const Search = () => { const Search = () => {
const intl = useIntl();
const columns: ColumnType<any>[] = [{ const columns: ColumnType<any>[] = [{
title: 'ID', title: 'ID',
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '活动名称', title: `${intl.formatMessage({ id: 'marketingAbility.huodongmingcheng'})}`,
dataIndex: 'activityName', dataIndex: 'activityName',
align: 'left', align: 'left',
render: (text) => render: (text) =>
<span style={{ color: '#00B37A' }}>{text}</span> <span style={{ color: '#00B37A' }}>{text}</span>
}, },
{ {
title: '活动类型', title: `${intl.formatMessage({ id: 'marketingAbility.huodongleixing'})}`,
dataIndex: 'activityType', dataIndex: 'activityType',
align: 'left', align: 'left',
}, },
{ {
title: '活动开始时间', title: `${intl.formatMessage({ id: 'marketingAbility.huodongkaishishijian'})}`,
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'left', align: 'left',
}, },
{ {
title: '活动结束时间', title: `${intl.formatMessage({ id: 'marketingAbility.huodongjieshushijian'})}`,
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'left', align: 'left',
}, },
{ {
title: '报名时间', title: `${intl.formatMessage({ id: 'marketingAbility.baomingshijian'})}`,
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'left', align: 'left',
}, },
{ {
title: '参与客户数', title: `${intl.formatMessage({ id: 'marketingAbility.canyukehushu'})}`,
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '已执行订单数', title: `${intl.formatMessage({ id: 'marketingAbility.yizhixingdingdanshu'})}`,
dataIndex: 'id', dataIndex: 'id',
align: 'left', align: 'left',
}, },
{ {
title: '外部状态', title: `${intl.formatMessage({ id: 'marketingAbility.waibuzhuangtai'})}`,
dataIndex: 'outerStatus', dataIndex: 'outerStatus',
align: 'left', align: 'left',
render: (text) => ( render: (text) => (
...@@ -56,7 +58,7 @@ const Search = () => { ...@@ -56,7 +58,7 @@ const Search = () => {
) )
}, },
{ {
title: '内部状态', title: `${intl.formatMessage({ id: 'marketingAbility.neibuzhuangtai'})}`,
dataIndex: 'innerStatus', dataIndex: 'innerStatus',
align: 'left', align: 'left',
}] }]
...@@ -64,29 +66,29 @@ const Search = () => { ...@@ -64,29 +66,29 @@ const Search = () => {
{ {
id: '1', id: '1',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
}, },
{ {
id: '2', id: '2',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
}, },
{ {
id: '3', id: '3',
activityName: 'tony', activityName: 'tony',
activityType: '秒杀', activityType: `${intl.formatMessage({ id: 'marketingAbility.miaosha'})}`,
startTime: '2020-05-12 08:08', startTime: '2020-05-12 08:08',
endTime: '还剩 59 秒', endTime: intl.formatMessage({ id: 'marketingAbility.haisheng59miao' }),
outerStatus: "待提交报平台审核", outerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaobaopingtaishenhe'})}`,
innerStatus: '待提交审核', innerStatus: `${intl.formatMessage({ id: 'marketingAbility.daitijiaoshenhe'})}`,
} }
] ]
/* 多选返回的 */ /* 多选返回的 */
...@@ -119,8 +121,8 @@ const Search = () => { ...@@ -119,8 +121,8 @@ const Search = () => {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: `${intl.formatMessage({ id: 'marketingAbility.sousuo'})}`,
tip: '输入 会员名称 进行搜索', tip: intl.formatMessage({ id: 'marketingAbility.shuruhuiyuanming' }),
}, },
}, },
}, },
...@@ -137,7 +139,7 @@ const Search = () => { ...@@ -137,7 +139,7 @@ const Search = () => {
subject: { subject: {
type: 'string', type: 'string',
'x-component-props': { 'x-component-props': {
placeholder: '考评主题', placeholder: `${intl.formatMessage({ id: 'marketingAbility.kaopingzhuti'})}`,
allowClear: true, allowClear: true,
style: { style: {
width: 160, width: 160,
...@@ -147,7 +149,7 @@ const Search = () => { ...@@ -147,7 +149,7 @@ const Search = () => {
'[appraisalDayStart,appraisalDayEnd]': { '[appraisalDayStart,appraisalDayEnd]': {
type: 'daterange', type: 'daterange',
'x-component-props': { 'x-component-props': {
placeholder: ['考评开始时间', '考评完成时间'], placeholder: [`${intl.formatMessage({ id: 'marketingAbility.kaopingkaishishijian'})}`, `${intl.formatMessage({ id: 'marketingAbility.kaopingwanchengshijian'})}`],
allowClear: true, allowClear: true,
style: { style: {
width: 240, width: 240,
...@@ -159,7 +161,7 @@ const Search = () => { ...@@ -159,7 +161,7 @@ const Search = () => {
default: undefined, default: undefined,
enum: [], enum: [],
'x-component-props': { 'x-component-props': {
placeholder: '内部状态(全部)', placeholder: `${intl.formatMessage({ id: 'marketingAbility.neibuzhuangtai(quanbu)'})}`,
allowClear: true, allowClear: true,
style: { style: {
width: 160, width: 160,
...@@ -173,7 +175,7 @@ const Search = () => { ...@@ -173,7 +175,7 @@ const Search = () => {
span: 1, span: 1,
}, },
'x-component-props': { 'x-component-props': {
children: '查询', children: `${intl.formatMessage({ id: 'marketingAbility.chaxun'})}`,
}, },
}, },
}, },
......
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