mankalong-contract-page-sync.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * 曼卡龙合同页面同步区(可复制到各合同页面 JS)。
  3. *
  4. * 使用说明:
  5. * 1. 按当前页面修改 getMankalongContractFieldIds() 中的组件 ID。
  6. * 2. didMount 中先调用 await this._mklLoad(),再调用 initMankalongContractPage()。
  7. * 3. “生成合同”按钮绑定 onClickContractGenerate。
  8. * 4. “合同确认”按钮绑定 onClickContractConfirm。
  9. *
  10. * 依赖:页面已加载 mjs.corp.mkl(https://mc.cloudpure.cn/mjs/mkl/mjs.min.js)。
  11. */
  12. /**
  13. * @returns {Object} 当前合同页面固定配置
  14. */
  15. function getMankalongContractPageConfig() {
  16. return {
  17. formUuid: 'FORM-BBFA15D85B2E4E8D832C2F0FE49CAF782GO3',
  18. subDirectory: '工程类',
  19. dingOrgId: '908563201',
  20. corpId: 'ding3735baea6bea68ac24f2f5cc6abecb85',
  21. };
  22. }
  23. /**
  24. * @returns {Object} 当前合同页面组件 ID
  25. */
  26. function getMankalongContractFieldIds() {
  27. return {
  28. uniqueId: 'textField_mte3gh61',
  29. contractNo: 'textField_mrishceq',
  30. mode: 'radioField_mryiusal',
  31. type: 'textField_mspzgras',
  32. masterNo: 'textField_mrylbq28',
  33. name: 'textField_mryko9bh',
  34. attachment: 'attachmentField_msv7rz7m',
  35. generateButton: 'button_msiiyhct',
  36. confirmButton: 'button_mtfaz1tq',
  37. };
  38. }
  39. /**
  40. * @returns {Promise<Object>} 初始化后的合同页面状态
  41. */
  42. export async function initMankalongContractPage() {
  43. const ids = getMankalongContractFieldIds();
  44. if (mjs.env == 0) {
  45. const contractNo = this.$(ids.contractNo);
  46. const attachment = this.$(ids.attachment);
  47. if (contractNo && typeof contractNo.reset === 'function') contractNo.reset();
  48. if (attachment && typeof attachment.reset === 'function') attachment.reset();
  49. }
  50. return mjs.corp.mkl.initContractPage({
  51. componentIds: ids,
  52. });
  53. }
  54. /**
  55. * @returns {Promise<*>} 合同预览生成结果
  56. */
  57. export async function onClickContractGenerate() {
  58. const config = getMankalongContractPageConfig();
  59. const ids = getMankalongContractFieldIds();
  60. return mjs.corp.mkl.runContractGenerate({
  61. componentIds: ids,
  62. generateContract: () => mjs.corp.mkl.generateSubFormImages({
  63. formUuid: config.formUuid,
  64. type: 'preview',
  65. componentIds: ids,
  66. dingOrgId: config.dingOrgId,
  67. corpId: config.corpId,
  68. }),
  69. });
  70. }
  71. /**
  72. * @returns {Promise<Object|null>} 合同确认结果
  73. */
  74. export async function onClickContractConfirm() {
  75. const config = getMankalongContractPageConfig();
  76. const ids = getMankalongContractFieldIds();
  77. return mjs.corp.mkl.runContractConfirm({
  78. componentIds: ids,
  79. subDirectory: config.subDirectory,
  80. generateMode: 'generate',
  81. allowMissingInstanceId: true,
  82. generateContract: (params) => this.generateMankalongContractFile(params),
  83. });
  84. }
  85. /**
  86. * @returns {void} 清理合同页面定时器
  87. */
  88. export function didUnmount() {
  89. if (window.mjs && mjs.corp && mjs.corp.mkl) {
  90. mjs.corp.mkl.disposeContractPage();
  91. }
  92. }