@steedos-labs/content-compliance 1.0.0 → 1.0.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 (73) hide show
  1. package/dist/index.js +1 -1
  2. package/lib/actions/contentHubFillOnSave.d.ts +5 -0
  3. package/lib/actions/contentHubFillOnSave.js +49 -0
  4. package/lib/actions/contentHubFillOnSave.js.map +1 -0
  5. package/lib/actions/contentHubMaterialGroups.js +19 -35
  6. package/lib/actions/contentHubMaterialGroups.js.map +1 -1
  7. package/lib/actions/contentHubSyncPreview.js +23 -19
  8. package/lib/actions/contentHubSyncPreview.js.map +1 -1
  9. package/lib/actions/index.d.ts +1 -0
  10. package/lib/actions/index.js +1 -0
  11. package/lib/actions/index.js.map +1 -1
  12. package/lib/methods/__tests__/contentHubFormFill.test.d.ts +1 -0
  13. package/lib/methods/__tests__/contentHubFormFill.test.js +274 -0
  14. package/lib/methods/__tests__/contentHubFormFill.test.js.map +1 -0
  15. package/lib/methods/__tests__/contentHubMaterialGroupRule.test.js +43 -6
  16. package/lib/methods/__tests__/contentHubMaterialGroupRule.test.js.map +1 -1
  17. package/lib/methods/__tests__/contentHubPush.test.js +503 -9
  18. package/lib/methods/__tests__/contentHubPush.test.js.map +1 -1
  19. package/lib/methods/approval_engine.js +9 -6
  20. package/lib/methods/approval_engine.js.map +1 -1
  21. package/lib/methods/consts.d.ts +1 -0
  22. package/lib/methods/consts.js.map +1 -1
  23. package/lib/methods/content_hub.d.ts +1 -0
  24. package/lib/methods/content_hub.js +203 -25
  25. package/lib/methods/content_hub.js.map +1 -1
  26. package/lib/methods/content_hub_copyright.d.ts +15 -0
  27. package/lib/methods/content_hub_copyright.js +223 -0
  28. package/lib/methods/content_hub_copyright.js.map +1 -0
  29. package/lib/methods/content_hub_form_fill.d.ts +2 -0
  30. package/lib/methods/content_hub_form_fill.js +75 -0
  31. package/lib/methods/content_hub_form_fill.js.map +1 -0
  32. package/lib/methods/content_hub_material_group.d.ts +1 -0
  33. package/lib/methods/content_hub_material_group.js +14 -1
  34. package/lib/methods/content_hub_material_group.js.map +1 -1
  35. package/lib/methods/content_hub_material_group_rule.d.ts +17 -1
  36. package/lib/methods/content_hub_material_group_rule.js +77 -4
  37. package/lib/methods/content_hub_material_group_rule.js.map +1 -1
  38. package/lib/methods/content_hub_sync_rule.d.ts +4 -0
  39. package/lib/methods/content_hub_sync_rule.js +29 -1
  40. package/lib/methods/content_hub_sync_rule.js.map +1 -1
  41. package/lib/methods/content_hub_uploader.d.ts +24 -0
  42. package/lib/methods/content_hub_uploader.js +281 -0
  43. package/lib/methods/content_hub_uploader.js.map +1 -0
  44. package/lib/methods/pls.d.ts +3 -0
  45. package/lib/methods/pls.js +39 -35
  46. package/lib/methods/pls.js.map +1 -1
  47. package/main/default/objects/pepesio_ch__c/fields/media_type.field.yml +2 -0
  48. package/main/default/objects/pepesio_ch__c/fields/pepsico_material_approval.field.yml +6 -0
  49. package/main/default/objects/pepesio_ch__c/fields/push_status.field.yml +11 -0
  50. package/main/default/objects/pepesio_ch__c/fields/type.field.yml +48 -8
  51. package/main/default/objects/pepesio_ch__c/listviews/all.listview.yml +2 -0
  52. package/main/default/objects/pepsico_ch_material_group_rule/fields/classification.field.yml +1 -1
  53. package/main/default/objects/pepsico_ch_material_group_rule/fields/priority.field.yml +10 -0
  54. package/main/default/objects/pepsico_ch_material_group_rule/fields/query_mode.field.yml +12 -0
  55. package/main/default/objects/pepsico_ch_material_group_rule/listviews/all.listview.yml +4 -2
  56. package/main/default/objects/pepsico_ch_material_group_rule/pepsico_ch_material_group_rule.object.yml +2 -1
  57. package/main/default/objects/pepsico_material_approval/buttons/pepsico_confirm_online.button.yml +78 -1
  58. package/main/default/objects/pepsico_material_approval/fields/available_channels.field.yml +2 -0
  59. package/main/default/objects/pepsico_material_approval/fields/ch_material_group.field.yml +5 -12
  60. package/main/default/objects/pepsico_material_approval/fields/ch_material_group_path.field.yml +5 -3
  61. package/main/default/objects/pepsico_material_approval/fields/ch_sync_enabled.field.yml +10 -0
  62. package/main/default/objects/pepsico_material_approval/fields/ch_sync_manual.field.yml +12 -0
  63. package/main/default/objects/pepsico_material_approval/fields/ch_sync_rule_check.field.yml +4 -12
  64. package/main/default/objects/pepsico_material_approval/fields/ch_uploader_notified_group.field.yml +11 -0
  65. package/main/default/objects/pepsico_material_approval/fields/content_rule.field.yml +2 -0
  66. package/main/default/objects/pepsico_material_approval/fields/effective_date.field.yml +2 -0
  67. package/main/default/objects/pepsico_material_approval/fields/expiry_date.field.yml +2 -0
  68. package/main/default/objects/pepsico_material_approval/fields/material_editable.field.yml +78 -0
  69. package/main/default/objects/pepsico_material_approval/fields/material_type.field.yml +2 -0
  70. package/main/default/objects/pepsico_material_approval_data/fields/guding_pass.field.yml +9 -1
  71. package/main/default/objects/pepsico_material_data/fields/guding_pass.field.yml +9 -1
  72. package/main/default/triggers/pepsico_material_approval_content_hub.trigger.yml +26 -0
  73. package/package.json +1 -1
@@ -5,20 +5,60 @@ data_type: text
5
5
  group: 通用
6
6
  label: 文件类型
7
7
  options:
8
- - label: jfif
9
- value: jfif
10
- - label: jpeg
11
- value: jpeg
12
8
  - label: jpg
13
9
  value: jpg
14
- - label: mov
15
- value: mov
16
- - label: mp4
17
- value: mp4
10
+ - label: jpeg
11
+ value: jpeg
12
+ - label: jfif
13
+ value: jfif
18
14
  - label: png
19
15
  value: png
20
16
  - label: gif
21
17
  value: gif
18
+ - label: bmp
19
+ value: bmp
20
+ - label: tiff
21
+ value: tiff
22
+ - label: tif
23
+ value: tif
24
+ - label: svg
25
+ value: svg
26
+ - label: webp
27
+ value: webp
28
+ - label: ico
29
+ value: ico
30
+ - label: heif
31
+ value: heif
32
+ - label: heic
33
+ value: heic
34
+ - label: psd
35
+ value: psd
36
+ - label: mp4
37
+ value: mp4
38
+ - label: avi
39
+ value: avi
40
+ - label: mov
41
+ value: mov
42
+ - label: wmv
43
+ value: wmv
44
+ - label: flv
45
+ value: flv
46
+ - label: mkv
47
+ value: mkv
48
+ - label: webm
49
+ value: webm
50
+ - label: mpeg
51
+ value: mpeg
52
+ - label: mpg
53
+ value: mpg
54
+ - label: 3gp
55
+ value: 3gp
56
+ - label: m4v
57
+ value: m4v
58
+ - label: qt
59
+ value: qt
60
+ - label: zip
61
+ value: zip
22
62
  required: true
23
63
  sort_no: 150
24
64
  type: select
@@ -1,11 +1,13 @@
1
1
  name: all
2
2
  columns:
3
3
  - field: name
4
+ - field: pepsico_material_approval
4
5
  - field: file_name
5
6
  - field: type
6
7
  - field: media_type
7
8
  - field: product
8
9
  - field: material_type
10
+ - field: push_status
9
11
  - field: time
10
12
  crud_mode: table
11
13
  filter_scope: space
@@ -63,7 +63,7 @@ amis:
63
63
  withChildren: true
64
64
  cascade: true
65
65
  data_type: text
66
- description: 审批单的分类是所选节点本身或其下级时命中; 不填表示该部门所有分类都按 Sales 查
66
+ description: 审批单的分类是所选节点本身或其下级时命中; 不填表示不限分类
67
67
  group: 匹配条件
68
68
  is_wide: true
69
69
  label: 分类
@@ -0,0 +1,10 @@
1
+ name: priority
2
+ defaultValue: 100
3
+ description: 数字越小越先匹配; 多条规则都能命中时, 以最先命中的那条为准
4
+ group: 通用
5
+ label: 优先级
6
+ precision: 0
7
+ required: true
8
+ scale: 0
9
+ sort_no: 110
10
+ type: number
@@ -0,0 +1,12 @@
1
+ name: query_mode
2
+ description: 命中这条规则时, 调 Content Hub 素材组接口传的 Sales 参数。Sales = true 返回接口默认的销售目录; Sales = false 按申请单上选的品牌/产品查素材组
3
+ group: 查询方式
4
+ label: 素材组查询方式
5
+ options:
6
+ - label: 传品牌/产品信息(Sales = false)
7
+ value: product
8
+ - label: 接口默认销售目录(Sales = true)
9
+ value: sales
10
+ required: true
11
+ sort_no: 300
12
+ type: select
@@ -1,11 +1,13 @@
1
1
  name: all
2
2
  columns:
3
+ - field: priority
3
4
  - field: name
4
5
  wrap: true
5
6
  - field: orgs
6
7
  wrap: true
7
8
  - field: classification
8
9
  wrap: true
10
+ - field: query_mode
9
11
  - field: active
10
12
  filter_scope: space
11
13
  filters: []
@@ -14,5 +16,5 @@ label: 所有
14
16
  shared: true
15
17
  shared_to: space
16
18
  sort:
17
- - field_name: created
18
- order: desc
19
+ - field_name: priority
20
+ order: asc
@@ -1,6 +1,6 @@
1
1
  name: pepsico_ch_material_group_rule
2
2
  custom: true
3
- description: 决定填单时「Content Hub 素材组」下拉怎么查。发起人部门 + 分类命中任一启用的规则时按 Sales 范围查(sales=true), 都不命中时按品牌/产品查。
3
+ description: 决定填单时「Content Hub 素材组」下拉怎么查。按优先级取第一条命中(发起人部门 + 分类)的启用规则, 按规则上选的查询方式查; 都不命中时按品牌/产品查。
4
4
  enable_api: true
5
5
  enable_audit: true
6
6
  enable_dataloader: true
@@ -12,6 +12,7 @@ enable_trash: false
12
12
  field_groups:
13
13
  - group_name: 通用
14
14
  - group_name: 匹配条件
15
+ - group_name: 查询方式
15
16
  icon: hierarchy
16
17
  is_enable: true
17
18
  label: Content Hub 素材组查询规则
@@ -32,6 +32,82 @@ amis_schema: |-
32
32
  "click": {
33
33
  "weight": 0,
34
34
  "actions": [
35
+ {
36
+ "actionType": "dialog",
37
+ "expression": "${form_version == 'v3'}",
38
+ "ignoreError": false,
39
+ "dialog": {
40
+ "type": "dialog",
41
+ "title": "上线确认",
42
+ "id": "u:pepsico_confirm_online_v3",
43
+ "body": [
44
+ {
45
+ "type": "tpl",
46
+ "tpl": "确认立即上线吗?",
47
+ "id": "u:pepsico_confirm_online_v3_msg"
48
+ }
49
+ ],
50
+ "actions": [
51
+ {
52
+ "type": "button",
53
+ "actionType": "cancel",
54
+ "label": "取消",
55
+ "id": "u:pepsico_confirm_online_v3_cancel"
56
+ },
57
+ {
58
+ "type": "button",
59
+ "actionType": "confirm",
60
+ "label": "确定",
61
+ "primary": true,
62
+ "id": "u:pepsico_confirm_online_v3_ok",
63
+ "onEvent": {
64
+ "click": {
65
+ "weight": 0,
66
+ "actions": [
67
+ {
68
+ "ignoreError": false,
69
+ "actionType": "disabled",
70
+ "componentId": "u:pepsico_confirm_online_v3_ok"
71
+ },
72
+ {
73
+ "actionType": "ajax",
74
+ "ignoreError": false,
75
+ "outputVar": "responseResult",
76
+ "options": {},
77
+ "api": {
78
+ "url": "/api/pepsico-content/approve/confirm-deployment/${recordId}",
79
+ "method": "post",
80
+ "data": {},
81
+ "messages": {}
82
+ }
83
+ },
84
+ {
85
+ "actionType": "broadcast",
86
+ "args": {
87
+ "eventName": "@data.changed.pepsico_material_approval"
88
+ },
89
+ "data": {
90
+ "objectName": "pepsico_material_approval"
91
+ }
92
+ },
93
+ {
94
+ "ignoreError": false,
95
+ "actionType": "enabled",
96
+ "componentId": "u:pepsico_confirm_online_v3_ok"
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ }
102
+ ],
103
+ "showCloseButton": true,
104
+ "closeOnOutside": false,
105
+ "closeOnEsc": false,
106
+ "showErrorMsg": true,
107
+ "showLoading": true,
108
+ "size": "sm"
109
+ }
110
+ },
35
111
  {
36
112
  "actionType": "dialog",
37
113
  "ignoreError": false,
@@ -223,7 +299,8 @@ amis_schema: |-
223
299
  "draggable": false,
224
300
  "size": "md",
225
301
  "actionType": "dialog"
226
- }
302
+ },
303
+ "expression": "${form_version != 'v3'}"
227
304
  }
228
305
  ]
229
306
  }
@@ -75,3 +75,5 @@ options:
75
75
  required: true
76
76
  sort_no: 1450
77
77
  type: select
78
+ # Content Hub 改版后的新版表单(v3)不再需要该字段, 隐藏; 存量 v1/v2 单据照常显示
79
+ visible_on: form_version != 'v3'
@@ -1,9 +1,14 @@
1
1
  name: ch_material_group
2
2
  amis:
3
3
  id: 'u:ch_material_group'
4
+ # 只在编辑时显示; 只读时不渲染(也就不去查 Content Hub), 改由「Content Hub 素材组路径」显示存下的全路径
5
+ visibleOn: "form_version == 'v3' && ch_sync_enabled == true && global.mode !== 'read'"
4
6
  type: tree-select
5
7
  label: Content Hub 素材组
6
8
  multiple: false
9
+ # 只存素材组 ID 字符串, 不存整个选项对象(否则推送时素材组会变成 [object Object])
10
+ joinValues: false
11
+ extractValue: true
7
12
  clearable: true
8
13
  searchable: true
9
14
  onlyLeaf: false
@@ -34,16 +39,6 @@ amis:
34
39
  api.query = query;
35
40
  return api;
36
41
  messages: {}
37
- onEvent:
38
- change:
39
- weight: 0
40
- actions:
41
- # 同时把选中节点的完整名称路径存下来, Content Hub 那边目录改名 / 删除后历史单据照样能看
42
- - ignoreError: true
43
- actionType: setValue
44
- componentId: 'u:ch_material_group_path'
45
- args:
46
- value: '${event.data.item.materialGroupPath || ""}'
47
42
  data_type: text
48
43
  description: 素材同步到 Content Hub 后存放的位置
49
44
  group: 素材标签
@@ -52,5 +47,3 @@ label: Content Hub 素材组
52
47
  required: false
53
48
  sort_no: 1370
54
49
  type: select
55
- # 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
56
- visible_on: form_version == 'v3' && ch_sync_enabled == true
@@ -2,7 +2,11 @@ name: ch_material_group_path
2
2
  amis:
3
3
  id: 'u:ch_material_group_path'
4
4
  static: true
5
- description: 选择素材组后自动带出
5
+ # 只读时代替素材组下拉显示存下的全路径, 不再查 Content Hub; 编辑时不显示
6
+ label: Content Hub 素材组
7
+ description: 素材同步到 Content Hub 后存放的位置
8
+ visibleOn: "form_version == 'v3' && ch_sync_enabled == true && global.mode === 'read'"
9
+ description: 保存时按所选素材组自动带出完整路径
6
10
  group: 素材标签
7
11
  is_wide: true
8
12
  label: Content Hub 素材组路径
@@ -10,5 +14,3 @@ readonly: true
10
14
  required: false
11
15
  sort_no: 1380
12
16
  type: text
13
- # 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
14
- visible_on: form_version == 'v3' && ch_sync_enabled == true
@@ -1,6 +1,16 @@
1
1
  name: ch_sync_enabled
2
2
  amis:
3
3
  id: 'u:ch_sync_enabled'
4
+ onEvent:
5
+ # 只有用户点选才会触发 change(规则带出用的 setValue 不会), 记下「手动设置过」
6
+ change:
7
+ weight: 0
8
+ actions:
9
+ - ignoreError: true
10
+ actionType: setValue
11
+ componentId: 'u:ch_sync_manual'
12
+ args:
13
+ value: true
4
14
  description: 系统会根据填写的信息自动勾选。如果这批素材不需要同步到 Content Hub,可以取消勾选。
5
15
  group: 素材标签
6
16
  label: 同步到 Content Hub
@@ -0,0 +1,12 @@
1
+ name: ch_sync_manual
2
+ # 辅助字段: 用户在页面上手动勾选 / 取消过「同步到 Content Hub」就记为 true, 之后不再按同步规则自动改开关
3
+ amis:
4
+ id: 'u:ch_sync_manual'
5
+ className: hidden
6
+ description: 用户手动改过「同步到 Content Hub」后为是, 之后不再按同步规则自动带出
7
+ group: 素材标签
8
+ label: 已手动设置同步开关
9
+ required: false
10
+ sort_no: 1367
11
+ type: boolean
12
+ visible_on: form_version == 'v3'
@@ -3,6 +3,8 @@ name: ch_sync_rule_check
3
3
  amis:
4
4
  type: service
5
5
  className: hidden
6
+ # 只在编辑时预判; 只读查看时不请求, 也不改开关
7
+ visibleOn: "form_version == 'v3' && global.mode !== 'read'"
6
8
  api:
7
9
  # url 里引用这几个字段, 任一变化时 service 会重新请求
8
10
  url: '/api/pepsico-content/content-hub/sync-preview?owner_department=${owner_department}&classification=${classification}&product=${product}&kol_classification=${kol_classification}'
@@ -32,16 +34,8 @@ amis:
32
34
  if (event.data.responseStatus !== 0) {
33
35
  return;
34
36
  }
35
- const pick = (v) => _.isPlainObject(v) ? (v.value || v._id) : v;
36
- const str = (v) => { const raw = pick(v); return _.isArray(raw) ? _.map(raw, pick).join(',') : (raw || ''); };
37
- const key = _.map(['owner_department', 'classification', 'product', 'kol_classification'], (k) => str(event.data[k])).join('|');
38
- const store = window.__chSyncRuleKeys || (window.__chSyncRuleKeys = {});
39
- const recordId = event.data._id || 'new';
40
- const prevKey = store[recordId];
41
- store[recordId] = key;
42
- const current = event.data.ch_sync_enabled;
43
- // 打开已有单据时保留已存的选择(用户可能手动关过); 之后这几个字段变了再按规则重新带出
44
- if ((current === true || current === false) && (prevKey === undefined || prevKey === key)) {
37
+ // 用户手动设置过开关就以用户为准; 否则按当前填写的内容和同步规则带出(保存时服务端还会再算一次)
38
+ if (event.data.ch_sync_manual === true) {
45
39
  return;
46
40
  }
47
41
  doAction({ actionType: 'setValue', componentId: 'u:ch_sync_enabled', args: { value: !!event.data.needSync } });
@@ -51,5 +45,3 @@ label: 同步规则预判
51
45
  required: false
52
46
  sort_no: 1366
53
47
  type: text
54
- # 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
55
- visible_on: form_version == 'v3'
@@ -0,0 +1,11 @@
1
+ name: ch_uploader_notified_group
2
+ # 系统字段: 推送成功后已经为哪个素材组开通过上传权限、发过通知邮件, 同一素材组不重复处理
3
+ description: 已开通 Content Hub 上传权限并通知发起人 / Agency 的素材组, 系统自动记录
4
+ group: 素材标签
5
+ hidden: true
6
+ label: 已通知上传的素材组
7
+ omit: true
8
+ readonly: true
9
+ required: false
10
+ sort_no: 1390
11
+ type: text
@@ -76,3 +76,5 @@ readonly: true
76
76
  required: false
77
77
  sort_no: 1500
78
78
  type: select
79
+ # Content Hub 改版后的新版表单(v3)不再需要该字段, 隐藏; 存量 v1/v2 单据照常显示
80
+ visible_on: form_version != 'v3'
@@ -10,3 +10,5 @@ label: 素材生效日期
10
10
  required: true
11
11
  sort_no: 1550
12
12
  type: date
13
+ # 只在 Content Hub 改版后的新版表单(v3)且勾选「同步到 Content Hub」时显示, 该日期只用于推送 Content Hub
14
+ visible_on: form_version == 'v3' && ch_sync_enabled == true
@@ -10,3 +10,5 @@ is_wide: false
10
10
  label: 素材失效日期
11
11
  sort_no: 1600
12
12
  type: date
13
+ # 只在 Content Hub 改版后的新版表单(v3)且勾选「同步到 Content Hub」时显示, 该日期只用于推送 Content Hub
14
+ visible_on: form_version == 'v3' && ch_sync_enabled == true
@@ -0,0 +1,78 @@
1
+ name: material_editable
2
+ # 选项与素材授权规则(content_rule)相同, 动态读取 picklist 223321022150011 的启用选项
3
+ amis:
4
+ id: 'u:material_editable'
5
+ type: tree-select
6
+ label: 是否可以进行素材编辑
7
+ multiple: false
8
+ enableNodePath: true
9
+ showIcon: true
10
+ initiallyOpen: false
11
+ hideRoot: true
12
+ clearable: true
13
+ onlyLeaf: true
14
+ searchable: true
15
+ autoCheckChildren: true
16
+ joinValues: true
17
+ delimiter: 、
18
+ source:
19
+ url: /graphql
20
+ method: post
21
+ requestAdaptor: |-
22
+ api.data = { query:`
23
+ query{
24
+ picklists(filters: [["code", "=", "223321022150011"]]){
25
+ options: _related_picklist_options_picklist(filters: [["enable", "=", true]], sort: "sort_no desc"){
26
+ label: name, value, , parent: parent__expand{ value }
27
+ }
28
+ }
29
+ }
30
+ `}
31
+ adaptor: |+
32
+ const pOptions = payload.data.picklists[0].options;
33
+ let depth = 0;
34
+ function getChildren(value) {
35
+ depth++;
36
+ // 控制递归次数;
37
+ if (depth > 2000) {
38
+ console.log('递归次数过多,请检查数据:', depth, pOptions)
39
+ return [];
40
+ }
41
+ return _.map(_.filter(pOptions, (op) => {
42
+ if (value == null) {
43
+ return op.parent == null
44
+ }
45
+ return op.parent && op.parent.value === value;
46
+ }), item => {
47
+ return {
48
+ ...item,
49
+ children: getChildren(item.value || item.label)
50
+ };
51
+ });
52
+ }
53
+ const options = getChildren(null);
54
+ return { options }
55
+
56
+ messages: {}
57
+ sendOn: ''
58
+ cache: 86400000
59
+ showOutline: false
60
+ cascade: true
61
+ description: ''
62
+ pathSeparator: '-'
63
+ unfoldedLevel: 2
64
+ data_type: text
65
+ description: ''
66
+ enable_thousands: true
67
+ group: 素材标签
68
+ inlineHelpText: ''
69
+ is_wide: true
70
+ label: 是否可以进行素材编辑
71
+ options:
72
+ - label: '1'
73
+ value: '1'
74
+ required: true
75
+ sort_no: 1625
76
+ type: select
77
+ # 只在 Content Hub 改版后的新版表单(v3)且勾选「同步到 Content Hub」时显示, 存量 v1/v2 单据不受影响
78
+ visible_on: form_version == 'v3' && ch_sync_enabled == true
@@ -75,3 +75,5 @@ options:
75
75
  required: true
76
76
  sort_no: 1400
77
77
  type: select
78
+ # Content Hub 改版后的新版表单(v3)不再需要该字段, 隐藏; 存量 v1/v2 单据照常显示
79
+ visible_on: form_version != 'v3'
@@ -7,4 +7,12 @@ group: 审核信息
7
7
  inlineHelpText: ''
8
8
  label: 固定人员审核通过
9
9
  sort_no: 1050
10
- type: boolean
10
+ options:
11
+ - label: √
12
+ value: true
13
+ - label: X
14
+ value: false
15
+ - label: Bypass
16
+ value: pass
17
+ color: '#02355a'
18
+ type: select
@@ -5,4 +5,12 @@ group: 通用
5
5
  label: 固定人员审核通过
6
6
  required: false
7
7
  sort_no: 650
8
- type: boolean
8
+ options:
9
+ - label: √
10
+ value: true
11
+ - label: X
12
+ value: false
13
+ - label: Bypass
14
+ value: pass
15
+ color: '#02355a'
16
+ type: select
@@ -0,0 +1,26 @@
1
+ name: pepsico_material_approval_content_hub
2
+ listenTo: pepsico_material_approval
3
+ when:
4
+ - beforeInsert
5
+ - beforeUpdate
6
+ isEnabled: true
7
+ handler: |-
8
+ // 新版表单(v3)保存时补算「同步到 Content Hub」开关(用户没手动改过时按同步规则)和「Content Hub 素材组路径」,
9
+ // 不依赖页面联动是否生效。逻辑在 src/methods/content_hub_form_fill.ts; 存量单据在那边直接跳过。
10
+ // 只是补算, 任何异常都不能挡住保存(系统已上线, 存量单据照常可改)
11
+ const { doc } = ctx.params;
12
+ try {
13
+ if (!ctx.broker || !doc) {
14
+ return;
15
+ }
16
+ const result = await ctx.broker.call('@steedos-labs/content-compliance.contentHubFillOnSave', {
17
+ doc,
18
+ id: ctx.params.isInsert === true ? null : ctx.params.id
19
+ });
20
+ Object.assign(doc, (result && result.patch) || {});
21
+ } catch (e) {
22
+ console.error('[Content Hub]保存时补算失败, 不影响保存', ctx.params && ctx.params.id, e && e.message);
23
+ }
24
+ authentication_type: none
25
+ locked: false
26
+ type: code
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos-labs/content-compliance",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "内容审核系统",
5
5
  "main": "package.service.js",
6
6
  "scripts": {