Commit 6c107f3a authored by 许佳敏's avatar 许佳敏

Merge branch '20418order' into 'v2-220418'

20418order See merge request linkseeks-design/pro-platform!136
parents 5ad80809 25d27061
......@@ -53,6 +53,22 @@ const DeliveryNotice = [
hideInMenu: true,
noMargin: true
},
{
/** 送货单新增SRM*/
path: '/memberCenter/order/deliveryNotice/manageB2B/add',
name: '送货单新增(B2B)',
component: '@/pages/order/deliveryNotice/manageB2B/add',
hideInMenu: true,
noMargin: true
},
{
/** 送货单编辑SRM*/
path: '/memberCenter/order/deliveryNotice/manageB2B/edit',
name: '送货单编辑(SRM)',
component: '@/pages/order/deliveryNotice/manageB2B/edit',
hideInMenu: true,
noMargin: true
},
{
......
......@@ -24,11 +24,13 @@ interface AddressDrawerProps {
sumbitRequest?: SumbitRequest
addressListRequest?: (values?: any) => Promise<any>
value?: any
disabled?: boolean
}
function AddressDrawer(props: AddressDrawerProps) {
const { onChange, formInstance, renderForm, sumbitRequest, addressListRequest, value: addr } = props;
const { onChange, formInstance, renderForm, sumbitRequest, addressListRequest, value: addr, disabled = false } = props;
const [visible, setVisible] = useState<boolean>(false);
const [showForm, setShowForm] = useState<boolean>(false);
......@@ -88,11 +90,11 @@ function AddressDrawer(props: AddressDrawerProps) {
<AddressRaioContextProvider value={addrList}>
<Row gutter={10}>
<Col span={20}>
<Input.TextArea value={`${value?.fullAddress} ${value?.shipperName ? value?.shipperName : value?.receiverName} ${value?.phone}`} />
<Input.TextArea disabled={disabled} value={`${value?.fullAddress} ${value?.shipperName ? value?.shipperName : value?.receiverName} ${value?.phone}`} />
</Col>
<Col span={4}>
<Button className='w-full' onClick={() => setVisible(true)}>管理</Button>
<Button disabled={disabled} className='w-full' onClick={() => setVisible(true)}>管理</Button>
</Col>
</Row>
......
export { default as FormItem } from './FormItem'
\ No newline at end of file
export { default as FormItem } from './FormItem'
export const required = (msg: string = "") => {
return (
{
required: true,
message: msg
}
)
}
\ No newline at end of file
import LogisticsCompanySelect, { CooperateType } from "./LogisticsCompanySelect"
function LogisticsCompanyMerchantsSelect(props) {
const { onChange } = props;
const { onChange,value,disabled=false } = props;
return (
<LogisticsCompanySelect onChange={onChange} cooperateType={CooperateType.Merchants} />
<LogisticsCompanySelect disabled={disabled} value={value} onChange={onChange} cooperateType={CooperateType.Merchants} />
)
}
......
......@@ -10,11 +10,13 @@ export enum CooperateType {
interface LogisticsCompanySelectProps {
onChange?: (value) => void
cooperateType: CooperateType.Platform | CooperateType.Merchants
value?: any
disabled?: boolean
}
function LogisticsCompanySelect(props: LogisticsCompanySelectProps) {
const { onChange, cooperateType } = props;
const { onChange, cooperateType, value, disabled = false } = props;
const [options, setOptions] = useState([]);
useEffect(() => {
......@@ -38,7 +40,7 @@ function LogisticsCompanySelect(props: LogisticsCompanySelectProps) {
}
return (
<Select options={options} onChange={(v) => {
<Select disabled={disabled} value={value} options={options} onChange={(v) => {
const option = options.find(o => {
return o.value == v
})
......
import { Button, Col, Drawer, Form, Input, Radio, Row, Table } from "antd";
import { useCallback, useEffect, useState } from "react";
import { TableMemberColumn } from "./columns";
import {
import {
///member/manage/lower/consumer/member/page
getMemberManageLowerProviderMerchantPage,
getMemberManageUpperProviderMerchantPage,
getMemberManageLowerConsumerMemberPage
getMemberManageLowerConsumerMemberPage,
getMemberManageUpperConsumerMerchantPage
} from '@/services/MemberV2Api';
interface RoleSelectProps {
request?: (payload: any) => Promise<any>
params?: object
onChange?: (e) => void
value?: any
formatFeils?: (e) => any
disabled?: boolean
}
/**
......@@ -21,13 +25,11 @@ interface RoleSelectProps {
*/
function RoleSelect(props: RoleSelectProps) {
const { request, params, onChange } = props
const { request, params, onChange, value, formatFeils = (e) => e, disabled = false } = props
const [visible, setVisible] = useState(false);
const [form] = Form.useForm()
const [dataSource, setDataSource] = useState([])
const [intV, setIntV] = useState<any>();
const showDrawer = useCallback(() => {
setVisible(true)
}, [visible])
......@@ -38,24 +40,26 @@ function RoleSelect(props: RoleSelectProps) {
useEffect(() => {
fetchData()
}, [])
const fetchData = () => {
request({
...params,
...form.getFieldsValue()
...form.getFieldsValue(),
}).then(res => {
setDataSource(res.data.data)
})
}, [])
}
return (
<>
<Row gutter={4}>
<Col span={18}>
<Input value={intV?.name} disabled/>
<Input value={value?.name} disabled={disabled} />
</Col>
<Col span={6}>
<Button onClick={showDrawer}>选择采购会员</Button>
<Button disabled={disabled} onClick={showDrawer}>选择采购会员</Button>
</Col>
</Row>
......@@ -72,15 +76,15 @@ function RoleSelect(props: RoleSelectProps) {
</Button.Group>
}
>
<Form>
<Form form={form}>
<Form.Item name="name">
<Input.Search />
<Input.Search onSearch={() => { fetchData() }} />
</Form.Item>
</Form>
<Radio.Group className="block w-full" onChange={(e) => {
const value = e.target.value
setIntV(value)
onChange(value)
let target = props.formatFeils(value)
onChange(target)
}}>
<Table
className="w-full"
......@@ -95,8 +99,8 @@ function RoleSelect(props: RoleSelectProps) {
);
}
RoleSelect.defaultProps = {
request: getMemberManageLowerConsumerMemberPage,
request: getMemberManageUpperConsumerMerchantPage,
params: {},
onChange: (e) => {}
onChange: (e) => { }
}
export default RoleSelect;
\ No newline at end of file
import { Input } from 'antd';
import { Button, Input } from 'antd';
import React, { useCallback, useContext, useState } from 'react';
import { HarvestMaterialMock } from '../mock/HarvestMaterialMock';
......@@ -37,4 +37,22 @@ export function HarvestMaterialInput(props: {
}
return <Input {...props} value={inputVal} onChange={handleChange} />
}
export function HarvestMaterialDelete(props: {
index: number
}) {
const context = useContext(HarvestMaterialContext);
const { index } = props;
const handleClick = (e) => {
const { dataSource } = context;
const r = dataSource.splice(index, 0)
context.dataSource = r;
}
return (
<Button onClick={handleClick} type="link">删除</Button>
)
}
\ No newline at end of file
import { getOrderDeliveryOrderDetail, getOrderDeliveryOrderDetailProductPage, getOrderDeliveryOrderSrmPage } from '@/services/OrderNewV2Api';
import {
getOrderDeliveryOrderDetail,
getOrderDeliveryOrderDetailProductPage,
getOrderDeliveryOrderSrmPage,
getOrderDeliveryOrderB2bPage,
getOrderDeliveryOrderReceivePage
} from '@/services/OrderNewV2Api';
/**
* 送货单服务基类
*/
class NoteService {
class NoteSrmService {
#deliveryType = new Map([[1, '物流'], [2, '自提'], [3, '无需配送']])
#deliveryType = new Map([[1, '物流'], [2, '自提'], [3, '无需配送']])
getQuery(params: any) {
return getOrderDeliveryOrderSrmPage(params).then(res => {
return res.data
})
}
getQuery(params: any) {
return getOrderDeliveryOrderSrmPage(params).then(res => {
return res.data
})
}
getDetailInfoById(id: string) {
return getOrderDeliveryOrderDetail({
id
}).then(res => {
return res.data
})
}
getDetailInfoById(id: string) {
return getOrderDeliveryOrderDetail({
id
}).then(res => {
return res.data
})
}
getDetailInfoProductById(id: string, current: string = "1", pageSize: string = "10") {
return getOrderDeliveryOrderDetailProductPage({
id,
current,
pageSize
}).then(res => res.data)
}
getDetailInfoProductById(id: string, current: string = "1", pageSize: string = "10") {
return getOrderDeliveryOrderDetailProductPage({
id,
current,
pageSize
}).then(res => res.data)
}
getDeliveryType(type?: number) {
/**
* 默认是物流
*/
if (!this.#deliveryType.has(type)) {
return this.#deliveryType.get(1);
}
return this.#deliveryType.get(type)
getDeliveryType(type?: number) {
/**
* 默认是物流
*/
if (!this.#deliveryType.has(type)) {
return this.#deliveryType.get(1);
}
return this.#deliveryType.get(type)
}
}
class NoteB2bService extends NoteSrmService {
getQuery(params: any) {
return getOrderDeliveryOrderB2bPage(params).then(res => {
return res.data
})
}
}
}
/**
* 送货单 收货单详情 服务
*/
class NoteReceiveService extends NoteSrmService {
getQuery(params: any) {
return getOrderDeliveryOrderReceivePage(params).then(res => {
return res.data
})
}
}
export default class NoteFactoryService {
static getInstance() {
return new NoteService()
static getInstance(noteType: "srm" | "b2b" | "receive" = "srm") {
if (noteType === 'srm') {
return new NoteSrmService()
}
if (noteType === 'b2b') {
return new NoteB2bService()
}
if (noteType === 'receive') {
return new NoteReceiveService()
}
}
}
......@@ -13,11 +13,12 @@ class DeliveryNoticeOrder {
getOrderDeliveryPlanOrderProductPage(form: FormInstance) {
let fields = form.getFieldsValue();
console.log(fields)
let payload: any = {
memberId: fields.member?.buyerMemberId,
roleId: fields.member?.buyerRoleId,
roleType: fields.member?.roleType,
orderType: 1,
orderType: 2,
current: 1,
pageSize: 100,
// startDate: '2022-03-22',
......
import { HandelFormFieldsKeyValue } from "@/utils/form";
import { FormInstance, message } from "antd"
import { postOrderDeliveryOrderSrmCreate } from '@/services/OrderNewV2Api';
import {
getOrderDeliveryOrderDetail,
getOrderDeliveryOrderDetailProductPage,
postOrderDeliveryOrderSrmCreate,
postOrderDeliveryOrderUpdate,
postOrderDeliveryOrderB2bCreate,
postOrderReceiveOrderCreate
} from '@/services/OrderNewV2Api';
import moment from "moment";
export class HandleFormSubmit {
#form: FormInstance
......@@ -48,6 +56,58 @@ export class HandleFormSubmit {
})
}
getDetailById(id: string) {
///order/delivery/order/detail
return getOrderDeliveryOrderDetail({ id }).then(res => {
const data = res.data
console.log(data.deliverVO)
let formField = {
digest: data.digest,
remark: data.remark,
member: {
buyerMemberId: data.buyerMemberId,
buyerMemberName: data.buyerMemberName,
buyerRoleId: data.buyerRoleId,
roleType: 2,
name: data.buyerMemberName
},
deliveryTime: moment(data.deliveryTime),
deliveryRangeTime: [
moment("1990-10-10 " + data.deliveryStartTime),
moment("1990-10-10 " + data.deliveryEndTime),
],
deliveryVO: {
...data.deliverVO,
shipperName: data.deliverVO.consignee,
fullAddress: data.deliverVO.provinceName + data.deliverVO.cityName + data.deliverVO.districtName + data.deliverVO.streetName ?? ''
},
receiveVO: {
...data.receiverBO,
receiverName: data.receiverBO.consignee,
fullAddress: data.receiverBO.provinceName + data.receiverBO.cityName + data.receiverBO.districtName + data.receiverBO.streetName ?? ''
},
deliveryType: data.deliveryType,
"executorVO.phone": data.executorVO.phone,
sendTime: moment(data.sendTime),
"executorVO.carNumbers": data.executorVO.carNumbers,
logisticsNo: data.logisticsNo,
logisticsCompanyInt: {
label: data.logisticsCompany,
value: data.logisticsCompanyId
},
outerHistoryList: data.outerHistoryList,
deliveryNo: data.deliveryNo
}
return formField
})
}
getOrderDeliveryOrderDetailProductPage(payload?: any) {
return getOrderDeliveryOrderDetailProductPage(payload).then(res => {
return res.data;
})
}
submit() {
if (this.handleBeforeFields()) return Promise.reject("error");
return this.validateFormFields()
......@@ -89,7 +149,14 @@ export class ReceivingNoteAddService extends HandleFormSubmit {
export class DeliveryNoteAddService extends HandleFormSubmit {
handleBeforeFields(): boolean {
let b = this.getTableData().some((v) => Number(v.deliveryCount) < Number(v.purchaseCount))
let b = this.getTableData().map(v => {
return {
...v,
deliveryCount: v.deliveryCount ? v.deliveryCount : v.purchaseCount
}
}).some((v) => {
return Number(v.deliveryCount) < Number(v.purchaseCount)
})
if (b) {
message.error('收货数量不能少于送货数量')
}
......@@ -113,22 +180,63 @@ export class DeliveryNoteAddService extends HandleFormSubmit {
values.receiveVO.consignee = values.receiveVO.shipperName
values.deliveryVO.consignee = values.deliveryVO.receiverName
values.logisticsCompanyId = values.logisticsCompanyInt.value
values.logisticsCompany = values.logisticsCompanyInt.label
values.logisticsCompanyId = values?.logisticsCompanyInt?.value ?? ''
values.logisticsCompany = values?.logisticsCompanyInt?.label ?? ''
values.sendTime = moment(values.sendTime).format('YYYY-MM-DD HH:mm:ss')
console.log(values)
var params = this.handleBeforeRequestParamas(values, { products: this.getTableData().map(v=>{
return {
...v,
createTime:moment(v.createTime).format('YYYY-MM-DD HH:mm:ss')
}
}) });
var params = this.handleBeforeRequestParamas(values, {
products: this.getTableData().map(v => {
return {
...v,
deliveryCount: v.deliveryCount ? v.deliveryCount : v.purchaseCount,
createTime: moment(v.createTime).format('YYYY-MM-DD HH:mm:ss')
}
})
});
console.log(params);
return this.getSubmitRequest()(params)
})
}
}
export class DeliveryNoteUploadService extends DeliveryNoteAddService {
handleBeforeFields(): boolean {
return false;
}
getSubmitRequest(): any {
return postOrderDeliveryOrderUpdate
}
}
//新增送货单B2B
export class ReceivingNoteB2BAddService extends DeliveryNoteAddService {
getSubmitRequest() {
return postOrderDeliveryOrderB2bCreate;
}
}
export class DeliveryNoteB2bUploadService extends DeliveryNoteUploadService {
}
export class ReceiveOrderCreate extends DeliveryNoteAddService {
handleBeforeRequestParamas(...arg) {
return {
...arg[0],
receiveTime: arg[0].deliveryTime + " " + arg[0].deliveryEndTime,
products: arg[1].products.map(v => {
return {
deliveryOrderProductId: v.id,
receiveCount: v.deliveryCount
}
})
}
}
getSubmitRequest(): (vals: any) => Promise<any> {
return postOrderReceiveOrderCreate
}
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import NoteFactoryService from '../handles/DeliveryNoteService';
export function useDetailInfoById(id) {
const [info, setInfo] = useState<any>();
const service = NoteFactoryService.getInstance();
useEffect(() => {
service.getDetailInfoById(id).then(res => {
setInfo(res as any)
})
}, [])
return [info];
}
......@@ -8,8 +8,8 @@ import ExpandedRowTableRender from "./ExpandedRowTableRender";
const selectedRowKeys = new Map()
interface DeliveryGoodTableModalProps {
form: FormInstance
onChange: (value) => void
form: FormInstance
onChange: (value) => void
}
/**
......@@ -19,100 +19,101 @@ interface DeliveryGoodTableModalProps {
*/
function DeliveryGoodTableModal(props: DeliveryGoodTableModalProps) {
const { onChange, form } = props;
const { onChange, form } = props;
const [visible, setVisible] = useState(false)
const service = DeliveryNoticeOrderFactory.getInstance()
const [tableData, setTableData] = useState([])
const [visible, setVisible] = useState(false)
const service = DeliveryNoticeOrderFactory.getInstance()
const [tableData, setTableData] = useState([])
const handleVisible = useCallback(() => {
setVisible(true)
}, [visible])
const handleVisible = useCallback(() => {
setVisible(true)
}, [visible])
const handleSubmit = useCallback(() => {
let result = []
for (const v of selectedRowKeys) {
result.push(...v[1])
}
setVisible(false)
onChange(result)
}, [visible])
useEffect(() => {
service.getOrderDeliveryPlanOrderProductPage(form).then(res => {
if (isNull(res)) return;
const data = res.data
let result = data.map(v => {
return {
...v,
id: guid()
}
})
setTableData(result)
})
}, [visible])
const handleSubmit = useCallback(() => {
let result = []
for (const v of selectedRowKeys) {
result.push(...v[1])
}
setVisible(false)
onChange(result)
}, [visible])
const expandedRowRender = (record, index) => {
let data = record;
useEffect(() => {
service.getOrderDeliveryPlanOrderProductPage(form).then(res => {
if (isNull(res)) return;
const data = res.data
let result = data.map(v => {
return {
...v,
id: guid()
}
})
setTableData(result)
selectedRowKeys.clear()
})
}, [visible])
let combination = (record.orders as any[]).map(v => {
let result = {
...record,
...v,
}
delete result['orders']
return result
})
const expandedRowRender = (record, index) => {
let data = record;
return (
<ExpandedRowTableRender
row={data.id}
dataSource={combination}
onChange={(keys, index) => {
selectedRowKeys.set(index, keys);
}}
/>
);
}
let combination = (record.orders as any[]).map(v => {
let result = {
...record,
...v,
}
delete result['orders']
return result
})
return (
<>
<div className='mt-16'>
<Button onClick={handleVisible}>选择物流</Button>
</div>
<ExpandedRowTableRender
row={data.id}
dataSource={combination}
onChange={(keys, index) => {
selectedRowKeys.set(index, keys);
}}
/>
);
}
<Drawer
title="选择送货物料"
visible={visible}
width="90vw"
onClose={() => { setVisible(false) }}
footer={
<Button.Group>
<Button type="primary" onClick={handleSubmit}>确认</Button>
</Button.Group>
}
>
return (
<>
<div className='mt-16'>
<Button onClick={handleVisible}>选择物流</Button>
</div>
{
tableData.map(t => {
return (
<Table
className="mt-16"
columns={PlannedDeliveryMaterialTableColumn}
rowKey={row => row.orderProductId}
dataSource={[t]}
expandedRowRender={expandedRowRender}
defaultExpandAllRows={true}
expandIcon={() => ""}
pagination={false}
/>
)
})
}
<Drawer
title="选择送货物料"
visible={visible}
width="90vw"
onClose={() => { setVisible(false) }}
footer={
<Button.Group>
<Button type="primary" onClick={handleSubmit}>确认</Button>
</Button.Group>
}
>
</Drawer>
</>
);
{
tableData.map(t => {
return (
<Table
className="mt-16"
columns={PlannedDeliveryMaterialTableColumn}
rowKey={row => row.orderProductId}
dataSource={[t]}
expandedRowRender={expandedRowRender}
defaultExpandAllRows={true}
expandIcon={() => ""}
pagination={false}
/>
)
})
}
</Drawer>
</>
);
}
export default DeliveryGoodTableModal;
\ No newline at end of file
......@@ -2,7 +2,8 @@
* 订单模块 Table Column 组装
* @author: 莫雷
*/
import { HarvestMaterialInput } from "../assets/context";
import { Button } from "antd";
import { HarvestMaterialDelete, HarvestMaterialInput } from "../assets/context";
import { BrandColumn, ClassColumn, CommodityIdColumn, ConsigneeNumColumn, DeliveredNumColumn, DeliveryNumColumn, FlowNoteColumn, FlowOnColumn, FlowOptionsColumn, FlowOptionsTimeColumn, FlowRoleColumn, FlowStatusColumn, MaterialModelColumn, MaterialNameColumn, MaterialNoColumn, OrderCreatedAtColumn, OrderNoColumn, OrderSummaryColumn, OredrNumColumn, PlannedDeliveryNumColumn, TradeNameColumn, TransitNumColumn, UntilColumn } from "./table-column";
export const DeliveryNoteAddFromTableColumn: any = [
......@@ -45,19 +46,7 @@ export const DeliveryNoticeTableColumn: any = [
UntilColumn,
OrderNoColumn,
OrderCreatedAtColumn,
OredrNumColumn,
{
...DeliveryNumColumn,
render: (t, rcode, index) => {
return (
<HarvestMaterialInput
value={rcode[OredrNumColumn.key]}
index={index}
keyUp="deliveryCount"
/>
)
}
}
OredrNumColumn
];
// 计划送货物料表格
......
......@@ -6,8 +6,8 @@ import dayjs from "dayjs"
*/
export const CommodityIdColumn: any = {
title: '商品ID',
dataIndex: 'orderProductId',
key: 'orderProductId',
dataIndex: 'skuId',
key: 'skuId',
align: 'center',
}
......
/**
* 订单能力 - 送货单 - 送货单管理详情SRM
* @author: Gavin
* @description: 与B2B内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import AnchorPage, { AnchorsItem } from '@/components/AnchorPage'
import React, { useCallback, useEffect, useState, useContext } from 'react'
import { BillsInfo, BuyerLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, ReceivingAddress } from '../../constants'
import { BaseInfo as ContentBox } from '@/components/BaseInfo'
import { Input, Table, Radio, Form, Button } from 'antd';
import { DeliveryNoticeTableColumn } from '../../constants/page-table-column';
import { FormItem, required } from '@/components/FormItem';
import { DatePickerSelect } from '@/components/DatePickerSelect'
import { AddressDrawer } from '@/components/AddressDrawer';
import { getLogisticsSelectListReceiverAddress, getLogisticsSelectListShipperAddress, postLogisticsReceiverAddressAdd, postLogisticsReceiverAddressUpdate, postLogisticsShipperAddressAdd, postLogisticsShipperAddressUpdate } from '@/services/LogisticsV2Api';
import DeliveryGoodTableSelect from '../../components/DeliveryGoodTableSelect/DeliveryGoodTableSelect';
import { HarvestMaterialContextProvider, HarvestMaterialInput } from '../../assets/context';
import { ReceivingNoteB2BAddService } from '../../assets/handles/HandleFormSubmit';
import { RoleSelect } from '@/components/RoleSelect';
import LogisticsCompanyMerchantsSelect from '@/components/LogisticsCompanySelect/LogisticsCompanyMerchantsSelect';
import { DeliveryNumColumn, OredrNumColumn } from '../../constants/table-column';
const DeliveryNoticeManageSRMDetails: React.FC = () => {
const [tableDataSource, setTableDataSource] = useState<any[]>();
const [form] = Form.useForm()
const service = new ReceivingNoteB2BAddService(form);
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
Distribution,
DeliveryInfo,
LogisticsInfo,
DeliveryGood,
])
useEffect(() => {
form.setFieldsValue({ sourceType: 0 })
}, [])
const handleSubmit = useCallback(() => {
service.setTableData(tableDataSource);
service.submit().then(res => {
if (res.code === 1000) {
history.go(-1)
}
});
}, [form, tableDataSource])
const handleRemoveMaterialTableRow = (i: number) => {
const source: any[] = tableDataSource;
const newSource = source.splice(i, 0)
setTableDataSource(newSource);
}
return (
<AnchorPage title="送货单管理详情(SRM)"
anchors={anchors}
extra={
<Button.Group>
<Button onClick={handleSubmit} type='primary'>提交</Button>
</Button.Group>
}
>
<Form
form={form}
>
<FormItem name="sourceType">
<Input type="hidden" />
</FormItem>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<FormItem
rules={[
required()
]}
label={DeliveryAbstractLabel} name="digest">
<Input />
</FormItem>
<FormItem label={NoteLabel} name="remark">
<Input />
</FormItem>
<FormItem
rules={[
required()
]}
label={BuyerLabel} name="member">
<RoleSelect formatFeils={(e) => {
return {
buyerMemberId: e.memberId,
buyerRoleId: e.roleId,
roleType: 2,
name: e.name
}
}} />
</FormItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<FormItem
rules={[
required()
]}
label={DeliveryDateLabel} name="deliveryTime">
<DatePickerSelect className='w-full' />
</FormItem>
<FormItem
rules={[
required()
]}
label={DeliveryNameLabel} name="deliveryVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListReceiverAddress(val)
}}
sumbitRequest={{
update: (val) => {
return postLogisticsReceiverAddressUpdate(val)
},
add: (val) => {
return postLogisticsReceiverAddressAdd(val)
}
}}
/>
</FormItem>
<FormItem
rules={[
required()
]}
label={DeliveryTimeLabel} name="deliveryRangeTime">
<DatePickerSelect.RangePicker className="w-full" picker='time' />
</FormItem>
<FormItem
rules={[
required()
]}
label={DeliveryPhoneLabel} name="executorVO.phone">
<Input />
</FormItem>
</ContentBox>
<ContentBox
title={DeliveryInfo.name} id={DeliveryInfo.key}>
<FormItem
rules={[
required()
]}
label={ConsigneeTimeLabel} name="sendTime">
<DatePickerSelect className="w-full" />
</FormItem>
<FormItem
rules={[
required()
]}
label={ReceivingAddress} name="receiveVO">
<AddressDrawer
disabled={false}
addressListRequest={(val) => {
return getLogisticsSelectListShipperAddress(val)
}}
sumbitRequest={{
update: (val) => {
return postLogisticsShipperAddressUpdate(val)
},
add: (val) => {
return postLogisticsShipperAddressAdd(val)
}
}}
/>
</FormItem>
</ContentBox>
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<FormItem
rules={[
required()
]}
label={DeliveryTypeLabel} name="deliveryType">
<Radio.Group>
<Radio.Button value={1}>物流</Radio.Button>
<Radio.Button value={2}>自提</Radio.Button>
{/* <Radio.Button value={3}>无效配送</Radio.Button> */}
</Radio.Group>
</FormItem>
<FormItem label={LogisticsCarNoLabel} name="executorVO.carNumbers">
<Input />
</FormItem>
<FormItem label={LogisticsCompanyLabel} name="logisticsCompanyInt">
<LogisticsCompanyMerchantsSelect />
</FormItem>
<FormItem label={LogisticsNoLabel} name="logisticsNo">
<Input />
</FormItem>
</ContentBox>
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
{/* 在编辑的时候不需要进行此操作 */}
<DeliveryGoodTableSelect
form={form}
onChange={(value) => {
if (value.length > 0) {
let addr = {
provinceName: value[0].provinceName,
cityName: value[0].cityName,
districtName: value[0].districtName,
streetName: value[0].streetName,
address: value[0].address,
phone: value[0].phone,
consignee: value[0].consignee,
receiverName: value[0].consignee,
fullAddress: `${value[0].provinceName}${value[0].cityName}${value[0].districtName}${value[0].streetName}${value[0].address}`
}
form.setFieldsValue({
'receiveVO': addr
})
}
setTableDataSource(value)
}}
/>
<HarvestMaterialContextProvider value={{
dataSource: tableDataSource
}}>
<Table
rowKey={row => row.orderNo}
columns={
[
...DeliveryNoticeTableColumn
, {
...DeliveryNumColumn,
render: (t, rcode, index) => {
return (
<HarvestMaterialInput
value={rcode[OredrNumColumn.key]}
index={index}
keyUp="deliveryCount"
/>
)
}
}, {
title: "操作",
render: (t, r, i) => {
return (
<Button type='link' onClick={() => handleRemoveMaterialTableRow(i)}>删除</Button>
)
}
}
]}
dataSource={tableDataSource}
/>
</HarvestMaterialContextProvider>
</ContentBox>
</Form>
</AnchorPage>
)
}
export default DeliveryNoticeManageSRMDetails
\ No newline at end of file
......@@ -4,74 +4,118 @@
* @description: 与B2B内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import AnchorPage, { AnchorsItem } from '@/components/AnchorPage'
import React, { useState } from 'react'
import { BillsInfo, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel } from '../../constants'
import React, { useEffect, useState } from 'react'
import { BillsInfo, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, ExternalRoamRecord, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel } from '../../constants'
import { BaseInfo as ContentBox } from '@/components/BaseInfo'
import { Table } from 'antd';
import { DeliveryNoticeTableColumn } from '../../constants/page-table-column';
import { DeliveryNoticeTableColumn, ExternalRoamRecordTableColumn } from '../../constants/page-table-column';
import { useLocation } from 'umi';
import NoteFactoryService from '../../assets/handles/DeliveryNoteService';
import { DeliveryNumColumn } from '../../constants/table-column';
const ContentBoxItem = ContentBox.BaseInfoItem;
const DeliveryNoticeManageSRMDetails: React.FC = () => {
const location = useLocation();
const query = (location as any).query;
const service = NoteFactoryService.getInstance('b2b');
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
Distribution,
DeliveryInfo,
LogisticsInfo,
DeliveryGood,
ExternalRoamRecord
])
const [info, setInfo] = useState<any>();
const [tableDataSource, setTableDataSource] = useState([]);
const [totalCount, setTotalCount] = useState(1);
const [outerHistoryList, setOuterHistoryList] = useState([]);
useEffect(() => {
service.getDetailInfoById(query.id as string).then(res => {
setInfo(res)
})
service.getDetailInfoProductById(query.id as string).then(res => {
setTableDataSource(res.data)
setTotalCount(res.totalCount)
})
}, [])
/**
* 如果info 更新 outerHistoryList也一起更新
*/
useEffect(() => {
setOuterHistoryList(info?.outerHistoryList)
}, [info])
return (
<AnchorPage title="送货单管理详情(B2B)"
<AnchorPage title="送货单管理详情(SRM)"
anchors={anchors}
>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<ContentBoxItem label={DeliveryNoLabel}>
{info?.deliveryNo}
</ContentBoxItem>
<ContentBoxItem label={DeliveryAbstractLabel}>
{info?.digest}
</ContentBoxItem>
<ContentBoxItem label={NoteLabel}>
{info?.remark}
</ContentBoxItem>
<ContentBoxItem label={OutStatusLabel}>
{info?.outerStatusName}
</ContentBoxItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<ContentBoxItem label={DeliveryDateLabel}>
{info?.deliveryTime}
</ContentBoxItem>
<ContentBoxItem label={DeliveryNameLabel}>
{info?.deliverVO?.consignee}
</ContentBoxItem>
<ContentBoxItem label={DeliveryTimeLabel}>
{info?.sendTime}
</ContentBoxItem>
<ContentBoxItem label={DeliveryPhoneLabel}>
{info?.deliverVO?.phone}
</ContentBoxItem>
</ContentBox>
<ContentBox title={DeliveryInfo.name} id={DeliveryInfo.key}>
<ContentBoxItem label={ConsigneeTimeLabel}>
</ContentBoxItem>
<ContentBoxItem label={DeliveryAddrLabel}>
{info?.sendTime}
</ContentBoxItem>
<ContentBoxItem label={DeliverySlefAddrLabel}>
<ContentBoxItem label={info?.deliveryType === 0 ? DeliveryAddrLabel : DeliverySlefAddrLabel}>
<div>
{info?.deliverVO?.provinceName}
{info?.deliverVO?.cityName}
{info?.deliverVO?.districtName}
{info?.deliverVO?.streetName}
{info?.deliverVO?.address}
</div>
<div>
{info?.deliverVO.phone}
{info?.deliverVO.consignee}
</div>
</ContentBoxItem>
......@@ -80,26 +124,49 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<ContentBoxItem label={DeliveryTypeLabel}>
{service.getDeliveryType(info?.deliveryType)}
</ContentBoxItem>
<ContentBoxItem label={LogisticsCarNoLabel}>
{info?.executorVO?.carNumbers}
</ContentBoxItem>
<ContentBoxItem label={LogisticsCompanyLabel}>
{info?.logisticsCompany}
</ContentBoxItem>
<ContentBoxItem label={LogisticsNoLabel}>
{info?.logisticsNo}
</ContentBoxItem>
</ContentBox>
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
<Table columns={DeliveryNoticeTableColumn}/>
<Table
columns={[
...DeliveryNoticeTableColumn, {
...DeliveryNumColumn,
dataIndex: 'deliveryCount',
render: (t, rcode, index) => {
return t
}
}]}
rowKey="id"
dataSource={tableDataSource}
pagination={{
total: totalCount
}}
/>
</ContentBox>
<ContentBox title={ExternalRoamRecord.name} key={ExternalRoamRecord.key} cols={1}>
<Table
columns={[
...ExternalRoamRecordTableColumn,
]}
rowKey="id"
dataSource={outerHistoryList}
/>
</ContentBox>
</AnchorPage>
)
......
/**
* 订单能力 - 送货单 - 送货单管理详情SRM
* @author: Gavin
* @description: 与B2B内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import AnchorPage, { AnchorsItem } from '@/components/AnchorPage'
import React, { useCallback, useEffect, useState, useContext } from 'react'
import {
BillsInfo, BuyerLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryPhoneLabel,
DeliveryTimeLabel, DeliveryTypeLabel, Distribution, ExternalRoamRecord, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, ReceivingAddress
} from '../../constants'
import { BaseInfo as ContentBox } from '@/components/BaseInfo'
import { Input, Table, Row, Col, Select, Radio, Form, Button } from 'antd';
import { DeliveryNoticeTableColumn, ExternalRoamRecordTableColumn } from '../../constants/page-table-column';
import { FormItem, required } from '@/components/FormItem';
import { DatePickerSelect } from '@/components/DatePickerSelect'
import { AddressDrawer } from '@/components/AddressDrawer';
import { getLogisticsSelectListReceiverAddress, getLogisticsSelectListShipperAddress, postLogisticsReceiverAddressAdd, postLogisticsReceiverAddressUpdate, postLogisticsShipperAddressAdd, postLogisticsShipperAddressUpdate } from '@/services/LogisticsV2Api';
import { DeliveryNoteB2bUploadService } from '../../assets/handles/HandleFormSubmit';
import { RoleSelect } from '@/components/RoleSelect';
import LogisticsCompanyMerchantsSelect from '@/components/LogisticsCompanySelect/LogisticsCompanyMerchantsSelect';
import { useLocation } from 'umi';
import { DeliveryNumColumn } from '../../constants/table-column';
const ContentBoxItem = ContentBox.BaseInfoItem;
const DeliveryNoticeManageSRMEdit: React.FC = () => {
const [tableDataSource, setTableDataSource] = useState<any>([]);
const [outerHistoryList, setOuterHistoryList] = useState<any>([]);
const location: any = useLocation()
const { id } = location.query
const [form] = Form.useForm()
const service = new DeliveryNoteB2bUploadService(form);
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
Distribution,
DeliveryInfo,
LogisticsInfo,
DeliveryGood,
])
useEffect(() => {
form.setFieldsValue({ sourceType: 0, id: id })
service.getDetailById(id).then(res => {
form.setFieldsValue(res)
setOuterHistoryList(res.outerHistoryList)
})
service.getOrderDeliveryOrderDetailProductPage({ id }).then(res => {
setTableDataSource(res.data)
})
}, [id])
const handleSubmit = useCallback(() => {
service.setTableData(tableDataSource);
service.submit().then(res => {
if (res.code === 1000) {
history.go(-1)
}
});
}, [form, tableDataSource])
return (
<AnchorPage title="送货单管理详情(SRM)"
anchors={anchors}
extra={
<Button.Group>
<Button onClick={handleSubmit} type='primary'>提交</Button>
</Button.Group>
}
>
<Form
form={form}
>
<FormItem hidden name="sourceType">
<Input type="hidden" />
</FormItem>
<FormItem hidden name="id">
<Input type="hidden" />
</FormItem>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<FormItem rules={[
required()
]} label={DeliveryAbstractLabel} name="digest">
<Input />
</FormItem>
<FormItem label={NoteLabel} name="remark">
<Input />
</FormItem>
<FormItem
rules={[
required()
]}
label={BuyerLabel} name="member">
<RoleSelect formatFeils={(e) => {
return {
buyerMemberId: e.id,
buyerRoleId: e.roleId,
roleType: 2,
name: e.name
}
}} />
</FormItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<FormItem
rules={[
required()
]}
label={DeliveryDateLabel} name="deliveryTime">
<DatePickerSelect className='w-full' />
</FormItem>
<FormItem
rules={[
required()
]}
label={DeliveryNameLabel} name="deliveryVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListReceiverAddress(val)
}}
sumbitRequest={{
update: (val) => {
return postLogisticsReceiverAddressUpdate(val)
},
add: (val) => {
return postLogisticsReceiverAddressAdd(val)
}
}}
/>
</FormItem>
<FormItem
rules={[
required()
]}
label={DeliveryTimeLabel} name="deliveryRangeTime">
<DatePickerSelect.RangePicker className="w-full" picker='time' />
</FormItem>
<FormItem label={DeliveryPhoneLabel} name="executorVO.phone">
<Input />
</FormItem>
</ContentBox>
<ContentBox title={DeliveryInfo.name} id={DeliveryInfo.key}>
<FormItem
rules={[
required()
]}
label={ConsigneeTimeLabel} name="sendTime">
<DatePickerSelect className="w-full" />
</FormItem>
<FormItem
rules={[
required()
]}
label={ReceivingAddress} name="receiveVO">
<AddressDrawer
disabled={true}
addressListRequest={(val) => {
return getLogisticsSelectListShipperAddress(val)
}}
sumbitRequest={{
update: (val) => {
return postLogisticsShipperAddressUpdate(val)
},
add: (val) => {
return postLogisticsShipperAddressAdd(val)
}
}}
/>
</FormItem>
</ContentBox>
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<FormItem
rules={[
required()
]}
label={DeliveryTypeLabel} name="deliveryType">
<Radio.Group>
<Radio value={0}>物流</Radio>
<Radio value={1}>自提</Radio>
{/* <Radio.Button value={3}>无效配送</Radio.Button> */}
</Radio.Group>
</FormItem>
<FormItem label={LogisticsCarNoLabel} name="executorVO.carNumbers">
<Input />
</FormItem>
<FormItem label={LogisticsCompanyLabel} name="logisticsCompanyInt"
rules={[
{ required: true }
]}
>
<LogisticsCompanyMerchantsSelect />
</FormItem>
<FormItem label={LogisticsNoLabel} name="logisticsNo">
<Input />
</FormItem>
</ContentBox>
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
<Table
rowKey={row => row.orderNo}
columns={[
...DeliveryNoticeTableColumn,
{
...DeliveryNumColumn,
dataIndex: 'deliveryCount',
render: (t, rcode, index) => {
return t
}
}
]}
dataSource={tableDataSource}
/>
</ContentBox>
</Form>
<ContentBox title={ExternalRoamRecord.name} key={ExternalRoamRecord.key} cols={1}>
<Table
columns={ExternalRoamRecordTableColumn}
rowKey="id"
dataSource={outerHistoryList}
/>
</ContentBox>
</AnchorPage>
)
}
export default DeliveryNoticeManageSRMEdit
\ No newline at end of file
......@@ -3,41 +3,40 @@
* @author: Gavin
* @description: 与SRM内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Button, Card, Space, Tag } from 'antd'
import { PlusOutlined } from '@ant-design/icons'
import StandardTable from '@/components/StandardTable'
import { ColumnType } from 'antd/lib/table'
import TableOperation from '@/components/TableOperation'
import EyePreview from '@/components/EyePreview'
import NiceForm from '@/components/NiceForm'
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { deliveryNoticeManageB2BSchema } from './schema'
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Button, Card, Space, Tag } from 'antd'
import { PlusOutlined } from '@ant-design/icons'
import StandardTable from '@/components/StandardTable'
import { ColumnType } from 'antd/lib/table'
import TableOperation from '@/components/TableOperation'
import EyePreview from '@/components/EyePreview'
import NiceForm from '@/components/NiceForm'
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { deliveryNoticeManageB2BSchema } from './schema'
import { TagStatusFactory } from '../../utils'
import dayjs from 'dayjs'
import NoteFactoryService from '../../assets/handles/DeliveryNoteService'
import { Link, useHistory } from 'umi'
const tagStatusColor = {
// 待提交
2: { color: '#f4f5f7', fontColor: '#5c626a' },
// 待确认
3: { color: '#ecf2fe', fontColor: '#4787f0' },
// 待修订
4: { color: '#eae6ff', fontColor: '#9963d8' },
// 已确认
5: { color: '#ebf9f6', fontColor: '#00a98f' },
// 已生产送货单
6: { color: '#f0f5ff', fontColor: '#f0f5ff' },
// 已作废
7: { color: '#fff2f0', fontColor: '#ff4d4f' },
}
const tagStatus = TagStatusFactory.getInstance();
const statusTxt = new Map([[1, '已提交'], [2, '已收货'], [3, '已作废']]);
const service = NoteFactoryService.getInstance('b2b');
const DeliveryNoticeManageB2B: React.FC = () => {
const ref = useRef<any>({})
const history = useHistory();
const formActions = createFormActions()
const controllerBtns = (<Space>
<Button type='primary' icon={<PlusOutlined/>}>新增</Button>
<Link to={"/memberCenter/order/deliveryNotice/manageB2B/add"}>
<Button type='primary' icon={<PlusOutlined />}>
新增
</Button>
</Link>
</Space>)
const renderOptionButton = (record: any) => {
const btnAuthOfOperationTextMap = {
......@@ -51,9 +50,13 @@ const DeliveryNoticeManageB2B: React.FC = () => {
'查看': true,
}
const operationHandler = {
'修改': () => { console.log('修改 :>> ',) },
'修改': () => {
history.push(`/memberCenter/order/deliveryNotice/manageB2B/edit?id=${record.id}`)
},
'作废': () => { console.log('作废 :>> ',) },
'查看': () => { console.log('查看 :>> ',) },
'查看': () => {
history.push(`/memberCenter/order/deliveryNotice/manageB2B/details?id=${record.id}`)
},
}
return (
<TableOperation
......@@ -63,27 +66,40 @@ const DeliveryNoticeManageB2B: React.FC = () => {
/>
)
}
const columns: ColumnType<unknown>[] = [
const columns: ColumnType<any>[] = [
{
title: '送货单号',
dataIndex: 'id',
key: 'id',
width: 160,
render: (text: unknown, record: unknown) => <EyePreview url='/memberCenter/order/deliveryNotice/manageB2B/details'>{text}</EyePreview>
render: (text, r) => <EyePreview url={`/memberCenter/order/deliveryNotice/manageB2B/details?id=${r.id}`}>{r.deliveryNo}</EyePreview>
},
{ title: '送货单摘要', dataIndex: 'digest', key: 'digest' },
{
title: '送货日期', dataIndex: 'deliveryTime', key: 'deliveryTime',
render: (t, r: any) => {
return dayjs(r.createTime).format('YYYY-MM-DD');
}
},
{ title: '采购会员', dataIndex: 'buyerMemberName', key: 'buyerMemberName' },
{
title: '单据时间', dataIndex: 'createTime', key: 'createTime',
render: (t, r: any) => {
return dayjs(r.createTime).format('YYYY-MM-DD')
}
},
{ title: '送货单摘要', dataIndex: 'id2', key: 'id2' },
{ title: '送货日期', dataIndex: 'id3', key: 'id3' },
{ title: '采购会员', dataIndex: 'id5', key: 'id5' },
{ title: '单据时间', dataIndex: 'id4', key: 'id4' },
{
title: '外部状态',
dataIndex: 'id6',
key: 'id6',
render: (text: string, record: any) => (
<Tag color={tagStatusColor[record.id]?.color}>
<span style={{ color: tagStatusColor[record.id]?.fontColor }}>{text}</span>
</Tag>
)
dataIndex: 'outerStatus',
key: 'outerStatus',
render: (t: string, r: any) => {
const styles = tagStatus.getTagStyle(r.outerStatus);
return (
<Tag color={styles.bgColor}>
<span style={{ color: styles.fontColor }}>{statusTxt.get(r.outerStatus)}</span>
</Tag>
)
}
},
{
title: '操作',
......@@ -95,22 +111,7 @@ const DeliveryNoticeManageB2B: React.FC = () => {
]
const fetchData = (params: unknown) => {
console.log('params :>> ', params);
return new Promise((resolve) => {
const data = {
totalCount: 1, data: [
{ id: 1, id2: 2, id3: 3, id4: 4, id5: 5, id6: 6 },
{ id: 2, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 3, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 4, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 5, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 6, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 7, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 8, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
]
}
resolve(data)
})
return service.getQuery(params);
}
return (
......
......@@ -9,12 +9,12 @@ import { BillsInfo, BuyerLabel, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTi
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 { FormItem, required } from '@/components/FormItem';
import { DatePickerSelect } from '@/components/DatePickerSelect'
import { AddressDrawer } from '@/components/AddressDrawer';
import { getLogisticsSelectListReceiverAddress, getLogisticsSelectListShipperAddress, postLogisticsReceiverAddressAdd, postLogisticsReceiverAddressUpdate, postLogisticsShipperAddressAdd, postLogisticsShipperAddressUpdate } from '@/services/LogisticsV2Api';
import DeliveryGoodTableSelect from '../../components/DeliveryGoodTableSelect/DeliveryGoodTableSelect';
import { HarvestMaterialContextProvider, HarvestMaterialContext } from '../../assets/context';
import { HarvestMaterialContextProvider, HarvestMaterialContext, HarvestMaterialInput } from '../../assets/context';
import moment from 'moment';
import { HandelFormFieldsKeyValue } from '@/utils/form';
import { DeliveryNoteAddService } from '../../assets/handles/HandleFormSubmit';
......@@ -22,6 +22,7 @@ import { RoleSelect } from '@/components/RoleSelect';
import DeliveryNoticeOrderFactory from '../../assets/handles/DeliveryNoticeOrder';
import LogisticsCompanyMerchantsSelect from '@/components/LogisticsCompanySelect/LogisticsCompanyMerchantsSelect';
import { values } from 'lodash';
import { DeliveryNumColumn, OredrNumColumn } from '../../constants/table-column';
const ContentBoxItem = ContentBox.BaseInfoItem;
......@@ -73,7 +74,11 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
</FormItem>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<FormItem label={DeliveryAbstractLabel} name="digest">
<FormItem
rules={[
required()
]}
label={DeliveryAbstractLabel} name="digest">
<Input />
</FormItem>
......@@ -81,18 +86,37 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<Input />
</FormItem>
<FormItem label={BuyerLabel} name="member">
<RoleSelect />
<FormItem
rules={[
required()
]}
label={BuyerLabel} name="member">
<RoleSelect formatFeils={(e) => {
return {
buyerMemberId: e.memberId,
buyerRoleId: e.roleId,
roleType: 2,
name: e.name
}
}} />
</FormItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<FormItem label={DeliveryDateLabel} name="deliveryTime">
<FormItem
rules={[
required()
]}
label={DeliveryDateLabel} name="deliveryTime">
<DatePickerSelect className='w-full' />
</FormItem>
<FormItem label={DeliveryNameLabel} name="deliveryVO">
<FormItem
rules={[
required()
]}
label={DeliveryNameLabel} name="deliveryVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListReceiverAddress(val)
......@@ -108,21 +132,38 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
/>
</FormItem>
<FormItem label={DeliveryTimeLabel} name="deliveryRangeTime">
<FormItem
rules={[
required()
]}
label={DeliveryTimeLabel} name="deliveryRangeTime">
<DatePickerSelect.RangePicker className="w-full" picker='time' />
</FormItem>
<FormItem label={DeliveryPhoneLabel} name="executorVO.phone">
<FormItem
rules={[
required()
]}
label={DeliveryPhoneLabel} name="executorVO.phone">
<Input />
</FormItem>
</ContentBox>
<ContentBox title={DeliveryInfo.name} id={DeliveryInfo.key}>
<FormItem label={ConsigneeTimeLabel} name="sendTime">
<ContentBox
title={DeliveryInfo.name} id={DeliveryInfo.key}>
<FormItem
rules={[
required()
]}
label={ConsigneeTimeLabel} name="sendTime">
<DatePickerSelect className="w-full" />
</FormItem>
<FormItem label={ReceivingAddress} name="receiveVO">
<FormItem
rules={[
required()
]}
label={ReceivingAddress} name="receiveVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListShipperAddress(val)
......@@ -142,7 +183,11 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<FormItem label={DeliveryTypeLabel} name="deliveryType">
<FormItem
rules={[
required()
]}
label={DeliveryTypeLabel} name="deliveryType">
<Radio.Group>
<Radio.Button value={1}>物流</Radio.Button>
<Radio.Button value={2}>自提</Radio.Button>
......@@ -153,11 +198,7 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<FormItem label={LogisticsCarNoLabel} name="executorVO.carNumbers">
<Input />
</FormItem>
<FormItem label={LogisticsCompanyLabel} name="logisticsCompanyInt"
rules={[
{ required: true }
]}
>
<FormItem label={LogisticsCompanyLabel} name="logisticsCompanyInt">
<LogisticsCompanyMerchantsSelect />
</FormItem>
<FormItem label={LogisticsNoLabel} name="logisticsNo">
......@@ -167,6 +208,7 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
{/* 在编辑的时候不需要进行此操作 */}
<DeliveryGoodTableSelect
form={form}
onChange={(value) => {
......@@ -181,7 +223,7 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
phone: value[0].phone,
consignee: value[0].consignee,
receiverName: value[0].consignee,
fullAddress:`${value[0].provinceName}${value[0].cityName}${value[0].districtName}${value[0].streetName}${value[0].address}`
fullAddress: `${value[0].provinceName}${value[0].cityName}${value[0].districtName}${value[0].streetName}${value[0].address}`
}
form.setFieldsValue({
'receiveVO': addr
......@@ -197,7 +239,22 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
}}>
<Table
rowKey={row => row.orderNo}
columns={DeliveryNoticeTableColumn}
columns={
[
...DeliveryNoticeTableColumn
, {
...DeliveryNumColumn,
render: (t, rcode, index) => {
return (
<HarvestMaterialInput
value={rcode[OredrNumColumn.key]}
index={index}
keyUp="deliveryCount"
/>
)
}
}
]}
dataSource={tableDataSource}
/>
</HarvestMaterialContextProvider>
......
......@@ -12,7 +12,6 @@ import { DeliveryNoticeTableColumn, ExternalRoamRecordTableColumn } from '../../
import NoteFactoryService from '../../assets/handles/DeliveryNoteService';
import { useLocation } from 'umi';
import qs from 'query-string';
import { useDetailInfoById } from '../../assets/hooks/useDetailInfoById';
const ContentBoxItem = ContentBox.BaseInfoItem;
......@@ -32,13 +31,18 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
ExternalRoamRecord
])
const [info] = useDetailInfoById(query.id);
const [info, setInfo] = useState<any>();
const [tableDataSource, setTableDataSource] = useState([]);
const [totalCount, setTotalCount] = useState(1);
const [outerHistoryList, setOuterHistoryList] = useState([]);
useEffect(() => {
service.getDetailInfoById(query.id as string).then(res => {
setInfo(res)
})
service.getDetailInfoProductById(query.id as string).then(res => {
setTableDataSource(res.data)
......
......@@ -5,11 +5,11 @@
*/
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, ReceivingAddress } from '../../constants'
import { BillsInfo, BuyerLabel, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, ExternalRoamRecord, 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 { DeliveryNoticeTableColumn, ExternalRoamRecordTableColumn } from '../../constants/page-table-column';
import { FormItem, required } from '@/components/FormItem';
import { DatePickerSelect } from '@/components/DatePickerSelect'
import { AddressDrawer } from '@/components/AddressDrawer';
import { getLogisticsSelectListReceiverAddress, getLogisticsSelectListShipperAddress, postLogisticsReceiverAddressAdd, postLogisticsReceiverAddressUpdate, postLogisticsShipperAddressAdd, postLogisticsShipperAddressUpdate } from '@/services/LogisticsV2Api';
......@@ -17,25 +17,26 @@ import DeliveryGoodTableSelect from '../../components/DeliveryGoodTableSelect/De
import { HarvestMaterialContextProvider, HarvestMaterialContext } from '../../assets/context';
import moment from 'moment';
import { HandelFormFieldsKeyValue } from '@/utils/form';
import { DeliveryNoteAddService } from '../../assets/handles/HandleFormSubmit';
import { DeliveryNoteAddService, DeliveryNoteUploadService } from '../../assets/handles/HandleFormSubmit';
import { RoleSelect } from '@/components/RoleSelect';
import DeliveryNoticeOrderFactory from '../../assets/handles/DeliveryNoticeOrder';
import LogisticsCompanyMerchantsSelect from '@/components/LogisticsCompanySelect/LogisticsCompanyMerchantsSelect';
import { useLocation } from 'umi';
import { useDetailInfoById } from '../../assets/hooks/useDetailInfoById';
import { DeliveryNumColumn } from '../../constants/table-column';
const ContentBoxItem = ContentBox.BaseInfoItem;
const DeliveryNoticeManageSRMEdit: React.FC = () => {
const [tableDataSource, setTableDataSource] = useState();
const [tableDataSource, setTableDataSource] = useState<any>([]);
const [outerHistoryList, setOuterHistoryList] = useState<any>([]);
const location: any = useLocation()
const { id } = location.query
const [info] = useDetailInfoById(id);
const [form] = Form.useForm()
const service = new DeliveryNoteAddService(form);
const service = new DeliveryNoteUploadService(form);
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
......@@ -46,10 +47,17 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
])
useEffect(() => {
form.setFieldsValue({ sourceType: 0 })
console.log(info)
form.setFieldsValue(info)
}, [info])
form.setFieldsValue({ sourceType: 0, id: id })
service.getDetailById(id).then(res => {
form.setFieldsValue(res)
setOuterHistoryList(res.outerHistoryList)
})
service.getOrderDeliveryOrderDetailProductPage({ id }).then(res => {
setTableDataSource(res.data)
})
}, [id])
const handleSubmit = useCallback(() => {
service.setTableData(tableDataSource);
......@@ -75,12 +83,18 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
<Form
form={form}
>
<FormItem name="sourceType">
<FormItem hidden name="sourceType">
<Input type="hidden" />
</FormItem>
<FormItem hidden name="id">
<Input type="hidden" />
</FormItem>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<FormItem label={DeliveryAbstractLabel} name="digest">
<FormItem rules={[
required()
]} label={DeliveryAbstractLabel} name="digest">
<Input />
</FormItem>
......@@ -88,18 +102,37 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
<Input />
</FormItem>
<FormItem label={BuyerLabel} name="member">
<RoleSelect />
<FormItem
rules={[
required()
]}
label={BuyerLabel} name="member">
<RoleSelect formatFeils={(e) => {
return {
buyerMemberId: e.id,
buyerRoleId: e.roleId,
roleType: 2,
name: e.name
}
}} />
</FormItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<FormItem label={DeliveryDateLabel} name="deliveryTime">
<FormItem
rules={[
required()
]}
label={DeliveryDateLabel} name="deliveryTime">
<DatePickerSelect className='w-full' />
</FormItem>
<FormItem label={DeliveryNameLabel} name="deliveryVO">
<FormItem
rules={[
required()
]}
label={DeliveryNameLabel} name="deliveryVO">
<AddressDrawer
addressListRequest={(val) => {
return getLogisticsSelectListReceiverAddress(val)
......@@ -115,7 +148,11 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
/>
</FormItem>
<FormItem label={DeliveryTimeLabel} name="deliveryRangeTime">
<FormItem
rules={[
required()
]}
label={DeliveryTimeLabel} name="deliveryRangeTime">
<DatePickerSelect.RangePicker className="w-full" picker='time' />
</FormItem>
......@@ -125,12 +162,21 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
</ContentBox>
<ContentBox title={DeliveryInfo.name} id={DeliveryInfo.key}>
<FormItem label={ConsigneeTimeLabel} name="sendTime">
<FormItem
rules={[
required()
]}
label={ConsigneeTimeLabel} name="sendTime">
<DatePickerSelect className="w-full" />
</FormItem>
<FormItem label={ReceivingAddress} name="receiveVO">
<FormItem
rules={[
required()
]}
label={ReceivingAddress} name="receiveVO">
<AddressDrawer
disabled={true}
addressListRequest={(val) => {
return getLogisticsSelectListShipperAddress(val)
}}
......@@ -149,10 +195,14 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<FormItem label={DeliveryTypeLabel} name="deliveryType">
<FormItem
rules={[
required()
]}
label={DeliveryTypeLabel} name="deliveryType">
<Radio.Group>
<Radio.Button value={1}>物流</Radio.Button>
<Radio.Button value={2}>自提</Radio.Button>
<Radio value={0}>物流</Radio>
<Radio value={1}>自提</Radio>
{/* <Radio.Button value={3}>无效配送</Radio.Button> */}
</Radio.Group>
</FormItem>
......@@ -174,29 +224,33 @@ const DeliveryNoticeManageSRMEdit: React.FC = () => {
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
<DeliveryGoodTableSelect
form={form}
onChange={(value) => {
console.log(value)
setTableDataSource(value)
}}
<Table
rowKey={row => row.orderNo}
columns={[
...DeliveryNoticeTableColumn,
{
...DeliveryNumColumn,
dataIndex: 'deliveryCount',
render: (t, rcode, index) => {
return t
}
}
]}
dataSource={tableDataSource}
/>
<HarvestMaterialContextProvider value={{
dataSource: tableDataSource
}}>
<Table
rowKey={row => row.orderNo}
columns={DeliveryNoticeTableColumn}
dataSource={tableDataSource}
/>
</HarvestMaterialContextProvider>
</ContentBox>
</Form>
<ContentBox title={ExternalRoamRecord.name} key={ExternalRoamRecord.key} cols={1}>
<Table
columns={ExternalRoamRecordTableColumn}
rowKey="id"
dataSource={outerHistoryList}
/>
</ContentBox>
</AnchorPage>
)
......
......@@ -29,7 +29,7 @@ const DeliveryNoticeManageSRM: React.FC = () => {
const history = useHistory()
const statusTxt = new Map([[1, '已提交'], [2, '已收货'], [3, '已作废']]);
const controllerBtns = (
<Space>
<Link to="/memberCenter/order/deliveryNotice/manageSRM/add">
......@@ -52,8 +52,12 @@ const DeliveryNoticeManageSRM: React.FC = () => {
}
const operationHandler = {
'修改': () => { history.push(`/memberCenter/order/deliveryNotice/manageSRM/edit?id=${record.id}`) },
'作废': () => { console.log('作废 :>> ',) },
'查看': () => { console.log('查看 :>> ',) },
'作废': () => {
// /order/delivery/order/invalid
},
'查看': () => {
history.push(`/memberCenter/order/deliveryNotice/manageSRM/details?id=${record.id}`)
},
}
return (
<TableOperation
......
......@@ -4,74 +4,124 @@
* @description: 与B2B内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import AnchorPage, { AnchorsItem } from '@/components/AnchorPage'
import React, { useState } from 'react'
import { BillsInfo, ConsigneeLabel, ConsigneePhoneLabel, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel, DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel, DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel, Distribution, LogisticsCarNoLabel, LogisticsCompanyLabel, LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel } from '../../constants'
import React, { useEffect, useState } from 'react'
import {
BillsInfo, ConsigneeTimeLabel, DeliveryAbstractLabel, DeliveryAddrLabel,
DeliveryDateLabel, DeliveryGood, DeliveryInfo, DeliveryNameLabel, DeliveryNoLabel,
DeliveryPhoneLabel, DeliverySlefAddrLabel, DeliveryTimeLabel, DeliveryTypeLabel,
Distribution, ExternalRoamRecord, LogisticsCarNoLabel, LogisticsCompanyLabel,
LogisticsInfo, LogisticsNoLabel, NoteLabel, OutStatusLabel
} from '../../constants'
import { BaseInfo as ContentBox } from '@/components/BaseInfo'
import { Table } from 'antd';
import { DeliveryNoticeTableColumn } from '../../constants/page-table-column';
import { DeliveryNoticeTableColumn, ExternalRoamRecordTableColumn } from '../../constants/page-table-column';
import { useLocation } from 'umi';
import NoteFactoryService from '../../assets/handles/DeliveryNoteService';
const ContentBoxItem = ContentBox.BaseInfoItem;
const DeliveryNoticeManageSRMDetails: React.FC = () => {
const location = useLocation();
const query = (location as any).query;
const service = NoteFactoryService.getInstance('receive');
const [anchors, setAnchors] = useState<AnchorsItem[]>([
BillsInfo,
Distribution,
DeliveryInfo,
LogisticsInfo,
DeliveryGood,
ExternalRoamRecord
])
const [info, setInfo] = useState<any>();
const [tableDataSource, setTableDataSource] = useState([]);
const [totalCount, setTotalCount] = useState(1);
const [outerHistoryList, setOuterHistoryList] = useState([]);
useEffect(() => {
service.getDetailInfoById(query.id as string).then(res => {
setInfo(res)
})
service.getDetailInfoProductById(query.id as string).then(res => {
setTableDataSource(res.data)
setTotalCount(res.totalCount)
})
}, [])
/**
* 如果info 更新 outerHistoryList也一起更新
*/
useEffect(() => {
setOuterHistoryList(info?.outerHistoryList)
}, [info])
return (
<AnchorPage title="送货单管理详情(B2B)"
<AnchorPage title="收货单详情"
anchors={anchors}
>
<ContentBox title={BillsInfo.name} id={BillsInfo.key}>
<ContentBoxItem label={DeliveryNoLabel}>
{info?.deliveryNo}
</ContentBoxItem>
<ContentBoxItem label={DeliveryAbstractLabel}>
{info?.digest}
</ContentBoxItem>
<ContentBoxItem label={NoteLabel}>
{info?.remark}
</ContentBoxItem>
<ContentBoxItem label={OutStatusLabel}>
{info?.outerStatusName}
</ContentBoxItem>
</ContentBox>
<ContentBox title={Distribution.name} id={Distribution.key}>
<ContentBoxItem label={DeliveryDateLabel}>
{info?.deliveryTime}
</ContentBoxItem>
<ContentBoxItem label={DeliveryNameLabel}>
{info?.deliverVO?.consignee}
</ContentBoxItem>
<ContentBoxItem label={DeliveryTimeLabel}>
{info?.sendTime}
</ContentBoxItem>
<ContentBoxItem label={DeliveryPhoneLabel}>
{info?.deliverVO?.phone}
</ContentBoxItem>
</ContentBox>
<ContentBox title={DeliveryInfo.name} id={DeliveryInfo.key}>
<ContentBoxItem label={ConsigneeTimeLabel}>
</ContentBoxItem>
<ContentBoxItem label={DeliveryAddrLabel}>
{info?.deliveryTime} {info?.deliveryStartTime} {info?.deliveryEndTime}
</ContentBoxItem>
<ContentBoxItem label={DeliverySlefAddrLabel}>
<ContentBoxItem label={info?.deliveryType === 0 ? DeliveryAddrLabel : DeliverySlefAddrLabel}>
<div>
{info?.deliverVO?.provinceName}
{info?.deliverVO?.cityName}
{info?.deliverVO?.districtName}
{info?.deliverVO?.streetName}
{info?.deliverVO?.address}
</div>
<div>
{info?.deliverVO.phone}
{info?.deliverVO.consignee}
</div>
</ContentBoxItem>
......@@ -80,26 +130,40 @@ const DeliveryNoticeManageSRMDetails: React.FC = () => {
<ContentBox title={LogisticsInfo.name} id={LogisticsInfo.key}>
<ContentBoxItem label={DeliveryTypeLabel}>
{service.getDeliveryType(info?.deliveryType)}
</ContentBoxItem>
<ContentBoxItem label={LogisticsCarNoLabel}>
{info?.executorVO?.carNumbers}
</ContentBoxItem>
<ContentBoxItem label={LogisticsCompanyLabel}>
{info?.logisticsCompany}
</ContentBoxItem>
<ContentBoxItem label={LogisticsNoLabel}>
{info?.logisticsNo}
</ContentBoxItem>
</ContentBox>
<ContentBox title={DeliveryGood.name} id={DeliveryGood.key} cols={1}>
<Table columns={DeliveryNoticeTableColumn} />
<Table
columns={DeliveryNoticeTableColumn}
rowKey="id"
dataSource={tableDataSource}
pagination={{
total: totalCount
}}
/>
</ContentBox>
<ContentBox title={ExternalRoamRecord.name} id={ExternalRoamRecord.key} cols={1}>
<Table
columns={ExternalRoamRecordTableColumn}
rowKey="id"
dataSource={outerHistoryList}
/>
</ContentBox>
</AnchorPage>
)
......
......@@ -3,33 +3,23 @@
* @author: Gavin
* @description:
*/
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, Space, Tag } from 'antd'
import StandardTable from '@/components/StandardTable'
import { ColumnType } from 'antd/lib/table'
import TableOperation from '@/components/TableOperation'
import EyePreview from '@/components/EyePreview'
import NiceForm from '@/components/NiceForm'
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { receivingNoteQuerySchema } from './schema'
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, Space, Tag } from 'antd'
import StandardTable from '@/components/StandardTable'
import { ColumnType } from 'antd/lib/table'
import TableOperation from '@/components/TableOperation'
import EyePreview from '@/components/EyePreview'
import NiceForm from '@/components/NiceForm'
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { receivingNoteQuerySchema } from './schema'
import { TagStatusFactory } from '../../utils'
import NoteFactoryService from '../../assets/handles/DeliveryNoteService'
const tagStatusColor = {
// 待提交
2: { color: '#f4f5f7', fontColor: '#5c626a' },
// 待确认
3: { color: '#ecf2fe', fontColor: '#4787f0' },
// 待修订
4: { color: '#eae6ff', fontColor: '#9963d8' },
// 已确认
5: { color: '#ebf9f6', fontColor: '#00a98f' },
// 已生产送货单
6: { color: '#f0f5ff', fontColor: '#f0f5ff' },
// 已作废
7: { color: '#fff2f0', fontColor: '#ff4d4f' },
}
const tagStatus = TagStatusFactory.getInstance();
const service = NoteFactoryService.getInstance("receive");
const ReceivingNoteQuery: React.FC = () => {
const ref = useRef<any>({})
......@@ -54,29 +44,32 @@ const ReceivingNoteQuery: React.FC = () => {
/>
)
}
const columns: ColumnType<unknown>[] = [
const columns: ColumnType<any>[] = [
{
title: '收货单号',
dataIndex: 'id',
key: 'id',
dataIndex: 'receiveNo',
key: 'receiveNo',
width: 160,
render: (text: unknown, record: unknown) => <EyePreview url='/memberCenter/order/deliveryNotice/receivingNoteQuery/details'>{text}</EyePreview>
render: (t, r) => <EyePreview url={`/memberCenter/order/deliveryNotice/receivingNoteQuery/details?id=${r.id}`}>{r.receiveNo}</EyePreview>
},
{ title: '收货单摘要', dataIndex: 'id2', key: 'id2' },
{ title: '收货日期', dataIndex: 'id3', key: 'id3' },
{ title: '送货单号', dataIndex: 'id3', key: 'id3' },
{ title: '送货日期', dataIndex: 'id3', key: 'id3' },
{ title: '采购会员', dataIndex: 'id5', key: 'id5' },
{ title: '单据时间', dataIndex: 'id4', key: 'id4' },
{ title: '收货单摘要', dataIndex: 'digest', key: 'digest' },
{ title: '收货日期', dataIndex: 'receiveTime', key: 'receiveTime' },
{ title: '送货单号', dataIndex: 'deliveryNo', key: 'deliveryNo' },
{ title: '送货日期', dataIndex: 'deliveryTime', key: 'deliveryTime' },
{ title: '采购会员', dataIndex: 'vendorMemberName', key: 'vendorMemberName' },
{ title: '单据时间', dataIndex: 'createTime', key: 'createTime' },
{
title: '外部状态',
dataIndex: 'id6',
key: 'id6',
render: (text: string, record: any) => (
<Tag color={tagStatusColor[record.id]?.color}>
<span style={{ color: tagStatusColor[record.id]?.fontColor }}>{text}</span>
</Tag>
)
dataIndex: 'outerStatusName',
key: 'outerStatusName',
render: (text: string, record: any) => {
const styles = tagStatus.getTagStyle(record.id)
return (
<Tag color={styles.bgColor}>
<span style={{ color: styles.fontColor }}>{styles.txt}</span>
</Tag>
)
}
},
{
title: '操作',
......@@ -88,22 +81,7 @@ const ReceivingNoteQuery: React.FC = () => {
]
const fetchData = (params: unknown) => {
console.log('params :>> ', params);
return new Promise((resolve) => {
const data = {
totalCount: 1, data: [
{ id: 1, id2: 2, id3: 3, id4: 4, id5: 5, id6: 6 },
{ id: 2, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 3, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 4, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 5, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 6, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 7, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
{ id: 8, id2: 3, id3: 4, id4: 5, id5: 6, id6: 7 },
]
}
resolve(data)
})
return service.getQuery(params)
}
return (
......
......@@ -35,7 +35,7 @@ const DeliveryNoteManage: React.FC = () => {
}
const buttonGroup = {
'修改': true,
'作废': true,
'作废': false,
'查看': true,
}
const operationHandler = {
......@@ -51,13 +51,16 @@ const DeliveryNoteManage: React.FC = () => {
/>
)
}
const columns: ColumnType<unknown>[] = [
const columns: ColumnType<any>[] = [
{
title: '收货单号',
dataIndex: 'id',
key: 'id',
width: 160,
render: (text: unknown, record: unknown) => <EyePreview url='/memberCenter/order/receivingNote/deliveryNoteManage/details'>{text}</EyePreview>
render: (text, record) =>
<EyePreview url='/memberCenter/order/receivingNote/deliveryNoteManage/details'>
{text}
</EyePreview>
},
{ title: '收货单摘要', dataIndex: 'digest', key: 'digest' },
{ title: '送货单号', dataIndex: 'deliveryNo', key: 'deliveryNo' },
......
......@@ -17,30 +17,19 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'
import { deliveryNoteQuerySchema } from './schema'
import ReceiveNoteFacotry from '../../assets/handles/ReceiveNotePage'
import { TagStatusFactory } from '../../utils'
import { useHistory } from 'umi'
interface IStatusEnum {
[key: number]: {
color: string,
fontColor: string
}
}
enum StatusEnum {
ToSbumit = 2
}
const service = ReceiveNoteFacotry.getInstance('Query')
const tagStatus = TagStatusFactory.getInstance();
const DeliveryNoteQuery: React.FC = () => {
const ref = useRef<any>({})
const formActions = createFormActions()
const service = ReceiveNoteFacotry.getInstance('Query')
const tagStatus = TagStatusFactory.getInstance();
const history = useHistory()
const controllerBtns = (<Space></Space>)
const renderOptionButton = (record: any) => {
const renderOptionButton = (r: any) => {
const btnAuthOfOperationTextMap = {
'生产收货单': 'DevTest',
'查看': 'DevTest',
......@@ -50,7 +39,9 @@ const DeliveryNoteQuery: React.FC = () => {
'查看': true,
}
const operationHandler = {
'生产收货单': () => { console.log('生产收货单 :>> ',) },
'生产收货单': () => {
history.push(`/memberCenter/order/receivingNote/deliveryNoteManage/add?id=${r.id}`)
},
'查看': () => { console.log('查看 :>> ',) },
}
return (
......@@ -61,13 +52,13 @@ const DeliveryNoteQuery: React.FC = () => {
/>
)
}
const columns: ColumnType<unknown>[] = [
const columns: ColumnType<any>[] = [
{
title: '收货单号',
dataIndex: 'id',
key: 'id',
width: 160,
render: (text: unknown, record: unknown) => <EyePreview url='/memberCenter/order/receivingNote/deliveryNoteQuery/details'>{text}</EyePreview>
render: (t: any, r: any) => <EyePreview url={`/memberCenter/order/receivingNote/deliveryNoteQuery/details?id=${r.id}`}>{r.deliveryNo}</EyePreview>
},
{ title: '收货单摘要', dataIndex: 'digest', key: 'digest' },
{ title: '收货日期', dataIndex: 'receiveTime', key: 'receiveTime' },
......@@ -82,7 +73,7 @@ const DeliveryNoteQuery: React.FC = () => {
const styles = tagStatus.getTagStyle(record.outerStatus)
return (
<Tag color={styles.bgColor}>
<span style={{ color: styles.fontColor }}>{record.outerStatus}</span>
<span style={{ color: styles.fontColor }}>{styles.txt}</span>
</Tag>
)
}
......@@ -97,7 +88,7 @@ const DeliveryNoteQuery: React.FC = () => {
]
const fetchData = (params: unknown) => {
return service.getQuery(params).then(res => res.data)
return service.getQuery(params)
}
return (
......
interface StatusStyle {
bgColor: string,
fontColor: string
txt: string
}
interface StatusStyleItem {
[key: string]: StatusStyle
......@@ -42,31 +43,31 @@ class TagStatus {
}
defaultStatusStyle() {
return { bgColor: '#f2f4f5', fontColor: '#000' }
return { bgColor: '#f2f4f5', fontColor: '#000', txt: '默认' }
}
toSbumitStatusStyle() {
return { bgColor: '#f4f5f7', fontColor: '#5c626a' };
return { bgColor: '#f4f5f7', fontColor: '#5c626a', txt: '待提交' };
}
toBeConfirmedStyle() {
return { bgColor: '#ecf2fe', fontColor: '#4787f0' };
return { bgColor: '#ecf2fe', fontColor: '#4787f0', txt: '待确认' };
}
toBeModifiedStyle() {
return { bgColor: '#eae6ff', fontColor: '#9963d8' }
return { bgColor: '#eae6ff', fontColor: '#9963d8', txt: '待修改' }
}
confirmedStyle() {
return { bgColor: '#ebf9f6', fontColor: '#00a98f' }
return { bgColor: '#ebf9f6', fontColor: '#00a98f', txt: '已确认' }
}
generatedStyle() {
return { bgColor: '#f0f5ff', fontColor: '#f0f5ff' }
return { bgColor: '#f0f5ff', fontColor: '#f0f5ff', txt: '已确认' }
}
voidedStyle() {
return { bgColor: '#fff2f0', fontColor: '#ff4d4f' }
return { bgColor: '#fff2f0', fontColor: '#ff4d4f', txt: '已确认' }
}
/**
......@@ -93,7 +94,7 @@ class TagStatus {
}
class TagStatusFactory {
static getInstance(){
static getInstance() {
return new TagStatus();
}
}
......
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