import * as dd from 'dingtalk-jsapi' import axios from 'axios' import qs from 'qs' import { MINGPAY_CONSTANT } from './constant' const config = { ddconfig: () => { return new Promise((resolve, reject) => { let senddate = qs.stringify({ version: MINGPAY_CONSTANT.MINGPAY_CONSTANT_VERSION, url: MINGPAY_CONSTANT.MINGPAY_CONSTANT_URL, agentId: MINGPAY_CONSTANT.MINGPAY_CONSTANT_AGENTID }) return axios.post(`http://139.196.213.18:8300/v1/auth/getJsAuthenticationParameter?${senddate}`).then((res) => { let agentId = res.data.data.agentId let timeStamp = res.data.data.timeStamp let nonceStr = res.data.data.nonceStr let signature = res.data.data.signature sessionStorage.setItem('corpId', res.data.data.corpId) dd.config({ agentId: agentId, // 必填,微应用ID corpId: sessionStorage.getItem('corpId'), // 必填,企业ID timeStamp: timeStamp, // 必填,生成签名的时间戳 nonceStr: nonceStr, // 必填,生成签名的随机串 signature: signature, // 必填,签名 type: 0, // 0/1选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持 jsApiList: [ 'biz.contact.choose', 'biz.contact.complexPicker' ] // 必填,需要使用的jsapi列表,注意:不要带dd。 }) dd.error(function (error) { console.log('dd error: ' + JSON.stringify(error)) resolve('no') }) setTimeout(() => { resolve() }, 2000) }) }) }, ddready: (item) => { return new Promise((resolve, reject) => { dd.ready(function () { return resolve(config[item]()) }) }) }, ddpermission: () => { // dd.ready参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。 return new Promise((resolve, reject) => { dd.runtime.permission.requestAuthCode({ corpId: sessionStorage.getItem('corpId'), // 企业id onSuccess: function (info) { let senddate = qs.stringify({ version: 'v1', code: info.code, corpId: 'ding9a93ca550f036ffe35c2f4657eb6378f' }) return axios.post(`http://139.196.213.18:8300/v1/auth/token?${senddate}`).then((res) => { if (res.data.resultCode === '0') { sessionStorage.setItem('token', res.data.data.accessToken.access_token) sessionStorage.setItem('userId', res.data.data.oapiUser.userid) sessionStorage.setItem('avatar', res.data.data.oapiUser.avatar) sessionStorage.setItem('name', res.data.data.oapiUser.name) resolve('ok') } else { resolve('noPermission') } }).catch((err) => { console.log(err) }) } }) }) }, ddchooseOne: () => { return new Promise((resolve, reject) => { dd.biz.contact.choose({ multiple: false, // 是否多选:true多选 false单选; 默认true users: [], // 默认选中的用户列表,员工userid;成功回调中应包含该信息 corpId: sessionStorage.getItem('corpId'), // 企业id max: 1, // 人数限制,当multiple为true才生效,可选范围1-1500 onSuccess: function (data) { return resolve(data) }, onFail: function (err) { return reject(err) } }) }) }, ddchoose: () => { return new Promise((resolve, reject) => { dd.biz.contact.complexPicker({ title: '人员选择', // 标题 corpId: sessionStorage.getItem('corpId'), // 企业的corpId multiple: true, // 是否多选 limitTips: '超出了', // 超过限定人数返回提示 maxUsers: 1000, // 最大可选人数 pickedUsers: [], // 已选用户 pickedDepartments: [], // 已选部门 disabledUsers: [], // 不可选用户 disabledDepartments: [], // 不可选部门 requiredUsers: [], // 必选用户(不可取消选中状态) requiredDepartments: [], // 必选部门(不可取消选中状态) appId: 246391838, // 微应用的Id permissionType: 'GLOBAL', // 可添加权限校验,选人权限,目前只有GLOBAL这个参数 responseUserOnly: false, // 返回人,或者返回人和部门 startWithDepartmentId: -1, // 仅支持0和-1 onSuccess: function (result) { return resolve(result) }, onFail: function (err) { return reject(err) } }) }) } } export { config }