在不少企业中,都要用到工单模块,而单独做一个小程序就很浪费开发时间,我们可以直接使用企业微信的审批功能,这样就能很好的解决大部分需求。
我接到的需求是在企业微信的审批功能中,加入外部选择页面,代码如下(jsp):
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="no-store">
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
<script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax('请求路径', {
method: 'GET',
success:function (result) {
wx.config({
beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: result.corpid, // 必填,企业微信的corpID
timestamp: result.timestamp, // 必填,生成签名的时间戳
nonceStr: result.nonceStr, // 必填,生成签名的随机串
signature: result.signature2,// 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
wx.ready(function(){
alert("ready"+window.location.href);
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
wx.agentConfig({
beta: true,
corpid: result.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: result.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: result.timestamp, // 必填,生成签名的时间戳
nonceStr: result.nonceStr, // 必填,生成签名的随机串
signature: result.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [], //必填,传入需要使用的接口名称
success: function(res) {
// 回调
},
fail: function(res) {
alert('失败')
alert(res.errMsg);
if(res.errMsg.indexOf('function not exist') > -1){
alert('版本过低请升级')
}
}
});
}
});
$("#select").change(function () {
wx.invoke('saveApprovalSelectedItems', {
"key": "", // 字符串,从 URL 中获取到的 key
"selectedData": "" // 字符串,选中的选项格式化为 JSON 字符串,格式见下文
}, (res) => {
if (res.err_msg === 'saveApprovalSelectedItems:ok') {
}
});
})
});
</script>
<title>你喜欢</title>
</head>
<body>
<select name="persson" id="persson" style="width: 100%;height: 30%;font-size:20px">
<c:forEach items="${page}" var="page">
<option selected="selected" disabled="disabled" style='display: none' value=''></option>
<option value ="${page.id}">
${page.id}
</option>
</c:forEach>
</select>
<select name="select" id="select" style="width: 100%;height: 30%;font-size:20px">
<option selected="selected" disabled="disabled" style='display: none' value=''></option>
</select>
</body>
</html>