Browse Source

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner-admin into dev

Xiao_123 5 months ago
parent
commit
ffdfb91eb5

+ 13 - 0
src/api/menduner/system/talentMap/index.ts

@@ -1,4 +1,5 @@
 import request from '@/config/axios'
+import pyRequest from './pythonService'
 
 // 人才地图 API
 export const TalentMap = {
@@ -80,5 +81,17 @@ export const TalentMap = {
   // 删除人才地图-人才培训经历
   deleteTalentMapTrain: async (id: number) => {
     return await request.delete({ url: `/menduner/system/talent-map-train-exp/delete?id=` + id })
+  }
+}
+
+
+export const pyTalentMap = {
+  // 查找人才
+  searchTalent: async (params: any) => {
+    return await pyRequest.get({ url: `/menduner/system/recruit/person-map/page`, params })
   },
+  // 人才标签推荐
+  getTalentLabel: async (data: any) => {
+    return await pyRequest.post({ url: `/rocket/label/list`, data })
+  }
 }

+ 85 - 0
src/api/menduner/system/talentMap/pythonService.ts

@@ -0,0 +1,85 @@
+import axios, { AxiosResponse, AxiosInstance, AxiosError } from 'axios'
+import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
+type _config = {
+  base_url: string
+  result_code: number | string
+  default_headers: AxiosHeaders
+  request_timeout: number
+}
+const config: _config = {
+  /**
+   * api请求基础路径
+   */
+  base_url: import.meta.env.VITE_BASE_URL,
+  /**
+   * 接口成功返回状态码
+   */
+  result_code: 200,
+
+  /**
+   * 接口请求超时时间
+   */
+  request_timeout: 30000,
+
+  /**
+   * 默认接口请求类型
+   * 可选值:application/x-www-form-urlencoded multipart/form-data
+   */
+  default_headers: 'application/json'
+}
+
+const axiosInstance: AxiosInstance = axios.create({
+  baseURL: config.base_url,
+  timeout: config.request_timeout
+})
+
+axiosInstance.interceptors.response.use(
+  async (response: AxiosResponse<any>) => {
+    const { data } = response
+    const code = data.code
+    const msg = data.msg
+    if (code !== 200) {
+      ElNotification.error({ title: msg })
+      return Promise.reject(data)
+    }
+    return Promise.resolve(data)
+  },
+  (error: AxiosError) => {
+    let { message } = error
+    const { t } = useI18n()
+    if (message === 'Network Error') {
+      message = t('sys.api.errorMessage')
+    } else if (message.includes('timeout')) {
+      message = t('sys.api.apiTimeoutMessage')
+    } else if (message.includes('Request failed with status code')) {
+      message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3)
+    }
+    ElMessage.error(message)
+    return Promise.reject(error)
+  }
+)
+const request = (option: any) => {
+  const { url, method, params, data, headersType, responseType, ...config } = option
+  return axiosInstance({
+    url: url,
+    method,
+    params,
+    data,
+    ...config,
+    responseType: responseType,
+    headers: {
+      'Content-Type': headersType || config.default_headers
+    }
+  })
+}
+
+export default {
+  get: async <T = any>(option: any) => {
+    const res = await request({ method: 'GET', ...option })
+    return res.data as unknown as T
+  },
+  post: async <T = any>(option: any) => {
+    const res = await request({ method: 'POST', ...option })
+    return res.data as unknown as T
+  },
+}

+ 41 - 0
src/views/menduner/system/talentMap/talentSearch.vue

@@ -0,0 +1,41 @@
+<template>
+  <ContentWrap>
+    <div class="box">
+      <div class="box-search">
+        <el-input
+          v-model="searchValue"
+          size="large"
+          placeholder="请输入您的描述信息定位人才"
+          :suffix-icon="Search"
+        />
+      </div>
+    </div>
+  </ContentWrap>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue'
+import { Search } from '@element-plus/icons-vue'
+import { pyTalentMap } from '@/api/menduner/system/talentMap'
+const { searchTalent, getTalentLabel } = pyTalentMap
+const searchValue = ref(null)
+
+const getLabelData = async () => {
+  const res = await getTalentLabel({ current: 1, size:9999, type: 'person' }) //type: job  enterprise person
+  console.log(res)
+}
+getLabelData()
+</script>
+
+<style scoped lang="scss">
+.box {
+  min-height: 500px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  &-search {
+    width: 75%;
+    max-width: 900px;
+  }
+}
+</style>