Bladeren bron

feat(oa): add mobile print PDF filename helper

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 2 maanden geleden
bovenliggende
commit
2802ef23a6
2 gewijzigde bestanden met toevoegingen van 43 en 0 verwijderingen
  1. 13 0
      mobile-oa-h5/src/oa/print/oa-print-filename.js
  2. 30 0
      mobile-oa-h5/src/oa/print/oa-print-filename.test.js

+ 13 - 0
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`
+}

+ 30 - 0
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')