lifanagju_citu 5 місяців тому
батько
коміт
f7e7c4c69f

+ 39 - 10
src/views/menduner/system/talentMap/details/components/attachment.vue

@@ -1,12 +1,19 @@
 <template>
-  <el-table v-loading="loading" :data="tableData" :stripe="true">
-    <el-table-column label="附件名称" align="center" prop="title" />
-    <el-table-column label="操作" align="center">
-      <template #default="scope">
-        <el-link type="primary" download :href="scope.row.url" :underline="false" target="_blank">下载</el-link>
-      </template>
-    </el-table-column>
-  </el-table>
+  <div>
+    <!-- <el-tabs>
+      <el-tab-pane v-for="item of tableData" :key="item.id" :label="item.title">
+        <vue-office-docx :src="item.url" />
+      </el-tab-pane>
+    </el-tabs> -->
+    <el-table v-loading="loading" :data="tableData" :stripe="true">
+      <el-table-column label="附件名称" align="center" prop="title" />
+      <el-table-column label="操作" align="center">
+        <template #default="scope">
+          <el-link type="primary" download :href="scope.row.url" :underline="false" target="_blank">下载</el-link>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
 </template>
 
 <script setup>
@@ -18,7 +25,29 @@ const props = defineProps({
 })
 
 const loading = ref(false)
-const tableData = ref([])
+const tableData = ref([
+  {
+    id: "1854433786213732353", 
+    title: "沈和威-13229740092", 
+    url: "https://minio.menduner.com/test/person/1/attachment/7cde29dc69c1403649be55d4c2bfd3d8304c088dc79ab25afe9c4bf55d3b382f.docx", 
+    createTime: 1730966443004, 
+    updateTime: 1730966443004
+  }, 
+  {
+    id: "1854351450755395585", 
+    title: "沈和威", 
+    url: "https://minio.menduner.com/test/957f8916b9f8e624d9dbe26dd35b31ee44961514e464d413c71419277cbaa38a.pdf", 
+    createTime: 1730946812702, 
+    updateTime: 1730946812702
+  }, 
+  {
+    id: "1833835593730252802", 
+    title: "沈和威2", 
+    url: "http://menduner.citupro.com:6868/admin-api/infra/file/24/get/7f3b59ce754d452ced40091a63d6db2e08ea8a22a26b7e81f03f133c947aff52.docx", 
+    createTime: 1726055451223, 
+    updateTime: 1726055451223
+  }
+])
 const total = ref(0)
 const queryParams = reactive({
   pageNo: 1,
@@ -36,5 +65,5 @@ const getList = async () => {
     loading.value = false
   }
 }
-getList()
+// getList()
 </script>

+ 19 - 3
src/views/menduner/system/talentMap/details/components/edu.vue

@@ -4,7 +4,8 @@
     <el-table-column label="专业名称" align="center" prop="major" />
     <el-table-column label="学历" align="center" prop="educationType">
       <template #default="scope">
-        <dict-tag :type="DICT_TYPE.MENDUNER_EDUCATION_TYPE" :value="scope.row.educationType" />
+        <dict-tag v-if="scope.row.educationTyp" :type="DICT_TYPE.MENDUNER_EDUCATION_TYPE" :value="scope.row.educationType" />
+        <span v-else>未知</span>
       </template>
     </el-table-column>
     <el-table-column label="学制类型" align="center" prop="educationSystemType">
@@ -36,7 +37,22 @@ const props = defineProps({
 })
 
 const loading = ref(false)
-const tableData = ref([])
+const tableData = ref([
+  {
+    id: 21563, 
+    userId: "804044393148452864", 
+    schoolId: null, 
+    schoolName: "广州旅游商务职业学校", 
+    educationType: "2", 
+    educationSystemType: null, 
+    majorId: null, 
+    major: "烹饪", 
+    startTime: 1325347200000, 
+    endTime: 1388505600000, 
+    content: null, 
+    createTime: 1728362217408
+  }
+])
 const total = ref(0)
 const queryParams = reactive({
   pageNo: 1,
@@ -54,5 +70,5 @@ const getList = async () => {
     loading.value = false
   }
 }
-getList()
+// getList()
 </script>

+ 98 - 2
src/views/menduner/system/talentMap/details/components/exp.vue

@@ -30,7 +30,103 @@ const props = defineProps({
 })
 
 const loading = ref(false)
-const tableData = ref([])
+const tableData = ref([
+  {
+    id: 90086, 
+    userId: "804044393148452864", 
+    enterpriseId: null, 
+    enterpriseName: "广州美居酒店", 
+    industryId: null, 
+    deptName: null, 
+    positionId: null, 
+    positionName: "行政总厨 Executive Chef  /  餐饮总监 F .B Director", 
+    startTime: 1709222400000, 
+    endTime: null, 
+    content: null, 
+    achievement: null, 
+    pay: 12000, 
+    payUnit: "2", 
+    currencyType: null, 
+    skillList: null, 
+    createTime: 1728367561460
+  }, 
+  {
+    id: 90085, 
+    userId: "804044393148452864", 
+    enterpriseId: null, 
+    enterpriseName: "广州增城万达嘉华酒店", 
+    industryId: null, 
+    deptName: null, 
+    positionId: null, 
+    positionName: "资深副厨师长", 
+    startTime: 1551369600000, 
+    endTime: 1709222400000, 
+    content: null, 
+    achievement: null, 
+    pay: 9500, 
+    payUnit: "2", 
+    currencyType: null, 
+    skillList: null, 
+    createTime: 1728367455706
+  }, 
+  {
+    id: 90084, 
+    userId: "804044393148452864", 
+    enterpriseId: null, 
+    enterpriseName: "上海绿地铂骊酒店", 
+    industryId: null, 
+    deptName: null, 
+    positionId: null, 
+    positionName: "全日制餐厅副厨师长", 
+    startTime: 1485878400000, 
+    endTime: 1548950400000, 
+    content: null, 
+    achievement: null, 
+    pay: 8500, 
+    payUnit: "2", 
+    currencyType: null, 
+    skillList: null, 
+    createTime: 1728364267421
+  }, 
+  {
+    id: 90083, 
+    userId: "804044393148452864", 
+    enterpriseId: null, 
+    enterpriseName: "广州花都皇冠假日酒店", 
+    industryId: null, 
+    deptName: null, 
+    positionId: null, 
+    positionName: "西厨主管", 
+    startTime: 1391184000000, 
+    endTime: 1483200000000, 
+    content: null, 
+    achievement: null, 
+    pay: 4500, 
+    payUnit: "2", 
+    currencyType: null, 
+    skillList: null, 
+    createTime: 1728367575841
+  }, 
+  {
+    id: 90082, 
+    userId: "804044393148452864", 
+    enterpriseId: null, 
+    enterpriseName: "广州 W 酒店", 
+    industryId: null, 
+    deptName: null, 
+    positionId: null, 
+    positionName: "一级厨师", 
+    startTime: 1356969600000, 
+    endTime: 1388505600000, 
+    content: null, 
+    achievement: null, 
+    pay: 3000, 
+    payUnit: "2", 
+    currencyType: null, 
+    skillList: null, 
+    createTime: 1728367376573
+  }
+])
 const total = ref(0)
 const queryParams = reactive({
   pageNo: 1,
@@ -48,5 +144,5 @@ const getList = async () => {
     loading.value = false
   }
 }
-getList()
+// getList()
 </script>

+ 47 - 8
src/views/menduner/system/talentMap/details/components/info.vue

@@ -1,12 +1,12 @@
 <template>
   <div>
-    <div style="margin-bottom: 12px; text-align: end;">
+    <!-- <div style="margin-bottom: 12px; text-align: end;">
       <div v-if="isEdit">
         <el-button @click="isEdit = false">取消</el-button>
         <el-button type="primary" @click="isEdit = false">保存</el-button>
       </div>
       <el-button v-else type="primary" @click="isEdit = true">修改</el-button>
-    </div>
+    </div> -->
     <el-descriptions class="margin-top" :column="2" border>
       <el-descriptions-item label="用户头像">
         <el-image v-if="info.avatar" class="h-100px w-100px" :src="info.avatar" fit="contain" hide-on-click-modal :preview-src-list="[info.avatar]"/>
@@ -35,9 +35,9 @@
       <el-descriptions-item label="求职状态">
         <dict-tag :type="DICT_TYPE.MENDUNER_JOB_SEEK_STATUS" :value="info.jobStatus" />
       </el-descriptions-item>
-      <el-descriptions-item label="账号状态">
+      <!-- <el-descriptions-item label="账号状态">
         <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="user.status" />
-      </el-descriptions-item>
+      </el-descriptions-item> -->
       <!-- <el-descriptions-item label="会员套餐">
         {{ user.vipFlag ? packageList.find(e => e.id === Number(user.vipFlag))?.name : '' }}
       </el-descriptions-item> -->
@@ -59,10 +59,33 @@ const props = defineProps({
   userId: String
 })
 
-const isEdit = ref(false)
+// const isEdit = ref(false)
 
 // 获取人才详情
-const info = ref({})
+const info = ref({
+  id: "1843909447483768834", 
+  userId: "804044393148452864", 
+  foreignName: "Oscar", 
+  name: "沈和威", 
+  sex: "0", 
+  avatar: "https://www.mendunerhr.com/images/1726804566749_804044393148452864_mini.jpg", 
+  phone: null, 
+  email: "812320386@qq.com", 
+  wxCode: null, 
+  birthday: 828547200000, 
+  maritalStatus: null, 
+  areaId: null, 
+  regId: null, 
+  jobType: "0", 
+  jobStatus: "2", 
+  firstWorkTime: 1356969600000, 
+  advantage: null, 
+  expType: "7", 
+  eduType: "3", 
+  tagList: null, 
+  createTime: 1728457245120, 
+  updateTime: 1732688920332
+})
 const getInfo = async () => {
   const data = await PersonInfoApi.getPersonDetails(props.id)
   info.value = data
@@ -78,10 +101,26 @@ const getPackageList = async () => {
 getPackageList()
 
 // 获取用户详情
-const user = ref({})
+const user = ref({
+  id: "804044393148452864", 
+  username: "13539831035", 
+  password: "$2a$04$3QZFv24b5l8OxwHijZZQY.GDxXZZbdYvl8Y8cJXtBxQ2UDsCPnSBe", 
+  email: "812320386@qq.com", 
+  phone: "13539831035", 
+  avatar: "https://www.mendunerhr.com/images/1726804566749_804044393148452864_mini.jpg", 
+  status: "0", 
+  registerIp: null, 
+  registerTerminal: null, 
+  vipFlag: null, 
+  vipExpireDate: null, 
+  inviteCode: null, 
+  loginIp: "", 
+  loginDate: null, 
+  createTime: 1728291312047
+})
 const getUserDetails = async () => {
   const data = await PersonInfoApi.getUserDetails(props.userId)
   user.value = data
 }
-getUserDetails()
+// getUserDetails()
 </script>

+ 28 - 29
src/views/menduner/system/talentMap/details/index.vue

@@ -3,34 +3,37 @@
     <el-row :gutter="10">
       <el-col :span="14">
         <el-card shadow="never">
-          <!-- <template #header>
-            <CardTitle title="人才详情" />
-          </template> -->
-          <el-tabs>
-            <el-tab-pane label="基本信息">
-              <Info :id="id" :user-id="userId" />
-            </el-tab-pane>
-            <el-tab-pane label="教育经历">
-              <Edu :user-id="userId" />
-            </el-tab-pane>
-            <el-tab-pane label="工作经历">
-              <Exp :user-id="userId" />
-            </el-tab-pane>
-            <el-tab-pane label="求职意向">
-              <JobIntention :user-id="userId" />
-            </el-tab-pane>
-            <!-- <el-tab-pane label="面试邀约记录">
-              <InterviewInvite :user-id="userId" />
-            </el-tab-pane> -->
-            <el-tab-pane label="职位投递记录">
-              <DeliveryJob :user-id="userId" />
-            </el-tab-pane>
-            <!-- <el-tab-pane label="职位收藏、企业收藏数">
-              <Collect :user-id="userId" />
-            </el-tab-pane> -->
+          <el-tabs type="border-card">
             <el-tab-pane label="附件简历">
               <Attachment :user-id="userId" />
             </el-tab-pane>
+            <el-tab-pane label="在线简历">
+              <el-card shadow="never" class="m-b-12px">
+                <template #header>
+                  <div class="flex items-center justify-between">
+                    <CardTitle title="基本信息" />
+                    <!-- <el-button size="small" type="primary" @click="null; newTagText = ''"> 修改 </el-button> -->
+                  </div>
+                </template>
+                <Info :id="id" :user-id="userId" />
+              </el-card>
+              <el-card shadow="never" class="m-b-12px">
+                <template #header>
+                  <div class="flex items-center justify-between">
+                    <CardTitle title="工作经历" />
+                  </div>
+                </template>
+                <Exp :id="id" :user-id="userId" />
+              </el-card>
+              <el-card shadow="never" class="m-b-12px">
+                <template #header>
+                  <div class="flex items-center justify-between">
+                    <CardTitle title="教育经历" />
+                  </div>
+                </template>
+                <Edu :id="id" :user-id="userId" />
+              </el-card>
+            </el-tab-pane>
           </el-tabs>
         </el-card>
       </el-col>
@@ -38,7 +41,6 @@
         <div>
           <el-card shadow="never">
             <template #header>
-              <!-- <CardTitle title="已有标签" /> -->
               <div class="flex items-center justify-between">
                 <CardTitle title="已有标签" />
                 <el-button size="small" type="primary" @click="addNewTag = true; newTagText = ''">
@@ -78,11 +80,8 @@ import { ElMessage } from 'element-plus'
 import Info from './components/info.vue'
 import Edu from './components/edu.vue'
 import Exp from './components/exp.vue'
-import JobIntention from './components/jobIntention.vue'
-// import Collect from './components/collect.vue'
 import Attachment from './components/attachment.vue'
 import DeliveryJob from './components/deliveryJob.vue'
-// import InterviewInvite from './components/interviewInvite.vue'
 import Tags from './components/tags.vue'
 import TagsRecommend from './components/tagsRecommend.vue'
 

+ 13 - 3
src/views/menduner/system/talentMap/index.vue

@@ -23,7 +23,7 @@
         <el-button
           type="primary"
           plain
-          @click="null"
+          @click="openForm"
         >
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
@@ -45,6 +45,9 @@
         </el-button>
       </el-form-item>
     </el-form>
+    <div>
+      
+    </div>
   </ContentWrap>
 
   <!-- 列表 -->
@@ -82,14 +85,14 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <TalentForm ref="formRef" @success="getList" />
+  <!-- <TalentForm ref="formRef" @success="getList" /> -->
 </template>
 
 <script setup>
 // import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
 import download from '@/utils/download'
 // import { HuntApi, HuntVO } from '@/api/menduner/system/hunt'
-import TalentForm from './talentForm.vue'
+// import TalentForm from './talentForm.vue'
 
 /** 猎寻服务 列表 */
 defineOptions({ name: 'TalentMap' })
@@ -124,6 +127,13 @@ const getList = async () => {
   // }
 }
 
+
+/** 添加操作 */
+// const formRef = ref()
+// const openForm = () => {
+//   formRef.value.open()
+// }
+
 /** 搜索按钮操作 */
 const handleQuery = () => {
   queryParams.pageNo = 1

+ 56 - 58
src/views/menduner/system/talentMap/talentForm.vue

@@ -10,25 +10,28 @@
       <el-form-item label="姓名" prop="name">
         <el-input :disabled="formType === 'handle'" v-model="formData.name" placeholder="请输入姓名" />
       </el-form-item>
-      <el-form-item label="企业名称" prop="enterpriseName">
-        <el-input :disabled="formType === 'handle'" v-model="formData.enterpriseName" placeholder="请输入企业名称" />
-      </el-form-item>
       <el-form-item label="联系方式" prop="phone">
         <el-input :disabled="formType === 'handle'" v-model="formData.phone" placeholder="请输入联系方式" />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
+      <el-form-item label="任职企业名称" prop="enterpriseName">
+        <el-input :disabled="formType === 'handle'" v-model="formData.enterpriseName" placeholder="请输入企业名称" />
+      </el-form-item>
+      <el-form-item label="任职职位名称" prop="enterpriseName">
+        <el-input :disabled="formType === 'handle'" v-model="formData.positionName" placeholder="请输入企业名称" />
+      </el-form-item>
+      <el-form-item label="求职状态" prop="jobStatus">
         <el-select :disabled="formType === 'handle'" v-model="formData.status" placeholder="请选择状态">
           <el-option
-            v-for="(dict, index) in getStrDictOptions(DICT_TYPE.MENDUNER_HUNT_STATUS)"
+            v-for="(dict, index) in getStrDictOptions(DICT_TYPE.MENDUNER_JOB_SEEK_STATUS)"
             :key="'status'+index"
             :label="dict.label"
             :value="dict.value"
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
+      <!-- <el-form-item label="备注" prop="remark">
         <el-input v-model="formData.remark" type="textarea" rows="6" placeholder="请输入备注" />
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -38,49 +41,56 @@
 </template>
 <script setup lang="ts">
 import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
-import { HuntApi, HuntVO } from '@/api/menduner/system/talentMap'
+// import { HuntApi, HuntVO } from '@/api/menduner/system/talentMap'
 
 /** 猎寻服务 表单 */
 defineOptions({ name: 'TalentForm' })
 
-const { t } = useI18n() // 国际化
-const message = useMessage() // 消息弹窗
+// const { t } = useI18n() // 国际化
+// const message = useMessage() // 消息弹窗
 
 const dialogVisible = ref(false) // 弹窗的是否展示
-const dialogTitle = ref('') // 弹窗的标题
+const dialogTitle = ref('新增人才') // 弹窗的标题
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 const formType = ref('') // 表单的类型:create - 新增;update - 修改
 const formData = ref({
   id: undefined,
   name: undefined,
   enterpriseName: undefined,
+  positionName: undefined,
   phone: undefined,
   status: undefined,
-  remark: undefined
 })
+
+/** 重置表单 */
+const resetForm = () => {
+  // formData.value = {}
+  Object.keys(formData.value).forEach(key => formData.value[key] = undefined)
+  formData.value
+  formRef.value?.resetFields()
+}
 const formRules = reactive({
   name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
-  enterpriseName: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
-  phone: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }],
-  status: [{ required: true, message: '状态(0待处理|1已联系)不能为空', trigger: 'change' }]
+  // enterpriseName: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
+  // phone: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }],
 })
 const formRef = ref() // 表单 Ref
 
 /** 打开弹窗 */
-const open = async (type: string, id?: number) => {
+const open = async () => {
   dialogVisible.value = true
-  dialogTitle.value = t('action.' + type)
-  formType.value = type
+  // dialogTitle.value = t('action.' + type)
+  // formType.value = type
   resetForm()
-  // 修改时,设置数据
-  if (id) {
-    formLoading.value = true
-    try {
-      formData.value = await HuntApi.getHunt(id)
-    } finally {
-      formLoading.value = false
-    }
-  }
+  // // 修改时,设置数据
+  // if (id) {
+  //   formLoading.value = true
+  //   try {
+  //     formData.value = await HuntApi.getHunt(id)
+  //   } finally {
+  //     formLoading.value = false
+  //   }
+  // }
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
@@ -90,37 +100,25 @@ const submitForm = async () => {
   // 校验表单
   await formRef.value.validate()
   // 提交请求
-  formLoading.value = true
-  try {
-    const data = formData.value as unknown as HuntVO
-    if (formType.value === 'create') {
-      await HuntApi.createHunt(data)
-      message.success(t('common.createSuccess'))
-    } else if (formType.value === 'handle') {
-      await HuntApi.dealHunt({ id: formData.value.id, remark: formData.value.remark })
-      message.success(t('sys.api.operationSuccess'))
-    } else {
-      await HuntApi.updateHunt(data)
-      message.success(t('common.updateSuccess'))
-    }
-    dialogVisible.value = false
-    // 发送操作成功的事件
-    emit('success')
-  } finally {
-    formLoading.value = false
-  }
+  // formLoading.value = true
+  // try {
+  //   const data = formData.value as unknown as HuntVO
+  //   if (formType.value === 'create') {
+  //     await HuntApi.createHunt(data)
+  //     message.success(t('common.createSuccess'))
+  //   } else if (formType.value === 'handle') {
+  //     await HuntApi.dealHunt({ id: formData.value.id })
+  //     message.success(t('sys.api.operationSuccess'))
+  //   } else {
+  //     await HuntApi.updateHunt(data)
+  //     message.success(t('common.updateSuccess'))
+  //   }
+  //   dialogVisible.value = false
+  //   // 发送操作成功的事件
+  //   emit('success')
+  // } finally {
+  //   formLoading.value = false
+  // }
 }
 
-/** 重置表单 */
-const resetForm = () => {
-  formData.value = {
-    id: undefined,
-    name: undefined,
-    enterpriseName: undefined,
-    phone: undefined,
-    status: undefined,
-    remark: undefined
-  }
-  formRef.value?.resetFields()
-}
 </script>