Commit 23115b98959c44585ef2d42d363771757bfdf177

Authored by zhongnanhuang
1 parent 20d041c0

feat: update

src/pages/Invoice/components/BankChooseModal.tsx
@@ -175,7 +175,6 @@ export default ({ invoiceId, setVisible, onClose }) => { @@ -175,7 +175,6 @@ export default ({ invoiceId, setVisible, onClose }) => {
175 let i = 0; 175 let i = 0;
176 176
177 let tags = selectedStatement.map((item) => { 177 let tags = selectedStatement.map((item) => {
178 - console.log(item);  
179 let tagText = item.id; 178 let tagText = item.id;
180 179
181 if (item.payeePayerName) { 180 if (item.payeePayerName) {
@@ -206,8 +205,6 @@ export default ({ invoiceId, setVisible, onClose }) => { @@ -206,8 +205,6 @@ export default ({ invoiceId, setVisible, onClose }) => {
206 ); 205 );
207 }); 206 });
208 207
209 - console.log(tags);  
210 -  
211 return tags; 208 return tags;
212 }; 209 };
213 210
src/pages/Invoice/components/BankImportModal.tsx
@@ -36,7 +36,6 @@ export default ({ setVisible, onClose }) => { @@ -36,7 +36,6 @@ export default ({ setVisible, onClose }) => {
36 headers: { Authorization: localStorage.getItem('token') }, 36 headers: { Authorization: localStorage.getItem('token') },
37 }) 37 })
38 .then((response) => { 38 .then((response) => {
39 - console.log(response);  
40 // 创建一个新的 Blob 对象,它包含了服务器响应的数据(即你的 Excel 文件) 39 // 创建一个新的 Blob 对象,它包含了服务器响应的数据(即你的 Excel 文件)
41 const blob = new Blob([response.data]); // Excel 的 MIME 类型 40 const blob = new Blob([response.data]); // Excel 的 MIME 类型
42 const downloadUrl = window.URL.createObjectURL(blob); 41 const downloadUrl = window.URL.createObjectURL(blob);
src/pages/Order/components/KingdeeCustomerModal.tsx
@@ -15,7 +15,6 @@ import { Form, message } from 'antd'; @@ -15,7 +15,6 @@ import { Form, message } from 'antd';
15 // import { cloneDeep } from 'lodash'; 15 // import { cloneDeep } from 'lodash';
16 export default ({ setVisible, data, onClose }) => { 16 export default ({ setVisible, data, onClose }) => {
17 const [form] = Form.useForm(); 17 const [form] = Form.useForm();
18 - console.log(data);  
19 18
20 /** 19 /**
21 * 回显客户信息 20 * 回显客户信息
src/pages/Order/components/OrderDrawer.tsx
@@ -42,6 +42,7 @@ import { @@ -42,6 +42,7 @@ import {
42 PAYMENT_CHANNEL_OPTIONS, 42 PAYMENT_CHANNEL_OPTIONS,
43 PAYMENT_METHOD_OPTIONS, 43 PAYMENT_METHOD_OPTIONS,
44 PRODUCT_BELONG_DEPARTMENT_OPTIONS, 44 PRODUCT_BELONG_DEPARTMENT_OPTIONS,
  45 + SHIPPING_WAREHOUSE_OPTIONS,
45 } from '../constant'; 46 } from '../constant';
46 import KingdeeCustomerModal from './KingdeeCustomerModal'; 47 import KingdeeCustomerModal from './KingdeeCustomerModal';
47 48
@@ -130,7 +131,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -130,7 +131,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
130 includeFlag = true; 131 includeFlag = true;
131 } 132 }
132 } 133 }
133 - console.log(includeFlag); 134 +
134 if (!includeFlag) { 135 if (!includeFlag) {
135 form.resetFields(['salesCode']); 136 form.resetFields(['salesCode']);
136 message.warning('检测到销售代码为旧的,已清空,请重新选择'); 137 message.warning('检测到销售代码为旧的,已清空,请重新选择');
@@ -205,7 +206,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -205,7 +206,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
205 * 回显金蝶信息 206 * 回显金蝶信息
206 */ 207 */
207 async function showKindeeInfo() { 208 async function showKindeeInfo() {
208 - console.log(copyData);  
209 //客户信息 209 //客户信息
210 if (copyData.customerId) { 210 if (copyData.customerId) {
211 //客户回显 211 //客户回显
@@ -242,15 +242,18 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -242,15 +242,18 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
242 } 242 }
243 } 243 }
244 } 244 }
245 - //订单修改和新增的子订单列表命名是list  
246 - copyData.list = copyData.subOrderInformationLists;  
247 //主订单事业部默认显示子订单第一条的事业部 245 //主订单事业部默认显示子订单第一条的事业部
248 - copyData.productBelongBusiness = copyData.list[0].productBelongBusiness;  
249 - copyData.paymentMethod = copyData.list[0].paymentMethod;  
250 - copyData.paymentChannel = copyData.list[0].paymentChannel;  
251 - copyData.invoicingStatus = copyData.list[0].invoicingStatus;  
252 -  
253 - copyData.list = copyData.list?.map((item) => { 246 + copyData.productBelongBusiness =
  247 + copyData.subOrderInformationLists[0].productBelongBusiness;
  248 + copyData.paymentMethod =
  249 + copyData.subOrderInformationLists[0].paymentMethod;
  250 + copyData.paymentChannel =
  251 + copyData.subOrderInformationLists[0].paymentChannel;
  252 + copyData.invoicingStatus =
  253 + copyData.subOrderInformationLists[0].invoicingStatus;
  254 +
  255 + //子订单数据处理:子订单在表单中的命名为list
  256 + let newList = copyData.subOrderInformationLists?.map((item) => {
254 item.filePaths = item.listAnnex?.map((path) => { 257 item.filePaths = item.listAnnex?.map((path) => {
255 let i = 0; 258 let i = 0;
256 return { 259 return {
@@ -263,23 +266,32 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -263,23 +266,32 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
263 }); 266 });
264 return item; 267 return item;
265 }); 268 });
266 - }  
267 269
268 - if (subOrders !== undefined && subOrders.length > 0) {  
269 - copyData.list = subOrders;  
270 - } 270 + copyData.list = newList;
271 271
272 - setInvoicingStatus(copyData.invoicingStatus); 272 + if (subOrders !== undefined && subOrders.length > 0) {
  273 + copyData.list = subOrders;
  274 + }
273 275
274 - form.setFieldsValue({ ...copyData });  
275 - //如果是新建,需要清空list  
276 - if (optType('add')) {  
277 - form.resetFields(['list']);  
278 - } 276 + //发货仓库处理
  277 + for (let listItem of copyData.list) {
  278 + if (listItem.shippingWarehouse === null) {
  279 + listItem.shippingWarehouse = 'DALANG_WAREHOUSE';
  280 + }
  281 + }
279 282
280 - getSalesCodeOptions();  
281 - if (!optType('after-sales-check')) {  
282 - showKindeeInfo(); 283 + setInvoicingStatus(copyData.invoicingStatus);
  284 +
  285 + form.setFieldsValue({ ...copyData });
  286 +
  287 + //如果是新建,需要清空list
  288 + if (optType('add')) {
  289 + form.resetFields(['list']);
  290 + }
  291 +
  292 + if (!optType('after-sales-check')) {
  293 + showKindeeInfo();
  294 + }
283 } 295 }
284 } 296 }
285 297
@@ -357,6 +369,23 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -357,6 +369,23 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
357 }, [data]); 369 }, [data]);
358 370
359 /** 371 /**
  372 + * 所属部门修改事件
  373 + * 如果选择实验耗材事业部,那么发货仓库默认是大朗仓库
  374 + * @param val
  375 + */
  376 + function productBelongBusinessChange(val: any, index: any) {
  377 + if (val === 'EXPERIMENTAL_CONSUMABLES') {
  378 + let list = form.getFieldValue('list');
  379 + let currentData = list[index];
  380 + if (currentData) {
  381 + currentData.shippingWarehouse = 'DALANG_WAREHOUSE';
  382 + form.setFieldValue('list', list);
  383 + message.info('已默认选择大朗仓库');
  384 + }
  385 + }
  386 + }
  387 +
  388 + /**
360 * 389 *
361 * @param option 商品名称所对应的商品数据 390 * @param option 商品名称所对应的商品数据
362 * @param currentRowData list中当前行的数据 391 * @param currentRowData list中当前行的数据
@@ -471,7 +500,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -471,7 +500,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
471 * @param option 500 * @param option
472 */ 501 */
473 function autoFillSalesInfo(option: any) { 502 function autoFillSalesInfo(option: any) {
474 - console.log(option);  
475 //销售代表对应职员编码填充 503 //销售代表对应职员编码填充
476 form.setFieldValue('empNumber', option.number); 504 form.setFieldValue('empNumber', option.number);
477 } 505 }
@@ -540,6 +568,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -540,6 +568,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
540 }; 568 };
541 569
542 useEffect(() => { 570 useEffect(() => {
  571 + getSalesCodeOptions();
543 if (optType('after-sales-check')) { 572 if (optType('after-sales-check')) {
544 getOldOrderData(data.id); 573 getOldOrderData(data.id);
545 } else { 574 } else {
@@ -605,7 +634,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -605,7 +634,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
605 // console.log(list); 634 // console.log(list);
606 list = list.map((item) => { 635 list = list.map((item) => {
607 item.filePaths = item.filePaths?.map((file) => { 636 item.filePaths = item.filePaths?.map((file) => {
608 - console.log(file);  
609 return { url: file.response.data[0] }; 637 return { url: file.response.data[0] };
610 }); 638 });
611 return item; 639 return item;
@@ -856,7 +884,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -856,7 +884,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
856 }); 884 });
857 } 885 }
858 886
859 - console.log(options);  
860 return options; 887 return options;
861 }} 888 }}
862 /> 889 />
@@ -1304,10 +1331,22 @@ export default ({ onClose, data, subOrders, orderOptType }) => { @@ -1304,10 +1331,22 @@ export default ({ onClose, data, subOrders, orderOptType }) => {
1304 width="lg" 1331 width="lg"
1305 label="所属事业部" 1332 label="所属事业部"
1306 options={enumToSelect(PRODUCT_BELONG_DEPARTMENT_OPTIONS)} 1333 options={enumToSelect(PRODUCT_BELONG_DEPARTMENT_OPTIONS)}
  1334 + onChange={(val: any) => {
  1335 + productBelongBusinessChange(val, listMeta.index);
  1336 + }}
1307 initialValue={'EXPERIMENTAL_CONSUMABLES'} 1337 initialValue={'EXPERIMENTAL_CONSUMABLES'}
1308 rules={[{ required: true, message: '所属事业部必填' }]} 1338 rules={[{ required: true, message: '所属事业部必填' }]}
1309 disabled={optType('after-sales-check')} 1339 disabled={optType('after-sales-check')}
1310 />, 1340 />,
  1341 + <ProFormSelect
  1342 + key={'shippingWarehouse' + listMeta.index}
  1343 + placeholder="请选择发货仓库"
  1344 + name="shippingWarehouse"
  1345 + width="lg"
  1346 + label="发货仓库"
  1347 + options={enumToSelect(SHIPPING_WAREHOUSE_OPTIONS)}
  1348 + disabled={optType('after-sales-check')}
  1349 + />,
1311 <ProFormTextArea 1350 <ProFormTextArea
1312 key={'notes' + listMeta.index} 1351 key={'notes' + listMeta.index}
1313 width="lg" 1352 width="lg"
src/pages/Order/components/ShippingWarehouseChangeModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import { postServiceOrderShippingWarehouseChange } from '@/services';
  3 +import { enumToSelect } from '@/utils';
  4 +import { ModalForm, ProFormSelect } from '@ant-design/pro-components';
  5 +import { Form, message } from 'antd';
  6 +import { SHIPPING_WAREHOUSE_OPTIONS } from '../constant';
  7 +
  8 +export default ({
  9 + setVisible,
  10 + subOrderIds,
  11 + originShippingWarehouse,
  12 + onClose,
  13 +}) => {
  14 + const [form] = Form.useForm<{ shippingWarehouse: string }>();
  15 +
  16 + let newOriginShippingWarehouse = originShippingWarehouse;
  17 + if (
  18 + originShippingWarehouse === null ||
  19 + originShippingWarehouse === undefined
  20 + ) {
  21 + newOriginShippingWarehouse = 'DALANG_WAREHOUSE';
  22 + }
  23 + return (
  24 + <>
  25 + <ModalForm<{
  26 + shippingWarehouse: string;
  27 + }>
  28 + width={500}
  29 + open
  30 + title="修改发货仓库"
  31 + form={form}
  32 + autoFocusFirstInput
  33 + modalProps={{
  34 + okText: '保存',
  35 + cancelText: '取消',
  36 + destroyOnClose: true,
  37 + onCancel: () => {
  38 + setVisible(false);
  39 + },
  40 + }}
  41 + onFinish={async (values) => {
  42 + let res = await postServiceOrderShippingWarehouseChange({
  43 + data: {
  44 + ...values,
  45 + ids: subOrderIds,
  46 + },
  47 + });
  48 +
  49 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  50 + message.success(res.message);
  51 + }
  52 + onClose();
  53 + }}
  54 + onOpenChange={setVisible}
  55 + >
  56 + <ProFormSelect
  57 + key={'shippingWarehouse'}
  58 + placeholder="请选择发货仓库"
  59 + name="shippingWarehouse"
  60 + width="lg"
  61 + label="发货仓库"
  62 + rules={[{ required: true, message: '发货仓库必填' }]}
  63 + initialValue={newOriginShippingWarehouse}
  64 + options={enumToSelect(SHIPPING_WAREHOUSE_OPTIONS)}
  65 + />
  66 + ,
  67 + </ModalForm>
  68 + </>
  69 + );
  70 +};
src/pages/Order/constant.ts
@@ -37,6 +37,11 @@ export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { @@ -37,6 +37,11 @@ export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = {
37 CLAMPING_APPARATUS: '工夹具事业部', 37 CLAMPING_APPARATUS: '工夹具事业部',
38 }; 38 };
39 39
  40 +export const SHIPPING_WAREHOUSE_OPTIONS = {
  41 + DALANG_WAREHOUSE: '大朗仓库',
  42 + HOUJIE_WAREHOUSE: '厚街仓库',
  43 +};
  44 +
40 export const INVOCING_STATUS_OPTIONS_OLD = { 45 export const INVOCING_STATUS_OPTIONS_OLD = {
41 UN_INVOICE: '不需开票', 46 UN_INVOICE: '不需开票',
42 SPECIALLY_INVOICED: '专票', 47 SPECIALLY_INVOICED: '专票',
@@ -522,6 +527,12 @@ export const MAIN_ORDER_COLUMNS = [ @@ -522,6 +527,12 @@ export const MAIN_ORDER_COLUMNS = [
522 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS), 527 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS),
523 }, 528 },
524 { 529 {
  530 + title: '发票号码',
  531 + dataIndex: 'invoiceNumberLike',
  532 + valueType: 'text',
  533 + hideInTable: true,
  534 + },
  535 + {
525 title: '付款公司', 536 title: '付款公司',
526 dataIndex: 'receivingCompany', 537 dataIndex: 'receivingCompany',
527 valueType: 'select', 538 valueType: 'select',
src/pages/Order/index.tsx
@@ -7,6 +7,7 @@ import { @@ -7,6 +7,7 @@ import {
7 postServiceOrderOrderCancel, 7 postServiceOrderOrderCancel,
8 postServiceOrderProcureOrder, 8 postServiceOrderProcureOrder,
9 postServiceOrderProcurePrint, 9 postServiceOrderProcurePrint,
  10 + postServiceOrderProvideProcurementRoles,
10 postServiceOrderQueryServiceOrder, 11 postServiceOrderQueryServiceOrder,
11 postServiceOrderSaleCancelInvoicing, 12 postServiceOrderSaleCancelInvoicing,
12 } from '@/services'; 13 } from '@/services';
@@ -73,6 +74,7 @@ import OrderDrawer from &#39;./components/OrderDrawer&#39;; @@ -73,6 +74,7 @@ import OrderDrawer from &#39;./components/OrderDrawer&#39;;
73 import OrderNotesEditModal from './components/OrderNotesEditModal'; 74 import OrderNotesEditModal from './components/OrderNotesEditModal';
74 import ProcureCheckModal from './components/ProcureCheckModal'; 75 import ProcureCheckModal from './components/ProcureCheckModal';
75 import ProcureConvertModal from './components/ProcureConvertModal'; 76 import ProcureConvertModal from './components/ProcureConvertModal';
  77 +import ShippingWarehouseChangeModal from './components/ShippingWarehouseChangeModal';
76 import SubOrderComfirmReceiptImagesModal from './components/SubOrderComfirmReceiptImagesModal'; 78 import SubOrderComfirmReceiptImagesModal from './components/SubOrderComfirmReceiptImagesModal';
77 import { 79 import {
78 AFTER_INVOICING_STATUS, 80 AFTER_INVOICING_STATUS,
@@ -86,6 +88,7 @@ import { @@ -86,6 +88,7 @@ import {
86 PROCURE_ORDER_STATUS, 88 PROCURE_ORDER_STATUS,
87 PROCURE_PRIMARY_ORDER_STATUS_OPTIONS, 89 PROCURE_PRIMARY_ORDER_STATUS_OPTIONS,
88 PRODUCT_BELONG_DEPARTMENT_OPTIONS, 90 PRODUCT_BELONG_DEPARTMENT_OPTIONS,
  91 + SHIPPING_WAREHOUSE_OPTIONS,
89 TAGS_COLOR, 92 TAGS_COLOR,
90 getInvoicingType, 93 getInvoicingType,
91 getNeedInvoicing, 94 getNeedInvoicing,
@@ -150,12 +153,18 @@ const OrderPage = () =&gt; { @@ -150,12 +153,18 @@ const OrderPage = () =&gt; {
150 const [currentPage, setCurrentPage] = useState(1); 153 const [currentPage, setCurrentPage] = useState(1);
151 const [orderCheckType, setOrderCheckType] = useState(''); 154 const [orderCheckType, setOrderCheckType] = useState('');
152 const [filterCondifion, setFilterCondition] = useState(0); 155 const [filterCondifion, setFilterCondition] = useState(0);
153 - const [mainOrderSelectedMap] = useState(new Map()); //选中的主订单Map 156 + const [mainOrderSelectedMap] = useState(new Map()); //选中的主订单Map key:主订单id value:主订单数据
  157 + const [subOrderSelectedMap] = useState(new Map()); //选中的子订单Map key:主订单id value:选中的子订单数据集合
154 const [mainOrderSelectedRows, setMainOrderSelectedRows] = useState([]); //选中的主订单集合 158 const [mainOrderSelectedRows, setMainOrderSelectedRows] = useState([]); //选中的主订单集合
155 const mainTableRef = useRef<ActionType>(); 159 const mainTableRef = useRef<ActionType>();
156 const mainTableFormRef = useRef<ProFormInstance>(); 160 const mainTableFormRef = useRef<ProFormInstance>();
157 let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储 161 let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储
158 const [messageApi, contextHolder] = message.useMessage(); 162 const [messageApi, contextHolder] = message.useMessage();
  163 + const [
  164 + shippingWarehouseChangeModalVisible,
  165 + setShippingWarehouseChangeModalVisible,
  166 + ] = useState(false);
  167 + const [ids, setIds] = useState([]);
159 const roleCode = userInfo?.roleSmallVO?.code; 168 const roleCode = userInfo?.roleSmallVO?.code;
160 169
161 // const openCheckNotes = (checkNotes: string) => { 170 // const openCheckNotes = (checkNotes: string) => {
@@ -308,11 +317,11 @@ const OrderPage = () =&gt; { @@ -308,11 +317,11 @@ const OrderPage = () =&gt; {
308 } 317 }
309 318
310 const onCheckboxChange = (record: never) => { 319 const onCheckboxChange = (record: never) => {
  320 + console.log(subOrderSelectedMap);
311 let newSelectedItems = []; 321 let newSelectedItems = [];
312 if (selectedItems.includes(record.id)) { 322 if (selectedItems.includes(record.id)) {
313 newSelectedItems = selectedItems.filter((key) => key !== record.id); 323 newSelectedItems = selectedItems.filter((key) => key !== record.id);
314 setSelectedRowKeys([]); 324 setSelectedRowKeys([]);
315 - console.log(selectedRowObj);  
316 setSelectedRowObj({ 325 setSelectedRowObj({
317 ...setSelectedRowObj, 326 ...setSelectedRowObj,
318 [record.id]: [], 327 [record.id]: [],
@@ -743,6 +752,26 @@ const OrderPage = () =&gt; { @@ -743,6 +752,26 @@ const OrderPage = () =&gt; {
743 ) : ( 752 ) : (
744 '' 753 ''
745 )} 754 )}
  755 +
  756 + {(roleCode === 'warehouseKeeper' || roleCode === 'admin') &&
  757 + optRecord.shippingWarehouse !== null ? (
  758 + <div
  759 + className="overflow-hidden whitespace-no-wrap overflow-ellipsis"
  760 + title={enumValueToLabel(
  761 + optRecord.shippingWarehouse,
  762 + SHIPPING_WAREHOUSE_OPTIONS,
  763 + )}
  764 + >
  765 + <span className="text-slate-700">
  766 + {enumValueToLabel(
  767 + optRecord.shippingWarehouse,
  768 + SHIPPING_WAREHOUSE_OPTIONS,
  769 + )}
  770 + </span>
  771 + </div>
  772 + ) : (
  773 + ''
  774 + )}
746 </Flex> 775 </Flex>
747 776
748 <Flex className="w-[10%]" vertical gap="small"> 777 <Flex className="w-[10%]" vertical gap="small">
@@ -827,6 +856,22 @@ const OrderPage = () =&gt; { @@ -827,6 +856,22 @@ const OrderPage = () =&gt; {
827 '' 856 ''
828 )} 857 )}
829 858
  859 + {optRecord.subPath?.includes('shippingWarehouseChangeRequest') ? (
  860 + <Button
  861 + className="p-0"
  862 + type="link"
  863 + onClick={() => {
  864 + setIds([optRecord.id]);
  865 + setOrderRow(optRecord);
  866 + setShippingWarehouseChangeModalVisible(true);
  867 + }}
  868 + >
  869 + 修改仓库
  870 + </Button>
  871 + ) : (
  872 + ''
  873 + )}
  874 +
830 {optRecord.subPath?.includes('saleCancelInvoicing') ? ( 875 {optRecord.subPath?.includes('saleCancelInvoicing') ? (
831 <ButtonConfirm 876 <ButtonConfirm
832 className="p-0" 877 className="p-0"
@@ -2458,6 +2503,40 @@ const OrderPage = () =&gt; { @@ -2458,6 +2503,40 @@ const OrderPage = () =&gt; {
2458 }); 2503 });
2459 } 2504 }
2460 2505
  2506 + /**
  2507 + * 采购可以筛选其他采购
  2508 + */
  2509 + if (roleCode === 'procure' || roleCode === 'admin') {
  2510 + mainOrdersColumns.push({
  2511 + title: '采购名称',
  2512 + width: 120,
  2513 + dataIndex: 'supplierName',
  2514 + valueType: 'select',
  2515 + request: async () => {
  2516 + const res = await postServiceOrderProvideProcurementRoles();
  2517 + let options = res.data?.map((item) => {
  2518 + return { label: item, value: item };
  2519 + });
  2520 + return options;
  2521 + },
  2522 + hideInTable: true,
  2523 + });
  2524 + }
  2525 +
  2526 + /**
  2527 + * 仓库可以筛选发货仓库
  2528 + */
  2529 + if (roleCode === 'warehouseKeeper' || roleCode === 'admin') {
  2530 + mainOrdersColumns.push({
  2531 + title: '发货仓库',
  2532 + width: 120,
  2533 + dataIndex: 'shippingWarehouse',
  2534 + valueType: 'select',
  2535 + valueEnum: enumToProTableEnumValue(SHIPPING_WAREHOUSE_OPTIONS),
  2536 + hideInTable: true,
  2537 + });
  2538 + }
  2539 +
2461 //判断是否是采购,是的话新增一个筛选条件 2540 //判断是否是采购,是的话新增一个筛选条件
2462 if (roleCode === 'procure' || roleCode === 'admin') { 2541 if (roleCode === 'procure' || roleCode === 'admin') {
2463 mainOrdersColumns.push({ 2542 mainOrdersColumns.push({
@@ -2731,7 +2810,6 @@ const OrderPage = () =&gt; { @@ -2731,7 +2810,6 @@ const OrderPage = () =&gt; {
2731 // </Button>, 2810 // </Button>,
2732 // ); 2811 // );
2733 2812
2734 - console.log(toolBtns);  
2735 return toolBtns; 2813 return toolBtns;
2736 } 2814 }
2737 2815
@@ -3150,6 +3228,20 @@ const OrderPage = () =&gt; { @@ -3150,6 +3228,20 @@ const OrderPage = () =&gt; {
3150 /> 3228 />
3151 )} 3229 )}
3152 3230
  3231 + {shippingWarehouseChangeModalVisible && (
  3232 + <ShippingWarehouseChangeModal
  3233 + setVisible={setShippingWarehouseChangeModalVisible}
  3234 + subOrderIds={ids}
  3235 + originShippingWarehouse={orderRow?.shippingWarehouse}
  3236 + onClose={() => {
  3237 + setShippingWarehouseChangeModalVisible(false);
  3238 + setOrderRow({});
  3239 + setIds([]);
  3240 + refreshTable();
  3241 + }}
  3242 + />
  3243 + )}
  3244 +
3153 {contextHolder} 3245 {contextHolder}
3154 </PageContainer> 3246 </PageContainer>
3155 ); 3247 );
src/services/definition.ts
@@ -1458,6 +1458,11 @@ export interface ServerResult { @@ -1458,6 +1458,11 @@ export interface ServerResult {
1458 result?: number; 1458 result?: number;
1459 } 1459 }
1460 1460
  1461 +export interface ShippingWarehouseChangeDto {
  1462 + ids?: Array<number>;
  1463 + shippingWarehouse?: string;
  1464 +}
  1465 +
1461 export interface SysLogQueryVO { 1466 export interface SysLogQueryVO {
1462 address?: string; 1467 address?: string;
1463 browser?: string; 1468 browser?: string;
src/services/request.ts
@@ -63,6 +63,7 @@ import type { @@ -63,6 +63,7 @@ import type {
63 SalOrderSaveDto, 63 SalOrderSaveDto,
64 SaveReply, 64 SaveReply,
65 ServerResult, 65 ServerResult,
  66 + ShippingWarehouseChangeDto,
66 SysLogQueryVO, 67 SysLogQueryVO,
67 SystemCustomFieldReq, 68 SystemCustomFieldReq,
68 UnitMaterialUnitListReq, 69 UnitMaterialUnitListReq,
@@ -9520,6 +9521,77 @@ export const postServiceOrderSendProduct = /* #__PURE__ */ (() =&gt; { @@ -9520,6 +9521,77 @@ export const postServiceOrderSendProduct = /* #__PURE__ */ (() =&gt; {
9520 return request; 9521 return request;
9521 })(); 9522 })();
9522 9523
  9524 +/** @description request parameter type for postServiceOrderShippingWarehouseChange */
  9525 +export interface PostServiceOrderShippingWarehouseChangeOption {
  9526 + /**
  9527 + * @description
  9528 + * dto
  9529 + */
  9530 + body: {
  9531 + /**
  9532 + @description
  9533 + dto */
  9534 + dto: ShippingWarehouseChangeDto;
  9535 + };
  9536 +}
  9537 +
  9538 +/** @description response type for postServiceOrderShippingWarehouseChange */
  9539 +export interface PostServiceOrderShippingWarehouseChangeResponse {
  9540 + /**
  9541 + * @description
  9542 + * OK
  9543 + */
  9544 + 200: ServerResult;
  9545 + /**
  9546 + * @description
  9547 + * Created
  9548 + */
  9549 + 201: any;
  9550 + /**
  9551 + * @description
  9552 + * Unauthorized
  9553 + */
  9554 + 401: any;
  9555 + /**
  9556 + * @description
  9557 + * Forbidden
  9558 + */
  9559 + 403: any;
  9560 + /**
  9561 + * @description
  9562 + * Not Found
  9563 + */
  9564 + 404: any;
  9565 +}
  9566 +
  9567 +export type PostServiceOrderShippingWarehouseChangeResponseSuccess =
  9568 + PostServiceOrderShippingWarehouseChangeResponse[200];
  9569 +/**
  9570 + * @description
  9571 + * 修改发货仓库
  9572 + * @tags 内部订单
  9573 + * @produces *
  9574 + * @consumes application/json
  9575 + */
  9576 +export const postServiceOrderShippingWarehouseChange = /* #__PURE__ */ (() => {
  9577 + const method = 'post';
  9578 + const url = '/service/order/shippingWarehouseChange';
  9579 + function request(
  9580 + option: PostServiceOrderShippingWarehouseChangeOption,
  9581 + ): Promise<PostServiceOrderShippingWarehouseChangeResponseSuccess> {
  9582 + return requester(request.url, {
  9583 + method: request.method,
  9584 + ...option,
  9585 + }) as unknown as Promise<PostServiceOrderShippingWarehouseChangeResponseSuccess>;
  9586 + }
  9587 +
  9588 + /** http method */
  9589 + request.method = method;
  9590 + /** request url */
  9591 + request.url = url;
  9592 + return request;
  9593 +})();
  9594 +
9523 /** @description request parameter type for postServiceOrderSupplierPrint */ 9595 /** @description request parameter type for postServiceOrderSupplierPrint */
9524 export interface PostServiceOrderSupplierPrintOption { 9596 export interface PostServiceOrderSupplierPrintOption {
9525 /** 9597 /**