diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + - 提交 @@ -807,30 +819,24 @@ - + - + - - - - - 选择 - - - + + - - + + @@ -857,15 +863,52 @@ - + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + @@ -892,33 +935,53 @@ + + + + + - + - + + - + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index b21ad07..cf4a5b9 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -260,6 +260,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '我的检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/myMeasure', + activeMenu: '/lab/myMeasureList', + }, + }, + { path: 'deptMeasureList', name: 'DeptMeasureList', component: () => import('@/views/business/lab/deptMeasure/deptMeasureList.vue'), @@ -270,6 +283,19 @@ }, }, { + path: 'myMeasureDetail/:role/:id', + name: 'MyMeasureDetail', + component: () => import('@/views/business/lab/myMeasure/measureDetail.vue'), + meta: { + title: '部门检测详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + auth: '/lab/deptMeasureList', + activeMenu: '/lab/deptMeasureList', + }, + }, + { path: 'reportOnCredentialsApproval', name: 'ReportOnCredentialsApproval', component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 066f192..7a6ebea 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -102,8 +102,9 @@ const routeStore = useRouteStore() const menuStore = useMenuStore() localStorage.removeItem('username') - localStorage.removeItem('name') localStorage.removeItem('token') + localStorage.removeItem('nameId') + localStorage.removeItem('depId') this.username = '' this.token = '' this.roleList = [] @@ -121,7 +122,8 @@ this.roleList = res.data.roleIds this.roleNames = res.data.roleNames this.roleTips = res.data.roleTips - localStorage.setItem('name', res.data.name) + localStorage.setItem('nameId', res.data.id) + localStorage.setItem('depId', res.data.deptId) } else { reject('该用户无角色') diff --git a/src/views/business/board/overdueReminder/detail.vue b/src/views/business/board/overdueReminder/detail.vue index 92987d1..0239b71 100644 --- a/src/views/business/board/overdueReminder/detail.vue +++ b/src/views/business/board/overdueReminder/detail.vue @@ -5,7 +5,7 @@ import { ref } from 'vue' import dayjs from 'dayjs' import ProcessConfig from '@/views/business/schedule/task/components/processConfig.vue' -import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface' +import type { ISampleMeasure, ITaskDetail } from '@/views/business/schedule/task/task-interface.js' import type { Menu, SimpleCertification, SimpleMeasureRecord, dictType } from '@/views/customer/sample/list/sample_list_interface' import showPhoto from '@/views/system/tool/showPhoto.vue' import { getTaskDetail } from '@/api/business/schedule/task' diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index d6cc168..05fd811 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -4,8 +4,8 @@ import type { Ref } from 'vue' import type { DateModelType } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' +import DistributeDialog from '../../schedule/task/components/distributeDialog.vue' import RollbackDialog from './../components/rollbackDialog.vue' -import DistributeDialog from './../components/distributeDialog.vue' import type { ILabQuery, ITaskList, ITaskQuery } from '@/views/business/schedule/task/task-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' @@ -131,7 +131,8 @@ const depId = ref('') // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/dispatch/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/components/chooseLab.vue b/src/views/business/lab/myMeasure/components/chooseLab.vue new file mode 100644 index 0000000..0dcebfc --- /dev/null +++ b/src/views/business/lab/myMeasure/components/chooseLab.vue @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/lab-interface.ts b/src/views/business/lab/myMeasure/components/lab-interface.ts new file mode 100644 index 0000000..02b0d1d --- /dev/null +++ b/src/views/business/lab/myMeasure/components/lab-interface.ts @@ -0,0 +1,29 @@ +// 查询参数类型 +export interface ILabSearchQuery { + organizeNo: string // 组织编号 + organizeName: string // 名称 + organizeType: string // 类型-3科室 + isLab: '1' // 是否是实验室 + director: string // 负责人 + meterMajor: string // 专业 + createStartTime: '' // 创建开始时间 + createEndTime: '' // 创建结束事假 +} + +// 部门返回值对象类型 +export interface ILabList { + id: string + deptId: string // 部门id + director: string // 负责人名称 + phone: string // 负责人电话 + meterMajor: string // 计量专业 + organizeNo: string // 实验室编号 + organizeName: string // 实验室名称 + measureItems: string // 全部检测能力 + pDeptId: string // 所属部门 + pDeptName: string // 所属部门 + organizeType: string // 组织类型 + remark?: string // 备注 + createTime?: string // 创建时间 + updateTime?: string // 更新时间 +} diff --git a/src/views/business/lab/myMeasure/components/processConfig.vue b/src/views/business/lab/myMeasure/components/processConfig.vue new file mode 100644 index 0000000..bb66076 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processConfig.vue @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNode.vue b/src/views/business/lab/myMeasure/components/processNode.vue new file mode 100644 index 0000000..fad76ab --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNode.vue @@ -0,0 +1,215 @@ + + + + + + + {{ props.step }} + + + + + + + + + + + + + 检定环节 + + + + + + + + 检定人员 + + + + + + + + 应出具证书 份 + + + 当前状态{{ processNodeData.measureStatusName }} + + + 更新时间{{ processNodeData.updateTime }} + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/components/processNodeAdd.vue b/src/views/business/lab/myMeasure/components/processNodeAdd.vue new file mode 100644 index 0000000..d7aeea0 --- /dev/null +++ b/src/views/business/lab/myMeasure/components/processNodeAdd.vue @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/measureDetail.vue b/src/views/business/lab/myMeasure/measureDetail.vue new file mode 100644 index 0000000..1a88be8 --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,601 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..e4a4637 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -13,7 +13,6 @@ import { getMyMeasureList, myExecutiveDone, myExecutiveReceive } from '@/api/business/schedule/task' import type { dictType } from '@/global' import type { IMenu } from '@/components/buttonBox/buttonBox' - const { proxy } = getCurrentInstance() as any const $router = useRouter() // 右上角按钮 @@ -128,7 +127,7 @@ } // 点击详情 const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) + $router.push(`myMeasureDetail/detail/${row.sampleId}?order=${row.orderId}`) } // 点击分发, 弹窗 diff --git a/src/views/business/lab/myMeasure/task-interface.ts b/src/views/business/lab/myMeasure/task-interface.ts new file mode 100644 index 0000000..6503a12 --- /dev/null +++ b/src/views/business/lab/myMeasure/task-interface.ts @@ -0,0 +1,169 @@ +// 任务列表查询条件 +export interface ITaskQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + sampleStatus: string // 分发状态 + startTime: string // 应检定开始时间 + endTime: string // 应检定结束时间 + limit: number + offset: number +} + +// 我的检测/部门检测查询条件 +export interface ILabQuery { + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: string // 是否加急 + sampleBelong: string // 样品属性 + measureStatus: string // 分发状态 + startTime: string | number // 应检定开始时间 + endTime: string | number // 应检定结束时间 + limit: number + offset: number +} +// 任务列表-返回值 +export interface ITaskList { + orderId: string // 委托书编号 + sampleId: string // 样品唯一标识 + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 型号 + manufacturingNo: string // 出厂编号 + orderNo: string // 委托书编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + isUrgent: number // 是否加急 + isUrgentName?: string // 是否加急 + requireOverTime: string // 应检完时间 + sampleBelong: string // 样品属性 + sampleBelongName: string // 样品属性 + currentMeasureState: string // 当前检定环节 + currentMeasureStateName: string // 当前检定环节 + alreadyCertifications: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + distributeState: string // 分发性质-初次分发、退回分发 + handOutProperty: string // 分发性质-初次分发、退回分发 + id?: string // 实验室id +} + +// 实验室检测/我的检测列表 +export interface IlabMeasureList extends ITaskList { + id: string // 实验室检测id + measurePersonId: string // 检测人id + measureSegmentId: string // 检测部门id + currentSegmentId: string // 检测部门id (新) +} + +// 全部检测流程节点 +export interface ISchedule { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 + distributePerson: string // 分配人 + distributeTime: string // 分配时间 + startTime: string // 检定开始时间 + overTime: string // 检定完成时间 +} +// 检测流程节点 +export interface IScheduleSet { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications: number // 应出具证书总数 + measureStatus: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + measureStatusName: string // 检测状态: 待分配,待检测,检测中,检测完, 已退回/取消 + updateTime: string // 流程更新时间 + measureSequence?: string // 检测顺序 +} +// 退回流程节点 +export interface IScheduleBack { + measurePersonId: string // 执行人 + measurePerson: string // 执行人名称 + measureSegmentId: string // 执行部门 + measureSegment: string // 执行部门名称 + executiveItem: string // 检定项目 + alreadyCertifications?: number // 已出具证书总数 + requireCertifications?: number // 应出具证书总数 + sendBackTime: string // 退回时间 + sendBackReason: string // 退回原因 + sendBackPersonId: string // 退回人 + sendBackPerson: string // 退回人 +} + +// 样品检测信息 +export interface ISampleMeasure { + id: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerId: string // 委托方id + customerName: string // 委托方名称 + phone: string // 委托方电话 + postalCode: string // 委托方邮编 + customerAddress: string // 委托方地址 + measureCategory: string // 检校类别 + manufacturer: string // 生产厂家 + manufacturerCountry: string // 厂家国别 + manufacturingDate: string // 出厂年月 + abc: string // ABC + measurePeriod: string // 检定周期 + minioFileName: string // 说明书 + labelBind: string // 标签绑定 + measureType: string // 检定方式 + measureTypeName: string // 检定方式 + measureLastTime?: string // 检定日期 + validDeadline: string // 有效日期 + powerVoltage: string // 电源电压 + sampleBelong: string // 样品所属 + sampleBelongName: string // 样品所属 + remark: string // 备注 +} + +export interface ITaskDetail { + measureContent: string // 检定项目 + measureProcessList: ISchedule[] // 检定流程 + measureSendBackList: ISchedule[] // 退回信息 + remark: string // 备注 + orderId: string // 委托单id + orderCode: string // 委托单编号 + certifications: string // 证书类别 + planDeliverTime: string // 预约送达时间 + requireOverTime: string // 要求检完时间 + specialRequire: string // 客户特殊要求 + deliverer: string // 送检人 + delivererTel: string // 送检人联系方式 +} + +// 退回 +export interface ISendBack { + id: string // 实验室检测id + measurePersonId: string // 检定人员id + measureSegmentId: string // 检定环节,实验室id + operateReason: string // 退回原因 + orderId: string // 委托书id + sampleId: string // 样品id +} diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..99a6852 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -141,7 +141,6 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) } diff --git a/src/views/device/borrow/borrowHandle.vue b/src/views/device/borrow/borrowHandle.vue index 6ad9900..dbaa437 100644 --- a/src/views/device/borrow/borrowHandle.vue +++ b/src/views/device/borrow/borrowHandle.vue @@ -83,11 +83,7 @@ text: '申请时间', value: 'time', align: 'center', - }, - { - text: '审批状态', - value: 'approvalStatusName', - align: 'center', + width: 160, }, ]) // 表格 // 数据查询 @@ -456,6 +452,16 @@ + + + {{ scope.row.backTime }} + + + + + {{ scope.row.approvalStatusName }} + + diff --git a/src/views/device/borrow/editHandle.vue b/src/views/device/borrow/editHandle.vue index 9a5b2a6..4e0bc5c 100644 --- a/src/views/device/borrow/editHandle.vue +++ b/src/views/device/borrow/editHandle.vue @@ -26,6 +26,7 @@ applyUnit: '', // 申请单位 applyPerson: '', // 申请人 time: '', // 借用时间 + backTime: '', // 归还时间 applyDesc: '', // 申请说明 }) const list = ref([])// 表格数据 @@ -163,7 +164,18 @@ /> - + + + + + + diff --git a/src/views/device/standingBook/components/baseInfo.vue b/src/views/device/standingBook/components/baseInfo.vue index 2ab77ef..3f90519 100644 --- a/src/views/device/standingBook/components/baseInfo.vue +++ b/src/views/device/standingBook/components/baseInfo.vue @@ -38,6 +38,7 @@ const isDetail = ref(false) const ruleForm = ref({ assetNo: '', // 资产编号 + compulsoryVerification: '', // 强制检定 assetType: '', // 资产类型 assetSource: '', // 资产来源 equipmentNo: '', // 设备编号 @@ -486,6 +487,14 @@ + + + + + + + + - 提交 @@ -807,30 +819,24 @@ - + - + - - - - - 选择 - - - + + - - + + @@ -857,15 +863,52 @@ - + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + @@ -892,33 +935,53 @@ + + + + + - + - + + - + + + + + + + diff --git a/src/views/device/stateManage/components/templateList.vue b/src/views/device/stateManage/components/templateList.vue index 0e6c220..e757cb8 100644 --- a/src/views/device/stateManage/components/templateList.vue +++ b/src/views/device/stateManage/components/templateList.vue @@ -75,21 +75,25 @@ text: '申请编号', value: 'applyNo', align: 'center', + width: 180, }, { text: '申请类型', value: 'applyTypeName', align: 'center', + width: 120, }, { text: '设备编号', value: 'equipmentNo', align: 'center', + width: 180, }, { text: '设备名称', value: 'equipmentName', align: 'center', + width: 120, }, { text: '型号', @@ -100,11 +104,13 @@ text: '设备状态', value: 'managerStateName', align: 'center', + width: 120, }, { text: '申请单位', value: 'applyUnitName', align: 'center', + width: 120, }, { text: '申请人', @@ -115,11 +121,13 @@ text: `${props.name.substring(2, 4)}时间`, value: 'time', align: 'center', + width: 180, }, { text: '审批状态', value: 'approvalStatusName', align: 'center', + width: 100, }, ]) // 表格 const list = ref([]) // 表格数据