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

优化需求单发布模块

parent 8b9ca25d
......@@ -4,121 +4,6 @@
* @return {type}
*/
export default [
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit',
// name: 'enquirySubmit',
// routes: [
// // 需求单查询 - 列表
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquirySearch',
// name: 'enquirySearch',
// component: '@/pages/transaction/enquirySubmit/enquirySearch'
// },
// // 需求单查询 - 查看需求单号
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquirySearch/preview',
// name: 'enquirySearchPreview',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待新建需求单 - 列表
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder',
// name: 'toAddSubmitList',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder'
// },
// // 待新增需求单-新增
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder/add',
// name: 'addEnquiry',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder/addForm',
// hideInMenu: true,
// },
// // 待新增需求单-编辑
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder/edit',
// name: 'editEnquiry',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder/addForm',
// hideInMenu: true,
// },
// // 待新建需求单 - 查看需求单号
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toAddSubmitList/preview',
// name: 'toAddSubmitListPreview',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待新建需求单 - 详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toAddSubmitList/detail',
// name: 'toAddSubmitListDetail',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待审核需求单(一级)
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne',
// name: 'enquiryOne',
// component: '@/pages/transaction/enquirySubmit/enquiryOne'
// },
// // 待审核需求单(一级)- 查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne/preview',
// name: 'enquiryOnePreview',
// component: '@/pages/transaction/enquirySubmit/enquiryOne/detail',
// hideInMenu: true,
// },
// // 待审核需求单(一级)-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne/detail',
// name: 'enquiryOneDetail',
// component: '@/pages/transaction/enquirySubmit/enquiryOne/detail',
// hideInMenu: true,
// },
// // 待审核需求单(二级)
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo',
// name: 'enquiryTwo',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo'
// },
// // 待审核需求单(二级)-查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/preview',
// name: 'enquiryTwoPreview',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo/detail',
// hideInMenu: true,
// },
// // 待审核需求单(二级)-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail',
// name: 'enquiryTwoDetail',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo/detail',
// hideInMenu: true,
// },
// // 待提交需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit',
// name: 'toSubmit',
// component: '@/pages/transaction/enquirySubmit/toSubmit'
// },
// // 待提交需求单 - 查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit/preview',
// name: 'toSubmitPreview',
// component: '@/pages/transaction/enquirySubmit/toSubmit/detail',
// hideInMenu: true,
// },
// // 待提交需求单-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit/detail',
// name: 'toSubmitDetail',
// component: '@/pages/transaction/enquirySubmit/toSubmit/detail',
// hideInMenu: true,
// },
// ],
// },
{
path: '/memberCenter/tranactionAbility/demandPosts',
name: 'enquirySubmit',
......
import React, { ReactText, useRef, useEffect, useLayoutEffect } from 'react'
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 Search from '../NiceForm/components/Search'
import SearchSelect from '../NiceForm/components/SearchSelect'
import Submit from '../NiceForm/components/Submit'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import DateSelect from '../NiceForm/components/DateSelect'
import React, { ReactText, useRef, useEffect, useLayoutEffect } from 'react';
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 Search from '../NiceForm/components/Search';
import SearchSelect from '../NiceForm/components/SearchSelect';
import Submit from '../NiceForm/components/Submit';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import DateSelect from '../NiceForm/components/DateSelect';
export interface ModalTableProps extends IStandardTableProps<any> {
width?: number,
......
import React from 'react';
import { Modal } from 'antd';
import {
SchemaForm, SchemaMarkupField as Field,
createFormActions,
FormEffectHooks
} from '@formily/antd'
import { Input, Radio, FormMegaLayout } from '@formily/antd-components'
import { PublicApi } from '@/services/api';
const actions = createFormActions()
const { onFieldChange$ } = FormEffectHooks;
export interface Params {
id: number | string;
type: number | string; //1是待提交询价单 2是一级 3是二级
dialogVisible: boolean;
onCancel: Function;
onOK?: Function;
}
const AuditModal: React.FC<Params> = (props) => {
const useFormEffects = () => {
const { setFieldState } = createFormActions()
onFieldChange$('state').subscribe(({ value }) => {
setFieldState('cause', state => {
if (value == 1) {
state.visible = false
} else {
state.visible = true
}
})
})
}
const handletOk = (values: any) => {
let value = { ...values }
value.id = props.id
switch (props.type) {
case 3:
PublicApi.postOrderRequisitionFormAudit(value).then(res => {
if (res.code === 1000) {
props.onOK()
}
})
break;
case 4:
PublicApi.postOrderRequisitionFormAuditTwo(value).then(res => {
if (res.code === 1000) {
props.onOK()
}
})
break;
}
}
return (
<Modal
title='单据审核'
width={576}
visible={props.dialogVisible}
onOk={() => actions.submit()}
onCancel={() => props.onCancel()}
destroyOnClose
afterClose={() => actions.reset()}
okText='确定'
cancelText={`取消`}
>
<SchemaForm
layout="vertical"
labelCol={6}
components={{
Input, Radio: Radio.Group, TextArea: Input.TextArea
}}
actions={actions}
effects={() => useFormEffects()}
onSubmit={(values) => handletOk(values)}
initialValues={{
state: 1
}}
>
<Field
enum={
[
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 }
]}
name='state'
required
x-component="Radio"
x-component-props={{
}}
/>
<Field
title='审核不通过原因'
name="cause"
x-component="TextArea"
required
x-component-props={{
placeholder: '在此输入你的内容,最多60个汉字'
}}
x-rules={{
max: 60,
// maximum:10,//最大数值
message: '原因最多60个汉字'
}}
/>
</SchemaForm>
</Modal>
)
}
export default AuditModal
import React, { useEffect, useState, useRef } from 'react';
import { Tabs, Steps, Table, Radio, Tooltip, Form, Checkbox, Row, Col, Space, Avatar } from 'antd';
import { Tabs, Steps, Table, Radio, Tooltip, Form, Checkbox, Row, Col, Space, Avatar, Button } from 'antd';
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import style from './index.less';
......@@ -9,11 +9,16 @@ import GeneralInteriorState from '@/pages/transaction/common/interiorState';
import moment from 'moment';
import { PublicApi } from '@/services/api';
import { GlobalConfig } from '@/global/config'
import { QuestionCircleOutlined } from '@ant-design/icons';
import { CheckSquareOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god';
import AuditModal from './auditModel';
import EyePreview from '@/components/EyePreview';
import ModalAnchor from '../demandAdd/components/Modal/modalAnchor';
interface detailParams {
id?: any,
path?: string,
type?: number
}
const { TabPane } = Tabs;
const { Step } = Steps;
......@@ -27,7 +32,10 @@ const styl: any = {
const detailInfo: React.FC<detailParams> = (props) => {
const ref = useRef<any>({});
const [form] = Form.useForm();
const { id } = props;
const { id, path, type } = props;
const [visible, setvisible] = useState<boolean>(false);
const [editdata, seteditdata] = useState<any>({});
const [anchorvisible, setanchorvisible] = useState<boolean>(false);
const [externalState, setExternalState] = useState<any>([]);
const [interiorState, setInteriorState] = useState<any>([]);
const [goodAllIds, setgoodAllIds] = useState<Array<any>>([]);
......@@ -219,7 +227,7 @@ const detailInfo: React.FC<detailParams> = (props) => {
useEffect(() => {
new Promise(resolve => {
PublicApi.getOrderRequisitionFormDetails({ id , current: '1', pageSize: '1000' }).then(res => {
PublicApi.getOrderRequisitionFormDetails({ id, current: '1', pageSize: '1000' }).then(res => {
if (res.code === 1000) {
resolve(res.data)
}
......@@ -252,6 +260,7 @@ const detailInfo: React.FC<detailParams> = (props) => {
title: '商品名称',
key: 'name',
dataIndex: 'name',
render: (text: any, record: any) => <EyePreview type='button' handleClick={() => {setanchorvisible(true);seteditdata(record)}}>{text}</EyePreview>
},
{
title: '规格型号',
......@@ -319,6 +328,18 @@ const detailInfo: React.FC<detailParams> = (props) => {
})
}
/** 提交后返回 */
const handleModalOK = () => {
setvisible(false)
setTimeout(() => {
history.goBack()
}, 1000)
}
const handleSubmit = (data) => {
setanchorvisible(false);
}
return (
<PageHeaderWrapper
className={style.header}
......@@ -334,6 +355,18 @@ const detailInfo: React.FC<detailParams> = (props) => {
</div>
</>
}
extra={
<>
{
(path === 'detail' && (Number(type) === 3 || Number(type) === 4)) &&
<>
<Button type='primary' className={style['saveBtn']} onClick={() => setvisible(true)}>
<CheckSquareOutlined />单据审核
</Button>
</>
}
</>
}
content={
<div className={style['headerMain']} >
<div className={style['headerMain-left']}>
......@@ -527,6 +560,24 @@ const detailInfo: React.FC<detailParams> = (props) => {
</TabPane>
</Tabs>
</div>
<AuditModal
id={id}
type={type}
dialogVisible={visible}
onCancel={() => setvisible(false)}
onOK={handleModalOK}
/>
<ModalAnchor
fetchdata={editdata}
isEdit={true}
visible={anchorvisible}
onOk={handleSubmit}
disable={true}
onCancel={() => setanchorvisible(false)}
/>
</PageHeaderWrapper >
)
}
......
......@@ -141,7 +141,7 @@ const TableListInfo: React.FC<tableListParams> = (props) => {
</Col>
}
{
type === 3 &&
(type !== 1 && type !== 2) &&
<Col span={6}>
<Button onClick={() => batch()} loading={loading}>批量提交审核</Button>
</Col>
......
......@@ -14,9 +14,36 @@ const { TabPane } = Tabs;
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>([]);
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子组件的数据 */
/**提交数据 */
......@@ -24,13 +51,13 @@ const AddDemandOrder: React.FC<{}> = () => {
const basicRef = await basic.current.get();
const goodsRef = await goods.current.get();
const tradingRef = await trading.current.get();
if (basicRef.state && tradingRef.state && goodsRef.state) {
const dbuttedRef = await dbutted.current.get();
if (basicRef.state && tradingRef.state && goodsRef.state && dbuttedRef.state) {
const data = {
...basicRef.data,
...tradingRef.data,
...goodsRef.data,
type: 1,
shopIds: [1]
...dbuttedRef.data
}
if (basicRef.data.requisitionFormAddress.length > 0) {
data.defaultAddres = 0
......@@ -69,25 +96,21 @@ const AddDemandOrder: React.FC<{}> = () => {
}
}, [id])
/**获取所有地址 */
const getAreaCode = (record:any) => {
setGoodsInfo({...goodsInfo,record})
}
/**获取添加的商品品类id */
const getCategoryIds = (ids:any) => {
const categoryIds: any = [];
const attributeList: any = [];
ids.forEach( v => {
let id = v.ids[v.ids.length - 1];
categoryIds.push([...categoryIds, ...id])
let productAttributeJson = JSON.parse(v.productAttributeJson);
productAttributeJson.forEach(vs => {
console.log(vs)
attributeList.push({
attributeValue: vs
})
})
console.log(categoryIds, attributeList)
const getCategoryIds = (data:any, record:any) => {
const categoryIds: Array<any>[] = []
data.forEach((item:any) => {
categoryIds.push(...item.ids)
})
console.log(ids)
setGoodsInfo({...goodsInfo, categoryIds})
setattribute([...attribute, ...record])
}
console.log(goodsInfo, 10086)
return (
<PageHeaderWrapper
onBack={() => history.goBack()}
......@@ -101,7 +124,10 @@ const AddDemandOrder: React.FC<{}> = () => {
<TabPane forceRender tab='基本信息' key='1'>
<BasicInfo
set={fetchdata}
onGet={getAreaCode}
currentRef={basic}
externalState={externalState}
interiorState={interiorState}
/>
</TabPane>
<TabPane forceRender tab='添加商品' key='2'>
......@@ -120,11 +146,16 @@ const AddDemandOrder: React.FC<{}> = () => {
<TabPane forceRender tab='需求对接' key='4'>
<DemandDbutted
set={fetchdata}
goodsInfo={goodsInfo}
attribute={attribute}
currentRef={dbutted}
/>
</TabPane>
<TabPane forceRender tab='流转记录' key='5'>
<FlowRecord
set={fetchdata}
externalState={externalState}
interiorState={interiorState}
/>
</TabPane>
</Tabs>
......
......@@ -18,7 +18,8 @@ interface anchorParams {
onOk?: Function,
onCancel?: Function,
fetchdata?: any,
isEdit?: boolean
isEdit?: boolean,
disable?: boolean
}
const { Option } = Select;
......@@ -30,6 +31,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
const [categoryById, setCategoryById] = useState<any>({});
const [selected, setselected] = useState<string>('')
const [category, setcategory] = useState<Array<any>>([]);
const [attribute, setattribute] = useState<Array<any>>([]);
/**查询品类树 */
const searchCategoryTree = (id: any) => {
return new Promise(resolve => {
......@@ -44,15 +46,15 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
/**查询品类信息--包括品类、属性、属性值 */
const getCategoryById = (val:any, selectedOptions?:any) => {
const id = val[val.length -1];
if(!isEdit && selectedOptions.length > 0) {
const name = selectedOptions[selectedOptions.length -1];
const getCategoryById = (val: any, selectedOptions?: any) => {
const id = val[val.length - 1];
if (!isEdit && selectedOptions.length > 0) {
const name = selectedOptions[selectedOptions.length - 1];
setselected(name.title)
}
PublicApi.getProductPlatformGetCategoryById({id}).then(res => {
if(res.code === 1000) {
PublicApi.getProductPlatformGetCategoryById({ id }).then(res => {
if (res.code === 1000) {
setCategoryById(res.data)
}
......@@ -61,17 +63,19 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
useEffect(() => {
form.resetFields();
searchCategoryTree('0')
if(Object.keys(fetchdata).length > 0 && isEdit) {
if (Object.keys(fetchdata).length > 0 && isEdit) {
getCategoryById(fetchdata.ids)
const productAttributeJson = JSON.parse(fetchdata.productAttributeJson);
let obj:any = {}
let obj: any = {}
let newObj: any = {}
productAttributeJson.forEach((item:any) => {
obj = {...obj, ...item}
for(let key in obj) {
newObj = {...newObj, ...{
productAttributeJson.forEach((item: any) => {
obj = { ...obj, ...item }
for (let key in obj) {
newObj = {
...newObj, ...{
[`${key}__`]: obj[key].join(',')
}}
}
}
}
})
form.setFieldsValue({
......@@ -88,18 +92,17 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
}, [visible])
const onSubmit = (value:any) => {
const onSubmit = (value: any) => {
form.validateFields().then(res => {
const productAttributeJson : Array<any> = [];
for(let key in res) {
if(key.split('__').length > 1) {
const productAttributeJson: Array<any> = [];
for (let key in res) {
if (key.split('__').length > 1) {
const name = key.replace(/__/g, '')
productAttributeJson.push({
[name]: [res[key]]
})
}
}
const data = {
model: res.model,
brand: res.brand,
......@@ -113,7 +116,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
urls: files,
specialExplain: res.specialExplain,
}
onOk(data)
onOk(data, attribute)
form.resetFields();
setCategoryById([])
}).catch(error => {
......@@ -121,6 +124,22 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
})
}
/**获取类型参数id */
const onSelect = (value, option, idx) => {
attribute[idx] = {
attributeId: option.key,
attributeValue: option.value
}
setattribute([...attribute])
}
/**获取类型输入文字 */
const onSearch = (value, idx) => {
attribute[idx] = {
attributeValue: value
}
setattribute([...attribute])
}
return (
<Modal
title='通过平台属性添加'
......@@ -163,6 +182,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<div className={style.affix_title}><Divider type="vertical" className={style.divider_style} />基本信息</div>
<Form.Item label='商品品类' name='category' rules={[{ required: true, message: '请选择商品品类' }]}>
<Cascader
disabled={props.disable}
options={category}
fieldNames={{ label: 'title', value: 'id', children: 'children' }}
placeholder="请选择品类"
......@@ -170,10 +190,10 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
onChange={getCategoryById}
/>
</Form.Item>
<Form.Item label='商品编号' name='goodsNo' rules={[{ required: true, message: '请输入商品编号' }]}><Input /></Form.Item>
<Form.Item label='商品名称' name='name' rules={[{ required: true, message: '请输入商品名称' }]}><Input /></Form.Item>
<Form.Item label='规格型号' name='model' rules={[{ required: true, message: '请输入规格型号' }]}><Input /></Form.Item>
<Form.Item label='规格品牌' name='brand'><Input /></Form.Item>
<Form.Item label='商品编号' name='goodsNo' rules={[{ required: true, message: '请输入商品编号' }]}><Input disabled={props.disable} /></Form.Item>
<Form.Item label='商品名称' name='name' rules={[{ required: true, message: '请输入商品名称' }]}><Input disabled={props.disable} /></Form.Item>
<Form.Item label='规格型号' name='model' rules={[{ required: true, message: '请输入规格型号' }]}><Input disabled={props.disable} /></Form.Item>
<Form.Item label='规格品牌' name='brand'><Input disabled={props.disable} /></Form.Item>
</div>
{
Object.keys(categoryById).length > 0 &&
......@@ -181,16 +201,20 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<div className={style.affix_title}><Divider type="vertical" className={style.divider_style} />{categoryById.name}</div>
{
categoryById.attributeList.length > 0 &&
categoryById.attributeList.map((item:any, index:number) => (
categoryById.attributeList.map((item: any, index: number) => (
<Form.Item
label={item.groupName}
name={`${item.groupName}__`}
key={item.groupId}
rules={[{ required: item.isEmpty, message: `请选择${item.groupName}` }]}
>
<AutoComplete>
<AutoComplete
disabled={props.disable}
onSelect={(value, option) => onSelect(value, option, index)}
onSearch={(value) => onSearch(value, index)}
>
{
item.attributeValueList.map((items:any) => (
item.attributeValueList.map((items: any) => (
<AutoComplete.Option value={items.value} key={items.id}>{items.value}</AutoComplete.Option>
))
}
......@@ -202,7 +226,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
<div id='other_demand'>
<div className={style.affix_title}><Divider type="vertical" className={style.divider_style} />其他要求</div>
<Form.Item label='特殊说明' name='specialExplain'><Input.TextArea rows={4} /></Form.Item>
<Form.Item label='特殊说明' name='specialExplain'><Input.TextArea rows={4} disabled={props.disable} /></Form.Item>
<Form.Item label='附件' name='upload'>
<div className={style.upload_data}>
{files.length > 0 && files.map((v, index) => (
......@@ -217,6 +241,8 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
</div>
))}
</div>
{
!props.disable &&
<Upload
action="/api/file/file/upload"
data={{ fileType: UPLOAD_TYPE }}
......@@ -226,12 +252,13 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<Button loading={loading} icon={<UploadOutlined />}>上传文件</Button>
<div style={{ marginTop: '8px' }}>一次上传一个文件,每个附件大小不能超过 20M</div>
</Upload>
}
</Form.Item>
</div>
<div id='procured_amount'>
<div className={style.affix_title}><Divider type="vertical" className={style.divider_style} />采购数量</div>
<Form.Item label='单位' name='unit' rules={[{ required: true, message: '请选择单位' }]}><Input /></Form.Item>
<Form.Item label='采购数量' name='purchaseCount' rules={[{ required: true, message: '请输入采购数量' }]}><InputNumber min={1} style={{width: '100%'}} /></Form.Item>
<Form.Item label='单位' name='unit' rules={[{ required: true, message: '请选择单位' }]}><Input disabled={props.disable} /></Form.Item>
<Form.Item label='采购数量' name='purchaseCount' rules={[{ required: true, message: '请输入采购数量' }]}><InputNumber disabled={props.disable} min={1} style={{ width: '100%' }} /></Form.Item>
</div>
</Form>
</Content>
......
......@@ -108,13 +108,13 @@ const ModalGoods: React.FC<goodsParams> = (props) => {
title: '品类',
key: 'customerCategory',
dataIndex: 'customerCategory',
render: (text: any) => <span>{text.name}</span>
render: (text: any) => <span>{Object.keys(text).length > 0 && text.name}</span>
},
{
title: '品牌',
key: 'brand',
dataIndex: 'brand',
render: (text: any) => <span>{text.name}</span>
render: (text: any) => <span>{Object.keys(text).length > 0 && text.name}</span>
},
{
title: '单位',
......@@ -154,6 +154,7 @@ const ModalGoods: React.FC<goodsParams> = (props) => {
<Modal
title='通过平台属性添加'
width='800px'
destroyOnClose
wrapClassName={style.modal_wrap_className}
bodyStyle={{ padding: '0px' }}
visible={visible}
......
......@@ -21,10 +21,10 @@ export interface faceSetData {
const AddGoods: React.FC<faceSetData> = (props) => {
const { set, currentRef, onGet } = props
const [form] = Form.useForm();
const [type, setType] = useState<number>(0);
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 [tabledata, settabledata] = useState<any>([]);
/**存放编辑的商品数据 */
const [editdata, seteditdata] = useState<any>({});
/**是否编辑 */
......@@ -78,7 +78,7 @@ const AddGoods: React.FC<faceSetData> = (props) => {
/** 切换添加方式 */
const changeRadio = (e: any) => {
const { value } = e.target;
setType(value);
setaddMode(value);
settabledata([]);
}
/** 按钮的文字 */
......@@ -105,15 +105,15 @@ const AddGoods: React.FC<faceSetData> = (props) => {
settabledata([...newdata]);
setidx(-1);
}
onGet([...tabledata, data])
handleModal(type);
onGet([...tabledata, data], record)
handleModal(addMode);
}
/** 编辑商品 */
const handleEdit = (record: any, index: number) => {
setidx(index);
seteditdata(record)
setisEdit(true)
handleModal(type)
handleModal(addMode)
}
useEffect(() => {
......@@ -124,7 +124,7 @@ const AddGoods: React.FC<faceSetData> = (props) => {
state: true,
name: 'addGoods',
data: {
type,
addMode,
requisitionFormProducts: tabledata,
}
})
......@@ -139,9 +139,9 @@ const AddGoods: React.FC<faceSetData> = (props) => {
/**编辑回显数据 */
if (Object.keys(set).length > 0) {
form.setFieldsValue({
type: set.type
addMode: set.addMode
})
setType(set.type)
setaddMode(set.addMode)
settabledata(set.requisitionFormProducts)
}
}, [set])
......@@ -151,17 +151,17 @@ const AddGoods: React.FC<faceSetData> = (props) => {
{...layout}
form={form}
>
<Form.Item label='添加方式' name='type' rules={[{ required: true, message: '请选择添加方式' }]}>
<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>
{type > 0 &&
{addMode > 0 &&
<Form.Item noStyle>
<Button onClick={() => { handleModal(type); setisEdit(false) }} type='dashed' block style={{ marginBottom: '24px' }}><PlusOutlined />{handleText(type)}</Button>
<Table columns={columns} dataSource={tabledata} rowKey={(record, index) => index} />
<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
......@@ -169,14 +169,14 @@ const AddGoods: React.FC<faceSetData> = (props) => {
isEdit={isEdit}
visible={visible[1]}
onOk={handleSubmit}
onCancel={() => handleModal(type)}
onCancel={() => handleModal(addMode)}
/>
<ModalGoods
fetchdata={editdata}
isEdit={isEdit}
visible={visible[2]}
onOk={handleSubmit}
onCancel={() => handleModal(type)}
onCancel={() => handleModal(addMode)}
/>
</Form>
)
......
......@@ -3,6 +3,9 @@ import { Form, Input, Tooltip, Button, Select, Row, Col, message } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
import style from './index.less';
import GeneralExternalState from '@/pages/transaction/common/externalState';
import GeneralInteriorState from '@/pages/transaction/common/interiorState';
import moment from 'moment';
const layout: any = {
colon: false,
......@@ -13,14 +16,16 @@ const layout: any = {
export interface faceSetData {
set?: any,
get?: Function,
currentRef?: any
onGet?: Function,
currentRef?: any,
externalState?:any,
interiorState?: any
}
const { Option } = Select;
const BasicInfo: React.FC<faceSetData> = (props) => {
const [form] = Form.useForm();
const { set, get, currentRef } = props
const { set, onGet, currentRef, externalState, interiorState } = props
const [province, setprovince] = useState<any>([]);// 省列表
const [city, setcity] = useState<any>([]);// 市列表
const [requisitionFormAddress, setrequisitionFormAddress] = useState<any>([{
......@@ -30,6 +35,9 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
city: ''
}]);
const [code, setcode] = useState<any>([]);
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
//获取所有得地区
const manageProvince = () => {
return new Promise(resolve => {
......@@ -80,6 +88,7 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
setcity([...city])
}
setrequisitionFormAddress(result);
}
// 选择城市的时候下拉就调用方
const onDropdownVisibleChange = () => {
......@@ -180,6 +189,7 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
})
})
}
onGet(requisitionFormAddress)
}, [requisitionFormAddress])
return (
......@@ -266,17 +276,17 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
<Form.Item
label='单据时间'
>
<span>{set.voucherTime && set.voucherTime}</span>
<span>{set.voucherTime && format(set.voucherTime)}</span>
</Form.Item>
<Form.Item
label='外部状态'
>
<span>{set.externalState && set.externalState}</span>
<span>{set.externalState && <GeneralExternalState colorType={1} state={set.externalState} data={externalState} /> }</span>
</Form.Item>
<Form.Item
label='内部状态'
>
<span>{set.interiorState && set.interiorState}</span>
<span>{set.interiorState && <GeneralInteriorState colorType={1} state={set.interiorState} data={interiorState} /> }</span>
</Form.Item>
</Form>
)
......
......@@ -3,14 +3,20 @@ 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
get?: Function,
externalState?:any,
interiorState?: any
}
const FlowRecord: React.FC<faceSetData> = (props) => {
const { set, get } = 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")}</>
}
......@@ -25,6 +31,7 @@ const FlowRecord: React.FC<faceSetData> = (props) => {
}, {
title: '状态',
dataIndex: 'state',
render: (text: any, record: any) => <GeneralExternalState colorType={1} state={text} data={externalState} />
}, {
title: '操作',
dataIndex: 'operationalProcess',
......@@ -52,6 +59,7 @@ const FlowRecord: React.FC<faceSetData> = (props) => {
}, {
title: '状态',
dataIndex: 'state',
render: (text: any, record: any) => <GeneralInteriorState colorType={1} state={text} data={interiorState} />
}, {
title: '操作',
dataIndex: 'operationalProcess',
......
......@@ -34,10 +34,11 @@ const DemandAdd: React.FC<{}> = () => {
const fetchData = (params?: any) => {
return new Promise((resolve, reject) => {
PublicApi.getOrderRequisitionFormAwaitList({ ...params }).then(res => {
resolve(res.data)
resolve(res.data);
})
})
}
/** 批量删除 */
const batchDel = () => {
if (selectRow.length > 0) {
......@@ -51,6 +52,12 @@ const DemandAdd: React.FC<{}> = () => {
/** 删除 -> 单个 */
const handleDelete = (id:any) => {
PublicApi.getOrderRequisitionFormIsDelete({id, current: '1', pageSize: '100'}).then(res => {
if(res.code === 1000) {
message.error('删除成功')
ref.current.reload();
}
})
console.log(id)
}
......@@ -63,7 +70,7 @@ const DemandAdd: React.FC<{}> = () => {
<>
{
(record.interiorState !== 3 &&
<Button type="link" onClick={() => history.push(`/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder/edit?id=${record.id}`)}>编辑</Button>
<Button type="link" onClick={() => history.push(`/memberCenter/tranactionAbility/demandPosts/demandAdd/edit?id=${record.id}`)}>编辑</Button>
)
}
{
......
......@@ -4,9 +4,14 @@ import { history } from 'umi';
const DemandAuditOneDetail: React.FC<{}> = (props) => {
const { id } = history.location.query;
const { pathname } = history.location;
const type = pathname.split('/')[pathname.split('/').length - 1];
console.log(type)
return(
<DatailCmonent
id={id}
path={type}
type={3}
/>
)
}
......
......@@ -47,7 +47,7 @@ const DemandAuditOne: React.FC<{}> = () => {
<Button
type="link"
onClick={() =>
history.push(`/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail?id=${record.id}`)
history.push(`/memberCenter/tranactionAbility/demandPosts/demandAuditOne/detail?id=${record.id}`)
}
>
审核
......
......@@ -4,9 +4,14 @@ import { history } from 'umi';
const DemandAuditTwoDetail: React.FC<{}> = (props) => {
const { id } = history.location.query;
const { pathname } = history.location;
const type = pathname.split('/')[pathname.split('/').length - 1];
console.log(type)
return(
<DatailCmonent
id={id}
path={type}
type={4}
/>
)
}
......
......@@ -46,7 +46,7 @@ const DemandAuditTwo: React.FC<{}> = () => {
<Button
type="link"
onClick={() =>
history.push(`/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail?id=${record.id}`)
history.push(`/memberCenter/tranactionAbility/demandPosts/demandAuditTwo/detail?id=${record.id}`)
}
>
审核
......
import React, { useState, useRef } from 'react';
import { message, Button } from 'antd';
import { history } from 'umi';
import { message, Button, Popconfirm } from 'antd';
import { PublicApi } from '@/services/api';
import TableListInfo from '../components/tableList';
......@@ -44,14 +43,11 @@ const DemandSubmit: React.FC<{}> = () => {
key: 'options',
dataIndex: 'options',
render: (text: any, record: any) =>
<Button
type="link"
onClick={() =>
history.push(`/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail?id=${record.id}`)
}
>
提交
</Button>
<Popconfirm title="确定要提交吗?" okText="是" cancelText="否" onConfirm={() => PublicApi.postOrderSubmitRequisitionForm({ id: record.id }).then(res => {
ref.current.reload()
})}>
<Button type='link'>提交</Button>
</Popconfirm>
}
return(
......
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