{"version":3,"file":"loading_animation-98ecc614.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(callback: () => Promise): Promise {\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__\"","\n\n\n\n"],"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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"}