pull/480/head
lizilong 2024-06-05 22:03:19 +08:00
commit 3c81c91fec
35 changed files with 1136 additions and 1124 deletions

View File

@ -2,21 +2,24 @@ import request from '@/config/axios'
// 验收主 VO
export interface MainVO {
id: string // id
id: number // id
contractId: string // 合同主键ID
code: string // 课题编号
year: string // 年度
name: string // 课题名称
beginDate: string // 开始时间
endData: string // 结束时间
endDate: string // 结束时间
competentDeptId: string // 主管部门ID
competentDeptName: string // 主管部门
managerId: string // 主管工程师ID
managerName: string // 主管工程师
createdBy: string // 创建人
createdTime: Date // 创建时间
updatedBy: string // 更新人
updatedTime: Date // 更新时间
maintenanceUnitName: string // 维护单位名称
maintenanceUnitId: string // 维护单位ID
undertakingUnitName: string // 承担单位名称
undertakingUnitId: string // 承担单位ID
reviewUnitName: string // 审核单位名称
reviewUnitId: string // 审核单位ID
state: string // 状态
}
// 验收主 API
@ -51,17 +54,17 @@ export const MainApi = {
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 })
},
// ==================== 子表(验收详细信息) ====================
// 获得验收详细信息
getInfoByAcceptanceId: async (acceptanceId) => {
return await request.get({ url: `/acceptance/main/info/get-by-acceptance-id?acceptanceId=` + acceptanceId })
},
}

View File

@ -108,9 +108,9 @@ export const MainApi = {
return await request.get({ url: `/apply/main/funds/list-by-apply-id?applyId=` + applyId })
},
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) => {
return await request.post({ url: `/apply/main/aduit`, data })
return await request.post({ url: `/apply/main/audit`, data })
},
}

View File

@ -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 })
},
}

View File

@ -2,18 +2,21 @@ import request from '@/config/axios'
// 变更主 VO
export interface MainVO {
id: string // id
contractId: string // 合同ID
id: number // id
contractId: number // 合同ID
changeType: string // 变更类型
changeContent: string // 变更内容
competentDeptId: string // 主管部门ID
competentDeptName: string // 主管部门
managerId: string // 主管工程师ID
managerName: string // 主管工程师
createdBy: string // 创建人
createdTime: Date // 创建时间
updatedBy: string // 更新人
updatedTime: Date // 更新时间
maintenanceUnitName: string // 维护单位名称
maintenanceUnitId: string // 维护单位ID
undertakingUnitName: string // 承担单位名称
undertakingUnitId: string // 承担单位ID
reviewUnitName: string // 审核单位名称
reviewUnitId: string // 审核单位ID
state: string // 状态
}
// 变更主 API

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
// 合同(任务书)信息主 VO
export interface MainVO {
id: string // id
id: number // id
code: string // 合同编号
name: string // 任务名称
technicalField: string // 所属技术领域
@ -10,7 +10,7 @@ export interface MainVO {
planName: string // 计划类型名称
year: string // 年度
beginDate: string // 开始时间
endData: string // 结束时间
endDate: string // 结束时间
directorId: string // 负责人Id
director: string // 负责人姓名
gender: string // 负责人性别
@ -29,6 +29,13 @@ export interface MainVO {
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
@ -63,13 +70,6 @@ export const MainApi = {
return await request.download({ url: `/contract/main/export-excel`, params })
},
// ==================== 子表(合同预期主要成果形式、知识产权归属) ====================
// 获得合同预期主要成果形式、知识产权归属列表
getAchieListByContractId: async (contractId) => {
return await request.get({ url: `/contract/main/achie/list-by-contract-id?contractId=` + contractId })
},
// ==================== 子表(合同经费) ====================
// 获得合同经费列表

View File

@ -2,8 +2,8 @@ import request from '@/config/axios'
// 专利信息 VO
export interface MainVO {
id: string // id
contractId: string // 合同id
id: number // id
contractId: number // 合同id
contractCode: string // 合同编号
name: string // 专利名称
number: string // 专利号

View File

@ -2,8 +2,8 @@ import request from '@/config/axios'
// 执行主 VO
export interface MainVO {
id: string // id
contractId: string // 合同主键Id
id: number // id
contractId: number // 合同主键Id
contractCode: string // 合同编号
section: string // 执行区段
progress: string // 进展情况(正常,拖延,停顿)
@ -13,10 +13,6 @@ export interface MainVO {
competentDeptName: string // 主管部门
managerId: string // 主管工程师ID
managerName: string // 主管工程师
createdBy: string // 创建人
createdTime: Date // 创建时间
updatedBy: string // 更新人
updatedTime: Date // 更新时间
}
// 执行主 API
@ -51,6 +47,13 @@ export const MainApi = {
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 })
},
// ==================== 子表(执行详细信息) ====================
// 获得执行详细信息

View File

@ -2,7 +2,7 @@ import request from '@/config/axios'
// 公共实验室信 VO
export interface LabInfoVO {
id: string // id
id: number // id
userName: string // 用户姓名
userContact: string // 用户联系方式
reservationDate: string // 预约日期

View File

@ -19,6 +19,6 @@ const title = computed(() => appStore.getTitle)
: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)]"
>
<span class="text-14px">Copyright ©2022-{{ title }}</span>
<span class="text-14px">Copyright ©2024-{{ title }}</span>
</div>
</template>

View File

@ -44,7 +44,7 @@
<!-- 右边的登录界面 -->
<Transition appear enter-active-class="animate__animated animate__bounceInRight">
<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)" />

View File

@ -196,7 +196,7 @@ const loginData = reactive({
captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE !== 'false',
tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE !== 'false',
loginForm: {
tenantName: '芋道源码',
tenantName: '金隅集团',
username: 'admin',
password: 'admin123',
captchaVerification: '',

View File

@ -27,9 +27,9 @@
placeholder="选择开始时间"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endData">
<el-form-item label="结束时间" prop="endDate">
<el-date-picker
v-model="formData.endData"
v-model="formData.endDate"
type="date"
value-format="x"
placeholder="选择结束时间"
@ -47,37 +47,36 @@
<el-form-item label="主管工程师" prop="managerName">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
<el-input v-model="formData.maintenanceUnitName" 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 label="维护单位ID" prop="maintenanceUnitId">
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
<el-form-item label="承担单位名称" prop="undertakingUnitName">
<el-input v-model="formData.undertakingUnitName" 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 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-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">
<FundsForm ref="fundsFormRef" :acceptance-id="formData.id" />
</el-tab-pane>
<el-tab-pane label="验收详细信息" name="info">
<InfoForm ref="infoFormRef" :acceptance-id="formData.id" />
</el-tab-pane>
</el-tabs>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -87,8 +86,8 @@
</template>
<script setup lang="ts">
import { MainApi, MainVO } from '@/api/acceptance/acceptance'
import InfoForm from './components/InfoForm.vue'
import FundsForm from './components/FundsForm.vue'
import InfoForm from './components/InfoForm.vue'
/** 验收主 表单 */
defineOptions({ name: 'MainForm' })
@ -107,24 +106,27 @@ const formData = ref({
year: undefined,
name: undefined,
beginDate: undefined,
endData: undefined,
endDate: undefined,
competentDeptId: undefined,
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
})
const formRules = reactive({
})
const formRef = ref() // Ref
/** 子表的表单 */
const subTabsName = ref('info')
const infoFormRef = ref()
const subTabsName = ref('funds')
const fundsFormRef = ref()
const infoFormRef = ref()
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
@ -150,25 +152,25 @@ const submitForm = async () => {
//
await formRef.value.validate()
//
try {
await infoFormRef.value.validate()
} catch (e) {
subTabsName.value = 'info'
return
}
try {
await fundsFormRef.value.validate()
} catch (e) {
subTabsName.value = 'funds'
return
}
try {
await infoFormRef.value.validate()
} catch (e) {
subTabsName.value = 'info'
return
}
//
formLoading.value = true
try {
const data = formData.value as unknown as MainVO
//
data.info = infoFormRef.value.getData()
data.fundss = fundsFormRef.value.getData()
data.info = infoFormRef.value.getData()
if (formType.value === 'create') {
await MainApi.createMain(data)
message.success(t('common.createSuccess'))
@ -193,15 +195,18 @@ const resetForm = () => {
year: undefined,
name: undefined,
beginDate: undefined,
endData: undefined,
endDate: undefined,
competentDeptId: undefined,
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
}
formRef.value?.resetFields()
}

View File

@ -23,10 +23,10 @@
</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 }">
<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>
</template>
</el-table-column>
@ -51,6 +51,13 @@
</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!">
@ -112,6 +119,7 @@ const handleAdd = () => {
amount: undefined,
fiscalYear: undefined,
totalAmount: undefined,
unitId: undefined,
unitName: undefined,
}
row.acceptanceId = props.acceptanceId

View File

@ -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>

View File

@ -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>

View File

@ -35,40 +35,10 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginDate">
<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-form-item label="状态" prop="state">
<el-input
v-model="queryParams.competentDeptName"
placeholder="请输入主管部门"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="主管工程师" prop="managerName">
<el-input
v-model="queryParams.managerName"
placeholder="请输入主管工程师"
v-model="queryParams.state"
placeholder="请输入状态"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -102,14 +72,17 @@
<ContentWrap>
<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="contractId" />
<el-table-column label="课题编号" align="center" prop="code" />
<el-table-column label="年度" align="center" prop="year" />
<el-table-column label="课题名称" align="center" prop="name" />
<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="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">
<template #default="scope">
<el-button
@ -164,11 +137,7 @@ const queryParams = reactive({
code: undefined,
year: undefined,
name: undefined,
beginDate: [],
endData: undefined,
endData: [],
competentDeptName: undefined,
managerName: undefined,
state: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

View File

@ -1,22 +1,38 @@
<template>
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
v-loading="formLoading"
label-width="0px"
:inline-message="true"
>
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="0px"
:inline-message="true">
<fieldset v-for="(item, index) in formData" :key="index">
<el-row :gutter="20">
<el-col :xs="24" :sm="12" :md="8" :lg="6">
<el-form-item :rules="formRules.fiscalYear" label="经费年度">
<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-column label="序号" type="index" width="100" />
<el-table-column v-for="(item,index) in cloumnList" :key="index" :label="item.title" >
<template #default="{ row}">
<el-form-item class="mb-0px!">
<el-input v-model="row[item.key]" :placeholder="'请输入'+row[item.key]"/>
<el-table-column v-for="(item, index) in cloumnList" :key="index" :label="item.title">
<template #default="{ row }">
<el-form-item class="mb-0px!">
<el-input v-model="row[item.key]" :placeholder="'请输入' + row[item.key]" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="经费来源ID" min-width="150">
<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" />
@ -117,13 +133,13 @@ const handleAdd = () => {
formData.value.push(row)
}
//
const cloumnList =ref(
const cloumnList = ref(
[{
"key":"secondaryCategory",
"title":'科目'
},{
"key":"2024",
"title":'2024年'
"key": "secondaryCategory",
"title": '科目'
}, {
"key": "2024",
"title": '2024年'
}]
)

View File

@ -108,7 +108,12 @@
<el-form-item label="审核意见:" prop="comment" :rules="{ required: true, trigger: ['blur', 'change'] }">
<el-input v-model="listenerFieldForm.comment" clearable type="textarea" :rows="6" />
</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>
<template #footer>
<el-button size="small" @click="Visible = false"> </el-button>
@ -116,15 +121,20 @@
</template>
</el-dialog>
<!-- 审核记录 -->
<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-table-column label="id" align="center" prop="id" /> -->
<el-table-column type="selection" width="55" />
<el-table-column label="审核人名称" align="center" prop="creatorName" />
<el-table-column label="审核意见" align="center" prop="comment" />
<el-table-column label="审核状态" align="center" prop="status" />
<el-table-column label="审核时间" align="center" prop="createTime" />
</el-table>
<el-dialog title="审核记录" v-model="Visible1" width="600px" append-to-body destroy-on-close>
<el-timeline style="max-width: 600px">
<el-timeline-item :timestamp="item.createTime" placement="top" v-for="(item,index) in listRecord" :key="index">
<el-card>
<div class="flex items-center justify-between ">
<h4>{{item.creatorName}}</h4>
<span style="color:#409eff" v-if="item.status==1"></span>
<span v-else style="color: #f00000">不通过</span>
</div>
<p>{{item.comment}}</p>
</el-card>
</el-timeline-item>
</el-timeline>
</el-dialog>
</template>
@ -143,7 +153,7 @@ const Visible1 = ref(false) // 监听器 显示状态
const listenerFieldForm = ref<any>({}) //
const loading = ref(true) //
const list = ref<MainVO[]>([]) //
const listRecord = ref<MainVO[]>([]) //
const listRecord = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
@ -234,9 +244,9 @@ const saveListenerFiled = async () => {
if (!validateStatus) return //
try {
var param ={
itmeId: listid.value,
status:'',
comment:''
itemId: listid.value,
status:listenerFieldForm.value.status,
comment:listenerFieldForm.value.comment
}
await MainApi.saveRecordList(param)
Visible.value = false
@ -248,8 +258,9 @@ const saveListenerFiled = async () => {
const aduitRecord = async (id?: number) => {
try {
const data = await MainApi.getRecordList(id)
Visible1.value = true
listRecord.value = data.list
listRecord.value = data
Visible1.value = true
} finally {
}
}
@ -259,3 +270,13 @@ onMounted(() => {
getList()
})
</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>

View File

@ -16,7 +16,7 @@
</el-select>
</el-form-item>
<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 label="主管部门ID" prop="competentDeptId">
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" />
@ -30,27 +30,26 @@
<el-form-item label="主管工程师" prop="managerName">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="formData.createdBy" placeholder="请输入创建人" />
<el-form-item label="维护单位名称" prop="maintenanceUnitName">
<el-input v-model="formData.maintenanceUnitName" 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 label="维护单位ID" prop="maintenanceUnitId">
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="formData.updatedBy" placeholder="请输入更新人" />
<el-form-item label="承担单位名称" prop="undertakingUnitName">
<el-input v-model="formData.undertakingUnitName" 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 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>
<template #footer>
@ -81,10 +80,13 @@ const formData = ref({
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
})
const formRules = reactive({
})
@ -143,10 +145,13 @@ const resetForm = () => {
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
}
formRef.value?.resetFields()
}

View File

@ -8,6 +8,15 @@
:inline="true"
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-select
v-model="queryParams.changeType"
@ -36,6 +45,42 @@
class="!w-240px"
/>
</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-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>
@ -66,11 +111,12 @@
<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="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="主管工程师ID" align="center" prop="managerId" />
<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">
<template #default="scope">
<el-button
@ -122,9 +168,14 @@ const total = ref(0) // 列表的总页数
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
contractId: undefined,
changeType: undefined,
competentDeptName: undefined,
managerName: undefined,
maintenanceUnitName: undefined,
undertakingUnitName: undefined,
reviewUnitName: undefined,
state: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

View File

@ -47,9 +47,9 @@
placeholder="选择开始时间"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endData">
<el-form-item label="结束时间" prop="endDate">
<el-date-picker
v-model="formData.endData"
v-model="formData.endDate"
type="date"
value-format="x"
placeholder="选择结束时间"
@ -68,13 +68,34 @@
<el-input v-model="formData.age" placeholder="请输入年龄" />
</el-form-item>
<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 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 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 label="职务(职称)" prop="position">
<el-input v-model="formData.position" placeholder="请输入职务(职称)" />
@ -92,10 +113,10 @@
<el-input v-model="formData.postalCode" placeholder="请输入邮编" />
</el-form-item>
<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 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 label="主管部门ID" prop="competentDeptId">
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" />
@ -109,12 +130,30 @@
<el-form-item label="主管工程师" prop="managerName">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
</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-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">
<FundsForm ref="fundsFormRef" :contract-id="formData.id" />
</el-tab-pane>
@ -140,7 +179,6 @@
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MainApi, MainVO } from '@/api/contract/contract'
import AchieForm from './components/AchieForm.vue'
import FundsForm from './components/FundsForm.vue'
import InfoForm from './components/InfoForm.vue'
import ParticipantForm from './components/ParticipantForm.vue'
@ -166,7 +204,7 @@ const formData = ref({
planName: undefined,
year: undefined,
beginDate: undefined,
endData: undefined,
endDate: undefined,
directorId: undefined,
director: undefined,
gender: undefined,
@ -185,14 +223,20 @@ const formData = ref({
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
})
const formRules = reactive({
})
const formRef = ref() // Ref
/** 子表的表单 */
const subTabsName = ref('achie')
const achieFormRef = ref()
const subTabsName = ref('funds')
const fundsFormRef = ref()
const infoFormRef = ref()
const participantFormRef = ref()
@ -223,12 +267,6 @@ const submitForm = async () => {
//
await formRef.value.validate()
//
try {
await achieFormRef.value.validate()
} catch (e) {
subTabsName.value = 'achie'
return
}
try {
await fundsFormRef.value.validate()
} catch (e) {
@ -264,7 +302,6 @@ const submitForm = async () => {
try {
const data = formData.value as unknown as MainVO
//
data.achies = achieFormRef.value.getData()
data.fundss = fundsFormRef.value.getData()
data.info = infoFormRef.value.getData()
data.participants = participantFormRef.value.getData()
@ -296,7 +333,7 @@ const resetForm = () => {
planName: undefined,
year: undefined,
beginDate: undefined,
endData: undefined,
endDate: undefined,
directorId: undefined,
director: undefined,
gender: undefined,
@ -315,6 +352,13 @@ const resetForm = () => {
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
maintenanceUnitName: undefined,
maintenanceUnitId: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
reviewUnitName: undefined,
reviewUnitId: undefined,
state: undefined,
}
formRef.value?.resetFields()
}

View File

@ -23,10 +23,10 @@
</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 }">
<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>
</template>
</el-table-column>
@ -65,51 +65,6 @@
</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>
</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>
@ -166,11 +121,6 @@ const handleAdd = () => {
totalAmount: undefined,
unitId: undefined,
unitName: undefined,
revision: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
row.contractId = props.contractId
formData.value.push(row)

View File

@ -10,7 +10,14 @@
<el-input v-model="formData.purposeSignificance" type="textarea" placeholder="请输入项目目的与意义" />
</el-form-item>
<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 label="项目现有工作基础" prop="workFoundation">
<el-input v-model="formData.workFoundation" type="textarea" placeholder="请输入项目现有工作基础" />
@ -39,6 +46,7 @@
</el-form>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MainApi } from '@/api/contract/contract'
const props = defineProps<{

View File

@ -33,21 +33,37 @@
<el-table-column label="学历" min-width="150">
<template #default="{ row, $index }">
<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>
</template>
</el-table-column>
<el-table-column label="职务(职称)" min-width="150">
<template #default="{ row, $index }">
<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>
</template>
</el-table-column>
<el-table-column label="从事专业" min-width="150">
<template #default="{ row, $index }">
<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>
</template>
</el-table-column>
@ -79,51 +95,6 @@
</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>
</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>
@ -136,6 +107,7 @@
</el-row>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MainApi } from '@/api/contract/contract'
const props = defineProps<{
@ -182,11 +154,6 @@ const handleAdd = () => {
deptId: undefined,
deptName: undefined,
orderNo: undefined,
revision: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
row.contractId = props.contractId
formData.value.push(row)

View File

@ -21,55 +21,10 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="实施内容" min-width="200">
<el-table-column label="实施内容" min-width="400">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.implContent`" :rules="formRules.implContent" class="mb-0px!">
<el-input v-model="row.implContent" type="textarea" placeholder="请输入实施内容" />
</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="选择更新时间"
/>
<Editor v-model="row.implContent" height="150px" />
</el-form-item>
</template>
</el-table-column>
@ -123,11 +78,6 @@ const handleAdd = () => {
contractId: undefined,
implDate: undefined,
implContent: undefined,
revision: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
row.contractId = props.contractId
formData.value.push(row)

View File

@ -100,51 +100,6 @@
</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>
</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>
@ -206,11 +161,6 @@ const handleAdd = () => {
address: undefined,
sign: undefined,
orderNo: undefined,
revision: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
row.contractId = props.contractId
formData.value.push(row)

View File

@ -92,6 +92,42 @@
class="!w-240px"
/>
</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-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>
@ -119,6 +155,7 @@
<!-- 列表 -->
<ContentWrap>
<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="name" />
<el-table-column label="所属技术领域" align="center" prop="technicalField">
@ -126,6 +163,7 @@
<dict-tag :type="DICT_TYPE.TECHNICAL_FIELD" :value="scope.row.technicalField" />
</template>
</el-table-column>
<el-table-column label="计划类型Id" align="center" prop="planId" />
<el-table-column label="计划类型名称" align="center" prop="planName">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_ID" :value="scope.row.planName" />
@ -133,11 +171,48 @@
</el-table-column>
<el-table-column label="年度" align="center" prop="year" />
<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="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="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="主管工程师ID" align="center" prop="managerId" />
<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">
<template #default="scope">
<el-button
@ -174,6 +249,7 @@
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { MainApi, MainVO } from '@/api/contract/contract'
import MainForm from './MainForm.vue'
@ -198,6 +274,10 @@ const queryParams = reactive({
director: undefined,
competentDeptName: undefined,
managerName: undefined,
maintenanceUnitName: undefined,
undertakingUnitName: undefined,
reviewUnitName: undefined,
state: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

View File

@ -48,7 +48,12 @@
</el-form-item>
<el-form-item label="专利类型(如发明、实用新型、外观设计等)" prop="patentType">
<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-form-item>
<el-form-item label="专利权人姓名或公司名称" prop="patenteeName">
@ -79,6 +84,7 @@
</Dialog>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MainApi, MainVO } from '@/api/patents/patents'
import InfoForm from './components/InfoForm.vue'

View File

@ -8,15 +8,6 @@
:inline="true"
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-input
v-model="queryParams.name"
@ -35,25 +26,30 @@
class="!w-240px"
/>
</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
v-model="queryParams.inventorName"
placeholder="请输入发明人姓名"
v-model="queryParams.patenteeName"
placeholder="请输入专利权人姓名或公司名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</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-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>
@ -82,6 +78,7 @@
<ContentWrap>
<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="contractId" />
<el-table-column label="合同编号" align="center" prop="contractCode" />
<el-table-column label="专利名称" align="center" prop="name" />
<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="publicationDate" />
<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="relatedTechArea" />
<el-table-column label="技术效果" align="center" prop="technicalEffect" />
@ -129,6 +130,7 @@
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import download from '@/utils/download'
import { MainApi, MainVO } from '@/api/patents/patents'
import MainForm from './MainForm.vue'
@ -145,11 +147,10 @@ const total = ref(0) // 列表的总页数
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
contractCode: undefined,
name: undefined,
number: undefined,
inventorName: undefined,
legalStatus: undefined,
patentType: undefined,
patenteeName: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

View File

@ -17,7 +17,9 @@
<el-input v-model="formData.section" placeholder="请输入执行区段" />
</el-form-item>
<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 label="负责人Id" prop="directorId">
<el-input v-model="formData.directorId" placeholder="请输入负责人Id" />
@ -37,31 +39,12 @@
<el-form-item label="主管工程师" prop="managerName">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
</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-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">
<InfoForm ref="infoFormRef" :process-id="formData.id" />
</el-tab-pane>
@ -74,6 +57,7 @@
</template>
<script setup lang="ts">
import { MainApi, MainVO } from '@/api/process/process'
import FundsForm from './components/FundsForm.vue'
import InfoForm from './components/InfoForm.vue'
/** 执行主 表单 */
@ -98,17 +82,14 @@ const formData = ref({
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
})
const formRules = reactive({
})
const formRef = ref() // Ref
/** 子表的表单 */
const subTabsName = ref('info')
const subTabsName = ref('funds')
const fundsFormRef = ref()
const infoFormRef = ref()
/** 打开弹窗 */
@ -135,6 +116,12 @@ const submitForm = async () => {
//
await formRef.value.validate()
//
try {
await fundsFormRef.value.validate()
} catch (e) {
subTabsName.value = 'funds'
return
}
try {
await infoFormRef.value.validate()
} catch (e) {
@ -146,6 +133,7 @@ const submitForm = async () => {
try {
const data = formData.value as unknown as MainVO
//
data.fundss = fundsFormRef.value.getData()
data.info = infoFormRef.value.getData()
if (formType.value === 'create') {
await MainApi.createMain(data)
@ -176,10 +164,6 @@ const resetForm = () => {
competentDeptName: undefined,
managerId: undefined,
managerName: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
formRef.value?.resetFields()
}

View File

@ -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>

View File

@ -15,28 +15,6 @@
<el-form-item label="项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" prop="describe">
<el-input v-model="formData.describe" type="textarea" placeholder="请输入项目执行情况工作过程的描述、遇到的问题、采取的措施和方法" />
</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>
</template>
<script setup lang="ts">
@ -62,10 +40,6 @@ watch(
mainWork: undefined,
injectWork: undefined,
describe: undefined,
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
}
// 2. val
if (!val) {

View File

@ -8,6 +8,15 @@
:inline="true"
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-input
v-model="queryParams.contractCode"
@ -26,6 +35,16 @@
class="!w-240px"
/>
</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-input
v-model="queryParams.director"
@ -81,7 +100,6 @@
<ContentWrap>
<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="contractId" />
<el-table-column label="合同编号" align="center" prop="contractCode" />
<el-table-column label="执行区段" align="center" prop="section" />
<el-table-column label="进展情况(正常,拖延,停顿)" align="center" prop="progress" />
@ -139,8 +157,10 @@ const total = ref(0) // 列表的总页数
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
contractId: undefined,
contractCode: undefined,
section: undefined,
progress: undefined,
director: undefined,
competentDeptName: undefined,
managerName: undefined,

View File

@ -37,6 +37,15 @@
class="!w-240px"
/>
</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-select
v-model="queryParams.status"
@ -138,6 +147,7 @@ const queryParams = reactive({
userName: undefined,
reservationDate: [],
labName: undefined,
reservationDuration: undefined,
status: undefined,
})
const queryFormRef = ref() //

View File

@ -1,7 +1,7 @@
<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="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">
<!-- 左侧部门树 -->