Commit 736eb274 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

Merge branch 'dev-srm' of http://10.0.0.22:3000/lingxi/lingxi-business-paltform into dev-srm

parents 2347b651 2c1eb4bb
......@@ -448,9 +448,17 @@ const MemberRoute: RouterChild = {
noMargin: true,
component: '@/pages/member/memberQuery/applyMember',
},
// 会员信息变更
// 会员信息-变更(入库信息)
{
path: '/memberCenter/memberAbility/profile/query/modify',
path: '/memberCenter/memberAbility/profile/query/changeDeposit',
name: 'changeMember',
hideInMenu: true,
noMargin: true,
component: '@/pages/member/memberQuery/applyMember',
},
// 会员信息-修改(入库信息)
{
path: '/memberCenter/memberAbility/profile/query/modifyDeposit',
name: 'modifyMember',
hideInMenu: true,
noMargin: true,
......
......@@ -139,7 +139,8 @@ export default {
'menu.memberAbility.memberProfile.memberQueryDetail.changedInfo': '变更信息',
'menu.memberAbility.memberProfile.memberUpdate': '修改注册信息',
'menu.memberAbility.memberProfile.addSubRole': '新建会员角色',
'menu.memberAbility.memberProfile.modifyMember': '变更会员信息',
'menu.memberAbility.memberProfile.changeMember': '变更会员信息',
'menu.memberAbility.memberProfile.modifyMember': '修改会员信息',
'menu.memberAbility.memberProfile.applyMember': '申请会员',
'menu.memberAbility.memberRuleConfiguration': '会员规则配置',
'menu.memberAbility.memberRuleConfiguration.memberLevel': '会员等级',
......
......@@ -301,28 +301,11 @@ const Details = (props: any) => {
</div>
</div>
{
type === 'submitExamine' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'levelexamine' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'pageToBeExamineTwo' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'Sign' &&
type &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>签订合同</Button>
<Button type="primary" onClick={() => submitExamine()}>{type === 'Sign' ? '签订合同' : '审核'}</Button>
</div>
}
</Anchor>
......@@ -335,12 +318,9 @@ const Details = (props: any) => {
<Basic basicInfo={basicInfo} />
{/* 执行情况 */}
{
type == 'implement' &&
<SituationList contractId={contractId} />
}
{/* 采购材料 */}
{
type != 'implement' && <PurchaseList contractId={contractId} type={type} Refresh={Refresh} />
type == 'implement' ?
<SituationList contractId={contractId} />
: <PurchaseList contractId={contractId} type={type} Refresh={Refresh} />
}
{/* 付款计划 */}
<PaymentCard IsShow={true} payPlanList={payPlanList} basics={basicInfo} contractId={contractId} />
......@@ -370,12 +350,10 @@ const Details = (props: any) => {
}
{/* 流转记录 */}
{
type != 'implement' && <CirculationList contractId={contractId} />
type != 'implement' ? <CirculationList contractId={contractId} /> : <DetailedList contractId={contractId} />
}
{/* 请款统计 */}
{
type == 'implement' && <DetailedList contractId={contractId} />
}
</div>
{/* 提交审核 */}
<Modal footer={null} title={type == 'Sign' ? '签订合同' : '提交审核'} visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}>
......
import React, { useState, useRef, ReactNode } from 'react'
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Radio, Input, message, Modal, Card } from 'antd';
import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import { SchemaBli } from '../schema';
......
import React, { useEffect, useState, useRef } from 'react';
import { Anchor, Radio, Steps, Row, Col, Input, Button, message, Modal } from 'antd';
import React, { useEffect, useState } from 'react';
import { Anchor, Radio, Steps, Input, Button, message, Modal } from 'antd';
import style from './index.less';
import { ArrowLeftOutlined } from '@ant-design/icons';
import { history } from 'umi';
......@@ -236,9 +236,7 @@ const BillDetails = (props: any) => {
</div>
<Materials applyId={applyId} type={type} />
</div>
<ColumnsList applyId={applyId} />
</div>
<Modal title="单据作废" visible={isModalVisible} onCancel={handleCancel} onOk={oninvalid}>
<Radio.Group onChange={handleIsAllMemberChange} defaultValue={isAllMember} value={isAllMember}>
......
......@@ -205,12 +205,10 @@ const QueryList = () => {
} else {
return res.data.innerList.map((item) => { return { label: item.message, value: item.code } })
}
}
return [];
}
}
return (
<PageHeaderWrapper>
<Card>
......
......@@ -243,7 +243,7 @@ const addList = () => {
onClick={() => history.push('/memberCenter/contract/manage/add/addList/contracAdd')}
>
新建
</Button>
</Button>
</Space>,
layouts: {
......
import React, { useEffect, useState, useRef } from 'react';
import { StandardTable } from 'god';
import { Anchor, Radio, Steps, Row, Table, Space, Typography, Button } from 'antd';
import { Anchor, Radio, Steps, Table, Space, Typography, Button } from 'antd';
import style from './index.less';
import { ArrowLeftOutlined } from '@ant-design/icons';
import { history } from 'umi';
import { PublicApi } from '@/services/api';
import ExamineFrom from '../../components/examine'
import Basic from '../../components/detailCard/basic'
import PaymentCard from '../../components/detailCard/PaymentCard'
import {
FileWordFilled
} from '@ant-design/icons'
......@@ -62,6 +59,7 @@ const Details = (props: any) => {
/* 总金额 */
const [tobidCount, settobidCount] = useState<number>(0);
const [bidAmount, setbidAmount] = useState<number>(0);
const [btnText, setBtnText] = useState('审核');
const [tabPane] = useState([
{ id: 'progress', title: '流转进度' },
{ id: 'process', title: '基本流程' },
......@@ -178,7 +176,6 @@ const Details = (props: any) => {
...params,
contractId
}).then(res => {
// bidCount
let tobidCount = 0;
let bidAmount = 0;
res.data.data.map(item => {
......@@ -195,6 +192,8 @@ const Details = (props: any) => {
const onExpand = expandedKeys => {
};
useEffect(() => {
let text = type == 'Signacontract' ? '签订合同' : '审核';
setBtnText(text);
setTargetOffset(window.innerHeight / 6);
getDetail()
let data = {
......@@ -321,30 +320,11 @@ const Details = (props: any) => {
</div>
<div>
{
type === 'ManageSubmitExamine' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'ManageExamineStepOne' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'PageToBeExamineStepTwo' &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>审核</Button>
</div>
}
{
type === 'Signacontract' &&
type &&
<div className="btn" style={{ marginRight: "20px" }}>
<Button type="primary" onClick={() => submitExamine()}>签订合同</Button>
<Button type="primary" onClick={() => submitExamine()}>{btnText}</Button>
</div>
}
</div>
</Anchor>
<div id='content' className={style.card}>
......@@ -406,46 +386,7 @@ const Details = (props: any) => {
</div>
</div>
{/* 付款计划 */}
<div id='conditions' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
付款计划
</div>
</div>
</div>
<div className='ant-card-body '>
<Row gutter={[8, 8]}>
<div className={style.warp}>
{
payPlanList.map((item: any, index: number) => {
return (
<div className={style.warp_item} key={index}>
<div className={style.title}>付款比例</div>
<div className={style.proportion}>{item.payRatio}%</div>
<div className={style.Price}>¥{item.payAmount}</div>
<div className={style.warp_List}>
<div className={style.warp_ListItem}>
<div className={style.label}>付款阶段</div>
<div className={style.text}>{item.payStage}</div>
</div>
<div className={style.warp_ListItem}>
<div className={style.label}>预计付款时间:</div>
<div className={style.text}>{item.expectPayTime}</div>
</div>
<div className={style.warp_ListItem}>
<div className={style.label}>付款方式:</div>
<div className={style.text}>{item.payWayName}</div>
</div>
</div>
</div>
)
})
}
</div>
</Row>
</div>
</div>
<PaymentCard IsShow={true} payPlanList={payPlanList} basics={basicInfo} contractId={contractId} />
{/* 交易条件 */}
<div id='docking' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
......
......@@ -19,7 +19,6 @@ const Information = (props: any) => {
* */
useEffect(() => {
basic.sourceType = String(basic.sourceType);
console.log(basic)
if (basic.contractNo) {
if (oldContractId) {
let data = { oldContractNo: basic.contractNo }
......
......@@ -377,7 +377,7 @@ const Add: React.FC<{}> = () => {
...rest,
deliveryDate: deliveryDateFormat,
otherAsk: {
annex: enclosure.map((item) => ({name: item.name, value: item.url})),
annex: enclosure?.map((item) => ({name: item.name, value: item.url})),
explain: [
{name: '交付说明', value: deliveryDesc},
{name: '付款说明', value: payDesc},
......
......@@ -32,7 +32,7 @@ import { filterExternalStateLabelList } from '@/pages/transaction/common/statusL
import { GetOrderProcessingOrderListResponseDetail } from '@/services/OrderV2Api';
const formActions = createFormActions();
const { onFieldInit$ } = FormEffectHooks
const { onFieldInit$, onFieldValueChange$ } = FormEffectHooks
registerVirtualBox('MellowCardBox', (_props) => {
const { children, props: outerProps } = _props;
......@@ -52,7 +52,20 @@ type EnterpriceType = {
roleId: number | string
}
type FileType = {
name: string,
url: string,
}
type submitDataType = {
/** 物流地址id, 显示用,不提交 */
receivefullAddress: number,
receiveAddress: string
receiveUserName: string
receiveUserTel: string
receiverAddressId: number
deliveryDate: string,
/**配送方式 */
deliveryType: 1 | 2 | number & {},
......@@ -71,7 +84,7 @@ type submitDataType = {
/** skuid */
commodityId: number,
/** 附件 */
enclosure: [],
enclosure: FileType[],
/** 订单商品,即下单的商品 唯一id */
id: string,
/** 是否是 */
......@@ -102,8 +115,36 @@ type submitDataType = {
/** 税率 */
taxRate: string,
/** 单位 */
unitName: string
},
unitName: string,
/** 商品属性 */
productProps: {
name: string,
value: string,
}[]
}[],
/** 加工商品 */
productList: {
brand: string,
category: string,
/** 商品id */
commodityId: number,
enclosure: FileType[],
isHasTax: 0 | 1 | number & {}
isHasTaxAndTaxRate: string,
mainPic: string,
name: string,
processNum: string,
processTotalPrice: string,
processUnitPrice: string,
productProps: {
name: string,
value: string,
}[],
/** skuid */
skuid: number,
taxRate: string,
unitName: string,
}[],
/** 其他说明 */
otherDesc: string,
/** 包装说明 */
......@@ -116,6 +157,7 @@ type submitDataType = {
deliveryDesc: string,
/** 物资说明 */
materialDesc: string,
enclosure: FileType[]
}
/** @tofix 临时的,因为后端不返回只能值么临时搞着 */
......@@ -475,7 +517,8 @@ const Create = () => {
enclosure: enclosure?.map((_row) => ({
name: _row.name,
url: _row.url
})) || []
})) || [],
productProps: productProps,
// ...values,
}
}
......@@ -538,7 +581,6 @@ const Create = () => {
setOrderProductSelectRowKeys((prev) => prev.filter((_row) => !keys.includes(_row)));
setOrderProductSelectRowRecord((prev) => prev.filter((_row) => !keys.includes(`${_row.orderId}_${_row.id}`)))
setProcessOrder((prev) => prev.filter((_item) => _item.id !== id))
}
return true;
......@@ -584,8 +626,128 @@ const Create = () => {
/** ------- 加工订单相关end------- */
const onSubmit = (value: any) => {
const fetchReceiveAddress = useCallback(async () => {
const { data, code } = await PublicApi.getLogisticsReceiverAddressPage({ current: '1', pageSize: '30' });
if (code === 1000) {
return data.data.map((_item) => ({
label: `${_item.fullAddress} / ${_item.receiverName} / ${_item.phone}`,
value: _item.id,
name: _item.receiverName,
address: _item.fullAddress,
phone: _item.phone
}))
}
return []
}, [])
const onSubmit = (value: submitDataType) => {
console.log(value)
const {
receivefullAddress,
deliveryDate,
deliveryType,
enclosure,
deliveryDesc,
payDesc,
taxDesc,
materialDesc,
packingDesc,
otherDesc,
orderList,
productList,
receiveAddress,
receiveUserName,
receiveUserTel,
receiverAddressId,
...rest
} = value;
const orderListFormated = orderList?.map((_item) => {
return {
orderId: _item.orderId,
orderNo: _item.orderNo,
orderDetailId: _item.id,
productId: _item.commodityId,
purchaseCount: _item.purchaseCount,
surplusProcessNum: _item.surplusAndProcessNum,
productName: _item.name,
category: _item.category,
brand: _item.brand,
unit: _item.unitName,
processNum: +_item.processNum,
processPrice: +_item.processUnitPrice,
processTotalPrice: +_item.processTotalPrice,
deliveryDate: deliveryDate,
isHasTax: _item.isHasTax,
taxRate: _item.taxRate,
property: {
specs: _item.productProps || [],
annex: _item.enclosure?.map((_row) => ({name: _row.name, value: _row.url})) || []
}
}
})
const productListFormated = productList.map((_item) => {
return {
/** 采购数量, 加工商品不需要,默认给0 */
purchaseCount: 0,
/** 剩余加工数量, 加工商品不需要 */
surplusProcessNum: 0,
prodcutId: _item.skuid,
productName: _item.name,
brand: _item.brand,
category: _item.category,
unit: _item.unitName,
processNum: +_item.processNum,
processPrice: +_item.processUnitPrice,
processTotalPrice: +_item.processTotalPrice,
deliveryDate: deliveryDate,
isHasTax: _item.isHasTax,
taxRate: _item.taxRate,
property:{
specs: _item.productProps || [],
annex: _item.enclosure && _item.enclosure.map((item) => ({name: item.name, value: item.url})) || []
}
}
})
let restData: {
processMemberId: number;
processName: string;
processRoleId: number;
source: 1 | 2 | number & {};
summary: string;
receiveAddress?: string,
receiveUserName?: string,
receiveUserTel?: string,
receiverAddressId?: number,
} = {} as any
if (deliveryType === 1) {
restData = {
...rest,
receiveAddress,
receiveUserName,
receiveUserTel,
receiverAddressId,
}
}
const postData = {
deliveryDate: deliveryDate,
otherAsk: {
annex: enclosure?.map((item) => ({name: item.name, value: item.url})) || [],
explain: [
{name: '交付说明', value: deliveryDesc},
{name: '付款说明', value: payDesc},
{name: '税费说明', value: taxDesc},
{name: '物资说明', value: materialDesc},
{name: '包装说明', value: packingDesc},
{name: '其他说明', value: otherDesc}
]
},
details: orderListFormated,
deliveryType,
...restData
}
console.info(postData ,orderListFormated);
}
......@@ -606,12 +768,28 @@ const Create = () => {
>
<NiceForm
onSubmit={onSubmit}
// fields={useFields() as any}
initialValues={
{
source: 1
}
}
effects={($, actions) => {
useAsyncSelect('receivefullAddress', fetchReceiveAddress)
onFieldValueChange$('receivefullAddress').subscribe((state) => {
if(state.visible) {
console.log(state);
const options = state.originAsyncData;
const target = options.filter((item) => item.value == state.value)[0];
if(target) {
formActions.setFieldValue("receiveAddress", target.address);
formActions.setFieldValue("receiveUserName", target.name.trim());
formActions.setFieldValue("receiveUserTel", target.phone.trim());
formActions.setFieldValue("receiverAddressId", target.value)
}
}
})
}}
actions={formActions}
schema={creataSchema}
expressionScope={{
......@@ -628,7 +806,6 @@ const Create = () => {
</div>
),
renderProductListTableRemove: renderProductListTableRemove
// renderAddProduct: renderAddition
}}
components={{
ArrayTable,
......
......@@ -2,10 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 16:52:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-07-03 14:50:48
* @LastEditTime: 2021-07-05 10:40:46
* @Description: 申请会员
*/
import React, { useState, useEffect, useRef } from 'react';
import { RouteComponentProps } from 'react-router-dom';
import { history, Prompt } from 'umi';
import { Button, Spin, Space, message } from 'antd';
import { Checkbox, DatePicker, Radio } from '@formily/antd-components';
......@@ -87,7 +88,8 @@ const {
const onStepNext$ = createEffectHook('onStepNext');
const onStepPrevious$ = createEffectHook('onStepPrevious');
const MemberQueryApplyMember: React.FC = () => {
const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
const { route } = props;
const { upperMemberId, upperRoleId, validateId } = usePageStatus();
const [ticktack, setTicktack] = useState(countDownLen);
const [currenStep, setCurrenStep] = useState(!validateId ? 0 : 1);
......@@ -209,8 +211,8 @@ const MemberQueryApplyMember: React.FC = () => {
return;
}
PublicApi.postMemberAbilityInfoApply({
upperMemberId,
upperRoleId,
upperMemberId: upperMemberId as number,
upperRoleId: upperRoleId as number,
depositDetails: step3,
...commonPayload,
}).then(res => {
......@@ -225,7 +227,7 @@ const MemberQueryApplyMember: React.FC = () => {
});
} else {
PublicApi.postMemberAbilityInfoDepositDetailUpdate({
validateId,
validateId: validateId as number,
detail: step3,
...commonPayload,
}).then(res => {
......@@ -249,7 +251,7 @@ const MemberQueryApplyMember: React.FC = () => {
}}
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
title={`${!validateId ? '申请' : '变更'}会员`}
title={`${!validateId ? '申请' : route.name === 'changeMember' ? '变更' : '修改'}会员`}
extra={(
<Space>
{currenStep === 0 && !validateId ? (
......@@ -355,7 +357,7 @@ const MemberQueryApplyMember: React.FC = () => {
expressionScope={{
currenStep,
ComingAgreement: <ComingAgreement richText={agreement} />,
RegisterInfo: <RegisterInfo upperMemberId={upperMemberId} upperRoleId={upperRoleId} />,
RegisterInfo: <RegisterInfo upperMemberId={upperMemberId as number} upperRoleId={upperRoleId as number} />,
SubmitSuccess: <SubmitSuccess />,
}}
effects={($, actions) => {
......@@ -378,7 +380,7 @@ const MemberQueryApplyMember: React.FC = () => {
useBusinessEffects($, actions, 'step4.qualities');
}}
schema={schema(depositInfo, validateId)}
schema={schema(depositInfo, validateId as number)}
/>
</MellowCard>
</PageHeaderWrapper>
......
......@@ -15,10 +15,12 @@ import { createFormActions } from '@formily/antd';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { MEMBER_LEVEL_TYPE_PLATFORM } from '@/constants/member';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { PublicApi } from '@/services/api';
import { GetMemberAbilityInfoPageResponseDetail } from '@/services/MemberV2Api';
import useSpliceArray from '@/hooks/useSpliceArray';
import { querySchema } from './schema';
import {
......@@ -38,9 +40,14 @@ const MemberQuery: React.FC<{}> = () => {
return res.data;
};
// 跳转修改会员信息页面
const handleJumpModify = record => {
history.push(`/memberCenter/memberAbility/profile/query/modify?validateId=${record.validateId}`);
// 跳转变更会员入库信息
const handleJumpChangeDeposit = record => {
history.push(`/memberCenter/memberAbility/profile/query/changeDeposit?validateId=${record.validateId}`);
};
// 跳转修改会员入库信息
const handleJumpModifyDeposit = record => {
history.push(`/memberCenter/memberAbility/profile/query/modifyDeposit?validateId=${record.validateId}`);
};
// 跳转修改注册信息页面
......@@ -48,7 +55,7 @@ const MemberQuery: React.FC<{}> = () => {
history.push(`/memberCenter/memberAbility/profile/query/update?validateId=${record.validateId}`);
};
const defaultColumns: ColumnType<any>[] = [
const defaultColumns: ColumnType<GetMemberAbilityInfoPageResponseDetail>[] = [
{
title: '会员归属',
dataIndex: 'name',
......@@ -116,15 +123,16 @@ const MemberQuery: React.FC<{}> = () => {
record.showModify && (
<Button
type="link"
onClick={() => handleJumpModify(record)}
onClick={() => handleJumpChangeDeposit(record)}
>
变更
</Button>
)
}
{/* 商户会员、渠道会员 且外部审核状态为不通过才可以 再次申请 */}
{/* 上级是平台会员,且外部审核状态为不通过才可以 修改注册资料 */}
{
record.showUpdate && (
record.levelTypeEnum === MEMBER_LEVEL_TYPE_PLATFORM && record.showUpdate && (
<Button
type="link"
onClick={() => handleJumpUpdate(record)}
......@@ -133,6 +141,18 @@ const MemberQuery: React.FC<{}> = () => {
</Button>
)
}
{/* 上级是非平台会员,且外部审核状态为不通过才可以 修改入库资料 */}
{
record.levelTypeEnum !== MEMBER_LEVEL_TYPE_PLATFORM && record.showUpdate && (
<Button
type="link"
onClick={() => handleJumpModifyDeposit(record)}
>
修改
</Button>
)
}
</>
),
},
......
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