Commit f06dbdf9 authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

fix:处理资金账户查询提现是查询对公账户异常和账户充值后记录无更新问题,采购下单对于简单流程使用电子合同的商品添加必须签署电子合同的操作

parent a21333c1
......@@ -69,6 +69,7 @@ const AccountDetail: React.FC<{}> = () => {
const { data } = res
setMoveData(data)
})
refTrade.current.reload()
}
// 获取交易记录
......
......@@ -35,8 +35,6 @@ const AccountDetail: React.FC<{}> = () => {
let bankRes = await PublicApi.getSettleAccountsCorporateAccountConfig({memberId: data.memberId + '', memberRoleId: data.memberRoleId + ''})
if(bankRes.code === 1000) {
setBankDetail(bankRes.data)
} else {
message.error(bankRes.message)
}
}
}
......
......@@ -51,5 +51,24 @@ export const fetchOrderApi = {
async getPayInfoList(params) {
const { data } = await PublicApi.getOrderInitializationPaymentInformation(params)
return data
}
},
// 查询当前订单工作流
async getOrderWorkFlow(params) {
const { data } = await PublicApi.getOrderTradingRulesByProductId(params)
return data
},
// 根据合同模板id查询合同模板详情
// async getContractDetail(params) {
// const { data } = await PublicApi.getOrderContractTemplateGet(params)
// return data
// },
// 生成电子合同
async createContract(params) {
const { data } = await PublicApi.postOrderSignatureSignContractCreate(params, {ctlType: "none"})
return data
},
}
import React, { useState, useRef, useEffect } from 'react'
import {history} from "umi"
import { Button, Radio, Row, Col, Tag, Checkbox, Modal } from 'antd'
import { ISchemaFormProps, ISchemaFieldProps, ISchemaFieldComponentProps, createFormActions, useFieldState } from '@formily/antd'
import { FilePdfFilled } from '@ant-design/icons'
import { PublicApi } from '@/services/api'
const SelectContract = (props: ISchemaFieldComponentProps) => {
let { form, value = {}, mutators, editable } = props
const popConfirm = () => {
history.push(`/memberCenter/tranactionAbility/electronicContracts/apply`)
}
const onChange = (e) => {
if(e.target.checked) {
PublicApi.getOrderSignatureAuthAuthState().then(({data}) => {
if(data.state !== 1) {
// 未认证
Modal.confirm({
title: '提示',
content: '未签约电子合同, 是否要立即前往?',
onOk: popConfirm,
maskClosable: true
})
} else {
mutators.change(1)
}
})
} else {
mutators.change(0)
}
}
return (
<div style={{display: "flex", flexDirection: "column"}}>
<Checkbox onChange={onChange}>同意</Checkbox>
<Button
type="link"
icon={<FilePdfFilled />}
style={{color: "#7178ea"}}
href={`/api/order/contractTemplate/downloadContract?contractName=${props.props["x-component-props"].contract.contractName}&contractUrl=${props.props["x-component-props"].contract.contractUrl}`}
>
{
props.props["x-component-props"].contract?.contractName
}
</Button>
</div>
)
}
SelectContract.defaultProps = {}
SelectContract.isFieldComponent = true;
export default SelectContract
import React, { useEffect, useState, useContext, useRef } from 'react'
import { message, Modal } from 'antd'
import { PublicApi } from '@/services/api'
import { history } from 'umi'
import { useHttpRequest } from '@/hooks/useHttpRequest'
export interface SimpleElectronModalProps {
currentRef: any,
schemaAction?: any
}
const SimpleElectronModal:React.FC<SimpleElectronModalProps> = (props) => {
const { currentRef, schemaAction } = props
// @ts-ignore
// const { run, loading } = useHttpRequest(PublicApi.postOrderSignatureOrderSettleSign, { ctlType: "none" })
const [visible, setVisible] = useState(false)
const [confirmLoading, setConfirmLoading] = useState(false)
const signatureState = useRef(null)
// 合同信息
const contracts = schemaAction.getFieldState("usingElectronicContracts").props["x-component-props"].contract
let timer = null
useEffect(() => {
return () => {
clearInterval(timer)
timer = null
}
}, [])
useEffect(() => {
currentRef.current = {
visible,
setVisible
}
}, [])
const handleSubmit = async () => {
setConfirmLoading(true)
// const res = await run(contracts)
const res = await PublicApi.postOrderSignatureOrderSettleSign(contracts, { ctlType: "none" })
if(res.code === 1000) {
timer = setInterval(() => {
console.log(signatureState.current, 'signatureState')
if (signatureState.current !== 4) {
PublicApi.getOrderSignatureOrderSettleSignDetail({signatureLogId: res.data.signatureLogId + ''}).then(_res => {
if(_res.code === 1000) {
signatureState.current = _res.data.state
} else {
clearInterval(timer)
timer = null
signatureState.current = null
}
})
} else {
clearInterval(timer)
timer = null
signatureState.current = null
setVisible(false)
schemaAction.setFieldValue("signatureLogId", res.data.signatureLogId)
message.success("操作成功")
}
}, 2000)
}
}
return (
<Modal
width={1000}
style={{minHeight: 600}}
title='签署电子合同'
okText='签署合同并提交'
cancelText='不签署'
visible={visible}
onOk={handleSubmit}
confirmLoading={confirmLoading}
onCancel={() => setVisible(false)}
>
{
contracts && <div style={{height: 600, position: 'relative'}}>
<iframe src={contracts.contractUrl} style={{position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', display: 'block'}}/>
</div>
}
</Modal>
)
}
SimpleElectronModal.defaultProps = {}
export default SimpleElectronModal
import { parmas } from './../../../inquiryQuote/components/reviewList';
import { ISchemaFormActions, FormEffectHooks, IFieldState, ISchemaFormAsyncActions, createEffectHook } from '@formily/antd';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { useLinkageUtils } from '@/utils/formEffectUtils';
......@@ -100,7 +101,6 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
if (value && value.length > 0){
// 请求一次并复制给支付信息
const productItem = value[0]
console.log(productItem, 'pp')
if(pageStatus === PageStatus.EDIT) { // 编辑下 支付信息联动实现
} else if(pageStatus === PageStatus.ADD) { // 新增下 需要支付信息生成支付次数
......@@ -214,6 +214,13 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
useInvoiceList(ctx)
}
})
// 查询商品对应的工作流 获取电子合同
FormEffectHooks.onFieldValueChange$('orderProductRequests').subscribe(state => {
if (state.value?.length) {
useElectronicContract(ctx)
}
})
}
export const useProductAddress = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
......@@ -243,3 +250,31 @@ export const useInvoiceList = (ctx: ISchemaFormActions | ISchemaFormAsyncActions
})
})
}
// 查询工作流获取电子合同
export const useElectronicContract = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
let params: any = {};
params['productId'] = ctx.getFieldValue('orderProductRequests')[0]['id']
params['orderModelId'] = ctx.getFieldValue('orderModel')
params['memberId'] = ctx.getFieldValue('supplyMembersId')
params['memberRoleId'] = ctx.getFieldValue('supplyMembersRoleId')
fetchOrderApi.getOrderWorkFlow(params).then(data => {
// 简单流程并使用电子合同 强行启用电子合同
if(data["processEnum"] === 24 && data["isElectronicContract"]) {
ctx.setFieldState("usingElectronicContracts", state => {
state.visible = true
})
ctx.setFieldValue("processEnum", data["processEnum"])
// ctx.setFieldValue("usingElectronicContracts", data["isElectronicContract"] ? 1 : 0)
}
if(data['electronicContractId']) {
/** orderNo字段先行写死 */
fetchOrderApi.createContract({contractTemplateId: data['electronicContractId'], signMemberId: params['memberId'], orderNo: "CGBN50585" }).then(_data => {
ctx.setFieldState("usingElectronicContracts", state => {
state.props["x-component-props"].contract = { contractTemplateId: data['electronicContractId'], ..._data, }
})
})
}
})
}
......@@ -3,9 +3,9 @@ import { history } from 'umi'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import ReutrnEle from '@/components/ReturnEle'
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'
import { Button, Card, Row, Col, Drawer, message } from 'antd'
import { Button, Card, Row, Col, Drawer, message, Tooltip } from 'antd'
import { createFormActions, registerVirtualBox, useFormSpy, createAsyncFormActions } from '@formily/antd'
import { SaveOutlined, LinkOutlined, PlusOutlined, CodeSandboxCircleFilled } from '@ant-design/icons'
import { SaveOutlined, LinkOutlined, PlusOutlined, CodeSandboxCircleFilled, QuestionCircleOutlined, FilePdfOutlined, FilePdfFilled } from '@ant-design/icons'
import NiceForm from '@/components/NiceForm'
import { orderDetailSchema, orderAddSchema, mergeAllSchemas } from './schema'
import { useModelTypeChange, useEditHideField, useOrderFormInitEffect, useProductTableChangeForPay } from './effects'
......@@ -17,6 +17,7 @@ import InquiryModalTable from './components/inquiryModalTable'
import DemandModalTable from './components/demandModalTable'
import CirculationRecord from '../components/circulationRecord'
import SelectAddress from './components/selectAddress'
import SelectContract from './components/selectContract'
import TheInvoiceList from './components/theInvoiceList'
import moment from 'moment'
import { usePaymentInfo } from './model/usePaymentInfo'
......@@ -30,6 +31,7 @@ import { changeRouterTitleByStatus } from '../../_public/order/utils'
import { ReadyAddOrderDetailContext } from '../context'
import AuditProcess from '@/components/AuditProcess'
import styles from './index.less'
import SimpleElectronModal from './components/simpleElectronModal'
export interface PurchaseOrderDetailProps {}
......@@ -44,6 +46,19 @@ const RowStyle = styled(props => <Row style={{marginTop: 12}} justify='end' {...
}
`
const help = (title, desc) => {
return (
<div>
<span>{title}</span>
<Tooltip title={desc}>
<QuestionCircleOutlined
style={{ margin: "0 3px", cursor: "default", marginLeft: 3 }}
/>
</Tooltip>
</div>
);
};
const addSchemaAction = createFormActions()
// 总计金额联动框
......@@ -109,6 +124,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
const memberRef = useRef<any>({})
const inquiryRef = useRef<any>({})
const demandRef = useRef<any>({})
const contractRef = useRef<any>({})
const [formLoading, setFormLoading] = useState(false)
const [btnLoading, setBtnLoading] = useState(false)
const update = useUpdate()
......@@ -170,13 +186,20 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}, [])
const handleSubmit = async (value) => {
let processEnum = addSchemaAction.getFieldValue('processEnum')
let usingElectronicContracts = addSchemaAction.getFieldValue('usingElectronicContracts')
let signatureLogId = addSchemaAction.getFieldValue("signatureLogId")
console.log(processEnum, usingElectronicContracts, signatureLogId)
if(processEnum === 24 && usingElectronicContracts && !signatureLogId) {
contractRef.current.setVisible(true)
return ;
}
try {
let fnResult = null
// 可做新增/修改的判断
// if (lastTypeParams === 'add') {
// } else if (lastTypeParams === 'edit') {
// }
switch (page_type) {
case '0': {
......@@ -243,6 +266,10 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
if(!judgementByCount || judgementByCount.includes(false)){
throw new Error('请填写商品采购数量')
}
// 校验简单电子合同必选
if(processEnum === 24 && !usingElectronicContracts){
throw new Error('此订单必须签署电子合同')
}
// logistics render字段字符串化
params.orderProductRequests = params.orderProductRequests.map(item => {
let logistics: any = { ...item.logistics, render: item.logistics?.render ? JSON.stringify(item.logistics.render) : '' };
......@@ -262,7 +289,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
setTimeout(() => {
history.goBack()
}, 1000)
// history.replace('/memberCenter/tranactionAbility/purchaseOrder/readyAddOrder')
} else {
setBtnLoading(false)
}
......@@ -379,7 +405,8 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
onSubmit={handleSubmit}
components={{
SelectAddress,
TheInvoiceList
TheInvoiceList,
SelectContract
}}
effects={($, ctx) => {
$('onFormMount').subscribe(() => {
......@@ -478,7 +505,8 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
orderCombination,
addNewAddress,
CirculationRecord: <CirculationRecord/>,
handleQuotation: (value) => addSchemaAction.getFieldValue('orderModel') === OrderModalType.CONSOLIDATED_ORDER && !!value
handleQuotation: (value) => addSchemaAction.getFieldValue('orderModel') === OrderModalType.CONSOLIDATED_ORDER && !!value,
help,
}}
/>
</Card>
......@@ -489,6 +517,10 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
{/* 需求报价单弹窗 */}
<DemandModalTable currentRef={demandRef} schemaAction={addSchemaAction}/>
{/* 简单流程签合同弹窗 */}
<SimpleElectronModal currentRef={contractRef} schemaAction={addSchemaAction}/>
</ReadyAddOrderDetailContext.Provider>
</PageHeaderWrapper>
)
......
......@@ -343,11 +343,26 @@ const ortherInfo: ISchema = {
wrapperCol: 10
},
properties: {
usingElectronicContracts: {
type: "number",
title: "{{help('电子合同','勾选则表示同意签署电子合同,电子合同和纸质合同一样具备同等法律效力')}}",
"x-component-props": {
// disabled: true,
contract: {},
},
"x-component": "selectContract",
// default: true,
required: true,
visible: false,
},
needTheInvoice: {
type: 'number',
"x-component": 'CheckboxSingle',
"x-component-props": {
children: '需要发票'
children: '需要发票',
style: {
marginTop: 4,
}
},
title: '发票',
default: 0,
......@@ -394,10 +409,22 @@ const ortherInfo: ISchema = {
},
// 仅进货单下单传入接口使用
shopId: {
type: 'string',
type: 'number',
title: '店铺ID',
visible: false
},
// 仅简单流程使用合同情况下使用
processEnum: {
type: 'number',
title: '工作流枚举',
visible: false
},
// 合同签署记录id
signatureLogId: {
type: "number",
title: '合同签署记录id',
visible: false
},
}
}
}
......
......@@ -20,7 +20,6 @@ import { createFormActions } from '@formily/antd'
export interface SaleOrderProps { }
const fetchTableData = async (params) => {
console.log(params, 'ppp')
const { data } = await PublicApi.getOrderPurchaseOrderList(params)
return data
}
......
......@@ -43,6 +43,7 @@ const AddRule:React.FC<{}> = (props) => {
addSchemaAction.getFieldState('transactionProcesssId', state => {
let dataSource = state.dataSource.filter(item => params.transactionProcesssId === item.id)
params.transactionProcess = dataSource[0].name
params.type = dataSource[0].type
})
let res: any = {}
......
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