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

fix: 处理简单流程采购下单和签署合同整合为一次提交,处理编辑订单发票信息无法回显

parent 4bf65218
...@@ -241,7 +241,13 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => { ...@@ -241,7 +241,13 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
/* 构建表格列和data */ /* 构建表格列和data */
const constructedCallback = () => { const constructedCallback = () => {
let _col = []; let _col = [];
let col_productName = { title: '商品名称', dataIndex: '商品名称', key: '商品名称' } let col_productName = {
title: '商品名称',
dataIndex: '商品名称',
key: '商品名称',
width: "30%",
// ellipsis: true,
}
_col.push(col_productName) _col.push(col_productName)
let _priceAttribute = productSelectAttribute.filter(_item=>_item.isPrice) let _priceAttribute = productSelectAttribute.filter(_item=>_item.isPrice)
......
import React, { useState, useEffect, useRef } from 'react' import React, { useState, useEffect, useRef } from 'react'
import {history} from 'umi' import {history} from 'umi'
import { Form, Select, Checkbox, Tabs, Input, DatePicker } from 'antd' import { Form, Select, Checkbox, Tabs, Input, DatePicker, Row, Col } from 'antd'
import { inject, observer } from 'mobx-react' import { inject, observer } from 'mobx-react'
import { store } from '@/store' import { store } from '@/store'
...@@ -27,18 +27,18 @@ const { RangePicker } = DatePicker ...@@ -27,18 +27,18 @@ const { RangePicker } = DatePicker
let paramsArray = []; let paramsArray = [];
const ProductAttributeForm: React.FC<Iprops> = (props) => { const ProductAttributeForm: React.FC<Iprops> = (props) => {
const { attributesData, onRef } = props const { attributesData, onRef } = props
const [isClearFormAndDataInEdit, setIsClearFormAndDataInEdit] = useState<boolean>(false) // 编辑情况下 是否要清空商品属性表单数据和页面全局数据 const [isClearFormAndDataInEdit, setIsClearFormAndDataInEdit] = useState<boolean>(false) // 编辑情况下 是否要清空商品属性表单数据和页面全局数据
const productAttributeFormRef = useRef() const productAttributeFormRef = useRef()
const [attributeForm] = Form.useForm() const [attributeForm] = Form.useForm()
const { ProductStore } = store const { ProductStore } = store
const { const {
attributeLists, attributeLists,
setProductSelectAttribute, setProductSelectAttribute,
getProductAttributeFormParamsByEdit, getProductAttributeFormParamsByEdit,
productInfoByEdit, productInfoByEdit,
clearProductDetailsUnitPriceAndPicListInEdit clearProductDetailsUnitPriceAndPicListInEdit
} = ProductStore } = ProductStore
useEffect(()=>{ useEffect(()=>{
...@@ -69,7 +69,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -69,7 +69,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
attributeForm.resetFields() attributeForm.resetFields()
} }
}, [attributeLists]) }, [attributeLists])
/** /**
* @description 表单项改变转换数据格式,仅限“select单选、checkbox多选、输入”三类控件的改变 * @description 表单项改变转换数据格式,仅限“select单选、checkbox多选、输入”三类控件的改变
* @param {Number, Array, e} value type为1:数字id,type为2:数组id,type为3:事件对象 * @param {Number, Array, e} value type为1:数字id,type为2:数组id,type为3:事件对象
...@@ -181,7 +181,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -181,7 +181,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
</Form.Item> </Form.Item>
} }
{ {
attrItem.type === 2 && ( attrItem.isDate ? attrItem.type === 2 && ( attrItem.isDate ?
<Form.Item <Form.Item
label={attrItem.name} label={attrItem.name}
name={attrItem.id} name={attrItem.id}
...@@ -190,9 +190,9 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -190,9 +190,9 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
message: '此项为必填项' message: '此项为必填项'
}]} }]}
> >
<RangePicker <RangePicker
disabled={_isDisabled} disabled={_isDisabled}
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
format="YYYY-MM-DD" format="YYYY-MM-DD"
/> />
</Form.Item> </Form.Item>
...@@ -206,14 +206,19 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -206,14 +206,19 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
}]} }]}
> >
<Checkbox.Group <Checkbox.Group
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
disabled={_isDisabled} disabled={_isDisabled}
style={{width: "100%"}}
> >
{ <Row>
attrItem?.customerAttributeValueList.length > 0 && attrItem.customerAttributeValueList.map((item: any, index: string) => ( {
<Checkbox key={item.id} value={item.id}>{item.value}</Checkbox> attrItem?.customerAttributeValueList.length > 0 && attrItem.customerAttributeValueList.map((item: any, index: string) => (
)) <Col span={6} key={item.id}>
} <Checkbox value={item.id}>{item.value}</Checkbox>
</Col>
))
}
</Row>
</Checkbox.Group> </Checkbox.Group>
</Form.Item> </Form.Item>
) )
...@@ -271,4 +276,4 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -271,4 +276,4 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
</>) </>)
} }
export default observer(ProductAttributeForm) export default observer(ProductAttributeForm)
\ No newline at end of file
import React, { useRef, useEffect, useMemo } from 'react' import React, { useRef, useEffect, useMemo } from 'react'
import ModalForm from '@/components/ModalForm' import ModalForm from '@/components/ModalForm'
import { createFormActions } from '@formily/antd' import { createFormActions } from '@formily/antd'
import addressSchema from './schema' import addressSchema from './schema'
import './index.less' import './index.less'
import { PublicApi } from '@/services/api' import { PublicApi } from '@/services/api'
export interface InvoiceModalProps { export interface InvoiceModalProps {
mode: 'add' | 'edit' | 'preview' | 'default', mode: 'add' | 'edit' | 'preview' | 'default',
currentRef?: any, currentRef?: any,
formInitValue?: any, formInitValue?: any,
reload?() reload?()
} }
const schemaActions = createFormActions() const schemaActions = createFormActions()
const modelTitle = { const modelTitle = {
'add': '新增发票', 'add': '新增发票',
'edit': "编辑发票", 'edit': "编辑发票",
'preview': '查看发票' 'preview': '查看发票'
} }
const InvoiceModal:React.FC<InvoiceModalProps> = (props) => { const InvoiceModal:React.FC<InvoiceModalProps> = (props) => {
const { mode, formInitValue } = props const { mode, formInitValue } = props
const selfInitValue = useMemo(() => mode === 'add' ? null : formInitValue, [mode, formInitValue]) const selfInitValue = useMemo(() => mode === 'add' ? null : formInitValue, [mode, formInitValue])
// 由于默认是number类型, 但switch组件只接收boolean // 由于默认是number类型, 但switch组件只接收boolean
if (selfInitValue) { if (selfInitValue) {
selfInitValue.isDefault = !!selfInitValue.isDefault selfInitValue.isDefault = !!selfInitValue.isDefault
} }
const resetForm = () => { const resetForm = () => {
schemaActions.reset({validate: false}) schemaActions.reset({validate: false})
} }
const handleConfirm = () => { const handleConfirm = () => {
if (mode === 'preview') { if (mode === 'preview') {
props.currentRef.current.setVisible(false) props.currentRef.current.setVisible(false)
return ; return ;
} }
schemaActions.submit() schemaActions.submit()
} }
const handleSubmit = async (value) => { const handleSubmit = async (value) => {
const params = { const params = {
...value, ...value,
isDefault: value.isDefault ? 1 : 0 isDefault: value.isDefault ? 1 : 0
} }
const fn = mode === 'edit' ? PublicApi.postSettleAccountsInvoiceMessageUpdate : PublicApi.postSettleAccountsInvoiceMessageAdd const fn = mode === 'edit' ? PublicApi.postSettleAccountsInvoiceMessageUpdate : PublicApi.postSettleAccountsInvoiceMessageAdd
await fn(params) await fn(params)
resetForm() resetForm()
props.currentRef.current.setVisible(false) props.currentRef.current.setVisible(false)
props.reload && props.reload() props.reload && props.reload()
} }
return ( return (
<ModalForm <ModalForm
modalTitle={modelTitle[mode]} modalTitle={modelTitle[mode]}
previewPlaceholder=" " previewPlaceholder=" "
confirm={handleConfirm} confirm={handleConfirm}
cancel={resetForm} cancel={resetForm}
value={selfInitValue} value={selfInitValue}
editable={mode !== 'preview'} editable={mode !== 'preview'}
effects={($, { setFieldState }) => { effects={($, { setFieldState }) => {
$('onFormMount').subscribe(() => { $('onFormMount').subscribe(() => {
}) })
}} }}
currentRef={props.currentRef} currentRef={props.currentRef}
actions={schemaActions} actions={schemaActions}
schema={addressSchema} schema={addressSchema}
onSubmit={handleSubmit} onSubmit={handleSubmit}
/> modalProps={{
) destroyOnClose: true
} }}
/>
InvoiceModal.defaultProps = {} )
}
export default InvoiceModal
InvoiceModal.defaultProps = {}
export default InvoiceModal
...@@ -61,7 +61,7 @@ const SimpleElectronModal:React.FC<SimpleElectronModalProps> = (props) => { ...@@ -61,7 +61,7 @@ const SimpleElectronModal:React.FC<SimpleElectronModalProps> = (props) => {
signatureState.current = null signatureState.current = null
setVisible(false) setVisible(false)
schemaAction.setFieldValue("signatureLogId", res.data.signatureLogId) schemaAction.setFieldValue("signatureLogId", res.data.signatureLogId)
message.success("操作成功") // message.success("操作成功")
} }
}, 2000) }, 2000)
} }
......
...@@ -156,9 +156,8 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -156,9 +156,8 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
) )
const { productAddButton, productRef, productColumns, productComponents, ...sectionProps } = useProductTable(addSchemaAction) const { productAddButton, productRef, productColumns, productComponents, ...sectionProps } = useProductTable(addSchemaAction)
let timerSignature = null
// 页面进入时, 当前所处的下单模式 // 页面进入时, 当前所处的下单模式
useEffect(() => { useEffect(() => {
if (id) { if (id) {
setFormLoading(true) setFormLoading(true)
...@@ -185,7 +184,13 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -185,7 +184,13 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
} }
} }
return () => {
clearInterval(timerSignature)
timerSignature = null
}
}, []) }, [])
const handleSubmit = async (value) => { const handleSubmit = async (value) => {
let _orderProductRequests = JSON.parse(JSON.stringify(value.orderProductRequests)) let _orderProductRequests = JSON.parse(JSON.stringify(value.orderProductRequests))
let processEnum = value['processEnum'] let processEnum = value['processEnum']
...@@ -194,6 +199,15 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -194,6 +199,15 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
let electronicContractId = value['electronicContractId'] let electronicContractId = value['electronicContractId']
if(processEnum === 24 && usingElectronicContracts && !signatureLogId) { if(processEnum === 24 && usingElectronicContracts && !signatureLogId) {
setBtnLoading(true) setBtnLoading(true)
// 监听 是否完成签合同 提交订单
timerSignature = setInterval(() => {
let __signatureLogId = addSchemaAction.getFieldValue("signatureLogId")
if(__signatureLogId) {
clearInterval(timerSignature)
timerSignature = null
addSchemaAction.submit()
}
}, 1000)
// 生成并签署合同 // 生成并签署合同
if(electronicContractId) { if(electronicContractId) {
fetchOrderApi.createContract({ fetchOrderApi.createContract({
...@@ -213,7 +227,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -213,7 +227,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
orderModel: value['orderModel'], orderModel: value['orderModel'],
deliveryAddresId: value['deliveryAddresId']["id"], deliveryAddresId: value['deliveryAddresId']["id"],
}).then(_data => { }).then(_data => {
setBtnLoading(false) // setBtnLoading(false)
if(_data?.contractName) { if(_data?.contractName) {
addSchemaAction.setFieldState("usingElectronicContracts", state => { addSchemaAction.setFieldState("usingElectronicContracts", state => {
state.props["x-component-props"].contract = { contractTemplateId: electronicContractId, ..._data, } state.props["x-component-props"].contract = { contractTemplateId: electronicContractId, ..._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