oa-ui/src/views/Home/qjgl/QjglDetail.vue
2024-11-07 23:15:06 +08:00

241 lines
7.9 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>
<ContentWrap>
<!-- <Dialog :title="dialogTitle" v-model="dialogVisible">-->
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-row>
<el-col :span="24">
<el-form-item label="请假标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入请假标题" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="起草人" prop="userName">
<el-input v-model="formData.userName" placeholder="请输入起草人" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="部门" prop="deptId">
<el-input v-model="formData.deptId" placeholder="请输入部门" v-show="false" />
<!-- <div class="pull-left" v-show="true" v-if="userInfo?.dept">{{ userInfo?.dept.name }} </div>-->
<!-- <div class="pull-left" v-show="true" v-if="deptInfo">{{ deptInfo }} </div>-->
<el-input v-model="formData.deptName" placeholder="请输入部门信息" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开始时间" prop="startTime" readonly>
<el-date-picker
v-model="formData.startTime"
type="datetime"
value-format="x"
placeholder="选择开始时间"
disabled
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束时间" prop="endTime" >
<el-date-picker
v-model="formData.endTime"
type="datetime"
value-format="x"
placeholder="选择结束时间"
disabled
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="请假类型" prop="type" >
<el-select v-model="formData.type" placeholder="请选择请假类型" :disabled="isReadOnly">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BPM_OA_LEAVE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="请假天数" prop="day" >
<el-input v-model="formData.day" placeholder="请输入请假天数" disabled/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="请假原因" prop="reason" >
<el-input v-model="formData.reason" placeholder="请输入请假原因" style="height: 100px;" disabled/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</ContentWrap>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { QjglApi, QjglVO } from '@/api/home/qjgl'
import { propTypes } from '@/utils/propTypes'
import {getUserProfile, ProfileVO} from "@/api/system/user/profile";
import {DeptVO, getDept} from "@/api/system/dept";
import * as DefinitionApi from '@/api/bpm/definition'
import * as UserApi from '@/api/system/user'
/** 请假管理 表单 */
defineOptions({ name: 'QjglDetail' })
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const props = defineProps({
id: propTypes.number.def(undefined)
})
const isReadOnly = ref(true); // 设置为 true 则组件为只读状态
const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中1修改时的数据加载2提交的按钮禁用
const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({
id: undefined,
title: undefined,
reason: undefined,
type: undefined,
startTime: undefined,
endTime: undefined,
day: undefined,
filePath: undefined,
userName: undefined,
deptId: undefined,
deptName: undefined,
processInstanceId: undefined,
userId: undefined,
status: undefined
})
const formRules = reactive({
title: [{ required: true, message: '请假标题不能为空', trigger: 'blur' }],
type: [{ required: true, message: '请假类型不能为空', trigger: 'change' }],
startTime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }],
endTime: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }],
day: [{ required: true, message: '请假天数不能为空', trigger: 'blur' }],
userName: [{ required: true, message: '起草人不能为空', trigger: 'blur' }],
deptId: [{ required: true, message: '部门不能为空', trigger: 'blur' }]
})
const userInfo = ref({} as ProfileVO )
const deptInfo = ref({} as DeptVO )
const formRef = ref() // 表单 Ref
const { query } = useRoute() // 查询参数
const queryId = query.id as unknown as number // URL 传递过来的 id 编号
/** 打开弹窗 */
// const open = async (type: string, id?: number) => {
// dialogVisible.value = true
// dialogTitle.value = t('action.' + type)
// formType.value = type
// resetForm()
// // 修改时,设置数据
// if (id) {
// formLoading.value = true
// try {
// formData.value = await QjglApi.getQjgl(id)
// } finally {
// formLoading.value = false
// }
// }
// }
// defineExpose({ open }) // 提供 open 方法,用于打开弹窗
const getUserInfo = async () => {
const users = await getUserProfile()
// if ( formData.value.deptId == '' ){
// userInfo.value = users
// formData.value.deptId= users.dept.id
//
// deptInfo.value = {} as DeptVO
// }else{
// const dept = await getDept(formData.value.deptId)
// deptInfo.value = dept
// userInfo.value = {} as ProfileVO
// }
// if (formData.value.userName == ''){
// const users = await getUserProfile()
// formData.value.userName= users.nickname
// }
if (formData.value.deptId == ''||formData.value.deptId == undefined){
formData.value.deptId= users.dept.id
}
if (formData.value.deptName == ''||formData.value.deptName == undefined){
formData.value.deptName= users.dept.name
}
if (formData.value.userName == ''||formData.value.userName == undefined){
formData.value.userName= users.nickname
}
if (formData.value.deptName != undefined){
deptInfo.value = formData.value.deptName
}
if (formData.value.userName != undefined){
userInfo.value = formData.value.userName
}
}
/** 提交表单 */
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
const submitForm = async () => {
// 校验表单
await formRef.value.validate()
// 提交请求
formLoading.value = true
try {
const data = formData.value as unknown as QjglVO
if (formType.value === 'create') {
await QjglApi.createQjgl(data)
message.success(t('common.createSuccess'))
} else {
await QjglApi.updateQjgl(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
// 发送操作成功的事件
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
title: undefined,
reason: undefined,
type: undefined,
startTime: undefined,
endTime: undefined,
day: undefined,
filePath: undefined,
userName: undefined,
deptId: undefined,
processInstanceId: undefined,
userId: undefined,
status: undefined
}
formRef.value?.resetFields()
}
onMounted(async () => {
const id = props.id || queryId
console.log("id",id)
if (id) {
formLoading.value = true
try {
formData.value = await QjglApi.getQjgl(id)
} finally {
formLoading.value = false
}
}
//await getUserInfo()
// await getKnowtypeTree()
})
</script>