黄伟杰 1 week ago
commit 5416bdbdac

@ -1,6 +1,11 @@
<template> <template>
<Dialog :title="title" v-model="dialogVisible" :appendToBody="true" width="1080"> <Dialog :title="title" v-model="dialogVisible" :appendToBody="true" width="1080">
<ContentWrap> <ContentWrap>
<!-- 新增查询表单区域 -->
<div v-if="$slots.header" class="search-container">
<slot name="header"></slot>
</div>
<el-table <el-table
ref="tableRef" ref="tableRef"
v-loading="loading" v-loading="loading"
@ -58,12 +63,14 @@ const props = withDefaults(
rowKey?: string rowKey?: string
pageSize?: number pageSize?: number
initialRows?: any[] initialRows?: any[]
queryParams?: Record<string, any> //
}>(), }>(),
{ {
selectionType: 'multiple', selectionType: 'multiple',
rowKey: 'id', rowKey: 'id',
pageSize: 10, pageSize: 10,
initialRows: () => [] initialRows: () => [],
queryParams: () => ({}) //
} }
) )
@ -108,7 +115,8 @@ const refreshSelectionOnTable = async () => {
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await props.fetchApi(queryParams) const params = getQueryParams()
const data = await props.fetchApi(params)
list.value = data.list || [] list.value = data.list || []
total.value = data.total || 0 total.value = data.total || 0
await refreshSelectionOnTable() await refreshSelectionOnTable()
@ -172,5 +180,31 @@ const submitSelection = () => {
dialogVisible.value = false dialogVisible.value = false
} }
defineExpose({ open }) //
const reload =async () => {
loading.value = true
//
await getList()
}
// 3. queryParams
const getQueryParams = () => {
return {
pageNo: queryParams.pageNo || 1,
pageSize: queryParams.pageSize || 10,
...props.queryParams //
}
}
// 4.
watch(() => props.queryParams, async () => {
await getList()
}, { deep: true })
defineExpose({ open, reload })
</script> </script>
<style scoped>
.search-container {
margin-bottom: 10px;
padding: 0 0px;
}
</style>

@ -3765,8 +3765,8 @@ export default {
DeviceAttributeType: { DeviceAttributeType: {
moduleName: '采集点类型', moduleName: '采集点类型',
index: '序号', index: '序号',
code: '类型编码', code: '编码',
name: '类型名称', name: '名称',
sort: '显示顺序', sort: '显示顺序',
remark: '备注', remark: '备注',
createTime: '创建时间', createTime: '创建时间',
@ -3778,8 +3778,8 @@ export default {
batchDelete: '批量删除', batchDelete: '批量删除',
export: '导出', export: '导出',
placeholderCode: '请输入类型编码', placeholderCode: '请输入编码',
placeholderName: '请输入类型名称', placeholderName: '请输入名称',
placeholderSort: '请输入显示顺序', placeholderSort: '请输入显示顺序',
placeholderRemark: '请输入备注', placeholderRemark: '请输入备注',

@ -186,7 +186,24 @@
:fetch-api="fetchDeviceLedgerPage" :fetch-api="fetchDeviceLedgerPage"
row-key="id" row-key="id"
@confirm="handleDeviceSelectConfirm" @confirm="handleDeviceSelectConfirm"
/> :query-params="mergedQueryParams"
>
<!-- 使用 header 插槽插入查询表单 -->
<template #header>
<el-form ref="searchFormRef" :model="searchParams" :inline="true" >
<el-form-item label="设备编号" prop="deviceCode">
<el-input v-model="searchParams.deviceCode" placeholder="请输入编号" clearable />
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input v-model="searchParams.deviceName" placeholder="请输入名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">{{ t('FactoryModeling.ProductInformation.searchButtonText') }}</el-button>
<el-button @click="resetSearch">{{ t('FactoryModeling.ProductInformation.resetButtonText') }}</el-button>
</el-form-item>
</el-form>
</template>
</TableSelectDialog>
<TableSelectDialog <TableSelectDialog
ref="moldSelectDialogRef" ref="moldSelectDialogRef"
title="选择模具" title="选择模具"
@ -194,7 +211,24 @@
:fetch-api="MoldBrandApi.getMoldPage" :fetch-api="MoldBrandApi.getMoldPage"
row-key="id" row-key="id"
@confirm="handleMoldSelectConfirm" @confirm="handleMoldSelectConfirm"
/> :query-params="mergedMoldQueryParams"
>
<!-- 使用 header 插槽插入查询表单 -->
<template #header>
<el-form ref="searchMoldFormRef" :model="searchMoldParams" :inline="true" >
<el-form-item label="模具编号" prop="code">
<el-input v-model="searchMoldParams.code" placeholder="请输入编号" clearable />
</el-form-item>
<el-form-item label="模具名称" prop="name">
<el-input v-model="searchMoldParams.name" placeholder="请输入名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleMoldSearch">{{ t('FactoryModeling.ProductInformation.searchButtonText') }}</el-button>
<el-button @click="resetMoldSearch">{{ t('FactoryModeling.ProductInformation.resetButtonText') }}</el-button>
</el-form-item>
</el-form>
</template>
</TableSelectDialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ProductApi, ProductVO } from '@/api/erp/product/product' import { ProductApi, ProductVO } from '@/api/erp/product/product'
@ -220,6 +254,42 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const formType = ref('') // create - update - const formType = ref('') // create - update -
const deviceSelectDialogRef = ref() const deviceSelectDialogRef = ref()
const moldSelectDialogRef = ref() const moldSelectDialogRef = ref()
const searchFormRef = ref()
// 1.
const searchParams = reactive({
deviceCode: undefined,
deviceName: undefined,
})
const handleSearch = () => {
//
deviceSelectDialogRef.value?.reload?.()
}
const resetSearch = () => {
searchFormRef.value?.resetFields()
handleSearch()
}
// 1.
const searchMoldParams = reactive({
code: undefined,
name: undefined,
})
const searchMoldFormRef = ref()
const handleMoldSearch = () => {
//
moldSelectDialogRef.value?.reload?.()
}
const resetMoldSearch = () => {
searchMoldFormRef.value?.resetFields()
handleSearch()
}
// 2.
const mergedQueryParams = computed(() => ({ ...searchParams }))
const mergedMoldQueryParams = computed(() => ({ ...searchMoldParams }))
const formData = ref({ const formData = ref({
id: undefined, id: undefined,
name: undefined, name: undefined,

@ -25,13 +25,12 @@
> >
<el-option v-for="opt in deviceOptions" :key="String(opt.value)" :label="opt.label" :value="opt.value" /> <el-option v-for="opt in deviceOptions" :key="String(opt.value)" :label="opt.label" :value="opt.value" />
</el-select>--> </el-select>-->
<el-input :model-value="displayItemDevice" readonly clearable class="device-ledger-selection-input" <el-input :model-value="displayItemDevice" readonly clearable class="device-ledger-selection-input"
:placeholder="t('MoldManagement.MoldOperate.placeholderDevice')" :placeholder="t('MoldManagement.MoldOperate.placeholderDevice')"
@click="openCriticalComponentDialog" @clear="clearBeijian" /> @click="openCriticalComponentDialog" />
</el-form-item> </el-form-item>
<el-form-item :label="t('MoldManagement.MoldOperate.mold')" prop="moldId" v-if="formData.operateType == '1'"> <el-form-item :label="t('MoldManagement.MoldOperate.mold')" prop="moldId" v-if="formData.operateType == '1'">
<el-select <!-- <el-select
v-model="formData.moldId" v-model="formData.moldId"
multiple multiple
clearable clearable
@ -45,7 +44,13 @@
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>-->
<el-input
:model-value="moldDisplayText"
:placeholder="t('MoldManagement.MoldOperate.placeholderMold')"
readonly
@click="openMoldSelectDialog"
/>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="formData.operateType == '2' && formData.deviceId" v-if="formData.operateType == '2' && formData.deviceId"
@ -78,92 +83,64 @@
</template> </template>
</Dialog> </Dialog>
<el-dialog <TableSelectDialog
v-model="itemDialogVisible" ref="deviceSelectDialogRef"
:title="t('QualityManagement.ZjSchema.selectItemDialogTitle')" title="选择设备"
width="1300px" :columns="deviceColumns"
draggable :fetch-api="fetchDeviceLedgerPage"
row-key="id"
@confirm="handleDeviceSelectConfirm"
:query-params="mergedQueryParams"
> >
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" <!-- 使用 header 插槽插入查询表单 -->
label-width="60px"> <template #header>
<el-form-item :label="t('EquipmentManagement.EquipmentLedger.deviceCode')" <el-form ref="searchFormRef" :model="searchParams" :inline="true" >
prop="deviceCode"> <el-form-item label="设备编号" prop="deviceCode">
<el-input <el-input v-model="searchParams.deviceCode" placeholder="请输入编号" clearable />
v-model="queryParams.deviceCode" </el-form-item>
:placeholder="t('EquipmentManagement.EquipmentLedger.placeholderDeviceCode')" <el-form-item label="设备名称" prop="deviceName">
clearable @keyup.enter="handleQuery" <el-input v-model="searchParams.deviceName" placeholder="请输入名称" clearable />
class="!w-240px"/> </el-form-item>
</el-form-item> <el-form-item>
<el-form-item :label="t('EquipmentManagement.EquipmentLedger.deviceName')" <el-button type="primary" @click="handleSearch">{{ t('FactoryModeling.ProductInformation.searchButtonText') }}</el-button>
prop="deviceName"> <el-button @click="resetSearch">{{ t('FactoryModeling.ProductInformation.resetButtonText') }}</el-button>
<el-input </el-form-item>
v-model="queryParams.deviceName" </el-form>
:placeholder="t('EquipmentManagement.EquipmentLedger.placeholderDeviceName')"
clearable @keyup.enter="handleQuery"
class="!w-240px"/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px"/>
{{ t('common.query') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px"/>
{{ t('common.reset') }}
</el-button>
</el-form-item>
</el-form>
<ContentWrap>
<el-table ref="multipleTableRef" v-loading="loading" :data="deviceList" :stripe="true"
@selection-change="handleSelectionChange" @select="handleSelect" @select-all="handleSelectAll" :show-overflow-tooltip="true"
class="no-select-all"
row-key="id">
<el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column :label="t('EquipmentManagement.EquipmentLedger.deviceCode')"
align="center" prop="deviceCode" min-width="160px" sortable/>
<el-table-column :label="t('EquipmentManagement.EquipmentLedger.deviceName')"
align="center" prop="deviceName" min-width="140px" sortable/>
<el-table-column :label="t('EquipmentManagement.EquipmentLedger.ratedCapacity')"
align="center" prop="ratedCapacity" min-width="120px"/>
<el-table-column :label="t('EquipmentManagement.EquipmentLedger.deviceSpec')"
align="center" prop="deviceSpec"/>
<!-- <el-table-column :label="t('EquipmentManagement.EquipmentLedger.deviceModel')"
align="center" prop="deviceModel"/>-->
<!-- <el-table-column :label="t('EquipmentManagement.EquipmentLedger.deviceBrand')" align="center" prop="deviceBrand" /> -->
<el-table-column
:label="t('EquipmentManagement.EquipmentLedger.productionDate')" align="center"
prop="productionDate" :formatter="dateFormatter2"
width="120px" sortable/>
<el-table-column
:label="t('EquipmentManagement.EquipmentLedger.factoryEntryDate')" align="center"
prop="factoryEntryDate" :formatter="dateFormatter2"
width="120px" sortable/>
</el-table>
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<template #footer>
<el-button @click="itemDialogVisible = false">
{{ t('common.cancel') }}
</el-button>
<el-button type="primary" @click="confirmSelectItems">
{{ t('common.ok') }}
</el-button>
</template> </template>
</el-dialog> </TableSelectDialog>
<TableSelectDialog
ref="moldSelectDialogRef"
title="选择模具"
:columns="moldColumns"
:fetch-api="MoldBrandApi.getMoldPage"
row-key="id"
@confirm="handleMoldSelectConfirm"
:query-params="mergedMoldQueryParams"
>
<!-- 使用 header 插槽插入查询表单 -->
<template #header>
<el-form ref="searchMoldFormRef" :model="searchMoldParams" :inline="true" >
<el-form-item label="模具编号" prop="code">
<el-input v-model="searchMoldParams.code" placeholder="请输入编号" clearable />
</el-form-item>
<el-form-item label="模具名称" prop="name">
<el-input v-model="searchMoldParams.name" placeholder="请输入名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleMoldSearch">{{ t('FactoryModeling.ProductInformation.searchButtonText') }}</el-button>
<el-button @click="resetMoldSearch">{{ t('FactoryModeling.ProductInformation.resetButtonText') }}</el-button>
</el-form-item>
</el-form>
</template>
</TableSelectDialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { MoldOperateApi, MoldOperateVO } from '@/api/mes/moldoperate' import { MoldOperateApi, MoldOperateVO } from '@/api/mes/moldoperate'
import { MoldBrandApi, MoldVO } from '@/api/erp/mold' import { MoldBrandApi, MoldVO } from '@/api/erp/mold'
import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger' import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger'
import {ref} from "vue"; import TableSelectDialog from '@/components/TableSelectDialog/TableSelectDialog.vue'
import {ElTable} from "element-plus";
import {ZjItemApi, ZjItemVO} from "@/api/mes/zjitem";
import { dateFormatter2 } from '@/utils/formatTime'
/** 模具上下模 表单 */ /** 模具上下模 表单 */
defineOptions({ name: 'MoldOperateForm' }) defineOptions({ name: 'MoldOperateForm' })
@ -264,11 +241,11 @@ const open = async (type: string, id?: number) => {
} }
}else{ }else{
ids.value=[] ids.value=[]
moldIds.value=[]
} }
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 提交表单 */ /** 提交表单 */
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
// const submitForm = async () => { // const submitForm = async () => {
@ -304,11 +281,11 @@ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成
const submitForm = async () => { const submitForm = async () => {
// loading // loading
formLoading.value = true formLoading.value = true
try { try {
// 1. // 1.
await formRef.value.validate() await formRef.value.validate()
// 2. // 2.
const raw = formData.value as any const raw = formData.value as any
const submitData: any = { const submitData: any = {
@ -343,13 +320,13 @@ const submitForm = async () => {
await MoldOperateApi.updateMoldOperate(submitData) await MoldOperateApi.updateMoldOperate(submitData)
message.success(t('common.updateSuccess')) message.success(t('common.updateSuccess'))
} }
// 4. // 4.
dialogVisible.value = false dialogVisible.value = false
emit('success') emit('success')
} catch (error) { } catch (error) {
} finally { } finally {
// loading // loading
formLoading.value = false formLoading.value = false
@ -426,10 +403,98 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const deviceColumns = [
{ label: '设备编号', prop: 'deviceCode', minWidth: 140 },
{ label: '设备名称', prop: 'deviceName', minWidth: 160 },
{ label: '设备型号', prop: 'deviceModel', minWidth: 140 },
{ label: '所属车间', prop: 'workshop', minWidth: 140 }
]
const moldColumns = [
{ label: '模具编码', prop: 'code', minWidth: 140 },
{ label: '模具名称', prop: 'name', minWidth: 160 },
{ label: '模具型号', prop: 'brandName', minWidth: 140 },
{ label: '状态', prop: 'status', minWidth: 100 }
]
const fetchDeviceLedgerPage = (params: Record<string, any>) => {
return DeviceLedgerApi.getDeviceLedgerPage({
...params,
isScheduled: 1
})
}
const selectedDeviceRows = ref<any[]>([])
const selectedMoldRows = ref<any[]>([])
const handleDeviceSelectConfirm = (payload: { ids: (number | string)[]; rows: any[] }) => {
formData.value.devices = payload.rows
.map((item) => {
const id = Number(item.id)
if (!Number.isFinite(id)) return undefined
return {
id,
name: item.deviceName || item.name || item.code || `设备ID:${id}`
}
})
.filter((item): item is { id: number; name: string } => Boolean(item))
selectedDeviceRows.value = payload.rows
formData.value.deviceId = payload.ids.join(',')
ids.value = payload.ids.map((id) => Number(id))
}
const handleMoldSelectConfirm = (payload: { ids: (number | string)[]; rows: any[] }) => {
formData.value.molds = payload.rows
.map((item) => {
const id = Number(item.id)
if (!Number.isFinite(id)) return undefined
return {
id,
name: item.name || item.code || `模具ID:${id}`
}
})
.filter((item): item is { id: number; name: string } => Boolean(item))
selectedMoldRows.value = payload.rows
formData.value.moldId = payload.ids.join(',')
moldIds.value = payload.ids.map((id) => Number(id))
}
// 1.
const searchParams = reactive({
deviceCode: undefined,
deviceName: undefined,
})
const searchFormRef = ref()
const handleSearch = () => {
//
deviceSelectDialogRef.value?.reload?.()
}
const resetSearch = () => {
searchFormRef.value?.resetFields()
handleSearch()
}
// 1.
const searchMoldParams = reactive({
code: undefined,
name: undefined,
})
const searchMoldFormRef = ref()
const handleMoldSearch = () => {
//
moldSelectDialogRef.value?.reload?.()
}
const resetMoldSearch = () => {
searchMoldFormRef.value?.resetFields()
handleSearch()
}
const moldSelectDialogRef = ref()
// 2.
const mergedQueryParams = computed(() => ({ ...searchParams }))
const mergedMoldQueryParams = computed(() => ({ ...searchMoldParams }))
const ids = ref([]) const ids = ref([])
const moldIds= ref([])
const itemList = ref<DeviceLedgerVO[]>([]) const itemList = ref<DeviceLedgerVO[]>([])
const itemDialogVisible = ref(false) const moldItemList = ref<MoldVO[]>([])
const multipleTableRef = ref<InstanceType<typeof ElTable>>() const deviceSelectDialogRef = ref(false)
const deviceList = ref<DeviceLedgerVO[]>([]) const deviceList = ref<DeviceLedgerVO[]>([])
const selectedRows = ref<any[]>([]) const selectedRows = ref<any[]>([])
const total = ref(0) const total = ref(0)
@ -447,134 +512,39 @@ const displayItemDevice = computed( () => {
return names.join(',') return names.join(',')
}) })
const openCriticalComponentDialog = async () => { const moldDisplayText = computed(() => {
itemDialogVisible.value = true if (!moldIds.value.length)return ''
let initIds= formData.value.deviceId!=undefined?formData.value.deviceId.toString().split(","):[] if (!moldItemList.value.length) {
ids.value=initIds.map((id) => Number(id)) return formData.value.moldId ? String(formData.value.moldId) : ''
setDefaultSelections()
}
//
const setDefaultSelections = () => {
// DOM
nextTick(() => {
if (!multipleTableRef.value) return
multipleTableRef.value.clearSelection()
let initIds= formData.value.deviceId!=undefined?formData.value.deviceId.toString().split(","):[]
const rawSubjectIds =initIds.map((id) => Number(id))
if (rawSubjectIds.length != 0) {
let row = {
id: undefined
}
multipleTableRef.value.toggleRowSelection(row, true)
}
//
deviceList.value.forEach(row => {
let id = row.id;
if (rawSubjectIds.includes(row.id)) {
multipleTableRef.value.toggleRowSelection(row, true)
}
})
})
}
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
deviceCode: undefined,
deviceName: undefined,
})
const clearBeijian = () => {
formData.value.item = ''
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
const getList = async () => {
loading.value = true
try {
const data = await DeviceLedgerApi.getDeviceLedgerPage(queryParams)
deviceList.value = data.list
total.value = data.total
//
nextTick(() => {
toggleSelection()
})
} finally {
loading.value = false
} }
} const map = new Map(moldItemList.value.map((item) => [item.id, item.name]))
const names = moldIds.value
// .map((id) => map.get(id))
const toggleSelection = () => { .filter((name) => name)
if (!multipleTableRef.value || !selectedRows.value.length) return return names.join(',')
})
//
deviceList.value.forEach(row => {
//
const isSelected = selectedRows.value.some(item => item.id === row.id)
if (isSelected) {
//
multipleTableRef.value!.toggleRowSelection(row, true)
} else {
//
multipleTableRef.value!.toggleRowSelection(row, false)
}
})
}
const handleSelectionChange = (rows: ZjItemVO[]) => {
// id
const currentPageIds = rows.map(item => item.id)
//
selectedRows.value = selectedRows.value.filter(
item => !currentPageIds.includes(item.id)
)
//
selectedRows.value.push(...rows)
let a=1;
}
//
const currentSelectedRows = ref([])
const handleSelectAll = (selection) => { const openCriticalComponentDialog = async () => {
let initIds=selection?.map((row) => row.id).filter((id) => id !== undefined) ?? [] searchParams.deviceCode=''
ids.value =initIds.map((id) => Number(id)) searchParams.deviceName=''
searchMoldParams.code=''
searchMoldParams.name=''
const rows = selectedDeviceRows.value.map((item) => ({ ...item, id: Number(item.id) }))
deviceSelectDialogRef.value?.open(rows)
let initIds= formData.value.deviceId!=undefined?formData.value.deviceId.toString().split(","):[]
ids.value=initIds.map((id) => Number(id))
} }
// select row selected const openMoldSelectDialog = () => {
const handleSelect = (selection, row) => { const rows = selectedMoldRows.value.map((item) => ({ ...item, id: Number(item.id) }))
// moldSelectDialogRef.value?.open(rows)
const isSelected = selection.includes(row)
if (isSelected) {
// console.log(` : ID=${row.id}, Name=${row.name}`)
ids.value.push(row.id)
} else {
ids.value = ids.value.filter(
item => item !== row.id
)
// console.log(` : ID=${row.id}, Name=${row.name}`)
}
//
currentSelectedRows.value = selection
} }
const confirmSelectItems = () => { const toDeviceRows = (split: any) => {
formData.value.deviceId = ids.value.join(',') return split.map((item: any) => ({
itemDialogVisible.value = false id: item,
deviceName: item
}))
} }
const initSelectedItems = async () => { const initSelectedItems = async () => {
@ -586,15 +556,13 @@ const initSelectedItems = async () => {
loading.value = false loading.value = false
} }
} }
if (!moldItemList.value.length) {
loading.value = true
try {
moldItemList.value = await MoldBrandApi.getMoldAllList()
} finally {
loading.value = false
}
}
} }
/** 初始化 **/
onMounted(async () => {
getList()
})
</script> </script>
<style scoped lang="scss">
.no-select-all :deep(.el-table__header-wrapper .el-checkbox) {
display: none;
}
</style>

@ -68,6 +68,7 @@
row-key="id" row-key="id"
:stripe="true" :stripe="true"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
:expand-row-keys="expandedKeys"
@expand-change="handleExpandChange" @expand-change="handleExpandChange"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
@ -163,7 +164,7 @@ defineOptions({ name: 'PlanMaintenance' })
const message = useMessage() const message = useMessage()
const { t } = useI18n() const { t } = useI18n()
const expandedKeys = ref<number[]>([])
const dictStore = useDictStoreWithOut() const dictStore = useDictStoreWithOut()
const dictReady = ref(false) const dictReady = ref(false)
@ -229,6 +230,7 @@ const normalizeList = (res: any): { list: any[]; total: number } => {
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
expandedKeys.value = []
try { try {
const res = await PlanMaintenanceApi.getPlanMaintenancePage({ const res = await PlanMaintenanceApi.getPlanMaintenancePage({
pageNo: queryParams.pageNo, pageNo: queryParams.pageNo,
@ -258,7 +260,7 @@ const resetQuery = () => {
const ensureSubjectListLoaded = async (id: number | string) => { const ensureSubjectListLoaded = async (id: number | string) => {
const key = String(id) const key = String(id)
if (!key) return if (!key) return
if (subjectListMap.value[key]) return //if (subjectListMap.value[key]) return
subjectLoadingMap.value[key] = true subjectLoadingMap.value[key] = true
try { try {
const res = await PlanMaintenanceApi.getSubjectList(id) const res = await PlanMaintenanceApi.getSubjectList(id)

Loading…
Cancel
Save