<template>
|
<div class="basicInfo">
|
<el-row :gutter="24">
|
<el-col :span="24">
|
<el-form-item prop="deptName" label="申报处室:">
|
<span>{{state.formData.deptName}}</span>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-form ref="formRef" :model="state.formData" :rules="state.rules" class="register-form" label-position="top">
|
<el-row :gutter="30">
|
<el-col :span="6">
|
<el-form-item prop="projectName" label="项目名称">
|
<el-input
|
maxlength="100"
|
show-word-limit
|
v-model.trim="state.formData.projectName"
|
size="large"
|
placeholder="请输入项目名称"
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="projectDateStart" label="项目预计时间区间">
|
<el-date-picker
|
v-model="searchTime"
|
type="daterange"
|
@change="changeTime"
|
size="large"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
value-format="YYYY-MM-DD"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="companyName" label="被检查/对接单位">
|
<el-input
|
v-model.trim="state.formData.companyName"
|
size="large"
|
placeholder="请输入被检查/对接单位"
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="projectAddress" label="项目地点">
|
<el-input
|
v-model.trim="state.formData.projectAddress"
|
size="large"
|
placeholder="请输入项目地点"
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row :gutter="24">
|
<el-col :span="6">
|
<el-form-item prop="deptUserName" label="处室带队人员">
|
<el-input
|
v-model.trim="state.formData.deptUserName"
|
size="large"
|
placeholder="请输入处室带队人员"
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row :gutter="24">
|
<el-col :span="24">
|
<el-form-item prop="remark" label="概况描述">
|
<el-input
|
type="textarea"
|
:rows="6"
|
v-model.trim="state.formData.remark"
|
size="large"
|
placeholder="请输入概况描述"
|
>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
</template>
|
|
<script setup>
|
import {onMounted, reactive, ref} from "vue";
|
import Cookies from "js-cookie";
|
import {addProject, getProjectInfo, getProjectList} from "@/api/projectManage";
|
import {ElMessage} from "element-plus";
|
|
const searchTime = ref([]);
|
const emit = defineEmits(["getNextStatus"]);
|
const state = reactive({
|
formData: {
|
id:null,
|
deptId: null,
|
deptName:'',
|
projectName: '',
|
projectDateStart: '',
|
projectDateEnd: '',
|
companyName: '',
|
projectAddress: '',
|
deptUserName: '',
|
remark: ''
|
},
|
rules: {
|
projectName: [{ required: true, message: "项目名称不能为空", trigger: "blur" }],
|
projectDateStart: [{ required: true, message: "项目预计时间不能为空", trigger: "change" }],
|
projectAddress: [{ required: true, message: "项目地点不能为空", trigger: "blur" }],
|
deptUserName: [{ required: true, message: "处室带队人员不能为空", trigger: "blur" }],
|
remark: [{ required: true, message: "概况描述不能为空", trigger: "blur" }],
|
},
|
isAdmin: false
|
})
|
const formRef = ref();
|
const userInfo = ref()
|
onMounted(() => {
|
userInfo.value = JSON.parse(Cookies.get('userInfo'))
|
state.formData.deptName = userInfo.value.dept.deptName
|
state.formData.deptId = userInfo.value.deptId
|
state.isAdmin = userInfo.value.admin
|
})
|
|
|
const riskOpen = async (type,val) => {
|
console.log("type",type,val)
|
let valid = null
|
if(type === 'add' || type === 'clickEdit'){
|
valid = await formRef.value.validate();
|
if (state.isAdmin) {
|
ElMessage.warning("当前用户暂无权限");
|
return;
|
}
|
}
|
if(type === 'add'){
|
if(valid){
|
//保存按钮
|
const {id,...data} = state.formData
|
const res = await addProject(data);
|
if(res.code == 200){
|
ElMessage.success('新增成功')
|
emit('getNextStatus', res.data);
|
reset()
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
}else if(type === 'clickEdit'){
|
if(valid){
|
//变更按钮
|
const {...data} = state.formData
|
const res = await addProject(data);
|
if(res.code == 200){
|
ElMessage.success('修改成功')
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
}else if(type === 'detail'){
|
const res = await getProjectInfo(val)
|
if(res.code == 200){
|
if(res.data) {
|
const val = res.data
|
for(let i in state.formData) {
|
if (validKey(i, val)) {
|
state.formData[i] = val[i]
|
}
|
}
|
searchTime.value = [res.data.projectDateStart,res.data.projectDateEnd]
|
}
|
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
}
|
const validKey=(key,obj)=>{
|
return key in obj
|
}
|
const reset = () => {
|
state.formData = {
|
id:null,
|
deptId: null,
|
deptName:'',
|
projectName: '',
|
projectDateStart: '',
|
projectDateEnd: '',
|
companyName: '',
|
projectAddress: '',
|
deptUserName: '',
|
remark: ''
|
}
|
searchTime.value = [];
|
}
|
const changeTime=(value)=>{
|
if(!value){
|
state.formData.projectDateStart = ""
|
state.formData.projectDateEnd = ""
|
}else {
|
state.formData.projectDateStart = searchTime.value[0]
|
state.formData.projectDateEnd = searchTime.value[1]
|
}
|
}
|
defineExpose({
|
riskOpen
|
});
|
</script>
|
|
|
<style scoped lang="scss">
|
.basicInfo{
|
|
}
|
</style>
|