Files
fad_oa/ruoyi-ui/src/views/oa/peoples/apply/index.vue
2025-03-09 16:07:01 +08:00

128 lines
3.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>转正申请</span>
<el-tag :type="statusType">{{ statusText }}</el-tag>
</div>
<el-form ref="form" class="apply-form">
<el-form-item label="申请材料" prop="file">
<el-upload
action=""
:auto-upload="false"
:on-change="handleFileChange"
:file-list="fileList"
>
<el-button size="small" type="primary">选择文件</el-button>
<div slot="tip" class="el-upload__tip">支持PDF/DOC格式大小不超过50MB</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-button
type="primary"
:loading="loading"
@click="handleSubmit"
>提交申请</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { submitProbation } from '@/api/oa/hr'
import { uploadFile, addFile } from '@/api/oa/document'
import { getOnboarding } from "@/api/oa/onboarding"
export default {
name: 'ProbationApply',
data() {
return {
loading: false,
fileList: [],
currentFile: null,
statusMap: {
pending: { label: '待审批', type: 'warning' },
success: { label: '已提交', type: 'success' }
},
userInfo: null,
}
},
mounted() {
console.log(this.$store.state.user)
// 获取用户入职信息
// this.getUserInfo()
},
computed: {
statusType() {
return this.statusMap[this.fileList.length ? 'success' : 'pending'].type
},
statusText() {
return this.statusMap[this.fileList.length ? 'success' : 'pending'].label
}
},
methods: {
async getUserInfo() {
const { data } = await getOnboarding(this.$store.state.user.id)
this.userInfo = data
},
handleFileChange(file) {
this.currentFile = file.raw
this.fileList = [file]
},
async handleSubmit() {
if (!this.currentFile) {
return this.$message.warning('请先选择申请文件')
}
try {
this.loading = true
// 1. 上传文件
const formData = new FormData()
formData.append('file', this.currentFile)
const data = await uploadFile(formData)
// 2. 将文件关联用户
await addFile({
userId: this.$store.state.user.id,
fileList: [{
fileName: data.originalFilename,
filePath: data.url,
fileType: 0,
}]
})
// 3. 提交申请
await submitProbation({
userId: this.$store.state.user.id,
// onboardingId: this.userInfo.onboardingId,
status: 1,
})
this.$message.success('申请提交成功')
this.fileList = []
} catch (error) {
this.$message.error('提交失败: ' + (error.message || error))
} finally {
this.loading = false
}
}
}
}
</script>
<style scoped>
.apply-form {
max-width: 600px;
margin: 20px auto;
}
.el-upload__tip {
color: #999;
font-size: 12px;
margin-top: 5px;
}
</style>