Merge branch 'main' of github.com:hainatravel/GHHub

main
Ycc 4 weeks ago
commit 3c9e67d4de

@ -1,7 +1,7 @@
{ {
"name": "global-highlights-hub", "name": "global-highlights-hub",
"private": true, "private": true,
"version": "2.2.2", "version": "2.2.5",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

@ -60,6 +60,7 @@ function Management() {
showDisableConfirm(account, checked) showDisableConfirm(account, checked)
}} /> }} />
<Button type='link' key='resetPassword' onClick={() => showResetPasswordConfirm(account)}>{t('account:action.resetPassword')}</Button> <Button type='link' key='resetPassword' onClick={() => showResetPasswordConfirm(account)}>{t('account:action.resetPassword')}</Button>
<Button type='link' key='editAccount' onClick={() => onAccountSeleted(account)}>{t('account:action.edit')}</Button>
</Space> </Space>
) )
} }

@ -1,36 +1,34 @@
import { NavLink, useParams } from 'react-router-dom'; import { useParams } from "react-router-dom";
import { useEffect, useState } from 'react'; import { useEffect, useState } from "react";
import { Row, Col, Space, Typography, Divider } from 'antd'; import { Row, Col, Space, Typography, Divider } from "antd";
import * as comm from '@/utils/commons'; import { fetchNoticeDetail } from "@/stores/Notice";
import { useTranslation } from 'react-i18next'; import BackBtn from "@/components/BackBtn";
import { fetchNoticeDetail } from '@/stores/Notice'; import { usingStorage } from "@/hooks/usingStorage";
import BackBtn from '@/components/BackBtn';
import { usingStorage } from '@/hooks/usingStorage';
const { Title, Paragraph } = Typography; const { Title, Paragraph } = Typography;
function Detail() { function Detail() {
const { t } = useTranslation();
const { CCP_BLID } = useParams(); const { CCP_BLID } = useParams();
const {userId} = usingStorage(); const { userId } = usingStorage();
const [noticeInfo, setNoticeInfo] = useState({}); const [noticeInfo, setNoticeInfo] = useState({});
useEffect(() => { useEffect(() => {
// console.info("notice detail .useEffect " + CCP_BLID);
fetchNoticeDetail(userId, CCP_BLID).then((res) => { fetchNoticeDetail(userId, CCP_BLID).then((res) => {
setNoticeInfo(res); setNoticeInfo(res);
}); });
}, []); }, []);
return ( return (
<Space direction='vertical' style={{ width: '100%' }}> <Space direction="vertical" style={{ width: "100%" }}>
<Row gutter={16}> <Row gutter={16}>
<Col span={4}></Col> <Col span={4}></Col>
<Col span={16}> <Col span={16}>
<Title level={1}>{noticeInfo.CCP_BLTitle}</Title> <Title level={1}>{noticeInfo.CCP_BLTitle}</Title>
<Divider orientation='right'>{noticeInfo.CCP_LastEditTime}</Divider> <Divider orientation="right">{noticeInfo.CCP_LastEditTime}</Divider>
<Paragraph> <Paragraph>
<div dangerouslySetInnerHTML={{ __html: comm.escape2Html(noticeInfo.CCP_BLContent) }}></div> <div className="whitespace-pre-line">
{noticeInfo.CCP_BLContent}
</div>
</Paragraph> </Paragraph>
</Col> </Col>
<Col span={4}> <Col span={4}>

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { App, Form, Input, Row, Col, Select, Button, InputNumber, Checkbox } from 'antd'; import { App, Form, Input, Row, Col, Select, Button, InputNumber, Checkbox } from 'antd';
import { objectMapper, isEmpty, isNotEmpty } from '@/utils/commons'; import { objectMapper, isEmpty, isNotEmpty, pick } from '@/utils/commons';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useWeekdays } from '@/hooks/useDatePresets'; import { useWeekdays } from '@/hooks/useDatePresets';
import DeptSelector from '@/components/DeptSelector'; import DeptSelector from '@/components/DeptSelector';
@ -36,8 +36,13 @@ const InfoForm = ({ onSubmit, onReset, onValuesChange, editablePerm, infoEditabl
const [showSave, setShowSave] = useState(true); const [showSave, setShowSave] = useState(true);
useEffect(() => { useEffect(() => {
form.resetFields(); form.resetFields();
const _formValue = serverData2Form(editingProduct);
form.setFieldsValue(serverData2Form(editingProduct)); const readyFormVal = pick(_formValue, ['quotation', 'lgc_details_mapped','city', 'city_list', 'dept', 'display_to_c', 'sub_type_D'])
// form.setFieldsValue(serverData2Form(editingProduct));
// ! setFieldsValue
for (const _key in readyFormVal) {
form.setFieldValue(_key, readyFormVal[_key])
}
setPickEditedInfo({ ...pickEditedInfo, product_title: editingProduct?.info?.product_title }); setPickEditedInfo({ ...pickEditedInfo, product_title: editingProduct?.info?.product_title });
setFormEditable(infoEditable || priceEditable); setFormEditable(infoEditable || priceEditable);

@ -118,7 +118,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
if (isEmpty(editingProduct)) { if (isEmpty(editingProduct)) {
return () => {}; return () => {};
} }
const allKeysWithCity = [...editingProduct.info.city_list, { id: editingProduct.info.city_id, name: editingProduct.info.city_name }].map( const allKeysWithCity = [...(editingProduct.info?.city_list || []), { id: editingProduct.info.city_id, name: editingProduct.info.city_name }].map(
(city) => `${editingProduct.info.id}-${city.id}` (city) => `${editingProduct.info.id}-${city.id}`
); );
setSelectedKeys(allKeysWithCity); setSelectedKeys(allKeysWithCity);

Loading…
Cancel
Save