ibms-MCUT/Frontend/_operation.html

2428 lines
80 KiB
HTML

<main id="js-page-content" role="main" class="page-content">
<div class="row">
<div class="col-sm-12 col-xl-12">
<h1 class="p-2 mb-0">運維管理</h1>
<div class="row bg-dark p-2">
<div class="col-auto">
<div class="btn-group">
<button type="button"
onclick="setType(2)"
class="btn btn-secondary waves-effect waves-themed">
維修
</button>
<button type="button"
onclick="setType(1)"
class="btn btn-secondary waves-effect waves-themed">
保養記錄
</button>
<button type="button"
onclick="setType(null)"
class="btn btn-secondary waves-effect waves-themed">
廠商資料
</button>
</div>
</div>
<div id="setDate" class="col-auto">
<div class="btn-group">
<button onclick="setDate('tdy')"
type="button"
class="btn btn-secondary waves-effect waves-themed">
今天
</button>
<button onclick="setDate('ytd')"
type="button"
class="btn btn-secondary waves-effect waves-themed">
昨天
</button>
</div>
</div>
<div class="col-auto">
<div class="form-group">
<input class="form-control"
id="startdate"
data-val=""
type="date"
name="date"
value="" />
</div>
</div>
<div class="col-auto">
<div class="form-group">
<input class="form-control"
id="enddate"
type="date"
data-val=""
name="date"
value="" />
</div>
</div>
<div class="col-auto" style="display: none">
<div class="form-group">
<input type="text"
id="serial_number"
class="form-control"
placeholder="表單號" />
</div>
</div>
<div class="col-auto" style="display: none">
<a href="#"
for="serial_number"
onclick="snSearch()"
class="btn btn-info">單號查詢</a>
</div>
<hr />
</div>
<div class="row bg-dark p-2 align-items-center">
<div class="col-auto">
<a href="#"
id="selAllSys"
onclick="selAllSysVal(this)"
class="btn btn-info">全選類別</a>
</div>
<div class="col-auto">
<div id="mainList" class="frame-wrap"></div>
</div>
</div>
<div class="row bg-dark p-2 mb-5 align-items-center">
<div class="col-auto" style="padding-left: 133px">
<div id="subList" class="frame-wrap"></div>
</div>
</div>
<div class="">
<div class="frame-wrap">
<div class="mb-3">
<a href="#"
id="newForm"
class="btn btn-success"
data-toggle="modal"
data-target="#opeFirmModal">新增</a>
<a href="#"
onclick="exportExcel()"
class="btn btn-info waves-effect waves-themed"
hidden>
<span class="fal fa-file-excel mr-1"></span>
<span>匯出</span>
</a>
</div>
<table id="opeFirmTable"
class="table table-bordered table-striped text-center m-0 w-100"></table>
<table id="opeRecTable_2"
class="table table-bordered table-striped text-center m-0 w-100"></table>
<table id="opeRecTable"
class="table table-bordered table-striped text-center m-0 w-100"></table>
</div>
</div>
</div>
</div>
</main>
<!-- Modal center 廠商資料 -->
<div class="modal fade"
id="opeFirmModal"
tabindex="-1"
role="dialog"
aria-hidden="true"
data-backdrop="static"
data-keyboard="false">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 id="opeFirmTitle" class="modal-title"></h4>
<button type="button"
class="close"
data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<form id="opeFirmForm">
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFirmSelSysMain">系統大類</label>
<select class="form-control"
id="inpFirmSelSysMain"
name="inpFirmSelSysMain"></select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFirmSelSysSub">系統小類</label>
<select class="form-control"
id="inpFirmSelSysSub"
name="inpFirmSelSysSub">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpName">姓名</label>
<input type="text"
id="inpName"
name="inpName"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpConPer">聯絡人</label>
<input type="text"
id="inpConPer"
name="inpConPer"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpPhone">電話</label>
<input type="text"
id="inpPhone"
name="inpPhone"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpEmail">Email</label>
<input type="email"
id="inpEmail"
name="inpEmail"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpTaxIdNum">統一編號</label>
<input type="text"
id="inpTaxIdNum"
name="inpTaxIdNum"
maxlength="8"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpRemark">備注</label>
<input type="text"
id="inpRemark"
name="inpRemark"
class="form-control" />
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary"
id="OpeFirmCanBtn"
data-dismiss="modal">
關閉
</button>
<button type="button"
class="btn btn-primary"
id="OpeFirmSendBtn"
e-prevent>
儲存
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal center 維修-->
<div class="modal fade"
id="opeRecModal_2"
tabindex="-1"
role="dialog"
aria-hidden="true"
data-backdrop="static"
data-keyboard="false">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 id="opeRecTitle" class="modal-title"></h4>
<button type="button"
class="close"
data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<form id="opeRecForm_2">
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpNumber_2">表單編號</label>
<input type="text"
id="inpNumber_2"
name=""
class="form-control"
disabled />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpErrCode_2">異常編號</label>
<!--<select class="form-control"
id="inpErrCode_2"
name="inpErrCode_2">
<option value="">未選擇</option>
</select>-->
<input type="text"
id="inpErrCode_2"
name="inpErrCode_2"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpStaTime_2">預計開始時間</label>
<input type="date"
id="inpStaTime_2"
name="inpStaTime_2"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpWorTyp_2">項目</label>
<select class="form-control custom-select-ri"
id="inpWorTyp_2"
name="inpWorTyp_2"
disabled>
<option value="1" selected>保養</option>
<option value="2">維修</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFixDo_2">維修項目</label>
<input type="text"
id="inpFixDo_2"
name="inpFixDo_2"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group position-relative">
<label class="form-label" for="inpFixDoCode_2">維修項目代碼(設備名稱)</label>
<select onfocus="this.size=15;"
onblur="this.size=1;"
onchange="this.size=1; this.blur();"
id="inpFixDoCode_2"
name="inpFixDoCode_2"
class="form-control position-absolute"
style="z-index: 999; background-color: #3f4246">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFixFirm_2">負責廠商</label>
<select class="form-control"
id="inpFixFirm_2"
name="inpFixFirm_2">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpStatus_2">狀態</label>
<div class="form-control" id="inpStatus_2">
<div class="row container">
<div class="">
<input class="custom-radio-input"
type="radio"
name="inpSta_2"
id="inpSta_2_0"
value="0"
data-value="0"
checked />
<label class="form-label" for="inpSta_0">未完成</label>
</div>
<div class="px-4">
<input class="custom-radio-input"
type="radio"
name="inpSta_2"
id="inpSta_2_1"
value="1"
data-value="1" />
<label class="form-label" for="inpSta_1">完成</label>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpWorPerId_2">工作人員編號</label>
<select class="form-control"
id="inpWorPerId_2"
name="inpWorPerId_2">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="form-label" for="inpNotice_2">注意事項</label>
<textarea class="form-control"
type="text"
id="inpNotice_2"
name="inpNotice_2"
rows="7"></textarea>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="form-label" for="inpDescription_2">結果描述</label>
<textarea class="form-control"
type="text"
id="inpDescription_2"
name="inpDescription_2"
rows="7"></textarea>
</div>
</div>
<div class="col-md-12">
<label class="form-label">上傳檔案</label>
<div id="ope_forImage_2"
class="col-sm-12 forimage mt-2 p-0"></div>
<div id="ope_forFile_2" class="col-sm-12 forfile mt-2 p-0"></div>
<div class="form-group dropzone" id="ope_dropZone_2">
<div class="dz-message">
<div class="drag-icon-cph">
<i class="material-icons">backup</i>
</div>
<h3>選擇一個文件或拖放到這裡</h3>
<p class="mb-0 col-grey">PDF檔案不超過 10MB</p>
</div>
<div class="fallback">
<input name="file" type="file" multiple />
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary"
id="OpeRecCanBtn_2"
data-dismiss="modal">
關閉
</button>
<button type="button"
class="btn btn-primary"
id="OpeRecSendBtn_2"
e-prevent>
儲存
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal center 保養 -->
<div class="modal fade"
id="opeRecModal"
tabindex="-1"
role="dialog"
aria-hidden="true"
data-backdrop="static"
data-keyboard="false">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 id="opeRecTitle" class="modal-title"></h4>
<button type="button"
class="close"
data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<form id="opeRecForm">
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpNumber">表單編號</label>
<input type="text"
id="inpNumber"
name=""
class="form-control"
disabled />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpStaTime">預計開始時間</label>
<input type="date"
id="inpStaTime"
name="inpStaTime"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpWorTyp">項目</label>
<select class="form-control custom-select-ri"
id="inpWorTyp"
name="inpWorTyp"
disabled>
<option value="1" selected>保養</option>
<option value="2">維修</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFixDo">維修項目</label>
<input type="text"
id="inpFixDo"
name="inpFixDo"
class="form-control" />
</div>
</div>
<div class="col-md-6">
<div class="form-group position-relative">
<label class="form-label" for="inpFixDoCode">維修項目代碼(設備名稱)</label>
<select onfocus="this.size=15;"
onblur="this.size=1;"
onchange="this.size=1; this.blur();"
id="inpFixDoCode"
name="inpFixDoCode"
class="form-control position-absolute"
style="z-index: 999; background-color: #3f4246">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpFixFirm">負責廠商</label>
<select class="form-control" id="inpFixFirm" name="inpFixFirm">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpStatus">狀態</label>
<div class="form-control" id="inpStatus">
<div class="row container">
<div class="">
<input class="custom-radio-input"
type="radio"
name="inpSta"
id="inpSta_0"
data-value="0"
value="0"
checked />
<label class="form-label" for="inpSta_0">未完成</label>
</div>
<div class="px-4">
<input class="custom-radio-input"
type="radio"
name="inpSta"
id="inpSta_1"
data-value="1"
value="1" />
<label class="form-label" for="inpSta_1">完成</label>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="inpWorPerId">工作人員編號</label>
<select class="form-control"
id="inpWorPerId"
name="inpWorPerId">
<option value="">未選擇</option>
</select>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="form-label" for="inpNotice">注意事項</label>
<textarea class="form-control"
type="text"
id="inpNotice"
name="inpNotice"
rows="7"></textarea>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="form-label" for="inpDescription">結果描述</label>
<textarea class="form-control"
type="text"
id="inpDescription"
name="inpDescription"
rows="7"></textarea>
</div>
</div>
<div class="col-md-12">
<label class="form-label">上傳檔案</label>
<div id="ope_forImage" class="col-sm-12 forimage mt-2 p-0"></div>
<div id="ope_forFile" class="col-sm-12 forfile mt-2 p-0"></div>
<div class="form-group dropzone" id="ope_dropZone">
<div class="dz-message">
<div class="drag-icon-cph">
<i class="material-icons">backup</i>
</div>
<h3>選擇一個文件或拖放到這裡</h3>
<p class="mb-0 col-grey">PDF檔案不超過 10MB</p>
</div>
<div class="fallback">
<input name="file" type="file" multiple />
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary"
id="OpeRecCanBtn"
data-dismiss="modal">
關閉
</button>
<button type="button"
class="btn btn-primary"
id="OpeRecSendBtn"
e-prevent>
儲存
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal center 刪除 -->
<div class="modal fade"
id="delModal"
tabindex="-1"
role="dialog"
aria-hidden="true"
data-backdrop="static"
data-keyboard="false">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">確定刪除這一筆嗎?</h4>
<button type="button"
class="close"
data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-secondary"
id="confirmDelCanBtn"
data-dismiss="modal">
關閉
</button>
<button type="button"
class="btn btn-primary"
id="confirmDelBtn"
e-prevent>
儲存
</button>
</div>
</div>
</div>
</div>
<script>
var uploader = { ope1: null, ope2: null };
$(function () {
initDropzone();
pageAct.sub_system_tag = null;
pageAct.main_system_tag = null;
pageAct.selSysSub = [];
pageAct.selSysMain = [];
pageAct.imageFile = [];
let pageInit = true;
sysList();
$("input[type=checkbox][data-type=main]")
.parent()
.on("change", function () {
pageAct.main_system_tag = $("input[type=checkbox]")
.map(function (i, v) {
if ($(v).data("type") == "main") {
if ($(v).is(":checked")) {
$(`[data-main=` + $(v).prop("id") + `]`).attr("hidden", false);
return $(v).prop("id");
} else
$(`[data-main=` + $(v).prop("id") + `]`).attr("hidden", true);
}
})
.toArray();
if ($("input[type=checkbox][data-type=main]:checked").length <= 0) {
pageAct.main_system_tag = null;
pageAct.sub_system_tag = null;
}
refTable();
});
$("#subList, #mainList").on(
"change",
$("input[type=checkbox][data-type=sub]").parent(),
function () {
pageAct.sub_system_tag = $("input[type=checkbox]:checked")
.map(function (i, v) {
if ($(v).data("type") == "sub") return $(v).prop("id");
})
.toArray();
if ($("input[type=checkbox][data-type=sub]:checked").length <= 0) {
pageAct.sub_system_tag = null;
}
if (
$("input[type=checkbox][data-type=sub]:checked").length ==
$("input[type=checkbox][data-type=sub]").length
) {
$("#selAllSys").html("取消全選");
} else {
$("#selAllSys").html("全選類別");
}
refTable();
}
);
$("[onclick^=setType]").on("click", function () {
btnSelCss(this);
});
$(`[onclick^=setDate]`).on("click", function () {
if ($(this).hasClass("btn-info")) {
$(this).removeClass("btn-info");
$(this).addClass("btn-secondary");
setDate();
} else btnSelCss(this);
});
$("#startdate, #enddate").on("change", function () {
let startdate = new Date($("#startdate").val());
let enddate = new Date($("#enddate").val());
setDate(null, startdate, enddate);
});
$(`[onclick="setType(2)"]`).click();
initDate();
event();
$("div.image-full-show").css("display", "none");
if (pageInit) {
$("#selAllSys").click();
pageInit = false;
}
});
function loadOpeFirmTable() {
$("#opeFirmTable_wrapper").css("display", "block");
$("#opeRecTable_wrapper").css("display", "none");
$("#opeRecTable_2_wrapper").css("display", "none");
$("#serial_number").parent().parent().css("display", "none");
$("[for=serial_number]").parent().css("display", "none");
$("#setDate").css("display", "none");
$("#startdate").parent().parent().css("display", "none");
$("#enddate").parent().parent().css("display", "none");
serial_number = $("#serial_number").val() || null;
let ajaxObj = {
url: baseApiUrl + "/operation/OpeFirList",
method: "POST",
data: {
work_type: null,
start_created_at: pageAct.startdate,
end_created_at: pageAct.enddate,
serial_number: pageAct.serial_number,
main_system_tag: pageAct.main_system_tag,
sub_system_tag: pageAct.sub_system_tag,
},
};
let tag = "#opeFirmTable";
let column_defs = [
{ targets: [0], width: "4%", sortable: true },
{ targets: [1], width: "5%", sortable: true },
{ targets: [2], width: "5%", sortable: true },
{ targets: [3], width: "5%", sortable: true },
{ targets: [4], width: "5%", sortable: true },
{ targets: [5], width: "5%", sortable: true },
{ targets: [6], width: "5%", sortable: true },
];
let columns = [
{
title: "廠商類別",
data: "system_key",
},
{
title: "廠商",
data: "name",
},
{
title: "聯絡人",
data: "contact_person",
},
{
title: "電話",
data: "phone",
},
{
title: "email",
data: "email",
},
{
title: "建立日期",
data: "created_at",
},
{
title: "功能",
data: "id",
render: function (data) {
let btnDiv = creDiv(
["row", "m-0", "justify-content-center"],
{ style: "gap:10px" },
null,
null,
{ id: data }
);
btnDiv.append(
creBtnHtml("修改", "opeFirmEdiBtn", null, ["btn", "btn-info"], {
toggle: "modal",
target: "#opeFirmModal",
})
);
btnDiv.append(
creBtnHtml("刪除", "opeFirmDelBtn", null, ["btn", "btn-danger"], {
toggle: "modal",
target: "#delModal",
})
);
return btnDiv.outerHtml();
},
},
];
opeFirmTable = new YourTeam.JqDataTables.getTableByAjax(
ajaxObj,
tag,
null,
columns,
column_defs
);
}
function loadOpeRecTable() {
$("#opeFirmTable_wrapper").css("display", "none");
$("#serial_number").parent().parent().css("display", "block");
$("[for=serial_number]").parent().css("display", "block");
$("#setDate").css("display", "block");
$("#startdate").parent().parent().css("display", "block");
$("#enddate").parent().parent().css("display", "block");
let ajaxObj = {
url: baseApiUrl + "/operation/OpeRecList",
method: "POST",
data: {
work_type: pageAct.work_type,
start_created_at: pageAct.startdate,
end_created_at: pageAct.enddate,
serial_number: pageAct.serial_number,
main_system_tag: pageAct.main_system_tag,
sub_system_tag: pageAct.sub_system_tag,
},
};
let tag = "#opeRecTable" + (pageAct.work_type == "2" ? "_2" : "");
let column_defs = [];
let columns = [];
if (pageAct.work_type == "2") {
$("#opeRecTable_wrapper").css("display", "none");
$("#opeRecTable_2_wrapper").css("display", "block");
column_defs = [
{ targets: [0], width: "2%", sortable: true },
{ targets: [1], width: "6%", sortable: true },
{ targets: [2], width: "7%", sortable: true },
{ targets: [3], width: "6%", sortable: true },
{ targets: [4], width: "5%", sortable: true },
{ targets: [5], width: "3%", sortable: true },
{ targets: [6], width: "5%", sortable: true },
{ targets: [7], width: "6%", sortable: true },
{ targets: [8], width: "13%", sortable: false },
{ targets: [9], width: "6%", sortable: false },
{ targets: [10], width: "10%", sortable: true },
{ targets: [11], width: "8%", sortable: false },
];
columns = [
{
title: "項目",
data: "work_type_name",
},
{
title: "位置",
data: "location",
},
{
title: "異常代號",
data: "error_code",
render: (data) => {
console.log(data?.split("-")[0] || "" == null);
return data?.split("-")[0] || "";
},
},
{
title: "表單號",
data: "formId",
className: "text-nowrap",
},
{
title: "設備名稱",
data: "device_name",
className: "text-nowrap",
},
{
title: "狀態",
data: "status_name",
className: "text-nowrap",
},
{
title: "處理人員",
data: "user_full_name",
className: "text-nowrap",
},
{
title: "預計施工時間",
data: "start_time",
className: "text-nowrap",
render: function (data) {
return displayDate(data, "datetime");
},
},
{
title: "檔案上傳",
data: "lorf",
render: function (data) {
ope_imgHtml = null;
$.each(data, function (i, v) {
let extName = v.ori_file_name.split(".")[1];
if (i == 0)
ope_imgHtml = creDiv(["file-item"], null, null, null, {
id: v.id,
});
if (i < 3) {
if (/\.(jpe?g|png|gif)$/i.test(v.ori_file_name)) {
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",
style: "cursor: pointer",
});
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,
}
);
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|ppt?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);
}
}
});
return ope_imgHtml ? ope_imgHtml.outerHtml() : null;
},
},
{
title: "完成時間",
data: "finish_time",
className: "text-nowrap",
render: function (data) {
return displayDate(data, "datetime");
},
},
{
title: "建立時間",
data: "created_at",
},
{
title: "功能",
data: "id",
render: function (data) {
let btnDiv = creDiv(
["row", "m-0", "justify-content-center"],
{ style: "gap:10px" },
null,
null,
{ id: data }
);
btnDiv.append(
creBtnHtml("修改", "opeRecEdiBtn", null, ["btn", "btn-info"], {
toggle: "modal",
target: "#opeRecModal_2",
})
);
btnDiv.append(
creBtnHtml("刪除", "opeRecDelBtn", null, ["btn", "btn-danger"], {
toggle: "modal",
target: "#delModal",
})
);
return btnDiv.outerHtml();
},
},
];
} else if (pageAct.work_type == "1") {
$("#opeRecTable_wrapper").css("display", "block");
$("#opeRecTable_2_wrapper").css("display", "none");
column_defs = [
{ targets: [0], width: "2%", sortable: true },
{ targets: [1], width: "6%", sortable: true },
//{ targets: [2], width: "6%", sortable: true },
{ targets: [2], width: "7%", sortable: true },
{ targets: [3], width: "10%", sortable: true },
{ targets: [4], width: "8%", sortable: true },
{ targets: [5], width: "6%", sortable: true },
{ targets: [6], width: "10%", sortable: false },
{ targets: [7], width: "6%", sortable: false },
{ targets: [8], width: "8%", sortable: false },
{ targets: [9], width: "8%", sortable: true },
{ targets: [10], width: "8%", sortable: false },
];
columns = [
{
title: "項目",
data: "work_type_name",
},
{
title: "位置",
data: "location",
},
//{
// title: "異常代號",
// data: "error_code",
//},
{
title: "表單號",
data: "formId",
className: "text-nowrap",
},
{
title: "設備名稱",
data: "device_name",
className: "text-nowrap",
},
{
title: "狀態",
data: "status_name",
},
{
title: "處理人員",
data: "user_full_name",
},
{
title: "預計施工時間",
data: "start_time",
className: "text-nowrap",
render: function (data) {
return displayDate(data, "datetime");
},
},
{
title: "檔案上傳",
data: "lorf",
render: function (data) {
ope_imgHtml = null;
$.each(data, function (i, v) {
let extName = v.ori_file_name.split(".")[1];
if (i == 0)
ope_imgHtml = creDiv(["file-item"], null, null, null, {
id: v.id,
});
if (i < 3) {
if (/\.(jpe?g|png|gif)$/i.test(v.ori_file_name)) {
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",
style: "cursor: pointer",
});
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,
}
);
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|ppt?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);
}
}
});
return ope_imgHtml ? ope_imgHtml.outerHtml() : null;
},
},
{
title: "完成時間",
data: "finish_time",
className: "text-nowrap",
render: function (data) {
return displayDate(data, "datetime");
},
},
{
title: "建立時間",
data: "created_at",
},
{
title: "功能",
data: "id",
render: function (data) {
let btnDiv = creDiv(
["row", "m-0", "justify-content-center"],
{ style: "gap:10px" },
null,
null,
{ id: data }
);
btnDiv.append(
creBtnHtml("修改", "opeRecEdiBtn", null, ["btn", "btn-info"], {
toggle: "modal",
target: "#opeRecModal",
})
);
btnDiv.append(
creBtnHtml("刪除", "opeRecDelBtn", null, ["btn", "btn-danger"], {
toggle: "modal",
target: "#delModal",
})
);
return btnDiv.outerHtml();
},
},
];
}
opeRecTable = new YourTeam.JqDataTables.getTableByAjax(
ajaxObj,
tag,
null,
columns,
column_defs
);
}
function setType(wt) {
pageAct.work_type = wt;
if (wt == null) {
$("#newForm").attr("data-target", "#opeFirmModal");
loadOpeFirmTable();
} else {
$(pageAct.work_type == "1" ? "#inpWorTyp" : "#inpWorTyp_2").val(wt);
$("#newForm").attr(
"data-target",
pageAct.work_type == "1" ? "#opeRecModal" : "#opeRecModal_2"
);
loadOpeRecTable();
}
}
function setDate(dateType = null, startdate = null, enddate = null) {
clearPageAct();
pageAct.startdate = startdate;
pageAct.enddate = enddate;
if ($("#startdate").val() > $("#enddate").val()) {
$("#startdate").val($("#startdate").data("val"));
$("#enddate").val($("#enddate").data("val"));
toast_error("不可選擇大於結束時間");
} else {
let today = displayDate(
new Date(new Date().setDate(new Date().getDate())),
"date"
).replaceAll("/", "-");
let ytd = displayDate(
new Date(new Date().setDate(new Date().getDate() - 1)),
"date"
).replaceAll("/", "-");
if (dateType == "tdy") {
pageAct.startdate =
displayDate(
new Date(new Date().setDate(new Date().getDate())),
"datetime"
)
.toString()
.replaceAll("/", "-")
.split(" ")[0] + "T00:00:00";
pageAct.enddate =
displayDate(
new Date(new Date().setDate(new Date().getDate())),
"datetime"
)
.toString()
.replaceAll("/", "-")
.split(" ")[0] + "T23:59:59";
$("#startdate").val(today);
$("#startdate").data("val", today);
$("#enddate").val(today);
$("#enddate").data("val", today);
} else if (dateType == "ytd") {
pageAct.startdate =
displayDate(
new Date(new Date().setDate(new Date().getDate() - 1)),
"datetime"
)
.toString()
.replaceAll("/", "-")
.split(" ")[0] + "T00:00:00";
pageAct.enddate =
displayDate(
new Date(new Date().setDate(new Date().getDate() - 1)),
"datetime"
)
.toString()
.replaceAll("/", "-")
.split(" ")[0] + "T23:59:59";
$("#startdate").val(ytd);
$("#startdate").data("val", ytd);
$("#enddate").val(ytd);
$("#enddate").data("val", ytd);
} else {
pageAct.enddate =
displayDate(
new Date(pageAct.enddate.valueOf()).setDate(
pageAct.enddate.getDate()
),
"date"
)
.toString()
.replaceAll("/", "-") + "T23:59:59";
$(`[onclick^=setDate]`).removeClass("btn-info");
$(`[onclick^=setDate]`).addClass("btn-secondary");
if ($("#startdate").val() == $("#enddate").val()) {
if ($("#startdate").val() == today)
$(`[onclick="setDate('tdy')"]`).click();
else if ($("#startdate").val() == ytd)
$(`[onclick="setDate('ytd')"]`).click();
}
$("#startdate").data("val", $("#startdate").val());
$("#enddate").data("val", $("#enddate").val());
}
refTable();
}
}
function initDate() {
//$('#startdate').val(displayDate(new Date(new Date().setDate(new Date().getDate())), 'date').replaceAll('/', '-'));
//$('#enddate').val(displayDate(new Date(new Date().setDate(new Date().getDate())), 'date').replaceAll('/', '-'));
$(`[onclick="setDate('tdy')"]`).click();
}
function clearPageAct() {
pageAct.startdate = null;
pageAct.enddate = null;
pageAct.serial_number = null;
}
function clearOpeRecPageAct() {
pageAct.selAreaTag = null;
pageAct.selBuiTag = null;
pageAct.selFloTag = null;
}
function snSearch() {
clearPageAct();
pageAct.startdate = $("#startdate").val() + "T00:00:00";
pageAct.enddate = $("#enddate").val() + "T23:59:59";
pageAct.serial_number = $("#serial_number").val() || null;
refTable();
}
function sysList() {
let url = baseApiUrl + "/api/GetMainSub";
let sendData = {
building_tag: pageAct.buiTag,
};
objSendData.Data = sendData;
function success(res) {
let mainStrHtml = ``;
let subStrHtml = ``;
let display = pageAct.mainStatus ? "hidden" : "";
$.each(res.data.history_Main_Systems, function (i, v) {
if (pageAct.mainStatus) {
mainStrHtml += `<div class="custom-control custom-checkbox custom-control-inline">
<input type="checkbox" class="custom-control-input" data-type="main" id="${v.main_system_tag}">
<label class="custom-control-label" for="${v.main_system_tag}">${v.full_name}</label>
</div>`;
}
pageAct.selSysMain.push(v);
$.each(v.history_Sub_systems, function (i2, v2) {
subStrHtml += `<div class="custom-control custom-checkbox custom-control-inline" data-main="${v.main_system_tag}" ${display}>
<input type="checkbox" class="custom-control-input" data-type="sub" id="${v2.sub_system_tag}">
<label class="custom-control-label" for="${v2.sub_system_tag}">${v2.full_name}</label>
</div>`;
pageAct.selSysSub.push(v2);
});
});
if (pageAct.mainStatus) {
$("#mainList").html(mainStrHtml);
$("#subList").html(subStrHtml);
} else {
$("#mainList").html(subStrHtml);
}
if (pageAct.sub_system_tag != null) {
$.each(pageAct.sub_system_tag, function (i, v) {
$("#" + v).click();
});
}
}
ytAjax = new YourTeam.Ajax(url, objSendData, success, null, "POST").send();
}
function refTable() {
if (pageAct.work_type == null) loadOpeFirmTable();
else loadOpeRecTable();
}
function exportExcel(e) {
console.log("export", e);
let url = baseApiUrl + "/operation/OpeExportExcel";
objSendData.Data = {
work_type: pageAct.work_type,
startdate: pageAct.startdate == undefined ? null : pageAct.startdate,
enddate: pageAct.enddate == undefined ? null : pageAct.enddate,
};
console.log("data", objSendData.Data);
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (rel) {
if (rel.code == "0000")
location.href =
baseApiUrl +
"/api/df?path=" +
rel.data.split("/")[0] +
"&fileName=" +
rel.data.split("/")[1] +
"&token=" +
cookies.get("JWT-Authorization");
},
null,
"POST"
).send();
}
function selSysMain() {
$("#inpFirmSelSysMain").html();
$("#inpFirmSelSysSub").html();
let mainStrHtml = ``;
let subStrHtml = ``;
$.each(pageAct.selSysMain, (index, roleObj) => {
let selected = index == 0 ? "selected" : "";
mainStrHtml += `<option value='${roleObj.main_system_tag}' ${selected}>${roleObj.full_name}</option>`;
$.each(roleObj.history_Sub_systems, (index2, roleObj2) => {
subStrHtml += `<option value='${roleObj2.sub_system_tag}' data-main='${roleObj.main_system_tag}' ${selected} hidden>${roleObj2.full_name}</option>`;
});
});
$("#inpFirmSelSysMain").html(mainStrHtml);
$("#inpFirmSelSysSub").html(subStrHtml);
$(
`[data-main=` +
$("#inpFirmSelSysMain").find("option:selected").val() +
`]`
).attr("hidden", false);
}
function selDevice() {
let url = baseApiUrl + "/operation/DevList";
let lsst = [];
pageAct.selSysSub.map(function (v, i) {
lsst.push(v.sub_system_tag.toString());
});
sendData = {
device_area_tag: pageAct.AreaTag,
device_building_tag: pageAct.buiTag,
list_sub_system_tag: lsst,
};
objSendData.Data = sendData;
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
strHtml = `<option value=''></option>`;
$(
pageAct.work_type == "1" ? "#inpFixDoCode" : "#inpFixDoCode_2"
).html();
strHtml = `<option value='' disabled>未選擇</option>`;
$.each(res.data, (index, roleObj) => {
strHtml += `<option value='${roleObj.device_number}' data-floor=${roleObj.device_floor_tag} data-main=${roleObj.device_system_tag} data-sub=${roleObj.device_name_tag}>${roleObj.device_name}</option>`;
if (index == 0) {
pageAct.sysMain = roleObj.device_system_tag;
pageAct.sysSub = roleObj.device_name_tag;
pageAct.floor = roleObj.device_floor_tag;
pageAct.number = roleObj.device_number;
}
});
$(
pageAct.work_type == "1" ? "#inpFixDoCode" : "#inpFixDoCode_2"
).html(strHtml);
}
},
null,
"POST"
).send();
}
function selUser() {
let url = baseApiUrl + "/User/UserManagerList";
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
$(
pageAct.work_type == "1" ? "#inpWorPerId" : "#inpWorPerId_2"
).html();
strHtml = ``;
strHtml += `<option value=''>未選擇</option>`;
$.each(res.data, (index, roleObj) => {
strHtml += `<option value='${roleObj.userinfo_guid}'>${roleObj.full_name}</option>`;
});
$(pageAct.work_type == "1" ? "#inpWorPerId" : "#inpWorPerId_2").html(
strHtml
);
}
},
null,
"POST"
).send();
}
function selOpeFir() {
let url = baseApiUrl + "/operation/OpeFirSel";
objSendData.Data = { sub_system_tag: [pageAct.sysSub] };
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
$(pageAct.work_type == "1" ? "#inpFixFirm" : "#inpFixFirm_2").html();
strHtml = ``;
strHtml += `<option value=''>未選擇</option>`;
$.each(res.data, (index, roleObj) => {
strHtml += `<option value='${roleObj.id}'>${roleObj.name}</option>`;
});
$(pageAct.work_type == "1" ? "#inpFixFirm" : "#inpFixFirm_2").html(
strHtml
);
}
},
null,
"POST"
).send();
}
function selAllSysVal(elem) {
$(loadEle).Loading("start");
if ($(elem).html() == "全選類別") {
$("#mainList input").map(function (i, v) {
if (!$(v).is(":checked")) {
$(v).click();
}
});
$("#subList input").map(function (i, v) {
if (!$(v).is(":checked")) {
$(v).click();
}
});
$(elem).html("取消全選");
} else {
$("#mainList input").map(function (i, v) {
if ($(v).is(":checked")) $(v).click();
});
$("#subList input").map(function (i, v) {
if ($(v).is(":checked")) $(v).click();
});
$(elem).html("全選類別");
}
refTable();
$(loadEle).Loading("close");
}
function event() {
onEvent("click", "#newForm", function () {
uploader["ope1"][0].dropzone.removeAllFiles();
uploader["ope2"][0].dropzone.removeAllFiles();
if (pageAct.work_type == null) {
pageAct.opeFirmAct = "add";
$("#opeFirmTitle").html("新增廠商資料");
$("#opeFirmModal input").map(function (i, v) {
$(v).val("");
});
$("#opeFirmModal [id*=-error]").hide();
} else {
clearOpeRecPageAct();
$(
"#" +
(pageAct.work_type == "1" ? "opeRecForm" : "opeRecForm_2") +
" [id*=-error]"
).hide();
pageAct.opeRecId = null;
pageAct.imageFile = [];
$(pageAct.work_type == "1" ? "#opeRecTitle" : "#opeRecTitle_2").html(
pageAct.work_type == 1 ? "新增保養" : "新增維修"
);
$(
pageAct.work_type == "1"
? "#opeRecModal input"
: "#opeRecModal_2 input"
).map(function (i, v) {
$(v).val("");
});
let today = displayDate(new Date(Date.now()), "date").replaceAll(
"/",
"-"
);
$(
pageAct.work_type == "1"
? "#opeRecModal input[id*=Time]"
: "#opeRecModal_2 input[id*=Time]"
).map(function (i, v) {
$(v).val(today);
});
$(pageAct.work_type == "1" ? "#ope_forImage" : "#ope_forImage_2").html(
""
);
$(pageAct.work_type == "1" ? "#ope_forFile" : "#ope_forFile_2").html(
""
);
$(
pageAct.work_type == "1" ? "#inpDescription" : "#inpDescription_2"
).val("");
$(pageAct.work_type == "1" ? "#inpNotice" : "#inpNotice_2").val("");
$(pageAct.work_type == "1" ? "#inpFixDo" : "#inpFixDo_2").val("");
selUser();
selDevice();
selOpeFir();
errCodeList();
getFormId();
getUser();
}
selSysMain();
});
onEvent("click", "#opeFirmEdiBtn", function () {
selSysMain();
$("#opeFirmTitle").html("編輯廠商資料");
let url = baseApiUrl + "/operation/OpeFirRead";
pageAct.opeFirmId = $(this).parent().data("id");
objSendData.Data = { id: pageAct.opeFirmId };
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
pageAct.opeFirmAct = "edit";
$("#opeFirmForm select[id=inpFirmSelSysMain]")
.val(res.data.device_system_category_layer2)
.change();
$("#opeFirmForm select[id=inpFirmSelSysSub]")
.val(res.data.device_system_category_layer3)
.change();
$("#opeFirmForm input[id=inpName]").val(res.data.name);
$("#opeFirmForm input[id=inpConPer]").val(res.data.contact_person);
$("#opeFirmForm input[id=inpPhone]").val(res.data.phone);
$("#opeFirmForm input[id=inpEmail]").val(res.data.email);
$("#opeFirmForm input[id=inpTaxIdNum]").val(res.data.tax_id_number);
$("#opeFirmForm input[id=inpRemark]").val(res.data.remark);
}
},
null,
"POST"
).send();
});
onEvent("click", "#OpeFirmSendBtn", function () {
let form = $("#opeFirmForm");
$(form).validate({
rules: {
inpFirmSelSysMain: { required: true },
inpFirmSelSysSub: { required: true },
inpName: { required: true, maxlength: 50 },
},
});
if ($(form).valid()) {
let url =
baseApiUrl +
"/operation/" +
(pageAct.opeFirmAct == "add" ? "SaveOpeFirm" : "EdtOneOpeFirm");
let sendData = {
device_system_category_layer2: $("#inpFirmSelSysMain").val(),
device_system_category_layer3: $("#inpFirmSelSysSub").val(),
name: $("#inpName").val() || null,
contact_person: $("#inpConPer").val() || null,
phone: $("#inpPhone").val() || null,
email: $("#inpEmail").val() || null,
tax_id_number: $("#inpTaxIdNum").val() || null,
remark: $("#inpRemark").val() || null,
};
if (pageAct.opeFirmAct == "edit") sendData.id = pageAct.opeFirmId;
objSendData.Data = sendData;
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
toast_error(common.AddErr + (res.msg || res.data));
} else {
toast_ok(common.AddSuc);
//$("#opeFirmModal").modal("hide");
$("#OpeFirmCanBtn").click();
refTable();
}
},
null,
"POST"
).send();
}
});
onEvent("click", "#opeFirmDelBtn", function () {
pageAct.opeRecId = null;
pageAct.opeFirmId = $(this).parent().data("id");
});
onEvent("click", "#confirmDelBtn", function () {
objSendData.Data = { id: pageAct.opeFirmId ?? pageAct.opeRecId };
let url =
baseApiUrl +
"/operation/" +
(pageAct.work_type == null ? "DelOpeFirm" : "DelOpeRecord");
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
toast_ok(common.DelSuc);
//$("#delModal").modal("hide");
$("#confirmDelCanBtn").click();
refTable();
}
},
null,
"DELETE"
).send();
});
onEvent("click", "#opeRecDelBtn", function () {
pageAct.opeRecId = $(this).parent().data("id");
pageAct.opeFirmId = null;
});
onEvent("click", "#OpeRecSendBtn, #OpeRecSendBtn_2", function () {
let form = $(pageAct.work_type == "1" ? "#opeRecForm" : "#opeRecForm_2");
if (pageAct.work_type == "1") {
$(form).validate({
rules: {
inpWorTyp: { required: true },
inpFixFirm: { required: true },
inpStatus: { required: true },
inpWorPerId: { required: true },
},
});
} else {
$(form).validate({
rules: {
inpWorTyp_2: { required: true },
inpFixFirm_2: { required: true },
inpStatus_2: { required: true },
inpWorPerId_2: { 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",
$(pageAct.work_type == "1" ? "#inpErrCode" : "#inpErrCode_2").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.sysMain);
fd.append("device_system_category_layer3", pageAct.sysSub);
fd.append(
"work_type",
parseInt(
$(pageAct.work_type == "1" ? "#inpWorTyp" : "#inpWorTyp_2").val()
)
);
fd.append(
"fix_do",
$(pageAct.work_type == "1" ? "#inpFixDo" : "#inpFixDo_2").val()
);
fd.append(
"fix_do_code",
$(
pageAct.work_type == "1" ? "#inpFixDoCode" : "#inpFixDoCode_2"
).val()
);
fd.append(
"fix_firm",
parseInt(
$(pageAct.work_type == "1" ? "#inpFixFirm" : "#inpFixFirm_2").val()
)
);
fd.append(
"status",
parseInt(
$(
"#" +
(pageAct.work_type == "1" ? "inpStatus" : "inpStatus_2") +
" [name=" +
(pageAct.work_type == "1" ? "inpSta" : "inpSta_2") +
"]:checked"
).data("value")
)
);
fd.append(
"work_person_id",
$(pageAct.work_type == "1" ? "#inpWorPerId" : "#inpWorPerId_2").val()
);
fd.append(
"start_time",
($(
pageAct.work_type == "1" ? "#inpStaTime" : "#inpStaTime_2"
).val() || null) == null
? null
: new Date(
$(
pageAct.work_type == "1" ? "#inpStaTime" : "#inpStaTime_2"
).val()
).toISOString()
);
//fd.append("end_time", ($('#inpEndTime').val() || null) == null ? $('#inpEndTime').val() : new Date($('#inpEndTime').val()).toISOString());
//fd.append("work_time", ($('#inpWorTime').val() || null) == null ? $('#inpWorTime').val() : new Date($('#inpWorTime').val()).toISOString());
fd.append(
"finish_time",
parseInt(
$(
"#" +
(pageAct.work_type == "1" ? "inpStatus" : "inpStatus_2") +
" [name=" +
(pageAct.work_type == "1" ? "inpSta" : "inpSta_2") +
"]:checked"
).data("value")
) == 1
? new Date(Date.now()).toISOString()
: null
);
fd.append(
"notice",
$(pageAct.work_type == "1" ? "#inpNotice" : "#inpNotice_2").val() ||
null
);
fd.append(
"description",
$(
pageAct.work_type == "1" ? "#inpDescription" : "#inpDescription_2"
).val() || null
);
//let sendData = {
// location: $('#inpArea option:selected').text() + $('#inpBuilding option:selected').text() + $('#inpFloor option:selected').text(),
// location_code: $('#inpArea').val().toString() + $('#inpBuilding').val().toString() + $('#inpFloor').val().toString(),
// device_system_category_layer2: $('#inpRecSelSysMain').val(),
// device_system_category_layer3: $('#inpRecSelSysSub').val(),
// work_type: parseInt($('#inpWorTyp').val()),
// fix_do: $('#inpFixDo').val(),
// fix_do_code: $('#inpFixDoCode').val(),
// fix_firm: parseInt($('#inpFixFirm').val()),
// status: parseInt($('#inpStatus').val()),
// work_person_id: $('#inpWorPerId').val(),
// start_time: $('#inpStaTime').val() == null ? null : new Date(new Date($('#inpStaTime').val()).getTime() + gmtTime),
// end_time: $('#inpEndTime').val() == null ? $('#inpEndTime').val() : new Date(new Date($('#inpEndTime').val()).getTime() + gmtTime),
// work_time: $('#inpWorTime').val() == null ? $('#inpWorTime').val() : new Date(new Date($('#inpWorTime').val()).getTime() + gmtTime),
// finish_time: $('#inpFinTime').val() == null ? null : new Date(new Date($('#inpFinTime').val()).getTime() + gmtTime),
// notice: $('#inpNotice').val() || null,
// description: $('#inpDescription').val() || null,
// lorf: pageAct.imageFile,
//};
if (pageAct.opeRecId != null) fd.append("id", pageAct.opeRecId);
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 " + cookies.get("JWT-Authorization")
);
},
success: function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
toast_ok(common.AddSuc);
//$("#opeFirmModal").modal("hide");
$(
pageAct.work_type == "1" ? "#OpeRecCanBtn" : "#OpeRecCanBtn_2"
).click();
refTable();
}
},
});
}
});
onEvent("click", "#opeRecEdiBtn", function () {
clearOpeRecPageAct();
selUser();
selDevice();
uploader["ope1"][0].dropzone.removeAllFiles();
uploader["ope2"][0].dropzone.removeAllFiles();
$("#ope_forImage").html("");
$("#ope_forFile").html("");
$("#ope_forImage_2").html("");
$("#ope_forFile_2").html("");
pageAct.imageFile = [];
$("#opeRecTitle").html(pageAct.work_type == 1 ? "編輯保養" : "編輯維修");
let url = baseApiUrl + "/operation/OpeRecRead";
pageAct.opeRecId = $(this).parent().data("id");
objSendData.Data = { id: pageAct.opeRecId };
ytAjax = new YourTeam.Ajax(
url,
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
pageAct.sysMain = res.data.device_system_category_layer2;
pageAct.sysSub = res.data.device_system_category_layer3;
pageAct.number = res.data.fix_do_code;
callbackForErr(
JSON.stringify({
count: [res.data].length,
data: [{ uuid: res.data.error_code }],
})
);
selOpeFir();
$(pageAct.work_type == "1" ? "#inpNumber" : "#inpNumber_2").val(
res.data.formId
);
$(pageAct.work_type == "1" ? "#inpWorTyp" : "#inpWorTyp_2").val(
res.data.work_type
);
$(pageAct.work_type == "1" ? "#inpErrCode" : "#inpErrCode_2").val(
res.data.error_code?.split("-")[0] || ""
);
$(pageAct.work_type == "1" ? "#inpFixDo" : "#inpFixDo_2").val(
res.data.fix_do
);
$(
pageAct.work_type == "1" ? "#inpFixDoCode" : "#inpFixDoCode_2"
).val(res.data.fix_do_code);
$(pageAct.work_type == "1" ? "#inpFixFirm" : "#inpFixFirm_2").val(
res.data.fix_firm.toString()
);
$(
"#" +
(pageAct.work_type == "1" ? "inpStatus" : "inpStatus_2") +
" [name=" +
(pageAct.work_type == "1" ? "inpSta" : "inpSta_2") +
"][data-value=" +
res.data.status +
"]"
).click();
$(pageAct.work_type == "1" ? "#inpWorPerId" : "#inpWorPerId_2").val(
res.data.work_person_id
);
$(pageAct.work_type == "1" ? "#inpStaTime" : "#inpStaTime_2").val(
displayDate(res.data.start_time, "date").replaceAll("/", "-")
);
$(pageAct.work_type == "1" ? "#inpNotice" : "#inpNotice_2").val(
res.data.notice
);
$(
pageAct.work_type == "1" ? "#inpDescription" : "#inpDescription_2"
).val(res.data.description);
let elemSel = $(
pageAct.work_type == "1" ? "#inpFixDoCode" : "#inpFixDoCode_2"
).find("option:selected");
pageAct.number = elemSel.val();
ope_imgHtml = null;
$.each(res.data.lorf, function (i, v) {
let extName = v.ori_file_name.split(".")[1];
if (v?.ori_file_name != null) {
let imgUrl =
baseApiUrl +
"/upload/operation/" +
v?.save_file_name +
"." +
extName;
let fileObj = {
name: v?.ori_file_name,
dataURL: imgUrl,
savename: v?.save_file_name,
size: 0,
lorf: v,
isExisted: true,
};
uploader[
"ope" + pageAct.work_type
][0].dropzone?.displayExistingFile(fileObj, imgUrl);
}
if (/\.(jpe?g|png|gif)$/i.test(v.ori_file_name)) {
/*ope_colI = creEle("i", null, null, null, ["fa fa-times"]);
ope_colBtn = creBtn(null, null, "btnDelImg", ["btn-dark m-1"]);
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 });
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);
$(pageAct.work_type == "1" ? '#ope_forImage' : '#ope_forImage_2').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|ppt?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);
$(pageAct.work_type == "1" ? '#ope_forFile' : '#ope_forFile_2').append(ope_imgHtml ? ope_imgHtml.outerHtml() : null);*/
}
});
}
},
null,
"POST"
).send();
});
onEvent("click", "[name=btnDelImg]", function () {
elem = $(this).parent();
if (elem.attr("data-id"))
pageAct.imageFile.push({
id: elem.data("id"),
ori_file_name: elem.find("img").data("filename"),
save_file_name: elem.find("img").data("savename"),
});
else {
pageAct.imageFile = $.grep(pageAct.imageFile, function (image) {
return image.save_file_name != elem.find("img").data("savename");
});
pageAct.imageFile = $.grep(pageAct.imageFile, function (file) {
return file.save_file_name != elem.find("a").data("savename");
});
}
elem.remove();
});
onEvent("change", "#inpFirmSelSysMain", function () {
let mainTag = $("#inpFirmSelSysMain").find("option:selected").val();
$(`[data-main=${mainTag}]`).attr("hidden", false);
$("#inpFirmSelSysSub")
.find(`option[data-main!=${mainTag}]`)
.attr("hidden", true);
$(`#inpFirmSelSysSub option`).removeAttr("selected");
$($(`#inpFirmSelSysSub option[data-main=${mainTag}]`)[0]).attr(
"selected",
"selected"
);
});
onEvent("change", "#inpFixDoCode, #inpFixDoCode_2", function () {
elemSel = $(this).find("option:selected");
pageAct.sysSub = elemSel.data("sub");
pageAct.sysMain = elemSel.data("main");
pageAct.floor = elemSel.data("floor");
pageAct.number = elemSel.val();
selOpeFir();
errCodeList();
});
}
function errCodeList() {
$(loadEle).Loading("start");
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];
getOneDeviceAlarmTop10ByBaja(_devicePath, callbackForErr);
}
function callbackForErr(res) {
res = JSON.parse(res) || res;
console.log(res);
strHtml = ``;
$.each(res.data, function (i, v) {
msg =
v.msgText != null
? $.trim(v.msgText.toString()).length > 0
? v.msgText.split(":")[0]
: ""
: "";
strHtml += `<option value=${v.uuid}>${v.uuid.split("-")[0]}</option>`;
});
//if (res.count > 0)
// $(pageAct.work_type == "1" ? "#inpErrCode" : "#inpErrCode_2").html(
// strHtml
// );
//else
$(pageAct.work_type == "1" ? "#inpErrCode" : "#inpErrCode_2").html("");
$(loadEle).Loading("close");
}
//上傳檔案 dropzone
function initDropzone() {
Dropzone.autoDiscover = false;
uploader.ope1 = $("#ope_dropZone").dropzone({
url: "/",
addRemoveLinks: true,
dictRemoveFile: `<span class="material-icons mi-delete">delete</span>`,
dictInvalidFileType: `上傳格式錯誤`,
dictCancelUploadConfirmation: `確定要取消上傳此檔案嗎?`,
dictCancelUpload: `<span class="material-icons mi-cancel">cancel</span>`,
maxFilesize: 10,
filesizeBase: 1024,
thumbnailWidth: 300,
thumbnailHeight: 300,
maxFiles: 50,
acceptedFiles:
".pdf, .docx, .doc, .xls, .xlsm, .xlsx, .ppt, .pptx, .gif, .png, .jpg, .jpeg",
headers: { Authorization: "Bearer " + cookies.get("JWT-Authorization") },
autoProcessQueue: false,
init: function () {
this.on("addedfile", function (file) {
$(this.previewsContainer).find(".dz-progress").addClass("d-none");
$(this.previewsContainer)
.find(".dz-size")
.css("visibility", "hidden");
if (file.savename) {
file.accepted = true;
this.files.push(file);
}
});
this.on("complete", function (file) {
if (file.savename) {
$(file.previewElement).find(".dz-image img").remove();
}
});
this.on("thumbnail", function (file) {
// 若為讀取檔案時
if (file.savename) {
$(file.previewElement)
.removeClass("dz-image-preview")
.addClass("dz-file-preview");
}
});
},
});
uploader["ope1"][0].dropzone.on("addedfile", (file) => {
let fileHelper = new YourTeam.Utility.File();
if (/\.(jpe?g|png|gif)$/i.test(file.name)) {
if (file.isExisted) {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.lorf.save_file_name,
file: file,
});
} else {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.upload.uuid,
file: file,
});
}
} else if (
/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x|ppt?x)$/i.test(
file.name
)
) {
if (file.isExisted) {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.lorf.save_file_name,
file: file,
});
} else {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.upload.uuid,
file: file,
});
}
}
});
uploader["ope1"][0].dropzone.on("removedfile", (file) => {
if (file.isExisted)
pageAct.imageFile.push({
id: file.lorf.id,
ori_file_name: file.name,
save_file_name: file.savename,
});
else {
pageAct.imageFile.splice(
pageAct.imageFile.findIndex((f) => f.savename == file.upload?.uuid),
1
);
}
file.previewElement.remove();
});
uploader.ope2 = $("#ope_dropZone_2").dropzone({
url: "/",
addRemoveLinks: true,
dictRemoveFile: `<span class="material-icons mi-delete">delete</span>`,
dictInvalidFileType: `上傳格式錯誤`,
dictCancelUploadConfirmation: `確定要取消上傳此檔案嗎?`,
dictCancelUpload: `<span class="material-icons mi-cancel">cancel</span>`,
maxFilesize: 10,
filesizeBase: 1024,
maxFiles: 50,
acceptedFiles:
".pdf, .docx, .doc, .xls, .xlsm, .xlsx, .ppt, .pptx, .gif, .png, .jpg, .jpeg",
headers: { Authorization: "Bearer " + cookies.get("JWT-Authorization") },
autoProcessQueue: false,
init: function () {
this.on("addedfile", function (file) {
$(this.previewsContainer).find(".dz-progress").addClass("d-none");
$(this.previewsContainer)
.find(".dz-size")
.css("visibility", "hidden");
if (file.savename) {
file.accepted = true;
this.files.push(file);
}
});
this.on("complete", function (file) {
if (file.savename) {
$(file.previewElement).find(".dz-image img").remove();
}
});
this.on("thumbnail", function (file) {
// 若為讀取檔案時
if (file.savename) {
$(file.previewElement)
.removeClass("dz-image-preview")
.addClass("dz-file-preview");
}
});
},
});
uploader["ope2"][0].dropzone.on("addedfile", (file) => {
let fileHelper = new YourTeam.Utility.File();
tmpGuidArr = [];
if (/\.(jpe?g|png|gif)$/i.test(file.name)) {
if (file.isExisted) {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.lorf.save_file_name,
file: file,
});
} else {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.upload.uuid,
file: file,
});
}
} else if (
/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x|ppt?x)$/i.test(
file.name
)
) {
if (file.isExisted) {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.lorf.save_file_name,
file: file,
});
} else {
pageAct.imageFile.push({
ori_file_name: file.name,
save_file_name: file.upload.uuid,
file: file,
});
}
}
});
uploader["ope2"][0].dropzone.on("removedfile", (file) => {
if (file.isExisted)
pageAct.imageFile.push({
id: file.lorf.id,
ori_file_name: file.name,
save_file_name: file.savename,
});
else {
pageAct.imageFile.splice(
pageAct.imageFile.findIndex((f) => f.savename == file.upload?.uuid),
1
);
}
file.previewElement.remove();
});
}
function getFormId() {
ytAjax = new YourTeam.Ajax(
baseApiUrl + "/operation/GetFormId",
objSendData,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
$(pageAct.work_type == "1" ? "#inpNumber" : "#inpNumber_2").val(
res.data
);
}
},
null,
"POST"
).send();
}
function getUser() {
ytAjax = new YourTeam.Ajax(
baseApiUrl + "/api/getUser",
null,
function (res) {
if (!res || res.code != "0000" || !res.data) {
} else {
$(pageAct.work_type == "1" ? "#inpWorPerId" : "#inpWorPerId_2").val(
res.data
);
}
},
null,
"POST"
).send();
}
</script>