241 lines
9.3 KiB
Vue
241 lines
9.3 KiB
Vue
<template>
|
||
<!-- <Dialog :title="dialogTitle" v-model="dialogVisible">-->
|
||
|
||
<el-card class="hl-card" style="position: relative">
|
||
<template #header>
|
||
<span>编辑页</span>
|
||
</template>
|
||
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="160px" v-loading="formLoading">
|
||
<!-- 基础信息 -->
|
||
<el-card class="hl-card-info">
|
||
<template #header>
|
||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">任务单类型</span>
|
||
</template>
|
||
</el-card>
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-row>
|
||
<el-col :span="8">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="业务类型" prop="type">
|
||
<el-select v-model="formData.type" placeholder="请选择业务类型" :disabled="true">
|
||
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" />
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
<el-col :span="8">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="岗位" prop="postId">
|
||
<el-select v-model="formData.postId" placeholder="请选择岗位">
|
||
<el-option v-for="item in postSelectList" :key="item.id" :label="item.name" :value="item.id" />
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
<el-col :span="8">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="备注" prop="remark">
|
||
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
<el-card class="hl-card-info">
|
||
<template #header>
|
||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">人员信息</span>
|
||
</template>
|
||
<el-row>
|
||
<el-col>
|
||
<el-card class="hl-incard">
|
||
<el-col>
|
||
<el-button type="primary" size="large" @click="userAddItem">新增</el-button>
|
||
</el-col>
|
||
<el-form ref="subFormRef" :model="formData.userList" label-width="0">
|
||
<el-table :data="formData.userList" class="hl-table">
|
||
<el-table-column type="index" label="序号" align="center" min-width="60" fixed />
|
||
<el-table-column prop="description" min-width="200" label="业务人员" align="center">
|
||
<template #default="scope">
|
||
<el-select v-model="scope.row.busyId" element-loading-background="rgb(255, 255, 255)" placeholder="请选择" >
|
||
<el-option v-for="item in userSelectList" :key="item.id" :label="item.username + ' ' + item.nickname" :value="item.id" />
|
||
</el-select>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="postId" min-width="150" label="岗位" align="center">
|
||
<template #default="scope">
|
||
<el-select v-model="scope.row.postId" element-loading-background="rgb(255, 255, 255)" placeholder="请选择" >
|
||
<el-option v-for="item in postSelectList" :key="item.id" :label="item.name" :value="item.id" />
|
||
</el-select>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="description" min-width="200" label="是否是负责人" align="center">
|
||
<template #default="scope">
|
||
<el-select v-model="scope.row.isRes" element-loading-background="rgb(255, 255, 255)" placeholder="请选择" >
|
||
<el-option v-for="item in isResList" :key="item.id" :label="item.name" :value="item.id" />
|
||
</el-select>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" align="center" width="120" fixed="right">
|
||
<template #default="scope">
|
||
<el-button link type="danger" size="small" @click.prevent="handleDeleteUser(scope.$index)">
|
||
删除
|
||
</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-form>
|
||
</el-card>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
</el-row>
|
||
<div class="hl-footer text-center">
|
||
<el-button @click="submitForm" type="primary" size="large">保
|
||
存</el-button>
|
||
<el-button @click="closeForm" size="large">取 消</el-button>
|
||
</div>
|
||
</el-form>
|
||
</el-card>
|
||
<!-- </Dialog>-->
|
||
</template>
|
||
<script setup lang="ts">
|
||
import * as FpUserDetailApi from '@/api/heli/fpuserdetail'
|
||
import {ref} from "vue";
|
||
import * as UserApi from "@/api/system/user";
|
||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||
|
||
import router from "@/router";
|
||
import {handleTree} from "@/utils/tree";
|
||
|
||
const { t } = useI18n() // 国际化
|
||
const message = useMessage() // 消息弹窗
|
||
const userSelectList = ref<UserApi.UserVO[]>([])
|
||
const tagsViewStore = useTagsViewStore()
|
||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||
const dialogTitle = ref('') // 弹窗的标题
|
||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||
const formData = ref({
|
||
id: undefined,
|
||
type:1,
|
||
fpId: undefined,
|
||
busyId: undefined,
|
||
seqNo: undefined,
|
||
postId: 0,
|
||
isRes: undefined,
|
||
remark: undefined,
|
||
userList: [],
|
||
})
|
||
const formRules = reactive({
|
||
})
|
||
const isResList = ref([
|
||
{ id: 'Y', name: '是' },
|
||
{ id: 'N', name: '否' }
|
||
]);
|
||
const postSelectList = ref([
|
||
{ id: 0, name: '0' },
|
||
{ id: 1, name: '1' },
|
||
{ id: 2, name: '2' }
|
||
]);
|
||
const typeList = ref([
|
||
{ id: 1, name: '任务单'},
|
||
{ id: 2, name: '其他' }
|
||
]);
|
||
const formRef = ref() // 表单 Ref
|
||
onMounted(async () => {
|
||
const data = await UserApi.getSimpleUserList()
|
||
userSelectList.value = data
|
||
console.log(formData.value)
|
||
formData.value.userList=await FpUserDetailApi.selectFpUserDetail(formData.value)
|
||
})
|
||
/** 打开弹窗 */
|
||
// 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 FpUserDetailApi.getFpUserDetail(id)
|
||
// } finally {
|
||
// formLoading.value = false
|
||
// }
|
||
// }
|
||
// }
|
||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||
//删除人员信息
|
||
const handleDeleteUser = (index: number) => {
|
||
// formData.value.userList.push(formData.value.userList[index])
|
||
formData.value.userList.splice(index, 1)
|
||
}
|
||
const userAddItem = () => {
|
||
const newData = {
|
||
// 新数据的属性
|
||
busyId: '',
|
||
postId: '',
|
||
isRes: '',
|
||
}
|
||
formData.value.userList.push(newData)
|
||
}
|
||
const closeForm = async () => {
|
||
router.push({ path: '/base/fpuserdetail' })
|
||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||
}
|
||
/** 提交表单 */
|
||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||
const submitForm = async () => {
|
||
// 校验表单
|
||
await formRef.value.validate()
|
||
// 提交请求
|
||
formLoading.value = true
|
||
try {
|
||
// const data = FpUserDetailApi.createFpUserDetail(formData.value)
|
||
// if (formType.value === 'create') {
|
||
await FpUserDetailApi.createFpUserDetail(formData.value)
|
||
message.success(t('common.createSuccess'))
|
||
// } else {
|
||
// await FpUserDetailApi.updateFpUserDetail(data)
|
||
// message.success(t('common.updateSuccess'))
|
||
// }
|
||
dialogVisible.value = false
|
||
router.push({ path: '/base/fpuserdetail' })
|
||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||
// 发送操作成功的事件
|
||
// emit('success')
|
||
} finally {
|
||
formLoading.value = false
|
||
}
|
||
}
|
||
|
||
/** 重置表单 */
|
||
const resetForm = () => {
|
||
formData.value = {
|
||
type:undefined,
|
||
id: undefined,
|
||
fpId: undefined,
|
||
busyId: undefined,
|
||
seqNo: undefined,
|
||
postId: undefined,
|
||
isRes: undefined,
|
||
remark: undefined,
|
||
}
|
||
formRef.value?.resetFields()
|
||
}
|
||
const getUserList = async ( ) => {
|
||
formData.value.userList=await FpUserDetailApi.selectFpUserDetail(formData.value)
|
||
}
|
||
watch(() => formData.value.postId, (newValue) => {
|
||
getUserList()
|
||
});
|
||
|
||
</script>
|