store.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. import _ from 'lodash';
  4. Vue.use(Vuex);
  5. const api = {
  6. fairs: '/api/jobs/fairs',
  7. fairsInfo: '/api/jobs/fairs/{id}',
  8. fairsSimple: '/api/jobs/fairs/{id}/simple',
  9. infos: '/api/jobs/infos',
  10. infoss: '/api/jobs/infos/{id}',
  11. talks: '/api/jobs/talks',
  12. talksinfo: '/api/jobs/talks/{id}',
  13. posts: '/api/jobs/posts',
  14. postsinfo: '/api/jobs/posts/{id}',
  15. corpBase: '/api/corp/corps/{corpid}',
  16. corpInfo: '/api/corp/corps/{corpid}/info',
  17. corpIdentity: '/api/corp/corps/{corpid}/identity',
  18. userReg: '/api/stud/registers/{id}',
  19. tickets: '/api/jobs/tickets',
  20. ticketsinfo: '/api/jobs/tickets/{id}',
  21. resumes: '/api/jobs/resumes',
  22. resumesInfo: '/api/jobs/resumes/{id}',
  23. letters: '/api/jobs/letters',
  24. //微信部分
  25. connection: '/weixin/qrcode/create',
  26. wxtoken: '/weixin/qrcode/{qrcode}/token',
  27. studLogin: '/api/stud/login',
  28. //双选会企业信息
  29. fairCorp: '/api/jobs/faircorps',
  30. fairJobs: '/api/jobs/faircorps/{id}/jobs',
  31. //分站菜单
  32. menuQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/menu/list`,
  33. menuSearch: `/adminapi/menu/fetch/{id}`,
  34. // 站点管理
  35. siteQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/site/query`,
  36. siteFetch: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/site/config`,
  37. siteContent: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/site/content`,
  38. // 新闻管理
  39. newsQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/news/list`,
  40. newsFetch: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/news/fetch/{id}`,
  41. bugInfo: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/newscreeper/fetch/{id}`,
  42. //栏目管理
  43. columnQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/column/list`,
  44. columnFetch: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/column/fetch/{id}`,
  45. bugList: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/newscreeper/list`,
  46. //模块管理
  47. moduleQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/modules/list`,
  48. //合作单位/友情链接
  49. linkQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/img/list`,
  50. // 学生关注企业
  51. // stucorp: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
  52. // stucorpsearch: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
  53. // stucorplist: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
  54. // stucorpupdate: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
  55. // stucorpdelete: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp/{id}`,
  56. stucorp: `/api/stud/studentcorp`,
  57. stucorpsearch: '/api/stud/studentcorp',
  58. stucorplist: '/api/stud/studentcorp',
  59. stucorpdelete: '/api/stud/studentcorp/{id}',
  60. //测试前缀${process.env.NODE_ENV === 'development' ? '/adminapi' : '${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}'}
  61. //审核过的企业(主站用)
  62. getCorps: `/api/corp/corps/`,
  63. };
  64. export default new Vuex.Store({
  65. state: {
  66. user: {},
  67. },
  68. mutations: {
  69. setUser(state, payload) {
  70. if (payload) {
  71. state.user = payload;
  72. sessionStorage.setItem('user', JSON.stringify(payload));
  73. } else {
  74. let user = sessionStorage.getItem('user');
  75. if (user) state.user = JSON.parse(user);
  76. else return false;
  77. }
  78. },
  79. },
  80. actions: {
  81. //招聘会
  82. async jobfairOperation({ state }, { type, data }) {
  83. let result;
  84. let { skip, limit } = data;
  85. if (type === 'list') {
  86. data = this.$toUndefined(data);
  87. let { schid, date } = data;
  88. result = await this.$axios.$get(api.fairs, {}, { schid: schid, skip: skip, limit: limit, date: date, status: '1' });
  89. }
  90. if (type === 'search') {
  91. let { id } = data;
  92. result = await this.$axios.$get(api.fairsInfo, { id: id });
  93. }
  94. return result;
  95. },
  96. //招聘会企业信息
  97. async fairInfoOperation({ state }, { type, data }) {
  98. let result;
  99. let { skip, limit } = data;
  100. if (type === 'searchCorp') {
  101. let { schid, fairid, corpid, status } = data;
  102. result = this.$axios.$get(api.fairCorp, {}, { schid: schid, fairid: fairid, corpid: corpid, status: status, skip: skip, limit: limit });
  103. }
  104. if (type === 'searchJobs') {
  105. let { id } = data;
  106. result = this.$axios.$get(api.fairJobs, { id: id }, { skip: skip, limit: limit });
  107. }
  108. return result;
  109. },
  110. //招聘会简要信息
  111. async getfairsSimple({ state }, { type, data }) {
  112. let result;
  113. if (type === 'list') {
  114. let { id } = data;
  115. result = await this.$axios.$get(api.fairsSimple, { id: id });
  116. }
  117. return result;
  118. },
  119. //在线招聘
  120. async jobinfoOperation({ state }, { type, data }) {
  121. let { skip, limit } = data;
  122. let result;
  123. if (type === 'list') {
  124. data = this.$toUndefined(data);
  125. let { schid, corpname, is_practice } = data;
  126. result = await this.$axios.$get(api.infos, {}, { corpname: corpname, schid: schid, is_practice: is_practice, skip: skip, limit: limit, status: 1 });
  127. }
  128. if (type === 'search') {
  129. let { id } = data;
  130. result = await this.$axios.$get(api.infoss, { id: id });
  131. }
  132. return result;
  133. },
  134. //宣讲会
  135. async postTalksInfo({ state }, { type, data }) {
  136. let result;
  137. let { skip, limit } = data;
  138. if (type === 'list') {
  139. data = this.$toUndefined(data);
  140. let { schid, corpname, date } = data;
  141. result = await this.$axios.$get(api.talks, {}, { corpname: corpname, schid: schid, date: date, skip: skip, limit: limit, status: 1 });
  142. }
  143. if (type === 'search') {
  144. let { id } = data;
  145. result = await this.$axios.$get(api.talksinfo, { id: id });
  146. }
  147. return result;
  148. },
  149. //职位管理
  150. async postOperation({ state }, { type, data }) {
  151. let { skip, limit } = data;
  152. let result;
  153. if (type === 'list') {
  154. data = this.$toUndefined(data);
  155. let { schid, corpname, is_practice, corpid, is_publish } = data;
  156. result = await this.$axios.$get(
  157. `${api.posts}`,
  158. {},
  159. { schid: schid, corpid: corpid, corpname: corpname, is_practice: is_practice, skip: skip, limit: limit, is_publish: is_publish }
  160. );
  161. }
  162. if (type === 'search') {
  163. let { id } = data;
  164. result = await this.$axios.$get(api.postsinfo, { id: id });
  165. }
  166. return result;
  167. },
  168. //企业基本信息
  169. async corpOperation({ state }, { type, data }) {
  170. let result;
  171. if (type === 'search') {
  172. let { corpid } = data;
  173. result = await this.$axios.$get(api.corpInfo, { corpid: corpid });
  174. }
  175. if (type === 'component') {
  176. let { corpid } = data;
  177. let base = await this.$axios.$get(api.corpBase, { corpid: corpid });
  178. let info = await this.$axios.$get(api.corpInfo, { corpid: corpid });
  179. let identity = await this.$axios.$get(api.corpIdentity, { corpid: corpid });
  180. result = {
  181. data: { ...info.data, ...identity.data, ...base.data },
  182. errcode: `${info.errcode}` === '0' && `${identity.errcode}` === '0' && `${base.errcode}` === '0' ? '0' : '1',
  183. };
  184. }
  185. return result;
  186. },
  187. // 入场券接口
  188. async ticketsOperation({ state }, { type, data }) {
  189. let result;
  190. let { skip, limit } = data;
  191. if (type === 'add') {
  192. let { query, body } = data;
  193. result = await this.$axios.$post(api.tickets, body, {}, query);
  194. }
  195. if (type === 'list') {
  196. let { schid, fairid, studid } = data;
  197. result = await this.$axios.$get(api.tickets, {}, { schid: schid, fairid: fairid, studid: studid, skip: skip, limit: limit });
  198. }
  199. if (type === 'search') {
  200. let { id } = data;
  201. result = await this.$axios.$get(api.ticketsinfo, { id: id });
  202. }
  203. if (type === 'update') {
  204. let { info, id } = data;
  205. result = await this.$axios.$post(api.ticketsinfo, info, { id: id });
  206. }
  207. if (type === 'delete') {
  208. let { id } = data;
  209. result = await this.$axios.$delete(api.ticketsinfo, {}, { id: id });
  210. }
  211. return result;
  212. },
  213. //用户
  214. async userOperation({ stata }, { type, data }) {
  215. let result;
  216. if (type === 'search') {
  217. let { studid } = data;
  218. result = await this.$axios.$get(api.userReg, { id: studid });
  219. }
  220. if (type === 'login') {
  221. let { loginType, info } = data;
  222. result = this.$axios.$post(api.studLogin, info, {}, { type: loginType });
  223. }
  224. return result;
  225. },
  226. //求职信
  227. async lettersOperation({ state }, { type, data }) {
  228. let result;
  229. let { skip, limit } = data;
  230. if (type === 'list') {
  231. let { resume_id, status, corpname, studname, post_id } = data;
  232. result = await this.$axios.$get(
  233. api.letters,
  234. {},
  235. { post_id: post_id, resume_id: resume_id, status: status, corpname: corpname, studname: studname, skip: skip, limit: limit }
  236. );
  237. }
  238. if (type === 'apply') {
  239. let { query, body } = data;
  240. result = await this.$axios.$post(api.letters, body, {}, query);
  241. }
  242. return result;
  243. },
  244. // 简历管理
  245. async resumesOperation({ state }, { type, data }) {
  246. let result;
  247. if (type === 'add') {
  248. let { info, schid, studid } = data;
  249. result = await this.$axios.$post(api.resumes, info, {}, { schid: schid, studid: studid });
  250. }
  251. if (type === 'search') {
  252. let { id } = data;
  253. result = await this.$axios.$get(api.resumesInfo, { id: id });
  254. }
  255. if (type === 'update') {
  256. let { id, info } = data;
  257. result = await this.$axios.$post(api.resumesInfo, info, { id: id });
  258. }
  259. return result;
  260. },
  261. //微信部分
  262. async createConnection() {
  263. let result = await this.$axios.$post(api.connection);
  264. if (result.errcode != undefined && result.errcode === 0) {
  265. console.log('create qrcode success', result.data);
  266. return result.data;
  267. }
  268. console.error('create qrcode fail', result);
  269. },
  270. async getWxtoken({ state }, qrcode) {
  271. let result = await this.$axios.$post(api.wxtoken, {}, { qrcode: qrcode });
  272. if (result.errcode != undefined && result.errcode === 0) {
  273. console.log('qrcode login success', result);
  274. return result.token;
  275. }
  276. console.error('create qrcode fail', result);
  277. },
  278. //分站菜单
  279. async menuOperation({ state }, { type, data }) {
  280. let result;
  281. if (type === 'list') {
  282. let { site } = data;
  283. result = await this.$axios.$get(api.menuQuery, {}, { is_use: '0' });
  284. }
  285. if (type === 'search') {
  286. let { id } = data;
  287. result = await this.$axios.$get(api.menuSearch, { id: id });
  288. }
  289. return result;
  290. },
  291. //模块管理
  292. async moduleOperation({ state }, { type, data }) {
  293. let result;
  294. if (type === 'list') {
  295. result = await this.$axios.$get(api.moduleQuery, {}, { is_use: '0' });
  296. }
  297. return result;
  298. },
  299. // 站点管理
  300. async siteOperation({ state }, { type, data }) {
  301. let result;
  302. if (type === 'list') {
  303. let { site, column } = data;
  304. result = await this.$axios.$get(api.siteQuery, { column: column });
  305. }
  306. if (type === 'search') {
  307. let { site } = data;
  308. //_tenant
  309. let content = await this.$axios.$get(api.siteContent, {});
  310. result = await this.$axios.$get(api.siteFetch, {});
  311. if (content.data && `${content.errcode}` === '0') {
  312. console.log('in function:');
  313. result.data.content = content && content.data ? content.data : '';
  314. }
  315. }
  316. return result;
  317. },
  318. // 信息管理
  319. async newsOperation({ state }, { type, data }) {
  320. let { skip, limit } = data;
  321. let result;
  322. if (type === 'list') {
  323. let { site, parent_id, news_type } = data;
  324. if (news_type === '0') {
  325. result = await this.$axios.$get(api.bugList, {}, { parent_id: parent_id, skip: skip, limit: limit, is_use: '0' });
  326. } else {
  327. result = await this.$axios.$get(api.newsQuery, {}, { parent_id: parent_id, skip: skip, limit: limit, is_use: '0' });
  328. }
  329. }
  330. if (type === 'search') {
  331. let { id, news_type } = data;
  332. result = await this.$axios.$get(api.bugInfo, { id: id });
  333. }
  334. return result;
  335. },
  336. //栏目管理
  337. async columnOperation({ state }, { type, data }) {
  338. let { skip, limit } = data;
  339. let result;
  340. if (type === 'list') {
  341. //TODO
  342. let { parent_id, site } = data;
  343. result = await this.$axios.$get(api.columnQuery, {}, { parent_id: parent_id, is_use: '0' });
  344. }
  345. if (type === 'search') {
  346. let { parent_id } = data;
  347. result = await this.$axios.$get(api.columnFetch, { id: parent_id });
  348. }
  349. return result;
  350. },
  351. // 学生关注企业
  352. async stucorpOperation({ state }, { type, data }) {
  353. let result;
  354. let { skip, limit } = data;
  355. if (type === 'add') {
  356. let { query, body } = data;
  357. result = await this.$axios.$post(api.stucorp, body, {}, query);
  358. }
  359. if (type === 'list') {
  360. let { corpid, corpname, studid, studname, studschool } = data;
  361. result = await this.$axios.$get(
  362. api.stucorplist,
  363. {},
  364. { corpid: corpid, corpname: corpname, studid: studid, studname: studname, studschool: studschool, skip: skip, limit: limit }
  365. );
  366. }
  367. if (type === 'search') {
  368. let { id, studid, corpid } = data;
  369. result = await this.$axios.$get(api.stucorpsearch, {}, { studid: studid, corpid: corpid });
  370. }
  371. if (type === 'update') {
  372. let { info, id } = data;
  373. result = await this.$axios.$post(api.stucorpupdate, info, { id: id });
  374. }
  375. if (type === 'delete') {
  376. let { id } = data;
  377. result = await this.$axios.$delete(api.stucorpdelete, {}, { id: id });
  378. }
  379. return result;
  380. },
  381. //合作单位/友情链接
  382. async linkOperation({ state }, { type, data }) {
  383. let result;
  384. if (type === 'list') {
  385. let { site, type } = data;
  386. result = await this.$axios.$get(api.linkQuery, {}, { type: type, is_use: `0` });
  387. }
  388. return result;
  389. },
  390. //查询入驻的企业
  391. async corpListOperation({ state }) {
  392. let result = await this.$axios.$get(api.getCorps, {}, { status: '已认证', skip: 0, limit: 8 });
  393. return result;
  394. },
  395. },
  396. });
  397. const data = {
  398. testItem: {
  399. id: Math.random(),
  400. name: 'name',
  401. age: 'age',
  402. tel: '13099876544',
  403. },
  404. };