Commit 00636f79 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫
parents 472a6971 d41d6019
......@@ -219,6 +219,8 @@ export default {
'menu.tranactionAbility.stockSellStorage.inventory': '库存',
'menu.tranactionAbility.transactionRules': '交易规则',
'menu.tranactionAbility.addRule': '新建交易规则',
'menu.tranactionAbility.editRule': '编辑交易规则',
'menu.tranactionAbility.ruleDetail': '交易规则详情',
// 需求发布 2020-10-26修改
'menu.tranactionAbility.enquirySubmit': '需求发布',
......
import { GetProductGoodsGetGoodsListResponseDetail, GetProductCommodityGetCommodityResponse } from '@/services';
import { GetProductGoodsGetGoodsListResponseDetail, GetProductCommodityGetCommodityResponse } from '@/services/ProductApi';
export interface IBasicFormParam {
brandId: number;
......@@ -65,6 +65,7 @@ export interface IProductModule {
productAttributeAndImageParams: any[]; //价格属性包含图片的传输数据
areaOption: any[]; // 省市数据
currentPageInStore: IPage;
tabClickItem: any[];
setAttributeLists(lists: any[]): void;
setProductName(name: string): void;
......@@ -79,4 +80,5 @@ export interface IProductModule {
setAreaOption(datas: any[]): void;
setProductInfoByEdit(data: GetProductCommodityGetCommodityResponse): void;
setCurrentPageInStore(data: IPage): void;
setTabClickItem(data: any): void;
}
......@@ -50,7 +50,8 @@ const AddProducts: React.FC<{}> = (props) => {
isAllAttributePic,
productInfoByEdit,
selectCategoryId,
clearPartData
clearPartData,
setTabClickItem
} = ProductStore
useEffect(() => {
......@@ -161,7 +162,7 @@ const AddProducts: React.FC<{}> = (props) => {
// 移除描述中的[]
let _productDescription = { ...productDescription }
for(let i in _productDescription){
if(_productDescription[i].length === 0){
if(_productDescription[i]?.length === 0){
delete _productDescription[i]
}
}
......@@ -304,13 +305,12 @@ const AddProducts: React.FC<{}> = (props) => {
}
console.log(e, 'e')
}).catch(error => {
console.log(error, '_error')
setIsDisableSaveBtn(false)
if (error.messge)
message.error(error.message)
else
message.error(error.errorFields[0].errors.toString())
console.log(error, '_error')
})
} catch (e) {
setIsDisableSaveBtn(false)
......@@ -330,6 +330,8 @@ const AddProducts: React.FC<{}> = (props) => {
const callback = (key: any) => {
setClickTabIndex([...clickTabIndex, key])
// 点击项存入store 用于后续编辑步骤判断 是直接点击进去某个子模块还是已经进入子模块 从而采用缓存数据还是采用接口返回的编辑数据
setTabClickItem([...clickTabIndex, key])
}
return (<PageHeaderWrapper
......
......@@ -69,6 +69,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
getPriceAttributeFormParamsByEdit,
selectCategoryId,
productAttributeAndImageParams,
tabClickItem
} = ProductStore
_tableDataSource = useMemo(() => tableDataSource, [tableDataSource]) // 保持最新值
......@@ -193,7 +194,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
let { _attributeNameArr, _attributeValueArr, _temp_attributeObjArr, _temp_attributeValObjArr } = needObject
// console.log(_priceAttribute, _attributeNameArr, _attributeValueArr, _temp_attributeObjArr, _temp_attributeValObjArr, selectedGoods, '---constructimg---') // 编辑直接进入价格设置 都为空数组
console.log(_priceAttribute, _attributeNameArr, _attributeValueArr, _temp_attributeObjArr, _temp_attributeValObjArr, selectedGoods, '---constructimg---') // 编辑直接进入价格设置 都为空数组
if(selectedGoods.length>0){ // 编辑情况下 select货品列表可能会采用接口数据
_col.push({
......@@ -211,32 +212,34 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
</Select>
</>
})
}else if(history.location.query?.id){ // 此时没有货品并且处于编辑状态 取接口返回的数据
let _goods: any[] = Object.values(productInfoByEdit.unitPriceAndPicList.map(_ => _.goods))
if(_goods.indexOf(null)===-1){
let goodsInApi : any = Object.values(_goods.reduce((item, next)=>{
item[next.id] = next
return item
},{}))
if(goodsInApi.length > 0){ // *9.12*
_col.push({
title: '对应货品',
dataIndex: '对应货品',
key: '对应货品',
width: 360,
render: (text: any, record: any) => <>
<Select style={{width:'100%'}} defaultValue={text} onChange={(v)=> {tableSelelctChange(v, record) }}>
{
goodsInApi.map(_item => (
<Option key={_item.id} value={_item.id}>{_item.code}/{_item.name}/{_item.type}/¥{_item.costPrice}</Option>
))
}
</Select>
</>
})
}
}
}
/** 注释原因:编辑时操作货品 没有更新价格属性表格中的货品选项 */
// else if(history.location.query?.id){ // 此时没有货品并且处于编辑状态 取接口返回的数据
// let _goods: any[] = Object.values(productInfoByEdit.unitPriceAndPicList.map(_ => _.goods))
// if(_goods.indexOf(null)===-1){
// let goodsInApi : any = Object.values(_goods.reduce((item, next)=>{
// item[next.id] = next
// return item
// },{}))
// if(goodsInApi.length > 0){
// _col.push({
// title: '对应货品',
// dataIndex: '对应货品',
// key: '对应货品',
// width: 360,
// render: (text: any, record: any) => <>
// <Select style={{width:'100%'}} defaultValue={text} onChange={(v)=> {tableSelelctChange(v, record) }}>
// {
// goodsInApi.map(_item => (
// <Option key={_item.id} value={_item.id}>{_item.code}/{_item.name}/{_item.type}/¥{_item.costPrice}</Option>
// ))
// }
// </Select>
// </>
// })
// }
// }
// }
if(_attributeNameArr?.length>0){
_attributeNameArr.map( _attr => {
......@@ -276,7 +279,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
setColumns(_col)
// 生成表格data
// 生成表格dataSource
let combineArray = SKUCombine(_attributeValueArr)
setCombineAttributeArray(combineArray)
setAttributeObjArr(_temp_attributeObjArr)
......@@ -292,8 +295,12 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
}) : _tempObj[_attributeNameArr[i]||_attributeNameArr[0]] = _rowArr // 当一项变动的时候 找_attributeNameArr可能会找不到 找不到的情况下置为索引0的那项
if(history.location.query?.id){
// 编辑的时候,先指定数据中的货品id,如果是重新组合的不存在id就使用选择的货品中的第一个,如果没有置为0;同理,不存在单价就置为{}
// _tempObj['对应货品'] = selectedGoods.length > 0 ? selectedGoods[0].id : 0
_tempObj['对应货品'] = productInfoByEdit.unitPriceAndPicList[i]?.goods?.id || selectedGoods[0]?.id || 0
_tempObj['单价'] = productInfoByEdit.unitPriceAndPicList[i]?.unitPrice || {}
console.log(_tableDataSource, '编辑构建table数据的时候')
console.log(tabClickItem, 'store中的点项')
// 通过store中的点击项可以判断当前表格的数据是采用接口返回的全局编辑数据还是子模块的局部缓存数据
}else{
_tempObj['对应货品'] = selectedGoods.length > 0 ? selectedGoods[0].id : 0
_tempObj['单价'] = {}
......@@ -307,7 +314,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
_tempObj['单价'] = productInfoByEdit?.unitPriceAndPicList[0]?.unitPrice || {}
_tableData.push(_tempObj)
}
// console.log(_tableData, '_tableData') // 只有一项 变动情况下表格数据的key获取不到
console.log(_tableData, '_tableData') // 只有一项 变动情况下表格数据的key获取不到
_tableDataSource = _tableData
// 有前面tab变动引起的二次构建 需要清空价格数据
if(updateFlag.current){
......@@ -450,7 +457,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
}
_tableDataSource = newTabeData
setTableDataSource(_tableDataSource)
// console.log(_tableDataSource, curretSetPriceRow, v, isBatchSetting, 'setPriceOk')
console.log(_tableDataSource, curretSetPriceRow, v, isBatchSetting, 'setPriceOk')
})
}
......
import React, { useState, useEffect, useRef } from 'react'
import { Card, Space, Button, } from 'antd'
import { history } from 'umi'
import { Card, Space, Button, Modal, message } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god'
import { ColumnType } from 'antd/lib/table/interface'
......@@ -9,17 +10,20 @@ 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'
import { DatePicker } from '@formily/antd-components'
import StatusTag from '@/components/StatusTag'
import { accountStatusMap, memberStatusMap } from '../../constant'
import { statusMap } from '../../constant'
import moment from 'moment'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { ExclamationCircleOutlined } from '@ant-design/icons'
const { confirm } = Modal
const formActions = createFormActions();
const CheckWithdraw: React.FC<{}> = () => {
const ref = useRef<any>({})
const [withdrawRowSelection, withdrawRowCtl] = useRowSelectionTable()
const columns: ColumnType<any>[] = [
{
......@@ -28,7 +32,7 @@ const CheckWithdraw: React.FC<{}> = () => {
key: 'memberAssetAccount',
className: 'commonPickColor',
render: (text, record) => <EyePreview
url={`/memberCenter/payandSettle/amountAccountManage/memberAccountManage/detail?id=${record.id}`}
url={`/memberCenter/payandSettle/amountAccountManage/memberAccountManage/detail?id=${record.memberAssetAccount.id}`}
>
{text}
</EyePreview>
......@@ -45,8 +49,9 @@ const CheckWithdraw: React.FC<{}> = () => {
},
{
title: '提现金额(元)',
dataIndex: 'memberRoleName',
key: 'memberRoleName',
dataIndex: 'tradeMoney',
key: 'tradeMoney',
render: (t, r) => t.toFixed(2)
},
{
title: '提现申请时间',
......@@ -55,10 +60,10 @@ const CheckWithdraw: React.FC<{}> = () => {
render: (t, r) => moment(t).format('YYYY-MM-DD HH:mm:ss')
},
{
title: '会员状态',
dataIndex: 'memberStatus',
key: 'memberStatus',
render: (t, r) => (<StatusTag title={memberStatusMap[t]['title']} type={memberStatusMap[t]['type']} />)
title: '状态',
dataIndex: 'status',
key: 'status',
render: (t, r) => (<StatusTag title={statusMap[t]['title']} type={statusMap[t]['type']} />)
},
{
title: '操作',
......@@ -78,11 +83,34 @@ const CheckWithdraw: React.FC<{}> = () => {
}
const clickUp = (r: any) => {
console.log('通过')
let params = {
tradeCode: r.tradeCode,
id: r.memberAssetAccount.id,
amount: r.tradeMoney
}
history.push(`/memberCenter/payandSettle/amountAccountManage/checkWithdraw/detail?detailinfo=${btoa(JSON.stringify(params))}`)
}
const handleBatchCheck = () => {
console.log('批量通过')
if(withdrawRowCtl.selectedRowKeys.length > 0){
confirm({
title: '确定要执行批量审核操作?',
icon: <ExclamationCircleOutlined />,
onOk() {
PublicApi.postPayMemberAssetAccountBatchCheck({ idList: withdrawRowCtl.selectedRowKeys }).then(res => {
ref.current.reload()
})
},
okType: 'danger',
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消'
})
}else{
message.error('请先选择对应项目进行操作!')
}
}
const controllerBtns = (
......@@ -100,6 +128,7 @@ const CheckWithdraw: React.FC<{}> = () => {
columns={columns}
currentRef={ref}
tableProps={{ rowKey: "id" }}
rowSelection={withdrawRowSelection}
fetchTableData={(params: any) => fetchData(params)}
controlRender={
<NiceForm
......
......@@ -14,7 +14,7 @@ import EyePreview from '@/components/EyePreview'
import { DatePicker } from '@formily/antd-components'
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect'
import StatusTag from '@/components/StatusTag'
import { accountStatusMap, memberStatusMap } from '../../constant'
import { accountMemberType, accountStatusMap, memberStatusMap } from '../../constant'
import LevelBrand from '@/pages/member/components/LevelBrand'
import { validatorByte } from '@/utils/regExp'
import { GetPayMemberAssetAccountGetMemberAssetAccountListResponseDetail } from '@/services/PayApi'
......@@ -44,8 +44,9 @@ const AccountLists: React.FC<{}> = () => {
},
{
title: '会员类型',
dataIndex: 'memberTypeName',
key: 'memberTypeName',
dataIndex: 'memberType',
key: 'memberType',
render: (t, r) => accountMemberType[t]
},
{
title: '会员角色',
......
......@@ -8,7 +8,7 @@ import StatusTag from '@/components/StatusTag'
import cx from 'classnames'
import moment from 'moment'
import { ColumnType } from 'antd/lib/table/interface'
import { memberStatusMap, moveStatusMap, statusMap } from '../../constant'
import { memberStatusMap, moveStatusMap, operationMap, statusMap } from '../../constant'
import { SettingOutlined, StopOutlined } from '@ant-design/icons'
import { validatorByte } from '@/utils/regExp'
import { PublicApi } from '@/services/api'
......@@ -79,11 +79,13 @@ const AccountDetail: React.FC<{}> = () => {
title: '交易金额(元)',
dataIndex: 'tradeMoney',
key: 'tradeMoney',
render: (t, r) => `${operationMap[r.operation]['operator']} ${t.toFixed(2)}`
},
{
title: '交易项目',
dataIndex: 'operation',
key: 'operation',
render: (t, r) => operationMap[t]['title']
},
{
title: '状态',
......
......@@ -47,6 +47,7 @@ const PaymentWithdraw: React.FC<{}> = () => {
title: '提现金额(元)',
dataIndex: 'memberRoleName',
key: 'memberRoleName',
render: (t, r) => `¥${t.toFixed(2)}`
},
{
title: '提现申请时间',
......@@ -71,7 +72,7 @@ const PaymentWithdraw: React.FC<{}> = () => {
console.log(params)
return new Promise((resolve, reject) => {
let obj = { ...params }
PublicApi.getPayMemberAssetAccountGetCheckCashOutList(obj).then(res => {
PublicApi.getPayMemberAssetAccountGetPayCashOutList(obj).then(res => {
resolve(res.data)
})
})
......
......@@ -78,12 +78,13 @@ const AccountDetail: React.FC<{}> = () => {
title: '交易金额(元)',
dataIndex: 'tradeMoney',
key: 'tradeMoney',
render: (t, r) => `${operationMap[r.operation]['operator']} ${t.toFixed(2)}`
},
{
title: '交易项目',
dataIndex: 'operation',
key: 'operation',
render: (t, r) => operationMap[t]
render: (t, r) => operationMap[t]['title']
},
{
title: '状态',
......@@ -107,8 +108,8 @@ const AccountDetail: React.FC<{}> = () => {
},
{
title: '操作角色',
dataIndex: 'parentMemberRoleName',
key: 'parentMemberRoleName',
dataIndex: ['memberAssetAccount','parentMemberRoleName'],
key: 'id',
},
{
title: '状态',
......@@ -138,7 +139,6 @@ const AccountDetail: React.FC<{}> = () => {
];
const handleConfirm = () => {
setIsBtnLoading(true)
schemaActions.submit()
}
......@@ -148,6 +148,7 @@ const AccountDetail: React.FC<{}> = () => {
const handleSubmit = (value) => {
// 提交重置
setIsBtnLoading(true)
let parasm = {
memberAssetAccountId: pageId,
money: Number(value.money),
......@@ -188,7 +189,7 @@ const AccountDetail: React.FC<{}> = () => {
</div>
<div className={styles['repayment-end']}>
<span className={styles['repayment-time']}>
{details?.memberName}
{details?.parentMemberName}
</span>
</div>
</div>
......
......@@ -31,7 +31,7 @@ const AccountDetail: React.FC<{}> = () => {
let res = await PublicApi.getPayAssetAccountGetAssetAccount({id})
const { code, data } = res
setDetails(data)
if(code === 1000){
if(code === 1000) {
let bankRes = await PublicApi.getSettleAccountsCorporateAccountConfig({memberId: data.memberId + ''})
setBankDetail(bankRes.data)
}
......@@ -62,12 +62,13 @@ const AccountDetail: React.FC<{}> = () => {
title: '交易金额(元)',
dataIndex: 'tradeMoney',
key: 'tradeMoney',
render: (t, r) => `${operationMap[r.operation]['operator']} ${t.toFixed(2)}`
},
{
title: '交易项目',
dataIndex: 'operation',
key: 'operation',
render: (t, r) => operationMap[t]
render: (t, r) => operationMap[t]['title']
},
{
title: '状态',
......
......@@ -41,20 +41,20 @@
font-weight: 500;
}
&-input {
display: block;
width: 180px;
line-height: 40px;
padding: 8px 0;
font-size: 32px;
font-weight: 500;
color: #fff;
background: none;
border-top: none;
border-right: none;
border-left: none;
border-image: initial;
outline: none;
border-bottom: 1px solid #fff;
display: block !important;
width: 180px !important;
line-height: 40px !important;
padding: 8px 0 !important;
font-size: 32px !important;
font-weight: 500 !important;
color: #fff !important;
background: none !important;
border-top: none !important;
border-right: none !important;
border-left: none !important;
border-image: initial !important;
outline: none !important;
border-bottom: 1px solid #fff !important;
}
}
......
......@@ -12,7 +12,7 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'
import EyePreview from '@/components/EyePreview'
import { DatePicker } from '@formily/antd-components'
import StatusTag from '@/components/StatusTag'
import { accountStatusMap, memberStatusMap, memberLevelTypeMap } from '../../constant'
import { accountStatusMap, memberStatusMap, memberLevelTypeMap, accountMemberType } from '../../constant'
import LevelBrand from '@/pages/member/components/LevelBrand'
const formActions = createFormActions();
......@@ -23,8 +23,8 @@ const AccountLists: React.FC<{}> = () => {
const columns: ColumnType<any>[] = [
{
title: '账户归属',
dataIndex: 'memberName',
key: 'memberName',
dataIndex: 'parentMemberName',
key: 'parentMemberName',
className: 'commonPickColor',
render: (text, record) => <EyePreview
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
......@@ -34,8 +34,9 @@ const AccountLists: React.FC<{}> = () => {
},
{
title: '会员类型',
dataIndex: 'memberTypeName',
key: 'memberTypeName',
dataIndex: 'memberType',
key: 'memberType',
render: (t, r) => accountMemberType[t]
},
{
title: '会员角色',
......
......@@ -130,9 +130,17 @@ export const memberLevelTypeMap = {
// 操作项目
export const operationMap = {
'1': '账户充值',
'2': '账户提现',
'3': '订单支付',
'4': '订单退款',
'5': '订单返利'
'1': {title: '账户充值', operator: '+'},
'2': {title: '账户提现', operator: '-'},
'3': {title: '订单支付', operator: '-'},
'4': {title: '订单退款', operator: '+'},
'5': {title: '订单返利', operator: '+'}
}
// 会员类型
export const accountMemberType = {
'1': '企业会员',
'2': '企业个人会员',
'3': '渠道会员',
'4': '渠道个人会员',
}
\ No newline at end of file
......@@ -16,6 +16,7 @@ class ProductStore implements IProductModule {
@observable public productDescription: IDecsParams;
@observable public isAllAttributePic: boolean = true; // 是否所有属性共用
@observable public currentPageInStore: IPage = { current: null, pageSize: null }; // 页码相关
@observable public tabClickItem: any[] = []; // tab标签页点击项
/** 计算操作 **/
// 加工接口返回的数据,用户编辑回显数据
......@@ -193,6 +194,10 @@ class ProductStore implements IProductModule {
this.currentPageInStore = data
}
@action.bound
public setTabClickItem(data: any) {
this.tabClickItem = data
}
}
......
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