修改执行、变更、知识产权、公共实验室

pull/480/head
admin 2024-06-13 07:13:48 +08:00
parent 076b39f7eb
commit 8ac3f8280f
12 changed files with 361 additions and 638 deletions

View File

@ -1,61 +1,61 @@
import request from '@/config/axios' import request from '@/config/axios'
// 变更申请 VO // 变更申请 VO
export interface MainVO { export interface MainVO {
id: number // 主键Id id: number // 主键Id
contractId: number // 任务书Id contractId: number // 任务书Id
projectName: string // 项目名称 projectName: string // 项目名称
projectLeader: string // 项目负责人 projectLeader: string // 项目负责人
projectLeaderId: string // 项目负责人Id projectLeaderId: string // 项目负责人Id
projectCode: string // 项目编号 projectCode: string // 项目编号
bfChange: string // 变更前 bfChange: string // 变更前
afChange: string // 变更后 afChange: string // 变更后
detailReasons: string // 详细原因及具体举措 detailReasons: string // 详细原因及具体举措
year: string // 变更年度 year: string // 变更年度
chengeType: string // 变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他 changeType: [] // 变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他
competentDeptId: string // 主管部门ID competentDeptId: string // 主管部门ID
competentDeptName: string // 主管部门 competentDeptName: string // 主管部门
managerId: string // 主管工程师ID managerId: string // 主管工程师ID
managerName: string // 主管工程师 managerName: string // 主管工程师
maintenanceUnitName: string // 维护单位名称 maintenanceUnitName: string // 维护单位名称
maintenanceUnitId: string // 维护单位ID maintenanceUnitId: string // 维护单位ID
undertakingUnitName: string // 承担单位名称 undertakingUnitName: string // 承担单位名称
undertakingUnitId: string // 承担单位ID undertakingUnitId: string // 承担单位ID
reviewUnitName: string // 审核单位名称 reviewUnitName: string // 审核单位名称
reviewUnitId: string // 审核单位ID reviewUnitId: string // 审核单位ID
state: string // 状态 state: string // 状态
revision: number // 乐观锁
} }
// 变更申请 API // 变更申请 API
export const MainApi = { export const MainApi = {
// 查询变更申请分页 // 查询变更申请分页
getMainPage: async (params: any) => { getMainPage: async (params: any) => {
return await request.get({ url: `/change/main/page`, params }) return await request.get({ url: `/change/main/page`, params })
}, },
// 查询变更申请详情 // 查询变更申请详情
getMain: async (id: number) => { getMain: async (id: number) => {
return await request.get({ url: `/change/main/get?id=` + id }) return await request.get({ url: `/change/main/get?id=` + id })
}, },
// 新增变更申请 // 新增变更申请
createMain: async (data: MainVO) => { createMain: async (data: MainVO) => {
return await request.post({ url: `/change/main/create`, data }) return await request.post({ url: `/change/main/create`, data })
}, },
// 修改变更申请 // 修改变更申请
updateMain: async (data: MainVO) => { updateMain: async (data: MainVO) => {
return await request.put({ url: `/change/main/update`, data }) return await request.put({ url: `/change/main/update`, data })
}, },
// 删除变更申请 // 删除变更申请
deleteMain: async (id: number) => { deleteMain: async (id: number) => {
return await request.delete({ url: `/change/main/delete?id=` + id }) return await request.delete({ url: `/change/main/delete?id=` + id })
}, },
// 导出变更申请 Excel // 导出变更申请 Excel
exportMain: async (params) => { exportMain: async (params) => {
return await request.download({ url: `/change/main/export-excel`, params }) return await request.download({ url: `/change/main/export-excel`, params })
}, },
} }

View File

@ -1,50 +1,50 @@
import request from '@/config/axios' import request from '@/config/axios'
// 公共实验室信 VO // 公共实验室信 VO
export interface VO { export interface VO {
id: number // 主键ID id: number // 主键ID
userName: string // 用户姓名 userName: string // 用户姓名
userContact: string // 用户联系方式 userContact: string // 用户联系方式
reservationDate: string // 预约日期 reservationDate: string // 预约日期
reservationTime: Date // 预约时间 reservationTime: Date // 预约时间
labName: string // 实验室名称 labName: string // 实验室名称
joinPeople: string // 参与人员 joinPeople: string // 参与人员
equipment: string // 实验内容及设备 equipment: string // 实验内容及设备
reservationNotes: string // 备注 reservationNotes: string // 备注
deptId: number // 单位ID deptId: number // 单位ID
deptName: string // 单位名称 deptName: string // 单位名称
revision: number // 乐观锁 revision: number // 乐观锁
} }
// 公共实验室信 API // 公共实验室信 API
export const Api = { export const Api = {
// 查询公共实验室信分页 // 查询公共实验室信分页
getPage: async (params: any) => { getPage: async (params: any) => {
return await request.get({ url: `/publicLab//page`, params }) return await request.get({ url: '/publicLab/page', params })
}, },
// 查询公共实验室信详情 // 查询公共实验室信详情
get: async (id: number) => { get: async (id: number) => {
return await request.get({ url: `/publicLab//get?id=` + id }) return await request.get({ url: '/publicLab/get?id=' + id })
}, },
// 新增公共实验室信 // 新增公共实验室信
create: async (data: VO) => { create: async (data: VO) => {
return await request.post({ url: `/publicLab//create`, data }) return await request.post({ url: '/publicLab/create', data })
}, },
// 修改公共实验室信 // 修改公共实验室信
update: async (data: VO) => { update: async (data: VO) => {
return await request.put({ url: `/publicLab//update`, data }) return await request.put({ url: '/publicLab/update', data })
}, },
// 删除公共实验室信 // 删除公共实验室信
delete: async (id: number) => { delete: async (id: number) => {
return await request.delete({ url: `/publicLab//delete?id=` + id }) return await request.delete({ url: '/publicLab/delete?id=' + id })
}, },
// 导出公共实验室信 Excel // 导出公共实验室信 Excel
export: async (params) => { export: async (params) => {
return await request.download({ url: `/publicLab//export-excel`, params }) return await request.download({ url: '/publicLab/export-excel', params })
}, },
} }

View File

@ -131,7 +131,9 @@ export enum DICT_TYPE {
TECHNICAL_FIELD = "technical_field", TECHNICAL_FIELD = "technical_field",
APPLY_UNIT_TYPE = "apply_unit_type", //立项-单位类型 APPLY_UNIT_TYPE = "apply_unit_type", //立项-单位类型
DEVIATION = 'deviation',//执行-完成情况 DEVIATION = 'deviation',//执行-完成情况
CHANGE_TYPE = 'change_type', CHANGE_TYPE = 'change_type', //变更-变更类型
PATENT_TYPE = 'patent_type',//知识产权-专利类型
LEGAL_STATUS = 'legal_status',//知识产权-法律状态
// ========== INFRA 模块 ========== // ========== INFRA 模块 ==========
INFRA_BOOLEAN_STRING = 'infra_boolean_string', INFRA_BOOLEAN_STRING = 'infra_boolean_string',

View File

@ -7,79 +7,69 @@
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="任务书Id" prop="contractId"> <el-form-item label="任务书Id" prop="contractId" v-if="false">
<el-input v-model="formData.contractId" placeholder="请输入任务书Id" /> <el-input v-model="formData.contractId" placeholder="请输入任务书Id" />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName"> <el-row :gutter="20">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" /> <el-col :span="24">
</el-form-item> <el-form-item label="项目名称" prop="projectName">
<el-form-item label="项目负责人" prop="projectLeader"> <el-input v-model="formData.projectName" placeholder="请输入项目名称" />
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="项目负责人Id" prop="projectLeaderId"> <el-col :span="8">
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" /> <el-form-item label="项目编号" prop="projectCode">
</el-form-item> <el-input v-model="formData.projectCode" placeholder="请输入项目编号" />
<el-form-item label="项目编号" prop="projectCode"> </el-form-item>
<el-input v-model="formData.projectCode" placeholder="请输入项目编号" /> </el-col>
</el-form-item> <el-col :span="8">
<el-form-item label="变更前" prop="bfChange"> <el-form-item label="项目负责人" prop="projectLeader">
<el-input v-model="formData.bfChange" type="textarea" placeholder="请输入变更前" /> <el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
</el-form-item> </el-form-item>
<el-form-item label="变更后" prop="afChange"> </el-col>
<el-input v-model="formData.afChange" type="textarea" placeholder="请输入变更后" /> <el-form-item label="项目负责人Id" prop="projectLeaderId" v-if="false">
</el-form-item> <el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" />
<el-form-item label="详细原因及具体举措" prop="detailReasons"> </el-form-item>
<el-input v-model="formData.detailReasons" type="textarea" placeholder="请输入详细原因及具体举措" /> <el-col :span="8">
</el-form-item> <el-form-item label="牵头单位" prop="undertakingUnitName">
<el-form-item label="变更年度" prop="year"> <el-input v-model="formData.undertakingUnitName" placeholder="请输入牵头单位名称" />
<el-input v-model="formData.year" placeholder="请输入变更年度" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他" prop="chengeType"> <el-form-item label="牵头单位ID" prop="undertakingUnitId" v-if="false">
<el-select v-model="formData.chengeType" placeholder="请选择变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他"> <el-input v-model="formData.undertakingUnitId" placeholder="请输入牵头单位ID" />
<el-option </el-form-item>
v-for="dict in getStrDictOptions(DICT_TYPE.CHENGE_TYPE)" <el-col :span="12">
:key="dict.value" <el-form-item label="变更前" prop="bfChange">
:label="dict.label" <el-input v-model="formData.bfChange" type="textarea" :autosize="{minRows:8, maxRows:10}" placeholder="请输入变更前的内容" />
:value="dict.value" </el-form-item>
/> </el-col>
</el-select> <el-col :span="12">
</el-form-item> <el-form-item label="变更后" prop="afChange">
<el-form-item label="主管部门ID" prop="competentDeptId"> <el-input v-model="formData.afChange" type="textarea" :autosize="{minRows:8, maxRows:10}" placeholder="请输入变更后的内容" />
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="主管部门" prop="competentDeptName"> <el-col :span="24">
<el-input v-model="formData.competentDeptName" placeholder="请输入主管部门" /> <el-form-item label="详细原因及具体举措" prop="detailReasons">
</el-form-item> <el-input v-model="formData.detailReasons" type="textarea" :autosize="{minRows:4, maxRows:8}" placeholder="请输入详细原因及具体举措" />
<el-form-item label="主管工程师ID" prop="managerId"> </el-form-item>
<el-input v-model="formData.managerId" placeholder="请输入主管工程师ID" /> </el-col>
</el-form-item> <el-form-item label="变更类型" prop="changeType">
<el-form-item label="主管工程师" prop="managerName"> <!-- <el-select v-model="formData.chengeType" placeholder="请选择变更类型">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" /> <el-option
</el-form-item> v-for="dict in getStrDictOptions(DICT_TYPE.CHENGE_TYPE)"
<el-form-item label="维护单位名称" prop="maintenanceUnitName"> :key="dict.value"
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" /> :label="dict.label"
</el-form-item> :value="dict.value"
<el-form-item label="维护单位ID" prop="maintenanceUnitId"> />
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" /> </el-select>-->
</el-form-item> <el-checkbox-group v-model="formData.chengeType" placeholder="请选择变更类型">
<el-form-item label="承担单位名称" prop="undertakingUnitName"> <el-checkbox
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" /> v-for="dict in getStrDictOptions(DICT_TYPE.CHANGE_TYPE)"
</el-form-item> :label="dict.label"
<el-form-item label="承担单位ID" prop="undertakingUnitId"> :key="dict.value"
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" /> />
</el-form-item> </el-checkbox-group>
<el-form-item label="审核单位名称" prop="reviewUnitName"> </el-form-item>
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" /> </el-row>
</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 label="乐观锁" prop="revision">
<el-input v-model="formData.revision" placeholder="请输入乐观锁" />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -201,4 +191,4 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
</script> </script>

View File

@ -8,13 +8,13 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="任务书Id" prop="contractId"> <el-form-item label="项目编号" prop="projectCode">
<el-input <el-input
v-model="queryParams.contractId" v-model="queryParams.projectCode"
placeholder="请输入任务书Id" placeholder="请输入项目编号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-150px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
@ -26,7 +26,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目负责人" prop="projectLeader"> <el-form-item label="项目负责人" prop="projectLeader" label-width="90">
<el-input <el-input
v-model="queryParams.projectLeader" v-model="queryParams.projectLeader"
placeholder="请输入项目负责人" placeholder="请输入项目负责人"
@ -35,167 +35,33 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目负责人Id" prop="projectLeaderId">
<el-input
v-model="queryParams.projectLeaderId"
placeholder="请输入项目负责人Id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="项目编号" prop="projectCode">
<el-input
v-model="queryParams.projectCode"
placeholder="请输入项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="变更年度" prop="year"> <el-form-item label="变更年度" prop="year">
<el-input <el-date-picker
v-model="queryParams.year" v-model="queryParams.year"
placeholder="请输入变更年度" placeholder="请选择变更年度"
type="year"
value-format="YYYY"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-150px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他" prop="chengeType"> <!-- <el-form-item label="变更类型" prop="changeType">
<el-select <el-select
v-model="queryParams.chengeType" v-model="queryParams.changeType"
placeholder="请选择变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他" placeholder="请选择变更类型"
clearable clearable
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CHENGE_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.CHANGE_TYPE)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="主管部门ID" prop="competentDeptId">
<el-input
v-model="queryParams.competentDeptId"
placeholder="请输入主管部门ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="主管部门" prop="competentDeptName">
<el-input
v-model="queryParams.competentDeptName"
placeholder="请输入主管部门"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="主管工程师ID" prop="managerId">
<el-input
v-model="queryParams.managerId"
placeholder="请输入主管工程师ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="主管工程师" prop="managerName">
<el-input
v-model="queryParams.managerName"
placeholder="请输入主管工程师"
clearable
@keyup.enter="handleQuery"
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="维护单位ID" prop="maintenanceUnitId">
<el-input
v-model="queryParams.maintenanceUnitId"
placeholder="请输入维护单位ID"
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="承担单位ID" prop="undertakingUnitId">
<el-input
v-model="queryParams.undertakingUnitId"
placeholder="请输入承担单位ID"
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="审核单位ID" prop="reviewUnitId">
<el-input
v-model="queryParams.reviewUnitId"
placeholder="请输入审核单位ID"
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 label="乐观锁" prop="revision">
<el-input
v-model="queryParams.revision"
placeholder="请输入乐观锁"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
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> <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>
@ -223,33 +89,32 @@
<!-- 列表 --> <!-- 列表 -->
<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="任务书Id" align="center" prop="contractId" />-->
<el-table-column label="项目名称" align="center" prop="projectName" /> <el-table-column type="selection" width="30"/>
<el-table-column label="项目负责人" align="center" prop="projectLeader" /> <el-table-column label="序号" align="center" width="80" type="index"/>
<el-table-column label="项目负责人Id" align="center" prop="projectLeaderId" /> <el-table-column label="项目编号" align="center" width="100" prop="projectCode" />
<el-table-column label="项目编号" align="center" prop="projectCode" /> <el-table-column label="项目名称" align="center" width="240" prop="projectName" />
<el-table-column label="变更前" align="center" prop="bfChange" /> <el-table-column label="项目负责人" align="center" width="100" prop="projectLeader" />
<el-table-column label="变更后" align="center" prop="afChange" /> <el-table-column label="牵头单位" align="center" width="200" prop="undertakingUnitName" />
<el-table-column label="详细原因及具体举措" align="center" prop="detailReasons" /> <!-- <el-table-column label="项目负责人Id" align="center" prop="projectLeaderId" />-->
<el-table-column label="变更年度" align="center" prop="year" /> <el-table-column label="变更年度" align="center" width="100" prop="year" />
<el-table-column label="变更类型;1:延长期限2:调整经费3:调整负责人4:调整设备5:其他" align="center" prop="chengeType"> <el-table-column label="变更类型" align="center" width="150" prop="changeType">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.CHENGE_TYPE" :value="scope.row.chengeType" /> <dict-tag :type="DICT_TYPE.CHANGE_TYPE" :value="scope.row.changeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="主管部门ID" align="center" prop="competentDeptId" /> <!-- <el-table-column label="主管部门ID" align="center" prop="competentDeptId" />-->
<el-table-column label="主管部门" align="center" prop="competentDeptName" /> <el-table-column label="主管部门" align="center" width="150" prop="competentDeptName" />
<el-table-column label="主管工程师ID" align="center" prop="managerId" /> <!-- <el-table-column label="主管工程师ID" align="center" prop="managerId" />-->
<el-table-column label="主管工程师" align="center" prop="managerName" /> <el-table-column label="主管工程师" align="center" width="150" prop="managerName" />
<el-table-column label="维护单位名称" align="center" prop="maintenanceUnitName" /> <!-- <el-table-column label="维护单位名称" align="center" prop="maintenanceUnitName" />
<el-table-column label="维护单位ID" align="center" prop="maintenanceUnitId" /> <el-table-column label="维护单位ID" align="center" prop="maintenanceUnitId" />-->
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" /> <!-- <el-table-column label="牵头单位ID" align="center" prop="undertakingUnitId" />-->
<el-table-column label="承担单位ID" align="center" prop="undertakingUnitId" /> <el-table-column label="审核单位" align="center" width="150" prop="reviewUnitName" />
<el-table-column label="审核单位名称" align="center" prop="reviewUnitName" /> <!-- <el-table-column label="审核单位ID" align="center" prop="reviewUnitId" />-->
<el-table-column label="审核单位ID" align="center" prop="reviewUnitId" /> <el-table-column label="状态" align="center" width="100" prop="state" />
<el-table-column label="状态" align="center" prop="state" />
<el-table-column label="乐观锁" align="center" prop="revision" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
@ -257,7 +122,7 @@
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center" fixed="right" width="150">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@ -319,7 +184,7 @@ const queryParams = reactive({
afChange: undefined, afChange: undefined,
detailReasons: undefined, detailReasons: undefined,
year: undefined, year: undefined,
chengeType: undefined, changeType: undefined,
competentDeptId: undefined, competentDeptId: undefined,
competentDeptName: undefined, competentDeptName: undefined,
managerId: undefined, managerId: undefined,
@ -399,4 +264,4 @@ const handleExport = async () => {
onMounted(() => { onMounted(() => {
getList() getList()
}) })
</script> </script>

View File

@ -1,9 +1,5 @@
<template> <template>
<doc-alert title="定时任务" url="https://doc.iocoder.cn/job/" /> <ContentWrap>
<doc-alert title="异步任务" url="https://doc.iocoder.cn/async-task/" />
<doc-alert title="消息队列" url="https://doc.iocoder.cn/message-queue/" />
<ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
class="-mb-15px" class="-mb-15px"

View File

@ -7,79 +7,104 @@
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="合同id" prop="contractId"> <el-row gutter="20">
<el-input v-model="formData.contractId" placeholder="请输入合同id" /> <el-form-item label="合同id" prop="contractId" v-if="false">
</el-form-item> <el-input v-model="formData.contractId" placeholder="请输入合同id" />
<el-form-item label="合同编号" prop="contractCode"> </el-form-item>
<el-input v-model="formData.contractCode" placeholder="请输入合同编号" /> <el-col :span="6">
</el-form-item> <el-form-item label="专利名称" prop="name">
<el-form-item label="专利名称" prop="name"> <el-input v-model="formData.name" placeholder="请输入专利名称" class="!w-240px" />
<el-input v-model="formData.name" placeholder="请输入专利名称" /> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="专利号" prop="number"> <el-col :span="6">
<el-input v-model="formData.number" placeholder="请输入专利号" /> <el-form-item label="专利号" prop="number">
</el-form-item> <el-input v-model="formData.number" placeholder="请输入专利号" class="!w-240px" />
<el-form-item label="发明人姓名" prop="inventorName"> </el-form-item>
<el-input v-model="formData.inventorName" placeholder="请输入发明人姓名" /> </el-col>
</el-form-item> <el-col :span="6">
<el-form-item label="申请日期" prop="filingDate"> <el-form-item label="专利类型" prop="patentType">
<el-date-picker <el-select v-model="formData.patentType" placeholder="请选择专利类型" class="!w-240px">
v-model="formData.filingDate" <el-option
type="date" v-for="dict in getStrDictOptions(DICT_TYPE.PATENT_TYPE)"
value-format="x" :key="dict.value"
placeholder="选择申请日期" :label="dict.label"
/> :value="dict.value"
</el-form-item> />
<el-form-item label="公开日期" prop="publicationDate"> </el-select>
<el-date-picker </el-form-item>
v-model="formData.publicationDate" </el-col>
type="date" <el-col :span="6">
value-format="x" <el-form-item label="关联合同编号" prop="contractCode">
placeholder="选择公开日期" <el-input v-model="formData.contractCode" placeholder="请输入关联的合同编号" class="!w-240px" />
/> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="授权日期" prop="grantDate"> <el-col :span="6">
<el-date-picker <el-form-item label="申请日" prop="filingDate">
v-model="formData.grantDate" <el-date-picker
type="date" v-model="formData.filingDate"
value-format="x" type="date"
placeholder="选择授权日期" value-format="YYYY-MM-DD"
/> placeholder="选择申请日"
</el-form-item> class="!w-240px"
<el-form-item label="专利类型(如发明、实用新型、外观设计等)" prop="patentType"> />
<el-select v-model="formData.patentType" placeholder="请选择专利类型(如发明、实用新型、外观设计等)"> </el-form-item>
<el-option </el-col>
v-for="dict in getStrDictOptions(DICT_TYPE.PATENT_TYPE)" <el-col :span="6">
:key="dict.value" <el-form-item label="公开日" prop="publicationDate">
:label="dict.label" <el-date-picker
:value="dict.value" v-model="formData.publicationDate"
/> type="date"
</el-select> value-format="YYYY-MM-DD"
</el-form-item> placeholder="选择公开日"
<el-form-item label="专利权人姓名或公司名称" prop="patenteeName"> class="!w-240px"
<el-input v-model="formData.patenteeName" placeholder="请输入专利权人姓名或公司名称" /> />
</el-form-item> </el-form-item>
<el-form-item label="相关技术领域" prop="relatedTechArea"> </el-col>
<el-input v-model="formData.relatedTechArea" placeholder="请输入相关技术领域" /> <el-col :span="6">
</el-form-item> <el-form-item label="授权日" prop="grantDate">
<el-form-item label="技术效果" prop="technicalEffect"> <el-date-picker
<el-input v-model="formData.technicalEffect" placeholder="请输入技术效果" /> v-model="formData.grantDate"
</el-form-item> type="date"
<el-form-item label="法律状态(如审查中、已授权、无效等)" prop="legalStatus"> value-format="YYYY-MM-DD"
<el-radio-group v-model="formData.legalStatus"> placeholder="选择授权日"
<el-radio class="!w-240px"
v-for="dict in getStrDictOptions(DICT_TYPE.LEGAL_STATUS)" />
:key="dict.value" </el-form-item>
:label="dict.value" </el-col>
> <el-col :span="6">
{{ dict.label }} <el-form-item label="相关技术领域" prop="relatedTechArea">
</el-radio> <el-input v-model="formData.relatedTechArea" placeholder="请输入相关技术领域" class="!w-240px" />
</el-radio-group> </el-form-item>
</el-form-item> </el-col>
<el-col :span="12">
<el-form-item label="专利权人" prop="patenteeName">
<el-input v-model="formData.patenteeName" placeholder="请输入专利权人姓名或公司名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="法律状态" prop="legalStatus">
<el-radio-group v-model="formData.legalStatus">
<el-radio
v-for="dict in getStrDictOptions(DICT_TYPE.LEGAL_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="技术效果" prop="technicalEffect">
<el-input v-model="formData.technicalEffect" type="textarea" :autosize="{minRows:4,maxRows:8}" placeholder="请输入技术效果" />
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<!-- 子表的表单 --> <!-- 子表的表单 -->
<el-tabs v-model="subTabsName"> <el-tabs v-model="subTabsName">
<el-tab-pane label="专利信息" name="info"> <el-tab-pane label="发明人信息" name="info">
<InfoForm ref="infoFormRef" :patents-id="formData.id" /> <InfoForm ref="infoFormRef" :patents-id="formData.id" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -121,8 +146,8 @@ const formData = ref({
legalStatus: undefined, legalStatus: undefined,
}) })
const formRules = reactive({ const formRules = reactive({
contractId: [{ required: true, message: '合同id不能为空', trigger: 'blur' }], name: [{ required: true, message: '专利名称不能为空', trigger: 'blur' }],
contractCode: [{ required: true, message: '合同编号不能为空', trigger: 'blur' }],
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
@ -201,4 +226,4 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
</script> </script>

View File

@ -9,6 +9,13 @@
> >
<el-table :data="formData" class="-mt-10px"> <el-table :data="formData" class="-mt-10px">
<el-table-column label="序号" type="index" width="100" /> <el-table-column label="序号" type="index" width="100" />
<el-table-column label="排序号" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.number`" :rules="formRules.number" class="mb-0px!">
<el-input v-model="row.number" placeholder="请输入排序号" />
</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}.inventorName`" :rules="formRules.inventorName" class="mb-0px!"> <el-form-item :prop="`${$index}.inventorName`" :rules="formRules.inventorName" class="mb-0px!">
@ -23,13 +30,7 @@
</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}.number`" :rules="formRules.number" class="mb-0px!">
<el-input v-model="row.number" placeholder="请输入排序号" />
</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}.deptName`" :rules="formRules.deptName" class="mb-0px!"> <el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
@ -37,13 +38,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}.updated`" :rules="formRules.updated" class="mb-0px!">
<el-input v-model="row.updated" 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>
@ -123,4 +117,4 @@ const getData = () => {
} }
defineExpose({ validate, getData }) defineExpose({ validate, getData })
</script> </script>

View File

@ -35,43 +35,12 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="申请日期" prop="filingDate">
<el-date-picker
v-model="queryParams.filingDate" <el-form-item label="专利类型" prop="patentType">
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="publicationDate">
<el-date-picker
v-model="queryParams.publicationDate"
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="grantDate">
<el-date-picker
v-model="queryParams.grantDate"
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="patentType">
<el-select <el-select
v-model="queryParams.patentType" v-model="queryParams.patentType"
placeholder="请选择专利类型(如发明、实用新型、外观设计等" placeholder="请选择专利类型)"
clearable clearable
class="!w-240px" class="!w-240px"
> >
@ -83,10 +52,10 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="法律状态(如审查中、已授权、无效等)" prop="legalStatus"> <el-form-item label="法律状态" prop="legalStatus">
<el-select <el-select
v-model="queryParams.legalStatus" v-model="queryParams.legalStatus"
placeholder="请选择法律状态(如审查中、已授权、无效等)" placeholder="请选择法律状态"
clearable clearable
class="!w-240px" class="!w-240px"
> >
@ -98,17 +67,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
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> <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>
@ -136,23 +95,22 @@
<!-- 列表 --> <!-- 列表 -->
<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 type="selection" width="30"/>
<el-table-column label="合同id" align="center" prop="contractId" /> <el-table-column label="序号" align="center" width="80" type="index"/>
<el-table-column label="合同编号" align="center" prop="contractCode" /> <el-table-column label="专利号" align="center" prop="number" width="150" />
<el-table-column label="专利名称" align="center" prop="name" /> <el-table-column label="专利名称" align="center" prop="name" width="240"/>
<el-table-column label="专利号" align="center" prop="number" /> <el-table-column label="关联项目编号" align="center" prop="contractCode" width="150" />
<el-table-column label="发明人姓名" align="center" prop="inventorName" /> <el-table-column label="关联项目名称" align="center" prop="projectName" width="200" />
<el-table-column label="申请日期" align="center" prop="filingDate" /> <el-table-column label="专利权人" align="center" prop="patenteeName" width="180"/>
<el-table-column label="公开日" align="center" prop="publicationDate" /> <el-table-column label="公开日" align="center" prop="publicationDate" width="150"/>
<el-table-column label="授权日" align="center" prop="grantDate" /> <el-table-column label="授权日" align="center" prop="grantDate" width="150"/>
<el-table-column label="专利类型(如发明、实用新型、外观设计等)" align="center" prop="patentType"> <el-table-column label="专利类型" align="center" prop="patentType" width="150">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.PATENT_TYPE" :value="scope.row.patentType" /> <dict-tag :type="DICT_TYPE.PATENT_TYPE" :value="scope.row.patentType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="相关技术领域" align="center" prop="relatedTechArea" /> <el-table-column label="相关技术领域" align="center" prop="relatedTechArea" width="150" />
<el-table-column label="技术效果" align="center" prop="technicalEffect" /> <el-table-column label="法律状态" align="center" prop="legalStatus" width="150">
<el-table-column label="法律状态(如审查中、已授权、无效等)" align="center" prop="legalStatus">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.LEGAL_STATUS" :value="scope.row.legalStatus" /> <dict-tag :type="DICT_TYPE.LEGAL_STATUS" :value="scope.row.legalStatus" />
</template> </template>
@ -164,7 +122,7 @@
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center" fixed="right" width="150">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@ -292,4 +250,4 @@ const handleExport = async () => {
onMounted(() => { onMounted(() => {
getList() getList()
}) })
</script> </script>

View File

@ -144,7 +144,7 @@ const formRef = ref() // 表单 Ref
const handleSelectChange = (newValue) => { const handleSelectChange = (newValue) => {
if(newValue == 0){ if(newValue == 0){
formData.value.reason =undefined formData.value.reason =''
formRules.reason[0].required= false formRules.reason[0].required= false
}else{ }else{
formRules.reason[0].required= true formRules.reason[0].required= true

View File

@ -41,15 +41,6 @@
<el-form-item label="备注" prop="reservationNotes"> <el-form-item label="备注" prop="reservationNotes">
<el-input v-model="formData.reservationNotes" placeholder="请输入备注" /> <el-input v-model="formData.reservationNotes" placeholder="请输入备注" />
</el-form-item> </el-form-item>
<el-form-item label="单位ID" prop="deptId">
<el-input v-model="formData.deptId" placeholder="请输入单位ID" />
</el-form-item>
<el-form-item label="单位名称" prop="deptName">
<el-input v-model="formData.deptName" placeholder="请输入单位名称" />
</el-form-item>
<el-form-item label="乐观锁" prop="revision">
<el-input v-model="formData.revision" placeholder="请输入乐观锁" />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -148,4 +139,4 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
</script> </script>

View File

@ -6,26 +6,8 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="68px" label-width="100px"
> >
<el-form-item label="用户姓名" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户姓名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="用户联系方式" prop="userContact">
<el-input
v-model="queryParams.userContact"
placeholder="请输入用户联系方式"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="预约日期" prop="reservationDate"> <el-form-item label="预约日期" prop="reservationDate">
<el-date-picker <el-date-picker
v-model="queryParams.reservationDate" v-model="queryParams.reservationDate"
@ -37,17 +19,6 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="预约时间" prop="reservationTime">
<el-date-picker
v-model="queryParams.reservationTime"
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="labName"> <el-form-item label="实验室名称" prop="labName">
<el-input <el-input
v-model="queryParams.labName" v-model="queryParams.labName"
@ -57,71 +28,6 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="参与人员" prop="joinPeople">
<el-input
v-model="queryParams.joinPeople"
placeholder="请输入参与人员"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="实验内容及设备" prop="equipment">
<el-input
v-model="queryParams.equipment"
placeholder="请输入实验内容及设备"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="reservationNotes">
<el-input
v-model="queryParams.reservationNotes"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单位ID" prop="deptId">
<el-input
v-model="queryParams.deptId"
placeholder="请输入单位ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单位名称" prop="deptName">
<el-input
v-model="queryParams.deptName"
placeholder="请输入单位名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="乐观锁" prop="revision">
<el-input
v-model="queryParams.revision"
placeholder="请输入乐观锁"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
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> <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>
@ -149,32 +55,28 @@
<!-- 列表 --> <!-- 列表 -->
<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" width="80" type="index"/>
<el-table-column label="用户姓名" align="center" prop="userName" /> <el-table-column label="实验室名称" align="center" prop="labName" width="200"/>
<el-table-column label="用户联系方式" align="center" prop="userContact" /> <el-table-column label="实验内容及设备" align="center" prop="equipment" width="200"/>
<el-table-column label="预约日期" align="center" prop="reservationDate" /> <el-table-column label="预约日期" align="center" prop="reservationDate" width="150" />
<el-table-column <el-table-column
label="预约时间" label="预约时间"
align="center" align="center"
prop="reservationTime" prop="reservationTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180"
/> />
<el-table-column label="实验室名称" align="center" prop="labName" /> <el-table-column label="用户姓名" align="center" prop="userName" width="150" />
<el-table-column label="参与人员" align="center" prop="joinPeople" /> <el-table-column label="用户联系方式" align="center" prop="userContact" width="150" />
<el-table-column label="实验内容及设备" align="center" prop="equipment" /> <el-table-column label="单位名称" align="center" prop="deptName" width="200"/>
<el-table-column label="备注" align="center" prop="reservationNotes" />
<el-table-column label="单位ID" align="center" prop="deptId" />
<el-table-column label="单位名称" align="center" prop="deptName" />
<el-table-column label="乐观锁" align="center" prop="revision" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
prop="createTime" prop="createTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180"
/> />
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@ -304,4 +206,4 @@ const handleExport = async () => {
onMounted(() => { onMounted(() => {
getList() getList()
}) })
</script> </script>