jobs.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <template>
  2. <div>
  3. <div class="count-list" v-if="auditData">
  4. <div class="count-item">全部:{{auditData.countAllStatus}}</div>
  5. <!-- <div class="count-item">审核中:{{auditData.countWaitAudit}}</div> -->
  6. <div class="count-item">开放中:{{auditData.countOpen}}</div>
  7. <div class="count-item">停止招聘:{{auditData.countOffline}}</div>
  8. <div class="count-item" @click="goPublishCompanies()">发布企业:{{auditData.countCompanies}}</div>
  9. <div class="count-item" @click="goChatUsers()">聊天数据>></div>
  10. <div class="count-item">当前统计数量:{{auditData.total}}</div>
  11. <div class="count-item" @click="goBehalfPost()">邀请代发岗位:{{auditData.countAuditAgencyPost}}</div>
  12. </div>
  13. <el-form :inline="true">
  14. <el-form-item label="岗位状态">
  15. <el-select v-model="searchParams.status" placeholder="全部">
  16. <el-option label="全部" value="0"></el-option>
  17. <el-option label="审核中" value="2"></el-option>
  18. <el-option label="开放中" value="3"></el-option>
  19. <el-option label="停止招聘" value="4"></el-option>
  20. <el-option label="审核失败" value="6"></el-option>
  21. <el-option label="已删除" value="5"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="岗位类型">
  25. <el-select v-model="searchParams.workType" placeholder="全部">
  26. <el-option label="全部" value="0"></el-option>
  27. <el-option label="远程" value="1"></el-option>
  28. <el-option label="驻场" value="2"></el-option>
  29. <el-option label="全职" value="3"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <!-- <el-form-item label="申请审核日期">
  33. <el-date-picker
  34. v-model="searchParams.dateTime"
  35. type="datetimerange"
  36. range-separator="至"
  37. start-placeholder="开始日期"
  38. end-placeholder="结束日期"
  39. value-format="yyyy-MM-dd HH:mm:ss"
  40. ></el-date-picker>
  41. </el-form-item>-->
  42. <el-form-item label="发布者">
  43. <el-input v-model="searchParams.uid" placeholder="全部"></el-input>
  44. </el-form-item>
  45. <el-form-item label="招聘结果">
  46. <el-select v-model="searchParams.recruitResult" placeholder="全部">
  47. <el-option label="-" value="0"></el-option>
  48. <el-option label="是" value="1"></el-option>
  49. <el-option label="否" value="2"></el-option>
  50. </el-select>
  51. </el-form-item>
  52. <el-form-item>
  53. <el-button type="primary" @click="getAuditList">查询</el-button>
  54. </el-form-item>
  55. </el-form>
  56. <div class="content" v-if="auditData && auditData.list">
  57. <el-table :data="auditData.list" @row-click="clickRow" border style="width: 100%">
  58. <el-table-column prop="id" label="岗位ID" width="70"></el-table-column>
  59. <el-table-column prop="occupationName" label="职位类型"></el-table-column>
  60. <el-table-column prop="workTypeName" label="工作方式"></el-table-column>
  61. <el-table-column prop="conversionType" label="转化来源"></el-table-column>
  62. <el-table-column label="工作周期">
  63. <template slot-scope="scope">
  64. <span>{{scope.row.month}}个月</span>
  65. </template>
  66. </el-table-column>
  67. <el-table-column label="驻场地区">
  68. <template slot-scope="scope">
  69. <span>{{scope.row.cityName || '-'}}</span>
  70. </template>
  71. </el-table-column>
  72. <el-table-column prop="salaryName" label="薪酬范围"></el-table-column>
  73. <el-table-column label="公司">
  74. <template slot-scope="scope">
  75. <span>{{scope.row.companyInfo && scope.row.companyInfo.shortName ? scope.row.companyInfo.shortName : (scope.row.companyInfo && scope.row.companyInfo.name ? scope.row.companyInfo.name : '')}}</span>
  76. </template>
  77. </el-table-column>
  78. <el-table-column prop="auditAtFormat" label="发布(刷新)日期"></el-table-column>
  79. <el-table-column prop="createdAtFormat" label="创建日期"></el-table-column>
  80. <!-- <el-table-column prop="submitAuditAtFormat" label="申请审核日期"></el-table-column> -->
  81. <el-table-column prop="countApplied" label="已投递" width="70"></el-table-column>
  82. <el-table-column prop="countTalk" label="沟通中" width="70"></el-table-column>
  83. <el-table-column prop="statusName" label="岗位状态" width="90"></el-table-column>
  84. <el-table-column prop="recuitResult" label="招聘结果" width="90">
  85. <template slot-scope="scope">
  86. <span v-if="scope.row.recruitResult == 1">是</span>
  87. <span v-if="scope.row.recruitResult == 2">否</span>
  88. <span v-if="scope.row.recruitResult == '' || scope.row.recruitResult == 0">-</span>
  89. </template>
  90. </el-table-column>
  91. </el-table>
  92. </div>
  93. <el-pagination
  94. class="order-footer"
  95. background
  96. layout="prev, pager, next"
  97. :page-size="20"
  98. :total="Number(auditData.total)"
  99. @current-change="handleCurrentChange"
  100. />
  101. <el-dialog title="请输入审核不通过的原因" :visible.sync="isDialogShow">
  102. <el-form :model="form">
  103. <el-form-item label>
  104. <el-input v-model="form.reason"></el-input>
  105. </el-form-item>
  106. </el-form>
  107. <div slot="footer" class="dialog-footer">
  108. <el-button @click="handleCancleClick()">取 消</el-button>
  109. <el-button type="primary" @click="handleComfirmClick()">确 定</el-button>
  110. </div>
  111. </el-dialog>
  112. </div>
  113. </template>
  114. <script>
  115. export default {
  116. data() {
  117. return {
  118. page: 1,
  119. auditData: "",
  120. form: {
  121. reason: "",
  122. },
  123. searchParams: {
  124. status: "0",
  125. uid: null,
  126. dateTime: [],
  127. startTime: null,
  128. endTime: null,
  129. recruitResult: "0",
  130. workType: "0",
  131. },
  132. isDialogShow: false,
  133. };
  134. },
  135. mounted() {
  136. this.getAuditList();
  137. },
  138. methods: {
  139. async getAuditList() {
  140. this.searchParams.startTime = this.searchParams.dateTime[0];
  141. this.searchParams.endTime = this.searchParams.dateTime[1];
  142. const page = this.page;
  143. const data = {
  144. page,
  145. ...this.searchParams,
  146. };
  147. let res = await this.$post("/api/admin/recruit/getAuditList", data);
  148. if (res && res.status === 1) {
  149. this.auditData = res.data;
  150. console.log(this.auditData);
  151. }
  152. },
  153. async handleApproveClick(recruitId) {
  154. const action = "approve";
  155. const data = {
  156. recruitId,
  157. action,
  158. };
  159. let res = await this.$post("/api/admin/recruit/audit", data);
  160. if (res && res.status === 1) {
  161. console.log(res);
  162. this.$message({
  163. message: res.info,
  164. type: "success",
  165. });
  166. this.getAuditList();
  167. }
  168. },
  169. async handleRejectClick(recruitId) {
  170. this.recruitId = recruitId;
  171. this.isDialogShow = true;
  172. },
  173. handleCancleClick() {
  174. this.form = {
  175. reason: "",
  176. };
  177. this.isDialogShow = false;
  178. },
  179. async handleComfirmClick() {
  180. const recruitId = this.recruitId;
  181. const action = "reject";
  182. const reason = this.form.reason;
  183. const data = {
  184. recruitId,
  185. action,
  186. reason,
  187. };
  188. let res = await this.$post("/api/admin/recruit/audit", data);
  189. if (res && res.status === 1) {
  190. console.log(res);
  191. this.$message({
  192. message: res.info,
  193. type: "success",
  194. });
  195. this.getAuditList();
  196. }
  197. this.form = {
  198. reason: "",
  199. };
  200. this.isDialogShow = false;
  201. },
  202. handleCurrentChange(val) {
  203. this.page = val;
  204. this.getAuditList();
  205. },
  206. clickRow(row) {
  207. const id = row.id;
  208. this.$router.push({
  209. path: "/main/job",
  210. query: {
  211. id,
  212. },
  213. });
  214. },
  215. goPublishCompanies() {
  216. window.location.href = "/main/jobs_publish_company";
  217. },
  218. goChatUsers() {
  219. window.location.href = "/main/chat_users";
  220. },
  221. goBehalfPost() {
  222. window.location.href = "/main/jobs_behalf_post";
  223. },
  224. },
  225. };
  226. </script>
  227. <style lang="scss" scoped>
  228. .count-list {
  229. padding-bottom: 10px;
  230. display: flex;
  231. align-items: center;
  232. }
  233. .count-item {
  234. margin-right: 20px;
  235. font-size: 16px;
  236. }
  237. .content {
  238. white-space: nowrap;
  239. overflow-x: scroll;
  240. height: calc(100% - 150px);
  241. }
  242. .btn {
  243. width: 80px;
  244. }
  245. .order-footer {
  246. margin-top: 10px;
  247. }
  248. </style>