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