Commit a581508c authored by 前端-许佳敏's avatar 前端-许佳敏
parents 032b6c96 700ce345
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-08-04 16:21:48
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-13 09:52:00
* @LastEditTime: 2020-08-20 19:43:26
*/
const router = {
path: '/ruleSettingManager',
......
......@@ -6,6 +6,7 @@
"scripts:build": "node scripts/run",
"scripts:build-yxc": "node scripts/run http://yxc-web-demo.shushangyun.com/api",
"start": "yarn api && yarn scripts:build && umi dev",
"start:dev": "umi dev",
"build": "yarn api && yarn scripts:build && umi build",
"build:yxc": "yarn api && yarn scripts:build-yxc && umi build",
"build:dev": "pm2 start scripts/devServer.js",
......
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-08-10 14:41:27
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-11 16:24:57
* @LastEditTime: 2020-08-20 19:07:46
*/
/**
* 用于在项目开始前获取所有的配置
......@@ -40,11 +40,11 @@ const serviceConfig = {
payConfig:{
payInitializeConfig:{
url:'/pay/initialize/config',
method: 'post'
method: 'get'
},
payPlatformPayConfig:{
url:'/pay/platform/pay/config',
method:'post'
method:'get'
}
}
}
......@@ -57,7 +57,7 @@ async function batchAxiosHttps() {
for (const subItem in serviceConfig[item]) {
try {
const data = await axios(serviceConfig[item][subItem])
asyncHttpQueue[item][subItem] = data.data.data
asyncHttpQueue[item][subItem] = data.data
} catch(err) {
console.log(serviceConfig[item][subItem].url)
console.log(err.response.data)
......
/**
* @description 布局类
* @author xjm
*/
.ant-pro-basicLayout-content .ant-pro-page-header-wrap {
margin: 0 !important;
}
......@@ -4,7 +4,11 @@
*/
// ------------ 容器container ------------
.ant-pro-basicLayout-content{
.ant-pro-page-header-wrap{
margin: 0 !important;
}
}
.make-container(@pad-x: @padding-lg) {
width: 100%;
.make-center(block);
......
......@@ -11,7 +11,8 @@ interface useRowSelectionTableCtl {
}
interface useRowSelectionOptions {
type?: 'checkbox' | 'radio'
type?: 'checkbox' | 'radio',
customKey?: string
}
/**
......@@ -19,7 +20,7 @@ interface useRowSelectionOptions {
* @auth xjm
*/
export const useRowSelectionTable = (options: useRowSelectionOptions = {}): [TableRowSelection<any>, useRowSelectionTableCtl] => {
const { type = 'checkbox' } = options
const { type = 'checkbox', customKey = 'id' } = options
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>(() => [])
......@@ -33,7 +34,7 @@ export const useRowSelectionTable = (options: useRowSelectionOptions = {}): [Tab
const removeRows = (arr: any[]) => {
return selectRow.filter(v => {
const result = arr.find(item => item.id === v.id)
const result = arr.find(item => item[customKey] === v[customKey])
if (!result) {
return v
}
......@@ -62,7 +63,7 @@ export const useRowSelectionTable = (options: useRowSelectionOptions = {}): [Tab
}
const findIds = selectedRowKeys.indexOf(record.id)
if (findIds === -1) {
mergeRowKeys(record.id)
mergeRowKeys(record[customKey])
mergeRow(record)
} else {
setSelectedRowKeys(selectedRowKeys.filter((_, i) => i !== findIds))
......@@ -72,10 +73,10 @@ export const useRowSelectionTable = (options: useRowSelectionOptions = {}): [Tab
onSelectAll: (selected, selectedRows, changeRows) => {
if (selected) {
setSelectedRowKeys(dupliArr([...selectedRowKeys, ...changeRows.map(v => v.id)]))
setSelectRow(mergeArrByKey(selectRow, changeRows, 'id'))
setSelectedRowKeys(dupliArr([...selectedRowKeys, ...changeRows.map(v => v[customKey])]))
setSelectRow(mergeArrByKey(selectRow, changeRows, customKey))
} else {
setSelectedRowKeys(removeRowsKeys(changeRows.map(v => v.id)))
setSelectedRowKeys(removeRowsKeys(changeRows.map(v => v[customKey])))
setSelectRow(removeRows(changeRows))
}
}
......
......@@ -226,13 +226,22 @@ const viewProducts: React.FC<{}> = () => {
</Descriptions>
</>
/* 定价类型 */
//1-现货价格,2-价格需要询价,3-积分兑换商品
const renderPriceType = (type: number) => {
if(type === 1 ) return '现货价格'
if(type === 2 ) return '价格需要询价'
if(type === 3 ) return '积分兑换商品'
}
const renderDeliveryType = (type: number) => {
if(type === 1) return '物流(默认)'
if(type === 2) return '自提'
if(type === 3) return '无需配送'
}
const renderCarriageType = (type: number) => {
if(type === 1) return '卖家承担运费(默认)'
if(type === 2) return '买家承担运费'
}
/* 构建表格数据 */
const constructTableData = (productName: string, unitPriceAndPicList: GetProductCommodityGetCommodityResponse["unitPriceAndPicList"]) => {
......@@ -407,7 +416,7 @@ const viewProducts: React.FC<{}> = () => {
<p>配送方式:</p>
</Col>
<Col span={20}>
<p>物流(默认)</p>
<p>{renderDeliveryType(productDetail?.logistics?.deliveryType)}</p>
</Col>
</Row>
<Row>
......@@ -415,7 +424,7 @@ const viewProducts: React.FC<{}> = () => {
<p>运送方式:</p>
</Col>
<Col span={20}>
<p>买家承担运费</p>
<p>{renderCarriageType(productDetail?.logistics?.carriageType)}</p>
</Col>
</Row>
<Row>
......
......@@ -224,14 +224,23 @@ const viewProducts: React.FC<{}> = () => {
</Descriptions>
</>
/* 定价类型 */
//1-现货价格,2-价格需要询价,3-积分兑换商品
const renderPriceType = (type: number) => {
if(type === 1 ) return '现货价格'
if(type === 2 ) return '价格需要询价'
if(type === 3 ) return '积分兑换商品'
}
const renderDeliveryType = (type: number) => {
if(type === 1) return '物流(默认)'
if(type === 2) return '自提'
if(type === 3) return '无需配送'
}
const renderCarriageType = (type: number) => {
if(type === 1) return '卖家承担运费(默认)'
if(type === 2) return '买家承担运费'
}
/* 构建表格数据 */
const constructTableData = (productName: string, unitPriceAndPicList: GetProductCommodityGetCommodityResponse["unitPriceAndPicList"]) => {
// 构建列
......@@ -374,7 +383,7 @@ const viewProducts: React.FC<{}> = () => {
<p>配送方式:</p>
</Col>
<Col span={20}>
<p>物流(默认)</p>
<p>{renderDeliveryType(productDetail?.logistics?.deliveryType)}</p>
</Col>
</Row>
<Row>
......@@ -382,7 +391,7 @@ const viewProducts: React.FC<{}> = () => {
<p>运送方式:</p>
</Col>
<Col span={20}>
<p>买家承担运费</p>
<p>{renderCarriageType(productDetail?.logistics?.carriageType)}</p>
</Col>
</Row>
<Row>
......
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-08-13 09:50:41
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-13 17:26:35
* @LastEditTime: 2020-08-20 20:09:43
*/
import React, { useEffect, useState, useRef } from 'react'
import { Card, Button, Tabs, Radio, Space, Row, Col, Table,Popconfirm } from 'antd'
......@@ -22,7 +22,7 @@ import '../components/PayForm/components/index.less'
const payActions = createFormActions()
const { TabPane } = Tabs
const { onFieldValueChange$ } = FormEffectHooks
const TabList = GlobalConfig.payConfig.payPlatformPayConfig
const TabList:any = GlobalConfig.payConfig.payPlatformPayConfig.data || []
const PaySetting: React.FC<{}> = () => {
const ref = useRef<any>({})
const [mode, setmode] = useState<number>(0)
......
/*
* @Author: LeeJiancong
* @Date: 2020-08-06 19:07:53
* @LastEditors: LeeJiancong
* @Copyright: 1549414730@qq.com
* @LastEditTime: 2020-08-20 20:16:22
*/
import React, { useEffect , useState,useRef } from 'react'
import {Card,Button,Modal} from 'antd'
import { PlusOutlined, SaveOutlined } from '@ant-design/icons'
......@@ -7,17 +14,24 @@ import {ColumnType} from 'antd/lib/table/interface'
import EyePreview from '@/components/EyePreview'
import {createFormActions,ISchema} from '@formily/antd'
import PayForm from '../components/PayForm'
import ModalTable from '@/components/ModalTable'
import {useInitValue} from '@/formSchema/effects/useInitValue'
import {strategyDetailTab} from '../schema'
import {usePageStatus} from '@/hooks/usePageStatus'
import {usePageStatus, PageStatus} from '@/hooks/usePageStatus'
import { useRowSelectionTable} from '@/hooks/useRowSelectionTable'
import {history} from 'umi'
import {findItemAndDelete} from '@/utils'
import { GlobalConfig } from '@/global/config'
import { PublicApi } from '@/services/api'
import style from './index.less'
const payActions = createFormActions()
/**
* @description: 会员弹窗列表
* @param {type}
* @return {type}
*/
const fetchMemberList = async (params) => {
const res = await PublicApi.getMemberMaintenancePage(params)
const res = await PublicApi.getMemberManagePayPage(params)
return res.data
}
......@@ -25,7 +39,10 @@ const PaySetting: React.FC<{}> = () => {
const ref = useRef<any>({})
const [visible, setvisible] = useState<boolean>(false)
const [visibleChannelMember, setVisibleChannelMember] = useState(false)
const [memberRowSelection, memberRowCtl] = useRowSelectionTable()
const [searchParams, setsearchParams] = useState({
memberName: ''
})
const [memberRowSelection, memberRowCtl] = useRowSelectionTable({customKey:'memberId'})
const [optionType, setoptionType] = useState(0)
const {preview,pageStatus} = usePageStatus()
// const initValue = useInitValue(PublicApi.getPayPayMemberTacticsDetails)
......@@ -58,7 +75,7 @@ const PaySetting: React.FC<{}> = () => {
title: '会员等级',
dataIndex: 'levelTag',
align: 'center',
key: 'levelTag',
key: 'levelTag'
}
]
const [infoData, setinfoData] = useState<any>(
......@@ -116,16 +133,16 @@ const PaySetting: React.FC<{}> = () => {
const value = payActions.getFieldValue('applyMember')
payActions.setFieldValue('applyMember', findItemAndDelete(value, id))
}
const tableAddButton = <Button style={{marginBottom: 16}} block icon={<PlusOutlined/>} onClick={() =>handleAddMemberBtn()} type='dashed'>选择指定会员</Button>
const tableAddButton = <Button style={{marginBottom: 16}} disabled={pageStatus === PageStatus.PREVIEW} block icon={<PlusOutlined/>} onClick={() =>handleAddMemberBtn()} type='dashed'>选择指定会员</Button>
const tableColumns = [
{ dataIndex: 'memberId', title: 'ID', align: 'center' },
{ dataIndex: 'name', title: '会员名称',key:'name', align: 'center' },
{ dataIndex: 'memberTypeName', key:'memberTypeName',align: 'center', title: '会员类型', render: (_, record) => <EyePreview url={`/memberCenter/memberAbility/manage/addMember?id=${record.memberId}&preview=1`}>{_}</EyePreview> },
{ dataIndex: 'name', title: '会员名称',key:'name', align: 'left', render: (_, record) => <EyePreview url={`?id=${record.memberId}&preview=1`}>{_}</EyePreview> },
{ dataIndex: 'memberTypeName', key:'memberTypeName',align: 'center', title: '会员类型'},
{ dataIndex: 'roleName', key:'roleName',title: '会员角色', align: 'center' },
{ dataIndex: 'levelTag', key:'levelTag',title: '会员等级', align: 'center' },
{ dataIndex: 'ctl', title: '操作', align: 'center', render: (_, record) =>
<>
<Button type='link' onClick={() => handleDeleteTable(record.id)}>删除</Button>
<Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleDeleteTable(record.id)}>删除</Button>
</>
}
......@@ -141,8 +158,15 @@ const PaySetting: React.FC<{}> = () => {
payActions.setFieldValue(`ruleConfigurationId-${index}`,item.ruleConfigurationId)
payActions.setFieldValue(`payWayIds-${index}`,item.payWayIds)
})
payActions.setFieldValue('isSelected',data.isSelected)
// payActions.setFieldValue('applyMember', data.memberIds)
payActions.setFieldValue('isSelected',data.isSelected )
}
})
PublicApi.getPayApplyMemberList({id: usePageStatus().id,
...searchParams,current:1,pageSize: 10000
}).then(res => {
if(res.code === 1000){
let {data} = res.data
payActions.setFieldValue('applyMember', data)
}
})
......@@ -227,23 +251,21 @@ const PaySetting: React.FC<{}> = () => {
tableColumns,
tableAddButton
}}
// editable={usePageStatus().pageStatus === 2 ?false: true}
editable={pageStatus !== PageStatus.PREVIEW}
onSubmit={handleSubmit}
actions={payActions}
schema={strategyDetailTab(infoData,usePageStatus)}
/>
</Card>
<Modal
width={704}
title='选择适用会员'
onOk={handleOkAddMember}
onCancel={handleCancelAddMember}
visible={visible}
>
<StandardTable
<ModalTable
modalTitle='选择适用会员'
confirm={handleOkAddMember}
cancel={handleCancelAddMember}
visible={visible}
columns={columnsSetMember}
rowSelection={memberRowSelection}
fetchTableData={params => fetchMemberList(params)}
formilyProps={
{
ctx: { schema: formSearch }
......@@ -252,9 +274,7 @@ const PaySetting: React.FC<{}> = () => {
tableProps={{
rowKey: 'memberId'
}}
>
</StandardTable>
</Modal>
/>
</PageHeaderWrapper>
)
}
......
.levelIcon1 {
width: 100%;
height: 20px;
background: url("/static/imgs/vip1@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon2 {
width: 100%;
height: 20px;
background: url("/static/imgs/vip2@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon3 {
width: 100%;
height: 20px;
background: url("/static/imgs/vip3@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon4 {
width: 100%;
height: 20px;
background: url("/static/imgs/vip4@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon1 {
width : 100%;
height : 20px;
background : url("/static/imgs/vip1@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon2 {
width : 100%;
height : 20px;
background : url("/static/imgs/vip2@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon3 {
width : 100%;
height : 20px;
background : url("/static/imgs/vip3@2x.png") no-repeat center;
background-size: 24px 20px;
}
.levelIcon4 {
width : 100%;
height : 20px;
background : url("/static/imgs/vip4@2x.png") no-repeat center;
background-size: 24px 20px;
}
......@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-08-06 19:07:32
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-11 16:19:10
* @LastEditTime: 2020-08-18 10:05:03
*/
import React, { useEffect,useState, useRef } from 'react';
import {Card,Row,Col,Space,Button,Popconfirm} from 'antd'
......@@ -146,7 +146,10 @@ const List: React.FC<{}> = () => {
properties: {
name: {
type: 'string',
"x-component": 'search'
"x-component": 'search',
"x-component-props":{
placeholder:'输入策略名称'
}
}
}
}
......
......@@ -2,13 +2,14 @@
* @Author: LeeJiancong
* @Date: 2020-08-06 11:12:18
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-12 20:32:03
* @LastEditTime: 2020-08-20 19:18:53
*/
import React, { useState, useEffect } from 'react'
import { ISchema } from '@formily/antd'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { GlobalConfig } from '@/global/config'
import { AreaChartOutlined } from '@ant-design/icons'
import { json } from 'express'
let payType = ['', '线上支付', '线下支付', '授信额度支付', '货到付款支付']
let currentTab;
......@@ -16,9 +17,10 @@ let currentTab;
export const strategyDetailTab = (props: any, usePageStatus: any) => {
//新增时候就初始化
let baseList: any = GlobalConfig.payConfig.payInitializeConfig
console.log('baseList', baseList)
let baseList: any = GlobalConfig.payConfig.payInitializeConfig.data
console.log('baseList', JSON.stringify(baseList))
// baseList[2].ruleConfigurations = [{value:1,label:"1",platformType:1}]
let tabItem = {}, Tab1 = {}, arr = []
baseList.map((item, index) => {
Tab1[`MEGA_LAYOUT_LINE${index}`] = {
......@@ -36,14 +38,14 @@ export const strategyDetailTab = (props: any, usePageStatus: any) => {
properties: {
[`ruleConfigurationId-${index}`]: {
type: 'string',
enum: item.ruleConfigurations,
enum: item.ruleConfigurations || [],
'x-component-props': {
},
required: true,
},
[`payWayIds-${index}`]: {
type: 'array:number',
enum: item.payWayResponses,
enum: item.payWayResponses || [],
"x-component": 'checkbox',
'x-component-props': {
},
......@@ -101,7 +103,8 @@ export const strategyDetailTab = (props: any, usePageStatus: any) => {
required: true,
title: '策略名称',
'x-component-props': {
placeholder: '请输入策略名称',
max:24,
placeholder: '平台代收模式-线上支付+线下支付方式',
},
},
...Tab1
......@@ -149,7 +152,11 @@ export const strategyDetailTab = (props: any, usePageStatus: any) => {
"x-component-props": {
rowKey: 'memberId',
columns: "{{tableColumns}}",
prefix: "{{tableAddButton}}"
prefix: "{{tableAddButton}}",
onChange:(val) => {
console.log(val)
}
}
}
}
......
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