Quellcode durchsuchen

商品工艺

dev
zhaoy vor 11 Monaten
Ursprung
Commit
fc0b7df6f3
12 geänderte Dateien mit 638 neuen und 8 gelöschten Zeilen
  1. +7
    -0
      config/routes.js
  2. +8
    -0
      src/app.jsx
  3. +169
    -0
      src/pages/goods/goodsInfo/components/EditCarTable.jsx
  4. +217
    -0
      src/pages/goods/goodsInfo/components/goodstechnologymaken.jsx
  5. +14
    -5
      src/pages/goods/goodsInfo/index.jsx
  6. +34
    -0
      src/pages/goods/goodsInfo/service.js
  7. +9
    -0
      src/pages/goods/goodsInfo/style.less
  8. +10
    -0
      src/pages/goods/goodstechnologymaken/components/EditCarTable.jsx
  9. +148
    -0
      src/pages/goods/goodstechnologymaken/index.jsx
  10. +3
    -0
      src/pages/goods/goodstechnologymaken/index.less
  11. +15
    -0
      src/pages/goods/goodstechnologymaken/services.js
  12. +4
    -3
      src/pages/goods/newgoods/index.jsx

+ 7
- 0
config/routes.js Datei anzeigen

@@ -317,6 +317,13 @@ export default [
component: './goods/goodsattribute',
access: 'k10',
},
// {
// name: '商品工艺制作',
// icon: 'smile',
// path: '/goods/goodstechnologymaken',
// component: './goods/goodstechnologymaken',
// access: 'k10',
// },
{
name: '商品管理新',
icon: 'smile',


+ 8
- 0
src/app.jsx Datei anzeigen

@@ -423,6 +423,14 @@ export async function getInitialState() {
component: './goods/goodsattribute',
access: 'k10',
},
// {
// code: 'goodstechnologymaken',
// name: '商品工艺制作',
// icon: 'smile',
// path: '/goods/goodstechnologymaken',
// component: './goods/goodstechnologymaken',
// access: 'k10',
// },
{
code: 'goods-type',
name: '商品小类',


+ 169
- 0
src/pages/goods/goodsInfo/components/EditCarTable.jsx Datei anzeigen

@@ -0,0 +1,169 @@
import React, { useState, useRef,useEffect } from 'react';
import { Card, Select, Button,message } from 'antd';
import { BetaSchemaForm, ProFormList, ProForm } from '@ant-design/pro-form';
import { ProCard } from '@ant-design/pro-Card';
// import { ProFormList } from '@ant-design/pro-list';
import style from '../style.less'
import { CloseOutlined } from '@ant-design/icons';
import {
AddGoodsTechnologyAction,
} from '../service';
const EditCarTable = (props) => {
const [chnologyId, settechnologyid] = useState('')
const formRef = useRef();
useEffect(() => {
console.log(props.technologyattrdata)
formRef.current?.setFieldsValue(props.technologyattrdata)
},[props.technologyattrdata])
//const [technologyname, settechnologyname] = useState('')
const columns = [
{
dataIndex: 'items',
valueType: 'dependency',
name: ['chnologyId'],
columns: ({ chnologyId }) => {
var cloumdata = [];
var sd = props.technologyattralldata.filter(x => x.goodstechnologyId == chnologyId);
if (sd) {
sd.map((x, index) => {
var options = {}
let columnspro =
{
title: () => { return <span className={style['formlable']}>{x.actionName}</span> },
dataIndex: "actionvalue-" +x.id+":"+ x.actionName,
valueType: x.actionType,
width: 'md',
}
if (x.actionType == "select") {
var va = JSON.parse(x.actionValue);
for (let i = 0; i < va.length; i++) {
var op = { text: va[i].actionValueName };
options[va[i].actionValueName] = op
}
columnspro.valueEnum = options;
}
cloumdata.push(columnspro)
})
}
return cloumdata
}
}
]
const onHandleChange = (value, option) => {
settechnologyid(value)
//settechnologyname(option.label)
}
const getFormatValues = () => {
console.log(
'格式化后的所有数据:',
formRef.current?.getFieldsFormatValue?.(),
);
let arr=formRef.current?.getFieldsFormatValue?.()
//let names = arr.attributes.map(item => item["chnologyId"]);
//let nameSet = new Set(names);
let data=[]
//if (nameSet.size == names.length) {
for (let index = 0; index < arr.attributes.length; index++) {
const element = arr.attributes[index];
let item={};
item.id=element.id
item.stepName=props.goodstechnologydata.find(x=>x.value==element.chnologyId)?.label;
item.chnologyId=element.chnologyId;
let ajs=[]
const keys = Object.keys(element);
//const values = Object.values(element);
var sd=keys.filter(x=>x!=="chnologyId" && x!=="id" && x!=="sort");
sd.map(x=>{
var va=x.replace("actionvalue-","").split(':')
ajs.push({actionName:va[1],actionValue:element[x],technologyactionId:va[0]});
})
item.actionJson=JSON.stringify(ajs);
item.sort=element.sort==""?index+1:element.sort;
item.goodsId=props.goodsid;
item.goodsAttributeId=props.checkvalue.join(',')
data.push(item);
}
console.log(data);
AddGoodsTechnologyAction(data).then((res)=>{
if(res.succeeded){
console.log(formRef?.current)
message.success("保存成功")
formRef?.current?.resetFields()
}else{
message.error("保存失败")
}
})
// } else {
// console.log("步骤重复");
// message.error("步骤重复")
// }
};


return (
<div>
<ProForm
layout="horizontal"
formRef={formRef}
submitter={{
submitButtonProps: {
style: {
// 隐藏重置按钮
display: 'none',
},
},
render: (props, doms) => {
return [
...doms,
<Button htmlType="button" onClick={getFormatValues} key="format">
保存
</Button>,
];
},
}}
>
<ProFormList
name="attributes"
creatorButtonProps={{ creatorButtonText: '添加工艺', }}
min={1}
copyIconProps={false}
initialValue={props.technologyattrdata}
itemRender={({ listDom, action }, { index }) => (
<ProCard title={"工序号" + (index + 1)} bordered extra={action} bodyStyle={{ padding: 15 }} headStyle={{ padding: '0px 24px' }} style={{ marginBlockEnd: 8 }}>
{listDom}
</ProCard>
)}

creatorRecord={{ chnologyId: ''}}
>
<ProForm.Item name="chnologyId" style={{ float: 'left' }}>
<Select name="chnologyId" style={{ width: '90px' }} options={props.goodstechnologydata} onChange={async (value, option) => { onHandleChange(value, option) }}></Select>
</ProForm.Item>
<ProForm.Item isListField name="items" style={{ float: 'left', width: '75%' }}>

<BetaSchemaForm

layoutType="Embed"
type="custom"
shouldUpdate={true}
formItemProps={{
forceRender: true,
labelAlign: 'left',
}}
onFinish={async (values) => {
console.log(values);
}}
columns={columns}
/>


</ProForm.Item>

</ProFormList>
</ProForm>
</div>
);
};
export default EditCarTable;

+ 217
- 0
src/pages/goods/goodsInfo/components/goodstechnologymaken.jsx Datei anzeigen

@@ -0,0 +1,217 @@
import { Button, message, Input, Card, Select, Radio, Tag, Upload, Descriptions } from 'antd';
import React, { useState, useRef, useEffect } from 'react';
import { CloseOutlined } from '@ant-design/icons';
import { ProCard } from '@ant-design/pro-Card';
import { BetaSchemaForm } from '@ant-design/pro-form';
import {
getbyidgoods,
GetGoodsTechnology,
GetTechnologyactionList,
GetTechnologyActionListAll,
GetGoodsTechnologyAction
} from '../service';
import style from '../style.less'
import EditCarTable from './EditCarTable'
const goodstechnologymaken = (props) => {
const [attrvalue, setAttrvalue] = useState('');
const [checkvalue, setCheckvalue] = useState([]);
const [items, setItems] = useState([]);
const [goodstechnologydata, setgoodstechnologydata] = useState([]);
const [technologyattrdata, setTechnologyattrdata] = useState([]);
const [technologyattralldata, setTechnologyattralldata] = useState([]);
const [goodsinfo, setGoodsinfo] = useState({});
const [cardcount, setCardcount] = useState([]);
const [goodstechnolog, setgoodstechnolog] = useState([]);
useEffect(() => {
interdata()
}, [])
const interdata = () => {
getbyidgoods(props.goodsid).then((res) => {
if (res.succeeded) {
setGoodsinfo(res.data)
var it = [
// {key:'1',label:'',children:(<div><img style={{width:100,height:100}} src={res.data.imgUrl}></img></div>)},
{ key: '1', label: '商品名称', children: res.data.name },
{ key: '2', label: '商品价格', children: res.data.price },
{ key: '3', label: '商品大类', children: res.data.parentTypeIDName },
{ key: '4', label: '商品小类', children: res.data.goodsTypeName },
{ key: '5', label: '商品单位', children: res.data.goodsUintName },
{ key: '6', label: '套餐属性', children: res.data.goodsAttribute == 0 ? '单品' : '套餐' },
]
setItems(it)
} else {
message.error("查询商品信息失败");
}
});
GetGoodsTechnology().then((r) => {
var data = r.data;
var sd = []
if (data.length > 0) {
data.forEach((x) => {
sd.push({ label: x.name, value: x.id, isBatch: x.isBatch });
});
setgoodstechnologydata(sd)
}
});
GetTechnologyActionListAll().then((r) => {
setTechnologyattralldata(r.data)
})
GetGoodsTechnologyAction(props.goodsid).then((r) => {
setgoodstechnolog(r.data)
})
}
const onChangevalue = (e) => {
const { name, value } = e.target;
console.log(name)
console.log(value)
let names = "";
let updatedValues = [...checkvalue];
for (let index = 0; index < goodsinfo.goodsAttributeList.length; index++) {
if (name === 'radiogroup' + index) {
// 将第一组的值累加到数组中
updatedValues[index] = value;

}
}
goodsinfo.goodsAttributeList.forEach(item => {
for (let index = 0; index < updatedValues.length; index++) {
var bs = item.goodsAttributeValueList.find(x => x.goodsAttributeValuId == updatedValues[index])?.attributeValue
if (bs) {
names = names + bs;
if (index < updatedValues.length - 1) {
names = names + "-"
}
}

}
})
setAttrvalue(names)
setCheckvalue(updatedValues)
}
// const onHandleChange = (value, option) => {
// console.log(value)
// GetTechnologyactionList(value).then((res) => {
// setTechnologyattrdata(res.data)
// })
// console.log(option)
// }
// const onClickadd = () => {
// console.log(cardcount.length)
// var data = [];
// if (cardcount.length == 0) {
// let item = { index: cardcount.length++, name: '步骤' + cardcount.length++ }
// data.push(item)
// } else {
// data = cardcount.map(x => {
// return x
// })
// let item = { index: cardcount.length++, name: '步骤' + cardcount.length++ }
// data.push(item)
// }

// console.log(data)
// setCardcount(data);
// }
const onClickedit=(e,item,action)=>{
console.log(item)
let attr={attributes:[]};
const obj = {};
obj['id'] = item.id;
obj['chnologyId'] = item.chnologyId;
obj['sort'] = item.sort;
action.map(x=>{
obj["actionvalue-"+x.technologyactionId+":"+x.actionName]=x.actionValue;
})
attr.attributes.push(obj)
console.log(attr)
setTechnologyattrdata(attr)
}
return <>

<Card bodyStyle={{ padding: 15 }}>
<div style={{ fontSize: 16, marginBottom: 5, color: '#1890ff', fontWeight: 600 }}>商品信息</div>
<div style={{ float: 'left' }}><img style={{ width: 100, height: 100 }} src={goodsinfo.imgUrl}></img></div>
<Descriptions style={{ float: 'left', width: '71%', marginLeft: '10px' }} labelStyle={{ fontSize: 16, fontWeight: 600 }} >

{
items.map((x, index) => {
return (
<Descriptions.Item key={index} label={x.label}>{x.children}</Descriptions.Item>
);
})
}

</Descriptions>
</Card>
<Card bodyStyle={{ padding: 15 }}>
<div style={{ fontSize: 16, marginBottom: 5, color: '#1890ff', fontWeight: 600 }}>商品属性</div>
{
goodsinfo.goodsAttributeList == undefined ? '' : (
goodsinfo.goodsAttributeList.map((item, index) => {
return (
<div style={{ marginLeft: 10 }}>
<div>
<span style={{ marginRight: 10 }}> <Tag color="blue" style={{ fontSize: 14, fontWeight: 600 }}>{item.attributeName}</Tag>:</span>
<span>
<Radio.Group name={"radiogroup" + index} buttonStyle="solid" onChange={onChangevalue}>
{
item.goodsAttributeValueList.map((item, index) => {
return (
<Radio.Button key={index} name={index} value={item.goodsAttributeValuId} style={{ marginRight: 22, marginTop: 10 }}>{item.attributeValue}</Radio.Button>
)
})
}
</Radio.Group>
</span>
</div>
</div>
);
})
)
}
</Card>
<Card bodyStyle={{ padding: 15 }}>
<div style={{ fontSize: 16, marginBottom: 5, color: '#1890ff', fontWeight: 600 }}>工艺设计</div>
<ProCard split="vertical">
{/* extra={<Button type="primary">保存</Button>} */}
<ProCard title="编辑工艺" type='inner' colSpan="33%" headerBordered headStyle={{ paddingLeft: '45%' }}>
<div style={{ textAlign: 'center', marginBottom: 10, color: 'brown' }}>{attrvalue}</div>

<EditCarTable goodsid={props.goodsid} technologyattralldata={technologyattralldata} checkvalue={checkvalue} technologyattrdata={technologyattrdata} goodstechnologydata={goodstechnologydata} />
{/* <Button type="dashed" style={{ marginTop: 10 }} onClick={onClickadd} icon={<PlusOutlined />} block>添加工艺</Button> */}
</ProCard>
<ProCard title="查看工艺" type='inner' headStyle={{ paddingLeft: '45%' }} headerBordered>
<div style={{ height: 360 }}>
{
goodstechnolog == undefined ? '' : (
goodstechnolog.map((item, index) => {
var action = JSON.parse(item.actionJson)
return (
<ProCard title={"工序号" + item.sort} bordered bodyStyle={{ padding: 15 }} headStyle={{ padding: '0px 24px' }} extra={ [<Button type="link" onClick={(e)=>{onClickedit(e,item,action)}}>编辑</Button>,<CloseOutlined />]} style={{ marginBlockEnd: 8,width:350,float: 'left',
marginRight: '10px'}}>
<div className={style['formlable']} style={{float:'left',height: '65px',lineHeight: '65px'}}>{item.stepName}</div>
{
action.map(x => {
return (
<div style={{float:'left'}}>
<div className={style['formlable']} style={{display:'block',float:'left'}}>{x.actionName}</div>
<div className={style['formlable']} style={{display:'block',float:'left'}}> {x.actionValue}</div>
</div>
)
})
}

</ProCard>
)
})
)
}
</div>
</ProCard>
</ProCard>
</Card>
</>

}
export default goodstechnologymaken;

+ 14
- 5
src/pages/goods/goodsInfo/index.jsx Datei anzeigen

@@ -6,6 +6,7 @@ import classNames from 'classnames';
import ProTable from '@ant-design/pro-table';
import GoodsbomFrom from './components/GoodsbomFrom';
import CreateBom from './components/CreateBom';
import GoodsTechnologyMaken from './components/goodstechnologymaken'
import { addGoods, goodsType, goodsbigType, getgoodsTaste } from '../newgoods/service';
import { GetGoodsBom, AddBomApi, DelGoodsBom, GetCosRequestURL, unitList,getbygoodsidattribute,addgoodsbomattribute,getbomtypepage,getproductpage } from './service'
import axios from 'axios';
@@ -146,10 +147,10 @@ const Advanced = (props) => {
key: 'goodsbom',
tab: '商品配方',
},
// {
// key: 'goodspack',
// tab: '商品属性',
// },
{
key: 'goodstechnologymaken',
tab: '商品工艺',
},
];

const bomcolumns =
@@ -362,7 +363,9 @@ const Advanced = (props) => {
<Form.Item label="是否称重" name="isWeigh" valuePropName="checked" initialValue='false' >
<Switch checkedChildren="是" unCheckedChildren="否" defaultChecked='false' />
</Form.Item>
<Form.Item label="是否多属性" name="isAttrubute" valuePropName="checked" initialValue='false' >
<Switch checkedChildren="是" unCheckedChildren="否" defaultChecked='false' />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
保存
@@ -478,6 +481,12 @@ const Advanced = (props) => {
}}
/>
</Card>
),
goodstechnologymaken:(
<Card title="商品工艺" style={{ marginBottom: 24}} bordered={false}>
<GoodsTechnologyMaken goodsid={props.location.query.values?.id}></GoodsTechnologyMaken>
</Card>
),
};



+ 34
- 0
src/pages/goods/goodsInfo/service.js Datei anzeigen

@@ -68,4 +68,38 @@ export async function addgoodsbomattribute(data) {
method: 'Post',
data: data,
});
}
export async function getbyidgoods (data) {
return request(`/kitchen/api/goodes/getbyidgoods?id=`+data, {
method: 'Get'
// params: { ...params },
// ...(options || {}),
});
}
export async function GetGoodsTechnology(data) {
return request(`/kitchen/api/goodstechnology/GetGoodsTechnology`, {
method: 'Post',
data: data,
});
}
export async function GetTechnologyactionList(data) {
return request(`/kitchen/api/goodstechnology/gettechnologyactionList?GoodstechnologyId=`+data, {
method: 'Get',
});
}
export async function GetTechnologyActionListAll() {
return request(`/kitchen/api/goodstechnology/gettechnologyactionlistall`, {
method: 'Get',
});
}
export async function AddGoodsTechnologyAction(data) {
return request(`/kitchen/api/goodstechnology/addgoodstechnologyaction`, {
method: 'Post',
data: data,
});
}
export async function GetGoodsTechnologyAction(data) {
return request(`/kitchen/api/goodstechnology/getGoodstechnologyaction?goodsId=`+data, {
method: 'Get',
});
}

+ 9
- 0
src/pages/goods/goodsInfo/style.less Datei anzeigen

@@ -58,3 +58,12 @@
}
}
}
.formlable{
color: #3a3a3a;
border: 1px solid #bfbbbb;
width: 91px;
height: 32px;
text-align: center;
line-height: 30px;
margin-left: 15px;
}

+ 10
- 0
src/pages/goods/goodstechnologymaken/components/EditCarTable.jsx Datei anzeigen

@@ -0,0 +1,10 @@
import React, { useState } from 'react';
import { Card,Select } from 'antd';
const EditCarTable=(props)=>{
return (
<Card>
<Select options={props.options} onChange={props.handleChange}></Select>
</Card>
);
};
export default EditCarTable;

+ 148
- 0
src/pages/goods/goodstechnologymaken/index.jsx Datei anzeigen

@@ -0,0 +1,148 @@
import { Button, message, Input, Card ,Select , Radio, Tag,Upload,Descriptions } from 'antd';
import React, { useState, useRef, useEffect } from 'react';
import { PlusOutlined,UploadOutlined } from '@ant-design/icons';
import { ProCard } from '@ant-design/pro-Card';
import styles from './index.less';
import {
listserach,
getbyidgoods
} from './services';
const goodstechnologymaken = () => {
const [options, setOptions] = useState([]);
const [value, setValue] = useState('');
const [items, setItems] = useState([]);
const [goodsinfo, setGoodsinfo] = useState({});
useEffect(() => {
interdata("")
},[])
const interdata=(value)=>{
listserach(value).then((res) => {
if(res.data){
var goodsdata=res.data.map(x=>{
return {value:x.id,label:x.name}
})
setOptions(goodsdata)
}
})
}
const handleChange=(e)=>{
console.log(e)
getbyidgoods(e).then((res)=>{
if(res.succeeded){
setGoodsinfo(res.data)
var it=[
// {key:'1',label:'',children:(<div><img style={{width:100,height:100}} src={res.data.imgUrl}></img></div>)},
{key:'1',label:'商品名称',children:res.data.name},
{key:'2',label:'商品价格',children:res.data.price},
{key:'3',label:'商品大类',children:res.data.parentTypeIDName},
{key:'4',label:'商品小类',children:res.data.goodsTypeName},
{key:'5',label:'商品单位',children:res.data.goodsUintName},
{key:'6',label:'套餐属性',children:res.data.goodsAttribute==0?'单品':'套餐'},
]
setItems(it)
}else{
message.error("查询商品信息失败");
}
})
}
const props = {
beforeUpload: (file) => {
if (
file.type !== 'application/vnd.ms-excel' &&
file.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
) {
message.error(`${file.name} 不是 exelce 文件`);
}
return file.type == 'application/vnd.ms-excel' ||
file.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
? true
: Upload.LIST_IGNORE;
},
name: 'file',
action: '/kitchen/api/goodes/ExportGood',
headers: {
authorization: 'authorization-text',
},
onChange(info){
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
message.success(`${info.file.name} file uploaded successfully`);
} else if (info.file.status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
}
};
const filterOption = (input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase());
const onChangevalue=()=>{

}
return<>
<Card bodyStyle={{ padding: 15}}>
<span style={{fontSize:16,color:'#1890ff',fontWeight:600}}>选择商品:</span>
<Select style={{width: '80%'}} placeholder="请选择商品" showSearch options={options} filterOption={filterOption} onChange={handleChange}/>
<Upload {...props}>
<Button type="primary" icon={<UploadOutlined />}>导入商品</Button>
</Upload>
</Card>
<Card bodyStyle={{ padding: 15}}>
<div style={{fontSize:16,marginBottom:5,color:'#1890ff',fontWeight:600}}>商品信息</div>
<div style={{float:'left'}}><img style={{width:100,height:100}} src={goodsinfo.imgUrl}></img></div>
<Descriptions style={{float:'left',width: '71%','margin-left': '10px'}} labelStyle={{fontSize:16,fontWeight:600}} >
{
items.map(x=>{
return (
<Descriptions.Item label={x.label}>{x.children}</Descriptions.Item>
);
})
}
</Descriptions>
</Card>
<Card bodyStyle={{ padding: 15}}>
<div style={{fontSize:16,marginBottom:5,color:'#1890ff',fontWeight:600}}>商品属性</div>
{
goodsinfo.goodsAttributeList == undefined ? '' :(
goodsinfo.goodsAttributeList.map((item, index) => {
return (
<div style={{marginLeft: 10}}>
<div>
<span style={{marginRight: 10}}> <Tag color="blue" style={{fontSize:14,fontWeight:600}}>{item.attributeName}</Tag>:</span>
<span>
<Radio.Group name={"radiogroup"+index} buttonStyle="solid" onChange={onChangevalue}>
{
item.goodsAttributeValueList.map((item, index)=>{
return (
<Radio.Button name={index} value={item.goodsAttributeValuId} style={{marginRight: 22, marginTop: 10}}>{item.attributeValue}</Radio.Button>
)
})
}
</Radio.Group>
</span>
</div>
</div>
);
})
)
}
</Card>
<Card bodyStyle={{ padding: 15}}>
<div style={{fontSize:16,marginBottom:5,color:'#1890ff',fontWeight:600}}>工艺设计</div>
<ProCard split="vertical">
<ProCard title="编辑工艺" type='inner' colSpan="30%" headerBordered headStyle={{'padding-left': '45%'}}>
左侧内容
</ProCard>
<ProCard title="查看工艺" type='inner' headStyle={{'padding-left': '45%'}} headerBordered>
<div style={{ height: 360 }}>右侧内容</div>
</ProCard>
</ProCard>
</Card>
</>
}
export default goodstechnologymaken;

+ 3
- 0
src/pages/goods/goodstechnologymaken/index.less Datei anzeigen

@@ -0,0 +1,3 @@
// .ant-card-body {
// padding: 10px;
// }

+ 15
- 0
src/pages/goods/goodstechnologymaken/services.js Datei anzeigen

@@ -0,0 +1,15 @@
import { request } from 'umi';
export async function listserach (data) {
return request(`/kitchen/api/goodes/listserach?name=`+data, {
method: 'Get'
// params: { ...params },
// ...(options || {}),
});
}
export async function getbyidgoods (data) {
return request(`/kitchen/api/goodes/getbyidgoods?id=`+data, {
method: 'Get'
// params: { ...params },
// ...(options || {}),
});
}

+ 4
- 3
src/pages/goods/newgoods/index.jsx Datei anzeigen

@@ -390,9 +390,10 @@ const GoodsManage = () => {
>
<PlusOutlined /> 新建
</Button>,
// <Upload {...props}>
// <Button icon={<UploadOutlined />}>导入商品</Button>
// </Upload>
<Upload {...props}>
<Button icon={<UploadOutlined />}>导入商品</Button>
</Upload>
]}
request={async (params) => {
var goodsData = [];


Laden…
Abbrechen
Speichern