Commit f88a84a4 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

feat: 新增采购询价页面

parent aafd9e85
......@@ -46,6 +46,8 @@ const memberCenterRoute = {
// srm开发临时使用...
{
path:"/memberCenter/procurementAbility",
name:"采购能力",
icon:"commodity",
routes: [
// 招标
{
......@@ -82,9 +84,51 @@ const memberCenterRoute = {
},
]
},
// 采购询价
{
path:'/memberCenter/procurementAbility/purchaseInquiry',
name:'采购询价',
routes: [
{
// 采购需求单查询
path: '/memberCenter/procurementAbility/purchaseInquiry/inquiry',
name: '采购需求单查询',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/inquiry'
},
{
// 待新增采购需求单
path: '/memberCenter/procurementAbility/purchaseInquiry/addInquiry',
name: '待新增采购需求单',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry'
},
{
// 新增采购需求单
path: '/memberCenter/procurementAbility/purchaseInquiry/add',
name: '新增采购需求单',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/addForm',
hideInMenu: true,
},
{
// 待审核采购需求单(一级)
path: '/memberCenter/procurementAbility/purchaseInquiry/auditInquiryOne',
name: '待审核采购需求单(一级)',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryOne'
},
{
// 待审核采购需求单(二级)
path: '/memberCenter/procurementAbility/purchaseInquiry/auditInquiryTwo',
name: '待审核采购需求单(二级)',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryTwo'
},
{
// 待提交采购需求单
path: '/memberCenter/procurementAbility/purchaseInquiry/submitInquiry',
name: '待提交采购需求单',
component: '@/pages/transaction/purchaseAbility/purchaseInquiry/submitInquiry'
}
]
},
],
name:"采购能力",
icon:"commodity",
},
//...
...asyncRoutes,
......
import callForBids from './callForBids';
import purchaseInquiry from './purchaseInquiry';
/**
* 采购能力路由
......@@ -10,7 +11,8 @@ const ProcurementRoute = {
routes: [
// 招标
...callForBids,
// 采购询价
...purchaseInquiry,
]
}
......
/**
* @description: 采购能力 采购询价
* @param {type}
* @return {type}
*/
// export default [
// {
// // 采购询价
// path:'/memberCenter/procurementAbility/purchaseInquiry',
// name:'purchaseInquiry',
// routes:[
// // 招标查询
// {
// path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch',
// name: 'callForBidsSearch',
// component: '@/pages/procurement/callForBids/callForBidsSearch'
// },
// // // 招标查询-详情
// // {
// // path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch/preview',
// // name: 'callForBidsSearchPreview',
// // hideInMenu: true,
// // component: '@/pages/procurement/callForBids/callForBidsSearch/details'
// // },
// ]
// }
// ]
export default [
{
path:'/memberCenter/procurementAbility/callForBids',
name:'purchaseInquiry',
routes:[
// 招标查询
{
path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch',
name: 'callForBidsSearch',
component: '@/pages/procurement/callForBids/callForBidsSearch'
},
// // 招标查询-详情
// {
// path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch/preview',
// name: 'callForBidsSearchPreview',
// hideInMenu: true,
// component: '@/pages/procurement/callForBids/callForBidsSearch/details'
// },
]
}
]
......@@ -637,5 +637,5 @@ export default {
// 采购能力
'menu.procurementAbility': '采购能力',
'menu.procurementAbility.callForBids': '招标',
'menu.procurementAbility.purchaseInquiry': '采购询价',
};
......@@ -35,28 +35,28 @@ const TableListInfo: React.FC<tableListParams> = (props) => {
const [externalState, setExternalState] = useState<any>([]);
const [interiorState, setInteriorState] = useState<any>([]);
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<number>>([]);
useEffect(() => {
const external = new Promise(resolve => {
//查询需求单外部状态枚举列表
PublicApi.getOrderRequisitionFormExternalStateEnum().then((res: any) => {
if (res.code === 1000) {
resolve(res.data)
}
})
})
const interior = new Promise(resolve => {
// 查询需求单内部状态枚举列表
PublicApi.getOrderRequisitionFormInteriorStateEnum().then((res: any) => {
if (res.code === 1000) {
resolve(res.data)
}
})
})
Promise.all([external, interior]).then(res => {
setExternalState(res[0])
setInteriorState(res[1])
})
}, [])
// useEffect(() => {
// const external = new Promise(resolve => {
// //查询需求单外部状态枚举列表
// PublicApi.getOrderRequisitionFormExternalStateEnum().then((res: any) => {
// if (res.code === 1000) {
// resolve(res.data)
// }
// })
// })
// const interior = new Promise(resolve => {
// // 查询需求单内部状态枚举列表
// PublicApi.getOrderRequisitionFormInteriorStateEnum().then((res: any) => {
// if (res.code === 1000) {
// resolve(res.data)
// }
// })
// })
// Promise.all([external, interior]).then(res => {
// setExternalState(res[0])
// setInteriorState(res[1])
// })
// }, [])
/**时间格式化 */
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
......
import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card } from 'antd';
import { StandardTable } from 'god';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ColumnType } from 'antd/lib/table/interface';
import NiceForm from '@/components/NiceForm'; import { createFormActions, FormEffectHooks } from '@formily/antd';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { searchSelectGetSelectCategoryOptionEffect } from '../../../effect/index'
import {
PurchaseDemandSchema,
PurchaseDemandPublicSchema,
} from '../../schema';
interface Iprops {
fetch?: () => Promise<unknown>,
controllerBtns?: React.ReactNode,
schemaType?: 'PurchaseDemand' | 'PurchaseDemandPublic',
columns: ColumnType<any>[],
effects?: string,
}
const formActions = createFormActions();
const Table: React.FC<Iprops> = (props: any) => {
const {
schemaType,
columns,
effects,
fetch,
controllerBtns,
} = props;
const ref = useRef<any>({});
/** Schema */
const SchemaRender = () => {
switch (schemaType) {
case 'PurchaseDemand':
return PurchaseDemandSchema
case 'PurchaseDemandPublic':
return PurchaseDemandPublicSchema
}
}
/** 列表数据 */
const fetchData = (params?: any) => {
return new Promise((resolve, reject) => {
fetch({ ...params }).then(res => {
resolve(res.data)
})
})
}
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
fetchTableData={(params: any) => fetchData(params)}
controlRender={
<NiceForm
actions={formActions}
expressionScope={{ controllerBtns }}
effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, effects, FORM_FILTER_PATH)
FormEffectHooks.onFieldChange$('category').subscribe(state => {
searchSelectGetSelectCategoryOptionEffect(actions, 'category')
})
}}
schema={
schemaType && SchemaRender()
}
>
</NiceForm>
}
/>
</Card>
</PageHeaderWrapper>
)
}
export default Table;
import React, { useState, useRef, useEffect } from 'react';
import { history } from 'umi';
import ReutrnEle from '@/components/ReturnEle'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Button, Card, Tabs, Badge } from 'antd';
import BasicInfo from './components/basicInfo';
import TradingConditions from './components/tradingConditions'
import FlowRecord from './components/flowRecord';
import AddGoods from './components/addGoods';
import DemandDbutted from './components/demandDbutted';
import { PublicApi } from '@/services/api';
const { TabPane } = Tabs;
const TabFormErrors = (props) => {
return (
<Badge size="small" count={props.dot} offset={[6, -5]}>
{props.children}
</Badge>
)
}
const AddDemandOrder: React.FC<{}> = () => {
const { id } = history.location.query;
const [fetchdata, setfetchdata] = useState<any>({});
const [goodsInfo, setGoodsInfo] = useState<any>({}); /**0选择系统所需要的参数 */
const [attribute, setattribute] = useState<Array<any>>([]);
const [externalState, setExternalState] = useState<any>([]);
const [interiorState, setInteriorState] = useState<any>([]);
const [badge, setbadge] = useState<any>([0, 0, 0, 0]);
// useEffect(() => {
// const external = new Promise(resolve => {
// //查询需求单外部状态枚举列表
// PublicApi.getOrderRequisitionFormExternalStateEnum().then((res: any) => {
// if (res.code === 1000) {
// resolve(res.data)
// }
// })
// })
// const interior = new Promise(resolve => {
// // 查询需求单内部状态枚举列表
// PublicApi.getOrderRequisitionFormInteriorStateEnum().then((res: any) => {
// if (res.code === 1000) {
// resolve(res.data)
// }
// })
// })
// Promise.all([external, interior]).then(res => {
// setExternalState(res[0])
// setInteriorState(res[1])
// })
// }, [])
const basic = useRef<any>();
const goods = useRef<any>();
const trading = useRef<any>();
const dbutted = useRef<any>();
/**get子组件的数据 */
/**提交数据 */
const onSubmit = async () => {
const basicRef = await basic.current.get();
const goodsRef = await goods.current.get();
const tradingRef = await trading.current.get();
const dbuttedRef = await dbutted.current.get();
if (basicRef.state && tradingRef.state && goodsRef.state && dbuttedRef.state) {
const data = {
...basicRef.data,
...tradingRef.data,
...goodsRef.data,
...dbuttedRef.data
}
if (basicRef.data.requisitionFormAddress.length > 0) {
data.defaultAddres = 0
} else {
data.defaultAddres = 1
}
if (id) {
data.id = fetchdata.id;
PublicApi.postOrderRequisitionFormUpdate(data).then(res => {
if (res.code === 1000) {
history.goBack()
}
})
} else {
PublicApi.postOrderRequisitionFormAdd(data).then(res => {
if (res.code === 1000) {
history.goBack()
}
})
}
}
}
useEffect(() => {
if (id) {
new Promise(resolve => {
PublicApi.getOrderRequisitionFormDetails({ id, current: '1', pageSize: '10' }).then(res => {
if (res.code === 1000) {
resolve(res.data)
}
})
}).then((res: any) => {
setfetchdata(res)
})
}
}, [id])
/**获取所有地址 */
const getAreaCode = (record: any) => {
setGoodsInfo({ ...goodsInfo, record })
}
/**获取添加的商品品类id */
const getCategoryIds = (data: any, index: number, record?: any) => {
if (index === 1) {
const categoryIds: Array<any>[] = []
data.forEach((item: any) => {
categoryIds.push(...item.ids)
})
setGoodsInfo({ ...goodsInfo, categoryIds })
if (record) {
setattribute([...attribute, ...record])
}
} else if(index === 2) {
console.log(data, 10086)
}
}
/**必填没填写出现角标 */
const getError = (num: number, idx: number) => {
const data = [...badge];
data[idx] = num;
setbadge(data);
}
return (
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
extra={
<Button type="primary" onClick={onSubmit}> 保存</Button>
}
>
<Card>
<Tabs type='card'>
<TabPane forceRender tab={<TabFormErrors dot={badge[0]}>基本信息</TabFormErrors>} key='1'>
<BasicInfo
set={fetchdata}
onBadge={getError}
onGet={getAreaCode}
currentRef={basic}
externalState={externalState}
interiorState={interiorState}
/>
</TabPane>
<TabPane forceRender tab={<TabFormErrors dot={badge[1]}>添加商品</TabFormErrors>} key='2'>
<AddGoods
set={fetchdata}
onBadge={getError}
onGet={getCategoryIds}
currentRef={goods}
/>
</TabPane>
<TabPane forceRender tab={<TabFormErrors dot={badge[2]}>交易条件</TabFormErrors>} key='3'>
<TradingConditions
set={fetchdata}
onBadge={getError}
currentRef={trading}
/>
</TabPane>
<TabPane forceRender tab={<TabFormErrors dot={badge[3]}>需求对接</TabFormErrors>} key='4'>
<DemandDbutted
set={fetchdata}
onBadge={getError}
goodsInfo={goodsInfo}
attribute={attribute}
currentRef={dbutted}
/>
</TabPane>
<TabPane forceRender tab='流转记录' key='5'>
<FlowRecord
set={fetchdata}
externalState={externalState}
interiorState={interiorState}
/>
</TabPane>
</Tabs>
</Card>
</PageHeaderWrapper>
)
}
export default AddDemandOrder;
import React, { useState, ReactNode, useEffect } from 'react';
import { Form, Radio, Button, Table } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import ModalAnchor from './Modal/modalAnchor';
import ModalGoods from './Modal/modalGoods';
import { PlusOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
export interface faceSetData {
set?: any,
onGet?: Function,
currentRef: any,
onBadge?: Function
}
const AddGoods: React.FC<faceSetData> = (props) => {
const { set, currentRef, onGet, onBadge } = props
const [form] = Form.useForm();
const [addMode, setaddMode] = useState<number>(0);
const btnname: Array<string> = ['添加商品', '选择货品', '导入货品']
const [visible, setvisible] = useState<Array<boolean>>([false, false, false, false]);
const [tabledata, settabledata] = useState<any>([]);
/**存放编辑的商品数据 */
const [editdata, seteditdata] = useState<any>({});
/**是否编辑 */
const [isEdit, setisEdit] = useState<boolean>(false);
/**编辑的下标 */
const [idx, setidx] = useState<number>(-1);
/** 平台属性添加表头 */
const columns: ColumnType<Object>[] = [
{
title: '商品编号',
key: 'goodsNo',
dataIndex: 'goodsNo',
},
{
title: '商品名称',
key: 'name',
dataIndex: 'name',
},
{
title: '规格型号',
key: 'model',
dataIndex: 'model',
},
{
title: '品类',
key: 'category',
dataIndex: 'category',
},
{
title: '品牌',
key: 'brand',
dataIndex: 'brand',
},
{
title: '采购数量',
key: 'purchaseCount',
dataIndex: 'purchaseCount',
},
{
title: '操作',
key: 'options',
dataIndex: 'options',
render: (text: any, record: any, index: number) =>
<>
<Button type='link' onClick={() => handleEdit(record, index)}>编辑</Button>
<Button type='link' onClick={() => handleDel(record, index)}>删除</Button>
</>
}
]
/** 切换添加方式 */
const changeRadio = (e: any) => {
const { value } = e.target;
setaddMode(value);
settabledata([]);
}
/** 按钮的文字 */
const handleText = (num: any) => {
let text: ReactNode = null;
text = btnname[num - 1];
return text
}
/**
* @name: 操作弹窗
* @arg: 1.通过平台属性添加 2.选择货品添加 3.导入货品生成
* */
const handleModal = (arg: number) => {
visible[arg] = !visible[arg]
setvisible([...visible])
}
/** 商品添加确定 */
const handleSubmit = (data: any, record?: any) => {
if (idx === -1) {
settabledata([...tabledata, data])
onGet([...tabledata, data], 1, record)
} else {
const newdata = [...tabledata]
newdata[idx] = data
settabledata([...newdata]);
setidx(-1);
onGet([...tabledata, data], 2)
}
handleModal(addMode);
}
/** 编辑商品 */
const handleEdit = (record: any, index: number) => {
setidx(index);
seteditdata(record)
setisEdit(true)
handleModal(addMode)
}
/** 删除商品 */
const handleDel = (record: any, index: number) => {
const list = [...tabledata];
list.splice(index, 1);
settabledata(list)
}
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
resolve({
state: true,
name: 'addGoods',
data: {
addMode,
requisitionFormProducts: tabledata,
}
})
onBadge(0, 1)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 1)
}
})
})
}
}, [tabledata])
useEffect(() => {
/**编辑回显数据 */
if (Object.keys(set).length > 0) {
form.setFieldsValue({
addMode: set.addMode
})
setaddMode(set.addMode)
settabledata(set.requisitionFormProducts)
}
}, [set])
return (
<Form
{...layout}
form={form}
>
<Form.Item label='添加方式' name='addMode' rules={[{ required: true, message: '请选择添加方式' }]}>
<Radio.Group onChange={changeRadio}>
{/* <Radio value={1}>通过平台属性添加</Radio> */}
<Radio value={2}>选择货品添加</Radio>
<Radio value={3}>导入货品生成</Radio>
</Radio.Group>
</Form.Item>
{addMode > 0 &&
<Form.Item noStyle>
<Button onClick={() => { handleModal(addMode); setisEdit(false) }} type='dashed' block style={{ marginBottom: '24px' }}><PlusOutlined />{handleText(addMode)}</Button>
<Table columns={columns} dataSource={tabledata} rowKey={(record: any, index: number) => record.id ? record.id : index} />
</Form.Item>
}
<ModalAnchor
fetchdata={editdata}
isEdit={isEdit}
visible={visible[1]}
onOk={handleSubmit}
onCancel={() => handleModal(addMode)}
/>
<ModalGoods
fetchdata={editdata}
isEdit={isEdit}
visible={visible[2]}
onOk={handleSubmit}
onCancel={() => handleModal(addMode)}
/>
</Form>
)
}
export default AddGoods;
import React, { useEffect, useRef, useState } from 'react';
import { Form, Radio, Tooltip, Row, Col, Checkbox, Avatar, Space, Button, Table, message } from 'antd';
import { QuestionCircleOutlined, PlusOutlined } from '@ant-design/icons';
import style from './index.less';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { GlobalConfig } from '@/global/config'
import { PublicApi } from '@/services/api';
import ModalTable from '@/components/ModalTable';
import { ISchema } from '@formily/antd';
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
export interface faceSetData {
set?: any,
get?: Function,
goodsInfo?: any,
attribute?:any,
currentRef?: any,
onBadge?: Function
}
const DemandDbutted: React.FC<faceSetData> = (props) => {
const { set, get, currentRef, goodsInfo, attribute, onBadge } = props;
const [form] = Form.useForm();
const [type, setType] = useState<Number>(0);
const ref = useRef<any>({});
const [visible, setvisible] = useState<boolean>(false);
const [memberRowSelection, memberRowCtl] = useRowSelectionTable({ customKey: 'memberId' });
const [memberIds, setmemberIds] = useState<Array<any>>([])
const [memberList, setmemberList] = useState([]);
const [goodAllIds, setgoodAllIds] = useState<Array<any>>([]);
// 系统匹配表头
const columns: ColumnType<any>[] = [
{
title: '序号',
key: 'memberId',
dataIndex: 'memberId',
},
{
title: '会员名称',
key: 'memberName',
dataIndex: 'memberName',
},
{
title: '会员类型',
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
key: 'levelTag',
dataIndex: 'levelTag',
},
{
title: '是否归属会员',
key: 'membershipOrNot',
dataIndex: 'membershipOrNot',
},
{
title: '状态',
key: 'state',
dataIndex: 'state',
},
]
// 指定会员表头
const memberColumns: ColumnType<any>[] = [
{
title: '序号',
key: 'memberId',
dataIndex: 'memberId',
},
{
title: '会员名称',
key: 'name',
dataIndex: 'name',
},
{
title: '会员类型',
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
key: 'levelTag',
dataIndex: 'levelTag',
}
]
// 选择系统匹配的列表数据
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<any>>([]);
const rowSelection = {
selectedRowKeys,
onChange: setSelectedRowKeys
};
// 切换添加方式
const changeRadio = (e: any) => {
const { value } = e.target;
if(value === 1) {
let shopList = GlobalConfig.web.shopInfo.filter(v => v.type == 1).map(
v => v
)
setgoodAllIds(shopList)
setType(value)
}
setType(value)
}
// 请求系统匹配列表数据
const fetchSystemMateData = (params: any, index: number) => {
if (index === 1) {
// console.log(params, index)
} else if (index === 2) {
return new Promise(resolve => {
PublicApi.postOrderSystemMatchingMemberInitializeList({ categoryIds: goodsInfo.categoryIds, areaRequestList: goodsInfo.record, attributeList: attribute, ...params }).then(res => {
if (res.code === 1000) {
resolve(res.data)
}
})
})
} else {
return new Promise(resolve => {
PublicApi.getMemberManageUpperProviderPage({ ...params }).then(res => {
if (res.code === 1000) {
resolve(res.data)
}
})
})
}
}
const formSearch: ISchema = {
type: 'object',
properties: {
name: {
type: 'string',
"x-component": 'Search',
"x-component-props": {
placeholder: '请输入会员名称'
}
}
}
}
const onConfirm = () => {
const demandDockings: any[] =[];
memberRowCtl.selectRow.forEach((v) => {
demandDockings.push({
memberId: v.memberId,
memberName: v.name,
memberTypeName: v.memberTypeName,
roleId: v.roleId,
roleName: v.roleName,
levelTag: v.levelTag,
type
})
})
setvisible(false);
setmemberIds(memberRowCtl.selectedRowKeys)
setmemberList(demandDockings)
}
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
let buttedObj: any = {}
if(type === 1) {
buttedObj = {
shopIds: res.shopIds,
}
} else if (type === 2) {
buttedObj = {}
} else {
buttedObj = {
memberIds,
demandDockings: memberList
}
}
console.log(buttedObj)
resolve({
state: true,
name: 'demandDbutted',
data: {
type,
...buttedObj
}
})
onBadge(0, 3)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 3)
}
})
})
}
console.log(attribute.length)
},[type, memberIds, memberList])
/** 数据回显 */
useEffect(() => {
if (Object.keys(set).length > 0) {
if(set.type === 1) {
form.setFieldsValue({
type: set.type,
shopIds: set.shopIds
})
let shopList = GlobalConfig.web.shopInfo.filter(v => v.type == 1).map(
v => v
)
setgoodAllIds(shopList)
} else if(type === 3) {
PublicApi.getOrderRequisitionFormProductAll({id: set.id, current: '1', pageSize: '100'}).then(res => {
if(res.code === 1000) {
setmemberList(res.data);
}
})
}
setType(set.type)
}
}, [set])
return (
<Form
{...layout}
form={form}
>
<Form.Item label='添加方式' required name='type'>
<Radio.Group onChange={changeRadio}>
<Radio value={1}><Tooltip placement="topLeft" title={<>需求发布至企业商城求购频道</>}>发布类型<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip></Radio>
<Radio value={2} disabled={attribute.length === 0}><Tooltip placement="topLeft" title={<>系统通过需求单品类、商品属性、适用地市与平台会员发布的商品品类、商品属性、归属地区进行匹配,推荐满足条件的平台会员</>}>系统匹配<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip></Radio>
<Radio value={3}><Tooltip placement="topLeft" title={<>选择与当前会员有归属关系的会员且角色类型为服务提供的会员(供应商),需求只发送给指定会员</>}>指定会员<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip></Radio>
</Radio.Group>
</Form.Item>
{type === 1 &&
// 发布至平台
<Form.Item label='发布至平台' name='shopIds' wrapperCol={{ span: 24 }}>
<Checkbox.Group className={style.checkbox_wrap_style} onChange={(e) => fetchSystemMateData(e, 1)}>
<Row>
{
goodAllIds.map((v: any, i: number) => {
return (
<Col span={6} key={`col_${i}`}>
<Checkbox value={v.id}>
<Space>
<Avatar src={v.logoUrl}>LOGO</Avatar>
<span>{v.name}</span>
</Space>
</Checkbox>
</Col>
)
})
}
</Row>
</Checkbox.Group>
</Form.Item>
}
{
type === 2 &&
// 系统匹配
<Form.Item noStyle>
<StandardTable
rowSelection={rowSelection}
columns={columns}
fetchTableData={(params) => fetchSystemMateData(params, 2)}
/>
</Form.Item>
}
{
type === 3 &&
// 指定会员
<Form.Item noStyle>
<Button type='dashed' block style={{ marginBottom: '24px' }} onClick={() => setvisible(true)}><PlusOutlined />选择会员</Button>
<Table columns={columns} dataSource={memberList} rowKey={record => record.memberId} />
</Form.Item>
}
<ModalTable
modalTitle='选择会员'
confirm={onConfirm}
cancel={() => setvisible(false)}
visible={visible}
forceRender={true}
columns={memberColumns}
rowSelection={memberRowSelection}
fetchTableData={(params) => fetchSystemMateData(params, 3)}
formilyProps={
{
ctx: { schema: formSearch }
}
}
tableProps={{
rowKey: 'memberId'
}}
/>
</Form>
)
}
export default DemandDbutted;
import React, { useState, useEffect } from 'react';
import styles from './index.less';
import { Radio } from 'antd';
import PolymericTable from '@/components/PolymericTable';
import { EditableColumns } from '@/components/PolymericTable/interface';
import GeneralExternalState from '@/pages/transaction/common/externalState';
import GeneralInteriorState from '@/pages/transaction/common/interiorState';
import moment from 'moment';
import { PublicApi } from '@/services/api';
export interface faceSetData {
set?: any,
get?: Function,
externalState?:any,
interiorState?: any
}
const FlowRecord: React.FC<faceSetData> = (props) => {
const { set, get, externalState, interiorState } = props
const [radio, setRadio] = useState<string>('outer'); //切换单据
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
const outerColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
render: (texr: any, record: any, index: number) => <span>{index + 1}</span>
}, {
title: '操作角色',
dataIndex: 'roleName',
}, {
title: '状态',
dataIndex: 'state',
render: (text: any, record: any) => <GeneralExternalState colorType={1} state={text} data={externalState} />
}, {
title: '操作',
dataIndex: 'operationalProcess',
}, {
title: '操作时间',
dataIndex: 'operationTime',
render: (text: any, record: any) => format(text)
}, {
title: '审核意见',
dataIndex: 'auditOpinion',
}]
const insideColumns: EditableColumns[] = [{
title: '序号',
dataIndex: 'inquiryListId',
render: (texr: any, record: any, index: number) => <span>{index + 1}</span>
}, {
title: '操作人',
dataIndex: 'roleName',
}, {
title: '部门',
dataIndex: 'department',
}, {
title: '职位',
dataIndex: 'position',
}, {
title: '状态',
dataIndex: 'state',
render: (text: any, record: any) => <GeneralInteriorState colorType={1} state={text} data={interiorState} />
}, {
title: '操作',
dataIndex: 'operationalProcess',
}, {
title: '操作时间',
dataIndex: 'operationTime',
render: (text: any, record: any) => format(text)
}, {
title: '审核意见',
dataIndex: 'auditOpinion',
}]
const onChange = (e: any) => {
setRadio(e.target.value)
}
return (
<div>
<Radio.Group defaultValue="outer" buttonStyle="solid" onChange={onChange}>
<Radio.Button value="outer">外部单据</Radio.Button>
<Radio.Button value="inside">内部单据</Radio.Button>
</Radio.Group>
{radio === 'outer' ?
<PolymericTable
columns={outerColumns}
loading={false}
pagination={null}
dataSource={Object.keys(set).length > 0 && set.externalRequisitionFormStateResponses}
/>
:
<PolymericTable
columns={insideColumns}
loading={false}
pagination={null}
dataSource={Object.keys(set).length > 0 && set.interiorRequisitionFormStateResponses}
/>
}
</div>
)
}
export default FlowRecord
.formwrap {
position: relative;
.formbutton {
position: absolute;
right: -95px;
display: flex;
width: 90px;
:global {
.ant-form-item {
width: 32px;
margin-right: 10px;
.ant-btn {
width: 32px;
padding: 0;
margin-right: 10px;
}
}
}
}
}
.modal_wrap_className {
.site_layout_background {
background-color: #fff;
border-right: 1px solid #EEF0F3;
}
.site_content_style {
background-color: #fff;
padding: 24px;
height: 600px;
overflow-y: scroll;
.affix_title {
font-size: 14px;
margin-bottom: 24px;
.divider_style {
width: 2px;
height: 16px;
margin: 0px 5px 0px 0px ;
background-color: #00B37A;
}
}
.upload_item {
padding: 5px 8px;
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #FAFBFC;
.upload_left {
display: flex;
align-items: center;
color: #303133;
:global {
.anticon-file-word {
color: #4279df;
font-size: 20px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00B37A;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #C0C4CC;
}
}
}
}
}
:global {
.ant-anchor-wrapper {
margin-left: 0 !important;
padding-left: 0 !important;
}
.ant-menu-item {
margin-top: 0 !important;
margin-bottom: 0 !important;
&:after {
left: 0;
border-right: none;
border-left: 2px solid #00B37A;
height: 80%;
margin: auto;
}
.ant-anchor-link {
padding: 0px !important;
line-height: 40px !important;
}
}
.ant-menu-item-selected {
color: #303133;
font-weight: 600;
background-color: transparent !important;
}
}
}
.checkbox_wrap_style {
width: 100%;
:global {
.ant-checkbox-wrapper {
width: 100%;
border: 1px solid #ccc;
padding: 8px 18px;
.ant-checkbox {
display: none;
}
> span {
display: flex;
align-items: center;
padding: 0px 0px;
.checkbox_avatar {
width: 32px;
height: 32px;
margin-right: 8px;
}
}
}
.ant-checkbox-wrapper-checked {
border-color: #00b37a!important;
color: #00b37a;
position: relative;
&:after {
content: "";
position: absolute;
width: 12px;
height: 11px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAACwAAAAChLCZNAAAA6klEQVQoFWNgIAVsruliJkr9/1XMDCZqcxkY/mczEtSwv4GD4euvlQz/GfxAavFr2N3Bz/Dz8yaG///tYAbj1rC1QYLh/+8dQMX6MMW4bdjSoMTA8Gs30BlAGhUwoXKBvM21QBN/H0VWbMovzXDSOgOsFFXD1mo7Bsa/B5U5BSVgBoEUrzaOZMi5shkshAjWLTWgUNgINJlnh1k8AysTEzhEQIpDzy5nOP3xKVgDxNNbqxIY/jHMAYqADRBi5WTYY5HEIMbGzRB4ZilcMUgHI8PWqlKg4i6wdiRCgIWDQYSNi+HOt3dIogwMANgLQif9hMeFAAAAAElFTkSuQmCC);
right: 0;
bottom: 0;
}
}
}
}
\ No newline at end of file
import React, { useState, useEffect } from 'react';
import moment from 'moment';
import { Form, Input, Select, Row, Col, DatePicker, message } from 'antd';
import { PublicApi } from '@/services/api';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 24 },
labelAlign: "left"
};
export interface faceSetData {
set?: any,
get?: Function,
currentRef?: any,
onBadge?: Function
}
const TradingConditions: React.FC<faceSetData> = (props) => {
const { set, get, currentRef,onBadge } = props
const [TradingConditionsForm] = Form.useForm();
const [address, setAddress] = useState([]);
const [selectAddress, setselectAddress] = useState<any>({});
useEffect(() => {
// 获取交付地址
PublicApi.getLogisticsSelectListReceiverAddress().then(res => {
setAddress(res.data)
})
}, [])
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
TradingConditionsForm.validateFields().then(res => {
console.log(res, selectAddress)
resolve({
state: true,
name: 'tradingConditions',
data: {
deliveryTime: moment(res.deliveryTime).format('x'),
quotationAsTime: moment(res.quotationAsTime).format('x'),
addresId: res.addresId,
addres: selectAddress.children,
logistics: res.logistics,
offer: res.offer,
otherRequire: res.otherRequire,
packRequire: res.packRequire,
paymentType: res.paymentType,
taxes: res.taxes,
}
})
onBadge(0, 2)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 2)
}
})
})
}
}, [selectAddress])
const disabledDate = (current) => {
return current && current < moment().endOf('day');
}
const onSelect = (val: any, option: any) => {
console.log(option)
setselectAddress(option)
}
useEffect(() => {
if(Object.keys(set).length > 0) {
TradingConditionsForm.setFieldsValue({
deliveryTime: moment(set.deliveryTime),
addresId: set.addresId,
quotationAsTime: moment(set.quotationAsTime),
offer: set.offer,
paymentType: set.paymentType,
taxes: set.taxes,
logistics: set.logistics,
packRequire: set.packRequire,
otherRequire: set.otherRequire
})
setselectAddress({children: set.addres});
}
}, [set])
return (
<Form
{...layout}
form={TradingConditionsForm}
>
<Row gutter={70}>
<Col span={12}>
<Form.Item label='交付日期' name='deliveryTime' rules={[{ required: true, message: '请选择交付日期' }]}>
<DatePicker
style={{ width: '100%' }}
disabledDate={disabledDate}
format="YYYY-MM-DD HH:mm:ss"
/>
</Form.Item>
<Form.Item label='交付地址' name='addresId' rules={[{ required: true, message: '请选择交付地址' }]}>
<Select onSelect={onSelect}>
{address.map(v => (
<Select.Option key={v.id} value={v.id}>{v.fullAddress}</Select.Option>
))}
</Select>
</Form.Item>
<Form.Item label='报价截止时间' name='quotationAsTime' rules={[{ required: true, message: '请选择报价截止时间' }]}>
<DatePicker
style={{ width: '100%' }}
format="YYYY-MM-DD HH:mm:ss"
disabledDate={disabledDate}
/>
</Form.Item>
<Form.Item label='报价要求' name='offer'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
<Form.Item label='付款方式' name='paymentType'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
<Form.Item label='税费要求' name='taxes'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
<Form.Item label='物流要求' name='logistics'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item label='包装要求' name='packRequire'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
<Form.Item label='其他要求' name='otherRequire'>
<Input.TextArea placeholder='最长100个字符,50个汉字' />
</Form.Item>
</Col>
</Row>
</Form>
)
}
export default TradingConditions
import React from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { format } from 'util';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Dropdown, Menu } from 'antd';
import { DeleteOutlined, DownOutlined, PlusOutlined } from '@ant-design/icons';
const AddInquiry = () => {
console.log('待新增采购需求单');
const columns: ColumnType<any>[] = [{
title: '需求单号',
key: 'requisitionFormNo',
dataIndex: 'requisitionFormNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`}>{text}</EyePreview>
}, {
title: '需求摘要',
key: 'details',
dataIndex: 'details',
}, {
title: '交付日期',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
}, {
title: '报价截止时间',
key: 'quotationAsTime',
dataIndex: 'quotationAsTime',
render: (text: any, record: any) => format(text)
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => format(text)
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => format(text)
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
}];
return (
<Table
schemaType="PurchaseDemandPublic"
columns={columns}
effects="requisitionFormNo"
fetch={PublicApi.getOrderRequisitionFormAwaitList}
controllerBtns={
<Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button
onClick={() => history.push('/memberCenter/procurementAbility/purchaseInquiry/add')}
type="primary"
icon={<PlusOutlined />}
>新建</Button>
<Button>批量提交审核</Button>
<Dropdown.Button
overlay={
<Menu>
<Menu.Item key='1' icon={<DeleteOutlined />}>
批量删除
</Menu.Item>
</Menu>
}
trigger={['click']}
icon={<DownOutlined />}
>
更多
</Dropdown.Button>
</Space>
</Col>
</Row>
}
/>
)
}
export default AddInquiry
import React from 'react';
import Table from '../../components/table'
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { format } from 'util';
import { PublicApi } from '@/services/api';
import { Row, Col, Button } from 'antd';
const auditInquiryOne = () => {
console.log('待新增采购需求单');
const columns: ColumnType<any>[] = [{
title: '需求单号',
key: 'requisitionFormNo',
dataIndex: 'requisitionFormNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`}>{text}</EyePreview>
}, {
title: '需求摘要',
key: 'details',
dataIndex: 'details',
}, {
title: '交付日期',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
}, {
title: '报价截止时间',
key: 'quotationAsTime',
dataIndex: 'quotationAsTime',
render: (text: any, record: any) => format(text)
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => format(text)
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => format(text)
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
}];
return (
<Table
schemaType="PurchaseDemandPublic"
columns={columns}
effects="requisitionFormNo"
fetch={PublicApi.getOrderRequisitionFormAuditList}
controllerBtns={
<Row>
<Col span={6}>
<Button>批量提交审核</Button>
</Col>
</Row>
}
/>
)
}
export default auditInquiryOne
import React from 'react';
import Table from '../../components/table'
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { format } from 'util';
import { PublicApi } from '@/services/api';
import { Row, Col, Button } from 'antd';
const auditInquiryTwo = () => {
console.log('待新增采购需求单');
const columns: ColumnType<any>[] = [{
title: '需求单号',
key: 'requisitionFormNo',
dataIndex: 'requisitionFormNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`}>{text}</EyePreview>
}, {
title: '需求摘要',
key: 'details',
dataIndex: 'details',
}, {
title: '交付日期',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
}, {
title: '报价截止时间',
key: 'quotationAsTime',
dataIndex: 'quotationAsTime',
render: (text: any, record: any) => format(text)
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => format(text)
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => format(text)
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
}];
return (
<Table
schemaType="PurchaseDemandPublic"
columns={columns}
effects="requisitionFormNo"
fetch={PublicApi.getOrderRequisitionFormAuditTwoList}
controllerBtns={
<Row>
<Col span={6}>
<Button>批量提交审核</Button>
</Col>
</Row>
}
/>
)
}
export default auditInquiryTwo
import React from 'react';
import Table from '../../components/table'
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { format } from 'util';
import { PublicApi } from '@/services/api';
const Inquiry = () => {
console.log('采购需求单查询');
const columns: ColumnType<any>[] = [{
title: '需求单号',
key: 'requisitionFormNo',
dataIndex: 'requisitionFormNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`}>{text}</EyePreview>
}, {
title: '需求摘要',
key: 'details',
dataIndex: 'details',
}, {
title: '交付日期',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
}, {
title: '报价截止时间',
key: 'quotationAsTime',
dataIndex: 'quotationAsTime',
render: (text: any, record: any) => format(text)
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => format(text)
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => format(text)
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
}];
return (
<Table
schemaType="PurchaseDemand"
columns={columns}
effects="requisitionFormNo"
fetch={PublicApi.getOrderRequisitionFormList}
/>
)
}
export default Inquiry
import React from 'react';
import Table from '../../components/table'
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { format } from 'util';
import { PublicApi } from '@/services/api';
import { Row, Col, Button } from 'antd';
const submitInquiry = () => {
console.log('待新增采购需求单');
const columns: ColumnType<any>[] = [{
title: '需求单号',
key: 'requisitionFormNo',
dataIndex: 'requisitionFormNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`}>{text}</EyePreview>
}, {
title: '需求摘要',
key: 'details',
dataIndex: 'details',
}, {
title: '交付日期',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
}, {
title: '报价截止时间',
key: 'quotationAsTime',
dataIndex: 'quotationAsTime',
render: (text: any, record: any) => format(text)
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => format(text)
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => format(text)
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
}];
return (
<Table
schemaType="PurchaseDemandPublic"
columns={columns}
effects="requisitionFormNo"
fetch={PublicApi.getOrderRequisitionFormSubmitList}
controllerBtns={
<Row>
<Col span={6}>
<Button>批量提交审核</Button>
</Col>
</Row>
}
/>
)
}
export default submitInquiry
import { ISchema} from '@formily/antd'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PublicApi } from '@/services/api'
/** 采购需求单查询 */
export const PurchaseDemandSchema: ISchema = {
type: 'object',
properties: {
megalayout: {
type: 'object',
"x-component": 'mega-layout',
properties: {
requisitionFormNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
},
"x-component-props": {
placeholder: '需求单号',
align: 'flex-left',
}
}
}
},
[FORM_FILTER_PATH]: {
type: 'object',
"x-component": "flex-layout",
"x-component-props": {
rowStyle: {
justifyContent: 'flex-start',
flexWrap: 'nowrap'
},
colStyle: {//改变间隔
marginRight: 20
}
},
properties: {
PRO_LAYOUT: {
type: 'object',
"x-component": 'mega-layout',
"x-mega-props": {
span: 5
},
"x-component-props": {
inline: true
},
properties: {
"[startDocumentsTime,endDocumentsTime]": {
type: 'string',
"x-component": "dateSelect",
"x-component-props": {
placeholder: '单据时间(全部)',
}
},
externalState: {
type: 'string',
"x-component": 'Select',
"x-component-props": {
placeholder: '外部状态',
className: 'fixed-ant-selected-down', // 该类强制将显示的下拉框出现在s
style: {
width: 160
}
},
},
interiorState: {
type: 'string',
"x-component": 'Select',
"x-component-props": {
placeholder: '内部状态',
className: 'fixed-ant-selected-down', // 该类强制将显示的下拉框出现在s
style: {
width: 160
}
},
},
}
},
sumbit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
/**待新建需求单 & 待审核需求单一级 & 待审核需求单二级 & 待提交需求单 */
export const PurchaseDemandPublicSchema: ISchema = {
type: 'object',
properties: {
megalayout: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
grid: true
},
properties: {
ctl: {
type: 'object',
"x-component": "Children",
"x-component-props": {
children: "{{controllerBtns}}"
}
},
requisitionFormNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
},
"x-component-props": {
placeholder: '需求单号'
}
}
}
},
[FORM_FILTER_PATH]: {
type: 'object',
"x-component": "flex-layout",
"x-component-props": {
rowStyle: {
flexWrap: 'nowrap'
},
colStyle: {
marginLeft: 20
}
},
properties: {
PRO_LAYOUT: {
type: 'object',
"x-component": 'mega-layout',
"x-mega-props": {
span: 5
},
"x-component-props": {
inline: true
},
properties: {
details: {
type: 'string',
"x-component-props": {
placeholder: '需求摘要'
}
},
category: {
type: 'string',
"x-component": 'SearchSelect',
"x-component-props": {
placeholder: '请选择品类',
className: 'fixed-ant-selected-down', // 该类强制将显示的下拉框出现在select下, 只有这里出现问题, ??
fetchSearch: PublicApi.getProductSelectGetSelectCustomerCategory,
style: {
width: 160
}
}
},
"[startDocumentsTime,endDocumentsTime]": {
type: 'string',
"x-component": "dateSelect",
"x-component-props": {
placeholder: '单据时间(全部)',
}
},
}
},
sumbit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
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