@steedos-labs/content-compliance 0.7.21 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +61 -0
  2. package/dist/index.js +1 -1
  3. package/lib/actions/__tests__/downloadFieldZip.test.d.ts +1 -0
  4. package/lib/actions/__tests__/downloadFieldZip.test.js +154 -0
  5. package/lib/actions/__tests__/downloadFieldZip.test.js.map +1 -0
  6. package/lib/actions/approvalCc.d.ts +7 -0
  7. package/lib/actions/approvalCc.js +35 -0
  8. package/lib/actions/approvalCc.js.map +1 -0
  9. package/lib/actions/downloadFieldZip.d.ts +9 -0
  10. package/lib/actions/downloadFieldZip.js +155 -0
  11. package/lib/actions/downloadFieldZip.js.map +1 -0
  12. package/lib/actions/index.d.ts +1 -0
  13. package/lib/actions/index.js +1 -0
  14. package/lib/actions/index.js.map +1 -1
  15. package/lib/index.js +157 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/methods/__tests__/approvalCc.test.d.ts +1 -0
  18. package/lib/methods/__tests__/approvalCc.test.js +180 -0
  19. package/lib/methods/__tests__/approvalCc.test.js.map +1 -0
  20. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.d.ts +1 -0
  21. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.js +61 -0
  22. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.js.map +1 -0
  23. package/lib/methods/approval_cc.d.ts +15 -0
  24. package/lib/methods/approval_cc.js +170 -0
  25. package/lib/methods/approval_cc.js.map +1 -0
  26. package/lib/methods/approval_engine.js +21 -8
  27. package/lib/methods/approval_engine.js.map +1 -1
  28. package/lib/methods/consts.d.ts +1 -0
  29. package/lib/methods/consts.js.map +1 -1
  30. package/lib/methods/index.d.ts +1 -0
  31. package/lib/methods/index.js +1 -0
  32. package/lib/methods/index.js.map +1 -1
  33. package/lib/methods/notification.d.ts +2 -0
  34. package/lib/methods/notification.js +135 -14
  35. package/lib/methods/notification.js.map +1 -1
  36. package/lib/methods/pls.d.ts +19 -0
  37. package/lib/methods/pls.js +346 -29
  38. package/lib/methods/pls.js.map +1 -1
  39. package/main/default/applications/pepsico_content_review.app.yml +0 -4
  40. package/main/default/objects/pepsico_approval_cc_log/fields/action.field.yml +11 -0
  41. package/main/default/objects/pepsico_approval_cc_log/fields/approval_name.field.yml +6 -0
  42. package/main/default/objects/pepsico_approval_cc_log/fields/cc_user.field.yml +7 -0
  43. package/main/default/objects/pepsico_approval_cc_log/fields/operator.field.yml +7 -0
  44. package/main/default/objects/pepsico_approval_cc_log/fields/pepsico_material_approval.field.yml +7 -0
  45. package/main/default/objects/pepsico_approval_cc_log/fields/space.field.yml +6 -0
  46. package/main/default/objects/pepsico_approval_cc_log/listviews/all.listview.yml +19 -0
  47. package/main/default/objects/pepsico_approval_cc_log/pepsico_approval_cc_log.object.yml +16 -0
  48. package/main/default/objects/pepsico_approval_cc_log/permissions/admin.permission.yml +13 -0
  49. package/main/default/objects/pepsico_approval_cc_log/permissions/user.permission.yml +13 -0
  50. package/main/default/objects/pepsico_km_pls/fields/brand.field.yml +10 -0
  51. package/main/default/objects/pepsico_km_pls/fields/content.field.yml +1 -1
  52. package/main/default/objects/pepsico_km_pls/fields/created.field.yml +1 -1
  53. package/main/default/objects/pepsico_km_pls/fields/created_by.field.yml +1 -0
  54. package/main/default/objects/pepsico_km_pls/fields/enable.field.yml +0 -1
  55. package/main/default/objects/pepsico_km_pls/fields/father_nutrient.field.yml +8 -0
  56. package/main/default/objects/pepsico_km_pls/fields/modified.field.yml +1 -0
  57. package/main/default/objects/pepsico_km_pls/fields/modified_by.field.yml +1 -0
  58. package/main/default/objects/pepsico_km_pls/fields/name.field.yml +2 -3
  59. package/main/default/objects/pepsico_km_pls/fields/net_content.field.yml +8 -0
  60. package/main/default/objects/pepsico_km_pls/fields/nrv_percent.field.yml +7 -0
  61. package/main/default/objects/pepsico_km_pls/fields/nutrient.field.yml +8 -0
  62. package/main/default/objects/pepsico_km_pls/fields/nutrient_value.field.yml +8 -0
  63. package/main/default/objects/pepsico_km_pls/fields/package_type.field.yml +8 -0
  64. package/main/default/objects/pepsico_km_pls/fields/pls_file.field.yml +1 -1
  65. package/main/default/objects/pepsico_km_pls/fields/product.field.yml +3 -2
  66. package/main/default/objects/pepsico_km_pls/fields/product_standard.field.yml +8 -0
  67. package/main/default/objects/pepsico_km_pls/fields/serving_amount.field.yml +8 -0
  68. package/main/default/objects/pepsico_km_pls/fields/serving_desc.field.yml +8 -0
  69. package/main/default/objects/pepsico_km_pls/fields/shelf_life.field.yml +7 -0
  70. package/main/default/objects/pepsico_km_pls/fields/storage_condition.field.yml +9 -0
  71. package/main/default/objects/pepsico_km_pls/fields/tag.field.yml +3 -3
  72. package/main/default/objects/pepsico_km_pls/fields/taste.field.yml +1 -1
  73. package/main/default/objects/pepsico_km_pls/fields/unit.field.yml +7 -0
  74. package/main/default/objects/pepsico_km_pls/listviews/all.listview.yml +13 -3
  75. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_activate.button.js +6 -0
  76. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_activate.button.yml +110 -0
  77. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_batch_upload_pls.button.yml +147 -0
  78. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_deactivate.button.js +6 -0
  79. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_deactivate.button.yml +110 -0
  80. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_extract_rules.button.js +6 -0
  81. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_extract_rules.button.yml +110 -0
  82. package/main/default/objects/pepsico_km_pls_file/buttons/standard_delete.button.js +9 -0
  83. package/main/default/objects/pepsico_km_pls_file/buttons/standard_delete.button.yml +1 -0
  84. package/main/default/objects/pepsico_km_pls_file/buttons/standard_new.button.yml +3 -0
  85. package/main/default/objects/pepsico_km_pls_file/fields/ai_extract.field.yml +1 -2
  86. package/main/default/objects/pepsico_km_pls_file/fields/brand.field.yml +10 -0
  87. package/main/default/objects/pepsico_km_pls_file/fields/created.field.yml +2 -2
  88. package/main/default/objects/pepsico_km_pls_file/fields/created_by.field.yml +2 -2
  89. package/main/default/objects/pepsico_km_pls_file/fields/extracting.field.yml +5 -0
  90. package/main/default/objects/pepsico_km_pls_file/fields/is_active.field.yml +7 -0
  91. package/main/default/objects/pepsico_km_pls_file/fields/issue_date.field.yml +8 -0
  92. package/main/default/objects/pepsico_km_pls_file/fields/modified.field.yml +1 -0
  93. package/main/default/objects/pepsico_km_pls_file/fields/modified_by.field.yml +1 -0
  94. package/main/default/objects/pepsico_km_pls_file/fields/name.field.yml +5 -5
  95. package/main/default/objects/pepsico_km_pls_file/fields/pepsico_material.field.yml +1 -1
  96. package/main/default/objects/pepsico_km_pls_file/fields/pepsico_material_approval.field.yml +1 -1
  97. package/main/default/objects/pepsico_km_pls_file/fields/pls_file.field.yml +4 -4
  98. package/main/default/objects/pepsico_km_pls_file/fields/product.field.yml +2 -1
  99. package/main/default/objects/pepsico_km_pls_file/fields/product_name.field.yml +10 -0
  100. package/main/default/objects/pepsico_km_pls_file/fields/rule_count.field.yml +16 -0
  101. package/main/default/objects/pepsico_km_pls_file/fields/sku.field.yml +10 -0
  102. package/main/default/objects/pepsico_km_pls_file/fields/version.field.yml +9 -0
  103. package/main/default/objects/pepsico_km_pls_file/listviews/all.listview.yml +10 -2
  104. package/main/default/objects/pepsico_km_pls_file/pepsico_km_pls_file.object.yml +2 -1
  105. package/main/default/objects/pepsico_km_pls_file/permissions/pepsico_approve.permission.yml +13 -1
  106. package/main/default/objects/pepsico_km_pls_file/permissions/pepsico_approve_cooperate.permission.yml +13 -1
  107. package/main/default/objects/pepsico_material/buttons/pepsico_nullify_material.button.yml +114 -37
  108. package/main/default/objects/pepsico_material/buttons/pepsico_onedrive_edit_material.button.yml +1 -1
  109. package/main/default/objects/pepsico_material/buttons/pepsico_update_material.button.yml +1 -0
  110. package/main/default/objects/pepsico_material/fields/void_at.field.yml +11 -0
  111. package/main/default/objects/pepsico_material/fields/void_by.field.yml +12 -0
  112. package/main/default/objects/pepsico_material/fields/void_material.field.yml +2 -2
  113. package/main/default/objects/pepsico_material/fields/void_reason.field.yml +12 -0
  114. package/main/default/objects/pepsico_material/pepsico_material.object.yml +3 -0
  115. package/main/default/objects/pepsico_material_approval/buttons/pepsico_cc.button.yml +115 -0
  116. package/main/default/objects/pepsico_material_approval/buttons/pepsico_confirm_online.button.yml +19 -2
  117. package/main/default/objects/pepsico_material_approval/buttons/pepsico_material_upload.button.yml +19 -2
  118. package/main/default/objects/pepsico_material_approval/buttons/pepsico_postpone_review.button.yml +18 -0
  119. package/main/default/objects/pepsico_material_approval/buttons/pepsico_urgent_review.button.yml +18 -0
  120. package/main/default/objects/pepsico_material_approval/fields/cc_users.field.yml +30 -0
  121. package/main/default/objects/pepsico_material_approval/fields/pre_ca_reviewer.field.yml +3 -1
  122. package/main/default/objects/pepsico_material_approval/fields/pre_legal_reviewer.field.yml +3 -1
  123. package/main/default/objects/pepsico_material_approval/fields/pre_ns_reviewer.field.yml +3 -1
  124. package/main/default/objects/pepsico_material_approval/fields/pre_reviewer.field.yml +3 -1
  125. package/main/default/objects/pepsico_material_approval/fields/pre_sra_reviewer.field.yml +3 -1
  126. package/main/default/triggers/pepsico_km_pls_file_active_sync.trigger.yml +31 -0
  127. package/main/default/triggers/pepsico_km_pls_file_title_update.trigger.yml +35 -0
  128. package/main/default/triggers/pepsico_km_pls_product_name_update.trigger.yml +1 -1
  129. package/main/default/triggers/pepsico_material_void_reason_required.trigger.yml +24 -0
  130. package/package.json +1 -1
  131. package/main/default/imports/pepsico_km_pls.import.yml +0 -17
  132. package/main/default/triggers/pepsico_km_pls_file_product_name_update.trigger.yml +0 -50
@@ -11,9 +11,12 @@ enable_trash: false
11
11
  enable_workflow: true
12
12
  field_groups:
13
13
  - group_name: 通用
14
+ - group_name: 作废信息
14
15
  - group_name: 抽查情况
15
16
  - group_name: 审核情况
16
17
  collapsed: true
18
+ - group_name: 预审情况
19
+ collapsed: true
17
20
  - group_name: 素材版本历史
18
21
  collapsed: true
19
22
  - group_name: Sharepoint集成
@@ -0,0 +1,115 @@
1
+ name: pepsico_cc
2
+ amis_schema: |-
3
+ {
4
+ "type": "service",
5
+ "body": [
6
+ {
7
+ "type": "button",
8
+ "label": "抄送",
9
+ "id": "u:pepsico_cc",
10
+ "editorState": "default",
11
+ "visibleOn": "${owner === context.userId && current_step != 'draft' && current_step != 'conclusion' && formFactor != 'SMALL'}",
12
+ "themeCss": {
13
+ "className": {
14
+ "background:default": "var(--private)",
15
+ "font:default": {
16
+ "color": "#ffffff"
17
+ },
18
+ "border:default": {
19
+ "top-border-color": "#ffffff",
20
+ "left-border-style": "solid",
21
+ "left-border-color": "#ffffff",
22
+ "right-border-style": "solid",
23
+ "right-border-color": "#ffffff",
24
+ "top-border-style": "solid",
25
+ "bottom-border-style": "solid",
26
+ "bottom-border-color": "#ffffff"
27
+ }
28
+ }
29
+ },
30
+ "actionType": "dialog",
31
+ "dialog": {
32
+ "type": "dialog",
33
+ "title": "抄送",
34
+ "body": [
35
+ {
36
+ "type": "form",
37
+ "id": "u:pepsico_cc_form",
38
+ "api": {
39
+ "url": "/api/pepsico-content/approve/cc/${recordId}",
40
+ "method": "post",
41
+ "requestAdaptor": "api.data = { cc_users: api.data.cc_users || [] }; return api;",
42
+ "messages": {
43
+ "success": "抄送人已更新"
44
+ }
45
+ },
46
+ "body": [
47
+ {
48
+ "type": "select",
49
+ "name": "cc_users",
50
+ "label": "抄送人",
51
+ "multiple": true,
52
+ "joinValues": false,
53
+ "extractValue": true,
54
+ "searchable": true,
55
+ "clearable": true,
56
+ "placeholder": "请输入邮箱进行搜索",
57
+ "value": "${cc_users}",
58
+ "labelField": "email",
59
+ "valueField": "user",
60
+ "description": "新增的被抄送人可查看本审批单,并会在素材被驳回、通过待上线、审核完成等关键节点收到通知;若移除某抄送人,其在后续关键节点将不再收到通知。",
61
+ "source": {
62
+ "method": "get",
63
+ "url": "/api/v1/space_users?top=1000&fields=[\"email\",\"user\",\"name\"]&sort=email",
64
+ "adaptor": "return { data: payload.data.items || [] };",
65
+ "messages": {}
66
+ }
67
+ }
68
+ ],
69
+ "onEvent": {
70
+ "submitSucc": {
71
+ "actions": [
72
+ {
73
+ "actionType": "broadcast",
74
+ "args": {
75
+ "eventName": "@data.changed.pepsico_material_approval"
76
+ },
77
+ "data": {
78
+ "objectName": "pepsico_material_approval"
79
+ }
80
+ }
81
+ ]
82
+ }
83
+ }
84
+ }
85
+ ],
86
+ "showCloseButton": true,
87
+ "closeOnOutside": false,
88
+ "closeOnEsc": false,
89
+ "showErrorMsg": true,
90
+ "showLoading": true,
91
+ "draggable": false,
92
+ "size": "md"
93
+ }
94
+ }
95
+ ],
96
+ "regions": [
97
+ "body"
98
+ ],
99
+ "data": {
100
+ "context": {},
101
+ "dataComponentId": "",
102
+ "record_id": "",
103
+ "record": {},
104
+ "permissions": {}
105
+ },
106
+ "id": "u:pepsico_cc_service",
107
+ "bodyClassName": "p-0",
108
+ "dsType": "api"
109
+ }
110
+ is_enable: true
111
+ label: 抄送
112
+ locked: false
113
+ 'on': record_only
114
+ type: amis_button
115
+ visible: true
@@ -10,6 +10,24 @@ amis_schema: |-
10
10
  "editorState": "default",
11
11
  "visibleOn": "${material_owner_id == context.user.user && current_step == 'awaiting_deployment' && formFactor != 'SMALL'}",
12
12
  "actionType": "ajax",
13
+ "themeCss": {
14
+ "className": {
15
+ "background:default": "var(--private)",
16
+ "font:default": {
17
+ "color": "#ffffff"
18
+ },
19
+ "border:default": {
20
+ "top-border-color": "#ffffff",
21
+ "left-border-style": "solid",
22
+ "left-border-color": "#ffffff",
23
+ "right-border-style": "solid",
24
+ "right-border-color": "#ffffff",
25
+ "top-border-style": "solid",
26
+ "bottom-border-style": "solid",
27
+ "bottom-border-color": "#ffffff"
28
+ }
29
+ }
30
+ },
13
31
  "onEvent": {
14
32
  "click": {
15
33
  "weight": 0,
@@ -209,8 +227,7 @@ amis_schema: |-
209
227
  }
210
228
  ]
211
229
  }
212
- },
213
- "level": "info"
230
+ }
214
231
  }
215
232
  ],
216
233
  "regions": [
@@ -10,6 +10,24 @@ amis_schema: |-
10
10
  "editorState": "default",
11
11
  "visibleOn": "${owner == context.user.user && current_step == 'draft' && formFactor != 'SMALL'}",
12
12
  "disabledOn": "${classification==='MD-PO1-PO18' ? materials_quantity >= 300 : materials_quantity >= 50}",
13
+ "themeCss": {
14
+ "className": {
15
+ "background:default": "var(--private)",
16
+ "font:default": {
17
+ "color": "#ffffff"
18
+ },
19
+ "border:default": {
20
+ "top-border-color": "#ffffff",
21
+ "left-border-style": "solid",
22
+ "left-border-color": "#ffffff",
23
+ "right-border-style": "solid",
24
+ "right-border-color": "#ffffff",
25
+ "top-border-style": "solid",
26
+ "bottom-border-style": "solid",
27
+ "bottom-border-color": "#ffffff"
28
+ }
29
+ }
30
+ },
13
31
  "onEvent": {
14
32
  "click": {
15
33
  "weight": 0,
@@ -421,8 +439,7 @@ amis_schema: |-
421
439
  }
422
440
  ]
423
441
  }
424
- },
425
- "level": "info"
442
+ }
426
443
  }
427
444
  ],
428
445
  "regions": [
@@ -9,6 +9,24 @@ amis_schema: |-
9
9
  "id": "u:pepsico_postpone_review",
10
10
  "editorState": "default",
11
11
  "visibleOn": "${(current_step == 'departmental_review' || current_step == 'personnel_review' || current_step == 'submitter_revisions') && !is_urgent && !ARRAYINCLUDES(person_pending_approve, context.user.user) && ARRAYINCLUDES(person_approved, context.user.user) && !ARRAYINCLUDES(postpone_marker_users, context.user.user) && !ARRAYINCLUDES(review_postponed_users, context.user.user) && !is_skip_approver && ((ARRAYINCLUDES(ns_reviewer, context.user.user) && ns_approval_status == false) || (ARRAYINCLUDES(legal_reviewer, context.user.user) && legal_approval_status == false) || (ARRAYINCLUDES(sra_reviewer, context.user.user) && sra_approval_status == false) || (ARRAYINCLUDES(ca_reviewer, context.user.user) && ca_approval_status == false) || (ARRAYINCLUDES(reviewer, context.user.user) && approval_status == false) || (pre_ns_reviewer == context.user.user && pre_ns_approval_status == false) || (pre_legal_reviewer == context.user.user && pre_legal_approval_status == false) || (pre_sra_reviewer == context.user.user && pre_sra_approval_status == false) || (pre_ca_reviewer == context.user.user && pre_ca_approval_status == false) || (pre_reviewer == context.user.user && pre_approval_status == false)) && formFactor != 'SMALL'}",
12
+ "themeCss": {
13
+ "className": {
14
+ "background:default": "var(--private)",
15
+ "font:default": {
16
+ "color": "#ffffff"
17
+ },
18
+ "border:default": {
19
+ "top-border-color": "#ffffff",
20
+ "left-border-style": "solid",
21
+ "left-border-color": "#ffffff",
22
+ "right-border-style": "solid",
23
+ "right-border-color": "#ffffff",
24
+ "top-border-style": "solid",
25
+ "bottom-border-style": "solid",
26
+ "bottom-border-color": "#ffffff"
27
+ }
28
+ }
29
+ },
12
30
  "onEvent": {
13
31
  "click": {
14
32
  "weight": 0,
@@ -17,6 +17,24 @@ amis_schema: |-
17
17
  "visibleOn": "${(current_step == 'departmental_review' || current_step == 'personnel_review') && !is_urgent && context.user.user == owner && (context.user.is_collaborator !== true || canUrgent === true || quota) && formFactor != 'SMALL'}",
18
18
  "disabledOn": "${quota && quota.available === 0}",
19
19
  "disabledTip": "${quota && quota.available === 0 ? (reason || '暂无加急次数') : ''}",
20
+ "themeCss": {
21
+ "className": {
22
+ "background:default": "var(--private)",
23
+ "font:default": {
24
+ "color": "#ffffff"
25
+ },
26
+ "border:default": {
27
+ "top-border-color": "#ffffff",
28
+ "left-border-style": "solid",
29
+ "left-border-color": "#ffffff",
30
+ "right-border-style": "solid",
31
+ "right-border-color": "#ffffff",
32
+ "top-border-style": "solid",
33
+ "bottom-border-style": "solid",
34
+ "bottom-border-color": "#ffffff"
35
+ }
36
+ }
37
+ },
20
38
  "onEvent": {
21
39
  "click": {
22
40
  "weight": 0,
@@ -0,0 +1,30 @@
1
+ name: cc_users
2
+ amis:
3
+ id: 'u:approval_cc_users'
4
+ type: select
5
+ multiple: true
6
+ joinValues: false
7
+ extractValue: true
8
+ searchable: true
9
+ clearable: true
10
+ placeholder: 请输入邮箱进行搜索
11
+ source:
12
+ method: get
13
+ url: >-
14
+ /api/v1/space_users?top=1000&fields=["email","user","name"]&sort=email
15
+ adaptor: 'return { data: (payload.data.items || []).map(function(i){ return { label: i.email, value: i.user }; }) };'
16
+ messages: {}
17
+ description: 被抄送人可查看本审批单,并在素材被驳回、通过待上线、审核完成等关键节点也会收到通知。
18
+ enable_thousands: true
19
+ filters: []
20
+ group: 审核人员
21
+ hidden: false
22
+ inlineHelpText: 被抄送人可查看本审批单,并在素材被驳回、通过待上线、审核完成等关键节点也会收到通知。
23
+ is_wide: true
24
+ label: 抄送人
25
+ multiple: true
26
+ data_type: text
27
+ required: false
28
+ sort_no: 2360
29
+ type: select
30
+ visible_on: ''
@@ -1,6 +1,8 @@
1
1
  name: pre_ca_reviewer
2
2
  amis:
3
3
  id: 'u:pre_ca_reviewer'
4
+ className:
5
+ hidden: '${approval_type !== ''departmental_review''}'
4
6
  description: ''
5
7
  enable_thousands: true
6
8
  filters: []
@@ -14,4 +16,4 @@ required: false
14
16
  sort_no: 2940
15
17
  static: true
16
18
  type: lookup
17
- visible_on: approval_type == 'departmental_review'
19
+ visible_on: ''
@@ -1,6 +1,8 @@
1
1
  name: pre_legal_reviewer
2
2
  amis:
3
3
  id: 'u:pre_legal_reviewer'
4
+ className:
5
+ hidden: '${approval_type !== ''departmental_review''}'
4
6
  description: ''
5
7
  enable_thousands: true
6
8
  filters: []
@@ -14,4 +16,4 @@ required: false
14
16
  sort_no: 2940
15
17
  static: true
16
18
  type: lookup
17
- visible_on: approval_type == 'departmental_review'
19
+ visible_on: ''
@@ -1,6 +1,8 @@
1
1
  name: pre_ns_reviewer
2
2
  amis:
3
3
  id: 'u:pre_ns_reviewer'
4
+ className:
5
+ hidden: '${approval_type !== ''departmental_review''}'
4
6
  description: ''
5
7
  enable_thousands: true
6
8
  filters: []
@@ -14,4 +16,4 @@ required: false
14
16
  sort_no: 2940
15
17
  static: true
16
18
  type: lookup
17
- visible_on: approval_type == 'departmental_review'
19
+ visible_on: ''
@@ -1,6 +1,8 @@
1
1
  name: pre_reviewer
2
2
  amis:
3
3
  id: 'u:pre_reviewer'
4
+ className:
5
+ hidden: '${approval_type !== ''personnel_review''}'
4
6
  description: ''
5
7
  enable_thousands: true
6
8
  filters: []
@@ -14,4 +16,4 @@ required: false
14
16
  sort_no: 2940
15
17
  static: true
16
18
  type: lookup
17
- visible_on: approval_type == 'personnel_review'
19
+ visible_on: ''
@@ -1,6 +1,8 @@
1
1
  name: pre_sra_reviewer
2
2
  amis:
3
3
  id: 'u:pre_sra_reviewer'
4
+ className:
5
+ hidden: '${approval_type !== ''departmental_review''}'
4
6
  description: ''
5
7
  enable_thousands: true
6
8
  filters: []
@@ -14,4 +16,4 @@ required: false
14
16
  sort_no: 2940
15
17
  static: true
16
18
  type: lookup
17
- visible_on: approval_type == 'departmental_review'
19
+ visible_on: ''
@@ -0,0 +1,31 @@
1
+ name: pepsico_km_pls_file_active_sync
2
+ listenTo: pepsico_km_pls_file
3
+ when:
4
+ - beforeUpdate
5
+ isEnabled: true
6
+ handler: |-
7
+ // global: {_:lodash, moment, validator, filters}
8
+ // ctx
9
+ // objects
10
+ // services
11
+
12
+ const { _ } = global;
13
+ const { doc, id } = ctx.params;
14
+
15
+ // 仅在本次更新涉及 is_active(生效) 时处理
16
+ if (doc && Object.prototype.hasOwnProperty.call(doc, 'is_active')) {
17
+ const old = await objects.pepsico_km_pls_file.findOne(id);
18
+ const newVal = doc.is_active === true;
19
+ const oldVal = !!(old && old.is_active === true);
20
+
21
+ // 仅在生效状态实际发生变化时, 同步子表 pepsico_km_pls 的生效状态
22
+ if (oldVal !== newVal) {
23
+ const rules = await objects.pepsico_km_pls.find({ filters: [['pls_file', '=', id]], fields: ['_id'] });
24
+ for (const rule of rules) {
25
+ await objects.pepsico_km_pls.directUpdate(rule._id, { enable: newVal });
26
+ }
27
+ }
28
+ }
29
+ authentication_type: none
30
+ locked: false
31
+ type: code
@@ -0,0 +1,35 @@
1
+ name: pepsico_km_pls_file_title_update
2
+ listenTo: pepsico_km_pls_file
3
+ when:
4
+ - beforeInsert
5
+ - beforeUpdate
6
+ isEnabled: true
7
+ handler: |-
8
+ // global: {_:lodash, moment, validator, filters}
9
+ // ctx
10
+ // objects
11
+ // services
12
+
13
+ const { _ } = global;
14
+ const { doc } = ctx.params;
15
+
16
+ // 标题(name)取 PLS原始文件(pdf) 的名称
17
+ if (doc && doc.pls_file) {
18
+ const fileId = _.isArray(doc.pls_file) ? doc.pls_file[0] : doc.pls_file;
19
+ if (fileId) {
20
+ const files = await objects.cfs_files_filerecord.directFind({
21
+ filters: [['_id', '=', fileId]],
22
+ fields: ['original']
23
+ });
24
+ const fileRecord = files && files[0];
25
+ const fileName = (fileRecord && fileRecord.original && fileRecord.original.name) || '';
26
+ if (fileName) {
27
+ doc.name = fileName.replace(/\.pdf$/i, '');
28
+ }
29
+ }
30
+ }
31
+
32
+ return { doc };
33
+ authentication_type: none
34
+ locked: false
35
+ type: code
@@ -3,7 +3,7 @@ listenTo: pepsico_km_pls
3
3
  when:
4
4
  - afterInsert
5
5
  - afterUpdate
6
- isEnabled: true
6
+ isEnabled: false
7
7
  handler: >-
8
8
  // global: {_:lodash, moment, validator, filters}
9
9
 
@@ -0,0 +1,24 @@
1
+ name: pepsico_material_void_reason_required
2
+ listenTo: pepsico_material
3
+ when:
4
+ - beforeInsert
5
+ - beforeUpdate
6
+ isEnabled: true
7
+ handler: |-
8
+ const { _ } = global;
9
+ const { doc, previousDoc } = ctx.params;
10
+
11
+ const isSettingVoidMaterial = doc.void_material === true && (!previousDoc || previousDoc.void_material !== true);
12
+
13
+ if(isSettingVoidMaterial){
14
+ const voidReason = doc.void_reason || previousDoc.void_reason;
15
+ if(_.isEmpty(_.trim(voidReason))){
16
+ throw new Error('请填写作废原因');
17
+ }
18
+ // 首次作废时盖上作废人、作废时间(服务端为准,避免前端绕过或后续编辑覆盖)
19
+ doc.void_by = ctx.params.userId || doc.void_by;
20
+ doc.void_at = new Date();
21
+ }
22
+ authentication_type: none
23
+ locked: false
24
+ type: code
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos-labs/content-compliance",
3
- "version": "0.7.21",
3
+ "version": "0.8.2",
4
4
  "description": "内容审核系统",
5
5
  "main": "package.service.js",
6
6
  "scripts": {
@@ -1,17 +0,0 @@
1
- name: pepsico_km_pls
2
- description: PLS规则导入
3
- encoding: GB2312
4
- field_mappings:
5
- - api_name: name
6
- header: 品牌(id)
7
- save_key_while_fail: true
8
- - api_name: taste
9
- header: 口味
10
- - api_name: tag
11
- header: 标签
12
- - api_name: content
13
- header: 规则原文
14
- locked: false
15
- object_name: pepsico_km_pls
16
- operation: insert
17
- value_separator: ','
@@ -1,50 +0,0 @@
1
- name: pepsico_km_pls_file_product_name_update
2
- listenTo: pepsico_km_pls_file
3
- when:
4
- - afterInsert
5
- - afterUpdate
6
- isEnabled: true
7
- handler: >-
8
- // global: {_:lodash, moment, validator, filters}
9
-
10
- // ctx
11
-
12
- // objects
13
-
14
- // services
15
-
16
-
17
- const { _ } = global;
18
-
19
-
20
- console.log(ctx.params)
21
-
22
- const record = await objects.pepsico_km_pls_file.findOne(ctx.params.id);
23
-
24
- const products = _.split(record.product, '-');
25
-
26
- const pLists = await objects.picklists.find({ filters: ["code", "=",
27
- "223321001114213"] })
28
-
29
- if (products.length > 0 && pLists.length > 0) {
30
- const pRecords = await objects.picklist_options.find({
31
- filters: [
32
- ["picklist", "=", pLists[0]._id],
33
- ["value", "in", products]
34
- ]
35
- });
36
- let pNames = [];
37
-
38
- _.each(products, (pId) => {
39
- const pRecord = _.find(pRecords, { value: pId });
40
- if (pRecord) {
41
- pNames.push(pRecord.name)
42
- }
43
- })
44
- await objects.pepsico_km_pls_file.directUpdate(ctx.params.id, {
45
- name: `${_.join(pNames, '-')}`
46
- })
47
- }
48
- authentication_type: none
49
- locked: false
50
- type: code