Selaa lähdekoodia

上传简历封装

lifanagju_citu 10 kuukautta sitten
vanhempi
commit
92ad0ba013

+ 6 - 20
src/views/recruit/personal/position/components/details.vue

@@ -88,26 +88,9 @@
     </div>
 
     <!-- 弹窗提示去上传简历 -->
-    <v-dialog v-model="dialog" max-width="400" persistent>
-      <v-card :text="$t('resume.resumeYetSubmit')" :title="$t('common.confirmTitle')">
-        <template #prepend>
-          <v-icon color="warning">mdi-alert-circle-outline</v-icon>
-        </template>
-        <template v-slot:actions>
-          <v-spacer></v-spacer>
-          <v-btn @click="dialog = false">{{ $t('common.cancel') }}</v-btn>
-          <v-btn color="success" @click="handleToUpload">{{ $t('common.toUpload') }}</v-btn>
-        </template>
-      </v-card>
-    </v-dialog>
-
+    <promptToUpload v-model="dialog" @handleToUpload="handleToUpload"></promptToUpload>
     <!-- 选择简历 -->
-    <Dialog :visible="showResume" :widthType="2" titleClass="text-h6" :title="$t('resume.selectResumeToSubmit')" @close="handleClose" @submit="handleSubmit">
-      <v-radio-group v-model="selectResume">
-        <v-radio v-for="val in resumeList" :key="val.id" :value="val.id" :label="val.title" color="primary"></v-radio>
-      </v-radio-group>
-    </Dialog>
-
+    <selectResumeDialog v-model="showResume" :list="resumeList" @submit="handleSubmit" @close="handleClose"></selectResumeDialog>
     <!-- 复制分享链接 -->
     <Dialog
       :visible="shareDialog" :widthType="2" :footer="false" titleClass="text-h6"
@@ -148,6 +131,8 @@ import similarPositions from '@/components/Position/similarPositions.vue'
 import EnterpriseInfo from '@/components/Enterprise/info.vue'
 import Snackbar from '@/plugins/snackbar'
 import Dialog from '@/components/CtDialog'
+import promptToUpload from './jobDetails/promptToUpload'
+import selectResumeDialog from './jobDetails/selectResumeDialog'
 import { getPersonalToken } from '@/utils/auth'
 
 const { t } = useI18n()
@@ -285,7 +270,8 @@ const handleClose = () => {
   showResume.value = false
   selectResume.value = null
 }
-const handleSubmit = async () =>{
+const handleSubmit = async (val) =>{
+  selectResume.value = val
   if (!selectResume.value) return Snackbar.warning(t('resume.selectResumeToSubmit'))
   const obj = resumeList.value.find(e => e.id === selectResume.value)
   if (!obj) return Snackbar.warning(t('resume.selectedResumeNotExist'))

+ 33 - 0
src/views/recruit/personal/position/components/jobDetails/promptToUpload.vue

@@ -0,0 +1,33 @@
+<!-- 弹窗提示去上传简历 -->
+<template>
+  <v-dialog v-model="show" max-width="400" persistent>
+    <v-card :text="$t('resume.resumeYetSubmit')" :title="$t('common.confirmTitle')">
+      <template #prepend>
+        <v-icon color="warning">mdi-alert-circle-outline</v-icon>
+      </template>
+      <template v-slot:actions>
+        <v-spacer></v-spacer>
+        <v-btn @click="emit('update:modelValue', false)">{{ $t('common.cancel') }}</v-btn>
+        <v-btn color="success" @click="emit('handleToUpload')">{{ $t('common.toUpload') }}</v-btn>
+      </template>
+    </v-card>
+  </v-dialog>
+</template>
+
+<script setup>
+import { defineEmits, watch, computed } from 'vue'
+defineOptions({name: 'position-details-promptToUpload'})
+
+const props = defineProps({ modelValue: [Boolean, Number] })
+const emit = defineEmits(['update:modelValue', 'handleToUpload'])
+const show = computed(() => {
+  return props.modelValue
+})
+
+watch(() => show.value, (newVal) => {
+  emit('update:modelValue', newVal)
+})
+
+</script>
+<style lang="scss" scoped>
+</style>

+ 41 - 0
src/views/recruit/personal/position/components/jobDetails/selectResumeDialog.vue

@@ -0,0 +1,41 @@
+<!-- 选择简历 -->
+<template>
+  <Dialog
+    :visible="show"
+    :widthType="2"
+    titleClass="text-h6"
+    :title="$t('resume.selectResumeToSubmit')"
+    @close="emit('close')"
+    @submit="emit('submit', selectResume)"
+  >
+    <v-radio-group v-model="selectResume">
+      <v-radio v-for="val in list" :key="val.id" :value="val.id" :label="val.title" color="primary"></v-radio>
+    </v-radio-group>
+  </Dialog>
+</template>
+
+<script setup>
+import Dialog from '@/components/CtDialog'
+import { defineEmits, watch, computed, ref } from 'vue'
+defineOptions({name: 'position-details-selectResumeDialog'})
+
+const props = defineProps({
+  list: {
+    type: Array,
+    default: () => []
+  },
+  modelValue: [Boolean, Number]
+})
+const emit = defineEmits(['update:modelValue', 'handleToUpload', 'submit', 'close'])
+const show = computed(() => {
+  return props.modelValue
+})
+
+watch(() => show.value, (newVal) => {
+  emit('update:modelValue', newVal)
+})
+
+const selectResume = ref()
+</script>
+<style lang="scss" scoped>
+</style>