This commit is contained in:
bb_pan 2025-12-17 14:54:56 +08:00
parent f5e05ff0f8
commit 2ec044e166
5 changed files with 111 additions and 17 deletions

View File

@ -1,5 +1,7 @@
<template> <template>
<div>
<el-dialog <el-dialog
v-if="visible"
title="添加装备/工具" title="添加装备/工具"
:visible.sync="visible" :visible.sync="visible"
width="1400px" width="1400px"
@ -139,9 +141,11 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="onHandleConfirm">确定</el-button> <el-button type="primary" @click="openConfirm">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<ConfirmationDialog ref="confirmationDlg" @confirm="onHandleConfirm" />
</div>
</template> </template>
<script> <script>
@ -149,6 +153,7 @@ import { getScrapItemListAPI } from '@/api/EquipmentRetireApply/index.js'
// //
import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js' import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js'
import { getTreeSelectApi } from '@/api/toolsManage/index.js' import { getTreeSelectApi } from '@/api/toolsManage/index.js'
import ConfirmationDialog from '@/views/business/components/ConfirmationDialog'
export default { export default {
props: { props: {
@ -157,6 +162,7 @@ export default {
default: () => [] default: () => []
} }
}, },
components: { ConfirmationDialog },
data() { data() {
return { return {
visible: false, visible: false,
@ -278,7 +284,7 @@ export default {
this.getItemList() this.getItemList()
}, },
selectable(row) { selectable(row) {
return !this.existingItems.some(item => item.devId === row.id) return !this.existingItems.some(item => item.id === row.id)
}, },
onSelectionChange(selection) { onSelectionChange(selection) {
this.selectedItems = selection this.selectedItems = selection
@ -289,21 +295,23 @@ export default {
// //
this.allSelectedItems.push(...selection) this.allSelectedItems.push(...selection)
}, },
openConfirm() {
onHandleConfirm() {
if (this.selectedItems.length === 0) { if (this.selectedItems.length === 0) {
this.$message.warning('请选择至少一项') this.$message.warning('请选择至少一项')
return return
} }
//
// const invalidItems = this.allSelectedItems.filter(item => !item.scrapQuantity || item.scrapQuantity < 1)
const invalidItems = this.selectedItems.filter(item => !item.scrapQuantity || item.scrapQuantity < 1) const invalidItems = this.selectedItems.filter(item => !item.scrapQuantity || item.scrapQuantity < 1)
if (invalidItems.length > 0) { if (invalidItems.length > 0) {
const invalidNames = invalidItems.map(item => item.typeModelName).join('、') const invalidNames = invalidItems.map(item => item.typeModelName).join('、')
this.$message.warning(`以下项目的申请报废数量必须大于0${invalidNames}`) this.$message.warning(`以下项目的申请报废数量必须大于0${invalidNames}`)
return return
} }
this.$refs.confirmationDlg.openDialog(this.selectedItems)
},
onHandleConfirm() {
//
// const invalidItems = this.allSelectedItems.filter(item => !item.scrapQuantity || item.scrapQuantity < 1)
// keyId // keyId
// const existingKeyIds = this.existingItems.map(item => item.keyId) // const existingKeyIds = this.existingItems.map(item => item.keyId)

View File

@ -235,8 +235,8 @@ export default {
bmFileInfos: item.bmFileInfos || [] bmFileInfos: item.bmFileInfos || []
})) }))
// //
const existingTypeIds = new Set(this.detailList.map(item => item.devId)) const existingTypeIds = new Set(this.detailList.map(item => item.id))
const newItems = itemsWithFileInfo.filter(item => !existingTypeIds.has(item.devId)) const newItems = itemsWithFileInfo.filter(item => !existingTypeIds.has(item.id))
this.detailList.push(...newItems) this.detailList.push(...newItems)
}, },

View File

@ -263,7 +263,7 @@
<el-col style="display: flex; justify-content: flex-end"> <el-col style="display: flex; justify-content: flex-end">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleAddQuery">查询</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleAddQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetAddQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetAddQuery">重置</el-button>
<el-button type="primary" size="mini" @click="saveAdd">确定添加</el-button> <el-button type="primary" size="mini" @click="confirmAdd">确定添加</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -316,6 +316,8 @@
@pagination="getApplyList" @pagination="getApplyList"
/> />
</el-dialog> </el-dialog>
<ConfirmationDialog ref="confirmationDlg" @confirm="saveAdd" />
</div> </div>
</template> </template>
<script> <script>
@ -329,9 +331,11 @@ import {
import { regionData } from 'element-china-area-data' import { regionData } from 'element-china-area-data'
import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js' import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js'
import { getTreeSelectApi } from '@/api/toolsManage/index.js' // import { getTreeSelectApi } from '@/api/toolsManage/index.js' //
import ConfirmationDialog from '@/views/business/components/ConfirmationDialog'
export default { export default {
name: 'AddEditApply', name: 'AddEditApply',
components: { ConfirmationDialog },
data() { data() {
return { return {
useTimeRange: [], // useTimeRange: [], //
@ -864,8 +868,7 @@ export default {
} }
}, },
// async confirmAdd() {
saveAdd() {
if (!this.ids.length) { if (!this.ids.length) {
this.$message.error('请勾选要添加的数据') this.$message.error('请勾选要添加的数据')
return return
@ -876,7 +879,10 @@ export default {
this.$message.error('请为数量管理的设备填写申请数量。') this.$message.error('请为数量管理的设备填写申请数量。')
return return
} }
this.$refs.confirmationDlg.openDialog(this.selectedRow)
},
//
async saveAdd() {
// //
const mainTimeRange = this.queryParams.useTimeRange const mainTimeRange = this.queryParams.useTimeRange
const defaultTimeRange = mainTimeRange && mainTimeRange.length === 2 const defaultTimeRange = mainTimeRange && mainTimeRange.length === 2

View File

@ -0,0 +1,71 @@
<template>
<el-dialog
title="确定添加"
:visible.sync="visible"
width="600px"
@close="handleClose"
>
<div v-loading="loading">
<!-- 列表 -->
<div style="margin-bottom: 20px">
<div style="font-weight: bold; margin-bottom: 10px">已添加 {{ selectedRows.length }} </div>
<el-table :data="selectedRows" style="width: 100%" max-height="270">
<el-table-column prop="typeName" align="center" label="装备名称" show-overflow-tooltip/>
<el-table-column prop="num" align="center" label="数量" show-overflow-tooltip>
<template slot-scope="{ row }">
<span v-if="row.num">{{ row.num }}</span>
<span v-else-if="row.repairNum">{{ row.repairNum }}</span>
<span v-else-if="row.scrapQuantity">{{ row.scrapQuantity }}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="confirm" :loading="loading">确定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
name: 'ConfirmationDialog',
data() {
return {
visible: false,
loading: false,
selectedRows: [],
}
},
methods: {
openDialog(selectedRows) {
console.log('🚀 ~ selectedRows:', selectedRows)
this.selectedRows = selectedRows
this.visible = true
},
async confirm() {
this.visible = false
// // promise
// return new Promise((resolve, reject) => {
// resolve()
// })
this.$emit('confirm')
},
handleClose() {
this.visible = false
this.selectedRows = []
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-dialog__body {
padding: 20px;
}
</style>

View File

@ -1,4 +1,5 @@
<template> <template>
<div>
<el-dialog <el-dialog
title="添加申请" title="添加申请"
:visible.sync="visible" :visible.sync="visible"
@ -129,18 +130,22 @@
<!-- 底部按钮 --> <!-- 底部按钮 -->
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="handleConfirm">确定添加</el-button> <el-button type="primary" @click="openConfirm">确定添加</el-button>
</span> </span>
</el-dialog> </el-dialog>
<ConfirmationDialog ref="confirmationDlg" @confirm="handleConfirm" />
</div>
</template> </template>
<script> <script>
import { getToBeRepairList } from "@/api/equipmentRepair"; import { getToBeRepairList } from "@/api/equipmentRepair";
import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js' import { getEquipmentTreeAPI } from '@/api/EquipmentConfig/index.js'
import { getTreeSelectApi } from '@/api/toolsManage/index.js' import { getTreeSelectApi } from '@/api/toolsManage/index.js'
import ConfirmationDialog from '@/views/business/components/ConfirmationDialog'
export default { export default {
name: 'SelectToolDialog', name: 'SelectToolDialog',
components: { ConfirmationDialog },
data() { data() {
return { return {
visible: false, visible: false,
@ -181,6 +186,7 @@ export default {
externalSelectedRows: [], externalSelectedRows: [],
tableList: [], tableList: [],
selectedList: [],
selectedMap: new Map(), selectedMap: new Map(),
isRestoring: false // isRestoring: false //
} }
@ -425,6 +431,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.selectedList = selection
if (this.isRestoring) return if (this.isRestoring) return
// //
selection.forEach(row => { selection.forEach(row => {
@ -440,9 +447,7 @@ export default {
} }
} }
}, },
openConfirm() {
//
handleConfirm() {
if (this.selectedMap.size === 0) { if (this.selectedMap.size === 0) {
return this.$message.warning("请至少选择一条数据") return this.$message.warning("请至少选择一条数据")
} }
@ -458,6 +463,10 @@ export default {
} }
} }
} }
this.$refs.confirmationDlg.openDialog(this.selectedList)
},
//
handleConfirm() {
// devType // devType
this.$emit("confirm", [...this.selectedMap.values()]) this.$emit("confirm", [...this.selectedMap.values()])
this.selectedMap.clear() this.selectedMap.clear()