Commit bd587335 authored by rex's avatar rex

新增 送货单 SRM 的业务操作

parent 93cc9536
import { HandelFormFieldsKeyValue } from "@/utils/form";
import { FormInstance, message } from "antd"
import { postOrderDeliveryOrderSrmCreate } from '@/services/OrderNewV2Api';
export class HandleFormSubmit {
......@@ -14,6 +16,10 @@ export class HandleFormSubmit {
return this.#tableData;
}
getForm() {
return this.#form;
}
getSubmitRequest(): (vals: any) => Promise<any> {
return () => Promise.resolve('');
}
......@@ -27,7 +33,11 @@ export class HandleFormSubmit {
}
handleBeforeRequestParamas(...args): any {
return {};
let result = {}
for (const arg of args) {
result = { ...result, ...arg }
}
return result;
}
validateFormFields() {
......@@ -38,7 +48,7 @@ export class HandleFormSubmit {
}
submit() {
if (this.handleBeforeFields()) return;
if (this.handleBeforeFields()) return Promise.reject("error");
return this.validateFormFields()
}
......@@ -76,3 +86,35 @@ export class ReceivingNoteAddService extends HandleFormSubmit {
}
export class DeliveryNoteAddService extends HandleFormSubmit {
handleBeforeFields(): boolean {
let b = this.getTableData().some((v) => Number(v.deliveryCount) < Number(v.purchaseCount))
if (b) {
message.error('收货数量不能少于送货数量')
}
return b;
}
getSubmitRequest() {
return postOrderDeliveryOrderSrmCreate;
}
validateFormFields() {
return this.getForm().validateFields().then(values => {
values = HandelFormFieldsKeyValue(values)
values.deliveryStartTime = values.deliveryRangeTime[0]
values.deliveryEndTime = values.deliveryRangeTime[1]
values.buyerRoleId = 1
values.buyerMemberId = 1
values.receiveVO.consignee = values.receiveVO.shipperName
var params = this.handleBeforeRequestParamas(values, { products: this.getTableData() });
return this.getSubmitRequest()(params)
})
}
}
......@@ -5,18 +5,19 @@
*/
import AnchorPage, { AnchorsItem } from '@/components/AnchorPage'
import React, { useCallback, useEffect, useState, useContext } from 'react'
import { BillsInfo, BuyerLabel, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel } from '../../constants'
import { BillsInfo, BuyerLabel, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel, ReceivingAddress } from '../../constants'
import { BaseInfo as ContentBox } from '@/components/BaseInfo'
import { Input, Table, Row, Col, Select, Radio, Form, Button } from 'antd';
import { DeliveryNoticeTableColumn } from '../../constants/page-table-column';
import { FormItem } from '@/components/FormItem';
import { DatePickerSelect } from '@/components/DatePickerSelect'
import DatePicker from '@/components/DatePicker';
import { AddressDrawer } from '@/components/AddressDrawer';
import { getLogisticsSelectListShipperAddress, postLogisticsShipperAddressAdd, postLogisticsShipperAddressUpdate } from '@/services/LogisticsV2Api';
import DeliveryGoodTableSelect from '../../components/DeliveryGoodTableSelect/DeliveryGoodTableSelect';
import { HarvestMaterialContextProvider, HarvestMaterialContext } from '../../assets/context';
import moment from 'moment';
import { HandelFormFieldsKeyValue } from '@/utils/form';
import { DeliveryNoteAddService } from '../../assets/handles/HandleFormSubmit';
const ContentBoxItem = ContentBox.BaseInfoItem;
......@@ -49,8 +50,9 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
"phone": "demoData"
}
]);
const dataSource$ = useContext(HarvestMaterialContext)
const [form] = Form.useForm()
const service = new DeliveryNoteAddService(form);
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
......@@ -60,6 +62,8 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
DeliveryGood,
])
const initData = {
"digest": "11",
"remark": "22",
......@@ -67,17 +71,26 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
"deliveryTime": moment('2015-01-14'),
"executorVO.consignee": "莫雷 ",
"deliveryRangeTime": [
moment('2015-01-15'),
moment('2015-01-16')
moment('2015-01-15 14:17:30'),
moment('2015-01-16 14:45:30')
],
"executorVO.phone": "13286326255",
"sendTime": moment('2015-01-14 08:25:21'),
"receiveVO": {
"id": 5,
"shipperName": "李工",
"address": "和平路",
"cityCode": "120100",
"cityName": "天津市",
"districtCode": "120102",
"districtName": "河东区",
"fullAddress": "天津市天津市河东区和平路",
"id": 5,
"isDefault": 1,
"phone": "18800000000",
"isDefault": 1
"provinceCode": "120000",
"provinceName": "天津市",
"shipperName": "李工",
"streetCode": null,
"streetName": null
},
"deliveryType": 1,
"executorVO.carNumbers": "11234",
......@@ -90,10 +103,16 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
}, [])
const handleSubmit = useCallback(() => {
// console.log(form.getFieldsValue())
console.log(tableDataSource)
let field = HandelFormFieldsKeyValue(form.getFieldsValue());
service.setTableData(tableDataSource);
service.submit().then(res => {
console.log(res)
});
}, [form, tableDataSource])
return (
<AnchorPage title="送货单管理详情(SRM)"
anchors={anchors}
......@@ -106,6 +125,10 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<Form
form={form}
>
<FormItem name="sourceType">
<Input value={1} type="hidden" />
</FormItem>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<FormItem label={DeliveryAbstractLabel} name="digest">
<Input />
......@@ -144,7 +167,7 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<DatePickerSelect className="w-full" />
</FormItem>
<FormItem label={DeliveryAddrLabel} name="receiveVO">
<FormItem label={ReceivingAddress} name="receiveVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListShipperAddress(val)
......@@ -177,7 +200,7 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
</FormItem>
<FormItem label={LogisticsCompanyLabel} name="logisticsCompanyId">
<Select>
<Select.Option>顺丰快递</Select.Option>
<Select.Option value="顺丰快递">顺丰快递</Select.Option>
</Select>
</FormItem>
<FormItem label={LogisticsNoLabel} name="logisticsNo">
......
import moment, { isMoment, Moment } from "moment";
export function HandelFormFieldsKeyValue(fields) {
let result = {}
for (const field in fields) {
const split = field.split('.');
if (split.length > 1) {
//为空的时候创建一个默认对象
if (result[split[0]] === undefined) {
result[split[0]] = {}
}
result[split[0]][split[1]] = momentFormatValue(fields[field]);
} else {
if (['deliveryRangeTime'].includes(field)) {
result[field] = fields[field].map(v => momentFormatValue(v, 'HH:mm:ss'))
} else {
result[field] = momentFormatValue(fields[field]);
}
}
}
return result;
}
export function momentFormatValue(value, format = "YYYY-MM-DD") {
return isMoment(value) ? value.format(format) : value
}
function HandelFormFieldsKeyValue() {
}
\ No newline at end of file
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