以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]企业微信扫一扫实现类似扫码枪输入后回车功能  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173473)

--  作者:ajie5211
--  发布时间:2021/12/1 11:10:00
--  [分享]企业微信扫一扫实现类似扫码枪输入后回车功能

用扫码枪时,输入后自带回车,方便实现在 扫码框 扫码输入信息-》提交-》清空扫码框等待下次在扫码 这样的连续操作,用企业微信扫一扫时,按帮助文档,值是扫到了扫码框,但没有实现自动提交,然后清空等待下次扫码输入这样的操作,需要自己手动点击提交按钮,浪费了时间,操作上也不够人性化了。多次测试终于实现了类似扫码枪回写的功能,现分享源码
原理就是增加了一个隐藏输入框,设置这个输入框值变更后,触发原扫码框相同的代码。


以下内容只有回复后才可以浏览


狐表 weui代码如下
  wb.AppendHTML("<script src=\'http://res.wx.qq.com/open/js/jweixin-1.2.0.js\'></script>",True) \'引入JS-SDK库
                wb.AppendHTML("<script src=\'./lib/ztd.js\'></script>") \'
                \'在页面注入权限验证配置
                Dim st As New Date(1970,1,1,8,0,0)
                Dim appid As String = "自己企业微信ID" \'CorpID
                Dim timestamp As Integer = CInt((Date.Now - st).TotalSeconds())  \'时间戳
                Dim noncestr As String = Rand.NextString(16) \'随机字符
                Dim url As String  = e.Request.URL.ToString \'当前页面地址
                Dim signature As String = Functions.Execute("GetJsSignature", noncestr, timestamp, url) \'生成权限验证签名
                Dim cfg As String = "wx.config({beta: true, appId:\'{0}\',timestamp:{1},nonceStr:\'{2}\',signature:\'{3}\',jsApiList:[\'scanQRCode\']});"
                wb.AppendHTML("<script>" & CExp(cfg,appid,timestamp,noncestr,signature) & "</script>",True)
               
                wb.AddForm("","btt","ztd.htm").Attribute = "style=\'text-align:center;\'"
               
                With  wb.AddInputGroup("btt","ipg1","装托单")
                    With .AddInputCell("ic1")
                        .AddVcodeButton("btqk","清 空",0).Attribute = "style=\'border-right: 1px solid #E5E5E5;border-left: none;\' onc lick=\'rest art()\'" \'增加二维码扫描按钮,2表示显示在右边
                        .AddLabel("lbh","单号:",1).Attribute = "style=\'text-align:left;text-indent:5px;\'"
                        .AddVcodeButton("btbc","保 存",2).Attribute = "onc lick=\'sa ve()\'"
                       
                    End With
                    With .AddInputCell("ic2") \'通过InputCell增加输入框
                        .AddVcodeButton("smklb","扫码框",0).Attribute = "style=\'border-right: 1px solid #E5E5E5;border-left: none;\' onc lick=\'mne nter()\'"
                        \'.AddLabel("smklb","扫码框",0).Attribute = "style=\'border-right: 1px solid #E5E5E5;\'" \'增加标签,0显示在左边
                        .AddInput("smk","text",1).Attribute = "style=\'text-align:left;text-indent:5px;\'" \'增加输入框,1表示显示在中间
                        .AddVcodeButton("wxsm","扫一扫",2) \'增加获取验证码按钮,2表示显示在右边
                    End With
                End With
                With wb.AddInputGroup("btt","ipgy1")
                    For Each key As String In e.Cookies.Keys
                        .AddHiddenValue(key,e.Cookies(key))
                    Next
                    .AddInput("ztdh","单据内码:","text")
                    .AddInput("zt","状态:","text")
                    .AddInput("sc","是否首次:","text")
                    .AddInput("fz","扫码辅助:","text").Attribute = "oncha nge=\'sca nfz(this)\'"
                End With
                With wb.AddButtonGroup("btt","btg2", False)         \'水平排列
                    .Add("tjan", "按钮","button").Attribute = "onc lick=\'setC odes()\'"
                End With
                With wb.AddActionSheet("","menu") \'设计菜单
                    .Add("mnuEdit", "编辑本条数据").Attribute ="onc lick=\'Editr ow()\'"
                    .Add("mnuDelete", "删除本条数据").Attribute ="onc lick=\'Delr ow()\'"
                    .Add("mnuCancel","取消","",True)
                End With
               
                wb.AppendHTML("<div id=\'p1\' style=\'margin:0.5em\'>表格</div>")
                e.WriteString(wb.Build) \'生成网页

[此贴子已经被作者于2021/12/1 11:10:27编辑过]

--  作者:有点蓝
--  发布时间:2021/12/1 11:27:00
--  
不需要添加隐藏的输入框吧。如果使用的微信jssdk接口,直接在接口扫描回调里提交和清空就可以了

2、在d:\\web\\lib目录下新建一个文本文件jssdk.js,内容为:

wx.ready(function () {
    document.getElementById(\'
scan\').onclick = function () {
        wx.scanQRCode({
            needResult: 1,
            scanType: [\'qrCode\',\'barCode\'],
            success: function (res) {
    var result = sendAjaxText(res.resultStr,"accept.htm","",false); //直接提交数据
  //接着可以根据返回值做其它操作
//既然还要清空扫码框,这里也就没有必要在给扫码框赋值, 去掉【document.getElementById(\'number\').value = res.resultStr;】即可
            }
        });
    };
});

另外,既然做共享,请把代码整理一下,把和扫码无关的其它代码先去掉,起码可以清楚的看清扫码的逻辑,特别是js文档,有点乱,我都来回看好几遍才高清楚,更不用说其它新手了
[此贴子已经被作者于2021/12/1 11:28:14编辑过]

--  作者:ajie5211
--  发布时间:2021/12/1 11:46:00
--  

没有直接在扫码回调里提交和清空是想代码共用,直接在这里面处理是可以的,主要是这个提交,现在写的比较复杂,狐表里的代码没有全贴出来,现在这个提交,第一次扫时,会判断是新增,还是修改,还是审核,第二次扫时,新增或修改的往里面加东西,审核的,让选择的行变色,不同的功能对应不同的提交条件,所以整成共用,方便修改。

原想过去掉很多东西,又怕理解不清楚。


--  作者:ajie5211
--  发布时间:2021/12/1 11:51:00
--  
当然,也跟我js水平有关,如果把提交写成带参数的函数,提交按钮直接能把参数带过去,这里回调时,就方便了。只是这参数传递啥的,不大明白,不知道怎么写,自己也就是跟着帮助,跟着班猪,查查百度,复制粘贴,抄抄的水货。
[此贴子已经被作者于2021/12/1 11:54:01编辑过]

--  作者:wei0769
--  发布时间:2021/12/1 13:39:00
--  
顶下
--  作者:fivetable
--  发布时间:2021/12/1 15:46:00
--  
赞!看完受益良多
--  作者:WELOVEFOX
--  发布时间:2021/12/1 16:28:00
--  
学习,谢谢
--  作者:liufucan
--  发布时间:2021/12/1 17:32:00
--  
看看
--  作者:chen_sheng
--  发布时间:2021/12/1 18:36:00
--  

--  作者:ggwww
--  发布时间:2021/12/1 20:32:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看