{"version":3,"file":"loading_animation-bda8f140.js","sources":["../../../app/javascript/javascripts/utils/inquiry.ts","../../../app/javascript/images/loading.gif","../../../app/javascript/javascripts/common/loading_animation.vue"],"sourcesContent":["import Cookies from 'js-cookie';\nimport liff from '@line/liff';\n\nimport agentAPI from './agent_api';\nimport { isLiffApp } from './liff_helper';\n\nimport type { AxiosResponse } from 'axios';\n\n/** 集客セグメントタイプ */\ntype SegmentType = 'organic' | 'affiliate' | 'advertisement' | 'cvm';\n\n/** 問い合わせ送信時のオプション */\ninterface PostOptions {\n  /** 問い合わせ時に選択した求人コード */\n  positionCd?: string;\n}\n\n/** @class 問い合わせクラス */\nexport class Inquiry {\n  /** @member 希望雇用形態コード */\n  employmentTypeCd: string = null;\n  /** @member 転職時期コード */\n  wishfulTimeCd: string = null;\n  /** @member 地方コード */\n  areaCd: string = null;\n  /** @member 都道府県コード */\n  prefectureCd: number = null;\n  /** @member 市区町村コード */\n  cityCd: number = null;\n  /** @member 業種コードリスト */\n  positionTypeCds: string[] = [];\n  /** @member 業種コード */\n  businessCategoryCd: string = null;\n  /** @member 調剤業務の経験有無 */\n  dispensingExperience: boolean = null;\n  /** @member 性別 */\n  genderTypeCd: string = null;\n  /** @member 年収 */\n  annualIncome: number = null;\n  /** @member 電話での連絡可否 */\n  callAcceptance: boolean = null;\n  /** @member 姓 */\n  lastName: string = null;\n  /** @member 名 */\n  firstName: string = null;\n  /** @member 姓ふりがな */\n  lastNameKana: string = null;\n  /** @member 名ふりがな */\n  firstNameKana: string = null;\n  /** @member 生まれ年コード */\n  birthYearCd: string = null;\n  /** @member 電話番号 */\n  phone: string = null;\n  /** @member メールアドレス */\n  email: string = null;\n  /** @member コメント */\n  comment: string = null;\n  /** @member 求職者ID */\n  kyusyokusyaId: string = null;\n\n  /** ページオプション */\n  static get pageOptions() {\n    return document.getElementById('page_options')?.dataset;\n  }\n\n  /** 集客セグメントタイプ */\n  static get segmentType() {\n    return Inquiry.pageOptions.segmentType as SegmentType;\n  }\n\n  /** 薬剤師資格をチェックするLPかどうか */\n  static get pharmacistLicenseCheckLpFlag(): boolean {\n    return Inquiry.pageOptions.pharmacistLicenseCheckLpFlag === 'true';\n  }\n\n  /** 雇用形態別LPかどうか */\n  static get specializedJobTypeLpFlag(): boolean {\n    return Inquiry.pageOptions.specializedJobTypeLpFlag === 'true';\n  }\n\n  /** 雇用形態別LPの正社員用LPかどうか */\n  static get employmentTypeOnlyFull(): boolean {\n    return Inquiry.pageOptions.employmentTypeOnlyFull === 'true';\n  }\n\n  constructor() {\n    if(Inquiry.segmentType === 'cvm'){\n      // 集客セグメントがCVMの場合、クエリパラメーターから都道府県コード・求職者IDを設定\n      const queryParams = new URLSearchParams(window.location.search);\n      this.kyusyokusyaId = queryParams.get('serial') || null;\n      this.prefectureCd = Number(queryParams.get('prefecture')) || null;\n    }\n    else {\n      // 集客セグメントがCVM以外の場合、Cookieの求人検索条件から都道府県コードの初期値を設定\n      const cookie = Cookies.get('_pharmacist_conditions');\n      if(cookie) {\n        const conditions = JSON.parse(cookie);\n        this.prefectureCd = Number(conditions.pref) || null;\n      }\n    }\n\n    // ページオプションで問い合わせが設定されている場合は初期値を設定\n    if(Inquiry.pageOptions.inquiry) {\n      // ページオプションはJSONで渡されるため、パースする\n      const inquiry = JSON.parse(Inquiry.pageOptions.inquiry);\n\n      this.employmentTypeCd = inquiry.employment_type_cd || null;\n      this.wishfulTimeCd = inquiry.wishful_time_cd || null;\n    }\n  }\n\n  /**\n   * コールバック関数がcatchになったらエラーページにリダイレクトする\n   * @param callback コールバック関数(非同期)\n   */\n  protected async errorHandling<T>(callback: () => Promise<T>): Promise<T> {\n    try {\n      return await callback();\n    } catch (error) {\n      window.location.href = '/lps/cvm/error';\n    }\n  }\n\n  /**\n   * @method\n   * 問い合わせを送信する\n   */\n  async post(options: PostOptions = {}) {\n    return this.errorHandling(async () => {\n      /** 問い合わせ送信時のレスポンス */\n      let response: AxiosResponse<{ id: number }>;\n\n      if(Inquiry.segmentType === 'cvm') {\n        /** LINEアクセストークン */\n        let lineAccessToken: string;\n        if(isLiffApp()) {\n          // LIFFアプリの場合はアクセストークンを取得\n          lineAccessToken = liff.getAccessToken();\n        }\n  \n        // 集客セグメントがCVMの場合、CVM用の問い合わせ送信\n        response = await agentAPI.post(\n          '/api/v1/cvm_inquiry',\n          {\n            inquiry: {\n              wishful_time_cd: this.wishfulTimeCd,\n              employment_type_cd: this.employmentTypeCd,\n              kyusyokusya_id: this.kyusyokusyaId,\n            },\n            inquiry_inflow: {\n              page_form: Inquiry.pageOptions.sfPageFormNo,\n              position_cd: options.positionCd || null\n            },\n            line_access_token: lineAccessToken\n          }\n        );\n      }\n      else {\n        // 集客セグメントがCVM以外の場合、通常の問い合わせ送信\n        response = await agentAPI.post(\n          '/api/v1/pharmacist_inquiry',\n          {\n            last_name: this.lastName,\n            first_name: this.firstName,\n            last_name_kana: this.lastNameKana,\n            first_name_kana: this.firstNameKana,\n            email: this.email,\n            phone: this.phone,\n            prefecture_code: this.prefectureCd,\n            city_code: this.cityCd,\n            birth_year_cd: this.birthYearCd,\n            employment_type_cd: this.employmentTypeCd,\n            position_type_cds: this.positionTypeCds,\n            wishful_time_cd: this.wishfulTimeCd,\n            comment: this.combinedComment,\n            page_form: Inquiry.pageOptions.sfPageFormNo\n          }\n        );\n      }\n\n      if(liff.isInClient()) {\n        // LIFFアプリの場合、送信成功したらブラウザを閉じる\n        liff.closeWindow();\n      }\n      else {\n        // 送信成功したらサンクスページにリダイレクトする\n        this.redirectToThanks(response.data.id);\n      }\n    });\n  }\n\n  /**\n   * @method\n   * 問い合わせを送信する(登録地域変更付き)\n   */\n  async postCvmArea() {\n    return this.errorHandling(async () => {\n      /** LINEアクセストークン */\n      let lineAccessToken: string;\n      if(isLiffApp()) {\n        // LIFFアプリの場合はアクセストークンを取得\n        lineAccessToken = liff.getAccessToken();\n      }\n\n      // 問い合わせ送信\n      const response = await agentAPI.post(\n        '/api/v1/cvm_area_inquiry',\n          {\n          inquiry: {\n            kyusyokusya_id: this.kyusyokusyaId,\n            prefecture_code: this.prefectureCd,\n            city_code: this.cityCd\n          },\n          inquiry_inflow: {\n            page_form: Inquiry.pageOptions.sfPageFormNo\n          },\n          line_access_token: lineAccessToken\n        }\n      );\n\n      if(liff.isInClient()) {\n        // LIFFアプリの場合、送信成功したらブラウザを閉じる\n        liff.closeWindow();\n      }\n      else {\n        // 送信成功したらサンクスページにリダイレクトする\n        this.redirectToThanks(response.data.id);\n      }\n    });\n  }\n\n  /**\n   * @method\n   * 問い合わせを送信する\n   */\n  async postShindanInquiry() {\n    return this.errorHandling(async () => {\n      // 問い合わせ送信\n      const response = await agentAPI.post(\n        '/api/v1/shindan_inquiry',\n        {\n          last_name: this.lastName,\n          first_name: this.firstName,\n          last_name_kana: this.lastNameKana,\n          first_name_kana: this.firstNameKana,\n          email: this.email,\n          phone: this.phone,\n          prefecture_code: this.prefectureCd,\n          city_code: this.cityCd,\n          birth_year_cd: this.birthYearCd,\n          employment_type_cd: this.employmentTypeCd,\n          position_type_cds: this.positionTypeCds,\n          wishful_time_cd: this.wishfulTimeCd,\n          comment: this.combinedComment,\n          page_form: Inquiry.pageOptions.sfPageFormNo,\n          call_acceptance_flag: this.callAcceptance\n        }\n      );\n\n      this.redirectToShindanThanks(response.data.id);\n    });\n  }\n\n  /**\n   * @method\n   * 登録地域を変更する\n   * - AGT-1146 No178 CVM_ワンクリックLPデザイン改修(登録+住所変更)\n   */\n  async changeArea() {\n    return this.errorHandling(async () => {\n      // 地域変更APIを実行\n      await agentAPI.post('/api/v1/cvm_change_area', {\n        kyusyokusya_id: this.kyusyokusyaId,\n        prefecture_code: this.prefectureCd,\n        city_code: this.cityCd\n      });\n\n      // 成功したら登録完了画面にリダイレクト\n      window.location.href = '/lps/cvm/area_changed';\n    });\n  }\n\n  /**\n   * @method\n   * サンクスページにリダイレクト\n   * @param id 問い合わせUID\n   */\n  redirectToThanks(uid: number | string) {\n    // リダイレクト先のクエリ文字列\n    const params = new URLSearchParams;\n\n    // 問い合わせID\n    params.append('uid', uid.toString());\n\n    // アフィリエイトの場合\n    if(Inquiry.segmentType === 'affiliate') {\n      // 雇用形態\n      params.append('recruitment_aff', this.affiliateEmploymentTypeParam);\n      // 年齢\n      params.append('age', this.affiliateAgeParam);\n      // エリア\n      params.append('area', this.affiliateAreaParam);\n    }\n\n    // リダイレクト\n    window.location.href = `${Inquiry.pageOptions.redirectUrl}?${params}`;\n  }\n\n  /**\n   * @method\n   * 年収診断サンクスページにリダイレクト\n   * @param id 問い合わせUID\n   */\n  redirectToShindanThanks(uid: number | string) {\n    // リダイレクト先のクエリ文字列\n    const params = new URLSearchParams;\n\n    // 問い合わせID\n    params.append('uid', uid.toString());\n    params.append('category_business_cd', this.businessCategoryCd.toString());\n    params.append('dispensing_experience', this.dispensingExperience.toString());\n    params.append('annual_income', this.annualIncome.toString());\n    params.append('gender_check', this.genderTypeCd.toString());\n\n    // リダイレクト\n    window.location.href = `${Inquiry.pageOptions.redirectUrl}?${params}`;\n  }\n\n  /** (アフィリエイト用パラメーター)雇用形態 */\n  protected get affiliateEmploymentTypeParam() {\n    switch(this.employmentTypeCd) {\n      case 'PART':\n      case 'SPART':\n      case 'NONE':\n        return 'parttimer';\n      case 'TEMP':\n      case 'PERM':\n        return 'haken';\n      case 'FULL':\n      default:\n        return 'fulltime';\n    };\n  }\n\n  /** (アフィリエイト用パラメーター)年齢 */\n  protected get affiliateAgeParam() {\n    const age = new Date().getFullYear() - Number(this.birthYearCd);\n\n    switch(true) {\n      // 20代・30代\n      case age >= 20 && age < 40:\n        return 'young';\n      // 40代・50代\n      case age >= 40 && age < 60:\n        return 'middle';\n      // その他\n      default:\n        return 'other';\n    };\n  }\n\n  /** (アフィリエイト用パラメーター)エリア */\n  protected get affiliateAreaParam() {\n    // 埼玉・千葉・東京・神奈川・大阪・兵庫\n    if([11, 12, 13, 14, 27, 28].includes(this.prefectureCd)) {\n      return '1';\n    }\n    else {\n      return '2';\n    }\n  }\n\n  /** 問い合わせのコメントとシステムコメントを結合し400文字だけ抽出 */\n  protected get combinedComment() {\n    const comment = this.comment || '';\n    const systemComment = Inquiry.pageOptions.systemComment ? `\\n${Inquiry.pageOptions.systemComment}` : '';\n    return `${comment}${systemComment}`.slice(0, 400);\n  }\n}\n\nexport default Inquiry;\n","export default \"__VITE_ASSET__6ea052d8__\"","<template>\n  <div v-if=\"isShow\">\n    <div class='cvm_gray_panel'></div>\n    <div class=\"loading\">\n      <img alt=\"\" src=\"@/images/loading.gif\">\n    </div>\n  </div>\n</template>\n\n<script>\n  export default {\n    data: function () {\n      return {\n        isShow: false\n      }\n    },\n    methods: {\n      /**\n       * ローディングを表示する\n       */\n      show() {\n        this.isShow = true;\n      },\n      /**\n       * ローディングを非表示にする\n       */\n      hide() {\n        this.isShow = false;\n      }\n    }\n  }\n</script>\n\n<style scoped lang=\"scss\">\n.cvm_gray_panel {\n  background: #333;\n  z-index: 100;\n  opacity: 0.5;\n  position: fixed;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n}\n\n.loading {\n  margin: -50px 0px 0px -50px;\n  padding: 20px;\n  background: #fff;\n  opacity: 0.8;\n  border-radius: 4px;\n  position: fixed;\n  left: 50%;\n  top: 50%;\n  border: 1px solid #eee;\n  z-index: 100;\n}\n</style>"],"names":["Inquiry","__publicField","queryParams","cookie","Cookies","conditions","inquiry","_a","callback","options","response","lineAccessToken","isLiffApp","liff","agentAPI","uid","params","age","comment","systemComment","__$_require_0478accc__","_sfc_main"],"mappings":"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"}