返回列表 上一筆 下一筆

目前格式:HTML/XML

🧾 資料內容 (HTML/XML)

```javascript

// Vue 實例初始化

var app = new Vue({

  // 掛載到 <div id="app"> ...</div>

  el: "#app",



  // 資料模型

  data: {

    user: {

      // 使用者 ID: 依 userType 決定要顯示 agentCode 或 userId

      userId: [[*{T(com.taiwanlife.recruit.enums.UserType).AGENT == userType ? agentCode : userId}]],

      // 業務員專屬註冊號

      registerNo: [[*{T(com.taiwanlife.recruit.enums.UserType).AGENT == userType ? registerNo : ""}]],

      // 使用者類型代碼

      userType: [[*{T(com.taiwanlife.recruit.enums.UserType).valueOf(userType).code}]],

      // 類型名稱

      userTypeName: [[*{userType.name()}]],

      // 業務員通路

      agentChannel: [[*{T(com.taiwanlife.recruit.enums.UserType).AGENT == userType ? agentChannel : ""}]],

      // 內勤角色類型

      roleType: [[*{T(com.taiwanlife.recruit.enums.UserType).STAFF == userType ? roleType : ""}]],

    },



    // 下拉清單資料

    areaCenters: [],       // 區域中心

    commUnits: [],         // 通訊處

    substituteList: [],    // 代理人清單



    // 時分陣列 (用於代理人時間選擇)

    hour: [],

    minute: [],



    // 查詢條件

    query: {

      areaCenter: "",

      commUnit: "",

      recruitName: "",

      recruitId: "",

      startCreateDate: "",

      endCreateDate: ""

    },



    // 代理人查詢條件

    substituteQuery: {

      centerCode: "",

      agentCode: "",

      userName: "",

      substituteAgentCode: "",

      substituteName: "",

      startSubstituteDate: "",

      startSubstituteHour: "",

      startSubstituteMinute: "",

      endSubstituteDate: "",

      endSubstituteHour: "",

      endSubstituteMinute: "",

      // 預設 N,否則按鈕不顯示

      substituteStatus: "N"

    },



    // 表格與列表資料

    users: [],

    table: {

      // 定義欄位屬性: 可否排序、欄位 key、標題、排序方向

      columns: [

        { sortable: true, field: "sysCode", title: "編號", direction: "" },

        { sortable: true, field: "createTime", title: "帳號申請日", direction: "", defaultSort: { direction: "desc" } },

        { sortable: true, field: "userName", title: "準增員", direction: "" },

        { sortable: true, field: "statusText", title: "目前進度", direction: "" },

        { sortable: true, field: "statusDocText", title: "報聘狀態", direction: "" },

        { sortable: true, field: "jobType", title: "類別", direction: "" },

        { sortable: true, field: "jobId", title: "擬任用職稱", direction: "" },

        { sortable: true, field: "commCode", title: "通訊處", direction: "" },

        { sortable: true, field: "dsRegisterId", title: "直屬主管", direction: "" },

        { sortable: true, field: "refRegisterId", title: "推薦人", direction: "" },

        { sortable: true, field: "buttonText", title: "待工作事項", direction: "" }

      ]

    },



    // 單筆流程資料,用於顯示進度

    recruit: {

      applyDocDate: "",

      approveWindowCheckDate: "",

      assistantCheckDate: "",

      cbsAreaCenterManagerDate: "",

      cbsBranchManagerDate: "",

      cbsTestDate: "",

      dsRegisterDate: "",

      elearningStartaDate: "",

      guildClassStatus: "",

      guildExamStatus: "",

      jobTypeDate: "",

      preJobId: "",

      preJobIdDate: "",

      registerDate: "",

      sysCode: "",

      totalFinishDate: "",

      userId: "",

      userName: ""

    },



    // 步驟圖陣列,每步驟有狀態 status

    charts: [

      { step: 1, title: "帳號申請", field: "registerDate", status: 0 },

      { step: 2, title: "直屬主管<br>帳號認證", field: "dsRegisterDate", status: 0 },

      { step: 3, title: "CBS<br>適性測驗", field: "cbsTestDate", status: 0 },

      { step: 4, title: "處經理<br>CBS面談", field: "cbsBranchManagerDate", status: 0 },

      { step: 5, title: "區域中心<br>CBS面談", field: "cbsAreaCenterManagerDate", status: 0,

        subSteps: [

          { step: 1, title: "A. 公輔班 <br><span>(上課狀態)</span>", field: "guildClassStatus", status: 0 },

          { step: 2, title: "B. 公會考試<br><span>(報考狀態)</span>", field: "guildExamStatus", status: 0 }

        ]

      },

      { step: 6, title: "處經理<br>職級初審", field: "jobTypeDate", status: 0 },

      { step: 7, title: "報聘文件<br>填寫", field: "applyDocDate", status: 0 },

      { step: 8, title: "處經理<br>職級複審", field: "preJobIdDate", status: 0 },

      { step: 9, title: "報聘文件<br>審核", field: "assistantCheckDate", status: 0 }

    ]

  },



  // 元件掛載前 (未用)

  beforeMount() {},



  // 掛載後呼叫 init

    // 掛載後呼叫 init,此時 DOM 已準備好,可安全發起 AJAX 請求

  mounted() {

    // 在此階段呼叫 init(),開始第一次 AJAX 請求

    this.init();

  },





  // 顯示用過濾器

  filters: {

    // 空值顯示「-」

    formatEmpty(value, defaultValue) {

      return value ? value : (defaultValue ? defaultValue : "-");

    },

    // 呼叫 ego.format.date 格式化

    formatDate(value, delim) {

      if (!value) return value;

      return ego.format.date(value, delim);

    },

    // 按鈕文字

    formatAction(buttonType) {

      switch (buttonType) {

        case 0: return "認證";

        case 1: return "面談";

        case 2: return "檢查";

        case 3: return "簽核";

        case 4: return "初審";

        case 5: return "複審";

      }

      return "";

    }

  },



  // 計算屬性

  computed: {

    // 取得預設排序欄

    defaultColumn() {

      var cols = this.table.columns.filter(c => c.defaultSort);

      return cols.length ? cols[0] : this.table.columns[0];

    },

    // 目前排序欄位

    sortedColumn() {

      var col = this.table.columns.find(c => c.direction);

      if (!col) {

        col = this.defaultColumn;

        col.direction = col.defaultSort.direction;

      }

      return col;

    },

    // 傳回排序後的 users

    sortedUsers() {

      var col = this.sortedColumn;

      var data = this.users.concat().sort((a, b) => {

        var v1 = a[col.field], v2 = b[col.field];

        if (v1 == v2) return 0;

        if (v1 == null) return 1;

        if (v2 == null) return -1;

        return v1 > v2 ? 1 : -1;

      });

      return col.direction === "desc" ? data.reverse() : data;

    }

  },



  // 方法

  methods: {

    // 初始化:載入區域中心並搜尋

    init() {

      this.areaCenters = ego.ajax.getAreaCenters(this.user.agentChannel);

      this.search();

    },

    // 區域中心變動時,重載通訊處

    changeAreaCenter() {

      this.query.commUnit = "";

      if (this.query.areaCenter) {

        this.commUnits = ego.ajax.getCommUnits(

          this.query.areaCenter.agentChannel,

          this.query.areaCenter.centerCode

        );

      } else {

        this.commUnits = [];

      }

    },

    // 處理日期選擇

    handleDate(target, date) {

      var id = $(target).attr("id");

      this.query[id] = date;

      // 同步限制前後日期

      $(target).prev().datepicker("option", "maxDate", date);

      $(target).next().datepicker("option", "minDate", date);

    },

    // 其他方法略...



    // 主搜尋,並處理按鈕顯示邏輯

    search() {

      this.resetTable();

      this.$nextTick(() => {

        this.users = ego.ajax.queryDashBoard(this.getQueryModel());

        // 依 buttonType/status 判斷 showButton, link, text

        this.users.forEach((user, idx) => {

          // ... 複雜邏輯,請參考原 code ...

        });

      });

    },

    // 重設表格

    resetTable() {

      this.users = [];

      this.table.columns.forEach(c => c.direction = c.defaultSort ? c.defaultSort.direction : "");

    }

    // 其他 methods 可仿此添加註解

  }

});

```

🔐 Base64 編碼內容

YGBgamF2YXNjcmlwdAoKLy8gVnVlIOWvpuS+i+WIneWni+WMlgoKdmFyIGFwcCA9IG5ldyBWdWUoewoKICAvLyDmjpvovInliLAgPGRpdiBpZD0iYXBwIj4gLi4uPC9kaXY+CgogIGVsOiAiI2FwcCIsCgoKCiAgLy8g6LOH5paZ5qih5Z6LCgogIGRhdGE6IHsKCiAgICB1c2VyOiB7CgogICAgICAvLyDkvb/nlKjogIUgSUQ6IOS+nSB1c2VyVHlwZSDmsbrlrpropoHpoa/npLogYWdlbnRDb2RlIOaIliB1c2VySWQKCiAgICAgIHVzZXJJZDogW1sqe1QoY29tLnRhaXdhbmxpZmUucmVjcnVpdC5lbnVtcy5Vc2VyVHlwZSkuQUdFTlQgPT0gdXNlclR5cGUgPyBhZ2VudENvZGUgOiB1c2VySWR9XV0sCgogICAgICAvLyDmpa3li5nlk6HlsIjlsazoqLvlhoromZ8KCiAgICAgIHJlZ2lzdGVyTm86IFtbKntUKGNvbS50YWl3YW5saWZlLnJlY3J1aXQuZW51bXMuVXNlclR5cGUpLkFHRU5UID09IHVzZXJUeXBlID8gcmVnaXN0ZXJObyA6ICIifV1dLAoKICAgICAgLy8g5L2/55So6ICF6aGe5Z6L5Luj56K8CgogICAgICB1c2VyVHlwZTogW1sqe1QoY29tLnRhaXdhbmxpZmUucmVjcnVpdC5lbnVtcy5Vc2VyVHlwZSkudmFsdWVPZih1c2VyVHlwZSkuY29kZX1dXSwKCiAgICAgIC8vIOmhnuWei+WQjeeosQoKICAgICAgdXNlclR5cGVOYW1lOiBbWyp7dXNlclR5cGUubmFtZSgpfV1dLAoKICAgICAgLy8g5qWt5YuZ5ZOh6YCa6LevCgogICAgICBhZ2VudENoYW5uZWw6IFtbKntUKGNvbS50YWl3YW5saWZlLnJlY3J1aXQuZW51bXMuVXNlclR5cGUpLkFHRU5UID09IHVzZXJUeXBlID8gYWdlbnRDaGFubmVsIDogIiJ9XV0sCgogICAgICAvLyDlhafli6Top5LoibLpoZ7lnosKCiAgICAgIHJvbGVUeXBlOiBbWyp7VChjb20udGFpd2FubGlmZS5yZWNydWl0LmVudW1zLlVzZXJUeXBlKS5TVEFGRiA9PSB1c2VyVHlwZSA/IHJvbGVUeXBlIDogIiJ9XV0sCgogICAgfSwKCgoKICAgIC8vIOS4i+aLiea4heWWruizh+aWmQoKICAgIGFyZWFDZW50ZXJzOiBbXSwgICAgICAgLy8g5Y2A5Z+f5Lit5b+DCgogICAgY29tbVVuaXRzOiBbXSwgICAgICAgICAvLyDpgJroqIromZUKCiAgICBzdWJzdGl0dXRlTGlzdDogW10sICAgIC8vIOS7o+eQhuS6uua4heWWrgoKCgogICAgLy8g5pmC5YiG6Zmj5YiXICjnlKjmlrzku6PnkIbkurrmmYLplpPpgbjmk4cpCgogICAgaG91cjogW10sCgogICAgbWludXRlOiBbXSwKCgoKICAgIC8vIOafpeipouaineS7tgoKICAgIHF1ZXJ5OiB7CgogICAgICBhcmVhQ2VudGVyOiAiIiwKCiAgICAgIGNvbW1Vbml0OiAiIiwKCiAgICAgIHJlY3J1aXROYW1lOiAiIiwKCiAgICAgIHJlY3J1aXRJZDogIiIsCgogICAgICBzdGFydENyZWF0ZURhdGU6ICIiLAoKICAgICAgZW5kQ3JlYXRlRGF0ZTogIiIKCiAgICB9LAoKCgogICAgLy8g5Luj55CG5Lq65p+l6Kmi5qKd5Lu2CgogICAgc3Vic3RpdHV0ZVF1ZXJ5OiB7CgogICAgICBjZW50ZXJDb2RlOiAiIiwKCiAgICAgIGFnZW50Q29kZTogIiIsCgogICAgICB1c2VyTmFtZTogIiIsCgogICAgICBzdWJzdGl0dXRlQWdlbnRDb2RlOiAiIiwKCiAgICAgIHN1YnN0aXR1dGVOYW1lOiAiIiwKCiAgICAgIHN0YXJ0U3Vic3RpdHV0ZURhdGU6ICIiLAoKICAgICAgc3RhcnRTdWJzdGl0dXRlSG91cjogIiIsCgogICAgICBzdGFydFN1YnN0aXR1dGVNaW51dGU6ICIiLAoKICAgICAgZW5kU3Vic3RpdHV0ZURhdGU6ICIiLAoKICAgICAgZW5kU3Vic3RpdHV0ZUhvdXI6ICIiLAoKICAgICAgZW5kU3Vic3RpdHV0ZU1pbnV0ZTogIiIsCgogICAgICAvLyDpoJDoqK0gTu+8jOWQpuWJh+aMiemIleS4jemhr+ekugoKICAgICAgc3Vic3RpdHV0ZVN0YXR1czogIk4iCgogICAgfSwKCgoKICAgIC8vIOihqOagvOiIh+WIl+ihqOizh+aWmQoKICAgIHVzZXJzOiBbXSwKCiAgICB0YWJsZTogewoKICAgICAgLy8g5a6a576p5qyE5L2N5bGs5oCnOiDlj6/lkKbmjpLluo/jgIHmrITkvY0ga2V544CB5qiZ6aGM44CB5o6S5bqP5pa55ZCRCgogICAgICBjb2x1bW5zOiBbCgogICAgICAgIHsgc29ydGFibGU6IHRydWUsIGZpZWxkOiAic3lzQ29kZSIsIHRpdGxlOiAi57eo6JmfIiwgZGlyZWN0aW9uOiAiIiB9LAoKICAgICAgICB7IHNvcnRhYmxlOiB0cnVlLCBmaWVsZDogImNyZWF0ZVRpbWUiLCB0aXRsZTogIuW4s+iZn+eUs+iri+aXpSIsIGRpcmVjdGlvbjogIiIsIGRlZmF1bHRTb3J0OiB7IGRpcmVjdGlvbjogImRlc2MiIH0gfSwKCiAgICAgICAgeyBzb3J0YWJsZTogdHJ1ZSwgZmllbGQ6ICJ1c2VyTmFtZSIsIHRpdGxlOiAi5rqW5aKe5ZOhIiwgZGlyZWN0aW9uOiAiIiB9LAoKICAgICAgICB7IHNvcnRhYmxlOiB0cnVlLCBmaWVsZDogInN0YXR1c1RleHQiLCB0aXRsZTogIuebruWJjemAsuW6piIsIGRpcmVjdGlvbjogIiIgfSwKCiAgICAgICAgeyBzb3J0YWJsZTogdHJ1ZSwgZmllbGQ6ICJzdGF0dXNEb2NUZXh0IiwgdGl0bGU6ICLloLHogZjni4DmhYsiLCBkaXJlY3Rpb246ICIiIH0sCgogICAgICAgIHsgc29ydGFibGU6IHRydWUsIGZpZWxkOiAiam9iVHlwZSIsIHRpdGxlOiAi6aGe5YilIiwgZGlyZWN0aW9uOiAiIiB9LAoKICAgICAgICB7IHNvcnRhYmxlOiB0cnVlLCBmaWVsZDogImpvYklkIiwgdGl0bGU6ICLmk6zku7vnlKjogbfnqLEiLCBkaXJlY3Rpb246ICIiIH0sCgogICAgICAgIHsgc29ydGFibGU6IHRydWUsIGZpZWxkOiAiY29tbUNvZGUiLCB0aXRsZTogIumAmuioiuiZlSIsIGRpcmVjdGlvbjogIiIgfSwKCiAgICAgICAgeyBzb3J0YWJsZTogdHJ1ZSwgZmllbGQ6ICJkc1JlZ2lzdGVySWQiLCB0aXRsZTogIuebtOWxrOS4u+euoSIsIGRpcmVjdGlvbjogIiIgfSwKCiAgICAgICAgeyBzb3J0YWJsZTogdHJ1ZSwgZmllbGQ6ICJyZWZSZWdpc3RlcklkIiwgdGl0bGU6ICLmjqjolqbkuroiLCBkaXJlY3Rpb246ICIiIH0sCgogICAgICAgIHsgc29ydGFibGU6IHRydWUsIGZpZWxkOiAiYnV0dG9uVGV4dCIsIHRpdGxlOiAi5b6F5bel5L2c5LqL6aCFIiwgZGlyZWN0aW9uOiAiIiB9CgogICAgICBdCgogICAgfSwKCgoKICAgIC8vIOWWruethua1geeoi+izh+aWme+8jOeUqOaWvOmhr+ekuumAsuW6pgoKICAgIHJlY3J1aXQ6IHsKCiAgICAgIGFwcGx5RG9jRGF0ZTogIiIsCgogICAgICBhcHByb3ZlV2luZG93Q2hlY2tEYXRlOiAiIiwKCiAgICAgIGFzc2lzdGFudENoZWNrRGF0ZTogIiIsCgogICAgICBjYnNBcmVhQ2VudGVyTWFuYWdlckRhdGU6ICIiLAoKICAgICAgY2JzQnJhbmNoTWFuYWdlckRhdGU6ICIiLAoKICAgICAgY2JzVGVzdERhdGU6ICIiLAoKICAgICAgZHNSZWdpc3RlckRhdGU6ICIiLAoKICAgICAgZWxlYXJuaW5nU3RhcnRhRGF0ZTogIiIsCgogICAgICBndWlsZENsYXNzU3RhdHVzOiAiIiwKCiAgICAgIGd1aWxkRXhhbVN0YXR1czogIiIsCgogICAgICBqb2JUeXBlRGF0ZTogIiIsCgogICAgICBwcmVKb2JJZDogIiIsCgogICAgICBwcmVKb2JJZERhdGU6ICIiLAoKICAgICAgcmVnaXN0ZXJEYXRlOiAiIiwKCiAgICAgIHN5c0NvZGU6ICIiLAoKICAgICAgdG90YWxGaW5pc2hEYXRlOiAiIiwKCiAgICAgIHVzZXJJZDogIiIsCgogICAgICB1c2VyTmFtZTogIiIKCiAgICB9LAoKCgogICAgLy8g5q2l6amf5ZyW6Zmj5YiX77yM5q+P5q2l6amf5pyJ54uA5oWLIHN0YXR1cwoKICAgIGNoYXJ0czogWwoKICAgICAgeyBzdGVwOiAxLCB0aXRsZTogIuW4s+iZn+eUs+iriyIsIGZpZWxkOiAicmVnaXN0ZXJEYXRlIiwgc3RhdHVzOiAwIH0sCgogICAgICB7IHN0ZXA6IDIsIHRpdGxlOiAi55u05bGs5Li7566hPGJyPuW4s+iZn+iqjeitiSIsIGZpZWxkOiAiZHNSZWdpc3RlckRhdGUiLCBzdGF0dXM6IDAgfSwKCiAgICAgIHsgc3RlcDogMywgdGl0bGU6ICJDQlM8YnI+6YGp5oCn5ris6amXIiwgZmllbGQ6ICJjYnNUZXN0RGF0ZSIsIHN0YXR1czogMCB9LAoKICAgICAgeyBzdGVwOiA0LCB0aXRsZTogIuiZlee2k+eQhjxicj5DQlPpnaLoq4ciLCBmaWVsZDogImNic0JyYW5jaE1hbmFnZXJEYXRlIiwgc3RhdHVzOiAwIH0sCgogICAgICB7IHN0ZXA6IDUsIHRpdGxlOiAi5Y2A5Z+f5Lit5b+DPGJyPkNCU+mdouirhyIsIGZpZWxkOiAiY2JzQXJlYUNlbnRlck1hbmFnZXJEYXRlIiwgc3RhdHVzOiAwLAoKICAgICAgICBzdWJTdGVwczogWwoKICAgICAgICAgIHsgc3RlcDogMSwgdGl0bGU6ICJBLiDlhazovJTnj60gPGJyPjxzcGFuPijkuIroqrLni4DmhYspPC9zcGFuPiIsIGZpZWxkOiAiZ3VpbGRDbGFzc1N0YXR1cyIsIHN0YXR1czogMCB9LAoKICAgICAgICAgIHsgc3RlcDogMiwgdGl0bGU6ICJCLiDlhazmnIPogIPoqaY8YnI+PHNwYW4+KOWgseiAg+eLgOaFiyk8L3NwYW4+IiwgZmllbGQ6ICJndWlsZEV4YW1TdGF0dXMiLCBzdGF0dXM6IDAgfQoKICAgICAgICBdCgogICAgICB9LAoKICAgICAgeyBzdGVwOiA2LCB0aXRsZTogIuiZlee2k+eQhjxicj7ogbfntJrliJ3lr6kiLCBmaWVsZDogImpvYlR5cGVEYXRlIiwgc3RhdHVzOiAwIH0sCgogICAgICB7IHN0ZXA6IDcsIHRpdGxlOiAi5aCx6IGY5paH5Lu2PGJyPuWhq+WvqyIsIGZpZWxkOiAiYXBwbHlEb2NEYXRlIiwgc3RhdHVzOiAwIH0sCgogICAgICB7IHN0ZXA6IDgsIHRpdGxlOiAi6JmV57aT55CGPGJyPuiBt+e0muikh+WvqSIsIGZpZWxkOiAicHJlSm9iSWREYXRlIiwgc3RhdHVzOiAwIH0sCgogICAgICB7IHN0ZXA6IDksIHRpdGxlOiAi5aCx6IGY5paH5Lu2PGJyPuWvqeaguCIsIGZpZWxkOiAiYXNzaXN0YW50Q2hlY2tEYXRlIiwgc3RhdHVzOiAwIH0KCiAgICBdCgogIH0sCgoKCiAgLy8g5YWD5Lu25o6b6LyJ5YmNICjmnKrnlKgpCgogIGJlZm9yZU1vdW50KCkge30sCgoKCiAgLy8g5o6b6LyJ5b6M5ZG85Y+rIGluaXQKCiAgICAvLyDmjpvovInlvozlkbzlj6sgaW5pdO+8jOatpOaZgiBET00g5bey5rqW5YKZ5aW977yM5Y+v5a6J5YWo55m86LW3IEFKQVgg6KuL5rGCCgogIG1vdW50ZWQoKSB7CgogICAgLy8g5Zyo5q2k6ZqO5q615ZG85Y+rIGluaXQoKe+8jOmWi+Wni+esrOS4gOasoSBBSkFYIOiri+axggoKICAgIHRoaXMuaW5pdCgpOwoKICB9LAoKCgoKCiAgLy8g6aGv56S655So6YGO5r++5ZmoCgogIGZpbHRlcnM6IHsKCiAgICAvLyDnqbrlgLzpoa/npLrjgIwt44CNCgogICAgZm9ybWF0RW1wdHkodmFsdWUsIGRlZmF1bHRWYWx1ZSkgewoKICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiAoZGVmYXVsdFZhbHVlID8gZGVmYXVsdFZhbHVlIDogIi0iKTsKCiAgICB9LAoKICAgIC8vIOWRvOWPqyBlZ28uZm9ybWF0LmRhdGUg5qC85byP5YyWCgogICAgZm9ybWF0RGF0ZSh2YWx1ZSwgZGVsaW0pIHsKCiAgICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTsKCiAgICAgIHJldHVybiBlZ28uZm9ybWF0LmRhdGUodmFsdWUsIGRlbGltKTsKCiAgICB9LAoKICAgIC8vIOaMiemIleaWh+WtlwoKICAgIGZvcm1hdEFjdGlvbihidXR0b25UeXBlKSB7CgogICAgICBzd2l0Y2ggKGJ1dHRvblR5cGUpIHsKCiAgICAgICAgY2FzZSAwOiByZXR1cm4gIuiqjeitiSI7CgogICAgICAgIGNhc2UgMTogcmV0dXJuICLpnaLoq4ciOwoKICAgICAgICBjYXNlIDI6IHJldHVybiAi5qqi5p+lIjsKCiAgICAgICAgY2FzZSAzOiByZXR1cm4gIuewveaguCI7CgogICAgICAgIGNhc2UgNDogcmV0dXJuICLliJ3lr6kiOwoKICAgICAgICBjYXNlIDU6IHJldHVybiAi6KSH5a+pIjsKCiAgICAgIH0KCiAgICAgIHJldHVybiAiIjsKCiAgICB9CgogIH0sCgoKCiAgLy8g6KiI566X5bGs5oCnCgogIGNvbXB1dGVkOiB7CgogICAgLy8g5Y+W5b6X6aCQ6Kit5o6S5bqP5qyECgogICAgZGVmYXVsdENvbHVtbigpIHsKCiAgICAgIHZhciBjb2xzID0gdGhpcy50YWJsZS5jb2x1bW5zLmZpbHRlcihjID0+IGMuZGVmYXVsdFNvcnQpOwoKICAgICAgcmV0dXJuIGNvbHMubGVuZ3RoID8gY29sc1swXSA6IHRoaXMudGFibGUuY29sdW1uc1swXTsKCiAgICB9LAoKICAgIC8vIOebruWJjeaOkuW6j+ashOS9jQoKICAgIHNvcnRlZENvbHVtbigpIHsKCiAgICAgIHZhciBjb2wgPSB0aGlzLnRhYmxlLmNvbHVtbnMuZmluZChjID0+IGMuZGlyZWN0aW9uKTsKCiAgICAgIGlmICghY29sKSB7CgogICAgICAgIGNvbCA9IHRoaXMuZGVmYXVsdENvbHVtbjsKCiAgICAgICAgY29sLmRpcmVjdGlvbiA9IGNvbC5kZWZhdWx0U29ydC5kaXJlY3Rpb247CgogICAgICB9CgogICAgICByZXR1cm4gY29sOwoKICAgIH0sCgogICAgLy8g5YKz5Zue5o6S5bqP5b6M55qEIHVzZXJzCgogICAgc29ydGVkVXNlcnMoKSB7CgogICAgICB2YXIgY29sID0gdGhpcy5zb3J0ZWRDb2x1bW47CgogICAgICB2YXIgZGF0YSA9IHRoaXMudXNlcnMuY29uY2F0KCkuc29ydCgoYSwgYikgPT4gewoKICAgICAgICB2YXIgdjEgPSBhW2NvbC5maWVsZF0sIHYyID0gYltjb2wuZmllbGRdOwoKICAgICAgICBpZiAodjEgPT0gdjIpIHJldHVybiAwOwoKICAgICAgICBpZiAodjEgPT0gbnVsbCkgcmV0dXJuIDE7CgogICAgICAgIGlmICh2MiA9PSBudWxsKSByZXR1cm4gLTE7CgogICAgICAgIHJldHVybiB2MSA+IHYyID8gMSA6IC0xOwoKICAgICAgfSk7CgogICAgICByZXR1cm4gY29sLmRpcmVjdGlvbiA9PT0gImRlc2MiID8gZGF0YS5yZXZlcnNlKCkgOiBkYXRhOwoKICAgIH0KCiAgfSwKCgoKICAvLyDmlrnms5UKCiAgbWV0aG9kczogewoKICAgIC8vIOWIneWni+WMlu+8mui8ieWFpeWNgOWfn+S4reW/g+S4puaQnOWwiwoKICAgIGluaXQoKSB7CgogICAgICB0aGlzLmFyZWFDZW50ZXJzID0gZWdvLmFqYXguZ2V0QXJlYUNlbnRlcnModGhpcy51c2VyLmFnZW50Q2hhbm5lbCk7CgogICAgICB0aGlzLnNlYXJjaCgpOwoKICAgIH0sCgogICAgLy8g5Y2A5Z+f5Lit5b+D6K6K5YuV5pmC77yM6YeN6LyJ6YCa6KiK6JmVCgogICAgY2hhbmdlQXJlYUNlbnRlcigpIHsKCiAgICAgIHRoaXMucXVlcnkuY29tbVVuaXQgPSAiIjsKCiAgICAgIGlmICh0aGlzLnF1ZXJ5LmFyZWFDZW50ZXIpIHsKCiAgICAgICAgdGhpcy5jb21tVW5pdHMgPSBlZ28uYWpheC5nZXRDb21tVW5pdHMoCgogICAgICAgICAgdGhpcy5xdWVyeS5hcmVhQ2VudGVyLmFnZW50Q2hhbm5lbCwKCiAgICAgICAgICB0aGlzLnF1ZXJ5LmFyZWFDZW50ZXIuY2VudGVyQ29kZQoKICAgICAgICApOwoKICAgICAgfSBlbHNlIHsKCiAgICAgICAgdGhpcy5jb21tVW5pdHMgPSBbXTsKCiAgICAgIH0KCiAgICB9LAoKICAgIC8vIOiZleeQhuaXpeacn+mBuOaThwoKICAgIGhhbmRsZURhdGUodGFyZ2V0LCBkYXRlKSB7CgogICAgICB2YXIgaWQgPSAkKHRhcmdldCkuYXR0cigiaWQiKTsKCiAgICAgIHRoaXMucXVlcnlbaWRdID0gZGF0ZTsKCiAgICAgIC8vIOWQjOatpemZkOWItuWJjeW+jOaXpeacnwoKICAgICAgJCh0YXJnZXQpLnByZXYoKS5kYXRlcGlja2VyKCJvcHRpb24iLCAibWF4RGF0ZSIsIGRhdGUpOwoKICAgICAgJCh0YXJnZXQpLm5leHQoKS5kYXRlcGlja2VyKCJvcHRpb24iLCAibWluRGF0ZSIsIGRhdGUpOwoKICAgIH0sCgogICAgLy8g5YW25LuW5pa55rOV55WlLi4uCgoKCiAgICAvLyDkuLvmkJzlsIvvvIzkuKbomZXnkIbmjInpiJXpoa/npLrpgo/ovK8KCiAgICBzZWFyY2goKSB7CgogICAgICB0aGlzLnJlc2V0VGFibGUoKTsKCiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsKCiAgICAgICAgdGhpcy51c2VycyA9IGVnby5hamF4LnF1ZXJ5RGFzaEJvYXJkKHRoaXMuZ2V0UXVlcnlNb2RlbCgpKTsKCiAgICAgICAgLy8g5L6dIGJ1dHRvblR5cGUvc3RhdHVzIOWIpOaWtyBzaG93QnV0dG9uLCBsaW5rLCB0ZXh0CgogICAgICAgIHRoaXMudXNlcnMuZm9yRWFjaCgodXNlciwgaWR4KSA9PiB7CgogICAgICAgICAgLy8gLi4uIOikh+mbnOmCj+i8r++8jOiri+WPg+iAg+WOnyBjb2RlIC4uLgoKICAgICAgICB9KTsKCiAgICAgIH0pOwoKICAgIH0sCgogICAgLy8g6YeN6Kit6KGo5qC8CgogICAgcmVzZXRUYWJsZSgpIHsKCiAgICAgIHRoaXMudXNlcnMgPSBbXTsKCiAgICAgIHRoaXMudGFibGUuY29sdW1ucy5mb3JFYWNoKGMgPT4gYy5kaXJlY3Rpb24gPSBjLmRlZmF1bHRTb3J0ID8gYy5kZWZhdWx0U29ydC5kaXJlY3Rpb24gOiAiIik7CgogICAgfQoKICAgIC8vIOWFtuS7liBtZXRob2RzIOWPr+S7v+atpOa3u+WKoOiou+inowoKICB9Cgp9KTsKCmBgYAo=
返回列表 上一筆 下一筆