{"version":3,"file":"js/shopContent.js","mappings":"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","sources":["webpack://the-butters/webpack/runtime/chunk loaded","webpack://the-butters/./f2e_lib/composable/useAlert.js","webpack://the-butters/./f2e_lib/composable/api/apiCalls.js","webpack://the-butters/./f2e_lib/composable/api/useAxiosAPI.js","webpack://the-butters/./f2e_lib/stores/useMiniCartStore.js","webpack://the-butters/./f2e_lib/composable/useMessage.js","webpack://the-butters/./f2e_lib/composable/useTextProcessing.js","webpack://the-butters/./f2e_lib/composable/useImage.js","webpack://the-butters/./f2e_lib/components/common/Image/NewImage.vue","webpack://the-butters/./f2e_lib/components/common/Image/NewImage.vue?08b8","webpack://the-butters/./f2e_lib/components/common/alert/AlertLayout.vue","webpack://the-butters/./f2e_lib/components/common/alert/AlertLayout.vue?a31e","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertConfirm.vue","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertConfirm.vue?4322","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertInfo.vue","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertInfo.vue?8358","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertSpecial.vue","webpack://the-butters/./f2e_lib/components/common/alert/parts/AlertSpecial.vue?2de5","webpack://the-butters/./f2e_lib/components/common/alert/AlertDialog.vue","webpack://the-butters/./f2e_lib/components/common/message/Message.vue","webpack://the-butters/./f2e_lib/components/common/message/Message.vue?8c14","webpack://the-butters/./f2e_lib/gtm/class/shopListClass.js","webpack://the-butters/./f2e_lib/gtm/base.js","webpack://the-butters/./f2e_lib/gtm/shopList/shopListView.js","webpack://the-butters/./f2e_lib/gtm/search/index.js","webpack://the-butters/./src/pages/common/js/common.js","webpack://the-butters/./f2e_lib/gtm/trace.js","webpack://the-butters/./f2e_lib/gtm/class/productClass.js","webpack://the-butters/./f2e_lib/gtm/product/index.js","webpack://the-butters/./f2e_lib/gtm/common.js","webpack://the-butters/./f2e_lib/gtm/wishlist/index.js","webpack://the-butters/./f2e_lib/composable/useUtmKDetect.js","webpack://the-butters/./f2e_lib/stores/useModalStore.js","webpack://the-butters/./src/models/productEnum.js","webpack://the-butters/./f2e_lib/stores/useShopContentStore.js","webpack://the-butters/./f2e_lib/composable/useSetEnv.js","webpack://the-butters/./f2e_lib/composable/shop/useZoomBox.js","webpack://the-butters/./src/pages/shopContent/components/Photo.vue","webpack://the-butters/./src/pages/shopContent/components/Photo.vue?2df7","webpack://the-butters/./src/components/Select.vue?a3af","webpack://the-butters/./src/components/Select.vue","webpack://the-butters/./src/components/Quantity.vue","webpack://the-butters/./src/components/Quantity.vue?805d","webpack://the-butters/./f2e_lib/components/common/modal/BaseModal.vue","webpack://the-butters/./f2e_lib/components/common/modal/BaseModal.vue?17c4","webpack://the-butters/./src/pages/shopContent/components/ArrivalNotice.vue","webpack://the-butters/./src/pages/shopContent/components/ArrivalNotice.vue?bfe7","webpack://the-butters/./src/pages/shopContent/components/SpecMobile.vue","webpack://the-butters/./src/pages/shopContent/components/SpecMobile.vue?c1f9","webpack://the-butters/./src/pages/shopContent/components/SizeModal.vue?112d","webpack://the-butters/./src/pages/shopContent/components/SizeModal.vue","webpack://the-butters/./f2e_lib/composable/addon/useAddon.js","webpack://the-butters/./f2e_lib/components/addon/parts/AddonDetailPopup.vue?6c39","webpack://the-butters/./f2e_lib/components/addon/parts/AddonDetailPopup.vue","webpack://the-butters/./f2e_lib/components/addon/parts/AddonItems.vue","webpack://the-butters/./f2e_lib/components/addon/parts/AddonItems.vue?3c97","webpack://the-butters/./f2e_lib/components/addon/AddonLayout.vue","webpack://the-butters/./f2e_lib/components/addon/AddonLayout.vue?5527","webpack://the-butters/./src/pages/shopContent/components/AddonShop.vue","webpack://the-butters/./src/pages/shopContent/components/Spec.vue","webpack://the-butters/./src/pages/shopContent/components/Spec.vue?1787","webpack://the-butters/./src/pages/shopContent/components/Recommend.vue?6357","webpack://the-butters/./src/pages/shopContent/components/Recommend.vue","webpack://the-butters/./src/pages/shopContent/components/Index.vue?2329","webpack://the-butters/./src/pages/shopContent/components/Index.vue","webpack://the-butters/./src/pages/shopContent/js/index.js","webpack://the-butters/webpack/bootstrap","webpack://the-butters/webpack/runtime/compat get default export","webpack://the-butters/webpack/runtime/define property getters","webpack://the-butters/webpack/runtime/global","webpack://the-butters/webpack/runtime/hasOwnProperty shorthand","webpack://the-butters/webpack/runtime/make namespace object","webpack://the-butters/webpack/runtime/runtimeId","webpack://the-butters/webpack/runtime/jsonp chunk loading","webpack://the-butters/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { ref } from 'vue';\r\nimport $ from 'jquery';\r\n\r\nconst alerts = ref([]);\r\n/**\r\n * @description 警示跳窗\r\n * @param {String} msg 回傳訊息\r\n * @param {String} type 樣式 alert、confirm\r\n * @param {Function} callback\r\n * @param {String} dataName 抓取特定跳窗時\r\n */\r\nfunction showAlert(msg, type, callback, dataName) {\r\n // 有時有多個警示視窗\r\n alerts.value.push({ msg, type, callback, dataName });\r\n\r\n const $body = $('body');\r\n $body.css({ overflow: 'hidden' });\r\n}\r\n\r\nfunction closeAlert(index) {\r\n alerts.value.splice(index, 1);\r\n const $body = $('body');\r\n $body.css({ overflow: '', 'padding-right': '' });\r\n}\r\n\r\n// 這是為不改變太多的寫法給前、後端用的\r\nconst allAlertFn = () => {\r\n const o = {};\r\n o.alert = (msg, callback, name) => {\r\n showAlert(msg, 'alert', callback, name);\r\n };\r\n\r\n o.confirm = (msg, callback, name) => {\r\n showAlert(msg, 'confirm', callback, name);\r\n };\r\n\r\n o.special = (msg, callback, name) => {\r\n showAlert(msg, 'special', callback, name);\r\n };\r\n return o;\r\n};\r\nconst alertDialog = allAlertFn();\r\n\r\nfunction useAlert() {\r\n return { alerts, alertDialog, showAlert, closeAlert };\r\n}\r\n\r\nexport default useAlert;\r\n","const generateHeaders = (otherObj) => {\r\n return {\r\n handleDefaultError: otherObj?.handleDefaultError ? otherObj?.handleDefaultError : false,\r\n handle400: otherObj?.handle400 ? otherObj?.handle400 : false,\r\n handle401: otherObj?.handle401 ? otherObj?.handle401 : false,\r\n };\r\n};\r\n\r\nconst commonAPI = {\r\n getFavoriteAPI: (instance, getData) => instance.get(API_URL.FAVORITE, getData),\r\n postFavoriteAPI: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.FAVORITE, postData, { headers });\r\n },\r\n deleteFavoriteAPI: (instance, deleteData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.delete(API_URL.FAVORITE, { ...deleteData, headers });\r\n },\r\n getHotSearchAPI: (instance, getData) => instance.get(API_URL.HOT_SEARCH, getData),\r\n getCartInfoAPI: (instance) => instance.get(API_URL.CART_INFO),\r\n getShareAPI: (instance, id) => instance.get(`${API_URL.SHARE}/${id}`),\r\n postNewsletter: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.NEWSLETTER, postData, { headers });\r\n },\r\n};\r\n\r\nconst articleAPI = {\r\n getArticleListAPI: (instance, getData) => instance.get(API_URL.ARTICLE_LIST, getData),\r\n getArticleContentAPI: (instance, id, getData) =>\r\n instance.get(`${API_URL.ARTICLE_CONTENT}/${id}`, getData),\r\n getArticleCategoryAPI: (instance, id, getData) => instance.get(API_URL.ARTICLE_CATEGORY, getData),\r\n};\r\n\r\nconst addonAPI = {\r\n getAddonCartAPI: (instance, getData) => instance.get(API_URL.ADDON_CART, getData),\r\n getAddonEvent: (instance, getData) => instance.get(API_URL.ADDON_EVENT, getData),\r\n};\r\n\r\nconst brandAPI = {\r\n getBrandFollowAPI: (instance) => instance.get(API_URL.BRAND),\r\n postBrandFollowAPI: (instance, postData) => instance.post(API_URL.BRAND_FOLLOW, postData),\r\n deleteBrandFollowAPI: (instance, deleteData) => instance.delete(API_URL.BRAND_FOLLOW, deleteData),\r\n};\r\n\r\nconst cartAPI = {\r\n postCouponAPI: (instance, postData) => instance.post(API_URL.COUPON, postData),\r\n postCoupon2API: (instance, postData) => instance.post(API_URL.COUPON2, postData),\r\n getOrderAddressAPI: (instance, getData) => instance.get(API_URL.ORDER_ADDRESS, getData),\r\n postShoppingCartAPI: (instance, postData) => instance.post(API_URL.SHOPPING_CART, postData),\r\n getShoppingCartAPI: (instance, getData) => instance.get(API_URL.SHOPPING_CART, getData),\r\n putShoppingCartAPI: (instance, putData) => instance.put(API_URL.SHOPPING_CART, putData),\r\n getAddressBookAPI: (instance, getData) => instance.get(API_URL.ADDRESS_BOOK, getData),\r\n deleteAddressBookAPI: (instance, id) => instance.delete(`${API_URL.ADDRESS_BOOK}/${id}`),\r\n postAddressBookAPI: (instance, postData) => instance.post(API_URL.ADDRESS_BOOK, postData),\r\n getLastInvoiceAPI: (instance, getData) => instance.get(API_URL.LAST_INVOICE_SETTING, getData),\r\n getVerifyMobileCode: (instance, getData) => instance.get(API_URL.VERIFY_MOBILE_CODE, getData),\r\n getCartRecommendDataAPI: (instance, getData) => instance.get(API_URL.RECOMMEND_CART, getData),\r\n};\r\n\r\nconst shopAPI = {\r\n getSearchRecommendAPI: (instance, getData) => instance.get(API_URL.MARKET_NEW, getData),\r\n getSortConditionAPI: (instance) => instance.get(API_URL.SORT_POPUP),\r\n getDataAPI: (instance, getData) => instance.get(API_URL.MARKET_CONTENT, getData),\r\n getSeriesDataAPI: (instance, getData) => instance.get(API_URL.SERIES_MARKET_CONTENT, getData),\r\n getBrandRecommendDataAPI: (instance, getData) => instance.get(API_URL.MARKET_RECOMMEND, getData),\r\n getRecommendDataAPI: (instance, getData) => instance.get(API_URL.MARKET_RECOMMEND, getData),\r\n getMarketRecommendDataAPI: (instance, getData) => instance.get(API_URL.RECOMMEND_SHOP, getData),\r\n postNoticeAPI: (instance, postData) => instance.post(API_URL.IN_STOCK_EMAIL, postData),\r\n};\r\n\r\nconst loginAPI = {\r\n postForgetPS: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.FORGET_PS, postData, { headers });\r\n },\r\n getAccountExist: (instance, getData) => instance.get(API_URL.ACCOUNT_EXIST, getData),\r\n};\r\n\r\nconst orderAPI = {\r\n deleteOrderAPI: (instance, deleteData) => instance.delete(API_URL.ORDER, deleteData),\r\n getRefundDetailAPI: (instance, getData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.get(API_URL.REFUND_DETAIL, { ...getData, headers });\r\n },\r\n getOrderAPI: (instance, getData) => instance.get(API_URL.ORDER, getData),\r\n postRefundCalculateAPI: (instance, postData) => instance.post(API_URL.REFUND_CALCULATE, postData),\r\n getShippingFlowAPI: (instance, getData) => instance.get(API_URL.SHIPPING_FLOW, getData),\r\n getOrderAtmAPI: (instance, getData) => instance.get(API_URL.ORDER_ATM, getData),\r\n postCashInAPI: (instance, postData) => instance.post(API_URL.VC_CASH_IN, postData),\r\n};\r\n\r\nconst memberAPI = {\r\n // urliving 5%驗證\r\n getVerifyPhoneAPI: (instance, getData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.get(API_URL.VERIFY_PHONE, { ...getData, headers });\r\n },\r\n // 取回饋金歷程\r\n getBonusRecordAPI: (instance, getData) => instance.get(API_URL.BONUS_RECORDS, getData),\r\n // 提領回饋金\r\n postBonusWithDrawAPI: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.BONUS_WITHDRAW, postData, { headers });\r\n },\r\n // 上傳身分證\r\n postUserIdAPI: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.USER_IDENTIFICATION, postData, { headers });\r\n },\r\n // 回饋金-綁定銀行帳號\r\n postUserBankAccountAPI: (instance, postData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.post(API_URL.USER_BANK_ACCOUNT, postData, { headers });\r\n },\r\n getDataAnalyzeAPI: (instance, getData) => instance.get(API_URL.DATA_ANALYZE, getData),\r\n};\r\n\r\nconst faPointAPI = {\r\n getVerifyFaPointAPI: (instance, getData, otherObj) => {\r\n const headers = generateHeaders(otherObj);\r\n return instance.get(API_URL.VERIFY_FA_POINTS, { ...getData, headers });\r\n },\r\n getFaPointAPI: (instance) => instance.get(API_URL.FA_POINTS),\r\n postUnbindFaPointAPI: (instance) => instance.post(API_URL.UNBIND_FA_POINTS),\r\n};\r\n\r\nconst apiCalls = {\r\n ...commonAPI,\r\n ...articleAPI,\r\n ...addonAPI,\r\n ...brandAPI,\r\n ...cartAPI,\r\n ...shopAPI,\r\n ...loginAPI,\r\n ...orderAPI,\r\n ...memberAPI,\r\n ...faPointAPI,\r\n};\r\n\r\nconst createApi = (instance) => {\r\n const api = {};\r\n for (const [key, func] of Object.entries(apiCalls)) {\r\n api[key] = (...args) => func(instance, ...args);\r\n }\r\n return api;\r\n};\r\n\r\nexport default createApi;\r\n","import axios from 'axios';\r\nimport useAlert from '@global/composable/useAlert';\r\nimport createApi from './apiCalls'; // 引入 createApi 函數\r\n\r\nconst { alertDialog } = useAlert();\r\n\r\n// 201 無剩餘的購物金,無法進行結清\r\n// 205 商品已售完 / 贈品被移除 (因贈品不能寄海外)\r\n// 400 失敗等其餘錯誤訊息 (格式錯誤、此帳號不存在、此Email已綁定第三方登入帳號...)\r\n// 403 faBind手機驗證超過發送次數\r\n// 401 尚未登入\r\n// 409 超過商品限購數量\r\n\r\nconst successHandle = (res, handleDefaultError, handle400, handle401) => {\r\n switch (res.data.Code) {\r\n case 200:\r\n case 201:\r\n case 205:\r\n break;\r\n case 400:\r\n if (!handle400) {\r\n alertDialog.confirm('系統忙線中,是否跳轉至首頁', () => {\r\n window.location.href = '/';\r\n });\r\n } else {\r\n alertDialog.alert(res.data.Message);\r\n }\r\n break;\r\n case 401:\r\n if (!handle401) {\r\n alertDialog.alert('請先登入');\r\n } else {\r\n alertDialog.alert('我要登入/註冊', () => {\r\n window.location.href = `/login?redirecturl=${handle401}`;\r\n });\r\n }\r\n break;\r\n case 403:\r\n alertDialog.alert(res.data.Message);\r\n break;\r\n case 409:\r\n alertDialog.alert(res.data.Message);\r\n break;\r\n\r\n default:\r\n if (!handleDefaultError) {\r\n alertDialog.confirm('系統忙線中,是否跳轉至首頁', () => {\r\n window.location.href = '/';\r\n });\r\n }\r\n break;\r\n }\r\n};\r\n\r\nconst errorHandle = () => {\r\n alertDialog.confirm('系統忙線中,是否跳轉至首頁', () => {\r\n window.location.href = '/';\r\n });\r\n};\r\n\r\nconst instance = axios.create({\r\n baseURL: '',\r\n});\r\n\r\n// request 攔截\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n },\r\n);\r\n\r\n// response 攔截\r\ninstance.interceptors.response.use(\r\n (res) => {\r\n const { handleDefaultError } = res.config.headers;\r\n const { handle400 } = res.config.headers;\r\n const { handle401 } = res.config.headers;\r\n successHandle(res, handleDefaultError, handle400, handle401);\r\n // 這邊可以對回來的資料先進行驗證處理,再來決定要不要把資料給吐出去\r\n return Promise.resolve(res);\r\n },\r\n (error) => {\r\n errorHandle();\r\n return Promise.reject(error);\r\n },\r\n);\r\n\r\n// 使用 createApi 函數生成 API 調用函數\r\nconst api = createApi(instance);\r\n\r\nfunction useAPIHandler() {\r\n return api;\r\n}\r\n\r\nexport default useAPIHandler;\r\n","import { computed, ref } from 'vue';\r\n\r\nimport { defineStore } from 'pinia';\r\nimport useAxiosAPI from '@global/composable/api/useAxiosAPI';\r\n\r\nconst { getHotSearchAPI, getCartInfoAPI } = useAxiosAPI();\r\n\r\nconst useMiniCartStore = defineStore('miniCart', () => {\r\n const dataIsLoad = ref(false);\r\n const totalCount = ref(0); // 所有溫藏商品總數\r\n const generalCount = ref(0); // 常溫總數量\r\n const refrigerationCount = ref(0); // 冷藏總數量\r\n const freezingCount = ref(0); // 冷凍總數量\r\n const generalSpotGoodsCount = ref(0); // 一般常溫現貨數量\r\n const refrigerationSpotGoodsCount = ref(0); // 冷藏現貨數量\r\n const freezingSpotGoodsCount = ref(0); // 冷凍現貨數量\r\n const generalMarketProducts = ref([]);\r\n const refrigerationMarketProducts = ref([]);\r\n const freezingMarketProducts = ref([]);\r\n const temperaturesData = ref([]);\r\n const count = ref(0); // 所有商品總數(for 一頁式)\r\n const hotSearch = ref([]);\r\n const hotLoad = ref(false);\r\n\r\n const isOnlyOneTemp = computed(() => {\r\n let hasProductTempCount = 0;\r\n if (generalCount.value > 0) {\r\n hasProductTempCount += 1;\r\n }\r\n if (refrigerationCount.value > 0) {\r\n hasProductTempCount += 1;\r\n }\r\n if (freezingCount.value > 0) {\r\n hasProductTempCount += 1;\r\n }\r\n return hasProductTempCount === 1;\r\n });\r\n\r\n function changeCartTotalCount(itemArray) {\r\n totalCount.value = itemArray.data.Response.TotalCount;\r\n count.value = itemArray.data.Response.TotalCount;\r\n temperaturesData.value = itemArray.data.Response.Temperatures;\r\n // 溫層ID (0: 常溫,1: 冷藏,2: 常溫)\r\n itemArray.data.Response.Temperatures.forEach((item) => {\r\n if (item.ID === 0) {\r\n generalCount.value = item.Count;\r\n generalMarketProducts.value = item.Markets;\r\n generalSpotGoodsCount.value = item.InstockCount;\r\n } else if (item.ID === 1) {\r\n refrigerationCount.value = item.Count;\r\n refrigerationMarketProducts.value = item.Markets;\r\n refrigerationSpotGoodsCount.value = item.InstockCount;\r\n } else {\r\n freezingCount.value = item.Count;\r\n freezingMarketProducts.value = item.Markets;\r\n freezingSpotGoodsCount.value = item.InstockCount;\r\n }\r\n });\r\n dataIsLoad.value = true;\r\n }\r\n\r\n function getCartInfo() {\r\n dataIsLoad.value = false;\r\n getCartInfoAPI()\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n changeCartTotalCount(res);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n function getHotSearch() {\r\n hotLoad.value = false;\r\n\r\n getHotSearchAPI({\r\n params: {\r\n period: 'range',\r\n date: 'last3',\r\n limit: 10,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n const hotArray = [];\r\n for (let i = 0; i < res.data.Response.length; i++) {\r\n hotArray.push(res.data.Response[i]);\r\n }\r\n hotSearch.value = hotArray;\r\n hotLoad.value = true;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n return {\r\n dataIsLoad,\r\n totalCount,\r\n generalCount,\r\n refrigerationCount,\r\n freezingCount,\r\n generalMarketProducts,\r\n refrigerationMarketProducts,\r\n freezingMarketProducts,\r\n temperaturesData,\r\n count,\r\n hotSearch,\r\n hotLoad,\r\n\r\n isOnlyOneTemp,\r\n\r\n changeCartTotalCount,\r\n getCartInfo,\r\n getHotSearch,\r\n };\r\n});\r\n\r\nexport default useMiniCartStore;\r\n","import { ref } from 'vue';\r\n\r\nconst messages = ref([]);\r\n\r\n/**\r\n * @description 警示訊息\r\n * @param {String} msg 回傳訊息\r\n * @param {String} cls icon樣式 (只有服飾公版有用到)\r\n * @param {Function} callback\r\n */\r\nfunction showMsg(msg, cls, callback) {\r\n messages.value.push({ msg, cls, callback });\r\n\r\n setTimeout(() => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n messages.value.splice(0, 1);\r\n }, 2000);\r\n}\r\n\r\n// 這是為不改變太多的寫法給前、後端用的\r\nconst allMsgFn = () => {\r\n const o = {};\r\n o.success = (msg, callback) => {\r\n showMsg(msg, 'icon-reminder-ok', callback);\r\n };\r\n\r\n o.cart = (msg, callback) => {\r\n showMsg(msg, 'icon-reminder-cart', callback);\r\n };\r\n return o;\r\n};\r\nconst messageBox = allMsgFn();\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nfunction useMsg() {\r\n return { messages, messageBox, showMsg };\r\n}\r\n\r\nexport default useMsg;\r\n","/**\r\n * @description 自動補零\r\n */\r\nfunction useAutoSupplement(value) {\r\n if (value < 10) {\r\n return `0${value}`;\r\n }\r\n return value.toString();\r\n}\r\n\r\nfunction useTextProcessing() {\r\n return {\r\n useAutoSupplement,\r\n };\r\n}\r\n\r\nexport default useTextProcessing;\r\n","/**\r\n * @description 圖片轉換網址\r\n * @param {string} imgUrl 網址\r\n * @param {string} sizeStr 尺寸\r\n */\r\nfunction imgTransfer(imgUrl, sizeStr) {\r\n if (imgUrl == null || imgUrl.length === 0) return null;\r\n\r\n const imgName = imgUrl.substring(imgUrl.lastIndexOf('/') + 1, imgUrl.length - 4);\r\n const imgExtension = imgUrl.substring(imgUrl.length - 4, imgUrl.length);\r\n const splitArr = imgUrl.split('/');\r\n const folderName = splitArr[4];\r\n const pictureContainer = splitArr[3];\r\n\r\n // gif不近縮圖\r\n if (imgUrl.indexOf('gif') !== -1) {\r\n return `https://${window.StaticImgDomain}/${pictureContainer}/${folderName}s/${imgName}${imgExtension}`;\r\n }\r\n if (imgUrl.indexOf('.mp4') !== -1) {\r\n if (imgUrl.indexOf('pics') === -1 && imgUrl.indexOf('pic') !== -1) {\r\n return imgUrl.replace('pic', 'pics');\r\n }\r\n return imgUrl;\r\n }\r\n return `https://${window.StaticImgDomain}/${pictureContainer}/${folderName}s/${imgName}${sizeStr}${imgExtension}`;\r\n}\r\n\r\nfunction useImage() {\r\n return { imgTransfer };\r\n}\r\n\r\nexport default useImage;\r\n","\r\n\r\n\r\n","import script from \"./NewImage.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./NewImage.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./AlertLayout.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AlertLayout.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./AlertConfirm.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AlertConfirm.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./AlertInfo.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AlertInfo.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./AlertSpecial.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AlertSpecial.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./AlertDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AlertDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./Message.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Message.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","export default class ShopListView {\r\n constructor() {\r\n const hasCategory = window.ItemCategories || [];\r\n\r\n this.category = {\r\n itemCategory: hasCategory[0] || '',\r\n itemCategory2: hasCategory[1] || '',\r\n itemCategory3: hasCategory[2] || '',\r\n itemCategory4: hasCategory[3] || '',\r\n itemCategory5: hasCategory[4] || '',\r\n url: window.location.href,\r\n };\r\n }\r\n\r\n getItemListName() {\r\n let combineCategory = '';\r\n\r\n for (const key in this.category) {\r\n if (key !== 'url' && this.category[key]) {\r\n if (combineCategory === '') {\r\n combineCategory = this.category[key];\r\n } else {\r\n combineCategory = `${combineCategory}--${this.category[key]}`;\r\n }\r\n }\r\n }\r\n\r\n const searchParams = new URLSearchParams(decodeURI(window.location.search));\r\n const page = searchParams.get('Page');\r\n\r\n combineCategory = page\r\n ? `${combineCategory} 產品列表 Page ${page}`\r\n : `${combineCategory} 產品列表`;\r\n\r\n return combineCategory;\r\n }\r\n\r\n getListInfo() {\r\n const allListItem = window.dataLayer.find((obj) => obj.ecommerce && obj.ecommerce.impressions);\r\n\r\n let items = [];\r\n\r\n if (allListItem) {\r\n items = allListItem.ecommerce.impressions.map((item, index) => {\r\n return {\r\n item_id: item.id,\r\n item_name: item.name,\r\n index,\r\n item_list_name: item.list,\r\n item_brand: '',\r\n item_category: this.category.itemCategory,\r\n item_category2: this.category.itemCategory2,\r\n item_category3: this.category.itemCategory3,\r\n item_category4: this.category.itemCategory4,\r\n item_category5: this.category.itemCategory5,\r\n price: parseInt(item.price),\r\n quantity: 1,\r\n affiliation: item.variant,\r\n };\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n getRecommendListInfo(listName) {\r\n const allListItem = window.dataLayer.find((obj) => obj.ecommerce && obj.ecommerce.impressions);\r\n\r\n const items = [];\r\n\r\n if (allListItem) {\r\n allListItem.ecommerce.impressions.forEach((item, index) => {\r\n const impression = {\r\n item_id: item.id,\r\n item_name: item.name,\r\n index,\r\n item_list_name: listName,\r\n item_brand: '',\r\n item_category: this.category.itemCategory,\r\n item_category2: this.category.itemCategory2,\r\n item_category3: this.category.itemCategory3,\r\n item_category4: this.category.itemCategory4,\r\n item_category5: this.category.itemCategory5,\r\n price: parseInt(item.price),\r\n quantity: 1,\r\n affiliation: item.variant,\r\n };\r\n items.push(impression);\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n getSearchRecommendListInfo(listName, recommendData) {\r\n const recommendItems = recommendData.map((data, index) => {\r\n return {\r\n item_id: data.Colors[0].CustomMarketID.split('SZ')[0],\r\n item_name: data.Name,\r\n index,\r\n item_list_name: listName,\r\n item_brand: '',\r\n item_category: this.category.itemCategory,\r\n item_category2: this.category.itemCategory2,\r\n item_category3: this.category.itemCategory3,\r\n item_category4: this.category.itemCategory4,\r\n item_category5: this.category.itemCategory5,\r\n price: parseInt(data.SellPrice),\r\n quantity: 1,\r\n affiliation: data.Colors[0].ColorName,\r\n };\r\n });\r\n\r\n return recommendItems;\r\n }\r\n\r\n static getSearchListInfo(payload, listName) {\r\n const allListItem = window.dataLayer.find((obj) => obj.ecommerce && obj.ecommerce.impressions);\r\n\r\n let items = [];\r\n\r\n if (allListItem) {\r\n items = allListItem.ecommerce.impressions.map((item, index) => {\r\n return {\r\n item_id: item.id,\r\n item_name: item.name,\r\n index,\r\n item_list_name: listName,\r\n item_brand: '',\r\n item_category: payload.isHotSearch ? '關鍵字熱搜' : '關鍵字搜尋',\r\n item_category2: payload.keyword,\r\n price: parseInt(item.price),\r\n quantity: 1,\r\n affiliation: item.variant,\r\n };\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n static getPromotionInfo() {\r\n const promotionFromStorage = JSON.parse(localStorage.getItem('promotion'));\r\n\r\n return promotionFromStorage || null;\r\n }\r\n\r\n static checkIsHotSearch(hotList) {\r\n const params = new URL(window.location.href).searchParams;\r\n const keyword = params.get('keyword') || params.get('Keyword') || '';\r\n\r\n if (hotList.length === 0) return { isHotSearch: false, keyword };\r\n\r\n const isHotSearch = hotList.includes(keyword);\r\n\r\n return { isHotSearch, keyword };\r\n }\r\n}\r\n","export function getRegion() {\r\n const arr = JSON.parse(window.shippingRegion);\r\n const regions = [];\r\n const provinces = [];\r\n\r\n arr.forEach((element) => {\r\n let cName = '';\r\n let eName = '';\r\n\r\n switch (element.ChineseName) {\r\n case '台灣及離島':\r\n cName = '台灣本島及離島';\r\n eName = element.EnglishName;\r\n break;\r\n case '中國':\r\n cName = '中國大陸';\r\n eName = element.EnglishName;\r\n break;\r\n case '香港':\r\n cName = '香港SAR';\r\n eName = `${element.EnglishName} SAR`;\r\n break;\r\n case '澳門':\r\n cName = '澳門SAR';\r\n eName = `${element.EnglishName} SAR`;\r\n break;\r\n default:\r\n cName = element.ChineseName;\r\n eName = element.EnglishName;\r\n break;\r\n }\r\n\r\n regions.push({\r\n name: `${cName} ${eName}`,\r\n value: element.ID,\r\n eName,\r\n });\r\n });\r\n\r\n provinces.push({ name: '請選擇省份', value: '' });\r\n\r\n arr[1].Province.forEach((element) => {\r\n provinces.push({\r\n name: element.SimpleChineseName,\r\n value: element.ID,\r\n });\r\n });\r\n\r\n return { regions, provinces };\r\n}\r\n\r\nexport function getLocalStorageByKey(key, subKey) {\r\n const sfEcDataLayerNow = JSON.parse(localStorage.getItem('sfEcDataLayer'));\r\n\r\n if (sfEcDataLayerNow && sfEcDataLayerNow[key]) {\r\n if (subKey && sfEcDataLayerNow[key][subKey]) {\r\n return sfEcDataLayerNow[key][subKey];\r\n }\r\n return sfEcDataLayerNow[key];\r\n }\r\n return undefined;\r\n}\r\n\r\nexport const paymentOptions = {\r\n 1: '信用卡線上刷卡',\r\n 2: '貨到付款(宅配)',\r\n 3: '貨到付款(超商)',\r\n 4: '銀聯卡',\r\n 5: 'ATM',\r\n 6: '街口支付',\r\n 7: 'LinePay',\r\n 8: '實體門市付款',\r\n 9: 'Fasney',\r\n};\r\n\r\nexport const deliveryOptions = {\r\n 1: '宅配',\r\n 2: '7-11超商取貨',\r\n 3: '全家、萊爾富、OK超商取貨',\r\n 4: '海外配送',\r\n 5: '員購自取',\r\n 6: '門市取貨 (for Cody)',\r\n 7: '全家超商取貨',\r\n};\r\n\r\nexport function fireCartCheckoutGAEvent(parameters) {\r\n const { value, coupon, items } = parameters;\r\n\r\n if (value === undefined || items === undefined) return;\r\n\r\n const beginCheckoutDataLayer = {\r\n event: 'begin_checkout',\r\n currency: 'TWD',\r\n value,\r\n coupon,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(beginCheckoutDataLayer);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireAddPaymentInfoGAEvent(parameters) {\r\n const { coupon, items, payType, value } = parameters;\r\n\r\n if (items === undefined || payType === undefined || value === undefined) {\r\n return;\r\n }\r\n\r\n const addPaymentInfoDataLayer = {\r\n event: 'add_payment_info',\r\n currency: 'TWD',\r\n value,\r\n coupon,\r\n payment_type: payType,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(addPaymentInfoDataLayer);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireAddShippingInfoGAEvent(parameters) {\r\n const { coupon, items, shippingTier, value } = parameters;\r\n\r\n if (items === undefined || shippingTier === undefined || value === undefined) {\r\n return;\r\n }\r\n\r\n const addShippingInfoDataLayer = {\r\n event: 'add_shipping_info',\r\n currency: 'TWD',\r\n value,\r\n coupon,\r\n shippingTier,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(addShippingInfoDataLayer);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function firePurchaseEvent(parameters) {\r\n const { coupon, items, shipping, transactionID, value } = parameters;\r\n\r\n if (items === undefined || transactionID === undefined || value === undefined) return;\r\n\r\n const purchaseDataLayer = {\r\n event: 'purchase',\r\n currency: 'TWD',\r\n transaction_id: transactionID,\r\n value,\r\n coupon,\r\n shipping,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(purchaseDataLayer);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function deleteLocalStorageByKey(key) {\r\n if (localStorage.getItem(key)) {\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n\r\nexport function fireEventAddToWishList(itemInfo) {\r\n const { value, items } = itemInfo;\r\n\r\n if (!value) return;\r\n\r\n const dataLayerObj = {\r\n event: 'add_to_wishlist',\r\n currency: 'TWD',\r\n value,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireLoginGAEvent(loginInfo) {\r\n const { actionType, loginType } = loginInfo;\r\n\r\n const dataLayerObj = {\r\n event: 'login',\r\n method: loginType,\r\n Action_Type: actionType,\r\n Login_Type: loginType,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireRegisterGAEvent(registerInfo) {\r\n const { actionType, registerType } = registerInfo;\r\n\r\n const dataLayerObj = {\r\n event: 'sign_up',\r\n method: registerType,\r\n Action_Type: actionType,\r\n Register_Type: registerType,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireViewItemListGAEvent(parameters) {\r\n const { itemListName, items } = parameters;\r\n\r\n const dataLayerObj = {\r\n event: 'view_item_list',\r\n item_list_name: itemListName,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireAddToCartGAEvent(productInfo) {\r\n const { value, items } = productInfo;\r\n\r\n if (!value || !items) return;\r\n\r\n const dataLayerObj = {\r\n event: 'add_to_cart',\r\n currency: 'TWD',\r\n value,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireSearchGAEvent(parameters) {\r\n const { searchType, searchContent } = parameters;\r\n\r\n if (!searchType || !searchType) return;\r\n\r\n const dataLayerObj = {\r\n event: 'search',\r\n search_term: searchContent, // GA4 文件中\r\n Search_Type: searchType, // 外部廠商自己傳的\r\n Search_Content: searchContent, // 外部廠商自己傳的\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireSelectItemGAEvent(parameters) {\r\n const { itemListName, items } = parameters;\r\n\r\n if (!itemListName || items.length === 0) return;\r\n\r\n const dataLayerObj = {\r\n event: 'select_item',\r\n item_list_name: itemListName,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireRemoveFromCartGAEvent(parameters) {\r\n const { value, items } = parameters;\r\n\r\n if (!value || items.length === 0) return;\r\n\r\n const dataLayerObj = {\r\n event: 'remove_from_cart',\r\n currency: 'TWD',\r\n value,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireEventRecommendedGoods(parameters) {\r\n const dataLayerObj = {\r\n event: 'recommended_goods',\r\n ...parameters,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireRefundGAEvent(parameters) {\r\n const { transactionID, value, shipping, items } = parameters;\r\n\r\n const dataLayerObj = {\r\n event: 'refund',\r\n currency: 'TWD',\r\n transaction_id: transactionID,\r\n value,\r\n shipping,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireMemberFavoriteCartGAEvent(parameters) {\r\n const { productId, productName, addFavoriteItem } = parameters;\r\n\r\n const dataLayerObj = {\r\n event: 'member',\r\n Member_List: '會員收藏清單',\r\n hash_ID: window.Email || undefined,\r\n Product_Id: productId,\r\n Product_Name: productName,\r\n Favorite_Add_To_Cart: addFavoriteItem,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireRecommendViewItemListGAEvent(payload) {\r\n const { itemListName, items } = payload;\r\n\r\n const dataLayerObj = {\r\n event: 'view_item_list',\r\n item_list_name: itemListName,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireEventPromotionBanner(payload) {\r\n const { promotionTargetUrl, promotionItems, promotionCreativeName, promotionCreativeSlot } =\r\n payload;\r\n\r\n const dataLayerObj = {\r\n event: 'Promotion_Banner',\r\n promotionTargrtUrl: promotionTargetUrl,\r\n promotionItems,\r\n promotionCreativeName,\r\n promotionCreativeSlot,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n}\r\n\r\nexport function fireCustomProductViewEvent(payload) {\r\n const { itemCategory, itemCategory2, itemCategory3, itemID, itemName } = payload;\r\n\r\n const eventDataLayer = {\r\n event: 'Product_View',\r\n Head_Button: itemCategory,\r\n Category_Button: itemCategory2,\r\n SubCategory_Button: itemCategory3,\r\n Product_Id: itemID,\r\n Product_Name: itemName,\r\n hash_ID: window.Email,\r\n };\r\n\r\n window.dataLayer.push(eventDataLayer);\r\n}\r\n\r\nexport function fireProductViewGAEvent(payload) {\r\n const { items, value } = payload;\r\n\r\n if (!value) return;\r\n\r\n const dataLayerObj = {\r\n event: 'view_item',\r\n currency: 'TWD',\r\n value,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n\r\nexport function fireListCategoryPushEvent(payload) {\r\n window.dataLayer.push({\r\n category: payload,\r\n });\r\n}\r\n\r\nexport function fireSearchCategoryPushEvent(payload) {\r\n window.dataLayer.push({\r\n category: payload,\r\n });\r\n}\r\n\r\nexport function fireViewCartEvent(parameters) {\r\n const { value, items } = parameters;\r\n\r\n if (value === undefined || items === undefined) return;\r\n\r\n const dataLayerObj = {\r\n event: 'view_cart',\r\n currency: 'TWD',\r\n value,\r\n items,\r\n };\r\n\r\n window.dataLayer.push(dataLayerObj);\r\n window.dataLayer.push({ items: null });\r\n}\r\n","import ShopListView from '@global/gtm/class/shopListClass';\r\nimport {\r\n fireViewItemListGAEvent,\r\n fireEventPromotionBanner,\r\n fireListCategoryPushEvent,\r\n} from '@global/gtm/base';\r\n\r\nexport default function fireShopListViewEvent() {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const shopListView = new ShopListView();\r\n\r\n fireListCategoryPushEvent(shopListView.category);\r\n\r\n fireViewItemListGAEvent({\r\n itemListName: shopListView.getItemListName(),\r\n items: shopListView.getListInfo(),\r\n });\r\n}\r\n\r\nexport function firePromotionEvent() {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const shopListView = new ShopListView();\r\n\r\n const listItems = shopListView.getListInfo();\r\n const promotion = ShopListView.getPromotionInfo();\r\n\r\n if (promotion) {\r\n fireEventPromotionBanner({\r\n promotionTargetUrl: `促銷活動--${window.PictureContainer}`,\r\n promotionItems: listItems,\r\n promotionCreativeName: promotion.imgLink,\r\n promotionCreativeSlot: promotion.clickName,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * URLiving 搜尋結果頁所使用的 GA 事件\r\n *\r\n * @param {Array} hotSearchList - 關鍵字列表\r\n */\r\nexport function fireShopListSearchEvent(hotSearchList) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const shopListView = new ShopListView();\r\n const isHotSearch = ShopListView.checkIsHotSearch(hotSearchList);\r\n\r\n let itemListName = '';\r\n\r\n if (window.TotalCount === 0) {\r\n itemListName = isHotSearch.isHotSearch\r\n ? `關鍵字熱字--${isHotSearch.keyword}推薦產品列表`\r\n : `關鍵字搜尋--${isHotSearch.keyword}推薦產品列表`;\r\n\r\n fireViewItemListGAEvent({\r\n itemListName,\r\n items: shopListView.getRecommendListInfo(itemListName),\r\n });\r\n } else {\r\n itemListName = isHotSearch.isHotSearch\r\n ? `關鍵字熱字--${isHotSearch.keyword}產品列表`\r\n : `關鍵字搜尋--${isHotSearch.keyword}產品列表`;\r\n\r\n fireViewItemListGAEvent({\r\n itemListName,\r\n items: ShopListView.getSearchListInfo(isHotSearch, itemListName),\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * 其他客製品牌搜尋結果頁所使用的 GA 事件 for 商品列表\r\n *\r\n * @param {Array} hotSearchList - 關鍵字列表\r\n */\r\nexport function fireSearchListEvent(hotSearchList) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const isHotSearch = ShopListView.checkIsHotSearch(hotSearchList);\r\n\r\n if (window.TotalCount !== 0) {\r\n const itemListName = isHotSearch.isHotSearch\r\n ? `關鍵字熱字--${isHotSearch.keyword}產品列表`\r\n : `關鍵字搜尋--${isHotSearch.keyword}產品列表`;\r\n\r\n fireViewItemListGAEvent({\r\n itemListName,\r\n items: ShopListView.getSearchListInfo(isHotSearch, itemListName),\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * 其他客製品牌搜尋結果頁所使用的 GA 事件 for 推薦列表\r\n *\r\n * @param {Array} hotSearchList - 關鍵字列表\r\n */\r\nexport function fireSearchResultRecommendEvent(hotSearchList, recommendData) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const shopListView = new ShopListView();\r\n const isHotSearch = ShopListView.checkIsHotSearch(hotSearchList);\r\n\r\n const itemListName = isHotSearch.isHotSearch\r\n ? `關鍵字熱字--${isHotSearch.keyword}推薦產品列表`\r\n : `關鍵字搜尋--${isHotSearch.keyword}推薦產品列表`;\r\n\r\n fireViewItemListGAEvent({\r\n itemListName,\r\n items: shopListView.getSearchRecommendListInfo(itemListName, recommendData),\r\n });\r\n}\r\n","import { fireSearchGAEvent, fireSearchCategoryPushEvent } from '@global/gtm/base';\r\n\r\nclass SearchGTMEvent {\r\n static getKeyword(isHotSearch, keyword) {\r\n const category = {\r\n itemCategory: isHotSearch ? '關鍵字熱搜' : '關鍵字搜尋',\r\n itemCategory2: keyword,\r\n url: window.location.pathname,\r\n };\r\n\r\n return category;\r\n }\r\n}\r\n\r\nexport default function fireSearchEvent(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n window.ItemCategories = payload.isHotSearch\r\n ? ['搜尋結果頁', '熱字', payload.keyword]\r\n : ['搜尋結果頁', '關鍵字', payload.keyword];\r\n\r\n const category = SearchGTMEvent.getKeyword(payload.isHotSearch, payload.keyword);\r\n\r\n fireSearchCategoryPushEvent(category);\r\n\r\n if (payload.isHotSearch) {\r\n fireSearchGAEvent({\r\n searchType: '關鍵字熱字',\r\n searchContent: payload.keyword,\r\n });\r\n } else {\r\n fireSearchGAEvent({\r\n searchType: '關鍵字搜尋',\r\n searchContent: payload.keyword,\r\n });\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport { createApp, ref, onMounted, watch, nextTick } from 'vue';\r\n\r\nimport { createPinia, storeToRefs } from 'pinia';\r\nimport useMiniCartStore from '@global/stores/useMiniCartStore';\r\n\r\nimport useAlert from '@global/composable/useAlert';\r\nimport useMsg from '@global/composable/useMessage';\r\nimport useTextProcessing from '@global/composable/useTextProcessing';\r\n\r\nimport NewImage from '@global/components/common/Image/NewImage.vue';\r\nimport AlertDialog from '@global/components/common/alert/AlertDialog.vue';\r\nimport Message from '@global/components/common/message/Message.vue';\r\n\r\nimport modal from 'bootstrap/js/dist/modal';\r\nimport nanoScroller from '@global/vendors/jquery.nanoscroller.min';\r\nimport validate from '@global/vendors/jquery.validate.min';\r\nimport Collapse from 'bootstrap/js/dist/collapse';\r\n\r\nimport { fireSearchListEvent } from '@global/gtm/shopList/shopListView';\r\nimport fireSearchEvent from '@global/gtm/search';\r\nimport layout from '@/style/layout.scss';\r\n\r\nconst pinia = createPinia();\r\nconst { alertDialog } = useAlert();\r\nconst { messageBox } = useMsg();\r\nconst { useAutoSupplement } = useTextProcessing();\r\n\r\nwindow.nowBrand = {};\r\n\r\nglobal.$ = require('jquery');\r\n\r\nglobal.jQuery = global.$;\r\n\r\n/**\r\n * popup、alert跳窗\r\n */\r\n// eslint-disable-next-line vue/one-component-per-file\r\nconst appAlert = createApp({\r\n components: {\r\n AlertDialog,\r\n Message,\r\n },\r\n});\r\n\r\nappAlert.mount('#app-common');\r\n\r\n/**\r\n * Header選單\r\n */\r\n\r\n// eslint-disable-next-line vue/one-component-per-file\r\nconst appHeader = createApp({\r\n components: {\r\n NewImage,\r\n },\r\n setup() {\r\n const miniCartStore = useMiniCartStore();\r\n const {\r\n totalCount,\r\n generalCount,\r\n refrigerationCount,\r\n freezingCount,\r\n dataIsLoad,\r\n generalMarketProducts,\r\n hotSearch,\r\n hotLoad,\r\n isOnlyOneTemp,\r\n } = storeToRefs(miniCartStore);\r\n\r\n const { getCartInfo, getHotSearch } = miniCartStore;\r\n getCartInfo();\r\n getHotSearch();\r\n\r\n function lockBody(open) {\r\n if (open) {\r\n $('body').addClass('lock-page');\r\n } else {\r\n $('body').removeClass('lock-page');\r\n }\r\n }\r\n\r\n // miniCart 購物車\r\n const isCartVisible = ref(false);\r\n const cartMaskRef = ref(null);\r\n const cartMaskStyle = ref(null);\r\n function openCartPanel() {\r\n isCartVisible.value = true;\r\n cartMaskStyle.value = {\r\n right: '290px',\r\n zIndex: '1030',\r\n };\r\n lockBody(isCartVisible.value);\r\n }\r\n function closeCartPanel() {\r\n isCartVisible.value = false;\r\n lockBody(isCartVisible.value);\r\n }\r\n\r\n // hamburger 漢堡選單\r\n const isSidebarVisible = ref(false);\r\n const burgerMaskRef = ref(null);\r\n const burgerMaskStyle = ref(null);\r\n function openSidebar() {\r\n isSidebarVisible.value = true;\r\n\r\n burgerMaskStyle.value = {\r\n zIndex: '1030',\r\n };\r\n lockBody(isSidebarVisible.value);\r\n }\r\n function closeSidebar() {\r\n isSidebarVisible.value = false;\r\n lockBody(isSidebarVisible.value);\r\n }\r\n\r\n // search 搜尋展開\r\n const isSearchVisible = ref(false);\r\n const searchInputPcRef = ref(null);\r\n const searchInputMbRef = ref(null);\r\n const searchText = ref('');\r\n function openSearch() {\r\n isSearchVisible.value = true;\r\n nextTick(() => {\r\n if (searchInputPcRef.value) {\r\n searchInputPcRef.value.focus();\r\n }\r\n if (searchInputMbRef.value) {\r\n searchInputMbRef.value.focus();\r\n }\r\n });\r\n }\r\n function closeSearch() {\r\n isSearchVisible.value = false;\r\n }\r\n function goSearchText() {\r\n if (searchText.value.trim() === '') {\r\n alertDialog.alert('請輸入關鍵字');\r\n } else {\r\n window.location.href = `/search?Keyword=${searchText.value}`;\r\n fireSearchEvent({\r\n isHotSearch: false,\r\n keyword: searchText.value,\r\n });\r\n }\r\n }\r\n\r\n function goSearch(item) {\r\n window.location.href = `/search?Keyword=${item}`;\r\n fireSearchEvent({\r\n isHotSearch: true,\r\n keyword: item,\r\n });\r\n }\r\n\r\n // 手機板確認\r\n const isMobile = ref(false);\r\n function windowSize() {\r\n if ($(window).width() < 992) {\r\n isMobile.value = true;\r\n } else {\r\n isMobile.value = false;\r\n }\r\n }\r\n\r\n // GTM\r\n watch(hotLoad, (nV, oV) => {\r\n if (nV && window.location.pathname.includes('search')) {\r\n fireSearchListEvent(hotSearch.value);\r\n }\r\n });\r\n\r\n onMounted(() => {\r\n // 手機板確認\r\n windowSize();\r\n $(window).resize(() => {\r\n windowSize();\r\n });\r\n });\r\n\r\n return {\r\n isMobile,\r\n totalCount,\r\n generalCount,\r\n refrigerationCount,\r\n freezingCount,\r\n dataIsLoad,\r\n generalMarketProducts,\r\n hotSearch,\r\n hotLoad,\r\n isOnlyOneTemp,\r\n useAutoSupplement,\r\n searchInputPcRef,\r\n searchInputMbRef,\r\n searchText,\r\n openSearch,\r\n closeSearch,\r\n goSearchText,\r\n goSearch,\r\n isCartVisible,\r\n openCartPanel,\r\n closeCartPanel,\r\n cartMaskRef,\r\n cartMaskStyle,\r\n isSidebarVisible,\r\n openSidebar,\r\n closeSidebar,\r\n burgerMaskRef,\r\n burgerMaskStyle,\r\n isSearchVisible,\r\n };\r\n },\r\n});\r\n\r\nappHeader.use(pinia).mount('#app-mini-cart');\r\n\r\n// fix when mutiple inputs with same name always validate the first item.\r\n// eslint-disable-next-line func-names\r\n$.validator.prototype.checkForm = function () {\r\n // overriden in a specific page\r\n this.prepareForm();\r\n // eslint-disable-next-line no-multi-assign\r\n for (let i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {\r\n if (\r\n this.findByName(elements[i].name).length !== undefined &&\r\n this.findByName(elements[i].name).length > 1\r\n ) {\r\n for (let cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {\r\n this.check(this.findByName(elements[i].name)[cnt]);\r\n }\r\n } else {\r\n this.check(elements[i]);\r\n }\r\n }\r\n return this.valid();\r\n};\r\n\r\n// 全域方法前後端使用\r\nwindow.messageBox = messageBox;\r\nwindow.AlertDialog = alertDialog;\r\n","const gtmTrace = {\r\n addToCart(data) {\r\n window.dataLayer.push({\r\n event: 'addToCart',\r\n ecommerce: {\r\n currencyCode: 'TWD',\r\n add: {\r\n products: [\r\n {\r\n name: typeof htmlDecode !== 'undefined' ? window.htmlDecode(data.name) : data.name,\r\n id: data.id,\r\n price: data.price,\r\n sale_price: data.sale_price,\r\n img_url: data.img_url,\r\n product_url: data.product_url,\r\n variant: data.color,\r\n quantity: data.count,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n },\r\n removeFromCart(data) {\r\n window.dataLayer.push({\r\n event: 'removeFromCart',\r\n ecommerce: {\r\n remove: {\r\n products: [\r\n {\r\n name: typeof htmlDecode !== 'undefined' ? window.htmlDecode(data.name) : data.name,\r\n id: data.id,\r\n price: data.price,\r\n sale_price: data.sale_price,\r\n img_url: data.img_url,\r\n product_url: data.product_url,\r\n variant: data.color,\r\n quantity: data.count,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n },\r\n checkout(data) {\r\n window.dataLayer.push({\r\n event: 'checkout',\r\n ecommerce: {\r\n checkout: {\r\n products: [\r\n {\r\n name: typeof htmlDecode !== 'undefined' ? window.htmlDecode(data.name) : data.name,\r\n id: data.id,\r\n price: data.price,\r\n sale_price: data.sale_price,\r\n img_url: data.img_url,\r\n product_url: data.product_url,\r\n variant: data.color,\r\n quantity: data.count,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n },\r\n};\r\n\r\nexport default gtmTrace;\r\n","export default class ProductGTM {\r\n constructor(productInfo) {\r\n this.productInfo = productInfo;\r\n }\r\n\r\n getProductInfo() {\r\n const { affiliation, item_brand, customMarketID, eventName, name, price } = this.productInfo;\r\n const newStringID = String(customMarketID).replace('SZ_', '');\r\n const hasCategory = window.ItemCategories || [];\r\n\r\n const item = {\r\n affiliation,\r\n coupon: '',\r\n index: 0,\r\n item_brand: item_brand || '',\r\n item_category: hasCategory[0] || '',\r\n item_category2: hasCategory[1] || '',\r\n item_category3: hasCategory[2] || '',\r\n item_category4: hasCategory[3] || '',\r\n item_category5: hasCategory[4] || '',\r\n item_id: newStringID,\r\n item_name: name,\r\n item_variant: '',\r\n price,\r\n quantity: 1,\r\n promotion_name: eventName,\r\n };\r\n\r\n return item;\r\n }\r\n\r\n getProductPrice() {\r\n const { price } = this.productInfo;\r\n\r\n return price;\r\n }\r\n\r\n /**\r\n * 將推薦資料整理成 GA 要的格式\r\n * @param {object} payload - The payload containing the recommended data and item list name.\r\n * @param {array} payload.recommendedData - 推薦商品資料\r\n * @param {string} payload.itemListName - 推薦商品列表名稱\r\n * @returns {array} - GA 要的資料格式\r\n */\r\n static mapRecommendData(payload) {\r\n const { recommendedData, itemListName } = payload;\r\n\r\n const allRecommendArray = recommendedData.map((item, index) => {\r\n return {\r\n index,\r\n item_id: item.Colors[0].CustomMarketID.split('SZ')[0],\r\n item_name: item.Name,\r\n item_list_name: itemListName,\r\n price: item.SellPrice,\r\n };\r\n });\r\n\r\n return allRecommendArray;\r\n }\r\n\r\n /**\r\n * 將推薦資料整理成 GA 要的格式 (賣場相同分類)\r\n * @param {object} payload - The payload containing the recommended data and item list name.\r\n * @param {array} payload.recommendedData - 推薦商品資料\r\n * @param {string} payload.itemListName - 推薦商品列表名稱\r\n * @returns {array} - GA 要的資料格式\r\n */\r\n static mapRecommendDataByCategory(payload) {\r\n const { recommendedData, itemListName } = payload;\r\n\r\n const allRecommendArray = recommendedData.map((item, index) => {\r\n return {\r\n index,\r\n item_id: item.customMarketID.split('SZ')[0],\r\n item_name: item.name,\r\n item_list_name: itemListName,\r\n price: item.sellPrice,\r\n };\r\n });\r\n\r\n return allRecommendArray;\r\n }\r\n\r\n static mapRecommendViewData(recommendPayload) {\r\n const { itemListName, recommendData } = recommendPayload;\r\n const recommendArray = [];\r\n\r\n recommendData.forEach((recommendItem, index) => {\r\n const recommendObj = {\r\n index,\r\n item_id: recommendItem.Colors[0].CustomMarketID.split('SZ')[0],\r\n item_name: recommendItem.Name,\r\n item_list_name: itemListName,\r\n price: recommendItem.SellPrice,\r\n quantity: 1,\r\n affiliation: recommendItem.Colors[0].ColorName,\r\n item_brand: '',\r\n item_variant: '',\r\n };\r\n\r\n recommendArray.push(recommendObj);\r\n });\r\n\r\n return recommendArray;\r\n }\r\n\r\n /**\r\n * 使用分類去做推薦的推薦商品\r\n */\r\n static mapRecommendViewDataByCategory(recommendPayload) {\r\n const { itemListName, recommendData } = recommendPayload;\r\n\r\n const recommendArray = recommendData.map((item, index) => {\r\n return {\r\n index,\r\n item_id: item.customMarketID.split('SZ')[0],\r\n item_name: item.name,\r\n item_list_name: itemListName,\r\n price: item.sellPrice,\r\n quantity: 1,\r\n affiliation: item.color,\r\n item_brand: '',\r\n item_variant: '',\r\n };\r\n });\r\n\r\n return recommendArray;\r\n }\r\n\r\n /**\r\n * 使用條碼去做推薦的推薦商品\r\n */\r\n static mapRecommendViewDataByBarcode(recommendPayload) {\r\n const { itemListName, recommendData } = recommendPayload;\r\n const hasCategory = window.ItemCategories || [];\r\n\r\n const recommendArray = recommendData.map((item, index) => {\r\n return {\r\n index,\r\n item_id: item.CustomMarketID.split('SZ')[0],\r\n item_name: item.Name,\r\n item_list_name: itemListName,\r\n price: item.SellPrice,\r\n quantity: 1,\r\n affiliation: item.ColorName,\r\n item_brand: '',\r\n item_variant: '',\r\n item_category: hasCategory[0] || '',\r\n item_category2: hasCategory[1] || '',\r\n item_category3: hasCategory[2] || '',\r\n item_category4: hasCategory[3] || '',\r\n item_category5: hasCategory[4] || '',\r\n };\r\n });\r\n\r\n return recommendArray;\r\n }\r\n\r\n /**\r\n * 將推薦資料整理成 GA 要的格式 (條碼分類)\r\n * @param {object} payload - The payload containing the recommended data and item list name.\r\n * @param {array} payload.recommendedData - 推薦商品資料\r\n * @param {string} payload.itemListName - 推薦商品列表名稱\r\n * @returns {array} - GA 要的資料格式\r\n */\r\n static mapRecommendDataByBarcode(payload) {\r\n const { recommendedData, itemListName } = payload;\r\n\r\n const allRecommendArray = recommendedData.map((item, index) => {\r\n return {\r\n index,\r\n item_id: item.CustomMarketID.split('SZ')[0],\r\n item_name: item.Name,\r\n item_list_name: itemListName,\r\n price: item.SellPrice,\r\n };\r\n });\r\n\r\n return allRecommendArray;\r\n }\r\n}\r\n","import {\r\n fireEventRecommendedGoods,\r\n fireRecommendViewItemListGAEvent,\r\n fireProductViewGAEvent,\r\n fireCustomProductViewEvent,\r\n} from '@global/gtm/base';\r\nimport ProductGTM from '@global/gtm/class/productClass';\r\n\r\n/**\r\n * 商品資訊物件\r\n * @typedef {Object} productInfo\r\n * @property {string} customMarketID - 商品客製化賣場 ID\r\n * @property {string} name - 商品名稱\r\n * @property {number} price - 商品價格\r\n * @property {string} affiliation - 商品顏色\r\n * @property {string} eventName - 活動名稱.\r\n */\r\n\r\nexport function fireShopContentView(productInfo) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const productGTM = new ProductGTM(productInfo);\r\n const productItemInfo = productGTM.getProductInfo();\r\n const price = productGTM.getProductPrice();\r\n\r\n fireCustomProductViewEvent({\r\n itemCategory: productItemInfo.item_category,\r\n itemCategory2: productItemInfo.item_category2,\r\n itemCategory3: productItemInfo.item_category3,\r\n itemID: productItemInfo.item_id,\r\n itemName: productItemInfo.item_name,\r\n });\r\n\r\n fireProductViewGAEvent({\r\n items: [productItemInfo],\r\n value: price,\r\n });\r\n}\r\n\r\n/**\r\n * Fires a Google Analytics event when a recommendation is clicked.\r\n *\r\n * @param {Object} payload - The payload containing information about the recommendation.\r\n * @param {array} payload.recommendedData - 推薦商品資料\r\n * @param {string} payload.recommendedMove - 點擊推薦商品的方向\r\n * @param {string} payload.recommendedType - 推薦商品的位置\r\n * @param {string} payload.productId - 主商品的客製化賣場 ID\r\n * @param {string} payload.productName - 主商品的名稱\r\n * @param {string} payload.itemListName - 推薦商品 list 名稱\r\n */\r\nexport function fireRecommendClickGAEvent(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const transferData = ProductGTM.mapRecommendData(payload);\r\n\r\n fireEventRecommendedGoods({\r\n recommendedType: payload.recommendedType,\r\n recommendedMove: payload.recommendedMove,\r\n recommendedPage: window.location.pathname,\r\n recommendedProduct: transferData,\r\n productId: payload.productId.replace('SZ_', '') || '',\r\n productName: payload.productName,\r\n });\r\n}\r\n\r\n/**\r\n * Fires a Google Analytics event when a recommendation is clicked.\r\n *\r\n * @param {Object} payload - The payload containing information about the recommendation.\r\n * @param {array} payload.recommendedData - 推薦商品資料\r\n * @param {string} payload.recommendedMove - 點擊推薦商品的方向\r\n * @param {string} payload.recommendedType - 推薦商品的位置\r\n * @param {string} payload.productId - 主商品的客製化賣場 ID\r\n * @param {string} payload.productName - 主商品的名稱\r\n * @param {string} payload.itemListName - 推薦商品 list 名稱\r\n */\r\nexport function fireRecommendByCategoryClickEvent(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const transferData = ProductGTM.mapRecommendDataByCategory(payload);\r\n\r\n fireEventRecommendedGoods({\r\n recommendedType: payload.recommendedType,\r\n recommendedMove: payload.recommendedMove,\r\n recommendedPage: window.location.pathname,\r\n recommendedProduct: transferData,\r\n productId: payload.productId.split('SZ')[0],\r\n productName: payload.productName,\r\n });\r\n}\r\n\r\nexport function fireRecommendViewGAEvent(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const recommendArray = ProductGTM.mapRecommendViewData(payload);\r\n\r\n fireRecommendViewItemListGAEvent({\r\n itemListName: payload.itemListName,\r\n items: recommendArray,\r\n });\r\n}\r\n\r\nexport function fireRecommendViewGAEventByCategory(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const recommendArray = ProductGTM.mapRecommendViewDataByCategory(payload);\r\n\r\n fireRecommendViewItemListGAEvent({\r\n itemListName: payload.itemListName,\r\n items: recommendArray,\r\n });\r\n}\r\n\r\nexport function fireRecommendViewGAEventByBarcode(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const recommendArray = ProductGTM.mapRecommendViewDataByBarcode(payload);\r\n\r\n fireRecommendViewItemListGAEvent({\r\n itemListName: payload.itemListName,\r\n items: recommendArray,\r\n });\r\n}\r\n\r\nexport function fireRecommendClickEventByBarcode(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const transferData = ProductGTM.mapRecommendDataByBarcode(payload);\r\n\r\n fireEventRecommendedGoods({\r\n recommendedType: payload.recommendedType,\r\n recommendedMove: payload.recommendedMove,\r\n recommendedPage: window.location.pathname,\r\n recommendedProduct: transferData,\r\n productId: payload.productId.replace('SZ_', ''),\r\n productName: payload.productName,\r\n });\r\n}\r\n","import {\r\n fireAddToCartGAEvent,\r\n fireMemberFavoriteCartGAEvent,\r\n fireViewCartEvent,\r\n} from '@global/gtm/base';\r\n\r\n/**\r\n * 商品資訊物件\r\n * @typedef {Object} productInfo\r\n * @property {string} item_id - 商品編號\r\n * @property {string} item_name - 商品名稱\r\n * @property {number} index - 商品索引值\r\n * @property {string} affiliation - 商品顏色\r\n * @property {string} [item_brand] - 商品尺寸\r\n * @property {string} item_list_name - 加入商品的頁面\r\n * @property {number} price - 商品價格\r\n * @property {number} quantity - 商品數量\r\n * @property {string} item_variant - 商品貨號\r\n */\r\n\r\nexport function fireAddToCart(productInfo) {\r\n const itemCategory = window.ItemCategories || undefined;\r\n\r\n productInfo.item_category = itemCategory && itemCategory[0] ? itemCategory[0] : '';\r\n productInfo.item_category2 = itemCategory && itemCategory[1] ? itemCategory[1] : '';\r\n productInfo.item_category3 = itemCategory && itemCategory[2] ? itemCategory[2] : '';\r\n productInfo.item_category4 = itemCategory && itemCategory[3] ? itemCategory[3] : '';\r\n\r\n fireAddToCartGAEvent({\r\n value: productInfo.price,\r\n items: [productInfo],\r\n });\r\n\r\n // 為了購物車第一步需要商品類別資料\r\n const ECDataLayer = JSON.parse(localStorage.getItem('ECDataLayer'));\r\n\r\n if (ECDataLayer) {\r\n const alreadyExist = ECDataLayer.find((item) => {\r\n return item.customMarketID === productInfo.item_id;\r\n });\r\n\r\n if (!alreadyExist) {\r\n ECDataLayer.push({\r\n customMarketID: productInfo.item_id || '',\r\n itemCategory: window.ItemCategories || [],\r\n });\r\n\r\n localStorage.setItem('ECDataLayer', JSON.stringify(ECDataLayer));\r\n }\r\n } else {\r\n localStorage.setItem(\r\n 'ECDataLayer',\r\n JSON.stringify([\r\n {\r\n customMarketID: productInfo.item_id || '',\r\n itemCategory: window.ItemCategories || [],\r\n },\r\n ]),\r\n );\r\n }\r\n}\r\n\r\nexport function fireMemberFavoriteAddToCart(productInfo) {\r\n const itemCategory = window.ItemCategories || undefined;\r\n const { productId, productName, addFavoriteItem } = productInfo;\r\n\r\n if (itemCategory) {\r\n addFavoriteItem.item_category = window.ItemCategories[0] || '';\r\n addFavoriteItem.item_category2 = window.ItemCategories[1] || '';\r\n addFavoriteItem.item_category3 = window.ItemCategories[2] || '';\r\n addFavoriteItem.item_category4 = window.ItemCategories[3] || '';\r\n }\r\n\r\n fireMemberFavoriteCartGAEvent({\r\n productId,\r\n productName,\r\n addFavoriteItem,\r\n });\r\n}\r\n\r\nexport function fireViewMiniCart(minCartInfo) {\r\n const { generalMarketProducts, refrigerationMarketProducts, freezingMarketProducts } =\r\n minCartInfo;\r\n\r\n const combineArray = [\r\n ...generalMarketProducts,\r\n ...refrigerationMarketProducts,\r\n ...freezingMarketProducts,\r\n ];\r\n const userItems = [];\r\n let price = 0;\r\n\r\n combineArray.forEach((product, index) => {\r\n price += product.SellPrice;\r\n\r\n const item = {\r\n index,\r\n item_id: product.CustomMarketID,\r\n item_name: product.Name,\r\n item_category: undefined,\r\n item_category2: undefined,\r\n affiliation: product.ColorName,\r\n item_brand: product.Size,\r\n quantity: product.Count,\r\n price: product.SellPrice,\r\n item_variant: product.BarCode,\r\n item_list_name: '購物車',\r\n };\r\n\r\n userItems.push(item);\r\n });\r\n\r\n fireViewCartEvent({\r\n value: price,\r\n items: userItems,\r\n });\r\n}\r\n","import { fireEventAddToWishList } from '@global/gtm/base';\r\n\r\nclass WishListGTM {\r\n static getClickItemInfo(itemInfo) {\r\n const { id, name, sellPrice, color, size } = itemInfo;\r\n const hasCategory = window.ItemCategories || undefined;\r\n const newStringID = String(id).replace('SZ_', '');\r\n\r\n const item = {\r\n affiliation: color,\r\n index: 0,\r\n item_brand: size,\r\n item_category: hasCategory && hasCategory[0] ? hasCategory[0] : '',\r\n item_category2: hasCategory && hasCategory[1] ? hasCategory[1] : '',\r\n item_category3: hasCategory && hasCategory[2] ? hasCategory[2] : '',\r\n item_category4: hasCategory && hasCategory[3] ? hasCategory[3] : '',\r\n item_category5: hasCategory && hasCategory[4] ? hasCategory[4] : '',\r\n item_id: newStringID,\r\n item_name: name,\r\n item_variant: '',\r\n price: sellPrice,\r\n quantity: 1,\r\n };\r\n\r\n return item;\r\n }\r\n}\r\n\r\n/**\r\n * @param {string} payload.href 商品連結\r\n * @param {string} payload.name 商品名稱\r\n * @param {number} payload.sellPrice 商品價格\r\n * @param {number} payload.color 商品顏色\r\n * @param {number} payload.size 商品尺寸\r\n */\r\nexport default function fireWishlistEvent(payload) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const ga4Parameters = WishListGTM.getClickItemInfo(payload);\r\n\r\n fireEventAddToWishList({\r\n value: ga4Parameters.price,\r\n items: [ga4Parameters],\r\n });\r\n}\r\n","import Cookies from 'js-cookie';\r\n\r\nfunction utmKDetect(itemSpecInfo) {\r\n let KOLValue = '';\r\n let utmData = '';\r\n\r\n if (Cookies.get('Cookie_KOLSales')) {\r\n KOLValue = JSON.parse(Cookies.get('Cookie_KOLSales'));\r\n }\r\n\r\n if (KOLValue && KOLValue.CMIDs.includes(itemSpecInfo)) {\r\n utmData = KOLValue.Name;\r\n }\r\n\r\n return utmData || null;\r\n}\r\n\r\nfunction shareCode() {\r\n let USCValue = '';\r\n\r\n if (Cookies.get('U_SC')) {\r\n USCValue = Cookies.get('U_SC');\r\n }\r\n\r\n return USCValue || null;\r\n}\r\n\r\nfunction useUtmKDetect() {\r\n return { utmKDetect, shareCode };\r\n}\r\n\r\nexport default useUtmKDetect;\r\n","import { computed, ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\n\r\nconst useModalStore = defineStore('modal', () => {\r\n const isShow = {\r\n coupon: ref(false),\r\n cancelOrder: ref(false),\r\n orderLoading: ref(false),\r\n atmInfo: ref(false),\r\n refundList: ref(false),\r\n refundDetail: ref(false),\r\n shippingProgress: ref(false),\r\n arrivalNotice: ref(false),\r\n sizeModal: ref(false),\r\n popupAddonDetail: ref(false),\r\n wallet: ref(false),\r\n faCheck: ref(false),\r\n faCancel: ref(false),\r\n foodMarket: ref(false),\r\n cartMarket: ref(false),\r\n address: ref(false),\r\n share: ref(false),\r\n sort: ref(false),\r\n couponPopup: ref(false),\r\n };\r\n\r\n const wmstransactionId = ref(0);\r\n\r\n const specificId = ref('');\r\n\r\n function closeModal(component) {\r\n isShow[component].value = false;\r\n setTimeout(() => {\r\n document.body.classList.remove('modal-open');\r\n }, 500);\r\n }\r\n\r\n function openModal(component, id = '') {\r\n isShow[component].value = true;\r\n specificId.value = id; // 為避免重複出現彈窗而設置的變數\r\n document.body.classList.add('modal-open');\r\n }\r\n\r\n /* 透過type判斷彈窗為 查看物流 or 退貨資訊,\r\n 兩者差別在於是否需要帶上參數: wmstransaction-id */\r\n function changeShippingType(wId) {\r\n wmstransactionId.value = wId;\r\n openModal('shippingProgress');\r\n }\r\n\r\n return {\r\n isShow,\r\n wmstransactionId,\r\n specificId,\r\n closeModal,\r\n openModal,\r\n changeShippingType,\r\n };\r\n});\r\n\r\nexport default useModalStore;\r\n","export const btnDescriptionEnum = {\r\n general: '請選擇尺寸',\r\n addBag: '加入購物車',\r\n soldOut: '已售完',\r\n preShow: '即將開賣',\r\n notice: '索取貨到通知',\r\n};\r\n\r\nexport const btnFoodDescriptionEnum = {\r\n general: '請選擇規格',\r\n addBag: '加入購物車',\r\n soldOut: '已售完',\r\n preShow: '即將開賣',\r\n notice: '索取貨到通知',\r\n};\r\n\r\nexport const btnStyleEnum = {\r\n disabled: 'disabled',\r\n activeMail: 'active-mail',\r\n active: 'active',\r\n};\r\n\r\nexport const addToCartEnum = {\r\n addSuccess: '加入購物車',\r\n};\r\n","import { ref, computed } from 'vue';\r\nimport $ from 'jquery';\r\n\r\nimport gtmTrace from '@global/gtm/trace';\r\nimport { fireShopContentView } from '@global/gtm/product';\r\nimport { fireAddToCart } from '@global/gtm/common';\r\nimport fireWishlistEvent from '@global/gtm/wishlist';\r\n\r\nimport { defineStore } from 'pinia';\r\nimport useMiniCartStore from '@global/stores/useMiniCartStore';\r\n\r\nimport useUtmKDetect from '@global/composable/useUtmKDetect';\r\nimport useAlert from '@global/composable/useAlert';\r\nimport useAxiosAPI from '@global/composable/api/useAxiosAPI';\r\nimport useModalStore from '@global/stores/useModalStore';\r\n\r\nimport { btnDescriptionEnum, btnFoodDescriptionEnum, btnStyleEnum } from '@/models/productEnum';\r\n\r\nconst {\r\n postFavoriteAPI,\r\n deleteFavoriteAPI,\r\n getSeriesDataAPI,\r\n getDataAPI,\r\n getBrandRecommendDataAPI,\r\n getRecommendDataAPI,\r\n getMarketRecommendDataAPI,\r\n postShoppingCartAPI,\r\n} = useAxiosAPI();\r\n\r\nconst { utmKDetect, shareCode } = useUtmKDetect();\r\nconst { alertDialog } = useAlert();\r\n\r\nconst useShopContentStore = defineStore('shopContent', () => {\r\n const miniCartStore = useMiniCartStore();\r\n const { getCartInfo } = miniCartStore;\r\n const modalStore = useModalStore();\r\n const { openModal } = modalStore;\r\n\r\n const dataIsLoad = ref(false);\r\n const itemDatas = ref({});\r\n const pattern = window.Pattern;\r\n const selectedDataID = ref(0);\r\n const selectedFoodSpec = ref([]);\r\n const userSelectFlavor = ref({});\r\n const btnStyleGenerate = ref(btnStyleEnum.disabled);\r\n const btnDescriptionGenerate = ref(btnDescriptionEnum.general);\r\n const pzBuyNow = ref(btnDescriptionEnum.general);\r\n\r\n function getData() {\r\n dataIsLoad.value = false;\r\n if (pattern === 2) {\r\n getSeriesDataAPI({\r\n params: {\r\n MarketID: window.MarketID,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n itemDatas.value = res.data.Response;\r\n\r\n setSelectedFood({ foodFlavors: res.data.Response.Flavors, type: false });\r\n foodBtnStyleGenerate();\r\n resetCounter();\r\n\r\n dataIsLoad.value = true;\r\n\r\n if (\r\n window.PictureContainer === 'urliving' ||\r\n window.PictureContainer === 'urliving-t'\r\n ) {\r\n getBrandRecommendData();\r\n }\r\n\r\n fireShopContentView({\r\n customMarketID: selectedFoodSpec.value.Product.CustomMarketID,\r\n name: selectedFoodSpec.value.Product.Name,\r\n price: selectedFoodSpec.value.Product.SellPrice,\r\n affiliation: userSelectFlavor.value.Name,\r\n item_brand: selectedFoodSpec.value.Name,\r\n eventName: selectedFoodSpec.value.Product.Events.length\r\n ? selectedFoodSpec.value.Product.Events[0].Name\r\n : '',\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n // pattern 為 1 和 3 都是一般賣場模式\r\n // pattern 為 3 為外部供應商自訂商品描述HTML\r\n getDataAPI({\r\n params: {\r\n CustomMarketID: window.CustomMarketID,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n itemDatas.value = res.data.Response;\r\n selectedDataID.value = res.data.Response.ColorID;\r\n\r\n if (itemDatas.value.IsPreShow) {\r\n btnStyleGenerate.value = btnStyleEnum.disabled;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.preShow;\r\n pzBuyNow.value = btnDescriptionEnum.preShow;\r\n }\r\n\r\n dataIsLoad.value = true;\r\n\r\n if (\r\n window.PictureContainer === 'urliving' ||\r\n window.PictureContainer === 'urliving-t'\r\n ) {\r\n getBrandRecommendData();\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n // only for urliving\r\n const brandRecommendIsLoad = ref(false);\r\n const brandRecommendData = ref({});\r\n function getBrandRecommendData() {\r\n getBrandRecommendDataAPI({\r\n params: {\r\n OnlyFirstColor: true,\r\n Brand: itemDatas.value.Brand.Code,\r\n Page: 1,\r\n PageSize: 6,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n brandRecommendIsLoad.value = true;\r\n randomBrandSlideArray(res.data.Response.Data);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n function randomBrandSlideArray(arr) {\r\n let ctr = arr.length;\r\n let temp;\r\n let index;\r\n\r\n while (ctr > 0) {\r\n index = Math.floor(Math.random() * ctr);\r\n ctr -= 1;\r\n temp = arr[ctr];\r\n arr[ctr] = arr[index];\r\n arr[index] = temp;\r\n }\r\n brandRecommendData.value = arr;\r\n }\r\n\r\n // 奶油、URL、餐飲公版的推薦:'/api/v1/market'\r\n const recommendIsLoad = ref(false);\r\n const recommendData = ref({});\r\n function getRecommendData() {\r\n getRecommendDataAPI({\r\n params: {\r\n OnlyFirstColor: true,\r\n CategoryIDs: window.CategoryIDs?.toString(),\r\n Page: 1,\r\n PageSize: 6,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n recommendIsLoad.value = true;\r\n randomSlideArray(res.data.Response.Data);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n function randomSlideArray(arr) {\r\n let ctr = arr.length;\r\n let temp;\r\n let index;\r\n\r\n while (ctr > 0) {\r\n index = Math.floor(Math.random() * ctr);\r\n ctr -= 1;\r\n temp = arr[ctr];\r\n arr[ctr] = arr[index];\r\n arr[index] = temp;\r\n }\r\n recommendData.value = arr;\r\n }\r\n\r\n // 其餘品牌的推薦:'/api/v1/recommendation/getrelatedcategory'\r\n const marketRecommendIsLoad = ref(false);\r\n const marketRecommendData = ref([]);\r\n function getMarketRecommendData() {\r\n getMarketRecommendDataAPI({\r\n params: {\r\n CustomMarketID: window.CustomMarketID,\r\n CategoryIDs: window.CategoryIDs.toString(),\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n marketRecommendData.value = res.data.Response.map((item) => {\r\n return {\r\n url: `${item.MarketUrl}&page=product&source=ur&recommend=related_to_category`,\r\n image: item.PictureUrl || '',\r\n originPrice: item.OriginPrice || 0,\r\n sellPrice: item.SellPrice || 0,\r\n sellPriceTW: item.SellPrice_TW || 0,\r\n eventPrice: item.EventPrice || 0,\r\n name: item.Name || '',\r\n customMarketID: item.CustomMarketID || '',\r\n color: item.ColorName || '',\r\n currentCurrency: item.CurrentCurrency,\r\n };\r\n });\r\n\r\n marketRecommendIsLoad.value = true;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n const selectedData = ref({});\r\n const allSpecPreOrder = ref(false);\r\n const favCustomMarketID = computed(() => {\r\n if (Object.keys(itemDatas.value).length === 0) return undefined;\r\n if (pattern === 2) return selectedFoodSpec.value.Product.CustomMarketID;\r\n\r\n const substringID = itemDatas.value.CustomMarketID.substring(\r\n 0,\r\n itemDatas.value.CustomMarketID.indexOf('CL'),\r\n );\r\n\r\n const customMarketID = `${substringID}CL${selectedData.value.ID}SZ_`;\r\n\r\n return customMarketID;\r\n });\r\n\r\n function getSelectedData() {\r\n selectedData.value = itemDatas.value.Colors.find((color) => color.ID === selectedDataID.value);\r\n const allSpecPreOrderArray = [];\r\n selectedData.value.Specs.forEach((element) => {\r\n allSpecPreOrderArray.push(element.PreOrder);\r\n });\r\n allSpecPreOrder.value = allSpecPreOrderArray.every(Boolean);\r\n\r\n if (selectedData.value.Specs.length === 1 && selectedData.value.Specs[0].Stock > 0) {\r\n selectSpec(selectedData.value.Specs[0]);\r\n }\r\n }\r\n\r\n const selectedSpec = ref({ Name: '尺寸', Key: 'default', ID: 'default' });\r\n const selectedSpecID = ref(0);\r\n const selectedSpecKey = ref(0);\r\n function selectSpec(spec) {\r\n if (spec.Key === 'default') {\r\n btnStyleGenerate.value = 'disabled';\r\n btnDescriptionGenerate.value = btnDescriptionEnum.general;\r\n pzBuyNow.value = btnDescriptionEnum.general;\r\n\r\n clearSpec();\r\n resetCounter();\r\n return;\r\n }\r\n\r\n selectedSpec.value = spec;\r\n selectedSpecID.value = spec.ID;\r\n selectedSpecKey.value = spec.Key;\r\n\r\n resetCounter();\r\n getBtnStatus({\r\n stock: spec.Stock,\r\n isSoldOut: spec.IsOutOfStock,\r\n isPreOrder: spec.PreOrder,\r\n });\r\n }\r\n function clearSpec() {\r\n selectedSpec.value = { Name: '尺寸', Key: 'default' };\r\n selectedSpecID.value = 0;\r\n selectedSpecKey.value = 0;\r\n }\r\n\r\n const selectIsOpen = ref(false);\r\n function openSelector() {\r\n selectIsOpen.value = !selectIsOpen.value;\r\n }\r\n\r\n function changeImg(colorID) {\r\n selectIsOpen.value = false;\r\n if (selectedData.value.ID === colorID) return;\r\n btnReset();\r\n clearSpec();\r\n resetCounter();\r\n selectedDataID.value = colorID;\r\n }\r\n\r\n function getBtnStatus(payload) {\r\n if (itemDatas.value.IsPreShow) return;\r\n\r\n if (window.PictureContainer === 'urliving' || window.PictureContainer === 'urliving-t') {\r\n if (payload.stock === 0) {\r\n if (payload.isPreOrder) {\r\n // 無庫存預購\r\n btnStyleGenerate.value = btnStyleEnum.disabled;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.soldOut;\r\n } else {\r\n // 無庫存現貨\r\n btnStyleGenerate.value = btnStyleEnum.activeMail;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.notice;\r\n }\r\n } else {\r\n btnStyleGenerate.value = btnStyleEnum.active;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.addBag;\r\n }\r\n return;\r\n }\r\n\r\n if (payload.stock === 0 && payload.isSoldOut && !payload.isPreOrder) {\r\n // 現貨無庫存且斷貨\r\n btnStyleGenerate.value = btnStyleEnum.disabled;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.soldOut;\r\n pzBuyNow.value = btnDescriptionEnum.soldOut;\r\n } else if (payload.stock === 0) {\r\n // 無庫存\r\n btnStyleGenerate.value = btnStyleEnum.activeMail;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.notice;\r\n pzBuyNow.value = btnDescriptionEnum.notice;\r\n } else if (payload.isPreOrder && payload.stock > 0) {\r\n // 有預購按鈕文字\r\n btnStyleGenerate.value = btnStyleEnum.active;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.addPre || btnDescriptionEnum.addBag;\r\n } else {\r\n btnStyleGenerate.value = btnStyleEnum.active;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.addBag;\r\n pzBuyNow.value = '立即結帳';\r\n }\r\n }\r\n function btnReset() {\r\n btnStyleGenerate.value = btnStyleEnum.disabled;\r\n btnDescriptionGenerate.value = btnDescriptionEnum.general;\r\n pzBuyNow.value = btnDescriptionEnum.general;\r\n if (itemDatas.value.IsPreShow) {\r\n btnDescriptionGenerate.value = btnDescriptionEnum.preShow;\r\n pzBuyNow.value = btnDescriptionEnum.preShow;\r\n }\r\n }\r\n\r\n const counter = ref(1);\r\n function addCount(payload) {\r\n // 還沒選尺寸或是即將開賣\r\n if (pattern !== 2 && selectedSpec.value.Key === 'default') return;\r\n if (pattern !== 2 && itemDatas.value.IsPreShow) return;\r\n if (pattern === 2 && selectedFoodSpec.value.Product.IsPreShow) return;\r\n if (counter.value >= payload.maxCount) return;\r\n if (counter.value >= payload.limit && payload.limit !== 0) return;\r\n counter.value += 1;\r\n }\r\n function reduceCount() {\r\n if (counter.value <= 1) return;\r\n counter.value -= 1;\r\n }\r\n function resetCounter() {\r\n counter.value = 1;\r\n }\r\n\r\n const CMID = ref('');\r\n const carAddMainItem = ref(false);\r\n\r\n function addToCart(noArrivalNotice = false) {\r\n const customMarketID = itemDatas.value.CustomMarketID;\r\n const subStringCustomMarketID = customMarketID.substring(0, customMarketID.indexOf('CL'));\r\n const itemSpecInfo = `${subStringCustomMarketID}CL${selectedData.value.ID}SZ${selectedSpecKey.value}`;\r\n CMID.value = itemSpecInfo;\r\n\r\n // urliving 預購不顯示貨到通知\r\n // 其餘品牌 預購無庫存無斷貨顯示貨到通知\r\n if (window.PictureContainer === 'urliving' || window.PictureContainer === 'urliving-t') {\r\n if (selectedSpec.value.Stock === 0) {\r\n if (selectedSpec.value.PreOrder) {\r\n return;\r\n }\r\n openModal('arrivalNotice');\r\n return;\r\n }\r\n } else {\r\n if (btnDescriptionGenerate.value === btnDescriptionEnum.notice && noArrivalNotice) {\r\n return;\r\n }\r\n if (\r\n selectedSpec.value.Stock === 0 &&\r\n selectedSpec.value.IsOutOfStock &&\r\n !selectedSpec.value.PreOrder\r\n ) {\r\n return;\r\n }\r\n if (selectedSpec.value.Stock === 0) {\r\n openModal('arrivalNotice');\r\n return;\r\n }\r\n }\r\n\r\n const utmData = utmKDetect(itemSpecInfo) === null ? '' : utmKDetect(itemSpecInfo);\r\n // eslint-disable-next-line consistent-return\r\n return new Promise((resolve, reject) => {\r\n postShoppingCartAPI({\r\n CustomMarketID: itemSpecInfo,\r\n Count: counter.value,\r\n UtmTag: utmData,\r\n ShareCode: shareCode() === null ? null : shareCode(),\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n getCartInfo();\r\n closeMobileCartDialog();\r\n carAddMainItem.value = true;\r\n\r\n gtmTrace.addToCart({\r\n name: itemDatas.value.Name,\r\n id: itemSpecInfo,\r\n price: itemDatas.value.OriginPrice,\r\n sale_price:\r\n itemDatas.value.EventPrice > 0 &&\r\n itemDatas.value.EventPrice < itemDatas.value.SellPrice\r\n ? itemDatas.value.EventPrice\r\n : itemDatas.value.SellPrice,\r\n img_url: selectedData.value.Images[0].Url,\r\n product_url: selectedData.value.MarketUrl,\r\n color: selectedData.value.Name,\r\n count: counter.value,\r\n });\r\n\r\n fireAddToCart({\r\n item_id: itemSpecInfo.split('SZ')[0],\r\n item_name: itemDatas.value.Name,\r\n index: 0,\r\n affiliation: selectedData.value.Name,\r\n item_brand: selectedSpec.value.Name,\r\n item_list_name: '產品內頁',\r\n price:\r\n itemDatas.value.EventPrice > 0 &&\r\n itemDatas.value.EventPrice < itemDatas.value.SellPrice\r\n ? itemDatas.value.EventPrice\r\n : itemDatas.value.SellPrice,\r\n quantity: counter.value,\r\n item_variant: selectedSpec.value.Barcode,\r\n });\r\n\r\n resolve({ code: 200 });\r\n } else if (res.data.Code === 205) {\r\n resolve({ code: 205 });\r\n }\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n const isOpenCartDialog = ref(false);\r\n function closeMobileCartDialog() {\r\n isOpenCartDialog.value = false;\r\n }\r\n function showMobileCartDialog() {\r\n isOpenCartDialog.value = true;\r\n }\r\n\r\n /**\r\n * @description 取得 user 選擇的口味和規格\r\n * @param {boolean} type - 是否為 user 手動變更口味,若否則預設點擊商品的口味\r\n */\r\n function setSelectedFood(payload) {\r\n if (payload.type === false) {\r\n userSelectFlavor.value = payload.foodFlavors.find((flavor) => flavor.Selected);\r\n selectedFoodSpec.value = userSelectFlavor.value.Specs.find((spec) => spec.Selected);\r\n } else {\r\n const checkHasStock = userSelectFlavor.value.Specs.find((stock) => stock.Stock > 0);\r\n\r\n if (checkHasStock) {\r\n selectedFoodSpec.value = checkHasStock;\r\n } else {\r\n const { Specs } = userSelectFlavor.value;\r\n const [foodSpec] = Specs;\r\n selectedFoodSpec.value = foodSpec;\r\n }\r\n }\r\n }\r\n\r\n function selectFoodSpec(spec) {\r\n selectedFoodSpec.value = spec;\r\n\r\n resetCounter();\r\n foodBtnStyleGenerate();\r\n changeFoodAddonID();\r\n\r\n fireShopContentView({\r\n affiliation: userSelectFlavor.value.Name,\r\n item_brand: selectedFoodSpec.value.Name,\r\n customMarketID: selectedFoodSpec.value.Product.CustomMarketID,\r\n eventName: selectedFoodSpec.value.Product.Events.length\r\n ? selectedFoodSpec.value.Product.Events[0].Name\r\n : '',\r\n name: selectedFoodSpec.value.Product.Name,\r\n price: selectedFoodSpec.value.Product.SellPrice,\r\n });\r\n }\r\n\r\n function changeFlavor(flavorIndex) {\r\n if (itemDatas.value.Flavors[flavorIndex].Name === userSelectFlavor.value.Name) return;\r\n\r\n selectIsOpen.value = false;\r\n userSelectFlavor.value = itemDatas.value.Flavors[flavorIndex];\r\n setSelectedFood({ foodFlavors: userSelectFlavor.value, type: true });\r\n\r\n resetCounter();\r\n foodBtnStyleGenerate();\r\n changeFoodAddonID();\r\n\r\n fireShopContentView({\r\n affiliation: userSelectFlavor.value.Name,\r\n item_brand: selectedFoodSpec.value.Name,\r\n customMarketID: selectedFoodSpec.value.Product.CustomMarketID,\r\n eventName: selectedFoodSpec.value.Product.Events.length\r\n ? selectedFoodSpec.value.Product.Events[0].Name\r\n : '',\r\n name: selectedFoodSpec.value.Product.Name,\r\n price: selectedFoodSpec.value.Product.SellPrice,\r\n });\r\n }\r\n\r\n const foodBtnStyle = ref(btnStyleEnum.disabled);\r\n const foodBtnDescription = ref(btnFoodDescriptionEnum.general);\r\n function foodBtnStyleGenerate() {\r\n if (selectedFoodSpec.value.Product.IsPreShow) {\r\n foodBtnStyle.value = btnStyleEnum.disabled;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.preShow;\r\n return;\r\n }\r\n\r\n if (window.PictureContainer === 'urliving' || window.PictureContainer === 'urliving-t') {\r\n if (selectedFoodSpec.value.Stock === 0) {\r\n if (selectedFoodSpec.value.Product.PreOrder) {\r\n foodBtnStyle.value = btnStyleEnum.disabled;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.soldOut;\r\n } else {\r\n foodBtnStyle.value = btnStyleEnum.activeMail;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.notice;\r\n }\r\n } else {\r\n foodBtnStyle.value = btnStyleEnum.active;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.addBag;\r\n }\r\n return;\r\n }\r\n\r\n if (\r\n selectedFoodSpec.value.Stock === 0 &&\r\n selectedFoodSpec.value.Product.IsOutOfStock &&\r\n !selectedFoodSpec.value.Product.PreOrder\r\n ) {\r\n // 無庫存且斷貨但是為現貨\r\n foodBtnStyle.value = btnStyleEnum.disabled;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.soldOut;\r\n } else if (selectedFoodSpec.value.Stock === 0) {\r\n foodBtnStyle.value = btnStyleEnum.activeMail;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.notice;\r\n } else {\r\n foodBtnStyle.value = btnStyleEnum.active;\r\n foodBtnDescription.value = btnFoodDescriptionEnum.addBag;\r\n }\r\n }\r\n\r\n function foodAddToCart() {\r\n if (selectedFoodSpec.value === null) {\r\n alertDialog.alert(btnFoodDescriptionEnum.general);\r\n return;\r\n }\r\n\r\n CMID.value = selectedFoodSpec.value.Product.CustomMarketID;\r\n\r\n // urliving 預購不顯示貨到通知\r\n // 其餘品牌 預購無庫存無斷貨顯示貨到通知\r\n if (window.PictureContainer === 'urliving' || window.PictureContainer === 'urliving-t') {\r\n if (selectedFoodSpec.value.Stock === 0) {\r\n if (selectedFoodSpec.value.Product.PreOrder) {\r\n return;\r\n }\r\n openModal('arrivalNotice');\r\n return;\r\n }\r\n } else {\r\n if (selectedFoodSpec.value.Product.IsOutOfStock && !selectedFoodSpec.value.Product.PreOrder) {\r\n return;\r\n }\r\n if (selectedFoodSpec.value.Stock === 0) {\r\n openModal('arrivalNotice');\r\n return;\r\n }\r\n }\r\n\r\n const utmData =\r\n utmKDetect(selectedFoodSpec.value.Product.CustomMarketID) === null\r\n ? ''\r\n : utmKDetect(selectedFoodSpec.value.Product.CustomMarketID);\r\n // eslint-disable-next-line consistent-return\r\n return new Promise((resolve, reject) => {\r\n postShoppingCartAPI({\r\n CustomMarketID: selectedFoodSpec.value.Product.CustomMarketID,\r\n Count: counter.value,\r\n UtmTag: utmData,\r\n ShareCode: shareCode() === null ? null : shareCode(),\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n getCartInfo();\r\n closeMobileCartDialog();\r\n carAddMainItem.value = true;\r\n\r\n gtmTrace.addToCart({\r\n name: selectedFoodSpec.value.Product.Name,\r\n id: selectedFoodSpec.value.Product.CustomMarketID,\r\n price: selectedFoodSpec.value.Product.OriginPrice,\r\n sale_price:\r\n selectedFoodSpec.value.Product.EventPrice > 0 &&\r\n selectedFoodSpec.value.Product.EventPrice < selectedFoodSpec.value.Product.SellPrice\r\n ? selectedFoodSpec.value.Product.EventPrice\r\n : selectedFoodSpec.value.Product.SellPrice,\r\n img_url: selectedFoodSpec.value.Product.Images[0].Url,\r\n product_url: selectedFoodSpec.value.Product.MarketUrl,\r\n color: userSelectFlavor.value.Name,\r\n count: counter.value,\r\n });\r\n\r\n fireAddToCart({\r\n item_id: selectedFoodSpec.value.Product.CustomMarketID.split('SZ')[0],\r\n item_name: selectedFoodSpec.value.Product.Name,\r\n index: 0,\r\n affiliation: userSelectFlavor.value.Name,\r\n item_brand: selectedFoodSpec.value.Name,\r\n item_list_name: '產品內頁',\r\n price: selectedFoodSpec.value.Product.SellPrice,\r\n quantity: counter.value,\r\n item_variant: '',\r\n });\r\n\r\n resolve({ code: 200 });\r\n } else if (res.data.Code === 205) {\r\n resolve({ code: 205 });\r\n }\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n const foodAddonID = ref(\r\n window.CustomMarketID\r\n ? window.CustomMarketID.substring(0, window.CustomMarketID.indexOf('CL'))\r\n : null,\r\n );\r\n function changeFoodAddonID() {\r\n const originID = selectedFoodSpec.value.Product.CustomMarketID;\r\n foodAddonID.value = originID.substring(0, originID.indexOf('CL'));\r\n }\r\n\r\n function toggleFoodFavorite(isFavorite) {\r\n if (isFavorite) {\r\n deleteFavoriteAPI({\r\n data: {\r\n CustomMarketID: favCustomMarketID.value,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n if (res.data.Response) {\r\n selectedFoodSpec.value.IsFavorite = false;\r\n selectedFoodSpec.value.FavoriteAmount -= 1;\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n postFavoriteAPI({\r\n CustomMarketID: favCustomMarketID.value,\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n if (res.data.Response) {\r\n selectedFoodSpec.value.IsFavorite = true;\r\n selectedFoodSpec.value.FavoriteAmount += 1;\r\n fireWishlistEvent({\r\n color: userSelectFlavor.value.Name,\r\n id: favCustomMarketID.value,\r\n name: selectedFoodSpec.value.Product.Name,\r\n sellPrice: selectedFoodSpec.value.Product.SellPrice,\r\n size: selectedFoodSpec.value.Name || '',\r\n });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n function toggleFavorite(isFavorite) {\r\n if (isFavorite) {\r\n deleteFavoriteAPI({\r\n data: {\r\n CustomMarketID: favCustomMarketID.value,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n if (res.data.Response) {\r\n selectedData.value.IsFavorite = false;\r\n selectedData.value.FavoriteCount -= 1;\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n postFavoriteAPI({\r\n CustomMarketID: favCustomMarketID.value,\r\n })\r\n .then((res) => {\r\n if (res.data.Code === 200) {\r\n if (res.data.Response) {\r\n selectedData.value.IsFavorite = true;\r\n selectedData.value.FavoriteCount += 1;\r\n fireWishlistEvent({\r\n color: selectedData.value.Name,\r\n id: favCustomMarketID.value,\r\n name: itemDatas.value.Name,\r\n sellPrice: itemDatas.value.SellPrice,\r\n size: selectedSpec.value.Name || '',\r\n });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n return {\r\n itemDatas,\r\n selectedSpecID,\r\n selectedDataID,\r\n selectedData,\r\n recommendData,\r\n marketRecommendData,\r\n brandRecommendData,\r\n dataIsLoad,\r\n recommendIsLoad,\r\n marketRecommendIsLoad,\r\n brandRecommendIsLoad,\r\n CMID,\r\n carAddMainItem,\r\n selectedSpec,\r\n selectedSpecKey,\r\n counter,\r\n btnStyleGenerate,\r\n btnDescriptionGenerate,\r\n foodBtnStyle,\r\n foodBtnDescription,\r\n pzBuyNow,\r\n selectIsOpen,\r\n userSelectFlavor,\r\n selectedFoodSpec,\r\n isOpenCartDialog,\r\n allSpecPreOrder,\r\n pattern,\r\n foodAddonID,\r\n favCustomMarketID,\r\n getData,\r\n getBrandRecommendData,\r\n randomBrandSlideArray,\r\n getRecommendData,\r\n getMarketRecommendData,\r\n randomSlideArray,\r\n getSelectedData,\r\n selectSpec,\r\n clearSpec,\r\n openSelector,\r\n changeImg,\r\n getBtnStatus,\r\n btnReset,\r\n addToCart,\r\n addCount,\r\n reduceCount,\r\n resetCounter,\r\n closeMobileCartDialog,\r\n showMobileCartDialog,\r\n setSelectedFood,\r\n selectFoodSpec,\r\n changeFlavor,\r\n foodBtnStyleGenerate,\r\n foodAddToCart,\r\n changeFoodAddonID,\r\n toggleFoodFavorite,\r\n toggleFavorite,\r\n };\r\n});\r\n\r\nexport default useShopContentStore;\r\n","import $ from 'jquery';\r\n\r\nconst setEnv = {\r\n myEquipment() {\r\n return (\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ||\r\n window.innerWidth <= 1024\r\n );\r\n },\r\n\r\n smallScreen(breakpoint) {\r\n return window.innerWidth <= (breakpoint || 480);\r\n },\r\n\r\n isLogin() {\r\n return $('.secnav-right, .login-account').attr('islogin') === 'true';\r\n },\r\n\r\n myCookie() {\r\n return navigator.cookieEnabled;\r\n },\r\n\r\n myStorage() {\r\n // ios has bug in private mode\r\n // in private mode, set localStorage will cause error\r\n const testKey = 'test';\r\n const storage = window.localStorage;\r\n try {\r\n storage.setItem(testKey, '1');\r\n storage.removeItem(testKey);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n },\r\n\r\n pageDependReact() {\r\n // 檢查頁面是否有script標籤調用React libary\r\n return Boolean($('script[src*=\"react\"]').length);\r\n },\r\n\r\n windowReload() {\r\n const windowSizeDefault = window.innerWidth > 1024;\r\n let windowSizeNew;\r\n\r\n $(window).resize(() => {\r\n windowSizeNew = window.innerWidth > 1024;\r\n\r\n if (windowSizeDefault !== windowSizeNew) {\r\n $(window).off('resize');\r\n window.location.reload();\r\n }\r\n });\r\n },\r\n};\r\n\r\nfunction useSetEnv() {\r\n return { setEnv };\r\n}\r\n\r\nexport default useSetEnv;\r\n","import $ from 'jquery';\r\n\r\nfunction useZoomBox(opt) {\r\n // 設定傳入的參數\r\n const imgArray = opt.images; // 所有圖片陣列\r\n const imgArrayOnError = opt.imagesOnError; // 大圖無法讀取時的圖片\r\n const { tilting } = opt; // 是否上下搖動\r\n const lastIndex = imgArray.length - 1;\r\n let index; // 當前圖片序號\r\n\r\n // 基本物件的設定\r\n const videoReg = /\\.[mM][pP]4/;\r\n const $win = $(window);\r\n const $body = $('body');\r\n let $container = $('#zoomBox');\r\n let $elm;\r\n\r\n // 顯示物件的資源參數\r\n let imageUrl;\r\n let source;\r\n let zbVideo;\r\n\r\n // 顯示物件的定位參數\r\n let winT;\r\n let elmW;\r\n let elmH;\r\n let panoH;\r\n let cy;\r\n let yPos;\r\n\r\n // 螢幕縮放時重新計算圖片/影片垂直及水平位置\r\n function resize() {\r\n elmW = $elm.width();\r\n elmH = $elm.height();\r\n panoH = $container.height();\r\n cy = (elmH - panoH) / panoH;\r\n $elm.css({\r\n top: -cy * yPos,\r\n 'margin-left': -elmW / 2,\r\n });\r\n }\r\n\r\n // 定位設定\r\n function imgTilt(isImg) {\r\n // 清空 #zoomBox 的滑鼠移動事件\r\n $container.off('mousemove');\r\n\r\n // 使用新的圖片/影片計算初始值\r\n // 切換時新的圖片/影片會在第一張\r\n winT = $win.scrollTop();\r\n $elm = $container.children().first();\r\n elmW = $elm.width();\r\n elmH = $elm.height();\r\n panoH = $container.height();\r\n cy = (elmH - panoH) / panoH;\r\n if (isImg && tilting) {\r\n // 如果是圖片且需要被上下搖動\r\n // 假如是點擊上下張按鈕的情形,yPos 已經設定過了\r\n // yPos 就維持原參數,如果還沒設定過使用傳入的 opt.pageY 計算\r\n // yPos = 鼠標在頁面中 y 軸的位置 - 頁面捲動的高度\r\n yPos = yPos || opt.yPos;\r\n $elm.css({\r\n top: -cy * yPos,\r\n left: '50%',\r\n 'margin-left': -elmW / 2,\r\n });\r\n\r\n // 綁定滑鼠移動事件\r\n // 滑鼠移動時重新計算圖片垂直位置\r\n $container.on('mousemove', (event) => {\r\n yPos = event.pageY - winT;\r\n $elm.css('top', -cy * yPos);\r\n });\r\n } else {\r\n // 如果不是圖片或不需要被上下搖動\r\n // 但仍持續更新 yPos,避免回到圖片後的跳動\r\n // 設定圖片/影片垂直水平置中\r\n $container.on('mousemove', (event) => {\r\n yPos = event.pageY - winT;\r\n });\r\n\r\n $elm.css({\r\n top: '50%',\r\n left: '50%',\r\n 'margin-top': -elmH / 2,\r\n 'margin-left': -elmW / 2,\r\n });\r\n }\r\n\r\n // 設定完定位後淡入新的圖片/影片\r\n $elm.animate({ opacity: 1 }, 600);\r\n }\r\n\r\n function showImage(i) {\r\n // 設定要顯示的是陣列中 index 為 i 的圖片/影片\r\n imageUrl = imgArray[i];\r\n\r\n // 若沒有要顯示的圖片/影片就關閉 zoombox\r\n if (!imageUrl) {\r\n closeZoomBox();\r\n return;\r\n }\r\n\r\n // 淡出並移除 zoombox 中原來的圖片/影片\r\n $container.children('img, video').fadeOut(600, function () {\r\n $(this).remove();\r\n });\r\n\r\n // 判斷為圖片/影片\r\n if (!videoReg.test(imageUrl)) {\r\n // 一般圖片\r\n // 建立一個圖片物件檢查圖片是否存在\r\n // 圖片順利載入後加到 #zoombox 的最前面\r\n // 圖片加入後設定放大圖片定位\r\n // imgTilt 傳入的 true 代表是圖片\r\n const newImage = new Image();\r\n newImage.src = imageUrl;\r\n newImage.onload = () => {\r\n $(newImage).css('opacity', 0).prependTo($container);\r\n imgTilt(true);\r\n };\r\n newImage.onerror = () => {\r\n // 建立一個圖片物件檢查 onerror 圖片是否存在\r\n // 404 圖片使用順序: opt.imagesOnError -> opt.imgPlaceholder -> nowBrand.imagePlaceholder.default\r\n // 如果仍找不到圖片就依序使用下一個設定\r\n // 建議至少要設定 nowBrand.imagePlaceholder.default\r\n // 當 onerror 的圖片順利載入後,重新設定 newImage 的 src\r\n const errorImage = new Image();\r\n errorImage.src = imgArrayOnError\r\n ? imgArrayOnError[i]\r\n : opt.imgPlaceholder || window.nowBrand.imagePlaceholder.default;\r\n errorImage.onerror = () => {\r\n newImage.src = opt.imgPlaceholder || window.nowBrand.imagePlaceholder.default;\r\n };\r\n errorImage.onload = () => {\r\n newImage.src = errorImage.src;\r\n };\r\n };\r\n } else {\r\n // 影片\r\n // 用 jQuery 比較好操作 video 物件的 css 跟 id\r\n // 建立一個影片物件\r\n // 影片設定後加到 #zoombox 的最前面\r\n // video 標籤的資源讀完後才有辦法抓到影片的高度\r\n // 所以在資源讀完以後再設定定位\r\n // imgTilt 傳入的 false 代表是影片\r\n source = document.createElement('source');\r\n source.type = 'video/mp4';\r\n source.src = imageUrl;\r\n\r\n $elm = $(document.createElement('video'));\r\n $elm\r\n .attr('autoplay', true)\r\n .attr('loop', true)\r\n .attr('width', '100%')\r\n .attr('id', 'zb-video')\r\n .attr('class', 'video-js vjs-default-skin')\r\n .css('opacity', 0)\r\n .append(source)\r\n .prependTo($container);\r\n\r\n zbVideo = document.getElementById('zb-video');\r\n zbVideo.onloadeddata = () => {\r\n imgTilt(false);\r\n };\r\n }\r\n }\r\n\r\n function showButton(i) {\r\n // eslint-disable-next-line no-unused-expressions\r\n i === 0 ? $container.find('.prev').fadeOut() : $container.find('.prev').fadeIn();\r\n\r\n // eslint-disable-next-line no-unused-expressions\r\n i === lastIndex ? $container.find('.next').fadeOut() : $container.find('.next').fadeIn();\r\n }\r\n\r\n function createZoomBox() {\r\n const content =\r\n '
' +\r\n 'PREV' +\r\n 'NEXT' +\r\n 'CLOSE' +\r\n '
';\r\n\r\n $container = $(content);\r\n\r\n // 設定初始按鈕樣式\r\n // eslint-disable-next-line no-unused-expressions\r\n index === 0 && $container.find('.prev').hide();\r\n // eslint-disable-next-line no-unused-expressions\r\n index === lastIndex && $container.find('.next').hide();\r\n\r\n // 如果有自訂的 class 加到 #zoombox 上\r\n // eslint-disable-next-line no-unused-expressions\r\n opt.zbClass && $container.addClass(opt.zbClass);\r\n\r\n return $container;\r\n }\r\n\r\n function showZoomBox() {\r\n $container.fadeIn(400);\r\n showImage(index);\r\n showButton(index);\r\n\r\n // 綁定螢幕縮放事件\r\n $win.on('resize.zoombox', resize);\r\n }\r\n\r\n function closeZoomBox() {\r\n // 關閉 #zoombox 後移除所有相關物件、綁定、設定\r\n $win.off('resize.zoombox');\r\n $body.removeClass('hasoverlay');\r\n\r\n // 移除前先微調一下圖片訂位\r\n $elm.css('margin-left', -$elm.width() / 2);\r\n $container.fadeOut(400, () => {\r\n $container.remove();\r\n });\r\n }\r\n\r\n function onkeydown(event) {\r\n // eslint-disable-next-line default-case\r\n switch (event.keyCode) {\r\n case 27: // Esc\r\n closeZoomBox();\r\n break;\r\n case 37: // 右箭頭,沒顯示的話不點\r\n // eslint-disable-next-line no-unused-expressions\r\n index !== 0 && $container.find('.prev').click();\r\n break;\r\n case 39: // 左箭頭,沒顯示的話不點\r\n // eslint-disable-next-line no-unused-expressions\r\n index !== lastIndex && $container.find('.next').click();\r\n break;\r\n }\r\n }\r\n\r\n const init = () => {\r\n index = opt.index;\r\n\r\n // body 加上 class 'hasoverlay' 來鎖定頁面\r\n $body.addClass('hasoverlay');\r\n\r\n createZoomBox().appendTo('body');\r\n showZoomBox();\r\n\r\n // 點擊 #zoombox 關閉自己\r\n // 除非是點到上/下張\r\n $container.on('click', closeZoomBox);\r\n $container.find('.next').on('click', (event) => {\r\n index += 1;\r\n showImage(index);\r\n showButton(index);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n $container.find('.prev').on('click', (event) => {\r\n index -= 1;\r\n showImage(index);\r\n showButton(index);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n // 設定 Esc, 左右箭頭按鍵事件\r\n $body.on('keydown', onkeydown);\r\n };\r\n\r\n // 呼叫 zoombox 時直接執行 init\r\n return init();\r\n}\r\n\r\nexport default useZoomBox;\r\n","\r\n\r\n\r\n","import script from \"./Photo.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Photo.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./Select.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Select.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","\r\n\r\n\r\n","import script from \"./Quantity.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Quantity.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n","import script from \"./BaseModal.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./BaseModal.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./ArrivalNotice.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ArrivalNotice.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./SpecMobile.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./SpecMobile.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./SizeModal.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./SizeModal.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n\r\n","const useAddonMappingSpec = (addonCheckArray) => {\r\n let nowIndex = 0;\r\n const newAddonArray = [];\r\n\r\n function getMarketID(fullID) {\r\n return fullID.substring(0, fullID.indexOf('CL'));\r\n }\r\n\r\n function specCheck() {\r\n if (!addonCheckArray[nowIndex].isCheck) {\r\n const tempSpec = {\r\n Name: addonCheckArray[nowIndex].Name,\r\n CustomMarketID_withoutSize: addonCheckArray[nowIndex].CustomMarketID.substring(\r\n 0,\r\n addonCheckArray[nowIndex].CustomMarketID.indexOf('SZ'),\r\n ),\r\n OriginPrice: addonCheckArray[nowIndex].OriginPrice,\r\n SellPrice: addonCheckArray[nowIndex].SellPrice,\r\n Cover: addonCheckArray[nowIndex].Cover,\r\n EventName: addonCheckArray[nowIndex].addonEventName || '',\r\n Specs: [\r\n {\r\n CustomMarketID: addonCheckArray[nowIndex].CustomMarketID,\r\n ColorName: addonCheckArray[nowIndex].ColorName,\r\n Size: addonCheckArray[nowIndex].Size,\r\n HasStock: addonCheckArray[nowIndex].HasStock,\r\n Stock: addonCheckArray[nowIndex].Stock,\r\n Pattern: addonCheckArray[nowIndex].Pattern,\r\n Series: addonCheckArray[nowIndex].Series,\r\n },\r\n ],\r\n BrandName: addonCheckArray[nowIndex].BrandName ? addonCheckArray[nowIndex].BrandName : null,\r\n };\r\n\r\n for (let i = 0; i < addonCheckArray.length; i++) {\r\n if (\r\n nowIndex !== i &&\r\n getMarketID(addonCheckArray[nowIndex].CustomMarketID) ===\r\n getMarketID(addonCheckArray[i].CustomMarketID)\r\n ) {\r\n tempSpec.Specs.push({\r\n CustomMarketID: addonCheckArray[i].CustomMarketID,\r\n ColorName: addonCheckArray[i].ColorName,\r\n Size: addonCheckArray[i].Size,\r\n HasStock: addonCheckArray[i].HasStock,\r\n Stock: addonCheckArray[i].Stock,\r\n Pattern: addonCheckArray[i].Pattern,\r\n Series: addonCheckArray[i].Series,\r\n });\r\n addonCheckArray[i].isCheck = true;\r\n }\r\n }\r\n\r\n addonCheckArray[nowIndex].isCheck = true;\r\n newAddonArray.push(tempSpec);\r\n nowIndex += 1;\r\n\r\n if (nowIndex < addonCheckArray.length) {\r\n specCheck();\r\n }\r\n } else {\r\n nowIndex += 1;\r\n\r\n if (nowIndex < addonCheckArray.length) {\r\n specCheck();\r\n }\r\n }\r\n\r\n return newAddonArray;\r\n }\r\n\r\n specCheck();\r\n\r\n return newAddonArray;\r\n};\r\n\r\nexport default useAddonMappingSpec;\r\n","import script from \"./AddonDetailPopup.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AddonDetailPopup.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","import script from \"./AddonItems.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AddonItems.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./AddonLayout.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AddonLayout.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./AddonShop.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./AddonShop.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import script from \"./Spec.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Spec.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./Recommend.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Recommend.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import script from \"./Index.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Index.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import common from '@page/common/js/common';\r\nimport Index from '@page/shopContent/components/Index.vue';\r\nimport { createApp } from 'vue';\r\n\r\nrequire('@global/vendors/jquery.sticky-kit');\r\n\r\nconst app = createApp({\r\n components: {\r\n Index,\r\n },\r\n});\r\napp.mount('#shop-content');\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 418;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t418: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkthe_butters\"] = self[\"webpackChunkthe_butters\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [461,545], function() { return __webpack_require__(8681); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","alerts","ref","showAlert","msg","type","callback","dataName","value","push","$","css","overflow","closeAlert","index","splice","alertDialog","allAlertFn","o","name","generateHeaders","otherObj","handleDefaultError","handle400","handle401","commonAPI","getFavoriteAPI","instance","getData","get","API_URL","postFavoriteAPI","postData","headers","post","deleteFavoriteAPI","deleteData","delete","_objectSpread","getHotSearchAPI","getCartInfoAPI","getShareAPI","id","postNewsletter","loginAPI","postForgetPS","getAccountExist","orderAPI","deleteOrderAPI","getRefundDetailAPI","getOrderAPI","postRefundCalculateAPI","getShippingFlowAPI","getOrderAtmAPI","postCashInAPI","memberAPI","getVerifyPhoneAPI","getBonusRecordAPI","postBonusWithDrawAPI","postUserIdAPI","postUserBankAccountAPI","getDataAnalyzeAPI","faPointAPI","getVerifyFaPointAPI","getFaPointAPI","postUnbindFaPointAPI","apiCalls","getArticleListAPI","getArticleContentAPI","getArticleCategoryAPI","getAddonCartAPI","getAddonEvent","getBrandFollowAPI","postBrandFollowAPI","deleteBrandFollowAPI","postCouponAPI","postCoupon2API","getOrderAddressAPI","postShoppingCartAPI","getShoppingCartAPI","putShoppingCartAPI","putData","put","getAddressBookAPI","deleteAddressBookAPI","postAddressBookAPI","getLastInvoiceAPI","getVerifyMobileCode","getCartRecommendDataAPI","getSearchRecommendAPI","getSortConditionAPI","getDataAPI","getSeriesDataAPI","getBrandRecommendDataAPI","getRecommendDataAPI","getMarketRecommendDataAPI","postNoticeAPI","api","key","func","Object","entries","_len","arguments","length","args","Array","_key","useAlert","axios","create","baseURL","interceptors","request","use","config","error","Promise","reject","response","res","successHandle","data","Code","alert","Message","confirm","window","location","href","resolve","createApi","useAxiosAPI","defineStore","dataIsLoad","totalCount","generalCount","refrigerationCount","freezingCount","generalSpotGoodsCount","refrigerationSpotGoodsCount","freezingSpotGoodsCount","generalMarketProducts","refrigerationMarketProducts","freezingMarketProducts","temperaturesData","count","hotSearch","hotLoad","isOnlyOneTemp","computed","hasProductTempCount","changeCartTotalCount","itemArray","Response","TotalCount","Temperatures","forEach","item","ID","Count","Markets","InstockCount","getCartInfo","then","catch","console","log","getHotSearch","params","period","date","limit","hotArray","i","messages","showMsg","cls","setTimeout","messageBox","allMsgFn","useAutoSupplement","toString","imgTransfer","imgUrl","sizeStr","imgName","substring","lastIndexOf","imgExtension","splitArr","split","folderName","pictureContainer","indexOf","StaticImgDomain","replace","useImage","props","__props","renderImg","url","size","onMounted","on","e","useMsg","ShopListView","constructor","hasCategory","ItemCategories","this","category","itemCategory","itemCategory2","itemCategory3","itemCategory4","itemCategory5","getItemListName","combineCategory","page","URLSearchParams","decodeURI","search","getListInfo","allListItem","dataLayer","find","obj","ecommerce","impressions","items","map","item_id","item_name","item_list_name","list","item_brand","item_category","item_category2","item_category3","item_category4","item_category5","price","parseInt","quantity","affiliation","variant","getRecommendListInfo","listName","impression","getSearchRecommendListInfo","recommendData","Colors","CustomMarketID","Name","SellPrice","ColorName","getSearchListInfo","payload","isHotSearch","keyword","getPromotionInfo","JSON","parse","localStorage","getItem","checkIsHotSearch","hotList","URL","searchParams","includes","fireSearchGAEvent","parameters","searchType","searchContent","dataLayerObj","event","search_term","Search_Type","Search_Content","fireEventRecommendedGoods","fireSearchListEvent","hotSearchList","itemListName","fireViewItemListGAEvent","SearchGTMEvent","getKeyword","pathname","fireSearchEvent","fireSearchCategoryPushEvent","pinia","createPinia","useTextProcessing","nowBrand","global","require","jQuery","createApp","components","AlertDialog","mount","NewImage","setup","miniCartStore","useMiniCartStore","storeToRefs","lockBody","open","addClass","removeClass","isCartVisible","cartMaskRef","cartMaskStyle","isSidebarVisible","burgerMaskRef","burgerMaskStyle","isSearchVisible","searchInputPcRef","searchInputMbRef","searchText","isMobile","windowSize","width","watch","nV","oV","resize","openSearch","nextTick","focus","closeSearch","goSearchText","trim","goSearch","openCartPanel","right","zIndex","closeCartPanel","openSidebar","closeSidebar","prototype","checkForm","prepareForm","elements","currentElements","undefined","findByName","cnt","check","valid","addToCart","currencyCode","add","products","htmlDecode","sale_price","img_url","product_url","color","removeFromCart","remove","checkout","ProductGTM","productInfo","getProductInfo","customMarketID","eventName","newStringID","String","coupon","item_variant","promotion_name","getProductPrice","mapRecommendData","recommendedData","mapRecommendDataByCategory","sellPrice","mapRecommendViewData","recommendPayload","recommendArray","recommendItem","recommendObj","mapRecommendViewDataByCategory","mapRecommendViewDataByBarcode","mapRecommendDataByBarcode","fireShopContentView","productGTM","productItemInfo","itemID","itemName","eventDataLayer","Head_Button","Category_Button","SubCategory_Button","Product_Id","Product_Name","hash_ID","Email","fireCustomProductViewEvent","currency","fireProductViewGAEvent","fireRecommendViewGAEvent","fireRecommendViewItemListGAEvent","fireAddToCart","fireAddToCartGAEvent","ECDataLayer","setItem","stringify","WishListGTM","getClickItemInfo","itemInfo","fireWishlistEvent","ga4Parameters","fireEventAddToWishList","utmKDetect","itemSpecInfo","KOLValue","utmData","Cookies","CMIDs","shareCode","USCValue","useModalStore","isShow","cancelOrder","orderLoading","atmInfo","refundList","refundDetail","shippingProgress","arrivalNotice","sizeModal","popupAddonDetail","wallet","faCheck","faCancel","foodMarket","cartMarket","address","share","sort","couponPopup","wmstransactionId","specificId","openModal","component","document","body","classList","closeModal","changeShippingType","wId","btnDescriptionEnum","general","addBag","soldOut","preShow","notice","btnFoodDescriptionEnum","btnStyleEnum","useUtmKDetect","useShopContentStore","modalStore","itemDatas","pattern","Pattern","selectedDataID","selectedFoodSpec","userSelectFlavor","btnStyleGenerate","btnDescriptionGenerate","pzBuyNow","brandRecommendIsLoad","brandRecommendData","getBrandRecommendData","OnlyFirstColor","Brand","Page","PageSize","randomBrandSlideArray","Data","arr","temp","ctr","Math","floor","random","recommendIsLoad","randomSlideArray","marketRecommendIsLoad","marketRecommendData","selectedData","allSpecPreOrder","favCustomMarketID","keys","Product","selectedSpec","Key","selectedSpecID","selectedSpecKey","selectSpec","spec","clearSpec","resetCounter","getBtnStatus","stock","Stock","isSoldOut","IsOutOfStock","isPreOrder","PreOrder","selectIsOpen","IsPreShow","PictureContainer","addPre","btnReset","counter","CMID","carAddMainItem","isOpenCartDialog","closeMobileCartDialog","setSelectedFood","foodFlavors","flavor","Selected","Specs","checkHasStock","foodSpec","foodBtnStyle","foodBtnDescription","foodBtnStyleGenerate","foodAddonID","changeFoodAddonID","originID","MarketID","Flavors","Events","ColorID","getRecommendData","_window$CategoryIDs","CategoryIDs","getMarketRecommendData","MarketUrl","image","PictureUrl","originPrice","OriginPrice","sellPriceTW","SellPrice_TW","eventPrice","EventPrice","currentCurrency","CurrentCurrency","getSelectedData","allSpecPreOrderArray","element","every","Boolean","openSelector","changeImg","colorID","noArrivalNotice","UtmTag","ShareCode","gtmTrace","Images","Url","Barcode","code","addCount","maxCount","reduceCount","showMobileCartDialog","selectFoodSpec","changeFlavor","flavorIndex","foodAddToCart","toggleFoodFavorite","isFavorite","IsFavorite","FavoriteAmount","toggleFavorite","FavoriteCount","setEnv","myEquipment","test","navigator","userAgent","innerWidth","smallScreen","breakpoint","isLogin","attr","myCookie","cookieEnabled","myStorage","testKey","storage","removeItem","pageDependReact","windowReload","windowSizeDefault","windowSizeNew","off","reload","opt","imgArray","images","imgArrayOnError","imagesOnError","tilting","lastIndex","videoReg","$win","$body","$elm","imageUrl","source","zbVideo","winT","elmW","elmH","panoH","cy","yPos","$container","height","top","imgTilt","isImg","scrollTop","children","first","left","pageY","animate","opacity","showImage","fadeOut","createElement","src","append","prependTo","getElementById","onloadeddata","newImage","Image","onload","onerror","errorImage","imgPlaceholder","imagePlaceholder","default","closeZoomBox","showButton","fadeIn","onkeydown","keyCode","click","hide","zbClass","appendTo","preventDefault","stopPropagation","useSetEnv","shopContentStore","selectedProductImg","filter","img","Category","zoomPic","newData","ele","VideoUrl","VideoMUrl","useZoomBox","scrollY","selectHeight","eq","emit","__emit","childCounterValue","_useModel","modalRef","trapFocus","modal","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","shiftKey","activeElement","baseComponent","newVal","addEventListener","onBeforeUnmount","removeEventListener","userMail","regex","regexError","useAPIHandler","getNotice","customMarketId","mapSellPrice","async","clickToCart","cart","show","toggleClass","parents","slideToggle","addonCheckArray","nowIndex","newAddonArray","getMarketID","fullID","specCheck","isCheck","tempSpec","CustomMarketID_withoutSize","Cover","EventName","addonEventName","Size","HasStock","Series","BrandName","selectedImgIndex","changeContent","btnCollapse","$selfContent","parent","hasClass","slideUp","slideDown","idx","selectedCustomMarketID","addonData","selectedCount","stockArray","stockArr","specStockCount","getItemDetail","detailData","checkAddonInCart","itemStock","selectSpecs","cartHasMarketItem","allAddonData","mapAddon","addonCheck","addonWarnText","getShoppingData","market","marketId","getPopupDetail","payLoad","IDNumber","_props$marketId","useAddonMappingSpec","mapEvents","_itemDatas$value$Even","_itemDatas$value$Gift","GiftEvents","Limit","showSizeChart","isLoad","matchMedia","matches","stick_in_parent","offset_top","breakpoints","itemsToShow","snapAlign","fireGAEvent","direction","_selectedFoodSpec$val","transferData","recommendedType","recommendedMove","recommendedPage","recommendedProduct","productId","productName","fireRecommendClickGAEvent","val","_itemDatas$value$Even2","Index","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}