2428 lines
80 KiB
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>
|