From c8ac5e0ed1d32f1efc24582abaa56e80baf7e1e3 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Thu, 28 Aug 2025 11:11:18 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BA=A7=E5=93=81=E7=AE=A1=E7=90=86:?= =?UTF-8?q?=20=E5=A4=8D=E5=88=B6`=E7=B1=BB=E5=9E=8B`/`=E4=BA=A7=E5=93=81`?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/products/Detail/CopyProducts.jsx | 47 +++++++++++----------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/views/products/Detail/CopyProducts.jsx b/src/views/products/Detail/CopyProducts.jsx index feccf17..8bd4d88 100644 --- a/src/views/products/Detail/CopyProducts.jsx +++ b/src/views/products/Detail/CopyProducts.jsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { App, Form, Modal, DatePicker, Divider, Switch, Space, Flex } from 'antd'; +import { App, Form, Modal, DatePicker, Divider, Switch, Space, Flex, Radio } from 'antd'; import { isEmpty, objectMapper } from '@/utils/commons'; import { useTranslation } from 'react-i18next'; @@ -10,7 +10,7 @@ import dayjs from 'dayjs'; import arraySupport from 'dayjs/plugin/arraySupport'; import { copyAgencyDataAction } from '@/stores/Products/Index'; -import useAuthStore from '@/stores/Auth'; +// import useAuthStore from '@/stores/Auth'; import RequireAuth from '@/components/RequireAuth'; import { PERM_PRODUCTS_MANAGEMENT } from '@/config'; import ProductsSelector from '@/components/ProductsSelector'; @@ -25,17 +25,21 @@ export const CopyProductsForm = ({ action, initialValues, onFormInstanceReady, s sourceYear: use_year, } = source; - const isPermitted = useAuthStore((state) => state.isPermitted); - const [typeDisabled, setTypeDisabled] = useState(false); + // const isPermitted = useAuthStore((state) => state.isPermitted); + const [showTypeOrItem, setShowTypeOrItem] = useState(1); useEffect(() => { onFormInstanceReady(form); }, []); - const onValuesChange = (changeValues, allValues) => {}; + const onValuesChange = (changeValues, allValues) => { + if ('copyType' in changeValues) { + setShowTypeOrItem(changeValues.copyType === 'type' ? 1 : 2); + } + }; return ( -
+
{action === '#' && ( @@ -45,24 +49,15 @@ export const CopyProductsForm = ({ action, initialValues, onFormInstanceReady, s )} - ({ - warningOnly: true, - validator: async () => { - if (!isEmpty(getFieldValue('products_list'))) { - // setTypeDisabled(true); - return Promise.reject(new Error(t(`⚠勾选了复制的产品名称之后 🔽, 将忽略选择的类型 🔼`))); - } - // setTypeDisabled(false); - return Promise.resolve(); - }, - }), - ]}> - + + + + + label={t('products:ProductName')} dependencies={['products_types']} hidden={showTypeOrItem!==2} > {t('products:CopyFormMsg.copyTo')}: @@ -97,7 +92,7 @@ export const CopyProductsForm = ({ action, initialValues, onFormInstanceReady, s
- {() => ( + {() => showTypeOrItem===2 ? (
{!isEmpty(form.getFieldValue('products_list')) && 已选择的产品 预览:} {(form.getFieldValue('products_list') || []).map((item, index) => ( @@ -106,7 +101,7 @@ export const CopyProductsForm = ({ action, initialValues, onFormInstanceReady, s
))} - )} + ) : (<>)}
@@ -160,6 +155,10 @@ export const CopyProductsFormModal = ({ source, action = '#' | 'o', open, onSubm const [copyLoading, setCopyLoading] = useState(false); const handleCopyAgency = async (param) => { param.target_agency = isEmpty(param.target_agency) ? source.sourceAgency.travel_agency_id : param.target_agency; + // 选了产品, 清空类型 + param.products_types = param.copyType === 'item' ? '' : param.products_types; + param.product_id_list = param.copyType === 'type' ? '' : param.product_id_list; + setCopyLoading(true); // debug: // console.log('ready params', param); @@ -198,7 +197,7 @@ export const CopyProductsFormModal = ({ source, action = '#' | 'o', open, onSubm onCancel(); formInstance?.resetFields(); }} - destroyOnClose + destroyOnClose destroyOnHidden onOk={async () => { try { const values = await formInstance?.validateFields();