diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ scope.$index + 1 }} + + + + + + + + + + + + + + 确定 + + + 取消 + + + + + + + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/views/device/standingBook/components/templatePage.vue b/src/views/device/standingBook/components/templatePage.vue index fec6990..e46753d 100644 --- a/src/views/device/standingBook/components/templatePage.vue +++ b/src/views/device/standingBook/components/templatePage.vue @@ -94,6 +94,7 @@ { text: '型号', value: 'modelNo', align: 'center' }, { text: 'ABC', value: 'abc', align: 'center', width: 58 }, { text: '检定方式', value: 'mesureTypeName', align: 'center', width: 90 }, + { text: '强制检定', value: 'compulsoryVerification', align: 'center', width: 90 }, { text: '管理状态', value: 'managerStateName', align: 'center', width: 100 }, { text: '使用部门', value: 'useDeptName', align: 'center' }, { text: '使用人', value: 'usePersonName', align: 'center' }, @@ -139,7 +140,10 @@ } listPageApi(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: any) => { + item.validDate = item.validDate.split(' ')[0] + return item + }) total.value = res.data.total } loadingTable.value = false diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/views/device/standingBook/components/templatePage.vue b/src/views/device/standingBook/components/templatePage.vue index fec6990..e46753d 100644 --- a/src/views/device/standingBook/components/templatePage.vue +++ b/src/views/device/standingBook/components/templatePage.vue @@ -94,6 +94,7 @@ { text: '型号', value: 'modelNo', align: 'center' }, { text: 'ABC', value: 'abc', align: 'center', width: 58 }, { text: '检定方式', value: 'mesureTypeName', align: 'center', width: 90 }, + { text: '强制检定', value: 'compulsoryVerification', align: 'center', width: 90 }, { text: '管理状态', value: 'managerStateName', align: 'center', width: 100 }, { text: '使用部门', value: 'useDeptName', align: 'center' }, { text: '使用人', value: 'usePersonName', align: 'center' }, @@ -139,7 +140,10 @@ } listPageApi(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: any) => { + item.validDate = item.validDate.split(' ')[0] + return item + }) total.value = res.data.total } loadingTable.value = false diff --git a/src/views/device/standingBook/standingBook-interface.ts b/src/views/device/standingBook/standingBook-interface.ts index bd55019..ee29254 100644 --- a/src/views/device/standingBook/standingBook-interface.ts +++ b/src/views/device/standingBook/standingBook-interface.ts @@ -105,7 +105,7 @@ validDate: string // 有效日期 version: string // 版本号 weight: string // 重量(吨) - + compulsoryVerification?: string | number // 强制检定 } // 固定资产-查询用 diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/views/device/standingBook/components/templatePage.vue b/src/views/device/standingBook/components/templatePage.vue index fec6990..e46753d 100644 --- a/src/views/device/standingBook/components/templatePage.vue +++ b/src/views/device/standingBook/components/templatePage.vue @@ -94,6 +94,7 @@ { text: '型号', value: 'modelNo', align: 'center' }, { text: 'ABC', value: 'abc', align: 'center', width: 58 }, { text: '检定方式', value: 'mesureTypeName', align: 'center', width: 90 }, + { text: '强制检定', value: 'compulsoryVerification', align: 'center', width: 90 }, { text: '管理状态', value: 'managerStateName', align: 'center', width: 100 }, { text: '使用部门', value: 'useDeptName', align: 'center' }, { text: '使用人', value: 'usePersonName', align: 'center' }, @@ -139,7 +140,10 @@ } listPageApi(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: any) => { + item.validDate = item.validDate.split(' ')[0] + return item + }) total.value = res.data.total } loadingTable.value = false diff --git a/src/views/device/standingBook/standingBook-interface.ts b/src/views/device/standingBook/standingBook-interface.ts index bd55019..ee29254 100644 --- a/src/views/device/standingBook/standingBook-interface.ts +++ b/src/views/device/standingBook/standingBook-interface.ts @@ -105,7 +105,7 @@ validDate: string // 有效日期 version: string // 版本号 weight: string // 重量(吨) - + compulsoryVerification?: string | number // 强制检定 } // 固定资产-查询用 diff --git a/src/views/device/stateManage/components/status-interface.ts b/src/views/device/stateManage/components/status-interface.ts index 93410a7..dd27189 100644 --- a/src/views/device/stateManage/components/status-interface.ts +++ b/src/views/device/stateManage/components/status-interface.ts @@ -90,4 +90,6 @@ // 目录数组 export interface EquipmentListRow { equipmentId: string + assetOriginValue?: string + financialValue?: string } diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/views/device/standingBook/components/templatePage.vue b/src/views/device/standingBook/components/templatePage.vue index fec6990..e46753d 100644 --- a/src/views/device/standingBook/components/templatePage.vue +++ b/src/views/device/standingBook/components/templatePage.vue @@ -94,6 +94,7 @@ { text: '型号', value: 'modelNo', align: 'center' }, { text: 'ABC', value: 'abc', align: 'center', width: 58 }, { text: '检定方式', value: 'mesureTypeName', align: 'center', width: 90 }, + { text: '强制检定', value: 'compulsoryVerification', align: 'center', width: 90 }, { text: '管理状态', value: 'managerStateName', align: 'center', width: 100 }, { text: '使用部门', value: 'useDeptName', align: 'center' }, { text: '使用人', value: 'usePersonName', align: 'center' }, @@ -139,7 +140,10 @@ } listPageApi(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: any) => { + item.validDate = item.validDate.split(' ')[0] + return item + }) total.value = res.data.total } loadingTable.value = false diff --git a/src/views/device/standingBook/standingBook-interface.ts b/src/views/device/standingBook/standingBook-interface.ts index bd55019..ee29254 100644 --- a/src/views/device/standingBook/standingBook-interface.ts +++ b/src/views/device/standingBook/standingBook-interface.ts @@ -105,7 +105,7 @@ validDate: string // 有效日期 version: string // 版本号 weight: string // 重量(吨) - + compulsoryVerification?: string | number // 强制检定 } // 固定资产-查询用 diff --git a/src/views/device/stateManage/components/status-interface.ts b/src/views/device/stateManage/components/status-interface.ts index 93410a7..dd27189 100644 --- a/src/views/device/stateManage/components/status-interface.ts +++ b/src/views/device/stateManage/components/status-interface.ts @@ -90,4 +90,6 @@ // 目录数组 export interface EquipmentListRow { equipmentId: string + assetOriginValue?: string + financialValue?: string } diff --git a/src/views/device/stateManage/components/templateAdd.vue b/src/views/device/stateManage/components/templateAdd.vue index 42e3ed8..4dda89a 100644 --- a/src/views/device/stateManage/components/templateAdd.vue +++ b/src/views/device/stateManage/components/templateAdd.vue @@ -22,6 +22,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { cancelApproval, fetchApproval } from '@/api/approval' +const user = useUserStore() // 用户信息 const $route = useRoute() const userInfo = useUserStore() const $router = useRouter() @@ -42,8 +43,12 @@ remark: '', // 申请说明 time: '', // 时间 fileList: [] as any[], // 说明书 - applyUnit: '', // 申请单位 - applyPerson: '', // 申请人 + applyUnit: window.localStorage.getItem('depId') as string, // 申请单位 + applyPerson: window.localStorage.getItem('nameId') as string, // 申请人 + applyNo: '', // 申请单编号 + applyName: '', // 申请单名称 + assetOriginValue: '', // 资产原值 + financialValue: '', // 财务净值 equipmentNo: '', // 设备编号 equipmentName: '', // 设备名称 modelNo: '', // 型号 @@ -56,15 +61,18 @@ }) // 设备借用表单 const ruleForm2 = ref({ + applyNo: '', // 申请编号 applyUnit: '', // 申请单位 applyPerson: '', // 申请人 - time: '', // 借用时间 + time: dayjs().format('YYYY-MM-DD HH:mm:ss'), // 申请时间, // 借用时间 applyDesc: '', // 申请说明 applyType: '', // 申请类型 applyName: '', // 申请名称 + applyPersonName: user.name, // 申请人名称 + applyUnitName: user.deptName, // 申请单位名称 createUser: userInfo.$state.id, approvalStatus: '', - createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + createTime: dayjs().format('YYYY-MM-DD hh:mm:ss'), id: '', }) const rules1 = ref({ @@ -72,7 +80,9 @@ applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], equipmentNo: [{ required: true, message: '设备编号不能为空', trigger: 'blur' }], time: [{ required: true, message: `${name.value.substring(2, 4)}时间不能为空`, trigger: 'blur' }], - applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], + applyName: [{ required: true, message: '申请单名称不能为空', trigger: 'blur' }], + assetOriginValue: [{ required: true, message: '资产原值不能为空', trigger: 'blur' }], + financialValue: [{ required: true, message: '财务净值不能为空', trigger: 'blur' }], }) watch(() => ruleForm1.value, (newVal) => { if (name.value === '详情') { @@ -88,10 +98,10 @@ immediate: true, }) const rules2 = ref({ - applyUnit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], - applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], + // applyUnit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], + // applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], time: [{ required: true, message: '借用时间不能为空', trigger: 'blur' }], - applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], + // applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], }) const ruleArr = ['applyUnit', 'applyPerson', 'time', 'applyName'] watch(() => ruleForm2.value, (newVal: { [key: string]: string }, oldVal) => { @@ -243,10 +253,6 @@ } } -onMounted(async () => { - initDialog($route.query) -}) - // 关闭弹窗 const close = () => { $router.back() @@ -265,6 +271,7 @@ ...ruleForm2.value, equipmentList: borrowList.value.map(item => ({ equipmentId: item.id, + })), } if (title.value === '新建') { @@ -412,6 +419,8 @@ type: 'warning', }, ).then((res) => { + ruleForm1.value.equipmentList[0].assetOriginValue = ruleForm1.value.assetOriginValue + ruleForm1.value.equipmentList[0].financialValue = ruleForm1.value.financialValue addStatus(ruleForm1.value).then((res) => { if (res.code === 200) { ElMessage.success('操作成功!') @@ -745,6 +754,10 @@ borrowList.value.splice(selectIndex.value, 1, val[0]) } } + +onMounted(() => { + initDialog($route.query) +}) @@ -758,13 +771,12 @@ 提交 - + 保存 - 提交 @@ -807,30 +819,24 @@ - + - + - - - - - 选择 - - - + + - - + + @@ -857,15 +863,52 @@ - + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + @@ -892,33 +935,53 @@ + + + + + - + - + + - + + + + + + + diff --git a/src/api/business/lab/cert.ts b/src/api/business/lab/cert.ts index 2b0e682..2c99ed0 100644 --- a/src/api/business/lab/cert.ts +++ b/src/api/business/lab/cert.ts @@ -51,7 +51,7 @@ } // 证书详情 -export function detail(data: object) { +export function certificatePrintDetail(data: object) { return request({ url: '/business/certificatePrint/detail', method: 'post', diff --git a/src/api/business/schedule/task.ts b/src/api/business/schedule/task.ts index 420e7b6..ebf033a 100644 --- a/src/api/business/schedule/task.ts +++ b/src/api/business/schedule/task.ts @@ -140,3 +140,29 @@ }) } +// 证书监控 +export function certificateMonitorsById(data: object) { + return request({ + url: '/business/certificateReport/certificateMonitorsById', + method: 'post', + data, + }) +} + +// 检定记录 +export function measureRecordsById(data: object) { + return request({ + url: '/customer/sample/measureRecordsById', + method: 'post', + data, + }) +} + +// 检定证书 +export function certificateRecordsById(data: object) { + return request({ + url: '/business/certificateReport/certificateRecordsById', + method: 'post', + data, + }) +} diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue index 16c1311..53e8373 100644 --- a/src/components/Sample/certificationMonitor.vue +++ b/src/components/Sample/certificationMonitor.vue @@ -1,15 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + {{ 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..e3b85bb --- /dev/null +++ b/src/views/business/lab/myMeasure/measureDetail.vue @@ -0,0 +1,603 @@ + + + + + + + + + 打印 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 扫描 + + + + + + + + + + + 无 + + + {{ sampleForm.minioFileName === '' ? '上传' : '更换附件' }} + + + + + + + + + + + + + + + + + + + + + 证书监控 + + + 检定记录 + + + 检定证书 + + + + + + + + + + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 62f8830..d9093fe 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}&customerId=${row.customerId}`) } // 点击分发, 弹窗 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/certPrint/certDetail.vue b/src/views/business/schedule/certPrint/certDetail.vue index 3479854..2a9e394 100644 --- a/src/views/business/schedule/certPrint/certDetail.vue +++ b/src/views/business/schedule/certPrint/certDetail.vue @@ -9,6 +9,7 @@ import { UploadFile } from '@/api/measure/file' import useUserStore from '@/store/modules/user' import showPhoto from '@/views/system/tool/showPhoto.vue' +import { certificatePrintDetail } from '@/api/business/lab/cert' const loading = ref(false) // 表单加载状态 const infoId = ref('') // 证书id const printStatus = ref('') // 可打印状态 @@ -18,16 +19,6 @@ // 从路由中获取页面类型参数 const $route = useRoute() -if ($route.params && $route.params.id) { - infoId.value = $route.query.id as string -} -if ($route.query && $route.query.printStatus) { - printStatus.value = $route.query.printStatus as string -} - -if ($route.query && $route.query.pageType) { - pageType.value = $route.query.pageType as string -} // 逻辑代码 const dataForm = ref({ @@ -219,54 +210,49 @@ // 获取详情信息 const getInfo = (id: string | number) => { - dataForm.value = { - certificationId: '1111', - certificationReportCode: '1111', - certificationReportName: '校准证书', - certificateReportType: '1', - certificateReportTypeName: '校准证书', - sampleId: '1', - sampleNo: '45678652', - sampleName: '压力表', - sampleModel: 'xx', - manufacturingNo: '北无', - orderId: '123456', - orderNo: '123456', - customerNo: '4578545', - customerName: '京东', - measureCatogory: '1', - measureCatogoryName: '光学', - createUser: '', - createUserName: '张三', - printNum: '0', - printStatus: '1', - createTime: '2023-01-05', - calibrationMajor: '1', - issuanceDate: '2023-02-05', - signId: '', - signName: '公司公章', - approvalSignId: '', - approvalSignName: 'CNAS章', - certificateReportFile: '', - originalRecordId: '', - originalRecordCode: '11111', - roomNumber: '304', - temperature: '36', - humidity: '27', - manufacturer: '北无', - customerPhone: '', - customerAddress: '', - deliverer: '张三', - delivererTel: '87447', - planDeliverTime: '2023-02-05', - requireOverTime: '2023-02-05', - mesureContent: 'IP68', - remark: '', - } +// dataForm.value = { +// "approvalStatus": "2", +// "certificateReportCategory": "1,2", +// "certificateReportCode": "RIM202303002", +// "certificateReportFile": "", +// "certificateReportName": "证书报告名称03", +// "certificateReportType": "1", +// "createTime": "2023-03-14T18:28:41", +// "createUser": "1", +// "customerAddress": "ewfewfe ", +// "customerEmail": "", +// "customerName": "京东集团", +// "customerNo": "wtsc202302080001", +// "customerPhone": "950618", +// "deliverer": "张三", +// "delivererId": "1", +// "delivererTel": "113652204", +// "id": "154524246245210210", +// "isDel": false, +// "measureContent": "项目4", +// "measureDeptId": "", +// "measurePersonId": "1", +// "measureType": "2", +// "orderId": "1623234926190817282", +// "originalRecordId": "1625802150301368321", +// "originalRecordName": "", +// "planDeliverTime": "2022-11-29T21:14:50", +// "printNum": 0, +// "printStatus": "1", +// "processId": "", +// "remark": "", +// "requireOverTime": "2023-01-29T21:14:50", +// "sampleId": "1625742343335677953", +// "sampleName": "测试4", +// "sampleNo": "", +// "signId": "", +// "templateId": "" +// } + // certificatePrintDetail({ id }).then(res => { + // dataForm.value = res.data; + // }) } -getInfo(infoId.value) - // 保存后的id const addId = ref('') @@ -303,6 +289,20 @@ const handleClose = () => { dialogVisible.value = false } + +onMounted(() => { + if ($route.params && $route.params.id) { + infoId.value = $route.query.id as string + } + if ($route.query && $route.query.printStatus) { + printStatus.value = $route.query.printStatus as string + } + + if ($route.query && $route.query.pageType) { + pageType.value = $route.query.pageType as string + } + getInfo(infoId.value) +}) @@ -324,19 +324,10 @@ - + @@ -349,10 +340,7 @@ @@ -360,10 +348,7 @@ @@ -371,20 +356,12 @@ - + - + @@ -397,15 +374,9 @@ - + - + 查看 @@ -414,173 +385,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - @@ -588,22 +481,14 @@ - + - + @@ -613,7 +498,10 @@ 无 - + {{ dataForm.certificateReportFile === '' ? '上传' : '更换附件' }} @@ -624,23 +512,14 @@ - + diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index 9dee20f..daf18c6 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -103,9 +103,9 @@ { text: '型号', value: 'sampleModel', width: '120', align: 'center' }, { text: '出厂编号', value: 'manufacturingNo', width: '120', align: 'center' }, { text: '委托书编号', value: 'orderNo', width: '120', align: 'center' }, - { text: '检校类别', value: 'measureType', width: '120', align: 'center' }, + { text: '检校类别', value: 'measureTypeName', width: '120', align: 'center' }, { text: '检定人员', value: 'measurePersonId', width: '120', align: 'center' }, - { text: '证书类型', value: 'certificateType', width: '120', align: 'center' }, + { text: '证书类型', value: 'certificateTypeName', width: '120', align: 'center' }, { text: '打印状态', value: 'printNum', align: 'center', width: '85px', filter: (row: ICerPrintList) => { var cnum = ['未打印', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; return row.printNum == 0 ? '未打印' : `${cnum[parseInt(row.printNum as string)]}次打印` } }, { text: '生成时间', value: 'createTime', align: 'center', width: '165px' }, ]) @@ -411,7 +411,7 @@ - + //pdf预览 diff --git a/src/views/business/schedule/task/components/distributeDialog.vue b/src/views/business/schedule/task/components/distributeDialog.vue index d46a204..d342a64 100644 --- a/src/views/business/schedule/task/components/distributeDialog.vue +++ b/src/views/business/schedule/task/components/distributeDialog.vue @@ -45,7 +45,7 @@ sampleDetail.value.sampleName = res.data.sampleName sampleDetail.value.mesureContent = res.data.mesureContent sampleDetail.value.remark = res.data.remark - sampleDetail.value.certifications = res.data.certifications + sampleDetail.value.certifications = res.data.certifications.split(',') sampleDetail.value.measureProcessList = res.data.measureProcessList sampleDetail.value.measureSendBackList = res.data.measureSendBackList getInfoNext(res.data.measureContent) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 6503a12..50308c7 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -52,6 +52,7 @@ distributeState: string // 分发性质-初次分发、退回分发 handOutProperty: string // 分发性质-初次分发、退回分发 id?: string // 实验室id + customerId?: string // 客户id } // 实验室检测/我的检测列表 diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index 1d1e04f..d8fc8e3 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -22,6 +22,7 @@ const loading = ref(false) // 表单加载状态 const sampleId = ref('') // 样品详情id const orderId = ref('') // 委托书id +const customerId = ref('') // 客户id const mesureCategoryList = ref([]) // 校检类别 const mesureTypeList = ref([]) // 检定方式 @@ -274,6 +275,7 @@ if ($route.params.id) { sampleId.value = $route.params.id as string orderId.value = $route.query.order as string + customerId.value = $route.query.customerId as string // 获取分发详情 getInfo() // getSampleInfo() // 取消 @@ -530,7 +532,7 @@ :disabled="roleType === 'detail'" :class="{ 'detail-input': roleType === 'detail' }" > - + 扫描 @@ -583,11 +585,11 @@ - + - + - + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 0efec98..dfbbf6a 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -81,8 +81,7 @@ { text: '应检完时间', value: 'requireOverTime', align: 'center', width: '165px' }, { text: '样品属性', value: 'sampleBelongName', width: '100', align: 'center' }, { text: '当前检定环节', value: 'currentSegment', align: 'center', width: '90' }, - { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return row.alreadyCertifications ? `${row.alreadyCertifications}/${row.requireCertifications}` : '0/0' } }, - { text: '分发性质', value: 'handOutProperty', align: 'center', width: '90px' }, + { text: '证书出具', value: 'certificationState', align: 'center', width: '90', filter: (row: ITaskList) => { return `${row.alreadyCertifications}/${row.requireCertifications}` } }, ]) // 表格数据 const list = ref([]) @@ -101,6 +100,7 @@ listQuery.value.offset = 1 } listQuery.value.sampleStatus = active.value || '2' + list.value = [] getTaskList(listQuery.value).then((response) => { list.value = response.data.rows.map((item: ITaskList) => { item.isUrgentName = item.isUrgent == 1 ? '是' : '否' @@ -141,8 +141,8 @@ // 点击详情 const handleDetail = (row: ITaskList) => { console.log('跳转任务分发详情') - - $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}`) + // $router.push(`/schedule/task/distribute/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) + $router.push(`/schedule/task/detail/${row.sampleId}?order=${row.orderId}&customerId=${row.customerId}`) } // 点击分发, 弹窗 @@ -317,6 +317,12 @@ + + + + {{ row.handOutProperty }} + + 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 28bd6e1..1fbe319 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: '', // 设备编号 @@ -473,6 +474,14 @@ + + + + + + + + @@ -495,7 +504,7 @@ - + diff --git a/src/views/device/standingBook/components/templatePage.vue b/src/views/device/standingBook/components/templatePage.vue index fec6990..e46753d 100644 --- a/src/views/device/standingBook/components/templatePage.vue +++ b/src/views/device/standingBook/components/templatePage.vue @@ -94,6 +94,7 @@ { text: '型号', value: 'modelNo', align: 'center' }, { text: 'ABC', value: 'abc', align: 'center', width: 58 }, { text: '检定方式', value: 'mesureTypeName', align: 'center', width: 90 }, + { text: '强制检定', value: 'compulsoryVerification', align: 'center', width: 90 }, { text: '管理状态', value: 'managerStateName', align: 'center', width: 100 }, { text: '使用部门', value: 'useDeptName', align: 'center' }, { text: '使用人', value: 'usePersonName', align: 'center' }, @@ -139,7 +140,10 @@ } listPageApi(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: any) => { + item.validDate = item.validDate.split(' ')[0] + return item + }) total.value = res.data.total } loadingTable.value = false diff --git a/src/views/device/standingBook/standingBook-interface.ts b/src/views/device/standingBook/standingBook-interface.ts index bd55019..ee29254 100644 --- a/src/views/device/standingBook/standingBook-interface.ts +++ b/src/views/device/standingBook/standingBook-interface.ts @@ -105,7 +105,7 @@ validDate: string // 有效日期 version: string // 版本号 weight: string // 重量(吨) - + compulsoryVerification?: string | number // 强制检定 } // 固定资产-查询用 diff --git a/src/views/device/stateManage/components/status-interface.ts b/src/views/device/stateManage/components/status-interface.ts index 93410a7..dd27189 100644 --- a/src/views/device/stateManage/components/status-interface.ts +++ b/src/views/device/stateManage/components/status-interface.ts @@ -90,4 +90,6 @@ // 目录数组 export interface EquipmentListRow { equipmentId: string + assetOriginValue?: string + financialValue?: string } diff --git a/src/views/device/stateManage/components/templateAdd.vue b/src/views/device/stateManage/components/templateAdd.vue index 42e3ed8..4dda89a 100644 --- a/src/views/device/stateManage/components/templateAdd.vue +++ b/src/views/device/stateManage/components/templateAdd.vue @@ -22,6 +22,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { cancelApproval, fetchApproval } from '@/api/approval' +const user = useUserStore() // 用户信息 const $route = useRoute() const userInfo = useUserStore() const $router = useRouter() @@ -42,8 +43,12 @@ remark: '', // 申请说明 time: '', // 时间 fileList: [] as any[], // 说明书 - applyUnit: '', // 申请单位 - applyPerson: '', // 申请人 + applyUnit: window.localStorage.getItem('depId') as string, // 申请单位 + applyPerson: window.localStorage.getItem('nameId') as string, // 申请人 + applyNo: '', // 申请单编号 + applyName: '', // 申请单名称 + assetOriginValue: '', // 资产原值 + financialValue: '', // 财务净值 equipmentNo: '', // 设备编号 equipmentName: '', // 设备名称 modelNo: '', // 型号 @@ -56,15 +61,18 @@ }) // 设备借用表单 const ruleForm2 = ref({ + applyNo: '', // 申请编号 applyUnit: '', // 申请单位 applyPerson: '', // 申请人 - time: '', // 借用时间 + time: dayjs().format('YYYY-MM-DD HH:mm:ss'), // 申请时间, // 借用时间 applyDesc: '', // 申请说明 applyType: '', // 申请类型 applyName: '', // 申请名称 + applyPersonName: user.name, // 申请人名称 + applyUnitName: user.deptName, // 申请单位名称 createUser: userInfo.$state.id, approvalStatus: '', - createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + createTime: dayjs().format('YYYY-MM-DD hh:mm:ss'), id: '', }) const rules1 = ref({ @@ -72,7 +80,9 @@ applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], equipmentNo: [{ required: true, message: '设备编号不能为空', trigger: 'blur' }], time: [{ required: true, message: `${name.value.substring(2, 4)}时间不能为空`, trigger: 'blur' }], - applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], + applyName: [{ required: true, message: '申请单名称不能为空', trigger: 'blur' }], + assetOriginValue: [{ required: true, message: '资产原值不能为空', trigger: 'blur' }], + financialValue: [{ required: true, message: '财务净值不能为空', trigger: 'blur' }], }) watch(() => ruleForm1.value, (newVal) => { if (name.value === '详情') { @@ -88,10 +98,10 @@ immediate: true, }) const rules2 = ref({ - applyUnit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], - applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], + // applyUnit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], + // applyPerson: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], time: [{ required: true, message: '借用时间不能为空', trigger: 'blur' }], - applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], + // applyName: [{ required: true, message: '申请名称不能为空', trigger: 'blur' }], }) const ruleArr = ['applyUnit', 'applyPerson', 'time', 'applyName'] watch(() => ruleForm2.value, (newVal: { [key: string]: string }, oldVal) => { @@ -243,10 +253,6 @@ } } -onMounted(async () => { - initDialog($route.query) -}) - // 关闭弹窗 const close = () => { $router.back() @@ -265,6 +271,7 @@ ...ruleForm2.value, equipmentList: borrowList.value.map(item => ({ equipmentId: item.id, + })), } if (title.value === '新建') { @@ -412,6 +419,8 @@ type: 'warning', }, ).then((res) => { + ruleForm1.value.equipmentList[0].assetOriginValue = ruleForm1.value.assetOriginValue + ruleForm1.value.equipmentList[0].financialValue = ruleForm1.value.financialValue addStatus(ruleForm1.value).then((res) => { if (res.code === 200) { ElMessage.success('操作成功!') @@ -745,6 +754,10 @@ borrowList.value.splice(selectIndex.value, 1, val[0]) } } + +onMounted(() => { + initDialog($route.query) +}) @@ -758,13 +771,12 @@ 提交 - + 保存 - 提交 @@ -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([]) // 表格数据