@luka-cat-mimi/n8n-nodes-feishu-project
Version:
飞书项目 N8N 集成插件,支持附件管理等功能
169 lines • 7.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const RequestUtils_1 = __importDefault(require("../../../help/utils/RequestUtils"));
const sharedOptions_1 = require("../../../help/utils/sharedOptions");
const description_1 = require("../../../help/description");
const WorkItemInstanceCreateOperate = {
name: '创建工作项',
value: 'work_item_instance:create',
order: 30,
options: [
description_1.DESCRIPTIONS.PROJECT_KEY,
{
displayName: '工作项类型 Name or ID',
name: 'work_item_type_key',
type: 'options',
default: '',
required: true,
description: '空间下工作项类型,需要先选择空间,详见:<a href="https://project.feishu.cn/b/helpcenter/2.0.0/1p8d7djs/3pjp854w">获取空间下工作项类型</a>. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
typeOptions: {
loadOptionsMethod: 'loadWorkItemTypes',
},
},
{
displayName: '工作项名称',
name: 'name',
type: 'string',
default: '',
},
{
displayName: '字段动态赋值',
name: 'field_value_pairs',
type: 'fixedCollection',
typeOptions: {
multipleValues: true,
},
placeholder: '添加字段',
default: {},
description: '字段列表。可参考<a href="https://project.feishu.cn/b/helpcenter/1p8d7djs/1tj6ggll">字段解析格式</a>',
options: [
{
displayName: '字段',
name: 'fields',
values: [
{
displayName: '字段名称 Name or ID',
name: 'field_key',
type: 'options',
default: '',
required: true,
description: '选择要设置的字段。需要先选择空间和工作项类型。字段定义可以通过调用 工作项配置 - 获取字段信息 查看字段定义列表. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
typeOptions: {
loadOptionsMethod: 'loadWorkItemFieldsForWrite',
},
},
{
displayName: '字段值',
name: 'field_value',
type: 'string',
default: '',
description: '字段值,支持任意类型。对于复杂类型(如数组、对象),请输入 JSON 格式字符串。' +
'<br/><br/>传值示例:' +
'<br/><b>text</b>: 直接输入字符串即可' +
'<br/><b>multi_text</b>: [{"type":"paragraph","content":[{"type":"text","text":"文本","attrs":{"fontColor":"blue","italic":"true","underline":"true"}}]}]' +
'<br/><b>select</b>: {"label":"选项1","value":"8lheuaepp"}(value 为选项ID,必填;label 可选)' +
'<br/><b>multi_select</b>: [{"label":"选项1","value":"b0gzgge5o"},{"label":"选项4","value":"et15_j7yl"}](value 为选项ID,必填;label 可选)' +
'<br/><b>user</b>: 735679528XXXXX(用户 user_key)' +
'<br/><b>multi_user</b>: ["735679528XXXXX","731189198XXXXX"](用户 user_key 数组)',
},
],
},
],
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add option',
default: {},
options: [
{
displayName: '流程模板 Name or ID',
name: 'template_id',
type: 'options',
default: '',
description: '工作项流程模板,未传值时默认使用该工作项类型的第一个流程模板。需要先选择空间和工作项类型. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
typeOptions: {
loadOptionsMethod: 'loadWorkflowTemplates',
},
},
{
displayName: '必填模式',
name: 'required_mode',
type: 'options',
options: [
{
name: '不校验必填项',
value: 0,
},
{
name: '校验新建页必填项',
value: 1,
},
],
default: 0,
description: '创建工作项必填模式',
},
sharedOptions_1.batchingOption,
sharedOptions_1.timeoutOption,
],
},
],
async call(index) {
const project_key = this.getNodeParameter('project_key', index, '', {
extractValue: true,
});
const work_item_type_key = this.getNodeParameter('work_item_type_key', index);
const name = this.getNodeParameter('name', index, '');
const options = this.getNodeParameter('options', index, {});
const template_id = options.template_id;
const required_mode = options.required_mode || 0;
const fieldValuePairsCollection = this.getNodeParameter('field_value_pairs', index, {});
const fieldsArray = fieldValuePairsCollection.fields || [];
const field_value_pairs = fieldsArray.map((item) => {
let fieldValue = item.field_value;
if (typeof fieldValue === 'string' && fieldValue.trim()) {
try {
if ((fieldValue.trim().startsWith('[') && fieldValue.trim().endsWith(']')) ||
(fieldValue.trim().startsWith('{') && fieldValue.trim().endsWith('}'))) {
fieldValue = JSON.parse(fieldValue);
}
}
catch {
}
}
return {
field_key: item.field_key,
field_value: fieldValue,
};
});
const body = {
work_item_type_key,
field_value_pairs,
};
if (name) {
body.name = name;
}
if (template_id !== undefined && template_id !== '' && template_id !== null) {
body.template_id = Number(template_id);
}
if (required_mode) {
body.required_mode = required_mode;
}
const result = await RequestUtils_1.default.request.call(this, {
method: 'POST',
url: `/open_api/${project_key}/work_item/create`,
body,
timeout: options.timeout,
});
return {
body,
work_item_id: result,
};
}
};
exports.default = WorkItemInstanceCreateOperate;
//# sourceMappingURL=WorkItemInstanceCreateOperate.js.map