feat:生产订单-任务单明细-新增/编辑-摆放规则、包装方案

main
黄伟杰 5 days ago
parent 31eaea90a6
commit a0fbce7b46

@ -39,6 +39,9 @@ export interface TaskDetailVO {
planNumber: number //已经计划的数量
packageSize: number // 打包要求(每包/个)
projectName: string // 项目名称
placementRule: string // 摆放规则
packagingSchemeId: number // 包装方案 ID
packagingSchemeName: string // 包装方案名称
techRequirements: string // 技术要求
remark: string // 备注
isEnable: boolean // 是否启用

@ -4482,6 +4482,11 @@ export default {
detailDialogPackageSizePlaceholder: 'Please enter packing requirement',
detailDialogPackageNumberLabel: 'Package Quantity',
detailDialogPackageNumberPlaceholder: 'Please enter quantity',
detailDialogPlacementRuleLabel: 'Placement Rule',
detailDialogPlacementRulePlaceholder: 'Please enter placement rule',
detailDialogPackagingSchemeLabel: 'Packaging Scheme',
detailDialogPackagingSchemeTitle: 'Select Packaging Scheme',
detailDialogPackagingSchemePlaceholder: 'Please select packaging scheme',
detailDialogTechRequirementsLabel: 'Technical Requirement',
detailDialogTechRequirementsPlaceholder: 'Please enter technical requirement',
detailDialogFinishDateLabel: 'Factory Completion',

@ -4335,6 +4335,11 @@ export default {
detailDialogPackageSizePlaceholder: '请输入打包要求',
detailDialogPackageNumberLabel: '打包数量',
detailDialogPackageNumberPlaceholder: '请输入数量',
detailDialogPlacementRuleLabel: '摆放规则',
detailDialogPlacementRulePlaceholder: '请输入摆放规则',
detailDialogPackagingSchemeLabel: '包装方案',
detailDialogPackagingSchemeTitle: '选择包装方案',
detailDialogPackagingSchemePlaceholder: '请选择包装方案',
detailDialogTechRequirementsLabel: '技术要求',
detailDialogTechRequirementsPlaceholder: '请输入技术要求',
detailDialogFinishDateLabel: '工厂完成',

@ -43,35 +43,27 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailDialogProjectLabel')" prop="projectName">
<el-input v-model="formData.projectName" :placeholder="t('ProductionPlan.Task.detailDialogProjectPlaceholder')" />
</el-form-item>
</el-col>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailDialogPackageSizeLabel')" prop="packageSize">
<el-input-number
v-model="formData.packageSize"
:min="0"
class="!w-1/1"
:placeholder="t('ProductionPlan.Task.detailDialogPackageSizePlaceholder')"
<el-form-item :label="t('ProductionPlan.Task.detailDialogPlacementRuleLabel')" prop="placementRule">
<el-input
v-model="formData.placementRule"
:placeholder="t('ProductionPlan.Task.detailDialogPlacementRulePlaceholder')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailDialogPackageNumberLabel')" prop="packageNumber">
<el-input-number
v-model="formData.packageNumber"
:min="0"
disabled
class="!w-1/1"
:placeholder="t('ProductionPlan.Task.detailDialogPackageNumberPlaceholder')"
<el-form-item :label="t('ProductionPlan.Task.detailDialogPackagingSchemeLabel')" prop="packagingSchemeId">
<el-input
:model-value="displayPackagingSchemeName"
readonly
clearable
:placeholder="t('ProductionPlan.Task.detailDialogPackagingSchemePlaceholder')"
@click="openPackagingSchemeDialog"
@clear="handlePackagingSchemeClear"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailFormDeliveryDateLabel')" prop="finishDate">
<el-date-picker
@ -83,26 +75,6 @@
/>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailDialogBoxingDateLabel')" prop="boxingDate">
<el-date-picker
v-model="formData.boxingDate"
type="date"
value-format="x"
:placeholder="t('ProductionPlan.Task.detailDialogBoxingDatePlaceholder')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="t('ProductionPlan.Task.detailDialogArriveDateLabel')" prop="arriveDate">
<el-date-picker
v-model="formData.arriveDate"
type="date"
value-format="x"
:placeholder="t('ProductionPlan.Task.detailDialogArriveDatePlaceholder')"
/>
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
@ -118,6 +90,85 @@
</el-row>
</el-form>
<Dialog
:title="t('ProductionPlan.Task.detailDialogPackagingSchemeTitle')"
v-model="packagingSchemeDialogVisible"
:appendToBody="true"
width="1200px"
>
<el-form
ref="packagingSchemeQueryFormRef"
:model="packagingSchemeQueryParams"
:inline="true"
class="-mb-15px"
>
<el-form-item :label="t('ErpStock.PackagingScheme.code')" prop="code">
<el-input
v-model="packagingSchemeQueryParams.code"
:placeholder="t('ErpStock.PackagingScheme.placeholderCode')"
clearable
class="!w-220px"
@keyup.enter="handlePackagingSchemeQuery"
/>
</el-form-item>
<el-form-item :label="t('ErpStock.PackagingScheme.name')" prop="name">
<el-input
v-model="packagingSchemeQueryParams.name"
:placeholder="t('ErpStock.PackagingScheme.placeholderName')"
clearable
class="!w-220px"
@keyup.enter="handlePackagingSchemeQuery"
/>
</el-form-item>
<el-form-item>
<el-button @click="handlePackagingSchemeQuery">
<Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
</el-button>
<el-button @click="resetPackagingSchemeQuery">
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}
</el-button>
</el-form-item>
</el-form>
<el-table
ref="packagingSchemeTableRef"
v-loading="packagingSchemeLoading"
:data="packagingSchemeList"
:row-key="(row) => row.id"
:stripe="true"
:show-overflow-tooltip="true"
@row-click="handlePackagingSchemeRowClick"
@row-dblclick="confirmPackagingSchemeSelect"
>
<el-table-column width="55" align="center">
<template #default="{ row }">
<el-radio
v-model="packagingSchemeSelectedId"
:label="row.id"
@change="handlePackagingSchemeRadioChange(row)"
>
&nbsp;
</el-radio>
</template>
</el-table-column>
<el-table-column :label="t('ErpStock.PackagingScheme.code')" prop="code" minWidth="160" />
<el-table-column :label="t('ErpStock.PackagingScheme.name')" prop="name" minWidth="160" />
<el-table-column :label="t('ErpStock.PackagingScheme.packageQuantity')" prop="packageQuantity" minWidth="120" />
<el-table-column :label="t('ErpStock.PackagingScheme.palletPackageQuantity')" prop="palletPackageQuantity" minWidth="120" />
<el-table-column :label="t('ErpStock.PackagingScheme.palletTotalQuantity')" prop="palletTotalQuantity" minWidth="120" />
</el-table>
<div class="task-packaging-pagination flex justify-end mt-15px mb-10px">
<Pagination
:total="packagingSchemeTotal"
v-model:page="packagingSchemeQueryParams.pageNo"
v-model:limit="packagingSchemeQueryParams.pageSize"
@pagination="getPackagingSchemeList"
/>
</div>
<template #footer>
<el-button type="primary" @click="confirmPackagingSchemeSelect">{{ t('common.ok') }}</el-button>
<el-button @click="packagingSchemeDialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('ProductionPlan.Task.detailDialogSubmitButtonText') }}</el-button>
@ -127,18 +178,17 @@
</template>
<script setup lang="ts">
import { TaskApi } from '@/api/mes/task'
import { ProductUnitApi, ProductUnitVO } from '@/api/erp/product/unit'
import {ProductApi, ProductVO} from "@/api/erp/product/product";
import { PackagingSchemeApi, PackagingSchemeVO } from '@/api/erp/stock/packagingScheme'
const unitList = ref<ProductUnitVO[]>([]) //
const productList = ref<ProductVO[]>([]) //
const { t } = useI18n() //
const message = useMessage() //
const productList = ref<ProductVO[]>([]) // product list
const { t } = useI18n()
const message = useMessage()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update - detail
const dialogVisible = ref(false)
const dialogTitle = ref('')
const formLoading = ref(false)
const formType = ref('')
const disabled = computed(() => formType.value === 'detail')
const formData = ref({
id: undefined,
@ -147,11 +197,11 @@ const formData = ref({
unitName: undefined,
taskId: undefined,
number: undefined,
packageSize: undefined,
projectName: undefined,
placementRule: undefined,
packagingSchemeId: undefined,
packagingSchemeName: undefined,
techRequirements: undefined,
remark: undefined,
packageNumber: undefined,
finishDate: undefined,
boxingDate: undefined,
arriveDate: undefined,
@ -177,19 +227,37 @@ const formRules = reactive({
unitId: [{ required: true, message: t('ProductionPlan.Task.validatorDetailUnitIdRequired'), trigger: 'blur' }],
taskId: [{ required: true, message: t('ProductionPlan.Task.validatorDetailTaskIdRequired'), trigger: 'blur' }],
number: [{ required: true, message: t('ProductionPlan.Task.validatorDetailNumberRequired'), trigger: 'blur' }],
packageSize: [],
finishDate: [{ validator: validateFinishDate, trigger: ['change', 'blur'] }]
})
const formRef = ref() // Ref
const formRef = ref() // form Ref
const packagingSchemeDialogVisible = ref(false)
const packagingSchemeLoading = ref(false)
const packagingSchemeList = ref<PackagingSchemeVO[]>([])
const packagingSchemeTotal = ref(0)
const packagingSchemeSelectedId = ref<number>()
const packagingSchemeSelectedRow = ref<PackagingSchemeVO>()
const packagingSchemeTableRef = ref()
const packagingSchemeQueryFormRef = ref()
const packagingSchemeQueryParams = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
name: undefined,
status: 0
})
const displayPackagingSchemeName = computed(() => {
if (!formData.value.packagingSchemeId) return ''
const selected = packagingSchemeList.value.find((item) => item.id === formData.value.packagingSchemeId)
return selected?.name || formData.value.packagingSchemeName || ''
})
/** 打开弹窗 */
const open = async (type: string, id?: number, taskId: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
formData.value.taskId = taskId
//
if (id) {
formLoading.value = true
try {
@ -201,28 +269,20 @@ const open = async (type: string, id?: number, taskId: number) => {
formLoading.value = false
}
}
//
//unitList.value = await ProductUnitApi.getProductUnitSimpleList()
// unitList.value= [
// {
// id: 5,
// name: '',
// },
// ]
// formData.value.unitId = 5
productList.value = await ProductApi.getMesProductSimpleList({ categoryType: 1 })
}
defineExpose({ open }) // open
defineExpose({ open })
/** 提交表单 */
const emit = defineEmits(['success']) // success
const emit = defineEmits(['success'])
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value
const data = { ...formData.value }
delete (data as any).packagingSchemeName
delete (data as any).projectName
delete (data as any).packageSize
delete (data as any).packageNumber
if (formType.value === 'create') {
await TaskApi.createTaskDetail(data)
message.success(t('common.createSuccess'))
@ -231,29 +291,12 @@ const submitForm = async () => {
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 监听数量和每包数量变化,自动计算打包数量 */
watch(
() => [formData.value.number, formData.value.packageSize],
([number, packageSize]) => {
if (!number && number !== 0) {
formData.value.packageNumber = undefined
return
}
if (!packageSize || packageSize === 0) {
formData.value.packageNumber = number
} else {
formData.value.packageNumber = Math.ceil(number / packageSize)
}
}
)
/** 处理产品变更 */
const onChangeProduct = (productId) => {
const product = productList.value.find((item) => item.id === productId)
@ -263,6 +306,70 @@ const onChangeProduct = (productId) => {
}
}
const getPackagingSchemeList = async () => {
packagingSchemeLoading.value = true
try {
const data = await PackagingSchemeApi.getPackagingSchemePage(packagingSchemeQueryParams)
packagingSchemeList.value = data.list || []
packagingSchemeTotal.value = data.total || 0
} finally {
packagingSchemeLoading.value = false
}
}
const openPackagingSchemeDialog = async () => {
packagingSchemeDialogVisible.value = true
packagingSchemeQueryParams.pageNo = 1
packagingSchemeQueryParams.code = undefined
packagingSchemeQueryParams.name = undefined
packagingSchemeSelectedId.value = formData.value.packagingSchemeId
packagingSchemeSelectedRow.value = undefined
await getPackagingSchemeList()
}
const handlePackagingSchemeQuery = () => {
packagingSchemeQueryParams.pageNo = 1
getPackagingSchemeList()
}
const resetPackagingSchemeQuery = () => {
packagingSchemeQueryFormRef.value?.resetFields()
handlePackagingSchemeQuery()
}
const handlePackagingSchemeRowClick = (row: PackagingSchemeVO) => {
packagingSchemeSelectedId.value = row.id
packagingSchemeSelectedRow.value = row
}
const handlePackagingSchemeRadioChange = (row: PackagingSchemeVO) => {
packagingSchemeSelectedRow.value = row
}
const confirmPackagingSchemeSelect = (row?: PackagingSchemeVO) => {
const scheme = row?.id
? row
: packagingSchemeSelectedRow.value || packagingSchemeList.value.find((item) => item.id === packagingSchemeSelectedId.value)
if (!scheme) {
message.warning(t('ProductionPlan.Task.detailDialogPackagingSchemePlaceholder'))
return
}
formData.value.packagingSchemeId = scheme.id
formData.value.packagingSchemeName = scheme.name
if (!packagingSchemeList.value.some((item) => item.id === scheme.id)) {
packagingSchemeList.value.push(scheme)
}
packagingSchemeDialogVisible.value = false
}
const handlePackagingSchemeClear = () => {
formData.value.packagingSchemeId = undefined
formData.value.packagingSchemeName = undefined
packagingSchemeSelectedId.value = undefined
packagingSchemeSelectedRow.value = undefined
}
/** ???? */
/** 重置表单 */
const resetForm = () => {
formData.value = {
@ -271,11 +378,21 @@ const resetForm = () => {
unitId: undefined,
taskId: undefined,
number: undefined,
packageSize: undefined,
projectName: undefined,
placementRule: undefined,
packagingSchemeId: undefined,
packagingSchemeName: undefined,
techRequirements: undefined,
remark: undefined
remark: undefined,
finishDate: undefined,
boxingDate: undefined,
arriveDate: undefined
}
formRef.value?.resetFields()
}
</script>
<style scoped>
.task-packaging-pagination {
padding-bottom: 8px;
}
</style>

@ -148,9 +148,9 @@
<el-button v-if="scope.row.status==1" link type="primary" @click="changeStatus(t('ProductionPlan.Task.actionApproveLabel'),2, scope.row.id)" v-hasPermi="['mes:task:approve']">
{{ t('ProductionPlan.Task.actionApproveLabel') }}
</el-button>
<el-button link type="info" @click="openItemNeed(scope.row.code, scope.row.id)" v-hasPermi="['mes:task:update']">
<!-- <el-button link type="info" @click="openItemNeed(scope.row.code, scope.row.id)" v-hasPermi="['mes:task:update']">
{{ t('ProductionPlan.Task.actionMaterialLabel') }}
</el-button>
</el-button> -->
<!-- 下达后不可更改-->
<!-- <el-button v-if="scope.row.status<2" link type="success" @click="openSaleForm(scope.row.id)" v-hasPermi="['mes:task:update']">
销售单

@ -17,7 +17,7 @@
</el-table-column>
<el-table-column :label="t('ProductionPlan.TaskSummary.detailTableOperateColumn')" align="center" width="220px">
<template #default="scope">
<el-button
<!-- <el-button
link
type="info"
@click="openItemNeed(scope.row.productName, scope.row.productId,
@ -25,7 +25,7 @@
v-hasPermi="['mes:task:query']"
>
{{ t('ProductionPlan.TaskSummary.detailActionMaterialLabel') }}
</el-button>
</el-button> -->
<el-button
link
type="primary"

@ -1,41 +1,36 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto"
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto"
label-position="left">
<el-form-item :label="t('ProductionPlan.TaskSummary.searchCodeLabel')" prop="code">
<el-input
v-model="queryParams.code" :placeholder="t('ProductionPlan.TaskSummary.searchCodePlaceholder')"
<el-input v-model="queryParams.code" :placeholder="t('ProductionPlan.TaskSummary.searchCodePlaceholder')"
clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.TaskSummary.searchOrderLabel')" prop="orderDate">
<el-date-picker
v-model="queryParams.orderDate" @change="handleQuery" value-format="YYYY-MM-DD HH:mm:ss"
<el-date-picker v-model="queryParams.orderDate" @change="handleQuery" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" :start-placeholder="t('ProductionPlan.TaskSummary.searchOrderStartPlaceholder')"
:end-placeholder="t('ProductionPlan.TaskSummary.searchOrderEndPlaceholder')"
: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.searchDeliveryLabel')" prop="deliveryDate">
<el-date-picker
v-model="queryParams.deliveryDate" value-format="YYYY-MM-DD HH:mm:ss" @change="handleQuery"
<el-date-picker v-model="queryParams.deliveryDate" value-format="YYYY-MM-DD HH:mm:ss" @change="handleQuery"
type="daterange" :start-placeholder="t('ProductionPlan.TaskSummary.searchDeliveryStartPlaceholder')"
: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" v-show="showAllFilters">
<el-input
v-model="queryParams.remark" :placeholder="t('ProductionPlan.TaskSummary.searchRemarkPlaceholder')"
<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" v-show="showAllFilters">
<el-date-picker
v-model="queryParams.createTime" @change="handleQuery" value-format="YYYY-MM-DD HH:mm:ss"
<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" />
@ -43,7 +38,7 @@ v-model="queryParams.createTime" @change="handleQuery" value-format="YYYY-MM-DD
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') }}
@ -72,17 +67,13 @@ v-model="queryParams.createTime" @change="handleQuery" value-format="YYYY-MM-DD
<el-tab-pane :label="t('ProductionPlan.TaskSummary.tabInProductionLabel')" name="9" />
<el-tab-pane :label="t('ProductionPlan.TaskSummary.tabCompletedLabel')" name="10" />
</el-tabs>
<el-table
v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" highlight-current-row
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" highlight-current-row
@current-change="handleCurrentChange">
<el-table-column
:label="t('ProductionPlan.TaskSummary.tableTaskCodeColumn')" align="center" prop="code"
<el-table-column :label="t('ProductionPlan.TaskSummary.tableTaskCodeColumn')" align="center" prop="code"
width="200px" sortable />
<el-table-column
:label="t('ProductionPlan.TaskSummary.tableOrderDateColumn')" align="center" prop="orderDate"
<el-table-column :label="t('ProductionPlan.TaskSummary.tableOrderDateColumn')" align="center" prop="orderDate"
:formatter="dateFormatter2" sortable />
<el-table-column
:label="t('ProductionPlan.TaskSummary.tableDeliveryDateColumn')" align="center"
<el-table-column :label="t('ProductionPlan.TaskSummary.tableDeliveryDateColumn')" align="center"
prop="deliveryDate" :formatter="deliveryDateFormatter" sortable />
<el-table-column :label="t('ProductionPlan.TaskSummary.tableStatusColumn')" align="center" prop="status" sortable>
<template #default="scope">
@ -94,18 +85,14 @@ v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" hi
<el-tag :type="scope.row.isScheduled ? 'success' : 'info'">{{ scope.row.isScheduled ? '是' : '否' }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableProductionProgressColumn')" align="center" min-width="60px">
<el-table-column :label="t('ProductionPlan.TaskSummary.tableProductionProgressColumn')" align="center"
min-width="60px">
<template #default="scope">
<div class="production-progress-cell">
<el-progress
type="circle"
:percentage="getProductionProgressPercent(scope.row)"
:width="40"
:stroke-width="4"
:show-text="false"
:color="getProductionProgressPercent(scope.row) === 100 ? '#67c23a' : undefined"
/>
<span class="production-progress-text">{{ getProductionProgressPercent(scope.row) }}%</span>
<el-progress type="circle" :percentage="getProductionProgressPercent(scope.row)" :width="40"
:stroke-width="4" :show-text="false"
:color="getProductionProgressPercent(scope.row) === 100 ? '#67c23a' : undefined" />
<span class="production-progress-text">{{ getProductionProgressPercent(scope.row) }}%</span>
</div>
</template>
</el-table-column>
@ -113,11 +100,10 @@ v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" hi
<el-table-column :label="t('ProductionPlan.TaskSummary.tableOperateColumn')" align="center" min-width="200px">
<template #default="scope">
<el-button
link type="info" @click="openItemNeed(scope.row.code, scope.row.id)"
<!-- <el-button link type="info" @click="openItemNeed(scope.row.code, scope.row.id)"
v-hasPermi="['mes:task:query']">
{{ t('ProductionPlan.TaskSummary.actionMaterialLabel') }}
</el-button>
</el-button> -->
<el-button link type="primary" @click="openPlan(scope.row.id)" v-hasPermi="['mes:plan:query']">
{{ t('ProductionPlan.TaskSummary.actionViewPlanLabel') }}
</el-button>
@ -128,8 +114,7 @@ link type="info" @click="openItemNeed(scope.row.code, scope.row.id)"
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>

Loading…
Cancel
Save