|
|
@ -5,7 +5,7 @@ import { useProductsTypes, useProductsAuditStatesMapVal } from '@/hooks/useProdu
|
|
|
|
import SecondHeaderWrapper from '@/components/SecondHeaderWrapper';
|
|
|
|
import SecondHeaderWrapper from '@/components/SecondHeaderWrapper';
|
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
import useProductsStore, { postProductsQuoteAuditAction, } from '@/stores/Products/Index';
|
|
|
|
import useProductsStore, { postProductsQuoteAuditAction, } from '@/stores/Products/Index';
|
|
|
|
import { isEmpty } from '@/utils/commons';
|
|
|
|
import { cloneDeep, isEmpty } from '@/utils/commons';
|
|
|
|
import useAuthStore from '@/stores/Auth';
|
|
|
|
import useAuthStore from '@/stores/Auth';
|
|
|
|
import RequireAuth from '@/components/RequireAuth';
|
|
|
|
import RequireAuth from '@/components/RequireAuth';
|
|
|
|
// import PrintContractPDF from './PrintContractPDF';
|
|
|
|
// import PrintContractPDF from './PrintContractPDF';
|
|
|
@ -80,15 +80,22 @@ const PriceTable = ({ productType, dataSource, refresh }) => {
|
|
|
|
const { message, notification } = App.useApp();
|
|
|
|
const { message, notification } = App.useApp();
|
|
|
|
const stateMapVal = useProductsAuditStatesMapVal();
|
|
|
|
const stateMapVal = useProductsAuditStatesMapVal();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const [renderData, setRenderData] = useState(dataSource);
|
|
|
|
|
|
|
|
|
|
|
|
// console.log(dataSource);
|
|
|
|
// console.log(dataSource);
|
|
|
|
|
|
|
|
|
|
|
|
const handleAuditPriceItem = (state, row) => {
|
|
|
|
const handleAuditPriceItem = (state, row, rowIndex) => {
|
|
|
|
postProductsQuoteAuditAction(state, { id: row.id, travel_agency_id: activeAgency.travel_agency_id })
|
|
|
|
postProductsQuoteAuditAction(state, { id: row.id, travel_agency_id: activeAgency.travel_agency_id })
|
|
|
|
.then((json) => {
|
|
|
|
.then((json) => {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
message.success(json.errmsg);
|
|
|
|
message.success(json.errmsg);
|
|
|
|
|
|
|
|
|
|
|
|
if (typeof refresh === 'function') {
|
|
|
|
if (typeof refresh === 'function') {
|
|
|
|
refresh();
|
|
|
|
// refresh(); // debug: 不要刷新, 等太久
|
|
|
|
|
|
|
|
// const newData = structuredClone(renderData);
|
|
|
|
|
|
|
|
const newData = cloneDeep(renderData);
|
|
|
|
|
|
|
|
newData.splice(rowIndex, 1, {...row, audit_state_id: state, });
|
|
|
|
|
|
|
|
setRenderData(newData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -142,18 +149,18 @@ const PriceTable = ({ productType, dataSource, refresh }) => {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '',
|
|
|
|
title: '',
|
|
|
|
key: 'action',
|
|
|
|
key: 'action',
|
|
|
|
render: (_, r) =>
|
|
|
|
render: (_, r, ri) =>
|
|
|
|
r.audit_state_id <= 0 ? (
|
|
|
|
(Number(r.audit_state_id)) === 0 ? (
|
|
|
|
<RequireAuth subject={PERM_PRODUCTS_OFFER_AUDIT}>
|
|
|
|
<RequireAuth subject={PERM_PRODUCTS_OFFER_AUDIT}>
|
|
|
|
<Space>
|
|
|
|
<Space>
|
|
|
|
<Button onClick={() => handleAuditPriceItem('2', r)}>✔</Button>
|
|
|
|
<Button onClick={() => handleAuditPriceItem('2', r, ri)}>✔</Button>
|
|
|
|
<Button onClick={() => handleAuditPriceItem('3', r)}>✖</Button>
|
|
|
|
<Button onClick={() => handleAuditPriceItem('3', r, ri)}>✖</Button>
|
|
|
|
</Space>
|
|
|
|
</Space>
|
|
|
|
</RequireAuth>
|
|
|
|
</RequireAuth>
|
|
|
|
) : null,
|
|
|
|
) : null,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
];
|
|
|
|
];
|
|
|
|
return <Table size={'small'} className='border-collapse' rowHoverable={false} rowClassName={rowStyle} pagination={false} {...{ columns, dataSource }} rowKey={(r) => r.id} />;
|
|
|
|
return <Table size={'small'} className='border-collapse' rowHoverable={false} rowClassName={rowStyle} pagination={false} {...{ columns, }} dataSource={renderData} rowKey={(r) => r.id} />;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|