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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
\ 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ \ 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } 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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - 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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,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/device/standard.ts b/src/api/device/standard.ts index 6e6fdfa..064780f 100644 --- a/src/api/device/standard.ts +++ b/src/api/device/standard.ts @@ -73,6 +73,15 @@ }) } +// 删除申请列表信息 +export function getOperateDelete(data: object) { + return request({ + url: '/standard/approval/operate/delete', + method: 'post', + data, + }) +} + // 新建申请列表信息 export function getStandardLisAdd(data: object) { return request({ @@ -127,3 +136,86 @@ }) } +// 批量添加标准装置底部计量人员 +export function setBatchAdd(data: object) { + return request({ + url: '/meter/standard/user/batchAdd', + method: 'post', + data, + }) +} + +// 标准装置-计量人员列表(分页) +export function getuserListPage(data: object) { + return request({ + url: '/meter/standard/user/listPage', + method: 'post', + data, + }) +} + +// 标准装置-删除计量人员 +export function getuserDelete(data: object) { + return request({ + url: '/meter/standard/user/delete', + method: 'post', + data, + }) +} + +// 标准装置-配套设备列表(分页) +export function getEquipmentListPage(data: object) { + return request({ + url: '/meter/standard/equipment/listPage', + method: 'post', + data, + }) +} + +// 添加标准配套设备 +export function getEquipmenteAdd(data: object) { + return request({ + url: '/meter/standard/equipment/add', + method: 'post', + data, + }) +} + +// 添加检定规程 +export function getRegulationAdd(data: object) { + return request({ + url: '/meter/standard/regulation/add', + method: 'post', + data, + }) +} + +// 标准装置-检定规程列表(分页) +export function getRegulationListPage(data: object) { + return request({ + url: '/meter/standard/regulation/listPage', + method: 'post', + data, + }) +} + +// 标准装置导出 +export function getExportExcel(data: object) { + return request({ + url: '/meter/standard/exportExcel', + method: 'post', + responseType: 'blob', + data, + }) +} + +// 标准装置申请导出 +export function getExportList(data: object) { + return request({ + url: '/standard/exportList', + method: 'post', + responseType: 'blob', + data, + }) +} + 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 0ca1396..227585d 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,8 +18,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'] @@ -36,6 +39,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'] @@ -47,11 +51,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'] SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.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 a2fd12e..6a14d78 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -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', @@ -196,6 +196,60 @@ activeMenu: '/lab/deptMeasureList', }, }, + { + path: 'reportOnCredentialsApproval', + name: 'ReportOnCredentialsApproval', + component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'), + meta: { + title: '证书报告', + icon: 'ep:key', + auth: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'reportOnCredentialsApproval/:type/:id?', + name: 'reportOnCredentialsAdd', + component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'), + meta: { + title: '证书报告详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/reportOnCredentialsApproval', + }, + }, + { + path: 'primitiveLogList', + name: 'PrimitiveLogList', + component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'), + meta: { + title: '原始记录', + icon: 'ep:key', + auth: '/lab/primitiveLogList', + }, + }, + { + path: 'environmentalList', + name: 'EnvironmentalList', + component: () => import('@/views/business/lab/environmental/environmentalList.vue'), + meta: { + title: '环境记录单', + icon: 'ep:key', + auth: '/lab/environmentalList', + }, + }, + { + path: 'environmentalList/:type/:id?', + name: 'EnvironmentalAdd', + component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'), + meta: { + title: '环境记录单详情', + icon: 'ep:key', + sidebar: false, + breadcrumb: true, + activeMenu: '/lab/environmentalList', + }, + }, ], }, ] diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts index 993d66c..cbc5c47 100644 --- a/src/router/modules/device.ts +++ b/src/router/modules/device.ts @@ -238,7 +238,7 @@ }, }, { - path: ':type/:id?', + path: 'Apply:type/:id?', name: 'standardListAdd', component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'), meta: { 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/bench/bench.vue b/src/views/business/bench/bench.vue index 1f5af41..fad9269 100644 --- a/src/views/business/bench/bench.vue +++ b/src/views/business/bench/bench.vue @@ -243,7 +243,7 @@ - +
+ + + + + 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/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue new file mode 100644 index 0000000..e572d09 --- /dev/null +++ b/src/views/business/lab/environmental/environmentalAdd.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue new file mode 100644 index 0000000..98230be --- /dev/null +++ b/src/views/business/lab/environmental/environmentalList.vue @@ -0,0 +1,310 @@ + + + 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/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue new file mode 100644 index 0000000..a598765 --- /dev/null +++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue new file mode 100644 index 0000000..97bea6f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue new file mode 100644 index 0000000..da533b7 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue @@ -0,0 +1,1266 @@ + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue new file mode 100644 index 0000000..5bf6f0f --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue new file mode 100644 index 0000000..5c3eb39 --- /dev/null +++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue @@ -0,0 +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 // 投诉人联系方式 diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue index 0046fa3..f3024cf 100644 --- a/src/views/device/deviceMaintenance/components/checkList.vue +++ b/src/views/device/deviceMaintenance/components/checkList.vue @@ -17,7 +17,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', @@ -35,49 +35,32 @@ const columns = ref([ { text: '检修申请编号', - value: 'checkApplyNo', - width: '120', - align: 'center', - }, - { - text: '检修申请名称', - value: 'checkApplyName', - width: '120', - align: 'center', - }, - { - text: '设备编号', value: 'applyNo', align: 'center', }, { - text: '设备名称', + text: '检修申请名称', value: 'applyName', align: 'center', }, { - text: '出厂编号', - value: 'overhaulPerson', + text: '申请单位', + value: 'applyUnitName', align: 'center', }, { - text: '设备型号', - value: 'createTime', + text: '申请人', + value: 'applyPersonName', align: 'center', }, { - text: '送修单位', - value: 'createTime', + text: '检修时间', + value: 'time', align: 'center', }, { - text: '送修人', - value: 'createTime', - align: 'center', - }, - { - text: '申请日期', - value: 'createTime', + text: '备注', + value: 'remark', align: 'center', }, { @@ -118,7 +101,7 @@ applyName: '', applyNo: '', applyPerson: '', - applyType: '7', + applyType: '8', applyUnit: '', businessKeys: [], createUser: '', diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue index 8fec470..bd296f1 100644 --- a/src/views/device/deviceMaintenance/components/listApproval.vue +++ b/src/views/device/deviceMaintenance/components/listApproval.vue @@ -37,7 +37,7 @@ formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE, applyName: '', applyNo: '', - applyType: '', + applyType: '9', businessKeys: [], checkApplyNo: '', checkEndDate: '', diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue index a8e1295..9c8bb99 100644 --- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue +++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue @@ -30,10 +30,10 @@ buttonArray.value = ['同意', '驳回', '拒绝'] } else if (pageType.value === 'edit') { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } else { - buttonArray.value = ['保存', '提交'] + buttonArray.value = ['提交', '保存'] } if ($route.params.id) { infoId.value = $route.params.id as string @@ -402,7 +402,6 @@ res.data.equipmentInfoList.map((item: objectReturn) => { if (item.id) { item.equipmentId = item.id - item.id = '' } // 如果选择的没有id则就让装置数组置空 else { @@ -443,7 +442,6 @@ @@ -463,7 +461,7 @@ @@ -472,7 +470,7 @@ @@ -470,7 +461,7 @@ @@ -480,7 +471,7 @@ @@ -489,7 +480,7 @@ @@ -510,7 +501,7 @@ v-model="formInline.time" type="datetime" style="width: 100%;" - placeholder="请选择检修时间" + :placeholder="pageType === 'detail' ? '' : '请选择检修时间'" format="YYYY/MM/DD HH:mm" value-format="YYYY-MM-DD h:m" :disabled="pageType === 'detail'" @@ -523,8 +514,7 @@ @@ -563,29 +553,10 @@ - - +
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue index 6f1ff1a..0557531 100644 --- a/src/views/device/deviceMaintenance/components/manageAdd.vue +++ b/src/views/device/deviceMaintenance/components/manageAdd.vue @@ -198,7 +198,7 @@ @@ -218,11 +218,11 @@ @@ -256,7 +256,7 @@ { + sessionStorage.setItem('maintenceCheckListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceCheckListMenu') || '全部' + sessionStorage.getItem('maintenceCheckListMenu') ? sessionStorage.removeItem('maintenceCheckListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/deviceMaintenance/maintenanceList.vue b/src/views/device/deviceMaintenance/maintenanceList.vue index aecaa95..56c7c1b 100644 --- a/src/views/device/deviceMaintenance/maintenanceList.vue +++ b/src/views/device/deviceMaintenance/maintenanceList.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('maintenceListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('maintenceListMenu') || '全部' + sessionStorage.getItem('maintenceListMenu') ? sessionStorage.removeItem('maintenceListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue] diff --git a/src/views/device/standardEquipment/cancelApply.vue b/src/views/device/standardEquipment/cancelApply.vue index 10ae252..936151c 100644 --- a/src/views/device/standardEquipment/cancelApply.vue +++ b/src/views/device/standardEquipment/cancelApply.vue @@ -1,5 +1,5 @@ diff --git a/src/views/device/standardEquipment/components/applyList.vue b/src/views/device/standardEquipment/components/applyList.vue index f5510c1..37839c3 100644 --- a/src/views/device/standardEquipment/components/applyList.vue +++ b/src/views/device/standardEquipment/components/applyList.vue @@ -16,8 +16,7 @@ default: '', }, }) -console.log(props.schedule, '11111') -export interface menuType { +interface menuType { name: string comp: any } @@ -36,7 +35,7 @@ currentComp.value = menu.value.filter(item => item.name === newValue)[0].comp }) const disabled = ref(false) -const setData = (newIsShow) => { +const setData = (newIsShow: boolean) => { if (newIsShow === false) { disabled.value = true } diff --git a/src/views/device/standardEquipment/components/listApply/all.vue b/src/views/device/standardEquipment/components/listApply/all.vue index aec5c4e..e5eef0f 100644 --- a/src/views/device/standardEquipment/components/listApply/all.vue +++ b/src/views/device/standardEquipment/components/listApply/all.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/approvalPending.vue b/src/views/device/standardEquipment/components/listApply/approvalPending.vue index 5300c19..2b12e75 100644 --- a/src/views/device/standardEquipment/components/listApply/approvalPending.vue +++ b/src/views/device/standardEquipment/components/listApply/approvalPending.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/canceled.vue b/src/views/device/standardEquipment/components/listApply/canceled.vue index a7ffa3f..0ccc701 100644 --- a/src/views/device/standardEquipment/components/listApply/canceled.vue +++ b/src/views/device/standardEquipment/components/listApply/canceled.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/draftBox.vue b/src/views/device/standardEquipment/components/listApply/draftBox.vue index 8c1ee5d..0bb8988 100644 --- a/src/views/device/standardEquipment/components/listApply/draftBox.vue +++ b/src/views/device/standardEquipment/components/listApply/draftBox.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue index f86c881..2e80544 100644 --- a/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue +++ b/src/views/device/standardEquipment/components/listApply/examineAndApprove.vue @@ -2,7 +2,7 @@ diff --git a/src/views/device/standardEquipment/components/listApply/listPage.vue b/src/views/device/standardEquipment/components/listApply/listPage.vue index b28f5d6..6f7bf0b 100644 --- a/src/views/device/standardEquipment/components/listApply/listPage.vue +++ b/src/views/device/standardEquipment/components/listApply/listPage.vue @@ -2,26 +2,27 @@ import { reactive, ref } from 'vue' import type { PropType, Ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' -import type { IOptions, Ibuttoms, IlistQuery, IlistTypes } from '../../standard_interface' +import type { IOptions, Ibuttons, IlistQuery, IlistTypes } from '../../standard_interface' import ListSourceAdd from './listPageAdd.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue' -import { getStandardLisdelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' +import { getExportList, getOperateDelete, getUsersDept, getstandardEquipmentApplyList, submitStandardEquipmentApply } from '@/api/device/standard' import { uploadApi } from '@/api/system/notice' -import { exportExcel } from '@/utils/exportXlsx' import { printJSON } from '@/utils/printUtils' +import { exportFile } from '@/utils/exportUtils' import { submitApproval } from '@/api/approval' const props = defineProps({ name: { type: String, default: '', }, + // 表单id schedule: { type: String, default: '', }, - buttoms: { - type: Array as PropType, + buttons: { + type: Array as PropType, default: () => [], }, applyType: { @@ -144,7 +145,7 @@ meterMajor: '', organizeName: '', organizeNo: '', - organizeType: '2', + organizeType: '3', pdeptId: null, offset: 1, limit: 999999, @@ -190,7 +191,7 @@ }, ) .then(() => { - getStandardLisdelete({ id: row.id as string }).then((res) => { + getOperateDelete({ id: row.id as string, taskId: row.taskId }).then((res) => { if (res.code === 200) { ElMessage({ type: 'success', @@ -208,7 +209,11 @@ name: 'standardListAdd', params: { type: 'detail', + }, + query: { + title: '详情', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -270,7 +275,11 @@ name: 'standardListAdd', params: { type: 'edit', + }, + query: { + title: '编辑', id: row.id, + applyType: props.applyType, formId: props.schedule, }, }) @@ -331,22 +340,10 @@ text: 'Loading', background: 'rgba(255, 255, 255, 0.8)', }) - if (checkoutList.value.length <= 0) { - exportExcel({ - json: list.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } - else { - exportExcel({ - json: checkoutList.value.map((item: IlistTypes, index: number) => ({ index: index + 1, applyNo: item.applyNo, applyTypeName: item.applyTypeName, standardNo: item.standardNo, standardName: item.standardName, constructionStandardUnitName: item.constructionStandardUnitName, standardOwner: item.standardOwner, applyDept: item.applyDept, createUser: item.createUser, createTime: item.createTime, approvalStatusName: item.approvalStatusName })), - name: '标准装置申请', - titleArr: ['序号', '申请编号', '申请类型', '标准代码', '标准名称', '标准所在部门', '负责人', '申请部门', '申请人', '申请时间', '审批状态'], - sheetName: 'sheet1', - }) - } + getExportList(listQuery.value).then((res) => { + const blob = new Blob([res.data]) + exportFile(blob, '标准装置申请列表.xlsx') + }) loading.close() } // 审批结束回调 @@ -516,7 +513,7 @@ - diff --git a/src/views/measure/train/trainPlanApprove.vue b/src/views/measure/train/trainPlanApprove.vue index 2421142..1e3144a 100644 --- a/src/views/measure/train/trainPlanApprove.vue +++ b/src/views/measure/train/trainPlanApprove.vue @@ -76,6 +76,17 @@ currentTab.value = currentMenu?.name } } + +// 组件销毁时存入自己的审批类型 下次进去还是原来的审批类型 +onUnmounted(() => { + sessionStorage.setItem('trinPlanListMenu', currentTab.value) +}) +// 挂载的时候找到之前存过的审批类型 +onMounted(() => { + currentTab.value = sessionStorage.getItem('trinPlanListMenu') || '全部' + sessionStorage.getItem('trinPlanListMenu') ? sessionStorage.removeItem('trinPlanListMenu') : '' +}) + watch(currentTab, (newValue) => { currentApprovalStatus.value = approvalStatusList[newValue] currentButtons.value = buttonsSet[newValue]