gameList.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. <template>
  2. <view>
  3. <!-- #ifdef MP-WEIXIN -->
  4. <view class="bg" style="position: fixed;top: 0;left: 0;right: 0;z-index: 9;">
  5. <!-- #endif -->
  6. <!-- #ifndef MP-WEIXIN -->
  7. <view class="bg" style="position: fixed;top: 86rpx;left: 0;right: 0;z-index: 9;">
  8. <!-- #endif -->
  9. <u-dropdown ref="uDropdown" @open="open">
  10. <u-dropdown-item @change="change1" v-model="titles1" :title="title1" :options="filterData1">
  11. </u-dropdown-item>
  12. <u-dropdown-item @change="change2" v-model="titles2" :title="title2" :options="filterData2">
  13. </u-dropdown-item>
  14. <u-dropdown-item @change="change3" v-model="titles3" :title="title3" :options="filterData3">
  15. </u-dropdown-item>
  16. <u-dropdown-item @change="change4" v-model="titles4" :title="title4" :options="filterData4">
  17. </u-dropdown-item>
  18. </u-dropdown>
  19. </view>
  20. <!-- #ifdef MP-WEIXIN -->
  21. <view class="" v-if="list.length" style="margin-top: 100upx;">
  22. <!-- #endif -->
  23. <!-- #ifndef MP-WEIXIN -->
  24. <view class="" v-if="list.length" style="margin-top: 100upx;">
  25. <!-- #endif -->
  26. <view class="listbox" v-for="(item,index) in list" :key="index" @click="goDetail(item)">
  27. <view class="flex align-center justify-between">
  28. <view>
  29. <view class="" style="color: #000;font-size: 34rpx; font-weight: 800;">{{getfomate(item.resumesName,item.resumesSex)}}</view>
  30. <view class="flex align-center margin-top-xs flex-wrap" style="color: #999999;">
  31. <text>{{item.resumesSex==1?'男':'女'}}</text>
  32. <text class="margin-lr-sm" style="width: 1rpx;height: 25rpx;background: #CCCCCC;">
  33. </text>
  34. <text>{{item.resumesAge}}岁</text>
  35. <text class="margin-lr-sm" style="width: 1rpx;height: 25rpx;background: #CCCCCC;">
  36. </text>
  37. <text>{{item.resumesWorkExperience}}</text>
  38. <text class="margin-lr-sm" style="width: 1rpx;height: 25rpx;background: #CCCCCC;">
  39. </text>
  40. <text>{{item.resumesEducation}}</text>
  41. <text class="margin-lr-sm" style="width: 1rpx;height: 25rpx;background: #CCCCCC;">
  42. </text>
  43. <text>{{item.resumesCompensation}}</text>
  44. </view>
  45. </view>
  46. <view>
  47. <image :src="item.avatar?item.avatar:'../../../static/logo.png'"
  48. style="width: 100upx;height: 100upx;border-radius: 55upx;">
  49. </image>
  50. </view>
  51. </view>
  52. <view class="margin-top" v-if="item.resumesCompanyList">
  53. <view class="flex align-center">
  54. <view class="margin-right-xs">
  55. <image src="../../../static/images/qi.png" style="width: 30upx;height: 32upx;">
  56. </image>
  57. </view>
  58. <view class="" style="color: #121212;">
  59. {{item.resumesCompanyList.length!=0?item.resumesCompanyList[0].resumesTitle:'暂无'}}
  60. </view>
  61. </view>
  62. <view class=" margin-left margin-top-xs padding-left-xs"
  63. style="color: #999999;font-size: 26upx;">
  64. {{item.resumesCompanyList.length!=0?item.resumesCompanyList[0].resumesPost:'暂无'}}
  65. </view>
  66. </view>
  67. <view class="margin-top-sm" v-if="item.resumesWorkList">
  68. <view class="flex">
  69. <view class="margin-right-xs" style="padding-top: 8rpx;">
  70. <image src="https://zhaopin.xianmaxiong.com/file/uploadPath/2022/09/20/15a1ea35392f86d2dc0f1dc2def0f2d9.png" style="width: 30upx;height:30upx;"></image>
  71. </view>
  72. <view style="color: #121212;">意向岗位<text class="text-sm" style="margin-left: 10rpx;color: #999999;">{{item.rulePostName}}</text></view>
  73. </view>
  74. <view class="text-sm margin-left margin-top-xs padding-left-xs" style="color: #999999;">
  75. {{item.resumesPost}}
  76. </view>
  77. </view>
  78. <!-- <view class="margin-top-sm" v-if="item.school">
  79. <view class="flex align-center">
  80. <view class="margin-right-xs">
  81. <image src="../../../static/images/geren.png" style="width: 35upx;height:26upx;">
  82. </image>
  83. </view>
  84. <view class="text-bold" style="color: #121212;">{{item.school?item.school:'暂无'}}</view>
  85. </view>
  86. <view class=" margin-left margin-top-xs padding-left-xs"
  87. style="color: #999999;font-size: 26upx;">
  88. {{item.rulePostName}}
  89. </view>
  90. </view> -->
  91. <view class="margin-top-sm" v-if="item.resumesIntention">
  92. <view class="flex">
  93. <view class="margin-right-xs" style="padding-top: 8rpx;">
  94. <image src="../../../static/images/index/add.png" style="width: 30upx;height:30upx;">
  95. </image>
  96. </view>
  97. <view class="" style="color: #121212;">意向城市(首选)</view>
  98. </view>
  99. <view class=" margin-left margin-top-xs padding-left-xs"
  100. style="color: #999999;font-size: 26upx;">
  101. {{item.resumesIntention}}
  102. </view>
  103. </view>
  104. <view class="margin-top-sm" v-if="item.city">
  105. <view class="flex ">
  106. <view class="margin-right-xs" style="padding-top: 8rpx;">
  107. <image src="../../../static/images/index/add.png" style="width: 30upx;height:30upx;">
  108. </image>
  109. </view>
  110. <view class="" style="color: #121212;">意向城市(备选)</view>
  111. </view>
  112. <view class=" margin-left margin-top-xs padding-left-xs"
  113. style="color: #999999;font-size: 26upx;">
  114. {{item.city}}
  115. </view>
  116. </view>
  117. </view>
  118. </view>
  119. <empty v-if="list.length == 0"></empty>
  120. </view>
  121. </template>
  122. <script>
  123. import citys from '../citys/citys.js';
  124. import empty from '@/components/empty.vue'
  125. export default {
  126. components: {
  127. empty
  128. },
  129. data() {
  130. return {
  131. titles1: '',
  132. title1: '岗位',
  133. titles2: '',
  134. title2: '专业',
  135. titles3: '',
  136. titles4: '',
  137. title4: '意向城市',
  138. title3: '工作经验',
  139. page: 1,
  140. limit: 10,
  141. gameId: '',
  142. gameName: '',
  143. resumesPost: '', //岗位
  144. resumesMajor: '', //专业
  145. resumesWorkExperience: '',
  146. defaultIndex: [0, 0, 0],
  147. filterData1: [{
  148. label: '全部',
  149. value: '',
  150. }, ],
  151. filterData2: [{
  152. label: '全部',
  153. value: '',
  154. }, ],
  155. filterData3: [{
  156. label: '全部',
  157. value: '',
  158. }, ],
  159. filterData4: [{
  160. label: '全部',
  161. value: '',
  162. }],
  163. city: null,
  164. sex: null,
  165. order: null,
  166. latitude: null,
  167. longitude: null,
  168. token: '',
  169. isVip: false,
  170. myId: '',
  171. cont: '',
  172. list: [],
  173. resumesIntention:'',
  174. ruleClassifyId:'',
  175. }
  176. },
  177. onLoad(option) {
  178. this.filterData4 = [...this.filterData4,...citys]
  179. //岗位
  180. this.getruleList();
  181. //工作经验
  182. this.getdictList2();
  183. //获取简历列表
  184. this.getorderList();
  185. },
  186. methods: {
  187. //格式化姓名
  188. getfomate(data,sex){
  189. let housex = ''
  190. if(sex==1){ //先生
  191. housex = '先生'
  192. }else{ //女士
  193. housex = '女士'
  194. }
  195. return data.substring(0,1)+housex
  196. },
  197. open(e){
  198. console.log(e)
  199. if(e==0){
  200. this.title2 = '专业'
  201. this.resumesMajor = ''
  202. }else if(e==1){
  203. if(this.resumesPost==''){
  204. this.$refs.uDropdown.close();
  205. uni.showToast({
  206. title:'请先选择岗位',
  207. icon:'none'
  208. })
  209. }
  210. }
  211. },
  212. //岗位
  213. change1(e) {
  214. this.filterData1.map(res => {
  215. if (res.value == this.titles1) {
  216. if (res.label == '全部') {
  217. this.title1 = '岗位'
  218. this.page = 1
  219. this.resumesPost = res.value
  220. this.getorderList(2)
  221. } else {
  222. this.title1 = res.label
  223. this.page = 1
  224. this.resumesPost = res.label
  225. this.ruleClassifyId = res.value
  226. this.getorderList(2)
  227. this.getPostList();
  228. }
  229. }
  230. })
  231. },
  232. //专业
  233. change2(e) {
  234. this.filterData2.map(res => {
  235. if (res.value == this.titles2) {
  236. if (res.label == '全部') {
  237. this.title2 = '专业'
  238. this.page = 1
  239. this.resumesMajor = res.label
  240. this.getorderList(2)
  241. } else {
  242. this.title2 = res.label
  243. this.page = 1
  244. this.resumesMajor = res.label
  245. this.getorderList(2)
  246. }
  247. }
  248. })
  249. },
  250. //工作经验
  251. change3(e) {
  252. this.filterData3.map(res => {
  253. if (res.value == this.titles3) {
  254. if (res.label == '全部') {
  255. this.title3 = '工作经验'
  256. this.page = 1
  257. this.resumesWorkExperience = res.value
  258. this.getorderList(2)
  259. } else {
  260. this.title3 = res.label
  261. this.page = 1
  262. this.resumesWorkExperience = res.value
  263. this.getorderList(2)
  264. }
  265. }
  266. })
  267. },
  268. //意向城市
  269. change4(e) {
  270. this.filterData4.map(res => {
  271. if (res.value == this.titles4) {
  272. if (res.label == '全部') {
  273. this.title4 = '意向城市'
  274. this.page = 1
  275. this.resumesIntention = res.value
  276. this.getorderList(2)
  277. } else {
  278. this.title4 = res.label
  279. this.page = 1
  280. this.resumesIntention = res.label
  281. this.getorderList(2)
  282. }
  283. }
  284. })
  285. },
  286. //查询工作经验
  287. getdictList2() {
  288. this.$Request.get("/app/dict/list", {
  289. type: '工作经验'
  290. }).then(res => {
  291. if (res.code == 0) {
  292. let arr = res.data
  293. arr = JSON.parse(JSON.stringify(arr).replace(/code/g, 'label'))
  294. this.filterData3 = [{
  295. label: '全部',
  296. value: ''
  297. }]
  298. this.filterData3 = [...this.filterData3, ...arr]
  299. }
  300. })
  301. },
  302. //获取专业
  303. getPostList() {
  304. let data = {
  305. ruleClassifyId: this.ruleClassifyId
  306. }
  307. this.$Request.post('/app/rule/selectRulePostList', data).then(res => {
  308. if (res.code == 0) {
  309. let arr = res.data
  310. arr = JSON.parse(JSON.stringify(arr).replace(/rulePostName/g, 'label'))
  311. arr = JSON.parse(JSON.stringify(arr).replace(/rulePostId/g, 'value'))
  312. this.filterData2 = arr
  313. }
  314. })
  315. },
  316. //查询岗位
  317. getruleList() {
  318. this.$Request.get("/app/rule/selectRuleClassifyList", {
  319. status: 1
  320. }).then(res => {
  321. if (res.code == 0) {
  322. let arr = res.data
  323. arr = JSON.parse(JSON.stringify(arr).replace(/ruleClassifyName/g, 'label'))
  324. arr = JSON.parse(JSON.stringify(arr).replace(/ruleClassifyId/g, 'value'))
  325. this.filterData1 = [{
  326. label: '全部',
  327. value: ''
  328. }]
  329. this.filterData1 = [...this.filterData1, ...arr]
  330. }
  331. })
  332. },
  333. //简历详情
  334. goDetail(e) {
  335. console.log(1)
  336. uni.navigateTo({
  337. url: '/pages/index/game/orderDet?resumesId=' + e.resumesId
  338. });
  339. },
  340. //简历列表
  341. getorderList() {
  342. let data = {
  343. page: this.page,
  344. limit: this.limit,
  345. status: 2,
  346. resumesPost: this.resumesPost, //岗位
  347. isRecommend: 2,
  348. resumesIntention:this.resumesIntention,//意向位置
  349. rulePostName: this.resumesMajor, //专业
  350. resumesWorkExperience: this.resumesWorkExperience //工作经验
  351. }
  352. this.$Request.get("/app/resumes/selectResumesList", data).then(res => {
  353. if (res.code == 0) {
  354. this.cont = res.data.totalPage
  355. if (this.page == 1) {
  356. this.list = res.data.list
  357. } else {
  358. this.list = [...this.list, ...res.data.list]
  359. }
  360. }
  361. uni.stopPullDownRefresh();
  362. })
  363. }
  364. },
  365. onReachBottom: function() {
  366. if (this.page == this.cont) {
  367. uni.showToast({
  368. title: '已经到底了',
  369. icon: 'none'
  370. })
  371. } else {
  372. this.page += 1;
  373. this.getorderList();
  374. }
  375. },
  376. onPullDownRefresh: function() {
  377. this.page = 1;
  378. this.getorderList();
  379. },
  380. }
  381. </script>
  382. <style>
  383. page {
  384. background-color: #F5F5F5;
  385. }
  386. .bg {
  387. background: #ffffff;
  388. }
  389. /deep/.navs {
  390. background: #FFFFFF !important;
  391. }
  392. .listbox {
  393. background: #FFFFFF;
  394. border-radius: 24upx;
  395. margin: 20upx 30upx;
  396. padding: 30upx;
  397. }
  398. .argrtn {
  399. background: #F6F6F6;
  400. color: #666666;
  401. font-size: 24upx;
  402. border-radius: 8upx;
  403. padding: 5upx 20upx;
  404. margin-right: 20upx;
  405. }
  406. </style>