jobInformationInfo-list.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. <template>
  2. <div>
  3. <el-breadcrumb separator=">">
  4. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  5. <el-breadcrumb-item>
  6. <a href="#">基础信息管理</a>
  7. </el-breadcrumb-item>
  8. <el-breadcrumb-item>
  9. 求职信息管理
  10. </el-breadcrumb-item>
  11. </el-breadcrumb>
  12. <el-divider></el-divider>
  13. <!--
  14. 要resetFields起作用,必须配置:model和prop
  15. -->
  16. <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
  17. <el-form-item label="求职人员" prop="name">
  18. <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
  19. </el-form-item>
  20. <el-form-item label="意向行业" prop="intendedIndustries">
  21. <el-select v-model="queryModel.intendedIndustries" size="mini" filterable placeholder="请选择" clearable>
  22. <el-option
  23. v-for="result in intendedIndustriesList"
  24. :key="result.id"
  25. :label="result.name"
  26. :value="result.value"
  27. ></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="意向岗位" prop="intendedPosition">
  31. <el-input type="text" size="mini" v-model="queryModel.intendedPosition"></el-input>
  32. </el-form-item>
  33. <el-form-item label="结算方式" prop="method">
  34. <el-select v-model="queryModel.method" size="mini" filterable placeholder="请选择" clearable>
  35. <el-option
  36. v-for="result in methodList"
  37. :key="result.id"
  38. :label="result.name"
  39. :value="result.value"
  40. ></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <!-- <el-form-item label="工作经验" prop="workExperience">
  44. <el-select v-model="queryModel.workExperience" size="mini" filterable placeholder="请选择" clearable>
  45. <el-option
  46. v-for="result in workExperienceList"
  47. :key="result.id"
  48. :label="result.name"
  49. :value="result.value"
  50. ></el-option>
  51. </el-select>
  52. </el-form-item> -->
  53. <el-form-item label="最高学历" prop="education">
  54. <el-select v-model="queryModel.education" size="mini" filterable placeholder="请选择" clearable>
  55. <el-option
  56. v-for="result in educationList"
  57. :key="result.id"
  58. :label="result.name"
  59. :value="result.value"
  60. ></el-option>
  61. </el-select>
  62. </el-form-item>
  63. <el-form-item label="审核状态" prop="status">
  64. <el-select v-model="queryModel.status" size="mini" filterable placeholder="请选择" clearable>
  65. <el-option
  66. v-for="result in statusList"
  67. :key="result.id"
  68. :label="result.name"
  69. :value="result.value"
  70. ></el-option>
  71. </el-select>
  72. </el-form-item>
  73. <el-form-item>
  74. <el-button
  75. type="primary"
  76. size="mini"
  77. icon="ios-search"
  78. @click="changePage(1)"
  79. :loading="loading"
  80. >查询</el-button>&nbsp;
  81. <el-button
  82. type="info"
  83. size="mini"
  84. style="margin-left: 8px"
  85. @click="handleReset('queryForm')"
  86. >重置</el-button>&nbsp;
  87. </el-form-item>
  88. </el-form>
  89. <el-divider></el-divider>
  90. <el-row class="button-group">
  91. <!-- <el-button type="primary" size="small" plain icon="el-icon-circle-plus" @click="handleAdd">新增</el-button> -->
  92. <el-button
  93. type="primary"
  94. size="small"
  95. plain
  96. icon="el-icon-remove"
  97. :disabled="multipleSelection.length==0"
  98. @click="handleBatchDelete"
  99. >删除选中项</el-button>
  100. <el-button
  101. type="primary"
  102. size="small"
  103. plain
  104. icon="el-icon-upload2"
  105. @click="exportXls"
  106. >导出数据</el-button>
  107. </el-row>
  108. <el-table
  109. :data="tableData"
  110. style="min-height:400px;"
  111. v-loading="loading"
  112. stripe
  113. @sort-change="sortChange"
  114. @selection-change="handleSelectionChange"
  115. >
  116. <el-table-column type="selection" width="55"></el-table-column>
  117. <el-table-column prop="personName" label="求职人员">
  118. <template slot-scope="{row}">
  119. <span>{{row.personName}}</span>
  120. </template>
  121. </el-table-column>
  122. <el-table-column prop="serviceDesc" label="服务描述" width="200"></el-table-column>
  123. <el-table-column prop="intendedIndustriesN" label="意向行业"></el-table-column>
  124. <el-table-column prop="intendedPosition" label="意向岗位"></el-table-column>
  125. <el-table-column prop="hopeSalary" label="期望薪资"></el-table-column>
  126. <el-table-column prop="methodN" label="结算方式"></el-table-column>
  127. <el-table-column prop="address" label="居住地"></el-table-column>
  128. <el-table-column prop="educationN" label="最高学历"></el-table-column>
  129. <el-table-column prop="status" label="审核状态">
  130. <template slot-scope="{row}">
  131. <span v-if="row.status=='0'" style="color: #F56C6C;">未审核</span>
  132. <span v-else-if="row.status=='1'" style="color: #67C23A;">已审核</span>
  133. </template>
  134. </el-table-column>
  135. <el-table-column label="操作" width="280">
  136. <template slot-scope="{row}">
  137. <el-button class="btu1" v-if="row.status=='0'" size="mini" type="primary" @click="handleCheck(row)">审核</el-button>
  138. <el-button class="btu1" size="mini" type="danger" @click="handleDelete(row)">删除</el-button>
  139. <el-badge v-if="row.isReadNumber!=0" :value="row.isReadNumber" class="item">
  140. <el-button size="mini" type="success" @click="handleRelation(row)">收到邀请</el-button>
  141. </el-badge>
  142. <el-button v-else size="mini" type="success" @click="handleRelation(row)">收到邀请</el-button>
  143. </template>
  144. </el-table-column>
  145. </el-table>
  146. <el-pagination
  147. :current-page.sync="pageIndex"
  148. :total="totalElements"
  149. :page-sizes="pageSizeList"
  150. @current-change="changePage"
  151. @size-change="pageSizeChange"
  152. layout="total, sizes, prev, pager, next, jumper"
  153. ></el-pagination>
  154. <enterpriseInfo-detail
  155. v-if="showModal"
  156. ref="userDetail"
  157. :businessKey="businessKey"
  158. :title="modalTitle"
  159. @close="onDetailModalClose"
  160. ></enterpriseInfo-detail>
  161. <jobEnterpriseRelation-list
  162. v-if="showModal2"
  163. :businessKey="businessKey"
  164. :title="modalTitle2"
  165. @close="onDetailModalClose2"
  166. ></jobEnterpriseRelation-list>
  167. </div>
  168. </template>
  169. <script>
  170. import jobInformationInfoApi from "@/api/base/jobInformationInfo";
  171. import enterpriseInfoDetail from "./enterpriseInfo-detail";
  172. import jobEnterpriseRelationList from "./jobEnterpriseRelation-list";
  173. import dataDictionaryApi from "@/api/sys/dataDictionary";
  174. export default {
  175. name: 'baseJobInformationInfoList',
  176. data() {
  177. var self = this;
  178. return {
  179. queryModel: {
  180. name: "",
  181. intendedIndustries:"",
  182. intendedPosition:"",
  183. method:"",
  184. workExperience:"",
  185. education:"",
  186. status:"",
  187. },
  188. loading: false,
  189. tableData: [],
  190. pageIndex: 1,
  191. pageSize: 10,
  192. totalPages: 0,
  193. totalElements: 0,
  194. field: "",
  195. direction: "",
  196. pageSizeList: [10, 20, 30],
  197. multipleSelection: [],
  198. modalTitle: "",
  199. modalTitle2: "",
  200. businessKey: "",
  201. showModal: false,
  202. showModal2: false,
  203. dialogFormVisible:false,
  204. newPassword:"",
  205. roleResult:[],
  206. intendedIndustriesList:[],
  207. methodList:[],
  208. workExperienceList:[],
  209. educationList:[],
  210. statusList:[
  211. {
  212. "id":"0",
  213. "name":"未审核",
  214. "value":"0"
  215. },
  216. {
  217. "id":"1",
  218. "name":"已审核",
  219. "value":"1"
  220. }
  221. ],
  222. props: {
  223. // 配置项(必选)
  224. value: "id",
  225. label: "name",
  226. children: "children"
  227. },
  228. };
  229. },
  230. created() {
  231. dataDictionaryApi.findByCatalogName({catalogName: "意向行业",})
  232. .then((response) => {
  233. var jsonData = response.data;
  234. this.intendedIndustriesList = jsonData.data;
  235. });
  236. dataDictionaryApi.findByCatalogName({catalogName: "结算方式",})
  237. .then((response) => {
  238. var jsonData = response.data;
  239. this.methodList = jsonData.data;
  240. });
  241. dataDictionaryApi.findByCatalogName({catalogName: "工作经验",})
  242. .then((response) => {
  243. var jsonData = response.data;
  244. this.workExperienceList = jsonData.data;
  245. });
  246. dataDictionaryApi.findByCatalogName({catalogName: "学历",})
  247. .then((response) => {
  248. var jsonData = response.data;
  249. this.educationList = jsonData.data;
  250. });
  251. },
  252. methods: {
  253. changePage(pageIndex,exportFlag) {
  254. var self = this;
  255. console.log(pageIndex);
  256. self.pageIndex = pageIndex;
  257. var formData = new FormData();
  258. formData.append("pageIndex", self.pageIndex);
  259. if(exportFlag!=null){
  260. formData.append("exportFlag", exportFlag);
  261. formData.append("pageSize", 10000);
  262. }
  263. else{
  264. formData.append("pageSize", self.pageSize);
  265. }
  266. formData.append("name", self.queryModel.name);
  267. formData.append("intendedIndustries", self.queryModel.intendedIndustries);
  268. formData.append("intendedPosition", self.queryModel.intendedPosition);
  269. formData.append("method", self.queryModel.method);
  270. formData.append("workExperience", self.queryModel.workExperience);
  271. formData.append("education", self.queryModel.education);
  272. formData.append("status", self.queryModel.status);
  273. self.loading = true;
  274. jobInformationInfoApi.pageList(formData).then(function(response) {
  275. self.loading = false;
  276. var jsonData = response.data;
  277. if(jsonData.result){
  278. if(exportFlag){
  279. //导出
  280. self.$message({
  281. showClose: true,
  282. type: "success",
  283. message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
  284. dangerouslyUseHTMLString: true,
  285. duration: 30000
  286. });
  287. }
  288. else{
  289. //分页查看
  290. var page = jsonData.data;
  291. self.tableData = page.data;
  292. self.totalPages = page.totalPages;
  293. self.totalElements = page.recordsTotal;
  294. }
  295. }
  296. else {
  297. self.$message({
  298. message: jsonData.message + "",
  299. type: "warning"
  300. });
  301. }
  302. }).catch((error)=>{
  303. self.loading = false;
  304. });
  305. },
  306. pageSizeChange(pageSize) {
  307. this.pageSize = pageSize;
  308. },
  309. sortChange(data) {
  310. this.field = data.column.field;
  311. this.direction = data.order == "ascending" ? "asc" : "desc";
  312. this.changePage(this.pageIndex);
  313. },
  314. handleSelectionChange(val) {
  315. this.multipleSelection = val;
  316. },
  317. handleReset(name) {
  318. this.$refs[name].resetFields();
  319. },
  320. exportXls() {
  321. this.changePage(1,true);
  322. },
  323. handleAdd() {
  324. var self = this;
  325. self.modalTitle = "新增企业";
  326. self.businessKey = "";
  327. self.showModal = true;
  328. },
  329. handleEdit(record) {
  330. var self = this;
  331. self.modalTitle = "编辑企业";
  332. self.businessKey = record.id;
  333. self.showModal = true;
  334. },
  335. handleRelation(record) {
  336. var self = this;
  337. self.modalTitle2 = "收到邀请列表";
  338. self.businessKey = record.id;
  339. self.showModal2 = true;
  340. },
  341. handleCheck(record){
  342. var self = this;
  343. this.$confirm("是否确认审核?", "提示", {
  344. confirmButtonText: "确定",
  345. cancelButtonText: "取消",
  346. type: "warning"
  347. }).then(() => {
  348. jobInformationInfoApi.check(record.id).then(function(response) {
  349. var jsonData = response.data;
  350. if (jsonData.result) {
  351. // var index = self.tableData.indexOf(record);
  352. // self.tableData.splice(index, 1);
  353. self.changePage(self.pageIndex);
  354. self.$message({
  355. type: "success",
  356. message: "审核成功!"
  357. });
  358. }
  359. });
  360. });
  361. },
  362. handleDelete(record) {
  363. var self = this;
  364. this.$confirm("是否确认删除?", "提示", {
  365. confirmButtonText: "确定",
  366. cancelButtonText: "取消",
  367. type: "warning"
  368. }).then(() => {
  369. jobInformationInfoApi.remove(record.id).then(function(response) {
  370. var jsonData = response.data;
  371. if (jsonData.result) {
  372. // var index = self.tableData.indexOf(record);
  373. // self.tableData.splice(index, 1);
  374. self.changePage(self.pageIndex);
  375. self.$message({
  376. type: "success",
  377. message: "删除成功!"
  378. });
  379. }
  380. });
  381. });
  382. },
  383. handleBatchDelete() {
  384. var self = this;
  385. var idList = this.multipleSelection.map(record => {
  386. return record.id;
  387. });
  388. this.$confirm("是否确认删除选中项?", "提示", {
  389. confirmButtonText: "确定",
  390. cancelButtonText: "取消",
  391. type: "warning"
  392. }).then(() => {
  393. jobInformationInfoApi.batchRemove(idList).then(function(response) {
  394. var jsonData = response.data;
  395. if (jsonData.result) {
  396. self.changePage(self.pageIndex);
  397. self.$message({
  398. type: "success",
  399. message: "删除成功!"
  400. });
  401. }
  402. });
  403. });
  404. },
  405. onDetailModalClose(refreshed) {
  406. this.showModal = false;
  407. if(refreshed) {
  408. this.changePage(this.pageIndex);
  409. }
  410. },
  411. onDetailModalClose2(refreshed,status) {
  412. this.showModal2 = false;
  413. if(refreshed||status) {
  414. this.changePage(this.pageIndex);
  415. }
  416. },
  417. },
  418. mounted: function() {
  419. var self = this;
  420. this.changePage(1);
  421. },
  422. components: {
  423. "enterpriseInfo-detail":enterpriseInfoDetail,
  424. "jobEnterpriseRelation-list":jobEnterpriseRelationList
  425. }
  426. };
  427. </script>
  428. <style lang="scss" scoped>
  429. .el-breadcrumb {
  430. margin: 10px;
  431. line-height: 20px;
  432. }
  433. .el-divider {
  434. margin: 5px 0;
  435. }
  436. .demo-form-inline {
  437. margin-left: 10px;
  438. text-align: left;
  439. }
  440. .button-group {
  441. padding: 10px;
  442. text-align: left;
  443. }
  444. .item{
  445. margin-left: 10px;
  446. }
  447. .btu1{
  448. margin-top: 10px;
  449. margin-right: 15px;
  450. }
  451. </style>