dtmp-edu-open-widgets
钉钉教育选班级组件
- Deprecated
- 该方案为 2020.5.11 前的【临时方案】
- 如在该时间之后请使用钉钉小程序插件方案,联系钉钉教育线同学既可
使用说明
服务端
- 请代理钉钉开放平台教育线如下 3 个接口:
- edu/class/listbyteacher
- edu/class/student/get
- edu/class/student/list
- 代理说明
- request post url 中添加 access_token
- request post body 透明转发
- response body 透明转发
小程序
安装
- npm install dtmp-edu-open-widgets
- cp -R ./node_modules/dtmp-edu-open-widgets ./widgets
widgets
不能修改为其他命名,必须要在小程序根目录
- 在
app.json
放入如下页面
widgets/pages/choose-classes/index
使用
// page.js
import { chooseClasses, setHttpApiMap } from '../../widgets';
// 代理【开放平台接口】
setHttpApiMap({
"edu/class/listbyteacher": 'https://mydomain.com/edu/class/listbyteachera',
"edu/class/student/get": 'https://mydomain.com/edu/class/student/get',
'edu/class/student/list': 'https://mydomain.com/edu/class/student/list'
});
onChooseClassTap() {
// chooseClasses 选项见下面 ChooseClassesOption 类型
chooseClasses({
corpId: 'corpId',
// 当前用户的 userId
userId: 'userId',
hideStudentPicker: true,
pageTitle: '选择班级',
}).then(classes => {
dd.alert({
title: '选中班级',
content: JSON.stringify(classes, null, 2)
});
});
}
export interface PickedClass {
classId: string;
/**
* 是否全选班级
*/
isAll: true;
}
export interface PickedStudents {
classId: string;
/**
* 被选中的学生staffId
*/
studentIds: string[];
}
/**
* 班级选项
*/
export interface ChooseClassesOption {
corpId: string;
/**
* 最大可选学生数
*/
maxStudents?: number;
/**
* 页面标题
*/
pageTitle?: string;
/**
* 页面上部的提示信息
*/
tip?: string;
/**
* 页面右下角的默认提示
*/
advice?: string;
/**
* 是否隐藏学生的家长信息
*/
hideGuardian?: boolean;
/**
* 页面上部的提示信息
*/
hint?: string;
/**
* 已选的学生
*/
pickedStudents?: (PickedClass | PickedStudents)[];
/**
* 只能选择到班级维度,不提供选择班级下学生入口
*/
hideStudentPicker?: boolean;
/**
* 以「role」的角色查询所在的班级,比如:查询当前用户作为「老师」角色所在的班级
* - 默认为 EChooseStudentRole.teacher
*/
role?: EChooseStudentRole;
/**
* 以「群类型」过滤班级列表,比如:查询「师生群」的所有班级列表
* - 不传递该参数是返回所有班级列表
*/
groupType?: EChooseStudentGroupType;
}
export enum EChooseStudentGroupType {
/**
* 官方班级群(老师 & 家长)
*/
OfficialClassGroup = 'officialClassGroup',
/**
* 官方师生群 (老师 & 学生)
*/
TeacherStudentGroup = 'teacherStudentGroup',
}
export enum EChooseStudentRole {
teacher = 'teacher',
guardian = 'guardian',
all = 'all',
student = 'student',
}
/**
* 返回的学生数据类型
*/
export interface StudentShape {
name: string;
/**
* 工号
*/
staffId: string;
avatar?: string;
/**
* 家长
*/
guardians?: {
name: string;
relationName: string;
/**
* 工号
*/
staffId: string;
avatar?: string;
/**
* 是否已经激活
*/
isActive: boolean;
}[];
}
export enum ChooseClassesErrorCode {
/**
* 用户取消
*/
Cancel = 1,
}
/**
* chooseClasses() promise reject 时返回的类型
*/
export interface ChooseClassesError {
code: ChooseClassesErrorCode;
message: string;
}
/**
* chooseClasses() promise resolve 时返回的类型
*/
export interface ChooseClassesData {
classId: string;
className: string;
isAll: boolean;
students: StudentShape[];
}