diff --git a/mobile-oa-h5/src/oa/print/oa-print-filename.js b/mobile-oa-h5/src/oa/print/oa-print-filename.js new file mode 100644 index 00000000..c7d33fa0 --- /dev/null +++ b/mobile-oa-h5/src/oa/print/oa-print-filename.js @@ -0,0 +1,13 @@ +/** Align with web-admin `buildOaPrintFilename` in oa-approval-print.ts */ +export function buildOaPrintFilename(detail) { + const initiator = + String(detail?.initiatorUserName || '').trim() || + String(detail?.initiatorUserId || '').trim() || + '用户' + const appName = + String(detail?.appName || '').trim() || + String(detail?.title || '').trim() || + '审批单' + const safe = (s) => String(s).replace(/[\\/:*?"<>|]/g, '_').slice(0, 80) + return `${safe(initiator)}提交的${safe(appName)}.pdf` +} diff --git a/mobile-oa-h5/src/oa/print/oa-print-filename.test.js b/mobile-oa-h5/src/oa/print/oa-print-filename.test.js new file mode 100644 index 00000000..6cabf595 --- /dev/null +++ b/mobile-oa-h5/src/oa/print/oa-print-filename.test.js @@ -0,0 +1,30 @@ +import assert from 'node:assert/strict' +import { buildOaPrintFilename } from './oa-print-filename.js' + +assert.equal( + buildOaPrintFilename({ + initiatorUserName: '张三', + appName: '请假申请' + }), + '张三提交的请假申请.pdf' +) + +assert.equal( + buildOaPrintFilename({ + initiatorUserId: 'u1', + title: '报销' + }), + 'u1提交的报销.pdf' +) + +assert.equal(buildOaPrintFilename({}), '用户提交的审批单.pdf') + +assert.equal( + buildOaPrintFilename({ + initiatorUserName: 'a/b:c*', + appName: 'x?y' + }), + 'a_b_c_提交的x_y.pdf' +) + +console.log('oa-print-filename: ok')