119.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. exports.ids = [119];
  2. exports.modules = {
  3. /***/ 210:
  4. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5. "use strict";
  6. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DealSeoData; });
  7. class DealSeoData {
  8. constructor({
  9. $axios,
  10. req,
  11. app,
  12. redirect,
  13. error
  14. }) {
  15. this.$axios = $axios;
  16. this.req = req;
  17. this.app = app;
  18. this.redirect = redirect;
  19. this.error = error;
  20. this.mobile = this.app.$deviceType.isMobile();
  21. this.pagination = {
  22. page: 1,
  23. pagesize: 10,
  24. total: 0,
  25. pageCount: 1,
  26. loading: false,
  27. selectedTabVal: 0,
  28. // 0 全部 19 技术服务商 18 人力外包
  29. noMore: true
  30. };
  31. }
  32. async dealData() {
  33. const self = this;
  34. let {
  35. name,
  36. query: {
  37. page = 1,
  38. root_type = 0
  39. },
  40. path,
  41. params,
  42. fullPath
  43. } = this.app.context.route;
  44. let match = params.pathMatch || '';
  45. let matchList = match.split('/');
  46. matchList.pop();
  47. let lastMatch = matchList.pop() || ''; // 重定向
  48. if (path.indexOf('/company/list') > -1) {
  49. this.redirect(301, '/company/');
  50. }
  51. let companyList = await this._companyList();
  52. return {
  53. mobile: this.mobile,
  54. companyList,
  55. pagination: this.pagination,
  56. head: this.dealThisMeta()
  57. };
  58. } // 列表数据
  59. async _companyList() {
  60. let companyList = [];
  61. let data = {
  62. cert_id: this.pagination.selectedTabVal,
  63. page: this.pagination.page,
  64. pagesize: this.pagination.pagesize
  65. };
  66. let res = await this.$axios.$post('/uapi/company', data);
  67. if (res.status === 1) {
  68. companyList = res.data.list || [];
  69. this.pagination.total = res.data.count;
  70. return companyList;
  71. }
  72. }
  73. dealThisMeta() {
  74. let head = {
  75. title: "",
  76. keyword: "",
  77. description: "",
  78. h1: "",
  79. canonical: "",
  80. metaLocation: ""
  81. };
  82. if (this.req) {
  83. const {
  84. headers: {
  85. host
  86. },
  87. url
  88. } = this.req; //拼接canonical
  89. if (host.indexOf('local') !== -1) {
  90. head.canonical = 'http://' + host + url;
  91. } else {
  92. head.canonical = 'https://' + host + url;
  93. }
  94. }
  95. head.title = "程序员兼职,程序员私活,程序员接单平台-程序员客栈";
  96. head.keyword = "网站建设,程序员外包,APP开发制作,APP小程序,程序员招聘";
  97. head.description = "高级兼职程序员,帮您解决软件开发、UI设计、APP小程序、前端、原型产品经理、测试运维、人工智能、大数据区块链、网站建设制作、程序员招聘等问题";
  98. return head;
  99. }
  100. }
  101. /***/ }),
  102. /***/ 211:
  103. /***/ (function(module, exports) {
  104. // Exports
  105. module.exports = {};
  106. /***/ }),
  107. /***/ 212:
  108. /***/ (function(module, exports) {
  109. // Exports
  110. module.exports = {};
  111. /***/ }),
  112. /***/ 474:
  113. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  114. "use strict";
  115. __webpack_require__.r(__webpack_exports__);
  116. /* 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_d2d076de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(211);
  117. /* 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_d2d076de_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_d2d076de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  118. /* 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_d2d076de_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_d2d076de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  119. /* 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_d2d076de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  120. /***/ }),
  121. /***/ 475:
  122. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  123. "use strict";
  124. __webpack_require__.r(__webpack_exports__);
  125. /* 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__(212);
  126. /* 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__);
  127. /* 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__));
  128. /* 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);
  129. /***/ }),
  130. /***/ 73:
  131. /***/ (function(module, exports, __webpack_require__) {
  132. module.exports = __webpack_require__.p + "img/empty@2x.f8d7c57.png";
  133. /***/ }),
  134. /***/ 745:
  135. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  136. "use strict";
  137. // ESM COMPAT FLAG
  138. __webpack_require__.r(__webpack_exports__);
  139. // 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/company/list.vue?vue&type=template&id=d2d076de&scoped=true&
  140. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.$deviceType.isMobile() ? 'mobileMain' : '',style:({marginTop: _vm.mainMarginTop, marginBottom: _vm.$deviceType.isMobile() ? '0px' : '30px !important'})},[_vm._ssrNode("<div class=\"consult-wrapper\" data-v-d2d076de>","</div>",[_vm._ssrNode("<div class=\"consult-top\" data-v-d2d076de><div class=\"tabs\" data-v-d2d076de><div"+(_vm._ssrClass("tabs-item",_vm.num==0 ? 'active' : ''))+" data-v-d2d076de>全部</div> <div"+(_vm._ssrClass("tabs-item",_vm.num==19 ? 'active' : ''))+" data-v-d2d076de>技术服务商</div> <div"+(_vm._ssrClass("tabs-item",_vm.num==18 ? 'active' : ''))+" data-v-d2d076de>人力外包</div></div></div> "),_vm._ssrNode("<div data-v-d2d076de>","</div>",[(_vm.companyList.length)?_vm._ssrNode("<div class=\"company-list\" data-v-d2d076de>","</div>",_vm._l((_vm.companyList),function(item){return _vm._ssrNode("<a"+(_vm._ssrAttr("href",("/company/" + (item.uid))))+" data-v-d2d076de>","</a>",[_c('img',{directives:[{name:"real-img",rawName:"v-real-img",value:(item.logo),expression:"item.logo"}],staticClass:"img",attrs:{"src":_vm.defaultImg,"alt":item.name}},[]),_vm._ssrNode(" <div class=\"right\" data-v-d2d076de><h3 class=\"title\" data-v-d2d076de>"+_vm._ssrEscape(_vm._s(item.name))+"</h3> <div class=\"industry\" data-v-d2d076de>"+(_vm._ssrList((item.tag),function(tag){return ("<span data-v-d2d076de>"+_vm._ssrEscape(_vm._s(tag.name))+"</span>")}))+"</div> <div class=\"intro\" data-v-d2d076de><span data-v-d2d076de>入驻平台: <em data-v-d2d076de>"+_vm._ssrEscape(_vm._s(!item.time ? 0 : item.time)+"年")+"</em></span> <span data-v-d2d076de>企业规模: <em data-v-d2d076de>"+_vm._ssrEscape(_vm._s(!item.group_type ? 0 : item.group_type)+"人")+"</em></span> <span data-v-d2d076de>办公地址: <em data-v-d2d076de>"+_vm._ssrEscape(_vm._s(!item.address ? '暂无' : item.address))+"</em></span></div> <p class=\"info\" data-v-d2d076de>"+_vm._ssrEscape(_vm._s(item.brief_introduction))+"</p></div>")],2)}),0):_vm._ssrNode(("<div class=\"result-empty-wrapper\" style=\"margin-top: 10px;\" data-v-d2d076de><img"+(_vm._ssrAttr("src",__webpack_require__(73)))+" alt=\"empty\" data-v-d2d076de> <span data-v-d2d076de>暂无内容</span></div>"))]),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"pagination\" data-v-d2d076de>","</div>",[_c('el-pagination',{attrs:{"background":"","layout":"prev, pager, next","current-page":_vm.pagination.page,"total":_vm.pagination.total},on:{"current-change":_vm.handlePageChange}})],1)],2)])}
  141. var staticRenderFns = []
  142. // CONCATENATED MODULE: ./pages/company/list.vue?vue&type=template&id=d2d076de&scoped=true&
  143. // EXTERNAL MODULE: external "vuex"
  144. var external_vuex_ = __webpack_require__(2);
  145. // EXTERNAL MODULE: ./components/company/dealSeoList.js
  146. var dealSeoList = __webpack_require__(210);
  147. // EXTERNAL MODULE: external "qs"
  148. var external_qs_ = __webpack_require__(32);
  149. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/webpack/node_modules/vue-loader/lib??vue-loader-options!./pages/company/list.vue?vue&type=script&lang=js&
  150. //
  151. //
  152. //
  153. //
  154. //
  155. //
  156. //
  157. //
  158. //
  159. //
  160. //
  161. //
  162. //
  163. //
  164. //
  165. //
  166. //
  167. //
  168. //
  169. //
  170. //
  171. //
  172. //
  173. //
  174. //
  175. //
  176. //
  177. //
  178. //
  179. //
  180. //
  181. //
  182. //
  183. //
  184. //
  185. //
  186. //
  187. //
  188. //
  189. //
  190. //
  191. //
  192. //
  193. //
  194. //
  195. //
  196. //
  197. //
  198. //
  199. /* harmony default export */ var listvue_type_script_lang_js_ = ({
  200. name: 'SeoCompanyList',
  201. data() {
  202. return {
  203. num: 0,
  204. baseUrl: '',
  205. isWeixinApp: true,
  206. defaultImg: __webpack_require__(73)
  207. };
  208. },
  209. head() {
  210. const {
  211. title = "",
  212. keyword = "",
  213. description = "",
  214. h1 = "",
  215. canonical = "",
  216. metaLocation
  217. } = this.head || {};
  218. let obj = {
  219. title: title,
  220. meta: [{
  221. name: "keywords",
  222. content: keyword
  223. }, {
  224. name: "description",
  225. content: description
  226. }, {
  227. name: "h1",
  228. content: h1
  229. }],
  230. link: [{
  231. rel: "canonical",
  232. href: canonical
  233. }]
  234. };
  235. if (metaLocation) {
  236. obj.meta.push({
  237. name: "location",
  238. content: metaLocation
  239. });
  240. }
  241. return obj;
  242. },
  243. computed: { ...Object(external_vuex_["mapState"])(["deviceType"]),
  244. showWxHeader() {
  245. return !this.deviceType.app && !this.isWeixinApp && (this.deviceType.android || this.deviceType.ios);
  246. },
  247. mainMarginTop() {
  248. if (this.mobile && this.showWxHeader) {
  249. return '64px !important';
  250. } else if (this.mobile) {
  251. return '0px !important';
  252. } else {
  253. return '10px !important';
  254. }
  255. }
  256. },
  257. async asyncData({ ...params
  258. }) {
  259. let dealDataObj = new dealSeoList["a" /* default */](params);
  260. let result = await dealDataObj.dealData();
  261. return { ...result
  262. };
  263. },
  264. mounted() {
  265. this.baseUrl = this.$store.state.domainConfig.siteUrl;
  266. this.isWeixinApp = navigator.userAgent.indexOf("miniProgram") > -1;
  267. },
  268. methods: {
  269. tabsItem(num) {
  270. this.num = num;
  271. this.getCompanyList(num);
  272. },
  273. getCompanyList(num = 0) {
  274. this.pagination.loading = true;
  275. let data = {
  276. cert_id: num,
  277. page: this.pagination.page,
  278. pagesize: this.pagination.pagesize
  279. };
  280. this.$axios.$post('/uapi/company', data).then(res => {
  281. const {
  282. data,
  283. info,
  284. status
  285. } = res;
  286. if (status === 1) {
  287. this.companyList = data.list;
  288. this.pagination.total = data.count;
  289. }
  290. }).then(() => {
  291. this.pagination.loading = false;
  292. }); // this.pagination.loading = true
  293. // this.pagination.noMore = false
  294. },
  295. /** 分页页码改变时 */
  296. handlePageChange(val) {
  297. this.pagination.page = val;
  298. this.getCompanyList(this.num);
  299. }
  300. /** mobile 加载更多 */
  301. // handleLoadMoreConsult () {
  302. // if (this.pagination.loading) {
  303. // return
  304. // }
  305. // this.pagination.page++
  306. // this.getCompanyList()
  307. // },
  308. }
  309. });
  310. // CONCATENATED MODULE: ./pages/company/list.vue?vue&type=script&lang=js&
  311. /* harmony default export */ var company_listvue_type_script_lang_js_ = (listvue_type_script_lang_js_);
  312. // EXTERNAL MODULE: ./node_modules/@nuxt/webpack/node_modules/vue-loader/lib/runtime/componentNormalizer.js
  313. var componentNormalizer = __webpack_require__(1);
  314. // CONCATENATED MODULE: ./pages/company/list.vue
  315. function injectStyles (context) {
  316. var style0 = __webpack_require__(474)
  317. if (style0.__inject__) style0.__inject__(context)
  318. var style1 = __webpack_require__(475)
  319. if (style1.__inject__) style1.__inject__(context)
  320. }
  321. /* normalize component */
  322. var component = Object(componentNormalizer["a" /* default */])(
  323. company_listvue_type_script_lang_js_,
  324. render,
  325. staticRenderFns,
  326. false,
  327. injectStyles,
  328. "d2d076de",
  329. "6dec9cee"
  330. )
  331. /* harmony default export */ var list = __webpack_exports__["default"] = (component.exports);
  332. /***/ })
  333. };;
  334. //# sourceMappingURL=119.js.map