2578 lines
		
	
	
		
			82 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			2578 lines
		
	
	
		
			82 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 id="subList" 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 d-none">
 | 
						|
              <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.main_system_tag = $("input[type=checkbox]:checked")
 | 
						|
          .map(function (i, v) {
 | 
						|
          return  $(v).parent().data("main");
 | 
						|
          })
 | 
						|
          .toArray();
 | 
						|
 | 
						|
        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",
 | 
						|
          className: "d-none",
 | 
						|
          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);
 | 
						|
          },
 | 
						|
        },
 | 
						|
        {
 | 
						|
          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);
 | 
						|
          },
 | 
						|
        },
 | 
						|
        {
 | 
						|
          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}" >
 | 
						|
        <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} (${v.main_system_tag}-${v2.sub_system_tag})</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 },
 | 
						|
            inpFixDo: { required: true },
 | 
						|
          },
 | 
						|
        });
 | 
						|
      } else {
 | 
						|
        $(form).validate({
 | 
						|
          rules: {
 | 
						|
            inpWorTyp_2: { required: true },
 | 
						|
            inpFixFirm_2: { required: true },
 | 
						|
            inpStatus_2: { required: true },
 | 
						|
            inpWorPerId_2: { required: true },
 | 
						|
            inpFixDo_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>
 |