|
|
@ -45,9 +45,28 @@ const ProductInfo = ({ ...props }) => {
|
|
|
|
|
|
|
|
|
|
|
|
const showExtras = topPerm && hasHT; // !isEmpty(editingProduct) &&
|
|
|
|
const showExtras = topPerm && hasHT; // !isEmpty(editingProduct) &&
|
|
|
|
setExtrasVisible(showExtras);
|
|
|
|
setExtrasVisible(showExtras);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setLgcEdits({});
|
|
|
|
|
|
|
|
setInfoEditStatus('');
|
|
|
|
return () => {};
|
|
|
|
return () => {};
|
|
|
|
}, [activeAgency, editingProduct]);
|
|
|
|
}, [activeAgency, editingProduct]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const [infoEditStatus, setInfoEditStatus] = useState('');
|
|
|
|
|
|
|
|
const [lgcEdits, setLgcEdits] = useState({});
|
|
|
|
|
|
|
|
const onValuesChange = (changedValues, forms) => {
|
|
|
|
|
|
|
|
// console.log('onValuesChange', changedValues);
|
|
|
|
|
|
|
|
if ('product_title' in changedValues) {
|
|
|
|
|
|
|
|
setInfoEditStatus('2');
|
|
|
|
|
|
|
|
setLgcEdits({...lgcEdits, '2': {'edit_status': '2'}});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ('lgc_details_mapped' in changedValues) {
|
|
|
|
|
|
|
|
const lgc = Object.keys(changedValues.lgc_details_mapped)[0];
|
|
|
|
|
|
|
|
setLgcEdits({...lgcEdits, [lgc]: {'edit_status': '2'}});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
setInfoEditStatus('2');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const onSave = async (err, values, forms) => {
|
|
|
|
const onSave = async (err, values, forms) => {
|
|
|
|
values.travel_agency_id = activeAgency.travel_agency_id;
|
|
|
|
values.travel_agency_id = activeAgency.travel_agency_id;
|
|
|
|
const copyNewProduct = structuredClone(newProductRecord);
|
|
|
|
const copyNewProduct = structuredClone(newProductRecord);
|
|
|
@ -58,6 +77,7 @@ const ProductInfo = ({ ...props }) => {
|
|
|
|
'travel_agency_id': activeAgency.travel_agency_id,
|
|
|
|
'travel_agency_id': activeAgency.travel_agency_id,
|
|
|
|
// "travel_agency_name": "",
|
|
|
|
// "travel_agency_name": "",
|
|
|
|
// "lastedit_changed": "",
|
|
|
|
// "lastedit_changed": "",
|
|
|
|
|
|
|
|
"edit_status": infoEditStatus,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const copyFields = pick(editingProduct.info, ['product_type_id']); // 'title',
|
|
|
|
const copyFields = pick(editingProduct.info, ['product_type_id']); // 'title',
|
|
|
|
const readyToSubInfo = { ...copyNewProduct.info, ...editingProduct.info, title: editingProduct.info.product_title, ...values.info, ...copyFields, ...poster };
|
|
|
|
const readyToSubInfo = { ...copyNewProduct.info, ...editingProduct.info, title: editingProduct.info.product_title, ...values.info, ...copyFields, ...poster };
|
|
|
@ -65,9 +85,15 @@ const ProductInfo = ({ ...props }) => {
|
|
|
|
|
|
|
|
|
|
|
|
/** lgc_details */
|
|
|
|
/** lgc_details */
|
|
|
|
const prevLgcDetailsMapped = editingProduct.lgc_details.reduce((r, c) => ({ ...r, [c.lgc]: c }), {});
|
|
|
|
const prevLgcDetailsMapped = editingProduct.lgc_details.reduce((r, c) => ({ ...r, [c.lgc]: c }), {});
|
|
|
|
const mergedLgc = { ...prevLgcDetailsMapped, ...values.lgc_details_mapped };
|
|
|
|
const mergedLgc = { ...prevLgcDetailsMapped, ...values.lgc_details_mapped, };
|
|
|
|
|
|
|
|
for (const lgcKey in lgcEdits) {
|
|
|
|
|
|
|
|
if (Object.prototype.hasOwnProperty.call(lgcEdits, lgcKey)) {
|
|
|
|
|
|
|
|
const element = lgcEdits[lgcKey];
|
|
|
|
|
|
|
|
mergedLgc[lgcKey].edit_status = element?.edit_status || '';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// console.log(values);
|
|
|
|
// console.log(readyToSubInfo, "\n", mergedLgc);
|
|
|
|
// return false; // debug: 0
|
|
|
|
// return false; // debug: 0
|
|
|
|
/** 提交保存 */
|
|
|
|
/** 提交保存 */
|
|
|
|
setLoading(true);
|
|
|
|
setLoading(true);
|
|
|
@ -111,7 +137,7 @@ const ProductInfo = ({ ...props }) => {
|
|
|
|
) : (
|
|
|
|
) : (
|
|
|
|
<>
|
|
|
|
<>
|
|
|
|
<h2>{t('products:EditComponents.info')}</h2>
|
|
|
|
<h2>{t('products:EditComponents.info')}</h2>
|
|
|
|
<ProductInfoForm {...{ editablePerm, infoEditable, priceEditable }} initialValues={editingProduct?.info} onSubmit={onSave} />
|
|
|
|
<ProductInfoForm {...{ editablePerm, infoEditable, priceEditable, onValuesChange }} initialValues={editingProduct?.info} onSubmit={onSave} />
|
|
|
|
<Divider className='my-1' />
|
|
|
|
<Divider className='my-1' />
|
|
|
|
{extrasVisible && <Extras productId={editingProduct?.info?.id} />}
|
|
|
|
{extrasVisible && <Extras productId={editingProduct?.info?.id} />}
|
|
|
|
</>
|
|
|
|
</>
|
|
|
|