当前编辑的产品

perf/export-docx
Lei OT 1 year ago
parent efa3f052a6
commit 1a958639d5

@ -8,6 +8,7 @@ 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 useProductsStore from '@/stores/Products/Index';
import { useHTLanguageSets } from '@/hooks/useHTLanguageSets'; import { useHTLanguageSets } from '@/hooks/useHTLanguageSets';
import { useDefaultLgc } from '@/i18n/LanguageSwitcher'; import { useDefaultLgc } from '@/i18n/LanguageSwitcher';
import BatchImportPrice from './Detail/BatchImportPrice1'; import BatchImportPrice from './Detail/BatchImportPrice1';
@ -37,6 +38,7 @@ function Detail() {
const HTLanguageSets = useHTLanguageSets(); const HTLanguageSets = useHTLanguageSets();
const { Search } = Input; const { Search } = Input;
const [editingProduct, setEditingProduct] = useProductsStore((state) => [state.editingProduct, state.setEditingProduct]);
const [expandedKeys, setExpandedKeys] = useState([]); const [expandedKeys, setExpandedKeys] = useState([]);
const [searchValue, setSearchValue] = useState(''); const [searchValue, setSearchValue] = useState('');
@ -51,49 +53,49 @@ function Detail() {
const productProject = { const productProject = {
"6": [], "6": [],
"B": [ "B": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
{ code: "km", name: t('products:KM') }, { code: "km", name: t('products:KM'), nameKey: 'products:KM' },
{ code: "remarks", name: t('products:Remarks') } { code: "remarks", name: t('products:Remarks'), nameKey: 'products:Remarks' }
], ],
"J": [ "J": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
{ code: "recommends_rate", name: t('products:recommendationRate') }, { code: "recommends_rate", name: t('products:recommendationRate'), nameKey: 'products:recommendationRate' },
{ code: "duration", name: t('products:Duration') }, { code: "duration", name: t('products:Duration'), nameKey: 'products:Duration' },
{ code: "dept_name", name: t('products:Dept') }, { code: "dept_name", name: t('products:Dept'), nameKey: 'products:Dept' },
{ code: "display_to_c", name: t('products:DisplayToC') }, { code: "display_to_c", name: t('products:DisplayToC'), nameKey: 'products:DisplayToC' },
{ code: "remarks", name: t('products:Remarks') }, { code: "remarks", name: t('products:Remarks'), nameKey: 'products:Remarks' },
], ],
"Q": [ "Q": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
{ code: "recommends_rate", name: t('products:recommendationRate') }, { code: "recommends_rate", name: t('products:recommendationRate'), nameKey: 'products:recommendationRate' },
{ code: "duration", name: t('products:Duration') }, { code: "duration", name: t('products:Duration'), nameKey: 'products:Duration' },
{ code: "dept_name", name: t('products:Dept') }, { code: "dept_name", name: t('products:Dept'), nameKey: 'products:Dept' },
{ code: "display_to_c", name: t('products:DisplayToC') }, { code: "display_to_c", name: t('products:DisplayToC'), nameKey: 'products:DisplayToC' },
{ code: "remarks", name: t('products:Remarks') }, { code: "remarks", name: t('products:Remarks'), nameKey: 'products:Remarks' },
], ],
"D": [ "D": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
{ code: "recommends_rate", name: t('products:recommendationRate') }, { code: "recommends_rate", name: t('products:recommendationRate'), nameKey: 'products:recommendationRate' },
{ code: "duration", name: t('products:Duration') }, { code: "duration", name: t('products:Duration'), nameKey: 'products:Duration' },
{ code: "dept_name", name: t('products:Dept') }, { code: "dept_name", name: t('products:Dept'), nameKey: 'products:Dept' },
{ code: "display_to_c", name: t('products:DisplayToC') }, { code: "display_to_c", name: t('products:DisplayToC'), nameKey: 'products:DisplayToC' },
{ code: "remarks", name: t('products:Remarks') }, { code: "remarks", name: t('products:Remarks'), nameKey: 'products:Remarks' },
], ],
"7": [ "7": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
{ code: "recommends_rate", name: t('products:recommendationRate') }, { code: "recommends_rate", name: t('products:recommendationRate'), nameKey: 'products:recommendationRate' },
{ code: "duration", name: t('products:Duration') }, { code: "duration", name: t('products:Duration'), nameKey: 'products:Duration' },
{ code: "open_weekdays", name: t('products:OpenWeekdays') }, { code: "open_weekdays", name: t('products:OpenWeekdays'), nameKey: 'products:OpenWeekdays' },
{ code: "remarks", name: t('products:Remarks') }, { code: "remarks", name: t('products:Remarks'), nameKey: 'products:Remarks' },
], ],
"R": [ "R": [
{ code: "code", name: t('products:Code') }, { code: "code", name: t('products:Code'), nameKey: 'products:Code' },
{ code: "city_name", name: t('products:City') }, { code: "city_name", name: t('products:City'), nameKey: 'products:City' },
] ]
} }
const [selectedCategory, setSelectedCategory] = useState(productProject.B); const [selectedCategory, setSelectedCategory] = useState(productProject.B);
@ -125,10 +127,12 @@ function Detail() {
children: (productsData[type.value] || []).map(product => ({ children: (productsData[type.value] || []).map(product => ({
title: product.info.title, title: product.info.title,
key: `${type.value}-${product.info.id}`, key: `${type.value}-${product.info.id}`,
_raw: product,
})) }))
})); }));
}; };
const treeData = generateTreeData(productsTypes, groupedProducts); const treeData = generateTreeData(productsTypes, groupedProducts);
setTreeData(treeData); setTreeData(treeData);
setProductsData(groupedProducts); setProductsData(groupedProducts);
@ -440,8 +444,10 @@ const handleBatchImportOK = () => {
const editable = isEditing(record); const editable = isEditing(record);
return editable ? ( return editable ? (
<span> <span>
<a href="#!" onClick={() => handleSave(record.id)} style={{ marginRight: 8 }}>{t('Save')}</a> {/* <a href="#!" onClick={() => handleSave(record.id)} style={{ marginRight: 8 }}>{t('Save')}</a> */}
<Popconfirm title={t('sureCancel')} onConfirm={cancel}><a>{t('Cancel')}</a></Popconfirm> <Button type="link" onClick={() => handleSave(record.id)}>{t('Save')}</Button>
<Button type="link" onClick={cancel}>{t('Cancel')}</Button>
{/* <Popconfirm title={t('sureCancel')} onConfirm={cancel}><a>{t('Cancel')}</a></Popconfirm> */}
</span> </span>
) : ( ) : (
<span> <span>
@ -534,6 +540,8 @@ const handleBatchImportOK = () => {
setSelectedCategory(productProject[fatherKey]) setSelectedCategory(productProject[fatherKey])
console.log("remainderLanguage",remainderLanguage) console.log("remainderLanguage",remainderLanguage)
setEditingProduct(node._raw);
let initialQuotationData = null; let initialQuotationData = null;
let infoData = null; let infoData = null;
let lgcDetailsData = null; let lgcDetailsData = null;
@ -594,8 +602,8 @@ const handleBatchImportOK = () => {
return ( return (
<div> <div>
<Row> <Row>
<Col span={6}> <Col span={6} className=' relative'>
<Card style={{ width: "20%", position: "fixed", maxHeight: "80vh", overflowY: "auto" }}> <Card className='w-[inherit] fixed overflow-y-auto max-h-[80vh]'>
<Search style={{ marginBottom: 8 }} placeholder="Search" onChange={onChange} /> <Search style={{ marginBottom: 8 }} placeholder="Search" onChange={onChange} />
<Tree <Tree
onSelect={handleNodeSelect} onSelect={handleNodeSelect}
@ -611,12 +619,12 @@ const handleBatchImportOK = () => {
<Col span={18}> <Col span={18}>
<Form form={form} name="control-hooks" onFinish={onSave}> <Form form={form} name="control-hooks" onFinish={onSave}>
<Card <Card
style={{ width: "80%" }} // style={{ width: "80%" }}
title={ title={
<Breadcrumb items={[ <Breadcrumb items={[
// { title: <Link to={'/'}></Link> }, // { title: <Link to={'/'}></Link> },
{ title: <Link to={'/products'}>综费</Link> }, { title: <Link to={'/products'}>综费</Link> },
{ title: '文章列表' } { title: editingProduct?.info?.title || t('New') }
]} /> ]} />
} }
> >
@ -624,7 +632,7 @@ const handleBatchImportOK = () => {
<Row gutter={16}> <Row gutter={16}>
{selectedCategory.map((item, index) => ( {selectedCategory.map((item, index) => (
<Col span={8} key={item.code}> <Col span={8} key={item.code}>
<Form.Item name={['info', item.code]} label={item.name}> <Form.Item name={['info', item.code]} label={t(item.nameKey)}>
{item.code === "duration" ? ( {item.code === "duration" ? (
<Input suffix="H"/> <Input suffix="H"/>
) : ( ) : (
@ -684,12 +692,12 @@ const handleBatchImportOK = () => {
/> />
</Form.Item> </Form.Item>
</Card> </Card>
</Card> {/* </Card> */}
<Card style={{ width: "80%" }}> {/* <Card style={{ width: "80%" }}> */}
<h2>{t('products:supplierQuotation')}</h2> <h2>{t('products:supplierQuotation')}</h2>
<Form.Item name="quotation"> <Form.Item name="quotation">
<Table <Table rowKey={'id'}
components={{ body: { cell: EditableCell } }} components={{ body: { cell: EditableCell } }}
bordered bordered
dataSource={quotation} dataSource={quotation}
@ -703,20 +711,20 @@ const handleBatchImportOK = () => {
<Button onClick={handleBatchImport} type="primary" style={{ marginBottom: 16 }}>批量添加</Button> <Button onClick={handleBatchImport} type="primary" style={{ marginBottom: 16 }}>批量添加</Button>
</Form.Item> </Form.Item>
</Card>
<Card style={{ width: "80%" }}> <Button type="primary" htmlType="submit" style={{ marginTop: 16, float: "right", marginRight: "20%" }}>
<Extras productId={2} /> {t('Save')}
</Card> </Button>
<Button type="primary" htmlType="submit" style={{ marginTop: 16, float: "right", marginRight: "5%" }}>
提交审核
</Button>
</Card>
</Form>
{/* <Card style={{ width: "80%" }}> */}
<Extras productId={2} />
{/* </Card> */}
<Button type="primary" htmlType="submit" style={{ marginTop: 16, float: "right", marginRight: "20%" }}>
{t('Save')}
</Button>
<Button type="primary" htmlType="submit" style={{ marginTop: 16, float: "right", marginRight: "5%" }}>
提交审核
</Button>
</Form>
</Col> </Col>
</Row> </Row>

Loading…
Cancel
Save