This commit is contained in:
BIN
app/.DS_Store
vendored
BIN
app/.DS_Store
vendored
Binary file not shown.
@@ -29,10 +29,17 @@ const toObjectIdText = (value) => {
|
|||||||
const findTemplatePathBySite = (site) => {
|
const findTemplatePathBySite = (site) => {
|
||||||
const safeSite = [1, 2, 3].includes(Number(site)) ? Number(site) : 1;
|
const safeSite = [1, 2, 3].includes(Number(site)) ? Number(site) : 1;
|
||||||
const fileName = `pdf_templete${safeSite}.pdf`;
|
const fileName = `pdf_templete${safeSite}.pdf`;
|
||||||
|
const cwd = process.cwd();
|
||||||
const candidatePaths = [
|
const candidatePaths = [
|
||||||
path.join(ROOT_DIR, "app", "views", "upload", fileName),
|
path.join(ROOT_DIR, "app", "views", "upload", fileName),
|
||||||
path.join(ROOT_DIR, "client", "build", "upload", fileName),
|
path.join(ROOT_DIR, "client", "build", "upload", fileName),
|
||||||
path.join(ROOT_DIR, "client", "public", "upload", fileName)
|
path.join(ROOT_DIR, "client", "public", "upload", fileName),
|
||||||
|
path.join(cwd, "app", "views", "upload", fileName),
|
||||||
|
path.join(cwd, "client", "build", "upload", fileName),
|
||||||
|
path.join(cwd, "client", "public", "upload", fileName),
|
||||||
|
path.join("/www/wwwroot/upload", fileName),
|
||||||
|
path.join(`/www/wwwroot/worldshine${safeSite}`, "app", "views", "upload", fileName),
|
||||||
|
path.join(`/www/wwwroot/worldshine${safeSite}-tspt`, "app", "views", "upload", fileName)
|
||||||
];
|
];
|
||||||
return candidatePaths.find((candidate) => fs.existsSync(candidate)) || "";
|
return candidatePaths.find((candidate) => fs.existsSync(candidate)) || "";
|
||||||
};
|
};
|
||||||
@@ -307,6 +314,7 @@ exports.exportRouteReportZip = async (req, res) => {
|
|||||||
|
|
||||||
archive.finalize();
|
archive.finalize();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.error("Failed to export route report zip:", err);
|
||||||
res.status(500).send({
|
res.status(500).send({
|
||||||
message: err.message || "Failed to export route reports."
|
message: err.message || "Failed to export route reports."
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,6 +14,17 @@ import RouteCustomerTable from "./RouteCustomerTable";
|
|||||||
|
|
||||||
|
|
||||||
const RoutesDashboard = () => {
|
const RoutesDashboard = () => {
|
||||||
|
const getErrorMessageFromBlob = async (blobData, fallback = 'Failed to export route report.') => {
|
||||||
|
try {
|
||||||
|
if (!blobData) return fallback;
|
||||||
|
const text = await blobData.text();
|
||||||
|
if (!text) return fallback;
|
||||||
|
const parsed = JSON.parse(text);
|
||||||
|
return parsed?.message || fallback;
|
||||||
|
} catch (_err) {
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
};
|
||||||
const HIDDEN_CUSTOMER_TYPE_FILTER_VALUES = ['transferred', 'deceased', 'discharged'];
|
const HIDDEN_CUSTOMER_TYPE_FILTER_VALUES = ['transferred', 'deceased', 'discharged'];
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
@@ -882,7 +893,8 @@ const RoutesDashboard = () => {
|
|||||||
window.URL.revokeObjectURL(downloadUrl);
|
window.URL.revokeObjectURL(downloadUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to export route report:', error);
|
console.error('Failed to export route report:', error);
|
||||||
window.alert('Failed to export route report.');
|
const message = await getErrorMessageFromBlob(error?.response?.data);
|
||||||
|
window.alert(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const goToHistoryPage = () => {
|
const goToHistoryPage = () => {
|
||||||
|
|||||||
@@ -8,6 +8,17 @@ import DatePicker from "react-datepicker";
|
|||||||
import { AuthService, ReportService } from "../../services";
|
import { AuthService, ReportService } from "../../services";
|
||||||
|
|
||||||
const RoutesHistory = () => {
|
const RoutesHistory = () => {
|
||||||
|
const getErrorMessageFromBlob = async (blobData, fallback = 'Failed to export route report.') => {
|
||||||
|
try {
|
||||||
|
if (!blobData) return fallback;
|
||||||
|
const text = await blobData.text();
|
||||||
|
if (!text) return fallback;
|
||||||
|
const parsed = JSON.parse(text);
|
||||||
|
return parsed?.message || fallback;
|
||||||
|
} catch (_err) {
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
};
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const inboundRoutes = useSelector(selectHistoryInboundRoutes);
|
const inboundRoutes = useSelector(selectHistoryInboundRoutes);
|
||||||
@@ -47,7 +58,8 @@ const RoutesHistory = () => {
|
|||||||
window.URL.revokeObjectURL(downloadUrl);
|
window.URL.revokeObjectURL(downloadUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to export route report:', error);
|
console.error('Failed to export route report:', error);
|
||||||
window.alert('Failed to export route report.');
|
const message = await getErrorMessageFromBlob(error?.response?.data);
|
||||||
|
window.alert(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user