login.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  5. <meta http-equiv="Pragma" content="no-cache" />
  6. <meta http-equiv="Expires" content="0" />
  7. <meta charset="utf-8">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  9. <link rel="shortcut icon" href="/img/logo.png" />
  10. <link rel="bookmark" href="/img/logo.png" />
  11. <link rel="stylesheet" href="/plugins/bootstrap-4.3.1/css/bootstrap.min.css">
  12. <link rel="stylesheet" href="/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
  13. <link rel="stylesheet" href="/main/common/StyleSheet.css" />
  14. <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
  15. <script src="/Plugins/jquery.easing/jquery.easing.min.js"></script>
  16. <script src="/Plugins/virtualkeyboard/xvirtualkeyboard.js"></script>
  17. <title>东科软件</title>
  18. </head>
  19. <body class="bg-light">
  20. <!--导航菜单-->
  21. <script src="/main/common/navbar.js"></script>
  22. <div class="container pt-4">
  23. <!--登录窗体-->
  24. <form id="登录窗体" class="p-5 rounded shadow-sm bg-white position-absolute" style="width:350px;top:50%;margin-top:-815px;left:50%;margin-left:-175px;">
  25. <h5 class="text-center">用户登录</h5>
  26. <div class="form-row pt-3">
  27. <div class="form-group col-12">
  28. <label class="sr-only" for="登录类型">登录类型</label>
  29. <div class="input-group mb-2 ">
  30. <div class="input-group-prepend">
  31. <div class="input-group-text" style="width:40px;"><i class="fa fa-cog " aria-hidden="true"></i></div>
  32. </div>
  33. <select class="custom-select" id="登录类型">
  34. <option value="1">打卡并登录工位</option>
  35. <option value="0">仅打卡</option>
  36. </select>
  37. </div>
  38. </div>
  39. </div>
  40. <div class="form-row">
  41. <div class="form-group col-12">
  42. <label class="sr-only" for="账套">账套</label>
  43. <div class="input-group mb-2">
  44. <div class="input-group-prepend">
  45. <div class="input-group-text" style="width:40px;"><i class="fa fa-address-book-o" aria-hidden="true"></i></div>
  46. </div>
  47. <input value="dongke" type="text" class="form-control" id="账套" placeholder="请输入账套">
  48. </div>
  49. </div>
  50. </div>
  51. <div class="form-row">
  52. <div class="form-group col-12">
  53. <label class="sr-only" for="用户">用户</label>
  54. <div class="input-group mb-2">
  55. <div class="input-group-prepend">
  56. <div class="input-group-text" style="width:40px;"><i class="fa fa-user" aria-hidden="true"></i></div>
  57. </div>
  58. <input onkeyup="this.value=this.value.toUpperCase()" value="" type="text" class="form-control" id="用户" placeholder="请输入用户">
  59. </div>
  60. </div>
  61. </div>
  62. <div class="form-row">
  63. <div class="form-group col-12">
  64. <label class="sr-only" for="密码">密码</label>
  65. <div class="input-group mb-2">
  66. <div class="input-group-prepend">
  67. <div class="input-group-text" style="width:40px;"><i class="fa fa-key" aria-hidden="true"></i></div>
  68. </div>
  69. <input onkeydown="if (event.keyCode == 13) doLogin();" type="password" class="form-control" id="密码" placeholder="请输入密码">
  70. </div>
  71. </div>
  72. </div>
  73. <div class="form-row col-12 justify-content-center">
  74. <button onclick="loginButton_onClick()" type="button" class="btn btn-danger" style="width:100px;">登录</button>&nbsp;&nbsp;
  75. <button type="reset" class="btn btn-secondary" style="width:100px;">重置</button>
  76. </div>
  77. </form>
  78. <!--工位窗体-->
  79. <form id="工位窗体" class="pt-5 pb-5 rounded shadow-sm bg-white position-absolute" style="width:350px;top:50%;margin-top:-815px;left:50%;margin-left:-175px;">
  80. <h5 class="text-center">请您确认工位</h5>
  81. <div class="form-row pt-3 pl-5">
  82. <div class="form-group col-12">
  83. <label class="sr-only" for="登录类型">登录类型</label>
  84. <div class="input-group mb-2 ">
  85. <div class="input-group-prepend">
  86. <div class="input-group-text" style="width:40px;"><i class="fa fa-cog " aria-hidden="true"></i></div>
  87. </div>
  88. <select id="barcodeStaing" class="custom-select" style="margin-right:80px; text-align: center"onchange="ChangeSelect()">
  89. </select>
  90. </div>
  91. </div>
  92. <div id="工位模板" style="display:none">
  93. <label class="checkbox-inline pt-2" style="width:260px;border-bottom:1px solid lightgray">
  94. <input type="radio" name="工位选择" value="{ID}"> {NAME}
  95. </label>
  96. </div>
  97. <div id="工位" class="form-group" style="font-size:18px;">
  98. </div>
  99. </div>
  100. <div class="form-row col-12 justify-content-center">
  101. <button onclick="workButton_onClick()" type="button" class="btn btn-danger" style="width: 100px; margin-top: 10px;">确定</button>&nbsp;&nbsp;
  102. <button type="reset" class="btn btn-secondary" style="width: 100px; margin-top: 10px;">重置</button>
  103. </div>
  104. </form>
  105. <!--打卡窗体-->
  106. <form id="打卡窗体" class="pt-5 pb-5 rounded shadow-sm bg-white position-absolute" style="width:350px;top:50%;margin-top:-815px;left:50%;margin-left:-175px;">
  107. <h5 class="text-center">请您确认当前工号员工</h5>
  108. <div class="form-row pt-3 pl-5">
  109. <div id="工号员工模板" style="display:none">
  110. <div class="row pt-1">
  111. <div class="col-6 m-0 p-0 pt-1 pr-1">
  112. <label class="checkbox-inline" style="">
  113. <input type="checkbox" value="{STAFFID}"> {STAFFCODE} {STAFFNAME}
  114. </label>
  115. </div>
  116. <div class="col-6 m-0 p-0">
  117. <select class="custom-select" style="width:120px;">
  118. <!--<option value="{JOBSID}">{JOBSNAME}</option>-->
  119. </select>
  120. </div>
  121. </div>
  122. </div>
  123. <div id="工号员工" class="form-group" style="font-size:18px;width:300px;">
  124. </div>
  125. </div>
  126. <div class="form-row col-12 justify-content-center">
  127. <button onclick="regButton_onClick()" type="button" class="btn btn-danger" style="width:100px;">确定</button>&nbsp;&nbsp;
  128. <button type="reset" class="btn btn-secondary" style="width:100px;">重置</button>
  129. </div>
  130. </form>
  131. </div>
  132. <!--版权信息-->
  133. <script src="/main/common/footer.js"></script>
  134. <script src="/Plugins/bootstrap-4.3.1/js/bootstrap.bundle.min.js"></script>
  135. <script src="/Plugins/sweetalert/sweetalert.min.js"></script>
  136. <script src="/Plugins/xrequest/xrequest.min.js"></script>
  137. <script src="/Plugins/md5/md5.js"></script>
  138. <script src="/main/common/xuwell.js"></script>
  139. <script>
  140. var workStation = [];
  141. $(function () {
  142. $('#登录窗体').animateShow();
  143. });
  144. function keyBoard() {
  145. //启用软键盘
  146. $('#账套').keyboard({ usePreview: false, autoAccept: true });
  147. $('#用户').keyboard({ usePreview: false, autoAccept: true });
  148. $('#密码').keyboard({ usePreview: false, autoAccept: true });
  149. swal({
  150. title: '用户登录',
  151. text: '软键盘已加载!',
  152. icon: 'success',
  153. button: '确定'
  154. });
  155. }
  156. //登录按钮
  157. function loginButton_onClick() {
  158. console.log('账套:' + $('#账套').val() + ' 用户名:' + $('#用户').val() + ' 密码:' + hex_md5($('#密码').val()).toUpperCase());
  159. doLogin();
  160. }
  161. //打卡按钮
  162. function regButton_onClick() {
  163. console.log('工号员工:' + $('#工号员工').getCheckBoxVal());
  164. if ($('#工号员工').getCheckBoxVal() == '') {
  165. swal({
  166. title: '工号员工',
  167. text: '请您选择工号员工!',
  168. icon: 'error',
  169. button: '确定'
  170. });
  171. }
  172. else {
  173. $('#打卡窗体').animateHide();
  174. doRegSave();
  175. }
  176. }
  177. //工位按钮
  178. function workButton_onClick() {
  179. //$("#工位").find("option:selected").text();
  180. console.log('工位:' + $('#工位').val());
  181. if ($('#工位').getRadioVal() != '') {
  182. $('#工位窗体').animateHide();
  183. $('#打卡窗体').animateShow(doRegLoad());
  184. }
  185. else {
  186. swal({
  187. title: '工位选择',
  188. text: '请您选择工位!',
  189. icon: 'error',
  190. button: '确定'
  191. });
  192. }
  193. }
  194. //登录处理
  195. function doLogin() {
  196. swal({
  197. title: '用户登录',
  198. text: '正在登录,请稍候。。。',
  199. icon: 'info',
  200. button: false,
  201. closeOnClickOutside: false
  202. });
  203. var loginData = {
  204. 'accountCode': $('#账套').val(),
  205. 'userCode': $('#用户').val(),
  206. 'userPassword': hex_md5($('#密码').val()).toUpperCase()
  207. };
  208. $.get('api/LogIn_WCF.ashx', loginData, function (data) {
  209. swal.close();
  210. var json = JSON.parse(data);
  211. if (json['Status'] == '0') {
  212. //登录成功
  213. $('#登录窗体').animateHide();
  214. $('#工位窗体').animateShow(doWorkLoad());
  215. }
  216. else {
  217. swal({
  218. title: '登录失败!',
  219. text: json['Message'],
  220. icon: 'error',
  221. button: '确定'
  222. });
  223. }
  224. });
  225. }
  226. //打卡数据读取
  227. function doRegLoad() {
  228. //先行加载模板工种选项
  229. $.get('api/GetUserJobs.ashx?UserCode=' + $('#用户').val(), function (data) {
  230. var json = JSON.parse(data);
  231. if (json["success"] == true) {
  232. for (var i = 0; i < json.rows.length; i++) {
  233. $('#工号员工模板 select').append('<option value="' + json["rows"][i]["JOBSID"] + '">' + json["rows"][i]["JOBSNAME"] + '</option>');
  234. }
  235. }
  236. //加载打卡员工数据
  237. $('#工号员工').loadHtml('api/GetWorkStationUser.ashx?UserCode=' + $('#用户').val() + '&WorkstationId=' + $('#工位').getRadioVal(), '#工号员工模板', function (data) {
  238. $.get('api/GetClassesUser.ashx?UserCode=' + $('#用户').val(), function (data) {
  239. var json = JSON.parse(data);
  240. if (json['success'] == true) {
  241. if (json['rows'].length > 0) {
  242. $('#工号员工').setCheckBoxVal(json['rows'][0]['STAFFID']);
  243. $('#工号员工').setSelectVal(json['rows'][0]['UJOBSID']);
  244. }
  245. }
  246. else {
  247. //数据读取失败
  248. }
  249. });
  250. });
  251. });
  252. }
  253. //打卡数据保存 登录类型 1:打卡并登录工位 0:只打卡不登录工位
  254. function doRegSave() {
  255. console.log($('#登录类型').val());
  256. console.log('工种:' + getJobId());
  257. //打卡操作
  258. //2021年11月19日09:05:31 by fy modify 做变量 JobReg = 1 执行按工种打卡,JobReg = 0 一般打卡
  259. $.get('api/GetWorkStationUserReg.ashx', {
  260. 'UserCode': $('#用户').val(),
  261. 'WorkstationId': $('#工位').getRadioVal(),
  262. 'StaffId': $('#工号员工').getCheckBoxVal(),
  263. 'JobId': getJobId(),
  264. 'JobReg':1
  265. }, function (data) {
  266. var json = JSON.parse(data);
  267. if (json['success'] == true) {
  268. //打卡成功
  269. swal({
  270. title: '用户登录',
  271. text: '工号 ' + $('#用户').val() + ' 打卡成功!',
  272. icon: 'success',
  273. button: '确定'
  274. }).then(function () {
  275. //按登录类型执行
  276. if ($('#登录类型').val() == "1") {
  277. //登录工位
  278. for (var i = 0; i < workStation.length; i++) {
  279. if (workStation[i]['ID'].toString() == $('#工位').getRadioVal()) {
  280. window.location.href = workStation[i]['TYPEURL'] + '&NAME=' + workStation[i]['NAME'].toString() + '&WORKSID=' + workStation[i]['ID'].toString();
  281. }
  282. }
  283. }
  284. else {
  285. //不登录工位
  286. $('#用户').val('');
  287. $('#密码').val('');
  288. $('#用户').focus();
  289. $('#登录窗体').animateShow();
  290. }
  291. });
  292. }
  293. else {
  294. //打卡失败
  295. var text = "";
  296. if (json['status'] == -999) {
  297. text = json['message']
  298. } else {
  299. text = '工号 ' + $('#用户').val() + ' 打卡失败!'
  300. }
  301. swal({
  302. title: '用户登录',
  303. text: text,
  304. icon: 'error',
  305. button: '确定'
  306. });
  307. //跳回到登录窗体
  308. $('#用户').val('');
  309. $('#密码').val('');
  310. $('#用户').focus();
  311. $('#登录窗体').animateShow();
  312. }
  313. });
  314. }
  315. //工位数据加载
  316. function doWorkLoad() {
  317. //$('#工位').loadSelect('api/GetWorkStation.ashx?UserCode=' + $('#用户').val(), function (data) {
  318. // console.log(data);
  319. // $('#工位').get(0).selectedIndex = 1;
  320. // workStation = data["rows"];
  321. //});
  322. $.get('api/GetProcedure.ashx?UserCode=' + $('#用户').val(), function (data) {
  323. var json = JSON.parse(data);
  324. if (json["success"] == true) {
  325. $("#barcodeStaing").empty();
  326. $("#barcodeStaing").append("<option value='0'>---请选择工序---</option>");
  327. for (var i = 0; i < json.rows.length; i++) {
  328. $("#barcodeStaing").append("<option value='" + json['rows'][i]['PROCEDUREID'] + "'>" + json['rows'][i]['PROCEDURENAME'] + "</option>");
  329. }
  330. $("#barcodeStaing").append("<option value='9999'>--其他工位--</option>");
  331. console.log('json.rows.length', json.rows.length)
  332. if (json.rows.length == 0 ) {
  333. ChangeSelect()
  334. }
  335. }
  336. });
  337. }
  338. function ChangeSelect() {
  339. var procedure = document.getElementById("barcodeStaing");
  340. var index = procedure.selectedIndex;
  341. var myprocedure = procedure.options[index].value;
  342. $('#工位').loadHtml('api/GetWorkStation.ashx?UserCode=' + $('#用户').val() + '&PROCEDUREID=' + myprocedure, '#工位模板', function (data) {
  343. workStation = data["rows"];
  344. //读取工位IP设置工位默认值
  345. $.get('api/GetWorkStationDefault.ashx', function (data) {
  346. var json = JSON.parse(data);
  347. if (json["success"] == true) {
  348. if (json["rows"].length > 0) {
  349. console.log(json["rows"][0]["PCCODE"]);
  350. $('#工位').setRadioVal(json["rows"][0]["ID"]);
  351. }
  352. }
  353. });
  354. });
  355. }
  356. //工位数据保存
  357. function doWorkSave() {
  358. }
  359. //跳转到工位模块
  360. function doPage() {
  361. }
  362. //获取选中员工的工种
  363. function getJobId() {
  364. var result = '';
  365. $('#工号员工').find('input:checkbox').each(function (index, el) {
  366. if ($(this).prop('checked') == true) {
  367. $(this).parent().parent().parent().find('select option').each(function () {
  368. if ($(this).prop('selected') == true) {
  369. if (result != '') result += ',';
  370. result += $(this).val();
  371. }
  372. });
  373. }
  374. });
  375. return result;
  376. }
  377. </script>
  378. </body>
  379. </html>