117.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. exports.ids = [117];
  2. exports.modules = {
  3. /***/ 118:
  4. /***/ (function(module, exports, __webpack_require__) {
  5. module.exports = __webpack_require__.p + "img/new404.b64d371.png";
  6. /***/ }),
  7. /***/ 119:
  8. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  9. "use strict";
  10. __webpack_require__.r(__webpack_exports__);
  11. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
  12. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  13. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  14. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_fc4c9348_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  15. /***/ }),
  16. /***/ 128:
  17. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  18. "use strict";
  19. // CONCATENATED MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/webpack/node_modules/vue-loader/lib??vue-loader-options!./components/error_page/404.vue?vue&type=template&id=fc4c9348&scoped=true&
  20. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"main-404",class:{ 'main-404-fixed': _vm.isFixedHeader }},[_vm._ssrNode(((_vm.message)?("<div data-v-fc4c9348>"+_vm._ssrEscape(_vm._s(_vm.message))+"</div>"):("<img"+(_vm._ssrAttr("src",__webpack_require__(118)))+" alt=\"404\" class=\"img-404\" data-v-fc4c9348>")))])}
  21. var staticRenderFns = []
  22. // CONCATENATED MODULE: ./components/error_page/404.vue?vue&type=template&id=fc4c9348&scoped=true&
  23. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/webpack/node_modules/vue-loader/lib??vue-loader-options!./components/error_page/404.vue?vue&type=script&lang=js&
  24. //
  25. //
  26. //
  27. //
  28. //
  29. //
  30. //
  31. /* harmony default export */ var _404vue_type_script_lang_js_ = ({
  32. name: 'ErrorPage404',
  33. props: {
  34. message: {
  35. type: String,
  36. default: ''
  37. }
  38. },
  39. computed: {
  40. isFixedHeader() {
  41. let isFixedHeader = false;
  42. const routeName = this.$route.name;
  43. if (routeName.indexOf('SeoConsultUser') > -1) {
  44. isFixedHeader = true;
  45. }
  46. return isFixedHeader;
  47. }
  48. }
  49. });
  50. // CONCATENATED MODULE: ./components/error_page/404.vue?vue&type=script&lang=js&
  51. /* harmony default export */ var error_page_404vue_type_script_lang_js_ = (_404vue_type_script_lang_js_);
  52. // EXTERNAL MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/runtime/componentNormalizer.js
  53. var componentNormalizer = __webpack_require__(1);
  54. // CONCATENATED MODULE: ./components/error_page/404.vue
  55. function injectStyles (context) {
  56. var style0 = __webpack_require__(119)
  57. if (style0.__inject__) style0.__inject__(context)
  58. }
  59. /* normalize component */
  60. var component = Object(componentNormalizer["a" /* default */])(
  61. error_page_404vue_type_script_lang_js_,
  62. render,
  63. staticRenderFns,
  64. false,
  65. injectStyles,
  66. "fc4c9348",
  67. "34c277a4"
  68. )
  69. /* harmony default export */ var _404 = __webpack_exports__["a"] = (component.exports);
  70. /***/ }),
  71. /***/ 247:
  72. /***/ (function(module, exports) {
  73. // Exports
  74. module.exports = {};
  75. /***/ }),
  76. /***/ 248:
  77. /***/ (function(module, exports) {
  78. // Exports
  79. module.exports = {};
  80. /***/ }),
  81. /***/ 530:
  82. /***/ (function(module, exports, __webpack_require__) {
  83. module.exports = __webpack_require__.p + "img/consult@2x.b81fe4d.png";
  84. /***/ }),
  85. /***/ 531:
  86. /***/ (function(module, exports) {
  87. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAACdklEQVRYCe2Zv4sTQRTHs5fEFQvRwkK4yiu00FaQFKbxx79goXBNEpBUFsepIFdco1jmt2BrYSmiXH0exFrwEAUbQbk7UAQT3Ev8vCMLMrDzJjorCDMwvMy8977z3e++TfGmUAgjXwUiF/hmsxmPx+NbURTdmE6nS+SUXPIcYqbE7DCfl8vle61W66OWoxIWsqPR6AVkqxrYX/p3EePiYDB4Y8NRlZopK2R/Mu8DugH5kQ3U1VcsFqMkSc6Bt0bOSexj7HlbvqpwvV5/C8nTgKz3+/27NrA/9XHGBc54Jfk8xJlOp7OdhbWQ5Uj3AZKaLYiy6Z5v2+v1tlD3m+Ci+CkbvkqY5IOy8VUGWWQQZCw+FC5mxci+C2Fb/j/3BcJ5Sx4UDgobCoSSMATxvgwKe5fUAAwKG4J4XwaFvUtqAAaFDUG8L4PC3iU1AIPChiDel0Fh75IagP+dwmqrKn1A+hLX6dBU07VvS1/iiAumM2EAb7oA5h3jTBiFNyG9lxchsK9wxiENfx7CK/TANjVA8ddqtXKpVIrb7fZ3l/hZzhfsCS3e+0fXaDSqHPqZpt5XiN/RCMzr906YV3sbEseZgr0GaaePyZW4C+FEwCBy2AWUuE+/xUnNSyNcHdRvLEH7DFuwShig9wIAkcs2oNRHKTT5/Yi8Z9irNMFVwrOG9lHBoPY/iM0aageeVyqveJ2ZQOLBZDJ5ifVyZQDOAnhnsQdXBpzxmge0Xhmo/xJxHD/kUuYSoFVUXsWuZj39vPvgFcBL0+RSZjldZFlrt1uShsPhfqVSeUJp/QB8ka1jTLWUJNdhpNdeT7n2utbtdt855ISQXBX4BfRivdyFwJl0AAAAAElFTkSuQmCC"
  88. /***/ }),
  89. /***/ 532:
  90. /***/ (function(module, exports, __webpack_require__) {
  91. module.exports = __webpack_require__.p + "img/wechat-icon@2x.2799dc0.png";
  92. /***/ }),
  93. /***/ 533:
  94. /***/ (function(module, exports, __webpack_require__) {
  95. module.exports = __webpack_require__.p + "img/email-icon@2x.2ade157.png";
  96. /***/ }),
  97. /***/ 534:
  98. /***/ (function(module, exports, __webpack_require__) {
  99. module.exports = __webpack_require__.p + "img/icon_chat@2x.0394cc4.png";
  100. /***/ }),
  101. /***/ 535:
  102. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  103. "use strict";
  104. __webpack_require__.r(__webpack_exports__);
  105. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(247);
  106. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  107. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  108. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_0_id_8476bef6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  109. /***/ }),
  110. /***/ 536:
  111. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  112. "use strict";
  113. __webpack_require__.r(__webpack_exports__);
  114. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(248);
  115. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
  116. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  117. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_nuxt_webpack_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_webpack_node_modules_vue_loader_lib_index_js_vue_loader_options_id_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
  118. /***/ }),
  119. /***/ 76:
  120. /***/ (function(module, exports) {
  121. // Exports
  122. module.exports = {};
  123. /***/ }),
  124. /***/ 77:
  125. /***/ (function(module, exports) {
  126. // Exports
  127. module.exports = {};
  128. /***/ }),
  129. /***/ 771:
  130. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  131. "use strict";
  132. // ESM COMPAT FLAG
  133. __webpack_require__.r(__webpack_exports__);
  134. // CONCATENATED MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/webpack/node_modules/vue-loader/lib??vue-loader-options!./pages/frontend/skill/detail/_id.vue?vue&type=template&id=8476bef6&scoped=true&
  135. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isExist)?_c('ErrorPage404'):_c('div',{class:_vm.mobile ? 'mobileMain' : 'mobileWeb',style:({marginTop: _vm.mainMarginTop})},[(!_vm.mobile)?_c('div',{staticClass:"skill-detail-wrapper"},[_c('div',{staticClass:"skill-info"},[_c('img',{staticClass:"cover",attrs:{"src":((_vm.skillDetail.coverImage) + "?x-oss-process=image/resize,w_800"),"alt":""}}),_vm._v(" "),_c('div',{staticClass:"info-wrapper"},[_c('div',{staticClass:"title"},[_vm._v(_vm._s(_vm.skillDetail.title))]),_vm._v(" "),_c('div',{staticClass:"owner-content"},[_c('a',{staticClass:"owner-info",attrs:{"href":("/wo/" + (_vm.skillDetail.user.uid))}},[_c('img',{attrs:{"src":_vm.skillDetail.user.icon_url,"alt":"avatar"}}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.skillDetail.user.nickname))])])]),_vm._v(" "),_c('div',{staticClass:"price-content"},[_c('div',{staticClass:"price-text"},[_vm._v("¥"+_vm._s(_vm.skillDetail.price))]),_vm._v(" "),(_vm.skillDetail.buy_num > 0)?_c('div',{staticClass:"buy-num"},[_c('span',[_vm._v(_vm._s(_vm.skillDetail.buy_num)+"人")]),_vm._v("已购买")]):_vm._e()]),_vm._v(" "),(_vm.skillDetail.user.uid != _vm.userinfo.uid)?_c('div',{staticClass:"actions"},[(Number(_vm.skillDetail.is_buy) > 0)?_c('el-button',{staticClass:"btn-1",attrs:{"disabled":""}},[_vm._v("已购买")]):_c('el-button',{staticClass:"btn-1",on:{"click":_vm.handleBuySkill}},[_vm._v("立即购买")]),_vm._v(" "),(Number(_vm.skillDetail.is_buy) > 0)?_c('el-button',{staticClass:"btn-2",on:{"click":_vm.handleConsultSkill}},[_c('div',{staticClass:"btn-content"},[_c('img',{attrs:{"src":__webpack_require__(530),"alt":"consult,icon"}}),_vm._v(" "),_c('span',[_vm._v("咨询")])])]):_vm._e()],1):_vm._e()]),_vm._v(" "),_c('div',{staticClass:"qrcode-content"},[_c('img',{attrs:{"src":("/api/user/pubQrcode?uid=" + (_vm.skillDetail.user.uid) + "&type=1&pid=" + (_vm.skillDetail.sale_id)),"alt":""}}),_vm._v(" "),_c('div',{staticClass:"qrcode-tips"},[_c('a',{attrs:{"href":"/index/app","target":"_blank"}},[_vm._v("下载app")]),_vm._v(" "),_c('span',[_vm._v("扫码即可沟通")])])])]),_vm._v(" "),_c('div',{staticClass:"skill-content"},[_c('div',{staticClass:"common-title"},[_vm._v("服务描述")]),_vm._v(" "),(_vm.skillDetail.imageList.length > 0)?_c('div',{staticClass:"skill-image-list"},_vm._l((_vm.skillDetail.imageList),function(item){return _c('img',{key:item,attrs:{"src":(item + "?x-oss-process=image/resize,w_800"),"alt":"skill,skillImage"}})}),0):_vm._e(),_vm._v(" "),_c('div',{staticClass:"ql-snow content-text"},[_c('div',{staticClass:"ql-editor",domProps:{"innerHTML":_vm._s(_vm.skillDetail.content)}})]),_vm._v(" "),(false)?undefined:_vm._e()]),_vm._v(" "),_c('el-dialog',{attrs:{"title":((_vm.skillDetail.user.nickname) + "的联系方式"),"visible":_vm.showUserContactDialog,"width":"35%","center":""},on:{"update:visible":function($event){_vm.showUserContactDialog=$event}}},[_c('div',{staticClass:"contact-wrapper"},[_c('div',{staticClass:"contact-item"},[_c('img',{attrs:{"src":__webpack_require__(531),"alt":""}}),_vm._v(" "),_c('div',{staticClass:"contact-text"},[_vm._v(_vm._s(_vm.skillDetail.user.tel || '未留存'))])]),_vm._v(" "),_c('div',{staticClass:"contact-item"},[_c('img',{attrs:{"src":__webpack_require__(532),"alt":""}}),_vm._v(" "),_c('div',{staticClass:"contact-text"},[_vm._v(_vm._s(_vm.skillDetail.user.weixin || '未留存'))])]),_vm._v(" "),_c('div',{staticClass:"contact-item"},[_c('img',{attrs:{"src":__webpack_require__(533),"alt":""}}),_vm._v(" "),_c('div',{staticClass:"contact-text"},[_vm._v(_vm._s(_vm.skillDetail.user.email || '未留存'))])])])])],1):_c('div',{staticClass:"skill-detail-wrapper-mobile"},[_c('div',{staticClass:"image-list"},[_c('div',{directives:[{name:"swiper",rawName:"v-swiper:mySwiper",value:(_vm.swiperOption),expression:"swiperOption",arg:"mySwiper"}],staticClass:"image-swiper"},[_c('div',{staticClass:"swiper-wrapper"},[_c('div',{staticClass:"swiper-slide"},[_c('img',{attrs:{"src":((_vm.skillDetail.coverImage) + "?x-oss-process=image/resize,w_800"),"alt":"skillImage"}})]),_vm._v(" "),_vm._l((_vm.skillDetail.imageList),function(item){return _c('div',{key:item,staticClass:"swiper-slide"},[_c('img',{attrs:{"src":(item + "?x-oss-process=image/resize,w_800"),"alt":"skillImage"}})])})],2),_vm._v(" "),_c('div',{staticClass:"swiper-pagination swiper-pagination-bullets"})])]),_vm._v(" "),_c('div',{staticClass:"skill-info"},[_c('div',{staticClass:"skill-title"},[_vm._v(_vm._s(_vm.skillDetail.title))]),_vm._v(" "),_c('div',{staticClass:"userinfo-wrapper"},[_c('a',{staticClass:"left-info",attrs:{"href":("/wo/" + (_vm.skillDetail.user.uid) + "?from=skill")}},[_c('img',{staticClass:"avatar",attrs:{"src":_vm.skillDetail.user.icon_url,"alt":"avatar"}}),_vm._v(" "),_c('div',{staticClass:"nickname"},[_vm._v(_vm._s(_vm.skillDetail.user.nickname))])]),_vm._v(" "),_c('div',{staticClass:"right-info"})])]),_vm._v(" "),_c('div',{staticClass:"skill-content ql-snow"},[_c('div',{staticClass:"ql-editor",domProps:{"innerHTML":_vm._s(_vm.skillDetail.content)}})]),_vm._v(" "),_c('div',{staticClass:"pay-wrapper"},[_c('div',{staticClass:"price-info"},[_c('div',{staticClass:"price-text"},[_vm._v("¥"+_vm._s(_vm.skillDetail.price))]),_vm._v(" "),_c('span',[_vm._v("支付金额")])]),_vm._v(" "),_c('div',{staticClass:"chat-content"},[_c('div',{staticClass:"chat-btn",on:{"click":_vm.handleClickChat}},[_c('img',{staticClass:"chat-icon",attrs:{"src":__webpack_require__(534)}}),_vm._v(" "),_c('span',{staticClass:"chat-word"},[_vm._v("聊一聊")])])]),_vm._v(" "),(Number(_vm.skillDetail.is_buy) > 0)?_c('el-button',{staticClass:"pay-btn",attrs:{"disabled":""}},[_vm._v("已购买")]):_c('el-button',{staticClass:"pay-btn",on:{"click":_vm.handleBuySkill}},[_vm._v("立即购买")])],1)])])}
  136. var staticRenderFns = []
  137. // CONCATENATED MODULE: ./pages/frontend/skill/detail/_id.vue?vue&type=template&id=8476bef6&scoped=true&
  138. // EXTERNAL MODULE: external "vuex"
  139. var external_vuex_ = __webpack_require__(2);
  140. // CONCATENATED MODULE: ./components/skill/dealSeoDetail.js
  141. class DealSeoData {
  142. constructor({
  143. $axios,
  144. req,
  145. app,
  146. redirect,
  147. error
  148. }) {
  149. this.$axios = $axios;
  150. this.req = req;
  151. this.app = app;
  152. this.redirect = redirect;
  153. this.error = error;
  154. this.skillDetail = {};
  155. this.isExist = true;
  156. }
  157. async dealData() {
  158. let {
  159. name,
  160. query: {
  161. act
  162. },
  163. path,
  164. params,
  165. fullPath
  166. } = this.app.context.route;
  167. const sale_id = params.id || ''; // 重定向
  168. if (path.indexOf('/frontend/skill/detail') > -1) {
  169. this.redirect(301, '/s/' + sale_id);
  170. }
  171. const skillDetail = await this._getSkillDetail(sale_id);
  172. if (skillDetail && skillDetail.image && skillDetail.image.length) {
  173. let imageList = skillDetail.image.split(',');
  174. skillDetail.coverImage = imageList[0] || '';
  175. imageList.splice(0, 1);
  176. skillDetail.imageList = imageList;
  177. }
  178. this.skillDetail = skillDetail;
  179. return {
  180. isExist: this.isExist,
  181. sale_id,
  182. skillDetail,
  183. mobile: this.app.$deviceType.isMobile(),
  184. head: this.dealThisMeta(),
  185. act
  186. };
  187. }
  188. /** 获取技能详情 */
  189. async _getSkillDetail(sale_id) {
  190. let res = await this.$axios.$post('/api/sale/saleInfo', {
  191. sale_id
  192. });
  193. let skillDetail = {};
  194. if (Number(res.status) === 1) {
  195. skillDetail = res.data;
  196. } else if (Number(res.status) === 40001) {
  197. this.isExist = false;
  198. }
  199. return skillDetail;
  200. }
  201. dealThisMeta() {
  202. if (!this.isExist) {
  203. // 页面不存在时
  204. return {
  205. title: "页面不存在-程序员客栈",
  206. keyword: "",
  207. description: "",
  208. h1: "",
  209. canonical: "",
  210. metaLocation: ""
  211. };
  212. }
  213. let content = this.skillDetail.content.trim();
  214. let title = this.skillDetail.title.trim();
  215. const nickname = this.skillDetail.user.nickname;
  216. if (content.length > 15) {
  217. content = content.substring(0, 15);
  218. }
  219. if (title.length > 15) {
  220. title = title.substring(0, 15);
  221. }
  222. let canonical = '';
  223. if (this.req) {
  224. const {
  225. headers: {
  226. host
  227. },
  228. url
  229. } = this.req; //拼接canonical
  230. if (host.indexOf('local') !== -1) {
  231. canonical = 'http://' + host + url;
  232. } else {
  233. canonical = 'https://' + host + url;
  234. }
  235. }
  236. let head = {
  237. title: `${this.skillDetail.title}-程序员客栈技能服务`,
  238. keyword: `${this.skillDetail.user.company},${this.skillDetail.direction_name},${this.skillDetail.title}`,
  239. description: `${nickname}可以为您提供:${title},技能服务是程序员客栈远程工作平台为企业和自由职业者提供的标准化数字服务,通过标准定价的模块化技能,帮助企业和自由职业者快速达成合作。`,
  240. h1: "",
  241. canonical: canonical,
  242. metaLocation: ""
  243. };
  244. return head;
  245. }
  246. }
  247. // EXTERNAL MODULE: external "qs"
  248. var external_qs_ = __webpack_require__(33);
  249. var external_qs_default = /*#__PURE__*/__webpack_require__.n(external_qs_);
  250. // EXTERNAL MODULE: ./node_modules/quill/dist/quill.core.css
  251. var quill_core = __webpack_require__(76);
  252. // EXTERNAL MODULE: ./node_modules/quill/dist/quill.snow.css
  253. var quill_snow = __webpack_require__(77);
  254. // EXTERNAL MODULE: ./components/error_page/404.vue + 4 modules
  255. var _404 = __webpack_require__(128);
  256. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/webpack/node_modules/vue-loader/lib??vue-loader-options!./pages/frontend/skill/detail/_id.vue?vue&type=script&lang=js&
  257. //
  258. //
  259. //
  260. //
  261. //
  262. //
  263. //
  264. //
  265. //
  266. //
  267. //
  268. //
  269. //
  270. //
  271. //
  272. //
  273. //
  274. //
  275. //
  276. //
  277. //
  278. //
  279. //
  280. //
  281. //
  282. //
  283. //
  284. //
  285. //
  286. //
  287. //
  288. //
  289. //
  290. //
  291. //
  292. //
  293. //
  294. //
  295. //
  296. //
  297. //
  298. //
  299. //
  300. //
  301. //
  302. //
  303. //
  304. //
  305. //
  306. //
  307. //
  308. //
  309. //
  310. //
  311. //
  312. //
  313. //
  314. //
  315. //
  316. //
  317. //
  318. //
  319. //
  320. //
  321. //
  322. //
  323. //
  324. //
  325. //
  326. //
  327. //
  328. //
  329. //
  330. //
  331. //
  332. //
  333. //
  334. //
  335. //
  336. //
  337. //
  338. //
  339. //
  340. //
  341. //
  342. //
  343. //
  344. //
  345. //
  346. //
  347. //
  348. //
  349. //
  350. //
  351. //
  352. //
  353. //
  354. //
  355. //
  356. //
  357. //
  358. //
  359. //
  360. //
  361. //
  362. //
  363. //
  364. //
  365. //
  366. //
  367. //
  368. //
  369. //
  370. //
  371. //
  372. //
  373. //
  374. //
  375. //
  376. //
  377. //
  378. //
  379. //
  380. //
  381. //
  382. //
  383. //
  384. //
  385. //
  386. //
  387. //
  388. //
  389. //
  390. //
  391. //
  392. //
  393. //
  394. //
  395. /* harmony default export */ var _idvue_type_script_lang_js_ = ({
  396. name: 'SeoSkillDetail',
  397. data() {
  398. return {
  399. baseUrl: '',
  400. isWeixinApp: true,
  401. swiperOption: {
  402. loop: true,
  403. slidesPerView: "auto",
  404. centeredSlides: true,
  405. spaceBetween: 30,
  406. pagination: {
  407. el: ".swiper-pagination",
  408. dynamicBullets: true
  409. }
  410. },
  411. showUserContactDialog: false
  412. };
  413. },
  414. components: {
  415. ErrorPage404: _404["a" /* default */]
  416. },
  417. head() {
  418. const {
  419. title = "",
  420. keyword = "",
  421. description = "",
  422. h1 = "",
  423. canonical = "",
  424. metaLocation
  425. } = this.head || {};
  426. let obj = {
  427. title: title,
  428. meta: [{
  429. name: "keywords",
  430. content: keyword
  431. }, {
  432. name: "description",
  433. content: description
  434. }, {
  435. name: "h1",
  436. content: h1
  437. }, {
  438. name: "viewport",
  439. content: "width=device-width, initial-scale=1.0, viewport-fit=cover"
  440. }],
  441. link: [{
  442. rel: "canonical",
  443. href: canonical
  444. }]
  445. };
  446. if (metaLocation) {
  447. obj.meta.push({
  448. name: "location",
  449. content: metaLocation
  450. });
  451. }
  452. return obj;
  453. },
  454. computed: { ...Object(external_vuex_["mapState"])(["deviceType"]),
  455. showWxHeader() {
  456. return !this.deviceType.app && !this.isWeixinApp && (this.deviceType.android || this.deviceType.ios);
  457. },
  458. mainMarginTop() {
  459. if (this.mobile && this.showWxHeader) {
  460. return '0 !important';
  461. } else if (this.mobile) {
  462. return '0px !important';
  463. } else {
  464. return '20px !important';
  465. }
  466. }
  467. },
  468. async asyncData({ ...params
  469. }) {
  470. let dealDataObj = new DealSeoData(params);
  471. let ans = await dealDataObj.dealData();
  472. return { ...ans
  473. };
  474. },
  475. mounted() {
  476. const self = this;
  477. this.baseUrl = this.$store.state.domainConfig.siteUrl;
  478. this.isWeixinApp = navigator.userAgent.indexOf("miniProgram") > -1;
  479. if (this.act === 'pay') {
  480. setTimeout(() => {
  481. self.$message.success('购买成功,请等待对方接单');
  482. }, 800);
  483. }
  484. },
  485. methods: {
  486. /** 点击购买时 */
  487. handleBuySkill() {
  488. // this.$message.info('跳转到购买页即可')
  489. const query = {
  490. product_type: 502,
  491. product_id: this.sale_id,
  492. next: location.href + '?act=pay'
  493. };
  494. if (!this.userinfo || !this.userinfo.nickname) {
  495. // 未登录时 => 去登录
  496. if (this.deviceType.ios || this.deviceType.android) {
  497. location.href = "proginn://login?backToPage=true";
  498. } else {
  499. location.href = this.baseUrl + "/?loginbox=show&next=" + encodeURIComponent(location.href);
  500. }
  501. } else {
  502. // 已登录,跳转支付
  503. if (this.deviceType.ios || this.deviceType.android) {
  504. location.href = "proginn://pay?" + external_qs_default.a.stringify(query);
  505. } else {
  506. location.href = this.baseUrl + "/pay?" + external_qs_default.a.stringify(query);
  507. }
  508. }
  509. },
  510. /** 点击咨询时 */
  511. handleConsultSkill() {
  512. if (Number(this.skillDetail.is_buy) > 0) {
  513. // 已购买,弹出用户联系方式弹窗
  514. this.showUserContactDialog = true;
  515. } else {
  516. // 未购买
  517. this.$message.info('请先购买');
  518. }
  519. },
  520. /** 点击聊一聊时 */
  521. handleClickChat() {
  522. if (!this.mobile) {
  523. this.$message.info("请前往程序员客栈APP操作");
  524. return;
  525. } // location.href = `proginn://skill_train/chat?uid=${this.skillDetail.user.uid}&chattype=1&title=${encodeURIComponent(this.skillDetail.title)}&url=${encodeURIComponent(location.href)}`;
  526. location.href = `proginn://scan_ewm/chat?uid=${this.skillDetail.user.uid}&type=1&pid=${this.sale_id}`;
  527. }
  528. }
  529. });
  530. // CONCATENATED MODULE: ./pages/frontend/skill/detail/_id.vue?vue&type=script&lang=js&
  531. /* harmony default export */ var detail_idvue_type_script_lang_js_ = (_idvue_type_script_lang_js_);
  532. // EXTERNAL MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/runtime/componentNormalizer.js
  533. var componentNormalizer = __webpack_require__(1);
  534. // CONCATENATED MODULE: ./pages/frontend/skill/detail/_id.vue
  535. function injectStyles (context) {
  536. var style0 = __webpack_require__(535)
  537. if (style0.__inject__) style0.__inject__(context)
  538. var style1 = __webpack_require__(536)
  539. if (style1.__inject__) style1.__inject__(context)
  540. }
  541. /* normalize component */
  542. var component = Object(componentNormalizer["a" /* default */])(
  543. detail_idvue_type_script_lang_js_,
  544. render,
  545. staticRenderFns,
  546. false,
  547. injectStyles,
  548. "8476bef6",
  549. "8444fa30"
  550. )
  551. /* harmony default export */ var _id = __webpack_exports__["default"] = (component.exports);
  552. /***/ }),
  553. /***/ 81:
  554. /***/ (function(module, exports) {
  555. // Exports
  556. module.exports = {};
  557. /***/ })
  558. };;
  559. //# sourceMappingURL=117.js.map