优化显示界面,多语种逻辑

feature/price_manager
黄文强@HWQ-PC 1 year ago
parent 40e8d97aa8
commit 90f84fa874

@ -3,40 +3,51 @@ import { Button, Card, Col, Row, Breadcrumb, Table, Popconfirm, Form, Input, Inp
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import DateComponent from '@/components/date'; import DateComponent from '@/components/date';
import { fetchJSON } from "@/utils/request";
import { type } from 'windicss/utils';
import { searchAgencyAction, getAgencyProductsAction } from '@/stores/Products/Index'; import { searchAgencyAction, getAgencyProductsAction } from '@/stores/Products/Index';
import { useProductsTypes } from '@/hooks/useProductsSets'; import { useProductsTypes } from '@/hooks/useProductsSets';
import Extras from './Detail/Extras'; import Extras from './Detail/Extras';
import { groupBy } from '@/utils/commons'; import { groupBy } from '@/utils/commons';
import { useParams } from 'react-router-dom'; import { useParams } from 'react-router-dom';
import { useHTLanguageSets } from '@/hooks/useHTLanguageSets'; import { useHTLanguageSets } from '@/hooks/useHTLanguageSets';
// import { useDefaultLgc } from '@/i18n/LanguageSwitcher'; import { useDefaultLgc } from '@/i18n/LanguageSwitcher';
function Index() { function Index() {
const { t } = useTranslation(); const { t } = useTranslation();
const [form] = Form.useForm(); const [form] = Form.useForm();
const [editingid, setEditingid] = useState(''); const [editingid, setEditingid] = useState('');
const [tags, setTags] = useState(['中文', 'English']); const [tags, setTags] = useState([]);
const [isModalVisible, setIsModalVisible] = useState(false); const [isModalVisible, setIsModalVisible] = useState(false);
const [selectedTag, setSelectedTag] = useState(2); const [selectedTag, setSelectedTag] = useState(null);
const [saveData, setSaveData] = useState(null); const [saveData, setSaveData] = useState(null);
const [datePickerVisible, setDatePickerVisible] = useState(false); const [datePickerVisible, setDatePickerVisible] = useState(false);
const [currentid, setCurrentid] = useState(null); const [currentid, setCurrentid] = useState(null);
const [languageStatus, setLanguageStatus] = useState([{ "中文": { title: "", description: "" } }, { "English": { title: "", description: "" } }]); const [languageStatus, setLanguageStatus] = useState(null);
const [selectedNodeid, setSelectedNodeid] = useState(null); const [selectedNodeid, setSelectedNodeid] = useState(null);
const [remainderLanguage, setRemainderLanguage] = useState([])
const [selectedDateData, setSelectedDateData] = useState({ dateRange: null, selectedDays: [] }); const [selectedDateData, setSelectedDateData] = useState({ dateRange: null, selectedDays: [] });
const [treeData1, setTreeData1] = useState([]); const [treeData1, setTreeData1] = useState([]);
const productsTypes = useProductsTypes(); const productsTypes = useProductsTypes();
const [productsData, setProductsData] = useState(null); const [productsData, setProductsData] = useState(null);
const [quotation, setQuotation] = useState(null); const [quotation, setQuotation] = useState(null);
const [lgc_details,setLgc_details] = useState(null); const [lgc_details,setLgc_details] = useState(null);
const [languageLabel,setLanguageLabel] = useState(null);
const { travel_agency_id } = useParams(); const { travel_agency_id } = useParams();
const {language} = useDefaultLgc();
const HTLanguageSets = useHTLanguageSets();
useEffect(() => {
setLanguageStatus(language);
const matchedLanguage = HTLanguageSets.find(HTLanguage => HTLanguage.key === language.toString());
const languageLabel = matchedLanguage.label
// setTags([languageLabel])
setLanguageLabel(languageLabel)
setRemainderLanguage(HTLanguageSets.filter(item => item.key !== language.toString()))
}, []);
const fetchData = async () => { const fetchData = async () => {
const a = { travel_agency_id }; const a = { travel_agency_id };
const res = await getAgencyProductsAction(a); const res = await getAgencyProductsAction(a);
const groupedProducts = groupBy(res.products, (row) => row.info.product_type_id); const groupedProducts = groupBy(res.products, (row) => row.info.product_type_id);
const generateTreeData = (productsTypes, productsData) => { const generateTreeData = (productsTypes, productsData) => {
@ -54,8 +65,6 @@ function Index() {
const treeData = generateTreeData(productsTypes, groupedProducts); const treeData = generateTreeData(productsTypes, groupedProducts);
setProductsData(groupedProducts); setProductsData(groupedProducts);
setTreeData1(treeData); setTreeData1(treeData);
console.log("setTreeData1", treeData);
}; };
@ -317,48 +326,68 @@ function Index() {
const handleTagClick = (tag) => { const handleTagClick = (tag) => {
setSelectedTag(tag); setSelectedTag(tag);
console.log("handleTagClick",tag) const matchedLanguage = HTLanguageSets.find(language => language.label === tag);
// form.setFieldsValue({ const key = matchedLanguage ? matchedLanguage.key : null;
form.setFieldsValue({
// }) lgc_details: {
title: lgc_details[key] ? lgc_details[key].title : '',
descriptions: lgc_details[key] ? lgc_details[key].descriptions : ''
}
});
setLanguageStatus(key)
}; };
const showModal = () => setIsModalVisible(true); const showModal = () => setIsModalVisible(true);
const handleOk = () => setIsModalVisible(false); const handleOk = () => {
setTags([...tags,selectedTag])
console.log("handleOkvalue")
setIsModalVisible(false);
}
const handleCancel = () => setIsModalVisible(false); const handleCancel = () => setIsModalVisible(false);
const handleTagChange = (value) => { const handleTagChange = (value) => {
if (!tags.includes(value)) { console.log("handleTagChange",value)
setTags([...tags, value]);
setLanguageStatus([...languageStatus, { [value]: { title: "", description: "" } }]);
}
setSelectedTag(value); setSelectedTag(value);
setIsModalVisible(false); console.log("setSelectedTag",selectedTag)
// setLanguageStatus()
// if (!tags.includes(value)) {
// setTags([...tags, value]);
// setLanguageStatus([...languageStatus, { [value]: { title: "", descriptions: "" } }]);
// }
// setSelectedTag(value);
// setIsModalVisible(false);
}; };
const handleChange = (field, value) => { const handleChange = (field, value) => {
const updatedLanguageStatus = languageStatus.map(lang => { console.log("languageStatus",languageStatus)
if (lang[selectedTag]) { console.log("...lgc_details[languageStatus]",{...lgc_details[languageStatus]})
return { ...lang, [selectedTag]: { ...lang[selectedTag], [field]: value } }; // lgc_details
} const updatedLgcDetails = {
return lang; ...lgc_details,
}); [languageStatus]:{...lgc_details[languageStatus],[field]: value,lgc:languageStatus}
setLanguageStatus(updatedLanguageStatus); };
setLgc_details(updatedLgcDetails)
console.log("AAAAAAAAAAAAAA", lgc_details);
}; };
const findLanguageDetails = (tag) => { const findLanguageDetails = (tag) => {
const lang = languageStatus.find(lang => lang[tag]); const lang = languageStatus.find(lang => lang[tag]);
return lang ? lang[tag] : { title: "", description: "" }; return lang ? lang[tag] : { title: "", descriptions: "" };
}; };
// //
const handleNodeSelect = (_, { node }) => { const handleNodeSelect = (_, { node }) => {
setTags([languageLabel])
// //
if (selectedNodeid === node.key) return; if (selectedNodeid === node.key) return;
@ -374,8 +403,6 @@ function Index() {
return true; return true;
} }
}); });
console.log("info",infoData)
// lgc_details // lgc_details
let newLgcDetails = {}; let newLgcDetails = {};
@ -388,8 +415,8 @@ function Index() {
setQuotation(initialQuotationData); setQuotation(initialQuotationData);
console.log("descriptions",lgc_details)
// 使 setTimeout lgc_details // 使 setTimeout lgc_details
// setTimeout(() => {
form.setFieldsValue({ form.setFieldsValue({
info: { info: {
title: infoData.title, title: infoData.title,
@ -402,11 +429,10 @@ function Index() {
unit_name: infoData.unit_name unit_name: infoData.unit_name
}, },
lgc_details: { lgc_details: {
title: newLgcDetails[selectedTag]?.title || '', title: newLgcDetails[language]?.title || '',
descriptions: newLgcDetails[selectedTag]?.descriptions || '' descriptions: newLgcDetails[language]?.descriptions || ''
} }
}); });
// }, 0);
}; };
@ -649,28 +675,28 @@ function Index() {
placeholder="选择语言" placeholder="选择语言"
optionFilterProp="children" optionFilterProp="children"
onChange={handleTagChange} onChange={handleTagChange}
filterOption={(input, option) =>
option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
> >
<Select.Option value="Français">Français</Select.Option>
<Select.Option value="Español">Español</Select.Option> {
<Select.Option value="Deutsch">Deutsch</Select.Option> remainderLanguage.map((value, label) => (
<Select.Option key={value.label} value={value.label}>
{value.label}
</Select.Option>
))
}
</Select> </Select>
</Modal> </Modal>
<Form.Item label={t('products:Name')} name={['lgc_details', 'title']}> <Form.Item label={t('products:Name')} name={['lgc_details', 'title']}>
<Input <Input
style={{ width: "30%" }} style={{ width: "30%" }}
// value={findLanguageDetails(selectedTag).title} onChange={(e) => handleChange('title', e.target.value)}
// onChange={(e) => handleChange('title', e.target.value)}
/> />
</Form.Item> </Form.Item>
<Form.Item label={t('products:Description')} name={['lgc_details', 'descriptions']}> <Form.Item label={t('products:Description')} name={['lgc_details', 'descriptions']}>
<Input.TextArea <Input.TextArea
rows={4} rows={4}
// value={findLanguageDetails(selectedTag).description} onChange={(e) => handleChange('descriptions', e.target.value)}
// onChange={(e) => handleChange('description', e.target.value)}
/> />
</Form.Item> </Form.Item>
</Card> </Card>

Loading…
Cancel
Save