Commit a0219480 by wufan

feat:通讯录初预研

parent 1f70803e
...@@ -9,8 +9,7 @@ import { Modal, Input, Table } from 'antd'; ...@@ -9,8 +9,7 @@ import { Modal, Input, Table } from 'antd';
import Service from '@/common/js/service'; import Service from '@/common/js/service';
// import _ from 'underscore'; // import _ from 'underscore';
import './ChooseMembersModal.less'; import './ChooseMembersModal.less';
import User from '@/common/js/user' import User from '@/common/js/user';
const { Search } = Input; const { Search } = Input;
class ChooseMembersModal extends React.Component { class ChooseMembersModal extends React.Component {
......
/*
* @Author: wufan
* @Date: 2021-05-11 10:21:37
* @LastEditors: wufan
* @LastEditTime: 2021-05-11 16:09:11
* @Description: 企业微信api
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import User from "@/common/js/user";
import Service from "@/common/js/service";
// const wx = window.wx;
export default class WechatApi {
static async initConfig(params = { isAgentConfig: false, url: "" }) {
console.log("1111---------进入initConfig");
return Service.Hades("anon/hades/getWxWorkJSAPISignature", {
storeId: User.getStoreId(),
url: params.url,
}).then((result) => {
const res = result.result;
// if (/MicroMessenger/i.test(navigator.userAgent)) {
// wx.config({
// beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
// debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
// appId: res.corpId, // 必填,企业微信的corpID
// timestamp: res.timeStamp, // 必填,生成签名的时间戳
// nonceStr: res.nonceStr, // 必填,生成签名的随机串
// signature: res.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
// jsApiList: [
// "chooseImage",
// "shareToExternalContact",
// "selectExternalContact",
// "selectEnterpriseContact",
// ],
// });
// }
wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.corpId, // 必填,企业微信的corpID
timestamp: res.timeStamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [
"chooseImage",
"shareToExternalContact",
"selectExternalContact",
"selectEnterpriseContact",
],
});
if (params.isAgentConfig) {
console.log("22222222-----进入isAgentConfig");
return new Promise((resolve, reject) => {
wx.ready(() => {
console.log("3333333333333333333----------");
Service.Hades("anon/hades/getWxWorkJSAPISignature", {
storeId: User.getStoreId(),
url: params.url,
}).then((result2) => {
const res2 = result2.result;
wx.agentConfig({
corpid: res2.corpId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res2.agentId, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res2.timeStamp, // 必填,生成签名的时间戳
nonceStr: res2.nonceStr, // 必填,生成签名的随机串
signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
"selectExternalContact",
"getCurExternalContact",
"getContext",
"shareToExternalContact",
"sendChatMessage",
"shareToExternalChat",
],
success: (res) => {
console.log(res, "res-agentconfig");
console.info("window.WWOpenData", window.WWOpenData);
resolve(res);
},
fail: (err) => {
console.log(err, "err-agentconfig");
reject(err);
},
});
});
});
});
}
});
}
static initConfig1(params = { isAgentConfig: false, url: "" }) {
console.log("1111---------进入initConfig");
return Service.Hades("anon/hades/getWxWorkJSAPISignature", {
storeId: User.getStoreId(),
url: params.url,
}).then((result) => {
const res = result.result;
if (/MicroMessenger/i.test(navigator.userAgent)) {
wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.corpId, // 必填,企业微信的corpID
timestamp: res.timeStamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [
"chooseImage",
"shareToExternalContact",
"selectExternalContact",
"selectEnterpriseContact",
],
});
}
if (params.isAgentConfig) {
console.log("22222222-----进入isAgentConfig");
return new Promise((resolve, reject) => {
wx.ready(() => {
console.log("3333333333333333333----------");
Service.Hades("anon/hades/getWxWorkJSAPISignature", {
storeId: User.getStoreId(),
url: params.url,
}).then((result2) => {
const res2 = result2.result;
wx.agentConfig({
corpid: res2.corpId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res2.agentId, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res2.timeStamp, // 必填,生成签名的时间戳
nonceStr: res2.nonceStr, // 必填,生成签名的随机串
signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
"selectExternalContact",
"getCurExternalContact",
"getContext",
"shareToExternalContact",
"sendChatMessage",
"shareToExternalChat",
],
success: (res) => {
console.log(res, "res-agentconfig");
console.info("window.WWOpenData", window.WWOpenData);
resolve(res);
},
fail: (err) => {
console.log(err, "err-agentconfig");
reject(err);
},
});
});
});
});
}
});
}
static getCurExternalContact() {
return new Promise((resolve, reject) => {
wx.ready(() => {
wx.invoke("getCurExternalContact", {}, function (res) {
if (res.err_msg == "getCurExternalContact:ok") {
resolve(res.userId); //返回当前外部联系人userId
} else {
reject(res.err_msg); //错误处理
}
});
});
});
}
static getContext() {
return new Promise((resolve, reject) => {
wx.ready(() => {
wx.invoke("getContext", {}, function (res) {
if (res.err_msg == "getContext:ok") {
resolve(res.entry); //返回进入H5页面的入口类型,目前有normal、contact_profile、single_chat_tools、group_chat_tools、chat_attachment
} else {
reject(res.err_msg); //错误处理
}
});
});
});
}
}
import React, { useRef, useLayoutEffect, useEffect } from 'react'
export default function WWOpenDataCom({ type, openid }) {
const ref = useRef(null)
useLayoutEffect(() => {
WWOpenData.bind(ref.current)
})
return <ww-open-data ref={ref} type={type} openid={openid} />
}
\ No newline at end of file
<!-- <!--
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-24 12:20:57 * @Date: 2020-08-24 12:20:57
* @LastEditors: zangsuyun * @LastEditors: wufan
* @LastEditTime: 2021-04-02 14:59:11 * @LastEditTime: 2021-05-10 16:43:38
* @Description: * @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
--> -->
...@@ -43,6 +43,8 @@ ...@@ -43,6 +43,8 @@
<script type="text/javascript" src="https://image.xiaomaiketang.com/xm/PhotoClip.js"></script> <script type="text/javascript" src="https://image.xiaomaiketang.com/xm/PhotoClip.js"></script>
<script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/ncpc/nc.js?t=2015052012"></script> <script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/ncpc/nc.js?t=2015052012"></script>
<script type="text/javascript" src="https://xiaomai-js.oss-cn-hangzhou.aliyuncs.com/loghub-xm-0.0.1-beta.js"></script> <script type="text/javascript" src="https://xiaomai-js.oss-cn-hangzhou.aliyuncs.com/loghub-xm-0.0.1-beta.js"></script>
<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript" src="//open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
</head> </head>
<body> <body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>
......
...@@ -11,6 +11,8 @@ import User from '@/common/js/user' ...@@ -11,6 +11,8 @@ import User from '@/common/js/user'
import SetEmployeeModal from "./SetEmployeeModal"; import SetEmployeeModal from "./SetEmployeeModal";
import './ChooseMembersModal.less'; import './ChooseMembersModal.less';
import _ from 'underscore'; import _ from 'underscore';
import WechatApi from '@/common/js/wechatApi';
import WWOpenDataCom from '@/components/WWOpenDataCom';
const { Search } = Input; const { Search } = Input;
...@@ -39,8 +41,48 @@ class ChooseMembersModal extends React.Component { ...@@ -39,8 +41,48 @@ class ChooseMembersModal extends React.Component {
componentDidMount() { componentDidMount() {
this.getUserAuthority(); this.getUserAuthority();
this.initWechatConfig();
} }
initWechatConfig = async () => {
WechatApi.initConfig({ isAgentConfig: true, url: window.location.href.split('#')[0] }).then(()=>{
console.info('window.WWOpenData', window.WWOpenData);
// if (WWOpenData.checkSession) {
// WWOpenData.checkSession({
// success() {
// console.info('open-data 登录态校验成功')
// },
// fail() {
// console.error('open-data 登录态过期')
// },
// })
// }
// if (WWOpenData.on) {
// /**
// * ww-open-data 元素数据发生变更时触发
// */
// WWOpenData.on('update', event => {
// const openid = event.detail.element.getAttribute('openid')
// console.info('渲染数据发生变更', openid, event.detail.hasData)
// })
// /**
// * ww-open-data 获取数据失败时触发
// */
// WWOpenData.on('error', () => {
// console.error('获取数据失败')
// })
// }
// WWOpenData.bindAll(document.querySelectorAll('ww-open-data'))
})
.catch(error=>{
console.log("error-----",error);
})
}
// 获取对应文件相关成员 // 获取对应文件相关成员
getUserAuthority = (searchKey='') => { getUserAuthority = (searchKey='') => {
const { query } = this.state; const { query } = this.state;
...@@ -216,7 +258,8 @@ class ChooseMembersModal extends React.Component { ...@@ -216,7 +258,8 @@ class ChooseMembersModal extends React.Component {
<div className='avatar'> <div className='avatar'>
<span className="icon iconfont avatar-icon">&#xe84a;</span> <span className="icon iconfont avatar-icon">&#xe84a;</span>
<Tooltip title={name}> <Tooltip title={name}>
<span className='userImg'>{name}</span> {/* <span className='userImg'>{name}</span> */}
<WWOpenDataCom type="userName" openid={name}/>
</Tooltip> </Tooltip>
</div> </div>
) )
......
/* /*
* @Author: wufan * @Author: wufan
* @Date: 2020-11-27 16:21:49 * @Date: 2020-11-27 16:21:49
* @LastEditors: zhangleyuan * @LastEditors: wufan
* @LastEditTime: 2021-03-09 14:21:35 * @LastEditTime: 2021-05-11 10:58:58
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment