From 3d2b83ca4e1bc6e7b8bb6c6b24ba2d3507884d2a Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 27 一月 2026 17:14:37 +0800
Subject: [PATCH] 迁移库存解冻/冻结
---
src/views/equipmentManagement/upkeep/index.vue | 150 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 134 insertions(+), 16 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 75f0751..543e37b 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -64,16 +64,14 @@
<template #operation="{ row }">
<el-button
type="primary"
- text
- icon="editPen"
+ link
@click="editScheduledTask(row)"
>
缂栬緫
</el-button>
<el-button
type="danger"
- text
- icon="delete"
+ link
@click="delScheduledTaskByIds(row.id)"
>
鍒犻櫎
@@ -144,7 +142,7 @@
<el-button
type="danger"
icon="Delete"
- :disabled="multipleList.length <= 0"
+ :disabled="multipleList.length <= 0 || hasFinishedStatus"
@click="delRepairByIds(multipleList.map((item) => item.id))"
>
鎵归噺鍒犻櫎
@@ -173,28 +171,44 @@
<el-tag v-if="row.status === 0" type="warning">寰呬繚鍏�</el-tag>
</template>
<template #operation="{ row }">
- <el-button
+ <!-- 杩欎釜鍔熻兘璺熸柊澧炰繚鍏诲姛鑳戒竴妯′竴鏍凤紝鏈夊暐鎰忎箟锛� -->
+ <!-- <el-button
type="primary"
text
@click="addMaintain(row)"
>
鏂板淇濆吇
- </el-button>
+ </el-button> -->
<el-button
type="primary"
- text
- icon="editPen"
+ link
+ :disabled="row.status === 1"
@click="editPlan(row.id)"
>
缂栬緫
</el-button>
<el-button
+ type="success"
+ link
+ :disabled="row.status === 1"
+ @click="addMaintain(row)"
+ >
+ 淇濆吇
+ </el-button>
+ <el-button
type="danger"
- text
- icon="delete"
+ link
+ :disabled="row.status === 1"
@click="delRepairByIds(row.id)"
>
鍒犻櫎
+ </el-button>
+ <el-button
+ type="primary"
+ link
+ @click="openFileDialog(row)"
+ >
+ 闄勪欢
</el-button>
</template>
</PIMTable>
@@ -204,22 +218,37 @@
<PlanModal ref="planModalRef" @ok="getTableData" />
<MaintenanceModal ref="maintainModalRef" @ok="getTableData" />
<FormDia ref="formDiaRef" @closeDia="getScheduledTableData" />
+ <FileListDialog
+ ref="fileListDialogRef"
+ v-model="fileDialogVisible"
+ :show-upload-button="true"
+ :show-delete-button="true"
+ :delete-method="handleAttachmentDelete"
+ :name-column-label="'闄勪欢鍚嶇О'"
+ :rulesRegulationsManagementId="currentMaintenanceTaskId"
+ @upload="handleAttachmentUpload" />
</div>
</template>
<script setup>
-import { ref, onMounted, reactive, getCurrentInstance, nextTick } from 'vue'
+import { ref, onMounted, reactive, getCurrentInstance, nextTick, computed } from 'vue'
import { Search } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
-import PlanModal from './Modal/PlanModal.vue'
-import MaintenanceModal from './Modal/MaintenanceModal.vue'
-import FormDia from './Modal/formDia.vue'
+import PlanModal from './Form/PlanModal.vue'
+import MaintenanceModal from './Form/MaintenanceModal.vue'
+import FormDia from './Form/formDia.vue'
+import FileListDialog from '@/components/Dialog/FileListDialog.vue'
import {
getUpkeepPage,
delUpkeep,
deviceMaintenanceTaskList,
deviceMaintenanceTaskDel,
} from '@/api/equipmentManagement/upkeep'
+import {
+ listMaintenanceTaskFiles,
+ addMaintenanceTaskFile,
+ delMaintenanceTaskFile,
+} from '@/api/equipmentManagement/maintenanceTaskFile'
import dayjs from 'dayjs'
const { proxy } = getCurrentInstance()
@@ -233,6 +262,10 @@
const maintainModalRef = ref()
// 瀹氭椂浠诲姟寮圭獥鎺у埗鍣�
const formDiaRef = ref()
+// 闄勪欢寮圭獥
+const fileListDialogRef = ref(null)
+const fileDialogVisible = ref(false)
+const currentMaintenanceTaskId = ref(null)
// 浠诲姟璁板綍tab锛堝師璁惧淇濆吇椤甸潰锛夌浉鍏冲彉閲�
const filters = reactive({
@@ -378,7 +411,7 @@
dataType: "slot",
slot: "operation",
align: "center",
- width: "300px",
+ width: "350px",
},
])
@@ -493,6 +526,11 @@
multipleList.value = selection
}
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+const hasFinishedStatus = computed(() => {
+ return multipleList.value.some(item => item.status === 1)
+})
+
const changePage = (page) => {
pagination.value.currentPage = page.page
pagination.value.pageSize = page.limit
@@ -512,6 +550,13 @@
}
const delRepairByIds = async (ids) => {
+ // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
+ const hasFinished = multipleList.value.some(item => item.status === 1)
+ if (hasFinished) {
+ ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�')
+ return
+ }
+
try {
await ElMessageBox.confirm('纭鍒犻櫎淇濆吇鏁版嵁, 姝ゆ搷浣滀笉鍙��?', '璀﹀憡', {
confirmButtonText: '纭畾',
@@ -552,6 +597,79 @@
getTableData()
}
+// 闄勪欢鐩稿叧鏂规硶
+// 鏌ヨ闄勪欢鍒楄〃
+const fetchMaintenanceTaskFiles = async (deviceMaintenanceId) => {
+ try {
+ const params = {
+ current: 1,
+ size: 100,
+ deviceMaintenanceId,
+ rulesRegulationsManagementId:deviceMaintenanceId
+ }
+ const res = await listMaintenanceTaskFiles(params)
+ const records = res?.data?.records || []
+ const mapped = records.map(item => ({
+ id: item.id,
+ name: item.fileName || item.name,
+ url: item.fileUrl || item.url,
+ raw: item,
+ }))
+ fileListDialogRef.value?.setList(mapped)
+ } catch (error) {
+ ElMessage.error('鑾峰彇闄勪欢鍒楄〃澶辫触')
+ }
+}
+
+// 鎵撳紑闄勪欢寮圭獥
+const openFileDialog = async (row) => {
+ currentMaintenanceTaskId.value = row.id
+ fileDialogVisible.value = true
+ await fetchMaintenanceTaskFiles(row.id)
+}
+
+// 鍒锋柊闄勪欢鍒楄〃
+const refreshFileList = async () => {
+ if (!currentMaintenanceTaskId.value) return
+ await fetchMaintenanceTaskFiles(currentMaintenanceTaskId.value)
+}
+
+// 涓婁紶闄勪欢
+const handleAttachmentUpload = async (filePayload) => {
+ if (!currentMaintenanceTaskId.value) return
+ try {
+ const payload = {
+ name: filePayload?.fileName || filePayload?.name,
+ url: filePayload?.fileUrl || filePayload?.url,
+ deviceMaintenanceId: currentMaintenanceTaskId.value,
+ }
+ await addMaintenanceTaskFile(payload)
+ ElMessage.success('鏂囦欢涓婁紶鎴愬姛')
+ await refreshFileList()
+ } catch (error) {
+ ElMessage.error('鏂囦欢涓婁紶澶辫触')
+ }
+}
+
+// 鍒犻櫎闄勪欢
+const handleAttachmentDelete = async (row) => {
+ if (!row?.id) return false
+ try {
+ await ElMessageBox.confirm('纭鍒犻櫎璇ラ檮浠讹紵', '鎻愮ず', { type: 'warning' })
+ } catch {
+ return false
+ }
+ try {
+ await delMaintenanceTaskFile(row.id)
+ ElMessage.success('鍒犻櫎鎴愬姛')
+ await refreshFileList()
+ return true
+ } catch (error) {
+ ElMessage.error('鍒犻櫎澶辫触')
+ return false
+ }
+}
+
onMounted(() => {
// 鏍规嵁榛樿婵�娲荤殑 Tab 璋冪敤瀵瑰簲鐨勬煡璇㈡帴鍙�
if (activeTab.value === 'scheduled') {
--
Gitblit v1.9.3