Commit f96a9779 authored by 武广's avatar 武广

Merge branch 'feature/group-meal' of git.quantgroup.cn:ui/merchant-manage-ui into feature/meal-3.0

parents 40e72879 f8c96d7c
...@@ -213,10 +213,19 @@ const CustomerInfo = props => { ...@@ -213,10 +213,19 @@ const CustomerInfo = props => {
const obj = Object.assign({}, res.data); const obj = Object.assign({}, res.data);
if (res.data.mealTimePeriod && res.data.mealTimePeriod.length) { if (res.data.mealTimePeriod && res.data.mealTimePeriod.length) {
const m = moment().format('YYYY-MM-DD'); const m = moment().format('YYYY-MM-DD');
obj.mealTimePeriod = res.data.mealTimePeriod.map(item => ({ const arr = Object.keys(mealSections);
mealPeriodType: `${item.mealPeriodType}`, obj.mealTimePeriod = Object.keys(mealSections).map(() => ({}));
time: [moment(`${m} ${item.beginTime}`), moment(`${m} ${item.endTime}`)], res.data.mealTimePeriod.forEach((item, i) => {
})); if (item) {
const index = arr.indexOf(`${item.mealPeriodType}`);
if (index > -1) {
obj.mealTimePeriod[index] = {
mealPeriodType: `${item.mealPeriodType}`,
time: [moment(`${m} ${item.beginTime}`), moment(`${m} ${item.endTime}`)],
};
}
}
});
} else { } else {
obj.mealTimePeriod = []; obj.mealTimePeriod = [];
} }
...@@ -237,7 +246,6 @@ const CustomerInfo = props => { ...@@ -237,7 +246,6 @@ const CustomerInfo = props => {
obj.hideInfo.push('hideImage'); obj.hideInfo.push('hideImage');
} }
obj.mealType = res.data.mealType.map(item => `${item}`); obj.mealType = res.data.mealType.map(item => `${item}`);
console.log('obj :>> ', obj);
setMealTypes(obj.mealType); setMealTypes(obj.mealType);
const json = {}; const json = {};
res.data.mealTimePeriod.forEach(item => { res.data.mealTimePeriod.forEach(item => {
...@@ -303,7 +311,11 @@ const CustomerInfo = props => { ...@@ -303,7 +311,11 @@ const CustomerInfo = props => {
<Input /> <Input />
</Form.Item> </Form.Item>
{!props.id && ( {!props.id && (
<Form.Item label="企业取餐点" name="pickselfIds"> <Form.Item
label="企业取餐点"
name="pickselfIds"
rules={[{ required: true, type: 'array', message: '请选择企业取餐点!' }]}
>
<Select <Select
options={pickSelfList} options={pickSelfList}
mode="multiple" mode="multiple"
......
...@@ -4,6 +4,7 @@ import { Button } from 'antd'; ...@@ -4,6 +4,7 @@ import { Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { customerColumn } from './staticData/index'; import { customerColumn } from './staticData/index';
import CustomerInfo from './components/CustomerInfo'; import CustomerInfo from './components/CustomerInfo';
import utilStyle from '@/utils/utils.less';
import { apiEnterpriseList } from './service'; import { apiEnterpriseList } from './service';
const BusinessCustomer = () => { const BusinessCustomer = () => {
...@@ -28,7 +29,7 @@ const BusinessCustomer = () => { ...@@ -28,7 +29,7 @@ const BusinessCustomer = () => {
}; };
return ( return (
<div> <div className={utilStyle.formPageBox}>
<ProTable <ProTable
actionRef={refTable} actionRef={refTable}
search={{ search={{
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Form, Checkbox, Space, Modal, notification, message } from 'antd'; import { Checkbox, Space, Modal, notification, message } from 'antd';
import { mealColumn } from '../staticData/goods'; import { mealColumn } from '../staticData/goods';
import { apiMealInfoUpdate } from '../service'; import { apiMealInfoUpdate } from '../service';
const SaleDateModal = props => { const SaleDateModal = props => {
const [form] = Form.useForm();
const [value, setValue] = useState([]); const [value, setValue] = useState([]);
// 关闭弹窗 // 关闭弹窗
...@@ -54,7 +53,9 @@ const SaleDateModal = props => { ...@@ -54,7 +53,9 @@ const SaleDateModal = props => {
<Checkbox.Group onChange={onChangeMeal} value={value}> <Checkbox.Group onChange={onChangeMeal} value={value}>
<Space direction="vertical"> <Space direction="vertical">
{Object.keys(mealColumn).map(key => ( {Object.keys(mealColumn).map(key => (
<Checkbox value={key}>{mealColumn[key]}</Checkbox> <Checkbox key={key} value={key}>
{mealColumn[key]}
</Checkbox>
))} ))}
</Space> </Space>
</Checkbox.Group> </Checkbox.Group>
......
...@@ -11,7 +11,6 @@ const { Option } = Select; ...@@ -11,7 +11,6 @@ const { Option } = Select;
const SaleDateModal = props => { const SaleDateModal = props => {
const [searchType, setSearchType] = useState('1'); const [searchType, setSearchType] = useState('1');
const [searchKeyword, setSearchKeyword] = useState(''); const [searchKeyword, setSearchKeyword] = useState('');
// const [goodsType, setGoodsType] = useState('1');
const [shopId, setShopId] = useState(props.shopID); const [shopId, setShopId] = useState(props.shopID);
const [shopName, setShopName] = useState(''); const [shopName, setShopName] = useState('');
const [searchName, setSearchName] = useState(''); const [searchName, setSearchName] = useState('');
...@@ -21,8 +20,8 @@ const SaleDateModal = props => { ...@@ -21,8 +20,8 @@ const SaleDateModal = props => {
const [total, setTotal] = useState(0); const [total, setTotal] = useState(0);
const [dataSource, setDataSource] = useState([]); const [dataSource, setDataSource] = useState([]);
const [shopList, setShopList] = useState([]); const [shopList, setShopList] = useState([]);
const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [selectedRowKeys, setSelectedRowKeys] = useState(props.selectedRowKeys || []);
const [selectedRows, setSelectedRows] = useState([]); const [selectedRows, setSelectedRows] = useState(props.selectedRows || []);
const searchList = async params => { const searchList = async params => {
console.log('params :>> ', params); console.log('params :>> ', params);
...@@ -58,6 +57,9 @@ const SaleDateModal = props => { ...@@ -58,6 +57,9 @@ const SaleDateModal = props => {
const res = await api(data); const res = await api(data);
console.log('res :>> ', res); console.log('res :>> ', res);
if (res && res.data && res.data.records) { if (res && res.data && res.data.records) {
res.data.records.forEach(item => {
item.enterprisePrice = item.salePrice;
});
setDataSource(res.data.records); setDataSource(res.data.records);
setTotal(res.data.total); setTotal(res.data.total);
} }
...@@ -110,6 +112,9 @@ const SaleDateModal = props => { ...@@ -110,6 +112,9 @@ const SaleDateModal = props => {
if (!props.shopID) { if (!props.shopID) {
props.onChangeShop(shopId); props.onChangeShop(shopId);
} }
if (props.onSelectedRowKeys) {
props.onSelectedRowKeys(selectedRowKeys);
}
handleCancel(); handleCancel();
}; };
...@@ -212,7 +217,7 @@ const SaleDateModal = props => { ...@@ -212,7 +217,7 @@ const SaleDateModal = props => {
<Pagination defaultCurrent={1} total={total} showQuickJumper onChange={onPageChange} /> <Pagination defaultCurrent={1} total={total} showQuickJumper onChange={onPageChange} />
<div className={style['footers-btn']}> <div className={style['footers-btn']}>
<div className={style['footers-desc']}> <div className={style['footers-desc']}>
已选商品(<span className={style['footers-num']}>{selectedRows.length}</span>) 已选商品(<span className={style['footers-num']}>{selectedRowKeys.length}</span>)
</div> </div>
<Button key="back" onClick={handleCancel}> <Button key="back" onClick={handleCancel}>
取消 取消
......
...@@ -82,7 +82,7 @@ export const takeawayGoodsColumn = options => { ...@@ -82,7 +82,7 @@ export const takeawayGoodsColumn = options => {
{ {
title: 'SKU编码', title: 'SKU编码',
dataIndex: 'skuId', dataIndex: 'skuId',
width: 160, width: 170,
align: 'center', align: 'center',
}, },
{ {
...@@ -101,7 +101,6 @@ export const takeawayGoodsColumn = options => { ...@@ -101,7 +101,6 @@ export const takeawayGoodsColumn = options => {
{ {
title: '可售日期', title: '可售日期',
dataIndex: 'saleDateList', dataIndex: 'saleDateList',
width: 120,
align: 'center', align: 'center',
hideInSearch: true, hideInSearch: true,
render: (_, record) => ( render: (_, record) => (
...@@ -125,7 +124,6 @@ export const takeawayGoodsColumn = options => { ...@@ -125,7 +124,6 @@ export const takeawayGoodsColumn = options => {
{ {
title: '可售餐段', title: '可售餐段',
dataIndex: 'tabCateList', dataIndex: 'tabCateList',
width: 120,
align: 'center', align: 'center',
hideInSearch: true, hideInSearch: true,
render: (_, record) => ( render: (_, record) => (
...@@ -145,7 +143,7 @@ export const takeawayGoodsColumn = options => { ...@@ -145,7 +143,7 @@ export const takeawayGoodsColumn = options => {
{ {
title: '企业价格', title: '企业价格',
dataIndex: 'activityPrice', dataIndex: 'activityPrice',
width: 100, width: 120,
align: 'center', align: 'center',
hideInSearch: true, hideInSearch: true,
render: (_, record) => ( render: (_, record) => (
...@@ -184,7 +182,7 @@ export const takeawayGoodsColumn = options => { ...@@ -184,7 +182,7 @@ export const takeawayGoodsColumn = options => {
{ {
title: '排序', title: '排序',
dataIndex: 'sort', dataIndex: 'sort',
width: 80, width: 90,
align: 'center', align: 'center',
hideInSearch: true, hideInSearch: true,
render: (_, record) => ( render: (_, record) => (
...@@ -204,8 +202,8 @@ export const takeawayGoodsColumn = options => { ...@@ -204,8 +202,8 @@ export const takeawayGoodsColumn = options => {
{ {
title: '列出商品', title: '列出商品',
dataIndex: 'showFlag', dataIndex: 'showFlag',
width: 80,
align: 'center', align: 'center',
width: 100,
hideInSearch: true, hideInSearch: true,
render: (_, record) => ( render: (_, record) => (
<Space> <Space>
...@@ -217,15 +215,19 @@ export const takeawayGoodsColumn = options => { ...@@ -217,15 +215,19 @@ export const takeawayGoodsColumn = options => {
}, },
{ {
title: '餐品类型', title: '餐品类型',
dataIndex: 'mealType', dataIndex: 'mealTypeList',
width: 80,
align: 'center', align: 'center',
hideInSearch: true, hideInSearch: true,
render(arr) {
if (arr && arr.length) {
return arr.map(item => item.name).join('/');
}
return '-';
},
}, },
{ {
title: '添加时间', title: '添加时间',
dataIndex: 'createDate', dataIndex: 'createDate',
width: 120,
valueType: 'dateRange', valueType: 'dateRange',
align: 'center', align: 'center',
render(v, record) { render(v, record) {
...@@ -235,7 +237,6 @@ export const takeawayGoodsColumn = options => { ...@@ -235,7 +237,6 @@ export const takeawayGoodsColumn = options => {
{ {
title: '当日餐段', title: '当日餐段',
dataIndex: 'tabId', dataIndex: 'tabId',
width: 120,
align: 'center', align: 'center',
valueEnum: mealColumn, valueEnum: mealColumn,
hideInTable: true, hideInTable: true,
...@@ -303,6 +304,9 @@ export const GoodsInfoColumn = options => { ...@@ -303,6 +304,9 @@ export const GoodsInfoColumn = options => {
if (arr && arr.length) { if (arr && arr.length) {
return arr[0].stock; return arr[0].stock;
} }
if (![null, undefined].includes(v)) {
return v;
}
return '-'; return '-';
}, },
}, },
......
...@@ -35,19 +35,41 @@ const TakeawayGoodsInfo = props => { ...@@ -35,19 +35,41 @@ const TakeawayGoodsInfo = props => {
message.error('请添加商品'); message.error('请添加商品');
return; return;
} }
const skuInfoList = dataSource.map(item => ({ const skuInfoList = [];
skuId: item.skuId, try {
enterprisePrice: item.enterprisePrice, dataSource.forEach(item => {
mealTypeList: item.mealTypeList.map(m => m.code), if (!item.mealTypeList || item.mealTypeList.length < 1) {
saleDateList: item.saleDate, throw Error('请添加餐品类型!');
tabCateList: item.tabCate.map(t => ({ tabId: t })), }
})); if (!item.enterprisePrice || `${item.enterprisePrice}`.length < 1) {
throw Error('请添加企业价格!');
}
if (!item.saleDate || item.saleDate.length < 1) {
throw Error('请添加可售日期!');
}
if (!item.tabCate || item.tabCate.length < 1) {
throw Error('请添加可售餐段!');
}
const json = {
skuId: item.skuId,
enterprisePrice: item.enterprisePrice,
mealTypeList: item.mealTypeList.map(m => m.code),
saleDateList: item.saleDate,
tabCateList: item.tabCate.map(t => ({ tabId: t })),
};
skuInfoList.push(json);
});
} catch (e) {
message.error(e.message);
return;
}
const params = { const params = {
shopId, shopId,
enterpriseId: id, enterpriseId: id,
pickSelfIdList: slePickSelf, pickSelfIdList: slePickSelf,
skuInfoList, skuInfoList,
}; };
console.log('params :>> ', params);
const res = await apiSaveGoodsList(params); const res = await apiSaveGoodsList(params);
if (res && res.success) { if (res && res.success) {
notification.success({ message: '添加成功' }); notification.success({ message: '添加成功' });
......
...@@ -8,7 +8,7 @@ import SaleDateModal from './components/SaleDateModal'; ...@@ -8,7 +8,7 @@ import SaleDateModal from './components/SaleDateModal';
import GoodPriceModal from './components/GoodPriceModal'; import GoodPriceModal from './components/GoodPriceModal';
import SaleSectionModal from './components/SaleSectionModal'; import SaleSectionModal from './components/SaleSectionModal';
import SelectGoodsModal from './components/SelectGoodsModal'; import SelectGoodsModal from './components/SelectGoodsModal';
import { apiSaveVirtualGoodsList, apiShopListByEnterpriseID } from './service'; import { apiSaveVirtualGoodsList, apiShopListByEnterpriseID, apiVirtualList } from './service';
import style from './style/index.less'; import style from './style/index.less';
...@@ -24,6 +24,7 @@ const VirtualGoodsInfo = props => { ...@@ -24,6 +24,7 @@ const VirtualGoodsInfo = props => {
const [shopList, setShopList] = useState({}); // 店铺列表 const [shopList, setShopList] = useState({}); // 店铺列表
const [sleShopID, setSelShopID] = useState(''); // 选中的店铺ID const [sleShopID, setSelShopID] = useState(''); // 选中的店铺ID
const [sleShopName, setSelShopName] = useState(''); // 选中的店铺名称 const [sleShopName, setSelShopName] = useState(''); // 选中的店铺名称
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [editID, setEditID] = useState(''); // 编辑ID const [editID, setEditID] = useState(''); // 编辑ID
// 取消 // 取消
...@@ -46,13 +47,34 @@ const VirtualGoodsInfo = props => { ...@@ -46,13 +47,34 @@ const VirtualGoodsInfo = props => {
message.error('请添加商品'); message.error('请添加商品');
return; return;
} }
const skuInfoList = dataSource.map(item => ({ const skuInfoList = [];
skuId: item.skuId, try {
enterprisePrice: item.enterprisePrice, dataSource.forEach(item => {
mealTypeList: item.mealTypeList.map(m => m.code), if (!item.mealTypeList || item.mealTypeList.length < 1) {
saleDateList: item.saleDate, throw Error('请添加餐品类型!');
tabCateList: item.tabCate.map(t => ({ tabId: t })), }
})); if (!item.enterprisePrice || `${item.enterprisePrice}`.length < 1) {
throw Error('请添加企业价格!');
}
if (!item.saleDate || item.saleDate.length < 1) {
throw Error('请添加可售日期!');
}
if (!item.tabCate || item.tabCate.length < 1) {
throw Error('请添加可售餐段!');
}
const json = {
skuId: item.skuId,
enterprisePrice: item.enterprisePrice,
mealTypeList: item.mealTypeList.map(m => m.code),
saleDateList: item.saleDate,
tabCateList: item.tabCate.map(t => ({ tabId: t })),
};
skuInfoList.push(json);
});
} catch (e) {
message.error(e.message);
return;
}
const params = { const params = {
enterpriseId: id, enterpriseId: id,
shopId: sleShopID, shopId: sleShopID,
...@@ -86,10 +108,38 @@ const VirtualGoodsInfo = props => { ...@@ -86,10 +108,38 @@ const VirtualGoodsInfo = props => {
} }
}; };
// 查询已选商品列表
const getGoodsList = async shopId => {
const data = {
page: 1,
size: 1000,
data: {
enterpriseId: id,
shopId,
},
};
const res = await apiVirtualList(data);
if (res && res.data && res.data.records && res.data.records.length) {
const keys = [];
setDataSource(
res.data.records.map(item => {
item.saleDate = item.saleDateList.map(d => d.code);
item.tabCate = item.tabCateList.map(c => c.tabId);
item.enterprisePrice = item.activityPrice;
item.salePrice = item.price;
keys.push(item.skuId);
return item;
}),
);
setSelectedRowKeys(keys);
}
};
// 选中店铺 // 选中店铺
const onSelectShop = sid => { const onSelectShop = sid => {
setSelShopID(sid); setSelShopID(sid);
setSelShopName(shopList[sid]); setSelShopName(shopList[sid]);
getGoodsList(sid);
}; };
// 刷新列表数据 // 刷新列表数据
...@@ -107,9 +157,6 @@ const VirtualGoodsInfo = props => { ...@@ -107,9 +157,6 @@ const VirtualGoodsInfo = props => {
setDataSource(arr); setDataSource(arr);
}; };
// const initData = async () => {
// setLoading(true);
// };
useEffect(() => { useEffect(() => {
getShopList(); getShopList();
}, []); }, []);
...@@ -212,7 +259,10 @@ const VirtualGoodsInfo = props => { ...@@ -212,7 +259,10 @@ const VirtualGoodsInfo = props => {
productType={4} productType={4}
shopID={sleShopID} shopID={sleShopID}
shopName={sleShopName} shopName={sleShopName}
selectedRowKeys={selectedRowKeys}
selectedRows={dataSource}
onSelectChange={setDataSource} onSelectChange={setDataSource}
onSelectedRowKeys={setSelectedRowKeys}
handleClose={() => setVisibleSelectGoods(false)} handleClose={() => setVisibleSelectGoods(false)}
/> />
)} )}
......
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