Commit 5ea0ab2e authored by 前端-钟卫鹏's avatar 前端-钟卫鹏
parents 5b6e6d9f 2d0f3253
...@@ -142,7 +142,10 @@ const EvaluationList = props => { ...@@ -142,7 +142,10 @@ const EvaluationList = props => {
</div> </div>
<div className="goodInfo-right"> <div className="goodInfo-right">
<div className="goodInfo-title">{item.good.productName}</div> <div className="goodInfo-title">{item.good.productName}</div>
<div className="goodInfo-desc">{item.good.purchaseCount || ''}</div> <div className="goodInfo-desc">
X {item.good.purchaseCount || ''}
{item.good.unit || ''}
</div>
<div className="goodInfo-price">{`¥ ${item.good.price}`}</div> <div className="goodInfo-price">{`¥ ${item.good.price}`}</div>
</div> </div>
</div> </div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-09-23 11:02:03 * @Date: 2020-09-23 11:02:03
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-26 09:52:13 * @LastEditTime: 2020-12-04 11:21:50
* @Description: * @Description:
*/ */
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
...@@ -51,7 +51,7 @@ const CommentManageDetailed: React.FC = () => { ...@@ -51,7 +51,7 @@ const CommentManageDetailed: React.FC = () => {
} }
return { return {
created: data.dealTime, created: data.dealTime,
orderNo: data.remark, orderNo: data.orderNo,
}; };
}; };
...@@ -136,7 +136,7 @@ const CommentManageDetailed: React.FC = () => { ...@@ -136,7 +136,7 @@ const CommentManageDetailed: React.FC = () => {
}} }}
editable={false} editable={false}
expressionScope={{ expressionScope={{
UploadTip, UploadTip: null,
beforeUpload, beforeUpload,
}} }}
onSubmit={() => { }} onSubmit={() => { }}
......
...@@ -215,7 +215,7 @@ const CommentManage: React.FC = () => { ...@@ -215,7 +215,7 @@ const CommentManage: React.FC = () => {
useStateFilterSearchLinkageEffect( useStateFilterSearchLinkageEffect(
$, $,
actions, actions,
'keyword', 'product',
FORM_FILTER_PATH, FORM_FILTER_PATH,
); );
useAsyncInitSelect( useAsyncInitSelect(
......
...@@ -22,12 +22,12 @@ export const listSearchSchema: ISchema = { ...@@ -22,12 +22,12 @@ export const listSearchSchema: ISchema = {
children: '{{controllerBtns}}', children: '{{controllerBtns}}',
}, },
}, },
keyword: { product: {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: '搜索',
tip: '输入 订单号、交易商品 进行搜索', tip: '输入 交易商品 进行搜索',
}, },
}, },
}, },
......
...@@ -142,7 +142,10 @@ const EvaluationList = props => { ...@@ -142,7 +142,10 @@ const EvaluationList = props => {
</div> </div>
<div className="goodInfo-right"> <div className="goodInfo-right">
<div className="goodInfo-title">{item.good.productName}</div> <div className="goodInfo-title">{item.good.productName}</div>
<div className="goodInfo-desc">X {item.good.purchaseCount || ''}</div> <div className="goodInfo-desc">
X {item.good.purchaseCount || ''}
{item.good.unit || ''}
</div>
<div className="goodInfo-price">{`¥ ${item.good.price}`}</div> <div className="goodInfo-price">{`¥ ${item.good.price}`}</div>
</div> </div>
</div> </div>
......
...@@ -155,17 +155,16 @@ const CommentDetailed: React.FC = () => { ...@@ -155,17 +155,16 @@ const CommentDetailed: React.FC = () => {
const { data, totalCount } = res.data; const { data, totalCount } = res.data;
resolve({ resolve({
data: data.map(item => { data: data.map(item => {
const product = isJSONStr(item.product) || {};
return { return {
id: item.id, id: item.id,
star: item.star, star: item.star,
comment: item.comment, comment: item.comment,
productName: product.productName || '', productName: item.product || '',
price: product.price, price: item.price,
quantity: product.purchaseCount, quantity: item.purchaseCount,
created: item.createTime, created: item.createTime,
target: item.byMemberName, target: item.byMemberName,
orderId: product.orderId, orderId: item.orderId,
}; };
}), }),
totalCount, totalCount,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-10-20 11:43:12 * @Date: 2020-10-20 11:43:12
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-30 14:11:06 * @LastEditTime: 2020-12-04 14:35:12
* @Description: * @Description:
*/ */
import { normalizeFiledata, FileData, isJSONStr } from '@/utils'; import { normalizeFiledata, FileData, isJSONStr } from '@/utils';
...@@ -27,13 +27,13 @@ export function normalizeUnevaluatedList(arr: any): Unevaluated[] { ...@@ -27,13 +27,13 @@ export function normalizeUnevaluatedList(arr: any): Unevaluated[] {
return ret; return ret;
} }
arr.forEach(item => { arr.forEach(item => {
const product = isJSONStr(item.product) || {};
const atom = { const atom = {
good: { good: {
pic: product.pic, pic: item.productImgUrl,
productName: product.productName, productName: item.product,
price: item.price, price: item.price,
purchaseCount: item.dealCount, // 采购数量 purchaseCount: item.purchaseCount, // 采购数量
unit: item.unit,
}, },
star: item.star, // 评分星星 star: item.star, // 评分星星
comment: item.comment, // 评价 comment: item.comment, // 评价
......
...@@ -4,16 +4,12 @@ ...@@ -4,16 +4,12 @@
color: #909399; color: #909399;
} }
.dataRiskAction{ .item {
display: flex; display: flex;
> div{ background: #FAFBFC;
width: 240px; align-items: center;
height: 48px;
background: #FAFBFC; .icon {
line-height: 48px; margin: 8px 16px;
margin-right: 24px;
> img{
margin: 8px 16px;
}
} }
} }
\ No newline at end of file
...@@ -12,49 +12,61 @@ import dataRiskIcon8 from '@/asserts/home-icon-8.png' ...@@ -12,49 +12,61 @@ import dataRiskIcon8 from '@/asserts/home-icon-8.png'
const DataCenter: React.FC = () => { const DataCenter: React.FC = () => {
const data = [
{
title: '网站运营数据',
icon: dataRiskIcon3
},
{
title: 'APP运营数据',
icon: dataRiskIcon4
},
{
title: '用户分析',
icon: dataRiskIcon5
},
{
title: '商品分析',
icon: dataRiskIcon6
},
{
title: '交易分析',
icon: dataRiskIcon7
},
{
title: '售后分析',
icon: dataRiskIcon8
}
]
return ( return (
<Row gutter={[24, 12]}> <Card
<Col span={24}> headStyle={{borderBottom:'none'}}
<Card title={
headStyle={{borderBottom:'none'}} <>
title={ <p>数据中心</p>
<> <p className={styles.dataRiskTip}>实时展示会员数据、交易数据等综合指标的动态趋势,满足数据化运营的需要</p>
<p>数据中心</p> </>
<p className={styles.dataRiskTip}>实时展示会员数据、交易数据等综合指标的动态趋势,满足数据化运营的需要</p> }
</> bordered={false}
} extra={<a href="#">进入数据中心</a>}
bordered={false} >
extra={<a href="#">进入数据中心</a>} <Row gutter={[24,24]}>
> {
<div className={styles.dataRiskAction}> data.map((item) => {
<div> return (
<img src={dataRiskIcon3} alt=""/> <Col xxl={4} xl={6} lg={6} md={8} sm={12} xs={24} key={item.title} >
<span>网站运营数据</span> <div className={styles.item}>
</div> <img src={item.icon} className={styles.icon} alt=""/>
<div> <span>{item.title}</span>
<img src={dataRiskIcon4} alt=""/> </div>
<span>APP运营数据</span>
</div> </Col>
<div> )
<img src={dataRiskIcon5} alt=""/> })
<span>用户分析</span> }
</div> </Row>
<div>
<img src={dataRiskIcon6} alt=""/> </Card>
<span>商品分析</span>
</div>
<div>
<img src={dataRiskIcon7} alt=""/>
<span>交易分析</span>
</div>
<div>
<img src={dataRiskIcon8} alt=""/>
<span>售后分析</span>
</div>
</div>
</Card>
</Col>
</Row>
) )
} }
export default DataCenter export default DataCenter
\ No newline at end of file
...@@ -16,11 +16,11 @@ export enum TimeEnum { ...@@ -16,11 +16,11 @@ export enum TimeEnum {
} }
interface Iprops { interface Iprops {
memberData: ImemberData memberData: ImemberData
} }
const MemberStatistics: React.FC<Iprops> = (props) => { const MemberStatistics: React.FC<Iprops> = (props) => {
const { memberData } = props; const { memberData } = props;
const [timeRadio, setTimeRadio] = useState<TimeEnum>(TimeEnum.WEEK); const [timeRadio, setTimeRadio] = useState<TimeEnum>(TimeEnum.WEEK);
// 设置折线图的data // 设置折线图的data
const [currentLineChartData, setCurrentLineChartData] = useState<Ilist[]>([]); const [currentLineChartData, setCurrentLineChartData] = useState<Ilist[]>([]);
...@@ -62,9 +62,9 @@ const MemberStatistics: React.FC<Iprops> = (props) => { ...@@ -62,9 +62,9 @@ const MemberStatistics: React.FC<Iprops> = (props) => {
} }
] ]
return ( return (
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
title="会员统计" title="会员统计"
bordered={false} bordered={false}
extra={ extra={
<Radio.Group value={timeRadio} buttonStyle="solid" size="small" onChange={handleChangeTime}> <Radio.Group value={timeRadio} buttonStyle="solid" size="small" onChange={handleChangeTime}>
...@@ -84,7 +84,7 @@ const MemberStatistics: React.FC<Iprops> = (props) => { ...@@ -84,7 +84,7 @@ const MemberStatistics: React.FC<Iprops> = (props) => {
{ {
data.map((item) => { data.map((item) => {
return ( return (
<Col span={6} key={item.tips}> <Col xxl={6} xl={6} lg={12} md={12} sm={24} xs={24} key={item.tips}>
<div className={styles.lineDesc}> <div className={styles.lineDesc}>
<img src={item.icon} className={styles.icon} alt=""/> <img src={item.icon} className={styles.icon} alt=""/>
<div className={styles.lineDescText}> <div className={styles.lineDescText}>
...@@ -103,4 +103,4 @@ const MemberStatistics: React.FC<Iprops> = (props) => { ...@@ -103,4 +103,4 @@ const MemberStatistics: React.FC<Iprops> = (props) => {
) )
} }
export default MemberStatistics; export default MemberStatistics;
\ No newline at end of file
...@@ -8,13 +8,13 @@ interface IProps { ...@@ -8,13 +8,13 @@ interface IProps {
const LineChart: React.FC<IProps> = (props) => { const LineChart: React.FC<IProps> = (props) => {
return ( return (
<Chart height={360} data={props.data} forceFit> <Chart height={360} autoFit data={props.data}>
<Legend position="top-left" /> <Legend position="top-left" />
{/* <Axis name="dateTime" /> {/* <Axis name="dateTime" />
<Axis name="count"/> */} <Axis name="count"/> */}
<LineAdvance <LineAdvance
position="dateTime*count" position="dateTime*count"
color={'roleName'} color={'roleName'}
point point
area area
shape="smooth" shape="smooth"
...@@ -23,4 +23,4 @@ const LineChart: React.FC<IProps> = (props) => { ...@@ -23,4 +23,4 @@ const LineChart: React.FC<IProps> = (props) => {
); );
} }
export default LineChart; export default LineChart;
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 14px; margin-top: 14px;
.icon { .icon {
display: block; display: block;
width: 48px; width: 48px;
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
font-size: 24px; font-size: 24px;
font-weight: 500; font-weight: 500;
color: #303133; color: #303133;
overflow: hidden;
} }
.lineDescTip{ .lineDescTip{
font-size: 12px; font-size: 12px;
...@@ -25,5 +26,5 @@ ...@@ -25,5 +26,5 @@
color: #909399; color: #909399;
} }
} }
} }
\ No newline at end of file
...@@ -34,30 +34,30 @@ const OrderStatistics: React.FC<Iprops> = (props) => { ...@@ -34,30 +34,30 @@ const OrderStatistics: React.FC<Iprops> = (props) => {
const data = [ const data = [
{ {
icon: todayIcon, icon: todayIcon,
value: orderData.todayCount, value: orderData.todayAmount ,
tips: `今日营业额(${orderData.todayCount}单)` tips: `今日营业额(${orderData.todayCount}单)`
}, },
{ {
icon: weekIcon, icon: weekIcon,
value: orderData.weekCount, value: orderData.weekAmount,
tips: `最近7日营业额(${orderData.weekAmount}单)` tips: `最近7日营业额(${orderData.weekCount}单)`
}, },
{ {
icon: monthIcon, icon: monthIcon,
value: orderData.monthCount, value: orderData.monthAmount,
tips: `最近30日营业额(${orderData.monthAmount}单)` tips: `最近30日营业额(${orderData.monthCount}单)`
}, },
{ {
icon: totalIcon, icon: totalIcon,
value: orderData.totalCount, value: orderData.totalAmount,
tips: `累计营业额(${orderData.totalCount}单)` tips: `累计营业额(${orderData.totalCount}单)`
} }
] ]
return ( return (
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
style={{height: '100%'}} style={{height: '100%'}}
title="会员统计" title="会员统计"
bordered={false} bordered={false}
extra={ extra={
<Radio.Group value={timeRadio} buttonStyle="solid" size="small" onChange={handleChangeTime}> <Radio.Group value={timeRadio} buttonStyle="solid" size="small" onChange={handleChangeTime}>
...@@ -77,7 +77,7 @@ const OrderStatistics: React.FC<Iprops> = (props) => { ...@@ -77,7 +77,7 @@ const OrderStatistics: React.FC<Iprops> = (props) => {
{ {
data.map((item,key) => { data.map((item,key) => {
return ( return (
<Col span={6} key={key}> <Col xxl={6} xl={6} lg={12} md={12} sm={24} xs={24} key={key}>
<div className={styles.lineDesc}> <div className={styles.lineDesc}>
<img src={item.icon} className={styles.icon} alt=""/> <img src={item.icon} className={styles.icon} alt=""/>
<div className={styles.lineDescText}> <div className={styles.lineDescText}>
...@@ -96,4 +96,4 @@ const OrderStatistics: React.FC<Iprops> = (props) => { ...@@ -96,4 +96,4 @@ const OrderStatistics: React.FC<Iprops> = (props) => {
) )
} }
export default OrderStatistics export default OrderStatistics
\ No newline at end of file
...@@ -4,16 +4,12 @@ ...@@ -4,16 +4,12 @@
color: #909399; color: #909399;
} }
.dataRiskAction{ .item {
display: flex; display: flex;
> div{ background: #FAFBFC;
width: 240px; align-items: center;
height: 48px;
background: #FAFBFC; .icon {
line-height: 48px; margin: 8px 16px;
margin-right: 24px;
> img{
margin: 8px 16px;
}
} }
} }
\ No newline at end of file
...@@ -10,33 +10,44 @@ import dataRiskIcon2 from '@/asserts/home-icon-2.png' ...@@ -10,33 +10,44 @@ import dataRiskIcon2 from '@/asserts/home-icon-2.png'
interface Iprops {} interface Iprops {}
const RiskCenter: React.FC<Iprops> = () => { const RiskCenter: React.FC<Iprops> = () => {
const data = [
{
title: '预警规则',
icon: dataRiskIcon1
},
{
title: '预警控制台',
icon: dataRiskIcon2
},
{
title: '预警处理',
icon: dataRiskIcon1
},
]
return ( return (
<Row gutter={[24, 12]}> <Card
<Col span={24}> headStyle={{borderBottom:'none'}}
<Card title={<><p>风控中心</p><p className={styles.dataRiskTip}>全面的风控体系,监控交易异常、资金异常、行为异常,并实时预警</p></>}
headStyle={{borderBottom:'none'}} bordered={false}
title={<><p>风控中心</p><p className={styles.dataRiskTip}>全面的风控体系,监控交易异常、资金异常、行为异常,并实时预警</p></>} extra={<a href="#">进入风控中心</a>}
bordered={false} >
extra={<a href="#">进入风控中心</a>} <Row gutter={[24,24]}>
> {
<div className={styles.dataRiskAction}> data.map((item) => {
<div> return (
<img src={dataRiskIcon1} alt=""/> <Col xxl={4} xl={6} lg={6} md={8} sm={12} xs={24} key={item.title} >
<span>预警规则</span> <div className={styles.item}>
</div> <img src={item.icon} className={styles.icon} alt=""/>
<div> <span>{item.title} <Badge count={4} size="small" /></span>
<img src={dataRiskIcon2} alt=""/> </div>
<span>预警控制台<Badge count={4} size="small" /></span>
</div> </Col>
<div> )
<img src={dataRiskIcon1} alt=""/> })
<span>预警处理</span> }
</div> </Row>
</div> </Card>
</Card>
</Col>
</Row>
) )
} }
export default RiskCenter export default RiskCenter
\ No newline at end of file
// 便签样式 // 便签样式
.notePaperBox{ .notePaperBox{
width: 100%; width: 100%;
height: 248px; height: 100%;
background: #6C9CEB; background: #6C9CEB;
border-radius: 3px; border-radius: 3px;
.notePaperContainer{ .notePaperContainer{
...@@ -50,14 +50,14 @@ ...@@ -50,14 +50,14 @@
top: -5px; top: -5px;
} }
} }
.noteBody{ .noteBody{
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
color: #fff; color: #fff;
.value { .value {
font-size: 24px; font-size: 24px;
margin-bottom: 24px; margin-bottom: 24px;
...@@ -97,9 +97,10 @@ ...@@ -97,9 +97,10 @@
margin-bottom: 0; margin-bottom: 0;
} }
.lineDescTip { .lineDescTip {
height: 36px;
font-size: 12px; font-size: 12px;
color: #909399; color: #909399;
margin-bottom: 0; margin-bottom: 0;
} }
} }
} }
\ No newline at end of file
...@@ -43,8 +43,8 @@ const Settlement: React.FC = () => { ...@@ -43,8 +43,8 @@ const Settlement: React.FC = () => {
} }
}, [inViewPort]) }, [inViewPort])
return ( return (
<Row gutter={[24, 12]} style={{marginTop: 9, marginBottom: 0}} ref={ref}> <Row gutter={[24, 24]} style={{marginTop: 9, marginBottom: 0}} ref={ref}>
<Col span={5} style={{paddingBottom:0}}> <Col xxl={5} xl={5} lg={12} md={12} sm={24} xs={24} style={{paddingBottom:0}}>
<div className={styles.notePaperBox}> <div className={styles.notePaperBox}>
<div className={styles.notePaperContainer}> <div className={styles.notePaperContainer}>
<div className={styles.noteHeader}> <div className={styles.noteHeader}>
...@@ -59,7 +59,7 @@ const Settlement: React.FC = () => { ...@@ -59,7 +59,7 @@ const Settlement: React.FC = () => {
</div> </div>
</div> </div>
</Col> </Col>
<Col span={5} style={{paddingBottom:0}}> <Col xxl={5} xl={5}lg={12} md={12} sm={24} xs={24} style={{paddingBottom:0}}>
<div className={cx(styles.notePaperBox, styles.notePaperBoxGreen)}> <div className={cx(styles.notePaperBox, styles.notePaperBoxGreen)}>
<div className={styles.notePaperContainer}> <div className={styles.notePaperContainer}>
<div className={styles.noteHeader}> <div className={styles.noteHeader}>
...@@ -74,7 +74,7 @@ const Settlement: React.FC = () => { ...@@ -74,7 +74,7 @@ const Settlement: React.FC = () => {
</div> </div>
</div> </div>
</Col> </Col>
<Col span={7} style={{paddingBottom:0}}> <Col xxl={7} xl={7} lg={12} md={12} sm={24} xs={24} style={{paddingBottom:0}}>
<Row > <Row >
<Col span={24} style={{padding:0}}> <Col span={24} style={{padding:0}}>
<div className={cx(styles.lineDesc, styles.feeCustomCard)}> <div className={cx(styles.lineDesc, styles.feeCustomCard)}>
...@@ -85,7 +85,7 @@ const Settlement: React.FC = () => { ...@@ -85,7 +85,7 @@ const Settlement: React.FC = () => {
<p className={styles.lineDescTip}>待提现申请</p> <p className={styles.lineDescTip}>待提现申请</p>
</div> </div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> <a>查看&nbsp;<RightOutlined /></a>
</div> </div>
</Col> </Col>
<Col span={24} style={{paddingBottom:0, marginTop: '12px'}}> <Col span={24} style={{paddingBottom:0, marginTop: '12px'}}>
...@@ -97,12 +97,12 @@ const Settlement: React.FC = () => { ...@@ -97,12 +97,12 @@ const Settlement: React.FC = () => {
<p className={styles.lineDescTip}>待支付提现申请</p> <p className={styles.lineDescTip}>待支付提现申请</p>
</div> </div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> <a>查看&nbsp;<RightOutlined /></a>
</div> </div>
</Col> </Col>
</Row> </Row>
</Col> </Col>
<Col span={7} style={{paddingBottom:0}}> <Col xxl={7} xl={7} lg={12} md={12} sm={24} xs={24} style={{paddingBottom:0}}>
<Row> <Row>
<Col span={24} style={{padding:0}}> <Col span={24} style={{padding:0}}>
<div className={cx(styles.lineDesc, styles.feeCustomCard)}> <div className={cx(styles.lineDesc, styles.feeCustomCard)}>
...@@ -134,4 +134,4 @@ const Settlement: React.FC = () => { ...@@ -134,4 +134,4 @@ const Settlement: React.FC = () => {
) )
} }
export default Settlement export default Settlement
\ No newline at end of file
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
flex: 1; flex: 1;
&:first-child { // &:first-child {
margin-right: 50px; // margin-right: 50px;
} // }
.left { .left {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
...@@ -47,6 +47,6 @@ ...@@ -47,6 +47,6 @@
} }
} }
} }
} }
...@@ -14,14 +14,14 @@ const StatisticsColumn = (props) => { ...@@ -14,14 +14,14 @@ const StatisticsColumn = (props) => {
const { loading, data } = props; const { loading, data } = props;
return ( return (
<Row gutter={[24, 12]}> <Row gutter={[24, 12]}>
<Col span={12}> <Col xxl={12} xl={12} lg={12} md={24} sm={24} xs={24}>
<Row> <Row>
<Col span={24}> <Col span={24}>
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
title={"商品统计"} title={"商品统计"}
bordered={false} bordered={false}
> >
{ {
loading loading
? <Skeleton active /> ? <Skeleton active />
...@@ -30,76 +30,84 @@ const StatisticsColumn = (props) => { ...@@ -30,76 +30,84 @@ const StatisticsColumn = (props) => {
<span>全部商品</span> <span>全部商品</span>
<p>{data?.productCount}</p> <p>{data?.productCount}</p>
</div> </div>
<div className={styles.commodityTotalDesc}> <Row gutter={[24, 12]}>
<div className={styles.container}> <Col xxl={12} xl={12} lg={24} md={12} sm={24} xs={24} className={styles.commodityTotalDesc}>
<div className={styles.left}> <div className={styles.container}>
<img src={totalCommdity} alt=""/> <div className={styles.left}>
<div className={styles.lineDescText}> <img src={totalCommdity} alt=""/>
<p className={styles.lineDescTitle}>{data.addProduct?.count}</p> <div className={styles.lineDescText}>
<p className={styles.lineDescTip}>{data.addProduct?.name}</p> <p className={styles.lineDescTitle}>{data.addProduct?.count}</p>
<p className={styles.lineDescTip}>{data.addProduct?.name}</p>
</div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> </Col>
</div> <Col xxl={12} xl={12} lg={24} md={12} sm={24} xs={24} className={styles.commodityTotalDesc} >
<div className={styles.container}> <div className={styles.container}>
<div className={styles.left}> <div className={styles.left}>
<img src={totalIcona3} alt=""/> <img src={totalIcona3} alt=""/>
<div className={styles.lineDescText}> <div className={styles.lineDescText}>
<p className={styles.lineDescTitle}>{data.toBeProductValify?.count}</p> <p className={styles.lineDescTitle}>{data.toBeProductValify?.count}</p>
<p className={styles.lineDescTip}>{data.toBeProductValify?.name}</p> <p className={styles.lineDescTip}>{data.toBeProductValify?.name}</p>
</div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> </Col>
</div> </Row>
</div>
</> </>
} }
</Card> </Card>
</Col> </Col>
</Row> </Row>
</Col> </Col>
<Col span={12}> <Col xxl={12} xl={12} lg={12} md={24} xs={24}>
<Row> <Row>
<Col span={24}> <Col span={24}>
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
title={"全部品牌"} title={"全部品牌"}
bordered={false} bordered={false}
> >
{ {
loading loading
? <Skeleton active /> ? <Skeleton active />
: <> : <>
<div className={styles.commodityTotalTitle}> <div className={styles.commodityTotalTitle}>
<span>全部品牌</span> <span>全部品牌</span>
<p>{data?.brandCount}</p> <p>{data?.brandCount}</p>
</div> </div>
<div className={styles.commodityTotalDesc}> <Row gutter={[24, 12]}>
<div className={styles.container}> <Col xxl={12} xl={12} lg={24} md={12} sm={24} xs={24} className={styles.commodityTotalDesc} >
<div className={styles.left}> <div className={styles.container}>
<img src={totalBrand1} alt=""/> <div className={styles.left}>
<div className={styles.lineDescText}> <img src={totalBrand1} alt=""/>
<p className={styles.lineDescTitle}>{data.addBrand?.count}</p> <div className={styles.lineDescText}>
<p className={styles.lineDescTip}>{data.addBrand?.name}</p> <p className={styles.lineDescTitle}>{data.addBrand?.count}</p>
<p className={styles.lineDescTip}>{data.addBrand?.name}</p>
</div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> </Col>
</div> <Col xxl={12} xl={12} lg={24} md={12} sm={24} xs={24} className={styles.commodityTotalDesc}>
<div className={styles.container}> <div className={styles.container}>
<div className={styles.left}> <div className={styles.left}>
<img src={totalBrand2} alt=""/> <img src={totalBrand2} alt=""/>
<div className={styles.lineDescText}> <div className={styles.lineDescText}>
<p className={styles.lineDescTitle}>{data.toBeBrandValify?.count}</p> <p className={styles.lineDescTitle}>{data.toBeBrandValify?.count}</p>
<p className={styles.lineDescTip}>{data.toBeBrandValify?.name}</p> <p className={styles.lineDescTip}>{data.toBeBrandValify?.name}</p>
</div>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a>
</div> </div>
<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a> </Col>
</div> </Row>
</div>
</> </>
} }
</Card> </Card>
</Col> </Col>
</Row> </Row>
...@@ -108,4 +116,4 @@ const StatisticsColumn = (props) => { ...@@ -108,4 +116,4 @@ const StatisticsColumn = (props) => {
) )
} }
export default StatisticsColumn export default StatisticsColumn
\ No newline at end of file
...@@ -47,7 +47,7 @@ const TodayAdd: React.FC<Iprops> = (props) => { ...@@ -47,7 +47,7 @@ const TodayAdd: React.FC<Iprops> = (props) => {
{ {
list.map((item, key) => { list.map((item, key) => {
return ( return (
<Col span={6} key={key}> <Col xxl={6} xl={6} lg={12} md={12} sm={24} xs={24} key={key}>
<div className={styles.homeCard}> <div className={styles.homeCard}>
<div className={styles.body}> <div className={styles.body}>
<div className={styles.content}> <div className={styles.content}>
...@@ -59,7 +59,7 @@ const TodayAdd: React.FC<Iprops> = (props) => { ...@@ -59,7 +59,7 @@ const TodayAdd: React.FC<Iprops> = (props) => {
</div> </div>
</div> </div>
<div className={styles.footer}> <div className={styles.footer}>
<StatusTag <StatusTag
title={ title={
<> <>
{ {
...@@ -70,7 +70,7 @@ const TodayAdd: React.FC<Iprops> = (props) => { ...@@ -70,7 +70,7 @@ const TodayAdd: React.FC<Iprops> = (props) => {
{item.percent} % {item.percent} %
</> </>
} }
type={item.percent >= 0 ? "success" : "danger"} type={item.percent >= 0 ? "success" : "danger"}
/> />
<span>&nbsp;&nbsp;相比昨日</span> <span>&nbsp;&nbsp;相比昨日</span>
...@@ -84,4 +84,4 @@ const TodayAdd: React.FC<Iprops> = (props) => { ...@@ -84,4 +84,4 @@ const TodayAdd: React.FC<Iprops> = (props) => {
) )
} }
export default TodayAdd export default TodayAdd
\ No newline at end of file
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
} }
.sideAdBox{ .sideAdBox{
height: 100px; height: 100px;
margin: 22px 0px 13px 0; margin: 0px 0px 20px 0;
border-radius: 5px; border-radius: 5px;
background-color: #6C9CEB; background-color: #6C9CEB;
position: relative; position: relative;
...@@ -34,6 +34,29 @@ ...@@ -34,6 +34,29 @@
} }
.members {
padding: 18px 24px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F4F5F7;
// background: #F4F5F7;
.text {
font-weight: 500;
color: #303133;
font-size: 24px;
margin-bottom: 8px;
// padding-bottom: 8px;
}
.desc {
font-size: 12px;
font-weight: 400;
color: #909399;
}
}
// 适配 // 适配
@media screen and (max-width: 1441px) { @media screen and (max-width: 1441px) {
.homeCard{ .homeCard{
...@@ -59,4 +82,15 @@ ...@@ -59,4 +82,15 @@
} }
} }
} }
} }
\ No newline at end of file
@media (min-width: 1600px) {
.lastCard {
margin-top: 12px;
}
}
// @media (max-width: 1599px) {
// .lastCard___z6zQF {
// margin-top: 0px;
// }
// }
...@@ -46,7 +46,7 @@ const Home: React.FC<{}> = () => { ...@@ -46,7 +46,7 @@ const Home: React.FC<{}> = () => {
hasGetData: false, hasGetData: false,
loading: false, loading: false,
}) })
/** /**
* 顶部新增统计 * 顶部新增统计
*/ */
...@@ -150,43 +150,39 @@ const Home: React.FC<{}> = () => { ...@@ -150,43 +150,39 @@ const Home: React.FC<{}> = () => {
{/* 会员统计 */} {/* 会员统计 */}
<Space direction="vertical" style={{width:'100%'}}> <Space direction="vertical" style={{width:'100%'}}>
<Row gutter={[24, 12]}> <Row gutter={[24, 12]}>
<Col span={18}> <Col xxl={18} xl={24} lg={24}>
<MemberStatistics memberData={memberData} /> <MemberStatistics memberData={memberData} />
</Col> </Col>
<Col span={6}> <Col xxl={6} xl={24} lg={24}>
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
title="待处理会员" bodyStyle={{padding: '0px'}}
title="待处理会员"
bordered={false} bordered={false}
> >
<Row> <Row>
<Col span={24}> {
<List processingMemberLoading
itemLayout="horizontal" ? [1,2].map((item) => {
className={styles.sideListBox} return <Skeleton active key={item}></Skeleton>
> })
{ : processingMembers.map((item: any, key: number) => {
processingMemberLoading return (
? [1,2].map((item) => { <Col xxl={24} xl={12} md={12} sm={24} xs={24} key={key}>
return <Skeleton active key={item}></Skeleton> <div className={styles.members}>
}) <div className={styles.numbers}>
: processingMembers.map((item: any, key: number) => { <div className={styles.text}>2</div>
return ( <div className={styles.desc}>
<List.Item <Badge status={PROCESS_STATUS[key]} text={item.name}></Badge>
key={item.name} </div>
actions={[<a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a>]} </div>
> <div><a key="list-loadmore-more">查看&nbsp;<RightOutlined /></a></div>
<List.Item.Meta </div>
title={item.count.toString()} </Col>
description={<><Badge status={PROCESS_STATUS[key]} text={item.name}></Badge></>} )
/> })
</List.Item> }
) <Col span={24} style={{padding: '0 24px'}}>
})
}
</List>
</Col>
<Col span={24}>
<div className={styles.sideAdBox}> <div className={styles.sideAdBox}>
<a href=""><span>会员维护&nbsp;<RightCircleFilled /></span></a> <a href=""><span>会员维护&nbsp;<RightCircleFilled /></span></a>
<img src={sideIcon} alt=""/> <img src={sideIcon} alt=""/>
...@@ -201,8 +197,8 @@ const Home: React.FC<{}> = () => { ...@@ -201,8 +197,8 @@ const Home: React.FC<{}> = () => {
<div id="trade"> <div id="trade">
<Space direction="vertical" style={{width:'100%', height: '100%'}} > <Space direction="vertical" style={{width:'100%', height: '100%'}} >
<Row gutter={[24, 12]} style={{display: 'flex', flexDirection: 'row'}}> <Row gutter={[24, 12]} style={{display: 'flex', flexDirection: 'row'}}>
<Col span={6} style={{display: 'flex', flexDirection: 'column'}}> <Col xxl={6} xl={24} lg={24} md={24} sm={24} xs={24} style={{display: 'flex', flexDirection: 'column'}}>
<Row style={{height: '100%'}}> <Row style={{height: '100%'}} gutter={[24, 12]}>
{ {
tradeStatus.loading tradeStatus.loading
? [1,2].map((item) => { ? [1,2].map((item) => {
...@@ -216,12 +212,13 @@ const Home: React.FC<{}> = () => { ...@@ -216,12 +212,13 @@ const Home: React.FC<{}> = () => {
}) })
: Object.keys(tradeAndSold).map((item, key) => { : Object.keys(tradeAndSold).map((item, key) => {
return ( return (
<Col span={24} style={key == 1 ? { marginTop: '18px', flex: 1} : {}} key={item}> <Col xxl={24} xl={12} lg={12} md={24} sm={24} xs={24} key={item}>
<Card <Card
headStyle={{borderBottom:'none'}} headStyle={{borderBottom:'none'}}
title={item === 'afterSaleList' ? '待处理售后' : '待处理交易'} title={item === 'afterSaleList' ? '待处理售后' : '待处理交易'}
bordered={false} bordered={false}
style={{height: '100%'}} style={{height: '100%'}}
className={key == 1 ? styles.lastCard : ''}
> >
<List <List
itemLayout="horizontal" itemLayout="horizontal"
...@@ -242,7 +239,7 @@ const Home: React.FC<{}> = () => { ...@@ -242,7 +239,7 @@ const Home: React.FC<{}> = () => {
) )
}) })
} }
</List> </List>
</Card> </Card>
</Col> </Col>
...@@ -251,7 +248,7 @@ const Home: React.FC<{}> = () => { ...@@ -251,7 +248,7 @@ const Home: React.FC<{}> = () => {
} }
</Row> </Row>
</Col> </Col>
<Col span={18}> <Col xxl={18} xl={24} lg={24}>
<div id="order"> <div id="order">
<OrderStatistics orderData={orderData}/> <OrderStatistics orderData={orderData}/>
</div> </div>
...@@ -265,12 +262,12 @@ const Home: React.FC<{}> = () => { ...@@ -265,12 +262,12 @@ const Home: React.FC<{}> = () => {
<StatisticsColumn loading={productStatus.loading} data={products} /> <StatisticsColumn loading={productStatus.loading} data={products} />
</Space> </Space>
</div> </div>
{/* 付款提现统计 */} {/* 付款提现统计 */}
<Space direction="vertical" style={{width:'100%'}}> <Space direction="vertical" style={{width:'100%'}}>
<Settlement /> <Settlement />
</Space> </Space>
<Space direction="vertical" style={{width:'100%'}}> <Space direction="vertical" style={{width:'100%'}}>
<DataCenter /> <DataCenter />
</Space> </Space>
...@@ -282,4 +279,4 @@ const Home: React.FC<{}> = () => { ...@@ -282,4 +279,4 @@ const Home: React.FC<{}> = () => {
); );
} }
export default Home export default Home
\ No newline at end of file
...@@ -65,7 +65,9 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => { ...@@ -65,7 +65,9 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
const fetchCategoryList = () => { const fetchCategoryList = () => {
const param: any = { const param: any = {
categoryId: categoryid, categoryId: categoryid,
templateId: templateid templateId: templateid,
current: 1,
pageSize: 100
} }
PublicApi.getTemplatePlatformFindCategoryList(param).then(res => { PublicApi.getTemplatePlatformFindCategoryList(param).then(res => {
...@@ -329,7 +331,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => { ...@@ -329,7 +331,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
name="twoCategoryId" name="twoCategoryId"
className={styles.mar_bot_0} className={styles.mar_bot_0}
> >
<Select placeholder="品类" style={{ width: 180 }} onChange={handleSearch}> <Select placeholder="品类" allowClear style={{ width: 180 }} onChange={handleSearch}>
{ {
categoryResponseList.map((item, index) => <Select.Option key={`select_category_item_${index}`} value={item.categoryId}>{item.categoryName}</Select.Option>) categoryResponseList.map((item, index) => <Select.Option key={`select_category_item_${index}`} value={item.categoryId}>{item.categoryName}</Select.Option>)
} }
...@@ -341,7 +343,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => { ...@@ -341,7 +343,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
name="brandId" name="brandId"
className={styles.mar_bot_0} className={styles.mar_bot_0}
> >
<Select placeholder="品牌" style={{ width: 180 }} onChange={handleSearch}> <Select placeholder="品牌" allowClear style={{ width: 180 }} onChange={handleSearch}>
{ {
noSelectBrands.map((item, index) => (<Select.Option key={`select_brand_item_${index}`} value={item.brandId}>{item.brandName}</Select.Option>)) noSelectBrands.map((item, index) => (<Select.Option key={`select_brand_item_${index}`} value={item.brandId}>{item.brandName}</Select.Option>))
} }
......
...@@ -49,8 +49,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => { ...@@ -49,8 +49,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
}, []) }, [])
const fetchDetail = () => { const fetchDetail = () => {
//@ts-ignore const param: any = {
PublicApi.getTemplatePlatformFindTemplateDetails({ id }).then(res => { id
}
PublicApi.getTemplatePlatformFindTemplateDetails(param).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
setDetailInfo(res.data) setDetailInfo(res.data)
} }
...@@ -85,11 +87,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => { ...@@ -85,11 +87,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
const confirmShelfShop = (shelf: number) => { const confirmShelfShop = (shelf: number) => {
return new Promise((resolve) => { return new Promise((resolve) => {
let param = { const param = {
id, id,
shelf shelf
} }
//@ts-ignore
PublicApi.postTemplatePlatformShelfTemplate(param).then(res => { PublicApi.postTemplatePlatformShelfTemplate(param).then(res => {
fetchDetail() fetchDetail()
resolve() resolve()
...@@ -99,10 +100,9 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => { ...@@ -99,10 +100,9 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
const confirmUseTemplate = () => { const confirmUseTemplate = () => {
return new Promise((resolve) => { return new Promise((resolve) => {
let param = { const param: any = {
id: Number(id), id: Number(id),
} }
//@ts-ignore
PublicApi.postTemplatePlatformUseTemplate(param).then(res => { PublicApi.postTemplatePlatformUseTemplate(param).then(res => {
fetchDetail() fetchDetail()
resolve() resolve()
...@@ -145,7 +145,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => { ...@@ -145,7 +145,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
<div className={styles.template_detail}> <div className={styles.template_detail}>
<div className={styles.template_info_wrap}> <div className={styles.template_info_wrap}>
<div className={styles.template_img_box}> <div className={styles.template_img_box}>
<div className={cx(styles.type_tag)}>PC</div> <div className={cx(styles.type_tag)}>{detailInfo?.environment && Environment_Status[detailInfo?.environment].name}</div>
<img src={detailInfo?.templatePicUrl} /> <img src={detailInfo?.templatePicUrl} />
</div> </div>
<div className={styles.template_info}> <div className={styles.template_info}>
...@@ -219,7 +219,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => { ...@@ -219,7 +219,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
<UseModal <UseModal
title="使用商场模板" title="使用商场模板"
visible={useModalVisible} visible={useModalVisible}
onOk={() => { }} onOk={() => { console.log() }}
type={type} type={type}
onCancel={() => setUseModalVisible(false)} onCancel={() => setUseModalVisible(false)}
/> />
......
...@@ -20,7 +20,6 @@ const getConfigMap = (tokens) => tokens.map(v => ({ ...@@ -20,7 +20,6 @@ const getConfigMap = (tokens) => tokens.map(v => ({
enabled: false, enabled: false,
}, },
outputFilePath: `src/services/${v.name}Api`, outputFilePath: `src/services/${v.name}Api`,
requestFunctionFilePath: 'request.ts',
dataKey: 'data', dataKey: 'data',
projects: [ projects: [
{ {
......
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