|
1
2
3
4
5
6
|
<!DOCTYPE HTML>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<meta charset="utf-8">
<head>
<th:block th:include="include :: header" />
<th:block th:include="include :: select2-css" />
|
|
7
8
|
<style type="text/css">
</style>
|
|
9
10
11
|
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
|
12
|
<form class="form-horizontal m" id="form-receiptHeader-add" enctype="multipart/form-data">
|
|
13
14
15
16
17
18
19
20
|
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">入库类型:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <select id="receiptType" name="receiptType" class="form-control">-->
<!-- <option th:text="CLXXRK" th:value="CLXXRK"></option>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
|
|
21
|
<div class="form-group">
|
|
22
|
<label class="col-sm-3 control-label">出库类型:</label>
|
|
23
|
<div class="col-sm-8">
|
|
24
|
<input id="receiptType" name="receiptType" class="form-control" type="text" th:value="CLXXRK" readonly>
|
|
25
26
|
</div>
</div>
|
|
27
28
29
30
31
32
33
34
|
<div class="form-group">
<label class="col-sm-3 control-label">车辆单据类型:</label>
<div class="col-sm-8">
<select id="vehicleDocumentType" name="vehicleDocumentType" class="form-control" th:with="vehicleDocumentType=${@dict.getType('vehicleDocumentType')}">
<option th:each="dict : ${vehicleDocumentType}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
</select>
</div>
</div>
|
|
35
36
37
38
39
40
|
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">原料批号:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input id="materialBatch" name="materialBatch" class="form-control" type="text">-->
<!-- </div>-->
<!-- </div>-->
|
|
41
42
43
|
<div class="form-group">
<label class="col-sm-3 control-label">供应商:</label>
<div class="col-sm-8">
|
|
44
|
<select id="supplier" name="supplier" class="form-control" type="text"></select>
|
|
45
46
47
48
49
50
51
52
53
54
|
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">司机姓名:</label>
<div class="col-sm-8">
<input id="vehicleName" name="vehicleName" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">身份证号:</label>
|
|
55
|
<div class="col-sm-6">
|
|
56
57
|
<input id="cardNumber" name="cardNumber" class="form-control" type="text">
</div>
|
|
58
|
<button onclick="ReadIDCard()" class="btn btn-primary" type="button">识别</button>
|
|
59
|
<button class="btn btn-info" type="button" onclick="paiZhao()">拍照</button>
|
|
60
|
</div>
|
|
61
|
|
|
62
63
64
65
66
67
68
69
|
<!-- <div class="form-group" style="width:600px;margin: 0 auto;white-space: nowrap">-->
<!-- <div class="col-sm-6">-->
<!-- <img id="cameraPlc" name="cameraPlc" src="" width="300px" height="200px"/>-->
<!-- </div>-->
<!-- <div class="col-sm-6">-->
<!-- <img id="view1" src="" width="300px" height="200px" alt="主摄像头画面">-->
<!-- </div>-->
<!-- </div>-->
|
|
70
|
<div class="form-group">
|
|
71
|
<label class="col-sm-3 control-label">车辆毛重:</label>
|
|
72
|
<div class="col-sm-6">
|
|
73
|
<input id="grossWeight" name="grossWeight" class="form-control" type="text">
|
|
74
|
</div>
|
|
75
|
<button type="button" class="btn btn-primary" onclick="getWeight(0)" >取重</button>
|
|
76
77
|
</div>
<div class="form-group">
|
|
78
|
<label class="col-sm-3 control-label">车辆皮重:</label>
|
|
79
|
<div class="col-sm-6">
|
|
80
|
<input id="tareWeight" name="tareWeight" class="form-control" type="text">
|
|
81
|
</div>
|
|
82
|
<button type="button" class="btn btn-primary" onclick="getWeight(1)" >取重</button>
|
|
83
84
|
</div>
<div class="form-group">
|
|
85
|
<label class="col-sm-3 control-label">车辆净重:</label>
|
|
86
87
|
<div class="col-sm-6">
<input id="netWeight" name="netWeight" class="form-control" type="number">
|
|
88
89
|
</div>
</div>
|
|
90
|
|
|
91
|
|
|
92
|
<div class="form-group">
|
|
93
|
<label class="col-sm-3 control-label">物料:</label>
|
|
94
|
<div class="col-sm-8">
|
|
95
|
<select id="materialCode" name="materialCode" class="form-control"></select>
|
|
96
|
</select>
|
|
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">车牌号:</label>
<div class="col-sm-8">
<input id="carNumber" name="carNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">驾驶证:</label>
<div class="col-sm-8">
<input id="driverNumber" name="driverNumber" class="form-control" type="text">
</div>
</div>
<div class="form-group">
|
|
112
113
|
<label class="col-sm-3 control-label">同行人数:</label>
<div class="col-sm-8">
|
|
114
115
116
117
118
119
|
<input id="userDef1" name="userDef1" class="form-control" type="text" >
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">身份证图片上传:</label>
<div class="col-sm-8">
|
|
120
|
<input class="fileUpload" type="file" id="userDef2" name="userDef2" multiple>
|
|
121
122
|
</div>
</div>
|
|
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">驾驶证图片上传:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input class="fileUpload" type="file" id="userDef3" name="userDef3">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">行驶证图片上传:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input class="fileUpload" type="file" id="userDef4" name="userDef4">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">车辆入厂图片上传:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input class="fileUpload" type="file" id="userDef5" name="userDef5">-->
<!-- </div>-->
<!-- </div>-->
|
|
141
|
<input id="userDef7" name="userDef7" hidden>
|
|
142
|
<div class="form-group">
|
|
143
144
145
|
<input type="hidden" id="url" >
<input type="hidden" id="baudrate" >
<input type="hidden" id="comm" >
|
|
146
147
148
149
150
151
152
153
|
<div class="form-control-static col-sm-offset-9">
<button type="submit" class="btn btn-primary" >提交</button>
<button onclick="$.modal.close()" class="btn btn-danger" type="button" >关闭</button>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
|
|
154
|
<th:block th:include="include :: select2-js" />
|
|
155
|
<th:block th:include="include :: thumbnail_customized-js" />
|
|
156
157
158
|
<th:block th:include="include :: bootstrap-fileinput-css"/>
<th:block th:include="include :: bootstrap-fileinput-js"/>
<th:block th:include="include :: piexif-js"/>
|
|
159
|
<script type="text/javascript">
|
|
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
//初始化fileinput
var FileInput = function () {
var oFile = new Object();
//初始化fileinput控件(第一次初始化)
oFile.Init = function(ctrlName, uploadUrl) {
var control = $('#' + ctrlName);
//初始化上传控件的样式
control.fileinput({
language: 'zh', //设置语言
uploadUrl: uploadUrl, //上传的地址
allowedFileExtensions: ['jpg', 'gif', 'png', 'pdf'], //接收的文件后缀
showUpload: true, //是否显示上传按钮
showCaption: false, //是否显示标题
browseClass: "btn btn-primary", //按钮样式
maxFileCount: 10, //表示允许同时上传的最大文件个数
enctype: 'multipart/form-data',
validateInitialCount:true,
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
uploadExtraData:function (previewId, index) { //传参
var data = {
};
return data;
}
});
//导入文件上传完成之后的事件
control.on("fileuploaded", function (event, data, previewId, index) {
let plugin = $('#userDef2').data('fileinput');
console.log(plugin.initialPreview);
});
}
return oFile;
};
//初始化fileinput
var oFileInput = new FileInput();
//参数1:控件id、参数2:上传地址
oFileInput.Init("userDef2", ctx + 'vehicle/vehicleReceipt/uploadReport');
|
|
199
|
|
|
200
|
function paiZhao(){
|
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
if($("#vehicleName").val()==''){
$.modal.msgWarning("请先录入 司机姓名 在进行拍照!!");
$("#vehicleName").focus();
return;
}
if($("#cardNumber").val()==''){
$.modal.msgWarning("请先录入 身份证号 在进行拍照!!");
$("#cardNumber").focus();
return;
}
if($("#carNumber").val()==''){
$.modal.msgWarning("请先录入 车牌号 在进行拍照!!");
$("#carNumber").focus();
return;
}
if($("#driverNumber").val()==''){
$.modal.msgWarning("请先录入 驾驶证 在进行拍照!!");
$("#driverNumber").focus();
return;
}
let vehicleName = $("#vehicleName").val();
let cardNumber = $("#cardNumber").val();
let carNumber = $("#carNumber").val();
let driverNumber = $("#driverNumber").val();
let url = ctx+ "vehicle/vehicleReceipt/pictures/"+vehicleName+"/"+cardNumber+"/"+carNumber+"/"+driverNumber;
$.modal.open("车辆拍照" ,url);
|
|
227
|
}
|
|
228
229
230
231
232
233
234
235
236
237
238
|
function drawCanvasImage() {
const canvas = document.getElementById('canvas');
canvas.width = width;
canvas.height = height;
const context = canvas.getContext('2d');
context.drawImage(video, 0, 0, width, height, 0, 0, width, height);
// //获取图片,数据格式为base64
// const imageData = canvas.toDataURL("image/png");
}
|
|
239
240
241
242
243
244
245
246
247
248
|
var prefix = ctx + "vehicle/vehicleReceipt";
$("#form-receiptHeader-add").validate({
rules:{
receiptType:{
required:true,
},
companyCode:{
required:true,
},
|
|
249
250
251
|
materialCode:{
required:true
},
|
|
252
253
|
},
submitHandler: function(form) {
|
|
254
255
256
257
258
259
260
261
262
|
let imglist=$(".file-preview-success .file-preview-image");
let userDef7='';
for(let a=0;a<imglist.length;a++){
userDef7+=imglist[parseInt(a)].title+",";
}
if(userDef7!=''){
userDef7=userDef7.substring(0,userDef7.length-1);
}
$("#userDef7").val(userDef7);
|
|
263
264
265
|
$.ajax({
cache : true,
type : "POST",
|
|
266
267
|
dataType:"json",
// contentType:"multipart/form-data",
|
|
268
|
url : prefix + "/add",
|
|
269
|
data : $("#form-receiptHeader-add").serializeArray(),
|
|
270
271
272
273
|
async : false,
error : function(request) {
$.modal.alertError("请求失败!");
},
|
|
274
275
|
success : function(res) {
$.operate.saveSuccess(res);
|
|
276
277
278
279
280
281
282
283
|
}
});
}
});
$(function () {
layui.use('laydate', function() {
var laydate = layui.laydate;
|
|
284
|
laydate.render({ elem: '#incomingTime',min: 0, theme: 'molv', format: 'yyyy-MM-dd HH:mm:ss'});
|
|
285
|
});
|
|
286
|
$('#supplier').select2({
|
|
287
288
289
290
291
292
293
294
295
296
297
298
|
ajax: {
url: ctx+'config/supplier/getData',
dataType: 'json',
type: 'post',
data: function (params) {
let query = {
supplierName: params.term,
}
return query;
}
}
});
|
|
299
300
301
302
303
304
305
306
307
308
309
310
311
|
$('#materialCode').select2({
ajax: {
url: ctx+'config/material/getData',
dataType: 'json',
type: 'post',
data: function (params) {
let query = {
materialName: params.term,
}
return query;
}
}
});
|
|
312
|
initData();
|
|
313
|
})
|
|
314
|
|
|
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
|
function initData(){
let weightData = {"useArea":"carFlag"}
let config2 = {
url: ctx+'config/serialPorts/getInfo',
type: "POST",
dataType: "json",
data: weightData,
success: function (result) {
if(result.code==web_status.SUCCESS){
$("#url").val(result.data.url);
$("#baudrate").val(result.data.baudrate);
$("#comm").val(result.data.currCom);
}
}
};
$.ajax(config2)
}
|
|
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
|
$("#grossWeight").blur(function(){
if($("#tareWeight").val()!=''){
let total = numAdd($("#grossWeight").val(),$("#tareWeight").val())
$("#netWeight").val(total)
}
})
$("#tareWeight").blur(function(){
if($("#grossWeight")!=''){
let total = numAdd($("#grossWeight").val(),$("#tareWeight").val())
$("#netWeight").val(total)
}
})
function numAdd(num1, num2) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
|
|
360
|
return (num1 * baseNum - num2 * baseNum) / baseNum;
|
|
361
362
|
};
|
|
363
|
function getWeight(num){
|
|
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
let weightUrl = $("#url").val();
let currCom = $("#comm").val();
let baudrate = $("#baudrate").val();
if(weightUrl==''){
$.modal.msgError("车辆称重地磅地址为空,请先配置地磅地址!")
return;
}
if(currCom==''){
$.modal.msgError("车辆称重地磅串口为空,请先指定串口!")
return;
}
if(baudrate==''){
$.modal.msgError("车辆称重地磅波特率为空,请先指定波特率!")
return;
}
// let url='http://10.34.101.77:8888/wms/API/WMS/v2/getWeightForSerial';
|
|
380
381
|
let type = "POST";
let dataType = "json";
|
|
382
|
let data = {"comm":currCom,"baudrate":baudrate};
|
|
383
|
let config = {
|
|
384
|
url: weightUrl,
|
|
385
386
387
388
|
type: type,
dataType: dataType,
data: data,
success: function (result) {
|
|
389
|
if(result.code==web_status.SUCCESS){
|
|
390
|
console.log(result.data)
|
|
391
392
393
394
395
396
397
398
399
400
401
402
|
var str=result.data;
/*var str_conver=str.match(/[\u0000-\u00ff]/g);
console.log(str_conver);//半角
var res=str_conver.toString();
str=res.replaceAll(",","");
console.log(str);
str=str.replace(/(^\s*)|(\s*$)/g, "");
console.log(str);*/
//console.log(str.match(/[\u4e00-\u9fa5]/g)); //中文
//console.log(str.match(/[\uff00-\uffff]/g));//全角
|
|
403
|
if(num == '0'){
|
|
404
|
$("#grossWeight").val(str)
|
|
405
|
}else if(num == '1'){
|
|
406
|
$("#tareWeight").val(str)
|
|
407
408
|
}
}
|
|
409
410
411
|
}
};
$.ajax(config)
|
|
412
|
}
|
|
413
|
|
|
414
415
416
|
function ReadIDCard(){
$.post("http://127.0.0.1:38088/card=idcard", function(res){
if(res.code == '0'){
|
|
417
418
|
$("#cardNumber").val(res.IDCardInfo.cardID)
$("#vehicleName").val(res.IDCardInfo.name)
|
|
419
420
|
}else{
alert("请将证件放对位置!!!")
|
|
421
|
}
|
|
422
|
})
|
|
423
424
|
}
|
|
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
|
// 主头纠偏拍照
function scan1cutpage(){
debugger;
var data = {
"filepath": "base64",
"rotate": "0",
"cutpage": "1",
"camidx": "0"
};
$.post("http://127.0.0.1:38088/video=grabimage", JSON.stringify(data),
function(res){
$('#res_img').attr('src', "data:image/jpg;base64," + res.photoBase64);
// 调用方式
// 参数一: 选择器,代表img标签
// 参数二: 图片名称,可选
downloadIamge('#res_img', res.photoBase64)
}
)
}
function downloadIamge(selector, name) {
var image = new Image()
// 解决跨域 Canvas 污染问题
image.setAttribute('crossOrigin', 'anonymous')
image.onload = function () {
var canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
var context = canvas.getContext('2d')
context.drawImage(image, 0, 0, image.width, image.height)
var url = canvas.toDataURL('image/png')
// 生成一个a元素
var a = document.createElement('a')
// 创建一个单击事件
var event = new MouseEvent('click')
// 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称
a.download = name || '下载图片名称'
// 将生成的URL设置为a.href属性
a.href = url
// 触发a的单击事件
a.dispatchEvent(event)
}
image.src = document.querySelector(selector).src
|
|
477
|
}
|
|
478
479
|
</script>
|
|
480
481
|
</body>
</html>
|