Merge remote-tracking branch 'origin/main'

# Conflicts:
#	src/api/iot/deviceOperationOverview/index.ts
main
liutao 4 days ago
commit 1418015844

@ -0,0 +1,47 @@
import request from '@/config/axios'
export interface CapacityReportVO {
id: number
deviceCode: string
deviceName: string
typeName: string
deviceStatus: number
ratedCapacity: number
reportCapacity: number
actualCapacity: number
workshopName: string
}
export interface CapacityReportQuery {
pageNo: number
pageSize: number
deviceCode?: string
deviceName?: string
deviceType?: string
deviceStatus?: string
workshop?: string
ids?: string
}
export const DeviceLedgerApi = {
/**
*
*/
getCapacityReportPage: async (params: CapacityReportQuery) => {
return await request.get({ url: '/mes/device-ledger/capacity-report/page', params })
},
/**
*
*/
exportCapacityReport: async (params: { ids?: string }) => {
return await request.download({ url: '/mes/device-ledger/capacity-report/export-excel', params })
},
/**
*
*/
updateDeviceLedger: async (data: { id: number; deviceStatus: number }) => {
return await request.put({ url: '/mes/device-ledger/update', data })
}
}

@ -177,5 +177,9 @@ export const PlanApi = {
getPlanPageByTask: async (params: any) => {
return await request.get({ url: `/mes/plan/page-by-task`, params })
},
getProductCapacityPage: async (params: any) => {
return await request.get({ url: `/mes/plan/product-capacity-page`, params })
}
}

@ -1335,10 +1335,57 @@ export default {
validatorDeviceCodeRequired: 'Code can not be empty',
gjTitle: 'Select key components',
bjTitle: 'Select spare parts',
normal: 'Normal',
stop: 'Stopped',
maintenance: 'Maintenance',
scrap: 'Scrap',
placeholderWorkshop: 'Please input workshop',
reportCapacity: 'Report Capacity',
actualCapacity: 'Actual Capacity',
Detail: {
invalidId: 'Invalid device ID'
}
},
// Capacity Report
CapacityReport: {
deviceCode: 'Device Code',
deviceName: 'Device Name',
deviceType: 'Device Type',
deviceStatus: 'Device Status',
workshop: 'Workshop',
ratedCapacity: 'Rated Capacity (Planned Capacity)',
reportCapacity: 'Report Capacity',
reportCapacityTooltip: 'Default query for average of data from the last half year (excluding today)',
reportCapacityViewDetail: 'View Detail',
actualCapacity: 'Actual Capacity',
actualCapacityTooltip: 'Default query for average of data from the last half year (excluding today)',
placeholderDeviceCode: 'Please input device code',
placeholderDeviceName: 'Please input device name',
placeholderDeviceType: 'Please input device type',
placeholderDeviceStatus: 'Please select device status',
placeholderWorkshop: 'Please input workshop',
baogongTime: 'Capacity Statistics Time',
placeholderBaogongTimeStart: 'Start Time',
placeholderBaogongTimeEnd: 'End Time',
shortcutLastWeek: 'Last Week',
shortcutLastHalfYear: 'Last Half Year',
shortcutLastYear: 'Last Year',
dialogTitlePrefix: 'Report Capacity Detail - ',
dialogProductCode: 'Product Code',
dialogProductCodePlaceholder: 'Please input product code',
dialogProductName: 'Product Name',
dialogProductNamePlaceholder: 'Please input product name',
dialogBaogongTime: 'Report Time',
dialogBaogongTimeStart: 'Report Start Time',
dialogBaogongTimeEnd: 'Report End Time',
dialogTaskCode: 'Task Code',
dialogTaskCodePlaceholder: 'Please input task code',
dialogBaogongTotal: 'Report Total',
dialogAvgCapacity: 'Avg Report Capacity',
dialogSearchButtonText: 'Search',
dialogResetButtonText: 'Reset',
exportFilename: 'Capacity Report.xls'
},
// Critical Component
EquipmentKeyItems: {
code: 'Code',
@ -1803,6 +1850,8 @@ export default {
addButtonText: 'Add',
exportButtonText: 'Export',
expandButtonText: 'Expand/Collapse',
collapseText: 'Collapse',
expandText: 'Expand',
tableCodeColumn: 'Organization Code',
tableNameColumn: 'Organization Name',
tableSortColumn: 'Display Order',
@ -4301,6 +4350,8 @@ export default {
searchButtonText: 'Search',
resetButtonText: 'Reset',
exportButtonText: 'Export',
collapseText: 'Collapse',
expandText: 'Expand',
tableLineCodeColumn: 'Line Code',
tableLineNameColumn: 'Line Name',
@ -4338,6 +4389,8 @@ export default {
searchButtonText: 'Search',
resetButtonText: 'Reset',
exportButtonText: 'Export',
collapseText: 'Collapse',
expandText: 'Expand',
tableLineCodeColumn: 'Line Code',
tableLineNameColumn: 'Line Name',

@ -1325,10 +1325,57 @@ export default {
validatorDeviceCodeRequired: '编码不能为空',
gjTitle: '选择关键件',
bjTitle: '选择备件',
normal: '正常',
stop: '停用',
maintenance: '维修',
scrap: '报废',
placeholderWorkshop: '请输入所属车间',
reportCapacity: '报工产能',
actualCapacity: '实际产能',
Detail: {
invalidId: '无效的设备ID'
}
},
// 产能报表
CapacityReport: {
deviceCode: '设备编码',
deviceName: '设备名称',
deviceType: '设备类型',
deviceStatus: '设备状态',
workshop: '所属车间',
ratedCapacity: '额定产能(计划产能)',
reportCapacity: '报工产能',
reportCapacityTooltip: '默认查询近半年的数据均值(不包含今日)',
reportCapacityViewDetail: '查看明细',
actualCapacity: '实际产能',
actualCapacityTooltip: '默认查询近半年的数据均值(不包含今日)',
placeholderDeviceCode: '请输入设备编码',
placeholderDeviceName: '请输入设备名称',
placeholderDeviceType: '请输入设备类型',
placeholderDeviceStatus: '请选择设备状态',
placeholderWorkshop: '请输入所属车间',
baogongTime: '产能统计时间',
placeholderBaogongTimeStart: '开始时间',
placeholderBaogongTimeEnd: '结束时间',
shortcutLastWeek: '近一周',
shortcutLastHalfYear: '近半年',
shortcutLastYear: '近一年',
dialogTitlePrefix: '报工产能明细 - ',
dialogProductCode: '产品编码',
dialogProductCodePlaceholder: '请输入产品编码',
dialogProductName: '产品名称',
dialogProductNamePlaceholder: '请输入产品名称',
dialogBaogongTime: '报工时间',
dialogBaogongTimeStart: '报工开始时间',
dialogBaogongTimeEnd: '报工结束时间',
dialogTaskCode: '任务编码',
dialogTaskCodePlaceholder: '请输入任务编码',
dialogBaogongTotal: '报工总数',
dialogAvgCapacity: '报工均值产能',
dialogSearchButtonText: '搜索',
dialogResetButtonText: '重置',
exportFilename: '产能报表.xls'
},
// 设备关键件
EquipmentKeyItems: {
count: '数量',
@ -2632,6 +2679,8 @@ export default {
addButtonText: '新增',
exportButtonText: '导出',
expandButtonText: '展开/折叠',
collapseText: '收起',
expandText: '展开',
tableCodeColumn: '组织编码',
tableNameColumn: '组织名称',
tableSortColumn: '显示顺序',
@ -4137,6 +4186,8 @@ export default {
searchButtonText: '搜索',
resetButtonText: '重置',
exportButtonText: '导出',
collapseText: '收起',
expandText: '展开',
tableLineCodeColumn: '产线编码',
tableLineNameColumn: '产线名称',
@ -4174,6 +4225,8 @@ export default {
searchButtonText: '搜索',
resetButtonText: '重置',
exportButtonText: '导出',
collapseText: '收起',
expandText: '展开',
tableLineCodeColumn: '产线编码',
tableLineNameColumn: '产线名称',

@ -1,83 +1,56 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
min-label-width="68px"
>
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" min-label-width="68px">
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchRuleCodeLabel')" prop="ruleCode">
<el-input
v-model="queryParams.ruleCode"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleCodePlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-input v-model="queryParams.ruleCode"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleCodePlaceholder')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchRuleNameLabel')" prop="ruleName">
<el-input
v-model="queryParams.ruleName"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleNamePlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-input v-model="queryParams.ruleName"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleNamePlaceholder')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchRuleDescLabel')" prop="ruleDesc">
<el-input
v-model="queryParams.ruleDesc"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleDescPlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-input v-model="queryParams.ruleDesc"
:placeholder="t('FactoryModeling.AutocodeRule.searchRuleDescPlaceholder')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchRemarkLabel')" prop="remark">
<el-input
v-model="queryParams.remark"
:placeholder="t('FactoryModeling.AutocodeRule.searchRemarkPlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input v-model="queryParams.remark" :placeholder="t('FactoryModeling.AutocodeRule.searchRemarkPlaceholder')"
clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchIsEnableLabel')" prop="isEnable">
<el-select
v-model="queryParams.isEnable"
:placeholder="t('FactoryModeling.AutocodeRule.searchIsEnablePlaceholder')"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-form-item :label="t('FactoryModeling.AutocodeRule.searchIsEnableLabel')" prop="isEnable"
v-show="showAllFilters">
<el-select v-model="queryParams.isEnable"
:placeholder="t('FactoryModeling.AutocodeRule.searchIsEnablePlaceholder')" clearable class="!w-240px">
<el-option v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.searchButtonText') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.resetButtonText') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:autocode-rule:create']"
>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.searchButtonText') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.resetButtonText') }}
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['erp:autocode-rule:create']">
<Icon icon="ep:plus" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.addButtonText') }}
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['erp:autocode-rule:export']"
>
<el-button type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['erp:autocode-rule:export']">
<Icon icon="ep:download" class="mr-5px" /> {{ t('FactoryModeling.AutocodeRule.exportButtonText') }}
</el-button>
</el-form-item>
@ -98,22 +71,27 @@
</template>
</el-table-column>
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleCodeColumn')" align="center" prop="ruleCode" width="260px" sortable/>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleNameColumn')" align="center" prop="ruleName" width="200px" sortable/>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleCodeColumn')" align="center" prop="ruleCode"
width="260px" sortable />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleNameColumn')" align="center" prop="ruleName"
width="200px" sortable />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableBarcodeTypeColumn')" align="center">
<template #default="scope">
<el-tag type="primary">{{ getBarcodeTypeLabel(scope.row.barcodeType) }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleDescColumn')" align="center" prop="ruleDesc" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableMaxLengthColumn')" align="center" prop="maxLength" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableMaxLengthColumn')" align="center"
prop="maxLength" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableIsPaddedColumn')" align="center" prop="isPadded">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUTOCODE_IS_PADDING" :value="scope.row.isPadded" />
</template>
</el-table-column>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tablePaddedCharColumn')" align="center" prop="paddedChar" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tablePaddedMethodColumn')" align="center" prop="paddedMethod">
<el-table-column :label="t('FactoryModeling.AutocodeRule.tablePaddedCharColumn')" align="center"
prop="paddedChar" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tablePaddedMethodColumn')" align="center"
prop="paddedMethod">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUTOCODE_PADDING_TYPE" :value="scope.row.paddedMethod" />
</template>
@ -125,42 +103,26 @@
</template>
</el-table-column>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableOperateColumn')" align="center" fixed="right" width="200">
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableOperateColumn')" align="center" fixed="right"
width="200">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['erp:autocode-rule:update']"
>
<el-button link type="primary" @click="openForm('update', scope.row.id)"
v-hasPermi="['erp:autocode-rule:update']">
{{ t('FactoryModeling.AutocodeRule.tableEditAction') }}
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['erp:autocode-rule:delete']"
>
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['erp:autocode-rule:delete']">
{{ t('FactoryModeling.AutocodeRule.tableDeleteAction') }}
</el-button>
<el-button
link
type="primary"
@click="handleTestCode(scope.row.ruleCode)"
v-hasPermi="['erp:autocode-rule:update']"
>
<el-button link type="primary" @click="handleTestCode(scope.row.ruleCode)"
v-hasPermi="['erp:autocode-rule:update']">
{{ t('FactoryModeling.AutocodeRule.tableTestCodeAction') }}
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
@ -200,6 +162,13 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 5 // ruleCoderuleNameruleDescremarkisEnable
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const getBarcodeTypeLabel = (value: any) => {
const str = value === undefined || value === null ? '' : String(value)
@ -248,17 +217,17 @@ const handleDelete = async (id: number) => {
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
} catch { }
}
/** 测试编码按钮操作 */
const handleTestCode = async (ruleCode: string) => {
try {
//
const data = await AutocodeRuleApi.getTestCode(ruleCode)
message.success(data)
} catch {}
} catch { }
}
/** 导出按钮操作 */

@ -52,7 +52,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('SparePartsManagement.SpareIn.warehouse')" prop="warehouseId">
<el-form-item :label="t('SparePartsManagement.SpareIn.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -68,7 +68,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('SparePartsManagement.SpareIn.remark')" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareIn.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('SparePartsManagement.SpareIn.placeholderRemark')"
@ -77,6 +77,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -253,6 +259,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const supplierList = ref<SupplierVO[]>([]) //

@ -45,7 +45,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('SparePartsManagement.SpareOut.warehouse')" prop="warehouseId">
<el-form-item :label="t('SparePartsManagement.SpareOut.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -61,7 +61,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('SparePartsManagement.SpareOut.remark')" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareOut.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('SparePartsManagement.SpareOut.placeholderRemark')"
@ -70,6 +70,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -248,6 +254,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //

@ -52,7 +52,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('SparePartsManagement.SpareRecord.createTime')" prop="createTime">
<el-form-item :label="t('SparePartsManagement.SpareRecord.createTime')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -63,6 +63,12 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -173,6 +179,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //

@ -43,6 +43,12 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -118,6 +124,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 2
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //

@ -60,7 +60,7 @@
/>
</el-select>
</el-form-item> -->
<el-form-item :label="t('ErpStock.In.warehouse')" prop="warehouseId">
<el-form-item :label="t('ErpStock.In.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -76,7 +76,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-form-item :label="t('ErpStock.In.creator')" prop="creator" v-show="showAllFilters">
<el-select
v-model="queryParams.creator"
clearable
@ -92,7 +92,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-form-item :label="t('ErpStock.In.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.In.placeholderStatus')"
@ -107,7 +107,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.In.remark')" prop="remark">
<el-form-item :label="t('ErpStock.In.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('ErpStock.In.placeholderRemark')"
@ -116,6 +116,13 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -308,6 +315,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 7
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const supplierList = ref<SupplierVO[]>([]) //

@ -60,7 +60,7 @@
/>
</el-select>
</el-form-item> -->
<el-form-item :label="t('ErpStock.Out.warehouse')" prop="warehouseId">
<el-form-item :label="t('ErpStock.Out.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -76,7 +76,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-form-item :label="t('ErpStock.In.creator')" prop="creator" v-show="showAllFilters">
<el-select
v-model="queryParams.creator"
clearable
@ -92,7 +92,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-form-item :label="t('ErpStock.In.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.In.placeholderStatus')"
@ -107,7 +107,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.Out.remark')" prop="remark">
<el-form-item :label="t('ErpStock.Out.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('ErpStock.Out.placeholderRemark')"
@ -116,6 +116,13 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -317,6 +324,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 7
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const customerList = ref<CustomerVO[]>([]) //

@ -57,7 +57,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.Record.bizNo')" prop="bizNo">
<el-form-item :label="t('ErpStock.Record.bizNo')" prop="bizNo" v-show="showAllFilters">
<el-input
v-model="queryParams.bizNo"
:placeholder="t('ErpStock.Record.placeholderBizNo')"
@ -66,7 +66,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('common.createTime')" prop="createTime">
<el-form-item :label="t('common.createTime')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -77,6 +77,13 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -200,6 +207,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const categoryTabs = ref<ProductCategoryVO[]>([])

@ -33,6 +33,13 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -245,6 +252,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 2
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const detailDialogVisible = ref(false) //
const detailData = ref<WarehouseVO | null>(null) //
const activeTab = ref('area') // tab

@ -40,7 +40,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ErpStock.WarehouseArea.status')" prop="status">
<el-form-item :label="t('ErpStock.WarehouseArea.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.WarehouseArea.placeholderStatus')"
@ -55,6 +55,13 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -149,6 +156,11 @@ const queryParams = reactive({
status: undefined
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const warehouseList = ref<any[]>([])
const getWarehouseName = (warehouseId: number) => {

@ -47,7 +47,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ErpStock.WarehouseLocation.name')" prop="name">
<el-form-item :label="t('ErpStock.WarehouseLocation.name')" prop="name" v-show="showAllFilters">
<el-input
v-model="queryParams.name"
:placeholder="t('ErpStock.WarehouseLocation.placeholderName')"
@ -56,7 +56,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ErpStock.WarehouseLocation.status')" prop="status">
<el-form-item :label="t('ErpStock.WarehouseLocation.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.WarehouseLocation.placeholderStatus')"
@ -71,6 +71,13 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -191,6 +198,11 @@ const queryParams = reactive({
status: undefined
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const warehouseList = ref<any[]>([])
const areaList = ref<any[]>([])

@ -34,7 +34,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('DataCollection.HistoryData.searchLineNameLabel')" prop="lineName">
<el-form-item :label="t('DataCollection.HistoryData.searchLineNameLabel')" prop="lineName" v-show="showAllFilters">
<el-input
v-model="queryParams.lineName"
:placeholder="t('DataCollection.HistoryData.searchLineNamePlaceholder')"
@ -43,6 +43,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('DataCollection.HistoryData.collapseText') : t('DataCollection.HistoryData.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
@ -151,6 +157,11 @@ const loading = ref(true)
const list = ref<LineDeviceVO[]>([])
const total = ref(0)
const exportLoading = ref(false)
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const queryParams = reactive({
pageNo: 1,
pageSize: 10,

@ -34,7 +34,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('DataCollection.RealTimeMonitoring.searchLineNameLabel')" prop="lineName">
<el-form-item :label="t('DataCollection.RealTimeMonitoring.searchLineNameLabel')" prop="lineName" v-show="showAllFilters">
<el-input
v-model="queryParams.lineName"
:placeholder="t('DataCollection.RealTimeMonitoring.searchLineNamePlaceholder')"
@ -43,6 +43,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('DataCollection.RealTimeMonitoring.collapseText') : t('DataCollection.RealTimeMonitoring.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
@ -156,6 +162,11 @@ const loading = ref(true)
const list = ref<LineDeviceVO[]>([])
const total = ref(0)
const exportLoading = ref(false)
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const queryParams = reactive({
pageNo: 1,
pageSize: 10,

@ -37,7 +37,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('FactoryModeling.ProductBOM.searchEnableLabel')" prop="isEnable">
<el-form-item :label="t('FactoryModeling.ProductBOM.searchEnableLabel')" prop="isEnable" v-show="showAllFilters">
<el-select
v-model="queryParams.isEnable"
:placeholder="t('FactoryModeling.ProductBOM.searchEnablePlaceholder')"
@ -54,6 +54,13 @@
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('FactoryModeling.ProductBOM.searchButtonText') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('FactoryModeling.ProductBOM.resetButtonText') }}</el-button>
@ -178,6 +185,13 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 // codeproductIdremarkisEnable
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
/** 查询列表 */
const getList = async () => {

@ -0,0 +1,174 @@
<template>
<Dialog v-model="dialogVisible" :title="dialogTitle" width="1300" :scroll="true" max-height="70vh" align-center>
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
<el-form-item :label="t('EquipmentManagement.CapacityReport.dialogProductCode')" prop="productCode">
<el-input
v-model="queryParams.productCode"
:placeholder="t('EquipmentManagement.CapacityReport.dialogProductCodePlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item :label="t('EquipmentManagement.CapacityReport.dialogProductName')" prop="productName">
<el-input
v-model="queryParams.productName"
:placeholder="t('EquipmentManagement.CapacityReport.dialogProductNamePlaceholder')"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item :label="t('EquipmentManagement.CapacityReport.dialogBaogongTime')" prop="baogongTime">
<el-date-picker v-model="baogongTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('EquipmentManagement.CapacityReport.dialogBaogongTimeStart')"
:end-placeholder="t('EquipmentManagement.CapacityReport.dialogBaogongTimeEnd')"
:shortcuts="baogongTimeShortcuts"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
{{ t('EquipmentManagement.CapacityReport.dialogSearchButtonText') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" />
{{ t('EquipmentManagement.CapacityReport.dialogResetButtonText') }}
</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" style="margin-top: 16px">
<el-table-column :label="t('EquipmentManagement.CapacityReport.dialogProductCode')" align="center" prop="productCode" />
<el-table-column :label="t('EquipmentManagement.CapacityReport.dialogProductName')" align="center" prop="productName" />
<el-table-column :label="t('EquipmentManagement.CapacityReport.dialogBaogongTotal')" align="center" prop="baogongTotal" />
<el-table-column :label="t('EquipmentManagement.CapacityReport.dialogAvgCapacity')" align="center" prop="avgCapacity" />
</el-table>
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</Dialog>
</template>
<script setup lang="ts">
import { PlanApi } from '@/api/mes/plan'
const { t } = useI18n()
const props = defineProps<{
modelValue: boolean
deviceId?: number
deviceName?: string
}>()
const emit = defineEmits<{
(e: 'update:modelValue', value: boolean): void
}>()
const dialogVisible = computed({
get() {
return props.modelValue
},
set(value: boolean) {
emit('update:modelValue', value)
}
})
const dialogTitle = computed(() => {
const name = props.deviceName || '-'
return `${t('EquipmentManagement.CapacityReport.dialogTitlePrefix')}${name}`
})
const loading = ref(false)
const list = ref<any[]>([])
const total = ref(0)
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
deviceId: undefined as number | undefined,
productCode: undefined as string | undefined,
productName: undefined as string | undefined,
beginBaogongTime: undefined as string | undefined,
endBaogongTime: undefined as string | undefined
})
const baogongTime = ref<[string, string]>(['', ''])
const baogongTimeShortcuts = [
{
text: t('EquipmentManagement.CapacityReport.shortcutLastWeek'),
value: () => {
const end = new Date()
const start = new Date()
start.setDate(start.getDate() - 7)
return [start, end]
}
},
{
text: t('EquipmentManagement.CapacityReport.shortcutLastHalfYear'),
value: () => {
const end = new Date()
const start = new Date()
start.setMonth(start.getMonth() - 6)
return [start, end]
}
},
{
text: t('EquipmentManagement.CapacityReport.shortcutLastYear'),
value: () => {
const end = new Date()
const start = new Date()
start.setFullYear(start.getFullYear() - 1)
return [start, end]
}
}
]
const queryFormRef = ref()
const getList = async () => {
if (!props.deviceId) {
list.value = []
total.value = 0
return
}
loading.value = true
try {
const params = {
...queryParams,
beginBaogongTime: baogongTime.value?.[0] || undefined,
endBaogongTime: baogongTime.value?.[1] || undefined
}
const data = await PlanApi.getProductCapacityPage(params)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
const resetQuery = () => {
queryFormRef.value?.resetFields()
baogongTime.value = ['', '']
queryParams.deviceId = props.deviceId
handleQuery()
}
watch(
() => [props.modelValue, props.deviceId],
([visible, deviceId]) => {
if (!visible) return
queryParams.deviceId = deviceId as number
queryParams.pageNo = 1
queryParams.productCode = undefined
queryParams.productName = undefined
queryParams.taskCode = undefined
getList()
}
)
</script>

@ -0,0 +1,234 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" min-label-width="80px">
<el-form-item :label="t('EquipmentManagement.CapacityReport.deviceCode')" prop="deviceCode">
<el-input v-model="queryParams.deviceCode"
:placeholder="t('EquipmentManagement.CapacityReport.placeholderDeviceCode')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.CapacityReport.deviceName')" prop="deviceName">
<el-input v-model="queryParams.deviceName"
:placeholder="t('EquipmentManagement.CapacityReport.placeholderDeviceName')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.CapacityReport.baogongTime')" prop="baogongTime">
<el-date-picker v-model="baogongTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('EquipmentManagement.CapacityReport.placeholderBaogongTimeStart')"
:end-placeholder="t('EquipmentManagement.CapacityReport.placeholderBaogongTimeEnd')"
:shortcuts="baogongTimeShortcuts"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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-button type="success" plain @click="handleExport" :loading="exportLoading">
<Icon icon="ep:download" class="mr-5px" /> {{ t('EquipmentManagement.EquipmentLedger.export') }}
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" :row-key="(row) => row.id"
@select-all="handleSelectAll" @select="handleSelect">
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="t('EquipmentManagement.CapacityReport.deviceCode')" align="center" prop="deviceCode"
sortable />
<el-table-column :label="t('EquipmentManagement.CapacityReport.deviceName')" align="center" prop="deviceName"
sortable />
<el-table-column :label="t('EquipmentManagement.CapacityReport.deviceType')" align="center" prop="typeName"
sortable />
<el-table-column :label="t('EquipmentManagement.CapacityReport.ratedCapacity')" align="center"
prop="ratedCapacity" sortable />
<el-table-column align="center" prop="reportCapacity">
<template #header>
<span>{{ t('EquipmentManagement.CapacityReport.reportCapacity') }}</span>
<el-tooltip :content="t('EquipmentManagement.CapacityReport.reportCapacityTooltip')" placement="top">
<Icon icon="ep:question-filled" class="ml-4px"
style="vertical-align: middle; color: var(--el-text-color-secondary)" />
</el-tooltip>
</template>
<template #default="scope">
<el-button link type="primary" @click="openProductCapacity(scope.row)">
{{ t('EquipmentManagement.CapacityReport.reportCapacityViewDetail') }}
</el-button>
</template>
</el-table-column>
<el-table-column align="center" prop="actualCapacity" sortable>
<template #header>
<span>{{ t('EquipmentManagement.CapacityReport.actualCapacity') }}</span>
<el-tooltip :content="t('EquipmentManagement.CapacityReport.actualCapacityTooltip')" placement="top">
<Icon icon="ep:question-filled" class="ml-4px"
style="vertical-align: middle; color: var(--el-text-color-secondary)" />
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="t('EquipmentManagement.CapacityReport.workshop')" align="center" prop="workshopName"
sortable />
</el-table>
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<ProductCapacityDialog v-model="productCapacityVisible" :device-id="productCapacityDeviceId"
:device-name="productCapacityDeviceName" />
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import download from '@/utils/download'
import { DeviceLedgerApi, CapacityReportVO } from '@/api/mes/device-ledger'
import ProductCapacityDialog from './ProductCapacityDialog.vue'
defineOptions({ name: 'CapacityReport' })
const message = useMessage()
const { t } = useI18n()
const loading = ref(true)
const list = ref<CapacityReportVO[]>([])
const total = ref(0)
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
deviceCode: undefined,
deviceName: undefined,
deviceType: undefined,
workshop: undefined,
beginTime: undefined,
endTime: undefined
})
const baogongTime = ref<[string, string]>(['', ''])
const queryFormRef = ref()
const exportLoading = ref(false)
const showAllFilters = ref(false)
const filterCount = 3
const selectedIds = ref<number[]>([])
const productCapacityVisible = ref(false)
const productCapacityDeviceId = ref<number>()
const productCapacityDeviceName = ref<string>()
const baogongTimeShortcuts = [
{
text: t('EquipmentManagement.CapacityReport.shortcutLastWeek'),
value: () => {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
return [start, end]
}
},
{
text: t('EquipmentManagement.CapacityReport.shortcutLastHalfYear'),
value: () => {
const end = new Date()
const start = new Date()
start.setMonth(start.getMonth() - 6)
return [start, end]
}
},
{
text: t('EquipmentManagement.CapacityReport.shortcutLastYear'),
value: () => {
const end = new Date()
const start = new Date()
start.setFullYear(start.getFullYear() - 1)
return [start, end]
}
}
]
const openProductCapacity = (row: CapacityReportVO) => {
productCapacityDeviceId.value = row.id
productCapacityDeviceName.value = row.deviceName
productCapacityVisible.value = true
}
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const getList = async () => {
loading.value = true
try {
const params = {
...queryParams,
beginTime: baogongTime.value?.[0] || undefined,
endTime: baogongTime.value?.[1] || undefined
}
const data = await DeviceLedgerApi.getCapacityReportPage(params)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
const handleQuery = () => {
queryParams.pageNo = 1
selectedIds.value = []
getList()
}
const resetQuery = () => {
queryFormRef.value?.resetFields()
baogongTime.value = ['', '']
selectedIds.value = []
handleQuery()
}
const handleSelectAll = (val: boolean) => {
if (val) {
selectedIds.value = list.value.map(item => item.id)
} else {
selectedIds.value = []
}
}
const handleSelect = (val: boolean, row: CapacityReportVO) => {
if (val) {
selectedIds.value.push(row.id)
} else {
const index = selectedIds.value.indexOf(row.id)
if (index > -1) {
selectedIds.value.splice(index, 1)
}
}
}
const handleExport = async () => {
try {
await message.exportConfirm()
exportLoading.value = true
const params: { ids?: string } = {}
if (selectedIds.value.length > 0) {
params.ids = selectedIds.value.join(',')
}
const data = await DeviceLedgerApi.exportCapacityReport(params)
download.excel(data, t('EquipmentManagement.CapacityReport.exportFilename'))
} catch {
} finally {
exportLoading.value = false
}
}
onMounted(() => {
getList()
})
</script>

@ -11,24 +11,30 @@ v-model="queryParams.code" :placeholder="t('EquipmentManagement.EquipmentKeyItem
v-model="queryParams.name" :placeholder="t('EquipmentManagement.EquipmentKeyItems.placeholderName')"
clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.description')" prop="description">
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.description')" prop="description" v-show="showAllFilters">
<el-input
v-model="queryParams.description"
:placeholder="t('EquipmentManagement.EquipmentKeyItems.placeholderDescription')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.remark')" prop="remark">
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('EquipmentManagement.EquipmentKeyItems.placeholderRemark')" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.createTime')" prop="createTime">
<el-form-item :label="t('EquipmentManagement.EquipmentKeyItems.createTime')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('common.startTimeText')" :end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" />
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
@ -175,6 +181,11 @@ const queryParams = reactive({
const queryFormRef = ref()
const selectedIds = ref<number[]>([])
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const importDialogVisible = ref(false)
const importLoading = ref(false)

@ -28,7 +28,7 @@
class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.DvRepair.requireDate')" prop="requireDate">
<el-form-item :label="t('EquipmentManagement.DvRepair.requireDate')" prop="requireDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.requireDate"
value-format="YYYY-MM-DD HH:mm:ss"
@ -37,7 +37,7 @@
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.DvRepair.finishDate')" prop="finishDate">
<el-form-item :label="t('EquipmentManagement.DvRepair.finishDate')" prop="finishDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.finishDate"
value-format="YYYY-MM-DD HH:mm:ss"
@ -46,7 +46,7 @@
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.DvRepair.confirmDate')" prop="confirmDate">
<el-form-item :label="t('EquipmentManagement.DvRepair.confirmDate')" prop="confirmDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.confirmDate"
value-format="YYYY-MM-DD HH:mm:ss"
@ -55,7 +55,7 @@
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.DvRepair.acceptedBy')" prop="acceptedBy">
<el-form-item :label="t('EquipmentManagement.DvRepair.acceptedBy')" prop="acceptedBy" v-show="showAllFilters">
<el-input
v-model="queryParams.acceptedBy"
:placeholder="t('EquipmentManagement.DvRepair.placeholderAcceptedBy')"
@ -64,7 +64,7 @@
class="!w-240px" />
</el-form-item>
<el-form-item :label="t('EquipmentManagement.DvRepair.status')" prop="status">
<el-form-item :label="t('EquipmentManagement.DvRepair.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('EquipmentManagement.DvRepair.placeholderStatus')"
@ -74,6 +74,12 @@
<el-option v-for="opt in statusOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
@ -229,6 +235,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 8
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const statusOptions = [
{ label: t('EquipmentManagement.DvRepair.statusPending'), value: '0' },

@ -35,7 +35,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('EnergyManagement.EnergyType.searchCreateTimeLabel')" prop="createTime">
<el-form-item :label="t('EnergyManagement.EnergyType.searchCreateTimeLabel')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -46,6 +46,13 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
@ -192,6 +199,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const selectedIds = ref<number[]>([])
const handleSelectionChange = (rows: EnergyTypeVO[]) => {

@ -40,7 +40,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ProductionPlan.FeedingRecord.searchUserLabel')" prop="userId">
<el-form-item :label="t('ProductionPlan.FeedingRecord.searchUserLabel')" prop="userId" v-show="showAllFilters">
<el-input
v-model="queryParams.userId"
:placeholder="t('ProductionPlan.FeedingRecord.searchUserPlaceholder')"
@ -49,7 +49,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ProductionPlan.FeedingRecord.searchRemarkLabel')" prop="remark">
<el-form-item :label="t('ProductionPlan.FeedingRecord.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('ProductionPlan.FeedingRecord.searchRemarkPlaceholder')"
@ -58,6 +58,15 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('ProductionPlan.FeedingRecord.buttonSearchText') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('ProductionPlan.FeedingRecord.buttonResetText') }}</el-button>
@ -214,6 +223,13 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 //
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
/** 查询列表 */
const getList = async () => {

@ -61,7 +61,7 @@
/>
</el-select>
</el-form-item> -->
<el-form-item :label="t('MoldManagement.MoldGet.warehouse')" prop="warehouseId">
<el-form-item :label="t('MoldManagement.MoldGet.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -77,7 +77,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldGet.creator')" prop="creator">
<el-form-item :label="t('MoldManagement.MoldGet.creator')" prop="creator" v-show="showAllFilters">
<el-select
v-model="queryParams.creator"
clearable
@ -93,7 +93,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldGet.status')" prop="status">
<el-form-item :label="t('MoldManagement.MoldGet.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('MoldManagement.MoldGet.placeholderStatus')"
@ -108,7 +108,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldGet.remark')" prop="remark">
<el-form-item :label="t('MoldManagement.MoldGet.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('MoldManagement.MoldGet.placeholderRemark')"
@ -117,6 +117,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -297,6 +303,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 7
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const customerList = ref<CustomerVO[]>([]) //

@ -60,7 +60,7 @@
/>
</el-select>
</el-form-item> -->
<el-form-item :label="t('MoldManagement.MoldReturn.warehouse')" prop="warehouseId">
<el-form-item :label="t('MoldManagement.MoldReturn.warehouse')" prop="warehouseId" v-show="showAllFilters">
<el-select
v-model="queryParams.warehouseId"
clearable
@ -76,7 +76,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldReturn.creator')" prop="creator">
<el-form-item :label="t('MoldManagement.MoldReturn.creator')" prop="creator" v-show="showAllFilters">
<el-select
v-model="queryParams.creator"
clearable
@ -92,7 +92,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldReturn.status')" prop="status">
<el-form-item :label="t('MoldManagement.MoldReturn.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('MoldManagement.MoldReturn.placeholderStatus')"
@ -107,7 +107,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldReturn.remark')" prop="remark">
<el-form-item :label="t('MoldManagement.MoldReturn.remark')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('MoldManagement.MoldReturn.placeholderRemark')"
@ -116,6 +116,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -292,6 +298,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 7
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const customerList = ref<CustomerVO[]>([]) //

@ -54,7 +54,7 @@
/>
</el-select>
</el-form-item> -->
<el-form-item :label="t('FactoryModeling.FactoryStructure.searchOrgClassLabel')" prop="orgClass">
<el-form-item :label="t('FactoryModeling.FactoryStructure.searchOrgClassLabel')" prop="orgClass" v-show="showAllFilters">
<el-select
v-model="queryParams.orgClass"
:placeholder="t('FactoryModeling.FactoryStructure.searchOrgClassPlaceholder')"
@ -70,6 +70,13 @@
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('FactoryModeling.FactoryStructure.searchButtonText') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('FactoryModeling.FactoryStructure.resetButtonText') }}</el-button>
@ -219,6 +226,13 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 // codeparentIdnameorgClass
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
/** 查询列表 */
const getList = async () => {

@ -18,22 +18,31 @@
<el-option v-for="item in productList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item :label="t('ProductionPlan.Plan.searchRemarkLabel')" prop="remark">
<el-form-item :label="t('ProductionPlan.Plan.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input v-model="queryParams.remark" :placeholder="t('ProductionPlan.Plan.searchRemarkPlaceholder')" clearable
@keyup.enter="handleQuery" class="!w-180px" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.Plan.searchPlanStartLabel')" prop="planStartTime">
<el-form-item :label="t('ProductionPlan.Plan.searchPlanStartLabel')" prop="planStartTime" v-show="showAllFilters">
<el-date-picker v-model="queryParams.planStartTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
@change="handleQuery" :start-placeholder="t('ProductionPlan.Plan.searchPlanStartStartPlaceholder')"
:end-placeholder="t('ProductionPlan.Plan.searchPlanStartEndPlaceholder')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.Plan.searchPlanEndLabel')" prop="planEndTime">
<el-form-item :label="t('ProductionPlan.Plan.searchPlanEndLabel')" prop="planEndTime" v-show="showAllFilters">
<el-date-picker v-model="queryParams.planEndTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
@change="handleQuery" :start-placeholder="t('ProductionPlan.Plan.searchPlanEndStartPlaceholder')"
:end-placeholder="t('ProductionPlan.Plan.searchPlanEndEndPlaceholder')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('ProductionPlan.Plan.buttonSearchText') }}
@ -321,6 +330,14 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 //
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const warehouseList = ref<WarehouseVO[]>([]) //
const storeDialogVisible = ref(false) //
const storeWarehouseId = ref<number>() // ID

@ -41,7 +41,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ProductionReport.Index.searchRemarkLabel')" prop="remark">
<el-form-item :label="t('ProductionReport.Index.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('ProductionReport.Index.searchRemarkPlaceholder')"
@ -50,7 +50,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('ProductionReport.Index.searchCreateTimeLabel')" prop="createTime">
<el-form-item :label="t('ProductionReport.Index.searchCreateTimeLabel')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
@change="handleQuery"
@ -62,6 +62,15 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('ProductionReport.Index.buttonSearch') }}
@ -170,6 +179,13 @@ const queryParams = reactive({
})
const queryFormRef = ref()
const exportLoading = ref(false)
const showAllFilters = ref(false) //
const filterCount = 4 //
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const activeStatusTab = ref('')

@ -51,7 +51,7 @@
/>
</el-form-item>
-->
<el-form-item :label="t('EquipmentManagement.RepairItems.projectContent')" prop="projectContent">
<el-form-item :label="t('EquipmentManagement.RepairItems.projectContent')" prop="projectContent" v-show="showAllFilters">
<el-input
v-model="queryParams.projectContent"
:placeholder="t('EquipmentManagement.RepairItems.placeholderProjectContent')"
@ -60,7 +60,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('EquipmentManagement.RepairItems.createTime')" prop="createTime">
<el-form-item :label="t('EquipmentManagement.RepairItems.createTime')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -71,6 +71,12 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -183,6 +189,11 @@ const queryFormRef = ref()
const tableRef = ref()
const selectedIds = ref<number[]>([])
const formRef = ref()
const showAllFilters = ref(false)
const filterCount = 5
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const deviceTypeOptions = ref<{ label: string; value: number }[]>([
{ label: t('EquipmentManagement.RepairItems.deviceTypeDevice'), value: 1 },

@ -42,7 +42,7 @@
/>
</el-form-item>
<el-form-item :label="t('ProductionPlan.Task.searchRemarkLabel')" prop="remark">
<el-form-item :label="t('ProductionPlan.Task.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark"
:placeholder="t('ProductionPlan.Task.searchRemarkPlaceholder')"
@ -51,7 +51,7 @@
class="!w-180px"
/>
</el-form-item>
<el-form-item :label="t('ProductionPlan.Task.searchCreateTimeLabel')" prop="createTime">
<el-form-item :label="t('ProductionPlan.Task.searchCreateTimeLabel')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
@change="handleQuery"
@ -63,6 +63,15 @@
class="!w-280px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('ProductionPlan.Task.buttonSearchText') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('ProductionPlan.Task.buttonResetText') }}</el-button>
@ -221,6 +230,13 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 //
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
/** 查询列表 */
const getList = async () => {

@ -9,8 +9,8 @@
<el-descriptions :column="1" border size="small">
<el-descriptions-item :label="t('GanttChart.GanttPanel.deviceNameLabel')">{{ activePreviewDevice.deviceName }}</el-descriptions-item>
<el-descriptions-item :label="t('GanttChart.GanttPanel.deviceIdLabel')">{{ activePreviewDevice.deviceId }}</el-descriptions-item>
<el-descriptions-item v-if="activePreviewDevice.capacityType !== undefined" :label="t('GanttChart.GanttPanel.capacityTypeLabel')">{{ getCapacityTypeLabel(activePreviewDevice.capacityType) }}</el-descriptions-item>
<el-descriptions-item v-if="activePreviewDevice.capacityType === 1" :label="t('GanttChart.GanttPanel.capacityLabel')">{{ activePreviewDevice.ratedCapacity ?? '-' }}</el-descriptions-item>
<el-descriptions-item v-if="activePreviewDevice.capacityType !== 2" :label="t('GanttChart.GanttPanel.capacityTypeLabel')">{{ getCapacityTypeLabel(activePreviewDevice.capacityType) }}</el-descriptions-item>
<el-descriptions-item v-if="activePreviewDevice.capacityType !== 2" :label="t('GanttChart.GanttPanel.capacityLabel')">{{ activePreviewDevice.ratedCapacity ?? '-' }}</el-descriptions-item>
<el-descriptions-item v-if="'dailyAverageValue' in activePreviewDevice" :label="t('GanttChart.GanttPanel.dailyAvgLabel')">{{ activePreviewDevice.dailyAverageValue ?? '-' }}</el-descriptions-item>
<el-descriptions-item v-if="'dataCollectionCapacity' in activePreviewDevice" :label="t('GanttChart.GanttPanel.dataCollectionCapacityLabel')">{{ activePreviewDevice.dataCollectionCapacity ?? '-' }}</el-descriptions-item>
<el-descriptions-item :label="t('GanttChart.GanttPanel.planCountLabel')">{{ activePreviewDevice.plans?.length ?? 0 }}</el-descriptions-item>
@ -27,7 +27,7 @@
</div>
<div>{{ t('GanttChart.GanttPanel.taskCodeColon') }}{{ plan.taskCode ?? '-' }}</div>
<div>{{ t('GanttChart.GanttPanel.planNumberColon') }}{{ plan.planNumber ?? '-' }}</div>
<template v-if="activePreviewDevice.capacityType !== 1">
<template v-if="activePreviewDevice.capacityType === 2">
<div>{{ t('GanttChart.GanttPanel.capacityLabel') }}{{ plan.ratedCapacity ?? '-' }}</div>
<div>{{ t('GanttChart.GanttPanel.capacityTypeLabel') }}{{ getCapacityTypeLabel(plan.capacityType) }}</div>
</template>

@ -23,18 +23,27 @@ v-model="queryParams.deliveryDate" value-format="YYYY-MM-DD HH:mm:ss" @change="h
:end-placeholder="t('ProductionPlan.TaskSummary.searchDeliveryEndPlaceholder')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.TaskSummary.searchRemarkLabel')" prop="remark">
<el-form-item :label="t('ProductionPlan.TaskSummary.searchRemarkLabel')" prop="remark" v-show="showAllFilters">
<el-input
v-model="queryParams.remark" :placeholder="t('ProductionPlan.TaskSummary.searchRemarkPlaceholder')"
clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.TaskSummary.searchCreateTimeLabel')" prop="createTime">
<el-form-item :label="t('ProductionPlan.TaskSummary.searchCreateTimeLabel')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime" @change="handleQuery" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" :start-placeholder="t('ProductionPlan.TaskSummary.searchCreateTimeStartPlaceholder')"
:end-placeholder="t('ProductionPlan.TaskSummary.searchCreateTimeEndPlaceholder')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') :
t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('ProductionPlan.TaskSummary.buttonSearchText') }}
@ -171,6 +180,14 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false) //
const filterCount = 4 //
/** 切换筛选框展开/折叠 */
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const { push } = useRouter()
const taskScheduleDialogRef = ref()
const deliveryDateFormatter = (_row: any, _column: any, value: any) => {

@ -33,7 +33,7 @@
:value="opt.value" />
</el-select>
</el-form-item>
<el-form-item :label="t('EquipmentManagement.WorkOrderManagement.jobResult')" prop="jobResult">
<el-form-item :label="t('EquipmentManagement.WorkOrderManagement.jobResult')" prop="jobResult" v-show="showAllFilters">
<el-select
v-model="queryParams.jobResult"
:placeholder="t('EquipmentManagement.WorkOrderManagement.placeholderJobResult')"
@ -43,6 +43,12 @@
<el-option v-for="opt in jobResultOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" />
@ -229,6 +235,11 @@ const queryParams = reactive({
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const getList = async () => {
loading.value = true

@ -17,6 +17,12 @@ v-model="queryParams.subjectName" :placeholder="t('MoldManagement.MoldInspection
v-model="queryParams.judgmentCriteria" :placeholder="t('MoldManagement.MoldInspectionItems.placeholderJudgmentCriteria')" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
@ -138,6 +144,11 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const showAllFilters = ref(false)
const filterCount = 3
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const getTagDict = (dictType: string, value: any) => {
if (!dictReady.value) return undefined

@ -30,6 +30,12 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -213,6 +219,12 @@ const list = ref<PlanMaintenanceVO[]>([])
const total = ref(0)
const exportLoading = ref(false)
const showAllFilters = ref(false)
const filterCount = 3
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const queryParams = reactive({
pageNo: 1,
pageSize: 10,

@ -28,7 +28,7 @@
/>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.moldName')" prop="moldName">
<el-form-item :label="t('MoldManagement.MoldRepair.moldName')" prop="moldName" v-show="showAllFilters">
<el-input
v-model="queryParams.moldName"
:placeholder="t('MoldManagement.MoldRepair.placeholderMoldName')"
@ -38,28 +38,28 @@
/>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.requireDate')" prop="requireDate">
<el-form-item :label="t('MoldManagement.MoldRepair.requireDate')" prop="requireDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.requireDate" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('MoldManagement.MoldRepair.placeholderRequireDateStart')"
:end-placeholder="t('MoldManagement.MoldRepair.placeholderRequireDateEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.finishDate')" prop="finishDate">
<el-form-item :label="t('MoldManagement.MoldRepair.finishDate')" prop="finishDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.finishDate" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('MoldManagement.MoldRepair.placeholderFinishDateStart')"
:end-placeholder="t('MoldManagement.MoldRepair.placeholderFinishDateEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.confirmDate')" prop="confirmDate">
<el-form-item :label="t('MoldManagement.MoldRepair.confirmDate')" prop="confirmDate" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.confirmDate" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
:start-placeholder="t('MoldManagement.MoldRepair.placeholderConfirmDateStart')"
:end-placeholder="t('MoldManagement.MoldRepair.placeholderConfirmDateEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.repairUser')" prop="acceptedBy">
<el-form-item :label="t('MoldManagement.MoldRepair.repairUser')" prop="acceptedBy" v-show="showAllFilters">
<el-input
v-model="queryParams.acceptedBy"
:placeholder="t('MoldManagement.MoldRepair.placeholderRepairUser')"
@ -68,7 +68,7 @@
class="!w-240px" />
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepair.status')" prop="status">
<el-form-item :label="t('MoldManagement.MoldRepair.status')" prop="status" v-show="showAllFilters">
<el-select
v-model="queryParams.status"
:placeholder="t('MoldManagement.MoldRepair.placeholderStatus')"
@ -78,6 +78,12 @@
<el-option v-for="opt in statusOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('MoldManagement.MoldRepair.search') }}
@ -196,6 +202,11 @@ const { t } = useI18n()
const loading = ref(true)
const list = ref<MoldRepairVO[]>([])
const total = ref(0)
const showAllFilters = ref(false)
const filterCount = 9
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const queryParams = reactive({
pageNo: 1,
pageSize: 10,

@ -28,7 +28,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldRepairItems.createTime')" prop="createTime">
<el-form-item :label="t('MoldManagement.MoldRepairItems.createTime')" prop="createTime" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -39,6 +39,12 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('MoldManagement.MoldRepairItems.search') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('MoldManagement.MoldRepairItems.reset') }}</el-button>
@ -130,6 +136,11 @@ const queryParams = reactive({
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const tableRef = ref()
const selectedIds = ref<number[]>([])
const formRef = ref()

@ -38,6 +38,12 @@
<el-option v-for="item in planOptions" :key="String(item.id)" :label="item.planName" :value="String(item.id)" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</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>
@ -167,6 +173,11 @@ const queryParams = reactive({
projectForm: [] as string[]
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 3
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const parseIdsValue = (value: any): string[] => {
if (!value) return []

@ -30,7 +30,7 @@
<el-option v-for="opt in getStrDictOptions('job_status')" :key="String(opt.value)" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item :label="t('MoldManagement.MoldWorkOrderInquiry.jobResult')" prop="jobResult">
<el-form-item :label="t('MoldManagement.MoldWorkOrderInquiry.jobResult')" prop="jobResult" v-show="showAllFilters">
<el-select
v-model="queryParams.jobResult"
:placeholder="t('MoldManagement.MoldWorkOrderInquiry.placeholderJobResult')"
@ -40,6 +40,12 @@
<el-option v-for="opt in jobResultOptions" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
<el-form-item v-if="filterCount > 3">
<el-button type="text" class="text-primary" @click="toggleFilters">
<Icon :icon="showAllFilters ? 'ep:arrow-up' : 'ep:arrow-down'" class="mr-5px" />
{{ showAllFilters ? t('FactoryModeling.FactoryStructure.collapseText') : t('FactoryModeling.FactoryStructure.expandText') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('MoldManagement.MoldWorkOrderInquiry.reset') }}
@ -142,6 +148,11 @@ const queryParams = reactive({
})
const queryFormRef = ref()
const showAllFilters = ref(false)
const filterCount = 4
const toggleFilters = () => {
showAllFilters.value = !showAllFilters.value
}
const getList = async () => {
loading.value = true

Loading…
Cancel
Save