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

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

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