This commit is contained in:
dev01 2022-12-12 09:42:59 +08:00
commit e69dd715d7
5 changed files with 176 additions and 33 deletions

View File

@ -79,7 +79,7 @@
<div class="form-group"> <div class="form-group">
<label class="form-label" for="inpWorTyp">項目</label> <label class="form-label" for="inpWorTyp">項目</label>
<select class="form-control custom-select-ri" id="inpWorTyp" name="inpWorTyp" disabled> <select class="form-control custom-select-ri" id="inpWorTyp" name="inpWorTyp" disabled>
<option value=2 selected>維修</option> <option value='2' selected>維修</option>
</select> </select>
</div> </div>
</div> </div>
@ -277,6 +277,10 @@
}); });
onEvent('click', '#alertTable a[id=alr_recModal]', function () { onEvent('click', '#alertTable a[id=alr_recModal]', function () {
$('#alr_forImage').html('');
$('#alr_forFile').html('');
$('#inpNotice').val('');
$('#inpDescription').val('');
let alr_table = $('#alertTable').DataTable(); let alr_table = $('#alertTable').DataTable();
let alr_elem = $(this).parent().parent(); let alr_elem = $(this).parent().parent();
let alr_tableData = alr_table.row(alr_elem).data(); let alr_tableData = alr_table.row(alr_elem).data();
@ -298,6 +302,80 @@
let alr_fixDoCode = $($('#inpFixDoCode option[data-sub=' + alr_tableData.alarmClass.toString().split('_')[1] + '][data-main=' + alr_tableData.alarmClass.toString().split('_')[0] + ']')[0]).val(); let alr_fixDoCode = $($('#inpFixDoCode option[data-sub=' + alr_tableData.alarmClass.toString().split('_')[1] + '][data-main=' + alr_tableData.alarmClass.toString().split('_')[0] + ']')[0]).val();
$('#inpFixDoCode').val(alr_fixDoCode); $('#inpFixDoCode').val(alr_fixDoCode);
}); });
onEvent('click', '#OpeRecSendBtn', function () {
let form = $("#opeRecForm");
$(form).validate({
rules: {
inpWorTyp: { required: true },
inpFixDo: { required: true },
inpFixDoCode: { required: true },
inpFixFirm: { required: true },
inpStatus: { required: true },
inpWorPerId: { required: true },
}
});
if ($(form).valid()) {
let url = baseApiUrl + "/operation/SavOpeRecord";
let fd = new FormData();
$.each(pageAct.imageFile, function (i, v) {
fd.append("lorf[" + i + "].id", v.id);
fd.append("lorf[" + i + "].file", v.file);
fd.append("lorf[" + i + "].save_file_name", v.save_file_name);
fd.append("lorf[" + i + "].ori_file_name", v.ori_file_name);
});
fd.append("error_code", $('#inpErrCode').val());
fd.append("location", "台北" + $('#buiActDrop').text() + pageAct.floor);
fd.append("location_code", pageAct.AreaTag + pageAct.buiTag + pageAct.floor);
fd.append("device_system_category_layer2", pageAct.selSysMain);
fd.append("device_system_category_layer3", pageAct.selSysSub);
fd.append("work_type", parseInt($('#inpWorTyp').val()));
fd.append("fix_do", $('#inpFixDo').val());
fd.append("fix_do_code", $('#inpFixDoCode').val());
fd.append("fix_firm", parseInt($('#inpFixFirm').val()));
fd.append("status", parseInt($('#inpStatus').val()));
fd.append("work_person_id", $('#inpWorPerId').val());
fd.append("start_time", ($('#inpStaTime').val() || null) == null ? null : new Date($('#inpStaTime').val()).toISOString());
fd.append("notice", $('#inpNotice').val() || null);
fd.append("description", $('#inpDescription').val() || null);
objSendData.Data = sendData;
$.ajax({
url: url,
type: "POST",
data: fd,
async: false,
cache: false,
contentType: false,
processData: false,
beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', "Bearer " + localStorage.getItem("JWT-Authorization")) },
success: function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
//toast_ok(common.AddSuc);
//$("#opeFirmModal").modal("hide");
$("#OpeRecCanBtn").click();
getData();
}
}
});
//ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
// if (!res || res.code != "0000" || !res.data) {
// } else {
// //toast_ok(common.AddSuc);
// //$("#opeFirmModal").modal("hide");
// $("#OpeRecCanBtn").click();
// refTable();
// }
//}, null, "POST").send();
}
});
} }
function setReturn(bool) { function setReturn(bool) {

View File

@ -301,7 +301,6 @@
<script> <script>
$(function () { $(function () {
$(loadEle).Loading("close");
initDropzone(); initDropzone();
pageAct.sub_system_tag = null; pageAct.sub_system_tag = null;
pageAct.main_system_tag = null; pageAct.main_system_tag = null;
@ -514,20 +513,38 @@
"title": "檔案上傳", "title": "檔案上傳",
"data": "lorf", "data": "lorf",
"render": function (data) { "render": function (data) {
strHtml = ``; ope_imgHtml = null;
$.each(data, function (i, v) { $.each(data, function (i, v) {
let extName = v.ori_file_name.split('.')[1];
if (i == 0) if (i == 0)
strHtml += `<div class="file-item" data-id=${v.id}>` ope_imgHtml = creDiv(["file-item"], null, null, null, { id: v.id });
if (i < 3) { if (i < 3) {
let extName = v.ori_file_name.split('.')[1]; if (/\.(jpe?g|png|gif)$/i.test(v.ori_file_name)) {
strHtml += `<a href="${baseApiUrl}/upload/operation/${v.save_file_name}.${extName}" download="${v.ori_file_name}" target="_blank"> ope_colA = creEle("a", null, null, null, null, null, { href: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName, download: v.ori_file_name, target: "_blank" });
<img style="margin-left: 30px" data-filename="${v.ori_file_name}" data-savename="${v.save_file_name}" height="70px" width="70px" src="${baseApiUrl}/upload/operation/${v.save_file_name}.${extName}"> ope_colImg = creImg("img", null, null, null, null, { filename: v.ori_file_name, savename: v.save_file_name }, { style: "margin-left: 30px", height: "70px", width: "50px", src: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName });
</a>` ope_colA.append(ope_colImg);
ope_imgHtml.append(ope_colA);
}
else if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(v.ori_file_name)) {
icons = null
if (extName == "xlsx" || extName == xls)
icons = "fas fa-file-excel";
else if (extName == "pdf" || extName == "ods")
icons = "fas fa-file-pdf";
else if (extName == "doc" || extName == "docx")
icons = "fas fa-file-word";
else
icons = "fas fa-file-alt";
ope_colI = creEle("i", null, null, null, [icons + " fa-3x m-1"]);
ope_colA = creEle("a", null, null, null, null, { filename: v.ori_file_name, savename: v.save_file_name }, { href: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName, download: v.ori_file_name, style: "margin-left: 30px" });
ope_colA.append(ope_colI);
ope_imgHtml.append(ope_colA);
}
} }
}); });
strHtml += `</div>`;
return strHtml; return ope_imgHtml ? ope_imgHtml.outerHtml() : null;
} }
}, },
{ {
@ -839,11 +856,14 @@
$('#opeRecModal input').map(function (i, v) { $(v).val('') }); $('#opeRecModal input').map(function (i, v) { $(v).val('') });
let today = displayDate(new Date(Date.now()), 'date').replaceAll('/', '-'); let today = displayDate(new Date(Date.now()), 'date').replaceAll('/', '-');
$('#opeRecModal input[id*=Time]').map(function (i, v) { $(v).val(today) }); $('#opeRecModal input[id*=Time]').map(function (i, v) { $(v).val(today) });
$('#ope_forImage').html('');
$('#ope_forFile').html('');
$('#inpDescription').val('');
$('#inpNotice').val('');
selUser(); selUser();
selDevice(); selDevice();
selOpeFir(); selOpeFir();
errCodeList(); errCodeList();
$('#forImage').html('');
} }
selSysMain(); selSysMain();
@ -940,7 +960,6 @@
onEvent('click', '#OpeRecSendBtn', function () { onEvent('click', '#OpeRecSendBtn', function () {
let form = $("#opeRecForm"); let form = $("#opeRecForm");
let gmtTime = 28800000;
$(form).validate({ $(form).validate({
rules: { rules: {
inpWorTyp: { required: true }, inpWorTyp: { required: true },
@ -963,10 +982,11 @@
fd.append("lorf[" + i + "].ori_file_name", v.ori_file_name); fd.append("lorf[" + i + "].ori_file_name", v.ori_file_name);
}); });
fd.append("error_code", $('#inpErrCode').val());
fd.append("location", "台北" + $('#buiActDrop').text() + pageAct.floor); fd.append("location", "台北" + $('#buiActDrop').text() + pageAct.floor);
fd.append("location_code", pageAct.AreaTag + pageAct.buiTag + pageAct.floor); fd.append("location_code", pageAct.AreaTag + pageAct.buiTag + pageAct.floor);
fd.append("device_system_category_layer2", pageAct.sysMain); fd.append("device_system_category_layer2", pageAct.sysMain);
fd.append("device_system_category_layer3", pageAct.sysMain); fd.append("device_system_category_layer3", pageAct.sysSub);
fd.append("work_type", parseInt($('#inpWorTyp').val())); fd.append("work_type", parseInt($('#inpWorTyp').val()));
fd.append("fix_do", $('#inpFixDo').val()); fd.append("fix_do", $('#inpFixDo').val());
fd.append("fix_do_code", $('#inpFixDoCode').val()); fd.append("fix_do_code", $('#inpFixDoCode').val());
@ -1040,6 +1060,11 @@
onEvent('click', '#opeRecEdiBtn', function () { onEvent('click', '#opeRecEdiBtn', function () {
clearOpeRecPageAct(); clearOpeRecPageAct();
selUser(); selUser();
selDevice();
$('#ope_forImage').html('');
$('#ope_forFile').html('');
pageAct.imageFile = []; pageAct.imageFile = [];
$('#opeRecTitle').html(pageAct.work_type == 1 ? "編輯保養" : "編輯維修"); $('#opeRecTitle').html(pageAct.work_type == 1 ? "編輯保養" : "編輯維修");
let url = baseApiUrl + "/operation/OpeRecRead"; let url = baseApiUrl + "/operation/OpeRecRead";
@ -1049,27 +1074,65 @@
if (!res || res.code != "0000" || !res.data) { if (!res || res.code != "0000" || !res.data) {
} else { } else {
pageAct.sysSub = res.data.device_system_category_layer3;
pageAct.number = res.data.fix_do_code;
selOpeFir();
errCodeList();
$('#inpWorTyp').val(res.data.work_type); $('#inpWorTyp').val(res.data.work_type);
$('#inpFixDo').val(res.data.fix_do); $('#inpFixDo').val(res.data.fix_do);
$('#inpFixDoCode').val(res.data.fix_do_code); $('#inpFixDoCode').val(res.data.fix_do_code);
$('#inpFixFirm').val(res.data.fix_firm); $('#inpFixFirm').val(res.data.fix_firm);
$('#inpStatus').val(res.data.status); $('#inpStatus').val(res.data.status);
$('#inpWorPerId').val(res.data.work_person_id); $('#inpWorPerId').val(res.data.work_person_id);
//$('#inpStaTime').val(displayDate(res.data.start_time, 'datetime').replace(' ', 'T').replaceAll('/', '-')); $('#inpStaTime').val(displayDate(res.data.start_time, 'date').replaceAll('/', '-'));
$('#inpNotice').text(res.data.notice); $('#inpNotice').text(res.data.notice);
$('#inpDescription').text(res.data.description); $('#inpDescription').text(res.data.description);
let strHtml = ``;
ope_imgHtml = null;
$.each(res.data.lorf, function (i, v) { $.each(res.data.lorf, function (i, v) {
let extName = v.ori_file_name.split('.')[1]; let extName = v.ori_file_name.split('.')[1];
let divMargin = (i == 0) ? `style='margin-top: 2px'` : ``;
strHtml += `<div class="file-item" data-id=${v.id} ${divMargin}> if (/\.(jpe?g|png|gif)$/i.test(v.ori_file_name)) {
<a href="${baseApiUrl}/upload/operation/${v.save_file_name}.${extName}" download="${v.ori_file_name}" target="_blank">
<img data-filename=${v.ori_file_name} data-savename=${v.save_file_name} height="70px" width="150px" src="${baseApiUrl}/upload/operation/${v.save_file_name}.${extName}"> ope_colI = creEle("i", null, null, null, ["fa fa-times"]);
<button class="btn-info" name="btnDelImg"><i class="fa fa-times"></i></button> ope_colBtn = creBtn(null, null, "btnDelImg", ["btn-dark m-1"]);
</a> ope_colImg = creImg("img", null, null, null, null, { filename: v.ori_file_name, savename: v.save_file_name }, { style: "margin-left: 30px; margin-top: 10px", height: "70px", width: "70px", src: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName });
</div>`; ope_colA = creEle("a", null, null, null, null, null, { href: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName, download: v.ori_file_name, target: "_blank" });
ope_imgHtml = creEle("span", null, null, null, ["file-item m-1"], { id: v.id }, null);
ope_colA.append(ope_colImg);
ope_imgHtml.append(ope_colA);
ope_colBtn.append(ope_colI);
ope_imgHtml.append(ope_colBtn);
$('#ope_forImage').append(ope_imgHtml ? ope_imgHtml.outerHtml() : null);
}
else if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(v.ori_file_name)) {
icons = null
if (extName == "xlsx" || extName == xls)
icons = "fas fa-file-excel";
else if (extName == "pdf" || extName == "ods")
icons = "fas fa-file-pdf";
else if (extName == "doc" || extName == "docx")
icons = "fas fa-file-word";
else
icons = "fas fa-file-alt";
ope_colI = creEle("i", null, null, null, ["fa fa-times"]);
ope_colBtn = creBtn(null, null, "btnDelImg", ["btn-dark m-1"]);
ope_colBtn.append(ope_colI);
ope_colI = creEle("i", null, null, null, [icons + " fa-3x m-1"]);
ope_colA = creEle("a", v.ori_file_name, null, null, null, null, { href: baseApiUrl + "/upload/operation/" + v.save_file_name + "." + extName, download: v.ori_file_name, target: "_blank" });
ope_imgHtml = creEle("div", null, null, null, ["file-item"], { id: v.id }, null);
ope_imgHtml.append(ope_colI);
ope_imgHtml.append(ope_colA);
ope_imgHtml.append(ope_colBtn);
$('#ope_forFile').append(ope_imgHtml ? ope_imgHtml.outerHtml() : null);
}
}); });
$('#forImage').html(strHtml);
} }
}, null, "POST").send() }, null, "POST").send()
}); });
@ -1113,7 +1176,7 @@
} }
function errCodeList() { function errCodeList() {
//$(loadEle).Loading("start"); $(loadEle).Loading("start");
let _pathArr = pageAct.number.split("_"); //TPE_B1_ELEV_EL_R2F_NA_ELEV1_N1 let _pathArr = pageAct.number.split("_"); //TPE_B1_ELEV_EL_R2F_NA_ELEV1_N1
let _devicePath = _pathArr[0] + "_" + _pathArr[1] + "_" + _pathArr[2] + "_" + _pathArr[3] + "_" + _pathArr[4] + "_" + _pathArr[5]; let _devicePath = _pathArr[0] + "_" + _pathArr[1] + "_" + _pathArr[2] + "_" + _pathArr[3] + "_" + _pathArr[4] + "_" + _pathArr[5];
getOneDeviceAlarmTop10ByBaja(_devicePath, callbackForErr); getOneDeviceAlarmTop10ByBaja(_devicePath, callbackForErr);
@ -1156,7 +1219,7 @@
if (/\.(jpe?g|png|gif)$/i.test(file.name)) { if (/\.(jpe?g|png|gif)$/i.test(file.name)) {
fileHelper.readAndPreviewImages(file, 'ope_forImage', 70, 70, '<span class="file-item m-1">', '<button class="btn-dark m-1" name="btnDelImg"><i class="fa fa-times"></i></button></span>'); fileHelper.readAndPreviewImages(file, 'ope_forImage', 70, 70, '<span class="file-item m-1">', '<button class="btn-dark m-1" name="btnDelImg"><i class="fa fa-times"></i></button></span>');
pageAct.imageFile.map(function (v, i) { tmpGuidArr.push(v.file.guid) }); pageAct.imageFile.map(function (v, i) { if (v['file']) tmpGuidArr.push(v.file.guid); });
if (jQuery.inArray(file.guid, tmpGuidArr) == -1) { //not in array if (jQuery.inArray(file.guid, tmpGuidArr) == -1) { //not in array
let fd = new FormData(); let fd = new FormData();
let f = file; let f = file;
@ -1167,7 +1230,7 @@
else if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name)) { else if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name)) {
fileHelper.readAndPreviewFiles(file, 'ope_forFile', 70, 70, "<div class='file-item'><i class='fas fa-file-alt fa-2x m-1'></i>", "<button class='btn-dark m-1' name='btnDelImg'><i class='fa fa-times'></i></button></div>"); fileHelper.readAndPreviewFiles(file, 'ope_forFile', 70, 70, "<div class='file-item'><i class='fas fa-file-alt fa-2x m-1'></i>", "<button class='btn-dark m-1' name='btnDelImg'><i class='fa fa-times'></i></button></div>");
pageAct.imageFile.map(function (v, i) { tmpGuidArr.push(v.file.guid) }); pageAct.imageFile.map(function (v, i) { if (v['file']) tmpGuidArr.push(v.file.guid); });
if (jQuery.inArray(file.guid, tmpGuidArr) == -1) { //not in array if (jQuery.inArray(file.guid, tmpGuidArr) == -1) { //not in array
let fd = new FormData(); let fd = new FormData();
let f = file; let f = file;

View File

@ -514,7 +514,7 @@ class File {
strExtName = myFile.getFileExtension(file.name); strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, ''); strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '">' + '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '" style="margin-left: 30px; margin-top: 10px">'
+ backHtml; + backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg); container.insertAdjacentHTML("afterBegin", htmlImg);
@ -560,7 +560,7 @@ class File {
strExtName = myFile.getFileExtension(file.name); strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, ''); strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '">' + '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '" style="margin-left: 30px; margin-top: 10px">'
+ backHtml; + backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg); container.insertAdjacentHTML("afterBegin", htmlImg);

View File

@ -174,7 +174,7 @@ namespace FrontendWebApi.ApiControllers
ApiResult<string> apiResult = new ApiResult<string>(); ApiResult<string> apiResult = new ApiResult<string>();
try try
{ {
var sqlString = $@"select formId from operation_record where error_code = @error_code limit 1"; var sqlString = $@"select formId from operation_record where error_code = @error_code and deleted = 0 limit 1";
var formId = await backendRepository.GetOneAsync<string>(sqlString, new { @error_code = alerts.uuid }); var formId = await backendRepository.GetOneAsync<string>(sqlString, new { @error_code = alerts.uuid });
apiResult.Code = "0000"; apiResult.Code = "0000";

View File

@ -1067,10 +1067,11 @@ namespace FrontendWebApi.ApiControllers
sWhere += $@" and opr.formId like '%{ofl.serial_number}%'"; sWhere += $@" and opr.formId like '%{ofl.serial_number}%'";
} }
var sqlString = $@"select opr.* , concat(d.device_floor_tag, ' ', d.device_last_name, ' ', d.device_serial_tag) as device_name, ui.full_name as user_full_name var sqlString = $@"select opr.* , concat(d.device_floor_tag, ' ', d.full_name) as device_name, ui.full_name as user_full_name
from operation_record opr from operation_record opr
left join device d on opr.fix_do_code = d.device_number and d.deleted = 0 and d.device_area_tag = SUBSTRING_INDEX(opr.fix_do_code, '_', 1) left join device d on opr.fix_do_code = d.device_number and d.deleted = 0 and d.device_area_tag = SUBSTRING_INDEX(opr.fix_do_code, '_', 1)
and d.device_building_tag = SUBSTRING_INDEX(opr.fix_do_code, '_', 2) and d.device_floor_tag = SUBSTRING_INDEX(opr.fix_do_code, '_', 5) and d.device_building_tag = SUBSTRING_INDEX(SUBSTRING_INDEX(fix_do_code, '_', 2), '_', -1)
and d.device_floor_tag = SUBSTRING_INDEX(SUBSTRING_INDEX(fix_do_code, '_', 5), '_', -1)
and d.device_system_tag = opr.device_system_category_layer2 and d.device_name_tag = opr.device_system_category_layer3 and d.device_system_tag = opr.device_system_category_layer2 and d.device_name_tag = opr.device_system_category_layer3
left join userinfo ui on opr.work_person_id = ui.userinfo_guid and ui.deleted = 0 left join userinfo ui on opr.work_person_id = ui.userinfo_guid and ui.deleted = 0
where opr.deleted = 0 and opr.work_type = @work_type" + sWhere; where opr.deleted = 0 and opr.work_type = @work_type" + sWhere;
@ -1181,7 +1182,7 @@ namespace FrontendWebApi.ApiControllers
{ "@device_system_category_layer2", or.device_system_category_layer2}, { "@device_system_category_layer2", or.device_system_category_layer2},
{ "@device_system_category_layer3", or.device_system_category_layer3}, { "@device_system_category_layer3", or.device_system_category_layer3},
{ "@work_type", or.work_type}, { "@work_type", or.work_type},
{ "@error_code", or.work_type == 2 ? new_guid.ToString() : null}, { "@error_code", or.error_code},
{ "@fix_do", or.fix_do}, { "@fix_do", or.fix_do},
{ "@fix_do_code", or.fix_do_code }, { "@fix_do_code", or.fix_do_code },
{ "@fix_firm", or.fix_firm}, { "@fix_firm", or.fix_firm},
@ -1246,6 +1247,7 @@ namespace FrontendWebApi.ApiControllers
{ "@location_code", or.location_code}, { "@location_code", or.location_code},
{ "@device_system_category_layer2", or.device_system_category_layer2}, { "@device_system_category_layer2", or.device_system_category_layer2},
{ "@device_system_category_layer3", or.device_system_category_layer3}, { "@device_system_category_layer3", or.device_system_category_layer3},
{ "@error_code", or.error_code},
{ "@fix_do", or.fix_do}, { "@fix_do", or.fix_do},
{ "@fix_do_code", or.fix_do_code }, { "@fix_do_code", or.fix_do_code },
{ "@fix_firm", or.fix_firm}, { "@fix_firm", or.fix_firm},