Merge branch 'master' of https://gitee.com/mtrain/yudao-ui-admin-vue3
commit
3c81c91fec
|
|
@ -1,67 +1,70 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 验收主 VO
|
// 验收主 VO
|
||||||
export interface MainVO {
|
export interface MainVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
contractId: string // 合同主键ID
|
contractId: string // 合同主键ID
|
||||||
code: string // 课题编号
|
code: string // 课题编号
|
||||||
year: string // 年度
|
year: string // 年度
|
||||||
name: string // 课题名称
|
name: string // 课题名称
|
||||||
beginDate: string // 开始时间
|
beginDate: string // 开始时间
|
||||||
endData: string // 结束时间
|
endDate: string // 结束时间
|
||||||
competentDeptId: string // 主管部门ID
|
competentDeptId: string // 主管部门ID
|
||||||
competentDeptName: string // 主管部门
|
competentDeptName: string // 主管部门
|
||||||
managerId: string // 主管工程师ID
|
managerId: string // 主管工程师ID
|
||||||
managerName: string // 主管工程师
|
managerName: string // 主管工程师
|
||||||
createdBy: string // 创建人
|
maintenanceUnitName: string // 维护单位名称
|
||||||
createdTime: Date // 创建时间
|
maintenanceUnitId: string // 维护单位ID
|
||||||
updatedBy: string // 更新人
|
undertakingUnitName: string // 承担单位名称
|
||||||
updatedTime: Date // 更新时间
|
undertakingUnitId: string // 承担单位ID
|
||||||
}
|
reviewUnitName: string // 审核单位名称
|
||||||
|
reviewUnitId: string // 审核单位ID
|
||||||
// 验收主 API
|
state: string // 状态
|
||||||
export const MainApi = {
|
}
|
||||||
// 查询验收主分页
|
|
||||||
getMainPage: async (params: any) => {
|
// 验收主 API
|
||||||
return await request.get({ url: `/acceptance/main/page`, params })
|
export const MainApi = {
|
||||||
},
|
// 查询验收主分页
|
||||||
|
getMainPage: async (params: any) => {
|
||||||
// 查询验收主详情
|
return await request.get({ url: `/acceptance/main/page`, params })
|
||||||
getMain: async (id: number) => {
|
},
|
||||||
return await request.get({ url: `/acceptance/main/get?id=` + id })
|
|
||||||
},
|
// 查询验收主详情
|
||||||
|
getMain: async (id: number) => {
|
||||||
// 新增验收主
|
return await request.get({ url: `/acceptance/main/get?id=` + id })
|
||||||
createMain: async (data: MainVO) => {
|
},
|
||||||
return await request.post({ url: `/acceptance/main/create`, data })
|
|
||||||
},
|
// 新增验收主
|
||||||
|
createMain: async (data: MainVO) => {
|
||||||
// 修改验收主
|
return await request.post({ url: `/acceptance/main/create`, data })
|
||||||
updateMain: async (data: MainVO) => {
|
},
|
||||||
return await request.put({ url: `/acceptance/main/update`, data })
|
|
||||||
},
|
// 修改验收主
|
||||||
|
updateMain: async (data: MainVO) => {
|
||||||
// 删除验收主
|
return await request.put({ url: `/acceptance/main/update`, data })
|
||||||
deleteMain: async (id: number) => {
|
},
|
||||||
return await request.delete({ url: `/acceptance/main/delete?id=` + id })
|
|
||||||
},
|
// 删除验收主
|
||||||
|
deleteMain: async (id: number) => {
|
||||||
// 导出验收主 Excel
|
return await request.delete({ url: `/acceptance/main/delete?id=` + id })
|
||||||
exportMain: async (params) => {
|
},
|
||||||
return await request.download({ url: `/acceptance/main/export-excel`, params })
|
|
||||||
},
|
// 导出验收主 Excel
|
||||||
|
exportMain: async (params) => {
|
||||||
// ==================== 子表(验收详细信息) ====================
|
return await request.download({ url: `/acceptance/main/export-excel`, params })
|
||||||
|
},
|
||||||
// 获得验收详细信息
|
|
||||||
getInfoByAcceptanceId: async (acceptanceId) => {
|
// ==================== 子表(验收经费) ====================
|
||||||
return await request.get({ url: `/acceptance/main/info/get-by-acceptance-id?acceptanceId=` + acceptanceId })
|
|
||||||
},
|
// 获得验收经费列表
|
||||||
|
getFundsListByAcceptanceId: async (acceptanceId) => {
|
||||||
// ==================== 子表(验收经费) ====================
|
return await request.get({ url: `/acceptance/main/funds/list-by-acceptance-id?acceptanceId=` + acceptanceId })
|
||||||
|
},
|
||||||
// 获得验收经费列表
|
|
||||||
getFundsListByAcceptanceId: async (acceptanceId) => {
|
// ==================== 子表(验收详细信息) ====================
|
||||||
return await request.get({ url: `/acceptance/main/funds/list-by-acceptance-id?acceptanceId=` + acceptanceId })
|
|
||||||
},
|
// 获得验收详细信息
|
||||||
}
|
getInfoByAcceptanceId: async (acceptanceId) => {
|
||||||
|
return await request.get({ url: `/acceptance/main/info/get-by-acceptance-id?acceptanceId=` + acceptanceId })
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,9 +108,9 @@ export const MainApi = {
|
||||||
return await request.get({ url: `/apply/main/funds/list-by-apply-id?applyId=` + applyId })
|
return await request.get({ url: `/apply/main/funds/list-by-apply-id?applyId=` + applyId })
|
||||||
},
|
},
|
||||||
getRecordList: async (params: any) => {
|
getRecordList: async (params: any) => {
|
||||||
return await request.get({ url: `/apply/main/aduit/records?itmeId=` + params })
|
return await request.get({ url: `/apply/main/audit/records?itemId=` + params })
|
||||||
},
|
},
|
||||||
saveRecordList: async (data: any) => {
|
saveRecordList: async (data: any) => {
|
||||||
return await request.post({ url: `/apply/main/aduit`, data })
|
return await request.post({ url: `/apply/main/audit`, data })
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 验收主 VO
|
||||||
|
export interface MainVO {
|
||||||
|
id: number // id
|
||||||
|
contractId: string // 合同主键ID
|
||||||
|
code: string // 课题编号
|
||||||
|
year: string // 年度
|
||||||
|
name: string // 课题名称
|
||||||
|
beginDate: string // 开始时间
|
||||||
|
endDate: string // 结束时间
|
||||||
|
competentDeptId: string // 主管部门ID
|
||||||
|
competentDeptName: string // 主管部门
|
||||||
|
managerId: string // 主管工程师ID
|
||||||
|
managerName: string // 主管工程师
|
||||||
|
maintenanceUnitName: string // 维护单位名称
|
||||||
|
maintenanceUnitId: string // 维护单位ID
|
||||||
|
undertakingUnitName: string // 承担单位名称
|
||||||
|
undertakingUnitId: string // 承担单位ID
|
||||||
|
reviewUnitName: string // 审核单位名称
|
||||||
|
reviewUnitId: string // 审核单位ID
|
||||||
|
state: string // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验收主 API
|
||||||
|
export const MainApi = {
|
||||||
|
// 查询验收主分页
|
||||||
|
getMainPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/acceptance/main/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询验收主详情
|
||||||
|
getMain: async (id: number) => {
|
||||||
|
return await request.get({ url: `/acceptance/main/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增验收主
|
||||||
|
createMain: async (data: MainVO) => {
|
||||||
|
return await request.post({ url: `/acceptance/main/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改验收主
|
||||||
|
updateMain: async (data: MainVO) => {
|
||||||
|
return await request.put({ url: `/acceptance/main/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除验收主
|
||||||
|
deleteMain: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/acceptance/main/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出验收主 Excel
|
||||||
|
exportMain: async (params) => {
|
||||||
|
return await request.download({ url: `/acceptance/main/export-excel`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// ==================== 子表(验收经费) ====================
|
||||||
|
|
||||||
|
// 获得验收经费列表
|
||||||
|
getFundsListByAcceptanceId: async (acceptanceId) => {
|
||||||
|
return await request.get({ url: `/acceptance/main/funds/list-by-acceptance-id?acceptanceId=` + acceptanceId })
|
||||||
|
},
|
||||||
|
|
||||||
|
// ==================== 子表(验收详细信息) ====================
|
||||||
|
|
||||||
|
// 获得验收详细信息
|
||||||
|
getInfoByAcceptanceId: async (acceptanceId) => {
|
||||||
|
return await request.get({ url: `/acceptance/main/info/get-by-acceptance-id?acceptanceId=` + acceptanceId })
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,50 +1,53 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 变更主 VO
|
// 变更主 VO
|
||||||
export interface MainVO {
|
export interface MainVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
contractId: string // 合同ID
|
contractId: number // 合同ID
|
||||||
changeType: string // 变更类型
|
changeType: string // 变更类型
|
||||||
changeContent: string // 变更内容
|
changeContent: string // 变更内容
|
||||||
competentDeptId: string // 主管部门ID
|
competentDeptId: string // 主管部门ID
|
||||||
competentDeptName: string // 主管部门
|
competentDeptName: string // 主管部门
|
||||||
managerId: string // 主管工程师ID
|
managerId: string // 主管工程师ID
|
||||||
managerName: string // 主管工程师
|
managerName: string // 主管工程师
|
||||||
createdBy: string // 创建人
|
maintenanceUnitName: string // 维护单位名称
|
||||||
createdTime: Date // 创建时间
|
maintenanceUnitId: string // 维护单位ID
|
||||||
updatedBy: string // 更新人
|
undertakingUnitName: string // 承担单位名称
|
||||||
updatedTime: Date // 更新时间
|
undertakingUnitId: string // 承担单位ID
|
||||||
}
|
reviewUnitName: string // 审核单位名称
|
||||||
|
reviewUnitId: string // 审核单位ID
|
||||||
// 变更主 API
|
state: string // 状态
|
||||||
export const MainApi = {
|
}
|
||||||
// 查询变更主分页
|
|
||||||
getMainPage: async (params: any) => {
|
// 变更主 API
|
||||||
return await request.get({ url: `/change/main/page`, params })
|
export const MainApi = {
|
||||||
},
|
// 查询变更主分页
|
||||||
|
getMainPage: async (params: any) => {
|
||||||
// 查询变更主详情
|
return await request.get({ url: `/change/main/page`, params })
|
||||||
getMain: async (id: number) => {
|
},
|
||||||
return await request.get({ url: `/change/main/get?id=` + id })
|
|
||||||
},
|
// 查询变更主详情
|
||||||
|
getMain: async (id: number) => {
|
||||||
// 新增变更主
|
return await request.get({ url: `/change/main/get?id=` + id })
|
||||||
createMain: async (data: MainVO) => {
|
},
|
||||||
return await request.post({ url: `/change/main/create`, data })
|
|
||||||
},
|
// 新增变更主
|
||||||
|
createMain: async (data: MainVO) => {
|
||||||
// 修改变更主
|
return await request.post({ url: `/change/main/create`, data })
|
||||||
updateMain: async (data: MainVO) => {
|
},
|
||||||
return await request.put({ url: `/change/main/update`, data })
|
|
||||||
},
|
// 修改变更主
|
||||||
|
updateMain: async (data: MainVO) => {
|
||||||
// 删除变更主
|
return await request.put({ url: `/change/main/update`, data })
|
||||||
deleteMain: async (id: number) => {
|
},
|
||||||
return await request.delete({ url: `/change/main/delete?id=` + id })
|
|
||||||
},
|
// 删除变更主
|
||||||
|
deleteMain: async (id: number) => {
|
||||||
// 导出变更主 Excel
|
return await request.delete({ url: `/change/main/delete?id=` + id })
|
||||||
exportMain: async (params) => {
|
},
|
||||||
return await request.download({ url: `/change/main/export-excel`, params })
|
|
||||||
},
|
// 导出变更主 Excel
|
||||||
}
|
exportMain: async (params) => {
|
||||||
|
return await request.download({ url: `/change/main/export-excel`, params })
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,107 +1,107 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 合同(任务书)信息主 VO
|
// 合同(任务书)信息主 VO
|
||||||
export interface MainVO {
|
export interface MainVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
code: string // 合同编号
|
code: string // 合同编号
|
||||||
name: string // 任务名称
|
name: string // 任务名称
|
||||||
technicalField: string // 所属技术领域
|
technicalField: string // 所属技术领域
|
||||||
planId: string // 计划类型Id
|
planId: string // 计划类型Id
|
||||||
planName: string // 计划类型名称
|
planName: string // 计划类型名称
|
||||||
year: string // 年度
|
year: string // 年度
|
||||||
beginDate: string // 开始时间
|
beginDate: string // 开始时间
|
||||||
endData: string // 结束时间
|
endDate: string // 结束时间
|
||||||
directorId: string // 负责人Id
|
directorId: string // 负责人Id
|
||||||
director: string // 负责人姓名
|
director: string // 负责人姓名
|
||||||
gender: string // 负责人性别
|
gender: string // 负责人性别
|
||||||
age: string // 年龄
|
age: string // 年龄
|
||||||
education: string // 学历
|
education: string // 学历
|
||||||
major: string // 所学专业
|
major: string // 所学专业
|
||||||
engagMajor: string // 从事专业
|
engagMajor: string // 从事专业
|
||||||
position: string // 职务(职称)
|
position: string // 职务(职称)
|
||||||
phoneNo: string // 电话
|
phoneNo: string // 电话
|
||||||
email: string // 邮箱
|
email: string // 邮箱
|
||||||
fax: string // 传真
|
fax: string // 传真
|
||||||
postalCode: string // 邮编
|
postalCode: string // 邮编
|
||||||
address: string // 通讯地址
|
address: string // 通讯地址
|
||||||
achievement: string // 主要业绩
|
achievement: string // 主要业绩
|
||||||
competentDeptId: string // 主管部门ID
|
competentDeptId: string // 主管部门ID
|
||||||
competentDeptName: string // 主管部门
|
competentDeptName: string // 主管部门
|
||||||
managerId: string // 主管工程师ID
|
managerId: string // 主管工程师ID
|
||||||
managerName: string // 主管工程师
|
managerName: string // 主管工程师
|
||||||
}
|
maintenanceUnitName: string // 维护单位名称
|
||||||
|
maintenanceUnitId: string // 维护单位ID
|
||||||
// 合同(任务书)信息主 API
|
undertakingUnitName: string // 承担单位名称
|
||||||
export const MainApi = {
|
undertakingUnitId: string // 承担单位ID
|
||||||
// 查询合同(任务书)信息主分页
|
reviewUnitName: string // 审核单位名称
|
||||||
getMainPage: async (params: any) => {
|
reviewUnitId: string // 审核单位ID
|
||||||
return await request.get({ url: `/contract/main/page`, params })
|
state: string // 状态
|
||||||
},
|
}
|
||||||
|
|
||||||
// 查询合同(任务书)信息主详情
|
// 合同(任务书)信息主 API
|
||||||
getMain: async (id: number) => {
|
export const MainApi = {
|
||||||
return await request.get({ url: `/contract/main/get?id=` + id })
|
// 查询合同(任务书)信息主分页
|
||||||
},
|
getMainPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/contract/main/page`, params })
|
||||||
// 新增合同(任务书)信息主
|
},
|
||||||
createMain: async (data: MainVO) => {
|
|
||||||
return await request.post({ url: `/contract/main/create`, data })
|
// 查询合同(任务书)信息主详情
|
||||||
},
|
getMain: async (id: number) => {
|
||||||
|
return await request.get({ url: `/contract/main/get?id=` + id })
|
||||||
// 修改合同(任务书)信息主
|
},
|
||||||
updateMain: async (data: MainVO) => {
|
|
||||||
return await request.put({ url: `/contract/main/update`, data })
|
// 新增合同(任务书)信息主
|
||||||
},
|
createMain: async (data: MainVO) => {
|
||||||
|
return await request.post({ url: `/contract/main/create`, data })
|
||||||
// 删除合同(任务书)信息主
|
},
|
||||||
deleteMain: async (id: number) => {
|
|
||||||
return await request.delete({ url: `/contract/main/delete?id=` + id })
|
// 修改合同(任务书)信息主
|
||||||
},
|
updateMain: async (data: MainVO) => {
|
||||||
|
return await request.put({ url: `/contract/main/update`, data })
|
||||||
// 导出合同(任务书)信息主 Excel
|
},
|
||||||
exportMain: async (params) => {
|
|
||||||
return await request.download({ url: `/contract/main/export-excel`, params })
|
// 删除合同(任务书)信息主
|
||||||
},
|
deleteMain: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/contract/main/delete?id=` + id })
|
||||||
// ==================== 子表(合同预期主要成果形式、知识产权归属) ====================
|
},
|
||||||
|
|
||||||
// 获得合同预期主要成果形式、知识产权归属列表
|
// 导出合同(任务书)信息主 Excel
|
||||||
getAchieListByContractId: async (contractId) => {
|
exportMain: async (params) => {
|
||||||
return await request.get({ url: `/contract/main/achie/list-by-contract-id?contractId=` + contractId })
|
return await request.download({ url: `/contract/main/export-excel`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(合同经费) ====================
|
// ==================== 子表(合同经费) ====================
|
||||||
|
|
||||||
// 获得合同经费列表
|
// 获得合同经费列表
|
||||||
getFundsListByContractId: async (contractId) => {
|
getFundsListByContractId: async (contractId) => {
|
||||||
return await request.get({ url: `/contract/main/funds/list-by-contract-id?contractId=` + contractId })
|
return await request.get({ url: `/contract/main/funds/list-by-contract-id?contractId=` + contractId })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(合同详细信息) ====================
|
// ==================== 子表(合同详细信息) ====================
|
||||||
|
|
||||||
// 获得合同详细信息
|
// 获得合同详细信息
|
||||||
getInfoByContractId: async (contractId) => {
|
getInfoByContractId: async (contractId) => {
|
||||||
return await request.get({ url: `/contract/main/info/get-by-contract-id?contractId=` + contractId })
|
return await request.get({ url: `/contract/main/info/get-by-contract-id?contractId=` + contractId })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(合同主要参加人员) ====================
|
// ==================== 子表(合同主要参加人员) ====================
|
||||||
|
|
||||||
// 获得合同主要参加人员列表
|
// 获得合同主要参加人员列表
|
||||||
getParticipantListByContractId: async (contractId) => {
|
getParticipantListByContractId: async (contractId) => {
|
||||||
return await request.get({ url: `/contract/main/participant/list-by-contract-id?contractId=` + contractId })
|
return await request.get({ url: `/contract/main/participant/list-by-contract-id?contractId=` + contractId })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(合同实施计划) ====================
|
// ==================== 子表(合同实施计划) ====================
|
||||||
|
|
||||||
// 获得合同实施计划列表
|
// 获得合同实施计划列表
|
||||||
getPlanListByContractId: async (contractId) => {
|
getPlanListByContractId: async (contractId) => {
|
||||||
return await request.get({ url: `/contract/main/plan/list-by-contract-id?contractId=` + contractId })
|
return await request.get({ url: `/contract/main/plan/list-by-contract-id?contractId=` + contractId })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(合同单位信息) ====================
|
// ==================== 子表(合同单位信息) ====================
|
||||||
|
|
||||||
// 获得合同单位信息列表
|
// 获得合同单位信息列表
|
||||||
getUnitsListByContractId: async (contractId) => {
|
getUnitsListByContractId: async (contractId) => {
|
||||||
return await request.get({ url: `/contract/main/units/list-by-contract-id?contractId=` + contractId })
|
return await request.get({ url: `/contract/main/units/list-by-contract-id?contractId=` + contractId })
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,59 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 专利信息 VO
|
// 专利信息 VO
|
||||||
export interface MainVO {
|
export interface MainVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
contractId: string // 合同id
|
contractId: number // 合同id
|
||||||
contractCode: string // 合同编号
|
contractCode: string // 合同编号
|
||||||
name: string // 专利名称
|
name: string // 专利名称
|
||||||
number: string // 专利号
|
number: string // 专利号
|
||||||
inventorName: string // 发明人姓名
|
inventorName: string // 发明人姓名
|
||||||
filingDate: string // 申请日期
|
filingDate: string // 申请日期
|
||||||
publicationDate: string // 公开日期
|
publicationDate: string // 公开日期
|
||||||
grantDate: string // 授权日期
|
grantDate: string // 授权日期
|
||||||
patentType: string // 专利类型(如发明、实用新型、外观设计等)
|
patentType: string // 专利类型(如发明、实用新型、外观设计等)
|
||||||
patenteeName: string // 专利权人姓名或公司名称
|
patenteeName: string // 专利权人姓名或公司名称
|
||||||
relatedTechArea: string // 相关技术领域
|
relatedTechArea: string // 相关技术领域
|
||||||
technicalEffect: string // 技术效果
|
technicalEffect: string // 技术效果
|
||||||
legalStatus: string // 法律状态(如审查中、已授权、无效等)
|
legalStatus: string // 法律状态(如审查中、已授权、无效等)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 专利信息 API
|
// 专利信息 API
|
||||||
export const MainApi = {
|
export const MainApi = {
|
||||||
// 查询专利信息分页
|
// 查询专利信息分页
|
||||||
getMainPage: async (params: any) => {
|
getMainPage: async (params: any) => {
|
||||||
return await request.get({ url: `/patents/main/page`, params })
|
return await request.get({ url: `/patents/main/page`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询专利信息详情
|
// 查询专利信息详情
|
||||||
getMain: async (id: number) => {
|
getMain: async (id: number) => {
|
||||||
return await request.get({ url: `/patents/main/get?id=` + id })
|
return await request.get({ url: `/patents/main/get?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 新增专利信息
|
// 新增专利信息
|
||||||
createMain: async (data: MainVO) => {
|
createMain: async (data: MainVO) => {
|
||||||
return await request.post({ url: `/patents/main/create`, data })
|
return await request.post({ url: `/patents/main/create`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 修改专利信息
|
// 修改专利信息
|
||||||
updateMain: async (data: MainVO) => {
|
updateMain: async (data: MainVO) => {
|
||||||
return await request.put({ url: `/patents/main/update`, data })
|
return await request.put({ url: `/patents/main/update`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 删除专利信息
|
// 删除专利信息
|
||||||
deleteMain: async (id: number) => {
|
deleteMain: async (id: number) => {
|
||||||
return await request.delete({ url: `/patents/main/delete?id=` + id })
|
return await request.delete({ url: `/patents/main/delete?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出专利信息 Excel
|
// 导出专利信息 Excel
|
||||||
exportMain: async (params) => {
|
exportMain: async (params) => {
|
||||||
return await request.download({ url: `/patents/main/export-excel`, params })
|
return await request.download({ url: `/patents/main/export-excel`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(专利信息) ====================
|
// ==================== 子表(专利信息) ====================
|
||||||
|
|
||||||
// 获得专利信息列表
|
// 获得专利信息列表
|
||||||
getInfoListByPatentsId: async (patentsId) => {
|
getInfoListByPatentsId: async (patentsId) => {
|
||||||
return await request.get({ url: `/patents/main/info/list-by-patents-id?patentsId=` + patentsId })
|
return await request.get({ url: `/patents/main/info/list-by-patents-id?patentsId=` + patentsId })
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,60 +1,63 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 执行主 VO
|
// 执行主 VO
|
||||||
export interface MainVO {
|
export interface MainVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
contractId: string // 合同主键Id
|
contractId: number // 合同主键Id
|
||||||
contractCode: string // 合同编号
|
contractCode: string // 合同编号
|
||||||
section: string // 执行区段
|
section: string // 执行区段
|
||||||
progress: string // 进展情况(正常,拖延,停顿)
|
progress: string // 进展情况(正常,拖延,停顿)
|
||||||
directorId: string // 负责人Id
|
directorId: string // 负责人Id
|
||||||
director: string // 负责人姓名
|
director: string // 负责人姓名
|
||||||
competentDeptId: string // 主管部门ID
|
competentDeptId: string // 主管部门ID
|
||||||
competentDeptName: string // 主管部门
|
competentDeptName: string // 主管部门
|
||||||
managerId: string // 主管工程师ID
|
managerId: string // 主管工程师ID
|
||||||
managerName: string // 主管工程师
|
managerName: string // 主管工程师
|
||||||
createdBy: string // 创建人
|
}
|
||||||
createdTime: Date // 创建时间
|
|
||||||
updatedBy: string // 更新人
|
// 执行主 API
|
||||||
updatedTime: Date // 更新时间
|
export const MainApi = {
|
||||||
}
|
// 查询执行主分页
|
||||||
|
getMainPage: async (params: any) => {
|
||||||
// 执行主 API
|
return await request.get({ url: `/process/main/page`, params })
|
||||||
export const MainApi = {
|
},
|
||||||
// 查询执行主分页
|
|
||||||
getMainPage: async (params: any) => {
|
// 查询执行主详情
|
||||||
return await request.get({ url: `/process/main/page`, params })
|
getMain: async (id: number) => {
|
||||||
},
|
return await request.get({ url: `/process/main/get?id=` + id })
|
||||||
|
},
|
||||||
// 查询执行主详情
|
|
||||||
getMain: async (id: number) => {
|
// 新增执行主
|
||||||
return await request.get({ url: `/process/main/get?id=` + id })
|
createMain: async (data: MainVO) => {
|
||||||
},
|
return await request.post({ url: `/process/main/create`, data })
|
||||||
|
},
|
||||||
// 新增执行主
|
|
||||||
createMain: async (data: MainVO) => {
|
// 修改执行主
|
||||||
return await request.post({ url: `/process/main/create`, data })
|
updateMain: async (data: MainVO) => {
|
||||||
},
|
return await request.put({ url: `/process/main/update`, data })
|
||||||
|
},
|
||||||
// 修改执行主
|
|
||||||
updateMain: async (data: MainVO) => {
|
// 删除执行主
|
||||||
return await request.put({ url: `/process/main/update`, data })
|
deleteMain: async (id: number) => {
|
||||||
},
|
return await request.delete({ url: `/process/main/delete?id=` + id })
|
||||||
|
},
|
||||||
// 删除执行主
|
|
||||||
deleteMain: async (id: number) => {
|
// 导出执行主 Excel
|
||||||
return await request.delete({ url: `/process/main/delete?id=` + id })
|
exportMain: async (params) => {
|
||||||
},
|
return await request.download({ url: `/process/main/export-excel`, params })
|
||||||
|
},
|
||||||
// 导出执行主 Excel
|
|
||||||
exportMain: async (params) => {
|
// ==================== 子表(执行经费情况) ====================
|
||||||
return await request.download({ url: `/process/main/export-excel`, params })
|
|
||||||
},
|
// 获得执行经费情况列表
|
||||||
|
getFundsListByProcessId: async (processId) => {
|
||||||
// ==================== 子表(执行详细信息) ====================
|
return await request.get({ url: `/process/main/funds/list-by-process-id?processId=` + processId })
|
||||||
|
},
|
||||||
// 获得执行详细信息
|
|
||||||
getInfoByProcessId: async (processId) => {
|
// ==================== 子表(执行详细信息) ====================
|
||||||
return await request.get({ url: `/process/main/info/get-by-process-id?processId=` + processId })
|
|
||||||
},
|
// 获得执行详细信息
|
||||||
}
|
getInfoByProcessId: async (processId) => {
|
||||||
|
return await request.get({ url: `/process/main/info/get-by-process-id?processId=` + processId })
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,49 +1,49 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// 公共实验室信 VO
|
// 公共实验室信 VO
|
||||||
export interface LabInfoVO {
|
export interface LabInfoVO {
|
||||||
id: string // id
|
id: number // id
|
||||||
userName: string // 用户姓名
|
userName: string // 用户姓名
|
||||||
userContact: string // 用户联系方式
|
userContact: string // 用户联系方式
|
||||||
reservationDate: string // 预约日期
|
reservationDate: string // 预约日期
|
||||||
labName: string // 实验室名称
|
labName: string // 实验室名称
|
||||||
reservationDuration: string // 预约时长(小时)
|
reservationDuration: string // 预约时长(小时)
|
||||||
status: string // 预约状态(如待审核、已确认、已拒绝等)
|
status: string // 预约状态(如待审核、已确认、已拒绝等)
|
||||||
reviewerId: string // 审核人ID
|
reviewerId: string // 审核人ID
|
||||||
reviewerName: string // 审核人姓名
|
reviewerName: string // 审核人姓名
|
||||||
reviewComments: string // 审核意见(如有)
|
reviewComments: string // 审核意见(如有)
|
||||||
reservationNotes: string // 预约备注(如有)
|
reservationNotes: string // 预约备注(如有)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 公共实验室信 API
|
// 公共实验室信 API
|
||||||
export const LabInfoApi = {
|
export const LabInfoApi = {
|
||||||
// 查询公共实验室信分页
|
// 查询公共实验室信分页
|
||||||
getLabInfoPage: async (params: any) => {
|
getLabInfoPage: async (params: any) => {
|
||||||
return await request.get({ url: `/publicLab/lab-info/page`, params })
|
return await request.get({ url: `/publicLab/lab-info/page`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询公共实验室信详情
|
// 查询公共实验室信详情
|
||||||
getLabInfo: async (id: number) => {
|
getLabInfo: async (id: number) => {
|
||||||
return await request.get({ url: `/publicLab/lab-info/get?id=` + id })
|
return await request.get({ url: `/publicLab/lab-info/get?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 新增公共实验室信
|
// 新增公共实验室信
|
||||||
createLabInfo: async (data: LabInfoVO) => {
|
createLabInfo: async (data: LabInfoVO) => {
|
||||||
return await request.post({ url: `/publicLab/lab-info/create`, data })
|
return await request.post({ url: `/publicLab/lab-info/create`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 修改公共实验室信
|
// 修改公共实验室信
|
||||||
updateLabInfo: async (data: LabInfoVO) => {
|
updateLabInfo: async (data: LabInfoVO) => {
|
||||||
return await request.put({ url: `/publicLab/lab-info/update`, data })
|
return await request.put({ url: `/publicLab/lab-info/update`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 删除公共实验室信
|
// 删除公共实验室信
|
||||||
deleteLabInfo: async (id: number) => {
|
deleteLabInfo: async (id: number) => {
|
||||||
return await request.delete({ url: `/publicLab/lab-info/delete?id=` + id })
|
return await request.delete({ url: `/publicLab/lab-info/delete?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出公共实验室信 Excel
|
// 导出公共实验室信 Excel
|
||||||
exportLabInfo: async (params) => {
|
exportLabInfo: async (params) => {
|
||||||
return await request.download({ url: `/publicLab/lab-info/export-excel`, params })
|
return await request.download({ url: `/publicLab/lab-info/export-excel`, params })
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,6 @@ const title = computed(() => appStore.getTitle)
|
||||||
:class="prefixCls"
|
:class="prefixCls"
|
||||||
class="h-[var(--app-footer-height)] bg-[var(--app-content-bg-color)] text-center leading-[var(--app-footer-height)] text-[var(--el-text-color-placeholder)] dark:bg-[var(--el-bg-color)]"
|
class="h-[var(--app-footer-height)] bg-[var(--app-content-bg-color)] text-center leading-[var(--app-footer-height)] text-[var(--el-text-color-placeholder)] dark:bg-[var(--el-bg-color)]"
|
||||||
>
|
>
|
||||||
<span class="text-14px">Copyright ©2022-{{ title }}</span>
|
<span class="text-14px">Copyright ©2024-{{ title }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
<!-- 右边的登录界面 -->
|
<!-- 右边的登录界面 -->
|
||||||
<Transition appear enter-active-class="animate__animated animate__bounceInRight">
|
<Transition appear enter-active-class="animate__animated animate__bounceInRight">
|
||||||
<div
|
<div
|
||||||
class="m-auto h-full w-[100%] flex items-center at-2xl:max-w-500px at-lg:max-w-500px at-md:max-w-500px at-xl:max-w-500px"
|
class="fm-auto h-full w-[100%] flex items-center at-2xl:max-w-500px at-lg:max-w-500px at-md:max-w-500px at-xl:max-w-500px"
|
||||||
>
|
>
|
||||||
<!-- 账号登录 -->
|
<!-- 账号登录 -->
|
||||||
<LoginForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
|
<LoginForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ const loginData = reactive({
|
||||||
captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE !== 'false',
|
captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE !== 'false',
|
||||||
tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE !== 'false',
|
tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE !== 'false',
|
||||||
loginForm: {
|
loginForm: {
|
||||||
tenantName: '芋道源码',
|
tenantName: '金隅集团',
|
||||||
username: 'admin',
|
username: 'admin',
|
||||||
password: 'admin123',
|
password: 'admin123',
|
||||||
captchaVerification: '',
|
captchaVerification: '',
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@
|
||||||
placeholder="选择开始时间"
|
placeholder="选择开始时间"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束时间" prop="endData">
|
<el-form-item label="结束时间" prop="endDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.endData"
|
v-model="formData.endDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="x"
|
||||||
placeholder="选择结束时间"
|
placeholder="选择结束时间"
|
||||||
|
|
@ -47,37 +47,36 @@
|
||||||
<el-form-item label="主管工程师" prop="managerName">
|
<el-form-item label="主管工程师" prop="managerName">
|
||||||
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建人" prop="createdBy">
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
|
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建时间" prop="createdTime">
|
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
|
||||||
<el-date-picker
|
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
|
||||||
v-model="formData.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="更新人" prop="updatedBy">
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
|
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="更新时间" prop="updatedTime">
|
<el-form-item label="承担单位ID" prop="undertakingUnitId">
|
||||||
<el-date-picker
|
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
|
||||||
v-model="formData.updatedTime"
|
</el-form-item>
|
||||||
type="date"
|
<el-form-item label="审核单位名称" prop="reviewUnitName">
|
||||||
value-format="x"
|
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
|
||||||
placeholder="选择更新时间"
|
</el-form-item>
|
||||||
/>
|
<el-form-item label="审核单位ID" prop="reviewUnitId">
|
||||||
|
<el-input v-model="formData.reviewUnitId" placeholder="请输入审核单位ID" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="state">
|
||||||
|
<el-input v-model="formData.state" placeholder="请输入状态" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- 子表的表单 -->
|
<!-- 子表的表单 -->
|
||||||
<el-tabs v-model="subTabsName">
|
<el-tabs v-model="subTabsName">
|
||||||
<el-tab-pane label="验收详细信息" name="info">
|
|
||||||
<InfoForm ref="infoFormRef" :acceptance-id="formData.id" />
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="验收经费" name="funds">
|
<el-tab-pane label="验收经费" name="funds">
|
||||||
<FundsForm ref="fundsFormRef" :acceptance-id="formData.id" />
|
<FundsForm ref="fundsFormRef" :acceptance-id="formData.id" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="验收详细信息" name="info">
|
||||||
|
<InfoForm ref="infoFormRef" :acceptance-id="formData.id" />
|
||||||
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||||
|
|
@ -87,8 +86,8 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { MainApi, MainVO } from '@/api/acceptance/acceptance'
|
import { MainApi, MainVO } from '@/api/acceptance/acceptance'
|
||||||
import InfoForm from './components/InfoForm.vue'
|
|
||||||
import FundsForm from './components/FundsForm.vue'
|
import FundsForm from './components/FundsForm.vue'
|
||||||
|
import InfoForm from './components/InfoForm.vue'
|
||||||
|
|
||||||
/** 验收主 表单 */
|
/** 验收主 表单 */
|
||||||
defineOptions({ name: 'MainForm' })
|
defineOptions({ name: 'MainForm' })
|
||||||
|
|
@ -107,24 +106,27 @@ const formData = ref({
|
||||||
year: undefined,
|
year: undefined,
|
||||||
name: undefined,
|
name: undefined,
|
||||||
beginDate: undefined,
|
beginDate: undefined,
|
||||||
endData: undefined,
|
endDate: undefined,
|
||||||
competentDeptId: undefined,
|
competentDeptId: undefined,
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
maintenanceUnitName: undefined,
|
||||||
createdTime: undefined,
|
maintenanceUnitId: undefined,
|
||||||
updatedBy: undefined,
|
undertakingUnitName: undefined,
|
||||||
updatedTime: undefined,
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
/** 子表的表单 */
|
/** 子表的表单 */
|
||||||
const subTabsName = ref('info')
|
const subTabsName = ref('funds')
|
||||||
const infoFormRef = ref()
|
|
||||||
const fundsFormRef = ref()
|
const fundsFormRef = ref()
|
||||||
|
const infoFormRef = ref()
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (type: string, id?: number) => {
|
const open = async (type: string, id?: number) => {
|
||||||
|
|
@ -150,25 +152,25 @@ const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
await formRef.value.validate()
|
await formRef.value.validate()
|
||||||
// 校验子表单
|
// 校验子表单
|
||||||
try {
|
|
||||||
await infoFormRef.value.validate()
|
|
||||||
} catch (e) {
|
|
||||||
subTabsName.value = 'info'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
await fundsFormRef.value.validate()
|
await fundsFormRef.value.validate()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
subTabsName.value = 'funds'
|
subTabsName.value = 'funds'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
await infoFormRef.value.validate()
|
||||||
|
} catch (e) {
|
||||||
|
subTabsName.value = 'info'
|
||||||
|
return
|
||||||
|
}
|
||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as MainVO
|
const data = formData.value as unknown as MainVO
|
||||||
// 拼接子表的数据
|
// 拼接子表的数据
|
||||||
data.info = infoFormRef.value.getData()
|
|
||||||
data.fundss = fundsFormRef.value.getData()
|
data.fundss = fundsFormRef.value.getData()
|
||||||
|
data.info = infoFormRef.value.getData()
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await MainApi.createMain(data)
|
await MainApi.createMain(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
|
|
@ -193,16 +195,19 @@ const resetForm = () => {
|
||||||
year: undefined,
|
year: undefined,
|
||||||
name: undefined,
|
name: undefined,
|
||||||
beginDate: undefined,
|
beginDate: undefined,
|
||||||
endData: undefined,
|
endDate: undefined,
|
||||||
competentDeptId: undefined,
|
competentDeptId: undefined,
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
maintenanceUnitName: undefined,
|
||||||
createdTime: undefined,
|
maintenanceUnitId: undefined,
|
||||||
updatedBy: undefined,
|
undertakingUnitName: undefined,
|
||||||
updatedTime: undefined,
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
</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}.secondaryCategory`" :rules="formRules.secondaryCategory" class="mb-0px!">
|
<el-form-item :prop="`${$index}.secondaryCategory`" :rules="formRules.secondaryCategory" class="mb-0px!">
|
||||||
<el-input v-model="row.secondaryCategory" placeholder="请输入经费科目" />
|
<el-input v-model="row.secondaryCategory" placeholder="请输入二级科目" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -51,6 +51,13 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="单位Id" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.unitId`" :rules="formRules.unitId" class="mb-0px!">
|
||||||
|
<el-input v-model="row.unitId" placeholder="请输入单位Id" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</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}.unitName`" :rules="formRules.unitName" class="mb-0px!">
|
<el-form-item :prop="`${$index}.unitName`" :rules="formRules.unitName" class="mb-0px!">
|
||||||
|
|
@ -112,6 +119,7 @@ const handleAdd = () => {
|
||||||
amount: undefined,
|
amount: undefined,
|
||||||
fiscalYear: undefined,
|
fiscalYear: undefined,
|
||||||
totalAmount: undefined,
|
totalAmount: undefined,
|
||||||
|
unitId: undefined,
|
||||||
unitName: undefined,
|
unitName: undefined,
|
||||||
}
|
}
|
||||||
row.acceptanceId = props.acceptanceId
|
row.acceptanceId = props.acceptanceId
|
||||||
|
|
@ -134,4 +142,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,120 +0,0 @@
|
||||||
<template>
|
|
||||||
<!-- 列表 -->
|
|
||||||
<ContentWrap>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
@click="openForm('create')"
|
|
||||||
v-hasPermi="['acceptance:main:create']"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
|
||||||
</el-button>
|
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
|
||||||
<el-table-column label="主键ID" align="center" prop="id" />
|
|
||||||
<el-table-column label="经费科目" align="center" prop="secondaryCategory" />
|
|
||||||
<el-table-column label="经费金额" align="center" prop="amount" />
|
|
||||||
<el-table-column label="经费年度" align="center" prop="fiscalYear" />
|
|
||||||
<el-table-column label="总金额" align="center" prop="totalAmount" />
|
|
||||||
<el-table-column label="单位名称" align="center" prop="unitName" />
|
|
||||||
<el-table-column label="操作" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="openForm('update', scope.row.id)"
|
|
||||||
v-hasPermi="['acceptance:main:update']"
|
|
||||||
>
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="danger"
|
|
||||||
@click="handleDelete(scope.row.id)"
|
|
||||||
v-hasPermi="['acceptance:main:delete']"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<!-- 分页 -->
|
|
||||||
<Pagination
|
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNo"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
|
||||||
@pagination="getList"
|
|
||||||
/>
|
|
||||||
</ContentWrap>
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
|
||||||
<FundsForm ref="formRef" @success="getList" />
|
|
||||||
</template>
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { MainApi } from '@/api/acceptance/acceptance'
|
|
||||||
import FundsForm from './FundsForm.vue'
|
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
|
||||||
const message = useMessage() // 消息弹窗
|
|
||||||
|
|
||||||
const props = defineProps<{
|
|
||||||
acceptanceId: undefined // 验收ID(主表的关联字段)
|
|
||||||
}>()
|
|
||||||
const loading = ref(false) // 列表的加载中
|
|
||||||
const list = ref([]) // 列表的数据
|
|
||||||
const total = ref(0) // 列表的总页数
|
|
||||||
const queryParams = reactive({
|
|
||||||
pageNo: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
acceptanceId: undefined
|
|
||||||
})
|
|
||||||
|
|
||||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
|
||||||
watch(
|
|
||||||
() => props.acceptanceId,
|
|
||||||
(val) => {
|
|
||||||
queryParams.acceptanceId = val
|
|
||||||
handleQuery()
|
|
||||||
},
|
|
||||||
{ immediate: false }
|
|
||||||
)
|
|
||||||
|
|
||||||
/** 查询列表 */
|
|
||||||
const getList = async () => {
|
|
||||||
loading.value = true
|
|
||||||
try {
|
|
||||||
const data = await MainApi.getFundsPage(queryParams)
|
|
||||||
list.value = data.list
|
|
||||||
total.value = data.total
|
|
||||||
} finally {
|
|
||||||
loading.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
|
||||||
const handleQuery = () => {
|
|
||||||
queryParams.pageNo = 1
|
|
||||||
getList()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
|
||||||
const formRef = ref()
|
|
||||||
const openForm = (type: string, id?: number) => {
|
|
||||||
if (!props.acceptanceId) {
|
|
||||||
message.error('请选择一个验收主')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
formRef.value.open(type, id, props.acceptanceId)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
|
||||||
const handleDelete = async (id: number) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.delConfirm()
|
|
||||||
// 发起删除
|
|
||||||
await MainApi.deleteFunds(id)
|
|
||||||
message.success(t('common.delSuccess'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
||||||
<template>
|
|
||||||
<!-- 列表 -->
|
|
||||||
<ContentWrap>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
@click="openForm('create')"
|
|
||||||
v-hasPermi="['acceptance:main:create']"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
|
||||||
</el-button>
|
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
|
||||||
<el-table-column label="id" align="center" prop="id" />
|
|
||||||
<el-table-column label="研究目标、考核指标等完成情况" align="center" prop="researchTarget" />
|
|
||||||
<el-table-column label="主要研究工作" align="center" prop="mainWork" />
|
|
||||||
<el-table-column label="经济、社会与环境效益" align="center" prop="economicBenefits" />
|
|
||||||
<el-table-column label="产业化情况" align="center" prop="industrialize" />
|
|
||||||
<el-table-column label="操作" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="openForm('update', scope.row.id)"
|
|
||||||
v-hasPermi="['acceptance:main:update']"
|
|
||||||
>
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="danger"
|
|
||||||
@click="handleDelete(scope.row.id)"
|
|
||||||
v-hasPermi="['acceptance:main:delete']"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<!-- 分页 -->
|
|
||||||
<Pagination
|
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNo"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
|
||||||
@pagination="getList"
|
|
||||||
/>
|
|
||||||
</ContentWrap>
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
|
||||||
<InfoForm ref="formRef" @success="getList" />
|
|
||||||
</template>
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { MainApi } from '@/api/acceptance/acceptance'
|
|
||||||
import InfoForm from './InfoForm.vue'
|
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
|
||||||
const message = useMessage() // 消息弹窗
|
|
||||||
|
|
||||||
const props = defineProps<{
|
|
||||||
acceptanceId: undefined // 验收ID(主表的关联字段)
|
|
||||||
}>()
|
|
||||||
const loading = ref(false) // 列表的加载中
|
|
||||||
const list = ref([]) // 列表的数据
|
|
||||||
const total = ref(0) // 列表的总页数
|
|
||||||
const queryParams = reactive({
|
|
||||||
pageNo: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
acceptanceId: undefined
|
|
||||||
})
|
|
||||||
|
|
||||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
|
||||||
watch(
|
|
||||||
() => props.acceptanceId,
|
|
||||||
(val) => {
|
|
||||||
queryParams.acceptanceId = val
|
|
||||||
handleQuery()
|
|
||||||
},
|
|
||||||
{ immediate: false }
|
|
||||||
)
|
|
||||||
|
|
||||||
/** 查询列表 */
|
|
||||||
const getList = async () => {
|
|
||||||
loading.value = true
|
|
||||||
try {
|
|
||||||
const data = await MainApi.getInfoPage(queryParams)
|
|
||||||
list.value = data.list
|
|
||||||
total.value = data.total
|
|
||||||
} finally {
|
|
||||||
loading.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
|
||||||
const handleQuery = () => {
|
|
||||||
queryParams.pageNo = 1
|
|
||||||
getList()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
|
||||||
const formRef = ref()
|
|
||||||
const openForm = (type: string, id?: number) => {
|
|
||||||
if (!props.acceptanceId) {
|
|
||||||
message.error('请选择一个验收主')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
formRef.value.open(type, id, props.acceptanceId)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
|
||||||
const handleDelete = async (id: number) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.delConfirm()
|
|
||||||
// 发起删除
|
|
||||||
await MainApi.deleteInfo(id)
|
|
||||||
message.success(t('common.delSuccess'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -35,40 +35,10 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始时间" prop="beginDate">
|
<el-form-item label="状态" prop="state">
|
||||||
<el-date-picker
|
|
||||||
v-model="queryParams.beginDate"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
type="daterange"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="结束时间" prop="endData">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="queryParams.endData"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
type="date"
|
|
||||||
placeholder="选择结束时间"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="主管部门" prop="competentDeptName">
|
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.competentDeptName"
|
v-model="queryParams.state"
|
||||||
placeholder="请输入主管部门"
|
placeholder="请输入状态"
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="主管工程师" prop="managerName">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.managerName"
|
|
||||||
placeholder="请输入主管工程师"
|
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
|
|
@ -102,14 +72,17 @@
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="id" align="center" prop="id" />
|
<el-table-column label="id" align="center" prop="id" />
|
||||||
<el-table-column label="合同主键ID" align="center" prop="contractId" />
|
|
||||||
<el-table-column label="课题编号" align="center" prop="code" />
|
<el-table-column label="课题编号" align="center" prop="code" />
|
||||||
<el-table-column label="年度" align="center" prop="year" />
|
<el-table-column label="年度" align="center" prop="year" />
|
||||||
<el-table-column label="课题名称" align="center" prop="name" />
|
<el-table-column label="课题名称" align="center" prop="name" />
|
||||||
<el-table-column label="开始时间" align="center" prop="beginDate" />
|
<el-table-column label="开始时间" align="center" prop="beginDate" />
|
||||||
<el-table-column label="结束时间" align="center" prop="endData" />
|
<el-table-column label="结束时间" align="center" prop="endDate" />
|
||||||
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
||||||
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
||||||
|
<el-table-column label="维护单位名称" align="center" prop="maintenanceUnitName" />
|
||||||
|
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" />
|
||||||
|
<el-table-column label="审核单位名称" align="center" prop="reviewUnitName" />
|
||||||
|
<el-table-column label="状态" align="center" prop="state" />
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -164,11 +137,7 @@ const queryParams = reactive({
|
||||||
code: undefined,
|
code: undefined,
|
||||||
year: undefined,
|
year: undefined,
|
||||||
name: undefined,
|
name: undefined,
|
||||||
beginDate: [],
|
state: undefined,
|
||||||
endData: undefined,
|
|
||||||
endData: [],
|
|
||||||
competentDeptName: undefined,
|
|
||||||
managerName: undefined,
|
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
@ -235,4 +204,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,38 @@
|
||||||
<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"
|
<fieldset v-for="(item, index) in formData" :key="index">
|
||||||
:rules="formRules"
|
<el-row :gutter="20">
|
||||||
v-loading="formLoading"
|
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||||
label-width="0px"
|
<el-form-item :rules="formRules.fiscalYear" label="经费年度">
|
||||||
:inline-message="true"
|
<el-date-picker v-model="item.fiscalYear" value-format="YYYY-MM-DD" type="date" placeholder="选择经费年度"
|
||||||
>
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||||
|
<el-form-item :rules="formRules.amount" label="经费金额">
|
||||||
|
<el-date-picker v-model="item.amount" value-format="YYYY-MM-DD" type="date" placeholder="请输入经费金额"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||||
|
<el-form-item :rules="formRules.amount" label="经费金额">
|
||||||
|
<el-date-picker v-model="item.amount" value-format="YYYY-MM-DD" type="date" placeholder="请输入经费金额"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</fieldset>
|
||||||
<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 v-for="(item,index) in cloumnList" :key="index" :label="item.title" >
|
<el-table-column v-for="(item, index) in cloumnList" :key="index" :label="item.title">
|
||||||
<template #default="{ row}">
|
<template #default="{ row }">
|
||||||
<el-form-item class="mb-0px!">
|
<el-form-item class="mb-0px!">
|
||||||
<el-input v-model="row[item.key]" :placeholder="'请输入'+row[item.key]"/>
|
<el-input v-model="row[item.key]" :placeholder="'请输入' + row[item.key]" />
|
||||||
</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}.sourceId`" :rules="formRules.sourceId" class="mb-0px!">
|
<el-form-item :prop="`${$index}.sourceId`" :rules="formRules.sourceId" class="mb-0px!">
|
||||||
<el-input v-model="row.sourceId" placeholder="请输入经费来源ID" />
|
<el-input v-model="row.sourceId" placeholder="请输入经费来源ID" />
|
||||||
|
|
@ -117,13 +133,13 @@ const handleAdd = () => {
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
}
|
}
|
||||||
//列表
|
//列表
|
||||||
const cloumnList =ref(
|
const cloumnList = ref(
|
||||||
[{
|
[{
|
||||||
"key":"secondaryCategory",
|
"key": "secondaryCategory",
|
||||||
"title":'科目'
|
"title": '科目'
|
||||||
},{
|
}, {
|
||||||
"key":"2024",
|
"key": "2024",
|
||||||
"title":'2024年'
|
"title": '2024年'
|
||||||
}]
|
}]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,12 @@
|
||||||
<el-form-item label="审核意见:" prop="comment" :rules="{ required: true, trigger: ['blur', 'change'] }">
|
<el-form-item label="审核意见:" prop="comment" :rules="{ required: true, trigger: ['blur', 'change'] }">
|
||||||
<el-input v-model="listenerFieldForm.comment" clearable type="textarea" :rows="6" />
|
<el-input v-model="listenerFieldForm.comment" clearable type="textarea" :rows="6" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="审核状态:">
|
||||||
|
<el-radio-group v-model="listenerFieldForm.status">
|
||||||
|
<el-radio-button label="1">通过</el-radio-button>
|
||||||
|
<el-radio-button label="0">不通过</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button size="small" @click="Visible = false">取 消</el-button>
|
<el-button size="small" @click="Visible = false">取 消</el-button>
|
||||||
|
|
@ -116,15 +121,20 @@
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 审核记录 -->
|
<!-- 审核记录 -->
|
||||||
<el-dialog title="审核" v-model="Visible1" width="600px" append-to-body destroy-on-close>
|
<el-dialog title="审核记录" v-model="Visible1" width="600px" append-to-body destroy-on-close>
|
||||||
<el-table :data="listRecord" :stripe="true" :show-overflow-tooltip="true">
|
<el-timeline style="max-width: 600px">
|
||||||
<!-- <el-table-column label="id" align="center" prop="id" /> -->
|
<el-timeline-item :timestamp="item.createTime" placement="top" v-for="(item,index) in listRecord" :key="index">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-card>
|
||||||
<el-table-column label="审核人名称" align="center" prop="creatorName" />
|
<div class="flex items-center justify-between ">
|
||||||
<el-table-column label="审核意见" align="center" prop="comment" />
|
<h4>{{item.creatorName}}</h4>
|
||||||
<el-table-column label="审核状态" align="center" prop="status" />
|
<span style="color:#409eff" v-if="item.status==1">通过</span>
|
||||||
<el-table-column label="审核时间" align="center" prop="createTime" />
|
<span v-else style="color: #f00000">不通过</span>
|
||||||
</el-table>
|
</div>
|
||||||
|
<p>{{item.comment}}</p>
|
||||||
|
</el-card>
|
||||||
|
</el-timeline-item>
|
||||||
|
|
||||||
|
</el-timeline>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -143,7 +153,7 @@ const Visible1 = ref(false) // 监听器 显示状态
|
||||||
const listenerFieldForm = ref<any>({}) // 监听器 注入字段 详情表单
|
const listenerFieldForm = ref<any>({}) // 监听器 注入字段 详情表单
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const list = ref<MainVO[]>([]) // 列表的数据
|
const list = ref<MainVO[]>([]) // 列表的数据
|
||||||
const listRecord = ref<MainVO[]>([]) // 审核列表的数据
|
const listRecord = ref([]) // 审核列表的数据
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
|
|
@ -234,9 +244,9 @@ const saveListenerFiled = async () => {
|
||||||
if (!validateStatus) return // 验证不通过直接返回
|
if (!validateStatus) return // 验证不通过直接返回
|
||||||
try {
|
try {
|
||||||
var param ={
|
var param ={
|
||||||
itmeId: listid.value,
|
itemId: listid.value,
|
||||||
status:'',
|
status:listenerFieldForm.value.status,
|
||||||
comment:''
|
comment:listenerFieldForm.value.comment
|
||||||
}
|
}
|
||||||
await MainApi.saveRecordList(param)
|
await MainApi.saveRecordList(param)
|
||||||
Visible.value = false
|
Visible.value = false
|
||||||
|
|
@ -248,8 +258,9 @@ const saveListenerFiled = async () => {
|
||||||
const aduitRecord = async (id?: number) => {
|
const aduitRecord = async (id?: number) => {
|
||||||
try {
|
try {
|
||||||
const data = await MainApi.getRecordList(id)
|
const data = await MainApi.getRecordList(id)
|
||||||
Visible1.value = true
|
listRecord.value = data
|
||||||
listRecord.value = data.list
|
Visible1.value = true
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -258,4 +269,14 @@ const aduitRecord = async (id?: number) => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.el-timeline-item__content .el-card__body{
|
||||||
|
padding:10px;
|
||||||
|
}
|
||||||
|
.el-timeline-item__content .el-card__body h4{
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 0;
|
||||||
|
padding:0
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="变更内容" prop="changeContent">
|
<el-form-item label="变更内容" prop="changeContent">
|
||||||
<el-input v-model="formData.changeContent" type="textarea" placeholder="请输入变更内容" />
|
<Editor v-model="formData.changeContent" height="150px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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" />
|
||||||
|
|
@ -30,27 +30,26 @@
|
||||||
<el-form-item label="主管工程师" prop="managerName">
|
<el-form-item label="主管工程师" prop="managerName">
|
||||||
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建人" prop="createdBy">
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
|
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建时间" prop="createdTime">
|
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
|
||||||
<el-date-picker
|
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
|
||||||
v-model="formData.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="更新人" prop="updatedBy">
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
|
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="更新时间" prop="updatedTime">
|
<el-form-item label="承担单位ID" prop="undertakingUnitId">
|
||||||
<el-date-picker
|
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
|
||||||
v-model="formData.updatedTime"
|
</el-form-item>
|
||||||
type="date"
|
<el-form-item label="审核单位名称" prop="reviewUnitName">
|
||||||
value-format="x"
|
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
|
||||||
placeholder="选择更新时间"
|
</el-form-item>
|
||||||
/>
|
<el-form-item label="审核单位ID" prop="reviewUnitId">
|
||||||
|
<el-input v-model="formData.reviewUnitId" placeholder="请输入审核单位ID" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="state">
|
||||||
|
<el-input v-model="formData.state" placeholder="请输入状态" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|
@ -81,10 +80,13 @@ const formData = ref({
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
maintenanceUnitName: undefined,
|
||||||
createdTime: undefined,
|
maintenanceUnitId: undefined,
|
||||||
updatedBy: undefined,
|
undertakingUnitName: undefined,
|
||||||
updatedTime: undefined,
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
})
|
})
|
||||||
|
|
@ -143,11 +145,14 @@ const resetForm = () => {
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
maintenanceUnitName: undefined,
|
||||||
createdTime: undefined,
|
maintenanceUnitId: undefined,
|
||||||
updatedBy: undefined,
|
undertakingUnitName: undefined,
|
||||||
updatedTime: undefined,
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,15 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
|
<el-form-item label="合同ID" prop="contractId">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.contractId"
|
||||||
|
placeholder="请输入合同ID"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="变更类型" prop="changeType">
|
<el-form-item label="变更类型" prop="changeType">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.changeType"
|
v-model="queryParams.changeType"
|
||||||
|
|
@ -36,6 +45,42 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.maintenanceUnitName"
|
||||||
|
placeholder="请输入维护单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.undertakingUnitName"
|
||||||
|
placeholder="请输入承担单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="审核单位名称" prop="reviewUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.reviewUnitName"
|
||||||
|
placeholder="请输入审核单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="state">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.state"
|
||||||
|
placeholder="请输入状态"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
|
|
@ -66,11 +111,12 @@
|
||||||
<el-table-column label="id" align="center" prop="id" />
|
<el-table-column label="id" align="center" prop="id" />
|
||||||
<el-table-column label="合同ID" align="center" prop="contractId" />
|
<el-table-column label="合同ID" align="center" prop="contractId" />
|
||||||
<el-table-column label="变更类型" align="center" prop="changeType" />
|
<el-table-column label="变更类型" align="center" prop="changeType" />
|
||||||
<el-table-column label="变更内容" align="center" prop="changeContent" />
|
|
||||||
<el-table-column label="主管部门ID" align="center" prop="competentDeptId" />
|
|
||||||
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
||||||
<el-table-column label="主管工程师ID" align="center" prop="managerId" />
|
|
||||||
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
||||||
|
<el-table-column label="维护单位名称" align="center" prop="maintenanceUnitName" />
|
||||||
|
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" />
|
||||||
|
<el-table-column label="审核单位名称" align="center" prop="reviewUnitName" />
|
||||||
|
<el-table-column label="状态" align="center" prop="state" />
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -122,9 +168,14 @@ const total = ref(0) // 列表的总页数
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
contractId: undefined,
|
||||||
changeType: undefined,
|
changeType: undefined,
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
|
maintenanceUnitName: undefined,
|
||||||
|
undertakingUnitName: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
state: undefined,
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
@ -191,4 +242,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -47,9 +47,9 @@
|
||||||
placeholder="选择开始时间"
|
placeholder="选择开始时间"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束时间" prop="endData">
|
<el-form-item label="结束时间" prop="endDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.endData"
|
v-model="formData.endDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="x"
|
||||||
placeholder="选择结束时间"
|
placeholder="选择结束时间"
|
||||||
|
|
@ -68,13 +68,34 @@
|
||||||
<el-input v-model="formData.age" placeholder="请输入年龄" />
|
<el-input v-model="formData.age" placeholder="请输入年龄" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="学历" prop="education">
|
<el-form-item label="学历" prop="education">
|
||||||
<el-input v-model="formData.education" placeholder="请输入学历" />
|
<el-select v-model="formData.education" placeholder="请选择学历">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.EDUCATION)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所学专业" prop="major">
|
<el-form-item label="所学专业" prop="major">
|
||||||
<el-input v-model="formData.major" placeholder="请输入所学专业" />
|
<el-select v-model="formData.major" placeholder="请选择所学专业">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.MAJOR)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="从事专业" prop="engagMajor">
|
<el-form-item label="从事专业" prop="engagMajor">
|
||||||
<el-input v-model="formData.engagMajor" placeholder="请输入从事专业" />
|
<el-select v-model="formData.engagMajor" placeholder="请选择从事专业">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.MAJOR)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="职务(职称)" prop="position">
|
<el-form-item label="职务(职称)" prop="position">
|
||||||
<el-input v-model="formData.position" placeholder="请输入职务(职称)" />
|
<el-input v-model="formData.position" placeholder="请输入职务(职称)" />
|
||||||
|
|
@ -92,10 +113,10 @@
|
||||||
<el-input v-model="formData.postalCode" placeholder="请输入邮编" />
|
<el-input v-model="formData.postalCode" placeholder="请输入邮编" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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" type="textarea" placeholder="请输入通讯地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="主要业绩" prop="achievement">
|
<el-form-item label="主要业绩" prop="achievement">
|
||||||
<el-input v-model="formData.achievement" placeholder="请输入主要业绩" />
|
<el-input v-model="formData.achievement" type="textarea" placeholder="请输入主要业绩" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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" />
|
||||||
|
|
@ -109,12 +130,30 @@
|
||||||
<el-form-item label="主管工程师" prop="managerName">
|
<el-form-item label="主管工程师" prop="managerName">
|
||||||
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
|
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
|
||||||
|
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
|
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="承担单位ID" prop="undertakingUnitId">
|
||||||
|
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="审核单位名称" prop="reviewUnitName">
|
||||||
|
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="审核单位ID" prop="reviewUnitId">
|
||||||
|
<el-input v-model="formData.reviewUnitId" placeholder="请输入审核单位ID" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="state">
|
||||||
|
<el-input v-model="formData.state" placeholder="请输入状态" />
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- 子表的表单 -->
|
<!-- 子表的表单 -->
|
||||||
<el-tabs v-model="subTabsName">
|
<el-tabs v-model="subTabsName">
|
||||||
<el-tab-pane label="合同预期主要成果形式、知识产权归属" name="achie">
|
|
||||||
<AchieForm ref="achieFormRef" :contract-id="formData.id" />
|
|
||||||
</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" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
@ -140,7 +179,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { MainApi, MainVO } from '@/api/contract/contract'
|
import { MainApi, MainVO } from '@/api/contract/contract'
|
||||||
import AchieForm from './components/AchieForm.vue'
|
|
||||||
import FundsForm from './components/FundsForm.vue'
|
import FundsForm from './components/FundsForm.vue'
|
||||||
import InfoForm from './components/InfoForm.vue'
|
import InfoForm from './components/InfoForm.vue'
|
||||||
import ParticipantForm from './components/ParticipantForm.vue'
|
import ParticipantForm from './components/ParticipantForm.vue'
|
||||||
|
|
@ -166,7 +204,7 @@ const formData = ref({
|
||||||
planName: undefined,
|
planName: undefined,
|
||||||
year: undefined,
|
year: undefined,
|
||||||
beginDate: undefined,
|
beginDate: undefined,
|
||||||
endData: undefined,
|
endDate: undefined,
|
||||||
directorId: undefined,
|
directorId: undefined,
|
||||||
director: undefined,
|
director: undefined,
|
||||||
gender: undefined,
|
gender: undefined,
|
||||||
|
|
@ -185,14 +223,20 @@ const formData = ref({
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
|
maintenanceUnitName: undefined,
|
||||||
|
maintenanceUnitId: undefined,
|
||||||
|
undertakingUnitName: undefined,
|
||||||
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
/** 子表的表单 */
|
/** 子表的表单 */
|
||||||
const subTabsName = ref('achie')
|
const subTabsName = ref('funds')
|
||||||
const achieFormRef = ref()
|
|
||||||
const fundsFormRef = ref()
|
const fundsFormRef = ref()
|
||||||
const infoFormRef = ref()
|
const infoFormRef = ref()
|
||||||
const participantFormRef = ref()
|
const participantFormRef = ref()
|
||||||
|
|
@ -223,12 +267,6 @@ const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
await formRef.value.validate()
|
await formRef.value.validate()
|
||||||
// 校验子表单
|
// 校验子表单
|
||||||
try {
|
|
||||||
await achieFormRef.value.validate()
|
|
||||||
} catch (e) {
|
|
||||||
subTabsName.value = 'achie'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
await fundsFormRef.value.validate()
|
await fundsFormRef.value.validate()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -264,7 +302,6 @@ const submitForm = async () => {
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as MainVO
|
const data = formData.value as unknown as MainVO
|
||||||
// 拼接子表的数据
|
// 拼接子表的数据
|
||||||
data.achies = achieFormRef.value.getData()
|
|
||||||
data.fundss = fundsFormRef.value.getData()
|
data.fundss = fundsFormRef.value.getData()
|
||||||
data.info = infoFormRef.value.getData()
|
data.info = infoFormRef.value.getData()
|
||||||
data.participants = participantFormRef.value.getData()
|
data.participants = participantFormRef.value.getData()
|
||||||
|
|
@ -296,7 +333,7 @@ const resetForm = () => {
|
||||||
planName: undefined,
|
planName: undefined,
|
||||||
year: undefined,
|
year: undefined,
|
||||||
beginDate: undefined,
|
beginDate: undefined,
|
||||||
endData: undefined,
|
endDate: undefined,
|
||||||
directorId: undefined,
|
directorId: undefined,
|
||||||
director: undefined,
|
director: undefined,
|
||||||
gender: undefined,
|
gender: undefined,
|
||||||
|
|
@ -315,7 +352,14 @@ const resetForm = () => {
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
|
maintenanceUnitName: undefined,
|
||||||
|
maintenanceUnitId: undefined,
|
||||||
|
undertakingUnitName: undefined,
|
||||||
|
undertakingUnitId: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
reviewUnitId: undefined,
|
||||||
|
state: undefined,
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
</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}.secondaryCategory`" :rules="formRules.secondaryCategory" class="mb-0px!">
|
<el-form-item :prop="`${$index}.secondaryCategory`" :rules="formRules.secondaryCategory" class="mb-0px!">
|
||||||
<el-input v-model="row.secondaryCategory" placeholder="请输入经费科目" />
|
<el-input v-model="row.secondaryCategory" placeholder="请输入二级科目" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -65,51 +65,6 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="乐观锁" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
|
||||||
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdBy`" :rules="formRules.createdBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdTime`" :rules="formRules.createdTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedBy`" :rules="formRules.updatedBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedTime`" :rules="formRules.updatedTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</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,11 +121,6 @@ const handleAdd = () => {
|
||||||
totalAmount: undefined,
|
totalAmount: undefined,
|
||||||
unitId: undefined,
|
unitId: undefined,
|
||||||
unitName: undefined,
|
unitName: undefined,
|
||||||
revision: undefined,
|
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
row.contractId = props.contractId
|
row.contractId = props.contractId
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
|
|
@ -192,4 +142,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,14 @@
|
||||||
<el-input v-model="formData.purposeSignificance" type="textarea" placeholder="请输入项目目的与意义" />
|
<el-input v-model="formData.purposeSignificance" type="textarea" placeholder="请输入项目目的与意义" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目所属领域国内外产业、技术的现状和发展趋势" prop="currentSituation">
|
<el-form-item label="项目所属领域国内外产业、技术的现状和发展趋势" prop="currentSituation">
|
||||||
<el-input v-model="formData.currentSituation" type="textarea" placeholder="请输入项目所属领域国内外产业、技术的现状和发展趋势" />
|
<el-select v-model="formData.currentSituation" placeholder="请选择项目所属领域国内外产业、技术的现状和发展趋势">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目现有工作基础" prop="workFoundation">
|
<el-form-item label="项目现有工作基础" prop="workFoundation">
|
||||||
<el-input v-model="formData.workFoundation" type="textarea" placeholder="请输入项目现有工作基础" />
|
<el-input v-model="formData.workFoundation" type="textarea" placeholder="请输入项目现有工作基础" />
|
||||||
|
|
@ -39,6 +46,7 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { MainApi } from '@/api/contract/contract'
|
import { MainApi } from '@/api/contract/contract'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|
@ -98,4 +106,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -33,21 +33,37 @@
|
||||||
<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-form-item :prop="`${$index}.education`" :rules="formRules.education" class="mb-0px!">
|
||||||
<el-input v-model="row.education" placeholder="请输入学历" />
|
<el-select v-model="row.education" placeholder="请选择学历">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.EDUCATION)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</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}.position`" :rules="formRules.position" class="mb-0px!">
|
<el-form-item :prop="`${$index}.position`" :rules="formRules.position" class="mb-0px!">
|
||||||
<el-input v-model="row.position" placeholder="请输入职务(职称)" />
|
<el-select v-model="row.position" placeholder="请选择职务(职称)">
|
||||||
|
<el-option label="请选择字典生成" value="" />
|
||||||
|
</el-select>
|
||||||
</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}.engagingProfession`" :rules="formRules.engagingProfession" class="mb-0px!">
|
<el-form-item :prop="`${$index}.engagingProfession`" :rules="formRules.engagingProfession" class="mb-0px!">
|
||||||
<el-input v-model="row.engagingProfession" placeholder="请输入从事专业" />
|
<el-select v-model="row.engagingProfession" placeholder="请选择从事专业">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.MAJOR)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -79,51 +95,6 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="乐观锁" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
|
||||||
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdBy`" :rules="formRules.createdBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdTime`" :rules="formRules.createdTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedBy`" :rules="formRules.updatedBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedTime`" :rules="formRules.updatedTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</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>
|
||||||
|
|
@ -136,6 +107,7 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { MainApi } from '@/api/contract/contract'
|
import { MainApi } from '@/api/contract/contract'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|
@ -182,11 +154,6 @@ const handleAdd = () => {
|
||||||
deptId: undefined,
|
deptId: undefined,
|
||||||
deptName: undefined,
|
deptName: undefined,
|
||||||
orderNo: undefined,
|
orderNo: undefined,
|
||||||
revision: undefined,
|
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
row.contractId = props.contractId
|
row.contractId = props.contractId
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
|
|
@ -208,4 +175,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -21,55 +21,10 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="实施内容" min-width="200">
|
<el-table-column label="实施内容" min-width="400">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.implContent`" :rules="formRules.implContent" class="mb-0px!">
|
<el-form-item :prop="`${$index}.implContent`" :rules="formRules.implContent" class="mb-0px!">
|
||||||
<el-input v-model="row.implContent" type="textarea" placeholder="请输入实施内容" />
|
<Editor v-model="row.implContent" height="150px" />
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="乐观锁" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
|
||||||
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdBy`" :rules="formRules.createdBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdTime`" :rules="formRules.createdTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedBy`" :rules="formRules.updatedBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedTime`" :rules="formRules.updatedTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -123,11 +78,6 @@ const handleAdd = () => {
|
||||||
contractId: undefined,
|
contractId: undefined,
|
||||||
implDate: undefined,
|
implDate: undefined,
|
||||||
implContent: undefined,
|
implContent: undefined,
|
||||||
revision: undefined,
|
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
row.contractId = props.contractId
|
row.contractId = props.contractId
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
|
|
@ -149,4 +99,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -100,51 +100,6 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="乐观锁" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.revision`" :rules="formRules.revision" class="mb-0px!">
|
|
||||||
<el-input v-model="row.revision" placeholder="请输入乐观锁" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdBy`" :rules="formRules.createdBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.createdTime`" :rules="formRules.createdTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新人" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedBy`" :rules="formRules.updatedBy" class="mb-0px!">
|
|
||||||
<el-input v-model="row.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="更新时间" min-width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.updatedTime`" :rules="formRules.updatedTime" class="mb-0px!">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="row.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</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>
|
||||||
|
|
@ -206,11 +161,6 @@ const handleAdd = () => {
|
||||||
address: undefined,
|
address: undefined,
|
||||||
sign: undefined,
|
sign: undefined,
|
||||||
orderNo: undefined,
|
orderNo: undefined,
|
||||||
revision: undefined,
|
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
row.contractId = props.contractId
|
row.contractId = props.contractId
|
||||||
formData.value.push(row)
|
formData.value.push(row)
|
||||||
|
|
@ -232,4 +182,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,42 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.maintenanceUnitName"
|
||||||
|
placeholder="请输入维护单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="承担单位名称" prop="undertakingUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.undertakingUnitName"
|
||||||
|
placeholder="请输入承担单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="审核单位名称" prop="reviewUnitName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.reviewUnitName"
|
||||||
|
placeholder="请输入审核单位名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="state">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.state"
|
||||||
|
placeholder="请输入状态"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
|
|
@ -119,6 +155,7 @@
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
|
<el-table-column label="id" align="center" prop="id" />
|
||||||
<el-table-column label="合同编号" align="center" prop="code" />
|
<el-table-column label="合同编号" align="center" prop="code" />
|
||||||
<el-table-column label="任务名称" align="center" prop="name" />
|
<el-table-column label="任务名称" align="center" prop="name" />
|
||||||
<el-table-column label="所属技术领域" align="center" prop="technicalField">
|
<el-table-column label="所属技术领域" align="center" prop="technicalField">
|
||||||
|
|
@ -126,6 +163,7 @@
|
||||||
<dict-tag :type="DICT_TYPE.TECHNICAL_FIELD" :value="scope.row.technicalField" />
|
<dict-tag :type="DICT_TYPE.TECHNICAL_FIELD" :value="scope.row.technicalField" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="计划类型Id" align="center" prop="planId" />
|
||||||
<el-table-column label="计划类型名称" align="center" prop="planName">
|
<el-table-column label="计划类型名称" align="center" prop="planName">
|
||||||
<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.planName" />
|
||||||
|
|
@ -133,11 +171,48 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="年度" align="center" prop="year" />
|
<el-table-column label="年度" align="center" prop="year" />
|
||||||
<el-table-column label="开始时间" align="center" prop="beginDate" />
|
<el-table-column label="开始时间" align="center" prop="beginDate" />
|
||||||
<el-table-column label="结束时间" align="center" prop="endData" />
|
<el-table-column label="结束时间" align="center" prop="endDate" />
|
||||||
|
<el-table-column label="负责人Id" align="center" prop="directorId" />
|
||||||
<el-table-column label="负责人姓名" align="center" prop="director" />
|
<el-table-column label="负责人姓名" align="center" prop="director" />
|
||||||
|
<el-table-column label="负责人性别" align="center" prop="gender" />
|
||||||
|
<el-table-column label="年龄" align="center" prop="age" />
|
||||||
|
<el-table-column label="学历" align="center" prop="education">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.EDUCATION" :value="scope.row.education" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="所学专业" align="center" prop="major">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.MAJOR" :value="scope.row.major" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="从事专业" align="center" prop="engagMajor">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.MAJOR" :value="scope.row.engagMajor" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="职务(职称)" align="center" prop="position" />
|
||||||
<el-table-column label="电话" align="center" prop="phoneNo" />
|
<el-table-column label="电话" align="center" prop="phoneNo" />
|
||||||
|
<el-table-column label="邮箱" align="center" prop="email" />
|
||||||
|
<el-table-column label="传真" align="center" prop="fax" />
|
||||||
|
<el-table-column label="邮编" align="center" prop="postalCode" />
|
||||||
|
<el-table-column label="通讯地址" align="center" prop="address" />
|
||||||
|
<el-table-column label="主要业绩" align="center" prop="achievement" />
|
||||||
|
<el-table-column label="主管部门ID" align="center" prop="competentDeptId" />
|
||||||
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
<el-table-column label="主管部门" align="center" prop="competentDeptName" />
|
||||||
|
<el-table-column label="主管工程师ID" align="center" prop="managerId" />
|
||||||
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
<el-table-column label="主管工程师" align="center" prop="managerName" />
|
||||||
|
<el-table-column label="维护单位名称" align="center" prop="maintenanceUnitName" />
|
||||||
|
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" />
|
||||||
|
<el-table-column label="审核单位名称" align="center" prop="reviewUnitName" />
|
||||||
|
<el-table-column label="状态" align="center" prop="state" />
|
||||||
|
<el-table-column
|
||||||
|
label="创建时间"
|
||||||
|
align="center"
|
||||||
|
prop="createTime"
|
||||||
|
:formatter="dateFormatter"
|
||||||
|
width="180px"
|
||||||
|
/>
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -174,6 +249,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 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'
|
||||||
|
|
@ -198,6 +274,10 @@ const queryParams = reactive({
|
||||||
director: undefined,
|
director: undefined,
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
|
maintenanceUnitName: undefined,
|
||||||
|
undertakingUnitName: undefined,
|
||||||
|
reviewUnitName: undefined,
|
||||||
|
state: undefined,
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
@ -264,4 +344,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,12 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专利类型(如发明、实用新型、外观设计等)" prop="patentType">
|
<el-form-item label="专利类型(如发明、实用新型、外观设计等)" prop="patentType">
|
||||||
<el-select v-model="formData.patentType" placeholder="请选择专利类型(如发明、实用新型、外观设计等)">
|
<el-select v-model="formData.patentType" placeholder="请选择专利类型(如发明、实用新型、外观设计等)">
|
||||||
<el-option label="请选择字典生成" value="" />
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.PATENT_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专利权人姓名或公司名称" prop="patenteeName">
|
<el-form-item label="专利权人姓名或公司名称" prop="patenteeName">
|
||||||
|
|
@ -79,6 +84,7 @@
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { MainApi, MainVO } from '@/api/patents/patents'
|
import { MainApi, MainVO } from '@/api/patents/patents'
|
||||||
import InfoForm from './components/InfoForm.vue'
|
import InfoForm from './components/InfoForm.vue'
|
||||||
|
|
||||||
|
|
@ -187,4 +193,4 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,6 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="合同编号" prop="contractCode">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.contractCode"
|
|
||||||
placeholder="请输入合同编号"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="专利名称" prop="name">
|
<el-form-item label="专利名称" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.name"
|
v-model="queryParams.name"
|
||||||
|
|
@ -35,25 +26,30 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发明人姓名" prop="inventorName">
|
<el-form-item label="专利类型(如发明、实用新型、外观设计等)" prop="patentType">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.patentType"
|
||||||
|
placeholder="请选择专利类型(如发明、实用新型、外观设计等)"
|
||||||
|
clearable
|
||||||
|
class="!w-240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.PATENT_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="专利权人姓名或公司名称" prop="patenteeName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.inventorName"
|
v-model="queryParams.patenteeName"
|
||||||
placeholder="请输入发明人姓名"
|
placeholder="请输入专利权人姓名或公司名称"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="法律状态(如审查中、已授权、无效等)" prop="legalStatus">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.legalStatus"
|
|
||||||
placeholder="请选择法律状态(如审查中、已授权、无效等)"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option label="请选择字典生成" value="" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
|
|
@ -82,6 +78,7 @@
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="id" align="center" prop="id" />
|
<el-table-column label="id" align="center" prop="id" />
|
||||||
|
<el-table-column label="合同id" align="center" prop="contractId" />
|
||||||
<el-table-column label="合同编号" align="center" prop="contractCode" />
|
<el-table-column label="合同编号" align="center" prop="contractCode" />
|
||||||
<el-table-column label="专利名称" align="center" prop="name" />
|
<el-table-column label="专利名称" align="center" prop="name" />
|
||||||
<el-table-column label="专利号" align="center" prop="number" />
|
<el-table-column label="专利号" align="center" prop="number" />
|
||||||
|
|
@ -89,7 +86,11 @@
|
||||||
<el-table-column label="申请日期" align="center" prop="filingDate" />
|
<el-table-column label="申请日期" align="center" prop="filingDate" />
|
||||||
<el-table-column label="公开日期" align="center" prop="publicationDate" />
|
<el-table-column label="公开日期" align="center" prop="publicationDate" />
|
||||||
<el-table-column label="授权日期" align="center" prop="grantDate" />
|
<el-table-column label="授权日期" align="center" prop="grantDate" />
|
||||||
<el-table-column label="专利类型(如发明、实用新型、外观设计等)" align="center" prop="patentType" />
|
<el-table-column label="专利类型(如发明、实用新型、外观设计等)" align="center" prop="patentType">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.PATENT_TYPE" :value="scope.row.patentType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="专利权人姓名或公司名称" align="center" prop="patenteeName" />
|
<el-table-column label="专利权人姓名或公司名称" align="center" prop="patenteeName" />
|
||||||
<el-table-column label="相关技术领域" align="center" prop="relatedTechArea" />
|
<el-table-column label="相关技术领域" align="center" prop="relatedTechArea" />
|
||||||
<el-table-column label="技术效果" align="center" prop="technicalEffect" />
|
<el-table-column label="技术效果" align="center" prop="technicalEffect" />
|
||||||
|
|
@ -129,6 +130,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { MainApi, MainVO } from '@/api/patents/patents'
|
import { MainApi, MainVO } from '@/api/patents/patents'
|
||||||
import MainForm from './MainForm.vue'
|
import MainForm from './MainForm.vue'
|
||||||
|
|
@ -145,11 +147,10 @@ const total = ref(0) // 列表的总页数
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
contractCode: undefined,
|
|
||||||
name: undefined,
|
name: undefined,
|
||||||
number: undefined,
|
number: undefined,
|
||||||
inventorName: undefined,
|
patentType: undefined,
|
||||||
legalStatus: undefined,
|
patenteeName: undefined,
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
@ -216,4 +217,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@
|
||||||
<el-input v-model="formData.section" placeholder="请输入执行区段" />
|
<el-input v-model="formData.section" placeholder="请输入执行区段" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="进展情况(正常,拖延,停顿)" prop="progress">
|
<el-form-item label="进展情况(正常,拖延,停顿)" prop="progress">
|
||||||
<el-input v-model="formData.progress" placeholder="请输入进展情况(正常,拖延,停顿)" />
|
<el-select v-model="formData.progress" placeholder="请选择进展情况(正常,拖延,停顿)">
|
||||||
|
<el-option label="请选择字典生成" value="" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="负责人Id" prop="directorId">
|
<el-form-item label="负责人Id" prop="directorId">
|
||||||
<el-input v-model="formData.directorId" placeholder="请输入负责人Id" />
|
<el-input v-model="formData.directorId" placeholder="请输入负责人Id" />
|
||||||
|
|
@ -37,31 +39,12 @@
|
||||||
<el-form-item label="主管工程师" prop="managerName">
|
<el-form-item label="主管工程师" prop="managerName">
|
||||||
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建人" prop="createdBy">
|
|
||||||
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="创建时间" prop="createdTime">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="formData.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="更新人" prop="updatedBy">
|
|
||||||
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="更新时间" prop="updatedTime">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="formData.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- 子表的表单 -->
|
<!-- 子表的表单 -->
|
||||||
<el-tabs v-model="subTabsName">
|
<el-tabs v-model="subTabsName">
|
||||||
|
<el-tab-pane label="执行经费情况" name="funds">
|
||||||
|
<FundsForm ref="fundsFormRef" :process-id="formData.id" />
|
||||||
|
</el-tab-pane>
|
||||||
<el-tab-pane label="执行详细信息" name="info">
|
<el-tab-pane label="执行详细信息" name="info">
|
||||||
<InfoForm ref="infoFormRef" :process-id="formData.id" />
|
<InfoForm ref="infoFormRef" :process-id="formData.id" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
@ -74,6 +57,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { MainApi, MainVO } from '@/api/process/process'
|
import { MainApi, MainVO } from '@/api/process/process'
|
||||||
|
import FundsForm from './components/FundsForm.vue'
|
||||||
import InfoForm from './components/InfoForm.vue'
|
import InfoForm from './components/InfoForm.vue'
|
||||||
|
|
||||||
/** 执行主 表单 */
|
/** 执行主 表单 */
|
||||||
|
|
@ -98,17 +82,14 @@ const formData = ref({
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
/** 子表的表单 */
|
/** 子表的表单 */
|
||||||
const subTabsName = ref('info')
|
const subTabsName = ref('funds')
|
||||||
|
const fundsFormRef = ref()
|
||||||
const infoFormRef = ref()
|
const infoFormRef = ref()
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
|
|
@ -135,6 +116,12 @@ const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
await formRef.value.validate()
|
await formRef.value.validate()
|
||||||
// 校验子表单
|
// 校验子表单
|
||||||
|
try {
|
||||||
|
await fundsFormRef.value.validate()
|
||||||
|
} catch (e) {
|
||||||
|
subTabsName.value = 'funds'
|
||||||
|
return
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
await infoFormRef.value.validate()
|
await infoFormRef.value.validate()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -146,6 +133,7 @@ const submitForm = async () => {
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as MainVO
|
const data = formData.value as unknown as MainVO
|
||||||
// 拼接子表的数据
|
// 拼接子表的数据
|
||||||
|
data.fundss = fundsFormRef.value.getData()
|
||||||
data.info = infoFormRef.value.getData()
|
data.info = infoFormRef.value.getData()
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await MainApi.createMain(data)
|
await MainApi.createMain(data)
|
||||||
|
|
@ -176,11 +164,7 @@ const resetForm = () => {
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerId: undefined,
|
managerId: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,153 @@
|
||||||
|
<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">
|
||||||
|
<el-table-column label="序号" type="index" width="100" />
|
||||||
|
<el-table-column label="合同ID" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.contractId`" :rules="formRules.contractId" class="mb-0px!">
|
||||||
|
<el-input v-model="row.contractId" placeholder="请输入合同ID" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="经费来源ID" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.sourceId`" :rules="formRules.sourceId" class="mb-0px!">
|
||||||
|
<el-input v-model="row.sourceId" placeholder="请输入经费来源ID" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="支出类型ID" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.expenseId`" :rules="formRules.expenseId" class="mb-0px!">
|
||||||
|
<el-input v-model="row.expenseId" placeholder="请输入支出类型ID" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="二级科目" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.secondaryCategory`" :rules="formRules.secondaryCategory" class="mb-0px!">
|
||||||
|
<el-input v-model="row.secondaryCategory" placeholder="请输入二级科目" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="经费金额" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.amount`" :rules="formRules.amount" class="mb-0px!">
|
||||||
|
<el-input v-model="row.amount" placeholder="请输入经费金额" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="经费年度" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.fiscalYear`" :rules="formRules.fiscalYear" class="mb-0px!">
|
||||||
|
<el-input v-model="row.fiscalYear" placeholder="请输入经费年度" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="总金额" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.totalAmount`" :rules="formRules.totalAmount" class="mb-0px!">
|
||||||
|
<el-input v-model="row.totalAmount" placeholder="请输入总金额" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="单位Id" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.unitId`" :rules="formRules.unitId" class="mb-0px!">
|
||||||
|
<el-input v-model="row.unitId" placeholder="请输入单位Id" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="单位名称" min-width="150">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.unitName`" :rules="formRules.unitName" class="mb-0px!">
|
||||||
|
<el-input v-model="row.unitName" placeholder="请输入单位名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||||
|
</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 { MainApi } from '@/api/process/process'
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
processId: undefined // 执行ID(主表的关联字段)
|
||||||
|
}>()
|
||||||
|
const formLoading = ref(false) // 表单的加载中
|
||||||
|
const formData = ref([])
|
||||||
|
const formRules = reactive({
|
||||||
|
})
|
||||||
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||||
|
watch(
|
||||||
|
() => props.processId,
|
||||||
|
async (val) => {
|
||||||
|
// 1. 重置表单
|
||||||
|
formData.value = []
|
||||||
|
// 2. val 非空,则加载数据
|
||||||
|
if (!val) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
formLoading.value = true
|
||||||
|
formData.value = await MainApi.getFundsListByProcessId(val)
|
||||||
|
} finally {
|
||||||
|
formLoading.value = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
const handleAdd = () => {
|
||||||
|
const row = {
|
||||||
|
id: undefined,
|
||||||
|
contractId: undefined,
|
||||||
|
processId: undefined,
|
||||||
|
sourceId: undefined,
|
||||||
|
expenseId: undefined,
|
||||||
|
secondaryCategory: undefined,
|
||||||
|
amount: undefined,
|
||||||
|
fiscalYear: undefined,
|
||||||
|
totalAmount: undefined,
|
||||||
|
unitId: undefined,
|
||||||
|
unitName: undefined,
|
||||||
|
}
|
||||||
|
row.processId = props.processId
|
||||||
|
formData.value.push(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
formData.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 表单校验 */
|
||||||
|
const validate = () => {
|
||||||
|
return formRef.value.validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 表单值 */
|
||||||
|
const getData = () => {
|
||||||
|
return formData.value
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ validate, getData })
|
||||||
|
</script>
|
||||||
|
|
@ -15,28 +15,6 @@
|
||||||
<el-form-item label="项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" prop="describe">
|
<el-form-item label="项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" prop="describe">
|
||||||
<el-input v-model="formData.describe" type="textarea" placeholder="请输入项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" />
|
<el-input v-model="formData.describe" type="textarea" placeholder="请输入项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建人" prop="createdBy">
|
|
||||||
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="创建时间" prop="createdTime">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="formData.createdTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择创建时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="更新人" prop="updatedBy">
|
|
||||||
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="更新时间" prop="updatedTime">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="formData.updatedTime"
|
|
||||||
type="date"
|
|
||||||
value-format="x"
|
|
||||||
placeholder="选择更新时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -62,10 +40,6 @@ watch(
|
||||||
mainWork: undefined,
|
mainWork: undefined,
|
||||||
injectWork: undefined,
|
injectWork: undefined,
|
||||||
describe: undefined,
|
describe: undefined,
|
||||||
createdBy: undefined,
|
|
||||||
createdTime: undefined,
|
|
||||||
updatedBy: undefined,
|
|
||||||
updatedTime: undefined,
|
|
||||||
}
|
}
|
||||||
// 2. val 非空,则加载数据
|
// 2. val 非空,则加载数据
|
||||||
if (!val) {
|
if (!val) {
|
||||||
|
|
@ -96,4 +70,4 @@ const getData = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ validate, getData })
|
defineExpose({ validate, getData })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,15 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
|
<el-form-item label="合同主键Id" prop="contractId">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.contractId"
|
||||||
|
placeholder="请输入合同主键Id"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="合同编号" prop="contractCode">
|
<el-form-item label="合同编号" prop="contractCode">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.contractCode"
|
v-model="queryParams.contractCode"
|
||||||
|
|
@ -26,6 +35,16 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="进展情况(正常,拖延,停顿)" prop="progress">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.progress"
|
||||||
|
placeholder="请选择进展情况(正常,拖延,停顿)"
|
||||||
|
clearable
|
||||||
|
class="!w-240px"
|
||||||
|
>
|
||||||
|
<el-option label="请选择字典生成" value="" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="负责人姓名" prop="director">
|
<el-form-item label="负责人姓名" prop="director">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.director"
|
v-model="queryParams.director"
|
||||||
|
|
@ -81,7 +100,6 @@
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="id" align="center" prop="id" />
|
<el-table-column label="id" align="center" prop="id" />
|
||||||
<el-table-column label="合同主键Id" align="center" prop="contractId" />
|
|
||||||
<el-table-column label="合同编号" align="center" prop="contractCode" />
|
<el-table-column label="合同编号" align="center" prop="contractCode" />
|
||||||
<el-table-column label="执行区段" align="center" prop="section" />
|
<el-table-column label="执行区段" align="center" prop="section" />
|
||||||
<el-table-column label="进展情况(正常,拖延,停顿)" align="center" prop="progress" />
|
<el-table-column label="进展情况(正常,拖延,停顿)" align="center" prop="progress" />
|
||||||
|
|
@ -139,8 +157,10 @@ const total = ref(0) // 列表的总页数
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
contractId: undefined,
|
||||||
contractCode: undefined,
|
contractCode: undefined,
|
||||||
section: undefined,
|
section: undefined,
|
||||||
|
progress: undefined,
|
||||||
director: undefined,
|
director: undefined,
|
||||||
competentDeptName: undefined,
|
competentDeptName: undefined,
|
||||||
managerName: undefined,
|
managerName: undefined,
|
||||||
|
|
@ -210,4 +230,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,15 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="预约时长(小时)" prop="reservationDuration">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.reservationDuration"
|
||||||
|
placeholder="请输入预约时长(小时)"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
class="!w-240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="预约状态(如待审核、已确认、已拒绝等)" prop="status">
|
<el-form-item label="预约状态(如待审核、已确认、已拒绝等)" prop="status">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.status"
|
v-model="queryParams.status"
|
||||||
|
|
@ -138,6 +147,7 @@ const queryParams = reactive({
|
||||||
userName: undefined,
|
userName: undefined,
|
||||||
reservationDate: [],
|
reservationDate: [],
|
||||||
labName: undefined,
|
labName: undefined,
|
||||||
|
reservationDuration: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
|
@ -205,4 +215,4 @@ const handleExport = async () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" />
|
<!-- <doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" />
|
||||||
<doc-alert title="三方登陆" url="https://doc.iocoder.cn/social-user/" />
|
<doc-alert title="三方登陆" url="https://doc.iocoder.cn/social-user/" />
|
||||||
<doc-alert title="Excel 导入导出" url="https://doc.iocoder.cn/excel-import-and-export/" />
|
<doc-alert title="Excel 导入导出" url="https://doc.iocoder.cn/excel-import-and-export/" />-->
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<!-- 左侧部门树 -->
|
<!-- 左侧部门树 -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue