开发者社区> 问答> 正文

请教一下,调用钉钉后台考勤列表值,在宜搭中js该怎么写

image.png
export async function onChange(ctx) {
if (ctx && ctx.value && Array.isArray(ctx.value) && ctx.value[0] && 'value' in ctx.value[0]) {
const inputs = JSON.stringify({
"body": {
"cursor": "0",
"size": "10",
"dept_id": ctx.value[0].value
}
});

try {
  const res = await this.dataSourceMap.getdeptMember.load({
    inputs: inputs
  });

  const { list } = res.result;
  if (list.length === 0) {
    return;
  }

  const promises = list.map(async (item) => {
    // 获取时间范围
    const dateRange = this.utils.getDateTimeRange(this.$('dateField_lp7szs66').getValue(), 'month');
    console.log("Date Range for", item.name, ":", dateRange);

    const inputsT = JSON.stringify({
      "from_date": dateRange[0],
      "to_date": dateRange[1],
      "userid": [item.userid],
      "column_id_list": [31922002, 31922005],
    });
    console.log(inputsT);
    try {
      const result = await this.dataSourceMap.getWorkDays.load({
        inputs: inputsT
      });

      console.log("Workdays result for", item.name, ":", result);

      const newResult = JSON.parse(result);
      console.log(" newResult for",newResult)
      return {
        name: item.name,
        userid: item.userid,
        should_work_value: newResult.column_id_list[31922002],
        workDay: newResult.column_id_list[31922005],
      };
    } catch (error) {
      console.log(error);
      return null;
    }
  });

  const arr = await Promise.all(promises);
  const filteredArr = arr.filter((item) => item !== null);
  const memberArr = filteredArr.map((item) => {
    return {
      "employeeField_lp7wywof": [{
        label: item.name,
        value: item.userid
      }],
      "numberField_lp7nviqn": item.workDay,
      "numberField_lpf4thvy": item.should_work_value
    };
  });

  this.$('tableField_lp6msmtk').setValue(memberArr);
} catch (error) {
  console.log(error);
}

} else {
this.$('tableField_lp6msmtk').reset();
}
}
image.png

展开
收起
游客ynliwa4o6enfi 2023-12-01 09:50:35 139 0
2 条回答
写回答
取消 提交回答
  • 这是一个在宜搭中使用钉钉后台考勤列表值的示例代码。这个代码首先定义了一个名为onChange的函数,该函数会在用户改变输入值时被触发。然后,它尝试从数据源获取部门成员列表,并将这些成员的信息存储在一个名为list的数组中。接下来,它遍历list中的每个成员,并尝试获取他们的考勤信息。这些信息被存储在一个新的对象中,然后被添加到filteredArr数组中。最后,它将filteredArr数组中的信息设置到表格字段中。

    请注意,这个代码依赖于钉钉的数据源和相关的API。你需要确保你已经正确地配置了这些数据源和API,并且你有权限访问它们。此外,这个代码假设你已经已经在宜搭中创建了相关的表单字段,并且你知道如何正确地设置它们的值。

    2023-12-02 16:46:50
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在宜搭中,你可以使用钉钉开放平台的API来获取考勤列表。以下是一个示例的JavaScript代码片段,展示了如何调用钉钉后台的考勤列表:

    // 引入钉钉开放平台SDK
    const dingtalk = require('dingtalk-sdk');
    
    // 配置钉钉开放平台的AppKey和AppSecret
    const appKey = '你的AppKey';
    const appSecret = '你的AppSecret';
    
    // 初始化钉钉开放平台客户端
    const client = new dingtalk.DefaultAcsClient(appKey, appSecret);
    
    // 定义请求参数
    const request = new dingtalk.OapiAttendanceListRequest();
    request.setOffset(0); // 设置偏移量,从第0条记录开始
    request.setSize(100); // 设置每页返回的记录数,最多不超过100条
    
    // 发送请求并处理响应
    client.execute(request, function(err, response) {
      if (err) {
        console.error('获取考勤列表失败:', err);
      } else {
        console.log('获取考勤列表成功:', response);
        // 在这里可以对考勤列表进行处理或展示
      }
    });
    

    请注意,上述代码中的'你的AppKey''你的AppSecret'需要替换为你实际使用的钉钉开放平台的AppKey和AppSecret。此外,你还需要确保已经安装了钉钉开放平台的SDK(通过require('dingtalk-sdk')引入)。

    2023-12-01 21:48:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
钉钉小程序——为工作方式插上翅膀 立即下载
钉钉客户端自动化的应用 立即下载
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载