perf: 调增产品工具栏按钮及位置

main
Jimmy Liow 9 months ago
parent fb48ac668f
commit bb4eca48f6

@ -13,8 +13,6 @@ import { PERM_PRODUCTS_OFFER_AUDIT, PERM_PRODUCTS_OFFER_PUT } from '@/config';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import VendorSelector from '@/components/VendorSelector'; import VendorSelector from '@/components/VendorSelector';
import AuditStateSelector from '@/components/AuditStateSelector'; import AuditStateSelector from '@/components/AuditStateSelector';
import NewProductModal from './NewProductModal';
import ContractRemarksModal from './ContractRemarksModal'
import { usingStorage } from '@/hooks/usingStorage'; import { usingStorage } from '@/hooks/usingStorage';
import AgencyContract from '../Print/AgencyContract_v0903'; import AgencyContract from '../Print/AgencyContract_v0903';
@ -170,6 +168,23 @@ const Header = ({ refresh, ...props }) => {
<Button onClick={() => refresh(param)} type='text' className='text-primary round-none' icon={<ReloadOutlined />} /> <Button onClick={() => refresh(param)} type='text' className='text-primary round-none' icon={<ReloadOutlined />} />
</h2> </h2>
</div> </div>
{/* todo: export, 审核完成之后才能导出 */}
<RequireAuth subject={PERM_PRODUCTS_OFFER_AUDIT}>
<Button size='small' onClick={handleDownload}>{t('Export')} .docx</Button>
{/* <PrintContractPDF /> */}
</RequireAuth>
{/* {activeAgencyState === 0 && ( */}
<>
<RequireAuth subject={PERM_PRODUCTS_OFFER_PUT}>
<Popconfirm title={t('products:sureSubmitAudit')} onConfirm={handleSubmitForAudit} okText={t('Yes')} placement={'bottomLeft'}>
<Button size='small' type={'primary'} >
{t('Submit')}
{t('Audit')}
</Button>
</Popconfirm>
</RequireAuth>
</>
{/* )} */}
{showEditA && ( {showEditA && (
<Link className='px-2' to={isPermitted(PERM_PRODUCTS_OFFER_AUDIT) ? `/products/${activeAgency.travel_agency_id}/${pickYear}/${audit_state}/edit` : `/products/edit`}> <Link className='px-2' to={isPermitted(PERM_PRODUCTS_OFFER_AUDIT) ? `/products/${activeAgency.travel_agency_id}/${pickYear}/${audit_state}/edit` : `/products/edit`}>
{t('Edit')} {t('Edit')}
@ -193,29 +208,6 @@ const Header = ({ refresh, ...props }) => {
{t('products:auditStateAction.Rejected')} {t('products:auditStateAction.Rejected')}
</Button> </Button>
</RequireAuth> </RequireAuth>
<ContractRemarksModal />
{/* todo: export, 审核完成之后才能导出 */}
<RequireAuth subject={PERM_PRODUCTS_OFFER_AUDIT}>
<Button size='small' onClick={handleDownload}>{t('Export')} .docx</Button>
{/* <PrintContractPDF /> */}
</RequireAuth>
{/* 编辑 */}
<Divider type='vertical' />
{isEditPage && (
<NewProductModal />
)}
{/* {activeAgencyState === 0 && ( */}
<>
<RequireAuth subject={PERM_PRODUCTS_OFFER_PUT}>
<Popconfirm title={t('products:sureSubmitAudit')} onConfirm={handleSubmitForAudit} okText={t('Yes')} placement={'bottomLeft'}>
<Button size='small' type={'primary'} >
{t('Submit')}
{t('Audit')}
</Button>
</Popconfirm>
</RequireAuth>
</>
{/* )} */}
</div> </div>
); );
}; };

@ -1,10 +1,12 @@
import { createContext, useEffect, useState } from 'react'; import { createContext, useEffect, useState } from 'react';
import { Tree, Input } from 'antd'; import { Tree, Input, Divider } from 'antd';
import { CaretDownOutlined } from '@ant-design/icons'; import { CaretDownOutlined } from '@ant-design/icons';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import useProductsStore from '@/stores/Products/Index'; import useProductsStore from '@/stores/Products/Index';
import { useProductsTypes, useProductsAuditStatesMapVal } from '@/hooks/useProductsSets'; import { useProductsTypes, useProductsAuditStatesMapVal } from '@/hooks/useProductsSets';
import { groupBy, sortBy } from '@/utils/commons'; import { groupBy, sortBy } from '@/utils/commons';
import NewProductModal from './NewProductModal';
import ContractRemarksModal from './ContractRemarksModal'
const flattenTreeFun = (tree) => { const flattenTreeFun = (tree) => {
let flatList = []; let flatList = [];
@ -40,6 +42,8 @@ const getParentKey = (key, tree) => {
const ProductsTree = ({ onNodeSelect, ...props }) => { const ProductsTree = ({ onNodeSelect, ...props }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const isEditPage = location.pathname.includes('edit');
const [agencyProducts, editingProduct, setEditingProduct] = useProductsStore((state) => [state.agencyProducts, state.editingProduct, state.setEditingProduct]); const [agencyProducts, editingProduct, setEditingProduct] = useProductsStore((state) => [state.agencyProducts, state.editingProduct, state.setEditingProduct]);
const [activeAgency] = useProductsStore((state) => [state.activeAgency]); const [activeAgency] = useProductsStore((state) => [state.activeAgency]);
const productsTypes = useProductsTypes(); const productsTypes = useProductsTypes();
@ -150,6 +154,12 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
return ( return (
<div className={`${props.className} relative`} style={props.style}> <div className={`${props.className} relative`} style={props.style}>
<Input.Search placeholder='Search' onChange={onSearch} allowClear className='sticky top-1 z-20 mb-3' /> <Input.Search placeholder='Search' onChange={onSearch} allowClear className='sticky top-1 z-20 mb-3' />
{/* 编辑 */}
{isEditPage && (
<NewProductModal />
)}
<Divider type='vertical' />
<ContractRemarksModal />
<Tree <Tree
blockNode blockNode
showLine defaultExpandAll expandAction={'doubleClick'} showLine defaultExpandAll expandAction={'doubleClick'}

Loading…
Cancel
Save