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/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/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/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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/api/business/task.ts b/src/api/business/task.ts index a337c7f..80d91b7 100644 --- a/src/api/business/task.ts +++ b/src/api/business/task.ts @@ -1,5 +1,5 @@ /** - * 任务分发 + * 任务分发,实验室检测 */ import request from '../index' import type { ITaskQuery } from '@/views/business/schedule/task/task-interface' @@ -25,7 +25,52 @@ } // 检测流程配置 -export function interchangeListTake(data: { id: string; scheduleId: string }) { +export function setMeasureProcess(data: { id: string; scheduleId: string }) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 退回 +export function rollbackTask(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 实验室收入样品 +export function takeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量收入样品 +export function batchTakeInSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 检完样品 +export function overSample(data) { + return request({ + url: `${prefix}/schedule/task/setSchedule`, + method: 'post', + data, + }) +} + +// 批量检完样品 +export function batchOverSample(data) { return request({ url: `${prefix}/schedule/task/setSchedule`, method: 'post', diff --git a/src/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 5c1f143..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 } 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/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/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 e2f50af..5fbbde7 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -47,6 +47,7 @@ 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'] 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/store/modules/user.ts b/src/store/modules/user.ts index 1264d2e..cfcbfaf 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,6 +72,7 @@ username: string password: string kaptcha: string + sid: string }) { return new Promise((resolve, reject) => { doLogin(data).then((res) => { diff --git a/src/views/business/lab/components/rollbackDialog.vue b/src/views/business/lab/components/rollbackDialog.vue new file mode 100644 index 0000000..1c6231e --- /dev/null +++ b/src/views/business/lab/components/rollbackDialog.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue index 3ba89c5..800419d 100644 --- a/src/views/business/lab/myMeasure/myMeasureList.vue +++ b/src/views/business/lab/myMeasure/myMeasureList.vue @@ -1,13 +1,373 @@ - diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue index 3a3c09c..61ad34d 100644 --- a/src/views/business/schedule/task/components/chooseLab.vue +++ b/src/views/business/schedule/task/components/chooseLab.vue @@ -4,7 +4,7 @@ import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' -const emits = defineEmits(['changeVisible', 'confirmCheckout']) +const emits = defineEmits(['confirmCheckout']) // 是否多选 const multi = ref(false) const dialogVisible = ref(false) diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts index 5c1f143..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 } diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue index 81b735a..799a420 100644 --- a/src/views/business/schedule/task/taskList.vue +++ b/src/views/business/schedule/task/taskList.vue @@ -14,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({ @@ -26,6 +34,8 @@ sampleAttr: '', // 样品属性 startTime: '', // 应检完时间-开始 endTime: '', // 应检完时间-结束 + sendState: '', // 分发状态 + outState: '', // 超期状态 formId: 'jlglsygfsp', // 任务分发formId offset: 1, limit: 20, @@ -54,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' }, ]) // 表格数据 @@ -79,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) @@ -105,6 +115,8 @@ isUrgent: '', // 是否加急 sampleAttr: '', // 样品属性 formId: 'jlglsygfsp', + sendState: '1', // 分发状态 + outState: '', // 超期状态 offset: 1, limit: 20, } @@ -186,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)