钉钉宜搭

阿里云官方出品

「宜搭」是云钉原生低代码平台(钉钉 PaaS - aPaaS),让企业应用搭建更简单! 帮助中小企业降本提效,加强组织的数字化自主权; 帮助大型企业释放个体创新力,助力组织创新涌现。

因宜搭部门组件不会直接返回该部门下的成员,可通过「宜搭连接器」调用钉钉接口返回部门成员
实现效果:image.png
宜搭自定义连接器使用参考:
https://docs.aliwork.com/docs/yida_support/wtwabe/zevvr1/_1/zbq17y
可以通过以下步骤实现该功能:
1、宜搭连接器工厂创建自定义连接器,调用获取钉钉成员的接口
钉钉接口文档参考:https://open.dingtalk.com/document/isvapp/queries-the-complete-information-of-a-department-user
image.png
2、宜搭数据源调用连接器
宜搭数据源处调连接器使用参考:https://docs.aliwork.com/docs/yida_support/wtwabe/zevvr1/_2/gtkly9/stbfik#ZUnMw
image.png
3、部门组件添加回调事件image.pngimage.png
参考代码:
export function onChange(ctx) {
const inputs = JSON.stringify({
"body": {
"cursor": "0",
"size": "10",
"dept_id": ctx.value[0].value
}
})
this.dataSourceMap.getdeptMember.load({
inputs: inputs
}).then(res => {
const { list } = res.result
if (list.length == 0) { return; }
const memberArr = list.map((item) => {
return {
"employeeField_lp6jxb0a":
[{
label: item.name,
value: item.userid
}]
}
})
this.$('tableField_lp6jxb09').setValue(memberArr)
}).catch((error) => {
console.log(error)
})
}

arana_A 评论 1

4

回答

你好可以参考一下下列代码,注意修改一下子表单的唯一标识及子表单内成员组件的唯一标识```// 子表单onchange事件
export function onTableChange({ value, extra }) {
const { formGroupId, fieldId, from, changes = {}, tableFieldId } = extra || {};
console.log(fieldId, '11', value)
// 必须,避免使用 updateItemValue 更新子表数据后,再次触发 onChange 陷入死循环
if (from === 'setItemValue') { return };
const tableField = this.$('tableField_lp0zc3kc');
// 上述代码必须存在,否则会造成功能异常
// 子表单成员2(多选模式)
if (fieldId && fieldId === 'employeeField_lp0zc3ke') {
const employeeData = value.filter(item => {
return item.employeeField_lp0zc3ke && item.employeeField_lp0zc3ke.length > 0;
});
const users2 = [];
for (let i = 0; i < employeeData.length; i++) {
for (let j = 0; j < employeeData[i].employeeField_lp0zc3ke.length; j++) {
users2.push(employeeData[i].employeeField_lp0zc3ke[j])
}
};
this.$('employeeFieldlp0zc3kf').setValue(.uniqBy(users2, 'value'));
};
}

/**

  • 主表关联表单onchange事件
  • @param value 当前值
    */
    export function onChange({ value }) {
    setTimeout(()=>{
    const arr = this.$('tableField_lp0zc3kc').getValue(); // 获取子表单的值
    const newArr = this.removeFn(arr);
    this.$('employeeField_lp0zc3kf').setValue(newArr) // 赋值给主表去重成员
    },500)
    }

// 处理表单中的成员格式及去重
export function removeFn(arr) {
const obj = {};
arr.forEach(item => {
const employeeFields = item.employeeField_lp0zc3ke || [];
employeeFields.forEach(item1 => {
if (!obj[item1.key]) {
obj[item1.key] = {
key: item1.key,
label: item1.label
};
}
});
});
const result = Object.values(obj);
return result;
}
```
image.png

SuHao 评论 1

4

回答

游客as6kdbzxuw7hy 2023-11-15 547浏览量 回答数 4

2

回答

游客qensf3j2my36k 2023-11-15 489浏览量 回答数 2

2

回答

游客cxnyl2ep53e4g 2023-11-14 141浏览量 回答数 2

4

回答

0

回答

游客w2e2g24nx67cw 2023-11-08 174浏览量 回答数 0

0

回答

游客uup5dza5sastg 2023-11-08 138浏览量 回答数 0

0

回答

游客xjk3pxpuks6uw 2023-10-31 249浏览量 回答数 0

1

回答

5

回答

1

回答

游客s3qv6tjznbp7a 2023-10-25 188浏览量 回答数 1

可以参考下面案例,具体请结合实际情况修改代码。

拖动选项卡到页面中,并配置三个选项:

选择全部时,触发点击动作 onClickall,由于选择全部时,展示全部数据,因此只需重新加载数据源获取数据。

export function onClickall(){   const params = {     "formUuid": "FORM-VFYJ1FGVKZYP49FP075B4BA6VCV931W935HOK31",   }   this.dataSourceMap.getDatas.load(params).then((response) => {     // this.utils.dialog({     //   type: 'alert', // 或confirm     //   title: '请求成功',     //   type: 'success', // PC端支持 info/success/error      //   content: 请求参数为 ${JSON.stringify(params)},返回结果为 ${response},     // })   }) }

选择科研项目时,则触发动作 onClicka,由于只筛选出科研项目的数据,因此需要加载数据源时,需要添加参数在调用接口获取数据,

首先使用 this.$('fliedid').get('content'); 获取文本的内容值“科研项目”,然后将内容作为参数,调用 getDatas 接口,加载数据源,从而实现点击科研项目时筛选科研项目的需求。

export function onClicka(){

  const a = this.$('科研项目文本唯一标识').get('content');   const obj = { "selectField_koh53g2m": a }   const params = {     "formUuid": "FORM-VFYJ1FGVKZYP49FP075B4BA6VCV931W935HOK31",     "searchFieldJson": JSON.stringify(obj),   }   this.dataSourceMap.getDatas.load(params).then((response) => {     // this.utils.dialog({     //   type: 'alert', // 或confirm     //   title: '请求成功',     //   type: 'success', // PC端支持 info/success/error      //   content: 请求参数为 ${JSON.stringify(params)},返回结果为 ${response},     // })   }) }

选择商业项目时,则触发动作 onClickb,由于只筛选出商业项目的数据,因此需要加载数据源时,需要添加参数在调用接口获取数据。

首先使用 this.$('fliedid').get('content'); 获取文本的内容值“商业项目”,然后将内容作为参数,调用 getDatas 接口,加载数据源,从而实现点击科研项目时筛选商业项目的需求。

export function onClickb(){   const b = this.$('商业项目文本唯一标识').get('content');   console.log(b);   let obj = { "selectField_koh53g2m": b }   const params = {     "formUuid": "FORM-VFYJ1FGVKZYP49FP075B4BA6VCV931W935HOK31",     "searchFieldJson": JSON.stringify(obj),   }   this.dataSourceMap.getDatas.load(params).then((response) => {     // this.utils.dialog({     //   type: 'alert', // 或confirm     //   title: '请求成功',     //   type: 'success', // PC端支持 info/success/error      //   content: 请求参数为 ${JSON.stringify(params)},返回结果为 ${response},     // })   }) }

以上仅供参考。

飞云觅宙 评论 1

1

回答

caf5m3sbrmlyg 2023-10-20 204浏览量 回答数 1

可以通过自定义连接器完成在宜搭页面调用外部数据源接口的功能,如果不使用自定义连接器而直接调用外部数据源会报跨域错误,自定义连接器则可以规避该错误,解决前端 JS 直接调用外部接口存在的跨域、鉴权等问题。

步骤一:创建自定义页面:

1. 创建自定义页面,命名为「发送短信」。

2. 添加单行文本组件,命名为「短信内容」,设置为必填项。用于填写您需要以短信形式发送的通知内容。

添加下拉单选组件,命名为「选择手机号」,组件选项填写为您需要接收短信通知的手机号码,并设置为必填项。用于选择您接收通知的手机号码。

步骤二:创建自定义连接器:

在连接器工厂根据如何新建自定义连接器所述方式及步骤即可创建自定义连接器。

步骤三:自定义页面内新建数据源:

1. 「发送短信」自定义页面>>数据源面板>>添加>>连接器。

填写名称 >> 选择连接器 >> 填写数据源相关配置项 >> 选择连接器执行动作 >> 填写连接器执行动作参数。

说明:

1. 在进行选择连接器操作时,连接器可以选择为钉钉官方连接器,也可选择宜搭自定义连接器,

2. 钉钉官方连接器无须鉴权,自定义连接器是否需要鉴权取决于连接器本身是否增加了鉴权能力。

一旦连接器和执行动作选择完毕之后,系统会自动给出出参和入参的解释,可以直接填入参默认值,也可以绑定变量。本案例为绑定默认值,后面事件中再去修改入参调用。本案例的入参有两个字段,分别为 mobile 数据格式为 string,content 数据格式也是 string,填写默认值。

3. 动作设置 >> 新建动作 >> onChange 值发生变化 >> 确定

将下述代码填写到onChange()函数中。

特别提醒: 1. 在使用下述代码时应注意数据源名称的替换,代码内数据源名称与您所创建的数据源名称应保持一致。否则会因找不到数据源造成加载出错问题。

1. 代码内涉及组件唯一标识的部分应注意组件唯一标识的替换,否则会因查询不到组件而取不到您输入的数据。

步骤四:填写表单数据:

填写数据后,切换下拉单选组件的选项时就会触发连接器从而发出一条短信。

飞云觅宙 评论 0

6

回答

游客gtkaa5lhylzh2 2023-10-17 1583浏览量 回答数 6

3

回答

游客lvqo6fpz7n4ja 2023-10-17 277浏览量 回答数 3

公告

帮助中小企业降本提效,加强组织的数字化自主权; 帮助大型企业释放个体创新力,助力组织创新涌现。

展开

宜搭公众号

相关产品