126.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953
  1. exports.ids = [126];
  2. exports.modules = {
  3. /***/ 169:
  4. /***/ (function(module, exports, __webpack_require__) {
  5. module.exports = __webpack_require__.p + "img/filter-icon@2x.8c6c44e.png";
  6. /***/ }),
  7. /***/ 234:
  8. /***/ (function(module, exports) {
  9. // Exports
  10. module.exports = {};
  11. /***/ }),
  12. /***/ 235:
  13. /***/ (function(module, exports) {
  14. // Exports
  15. module.exports = {};
  16. /***/ }),
  17. /***/ 508:
  18. /***/ (function(module, exports, __webpack_require__) {
  19. module.exports = __webpack_require__.p + "img/skill.1dd8f8b.png";
  20. /***/ }),
  21. /***/ 509:
  22. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  23. "use strict";
  24. __webpack_require__.r(__webpack_exports__);
  25. /* 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_list_vue_vue_type_style_index_0_id_16bc9074_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(234);
  26. /* 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_list_vue_vue_type_style_index_0_id_16bc9074_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_list_vue_vue_type_style_index_0_id_16bc9074_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  27. /* 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_list_vue_vue_type_style_index_0_id_16bc9074_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_list_vue_vue_type_style_index_0_id_16bc9074_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  28. /* 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_list_vue_vue_type_style_index_0_id_16bc9074_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  29. /***/ }),
  30. /***/ 510:
  31. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  32. "use strict";
  33. __webpack_require__.r(__webpack_exports__);
  34. /* 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_list_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(235);
  35. /* 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_list_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_list_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
  36. /* 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_list_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_list_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  37. /* 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_list_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
  38. /***/ }),
  39. /***/ 75:
  40. /***/ (function(module, exports, __webpack_require__) {
  41. module.exports = __webpack_require__.p + "img/empty@2x.f8d7c57.png";
  42. /***/ }),
  43. /***/ 768:
  44. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  45. "use strict";
  46. // ESM COMPAT FLAG
  47. __webpack_require__.r(__webpack_exports__);
  48. // 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/list.vue?vue&type=template&id=16bc9074&scoped=true&
  49. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.mobile ? 'mobileMain' : '',style:({
  50. marginTop: _vm.mainMarginTop,
  51. marginBottom: _vm.mobile ? '0px' : '30px !important',
  52. })},[_vm._ssrNode("<div class=\"skill-page-main\" data-v-16bc9074>","</div>",[(!_vm.mobile)?_vm._ssrNode("<div class=\"skill-wrapper\" data-v-16bc9074>","</div>",[_vm._ssrNode("<div class=\"skill-top\" data-v-16bc9074>","</div>",[_vm._ssrNode("<div class=\"skill-category-wrapper\" data-v-16bc9074>","</div>",[_vm._ssrNode("<div class=\"skill-category-wrapper-title\" data-v-16bc9074>","</div>",[_vm._ssrNode("<img"+(_vm._ssrAttr("src",__webpack_require__(508)))+" class=\"icon\" data-v-16bc9074> <span class=\"title\" data-v-16bc9074>技能服务</span> <span class=\"desc\" data-v-16bc9074>专业人才为你服务</span> <div class=\"expand\" data-v-16bc9074></div> "),_c('el-button',{staticClass:"add-btn",on:{"click":_vm.handleClickAdd}},[_vm._v("添加技能赚钱")])],2),_vm._ssrNode(" <div"+(_vm._ssrClass("category-one-wrapper",_vm.categoryExpanded ? 'expand' : ''))+" data-v-16bc9074><a href=\"/skill/\""+(_vm._ssrClass("category-one-item",_vm.pagination.selectedCateIdOne == '' ? 'active' : ''))+" data-v-16bc9074>全部</a> "+(_vm._ssrList((_vm.skillCate),function(categoryOne){return ("<a"+(_vm._ssrAttr("href",("/skill/" + (categoryOne.value) + "/")))+(_vm._ssrClass("category-one-item",_vm.pagination.selectedCateIdOne == categoryOne.value
  53. ? 'active'
  54. : ''))+" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(categoryOne.label))+"</a>")}))+"</div> <div class=\"category-two-wrapper\" data-v-16bc9074>"+(_vm._ssrList((_vm.skillCate),function(categoryOne){return ("<div class=\"category-two-content\""+(_vm._ssrStyle(null,null, { display: (_vm.pagination.selectedCateIdOne == categoryOne.value) ? '' : 'none' }))+" data-v-16bc9074>"+(_vm._ssrList((categoryOne.children),function(categoryTwo){return ("<a"+(_vm._ssrAttr("href",("/skill/" + (categoryTwo.value) + "/")))+(_vm._ssrClass("category-two-item",_vm.pagination.selectedCateIdTwo == categoryTwo.value
  55. ? 'active'
  56. : ''))+" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(categoryTwo.label))+"</a>")}))+"</div>")}))+"</div>")],2)]),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"skill-content\" data-v-16bc9074>","</div>",[_vm._ssrNode(((_vm.skillList.length)?("<div class=\"skill-list-wrapper\" data-v-16bc9074>"+(_vm._ssrList((_vm.skillList),function(item){return ("<div class=\"skill-item\" data-v-16bc9074><a"+(_vm._ssrAttr("href",("/s/" + (item.sale_id))))+" class=\"cover\""+(_vm._ssrStyle(null,{
  57. backgroundImage:
  58. 'url(' +
  59. item.coverImage +
  60. '?x-oss-process=image/resize,w_800)',
  61. }, null))+" data-v-16bc9074></a> <a"+(_vm._ssrAttr("href",("/s/" + (item.sale_id))))+" class=\"title\" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(item.title))+"</a> <a"+(_vm._ssrAttr("href",("/wo/" + (item.user.uid) + "/skill")))+" class=\"owner-wrapper\" data-v-16bc9074><img"+(_vm._ssrAttr("src",item.user.icon_url))+" alt=\"avatar\" class=\"avatar\" data-v-16bc9074> <div class=\"nickname\" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(item.user.nickname))+"</div></a> <div class=\"price-wrapper\" data-v-16bc9074><div class=\"price-text\" data-v-16bc9074>"+_vm._ssrEscape("¥"+_vm._s(item.price))+"</div> "+((item.buy_num > 0)?("<div class=\"buy-num\" data-v-16bc9074>"+_vm._ssrEscape("\n "+_vm._s(item.buy_num)+"人已学习\n ")+"</div>"):"<!---->")+"</div></div>")}))+"</div>"):("<div class=\"result-empty-wrapper\" data-v-16bc9074><img"+(_vm._ssrAttr("src",__webpack_require__(75)))+" alt=\"empty\" data-v-16bc9074> <span data-v-16bc9074>暂无搜索内容</span></div>"))+" "),(_vm.pagination.total > _vm.pagination.pagesize)?_vm._ssrNode("<div class=\"pagination-wrapper\" data-v-16bc9074>","</div>",[_c('el-pagination',{attrs:{"background":"","layout":"prev, pager, next","current-page":_vm.pagination.page,"total":_vm.pagination.total,"page-size":_vm.pagination.pagesize},on:{"current-change":_vm.handlePageChange}})],1):_vm._e()],2)],2):_vm._ssrNode("<div class=\"skill-wrapper-mobile\" data-v-16bc9074>","</div>",[_vm._ssrNode("<div class=\"skill-category\" data-v-16bc9074><div class=\"skill-category-one\" data-v-16bc9074><div class=\"category-scroller\" data-v-16bc9074><div"+(_vm._ssrClass("skill-category-one-item",!_vm.pagination.selectedCateIdOne ? 'active' : ''))+" data-v-16bc9074>\n 全部\n </div> "+(_vm._ssrList((_vm.skillCate),function(category){return ("<div"+(_vm._ssrClass("skill-category-one-item",_vm.pagination.selectedCateIdOne == category.value ? 'active' : ''))+" data-v-16bc9074>"+_vm._ssrEscape("\n "+_vm._s(category.label)+"\n ")+"</div>")}))+"</div> <div class=\"filter-bg\" data-v-16bc9074></div> <div class=\"filter-wrapper\" data-v-16bc9074><img"+(_vm._ssrAttr("src",__webpack_require__(169)))+" alt=\"filter\" data-v-16bc9074></div></div> <div class=\"skill-category-two\" data-v-16bc9074><div class=\"skill-category-two-wrapper\""+(_vm._ssrStyle(null,null, { display: (!_vm.pagination.selectedCateIdOne) ? '' : 'none' }))+" data-v-16bc9074>"+(_vm._ssrList((_vm.skillCateAll),function(category){return ("<div"+(_vm._ssrClass("skill-category-two-item",_vm.pagination.selectedCateIdTwo == category.value ? 'active' : ''))+" data-v-16bc9074>"+_vm._ssrEscape("\n "+_vm._s(category.label)+"\n ")+"</div>")}))+"</div> "+(_vm._ssrList((_vm.skillCate),function(category){return ("<div class=\"skill-category-two-wrapper\""+(_vm._ssrStyle(null,null, { display: (_vm.pagination.selectedCateIdOne === category.value) ? '' : 'none' }))+" data-v-16bc9074>"+(_vm._ssrList((category.children),function(categoryChild){return ("<div"+(_vm._ssrClass("skill-category-two-item",_vm.pagination.selectedCateIdTwo == categoryChild.value
  62. ? 'active'
  63. : ''))+" data-v-16bc9074>"+_vm._ssrEscape("\n "+_vm._s(categoryChild.label)+"\n ")+"</div>")}))+"</div>")}))+"</div></div> "),_vm._ssrNode("<div"+(_vm._ssrClass("skill-list",_vm.showWxHeader ? 'skill-list__showWxHeader' : ''))+" data-v-16bc9074>","</div>",[_c('ul',{directives:[{name:"infinite-scroll",rawName:"v-infinite-scroll",value:(_vm.handleLoadMoreSkill),expression:"handleLoadMoreSkill"}],staticClass:"skill-list-wrapper",attrs:{"infinite-scroll-disabled":_vm.pagination.noMore,"infinite-scroll-immediate":false}},[_vm._l((_vm.skillList),function(item){return _vm._ssrNode("<div class=\"skill-item\" data-v-16bc9074>","</div>",[_c('img',{directives:[{name:"lazy",rawName:"v-lazy",value:(((item.coverImage) + "?x-oss-process=image/resize,w_800")),expression:"`${item.coverImage}?x-oss-process=image/resize,w_800`"}],staticClass:"cover",attrs:{"alt":"skillCover,cover"}},[]),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"owner-wrapper\" data-v-16bc9074>","</div>",[_c('img',{directives:[{name:"lazy",rawName:"v-lazy",value:(item.user.icon_url),expression:"item.user.icon_url"}],staticClass:"avatar",attrs:{"alt":"avatar"}},[]),_vm._ssrNode(" <div class=\"nickname\" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(item.user.nickname))+"</div>")],2),_vm._ssrNode(" <div class=\"title\" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(item.title))+"</div> <div class=\"price-wrapper\" data-v-16bc9074><div class=\"price-text\" data-v-16bc9074>"+_vm._ssrEscape("¥"+_vm._s(item.price))+"</div> <div class=\"right-info\" data-v-16bc9074>"+_vm._ssrEscape(_vm._s(item.buy_num)+"人已学习")+"</div></div>")],2)}),_vm._ssrNode(" "+((!_vm.skillList.length && !_vm.pagination.loading)?("<div class=\"result-empty-wrapper\" data-v-16bc9074><img"+(_vm._ssrAttr("src",__webpack_require__(75)))+" alt=\"empty\" data-v-16bc9074> <span data-v-16bc9074>暂无搜索内容</span></div>"):"<!---->")+" "+((_vm.pagination.loading)?("<p class=\"skill-list-tips\" data-v-16bc9074>加载中...</p>"):"<!---->")+" "+((_vm.skillList.length && _vm.pagination.noMore)?("<p class=\"skill-list-tips\" data-v-16bc9074>\n 没有更多了\n </p>"):"<!---->"))],2)]),_vm._ssrNode(" "),_c('el-drawer',{ref:"categoryDrawer",staticClass:"category-drawer",attrs:{"visible":_vm.showCategoryDrawer,"direction":"ttb","withHeader":false},on:{"update:visible":function($event){_vm.showCategoryDrawer=$event}}},[_c('div',{staticClass:"drawer-category-one"},[_c('div',{staticClass:"drawer-category-one-item",class:_vm.currentDrawerCategoryIndex === 0 ? 'active' : '',on:{"click":function($event){return _vm.handleClickDrawerCategoryOne(0)}}},[_vm._v("\n 全部\n ")]),_vm._v(" "),_vm._l((_vm.skillCate),function(category,index){return _c('div',{key:("drawer-category-one-" + (category.value)),staticClass:"drawer-category-one-item",class:_vm.currentDrawerCategoryIndex === index + 1 ? 'active' : '',on:{"click":function($event){return _vm.handleClickDrawerCategoryOne(index + 1)}}},[_vm._v("\n "+_vm._s(category.label)+"\n ")])})],2),_vm._v(" "),_c('div',{staticClass:"drawer-category-two"},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentDrawerCategoryIndex === 0),expression:"currentDrawerCategoryIndex === 0"}],staticClass:"drawer-category-two-wrapper"},_vm._l((_vm.skillCateAll),function(category){return _c('div',{key:("drawer-category-all-" + (category.value)),staticClass:"drawer-category-two-item",class:_vm.currentDrawerCategoryId == category.value ? 'active' : '',on:{"click":function($event){return _vm.handleClickDrawerCategoryTwo(category.value)}}},[_vm._v("\n "+_vm._s(category.label)+"\n ")])}),0),_vm._v(" "),_vm._l((_vm.skillCate),function(category,index){return _c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentDrawerCategoryIndex === index + 1),expression:"currentDrawerCategoryIndex === index + 1"}],key:("drawer-category-two-wrapper-" + (category.value)),staticClass:"drawer-category-two-wrapper"},_vm._l((category.children),function(categoryChild){return _c('div',{key:("drawer-category-two-" + (categoryChild.value)),staticClass:"drawer-category-two-item",class:_vm.currentDrawerCategoryId == categoryChild.value ? 'active' : '',on:{"click":function($event){return _vm.handleClickDrawerCategoryTwo(categoryChild.value)}}},[_vm._v("\n "+_vm._s(categoryChild.label)+"\n ")])}),0)})],2)])],2)])])}
  64. var staticRenderFns = []
  65. // CONCATENATED MODULE: ./pages/frontend/skill/list.vue?vue&type=template&id=16bc9074&scoped=true&
  66. // EXTERNAL MODULE: external "vuex"
  67. var external_vuex_ = __webpack_require__(2);
  68. // CONCATENATED MODULE: ./components/skill/dealSeoList.js
  69. class DealSeoData {
  70. constructor({
  71. $axios,
  72. req,
  73. app,
  74. redirect,
  75. error
  76. }) {
  77. this.$axios = $axios;
  78. this.req = req;
  79. this.app = app;
  80. this.redirect = redirect;
  81. this.error = error;
  82. this.pagination = {
  83. page: 1,
  84. pagesize: 12,
  85. total: 0,
  86. loading: false,
  87. selectedCateIdOne: '',
  88. selectedCateIdTwo: '',
  89. noMore: true
  90. };
  91. this.cateNameOne = '';
  92. this.cateNameTwo = '';
  93. this.mobile = this.app.$deviceType.isMobile();
  94. this.root_type = 0;
  95. }
  96. async dealData() {
  97. const self = this;
  98. let {
  99. name,
  100. query: {
  101. page = 1,
  102. root_type = 0
  103. },
  104. path,
  105. params,
  106. fullPath
  107. } = this.app.context.route;
  108. this.pagination.page = Number(page);
  109. this.root_type = root_type; // 目前仅将二级 id 拼接到 url 上
  110. let match = params.pathMatch || '';
  111. let matchList = match.split('/');
  112. matchList.pop();
  113. let lastMatch = matchList.pop() || ''; // console.log(`match: ${match}, matchList: ${matchList}, lastMatch: ${lastMatch}`)
  114. // 重定向
  115. if (path.indexOf('/frontend/skill/list') > -1) {
  116. this.redirect(301, '/skill/' + lastMatch);
  117. }
  118. let skillCate = await this._getSkillCate();
  119. let skillCateAll = [];
  120. skillCate.forEach(item => {
  121. if (item.children && item.children.length) {
  122. item.children.forEach(child => {
  123. skillCateAll.push(child);
  124. });
  125. }
  126. });
  127. if (lastMatch) {
  128. // 遍历分类数组,因为每个 children 都添加了“全部”,此处逻辑无需修改
  129. let selectedCateIdOne = '';
  130. skillCate.forEach(cateOne => {
  131. cateOne.children.forEach(cateTwo => {
  132. if (cateTwo.value === lastMatch) {
  133. selectedCateIdOne = cateOne.value;
  134. self.cateNameOne = cateOne.label;
  135. if (cateTwo.label === '全部') {
  136. self.cateNameTwo = cateOne.label;
  137. } else {
  138. self.cateNameTwo = cateTwo.label;
  139. }
  140. }
  141. });
  142. });
  143. if (selectedCateIdOne) {
  144. this.pagination.selectedCateIdOne = selectedCateIdOne;
  145. this.pagination.selectedCateIdTwo = lastMatch;
  146. }
  147. } // 处理完分类信息,再获取数据
  148. let skillList = await this._getSkillList();
  149. return {
  150. root_type,
  151. skillCate,
  152. skillCateAll,
  153. skillList,
  154. //首次获取的数据
  155. mobile: this.mobile,
  156. pagination: this.pagination,
  157. head: this.dealThisMeta()
  158. };
  159. }
  160. /** 获取技能分类 */
  161. async _getSkillCate() {
  162. let res = await this.$axios.$post('/api/sale/cateListYes', {
  163. type: 2,
  164. root_type: this.root_type
  165. });
  166. let skillCate = [];
  167. if (Number(res.status) === 1) {
  168. skillCate = res.data || [];
  169. skillCate = skillCate.map(item => {
  170. let children = item.child_list.map(child => {
  171. return {
  172. value: child.f_name,
  173. label: child.name
  174. };
  175. });
  176. return {
  177. value: item.f_name,
  178. label: item.name,
  179. children: children
  180. };
  181. }); // web 端,为所有二级分类添加 “全部”
  182. if (!this.mobile) {
  183. skillCate.forEach(item => {
  184. if (item.children) {
  185. let allItem = {
  186. value: item.value,
  187. label: '全部'
  188. };
  189. item.children.splice(0, 0, allItem);
  190. }
  191. });
  192. }
  193. }
  194. return skillCate;
  195. }
  196. /** 获取技能服务列表 */
  197. async _getSkillList() {
  198. // 接口参数释义:https://www.yesdev.cn/apidocs-detail-20.html
  199. const data = {
  200. type: 1,
  201. page: this.pagination.page,
  202. page_size: this.pagination.pagesize,
  203. cate_id: this.pagination.selectedCateIdTwo,
  204. status: 2,
  205. owner_type: 1,
  206. root_type: this.root_type
  207. };
  208. let res = await this.$axios.$post('/api/sale/saleList', data);
  209. let skillList = [];
  210. if (Number(res.status) === 1) {
  211. skillList = res.data.list || [];
  212. skillList.forEach(item => {
  213. let imageList = item.image.split(',');
  214. item.coverImage = imageList[0] || '';
  215. imageList.splice(0, 1);
  216. item.imageList = imageList;
  217. });
  218. this.pagination.total = Number(res.data.total);
  219. this.pagination.pagesize = Number(res.data.page_size) || 9;
  220. if (this.pagination.page * this.pagination.pagesize >= this.pagination.total) {
  221. this.pagination.noMore = true;
  222. } else {
  223. this.pagination.noMore = false;
  224. }
  225. }
  226. return skillList;
  227. }
  228. dealThisMeta() {
  229. let head = {
  230. title: "",
  231. keyword: "",
  232. description: "",
  233. h1: "",
  234. canonical: "",
  235. metaLocation: ""
  236. };
  237. if (this.req) {
  238. const {
  239. headers: {
  240. host
  241. },
  242. url
  243. } = this.req; //拼接canonical
  244. if (host.indexOf('local') !== -1) {
  245. head.canonical = 'http://' + host + url;
  246. } else {
  247. head.canonical = 'https://' + host + url;
  248. }
  249. }
  250. if (this.cateNameTwo) {
  251. // 分类页
  252. head.title = `${this.cateNameTwo}技能服务-程序员客栈技术服务`;
  253. head.keyword = `${this.cateNameTwo}开发,${this.cateNameTwo}编程,自学${this.cateNameTwo},${this.cateNameTwo}教学`;
  254. head.description = "技能服务是程序员客栈远程工作平台为企业和自由职业者提供的标准化数字服务,通过标准定价的模块化技能,帮助企业和自由职业者快速达成合作。";
  255. } else {
  256. // 列表页,无筛选参数
  257. head.title = "程序员客栈技能商城-【程序员客栈技能服务】";
  258. head.keyword = "程序员客栈技能商城,远程工作,Logo设计,网页设计,微信公众号运营,PPT设计,社群运营,文案编辑,视频剪辑,音频录制,翻译";
  259. head.description = "技能服务是程序员客栈远程工作平台为企业和自由职业者提供的标准化数字服务,通过标准定价的模块化技能,帮助企业和自由职业者快速达成合作。";
  260. }
  261. return head;
  262. }
  263. }
  264. // EXTERNAL MODULE: external "qs"
  265. var external_qs_ = __webpack_require__(33);
  266. var external_qs_default = /*#__PURE__*/__webpack_require__.n(external_qs_);
  267. // 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/list.vue?vue&type=script&lang=js&
  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. //
  396. //
  397. //
  398. //
  399. //
  400. //
  401. //
  402. //
  403. //
  404. //
  405. //
  406. //
  407. //
  408. //
  409. //
  410. //
  411. //
  412. //
  413. //
  414. //
  415. //
  416. //
  417. //
  418. //
  419. //
  420. //
  421. //
  422. //
  423. //
  424. //
  425. //
  426. //
  427. //
  428. //
  429. //
  430. //
  431. //
  432. //
  433. //
  434. //
  435. //
  436. //
  437. //
  438. //
  439. //
  440. //
  441. //
  442. //
  443. //
  444. //
  445. //
  446. //
  447. //
  448. //
  449. //
  450. //
  451. //
  452. //
  453. //
  454. //
  455. //
  456. //
  457. //
  458. //
  459. //
  460. //
  461. //
  462. //
  463. //
  464. //
  465. //
  466. //
  467. //
  468. //
  469. //
  470. //
  471. //
  472. //
  473. //
  474. //
  475. //
  476. //
  477. //
  478. //
  479. //
  480. //
  481. //
  482. //
  483. //
  484. //
  485. //
  486. //
  487. //
  488. //
  489. //
  490. //
  491. //
  492. //
  493. //
  494. //
  495. //
  496. //
  497. //
  498. //
  499. //
  500. //
  501. //
  502. //
  503. //
  504. //
  505. //
  506. //
  507. //
  508. //
  509. //
  510. //
  511. //
  512. //
  513. //
  514. //
  515. //
  516. //
  517. //
  518. //
  519. //
  520. //
  521. //
  522. //
  523. //
  524. //
  525. //
  526. //
  527. //
  528. //
  529. //
  530. //
  531. //
  532. //
  533. //
  534. //
  535. //
  536. //
  537. //
  538. //
  539. //
  540. //
  541. //
  542. //
  543. //
  544. //
  545. //
  546. //
  547. //
  548. //
  549. //
  550. //
  551. //
  552. //
  553. //
  554. //
  555. //
  556. //
  557. //
  558. //
  559. //
  560. //
  561. //
  562. //
  563. //
  564. //
  565. //
  566. //
  567. //
  568. //
  569. //
  570. //
  571. //
  572. //
  573. //
  574. //
  575. //
  576. //
  577. //
  578. //
  579. //
  580. //
  581. //
  582. //
  583. //
  584. //
  585. //
  586. //
  587. //
  588. //
  589. //
  590. //
  591. //
  592. //
  593. //
  594. //
  595. //
  596. //
  597. //
  598. //
  599. /* harmony default export */ var listvue_type_script_lang_js_ = ({
  600. name: "SeoSkillList",
  601. data() {
  602. return {
  603. baseUrl: "",
  604. // firstLoad: true,
  605. isWeixinApp: true,
  606. categoryExpanded: true,
  607. // 更多按钮不要,默认为展开状态
  608. showCategoryDrawer: false,
  609. currentDrawerCategoryId: 0,
  610. currentDrawerCategoryIndex: 0
  611. };
  612. },
  613. head() {
  614. const {
  615. title = "",
  616. keyword = "",
  617. description = "",
  618. h1 = "",
  619. canonical = "",
  620. metaLocation
  621. } = this.head || {};
  622. let obj = {
  623. title: title,
  624. meta: [{
  625. name: "keywords",
  626. content: keyword
  627. }, {
  628. name: "description",
  629. content: description
  630. }, {
  631. name: "h1",
  632. content: h1
  633. }],
  634. link: [{
  635. rel: "canonical",
  636. href: canonical
  637. }]
  638. };
  639. if (metaLocation) {
  640. obj.meta.push({
  641. name: "location",
  642. content: metaLocation
  643. });
  644. }
  645. return obj;
  646. },
  647. computed: { ...Object(external_vuex_["mapState"])(["deviceType"]),
  648. showWxHeader() {
  649. return !this.deviceType.app && !this.isWeixinApp && (this.deviceType.android || this.deviceType.ios);
  650. },
  651. mainMarginTop() {
  652. if (this.mobile && this.showWxHeader) {
  653. return "64px !important";
  654. } else if (this.mobile) {
  655. return "0px !important";
  656. } else {
  657. return "20px !important";
  658. }
  659. }
  660. },
  661. async asyncData({ ...params
  662. }) {
  663. let dealDataObj = new DealSeoData(params);
  664. let ans = await dealDataObj.dealData();
  665. return { ...ans
  666. };
  667. },
  668. mounted() {
  669. this.baseUrl = this.$store.state.domainConfig.siteUrl;
  670. this.isWeixinApp = navigator.userAgent.indexOf("miniProgram") > -1;
  671. },
  672. methods: {
  673. /** 分页获取技能列表数据 */
  674. _getSkillList() {
  675. const self = this;
  676. const data = {
  677. type: 1,
  678. page: this.pagination.page,
  679. page_size: this.pagination.pagesize,
  680. cate_id: this.pagination.selectedCateIdTwo,
  681. status: 2,
  682. owner_type: 1,
  683. root_type: this.root_type
  684. };
  685. this.pagination.loading = true;
  686. this.pagination.noMore = false;
  687. this.$axios.$post("/api/sale/saleList", data).then(res => {
  688. if (Number(res.status) === 1) {
  689. let skillList = res.data.list || [];
  690. skillList.forEach(item => {
  691. let imageList = item.image.split(",");
  692. item.coverImage = imageList[0] || "";
  693. imageList.splice(0, 1);
  694. item.imageList = imageList;
  695. });
  696. if (self.mobile) {
  697. self.skillList = self.skillList.concat(skillList);
  698. } else {
  699. self.skillList = skillList;
  700. }
  701. self.pagination.total = res.data.total;
  702. self.pagination.pagesize = res.data.page_size || 9;
  703. if (self.pagination.page * self.pagination.pagesize >= self.pagination.total) {
  704. console.log("noMore true", self.pagination);
  705. self.pagination.noMore = true;
  706. } else {
  707. console.log("noMore false", self.pagination);
  708. self.pagination.noMore = false;
  709. }
  710. }
  711. }).then(() => {
  712. self.pagination.loading = false;
  713. });
  714. },
  715. /** 点击展开、收起 */
  716. handleClickExpandCategory() {
  717. this.categoryExpanded = !this.categoryExpanded;
  718. },
  719. /** 点击一级分类时 */
  720. handleClickCategoryOne(id) {
  721. if (id === 0) {
  722. // 点击全部时,移除筛选分类
  723. this.pagination.selectedCateIdOne = id;
  724. this.pagination.selectedCateIdTwo = "";
  725. this.currentDrawerCategoryId = "";
  726. this.pagination.page = 1;
  727. this.skillList = [];
  728. window.scroll(0, 0);
  729. this._getSkillList();
  730. return;
  731. }
  732. if (this.pagination.selectedCateIdOne !== id) {
  733. this.pagination.selectedCateIdOne = id;
  734. }
  735. },
  736. /** 点击二级分类时:移动端 */
  737. handleClickCategoryTwo(id) {
  738. if (this.pagination.selectedCateIdTwo === id) {
  739. this.pagination.selectedCateIdTwo = "";
  740. this.currentDrawerCategoryId = "";
  741. } else {
  742. this.pagination.selectedCateIdTwo = id;
  743. this.currentDrawerCategoryId = id;
  744. }
  745. this.pagination.page = 1;
  746. this.skillList = [];
  747. window.scroll(0, 0);
  748. this._getSkillList();
  749. },
  750. /** 分页页码改变时 */
  751. handlePageChange(val) {
  752. let query = {
  753. page: val
  754. };
  755. if (this.root_type && Number(this.root_type) > 0) {
  756. query.root_type = this.root_type;
  757. }
  758. window.location.href = `${window.location.origin}${window.location.pathname}?${external_qs_default.a.stringify(query)}`;
  759. },
  760. /** mobile 加载更多 */
  761. handleLoadMoreSkill() {
  762. if (this.pagination.loading) {
  763. return;
  764. }
  765. this.pagination.page++;
  766. this._getSkillList();
  767. },
  768. /** 点击筛选时 */
  769. handleShowCategoryDrawer() {
  770. this.showCategoryDrawer = true;
  771. },
  772. /**
  773. * 点击 mobile 分类 drawer 一级分类
  774. */
  775. handleClickDrawerCategoryOne(id) {
  776. if (id === 0) {
  777. this.showCategoryDrawer = false;
  778. return;
  779. }
  780. if (id !== this.currentDrawerCategoryIndex) {
  781. this.currentDrawerCategoryIndex = id;
  782. }
  783. },
  784. /**
  785. * 点击 mobile 分类 drawer 二级分类
  786. */
  787. handleClickDrawerCategoryTwo(id) {
  788. if (this.currentDrawerCategoryId === id) {
  789. this.pagination.selectedCateIdTwo = "";
  790. } else {
  791. this.pagination.selectedCateIdTwo = id;
  792. }
  793. this.currentDrawerCategoryId = id;
  794. this.showCategoryDrawer = false;
  795. this.pagination.page = 1;
  796. this.skillList = [];
  797. window.scroll(0, 0);
  798. this._getSkillList();
  799. },
  800. /**
  801. * 点击 mobile 的一项技能时
  802. */
  803. handleClickSkillItem(saleId) {
  804. if (this.deviceType.android || this.deviceType.ios) {
  805. // 端跳转
  806. let jumpUrl = `${this.baseUrl}/s/${saleId}`;
  807. location.href = `proginn://webview?url=${jumpUrl}`;
  808. } else {
  809. // web 跳转
  810. location.href = `/s/${saleId}`;
  811. }
  812. },
  813. /**
  814. * 点击成为讲师
  815. */
  816. handleClickAdd() {
  817. location.href = "/workbench/skill/index";
  818. }
  819. }
  820. });
  821. // CONCATENATED MODULE: ./pages/frontend/skill/list.vue?vue&type=script&lang=js&
  822. /* harmony default export */ var skill_listvue_type_script_lang_js_ = (listvue_type_script_lang_js_);
  823. // EXTERNAL MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/runtime/componentNormalizer.js
  824. var componentNormalizer = __webpack_require__(1);
  825. // CONCATENATED MODULE: ./pages/frontend/skill/list.vue
  826. function injectStyles (context) {
  827. var style0 = __webpack_require__(509)
  828. if (style0.__inject__) style0.__inject__(context)
  829. var style1 = __webpack_require__(510)
  830. if (style1.__inject__) style1.__inject__(context)
  831. }
  832. /* normalize component */
  833. var component = Object(componentNormalizer["a" /* default */])(
  834. skill_listvue_type_script_lang_js_,
  835. render,
  836. staticRenderFns,
  837. false,
  838. injectStyles,
  839. "16bc9074",
  840. "68954517"
  841. )
  842. /* harmony default export */ var list = __webpack_exports__["default"] = (component.exports);
  843. /***/ })
  844. };;
  845. //# sourceMappingURL=126.js.map