From 2453a589a623b2448a8cc940d8dce3da6698c50c Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期一, 05 二月 2024 14:15:49 +0800 Subject: [PATCH] 获取设备列表、切换设备列表、开始生产接口和逻辑修改、结束任务联调、工艺信息联调、切换任务联调 --- src/views/dashboard/components/TaskControl.vue | 13 + src/api/task.ts | 12 ++ src/views/dashboard/components/ChannelCollapse.vue | 27 +++ src/stores/tasks.ts | 41 +++++- src/api/index.ts | 52 +++++++- src/views/dashboard/components/TaskControlModal.vue | 70 ++++++----- src/stores/craftModel.ts | 62 +++++++--- src/views/dashboard/components/DeviceCheckList.vue | 1 src/views/dashboard/components/ProcessInfo.vue | 7 src/views/dashboard/components/TaskInfo.vue | 2 src/views/dashboard/index.vue | 14 + src/stores/devices.ts | 13 + src/views/dashboard/components/ReportingRecordModal.vue | 2 13 files changed, 224 insertions(+), 92 deletions(-) diff --git a/src/api/index.ts b/src/api/index.ts index 326f27f..75758a4 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,5 +1,5 @@ import { request } from '@/common/utils' -import type { CraftParamsResponse, TasksGroupByChannel } from './task' +import type { CraftParamsResponse, TasksGroupByChannel, Task } from './task' import type { PLCResponse } from './plc' import type { Devices } from './device' import type { CraftModel } from './craftModel' @@ -28,6 +28,8 @@ offset: number /** 鏌ュ灏戞潯 */ limit: number + /** 璁惧id */ + deviceID: string } /** @@ -37,6 +39,25 @@ export function getTaskList(params: TaskListParams) { return request<BaseResponse<TasksGroupByChannel>>({ url: '/api-s/v1/reportWork/taskList', + method: 'get', + params + }) +} + +export interface TaskInfoParams { + /** 璁惧id */ + deviceID: string + /** 宸ュ簭id */ + procedureID: number +} + +/** + * 鑾峰彇浠诲姟璇︽儏 + * @param params + */ +export function getTaskInfo(params: TaskInfoParams) { + return request<BaseResponse<Task>>({ + url: '/api-s/v1/reportWork/taskInfo', method: 'get', params }) @@ -106,6 +127,24 @@ }) } +export interface ProcedureUpdateParams { + isFinish: boolean + isProcessing: boolean + workOrderProcedureID: number +} + +/** + * 寮�濮嬩换鍔�/瀹屾垚浠诲姟 (鍘� 鑾峰彇宸ヨ壓鍙傛暟/缁撴潫浠诲姟) + * @param params + */ +export function procedureUpdate(params: ProcedureUpdateParams) { + return request<BaseResponse>({ + url: `/api-s/v1/reportWork/procedureUpdate`, + method: 'post', + data: params + }) +} + /** * 鑾峰彇褰撳墠闈㈡澘缁戝畾鐨勮澶囧垪琛� */ @@ -125,7 +164,7 @@ */ export function apiSetCurrentDevice(data: SetCurrentDeviceParams) { return request<BaseResponse>({ - url: `/v1/device/setCurrentDeviceId`, + url: `/api-s/v1/reportWork/setCurrentDeviceId`, method: 'post', data }) @@ -193,7 +232,7 @@ export interface ReportingRecordListParams { page?: number pageSize?: number - procedureId: number + workOrderProcedureID: number } /** @@ -201,16 +240,17 @@ */ export function apiGetReportingRecordList(params: ReportingRecordListParams) { return request<ListResponse<ReportingRecord[]>>({ - url: '/v1/reportWork/list', + url: '/api-s/v1/reportWork/list', method: 'get', params }) } export interface ReportWorkParams { - procedureId: number + workOrderProcedureID: number reportAmount: number workerID: string + workerName: string } /** @@ -218,7 +258,7 @@ */ export function apiReportWork(params: ReportWorkParams) { return request<BaseResponse>({ - url: '/v1/reportWork/report', + url: '/api-s/v1/reportWork/report', method: 'post', data: params }) diff --git a/src/api/task.ts b/src/api/task.ts index ca76d50..ca0ee32 100644 --- a/src/api/task.ts +++ b/src/api/task.ts @@ -35,6 +35,7 @@ /** 1 鏈敓浜� 2鐢熶骇涓� 3鐢熶骇瀹屾垚*/ Status: 1 | 2 | 3 procedure: ProcedureProcedure + productProcedureID: string } export interface ProcedureProcedure { @@ -54,6 +55,16 @@ channel: number } +export interface ParamsMap { + [keyProp: string]: string +} +export interface ProcedureModel { + number: string + product: string + procedure: string + paramsMap: ParamsMap +} + export interface Task { Order: Order Procedure: Procedure @@ -61,6 +72,7 @@ AllProcedures: string[] CurrentProcedureIndex: number CanStarted: boolean + ProcedureModel: ProcedureModel } export interface Material { materialId: string diff --git a/src/stores/craftModel.ts b/src/stores/craftModel.ts index b550e86..b1e86fc 100644 --- a/src/stores/craftModel.ts +++ b/src/stores/craftModel.ts @@ -13,14 +13,35 @@ function getCraftModelList() { if (taskStore.activeTask?.Procedure.ID) { craftModelList.value = [] - apiGetCraftModelList({ - procedureId: taskStore.activeTask?.Procedure.ID, - page: page.value, - pageSize: 6 - }).then((res) => { - craftModelList.value = res.data ?? [] - total.value = res.total - }) + console.log(taskStore, '8877994455') + const procedureModel = taskStore.activeTask?.ProcedureModel + const craftObj = [ + { + ID: Number(taskStore.activeTask?.Procedure?.productProcedureID), + CreatedAt: taskStore.activeTask?.Procedure?.CreatedAt, + UpdatedAt: taskStore.activeTask?.Procedure?.UpdatedAt, + DeletedAt: taskStore.activeTask?.Procedure?.DeletedAt, + number: procedureModel?.number, + product: procedureModel?.product, + procedure: procedureModel?.procedure, + Params: '', + paramsMap: procedureModel?.paramsMap, + deviceId: '', + isUpdate: false, + newParamsMap: '', + newNumber: '' + } + ] + craftModelList.value = craftObj ?? [] + + // apiGetCraftModelList({ + // procedureId: taskStore.activeTask?.Procedure.ID, + // page: page.value, + // pageSize: 6 + // }).then((res) => { + // craftModelList.value = res.data ?? [] + // total.value = res.total + // }) } } @@ -40,18 +61,19 @@ if (taskStore.activeTask?.Procedure.ID && !loading.value && hasMore.value) { page.value++ loading.value = true - apiGetCraftModelList({ - procedureId: taskStore.activeTask?.Procedure.ID, - page: page.value, - pageSize: 6 - }) - .then((res) => { - craftModelList.value = [...craftModelList.value, ...(res.data ?? [])] - total.value = res.total - }) - .finally(() => { - loading.value = false - }) + console.log(taskStore, '998877994455') + // apiGetCraftModelList({ + // procedureId: taskStore.activeTask?.Procedure.ID, + // page: page.value, + // pageSize: 6 + // }) + // .then((res) => { + // craftModelList.value = [...craftModelList.value, ...(res.data ?? [])] + // total.value = res.total + // }) + // .finally(() => { + // loading.value = false + // }) } } diff --git a/src/stores/devices.ts b/src/stores/devices.ts index e0f81ef..0b71784 100644 --- a/src/stores/devices.ts +++ b/src/stores/devices.ts @@ -25,11 +25,14 @@ data: deviceRes, run: startDevicePolling, cancel: cancelDevicePolling - } = useRequest(getDeviceList, { - manual: true, - pollingInterval: DEVICE_INFO_POLLING_DURATION, - pollingWhenHidden: false - }) + } = useRequest( + getDeviceList + // { + // manual: true, + // pollingInterval: DEVICE_INFO_POLLING_DURATION, + // pollingWhenHidden: false + // } + ) function startPollingDevice() { cancelDevicePolling() diff --git a/src/stores/tasks.ts b/src/stores/tasks.ts index 33df9a7..794268c 100644 --- a/src/stores/tasks.ts +++ b/src/stores/tasks.ts @@ -1,8 +1,8 @@ import { computed, ref } from 'vue' import { defineStore } from 'pinia' import type { Task, TasksGroupByChannel, TasksResponse } from '@/api/task' -import type { TaskListParams } from '@/api' -import { getTaskList } from '@/api' +import type { TaskListParams, TaskInfoParams } from '@/api' +import { getTaskList, getTaskInfo } from '@/api' import { isNumber } from 'lodash-es' export interface ChannelMoreBtnStatus { @@ -25,7 +25,8 @@ const params: TaskListParams = { type, offset: 0, - limit: 3 + limit: 3, + deviceID: localStorage.getItem('currentDeviceID') || '' } return getTaskList(params) .then((res) => { @@ -52,8 +53,20 @@ if (firstNotEmptyChannel) { const channelNumber = +firstNotEmptyChannel[0] - activeTask.value = channels[channelNumber].Tasks[0] - setActiveChannel(channelNumber) + // activeTask.value = channels[channelNumber].Tasks[0] + console.log(channels[channelNumber].Tasks[0].Procedure.ID, '1111') + const params: TaskInfoParams = { + deviceID: localStorage.getItem('currentDeviceID') || '', + procedureID: channels[channelNumber].Tasks[0].Procedure.ID + } + return getTaskInfo(params) + .then((res) => { + activeTask.value = res.data + }) + .catch((err) => { + console.error(err) + }) + .finally(() => {}) } else { // 濡傛灉娌℃湁浠诲姟灏辨竻绌哄綋鍓嶉�変腑鐨勪换鍔� activeTask.value = undefined @@ -69,8 +82,19 @@ function autoSelectTask(channel: number) { const currentChannelTaskList = channels.value[channel].Tasks if (currentChannelTaskList?.length) { - activeTask.value = currentChannelTaskList[0] - setActiveChannel(channel) + // activeTask.value = currentChannelTaskList[0].Procedure.ID + const params: TaskInfoParams = { + deviceID: localStorage.getItem('currentDeviceID') || '', + procedureID: currentChannelTaskList[0].Procedure.ID + } + return getTaskInfo(params) + .then((res) => { + activeTask.value = res.data + }) + .catch((err) => { + console.error(err) + }) + .finally(() => {}) } else { const firstNotEmptyChannel = Object.entries(channels.value).find((ele) => { const taskList = (ele[1] as TasksResponse)?.Tasks @@ -105,7 +129,8 @@ type: currentType.value, channel: channelNumber, offset: taskLength, - limit: 10 + limit: 10, + deviceID: localStorage.getItem('currentDeviceID') || '' } getTaskList(params) .then((res) => { diff --git a/src/views/dashboard/components/ChannelCollapse.vue b/src/views/dashboard/components/ChannelCollapse.vue index 090c60e..934df81 100644 --- a/src/views/dashboard/components/ChannelCollapse.vue +++ b/src/views/dashboard/components/ChannelCollapse.vue @@ -45,6 +45,9 @@ import { useTasksStore } from '@/stores/tasks' import { ArrowDownBold, ArrowUpBold } from '@element-plus/icons-vue' import { isNumber } from 'lodash-es' +import { getTaskInfo } from '@/api' +import type { TaskInfoParams } from '@/api' +import { storeToRefs } from 'pinia' export interface ChannelCollapseProps { channels: TasksGroupByChannel @@ -54,6 +57,7 @@ const activeChannel = ref<string[]>([]) const tasksStore = useTasksStore() +const { activeTask } = storeToRefs(tasksStore) watchEffect(() => { // 閫氶亾鏁版嵁鍙樺寲鍚� @@ -67,11 +71,26 @@ } function selectTask(task: Task | undefined) { - tasksStore.setActiveTask(task) - let channel = tasksStore?.activeTask?.Channel - if (isNumber(channel)) { - tasksStore.setActiveChannel(channel) + console.log(task, 'iiiiiii') + + const params: TaskInfoParams = { + deviceID: localStorage.getItem('currentDeviceID') || '', + procedureID: Number(task?.Procedure.ID) } + return getTaskInfo(params) + .then((res) => { + tasksStore.setActiveTask(res.data) + let channel = tasksStore?.activeTask?.Channel + if (isNumber(channel)) { + tasksStore.setActiveChannel(channel) + } + // taskStore.activeTask?.value = res.data + }) + .catch((err) => { + console.error(err) + }) + .finally(() => {}) + // tasksStore.setActiveTask(task) } </script> diff --git a/src/views/dashboard/components/DeviceCheckList.vue b/src/views/dashboard/components/DeviceCheckList.vue index 05d6508..13a4a39 100644 --- a/src/views/dashboard/components/DeviceCheckList.vue +++ b/src/views/dashboard/components/DeviceCheckList.vue @@ -76,6 +76,7 @@ }) return } + localStorage.setItem('currentDeviceID', selectedDevice.value || '') apiSetCurrentDevice({ currentDeviceID: selectedDevice.value }) .then(() => { ElMessage({ diff --git a/src/views/dashboard/components/ProcessInfo.vue b/src/views/dashboard/components/ProcessInfo.vue index 891f3ed..92bb945 100644 --- a/src/views/dashboard/components/ProcessInfo.vue +++ b/src/views/dashboard/components/ProcessInfo.vue @@ -13,17 +13,14 @@ </div> <div v-if="craftModel.number == task?.Procedure?.processModelNumber" class="tip-current">褰撳墠浣跨敤</div> <div class="btn"> - <el-button + <!-- <el-button type="primary" :loading="loading" :disabled="craftModel.isUpdate ? false : true" @click="onUpdateClick" > - <!-- <el-icon v-if="loading" color="#fff" :size="16" class="refresh-top-icon"> - <Loading /> - </el-icon> --> 鏇存柊宸ヨ壓 - </el-button> + </el-button> --> </div> </div> </template> diff --git a/src/views/dashboard/components/ReportingRecordModal.vue b/src/views/dashboard/components/ReportingRecordModal.vue index 2f3ab7e..136fbb8 100644 --- a/src/views/dashboard/components/ReportingRecordModal.vue +++ b/src/views/dashboard/components/ReportingRecordModal.vue @@ -78,7 +78,7 @@ return } apiGetReportingRecordList({ - procedureId: procedureId + workOrderProcedureID: procedureId }) .then((res) => { if (res.code === 200) { diff --git a/src/views/dashboard/components/TaskControl.vue b/src/views/dashboard/components/TaskControl.vue index cb9d2e2..ea82cb1 100644 --- a/src/views/dashboard/components/TaskControl.vue +++ b/src/views/dashboard/components/TaskControl.vue @@ -59,7 +59,7 @@ import { useDateFormat } from '@vueuse/core' import TaskControlModal from '@/views/dashboard/components/TaskControlModal.vue' import { CircleCloseFilled } from '@element-plus/icons-vue' -import { apiReportWork, finishTask } from '@/api' +import { apiReportWork, procedureUpdate } from '@/api' import { ElMessage } from 'element-plus' import ReportProductionModal from '@/views/dashboard/components/ReportProductionModal.vue' import { usePLCStore } from '@/stores/plc' @@ -103,7 +103,11 @@ return true } } - finishTask({ id: task!.value.Procedure.ID }).then( + procedureUpdate({ + isFinish: true, + isProcessing: false, + workOrderProcedureID: Number(task!.value.Procedure.ID) + }).then( (res) => { ElMessage({ message: '鎿嶄綔鎴愬姛锛�', @@ -190,9 +194,10 @@ // 鏈変汉鍛樻墠鍙互鎶ュ伐 if (workers.value[0].workerId) { apiReportWork({ - procedureId: task.value?.Procedure.ID, + workOrderProcedureID: Number(task.value?.Procedure.ID), reportAmount: amount, - workerID: workers.value[0].workerId + workerID: workers.value[0].workerId, + workerName: workers.value[0].workerName }) .then((res) => { if (res.code === 200) { diff --git a/src/views/dashboard/components/TaskControlModal.vue b/src/views/dashboard/components/TaskControlModal.vue index 6b7355d..c4c6db6 100644 --- a/src/views/dashboard/components/TaskControlModal.vue +++ b/src/views/dashboard/components/TaskControlModal.vue @@ -7,7 +7,7 @@ <div class="modal-content"> <template v-if="['鍒濆鍖�', '璁℃椂涓�', '鍑嗗鐢熶骇', '涓嬪彂鍙傛暟涓�'].includes(state.value as string)"> <div class="content-title"> - <div class="content-title-item">褰撳墠浠诲姟锛歿{ task?.Procedure.procedure.procedureName || '' }}</div> + <div class="content-title-item">褰撳墠浠诲姟锛歿{ task?.Procedure?.procedure?.procedureName || '' }}</div> <div class="content-title-item"> 鐢熶骇鏁伴噺锛� <div class="leaf-shape"> @@ -26,11 +26,11 @@ <div class="info-item">浜у搧鍚嶇О锛歿{ task.Order.productName || '' }}</div> <div class="info-item">鏁伴噺锛歿{ task.Order.amount || 0 }}{{ task.Order.unit }}</div> <div class="info-item">浜よ揣鏃ユ湡锛歿{ task.Order.deliverDate || '' }}</div> - <div class="info-item">宸ユ椂锛� {{ task.Procedure.procedure.workHours || '' }}</div> + <div class="info-item">宸ユ椂锛� {{ task?.Procedure?.procedure?.workHours || '' }}</div> <div class="info-item"> - 璁″垝鏃堕棿锛� {{ formatDate(task.Procedure.startTime) || '' }} + 璁″垝鏃堕棿锛� {{ formatDate(task?.Procedure?.startTime) || '' }} - - {{ formatDate(task.Procedure.endTime) }} + {{ formatDate(task?.Procedure?.endTime) }} </div> <div class="info-item">瀹㈡埛鍚嶇О锛歿{ task.Order.customer || '' }}</div> @@ -157,7 +157,7 @@ import { ref, toRefs, watch } from 'vue' import BigButton from '@/views/dashboard/components/BigButton.vue' import { CHANNEL_NAME_MAP } from '@/common/constants' -import { getCraftParams, sendProcessParams } from '@/api' +import { procedureUpdate, sendProcessParams } from '@/api' import { useCountDown } from '@/common/composable' import { storeToRefs } from 'pinia' import { useTasksStore } from '@/stores/tasks' @@ -210,18 +210,6 @@ if (taskId) { craftParams.value = [] getCraftParamsTip.value = '' - - getCraftParams({ id: taskId }).then( - (res) => { - craftParams.value = res.data.Params ?? [] - getCraftParamsTip.value = '' - }, - (err) => { - console.error(err) - craftParams.value = [] - getCraftParamsTip.value = '鑾峰彇宸ヨ壓鍙傛暟澶辫触锛�' - } - ) } } @@ -341,22 +329,38 @@ function startProduce() { send('寮�濮嬬敓浜�') - sendProcessParams({ - procedureId: task!.value!.Procedure.ID - }) - .then( - (res) => { - deliveryTip.value = '涓嬪彂鎴愬姛' - send('鎴愬姛') - countdown3s.startCountdown() - }, - (err) => { - console.error(err) - deliveryTip.value = err.msg ? err.msg : '鎶辨瓑锛屽伐搴忎笅鍙戝け璐ワ紒' - send('澶辫触') - } - ) - .finally(() => {}) + procedureUpdate({ + isFinish: false, + isProcessing: true, + workOrderProcedureID: Number(task!.value!.Procedure.ID) + }).then( + (res) => { + deliveryTip.value = '涓嬪彂鎴愬姛' + send('鎴愬姛') + countdown3s.startCountdown() + }, + (err) => { + console.error(err) + deliveryTip.value = err.msg ? err.msg : '鎶辨瓑锛屽伐搴忎笅鍙戝け璐ワ紒' + send('澶辫触') + } + ) + // sendProcessParams({ + // procedureId: task!.value!.Procedure.ID + // }) + // .then( + // (res) => { + // deliveryTip.value = '涓嬪彂鎴愬姛' + // send('鎴愬姛') + // countdown3s.startCountdown() + // }, + // (err) => { + // console.error(err) + // deliveryTip.value = err.msg ? err.msg : '鎶辨瓑锛屽伐搴忎笅鍙戝け璐ワ紒' + // send('澶辫触') + // } + // ) + // .finally(() => {}) } /** diff --git a/src/views/dashboard/components/TaskInfo.vue b/src/views/dashboard/components/TaskInfo.vue index 6315c9b..ec96d96 100644 --- a/src/views/dashboard/components/TaskInfo.vue +++ b/src/views/dashboard/components/TaskInfo.vue @@ -23,7 +23,7 @@ <div class="row"> <div class="col"> 褰撳墠浠诲姟: - <span>{{ task.Procedure.procedure.procedureName || '' }}</span> + <span>{{ task.Procedure?.procedure?.procedureName || '' }}</span> </div> <div class="col"> 浜у搧鍚嶇О: diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index 8420dff..32c8153 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -45,11 +45,11 @@ </el-tab-pane> <el-tab-pane label="鐗╂枡娓呭崟" name="鐗╂枡娓呭崟"> <InputMaterialsList - :material-list="activeTask?.Procedure.procedure.inputMaterials" + :material-list="activeTask?.Procedure?.procedure?.inputMaterials" @detail-click="showMaterialDetailModal" ></InputMaterialsList> <OutputMaterialsList - :material-list="activeTask?.Procedure.procedure.outputMaterials" + :material-list="activeTask?.Procedure?.procedure?.outputMaterials" @detail-click="showMaterialDetailModal" ></OutputMaterialsList> </el-tab-pane> @@ -77,8 +77,8 @@ <template #rightBlock2> <DeviceStatusInfo :type="1"></DeviceStatusInfo> <DeviceStatusInfo :device="deviceStore.deviceInfo" :type="2"></DeviceStatusInfo> - <DeviceNumberInfo></DeviceNumberInfo> - </template> + <DeviceNumberInfo></DeviceNumberInfo> </template + >褰撳墠浠诲姟: <template #rightBlock3> <SubTitle>鐭ヨ瘑搴�</SubTitle> <div class="task-detail-right-3"> @@ -187,6 +187,8 @@ // 鍚姩 璁惧 杞 const deviceStore = useDevicesStore() deviceStore.startPollingDevice() +// console.log(deviceStore, '1111') +// localStorage.setItem('currentDeviceID', deviceStore.deviceInfo.currentDeviceID) // 鍒囨崲浠诲姟鏃惰幏鍙栧搴斾换鍔$殑宸ヨ壓妯″瀷淇℃伅 const craftModelStore = useCraftModelStore() @@ -249,7 +251,9 @@ const currentWorkers = computed(() => { const channel = activeTask.value?.Channel if (isNumber(channel)) { - return channels.value[channel].workers ?? [] + console.log(activeTask.value?.Procedure?.procedure?.workers, '99999') + // return [] + return activeTask.value?.Procedure?.procedure?.workers ?? [] } else { return [] } -- Gitblit v1.8.0