talent.blade.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. @extends('module.layouts.content')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
  6. <link rel="stylesheet" href="{{ theme_asset('app/css/element.css') }}">
  7. <link href="{{theme_asset('app/css/resume/resume.css')}}" rel="stylesheet"/>
  8. <style>
  9. .container{
  10. width:1182px;
  11. margin:0 auto;
  12. }
  13. .enterce{
  14. text-align: center;
  15. }
  16. .search{
  17. text-align: center;
  18. margin-top: 20px;
  19. }
  20. .talent-list{
  21. border: 1px #EEEEEE solid;
  22. margin-top: 10px;
  23. }
  24. .talent-list .talent-item{
  25. border-bottom: 1px #EEEEEE solid;
  26. padding-top: 18px;
  27. padding-bottom: 18px;
  28. background-color: #FFFFFF;
  29. position: relative;
  30. }
  31. .ribbon {
  32. width: 106px;
  33. height: 108px;
  34. overflow: hidden;
  35. position: absolute;
  36. top: -6px;
  37. left: -6px;
  38. }
  39. .ribbon2 {
  40. line-height: 18px;
  41. text-align: center;
  42. transform: rotate(-45deg);
  43. position: relative;
  44. padding: 8px 0;
  45. left: -33px;
  46. top: 26px;
  47. width: 150px;
  48. background: #a19d9d;
  49. color: #fff;
  50. box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1);
  51. letter-spacing: 1px;
  52. }
  53. .ribbon1 {
  54. line-height: 18px;
  55. text-align: center;
  56. transform: rotate(-45deg);
  57. position: relative;
  58. padding: 8px 0;
  59. left: -33px;
  60. top: 26px;
  61. width: 150px;
  62. background: #91F600;
  63. color: #666;
  64. box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1);
  65. letter-spacing: 1px;
  66. }
  67. .talent-list .talent-item .photo {
  68. width: 140px;
  69. float: left;
  70. margin-left: 20px;
  71. }
  72. .talent-list .talent-item .tcent {
  73. float: left;
  74. width: 420px;
  75. }
  76. .talent-list .talent-item .tcent .txt {
  77. font-size: 16px;
  78. color: #333333;
  79. line-height: 40px;
  80. }
  81. .talent-list .talent-item .tcent .txt span {
  82. color: #999999;
  83. padding-left: 3px;
  84. padding-right: 3px;
  85. font-size: 10px;
  86. }
  87. .talent-list .talent-item .rbtn {
  88. float: right;
  89. width: 145px;
  90. position: relative;
  91. margin-top: 15px;
  92. }
  93. .talent-list .talent-item .rbtn .btn {
  94. width: 80px;
  95. height: 38px;
  96. line-height: 38px;
  97. color: #3b87f7;
  98. border: 1px #3b87f7 solid;
  99. border-radius: 6px;
  100. cursor: pointer;
  101. padding: 0 20px;
  102. font-size: 15px;
  103. margin-top: 2px;
  104. text-align: center;
  105. }
  106. .talent-list .talent-item .rbtn:before {
  107. position: absolute;
  108. content: "";
  109. width: 1px;
  110. height: 78px;
  111. background: #e0e0e0;
  112. left: -28px;
  113. bottom: 5px;
  114. top: 10px
  115. }
  116. .page{
  117. margin-top: 20px;
  118. text-align: center;
  119. }
  120. </style>
  121. @endpush
  122. @push('js')
  123. @endpush
  124. @section('content')
  125. <div id="app">
  126. <div class="banner">
  127. <h1 style="text-align: center;line-height: 300px;font-size: 60px;">
  128. 硕博专场
  129. </h1>
  130. </div>
  131. <div class="container" v-loading="loading">
  132. <div class="enterce">
  133. <el-button type="primary">找人才</el-button>
  134. <el-link href="/shuobo/enterprise" :underline="false"><el-button >找工作</el-button></el-link>
  135. </div>
  136. <div class="search">
  137. <el-form :inline="true" class="demo-form-inline" @submit.native.prevent>
  138. <el-form-item style="margin-bottom: 0" >
  139. <el-input placeholder="姓氏/学校/学历/专业/领域/专长" v-model="keyword" style="width: 300px"></el-input>
  140. </el-form-item>
  141. <el-form-item style="margin-bottom: 0">
  142. <el-button type="primary" @click="getData(1)">查询</el-button>
  143. </el-form-item>
  144. </el-form>
  145. </div>
  146. <div class="talent-list">
  147. <div class="talent-item" v-if="number > 0">
  148. <div class='ribbon'>
  149. <div class='ribbon1'>跟进中</div>
  150. </div>
  151. <div class="photo">
  152. <img src="{{theme_asset('app/images/08.png')}}" >
  153. </div>
  154. <div class="tcent">
  155. <div class="txt font_gray6"><label v-text="talent_info.realname"></label><span>|</span><label v-text="talent_info.education"></label></div>
  156. <div class="dlabs">
  157. <div class="dl">毕业学校:@{{ talent_info.school }}</div>
  158. <div class="dl">专业:@{{ talent_info.pro }}</div>
  159. <div class="dl">行业领域:@{{ talent_info.trade_type }}</div>
  160. <div class="dl">核心技术或专长:@{{ talent_info.speciality }}</div>
  161. <div class="clear"></div>
  162. </div>
  163. </div>
  164. <div class="rbtn">
  165. <div class="btn" data-batch="false" style="margin-top: 30px" @click="show(talent_info.id,1)">查看详情</div>
  166. {{-- <div class="btn" data-batch="false" data-url="">收藏</div>--}}
  167. </div>
  168. <div class="clear"></div>
  169. </div>
  170. <div class="talent-item" v-for="item in list">
  171. <div class='ribbon' v-if="item.notice">
  172. <div class='ribbon2'>历史跟进过</div>
  173. </div>
  174. <div class="photo">
  175. <img src="{{theme_asset('app/images/08.png')}}" >
  176. </div>
  177. <div class="tcent">
  178. <div class="txt font_gray6"><label v-text="item.name"></label><span>|</span><label v-text="item.education"></label></div>
  179. <div class="dlabs">
  180. <div class="dl">毕业学校:@{{ item.school }}</div>
  181. <div class="dl">专业:@{{ item.pro }}</div>
  182. <div class="dl">行业领域:@{{ item.trade_type }}</div>
  183. <div class="dl">核心技术或专长:@{{ item.speciality }}</div>
  184. <div class="clear"></div>
  185. </div>
  186. </div>
  187. <div class="rbtn">
  188. <div class="btn" data-batch="false" style="margin-top: 30px" @click="show(item.id)">查看详情</div>
  189. {{-- <div class="btn" data-batch="false" data-url="">收藏</div>--}}
  190. </div>
  191. <div class="clear"></div>
  192. </div>
  193. </div>
  194. <div class="page">
  195. <el-pagination
  196. background
  197. layout="prev, pager, next"
  198. :total="total"
  199. @current-change="page_change">
  200. </el-pagination>
  201. </div>
  202. </div>
  203. <el-dialog title="注意" :visible.sync="dialogVisible" width="30%" v-if="login != 0 && number == 0">
  204. <span>为提高企业于人才的沟通效率,每个企业能且仅能同时对接一名硕博人才,请确认您是否需要此名硕博人才的信息?</span>
  205. <span slot="footer" class="dialog-footer">
  206. <el-button @click="dialogVisible = false">再看看</el-button>
  207. <el-button type="primary" @click="choose_talent">就他/她了</el-button>
  208. </span>
  209. </el-dialog>
  210. <el-dialog title="注意" :visible.sync="dialogVisible" width="30%" v-if="login != 0 && number != 0">
  211. <span>您当前已有正在跟进中的硕博人才,请及时跟进并反馈!</span>
  212. <span slot="footer" class="dialog-footer">
  213. <el-button type="primary" @click="dialogVisible = false">已了解</el-button>
  214. </span>
  215. </el-dialog>
  216. <el-dialog title="注意" :visible.sync="dialogVisible" width="30%" v-if="login == 0">
  217. <span>登录后即可查看人才的联系方式,请确认是否登录?</span>
  218. <span slot="footer" class="dialog-footer">
  219. <el-button @click="dialogVisible = false">再看看</el-button>
  220. <el-button type="primary" @click="company_login">带我去登录</el-button>
  221. </span>
  222. </el-dialog>
  223. <el-dialog title="跟进反馈" :visible.sync="dialogFormVisible">
  224. <el-form :model="form">
  225. <el-descriptions title="人才信息" :column="3" size="" border style="margin:20px 0">
  226. <el-descriptions-item>
  227. <template slot="label">
  228. <i class="el-icon-user"></i>
  229. 姓名
  230. </template>
  231. @{{ talent_info.realname }}
  232. </el-descriptions-item>
  233. <el-descriptions-item>
  234. <template slot="label">
  235. <i class="el-icon-mobile-phone"></i>
  236. 手机号
  237. </template>
  238. @{{ talent_info.mobile }}
  239. </el-descriptions-item>
  240. <el-descriptions-item>
  241. <template slot="label">
  242. <i class="el-icon-location-outline"></i>
  243. 居住地
  244. </template>
  245. @{{ talent_info.address }}
  246. </el-descriptions-item>
  247. <el-descriptions-item>
  248. <template slot="label">
  249. <i class="el-icon-school"></i>
  250. 学校
  251. </template>
  252. @{{ talent_info.school }}
  253. </el-descriptions-item>
  254. <el-descriptions-item>
  255. <template slot="label">
  256. <i class="el-icon-document"></i>
  257. 专业
  258. </template>
  259. @{{ talent_info.pro }}
  260. </el-descriptions-item>
  261. </el-descriptions>
  262. <el-form-item label="跟进结果" :label-width="formLabelWidth">
  263. <el-radio-group v-model="form.status">
  264. <el-radio :label="-1">不合适</el-radio>
  265. <el-radio :label="1">洽谈成功</el-radio>
  266. <el-radio :label="2">其他</el-radio>
  267. </el-radio-group>
  268. </el-form-item>
  269. <el-form-item label="记录备注" :label-width="formLabelWidth">
  270. <el-input type="textarea" v-model="form.remark"></el-input>
  271. </el-form-item>
  272. </el-form>
  273. <div slot="footer" class="dialog-footer">
  274. <el-button @click="dialogFormVisible = false">去跟进</el-button>
  275. <el-button type="primary" @click="update(talent_info.id)">提交结果</el-button>
  276. </div>
  277. </el-dialog>
  278. </div>
  279. @endsection
  280. @section('script')
  281. <script src="{{theme_asset('app/js/vue.min.js')}}"></script>
  282. <script src="{{theme_asset('app/js/axios.js')}}"></script>
  283. <script src="{{theme_asset('app/js/element.js')}}"></script>
  284. <script>
  285. new Vue({
  286. el: '#app',
  287. data() {
  288. return {
  289. enter: '1',
  290. loading:true,
  291. keyword:'',
  292. page_current:1,
  293. total: 0,
  294. list: [],//人才数据
  295. dialogVisible: false,
  296. dialogLogin: false,
  297. login: 0,
  298. redirect_url: "{{ urlencode(route('shuobo.talent'))}}",
  299. number:0,
  300. shuobo_id: 0,
  301. dialogFormVisible: false,
  302. form: {},
  303. formLabelWidth: '120px',
  304. talent_info:[]
  305. };
  306. },
  307. methods: {
  308. getData(page){
  309. axios.post("/shuobo/getTalentData",{keyword:this.keyword,page:page}).then(response => {
  310. this.loading = false;
  311. this.list = response.data.list;
  312. this.total = response.data.total;
  313. console.log(this.list)
  314. });
  315. },
  316. page_change(page){
  317. this.getData(page);
  318. },
  319. getC2S(){
  320. axios.post("/shuobo/getCompanyToShuobo").then(response => {
  321. if(response.status == 200){
  322. this.login = response.data.login;
  323. if(this.login == 1){
  324. let data = response.data.data;
  325. this.number = data.number;
  326. if(data.number > 0){
  327. this.talent_info = data.info;
  328. this.form.id = data.info.id;
  329. //delete this.list[data.shuobo_id];
  330. }
  331. }
  332. }
  333. });
  334. },
  335. show(id,type = 0){
  336. if(type == 0){
  337. this.dialogVisible = true;
  338. this.shuobo_id = id;
  339. }else{
  340. this.dialogFormVisible = true;
  341. }
  342. },
  343. update(id){
  344. if(id>0){
  345. axios.post("/shuobo/updateCompanyToShuobo",this.form).then(response => {
  346. if(response.status == 200){
  347. if(response.data.data){
  348. this.number = 0;
  349. this.talent_info = [];
  350. }
  351. this.dialogFormVisible = false;
  352. this.$message(response.data.msg);
  353. window.location.reload();
  354. }
  355. });
  356. }
  357. },
  358. handkeyCode(e){
  359. let key =null;
  360. if(window.event === undefined){
  361. key = e.keyCode;
  362. }else{
  363. key = window.event.keyCode;
  364. }
  365. if(key ===13) {
  366. this.getData(1);
  367. }
  368. },
  369. company_login(){
  370. window.location.href = "{{ route("login.company") }}" + "?redirect_url=" + this.redirect_url
  371. },
  372. choose_talent(id){
  373. this.loading = true;
  374. axios.post("/shuobo/getTalentInfo",{id:this.shuobo_id}).then(response => {
  375. if(response.status == 200){
  376. if(response.data.data != ''){
  377. this.dialogVisible = false;
  378. this.loading = false;
  379. this.dialogFormVisible = true;
  380. this.talent_info = response.data.data;
  381. this.form.id = response.data.data.id;
  382. this.number++;
  383. }else{
  384. this.$message(response.data.msg);
  385. }
  386. }
  387. });
  388. },
  389. },
  390. created(){
  391. this.getData(1);
  392. this.getC2S();
  393. window.addEventListener('keydown',this.handkeyCode,true);
  394. }
  395. })
  396. </script>
  397. @endsection