Commit 24876d7d authored by GuanHua's avatar GuanHua
parents 007a0e54 64c7300a
...@@ -40,7 +40,25 @@ const payandSettleRoute = { ...@@ -40,7 +40,25 @@ const payandSettleRoute = {
hideInMenu: true, hideInMenu: true,
}, },
], ],
}, },
// 资金账户
{
path:'/memberCenter/payandSettle/capitalAccounts',
name:'capitalAccounts',
routes: [
{
path: '/memberCenter/payandSettle/capitalAccounts/accountLists',
name: 'accountLists',
component: '@/pages/payandSettle/capitalAccounts/accountLists',
},
{
path: '/memberCenter/payandSettle/capitalAccounts/accountLists/accountDetail',
name: 'accountDetail',
component: '@/pages/payandSettle/capitalAccounts/accountLists/accountDetail',
hideInMenu: true,
},
],
},
] ]
} }
export default payandSettleRoute export default payandSettleRoute
\ No newline at end of file
...@@ -241,12 +241,17 @@ export default { ...@@ -241,12 +241,17 @@ export default {
'menu.logisticsAbility.logisticsResult.orderResultDeatil': '物流单详情', 'menu.logisticsAbility.logisticsResult.orderResultDeatil': '物流单详情',
'menu.logisticsAbility.logisticsResult.toOrderComfirmList': '待确认物流单', 'menu.logisticsAbility.logisticsResult.toOrderComfirmList': '待确认物流单',
// 支付
'menu.payandSettle': '支付', 'menu.payandSettle': '支付',
'menu.payandSettle.paySetting': '支付方式管理', 'menu.payandSettle.paySetting': '支付方式管理',
'menu.payandSettle.paySetting.payParamsSetting': '会员支付参数配置', 'menu.payandSettle.paySetting.payParamsSetting': '会员支付参数配置',
'menu.payandSettle.creditApplication': '授信申请', 'menu.payandSettle.creditApplication': '授信申请',
'menu.payandSettle.creditApplication.quotaMenage': '授信额度管理', 'menu.payandSettle.creditApplication.quotaMenage': '授信额度管理',
'menu.payandSettle.creditApplication.quotaMenageDetail': '授信额度管理', 'menu.payandSettle.creditApplication.quotaMenageDetail': '授信额度管理',
'menu.payandSettle.capitalAccounts': '资金账户',
'menu.payandSettle.capitalAccounts.accountLists': '账户管理',
'menu.payandSettle.capitalAccounts.accountDetail': '账户详情',
// 权限管理 // 权限管理
'menu.systemSetting': '系统', 'menu.systemSetting': '系统',
......
import React, { useState, useRef, useEffect, createContext } from 'react' import React, { useState, useRef, useEffect, createContext } from 'react'
import { history } from 'umi'; import { history } from 'umi';
import { Button, Card, Tabs, message } from 'antd' import { Button, Card, Tabs, message, Badge } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { import {
SaveOutlined, SaveOutlined,
...@@ -106,8 +106,6 @@ const AddProducts: React.FC<{}> = (props) => { ...@@ -106,8 +106,6 @@ const AddProducts: React.FC<{}> = (props) => {
} }
}, [selectCategoryId]) }, [selectCategoryId])
// useEffect(() => { // useEffect(() => {
// renderTemplate(currentTemplateName) // renderTemplate(currentTemplateName)
// }, [currentTemplateName]) // }, [currentTemplateName])
...@@ -371,7 +369,49 @@ const AddProducts: React.FC<{}> = (props) => { ...@@ -371,7 +369,49 @@ const AddProducts: React.FC<{}> = (props) => {
onRef={(refs) => setFormRefs([...formRefs, refs])} onRef={(refs) => setFormRefs([...formRefs, refs])}
/> />
</TabPane> </TabPane>
{/* 带校验 Badge */}
{/* <TabPane tab={<Badge count={1} offset={[12, 0]}>基本信息</Badge>} key="1">
<BasicInfoForm
onRef={(refs) => setFormRefs([...formRefs, refs])}
onChangeAttributeList={(_lists: any) => setAttributeList(_lists)} />
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>选择货品</Badge>} key="2">
<SelectGoodsForm />
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>商品属性</Badge>} key="3">
<ProductAttributeForm
onRef={(refs) => setFormRefs([...formRefs, refs])}
attributesData={attributeList}
/>
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>价格设置</Badge>} key="4">
<PriceAttributeForm
onRef={(refs) => setFormRefs([...formRefs, refs])}
/>
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>商品图片</Badge>} key="5">
<ProductImageForm />
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>商品描述</Badge>} key="6">
{
renderTemplate()
}
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>物流信息</Badge>} key="7">
<LogisticsForm
onRef={(refs) => setFormRefs([...formRefs, refs])}
/>
</TabPane>
<TabPane tab={<Badge count={1} offset={[12, 0]}>其他</Badge>} key="8">
<OtherForm
onRef={(refs) => setFormRefs([...formRefs, refs])}
/>
</TabPane> */}
</Tabs> </Tabs>
</Card> </Card>
</PageHeaderWrapper>) </PageHeaderWrapper>)
} }
......
...@@ -6,7 +6,6 @@ import { ...@@ -6,7 +6,6 @@ import {
PlusOutlined, PlusOutlined,
MinusOutlined, MinusOutlined,
} from '@ant-design/icons' } from '@ant-design/icons'
import styles from './index.less'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { import {
GetProductCustomerGetCustomerCategoryTreeResponse, GetProductCustomerGetCustomerCategoryTreeResponse,
...@@ -208,6 +207,7 @@ const BasicInfoForm: React.FC<Iprops> = (props) => { ...@@ -208,6 +207,7 @@ const BasicInfoForm: React.FC<Iprops> = (props) => {
]} ]}
> >
<Cascader <Cascader
allowClear={false}
disabled={!isUpdateAttribute} disabled={!isUpdateAttribute}
options={customerCategoryTree} options={customerCategoryTree}
fieldNames={{ label: 'title', value: 'id', children: 'children' }} fieldNames={{ label: 'title', value: 'id', children: 'children' }}
......
...@@ -8,8 +8,6 @@ ...@@ -8,8 +8,6 @@
padding: 0; padding: 0;
li{ li{
padding-left: 24px; padding-left: 24px;
// height: 32px;
// line-height: 32px;
color: #303133; color: #303133;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -50,7 +48,7 @@ ...@@ -50,7 +48,7 @@
// productDescFormCloud // yunxiancai template // productDescFormCloud // yxc template
.cloud-container{ .cloud-container{
width: 790px; width: 790px;
} }
......
...@@ -129,30 +129,31 @@ const ProductImageForm: React.FC<{}> = (props) => { ...@@ -129,30 +129,31 @@ const ProductImageForm: React.FC<{}> = (props) => {
if (!isLimit) { if (!isLimit) {
message.error('上传图片不超过600K!'); message.error('上传图片不超过600K!');
} }
return isJpgOrPng && isLimit && isSize(file, 800, 800); return isJpgOrPng && isLimit
} }
//检测尺寸
const isSize = (file, w, h) => { // 检测尺寸
return new Promise((resolve, reject) => { // const isSize = (file, w, h) => {
let width = w; // return new Promise((resolve, reject) => {
let height = h; // let width = w;
let _URL = window.URL || window.webkitURL; // let height = h;
let img = new Image(); // let _URL = window.URL || window.webkitURL;
img.onload = function() { // let img = new Image();
let valid = img.width <= width && img.height <= height; // img.onload = function() {
valid ? resolve() : reject(); // let valid = img.width <= width && img.height <= height;
}; // valid ? resolve() : reject();
img.src = _URL.createObjectURL(file); // };
}).then( // img.src = _URL.createObjectURL(file);
() => { // }).then(
return file; // () => {
}, // return file;
() => { // },
message.error(file.name + "图片尺寸不符合要求,请修改后重新上传!"); // () => {
return Promise.reject(); // message.error(file.name + "图片尺寸不符合要求,请修改后重新上传!");
} // return Promise.reject();
); // }
}; // );
// };
const handlePreview = async file => { const handlePreview = async file => {
if (!file.url && !file.preview) { if (!file.url && !file.preview) {
......
...@@ -113,12 +113,22 @@ ...@@ -113,12 +113,22 @@
left:50%; left:50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
.divVideo, .divImage{ .divVideo{
margin: 24px auto; margin: 24px auto;
height: auto; height: auto;
}
.divImage{
width: 320px;
height: 240px;
margin: 24px auto;
position: relative;
img{ img{
width: 320px; max-width: 100%;
height: 240px; max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
} }
} }
.right-btn{ .right-btn{
...@@ -153,9 +163,14 @@ ...@@ -153,9 +163,14 @@
margin-left: 16px; margin-left: 16px;
margin-bottom: 12px; margin-bottom: 12px;
border:1px solid rgba(235,236,240,1); border:1px solid rgba(235,236,240,1);
position: relative;
img{ img{
width: 100%; max-width: 100%;
height: 100%; max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
} }
} }
.videoItem{ .videoItem{
...@@ -185,9 +200,14 @@ ...@@ -185,9 +200,14 @@
height:104px; height:104px;
margin-right: 16px; margin-right: 16px;
border:1px solid rgba(235,236,240,1); border:1px solid rgba(235,236,240,1);
position: relative;
.pic{ .pic{
width: 100%; max-width: 100%;
height: 100%; max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
} }
} }
} }
......
import React, { useState, useEffect, useRef } from 'react'
import { Card } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
const AccountDetail: React.FC<{}> = () => {
return (
<PageHeaderWrapper>
<Card>
<p>账户详情</p>
</Card>
</PageHeaderWrapper>
)
}
export default AccountDetail
import React, { useState, useEffect, useRef } from 'react'
import { Card, Space, Button, } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god'
import { ColumnType } from 'antd/lib/table/interface'
import { PublicApi } from '@/services/api'
import NiceForm from '@/components/NiceForm'
import { createFormActions, FormEffectHooks } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { searchSchema } from './schema'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PlusOutlined } from '@ant-design/icons'
import EyePreview from '@/components/EyePreview'
const formActions = createFormActions();
const AccountLists: React.FC<{}> = () => {
const ref = useRef<any>({})
const columns: ColumnType<any>[] = [
{
title: '账户归属',
dataIndex: 'name',
key: 'name',
className: 'commonPickColor',
render: (text, record) => <EyePreview
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/accountDetail?id=${record.id}`}
>
{text}
</EyePreview>
},
{
title: '会员类型',
dataIndex: 'type',
key: 'type',
},
{
title: '会员角色',
dataIndex: ['customerCategory', 'name'],
key: 'customerCategory',
},
{
title: '会员等级',
dataIndex: ['brand', 'name'],
key: 'brand',
},
{
title: '会员等级类型',
dataIndex: 'unitName',
key: 'unit',
},
{
title: '会员状态',
dataIndex: 'unitName',
key: 'unit',
},
{
title: '账户状态',
dataIndex: 'unitName',
key: 'unit',
},
{
title: '锁定余额',
dataIndex: 'costPrice',
key: 'costPrice',
render: text => `¥${text}`
},
{
title: '可用余额',
dataIndex: 'batch',
key: 'batch',
render: text => `¥${text}`
},
]
const fetchData = (params: any) => {
console.log(params)
return new Promise((resolve, reject) => {
let obj = { ...params }
PublicApi.getProductGoodsGetGoodsList(obj).then(res => {
resolve(res.data)
})
})
}
return (
<PageHeaderWrapper>
<Card>
<StandardTable
columns={columns}
currentRef={ref}
tableProps={{ rowKey: "id" }}
fetchTableData={(params: any) => fetchData(params)}
controlRender={
<NiceForm
actions={formActions}
onSubmit={values => ref.current.reload(values)}
effects={($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'name',
FORM_FILTER_PATH,
);
}}
schema={searchSchema}
/>
}
/>
</Card>
</PageHeaderWrapper>
)
}
export default AccountLists
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
export const searchSchema: ISchema = {
type: 'object',
properties: {
mageLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
topLayout: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
},
properties: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '账户归属',
align: 'flex-left',
},
},
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
justifyContent: 'end',
},
colStyle: {
marginRight: 20,
},
},
properties: {
code: {
type: 'string',
'x-component-props': {
placeholder: '会员状态'
},
},
batch: {
type: 'string',
'x-component-props': {
placeholder: '账户状态'
},
},
applyTime: {
type: "daterange",
properties: {
"[start,end]": {
'x-component-props': {
placeholder: ['开始时间','结束时间'],
},
}
}
},
submit: {
'x-component': 'Submit',
'x-mega-props': {
span: 1,
},
'x-component-props': {
children: '查询',
},
},
},
},
},
},
},
};
\ No newline at end of file
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