diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index c9b3d63..7b538cf 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -9,7 +9,9 @@ customerName: string // 委托方名称 isUrgent: string // 是否加急 sampleAttr: string // 样品属性 - formId: string + sendState: string // 分发状态 + outState: string // 超期状态 + formId: string // formId limit: number offset: number } @@ -61,4 +63,5 @@ // 样品检测信息 export interface ISampleMeasure extends ISampleEdit { orderId: string // 委托单id + certifications: string // 证书类别 } diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index c9b3d63..7b538cf 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -9,7 +9,9 @@ customerName: string // 委托方名称 isUrgent: string // 是否加急 sampleAttr: string // 样品属性 - formId: string + sendState: string // 分发状态 + outState: string // 超期状态 + formId: string // formId limit: number offset: number } @@ -61,4 +63,5 @@ // 样品检测信息 export interface ISampleMeasure extends ISampleEdit { orderId: string // 委托单id + certifications: string // 证书类别 } diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index c8331c1..465b2e7 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -64,6 +64,7 @@ minioFileName: '', // 说明书 labelBind: '', // 标签绑定 mesureType: '', // 检定方式 + certifications: '', }) const ruleFormRef = ref() @@ -137,7 +138,7 @@ }, ] -const currentMenu = ref('检定记录') +const currentMenu = ref('证书监控') const currentMenuObj = computed(() => { return menu.find(item => item.name === currentMenu.value) }) @@ -224,6 +225,7 @@ measureResultCode: 'bhg', deliverer: '张三', delivererTel: '156254577545', + certifications: '1', } // for (const item of menu) { // item.searchFunc() @@ -587,15 +589,26 @@ - + - + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index c9b3d63..7b538cf 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -9,7 +9,9 @@ customerName: string // 委托方名称 isUrgent: string // 是否加急 sampleAttr: string // 样品属性 - formId: string + sendState: string // 分发状态 + outState: string // 超期状态 + formId: string // formId limit: number offset: number } @@ -61,4 +63,5 @@ // 样品检测信息 export interface ISampleMeasure extends ISampleEdit { orderId: string // 委托单id + certifications: string // 证书类别 } diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index c8331c1..465b2e7 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -64,6 +64,7 @@ minioFileName: '', // 说明书 labelBind: '', // 标签绑定 mesureType: '', // 检定方式 + certifications: '', }) const ruleFormRef = ref() @@ -137,7 +138,7 @@ }, ] -const currentMenu = ref('检定记录') +const currentMenu = ref('证书监控') const currentMenuObj = computed(() => { return menu.find(item => item.name === currentMenu.value) }) @@ -224,6 +225,7 @@ measureResultCode: 'bhg', deliverer: '张三', delivererTel: '156254577545', + certifications: '1', } // for (const item of menu) { // item.searchFunc() @@ -587,15 +589,26 @@ - + - + + + + + + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 663b571..799a420 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -5,6 +5,7 @@ import { ElLoading, ElMessage } from 'element-plus' import type { ITaskList, ITaskQuery } from './task-interface' import DistributeDialog from './components/distributeDialog.vue' +import BarCodeBind from '@/components/BarCodeBind/index.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' import { exportFile } from '@/utils/exportUtils' @@ -13,6 +14,14 @@ import type { dictType } from '@/global' const { proxy } = getCurrentInstance() as any const $router = useRouter() +// 右上角按钮 +const menus = [ + { name: '待分发', value: 'sendState;0' }, + { name: '检测中', value: 'sendState;1' }, + { name: '检测完', value: 'sendState;2' }, + { name: '超期样品', value: 'outState;1' }, +] +const currentMenu = ref('sendState;0') // 当前选中状态 // 查询条件 const timeRange = ref<[DateModelType, DateModelType]>(['', '']) const listQuery: Ref = ref({ @@ -25,6 +34,8 @@ sampleAttr: '', // 样品属性 startTime: '', // 应检完时间-开始 endTime: '', // 应检完时间-结束 + sendState: '', // 分发状态 + outState: '', // 超期状态 formId: 'jlglsygfsp', // 任务分发formId offset: 1, limit: 20, @@ -33,7 +44,7 @@ const sampleAttrList = ref([]) // 样品属性列表 function getDict() { // 获取样品属性 - getDictByCode('sampleAttr').then((response) => { + getDictByCode('sampleBelong').then((response) => { sampleAttrList.value = response.data }) } @@ -53,7 +64,6 @@ { text: '样品属性', value: 'sampleAttrName', align: 'center' }, { text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' }, { text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } }, - { text: '标签信息', value: 'labelBind', align: 'center' }, { text: '分发性质', value: 'distributeState', align: 'center', width: '90px' }, ]) // 表格数据 @@ -78,6 +88,7 @@ { orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' }, ] loadingTable.value = false + console.log(listQuery.value) // getTaskList(listQuery.value).then((response) => { // list.value = response.data.rows // total.value = parseInt(response.data.total) @@ -89,17 +100,6 @@ checkoutList.value = e.map((item: { id: string }) => item.id) } -// 点击详情 -const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) -} - -// 点击分发, 弹窗 -const distributeDialogRef = ref() -const handleDistribute = (row: ITaskList) => { - distributeDialogRef.value.initDialog(row.orderId, row.sampleId) -} - // 点击搜索 const searchList = () => { fetchData(true) @@ -115,11 +115,31 @@ isUrgent: '', // 是否加急 sampleAttr: '', // 样品属性 formId: 'jlglsygfsp', + sendState: '1', // 分发状态 + outState: '', // 超期状态 offset: 1, limit: 20, } } +// 点击详情 +const handleDetail = (row: ITaskList) => { + $router.push(`/schedule/task/distribute/${row.sampleId}`) +} +// 点击分发, 弹窗 +const distributeDialogRef = ref() +const handleDistribute = (row: ITaskList) => { + distributeDialogRef.value.initDialog(row.orderId, row.sampleId) +} +// 点击标签绑定 +const barCodeBind = ref() +const bindLabel = (row: ITaskList) => { + barCodeBind.value.initDialog(row.sampleId) +} +// 标签绑定完成 +const bindLabelOver = () => { + searchList() +} // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 const changePage = (val: { size?: number; page?: number }) => { if (val && val.size) { @@ -178,11 +198,30 @@ } } -fetchData(true) +// 选择按钮变更 +watch(currentMenu, (val: string) => { + const vals = val.split(';') + if (vals.length > 1) { + listQuery.value.sendState = '' + listQuery.value.outState = '' + listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1] + } + fetchData(false) +}) + +fetchData(false) + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index c9b3d63..7b538cf 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -9,7 +9,9 @@ customerName: string // 委托方名称 isUrgent: string // 是否加急 sampleAttr: string // 样品属性 - formId: string + sendState: string // 分发状态 + outState: string // 超期状态 + formId: string // formId limit: number offset: number } @@ -61,4 +63,5 @@ // 样品检测信息 export interface ISampleMeasure extends ISampleEdit { orderId: string // 委托单id + certifications: string // 证书类别 } diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index c8331c1..465b2e7 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -64,6 +64,7 @@ minioFileName: '', // 说明书 labelBind: '', // 标签绑定 mesureType: '', // 检定方式 + certifications: '', }) const ruleFormRef = ref() @@ -137,7 +138,7 @@ }, ] -const currentMenu = ref('检定记录') +const currentMenu = ref('证书监控') const currentMenuObj = computed(() => { return menu.find(item => item.name === currentMenu.value) }) @@ -224,6 +225,7 @@ measureResultCode: 'bhg', deliverer: '张三', delivererTel: '156254577545', + certifications: '1', } // for (const item of menu) { // item.searchFunc() @@ -587,15 +589,26 @@ - + - + + + + + + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 663b571..799a420 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -5,6 +5,7 @@ import { ElLoading, ElMessage } from 'element-plus' import type { ITaskList, ITaskQuery } from './task-interface' import DistributeDialog from './components/distributeDialog.vue' +import BarCodeBind from '@/components/BarCodeBind/index.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' import { exportFile } from '@/utils/exportUtils' @@ -13,6 +14,14 @@ import type { dictType } from '@/global' const { proxy } = getCurrentInstance() as any const $router = useRouter() +// 右上角按钮 +const menus = [ + { name: '待分发', value: 'sendState;0' }, + { name: '检测中', value: 'sendState;1' }, + { name: '检测完', value: 'sendState;2' }, + { name: '超期样品', value: 'outState;1' }, +] +const currentMenu = ref('sendState;0') // 当前选中状态 // 查询条件 const timeRange = ref<[DateModelType, DateModelType]>(['', '']) const listQuery: Ref = ref({ @@ -25,6 +34,8 @@ sampleAttr: '', // 样品属性 startTime: '', // 应检完时间-开始 endTime: '', // 应检完时间-结束 + sendState: '', // 分发状态 + outState: '', // 超期状态 formId: 'jlglsygfsp', // 任务分发formId offset: 1, limit: 20, @@ -33,7 +44,7 @@ const sampleAttrList = ref([]) // 样品属性列表 function getDict() { // 获取样品属性 - getDictByCode('sampleAttr').then((response) => { + getDictByCode('sampleBelong').then((response) => { sampleAttrList.value = response.data }) } @@ -53,7 +64,6 @@ { text: '样品属性', value: 'sampleAttrName', align: 'center' }, { text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' }, { text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } }, - { text: '标签信息', value: 'labelBind', align: 'center' }, { text: '分发性质', value: 'distributeState', align: 'center', width: '90px' }, ]) // 表格数据 @@ -78,6 +88,7 @@ { orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' }, ] loadingTable.value = false + console.log(listQuery.value) // getTaskList(listQuery.value).then((response) => { // list.value = response.data.rows // total.value = parseInt(response.data.total) @@ -89,17 +100,6 @@ checkoutList.value = e.map((item: { id: string }) => item.id) } -// 点击详情 -const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) -} - -// 点击分发, 弹窗 -const distributeDialogRef = ref() -const handleDistribute = (row: ITaskList) => { - distributeDialogRef.value.initDialog(row.orderId, row.sampleId) -} - // 点击搜索 const searchList = () => { fetchData(true) @@ -115,11 +115,31 @@ isUrgent: '', // 是否加急 sampleAttr: '', // 样品属性 formId: 'jlglsygfsp', + sendState: '1', // 分发状态 + outState: '', // 超期状态 offset: 1, limit: 20, } } +// 点击详情 +const handleDetail = (row: ITaskList) => { + $router.push(`/schedule/task/distribute/${row.sampleId}`) +} +// 点击分发, 弹窗 +const distributeDialogRef = ref() +const handleDistribute = (row: ITaskList) => { + distributeDialogRef.value.initDialog(row.orderId, row.sampleId) +} +// 点击标签绑定 +const barCodeBind = ref() +const bindLabel = (row: ITaskList) => { + barCodeBind.value.initDialog(row.sampleId) +} +// 标签绑定完成 +const bindLabelOver = () => { + searchList() +} // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 const changePage = (val: { size?: number; page?: number }) => { if (val && val.size) { @@ -178,11 +198,30 @@ } } -fetchData(true) +// 选择按钮变更 +watch(currentMenu, (val: string) => { + const vals = val.split(';') + if (vals.length > 1) { + listQuery.value.sendState = '' + listQuery.value.outState = '' + listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1] + } + fetchData(false) +}) + +fetchData(false) + + + diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue index 71da364..a5411c1 100644 --- a/src/views/customer/advice/adviceEdit.vue +++ b/src/views/customer/advice/adviceEdit.vue @@ -8,8 +8,6 @@ import type { FormInstance } from 'element-plus' import type { IAdvice, SimpleCompany } from './advice_interface' import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice' -import { SCHEDULE } from '@/utils/scheduleDict' -import type { IAddress } from '@/components/AddressSelect/address-interface' import { getDictByCode } from '@/api/system/dict' const loading = ref(false) // 表单加载状态 const infoId = ref('') // id diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts index 8bfe87e..50cf032 100644 --- a/src/api/measure/person.ts +++ b/src/api/measure/person.ts @@ -9,6 +9,14 @@ data, }) } +// 计量人员列表-不分页 +export function getStaffListAll(data: { deptId: string; name: string }) { + return request({ + url: '/staff/getUserList', + method: 'post', + data, + }) +} // 人员详细信息 export function getStaffDetail(data: object) { return request({ diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg new file mode 100644 index 0000000..f39dba8 --- /dev/null +++ b/src/assets/icons/icon-scan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png new file mode 100644 index 0000000..a56bf3e --- /dev/null +++ b/src/assets/images/scan.png Binary files differ diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index 67d321f..01d46ac 100644 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -136,3 +136,10 @@ // cursor: text; // } } + +.float-radio-buttons { + position: fixed; + top: 67px; + right: 15px; + z-index: 999; +} diff --git a/src/components.d.ts b/src/components.d.ts index a40e715..abe6b8d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -17,8 +17,11 @@ AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default'] BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default'] + BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] BenchCol: typeof import('./components/benchCol/index.vue')['default'] + CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default'] + CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default'] ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] @@ -35,6 +38,7 @@ ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] + MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -46,13 +50,13 @@ QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] - SelectBox: typeof import('./components/workFlow/selectBox.vue')['default'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default'] - SelectResult: typeof import('./components/workFlow/selectResult.vue')['default'] SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default'] + SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue new file mode 100644 index 0000000..0b7d7e8 --- /dev/null +++ b/src/components/BarCodeBind/index.vue @@ -0,0 +1,134 @@ + + + + + + + diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue new file mode 100644 index 0000000..16c1311 --- /dev/null +++ b/src/components/Sample/certificationMonitor.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue new file mode 100644 index 0000000..a694ce6 --- /dev/null +++ b/src/components/Sample/certificationRecords.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue new file mode 100644 index 0000000..b88e552 --- /dev/null +++ b/src/components/Sample/measureRecords.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue new file mode 100644 index 0000000..4e160a5 --- /dev/null +++ b/src/components/ScanSampleDialog/index.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts new file mode 100644 index 0000000..1c3aa33 --- /dev/null +++ b/src/components/ScanSampleDialog/scan-interface.ts @@ -0,0 +1,12 @@ +export interface ISampleScan { + sampleId?: string // 样品id + sampleNo: string // 样品编号 + sampleName: string // 样品名称 + sampleModel: string // 样品型号 + manufacturingNo: string // 出厂编号 + customerNo: string // 委托方代码 + customerName: string // 委托方名称 + orderId: string // 委托书id + orderNo: string // 委托书编号 + labelBind: string // 标签绑定 +} diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue new file mode 100644 index 0000000..be9415b --- /dev/null +++ b/src/components/dialog/selectStaffDialog.vue @@ -0,0 +1,243 @@ + + + + + + + + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index cc3bd7d..2888f47 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -52,7 +52,7 @@ { path: 'order/:type/:id?', name: 'OrderDetail', - component: () => import('@/views/business/schedule/bench/bench.vue'), + component: () => import('@/views/business/schedule/order/orderList.vue'), meta: { title: '委托书详情', icon: 'ep:key', @@ -96,7 +96,7 @@ { path: 'receipt/:type/:id?', name: 'InterchangeReceiptDetail', - component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'), + component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'), meta: { title: '设备交接单详情', icon: 'ep:key', diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue index c129753..4d1b5c0 100644 --- a/src/views/business/lab/deptMeasure/deptMeasureList.vue +++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue @@ -1,13 +1,348 @@ - diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue index 39817f4..6cbdf10 100644 --- a/src/views/business/schedule/task/components/processNode.vue +++ b/src/views/business/schedule/task/components/processNode.vue @@ -149,7 +149,7 @@ - + diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index c9b3d63..7b538cf 100644 --- a/src/views/business/schedule/task/task-interface.ts +++ b/src/views/business/schedule/task/task-interface.ts @@ -9,7 +9,9 @@ customerName: string // 委托方名称 isUrgent: string // 是否加急 sampleAttr: string // 样品属性 - formId: string + sendState: string // 分发状态 + outState: string // 超期状态 + formId: string // formId limit: number offset: number } @@ -61,4 +63,5 @@ // 样品检测信息 export interface ISampleMeasure extends ISampleEdit { orderId: string // 委托单id + certifications: string // 证书类别 } diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue index c8331c1..465b2e7 100644 --- a/src/views/business/schedule/task/taskEdit.vue +++ b/src/views/business/schedule/task/taskEdit.vue @@ -64,6 +64,7 @@ minioFileName: '', // 说明书 labelBind: '', // 标签绑定 mesureType: '', // 检定方式 + certifications: '', }) const ruleFormRef = ref() @@ -137,7 +138,7 @@ }, ] -const currentMenu = ref('检定记录') +const currentMenu = ref('证书监控') const currentMenuObj = computed(() => { return menu.find(item => item.name === currentMenu.value) }) @@ -224,6 +225,7 @@ measureResultCode: 'bhg', deliverer: '张三', delivererTel: '156254577545', + certifications: '1', } // for (const item of menu) { // item.searchFunc() @@ -587,15 +589,26 @@ - + - + + + + + + diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 663b571..799a420 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -5,6 +5,7 @@ import { ElLoading, ElMessage } from 'element-plus' import type { ITaskList, ITaskQuery } from './task-interface' import DistributeDialog from './components/distributeDialog.vue' +import BarCodeBind from '@/components/BarCodeBind/index.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import { printJSON } from '@/utils/printUtils' import { exportFile } from '@/utils/exportUtils' @@ -13,6 +14,14 @@ import type { dictType } from '@/global' const { proxy } = getCurrentInstance() as any const $router = useRouter() +// 右上角按钮 +const menus = [ + { name: '待分发', value: 'sendState;0' }, + { name: '检测中', value: 'sendState;1' }, + { name: '检测完', value: 'sendState;2' }, + { name: '超期样品', value: 'outState;1' }, +] +const currentMenu = ref('sendState;0') // 当前选中状态 // 查询条件 const timeRange = ref<[DateModelType, DateModelType]>(['', '']) const listQuery: Ref = ref({ @@ -25,6 +34,8 @@ sampleAttr: '', // 样品属性 startTime: '', // 应检完时间-开始 endTime: '', // 应检完时间-结束 + sendState: '', // 分发状态 + outState: '', // 超期状态 formId: 'jlglsygfsp', // 任务分发formId offset: 1, limit: 20, @@ -33,7 +44,7 @@ const sampleAttrList = ref([]) // 样品属性列表 function getDict() { // 获取样品属性 - getDictByCode('sampleAttr').then((response) => { + getDictByCode('sampleBelong').then((response) => { sampleAttrList.value = response.data }) } @@ -53,7 +64,6 @@ { text: '样品属性', value: 'sampleAttrName', align: 'center' }, { text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' }, { text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } }, - { text: '标签信息', value: 'labelBind', align: 'center' }, { text: '分发性质', value: 'distributeState', align: 'center', width: '90px' }, ]) // 表格数据 @@ -78,6 +88,7 @@ { orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' }, ] loadingTable.value = false + console.log(listQuery.value) // getTaskList(listQuery.value).then((response) => { // list.value = response.data.rows // total.value = parseInt(response.data.total) @@ -89,17 +100,6 @@ checkoutList.value = e.map((item: { id: string }) => item.id) } -// 点击详情 -const handleDetail = (row: ITaskList) => { - $router.push(`/schedule/task/distribute/${row.sampleId}`) -} - -// 点击分发, 弹窗 -const distributeDialogRef = ref() -const handleDistribute = (row: ITaskList) => { - distributeDialogRef.value.initDialog(row.orderId, row.sampleId) -} - // 点击搜索 const searchList = () => { fetchData(true) @@ -115,11 +115,31 @@ isUrgent: '', // 是否加急 sampleAttr: '', // 样品属性 formId: 'jlglsygfsp', + sendState: '1', // 分发状态 + outState: '', // 超期状态 offset: 1, limit: 20, } } +// 点击详情 +const handleDetail = (row: ITaskList) => { + $router.push(`/schedule/task/distribute/${row.sampleId}`) +} +// 点击分发, 弹窗 +const distributeDialogRef = ref() +const handleDistribute = (row: ITaskList) => { + distributeDialogRef.value.initDialog(row.orderId, row.sampleId) +} +// 点击标签绑定 +const barCodeBind = ref() +const bindLabel = (row: ITaskList) => { + barCodeBind.value.initDialog(row.sampleId) +} +// 标签绑定完成 +const bindLabelOver = () => { + searchList() +} // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 const changePage = (val: { size?: number; page?: number }) => { if (val && val.size) { @@ -178,11 +198,30 @@ } } -fetchData(true) +// 选择按钮变更 +watch(currentMenu, (val: string) => { + const vals = val.split(';') + if (vals.length > 1) { + listQuery.value.sendState = '' + listQuery.value.outState = '' + listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1] + } + fetchData(false) +}) + +fetchData(false) + + + diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue index 71da364..a5411c1 100644 --- a/src/views/customer/advice/adviceEdit.vue +++ b/src/views/customer/advice/adviceEdit.vue @@ -8,8 +8,6 @@ import type { FormInstance } from 'element-plus' import type { IAdvice, SimpleCompany } from './advice_interface' import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice' -import { SCHEDULE } from '@/utils/scheduleDict' -import type { IAddress } from '@/components/AddressSelect/address-interface' import { getDictByCode } from '@/api/system/dict' const loading = ref(false) // 表单加载状态 const infoId = ref('') // id diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts index 48f6314..b08f85b 100644 --- a/src/views/customer/advice/advice_interface.ts +++ b/src/views/customer/advice/advice_interface.ts @@ -14,9 +14,9 @@ id: string // 主键id(列表、更新接口参数) adviceNo: string // 投诉编号 adviceClass: string // 投诉类型 - adviceClassName: string // 投诉类型 + adviceClassName?: string // 投诉类型 adviceType: string // 投诉类别 - adviceTypeName: string // 投诉类别 + adviceTypeName?: string // 投诉类别 advicePerson: string // 投诉人-名称 adviceTime: string // 投诉时间 personPhone: string // 投诉人联系方式