{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./src/views/Comsume/ExpireDialog.vue?5706","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./src/views/Comsume/PayCounterDialog/AddressStrip.vue?2429","webpack:///./src/views/Comsume/PayCounterDialog/LabelField.vue?5b6d","webpack:///./src/components/PV/index.vue?182e","webpack:///./src/components/PV/index.vue","webpack:///./src/components/PV/index.vue?5802","webpack:///./src/components/PV/index.vue?f2bc","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./src/views/Address/AddressModel.ts","webpack:///./src/views/Comsume/PayCounter.vue?16a2","webpack:///./src/views/Comsume/PayCounterDialog/index.vue?4ea7","webpack:///./src/views/Comsume/PayCounterDialog/LabelField.vue?4361","webpack:///./src/views/Comsume/PayCounterDialog/LabelField.vue","webpack:///./src/views/Comsume/PayCounterDialog/LabelField.vue?5b91","webpack:///./src/views/Comsume/PayCounterDialog/LabelField.vue?a941","webpack:///./src/views/Comsume/PayCounterDialog/Label.vue?4abf","webpack:///src/views/Comsume/PayCounterDialog/Label.vue","webpack:///./src/views/Comsume/PayCounterDialog/Label.vue?5888","webpack:///./src/views/Comsume/PayCounterDialog/Label.vue","webpack:///./src/views/Comsume/PayCounterDialog/Input.vue?8a14","webpack:///./src/views/Comsume/PayCounterDialog/Input.vue","webpack:///./src/views/Comsume/PayCounterDialog/Input.vue?ed93","webpack:///./src/views/Comsume/PayCounterDialog/Input.vue?23fa","webpack:///./src/views/Comsume/PayCounterDialog/AddressStrip.vue?740b","webpack:///./src/views/Comsume/PayCounterDialog/AddressStrip.vue","webpack:///./src/views/Comsume/PayCounterDialog/AddressStrip.vue?02ed","webpack:///./src/views/Comsume/PayCounterDialog/AddressStrip.vue?42a4","webpack:///./src/hooks/useStorageListener.ts","webpack:///./src/views/Comsume/PayCounterDialog/index.vue","webpack:///./src/views/Comsume/PayCounterDialog/index.vue?0cf6","webpack:///./src/views/Comsume/PayCounterDialog/index.vue?2aef","webpack:///./src/views/Comsume/KsCoinIapListDialog.vue?9130","webpack:///./src/views/Comsume/KsCoinIapListDialog.vue","webpack:///./src/views/Comsume/KsCoinIapListDialog.vue?6208","webpack:///./src/views/Comsume/KsCoinIapListDialog.vue?d4eb","webpack:///./src/views/Comsume/ExpireDialog.vue?d129","webpack:///./src/views/Comsume/ExpireDialog.vue","webpack:///./src/views/Comsume/ExpireDialog.vue?0240","webpack:///./src/views/Comsume/ExpireDialog.vue?9d5a","webpack:///./src/utils/pay.ts","webpack:///./src/views/Comsume/PayCounter.vue","webpack:///./src/views/Comsume/PayCounter.vue?9049","webpack:///./src/views/Comsume/PayCounter.vue?81f9","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./src/views/Comsume/PayCounter.vue?b05c","webpack:///./src/views/Comsume/PayCounterDialog/index.vue?3f9d","webpack:///./src/views/Comsume/PayCounter.vue?e140","webpack:///./src/views/Comsume/PayCounterDialog/Label.vue?6b6b","webpack:///./src/views/Comsume/KsCoinIapListDialog.vue?4fdf","webpack:///./src/views/Comsume/PayCounterDialog/Input.vue?ec5c","webpack:///./node_modules/lodash/isSymbol.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","isObjectLike","isObject","type","objectToString","freeGlobal","freeSelf","self","root","Function","nullTag","undefinedTag","baseGetTag","render","_vm","this","_h","$createElement","_c","_self","_t","staticRenderFns","defineComponent","name","components","props","tlBtn","Boolean","default","icon","String","params","async","setup","context","computed","log","useApolloModel","HomeModel","useLog","report","getServerExpTag","exptag","isPV","immediate","$route","query","page","meta","pv","location","href","handleVisibilityChange","document","visibilityState","yoda","show","onClick","emit","test","pathname","$close","isAndroid","watch","isEmpty","JSON","stringify","deep","onMounted","addEventListener","onUnmounted","removeEventListener","component","global","AddressModel","addressListQuery","mutate","data","addressList","find","address","isDefault","addressId","length","error","deleteAddressMutation","getAddressList","courseAddressDTO","addAddressMutation","updateAddressMutation","saveAndUseAddressMutation","giftID","updateAllGift","BaseModel","__decorate","restMutation","url","method","MutationResult","variables","directives","rawName","expression","staticClass","on","$event","preventDefault","attrs","isShowPayCounterDialog","isPaying","model","nonage","product","price","originPrice","discount","userBalance","useKscoinPay","vouchers","inSecKill","close","pay","ksCoinIapList","isRefreshing","productType","chargeSuccess","chargeFail","fetchOrderPrepayInfo","_e","commodityTradeInfo","expireSubmit","action","modifiers","visible","$emit","_v","_s","title","form","key","callback","$$v","$set","required","message","addressStr","useSecKillPrice","canDiscount","discountDetail","showAddress","disabled","handlePay","btnText","_g","_b","$props","$listeners","label","KTField","Field","dependencies","Array","rules","class","bordered","domProps","formatValue","handleInput","Number","suffix","target","includes","replace","slice","empty","handleClick","Strip","ctx","$go","useStorageListener","cb","storageKey","handleStorageChange","window","Drawer","Price","KTInput","Input","KTForm","Form","LabelField","AddressStrip","KTButton","Label","courseId","lessonId","addressModel","useForm","reactive","remark","consignee","mobile","province","city","district","gifts","addresses","parse","newValue","useForeground","toUnitPrice","Math","round","BearerTypeMap","BearerType","PLATFORM","SHOP","discountValueMap","voucher","restPrice","DiscountType","FREE","PART","discountValue","SALE","map","discountType","bearerType","join","logInfo","ext","isCoinEnough","vis","is_coupon","isInYoda","ksLog","sendCountTag","handleClose","$log2","validateFields","validateMessages","content","errors","giftAddressId","ref","coinNeeded","_l","item","id","active","activeItem","recommend","recommendItem","selectKsCoin","yDou","_f","fen","loading","isLoading","isCharging","toCharge","ksCoin","KsCoinIapListDialog","dollar","couponFen","couponYDou","balance","max","oldValue","$refs","mask","style","background","setSlideBack","$sendLog","iapItemName","disableSuccessAlert","successFn","ret","failFn","err","completeFn","onMessageHandler","res","messageType","messageStatus","parent","postMessage","Vue","Prop","Promise","Watch","Component","toClose","stopPropagation","priceInterval","selectIndex","intervalList","formatInterval","index","arg","selectInterval","submitInterval","ExpireDialog","submitting","timeStamp","Date","getTime","expireTime","info","skuList","specs","floor","dayjs","format","inset","minPrice","maxPrice","minKscoinPrice","maxKscoinPrice","selectInfo","unitPrice","kscoinPrice","waitLongTime","interval","CommodityTradeInfo","payForQa","professionId","questionId","channel","resolve","reject","orderId","expTag","buyQa","then","pay_client_type","new_pay_data","merchant_id","out_order_no","order_id","merchantId","outOrderNo","payForCourse","dc","commodityId","voucherList","courseDistributionId","activityInfo","buyCourse","error_msg","checkPayQa","times","checkQaOrder","attemptedTimes","setTimeout","Error","checkPayCourse","checkCourseOrder","setSettingEntryForCourse","compareV","compareVersionByOs","kwaiAppVersion","kpn","allowSettingEntry","PayCounter","isShowKsCoinIapListDialog","showExpire","userStatus","userBanned","decodeURIComponent","extInfo","num","toFixed","relatedId","logWhenPayCounterShow","commodityName","fetchKsCoinIapList","getCourseDetail","detailRes","recommendedCombinationVoucherList","actualPrice","secKillPrice","isShowExpireDialog","handleExpireDiscount","checkUserBanned","reverse","lastSpecs","showAlertDialog","confirmBtnText","onConfirm","success","doPayForQa","doPayForCourse","Sentry","scope","setExtra","typeMap","payResult","cancel","fail","encodeURIComponent","feedbackUrl","stringifyQuery","notifyNative","serverTimeAdjustment","getQaPreOrderInfo","profession","showAccountExceptionDialog","onPaySuccess","catch","finally","hide","orderParam","voucherId","promotionPlatform","isSecKillExpire","activityId","showConfirmDialog","cancelBtnText","payForCourseHandler","onCancel","toUpperCase","verifyResult","fn","courseSettingInfo","text","getOrderPrepayInfo","val","newVal","PayCounterDialog","PV","symbolTag","isSymbol"],"mappings":"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","file":"js/PayCounter.1e44fcb6.js","sourcesContent":["var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExpireDialog.vue?vue&type=style&index=0&id=1ed8a09c&prod&lang=stylus&scoped=true&\"","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressStrip.vue?vue&type=style&index=0&id=0fbdb970&prod&lang=stylus&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LabelField.vue?vue&type=style&index=0&id=8b765c1a&prod&lang=stylus&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { isAndroid } from '@/utils/env';\nimport {\n defineComponent,\n watch,\n ref,\n onMounted,\n onUnmounted,\n computed,\n} from '@vue/composition-api';\nimport HomeModel from '@/views/Home/model/index';\nimport { useApolloModel } from 'vue-apollo-model';\nimport { useLog } from '@/logger';\nimport { getServerExpTag } from '@/utils/exptag';\nimport yoda from '@/yoda';\n\nexport default defineComponent({\n name: 'PV',\n components: {},\n props: {\n tlBtn: { type: Boolean, default: false },\n icon: { type: String, default: 'back' },\n /**\n * pv page\n */\n name: String, // 可以不传,会默认使用route.meta.pv || location.href\n /**\n * pv 参数\n */\n params: {\n type: Object,\n default: () => ({}),\n },\n /**\n * 参数是否异步获取\n */\n async: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, context) {\n const params = computed(() => props.params);\n const model = useApolloModel(HomeModel);\n const log = useLog();\n const report = async type => {\n const exptag = await getServerExpTag();\n log(\n {\n isPV: true,\n immediate: type !== 'enter', // enter使用collect,其他采用立即收集\n params: {\n exptag,\n ...context.root.$route.query,\n ...params.value,\n },\n type,\n page: props.name || context.root.$route.meta.pv || location.href,\n },\n 'show',\n );\n };\n const handleVisibilityChange = () => {\n report(document.visibilityState);\n };\n\n if (props.tlBtn) {\n yoda('kwai', 'setTopLeftBtn', {\n show: true,\n icon: props.icon,\n onClick() {\n report('leave');\n context.emit('click');\n if (/\\/detail\\/\\d+/.test(location.pathname)) {\n context.root.$close();\n }\n },\n });\n if (isAndroid && !/\\/detail\\/\\d+/.test(location.pathname)) {\n yoda('kwai', 'setPhysicalBackButton', {\n onClick() {\n report('leave');\n context.emit('click');\n },\n });\n }\n }\n // 异步参数\n watch(\n () => props.params,\n () => {\n // 利用JSON.stringify会忽略值为undefined的特性(只能做到少上报几次 并不能完全做到只报一次)\n const isEmpty = JSON.stringify(props.params) === '{}';\n if (props.async && !isEmpty) {\n // params.value = props.params;\n // 触发loaded\n report('enter');\n }\n },\n {\n deep: true,\n },\n );\n onMounted(() => {\n if (!props.async) {\n report('enter');\n }\n document.addEventListener('visibilitychange', handleVisibilityChange);\n });\n onUnmounted(() => {\n report('leave');\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n });\n return {};\n },\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=57a5a8da&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57a5a8da\",\n null\n \n)\n\nexport default component.exports","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","// TODO 到后面用model把地址列表页面 /address/add /address/list 也用这个替换掉\nimport { BaseModel, MutationResult, QueryResult, restMutation, restQuery } from 'vue-apollo-model';\nimport { Toast } from '@ks/sharp-ui';\n\nexport interface Address {\n addressId?: number;\n consignee: string;\n mobile: string;\n provinceCode?: number;\n province?: string;\n cityCode?: number;\n city?: string;\n districtCode?: number;\n district?: string;\n townCode?: number;\n town?: string;\n address: string;\n isDefault: 0 | 1; // 是默认地址为1,不是默认地址为0\n createTime?: number;\n updateTime?: number;\n}\n\nexport default class AddressModel extends BaseModel {\n @restMutation({\n url: '/rest/lightks/wd/address/list',\n method: 'post',\n })\n addressListQuery!: MutationResult;\n\n getAddressList() {\n this.addressListQuery.mutate(null);\n }\n\n get addressList() {\n return this.addressListQuery.data.addressList || [];\n }\n get defaultAddress() {\n return this.addressList.find(address => address.isDefault) || this.addressList[0];\n }\n\n @restMutation({\n url: '/rest/lightks/wd/address/delete',\n method: 'post',\n variables(params) {\n return params;\n },\n })\n deleteAddressMutation!: MutationResult<{ addressId: string }, Res>;\n\n async deleteAddress(addressId: string) {\n if (this.addressList.length <= 1) {\n Toast.error('收货地址不能为空,无法删除');\n } else {\n await this.deleteAddressMutation.mutate({ addressId });\n this.getAddressList();\n }\n }\n\n @restMutation({\n url: '/rest/lightks/wd/address/add',\n method: 'post',\n variables(params) {\n return params;\n },\n })\n addAddressMutation!: MutationResult<{ courseAddressDTO: Address }, Res>;\n\n addAddress(courseAddressDTO: Address) {\n return this.addAddressMutation.mutate({ courseAddressDTO });\n }\n\n @restMutation({\n url: '/rest/lightks/wd/address/update',\n method: 'post',\n variables(params) {\n return params;\n },\n })\n updateAddressMutation!: MutationResult<{ courseAddressDTO: Address }, Res>;\n\n updateAddress(courseAddressDTO: Address) {\n return this.updateAddressMutation.mutate({ courseAddressDTO });\n }\n\n @restMutation({\n url: '/rest/lightks/wd/course/gift/saveAndUseAddress',\n method: 'post',\n variables(params) {\n return params;\n },\n })\n saveAndUseAddressMutation!: MutationResult<\n { courseAddressDTO: Address; giftID: string; updateAllGift: boolean },\n Res\n >;\n\n saveAndUseAddress(address: Address) {\n return this.saveAndUseAddressMutation.mutate({\n courseAddressDTO: address,\n giftID: '',\n updateAllGift: true,\n });\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('PV',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Page']),expression:\"['Page']\"}],staticClass:\"pay-counter\",on:{\"touchmove\":function($event){$event.preventDefault();}}},[_c('PayCounterDialog',{attrs:{\"visible\":_vm.isShowPayCounterDialog,\"isPaying\":_vm.isPaying,\"nonage\":_vm.model.nonage,\"model\":_vm.model,\"name\":_vm.product.name,\"price\":_vm.product.price,\"originPrice\":_vm.product.originPrice,\"discount\":_vm.product.discount,\"userBalance\":_vm.userBalance,\"useKscoinPay\":_vm.model.useKscoinPay,\"vouchers\":_vm.model.vouchers,\"useSecKillPrice\":_vm.model.inSecKill},on:{\"close\":_vm.close,\"pay\":function($event){return _vm.pay($event)}}}),(_vm.isShowKsCoinIapListDialog)?_c('KsCoinIapListDialog',{attrs:{\"ksCoinIapList\":_vm.ksCoinIapList,\"userBalance\":_vm.userBalance,\"ksCoin\":_vm.product.price,\"isRefreshing\":_vm.isRefreshing,\"productType\":_vm.productType},on:{\"chargeSuccess\":_vm.chargeSuccess,\"chargeFail\":_vm.chargeFail,\"refreshBalance\":_vm.fetchOrderPrepayInfo,\"close\":_vm.close}}):_vm._e(),(_vm.isShowExpireDialog)?_c('ExpireDialog',{attrs:{\"commodityTradeInfo\":_vm.model.commodityTradeInfo,\"useKscoinPay\":_vm.useKscoinPay},on:{\"close\":_vm.close,\"to-submit\":_vm.expireSubmit}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Drawer',{directives:[{name:\"e-log\",rawName:\"v-e-log.show\",value:({ action: 'CASHIER_POPUP' }),expression:\"{ action: 'CASHIER_POPUP' }\",modifiers:{\"show\":true}}],staticClass:\"cashier-drawer\",attrs:{\"placement\":\"bottom\",\"visible\":_vm.visible},on:{\"update:visible\":function($event){return _vm.$emit('update:visible', $event)},\"leave\":function($event){return _vm.$emit('leave')}}},[_c('h2',{staticClass:\"title\"},[_c('span',{staticClass:\"title-left iconfont icon-arrow-right-link\",on:{\"click\":function($event){return _vm.$emit('close')}}}),_c('span',{staticClass:\"title-content\"},[_vm._v(_vm._s(_vm.title))]),_c('span',{staticClass:\"title-right\"})]),(_vm.showAddress)?_c('KTForm',{staticClass:\"gift-area\",attrs:{\"data\":_vm.data,\"form\":_vm.form}},[_c('LabelField',{key:\"remark\",attrs:{\"name\":\"remark\",\"label\":\"留言\"}},[_c('KTInput',{attrs:{\"maxlength\":\"100\",\"placeholder\":\"选填,建议先与卖家协商一致\"},model:{value:(_vm.data.remark),callback:function ($$v) {_vm.$set(_vm.data, \"remark\", $$v)},expression:\"data.remark\"}})],1),_c('LabelField',{key:\"address\",attrs:{\"name\":\"address\",\"label\":\"地址\",\"rules\":{ required: true, message: '请添加地址' }}},[_c('AddressStrip',{attrs:{\"value\":_vm.addressStr}})],1)],1):_vm._e(),_c('div',{staticClass:\"info-area\"},[_c('Label',{attrs:{\"label\":\"商品名称\"}},[_vm._v(_vm._s(_vm.name))]),_c('Label',{attrs:{\"label\":_vm.useSecKillPrice ? '秒杀价格' : '商品价格'}},[_c('Price',{attrs:{\"ksCoin\":_vm.useKscoinPay,\"value\":_vm.canDiscount ? _vm.originPrice : _vm.price}})],1),(_vm.canDiscount)?_c('Label',{staticClass:\"discount\",attrs:{\"label\":\"可用优惠\"}},[_vm._v(\"\\n \"+_vm._s(_vm.discountDetail)+\"\\n \")]):_vm._e(),(_vm.useKscoinPay)?_c('div',{staticClass:\"deposit\"},[_vm._v(\"剩余\"+_vm._s(_vm.userBalance)+\"快币\")]):_vm._e()],1),_c('footer',{staticClass:\"footer\"},[(_vm.showAddress && !_vm.data.address)?_c('div',{staticClass:\"footer-warn\"},[_vm._v(\"\\n 请尽快添加地址,不要错过发货哦\\n \")]):_vm._e(),_c('div',{staticClass:\"footer-operate\"},[_c('div',{staticClass:\"left\"},[(_vm.canDiscount)?_c('span',{staticClass:\"desc\"},[_vm._v(\" 折后价格 \")]):_vm._e(),_c('div',{staticClass:\"price\"},[(!_vm.useKscoinPay)?_c('span',{staticClass:\"unit\"},[_vm._v(\"¥\")]):_vm._e(),_c('span',{staticClass:\"numeric\"},[_vm._v(_vm._s(_vm.price / (_vm.useKscoinPay ? 10 : 100)))]),(_vm.useKscoinPay)?_c('span',{staticClass:\"unit\"},[_vm._v(\"快币\")]):_vm._e()])]),_c('KTButton',{attrs:{\"disabled\":_vm.disabled,\"size\":\"large\",\"type\":\"primary\"},on:{\"click\":_vm.handlePay}},[_vm._v(\"\\n \"+_vm._s(_vm.btnText)+\"\\n \")])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('KTField',_vm._g(_vm._b({staticClass:\"label-field\"},'KTField',_vm.$props,false),_vm.$listeners),[_c('div',{staticClass:\"label\"},[_vm._t(\"label\",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_c('div',{staticClass:\"control\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, PropType } from '@vue/composition-api';\nimport { Field } from '@/components/Form';\n\nexport default defineComponent({\n name: 'Label',\n components: {\n KTField: Field,\n },\n props: {\n label: String,\n name: String,\n component: String,\n dependencies: {\n type: Array as PropType,\n default: () => [],\n },\n rules: {\n type: [Array, Object],\n default: () => [],\n },\n },\n setup() {\n return {};\n },\n});\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LabelField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LabelField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LabelField.vue?vue&type=template&id=8b765c1a&scoped=true&\"\nimport script from \"./LabelField.vue?vue&type=script&lang=ts&\"\nexport * from \"./LabelField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LabelField.vue?vue&type=style&index=0&id=8b765c1a&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8b765c1a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"label-root\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.label))]),_c('span',{staticClass:\"content\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Label.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Label.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Label.vue?vue&type=template&id=52a00975&scoped=true&\"\nimport script from \"./Label.vue?vue&type=script&lang=js&\"\nexport * from \"./Label.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Label.vue?vue&type=style&index=0&id=52a00975&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52a00975\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{staticClass:\"input-root\",class:{ 'input-root-bordered': _vm.bordered, 'input-root-disabled': _vm.disabled },attrs:{\"type\":_vm.type,\"disabled\":_vm.disabled},domProps:{\"value\":_vm.formatValue},on:{\"input\":_vm.handleInput}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { computed, defineComponent } from '@vue/composition-api';\nexport default defineComponent({\n name: 'Input',\n components: {},\n props: {\n value: {\n type: [String, Number],\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n bordered: {\n type: Boolean,\n default: false,\n },\n suffix: {\n type: String,\n default: '',\n },\n type: {\n type: String,\n default: 'text',\n },\n },\n setup(props, context) {\n const handleInput = (e: Event) => {\n // @ts-ignore\n let value = e.target.value;\n if (value.includes(props.suffix)) {\n value = value.replace(props.suffix, '');\n }\n if (value === String(props.value)) {\n // 删除了suffix\n value = value.slice(0, -1);\n }\n context.emit('input', value);\n };\n const formatValue = computed(() => props.value && props.value + props.suffix);\n return {\n handleInput,\n formatValue,\n };\n },\n});\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Input.vue?vue&type=template&id=bda19bb0&scoped=true&\"\nimport script from \"./Input.vue?vue&type=script&lang=ts&\"\nexport * from \"./Input.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Input.vue?vue&type=style&index=0&id=bda19bb0&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bda19bb0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Strip',{staticClass:\"address-strip\",class:{ empty: !_vm.value },on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n \"+_vm._s(_vm.value || '请添加收货地址')+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent } from '@vue/composition-api';\nimport Strip from '@/components/Strip/index.vue';\n\nexport default defineComponent({\n name: 'AddressStrip',\n components: {\n Strip,\n },\n props: {\n value: String,\n },\n setup(props, ctx) {\n const handleClick = () => {\n if (props.value) {\n ctx.root.$go('/address/list?type=select');\n } else {\n ctx.root.$go('/address/add?type=select');\n }\n };\n return { handleClick };\n },\n});\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressStrip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressStrip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddressStrip.vue?vue&type=template&id=0fbdb970&scoped=true&\"\nimport script from \"./AddressStrip.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddressStrip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AddressStrip.vue?vue&type=style&index=0&id=0fbdb970&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fbdb970\",\n null\n \n)\n\nexport default component.exports","import { onUnmounted } from '@vue/composition-api';\nexport default function useStorageListener(cb: (e: StorageEvent) => void, storageKey?: string) {\n const handleStorageChange = (e: StorageEvent) => {\n if (storageKey) {\n if (e.key === storageKey) {\n cb(e);\n }\n } else {\n cb(e);\n }\n };\n window.addEventListener('storage', handleStorageChange);\n onUnmounted(() => {\n window.removeEventListener('storage', handleStorageChange);\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {\n defineComponent,\n PropType,\n onMounted,\n computed,\n watch,\n reactive,\n ref,\n} from '@vue/composition-api';\nimport Drawer from '@/kt-components/Drawer/index.vue';\nimport { Button } from '@knowledge/kt-ui';\nimport Form, { useForm } from '@/components/Form';\nimport LabelField from './LabelField.vue';\nimport Label from './Label.vue';\nimport Input from './Input.vue';\nimport AddressStrip from './AddressStrip.vue';\nimport { useApolloModel } from 'vue-apollo-model';\nimport AddressModel, { Address } from '@/views/Address/AddressModel';\nimport useForeground from '@/hooks/useForeground';\nimport { Toast } from '@ks/sharp-ui';\nimport Price from '@/components/Price/index.vue';\nimport { VoucherData, BearerType, DiscountType } from '@/views/Detail/model';\nimport { useLog } from '@/logger';\nimport useStorageListener from '@/hooks/useStorageListener';\nimport yoda from '@/yoda';\n\nexport default defineComponent({\n name: 'PayCounterDialog',\n components: {\n Drawer,\n Price,\n KTInput: Input,\n KTForm: Form,\n LabelField,\n AddressStrip,\n KTButton: Button,\n Label,\n },\n props: {\n courseId: {\n type: [String, Number],\n },\n model: {\n type: Object,\n required: true,\n },\n lessonId: Number,\n nonage: Boolean, // 未成年\n name: String, // 支付名称\n originPrice: {\n type: Number, // 原价\n required: true,\n },\n price: {\n type: Number, // 实际支付价格\n required: true,\n },\n userBalance: {\n type: Number, // 账户余额\n required: true,\n },\n vouchers: {\n type: Array as PropType,\n default: () => [],\n },\n visible: Boolean,\n isPaying: Boolean, // 控制按钮点击\n useKscoinPay: Boolean,\n useSecKillPrice: Boolean, // 秒杀价\n },\n setup(props, ctx) {\n const log = useLog();\n const addressModel = useApolloModel(AddressModel);\n const form = useForm();\n const data = reactive<{\n remark: string;\n pay: string;\n address?: Address;\n }>({\n remark: '',\n pay: 'wechat',\n address: undefined,\n });\n // 完整的地址显示\n const addressStr = computed(() => {\n if (data.address) {\n return `${data.address.consignee} ${data.address.mobile} ${String(\n data.address.province,\n ) +\n String(data.address.city) +\n data.address.district +\n data.address.address}`;\n }\n return undefined;\n });\n // 是否需要填写地址\n const showAddress = computed(() => {\n return !!props.model.gifts.length;\n });\n // 收银台title\n const title = computed(() => (props.model.gifts.length ? '领取实物赠品' : '收银台'));\n watch(\n () => addressModel.addressList,\n addresses => {\n // 没有地址,默认地址列表中的第一个\n if (!data.address && addresses.length > 0) {\n data.address = addresses[0];\n }\n },\n { immediate: true },\n );\n // 选择地址的监听\n useStorageListener(e => {\n data.address = JSON.parse(e.newValue!);\n }, 'selectedAddress');\n\n useForeground(() => {\n addressModel.getAddressList();\n });\n\n const toUnitPrice = (price: number, useKscoinPay: boolean) => {\n return useKscoinPay\n ? `${Math.round(price / 10 || 0)}快币`\n : `¥${Math.round((price / 100 || 0) * 10) / 10}`;\n };\n const btnText = computed(() => {\n if (props.useKscoinPay) {\n return props.userBalance >= props.price / 10 ? '立即支付' : '余额不足,充值并支付';\n }\n return '立即支付';\n });\n const canDiscount = computed(() => {\n return props.vouchers.length > 0;\n });\n\n // 优惠后的价格基数\n const discountDetail = computed(() => {\n const BearerTypeMap = {\n [BearerType.PLATFORM]: '平台券',\n [BearerType.SHOP]: '商家券',\n };\n const discountValueMap = (voucher: VoucherData, restPrice: number) => {\n return {\n [DiscountType.FREE]: props.originPrice - 10,\n [DiscountType.PART]: voucher.discountValue,\n [DiscountType.SALE]: (restPrice * (100 - voucher.discountValue)) / 100,\n };\n };\n let restPrice = props.originPrice;\n\n return props.vouchers\n .map(voucher => {\n const discount = discountValueMap(voucher, restPrice)[voucher.discountType];\n // 在多个券存在的情况下,折扣券可用价格可能需要在优惠后价格基数进行\n if (voucher.discountType === 3) {\n restPrice = (restPrice * voucher.discountValue) / 100;\n } else if (voucher.discountType === 2) {\n restPrice = restPrice - voucher.discountValue;\n }\n\n return (\n BearerTypeMap[voucher.bearerType] +\n toUnitPrice(discount, Boolean(props.useKscoinPay))\n );\n })\n .join('+');\n });\n // button是否能点击\n const disabled = computed(() => {\n // 执行中不可点,余额不足且为成年不可点\n return props.isPaying || (props.userBalance < props.price / 10 && props.nonage);\n });\n const logInfo = computed(() => {\n const ext: Record = {\n isCoinEnough: props.userBalance >= props.price / 10,\n };\n if (canDiscount.value) {\n // TODO: 收银台埋点\n // ext.coupon_id = props.coupon.voucherId ?? '';\n // ext.activity_id = this.coupon.activityId;\n // ext.course_id = this.courseId;\n // ext.lesson_id = this.lessonId || undefined;\n }\n return ext;\n });\n\n watch(\n () => props.visible,\n vis => {\n if (vis) {\n showAddress.value && addressModel.getAddressList();\n log(\n {\n action: 'CASHIER_POPUP',\n params: {\n is_coupon: props.vouchers.length && 1,\n },\n },\n 'show',\n );\n }\n },\n { immediate: true, deep: true },\n );\n\n onMounted(() => {\n // Log: 快币收银台\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_KsCoinPayCounterDialog');\n }\n });\n\n const handleClose = () => {\n if (props.isPaying) {\n return;\n }\n ctx.root.$log2('Button', 'PayCounter_Close_Btn', 'Impression', logInfo.value);\n ctx.emit('close');\n };\n // 支付\n const handlePay = async () => {\n log(\n {\n action: 'CASHIER_POPUP',\n params: {\n is_coupon: props.vouchers.length && 1,\n address: data.address?.addressId,\n },\n },\n 'click',\n );\n if (showAddress.value) {\n const validateMessages = await form.validateFields();\n if (validateMessages.length) {\n Toast.show({\n content: validateMessages[0].errors[0],\n });\n } else {\n ctx.emit('pay', {\n giftAddressId: data.address?.addressId,\n remark: data.remark,\n });\n }\n } else {\n ctx.emit('pay');\n }\n };\n return {\n data,\n form,\n title,\n showAddress,\n disabled,\n addressStr,\n canDiscount,\n btnText,\n discountDetail,\n handlePay,\n handleClose,\n };\n },\n});\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5021daf1&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=5021daf1&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5021daf1\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"iap-list-dialog\",on:{\"touchmove\":function($event){$event.preventDefault();}}},[_c('div',{ref:\"mask\",staticClass:\"mask\"}),_c('div',{staticClass:\"dialog\"},[_c('div',{staticClass:\"layer-title ks-1px-b\"},[_vm._v(\"\\n 快币充值\"),_c('span',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'KsCoinIapList_Close_Btn']),expression:\"['Button', 'KsCoinIapList_Close_Btn']\"}],staticClass:\"iconfont icon-close\",on:{\"click\":_vm.close}})]),_c('div',{staticClass:\"charge-title\"},[_c('span',{staticClass:\"left\"},[_vm._v(\"本次购买还需要\"+_vm._s(_vm.coinNeeded)+\"快币\")])]),_c('div',{staticClass:\"kscoin-list\"},_vm._l((_vm.ksCoinIapList),function(item){return _c('div',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'KsCoinIapItem']),expression:\"['Button', 'KsCoinIapItem']\"}],key:item.id,staticClass:\"kscoin-item\",class:{\n active: item.id === _vm.activeItem.id,\n recommend: item.id === _vm.recommendItem.id,\n },on:{\"click\":function($event){return _vm.selectKsCoin(item)}}},[_c('div',{staticClass:\"ks-coin\"},[_c('div',{staticClass:\"ks-coin-cnt\"},[_vm._v(_vm._s(item.yDou))]),_c('div',{staticClass:\"ks-coin-unit\"},[_vm._v(\"快币\")])]),_c('div',{staticClass:\"price\"},[_vm._v(_vm._s(_vm._f(\"price\")(item.fen))+\"元\")])])}),0),_c('div',{staticClass:\"balance-wrap\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"余额:\")]),_c('span',{staticClass:\"balance kscoin-string\"},[_vm._v(_vm._s(_vm.userBalance)+\"快币\")]),_c('span',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'KsCoinIapList_Balance_Refresh']),expression:\"['Button', 'KsCoinIapList_Balance_Refresh']\"}],staticClass:\"iconfont icon-replay\",class:{ loading: _vm.isLoading || _vm.isRefreshing },on:{\"click\":function($event){return _vm.$emit('refreshBalance')}}})]),_c('div',{staticClass:\"charge-btn\"},[_c('sp-button',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'KsCoinIapList_Pay_Btn']),expression:\"['Button', 'KsCoinIapList_Pay_Btn']\"}],attrs:{\"disabled\":_vm.isRefreshing || !_vm.activeItem.id || _vm.isLoading || _vm.isCharging},on:{\"click\":_vm.toCharge}},[_vm._v(\"\\n \"+_vm._s(_vm.userBalance + _vm.activeItem.yDou >= _vm.ksCoin ? '充值并购买' : '充值'))])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator';\nimport { setSlideBack } from '@/utils/index';\nimport yoda from '@/yoda';\n\ninterface IapItem {\n id: number;\n name: string;\n yDou: number;\n fen: number;\n dollar: string;\n couponFen: number;\n couponYDou: number;\n}\n\n@Component\nexport default class KsCoinIapListDialog extends Vue {\n @Prop({\n type: Boolean,\n default: false,\n })\n isRefreshing;\n @Prop({\n type: Array,\n default: () => [],\n })\n ksCoinIapList;\n @Prop({\n type: Number,\n default: 0,\n })\n ksCoin;\n @Prop({\n type: Number,\n default: 0,\n })\n userBalance;\n @Prop({\n type: String,\n default: 'paidContent',\n })\n productType;\n @Prop({\n type: Promise,\n })\n ext;\n\n isLoading = false;\n isCharging = false;\n activeItem: IapItem = {\n id: -1,\n name: '',\n yDou: -1,\n fen: -1,\n dollar: '',\n couponFen: -1,\n couponYDou: -1,\n };\n balance = 0;\n\n get coinNeeded() {\n return Math.max(this.ksCoin / 10 - this.userBalance, 0);\n }\n get recommendItem() {\n const length = this.ksCoinIapList.length;\n if (!length) {\n return {};\n }\n return (\n this.ksCoinIapList.find(item => item.yDou >= this.coinNeeded) ||\n this.ksCoinIapList[length - 1]\n );\n }\n mounted() {\n // Log: 快币充值收银台\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_KsCoinIapDialog');\n }\n }\n @Watch('ksCoinIapList', { immediate: true })\n initActiveItem(newValue, oldValue) {\n this.activeItem = this.recommendItem;\n }\n selectKsCoin(item) {\n this.activeItem = item as IapItem;\n }\n close() {\n // ios关闭页面 会有个向下滑动动画\n (this.$refs.mask as HTMLElement).style.background = 'transparent';\n this.$emit('close');\n }\n toCharge() {\n this.isCharging = true;\n setSlideBack(false);\n // fen iapItemName 和ksCoin\n this.$sendLog.pay({\n name: 'DETAIL_KSCOINCHARGE_START',\n ext: this.activeItem,\n });\n const params = {\n fen: this.activeItem.fen,\n ksCoin: this.activeItem.yDou,\n iapItemName: this.activeItem.name,\n disableSuccessAlert: true,\n };\n const successFn = ret => {\n this.$emit(\n 'chargeSuccess',\n ret,\n this.userBalance + this.activeItem.yDou >= this.ksCoin,\n );\n };\n const failFn = err => {\n if (+err.result !== 0) {\n this.$sendLog.pay({\n name: 'DETAIL_KSCOINCHARGE_FAIL',\n ext: { ...this.activeItem, ...err },\n });\n }\n this.$emit('chargeFail', err);\n };\n const completeFn = () => {\n this.isCharging = false;\n setSlideBack(true);\n if (this.productType === 'eduqa') {\n window.removeEventListener('message', onMessageHandler, false);\n }\n };\n function onMessageHandler(res) {\n if (res.messageType === 'ksBridge.couponPay') {\n window.removeEventListener('message', onMessageHandler, false);\n switch (res.data.messageStatus) {\n case 'success':\n successFn(res.data.ret);\n break;\n case 'fail':\n failFn(res.data.ret);\n break;\n case 'complete':\n completeFn();\n break;\n }\n }\n }\n if (this.productType === 'eduqa') {\n window.addEventListener('message', onMessageHandler, false);\n window.parent.postMessage(\n {\n messageType: 'ksBridge.couponPay',\n params,\n },\n '*',\n );\n } else {\n yoda('kwai', 'couponPay', params, res => {\n completeFn();\n if (res.result === 1) {\n successFn(res);\n } else {\n failFn(res);\n }\n });\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KsCoinIapListDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KsCoinIapListDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./KsCoinIapListDialog.vue?vue&type=template&id=6786ee92&scoped=true&\"\nimport script from \"./KsCoinIapListDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./KsCoinIapListDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./KsCoinIapListDialog.vue?vue&type=style&index=0&id=6786ee92&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6786ee92\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Card', 'ExpireDialog_Mask']),expression:\"['Card', 'ExpireDialog_Mask']\"}],staticClass:\"expire-dialog\",on:{\"click\":_vm.toClose,\"touchmove\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"dialog\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"dialog-header\"},[_c('span',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'ExpireDialog_Close_Btn']),expression:\"['Button', 'ExpireDialog_Close_Btn']\"}],staticClass:\"iconfont icon-close\",attrs:{\"role\":\"button\"},on:{\"click\":_vm.toClose}}),_c('div',{staticClass:\"price-interval\"},[(!_vm.useKscoinPay)?_c('span',{staticClass:\"price-rmb\"},[_vm._v(\"¥\")]):_vm._e(),_c('span',{staticClass:\"price-val\"},[_vm._v(_vm._s(_vm.priceInterval))]),(_vm.useKscoinPay)?_c('span',{staticClass:\"price-unit\"},[_vm._v(\"快币\")]):_vm._e()]),_c('span',{staticClass:\"select-tip\"},[_vm._v(_vm._s(_vm.selectIndex === -1 ? '请选择观看有效期' : (\"已选择:\" + (_vm.intervalList[_vm.selectIndex]))))]),(_vm.isShowIntervalMsg)?_c('span',{staticClass:\"interval-info\"},[_vm._v(\"有效期至\"+_vm._s(_vm.formatInterval))]):_vm._e()]),_c('div',{staticClass:\"dialog-selection\"},[_c('div',{staticClass:\"selection-title\"},[_vm._v(\"观看有效期\")]),_c('div',{staticClass:\"selection-wrap\"},_vm._l((_vm.intervalList),function(item,index){return _c('div',{directives:[{name:\"log\",rawName:\"v-log:[item]\",value:(['Button', 'ExpireDialog_Interval_Selection']),expression:\"['Button', 'ExpireDialog_Interval_Selection']\",arg:item}],key:item,staticClass:\"selection-item\",class:{ active: _vm.selectIndex === index },attrs:{\"index\":index},domProps:{\"textContent\":_vm._s(item)},on:{\"click\":function($event){return _vm.selectInterval(index)}}})}),0)]),_c('sp-button',{directives:[{name:\"log\",rawName:\"v-log\",value:(['Button', 'ExpireDialog_Sure_Btn']),expression:\"['Button', 'ExpireDialog_Sure_Btn']\"}],staticClass:\"dialog-sure-btn\",attrs:{\"disabled\":_vm.selectIndex === -1,\"type\":\"primary\"},on:{\"click\":_vm.submitInterval}},[_vm._v(\"\\n 确定\\n \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Toast } from '@ks/sharp-ui';\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator';\nimport dayjs from 'dayjs';\n// eslint-disable-next-line\nimport type { CommodityTradeInfo } from '@/views/Detail/model';\nimport yoda from '@/yoda';\n\n@Component\nexport default class ExpireDialog extends Vue {\n @Prop(Object)\n commodityTradeInfo!: CommodityTradeInfo;\n @Prop(Boolean)\n useKscoinPay;\n name: string = 'expire-dialog';\n intervalList: string[] = [];\n selectIndex: number = -1;\n submitting: boolean = false;\n timeStamp: number = new Date().getTime();\n expireTime: number = -1;\n\n @Watch('commodityTradeInfo', { deep: true, immediate: true })\n onCommodityTradeInfo(info) {\n let { skuList = [] } = info || {};\n this.intervalList =\n (skuList &&\n skuList.map(({ specs = {} as any }) => {\n // 目前specs只会返回一个所以只取第一个,具体原因参考电商商品,返回对象\n if (+specs[1].value === -1) {\n return '永久有效';\n }\n return `${Math.floor(+specs[1].value / (1000 * 60 * 60 * 24))}天`;\n })) ||\n [];\n }\n get selectInfo() {\n return (this.selectIndex !== -1 && this.commodityTradeInfo.skuList[this.selectIndex]) || null;\n }\n get formatInterval() {\n return dayjs(this.expireTime).format('YYYY/MM/DD HH:mm:ss');\n }\n get priceInterval() {\n const inset = -1;\n const {\n minPrice = inset,\n maxPrice = inset,\n minKscoinPrice = inset,\n maxKscoinPrice = inset,\n } = this.commodityTradeInfo;\n if (this.selectIndex === -1) {\n if (this.commodityTradeInfo.skuList?.length >= 2) {\n return this.useKscoinPay\n ? `${minKscoinPrice}~${maxKscoinPrice}`\n : `${minPrice / 100}~${maxPrice / 100}`;\n }\n return this.useKscoinPay ? minKscoinPrice : minPrice / 100;\n }\n const { unitPrice = inset, kscoinPrice = inset } = this.selectInfo || {};\n return this.useKscoinPay ? kscoinPrice : unitPrice / 100;\n }\n get isShowIntervalMsg() {\n return this.selectInfo && +this.selectInfo.specs[1].value !== -1;\n }\n mounted() {\n // Log: 时效性收银台\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_ExpireDialog');\n }\n }\n submitInterval() {\n if (this.selectIndex === -1) {\n return;\n }\n if (new Date().getTime() - this.timeStamp >= 5 * 60 * 1000) {\n this.waitLongTime();\n return;\n }\n this.$emit('to-submit', {\n expireTime: this.expireTime,\n ...this.selectInfo,\n });\n }\n waitLongTime() {\n Toast.info('页面停留过久,请重新选择');\n this.selectIndex = -1;\n this.timeStamp = new Date().getTime();\n }\n selectInterval(index) {\n this.selectIndex = index;\n const interval = (this.selectInfo && +this.selectInfo.specs[1].value) || 0;\n this.expireTime = interval === -1 ? interval : this.timeStamp + interval;\n }\n toClose() {\n if (this.submitting) {\n Toast.info('正在提交中,请勿关闭');\n } else {\n this.$emit('close');\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExpireDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExpireDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ExpireDialog.vue?vue&type=template&id=1ed8a09c&scoped=true&\"\nimport script from \"./ExpireDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ExpireDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ExpireDialog.vue?vue&type=style&index=0&id=1ed8a09c&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ed8a09c\",\n null\n \n)\n\nexport default component.exports","import {\n buyCourse,\n buyLesson,\n checkCourseOrder,\n checkLessonOrder,\n checkQaOrder,\n buyQa,\n} from '@/services/detail';\nimport yoda from '@/yoda';\nimport { compareVersionByOs } from '@/utils/env';\nimport { kwaiAppVersion } from '@/constant';\nimport { kpn } from '@/utils/env';\n\n/**\n * 支付宝、微信、快币购买问答\n * @param {*} param0\n */\nexport const payForQa = ({ professionId, questionId, channel = '', useKscoinPay = false }) => {\n return new Promise((resolve, reject) => {\n let orderId = 0;\n const onMessageHandler = res => {\n if (res.data.messageType === 'ksBridge.startKspayOrderPrepay') {\n if (res.data.messageStatus === 'complete') {\n resolve({ ...res.data.ret, orderId });\n } else {\n reject(res.data.ret);\n }\n window.removeEventListener('message', onMessageHandler, false);\n } else if (res.data.messageType === 'func.getServerExpTag') {\n const expTag = res.data.ret ?? {};\n buyQa(professionId, questionId, channel, useKscoinPay, expTag).then((res: any) => {\n if (res.result === 1) {\n if (res.pay_client_type === 1) {\n const { merchant_id, out_order_no, order_id } = res.new_pay_data;\n // 跳转页面需要out_order_no ,先挂载window上\n window.out_order_no = out_order_no;\n orderId = order_id;\n window.parent.postMessage(\n {\n messageType: 'ksBridge.startKspayOrderPrepay',\n params: {\n merchantId: merchant_id,\n outOrderNo: out_order_no,\n },\n },\n '*',\n );\n }\n } else {\n reject(res);\n }\n });\n }\n };\n window.addEventListener('message', onMessageHandler, false);\n window.parent.postMessage(\n {\n messageType: 'func.getServerExpTag',\n },\n '*',\n );\n });\n};\n\n/**\n * 支付宝、微信、快币购买course\n * @param {*} param0\n */\nexport const payForCourse = ({\n courseId,\n dc = '',\n channel = '',\n useKscoinPay = false,\n commodityId = '',\n expireTime = '',\n voucherList = [],\n price = 0,\n courseDistributionId,\n activityInfo,\n giftAddressId,\n remark,\n}) => {\n return new Promise((resolve, reject) => {\n buyCourse(\n courseId,\n dc,\n channel,\n useKscoinPay,\n commodityId,\n expireTime,\n voucherList,\n courseDistributionId,\n activityInfo,\n giftAddressId,\n remark,\n ).then((res: any) => {\n if (res.result === 1) {\n if (price === 0) {\n resolve({\n result: 1,\n error_msg: '',\n });\n // Log: 优惠券购买课程成功\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_BuyCourse_Ticket_Success');\n }\n } else if (res.pay_client_type === 1) {\n const { merchant_id, out_order_no } = res.new_pay_data;\n window.out_order_no = out_order_no;\n // 新版支付中台,人民币会拉起支付宝/微信的支付窗口\n yoda(\n 'kwai',\n 'startKspayOrderPrepay',\n {\n merchantId: merchant_id,\n outOrderNo: out_order_no,\n },\n res => {\n if (res.result == 1) {\n resolve(res);\n }\n reject(res);\n },\n );\n } else {\n yoda('kwai', 'startGatewayPay', { data: res.data }, res => {\n if (res.result === 1) {\n resolve(res);\n }\n reject(res);\n });\n }\n } else {\n reject(res);\n }\n });\n });\n};\n\n/**\n * 支付宝、微信、快币购买lesson\n * @param {*} param0\n */\nexport const payForLesson = ({\n lessonId,\n dc = '',\n channel = '',\n useKscoinPay = false,\n commodityId = '',\n expireTime = '',\n price,\n voucherList = [],\n courseDistributionId,\n}) => {\n return new Promise((resolve, reject) => {\n buyLesson(\n lessonId,\n dc,\n channel,\n useKscoinPay,\n commodityId,\n expireTime,\n voucherList,\n courseDistributionId,\n ).then((res: any) => {\n if (res.result === 1) {\n if (price === 0) {\n resolve({\n result: 1,\n error_msg: '',\n });\n // Log: 优惠券购买课程成功\n // TODO: 新版优惠券的埋点??\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_BuyLesson_Ticket_Success');\n }\n } else if (res.pay_client_type === 1) {\n const { merchant_id, out_order_no } = res.new_pay_data;\n window.out_order_no = out_order_no;\n // 新版支付中台,人民币会拉起支付宝/微信的支付窗口\n yoda(\n 'kwai',\n 'startKspayOrderPrepay',\n {\n merchantId: merchant_id,\n outOrderNo: out_order_no,\n },\n res => {\n res.result === 1 ? resolve(res) : reject(res);\n },\n );\n } else {\n yoda(\n 'kwai',\n 'startGatewayPay',\n {\n data: res.data,\n },\n res => {\n res.result === 1 ? resolve(res) : reject(res);\n },\n );\n }\n } else {\n reject(res);\n }\n });\n });\n};\n\n/**\n * 轮询检查qaOrder是否购买 每过一秒请求一次\n * @param {Number} courseId\n * @param {Number} times\n */\nexport const checkPayQa = async (orderId, times = 0) => {\n const res = await checkQaOrder({\n orderId,\n attemptedTimes: times,\n });\n times++;\n if (res.result === 1) {\n return res;\n }\n if (res.result === 101) {\n return new Promise(resolve => {\n setTimeout(() => resolve(checkPayQa(orderId, times)), 1000);\n });\n }\n throw new Error(res.error_msg);\n};\n\n/**\n * 轮询检查course是否购买 每过一秒请求一次\n * @param {Number} courseId\n * @param {Number} times\n */\nexport const checkPayCourse = async (courseId, times = 0) => {\n const res = await checkCourseOrder({\n courseId,\n attemptedTimes: times,\n });\n times++;\n if (res.result === 1) {\n return res;\n }\n if (res.result === 101) {\n return new Promise(resolve => {\n setTimeout(() => resolve(checkPayCourse(courseId, times)), 1000);\n });\n }\n throw new Error(res.error_msg);\n};\n\n/**\n * 轮询检查lesson是否购买 每过一秒请求一次\n * @param {Number} lessonId\n * @param {Number} times\n */\nexport const checkPayLesson = async (lessonId, times = 0) => {\n const res = await checkLessonOrder({\n lessonId,\n attemptedTimes: times,\n });\n times++;\n if (res.result === 1) {\n return res;\n }\n if (res.result === 101) {\n return new Promise(resolve => {\n setTimeout(() => resolve(checkPayLesson(lessonId, times)), 1000);\n });\n }\n throw new Error(res.error_msg || '系统错误');\n};\n\nexport const setSettingEntryForCourse = params => {\n const compareV = compareVersionByOs(kwaiAppVersion[kpn].allowSettingEntry);\n if (compareV <= 0) {\n yoda('kwai', 'setSettingEntryForCourse', { show: true, ...params });\n }\n};\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Toast } from '@ks/sharp-ui';\nimport { Vue, Component, Watch } from 'vue-property-decorator';\nimport PayCounterDialog from '@/views/Comsume/PayCounterDialog/index.vue';\nimport KsCoinIapListDialog from '@/views/Comsume/KsCoinIapListDialog.vue';\nimport ExpireDialog from '@/views/Comsume/ExpireDialog.vue';\nimport { getOrderPrepayInfo } from '@/services/detail/index';\nimport { showAccountExceptionDialog } from '@/utils/index';\nimport { feedbackUrl } from '@/constant/index';\nimport { stringifyQuery } from '@/utils/url';\nimport {\n payForQa,\n payForCourse,\n checkPayCourse,\n checkPayQa,\n setSettingEntryForCourse,\n} from '@/utils/pay';\nimport { getQaPreOrderInfo } from '@/services/detail/index';\nimport model from '../Detail/model';\nimport { CommodityTradeInfo } from '@/views/Detail/model';\nimport * as Sentry from '@sentry/browser';\nimport PV from '@/components/PV/index.vue';\nimport yoda, { showConfirmDialog, showAlertDialog } from '@/yoda';\nimport { ActivityIndicator } from '@ks/sharp-ui';\n\n@Component({\n components: {\n PayCounterDialog,\n KsCoinIapListDialog,\n ExpireDialog,\n PV,\n },\n})\nexport default class PayCounter extends Vue {\n model = model;\n isRefreshing = false;\n isShowPayCounterDialog = false;\n isShowKsCoinIapListDialog = false;\n isPaying: boolean = false;\n showExpire: boolean = true;\n ksCoinIapList = [];\n\n product: any = {};\n productType = 'paidContent';\n useKscoinPay = false;\n professionId = '';\n questionId = '';\n ksCoin = 0;\n price = 0;\n userBalance = 0;\n userStatus = 0;\n courseId = 0;\n userBanned = false;\n commodityId = '';\n expireTime = '';\n\n get extInfo() {\n try {\n return JSON.parse(decodeURIComponent(this.$route.query.extInfo as string));\n } catch (error) {\n return {};\n }\n }\n get isShowExpireDialog() {\n const { commodityTradeInfo = {} as CommodityTradeInfo } = { ...this.model };\n const { skuList = [] } = commodityTradeInfo || {};\n return (\n !!skuList.find(item => item && item.specs[1] && +item.specs[1].value !== -1) &&\n this.showExpire\n );\n }\n toRMB(num) {\n return Number((num / 100).toFixed(2));\n }\n\n async mounted() {\n this.ksCoin = +this.extInfo.kscoinPrice || 0;\n this.price = +this.extInfo.price || 0;\n this.userBalance = +this.extInfo.userBalance || 0;\n this.userStatus = +this.extInfo.userStatus || 0;\n this.userBanned = this.extInfo.userBanned;\n this.courseId = +this.extInfo.relatedId || 0;\n // 问答参数\n this.productType = this.extInfo.type || 'paidContent';\n this.professionId = this.extInfo.professionId || '';\n this.questionId = this.extInfo.questionId || '';\n this.useKscoinPay = !!this.extInfo.useKscoinPay;\n this.model.useKscoinPay = this.useKscoinPay;\n this.logWhenPayCounterShow(true);\n this.product = {\n name: this.extInfo.commodityName || '',\n originPrice: this.price,\n price: this.price,\n discount: 0,\n };\n if (this.model.useKscoinPay) {\n await this.fetchKsCoinIapList();\n }\n\n if (this.productType === 'paidContent') {\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_Native_Trail_PayCounter');\n }\n // 详情页接口兜底\n const detailRes: boolean = await this.model.getCourseDetail(this.courseId);\n\n this.product = {\n name: this.extInfo.commodityName || '',\n voucherList: this.model.commodityTradeInfo?.recommendedCombinationVoucherList,\n price: this.model.commodityTradeInfo?.actualPrice,\n originPrice: this.model.inSecKill\n ? this.model.secKillPrice\n : this.model.originPrice,\n courseId: this.courseId,\n };\n\n this.useKscoinPay = this.model.useKscoinPay;\n if (!detailRes) {\n setTimeout(() => this.close(), 200);\n }\n }\n\n this.showExpire = this.isShowExpireDialog;\n await this.handleExpireDiscount();\n this.$emit('loaded');\n this.checkUserBanned();\n }\n async handleExpireDiscount() {\n if (this.model.canDiscount && this.isShowExpireDialog) {\n const [lastSpecs] = [...(this.model.commodityTradeInfo?.skuList ?? [])].reverse();\n const interval = (lastSpecs && +lastSpecs.specs[1].value) || 0;\n const expireTime = interval === -1 ? interval : new Date().getTime() + interval;\n await this.expireSubmit({\n expireTime,\n ...lastSpecs,\n });\n }\n }\n checkUserBanned() {\n if (this.userBanned) {\n const content = this.model.canDiscount ? '无法使用优惠券' : '暂时无法购买。';\n showAlertDialog({\n title: '温馨提示',\n content: `您的账号处于异常状态,${content}`,\n confirmBtnText: '我知道了',\n onConfirm: () => this.close(),\n });\n return false;\n }\n return true;\n }\n chargeSuccess(ret, isCoinEnough) {\n Toast.success('充值成功');\n // 刷新一下 重置推荐重置哪一项\n this.fetchOrderPrepayInfo().then((res: any) => {\n if (res.result === 1) {\n this.fetchKsCoinIapList();\n if (isCoinEnough) {\n this.isShowKsCoinIapListDialog = false;\n if (this.productType === 'eduqa') {\n this.doPayForQa();\n } else {\n this.doPayForCourse();\n }\n }\n } else {\n Toast.error(res.error_msg);\n }\n });\n }\n chargeFail(e) {\n // Log: 快币收银台\n if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_KsCoin_ChargeFail');\n Sentry.configureScope(scope => {\n scope.setExtra('errorInfo', e);\n // scope.clear();\n });\n Sentry.captureException(new Error('LIGHTKS-KNOWLEDGE: Recharge KsCoin Fail'));\n }\n Toast.error(e.error_msg || '充值失败');\n }\n notifyNative(type, message = '', data = {}) {\n const typeMap = {\n success: {\n payResult: 1,\n message,\n },\n cancel: {\n payResult: 2,\n message,\n },\n fail: {\n payResult: 3,\n message,\n },\n userBanned: {\n payResult: 4,\n message,\n url: encodeURIComponent(feedbackUrl),\n },\n };\n if (type !== 'success') {\n if (type === 'fail' && yoda.isInYoda) {\n Sentry.configureScope(scope => {\n scope.setExtra('errorInfo', typeMap[type]);\n // scope.clear();\n });\n Sentry.captureException(new Error('LIGHTKS-KNOWLEDGE: Pay Counter Pay Error'));\n\n this.$sendLog.pay({\n name: 'NATIVE_PAY_FAIL',\n ext: typeMap[type],\n });\n }\n }\n if (this.productType === 'eduqa') {\n window.parent.postMessage(\n { ...typeMap[type], ...data, messageType: 'notifyNative' },\n '*',\n );\n } else {\n this.$go(`kwai://vision/pay-counter?${stringifyQuery(typeMap[type])}`);\n }\n }\n close() {\n this.isShowPayCounterDialog = false;\n this.notifyNative('cancel', '支付取消');\n }\n expireSubmit({ commodityId, expireTime, kscoinPrice, unitPrice }) {\n this.showExpire = false;\n this.ksCoin = kscoinPrice;\n this.commodityId = commodityId;\n this.expireTime =\n expireTime === -1 ? expireTime : expireTime + this.model.serverTimeAdjustment;\n this.product = {\n name: this.extInfo.commodityName || '',\n originPrice: unitPrice,\n price: unitPrice,\n discount: 0,\n };\n }\n async pay(params: { giftAddressId?: number; remark?: string } = {}) {\n this.isPaying = true;\n this.$sendLog.pay({\n name: 'NATIVE_PAY_START',\n });\n if (!this.checkUserBanned()) {\n return;\n }\n // 问答需要检查价格是否变化\n if (this.productType === 'eduqa') {\n const res: any = await getQaPreOrderInfo(this.professionId);\n if (res.result === 1) {\n if (+res.data.profession.kscoinPrice !== this.ksCoin) {\n Toast.info('该问答定价已更新,需刷新价格后再进行支付');\n return;\n }\n }\n } else if (yoda.isInYoda) {\n window.ksLog?.sendCountTag('Lightks_Native_Trail_BuyCourse');\n }\n if (this.userStatus !== 1) {\n this.isShowPayCounterDialog = false;\n this.$log2('Card', 'Account_Exception_Trial', 'Impression');\n showAccountExceptionDialog(\n () => {\n this.$log2('Button', 'Account_Exception_Trial_Confirm', 'Click');\n this.notifyNative('userBanned');\n },\n () => {\n this.$log2('Button', 'Account_Exception_Trial_Cancel', 'Click');\n this.notifyNative('fail');\n },\n );\n return;\n }\n // 余额不足且不是全额抵扣券\n if (this.model.useKscoinPay && this.userBalance < this.product.price / 10) {\n this.isShowPayCounterDialog = false;\n this.isShowKsCoinIapListDialog = true;\n return;\n }\n if (this.productType === 'eduqa') {\n await this.doPayForQa();\n } else {\n await this.doPayForCourse(params);\n }\n this.isPaying = false;\n }\n async doPayForQa() {\n // 快币支付的toast提示文案\n if (this.useKscoinPay) {\n Toast.loading('正在确认支付结果...');\n }\n const { professionId, questionId } = this;\n await payForQa({\n professionId,\n questionId,\n channel: 'qa_trial',\n useKscoinPay: this.useKscoinPay,\n })\n .then(res => this.onPaySuccess(res))\n .catch(e => {\n this.$sendLog.pay({\n name: 'NATIVE_DOPAYFOREDUQA_FAIL',\n ext: e,\n });\n Toast.error(e.error_msg || e.message);\n this.close();\n })\n .finally(() => Toast.hide());\n }\n async doPayForCourse(params: { giftAddressId?: number; remark?: string } = {}) {\n // 快币支付的toast提示文案\n if (this.model.useKscoinPay) {\n Toast.loading('正在确认支付结果...');\n }\n const { commodityId, expireTime } = this;\n const orderParam: Record = {\n courseId: this.courseId,\n channel: 'native_trial',\n dc: '',\n useKscoinPay: this.useKscoinPay,\n commodityId,\n expireTime,\n price: this.product.price,\n activityInfo: this.model.inSecKill ? this.model.activityInfo : null,\n ...params,\n };\n if (this.model.vouchers.length) {\n orderParam.voucherList = this.model.vouchers.map(voucher => ({\n voucherId: voucher.voucherId,\n promotionPlatform: voucher.promotionPlatform,\n }));\n }\n // 支付前还要判断如果进入页面的时候有秒杀活动,付款时候是否已经超时结束了\n // 为了避免支付收银台调起时候还在秒杀 但付款时秒杀结束了\n const isSecKillExpire = !!(this.model.activityInfo?.activityId && !this.model.inSecKill);\n if (isSecKillExpire) {\n orderParam.activityInfo = null;\n showConfirmDialog({\n title: '温馨提示',\n content: '秒杀活动已结束,是否以原价继续购买?',\n confirmBtnText: '立即支付',\n cancelBtnText: '再想想',\n onConfirm: () => {\n this.payForCourseHandler(orderParam);\n },\n onCancel: () => {\n Toast.hide();\n this.close();\n },\n });\n } else {\n this.payForCourseHandler(orderParam);\n }\n }\n async payForCourseHandler(orderParam) {\n await payForCourse(orderParam)\n .then(res => this.onPaySuccess(res))\n .catch(e => {\n this.$sendLog.pay({\n name: 'NATIVE_DOPAYFORCOURSE_FAIL',\n ext: e,\n });\n if (e.result !== 0) {\n Sentry.configureScope(scope => {\n scope.setExtra('errorInfo', { courseId: this.courseId, ...e });\n // scope.clear();\n });\n Sentry.captureException(\n new Error('LIGHTKS-KNOWLEDGE: Native Buy Course PayForCourse Error'),\n );\n }\n Toast.error(e.error_msg || e.message);\n this.close();\n })\n .finally(() => Toast.hide());\n }\n onPaySuccess(ret) {\n this.isShowPayCounterDialog = false;\n if (ret.result === 1 || ret.result === 412) {\n const id = this.productType === 'paidContent' ? this.courseId : ret.orderId;\n this.verifyResult(id);\n return;\n }\n if ([15, -999, -998, -997].includes(ret.result)) {\n Toast.error(`${ret.error_msg} [${ret.result}]` || '当前访问人数较多,请稍候重试');\n } else if (ret.result && ret.error_msg) {\n Toast.error(ret.error_msg);\n }\n this.$sendLog.pay({\n name: `NATIVE_DOPAYFOR${this.productType.toUpperCase()}_FAIL`,\n ext: ret,\n });\n }\n // 购买回调\n verifyResult(id) {\n const fn = this.productType === 'paidContent' ? checkPayCourse : checkPayQa;\n fn(id)\n .then((res: any) => {\n switch (this.productType) {\n case 'paidContent':\n if (res.data.courseSettingInfo && res.data.courseSettingInfo.text) {\n setSettingEntryForCourse(res.data.courseSettingInfo);\n }\n break;\n case 'eduqa':\n break;\n }\n this.notifyNative('success', '支付成功', res.data);\n })\n .catch(e => {\n Toast.error(e.error_msg || e.message);\n this.notifyNative('fail', e.error_msg || e.message);\n });\n }\n fetchOrderPrepayInfo() {\n this.isRefreshing = true;\n return getOrderPrepayInfo()\n .then((res: any) => {\n if (res.result === 1) {\n this.userBalance = res.data.userBalance;\n this.userStatus = res.data.userStatus;\n }\n return res;\n })\n .catch(e => {\n Toast.error(e.error_msg || e.message);\n })\n .finally(() => {\n this.isRefreshing = false;\n });\n }\n async fetchKsCoinIapList() {\n ActivityIndicator.show();\n return this.model\n .fetchKsCoinIapList()\n .then((res: any) => {\n if (res.result !== 1) {\n if ('result' in res) {\n Toast.error(res.error_msg);\n } else {\n this.$emit('to-error');\n }\n } else {\n this.ksCoinIapList = res.data || [];\n }\n return res;\n })\n .catch(e => {\n Toast.error(e.error_msg);\n })\n .finally(() => {\n ActivityIndicator.hide();\n });\n }\n @Watch('isShowPayCounterDialog')\n logWhenPayCounterShow(val) {\n val &&\n this.$log2('CARD', 'PayCounter_Trial', 'Impression', {\n isCoinEnough: this.ksCoin <= this.userBalance,\n });\n }\n @Watch('isShowKsCoinIapListDialog')\n logWhenKsCoinIapListShow(val) {\n val && this.$log2('CARD', 'KsCoinIapList_Trial', 'Impression');\n }\n @Watch('showExpire')\n onShowExpire(newVal) {\n if (newVal) {\n this.isShowPayCounterDialog = this.isShowKsCoinIapListDialog = false;\n } else if (this.useKscoinPay || this.model.vouchers.length || this.model.gifts.length) {\n this.isShowPayCounterDialog = true;\n } else {\n switch (this.productType) {\n case 'paidContent':\n if (this.model.canDiscount) {\n this.isShowPayCounterDialog = true;\n } else {\n this.doPayForCourse();\n }\n break;\n case 'eduqa':\n this.doPayForQa();\n break;\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PayCounter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PayCounter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PayCounter.vue?vue&type=template&id=4959ca7a&scoped=true&\"\nimport script from \"./PayCounter.vue?vue&type=script&lang=ts&\"\nexport * from \"./PayCounter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PayCounter.vue?vue&type=style&index=0&id=4959ca7a&prod&lang=stylus&\"\nimport style1 from \"./PayCounter.vue?vue&type=style&index=1&id=4959ca7a&prod&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4959ca7a\",\n null\n \n)\n\nexport default component.exports","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PayCounter.vue?vue&type=style&index=0&id=4959ca7a&prod&lang=stylus&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=5021daf1&prod&lang=stylus&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PayCounter.vue?vue&type=style&index=1&id=4959ca7a&prod&lang=stylus&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Label.vue?vue&type=style&index=0&id=52a00975&prod&lang=stylus&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KsCoinIapListDialog.vue?vue&type=style&index=0&id=6786ee92&prod&lang=stylus&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.vue?vue&type=style&index=0&id=bda19bb0&prod&lang=stylus&scoped=true&\"","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n"],"sourceRoot":""}