Commit edbef29f authored by 武广's avatar 武广

Merge branch 'feature/goods-list' of git.quantgroup.cn:ui/merchant-manage-ui...

Merge branch 'feature/goods-list' of git.quantgroup.cn:ui/merchant-manage-ui into feature/20230327_public_takeaway
parents 8f1a428f 02c6f082
...@@ -40,10 +40,7 @@ const DragTag = ({ text, id, index, changePosition, endChangePosition, edit, del ...@@ -40,10 +40,7 @@ const DragTag = ({ text, id, index, changePosition, endChangePosition, edit, del
item.index = hoverIndex; // 将当前当前移动到Box的index赋值给当前拖动的box,不然会出现两个盒子疯狂抖动! item.index = hoverIndex; // 将当前当前移动到Box的index赋值给当前拖动的box,不然会出现两个盒子疯狂抖动!
}, },
drop: (item, monitor) => { drop: (item, monitor) => {
const dragIndex = item.index; endChangePosition(); // 调用传入的方法完成交换
const hoverIndex = index;
if (dragIndex === hoverIndex) return; // 如果回到自己的坑,那就什么都不做
endChangePosition(dragIndex, hoverIndex); // 调用传入的方法完成交换
}, },
}); });
......
...@@ -34,18 +34,23 @@ const GoodsGroup = options => { ...@@ -34,18 +34,23 @@ const GoodsGroup = options => {
}; };
const getGroupList = async () => { const getGroupList = async () => {
const res = await apiStorageList({ if (options.shopId) {
shopId: options.shopId, const res = await apiStorageList({
}); shopId: options.shopId,
if (res && res.data && res.data.length > 0) { });
const arr = res.data if (res && res.data && res.data.length > 0) {
.sort((x, y) => x.priority - y.priority) const arr = res.data
.map(item => ({ .sort((x, y) => x.priority - y.priority)
text: item.name, .map(item => ({
id: item.rackId, text: item.name,
})); id: item.rackId,
setTags(arr); }));
setSelected(res.data[0].rackId); setTags(arr);
setSelected(res.data[0].rackId);
} else {
setTags([]);
setSelected(0);
}
} else { } else {
setTags([]); setTags([]);
setSelected(0); setSelected(0);
...@@ -65,20 +70,16 @@ const GoodsGroup = options => { ...@@ -65,20 +70,16 @@ const GoodsGroup = options => {
}; };
// 更换位置 // 更换位置
const changePosition = async (dragIndex, hoverIndex) => { const changePosition = async (dIndex, hIndex) => {
const data = tags.slice(); const data = tags.slice();
const temp = data[dragIndex]; const temp = data[dIndex];
// 交换位置 // 交换位置
data[dragIndex] = data[hoverIndex]; data[dIndex] = data[hIndex];
data[hoverIndex] = temp; data[hIndex] = temp;
setTags(data); setTags(data);
}; };
const endChangePosition = async (dragIndex, hoverIndex) => { const endChangePosition = async () => {
const data = tags.slice(); const data = tags.slice();
const temp = data[dragIndex];
// 交换位置
data[dragIndex] = data[hoverIndex];
data[hoverIndex] = temp;
const storageRankList = data.map((item, i) => ({ const storageRankList = data.map((item, i) => ({
id: item.id, id: item.id,
priority: i + 1, priority: i + 1,
......
import React from 'react'; import React from 'react';
import { Modal, Form, Input } from 'antd'; import { Modal, Form, InputNumber } from 'antd';
import styles from '../../style.less';
const MinimumPurchase = options => { const MinimumPurchase = options => {
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -36,12 +37,9 @@ const MinimumPurchase = options => { ...@@ -36,12 +37,9 @@ const MinimumPurchase = options => {
<Form.Item <Form.Item
label="最少购买/份" label="最少购买/份"
name="minPurchaseNum" name="minPurchaseNum"
rules={[ rules={[{ required: true, message: '请输入最少购买数量!' }]}
{ required: true, message: '请输入最少购买数量!' },
{ min: 1, message: '最小输入1' },
]}
> >
<Input maxLength={6} type="number" /> <InputNumber min={1} max={999999} className={styles.inputWdith} />
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>
......
import React, { useState, useEffect, useCallback, useMemo } from 'react'; import React, { useState, useEffect, useCallback, useMemo } from 'react';
import { Spin, Table, Modal, message, notification } from 'antd'; import { Spin, Table, Pagination, message, notification } from 'antd';
import { unstable_batchedUpdates } from 'react-dom'; import { unstable_batchedUpdates } from 'react-dom';
import { MenuOutlined, HolderOutlined, FormOutlined, CloseCircleOutlined } from '@ant-design/icons'; import { MenuOutlined, HolderOutlined, FormOutlined, CloseCircleOutlined } from '@ant-design/icons';
import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc'; import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc';
...@@ -21,6 +21,9 @@ const Takeaway = options => { ...@@ -21,6 +21,9 @@ const Takeaway = options => {
const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [shopId, setShopId] = useState(0); const [shopId, setShopId] = useState(0);
const [groupId, setGroupId] = useState(0); const [groupId, setGroupId] = useState(0);
const [pageNo, setPageNo] = useState(1);
const [pageSize, setPageSize] = useState(50);
const [total, setTotal] = useState(0);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [actionLoading, setActionLoading] = useState(false); const [actionLoading, setActionLoading] = useState(false);
const [visibleWeekTime, setVisibleWeekTime] = useState(false); const [visibleWeekTime, setVisibleWeekTime] = useState(false);
...@@ -34,12 +37,12 @@ const Takeaway = options => { ...@@ -34,12 +37,12 @@ const Takeaway = options => {
onChange: setSelectedRowKeys, onChange: setSelectedRowKeys,
}; };
const getDataList = async () => { const getDataList = async (page, size) => {
setLoading(true); setLoading(true);
const params = Object.assign({}, options.searchValue, { const params = Object.assign({}, options.searchValue, {
pageNo: 1, pageNo: page || pageNo,
productType: 5, productType: 5,
pageSize: 100000, pageSize: size || pageSize,
storageRackId: groupId, storageRackId: groupId,
}); });
const productCategoryId = options.searchValue?.productCategoryId || []; const productCategoryId = options.searchValue?.productCategoryId || [];
...@@ -49,15 +52,23 @@ const Takeaway = options => { ...@@ -49,15 +52,23 @@ const Takeaway = options => {
setLoading(false); setLoading(false);
if (res && res.data) { if (res && res.data) {
setTableData(res.data.records); setTableData(res.data.records);
setTotal(res.data.total);
} }
}; };
const onPageChange = (page, size) => {
unstable_batchedUpdates(() => {
setPageNo(page);
setPageSize(size);
});
getDataList(page, size);
};
const onSortEnd = async ({ oldIndex, newIndex }) => { const onSortEnd = async ({ oldIndex, newIndex }) => {
if (oldIndex !== newIndex) { if (oldIndex !== newIndex) {
const newData = arrayMoveImmutable(tableData.slice(), oldIndex, newIndex).filter(el => !!el); const newData = arrayMoveImmutable(tableData.slice(), oldIndex, newIndex).filter(el => !!el);
const skuSorts = newData.map((item, index) => ({ const skuSorts = newData.map((item, index) => ({
skuId: item.skuId, skuId: item.skuId,
sort: index + 1, sort: pageSize * pageNo + index + 1,
})); }));
const params = { const params = {
storageRackId: groupId, storageRackId: groupId,
...@@ -98,17 +109,17 @@ const Takeaway = options => { ...@@ -98,17 +109,17 @@ const Takeaway = options => {
}; };
setActionLoading(true); setActionLoading(true);
const res = await apiGoodsActionBatch(Object.assign({}, json, params)); const res = await apiGoodsActionBatch(Object.assign({}, json, params));
unstable_batchedUpdates(() => {
setActionLoading(false);
setVisibleWeekTime(false);
setVisibleStock(false);
setVisibleSwitchGroup(false);
setVisibleBuy(false);
setVisibleSend(false);
});
getDataList();
if (res.businessCode === '0000' && res.code === '0000') { if (res.businessCode === '0000' && res.code === '0000') {
message.success('处理成功!'); message.success('处理成功!');
unstable_batchedUpdates(() => {
setActionLoading(false);
setVisibleWeekTime(false);
setVisibleStock(false);
setVisibleSwitchGroup(false);
setVisibleBuy(false);
setVisibleSend(false);
});
getDataList();
} }
}; };
...@@ -179,7 +190,7 @@ const Takeaway = options => { ...@@ -179,7 +190,7 @@ const Takeaway = options => {
columns={takeawayColumn(actions)} columns={takeawayColumn(actions)}
rowKey={record => record.skuId} rowKey={record => record.skuId}
pagination={false} pagination={false}
scroll={{ x: '100%', y: 1000 }} scroll={{ x: '100%', y: 500 }}
rowSelection={rowSelection} rowSelection={rowSelection}
components={{ components={{
body: { body: {
...@@ -188,6 +199,20 @@ const Takeaway = options => { ...@@ -188,6 +199,20 @@ const Takeaway = options => {
}, },
}} }}
/> />
<br />
{(tableData && (
<Pagination
className={styles['takeawayBox--page']}
onChange={onPageChange}
total={total}
showTotal={o => `共${o}条`}
current={pageNo}
pageSize={pageSize}
showSizeChanger
onShowSizeChange={onPageChange}
/>
)) ||
''}
</Spin> </Spin>
<WeekTime <WeekTime
visible={visibleWeekTime} visible={visibleWeekTime}
......
...@@ -141,6 +141,11 @@ ...@@ -141,6 +141,11 @@
margin-top: 20px; margin-top: 20px;
padding-bottom: 40px; padding-bottom: 40px;
background-color: #fff; background-color: #fff;
&--page {
padding-top: 10px;
padding-left: 30px;
text-align: left;
}
} }
.groupBox { .groupBox {
padding: 0 24px 15px 24px; padding: 0 24px 15px 24px;
...@@ -283,3 +288,6 @@ ...@@ -283,3 +288,6 @@
width: 100%; width: 100%;
} }
} }
.inputWdith {
width: 100%;
}
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