|
|
@@ -43,10 +43,16 @@
|
|
|
<zm-table-column label="立项时间" prop="projectDate" min-width="220" show-overflow-tooltip />
|
|
|
<zm-table-column
|
|
|
label="计划结题时间"
|
|
|
- prop="planEndDaate"
|
|
|
+ prop="planEndDate"
|
|
|
min-width="220"
|
|
|
show-overflow-tooltip
|
|
|
- />
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.planEndDate">
|
|
|
+ {{ scope.row.planEndDate }}
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </zm-table-column>
|
|
|
|
|
|
<zm-table-column
|
|
|
label="执行单位"
|
|
|
@@ -166,6 +172,7 @@
|
|
|
:check-strictly="true"
|
|
|
node-key="id"
|
|
|
filterable
|
|
|
+ multiple
|
|
|
placeholder="请选择执行单位"
|
|
|
class="w-full"
|
|
|
/>
|
|
|
@@ -201,6 +208,34 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目所属单位" prop="deptId">
|
|
|
+ <el-tree-select
|
|
|
+ clearable
|
|
|
+ v-model="formData.deptId"
|
|
|
+ :data="deptList"
|
|
|
+ :props="defaultProps"
|
|
|
+ :check-strictly="true"
|
|
|
+ node-key="id"
|
|
|
+ filterable
|
|
|
+ placeholder="请选择项目所属单位"
|
|
|
+ class="w-full"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="计划结题时间" prop="planEndDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.planEndDate"
|
|
|
+ placeholder="请选择计划结题时间"
|
|
|
+ type="date"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ class="w-full!"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-divider content-position="left">项目内容</el-divider>
|
|
|
@@ -453,7 +488,7 @@
|
|
|
<zm-table-column label="工作计划" prop="workPlan" min-width="200" show-overflow-tooltip />
|
|
|
<zm-table-column label="截止时间" prop="deadline" width="150">
|
|
|
<template #default="{ row }">
|
|
|
- <span>{{ row.deadline.join('-') }}</span>
|
|
|
+ <span>{{ row.deadline }}</span>
|
|
|
</template>
|
|
|
</zm-table-column>
|
|
|
</zm-table>
|
|
|
@@ -564,7 +599,6 @@ import { computed, reactive, ref, onMounted } from 'vue'
|
|
|
import { ElMessage, ElMessageBox, type FormRules } from 'element-plus'
|
|
|
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
|
import { getSimpleDeptList } from '@/api/system/dept'
|
|
|
-import { getUserProfile } from '@/api/system/user/profile'
|
|
|
import {
|
|
|
getProjectPage,
|
|
|
getProject,
|
|
|
@@ -576,6 +610,7 @@ import {
|
|
|
approvePre,
|
|
|
approveFormal
|
|
|
} from '@/api/project'
|
|
|
+import dayjs from 'dayjs'
|
|
|
|
|
|
defineOptions({ name: 'ResearchProjectList' })
|
|
|
|
|
|
@@ -604,7 +639,6 @@ const defaultProps = {
|
|
|
value: 'id'
|
|
|
}
|
|
|
const deptList = ref<any[]>([])
|
|
|
-const deptId = ref('')
|
|
|
|
|
|
// ========== 类型 ==========
|
|
|
type ScheduleItem = { workPlan: string; deadline: string; sort?: number }
|
|
|
@@ -737,7 +771,8 @@ const createBudgetDetail = (): BudgetDetail => ({
|
|
|
})
|
|
|
|
|
|
const createForm = () => ({
|
|
|
- deptId: deptId.value,
|
|
|
+ deptId: '',
|
|
|
+ planEndDate: '',
|
|
|
projectLevel: '',
|
|
|
executingUnit: null as number | null,
|
|
|
projectName: '',
|
|
|
@@ -764,7 +799,9 @@ const formRules = reactive<FormRules>({
|
|
|
projectType: [{ required: true, message: '请选择项目类型', trigger: 'change' }],
|
|
|
goalAndSignificance: [{ required: true, message: '请输入目标和意义', trigger: 'blur' }],
|
|
|
mainResearchContent: [{ required: true, message: '请输入主要研究内容', trigger: 'blur' }],
|
|
|
- innovationPoint: [{ required: true, message: '请输入创新点', trigger: 'blur' }]
|
|
|
+ innovationPoint: [{ required: true, message: '请输入创新点', trigger: 'blur' }],
|
|
|
+ deptId: [{ required: true, message: '请选择项目所属部门', trigger: 'change' }],
|
|
|
+ planEndDate: [{ required: true, message: '请选择计划结束时间', trigger: 'change' }]
|
|
|
})
|
|
|
|
|
|
const budgetTotal = computed(() =>
|
|
|
@@ -798,9 +835,10 @@ const openForm = async (project?: any) => {
|
|
|
mainResearchContent: data.mainResearchContent,
|
|
|
innovationPoint: data.innovationPoint,
|
|
|
involveBudget: data.involveBudget,
|
|
|
- deptId: deptId.value,
|
|
|
+ deptId: data.deptId,
|
|
|
scheduleList: data.scheduleList?.length ? data.scheduleList : [createSchedule()],
|
|
|
- budgetList: data.budgetList?.length ? data.budgetList : [createBudgetDetail()]
|
|
|
+ budgetList: data.budgetList?.length ? data.budgetList : [createBudgetDetail()],
|
|
|
+ planEndDate: data.planEndDate
|
|
|
}
|
|
|
|
|
|
// 附件回显
|
|
|
@@ -978,8 +1016,6 @@ const removeProject = async (id: number) => {
|
|
|
|
|
|
// ========== 生命周期 ==========
|
|
|
onMounted(async () => {
|
|
|
- const data = await getUserProfile()
|
|
|
- deptId.value = data.dept.id
|
|
|
await getList()
|
|
|
deptList.value = await getSimpleDeptList()
|
|
|
})
|