|
|
@@ -77,17 +77,15 @@
|
|
|
background: #efefef;
|
|
|
top: 50px;
|
|
|
position: absolute;
|
|
|
- }
|
|
|
+ }
|
|
|
table {
|
|
|
width: 100%;
|
|
|
border-collapse: collapse;
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
th, td {
|
|
|
border: 1px solid #000;
|
|
|
text-align: center;
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
th {
|
|
|
background-color: #f2f2f2;
|
|
|
}
|
|
|
@@ -134,12 +132,45 @@
|
|
|
.clickable-item {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+ .barcode-list-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ border-bottom: 1px solid #ddd;
|
|
|
+ }
|
|
|
+ .barcode-text {
|
|
|
+ flex: 1;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ .table-container {
|
|
|
+ position: relative;
|
|
|
+ max-height: 720px;
|
|
|
+ /* 允许垂直滚动 */
|
|
|
+ overflow-y: auto;
|
|
|
+ /* 为容器添加边框 */
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ }
|
|
|
+ /* 通用的表头和表体单元格样式 */
|
|
|
+ .table-cell {
|
|
|
+ padding: 8px;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 固定表头的样式 */
|
|
|
+ .sticky-table-header th {
|
|
|
+ position: sticky;
|
|
|
+ top: 0;
|
|
|
+ background-color: #d6d8db;
|
|
|
+ /* 确保表头位于其他内容之上 */
|
|
|
+ z-index: 2;
|
|
|
+ /* 为表头添加底部边框以区分 */
|
|
|
+ border-bottom: 2px solid #ddd;
|
|
|
+ }
|
|
|
</style>
|
|
|
<title>东科软件</title>
|
|
|
</head>
|
|
|
<body class="bg-light">
|
|
|
<!--导航菜单-->
|
|
|
- <script src="../common/navbar.js"></script>
|
|
|
+ <script src="../common/navbar.js"></script>
|
|
|
<div class="flex">
|
|
|
<!--左侧待签名-->
|
|
|
<div class="outlayer" style="width:250px;">
|
|
|
@@ -250,7 +281,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
<!--签字板-->
|
|
|
<div class="modal" id="tablet" role="dialog" aria-labelledby="myModalLabel">
|
|
|
<div class="modal-dialog modal-xl" role="document">
|
|
|
@@ -266,18 +297,36 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!--型式检验弹窗-->
|
|
|
+ <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" style="max-width:90%">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header" style=" display: block;">
|
|
|
+ <h5 style="text-align: center; font-weight: bold;">检验报告</h5>
|
|
|
+ </div>
|
|
|
+ <div class="modal-body">
|
|
|
+ <div class="table-container">
|
|
|
+ <table id="showtestTable" class="table">
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<script>
|
|
|
/**首件数量(从总单获取)*/
|
|
|
let maxnum = 1;
|
|
|
/**产品id(记录第一次)*/
|
|
|
let GOODSID = 0;
|
|
|
/**总单id */
|
|
|
- let REGISTERID = 0;
|
|
|
+ let REGISTERID = 0;
|
|
|
+ /**形式检验数据 */
|
|
|
+ let TestDataMap = {};
|
|
|
/**加载前调用*/
|
|
|
$(document).ready(function () {
|
|
|
- loadData();
|
|
|
+ loadData();
|
|
|
});
|
|
|
//加载 生产工号
|
|
|
function loadData() {
|
|
|
@@ -305,17 +354,17 @@
|
|
|
const data = await $.ajax({
|
|
|
url: 'api/GetCheckBarcode.ashx?m=assemble',
|
|
|
dataType: "json",
|
|
|
- type: "GET"
|
|
|
+ type: "GET"
|
|
|
})
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
REGISTERNO.push(data[i].REGISTERNO)
|
|
|
}
|
|
|
//调用函数来填充列表
|
|
|
- await populateList(REGISTERNO,'REGISTERNOLIST')
|
|
|
- }
|
|
|
+ await populateList(REGISTERNO, 'REGISTERNOLIST')
|
|
|
+ }
|
|
|
/**
|
|
|
* barcode校验
|
|
|
- * @param REGISTERNO 产品条码
|
|
|
+ * @param REGISTERNO 产品条码
|
|
|
*/
|
|
|
const check = async (REGISTERNO) => {
|
|
|
const data = await $.ajax({
|
|
|
@@ -339,12 +388,13 @@
|
|
|
const radios = document.getElementsByName('inlineRadioOptions');
|
|
|
radios[0].checked = false;
|
|
|
radios[1].checked = false;
|
|
|
- if (data[0].ADVICE!=null) {
|
|
|
+ if (data[0].ADVICE != null) {
|
|
|
data[0].ADVICE == 1 ? radios[0].checked = true : radios[1].checked = true
|
|
|
}
|
|
|
REGISTERID = data[0].REGISTERID
|
|
|
-;
|
|
|
- let barcode = ['产品条码']
|
|
|
+ /**右侧产品条码与型式检验 */
|
|
|
+ let barcodeList = [{ barcode: '产品条码', inspection: '型式检验' }];
|
|
|
+ /**获取产品条码 */
|
|
|
const data2 = await $.ajax({
|
|
|
url: 'api/GetCheckBarcode.ashx?m=getabrcode',
|
|
|
data: { "REGISTERID": data[0].REGISTERID },
|
|
|
@@ -352,19 +402,35 @@
|
|
|
type: "post"
|
|
|
});
|
|
|
for (var i = 0; i < data2.length; i++) {
|
|
|
+ /**查询型式检验 */
|
|
|
+ const resultTest = await $.ajax({
|
|
|
+ url: 'api/GetCheckBarcode.ashx?m=showtest',
|
|
|
+ data: { "BARCODE": data2[i].BARCODE },
|
|
|
+ dataType: "json",
|
|
|
+ type: "post"
|
|
|
+ });
|
|
|
+ /**创建对象 */
|
|
|
+ let newBarcode = {
|
|
|
+ barcode: data2[i].BARCODE,
|
|
|
+ inspection: '查看'
|
|
|
+ };
|
|
|
+
|
|
|
+ //添加型式检验数据
|
|
|
+ TestDataMap[data2[i].BARCODE] = resultTest;
|
|
|
//添加tab栏数据
|
|
|
- barcode.push(data2[i].BARCODE)
|
|
|
+ barcodeList.push(newBarcode);
|
|
|
}
|
|
|
// 调用函数来填充列表
|
|
|
- await populateList(barcode, 'getbarcodelist');
|
|
|
- }
|
|
|
+ await RightpopulateList(barcodeList);
|
|
|
+ //await populateList(barcode, 'getbarcodelist');
|
|
|
+ }
|
|
|
/**
|
|
|
* 监视各个tab栏内数据
|
|
|
* @param tableId 表格id
|
|
|
*/
|
|
|
const getItem = (tableId) => {
|
|
|
/**根据id获取表格 */
|
|
|
- const table = document.getElementById(tableId);
|
|
|
+ const table = document.getElementById(tableId);
|
|
|
/**根据表格获取所有行 */
|
|
|
const rows = table.getElementsByTagName('tr');
|
|
|
/**返回值集合 */
|
|
|
@@ -390,7 +456,7 @@
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
// 查找包含文本输入框的单元格
|
|
|
const checkboxCell = Array.from(cells).find(cell => cell.classList.contains('checkbox'));
|
|
|
/**输入框值 */
|
|
|
@@ -410,44 +476,43 @@
|
|
|
}
|
|
|
//返回对象
|
|
|
return { tableData: data };
|
|
|
- };
|
|
|
+ };
|
|
|
/**
|
|
|
* 左侧待检验/待签名列表
|
|
|
* @param items 总单号
|
|
|
* @param divid 区块id
|
|
|
*/
|
|
|
- const populateList = async (items, divid) => {
|
|
|
+ const populateList = async (items, divid) => {
|
|
|
/**获取 ul*/
|
|
|
const ul = document.getElementById(divid);
|
|
|
// 清空现有的 <li> 元素
|
|
|
ul.innerHTML = '';
|
|
|
- //遍历所有li
|
|
|
+ //遍历所有li
|
|
|
await items.forEach((item, index) => {
|
|
|
-
|
|
|
+
|
|
|
/**获取当前li */
|
|
|
const liElement = document.createElement('li');
|
|
|
//添加class
|
|
|
liElement.classList.add('list-group-item');
|
|
|
//添加名称
|
|
|
- liElement.textContent = item;
|
|
|
+ liElement.textContent = item;
|
|
|
if (index != 0) {
|
|
|
//添加鼠标互动
|
|
|
liElement.classList.add('clickable-item');
|
|
|
- //添加点击事件
|
|
|
- liElement.addEventListener('click', function () {
|
|
|
- //展示区块为总单
|
|
|
- if (divid == 'REGISTERNOLIST')
|
|
|
- {
|
|
|
- //添加方法 查询总单信息
|
|
|
- check(item);
|
|
|
- }
|
|
|
- //展示区块为产品条码
|
|
|
- else if (divid == 'getbarcodelist') {
|
|
|
- //添加方法 查找barcode的数据
|
|
|
- addinputvalue(item);
|
|
|
- //开启产品条码弹窗
|
|
|
- $('#barcode').modal('show');
|
|
|
- }
|
|
|
+ //添加点击事件
|
|
|
+ liElement.addEventListener('click', function () {
|
|
|
+ //展示区块为总单
|
|
|
+ if (divid == 'REGISTERNOLIST') {
|
|
|
+ //添加方法 查询总单信息
|
|
|
+ check(item);
|
|
|
+ }
|
|
|
+ //展示区块为产品条码
|
|
|
+ else if (divid == 'getbarcodelist') {
|
|
|
+ //添加方法 查找barcode的数据
|
|
|
+ addinputvalue(item);
|
|
|
+ //开启产品条码弹窗
|
|
|
+ $('#barcode').modal('show');
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
//将li放入ul中
|
|
|
@@ -479,10 +544,10 @@
|
|
|
*/
|
|
|
const setval = async (data) => {
|
|
|
/**根据表格指定行 */
|
|
|
- const specificRow = await document.getElementById(data.ITEMSID);
|
|
|
+ const specificRow = await document.getElementById(data.ITEMSID);
|
|
|
/**获取当前行 */
|
|
|
const cells = await specificRow.getElementsByTagName('td');
|
|
|
- if (data.ITEMSID==20) {
|
|
|
+ if (data.ITEMSID == 20) {
|
|
|
// 查找包含文本输入框的单元格
|
|
|
const checkboxCell = Array.from(cells).find(cell => cell.classList.contains('text')).getElementsByTagName('input')[0];
|
|
|
//赋值
|
|
|
@@ -552,10 +617,10 @@
|
|
|
//将li放入ul中
|
|
|
ul.appendChild(liElement);
|
|
|
//生成该li对应的内容
|
|
|
- await gettxt(item);
|
|
|
- }
|
|
|
+ await gettxt(item);
|
|
|
+ }
|
|
|
//li初始化和点击事件
|
|
|
- lionclick();
|
|
|
+ lionclick();
|
|
|
}
|
|
|
/**li与div联动(tabs) */
|
|
|
const lionclick = () => {
|
|
|
@@ -564,10 +629,10 @@
|
|
|
// 设置所有 li 的 data-index 属性
|
|
|
lis.forEach(function (li, index) {
|
|
|
li.setAttribute('data-index', index);
|
|
|
- });
|
|
|
+ });
|
|
|
// 函数:根据 current li 显示对应的 item
|
|
|
function showCorrectItem() {
|
|
|
- var currentIndex = null;
|
|
|
+ var currentIndex = null;
|
|
|
// 查找带有 class="current" 的 li 的索引
|
|
|
lis.forEach(function (li, index) {
|
|
|
if (li.classList.contains('current')) {
|
|
|
@@ -580,16 +645,16 @@
|
|
|
});
|
|
|
// 显示对应的 item
|
|
|
items[currentIndex].style.display = 'block';
|
|
|
- }
|
|
|
+ }
|
|
|
// 页面加载完成后调用
|
|
|
- showCorrectItem();
|
|
|
+ showCorrectItem();
|
|
|
// 设置 li 的点击事件
|
|
|
lis.forEach(function (li) {
|
|
|
li.addEventListener('click', function () {
|
|
|
// 重置所有 li 的类名
|
|
|
lis.forEach(function (otherLi) {
|
|
|
otherLi.classList.remove('current');
|
|
|
- });
|
|
|
+ });
|
|
|
// 设置当前 li 的类名为 'current'
|
|
|
this.classList.add('current');
|
|
|
// 显示对应的 item
|
|
|
@@ -647,7 +712,7 @@
|
|
|
type: "post",
|
|
|
success: function (data) {
|
|
|
//填充表格数据
|
|
|
- fillTable(data, ITEMSYTPE);
|
|
|
+ fillTable(data, ITEMSYTPE);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
@@ -662,9 +727,9 @@
|
|
|
// 清空容器
|
|
|
while (tbody.firstChild) {
|
|
|
tbody.removeChild(tbody.firstChild);
|
|
|
- }
|
|
|
+ }
|
|
|
// 遍历数据数组,并为每个项目创建一个新的表格行
|
|
|
- for (const item of data) {
|
|
|
+ for (const item of data) {
|
|
|
// 创建一个新的表格行
|
|
|
const tr = document.createElement('tr');
|
|
|
tr.id = item.ITEMSID;
|
|
|
@@ -684,7 +749,7 @@
|
|
|
// 创建并填充第二个 <td> 元素(要求)
|
|
|
const tdItemsInfo = document.createElement('td');
|
|
|
tdItemsInfo.textContent = item.ITEMSINFO;
|
|
|
- tr.appendChild(tdItemsInfo);
|
|
|
+ tr.appendChild(tdItemsInfo);
|
|
|
//创建了空的 <td> 元素
|
|
|
const tdResult = document.createElement('td');
|
|
|
tdResult.className = 'radio';
|
|
|
@@ -693,17 +758,17 @@
|
|
|
radioOk.type = 'radio';
|
|
|
radioOk.name = item.ITEMSID;
|
|
|
radioOk.value = '1';
|
|
|
- radioOk.disabled = true;
|
|
|
+ radioOk.disabled = true;
|
|
|
// 创建与单选按钮相邻的文本节点 "OK"
|
|
|
- const textOk = document.createTextNode('OK');
|
|
|
+ const textOk = document.createTextNode('OK');
|
|
|
// 创建第二个单选按钮
|
|
|
const radioNg = document.createElement('input');
|
|
|
radioNg.type = 'radio';
|
|
|
radioNg.name = item.ITEMSID;
|
|
|
radioNg.value = '0';
|
|
|
- radioNg.disabled = true;
|
|
|
+ radioNg.disabled = true;
|
|
|
// 创建与单选按钮相邻的文本节点 "NG"
|
|
|
- const textNg = document.createTextNode('NG');
|
|
|
+ const textNg = document.createTextNode('NG');
|
|
|
// 将元素添加到 tdResult 中
|
|
|
tdResult.appendChild(radioOk);
|
|
|
tdResult.appendChild(textOk);
|
|
|
@@ -727,17 +792,17 @@
|
|
|
document.getElementById('myIframe').src = 'Tablet.html?id=' + index + '®ISTERID=' + REGISTERID;
|
|
|
}
|
|
|
/**保存按钮 */
|
|
|
- const save = async() => {
|
|
|
- // 获取选中的单选按钮的值
|
|
|
- const radios =await document.getElementsByName('inlineRadioOptions');
|
|
|
+ const save = async () => {
|
|
|
+ // 获取选中的单选按钮的值
|
|
|
+ const radios = await document.getElementsByName('inlineRadioOptions');
|
|
|
let ADVICE;
|
|
|
for (const radio of radios) {
|
|
|
if (radio.checked) {
|
|
|
ADVICE = radio.value;
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
- // 获取文本输入字段的值
|
|
|
+ }
|
|
|
+ // 获取文本输入字段的值
|
|
|
const opinionInput = document.getElementById('opinion');
|
|
|
const ADVICEREMARKS = opinionInput.value;
|
|
|
if (!ADVICE || !ADVICEREMARKS) {
|
|
|
@@ -750,25 +815,112 @@
|
|
|
}
|
|
|
const data = await $.ajax({
|
|
|
url: 'api/GetCheckBarcode.ashx?m=save',
|
|
|
- data: { 'ADVICE': ADVICE, "ADVICEREMARKS": ADVICEREMARKS, "REGISTERID": REGISTERID},
|
|
|
+ data: { 'ADVICE': ADVICE, "ADVICEREMARKS": ADVICEREMARKS, "REGISTERID": REGISTERID },
|
|
|
dataType: "json",
|
|
|
- type: "post"
|
|
|
+ type: "post"
|
|
|
})
|
|
|
await swal({
|
|
|
text: data.result ? '保存成功!' : '保存失败',
|
|
|
button: true,
|
|
|
icon: data.result ? 'success' : 'error',
|
|
|
closeOnClickOutside: false
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ /**右侧产品条码区块*/
|
|
|
+ const RightpopulateList = async (items) => {
|
|
|
+ const ul = document.getElementById('getbarcodelist');
|
|
|
+ ul.innerHTML = '';
|
|
|
+
|
|
|
+ items.forEach((item, index) => {
|
|
|
+ const liElement = document.createElement('li');
|
|
|
+ liElement.classList.add('list-group-item', 'barcode-list-item', 'list-group-item');
|
|
|
+ // 创建产品条码文本元素
|
|
|
+ const barcodeElement = document.createElement('span');
|
|
|
+ barcodeElement.classList.add('barcode-text');
|
|
|
+ barcodeElement.textContent = item.barcode;
|
|
|
+
|
|
|
+ // 创建型式检验文本元素
|
|
|
+ const viewElement = document.createElement('span');
|
|
|
+ viewElement.classList.add('view-button');
|
|
|
+ viewElement.textContent = item.inspection;
|
|
|
+ if (index != 0) {
|
|
|
+ //添加鼠标互动
|
|
|
+ liElement.classList.add('clickable-item');
|
|
|
+ //添加产品条码点击事件
|
|
|
+ barcodeElement.addEventListener('click', function () {
|
|
|
+ //添加方法 查找barcode的数据
|
|
|
+ addinputvalue(item.barcode);
|
|
|
+ //开启产品条码弹窗
|
|
|
+ $('#barcode').modal('show');
|
|
|
+ });
|
|
|
+ //添加型式检验点击事件
|
|
|
+ viewElement.addEventListener('click', function () {
|
|
|
+ if (!TestDataMap[item.barcode]) {
|
|
|
+ return swal({
|
|
|
+ text: '未查询到型式检验数据!',
|
|
|
+ button: true,
|
|
|
+ icon: 'error',
|
|
|
+ closeOnClickOutside: false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ showtest(TestDataMap[item.barcode]);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 将条码和“查看”元素添加到li中
|
|
|
+ liElement.appendChild(barcodeElement);
|
|
|
+ liElement.appendChild(viewElement);
|
|
|
+
|
|
|
+ // 将li添加到ul中
|
|
|
+ ul.appendChild(liElement);
|
|
|
+ });
|
|
|
+ };
|
|
|
+ /**查看型式检验按钮 */
|
|
|
+ const showtest = async (showtestData) => {
|
|
|
+ const table = document.getElementById('showtestTable');
|
|
|
+ // 清空表格内容
|
|
|
+ while (table.firstChild) {
|
|
|
+ table.removeChild(table.firstChild);
|
|
|
+ }
|
|
|
+ /**创建表头 */
|
|
|
+ const thead = document.createElement('thead');
|
|
|
+ thead.className = 'sticky-table-header';
|
|
|
+ const headerRow = document.createElement('tr');
|
|
|
+ /**创建表头数据 */
|
|
|
+ headerRow.className = 'table-secondary';
|
|
|
+ ['序号', '产品型号', '产品名称', '检验时间', '检验项目', '检验标准', '单位', '数值', '结果'].forEach(headerText => {
|
|
|
+ const th = document.createElement('th');
|
|
|
+ th.scope = 'col';
|
|
|
+ th.textContent = headerText;
|
|
|
+ th.className = 'table-cell';
|
|
|
+ headerRow.appendChild(th);
|
|
|
+ });
|
|
|
+ thead.appendChild(headerRow);
|
|
|
+ /**创建表体 */
|
|
|
+ const tbody = document.createElement('tbody');
|
|
|
+ for (var i = 0; i < showtestData.length; i++) {
|
|
|
+ const tr = document.createElement('tr');
|
|
|
+ var keys = Object.keys(showtestData[i]);
|
|
|
+ for (var k = 0; k < keys.length; k++) {
|
|
|
+ const td = document.createElement('td');
|
|
|
+ td.textContent = showtestData[i][keys[k]];
|
|
|
+ td.className = 'table-cell';
|
|
|
+ tr.appendChild(td);
|
|
|
+ }
|
|
|
+ tbody.appendChild(tr);
|
|
|
+ }
|
|
|
+ //依次填充结构
|
|
|
+ table.appendChild(thead);
|
|
|
+ table.appendChild(tbody);
|
|
|
+ $('#exampleModal').modal('show')
|
|
|
}
|
|
|
</script>
|
|
|
- <!--版权信息-->
|
|
|
- <script src="../common/footer.js"></script>
|
|
|
- <script src="/Plugins/bootstrap-4.3.1/js/bootstrap.bundle.min.js"></script>
|
|
|
- <script src="/Plugins/bootstrap-select/js/bootstrap-select.min.js"></script>
|
|
|
- <script src="/Plugins/sweetalert/sweetalert.min.js"></script>
|
|
|
- <script src="/Plugins/xrequest/xrequest.min.js"></script>
|
|
|
- <script src="../Common/xuwell.js"></script>
|
|
|
+ <!--版权信息-->
|
|
|
+ <script src="../common/footer.js"></script>
|
|
|
+ <script src="/Plugins/bootstrap-4.3.1/js/bootstrap.bundle.min.js"></script>
|
|
|
+ <script src="/Plugins/bootstrap-select/js/bootstrap-select.min.js"></script>
|
|
|
+ <script src="/Plugins/sweetalert/sweetalert.min.js"></script>
|
|
|
+ <script src="/Plugins/xrequest/xrequest.min.js"></script>
|
|
|
+ <script src="../Common/xuwell.js"></script>
|
|
|
</body>
|
|
|
|
|
|
</html>
|