@@ -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', | |||
@@ -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: '商品小类', | |||
@@ -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; |
@@ -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; |
@@ -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> | |||
), | |||
}; | |||
@@ -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', | |||
}); | |||
} |
@@ -58,3 +58,12 @@ | |||
} | |||
} | |||
} | |||
.formlable{ | |||
color: #3a3a3a; | |||
border: 1px solid #bfbbbb; | |||
width: 91px; | |||
height: 32px; | |||
text-align: center; | |||
line-height: 30px; | |||
margin-left: 15px; | |||
} |
@@ -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; |
@@ -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; |
@@ -0,0 +1,3 @@ | |||
// .ant-card-body { | |||
// padding: 10px; | |||
// } |
@@ -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 || {}), | |||
}); | |||
} |
@@ -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 = []; | |||