Browse Source

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

zhengnaiwen_citu 7 tháng trước cách đây
mục cha
commit
394da1db2f

+ 0 - 2
components.d.ts

@@ -31,8 +31,6 @@ declare module 'vue' {
     Details: typeof import('./src/components/Enterprise/details.vue')['default']
     Echarts: typeof import('./src/components/Echarts/index.vue')['default']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
-    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
-    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
     Empty: typeof import('./src/components/Empty/index.vue')['default']
     File: typeof import('./src/components/Upload/file.vue')['default']
     HeadSearch: typeof import('./src/components/headSearch/index.vue')['default']

+ 8 - 0
src/router/modules/components/recruit/personCenter.js

@@ -60,6 +60,14 @@ const personCenter = [
                   enName: 'Resume Template',
                   title: '简历模板'
                 }
+              },
+              {
+                path: '/recruit/personal/personalCenter/resume/blockEnt',
+                component: () => import('@/views/recruit/personal/PersonalCenter/resume/blockEnt/index.vue'),
+                meta: {
+                  enName: 'Block Enterprises',
+                  title: '屏蔽企业'
+                }
               }
             ]
           },

+ 89 - 0
src/views/recruit/personal/PersonalCenter/resume/blockEnt/index.vue

@@ -0,0 +1,89 @@
+<template>
+  <div class="resume-box" style="position: relative; height: 100%;">
+    <div class="resume-header">
+      <div class="resume-title">屏蔽企业设置</div>
+    </div>
+    <div class="mt-5">
+      <!-- 选择 -->
+      <div class="d-flex align-center pb-5" style="border-bottom: 1px solid #dddddd;">
+        <div style="color: #777;">选择企业: </div>
+        <Autocomplete v-model="item.value" :item="item"></Autocomplete>
+        <v-btn class="ml-3" color="primary" @click="null">确认屏蔽</v-btn>
+      </div>
+      <!-- 展示 -->
+      <v-chip v-for="k in dataList" class="mt-3 mr-3" :key="k.id">
+        <span class="cursor-pointer">{{ getText(k.skillId, skillList, 'nameCn', 'id') }}</span>
+        <template v-slot:append>
+          <v-icon class="ml-2" @click="handleDelete(k)">mdi-close-circle</v-icon>
+        </template>
+      </v-chip>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { 
+  savePersonResumeCv,
+  getResumePersonSkill,
+  enterpriseSearchByName,
+} from '@/api/recruit/personal/resume'
+import { getText } from '@/utils/getText'
+import Snackbar from '@/plugins/snackbar'
+import Confirm from '@/plugins/confirm'
+import { ref } from 'vue'
+defineOptions({name: 'resume-blockEnt'})
+
+
+// 获取数据
+const dataList = ref([])
+const getData = async () => {
+  const data = await getResumePersonSkill()
+  dataList.value = data
+}
+getData()
+
+// 删除 
+const handleDelete = ({ id }) => {
+  Confirm('系统提示', '是否确认删除此职业技能?').then(async () => {
+    await savePersonResumeCv(id)
+    getData()
+    Snackbar.success('删除成功!')
+  })
+}
+
+
+
+// 企业名称下拉列表
+const enterpriseNameInput = ref('')
+const getEnterpriseData = async (name) => {
+  // const item = formItems.value.options.find(e => e.key === 'enterpriseId')
+  // if (!item) return
+  if (item.items?.length && (enterpriseNameInput.value === name)) return // 防抖
+  item[item.itemTextName] = enterpriseNameInput.value = name
+  if (name === null || name === '') { item.items = [] }
+  else {
+    const data = await enterpriseSearchByName({ name })
+    item.items = data
+  }
+}
+const item = {
+  type: 'autocomplete',
+  key: 'enterpriseId',
+  value: null,
+  default: null,
+  label: '请输入企业名称搜索',
+  outlined: true,
+  clearable: true,
+  hireDetails: true,
+  itemTextName: 'enterpriseName',
+  itemText: 'value',
+  itemValue: 'key',
+  width: '400',
+  search: getEnterpriseData,
+  items: []
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 46 - 0
src/views/recruit/personal/PersonalCenter/resume/template/index.vue

@@ -3,11 +3,57 @@
     <div class="resume-header">
       <div class="resume-title">简历模板下载</div>
     </div>
+    <div style="height: calc(100% - 58px);  width: 100%;" class="mt-3">
+    <div v-if="list.length" class="mt-5">
+      <div
+        :class="['position-item', 'mx-n2', 'px-2']" 
+        v-for="(k, i) in list" 
+        :key="i" 
+        @mouseenter="k.active = true" 
+        @mouseleave="k.active = false"
+      >
+        <div>{{ k.title }}</div>
+        <div class="float-right" v-if="k.active">
+          <v-btn variant="text" color="primary" prepend-icon="mdi-eye-outline" @click="previewFile(k.url)">预览</v-btn>
+          <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="handleDownload(k)">下载</v-btn>
+        </div>
+      </div>
+    </div>
+      <div v-else class="mt-8">
+        <span class="color-error">
+          简历模板为会员福利内容,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去购买</span>
+        </span>
+      </div>
+    </div>
   </div>
 </template>
 
 <script setup>
+import { ref } from 'vue'
+defineOptions({name: 'resume-template'})
+import { previewFile, getBlob, saveAs } from '@/utils'
+import { useRouter } from 'vue-router'; const router = useRouter()
+import { getPersonResumeCv } from '@/api/recruit/personal/resume'
+
+// 获取附件
+const attachmentList = ref([])
+const getList = async () => {
+  const data = await getPersonResumeCv()
+  attachmentList.value = data
+}
+getList()
+
+// 下载附件
+const handleDownload = (k) => {
+  getBlob(k.url).then(blob => {
+    saveAs(blob, k.title)
+  })
+}
 
+const list = ref([])
+const goBuy = () => {
+  router.push('/recruit/personal/personalCenter/memberBenefits/membershipPackage')
+}
 </script>
 
 <style lang="scss" scoped>

+ 1 - 2
src/views/recruit/personal/home/components/homeJobTypeCard/index.vue

@@ -127,8 +127,7 @@ const handleMouseLeave = () => { // 鼠标移出
 // 轮播图片
 const carouselList = ref([
   { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/IHG-banner-new.gif' },
-  { src: 'https://minio.citupro.com/dev/menduner/home/%E6%82%A6%E6%A6%95.jpg' },
-  { src: 'https://minio.citupro.com/dev/menduner/home/%E6%B4%B2%E9%99%85%E5%81%87%E6%97%A5.jpg' },
+  { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/Hilton.jpg'},
   { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/SWISS-HOTEL-MANAGEMENT-SCHOOL-MBA.jpg'},
   { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/Hong-Kong-Polytechnic-University-banner.jpg' }
 ])