Commit ad67cfef authored by Bill's avatar Bill

Merge branch 'dev' of 10.0.0.22:lingxi/lingxi-business-paltform into dev

parents 12f4c69c 007661b7
......@@ -18,7 +18,7 @@ const LogisticsRoute: RouterChild = {
path: '/memberCenter/logisticsAbility/logistics',
name: 'logistics',
routes: [
// 物流公司管理
// // 物流公司管理
{
path: '/memberCenter/logisticsAbility/logistics/company',
name: 'company',
......@@ -50,75 +50,75 @@ const LogisticsRoute: RouterChild = {
path: '/memberCenter/logisticsAbility/logistics/deliveryAddress',
name: 'deliveryAddress',
component: '@/pages/logistics/list/deliveryAddress'
},
},
// 发货地址-新增
{
path: '/memberCenter/logisticsAbility/logistics/deliveryAddress/add',
name: 'addDeliveryAddress',
component: '@/pages/logistics/shippingAddress/add',
hideInMenu: true
},
},
// 发货地址-编辑
{
path: '/memberCenter/logisticsAbility/logistics/deliveryAddress/edit',
name: 'editDeliveryAddress',
component: '@/pages/logistics/shippingAddress/edit',
hideInMenu: true
},
},
// 收货地址
{
path: '/memberCenter/logisticsAbility/logistics/receivingAddress',
name: 'receivingAddress',
component: '@/pages/logistics/list/receivingAddress'
},
},
// 收货地址-新增
{
path: '/memberCenter/logisticsAbility/logistics/receivingAddress/add',
name: 'addReceivingAddress',
component: '@/pages/logistics/receiptAddress/add',
hideInMenu: true
},
},
// 收货地址-编辑
{
path: '/memberCenter/logisticsAbility/logistics/receivingAddress/edit',
name: 'editReceivingAddress',
component: '@/pages/logistics/receiptAddress/edit',
hideInMenu: true
},
},
// 运费模板
{
path: '/memberCenter/logisticsAbility/logistics/template',
name: 'template',
component: '@/pages/logistics/list/template'
},
},
// 运费模板-新增
{
path: '/memberCenter/logisticsAbility/logistics/templateForm',
name: 'templateForm',
component: '@/pages/logistics/list/components/templateForm',
hideInMenu: true
},
},
// 运费模板-新增
{
path: '/memberCenter/logisticsAbility/logistics/template/add',
name: 'addTemplate',
component: '@/pages/logistics/list/components/templateForm',
hideInMenu: true
},
},
// 运费模板-编辑
{
path: '/memberCenter/logisticsAbility/logistics/template/edit',
name: 'editTemplate',
component: '@/pages/logistics/list/components/templateForm',
hideInMenu: true
},
},
// 运费模板-详情
{
path: '/memberCenter/logisticsAbility/logistics/template/detail',
name: 'templateDetail',
component: '@/pages/logistics/list/components/templateForm',
hideInMenu: true
},
},
]
},
......@@ -139,7 +139,7 @@ const LogisticsRoute: RouterChild = {
name: 'orderSubmitDeatil',
component: '@/pages/logistics/components/orderSearchDetail',
hideInMenu: true
},
},
// 待提交物流单
{
path: '/memberCenter/logisticsAbility/logisticsSubmit/toOrderSumitList',
......@@ -159,17 +159,17 @@ const LogisticsRoute: RouterChild = {
name: 'addToOrderSubmit',
component: '@/pages/logistics/logisticsSubmit/detail',
hideInMenu: true
},
},
// 待提交物流单-编辑
{
path: '/memberCenter/logisticsAbility/logisticsSubmit/toOrderSumitList/edit',
name: 'editToOrderSubmit',
component: '@/pages/logistics/logisticsSubmit/toOrderSubmitDetail',
hideInMenu: true
},
},
]
},
// 物流单处理
{
path: '/memberCenter/logisticsAbility/logisticsResult',
......@@ -213,4 +213,4 @@ const LogisticsRoute: RouterChild = {
]
}
export default LogisticsRoute
\ No newline at end of file
export default LogisticsRoute
......@@ -3,7 +3,7 @@ import {StandardTable} from 'god';
import NestTable from '@/components/NestTable';
import { IStandardTableProps } from 'god/dist/src/standard-table';
import { Row, Col, Modal } from 'antd';
import { productModalSchema, productModalByMemberSchema, memberModalSchema, inquirySchema, demandSchema, enquirySchema, mergeOrderSchema, goodsModalSchema, demandNumberSchema } from './schema';
import { productModalSchema, productModalByMemberSchema, memberModalSchema, inquirySchema, demandSchema, enquirySchema, mergeOrderSchema, goodsModalSchema, demandNumberSchema, addOrderModalSchema } from './schema';
import Search from '../NiceForm/components/Search';
import SearchSelect from '../NiceForm/components/SearchSelect';
import Submit from '../NiceForm/components/Submit';
......@@ -18,7 +18,7 @@ export interface ModalTableProps extends IStandardTableProps<any> {
cancel?(),
visible?: boolean,
resetModal?: object,
modalType?: 'productByDefault' | 'productByMember' | 'memberByDefault' | 'inquiryByDefault' | 'demandByDefault' | 'enquiryModel' | 'MergeOrderByDefault' | 'goodsModalSchema' | 'demandNumberSchema' | 'none' ,
modalType?: 'productByDefault' | 'productByMember' | 'memberByDefault' | 'inquiryByDefault' | 'demandByDefault' | 'enquiryModel' | 'MergeOrderByDefault' | 'goodsModalSchema' | 'demandNumberSchema' | 'addOrderModalSchema' | 'none' ,
useNestTable?: boolean, // 是否使用嵌套表格
nestColumns?: any[],
nestTableProps?: any,
......@@ -76,6 +76,9 @@ const ModalTable:React.FC<ModalTableProps> = (props) => {
case 'demandNumberSchema': {
return demandNumberSchema
}
case 'addOrderModalSchema': {
return addOrderModalSchema
}
case 'none': {
return {}
}
......@@ -118,6 +121,7 @@ const ModalTable:React.FC<ModalTableProps> = (props) => {
searchName ? searchName : 'name',
FORM_FILTER_PATH,
);
}
}
}
......
......@@ -129,6 +129,75 @@ export const productModalSchema: ISchema = {
}
/**
* 新增采购订单选择商品的高级筛选
* 获取供应商的品类和品牌
*/
export const addOrderModalSchema: ISchema = {
type: 'object',
properties: {
name: {
type: 'string',
'x-component': 'ModalSearch',
'x-component-props': {
placeholder: '请输入商品名称',
align: 'flex-left',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
style: {
marginRight: 0
}
},
colStyle: {
marginTop: 20,
},
},
properties: {
customerCategoryId: {
type: 'string',
"x-component": 'SearchSelect',
"x-component-props": {
placeholder: '请选择品类',
className: 'fixed-ant-selected-down',
fetchSearch: PublicApi.getProductSelectGetMemberCategory,
style: {
width: 160
},
queryParams: {},
}
},
brandId: {
type: 'string',
"x-component": 'SearchSelect',
"x-component-props": {
placeholder: '请选择品牌',
fetchSearch: PublicApi.getProductSelectGetMemberBrand,
style: {
width: 160
},
queryParams: {},
}
},
submit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
/**
* 货品列表筛选
*/
export const goodsModalSchema: ISchema = {
......@@ -285,8 +354,8 @@ export const inquirySchema: ISchema = {
/**
* @description: 新增报价单 需求单查询
* @param {type}
* @return {type}
* @param {type}
* @return {type}
*/
export const enquirySchema: ISchema = {
type: 'object',
......@@ -526,4 +595,4 @@ export const demandNumberSchema: ISchema = {
}
}
}
}
\ No newline at end of file
}
......@@ -3,6 +3,7 @@ import { Select, Input, Row, Button } from 'antd';
import { useDebounceFn } from '@umijs/hooks';
import { ISchemaFieldComponentProps, FormPath, useFormEffects, createFormActions, createAsyncFormActions } from '@formily/antd'
import pinyin from 'pinyin'
import { query } from 'express';
const SelectContent = (props) => {
const { handleChange, multiple, confirm, resetField } = props
......@@ -14,7 +15,7 @@ const SelectContent = (props) => {
</div>
{props.children}
{
multiple &&
multiple &&
<Row justify='end' style={{borderTop: '1px solid #eee'}}>
<Button type='link' onClick={resetField}>重置</Button>
<Button type='link' onClick={confirm}>确定</Button>
......@@ -31,7 +32,7 @@ const SearchSelect = (props: ISchemaFieldComponentProps) => {
const pinyinRef = useRef<any[]>([])
// 可选参数 fetchSearch, select为search
// multiple 是否开启多选
const { fetchSearch, fetchParams = 'name', fetchFormat, multiple = false, ...resetProps } = schema.getExtendsComponentProps()
const { fetchSearch, fetchParams = 'name', fetchFormat, multiple = false, queryParams = {}, ...resetProps } = schema.getExtendsComponentProps()
const [dataSource, setDataSource] = useState<any[]>([])
const [loading, setLoading] = useState(false)
const [openSelect, setOpenSelect] = useState(false)
......@@ -67,7 +68,8 @@ const SearchSelect = (props: ISchemaFieldComponentProps) => {
}
setLoading(true)
fetchSearch({
[fetchParams]: ''
[fetchParams]: '',
...queryParams
}).then(({data = []}) => {
const transformData = data.map(v => ({
label: v.name,
......@@ -149,4 +151,4 @@ SearchSelect.defaultProps = {}
SearchSelect.isFieldComponent = true;
export default SearchSelect
\ No newline at end of file
export default SearchSelect
......@@ -168,6 +168,7 @@ const AddUser: React.FC<{}> = () => {
initialValues={formData}
actions={userActions}
editable={pageStatus !== PageStatus.PREVIEW}
previewPlaceholder=" "
effects={($, { setFieldState }) => {
$('onFormInit').subscribe(() => {
if (id) {
......
import React, { useRef, ReactNode, useEffect } from 'react';
import { StandardTable } from 'god';
import { Row, Col, Space, Button, Card } from 'antd';
import NiceForm from '@/components/NiceForm';
import { createFormActions } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { LogisticsOrderSubmitSearchSchema, LogisticsOrderToBeSubmitSearchSchema, LogisticsOrderProcessingSearchSchema, LogisticsOrderToBeConfirmedSearchSchema, None } from './schema';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
interface tableListParams {
columns?: any, // 表头
reloadRef?: any, // 处理刷新
fetchData?: Function, // 列表数据
schema?: boolean, // 是否显示schema 搜索
schemaType?: 'LogisticsOrderSubmitSearchSchema' | 'LogisticsOrderToBeSubmitSearchSchema' | 'LogisticsOrderProcessingSearchSchema' | 'LogisticsOrderToBeConfirmedSearchSchema' | 'none'
}
const formActions = createFormActions();
const LogisticsTableList: React.FC<tableListParams> = (props) => {
const { columns, reloadRef, fetchData, schema = false, schemaType = 'none' } = props;
const ref = useRef<any>({});
const controllerBtns: ReactNode = <Row>
<Col>
<Button type='primary'>新建</Button>
</Col>
</Row>
const schemaRender = () => {
switch (schemaType) {
case 'LogisticsOrderSubmitSearchSchema': {
return LogisticsOrderSubmitSearchSchema
}
case 'LogisticsOrderToBeSubmitSearchSchema': {
return LogisticsOrderToBeSubmitSearchSchema
}
case 'LogisticsOrderProcessingSearchSchema': {
return LogisticsOrderProcessingSearchSchema
}
case 'LogisticsOrderToBeConfirmedSearchSchema': {
return LogisticsOrderToBeConfirmedSearchSchema
}
case 'none': {
return None
}
}
}
useEffect(() => {
if (reloadRef) {
const userAction = {
reload: () => ref.current.reload()
}
if (reloadRef && typeof reloadRef === 'function') {
reloadRef(userAction);
}
if (reloadRef && typeof reloadRef !== 'function') {
reloadRef.current = userAction;
}
}
})
return (
<PageHeaderWrapper>
<Card >
<StandardTable
columns={columns}
currentRef={ref}
tableProps={{ rowKey: 'id' }}
fetchTableData={(params: any) => fetchData(params)}
controlRender={
<NiceForm
actions={formActions}
effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'logisticsOrderNo', FORM_FILTER_PATH)
}}
expressionScope={{ controllerBtns }}
schema={schemaRender()}
/>
}
/>
</Card>
</PageHeaderWrapper>
)
}
export default LogisticsTableList
......@@ -83,8 +83,8 @@ const orderSearchList: React.FC<listProps> = (props) => {
})
/**
* @description: 先查询参数再 分页参数
* @param {type}
* @return:
* @param {type}
* @return:
*/
const fetchData = (params: any) => {
console.log('参数', params)
......@@ -115,9 +115,9 @@ const orderSearchList: React.FC<listProps> = (props) => {
}
/**
* @description:
* @param {type}
* @return:
* @description:
* @param {type}
* @return:
*/
useEffect(() => {
console.log(searchForm)
......@@ -189,8 +189,8 @@ const orderSearchList: React.FC<listProps> = (props) => {
{
title: ' 收货方',
align: 'left',
dataIndex: 'receiverName',
key: 'receiverName'
dataIndex: 'receiverMemberName',
key: 'receiverMemberName'
},
{
title: '总箱数',
......@@ -265,8 +265,8 @@ const orderSearchList: React.FC<listProps> = (props) => {
/**
* @description: 直接改变
* @param {type}
* @return:
* @param {type}
* @return:
*/
const handleChange = (key: any, val: any) => {
let obj = {}
......@@ -366,4 +366,4 @@ orderSearchList.defaultProps = {
type: '1',
title: '123'
}
export default orderSearchList
\ No newline at end of file
export default orderSearchList
This diff is collapsed.
......@@ -20,12 +20,13 @@ const layout: any = {
labelAlign: "left"
};
export interface interfaceinfo {
parmas?: any,
handleRevise?: Function
set?: any,
currentRef?: any,
onGet?: Function
}
const BasicInfo: React.FC<interfaceinfo> = (props) => {
const { parmas, handleRevise } = props;
const { set, currentRef, onGet } = props;
const [listcompany, setlistcompany] = useState<any>([]);//物流服务商
const [shipperaddress, setshipperaddress] = useState<any>([]);//发货地址
const [shippingvisible, setshippingvisible] = useState<boolean>(false);
......@@ -109,21 +110,50 @@ const BasicInfo: React.FC<interfaceinfo> = (props) => {
]
// 确定
const handleShipping = (type:any, values:any, param:any) => {
console.log(values, 'handleShipping')
handleRevise(values[0], 1);
form.setFieldsValue({
shipmentOrderCode: values[0].invoicesNo
})
onGet(values[0], 2);
setshippingvisible(false);
}
const handleInvoices = (type:any, values:any, param:any) => {
console.log(values, 'handleInvoices')
handleRevise(values[0], 2);
form.setFieldsValue({
invoicesNo: values[0].orderNo
})
onGet(values[0], 3);
setinvoicesvisible(false);
}
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
resolve({
state: true,
name: 'basicInfo',
data: {
digest: res.digest,
companyId: res.companyId,
shipmentOrderCode: res.shipmentOrderCode,
invoicesNo: res.invoicesNo,
shipperAddressId: res.shipperAddressId,
companyName: set.companyName,
shipperFullAddress: set.shipperFullAddress,
receiverMemberId: set.receiverMemberId,
receiverMemberName: set.receiverMemberName,
receiverFullAddress: set.receiverFullAddress,
receiverName: set.receiverName,
receiverPhone: set.receiverPhone,
}
})
}).catch(error => {
console.log(error)
})
})
}
})
return (
<>
<Form
......@@ -134,7 +164,7 @@ const BasicInfo: React.FC<interfaceinfo> = (props) => {
<Input />
</Form.Item>
<Form.Item label="物流服务商" name="companyId" rules={[{ required: true, message: '请选择流服务商' }]}>
<Select allowClear>
<Select allowClear onChange={(value, option) => onGet(option, 1)}>
{
listcompany.map((item: any, index: number) => (
<Option key={item.id} value={item.id}>{item.name}</Option>
......@@ -144,20 +174,20 @@ const BasicInfo: React.FC<interfaceinfo> = (props) => {
</Form.Item>
<Form.Item label="物流单号" name='receiverName1'><span></span></Form.Item>
<Form.Item label='对应发货单号' name='shipmentOrderCode'>
<Search value={parmas.shipmentOrderCode || undefined} readOnly enterButton={<><LinkOutlined /> 选择</>} onSearch={()=>setshippingvisible(true)} />
<Search readOnly enterButton={<><LinkOutlined /> 选择</>} onSearch={()=>setshippingvisible(true)} />
{/* <Button type='link'>查看单号详情</Button> */}
</Form.Item>
<Form.Item label='对应订单号/售后单' name='invoicesNo'>
<Search value={parmas.invoicesNo || undefined} readOnly enterButton={<><LinkOutlined /> 选择</>} onSearch={()=>setinvoicesvisible(true)} />
<Search readOnly enterButton={<><LinkOutlined /> 选择</>} onSearch={()=>setinvoicesvisible(true)} />
{/* <Button type='link'>查看单号详情</Button> */}
</Form.Item>
<Form.Item label="收货方" name='receiverName'><span>{parmas.receiverName}</span></Form.Item>
<Form.Item label="收货方" name='receiverName'><span>{set.receiverName}</span></Form.Item>
<Form.Item label="收货地址" name='receiverFullAddress'>
<div style={{ lineHeight: '36px' }}>{parmas.memberName}/{parmas.phone}</div>
<div>{parmas.receiverFullAddress}</div>
<div style={{ lineHeight: '36px' }}>{set.receiverName}/{set.receiverPhone}</div>
<div>{set.receiverFullAddress}</div>
</Form.Item>
<Form.Item label="发货地址" name="shipperAddressId">
<Select allowClear>
<Select allowClear onChange={(value, option) => onGet(option, 4)}>
{
shipperaddress.map((item: any, index: number) => (
<Option key={item.id} value={item.id}>{item.fullAddress}</Option>
......@@ -168,23 +198,23 @@ const BasicInfo: React.FC<interfaceinfo> = (props) => {
<Form.Item label="单据时间" name='voucherTime'><span></span></Form.Item>
<Form.Item label="外部状态" name='externalState'><span></span></Form.Item>
</Form>
<ShippingModal
<ShippingModal
title='选择发货单'
columns={shippingColumns}
type={2}
onOk={(type, values, param) => handleShipping(type, values, param)}
dialogVisible={shippingvisible}
onCancel={() => setshippingvisible(false)}
onCancel={() => setshippingvisible(false)}
/>
<InvoicesModal
<InvoicesModal
title='选择订单'
columns={invoicesColumns}
type={1}
onOk={(type, values, param) => handleInvoices(type, values, param)}
dialogVisible={invoicesvisible}
onCancel={() => setinvoicesvisible(false)}
onCancel={() => setinvoicesvisible(false)}
/>
</>
)
}
export default BasicInfo;
\ No newline at end of file
export default BasicInfo;
......@@ -4,7 +4,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import { PlusOutlined } from '@ant-design/icons';
import ModalTable from '@/components/ModalTable'
const AddGoods: React.FC<{}> = () => {
interface goodsParamsProps {
currentRef?: any,
set?: any
}
const AddGoods: React.FC<goodsParamsProps> = (props) => {
const columns: ColumnType<any>[] = [
{
title: 'ID',
......@@ -95,7 +100,7 @@ const AddGoods: React.FC<{}> = () => {
/**获取商品列表 */
const fetchProductList = (params:any) => {
return new Promise(resolve => {
})
}
......@@ -117,4 +122,4 @@ const AddGoods: React.FC<{}> = () => {
</>
)
}
export default AddGoods;
\ No newline at end of file
export default AddGoods;
......@@ -3,7 +3,7 @@
* @Date: 2020-11-06
* @Author: HJX
*/
import React, { useState } from 'react';
import React, { useState, useRef } from 'react';
import { Button, Card, Tabs } from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ReturnEle from '@/components/ReturnEle';
......@@ -14,6 +14,7 @@ import Goods from './components/goods';//物流单明细
const { TabPane } = Tabs
const AddEditLogistics: React.FC<{}> = () => {
const basic = useRef<any>();
// 用于提交的
const [parmas, setParmas] = useState<any>({
digest: '',//单据摘要
......@@ -31,33 +32,36 @@ const AddEditLogistics: React.FC<{}> = () => {
detailList: [],//物流单明细列表 ,LogisticsOrderDetailRequest
})
const [data, setData] = useState<any>({})
// 调用修改Fn
const handleRevise = (value: any, index: number) => {
console.log(value, '传过来的数据')
// 提交数据
const handleSubmit = async () => {
const basicRef = await basic.current.get();
if (basicRef.state) {
console.log(basicRef.data);
}
}
const getBasicInfo = (value: any, index: number) => {
const data = { ...parmas };
if (index === 1) {
data.invoicesNo = value.orderNo;//对应单据编号
data.receiverAddressId = value.deliveryAddresId;//收货方id
data.shipmentOrderId = value.id;//发货单id
data.companyName = value.children
} else if (index === 2) {
data.shipmentOrderCode = value.invoicesNo;//发货单号
data.phone = value.phone;
data.receiverPhone = value.phone;
data.receiverName = value.receiverName;//收货方名称
data.receiverFullAddress = value.fullAddress;
data.memberName = value.memberName;
setParmas(data)
} else if (index === 2 && !data.invoicesNo) {
data.phone = value.phone;
data.receiverMemberName = value.memberName;
data.invoicesId = value.id
} else if (index === 3 && !data.invoicesNo) {
data.receiverPhone = value.phone;
data.receiverName = value.receiverName;//收货方名称
data.receiverFullAddress = value.fullAddress;
data.memberName = value.memberName;
setParmas(data)
data.receiverMemberName = value.memberName;
data.invoicesId = value.id
} else {
data.shipperFullAddress = value.children
}
}
// 提交数据
const handleSubmit = () => {
console.log('提交数据');
setParmas(data)
}
return (
......@@ -70,12 +74,15 @@ const AddEditLogistics: React.FC<{}> = () => {
<Tabs type="card">
<TabPane key='tab-1' tab='基本信息'>
<BasicInfo
parmas={parmas}
handleRevise={handleRevise}
currentRef={basic}
set={parmas}
onGet={getBasicInfo}
/>
</TabPane>
<TabPane key='tab-2' tab='物流单明细'>
<Goods />
<Goods
set={parmas}
/>
</TabPane>
<TabPane key='tab-3' tab='运费'></TabPane>
<TabPane key='tab-4' tab='流转记录'>
......@@ -87,4 +94,4 @@ const AddEditLogistics: React.FC<{}> = () => {
)
}
export default AddEditLogistics
\ No newline at end of file
export default AddEditLogistics
......@@ -30,14 +30,14 @@ const Category: React.FC<CategoryPropsType> = (props) => {
const [initSelectAttributeList, setInitSelectAttributeList] = useState<any>([])
useEffect(() => {
console.log(JSON.stringify(filterList))
if (isEmpty(filterList)) {
setSelectedKeys([])
setLastCategoryId(null)
setSelectAttrbuteList([])
} else {
const initKeys = []
// let initAttrKeys = []
let attrInitKeys = []
for (const item of filterList) {
if (item.type === FILTER_TYPE.category) {
initKeys.push(String(item.key))
......@@ -45,9 +45,15 @@ const Category: React.FC<CategoryPropsType> = (props) => {
initKeys.push(String(item.key))
}
if (item.type === FILTER_TYPE.attribute) {
setInitSelectAttributeList(item.key)
attrInitKeys = item.key
}
}
setInitSelectAttributeList(attrInitKeys)
if(isEmpty(attrInitKeys)) {
setSelectAttrbuteList([])
}
setSelectedKeys(initKeys)
}
}, [filterList])
......@@ -197,15 +203,10 @@ const Category: React.FC<CategoryPropsType> = (props) => {
setLastCategoryId(selectedKeys[0])
}
} else {
setLastCategoryId(null)
setAttributeList([])
if(filterList.some(item => item.type === FILTER_TYPE.attribute)) {
onFilter({
type: FILTER_TYPE.attribute,
key: null,
title: ``
})
}
initAttribute()
}
if(selectedKeys.length === 0) {
initAttribute()
}
switch(layoutType) {
case LAYOUT_TYPE.mall:
......@@ -226,6 +227,18 @@ const Category: React.FC<CategoryPropsType> = (props) => {
}
const initAttribute = () => {
setLastCategoryId(null)
setAttributeList([])
if(filterList.some(item => item.type === FILTER_TYPE.attribute)) {
onFilter({
type: FILTER_TYPE.attribute,
key: null,
title: ``
})
}
}
const handleExpand = (expandedKeys) => {
setExpandedKeys(expandedKeys)
}
......
......@@ -154,7 +154,7 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
}
}
const electronBtn = <Button style={{marginLeft: 24}} onClick={createElectron} loading={loading}>生成电子合同</Button>
const handleSubmit = async (value) => {
const params = {
......@@ -170,7 +170,7 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
const handleConfirm = () => {
schemaActions.submit()
}
return (
<ModalForm
modalTitle='确认提交审核'
......@@ -186,12 +186,23 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
expressionScope={{
electronBtn
}}
effects={($, actions) => {
effects={async ($, actions) => {
// $('onFormInit').subscribe(() => {
if (data.isElectronicContract === 1) {
useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>{
actions.setFieldValue("contractTemplateId", data.contractTemplateId)
// useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>{
// actions.setFieldValue("contractTemplateId", data.contractTemplateId)
// })
const { data } = await PublicApi.getOrderSelectListContractTemplate()
let options = data.map(item => ({
label: item.name,
value: item.id,
}))
actions.setFieldState('contractTemplateId', state => {
state.props.enum = options
})
if(options?.length && options.filter(_i => _i.value === data.contractTemplateId).length) {
actions.setFieldValue("contractTemplateId", data.contractTemplateId)
}
} else {
actions.setFieldState('usingElectronicContracts', state => {
state.value = 0
......@@ -200,6 +211,9 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
}
})
}
$('onFieldValueChange', 'contractTemplateId').subscribe(state => {
console.log(state.props)
})
// })
}}
/>
......@@ -208,4 +222,4 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
CreateOrderElectronModal.defaultProps = {}
export default CreateOrderElectronModal
\ No newline at end of file
export default CreateOrderElectronModal
......@@ -25,7 +25,6 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
const isDeleved = pathname.indexOf('readyConfirmDelevedOrder') !== -1
// 是否是确认回单页
const isReturn = pathname.indexOf('readyConfirmReturnOrder') !== -1
console.log(isPreview, isDeleved, isReturn)
// 用于储存已经修改过的订单id
const dataRef = useRef<any>([])
......
......@@ -394,45 +394,72 @@ const Details: React.FC<parmas> = (props) => {
}
>
<div className={style.item_wrap}>
{
<Tabs>
<TabPane tab="外部流转" key="1">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={Number(data.externalState - 1)}
>
{detailData.externalStateStep.items.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
/>
);
})}
</Steps>
</TabPane>
<TabPane tab="内部流转" key="2">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={Number(data.interiorState - 1)}
>
{detailData.interiorStateStep.items.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
/>
);
})}
</Steps>
</TabPane>
</Tabs>
}
<Tabs>
{
Object.keys(data).length > 0 &&
<>
{type === 'quote' ?
<TabPane tab="外部流转" key="1">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={data.externalState - 1}
>
{Object.keys(data).length > 0 && data.externalRequisitionFormResponses.map((item, index) => {
return (
<Step
key={index}
title={item.roleName}
description={item.operation}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
</Steps>
</TabPane>
:
<>
<TabPane tab="外部流转" key="1">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={data.externalState - 1}
>
{Object.keys(data).length > 0 && data.externalInquiryListStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
</Steps>
</TabPane>
<TabPane tab="内部流转" key="2">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={Number(data.interiorState - 1)}
>
{Object.keys(data).length > 0 && data.interiorRequisitionFormStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
</Steps>
</TabPane>
</>
}
</>
}
</Tabs>
</div>
<div className={style.item_wrap}>
<div className={style.mainCol_title} style={view === 2 ? { paddingBottom: '0px' } : { paddingBottom: '24px' }}>询价商品</div>
......@@ -515,12 +542,20 @@ const Details: React.FC<parmas> = (props) => {
</div>
<div className={style.item_wrap}>
<Tabs>
<TabPane tab="外部流转记录" key="1">
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={view === 2 ? data.externalRequisitionFormResponses : data.externalInquiryListLogResponses} />
</TabPane>
<TabPane tab="内部流转记录" key="2">
<Table columns={flowRecord.interior} rowKey='id' pagination={false} dataSource={view === 2 ? data.interiorQuotationLogResponses : data.interiorInquiryListLogResponses} />
</TabPane>
{
type === 'quote' ?
<TabPane tab="外部流转记录" key="1">
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={view === 2 ? data.externalRequisitionFormResponses : data.externalInquiryListLogResponses} />
</TabPane> :
<>
<TabPane tab="外部流转记录" key="1">
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={view === 2 ? data.externalRequisitionFormResponses : data.externalInquiryListLogResponses} />
</TabPane>
<TabPane tab="内部流转记录" key="2">
<Table columns={flowRecord.interior} rowKey='id' pagination={false} dataSource={view === 2 ? data.interiorQuotationLogResponses : data.interiorInquiryListLogResponses} />
</TabPane>
</>
}
</Tabs>
</div>
<AuditModal
......@@ -534,4 +569,4 @@ const Details: React.FC<parmas> = (props) => {
)
}
export default Details
\ No newline at end of file
export default Details
......@@ -5,8 +5,8 @@ import TranactionRoute from 'config/routes/tranactionRoute'
/**
* @description: 待审核询价单
* @param {type}
* @return {type}
* @param {type}
* @return {type}
*/
export const pendingReviewSchema: ISchema = {
type: 'object',
......
......@@ -18,38 +18,10 @@ const FlowRecord: React.FC<parmas> = (props) => {
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
/**
* @description: 外部流转记录
* @param {type}
* @return {type}
*/
const externalTextState = (text) => {
let name = ''
editData.externalInquiryListStateResponses.forEach(element => {
if (element.state === text) {
name = element.operationalProcess
}
})
return <>{name}</>
}
/**
* @description: 内部流转记录
* @param {type}
* @return {type}
*/
const interiorTextState = (text) => {
let name = ''
editData.interiorInquiryListLogResponses.forEach(element => {
if (element.state === text) {
name = element.operationalProcess
}
})
return <>{name}</>
}
const outerColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
dataIndex: 'id',
}, {
title: '操作角色',
dataIndex: 'roleName',
......@@ -70,7 +42,7 @@ const FlowRecord: React.FC<parmas> = (props) => {
}]
const insideColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
dataIndex: 'id',
}, {
title: '操作人',
dataIndex: 'roleName',
......
import React, { useState, useEffect } from 'react';
import style from './index.less';
import { history } from 'umi';
import { Button, Card, Tabs, Steps, Table } from 'antd';
import { Button, Tabs, Steps, Table } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { StopOutlined, CheckSquareOutlined, LinkOutlined } from '@ant-design/icons'
import { CheckSquareOutlined, LinkOutlined } from '@ant-design/icons'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { quoteOrderInternalState, inquiryQuoteOuterState } from '../../common/tableStatusList';
import AuditModal from '../components/auditModel';
import moment from 'moment';
import { PublicApi } from '@/services/api';
......@@ -41,59 +40,7 @@ const Details: React.FC<parmas> = (props) => {
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
// steps 切换
const [detailData, setDetailData] = useState<any>({
externalStateStep: {
current: 0,
title: '外部流转',
items: [
{
title: '采购商',
desc: '提交询价单',
},
{
title: '供应商',
desc: '提交报价单',
},
{
title: '采购商',
desc: '确认报价单',
},
{
title: '完成',
desc: ''
}
]
},
interiorStateStep: {
current: 0,
title: '内部流转',
items: [
{
title: '采购员',
desc: '新增询价单',
},
{
title: '采购经理',
desc: '审核询价单',
},
{
title: '副总经理',
desc: '审核询价单',
},
{
title: '采购员',
desc: '提交询价单',
},
{
title: '完成',
desc: ''
}
]
}
})
// 模拟数据
const [data, setdata] = useState<any>({});
// 询价商品
......@@ -357,12 +304,13 @@ const Details: React.FC<parmas> = (props) => {
progressDot
current={Number(data.externalState - 1)}
>
{detailData.externalStateStep.items.map((item, index) => {
{Object.keys(data).length > 0 && data.externalInquiryListStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
......@@ -374,12 +322,13 @@ const Details: React.FC<parmas> = (props) => {
progressDot
current={Number(data.interiorState - 1)}
>
{detailData.interiorStateStep.items.map((item, index) => {
{Object.keys(data).length > 0 && data.interiorRequisitionFormStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
......@@ -479,4 +428,4 @@ const Details: React.FC<parmas> = (props) => {
)
}
export default Details
\ No newline at end of file
export default Details
......@@ -19,7 +19,7 @@ const FlowRecord: React.FC<parmas> = (props) => {
}
const outerColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
dataIndex: 'id',
}, {
title: '操作角色',
dataIndex: 'roleName',
......@@ -40,7 +40,7 @@ const FlowRecord: React.FC<parmas> = (props) => {
}]
const insideColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
dataIndex: 'id',
}, {
title: '操作人',
dataIndex: 'roleName',
......
......@@ -434,19 +434,20 @@ const Details: React.FC<parmas> = (props) => {
{
Object.keys(data).length > 0 &&
<>
{type === 'rfq' ?
{type === 'quote' ?
<TabPane tab="外部流转" key="1">
<Steps
style={{ padding: '20px 0' }}
progressDot
current={data.externalState - 1}
>
{detailData.externalStateStep.items.map((item, index) => {
{Object.keys(data).length > 0 && data.externalRequisitionFormResponses.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
title={item.roleName}
description={item.operation}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
......@@ -460,12 +461,13 @@ const Details: React.FC<parmas> = (props) => {
progressDot
current={data.externalState - 1}
>
{detailData.externalStateStep.items.map((item, index) => {
{Object.keys(data).length > 0 && data.externalInquiryListStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
......@@ -477,12 +479,13 @@ const Details: React.FC<parmas> = (props) => {
progressDot
current={Number(data.interiorState - 1)}
>
{detailData.interiorStateStep.items.map((item, index) => {
{Object.keys(data).length > 0 && data.interiorRequisitionFormStateResponses.map((item, index) => {
return (
<Step
key={index}
title={item.title}
description={item.desc}
title={item.roleName}
description={item.operationalProcess}
status={item.isExecute ? 'finish' : 'wait'}
/>
);
})}
......@@ -575,7 +578,7 @@ const Details: React.FC<parmas> = (props) => {
</div>
<div className={style.item_wrap}>
{
type === 'rfq' ?
type === 'quote' ?
<>
<div className={style.mainCol_title}>外部流转记录</div>
<Table columns={flowRecord.external} rowKey='id' pagination={false} dataSource={data.externalInquiryListLogResponses} />
......
......@@ -8,6 +8,14 @@ import { DELIVERY_TYPE, OrderModalType } from '@/constants'
import { PublicApi } from '@/services/api'
import { EnvironmentOutlined } from '@ant-design/icons'
import { Popover, Space, Row, message } from 'antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { addOrderModalSchema } from '@/components/ModalTable/schema'
import Search from '@/components/NiceForm/components/Search'
import SearchSelect from '@/components/NiceForm/components/SearchSelect';
import Submit from '@/components/NiceForm/components/Submit';
import DateSelect from '@/components/NiceForm/components/DateSelect';
import { action } from 'mobx'
export interface ProductModalTableProps extends ModalTableProps {
type?: 'radio' | 'checkbox',
......@@ -169,6 +177,7 @@ const ProductModalTable:React.FC<ProductModalTableProps> = (props) => {
return fetchOrderApi.getProductList(params)
}
return (
<ModalTable
modalTitle='选择订单商品'
......@@ -180,7 +189,7 @@ const ProductModalTable:React.FC<ProductModalTableProps> = (props) => {
fetchTableData={fetchProductList}
rowSelection={rowSelection}
resetModal={{destroyOnClose: true, forceRender: true}}
modalType='productByDefault'
modalType='none'
tableProps={{
rowKey: 'id',
onRow: (record) => ({
......@@ -190,6 +199,32 @@ const ProductModalTable:React.FC<ProductModalTableProps> = (props) => {
},
})
}}
formilyProps={{
ctx: {
schema: addOrderModalSchema,
components: { ModalSearch: Search, SearchSelect, Submit, DateSelect },
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'name',
FORM_FILTER_PATH,
);
actions.setFieldState('customerCategoryId', state => {
state.props['x-component-props'].queryParams = {
memberId: schemaAction.getFieldValue('supplyMembersId'),
memberRoleId: schemaAction.getFieldValue('supplyMembersRoleId')
}
})
actions.setFieldState('brandId', state => {
state.props['x-component-props'].queryParams = {
memberId: schemaAction.getFieldValue('supplyMembersId'),
memberRoleId: schemaAction.getFieldValue('supplyMembersRoleId')
}
})
}
}
}}
{...restProps}
/>
)
......
......@@ -86,7 +86,9 @@ export const useEditHideField = () => {
})
}
export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFormAsyncActions, update) => {
export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFormAsyncActions, update, editData) => {
const { pageStatus } = usePageStatus()
FormEffectHooks.onFieldValueChange$('orderProductRequests').subscribe(state => {
const { value } = state
const payInfoData = ctx.getFieldValue('paymentInformationResponses')
......@@ -99,17 +101,20 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
if (value && value.length > 0){
// 请求一次并复制给支付信息
const productItem = value[0]
console.log(productItem,'productItem')
fetchOrderApi.getPayInfoList({
// productId: productItem.id,
productId: productItem?.commodityId ? productItem.id : productItem.productId,
memberId: productItem.memberId,
memberRoleId: productItem.memberRoleId,
orderModel: ctx.getFieldValue('orderModel'),
}).then(data => {
ctx.setFieldValue('paymentInformationResponses', data)
}).catch(err => {
})
if(pageStatus === PageStatus.EDIT) { // 编辑下 支付信息联动实现
} else if(pageStatus === PageStatus.ADD) { // 新增下 需要支付信息生成支付次数
fetchOrderApi.getPayInfoList({
productId: productItem?.commodityId ? productItem.id : productItem.productId,
memberId: productItem.memberId,
memberRoleId: productItem.memberRoleId,
orderModel: ctx.getFieldValue('orderModel'),
}).then(data => {
ctx.setFieldValue('paymentInformationResponses', data)
}).catch(err => {
})
}
}
// 确认后 需根据商品id请求会员折扣接口, 以及配送方式
......
......@@ -4,7 +4,7 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout'
import ReutrnEle from '@/components/ReturnEle'
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'
import { Button, Card, Row, Col, Drawer, message } from 'antd'
import { createFormActions, registerVirtualBox, useFormSpy } from '@formily/antd'
import { createFormActions, registerVirtualBox, useFormSpy, createAsyncFormActions } from '@formily/antd'
import { SaveOutlined, LinkOutlined, PlusOutlined } from '@ant-design/icons'
import NiceForm from '@/components/NiceForm'
import { orderDetailSchema, orderAddSchema, mergeAllSchemas } from './schema'
......@@ -204,6 +204,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
// theInvoiceInfo: (value.typeof value.theInvoiceId === 'object' ? value.theInvoiceId : null
// theInvoiceInfo: value.theInvoiceInfo
}
console.log(params, 'params')
// 校验是否选择支付渠道
let judgementByPay = params.paymentInformationResponses.map(item => {
if(item.channel && item.payWay){
......@@ -370,6 +371,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
// }
})
}
console.log(initFormValue, 'init')
})
// 监听商品总价的变更, 此处逻辑需优化
$('sumPrice').subscribe(payload => {
......@@ -442,7 +444,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
})
useEditHideField()
// 商品信息的改动 驱动支付信息变化
useProductTableChangeForPay(ctx, update)
useProductTableChangeForPay(ctx, update, initFormValue)
}}
expressionScope={{
orderNoPrice,
......
......@@ -136,7 +136,9 @@ class FilterStore {
for (const filterItem of newFilterList) {
switch (filterItem.type) {
case FILTER_TYPE.category:
tempFilterParam.categoryId = Number(filterItem.key[0])
if(Number(filterItem.key[0])) {
tempFilterParam.categoryId = Number(filterItem.key[0])
}
break
case FILTER_TYPE.customerCategory:
tempFilterParam.customerCategoryId = Number(filterItem.key[0])
......
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