pull/480/head
parent
db82694e37
commit
a24b03e43f
|
|
@ -7,6 +7,7 @@ const slots = useSlots()
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: propTypes.bool.def(false),
|
modelValue: propTypes.bool.def(false),
|
||||||
|
Fullscreen:propTypes.bool.def(true),
|
||||||
title: propTypes.string.def('Dialog'),
|
title: propTypes.string.def('Dialog'),
|
||||||
fullscreen: propTypes.bool.def(false),
|
fullscreen: propTypes.bool.def(false),
|
||||||
width: propTypes.oneOfType([String, Number]).def('40%'),
|
width: propTypes.oneOfType([String, Number]).def('40%'),
|
||||||
|
|
@ -26,7 +27,7 @@ const getBindValue = computed(() => {
|
||||||
return obj
|
return obj
|
||||||
})
|
})
|
||||||
|
|
||||||
const isFullscreen = ref(true)
|
const isFullscreen = ref(props.Fullscreen)
|
||||||
|
|
||||||
const toggleFull = () => {
|
const toggleFull = () => {
|
||||||
isFullscreen.value = !unref(isFullscreen)
|
isFullscreen.value = !unref(isFullscreen)
|
||||||
|
|
|
||||||
|
|
@ -70,4 +70,4 @@ legend {
|
||||||
background: #1e4dad;
|
background: #1e4dad;
|
||||||
height: 8px;
|
height: 8px;
|
||||||
width: 52px;
|
width: 52px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,16 @@ export function dateFormatter(_row: any, _column: TableColumnCtx<any>, cellValue
|
||||||
export function dateFormatter2(_row: any, _column: TableColumnCtx<any>, cellValue: any): string {
|
export function dateFormatter2(_row: any, _column: TableColumnCtx<any>, cellValue: any): string {
|
||||||
return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : ''
|
return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : ''
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* element plus 的时间 Formatter 实现,使用 YYYY 格式
|
||||||
|
*
|
||||||
|
* @param row 行数据
|
||||||
|
* @param column 字段
|
||||||
|
* @param cellValue 字段值
|
||||||
|
*/
|
||||||
|
export function dateFormatter3(cellValue: any): string {
|
||||||
|
return cellValue ? formatDate(cellValue, 'YYYY') : ''
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 设置起始日期,时间为00:00:00
|
* 设置起始日期,时间为00:00:00
|
||||||
* @param param 传入日期
|
* @param param 传入日期
|
||||||
|
|
|
||||||
|
|
@ -77,11 +77,11 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="审核单位" prop="reviewUnitName">
|
<el-form-item label="审核单位" prop="reviewUnitName">
|
||||||
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
|
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="验收形式" prop="accMode">
|
<el-form-item label="验收形式" prop="accMode">
|
||||||
|
|
@ -91,11 +91,11 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="验收结果" prop="accResult">
|
<el-form-item label="验收结果" prop="accResult">
|
||||||
<el-input v-model="formData.accResult" placeholder="请输入验收结果" />
|
<el-input v-model="formData.accResult" placeholder="请输入验收结果" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
|
||||||
|
|
@ -102,9 +102,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -322,9 +322,9 @@
|
||||||
<el-table v-loading="loading1" :data="list1" :stripe="true" :show-overflow-tooltip="true" highlight-current-row>
|
<el-table v-loading="loading1" :data="list1" :stripe="true" :show-overflow-tooltip="true" highlight-current-row>
|
||||||
<el-table-column align="center" width="65">
|
<el-table-column align="center" width="65">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-checkbox :label="scope.row.id" v-model="currentRowValue" @change="handleCurrentChange(scope.row)">
|
<el-radio :label="scope.row.id" v-model="currentRowValue" @change="handleCurrentChange(scope.row)">
|
||||||
|
|
||||||
</el-checkbox>
|
</el-radio>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,9 @@ const open = async (type: string, id?: number) => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
formData.value = await MainApi.getMain(id)
|
formData.value = await MainApi.getMain(id)
|
||||||
|
if(formData.value.changeType){
|
||||||
|
formData.value.changeType = formData.value.changeType.split(",")
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="项目负责人" prop="projectLeader">
|
<el-form-item label="项目负责人" prop="projectLeader">
|
||||||
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" disabled/>
|
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<!-- <el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="项目负责人Id" prop="projectLeaderId">
|
<el-form-item label="项目负责人Id" prop="projectLeaderId">
|
||||||
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" />
|
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" />
|
||||||
</el-form-item></el-col>-->
|
</el-form-item></el-col>-->
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="所属技术领域" prop="technicalField">
|
<el-form-item label="所属技术领域" prop="technicalField">
|
||||||
<el-select v-model="formData.technicalField" placeholder="请选择所属技术领域">
|
<el-select v-model="formData.technicalField" placeholder="请选择所属技术领域">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)" :key="dict.value"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)" :key="index"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
|
|
@ -44,14 +44,14 @@
|
||||||
<el-date-picker v-model="formData.endDate" type="date" value-format="x" placeholder="选择结束时间" />
|
<el-date-picker v-model="formData.endDate" type="date" value-format="x" placeholder="选择结束时间" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="计划类型" prop="planName">
|
<el-form-item label="计划类型" prop="planId">
|
||||||
<el-select v-model="formData.planName" placeholder="请选择计划类型">
|
<el-select v-model="planUnit" placeholder="请选择计划类型" @change="planChange">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_ID)" :key="dict.value" :label="dict.label"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.PLAN_ID)" :key="index"
|
||||||
:value="dict.value" />
|
:label="dict.label" :value="dict" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<!-- <el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="计划Id" prop="planId">
|
<el-form-item label="计划Id" prop="planId">d
|
||||||
<el-input v-model="formData.planId" placeholder="请输入计划Id" />
|
<el-input v-model="formData.planId" placeholder="请输入计划Id" />
|
||||||
</el-form-item></el-col>-->
|
</el-form-item></el-col>-->
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -61,8 +61,8 @@
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="性别" prop="gender">
|
<el-form-item label="性别" prop="gender">
|
||||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" :key="dict.value"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" :key="index"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -72,22 +72,22 @@
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="学历" prop="education">
|
<el-form-item label="学历" prop="education">
|
||||||
<el-select v-model="formData.education" placeholder="请选择学历">
|
<el-select v-model="formData.education" placeholder="请选择学历">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_EDUCATION)" :key="dict.value"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_EDUCATION)" :key="index"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="所学专业" prop="major">
|
<el-form-item label="所学专业" prop="major">
|
||||||
<el-select v-model="formData.major" placeholder="请选择所学专业">
|
<el-select v-model="formData.major" placeholder="请选择所学专业">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="dict.value"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="index"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="从事专业" prop="engagMajor">
|
<el-form-item label="从事专业" prop="engagMajor">
|
||||||
<el-select v-model="formData.engagMajor" placeholder="请选择从事专业">
|
<el-select v-model="formData.engagMajor" placeholder="请选择从事专业">
|
||||||
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="dict.value"
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="index"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
|
|
@ -114,11 +114,8 @@
|
||||||
<el-form-item label="通讯地址" prop="address">
|
<el-form-item label="通讯地址" prop="address">
|
||||||
<el-input v-model="formData.address" placeholder="请输入通讯地址" />
|
<el-input v-model="formData.address" placeholder="请输入通讯地址" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="主要业绩" prop="achievement">
|
<!-- <el-col :span="6">
|
||||||
<el-input v-model="formData.achievement" placeholder="请输入主要业绩" />
|
|
||||||
</el-form-item></el-col>
|
|
||||||
<!-- <el-col :span="6">
|
|
||||||
<el-form-item label="主管部门ID" prop="competentDeptId">
|
<el-form-item label="主管部门ID" prop="competentDeptId">
|
||||||
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" />
|
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" />
|
||||||
</el-form-item></el-col>-->
|
</el-form-item></el-col>-->
|
||||||
|
|
@ -126,7 +123,7 @@
|
||||||
<el-form-item label="主管部门" prop="competentDeptName">
|
<el-form-item label="主管部门" prop="competentDeptName">
|
||||||
<el-input v-model="formData.competentDeptName" placeholder="请输入主管部门" />
|
<el-input v-model="formData.competentDeptName" placeholder="请输入主管部门" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<!-- <el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="主管工程师ID" prop="managerId">
|
<el-form-item label="主管工程师ID" prop="managerId">
|
||||||
<el-input v-model="formData.managerId" placeholder="请输入主管工程师ID" />
|
<el-input v-model="formData.managerId" placeholder="请输入主管工程师ID" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -139,7 +136,7 @@
|
||||||
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
|
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<!-- <el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
|
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
|
||||||
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
|
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -148,7 +145,12 @@
|
||||||
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
|
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
|
||||||
</el-form-item></el-col>
|
</el-form-item></el-col>
|
||||||
<!-- <el-col :span="6">
|
<el-col :span="24">
|
||||||
|
<el-form-item label="负责人主要业绩" prop="achievement">
|
||||||
|
<el-input v-model="formData.achievement" placeholder="请输入负责人主要业绩" type="textarea" resize="vertical"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 4 }" />
|
||||||
|
</el-form-item></el-col>
|
||||||
|
<!-- <el-col :span="6">
|
||||||
<el-form-item label="承担单位ID" prop="undertakingUnitId">
|
<el-form-item label="承担单位ID" prop="undertakingUnitId">
|
||||||
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
|
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -170,7 +172,7 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="任务书详细信息" name="info">
|
<el-tab-pane label="任务书详细信息" name="info">
|
||||||
<InfoForm ref="infoFormRef" :contract-id="formData.id" />
|
<InfoForm ref="infoFormRef" :contract-id="formData.id" v-if="subTabsName =='info'"/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="任务书项目目标" name="target">
|
<el-tab-pane label="任务书项目目标" name="target">
|
||||||
<TargetForm ref="targetFormRef" :contract-id="formData.id" />
|
<TargetForm ref="targetFormRef" :contract-id="formData.id" />
|
||||||
|
|
@ -182,7 +184,7 @@
|
||||||
<PlanForm ref="planFormRef" :contract-id="formData.id" />
|
<PlanForm ref="planFormRef" :contract-id="formData.id" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="任务书经费" name="funds">
|
<el-tab-pane label="任务书经费" name="funds">
|
||||||
<FundsForm ref="fundsFormRef" :contract-id="formData.id" />
|
<FundsForm ref="fundsFormRef" :contract-id="formData.id" :dataMain="formData" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="参加单位" name="unit">
|
<el-tab-pane label="参加单位" name="unit">
|
||||||
<UnitForm ref="unitFormRef" :contract-id="formData.id" />
|
<UnitForm ref="unitFormRef" :contract-id="formData.id" />
|
||||||
|
|
@ -224,11 +226,12 @@ const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
|
const planUnit = ref();
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectName: undefined,
|
projectName: undefined,
|
||||||
projectLeader: user.nickname,
|
projectLeader: undefined,
|
||||||
projectLeaderId: user.id,
|
projectLeaderId: undefined,
|
||||||
projectCode: undefined,
|
projectCode: undefined,
|
||||||
technicalField: undefined,
|
technicalField: undefined,
|
||||||
year: undefined,
|
year: undefined,
|
||||||
|
|
@ -285,16 +288,16 @@ const formRules = reactive({
|
||||||
postalCode: [{ required: true, message: '邮编不能为空', trigger: 'blur' }],
|
postalCode: [{ required: true, message: '邮编不能为空', trigger: 'blur' }],
|
||||||
address: [{ required: true, message: '通讯地址不能为空', trigger: 'blur' }],
|
address: [{ required: true, message: '通讯地址不能为空', trigger: 'blur' }],
|
||||||
achievement: [{ required: true, message: '主要业绩不能为空', trigger: 'blur' }],
|
achievement: [{ required: true, message: '主要业绩不能为空', trigger: 'blur' }],
|
||||||
/* competentDeptId: [{ required: true, message: '主管部门ID不能为空', trigger: 'blur' }],
|
/* competentDeptId: [{ required: true, message: '主管部门ID不能为空', trigger: 'blur' }],
|
||||||
competentDeptName: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }],
|
competentDeptName: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }],
|
||||||
managerId: [{ required: true, message: '主管工程师ID不能为空', trigger: 'blur' }],
|
managerId: [{ required: true, message: '主管工程师ID不能为空', trigger: 'blur' }],
|
||||||
managerName: [{ required: true, message: '主管工程师不能为空', trigger: 'blur' }],
|
managerName: [{ required: true, message: '主管工程师不能为空', trigger: 'blur' }],
|
||||||
maintenanceUnitName: [{ required: true, message: '维护单位名称不能为空', trigger: 'blur' }],
|
maintenanceUnitName: [{ required: true, message: '维护单位名称不能为空', trigger: 'blur' }],
|
||||||
maintenanceUnitId: [{ required: true, message: '维护单位ID不能为空', trigger: 'blur' }],
|
maintenanceUnitId: [{ required: true, message: '维护单位ID不能为空', trigger: 'blur' }],
|
||||||
undertakingUnitName: [{ required: true, message: '承担单位名称不能为空', trigger: 'blur' }],
|
undertakingUnitName: [{ required: true, message: '承担单位名称不能为空', trigger: 'blur' }],
|
||||||
undertakingUnitId: [{ required: true, message: '承担单位ID不能为空', trigger: 'blur' }],
|
undertakingUnitId: [{ required: true, message: '承担单位ID不能为空', trigger: 'blur' }],
|
||||||
reviewUnitName: [{ required: true, message: '审核单位名称不能为空', trigger: 'blur' }],
|
reviewUnitName: [{ required: true, message: '审核单位名称不能为空', trigger: 'blur' }],
|
||||||
reviewUnitId: [{ required: true, message: '审核单位ID不能为空', trigger: 'blur' }],*/
|
reviewUnitId: [{ required: true, message: '审核单位ID不能为空', trigger: 'blur' }],*/
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
|
@ -311,6 +314,7 @@ const participantFormRef = ref()
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (type: string, id?: number) => {
|
const open = async (type: string, id?: number) => {
|
||||||
|
subTabsName.value = 'basic'
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
dialogTitle.value = t('action.' + type)
|
dialogTitle.value = t('action.' + type)
|
||||||
formType.value = type
|
formType.value = type
|
||||||
|
|
@ -320,12 +324,16 @@ const open = async (type: string, id?: number) => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
formData.value = await MainApi.getMain(id)
|
formData.value = await MainApi.getMain(id)
|
||||||
|
planUnit.value = {
|
||||||
|
value: formData.value.planId,
|
||||||
|
lael: formData.value.planName
|
||||||
|
}
|
||||||
|
formData.value.gender = formData.value.gender.toString()
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
||||||
|
|
||||||
/** 提交表单 */
|
/** 提交表单 */
|
||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
|
|
@ -408,14 +416,17 @@ const submitForm = async () => {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const planChange = (e) => {
|
||||||
|
formData.value.planId = e.value;
|
||||||
|
formData.value.planName = e.label
|
||||||
|
}
|
||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectName: undefined,
|
projectName: undefined,
|
||||||
projectLeader: user.nickname,
|
projectLeader: undefined,
|
||||||
projectLeaderId: user.id,
|
projectLeaderId: undefined,
|
||||||
projectCode: undefined,
|
projectCode: undefined,
|
||||||
technicalField: undefined,
|
technicalField: undefined,
|
||||||
year: undefined,
|
year: undefined,
|
||||||
|
|
@ -449,5 +460,9 @@ const resetForm = () => {
|
||||||
state: undefined,
|
state: undefined,
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
|
planUnit.value = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -81,9 +81,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,202 @@
|
||||||
|
<template>
|
||||||
|
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="0px"
|
||||||
|
:inline-message="true">
|
||||||
|
<el-table :data="formData" class="-mt-10px" :span-method="objectSpanMethod" show-summary>
|
||||||
|
|
||||||
|
<el-table-column prop="id" label="科目" width="180" />
|
||||||
|
<el-table-column prop="name" label="其中" />
|
||||||
|
<el-table-column prop="amount1" :label='item + "年"' v-for="(item, index) in rows" :key="index">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input-number v-model="scope.row[item]" :precision="2" @change="changeNum" :min="0" :max="9999999"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="count" label="合计">
|
||||||
|
<template #default="scope">
|
||||||
|
{{scope.row.count}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-form>
|
||||||
|
<!-- <el-row justify="center" class="mt-3">
|
||||||
|
<el-button @click="handleAdd" round>+ 添加任务书经费</el-button>
|
||||||
|
</el-row> -->
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { dateFormatter3 } from '@/utils/formatTime'
|
||||||
|
const props = defineProps<{
|
||||||
|
dataMain: {},
|
||||||
|
contractId: undefined // 任务书ID(主表的关联字段)
|
||||||
|
}>()
|
||||||
|
const formLoading = ref(false) // 表单的加载中
|
||||||
|
// const formData = ref([])
|
||||||
|
const rows = ref([])
|
||||||
|
const formData = ref([
|
||||||
|
{
|
||||||
|
id: '设备购置费',
|
||||||
|
name: '集团经费',
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '设备购置费',
|
||||||
|
name: '企业自筹经费',
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '材料费',
|
||||||
|
name: '集团经费',
|
||||||
|
count: 0,
|
||||||
|
}, {
|
||||||
|
id: '材料费',
|
||||||
|
name: '企业自筹经费',
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '试验外协费',
|
||||||
|
name: '集团经费',
|
||||||
|
count: 0,
|
||||||
|
}, {
|
||||||
|
id: '试验外协费',
|
||||||
|
name: '企业自筹经费',
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '人员费用',
|
||||||
|
name: '集团经费',
|
||||||
|
count: 0,
|
||||||
|
}, {
|
||||||
|
id: '其他费用',
|
||||||
|
name: '集团经费',
|
||||||
|
count: 0,
|
||||||
|
}, {
|
||||||
|
id: '其他费用',
|
||||||
|
name: '企业自筹经费',
|
||||||
|
count: 0,
|
||||||
|
}
|
||||||
|
])
|
||||||
|
const formRules = reactive({
|
||||||
|
})
|
||||||
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
|
||||||
|
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||||
|
watch(
|
||||||
|
() => props.contractId,
|
||||||
|
async (val) => {
|
||||||
|
// 1. 重置表单
|
||||||
|
// formData.value = []
|
||||||
|
// 2. val 非空,则加载数据
|
||||||
|
if (!val) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
formLoading.value = true
|
||||||
|
// formData.value = await MainApi.getFundsListByContractId(val)
|
||||||
|
} finally {
|
||||||
|
formLoading.value = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
watch(
|
||||||
|
() => props.dataMain,
|
||||||
|
(dataMain) => {
|
||||||
|
rows.value = []
|
||||||
|
if (dataMain.beginDate && dataMain.endDate) {
|
||||||
|
var a1 = Number(dateFormatter3(dataMain.beginDate))
|
||||||
|
var a2 = Number(dateFormatter3(dataMain.endDate))
|
||||||
|
for (var i = a1; i <= a2; i++) {
|
||||||
|
rows.value.push(i);
|
||||||
|
for (var j = 0; j < formData.value.length; j++) {
|
||||||
|
formData.value[j][i] = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
const changeNum =()=>{
|
||||||
|
for (var j = 0; j < formData.value.length; j++) {
|
||||||
|
var count = 0
|
||||||
|
for(var i=0;i<rows.value.length;i++){
|
||||||
|
count= count + formData.value[j][rows.value[i]]
|
||||||
|
}
|
||||||
|
formData.value[j].count = count
|
||||||
|
}
|
||||||
|
formData.value[0].count = formData.value[0].count +formData.value[1].count
|
||||||
|
formData.value[1].count= 0
|
||||||
|
formData.value[2].count = formData.value[2].count +formData.value[3].count
|
||||||
|
formData.value[3].count= 0
|
||||||
|
formData.value[4].count = formData.value[4].count +formData.value[5].count
|
||||||
|
formData.value[5].count= 0
|
||||||
|
formData.value[7].count = formData.value[7].count +formData.value[8].count
|
||||||
|
formData.value[8].count= 0
|
||||||
|
|
||||||
|
}
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
const handleAdd = () => {
|
||||||
|
const row = {
|
||||||
|
id: undefined,
|
||||||
|
contractId: undefined,
|
||||||
|
fiscalYear: undefined,
|
||||||
|
sourceExpend: undefined,
|
||||||
|
sGroupFund: undefined,
|
||||||
|
sGovernmentFund: undefined,
|
||||||
|
sSelfFinancing: undefined,
|
||||||
|
sOtherFund: undefined,
|
||||||
|
sTotalFund: undefined,
|
||||||
|
equipmentFund: undefined,
|
||||||
|
materialFund: undefined,
|
||||||
|
experimentFund: undefined,
|
||||||
|
peopleFund: undefined,
|
||||||
|
otherFund: undefined,
|
||||||
|
totalFund: undefined,
|
||||||
|
}
|
||||||
|
row.contractId = props.contractId
|
||||||
|
formData.value.push(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const objectSpanMethod = ({
|
||||||
|
row,
|
||||||
|
column,
|
||||||
|
rowIndex,
|
||||||
|
columnIndex,
|
||||||
|
}) => {
|
||||||
|
if (columnIndex === 0 || columnIndex == (rows.value.length+2)) {
|
||||||
|
if (rowIndex == 0 || rowIndex == 2 || rowIndex == 4 || rowIndex == 7) {
|
||||||
|
return {
|
||||||
|
rowspan: 2,
|
||||||
|
colspan: 1,
|
||||||
|
}
|
||||||
|
} else if (rowIndex == 6) {
|
||||||
|
|
||||||
|
return {
|
||||||
|
rowspan: 1,
|
||||||
|
colspan: 1,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
rowspan: 0,
|
||||||
|
colspan: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 表单校验 */
|
||||||
|
const validate = () => {
|
||||||
|
return formRef.value.validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 表单值 */
|
||||||
|
const getData = () => {
|
||||||
|
return formData.value
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ validate, getData })
|
||||||
|
</script>
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="350px" v-loading="formLoading">
|
||||||
ref="formRef"
|
<el-form-item label="项目目的与意义" prop="purposeSignificance">
|
||||||
:model="formData"
|
|
||||||
:rules="formRules"
|
|
||||||
label-width="350px"
|
|
||||||
v-loading="formLoading"
|
|
||||||
>
|
|
||||||
<el-form-item label="项目目的与意义" prop="purposeSignificance">
|
|
||||||
<Editor v-model="formData.purposeSignificance" height="150px" />
|
<Editor v-model="formData.purposeSignificance" height="150px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目所属领域国内外产业、技术的现状和发展趋势" prop="currentSituation">
|
<el-form-item label="项目所属领域国内外产业、技术的现状和发展趋势" prop="currentSituation">
|
||||||
|
|
@ -42,18 +36,31 @@ const props = defineProps<{
|
||||||
contractId: undefined // 任务书ID(主表的关联字段)
|
contractId: undefined // 任务书ID(主表的关联字段)
|
||||||
}>()
|
}>()
|
||||||
const formLoading = ref(false) // 表单的加载中
|
const formLoading = ref(false) // 表单的加载中
|
||||||
const formData = ref([])
|
const formData = ref({
|
||||||
|
id: undefined,
|
||||||
|
contractId: undefined,
|
||||||
|
purposeSignificance: undefined,
|
||||||
|
currentSituation: undefined,
|
||||||
|
workFoundation: undefined,
|
||||||
|
projectAccording: undefined,
|
||||||
|
researchContents: undefined,
|
||||||
|
researchRoadmap: undefined,
|
||||||
|
researchInnovation: undefined,
|
||||||
|
riskAnalysis: undefined,
|
||||||
|
projectAchie: undefined,
|
||||||
|
|
||||||
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
contractId: [{ required: true, message: '任务书ID不能为空', trigger: 'blur' }],
|
contractId: [{ required: true, message: '任务书ID不能为空', trigger: 'blur' }],
|
||||||
/* purposeSignificance: [{ required: true, message: '项目目的与意义不能为空', trigger: 'blur' }],
|
/* purposeSignificance: [{ required: true, message: '项目目的与意义不能为空', trigger: 'blur' }],
|
||||||
currentSituation: [{ required: true, message: '项目所属领域国内外产业、技术的现状和发展趋势不能为空', trigger: 'blur' }],
|
currentSituation: [{ required: true, message: '项目所属领域国内外产业、技术的现状和发展趋势不能为空', trigger: 'blur' }],
|
||||||
workFoundation: [{ required: true, message: '项目现有工作基础不能为空', trigger: 'blur' }],
|
workFoundation: [{ required: true, message: '项目现有工作基础不能为空', trigger: 'blur' }],
|
||||||
projectAccording: [{ required: true, message: '项目实施目标及考核指标-考核指标依据不能为空', trigger: 'blur' }],
|
projectAccording: [{ required: true, message: '项目实施目标及考核指标-考核指标依据不能为空', trigger: 'blur' }],
|
||||||
researchContents: [{ required: true, message: '主要研究开发内容-主要研究内容不能为空', trigger: 'blur' }],
|
researchContents: [{ required: true, message: '主要研究开发内容-主要研究内容不能为空', trigger: 'blur' }],
|
||||||
researchRoadmap: [{ required: true, message: '主要研究开发内容-技术路线不能为空', trigger: 'blur' }],
|
researchRoadmap: [{ required: true, message: '主要研究开发内容-技术路线不能为空', trigger: 'blur' }],
|
||||||
researchInnovation: [{ required: true, message: '主要研究开发内容-创新性不能为空', trigger: 'blur' }],
|
researchInnovation: [{ required: true, message: '主要研究开发内容-创新性不能为空', trigger: 'blur' }],
|
||||||
riskAnalysis: [{ required: true, message: '课题实施的风险分析不能为空', trigger: 'blur' }],
|
riskAnalysis: [{ required: true, message: '课题实施的风险分析不能为空', trigger: 'blur' }],
|
||||||
projectAchie: [{ required: true, message: '预期主要成果形式、知识产权归属不能为空', trigger: 'blur' }],*/
|
projectAchie: [{ required: true, message: '预期主要成果形式、知识产权归属不能为空', trigger: 'blur' }],*/
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
|
@ -86,6 +93,7 @@ watch(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
formData.value = data
|
formData.value = data
|
||||||
|
console.log( formData.value )
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="0px"
|
||||||
ref="formRef"
|
:inline-message="true">
|
||||||
:model="formData"
|
|
||||||
:rules="formRules"
|
|
||||||
v-loading="formLoading"
|
|
||||||
label-width="0px"
|
|
||||||
:inline-message="true"
|
|
||||||
>
|
|
||||||
<el-table :data="formData" class="-mt-10px">
|
<el-table :data="formData" class="-mt-10px">
|
||||||
<el-table-column label="序号" type="index" width="100" />
|
<el-table-column label="序号" type="index" width="100" />
|
||||||
<el-table-column label="姓名" min-width="150">
|
<el-table-column label="姓名" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.name`" :rules="formRules.name" class="mb-0px!">
|
<el-form-item :prop="`${$index}.name`" :rules="formRules.name" class="mb-0px!">
|
||||||
<el-input v-model="row.name" placeholder="请输入姓名" />
|
<el-input v-model="row.name" placeholder="请输入姓名" />
|
||||||
|
|
@ -18,9 +12,14 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="性别" min-width="150">
|
<el-table-column label="性别" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.gender`" :rules="formRules.gender" class="mb-0px!">
|
<el-select v-model="row.gender" placeholder="请选择性别" :prop="`${$index}.gender`" :rules="formRules.gender"
|
||||||
|
class="mb-0px!">
|
||||||
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" :key="index"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
<!-- <el-form-item :prop="`${$index}.gender`" :rules="formRules.gender" class="mb-0px!">
|
||||||
<el-input v-model="row.gender" placeholder="请输入性别" />
|
<el-input v-model="row.gender" placeholder="请输入性别" />
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="年龄" min-width="150">
|
<el-table-column label="年龄" min-width="150">
|
||||||
|
|
@ -32,9 +31,12 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="学历" min-width="150">
|
<el-table-column label="学历" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.education`" :rules="formRules.education" class="mb-0px!">
|
<el-select v-model="row.education" placeholder="请选择学历" class="mb-0px!" :rules="formRules.education"
|
||||||
<el-input v-model="row.education" placeholder="请输入学历" />
|
:prop="`${$index}.education`">
|
||||||
</el-form-item>
|
<el-option v-for="(dict, index) in getStrDictOptions(DICT_TYPE.SYSTEM_EDUCATION)" :key="index"
|
||||||
|
:label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="职务(职称)" min-width="150">
|
<el-table-column label="职务(职称)" min-width="150">
|
||||||
|
|
@ -58,13 +60,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="所在单位id" min-width="150">
|
<!-- <el-table-column label="所在单位id" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.deptId`" :rules="formRules.deptId" class="mb-0px!">
|
<el-form-item :prop="`${$index}.deptId`" :rules="formRules.deptId" class="mb-0px!">
|
||||||
<el-input v-model="row.deptId" placeholder="请输入所在单位id" />
|
<el-input v-model="row.deptId" placeholder="请输入所在单位id" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column label="所在单位名称" min-width="150">
|
<el-table-column label="所在单位名称" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
|
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
|
||||||
|
|
@ -72,13 +74,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="排序号" min-width="150">
|
<!-- <el-table-column label="排序号" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.orderNo`" :rules="formRules.orderNo" class="mb-0px!">
|
<el-form-item :prop="`${$index}.orderNo`" :rules="formRules.orderNo" class="mb-0px!">
|
||||||
<el-input v-model="row.orderNo" placeholder="请输入排序号" />
|
<el-input v-model="row.orderNo" placeholder="请输入排序号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||||
<template #default="{ $index }">
|
<template #default="{ $index }">
|
||||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||||
|
|
@ -92,7 +94,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { MainApi } from '@/api/contract/contract'
|
import { MainApi } from '@/api/contract/contract'
|
||||||
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
contractId: undefined // 合同id(主表的关联字段)
|
contractId: undefined // 合同id(主表的关联字段)
|
||||||
}>()
|
}>()
|
||||||
|
|
@ -141,12 +143,19 @@ const handleAdd = () => {
|
||||||
row.contractId = props.contractId
|
row.contractId = props.contractId
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
/** 删除按钮操作 */
|
||||||
formData.value.splice(index, 1)
|
const handleDelete = async (index) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
const validate = () => {
|
const validate = () => {
|
||||||
return formRef.value.validate()
|
return formRef.value.validate()
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="乐观锁" min-width="150">
|
<!-- <el-table-column label="乐观锁" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
||||||
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||||
<template #default="{ $index }">
|
<template #default="{ $index }">
|
||||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||||
|
|
@ -91,9 +91,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -81,9 +81,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@
|
||||||
>
|
>
|
||||||
<el-table :data="formData" class="-mt-10px">
|
<el-table :data="formData" class="-mt-10px">
|
||||||
<el-table-column label="序号" type="index" width="100" />
|
<el-table-column label="序号" type="index" width="100" />
|
||||||
<el-table-column label="单位ID" min-width="150">
|
<!-- <el-table-column label="单位ID" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.deptId`" :rules="formRules.deptId" class="mb-0px!">
|
<el-form-item :prop="`${$index}.deptId`" :rules="formRules.deptId" class="mb-0px!">
|
||||||
<el-input v-model="row.deptId" placeholder="请输入单位ID" />
|
<el-input v-model="row.deptId" placeholder="请输入单位ID" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column label="单位名称" min-width="150">
|
<el-table-column label="单位名称" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
|
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
|
||||||
|
|
@ -93,13 +93,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="排序号" min-width="150">
|
<!-- <el-table-column label="排序号" min-width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.orderNo`" :rules="formRules.orderNo" class="mb-0px!">
|
<el-form-item :prop="`${$index}.orderNo`" :rules="formRules.orderNo" class="mb-0px!">
|
||||||
<el-input v-model="row.orderNo" placeholder="请输入排序号" />
|
<el-input v-model="row.orderNo" placeholder="请输入排序号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||||
<template #default="{ $index }">
|
<template #default="{ $index }">
|
||||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||||
|
|
@ -166,9 +166,15 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = (index) => {
|
const handleDelete = async (index) => {
|
||||||
formData.value.splice(index, 1)
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单校验 */
|
/** 表单校验 */
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,11 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="年度" align="center" prop="year" width="100"/>
|
<el-table-column label="年度" align="center" prop="year" width="100"/>
|
||||||
<el-table-column label="开始时间" align="center" prop="beginDate" :formatter="dateFormatter" width="180" />
|
<el-table-column label="开始时间" align="center" prop="beginDate" :formatter="dateFormatter2" width="180" />
|
||||||
<el-table-column label="结束时间" align="center" prop="endDate" :formatter="dateFormatter" width="180" />
|
<el-table-column label="结束时间" align="center" prop="endDate" :formatter="dateFormatter2" width="180" />
|
||||||
<el-table-column label="计划类型" align="center" prop="planName" width="150">
|
<el-table-column label="计划类型" align="center" prop="planName" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.PLAN_ID" :value="scope.row.planName" />
|
<dict-tag :type="DICT_TYPE.PLAN_ID" :value="scope.row.planId" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="主管部门" align="center" prop="competentDeptName" width="150"/>
|
<el-table-column label="主管部门" align="center" prop="competentDeptName" width="150"/>
|
||||||
|
|
@ -71,7 +71,15 @@
|
||||||
<el-table-column label="主管工程师" align="center" prop="managerName" width="150" />
|
<el-table-column label="主管工程师" align="center" prop="managerName" width="150" />
|
||||||
<el-table-column label="牵头单位" align="center" prop="undertakingUnitName" width="180"/>
|
<el-table-column label="牵头单位" align="center" prop="undertakingUnitName" width="180"/>
|
||||||
<el-table-column label="审核单位" align="center" prop="reviewUnitName" width="180"/>
|
<el-table-column label="审核单位" align="center" prop="reviewUnitName" width="180"/>
|
||||||
<el-table-column label="状态" align="center" prop="state" width="100" />
|
<el-table-column label="状态" align="center" prop="state" width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.state == '1'">新建</span>
|
||||||
|
<span v-if="scope.row.state == '2'">审核中</span>
|
||||||
|
<span v-if="scope.row.state == '3'">审核驳回</span>
|
||||||
|
<span v-if="scope.row.state == '4'">审核完成</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180" />
|
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" width="200">
|
<el-table-column label="操作" align="center" fixed="right" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
@ -106,9 +114,9 @@
|
||||||
<el-table v-loading="loading1" :data="list1" :stripe="true" :show-overflow-tooltip="true" highlight-current-row>
|
<el-table v-loading="loading1" :data="list1" :stripe="true" :show-overflow-tooltip="true" highlight-current-row>
|
||||||
<el-table-column align="center" width="65">
|
<el-table-column align="center" width="65">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-checkbox :label="scope.row.id" v-model="currentRowValue" @change="handleCurrentChange(scope.row)">
|
<el-radio :label="scope.row.id" v-model="currentRowValue" @change="handleCurrentChange(scope.row)">
|
||||||
|
|
||||||
</el-checkbox>
|
</el-radio>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||||
|
|
@ -125,7 +133,7 @@
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
<Dialog title="审核" v-model="dialogVisible1">
|
<Dialog title="审核" v-model="dialogVisible1" width="600px" :Fullscreen ="false">
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-form label-width="80px" :model="formData" class="m-t-8px" :rules="formRules">
|
<el-form label-width="80px" :model="formData" class="m-t-8px" :rules="formRules">
|
||||||
<el-form-item label="" prop="status">
|
<el-form-item label="" prop="status">
|
||||||
|
|
@ -170,7 +178,7 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter ,dateFormatter2} from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { MainApi, MainVO } from '@/api/contract/contract'
|
import { MainApi, MainVO } from '@/api/contract/contract'
|
||||||
import MainForm from './MainForm.vue'
|
import MainForm from './MainForm.vue'
|
||||||
|
|
@ -255,7 +263,9 @@ const handleCurrentChange = (row) => {
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
try {
|
try {
|
||||||
await MainApi.generateContract({ id: currentRow.value })
|
await MainApi.generateContract({ id: currentRow.value })
|
||||||
message.success("提报成功")
|
dialogVisible.value = false
|
||||||
|
message.success("成功")
|
||||||
|
handleQuery()
|
||||||
} finally {
|
} finally {
|
||||||
// 关闭弹窗
|
// 关闭弹窗
|
||||||
currentRow.value = undefined
|
currentRow.value = undefined
|
||||||
|
|
@ -266,7 +276,9 @@ const submitForm = async () => {
|
||||||
const submitForm1 = async () => {
|
const submitForm1 = async () => {
|
||||||
try {
|
try {
|
||||||
await MainApi.auditContract(formData.value as unknown as MainVO)
|
await MainApi.auditContract(formData.value as unknown as MainVO)
|
||||||
|
dialogVisible1.value = false
|
||||||
message.success("审核成功")
|
message.success("审核成功")
|
||||||
|
handleQuery()
|
||||||
} finally {
|
} finally {
|
||||||
// 关闭弹窗
|
// 关闭弹窗
|
||||||
currentRow.value = undefined
|
currentRow.value = undefined
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue