style:质量管理模块适配国际化

main
黄伟杰 1 week ago
parent dd7d73fbdc
commit 7a1ba32ae3

@ -308,7 +308,8 @@ export default {
typeUpdate: 'Dict Type Eidt',
dataCreate: 'Dict Data Create',
dataUpdate: 'Dict Data Eidt',
fileUpload: 'File Upload'
fileUpload: 'File Upload',
select: 'Select'
},
dialog: {
dialog: 'Dialog',
@ -1435,5 +1436,152 @@ export default {
updateSuccess: 'Update successful',
updateFail: 'Update failed'
}
},
QualityManagement: {
ZjType: {
moduleName: 'Inspection Type',
code: 'Code',
name: 'Name',
remark: 'Remark',
createTime: 'Create Time',
operate: 'Operate',
exportFilename: 'Quality-InspectionType.xls',
placeholderCode: 'Please input code',
placeholderName: 'Please input name',
placeholderRemark: 'Please input remark',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date',
validatorCodeRequired: 'Code can not be empty',
validatorNameRequired: 'Name can not be empty'
},
ZjItem: {
moduleName: 'Inspection Item',
zjType: 'Inspection Type',
name: 'Name',
tool: 'Operation Method',
standardVal: 'Standard Value',
upperVal: 'Upper Limit',
lowerVal: 'Lower Limit',
unit: 'Unit',
remark: 'Remark',
createTime: 'Create Time',
operate: 'Operate',
exportFilename: 'Quality-InspectionItem.xls',
placeholderZjType: 'Please select inspection type',
placeholderName: 'Please input name',
placeholderTool: 'Please input operation method',
placeholderStandardVal: 'Please input standard value',
placeholderUpperVal: 'Please input upper limit',
placeholderLowerVal: 'Please input lower limit',
placeholderUnit: 'Please select unit',
placeholderRemark: 'Please input remark',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date',
validatorNameRequired: 'Name can not be empty',
validatorZjTypeRequired: 'Inspection type can not be empty'
},
ZjSchema: {
moduleName: 'Inspection Scheme',
name: 'Name',
type: 'Type',
sampleMethod: 'Sampling Method',
val: 'Value',
item: 'Related Items',
remark: 'Remark',
createTime: 'Create Time',
operate: 'Operate',
source: 'Source',
target: 'Target',
filterPlaceholder: 'Filter',
selectItemDialogTitle: 'Select Inspection Items',
exportFilename: 'Quality-InspectionScheme.xls',
placeholderName: 'Please input name',
placeholderType: 'Please select type',
placeholderSampleMethod: 'Please select sampling method',
placeholderVal: 'Please input value',
placeholderItem: 'Please select inspection items',
placeholderRemark: 'Please input remark',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date',
validatorNameRequired: 'Name can not be empty',
validatorTypeRequired: 'Type can not be empty',
validatorSampleMethodRequired: 'Sampling method can not be empty',
validatorValRequired: 'Value can not be empty'
},
ZjTask: {
moduleName: 'Inspection Task',
index: 'Index',
code: 'Code',
type: 'Inspection Category',
status: 'Status',
ticketCode: 'Work Order',
orgType: 'Process',
schemaName: 'Inspection Scheme',
managerName: 'Manager',
executorName: 'Executor',
executeTime: 'Execute Time',
remark: 'Remark',
result: 'Result',
resultPass: 'Pass',
resultFail: 'Fail',
createTime: 'Create Time',
operate: 'Operate',
inspect: 'Inspect',
exportFilename: 'Quality-InspectionTask.xls',
placeholderCode: 'Please input code',
placeholderType: 'Please select inspection category',
placeholderOrgType: 'Please select process',
placeholderStatus: 'Please select status',
placeholderResult: 'Please input result',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date',
formCode: 'Code',
formType: 'Inspection Category',
formSchema: 'Inspection Scheme',
formTicketType: 'Work Order Type',
formTicket: 'Production Plan',
formOrgType: 'Process',
formManager: 'Manager',
formRemark: 'Remark',
ticketTypeProcess: 'Production Process',
ticketTypeStorage: 'Product Storage',
placeholderFormCode: 'Please input code',
placeholderFormType: 'Please select inspection category',
placeholderFormSchema: 'Please select inspection scheme',
placeholderFormTicket: 'Please select production plan',
placeholderFormOrgType: 'Please select process',
placeholderFormManager: 'Please select manager',
placeholderFormRemark: 'Please input remark',
validatorCodeRequired: 'Code can not be empty',
validatorTypeRequired: 'Inspection category can not be empty',
validatorSchemaRequired: 'Inspection scheme can not be empty',
validatorTicketRequired: 'Work order can not be empty',
validatorOrgTypeRequired: 'Process can not be empty',
validatorTicketTypeRequired: 'Work order type can not be empty'
},
TicketResultDialog: {
moduleName: 'Inspection Result',
index: 'Index',
inspectionItemName: 'Inspection Item Name',
inspectionMethod: 'Inspection Method',
judgmentCriteria: 'Judgment Criteria',
unit: 'Unit',
upperVal: 'Upper Limit',
lowerVal: 'Lower Limit',
inspectionResult: 'Inspection Result',
inspectionResultPending: 'Pending',
inspectionResultPass: 'Pass',
inspectionResultFail: 'Fail',
images: 'Images',
remark: 'Remark',
operate: 'Operate',
pass: 'Pass',
fail: 'Fail',
save: 'Save',
cancel: 'Cancel',
selectDecisionTip: 'Please select pass or fail for pending records first',
updateSuccess: 'Update successful',
updateFail: 'Update failed'
}
}
}

@ -309,7 +309,8 @@ export default {
typeCreate: '字典类型新增',
typeUpdate: '字典类型编辑',
dataCreate: '字典数据新增',
dataUpdate: '字典数据编辑'
dataUpdate: '字典数据编辑',
select: '选择'
},
dialog: {
dialog: '弹窗',
@ -1431,5 +1432,152 @@ export default {
updateSuccess: '更新成功',
updateFail: '更新失败'
}
},
QualityManagement: {
ZjType: {
moduleName: '检验类型',
code: '编码',
name: '名称',
remark: '备注',
createTime: '创建时间',
operate: '操作',
exportFilename: '质量管理-检验类型.xls',
placeholderCode: '请输入编码',
placeholderName: '请输入名称',
placeholderRemark: '请输入备注',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期',
validatorCodeRequired: '编码不能为空',
validatorNameRequired: '名称不能为空'
},
ZjItem: {
moduleName: '检验项目',
zjType: '检验类型',
name: '名称',
tool: '作业方式',
standardVal: '标准值',
upperVal: '上限值',
lowerVal: '下限值',
unit: '单位',
remark: '备注',
createTime: '创建时间',
operate: '操作',
exportFilename: '质量管理-检验项目.xls',
placeholderZjType: '请选择检验类型',
placeholderName: '请输入名称',
placeholderTool: '请输入作业方式',
placeholderStandardVal: '请输入标准值',
placeholderUpperVal: '请输入上限值',
placeholderLowerVal: '请输入下限值',
placeholderUnit: '请选择单位',
placeholderRemark: '请输入备注',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期',
validatorNameRequired: '名称不能为空',
validatorZjTypeRequired: '检验类型不能为空'
},
ZjSchema: {
moduleName: '检验方案',
name: '名称',
type: '类型',
sampleMethod: '抽检方式',
val: '值',
item: '关联项目',
remark: '备注',
createTime: '创建时间',
operate: '操作',
source: '来源',
target: '目标',
filterPlaceholder: '筛选',
selectItemDialogTitle: '选择检验项目',
exportFilename: '质量管理-检验方案.xls',
placeholderName: '请输入名称',
placeholderType: '请选择类型',
placeholderSampleMethod: '请选择抽检方式',
placeholderVal: '请输入值',
placeholderItem: '请选择检验项目',
placeholderRemark: '请输入备注',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期',
validatorNameRequired: '名称不能为空',
validatorTypeRequired: '类型不能为空',
validatorSampleMethodRequired: '抽检方式不能为空',
validatorValRequired: '值不能为空'
},
ZjTask: {
moduleName: '检验任务',
index: '序号',
code: '单号',
type: '质检分类',
status: '状态',
ticketCode: '工单',
orgType: '工序',
schemaName: '检验方案',
managerName: '负责人',
executorName: '执行人',
executeTime: '执行时间',
remark: '备注',
result: '结果',
resultPass: '通过',
resultFail: '不通过',
createTime: '创建时间',
operate: '操作',
inspect: '检验',
exportFilename: '质量管理-检验任务.xls',
placeholderCode: '请输入单号',
placeholderType: '请选择质检分类',
placeholderOrgType: '请选择工序',
placeholderStatus: '请选择状态',
placeholderResult: '请输入结果',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期',
formCode: '单号',
formType: '质检分类',
formSchema: '检验方案',
formTicketType: '工单类型',
formTicket: '生产计划',
formOrgType: '工序',
formManager: '负责人',
formRemark: '备注',
ticketTypeProcess: '生产过程',
ticketTypeStorage: '产品入库',
placeholderFormCode: '请输入单号',
placeholderFormType: '请选择质检分类',
placeholderFormSchema: '请选择检验方案',
placeholderFormTicket: '请选择生产计划',
placeholderFormOrgType: '请选择工序',
placeholderFormManager: '请选择负责人',
placeholderFormRemark: '请输入备注',
validatorCodeRequired: '单号不能为空',
validatorTypeRequired: '质检分类不能为空',
validatorSchemaRequired: '检验方案不能为空',
validatorTicketRequired: '工单不能为空',
validatorOrgTypeRequired: '工序不能为空',
validatorTicketTypeRequired: '工单类型不能为空'
},
TicketResultDialog: {
moduleName: '检验结果',
index: '序号',
inspectionItemName: '检验项名称',
inspectionMethod: '检验方式',
judgmentCriteria: '判定基准',
unit: '单位',
upperVal: '上限值',
lowerVal: '下限值',
inspectionResult: '检验结果',
inspectionResultPending: '待检测',
inspectionResultPass: '通过',
inspectionResultFail: '不通过',
images: '图片',
remark: '备注',
operate: '操作',
pass: '通过',
fail: '不通过',
save: '保 存',
cancel: '取 消',
selectDecisionTip: '请先为待检测记录选择通过或不通过',
updateSuccess: '更新成功',
updateFail: '更新失败'
}
}
}

@ -601,7 +601,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
{
path: '/iot/report/dashboardPage/Dashboard8',
component: () => import('@/views/report/dashboardPage/dashboard8/Dashboard8.vue'),
component: () => import('@/views/report/dashboardPage/dashboard8/index.vue'),
name: 'IotReportDashboard8',
meta: {
title: '智能制造产线任务总览',
@ -613,7 +613,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
{
path: '/iot/report/dashboardPage/Dashboard1',
component: () => import('@/views/report/dashboardPage/dashboard1/Dashboard8.vue'),
component: () => import('@/views/report/dashboardPage/dashboard1/index.vue'),
name: 'IotReportDashboard1',
meta: {
title: '智能制造产线任务总览',

@ -1,38 +1,58 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="单号" prop="code">
<el-input v-model="formData.code" placeholder="请输入单号" />
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="120px"
v-loading="formLoading"
>
<el-form-item :label="t('QualityManagement.ZjTask.formCode')" prop="code">
<el-input
v-model="formData.code"
:placeholder="t('QualityManagement.ZjTask.placeholderFormCode')"
/>
</el-form-item>
<el-form-item label="质检分类" prop="type">
<el-select v-model="formData.type" clearable filterable placeholder="请选择质检分类">
<el-form-item :label="t('QualityManagement.ZjTask.formType')" prop="type">
<el-select
v-model="formData.type"
clearable
filterable
:placeholder="t('QualityManagement.ZjTask.placeholderFormType')"
>
<el-option
v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="检验方案" prop="schemaId">
<el-form-item :label="t('QualityManagement.ZjTask.formSchema')" prop="schemaId">
<el-row :gutter="8" class="w-full">
<el-col :span="22">
<el-input v-model="formData.schemaName" placeholder="请选择检验方案" readonly />
<el-input
v-model="formData.schemaName"
:placeholder="t('QualityManagement.ZjTask.placeholderFormSchema')"
readonly
/>
</el-col>
<el-col :span="2" class="text-right">
<el-button type="primary" @click="openSchemaDialog"></el-button>
<el-button type="primary" @click="openSchemaDialog">
{{ t('action.select') }}
</el-button>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="工单类型" prop="ticketType">
<el-form-item :label="t('QualityManagement.ZjTask.formTicketType')" prop="ticketType">
<el-radio-group v-model="formData.ticketType" @change="ticketTypeChange">
<el-radio :label="1">生产过程</el-radio>
<el-radio :label="2">产品入库</el-radio>
<el-radio :label="1">{{ t('QualityManagement.ZjTask.ticketTypeProcess') }}</el-radio>
<el-radio :label="2">{{ t('QualityManagement.ZjTask.ticketTypeStorage') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生产计划" prop="ticket">
<el-select
<el-form-item :label="t('QualityManagement.ZjTask.formTicket')" prop="ticket">
<el-select
v-model="formData.ticket"
clearable
filterable
placeholder="请选择生产计划"
:placeholder="t('QualityManagement.ZjTask.placeholderFormTicket')"
>
<el-option
v-for="item in planList"
@ -42,17 +62,21 @@ v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="
/>
</el-select>
</el-form-item>
<el-form-item label="工序" prop="orgType" v-if="formData.ticketType === 1">
<el-select v-model="formData.orgType" clearable placeholder="请选择工序">
<el-form-item :label="t('QualityManagement.ZjTask.formOrgType')" prop="orgType" v-if="formData.ticketType === 1">
<el-select
v-model="formData.orgType"
clearable
:placeholder="t('QualityManagement.ZjTask.placeholderFormOrgType')"
>
<el-option v-for="item in orgTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="负责人" prop="managerId">
<el-form-item :label="t('QualityManagement.ZjTask.formManager')" prop="managerId">
<el-select
v-model="formData.managerId"
clearable
filterable
placeholder="请选择负责人"
:placeholder="t('QualityManagement.ZjTask.placeholderFormManager')"
@change="handleManagerChange"
>
<el-option
@ -63,16 +87,28 @@ v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('QualityManagement.ZjTask.formRemark')" prop="remark">
<el-input
v-model="formData.remark"
:placeholder="t('QualityManagement.ZjTask.placeholderFormRemark')"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false">
{{ t('common.cancel') }}
</el-button>
</template>
</Dialog>
<el-dialog v-model="schemaDialogVisible" title="选择检验方案" width="1200px" draggable>
<el-dialog
v-model="schemaDialogVisible"
:title="t('QualityManagement.ZjTask.formSchema')"
width="1200px"
draggable
>
<el-table :data="schemaList" v-loading="schemaLoading" height="400px" @row-click="handleSchemaRowClick">
<el-table-column width="60">
<template #default="scope">
@ -81,28 +117,32 @@ v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="
</el-radio>
</template>
</el-table-column>
<el-table-column type="index" label="序号" width="80" />
<el-table-column label="名称" prop="name" />
<el-table-column label="类型" prop="type">
<el-table-column :label="t('QualityManagement.ZjSchema.name')" type="index" width="80" />
<el-table-column :label="t('QualityManagement.ZjSchema.name')" prop="name" />
<el-table-column :label="t('QualityManagement.ZjSchema.type')" prop="type">
<template #default="scope">
<dict-tag type="mes_zj_schema_type" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="抽检方式" prop="sampleMethod">
<el-table-column :label="t('QualityManagement.ZjSchema.sampleMethod')" prop="sampleMethod">
<template #default="scope">
<dict-tag type="mes_zj_schema_sample_method" :value="scope.row.sampleMethod" />
</template>
</el-table-column>
<el-table-column label="值" prop="val">
<el-table-column :label="t('QualityManagement.ZjSchema.val')" prop="val">
<template #default="scope">
{{ formatSchemaVal(scope.row.val) }}
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" />
<el-table-column :label="t('QualityManagement.ZjSchema.remark')" prop="remark" />
</el-table>
<template #footer>
<el-button @click="schemaDialogVisible = false"> </el-button>
<el-button type="primary" @click="confirmSelectSchema"> </el-button>
<el-button @click="schemaDialogVisible = false">
{{ t('common.cancel') }}
</el-button>
<el-button type="primary" @click="confirmSelectSchema">
{{ t('common.ok') }}
</el-button>
</template>
</el-dialog>
</template>
@ -140,12 +180,12 @@ const formData = ref<{ [key: string]: any }>({
})
const formRules = reactive({
code: [{ required: true, message: '单号不能为空', trigger: 'blur' }],
type: [{ required: true, message: '质检分类不能为空', trigger: 'change' }],
schemaId: [{ required: true, message: '检验方案不能为空', trigger: 'change' }],
ticket: [{ required: true, message: '工单不能为空', trigger: 'blur' }],
orgType: [{ required: true, message: '工序不能为空', trigger: 'change' }],
ticketType: [{ required: true, message: '工单类型不能为空', trigger: 'change' }],
code: [{ required: true, message: t('QualityManagement.ZjTask.validatorCodeRequired'), trigger: 'blur' }],
type: [{ required: true, message: t('QualityManagement.ZjTask.validatorTypeRequired'), trigger: 'change' }],
schemaId: [{ required: true, message: t('QualityManagement.ZjTask.validatorSchemaRequired'), trigger: 'change' }],
ticket: [{ required: true, message: t('QualityManagement.ZjTask.validatorTicketRequired'), trigger: 'blur' }],
orgType: [{ required: true, message: t('QualityManagement.ZjTask.validatorOrgTypeRequired'), trigger: 'change' }],
ticketType: [{ required: true, message: t('QualityManagement.ZjTask.validatorTicketTypeRequired'), trigger: 'change' }],
})
const formRef = ref()

@ -7,14 +7,54 @@
:show-overflow-tooltip="true"
:row-key="getRowKey"
>
<el-table-column type="index" label="序号" align="center" width="60" />
<el-table-column label="名称" align="center" prop="name" min-width="160" />
<el-table-column label="作业方式" align="center" prop="tool" min-width="120" />
<el-table-column label="标准值" align="center" prop="standardVal" min-width="100" />
<el-table-column label="单位" align="center" prop="unitName" min-width="80" />
<el-table-column label="上限值" align="center" prop="upperVal" min-width="100" />
<el-table-column label="下限值" align="center" prop="lowerVal" min-width="100" />
<el-table-column label="图片" align="center" prop="images" width="160">
<el-table-column
:label="t('QualityManagement.TicketResultDialog.index')"
type="index"
align="center"
width="60"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.inspectionItemName')"
align="center"
prop="name"
min-width="160"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.inspectionMethod')"
align="center"
prop="tool"
min-width="120"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.judgmentCriteria')"
align="center"
prop="standardVal"
min-width="100"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.unit')"
align="center"
prop="unitName"
min-width="80"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.upperVal')"
align="center"
prop="upperVal"
min-width="100"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.lowerVal')"
align="center"
prop="lowerVal"
min-width="100"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.images')"
align="center"
prop="images"
width="160"
>
<template #default="scope">
<UploadImg
v-if="String(scope.row.zjResult) === '0'"
@ -35,23 +75,44 @@
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" min-width="160" />
<el-table-column label="检验结果" align="center" prop="zjResult" width="120">
<el-table-column
:label="t('QualityManagement.TicketResultDialog.remark')"
align="center"
prop="remark"
min-width="160"
/>
<el-table-column
:label="t('QualityManagement.TicketResultDialog.inspectionResult')"
align="center"
prop="zjResult"
width="120"
>
<template #default="scope">
<el-tag v-if="String(scope.row.zjResult) === '0'" type="info"></el-tag>
<el-tag v-else-if="String(scope.row.zjResult) === '1'" type="success">通过</el-tag>
<el-tag v-else-if="String(scope.row.zjResult) === '2'" type="danger">不通过</el-tag>
<el-tag v-if="String(scope.row.zjResult) === '0'" type="info">
{{ t('QualityManagement.TicketResultDialog.inspectionResultPending') }}
</el-tag>
<el-tag v-else-if="String(scope.row.zjResult) === '1'" type="success">
{{ t('QualityManagement.TicketResultDialog.inspectionResultPass') }}
</el-tag>
<el-tag v-else-if="String(scope.row.zjResult) === '2'" type="danger">
{{ t('QualityManagement.TicketResultDialog.inspectionResultFail') }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200" fixed="right">
<el-table-column
:label="t('QualityManagement.TicketResultDialog.operate')"
align="center"
width="200"
fixed="right"
>
<template #default="scope">
<el-radio-group
v-if="String(scope.row.zjResult) === '0'"
v-model="decisionMap[String(scope.row.id)]"
>
<el-radio :label="1">通过</el-radio>
<el-radio :label="2">不通过</el-radio>
<el-radio :label="1">{{ t('QualityManagement.TicketResultDialog.pass') }}</el-radio>
<el-radio :label="2">{{ t('QualityManagement.TicketResultDialog.fail') }}</el-radio>
</el-radio-group>
<span v-else>-</span>
</template>
@ -73,14 +134,16 @@
/>
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">
{{ t('QualityManagement.TicketResultDialog.cancel') }}
</el-button>
<el-button
type="primary"
@click="handleSave"
:loading="submitLoading"
:disabled="submitLoading || !isAllSelected()"
>
{{ t('QualityManagement.TicketResultDialog.save') }}
</el-button>
</template>
</Dialog>
@ -92,8 +155,9 @@ import { ZjTaskApi } from '@/api/mes/zjtask'
defineOptions({ name: 'ZjTaskResultDialog' })
const { t } = useI18n()
const dialogVisible = ref(false)
const dialogTitle = ref('检验结果')
const dialogTitle = ref(t('QualityManagement.TicketResultDialog.moduleName'))
const loading = ref(false)
const submitLoading = ref(false)
@ -113,7 +177,7 @@ const queryParams = reactive({
const open = async (id: number) => {
dialogVisible.value = true
dialogTitle.value = '检验结果'
dialogTitle.value = t('QualityManagement.TicketResultDialog.moduleName')
taskId.value = id
for (const key of Object.keys(decisionMap)) delete decisionMap[key]
for (const key of Object.keys(imageMap)) delete imageMap[key]

@ -1,13 +1,23 @@
<template>
<ContentWrap>
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="80px">
<el-form-item label="单号" prop="code">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form-item :label="t('QualityManagement.ZjTask.code')" prop="code">
<el-input
v-model="queryParams.code" placeholder="请输入单号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
v-model="queryParams.code"
:placeholder="t('QualityManagement.ZjTask.placeholderCode')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="质检分类" prop="type">
<el-select v-model="queryParams.type" clearable filterable placeholder="请选择质检分类" class="!w-240px">
<el-form-item :label="t('QualityManagement.ZjTask.type')" prop="type">
<el-select
v-model="queryParams.type"
clearable
filterable
:placeholder="t('QualityManagement.ZjTask.placeholderType')"
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -18,43 +28,62 @@ v-for="dict in getStrDictOptions('mes_zj_task_type')" :key="dict.value" :label="
v-model="queryParams.ticket" placeholder="请输入工单" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item> -->
<el-form-item label="工序" prop="orgType">
<el-select v-model="queryParams.orgType" clearable placeholder="请选择工序" class="!w-240px">
<el-form-item :label="t('QualityManagement.ZjTask.orgType')" prop="orgType">
<el-select
v-model="queryParams.orgType"
clearable
:placeholder="t('QualityManagement.ZjTask.placeholderOrgType')"
class="!w-240px"
>
<el-option v-for="item in orgTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" clearable placeholder="请选择状态" class="!w-240px">
<el-form-item :label="t('QualityManagement.ZjTask.status')" prop="status">
<el-select
v-model="queryParams.status"
clearable
:placeholder="t('QualityManagement.ZjTask.placeholderStatus')"
class="!w-240px"
>
<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="结果" prop="result">
<el-form-item :label="t('QualityManagement.ZjTask.result')" prop="result">
<el-input
v-model="queryParams.result" placeholder="请输入结果" clearable @keyup.enter="handleQuery"
class="!w-240px" />
v-model="queryParams.result"
:placeholder="t('QualityManagement.ZjTask.placeholderResult')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-form-item :label="t('QualityManagement.ZjTask.createTime')" prop="createTime">
<el-date-picker
v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-260px" />
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
:start-placeholder="t('QualityManagement.ZjTask.placeholderCreateTimeStart')"
:end-placeholder="t('QualityManagement.ZjTask.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-260px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
<Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['mes:zj-task:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.create') }}
</el-button>
<el-button
type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['mes:zj-task:export']">
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -70,44 +99,54 @@ type="success" plain @click="handleExport" :loading="exportLoading"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" fixed="left" reserve-selection />
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="单号" align="center" prop="code" />
<el-table-column label="质检分类" align="center">
<el-table-column :label="t('QualityManagement.ZjTask.index')" type="index" width="80" />
<el-table-column :label="t('QualityManagement.ZjTask.code')" align="center" prop="code" />
<el-table-column :label="t('QualityManagement.ZjTask.type')" align="center">
<template #default="scope">
<DictTag type="mes_zj_task_type" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<el-table-column :label="t('QualityManagement.ZjTask.status')" align="center" prop="status">
<template #default="scope">
<DictTag :type="'job_status'" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="工单" align="center" prop="ticketCode" />
<el-table-column label="工序" align="center" prop="orgType">
<el-table-column :label="t('QualityManagement.ZjTask.ticketCode')" align="center" prop="ticketCode" />
<el-table-column :label="t('QualityManagement.ZjTask.orgType')" align="center" prop="orgType">
<template #default="scope">
<DictTag :type="DICT_TYPE.MES_ORG_TYPE" :value="scope.row.orgType" />
</template>
</el-table-column>
<el-table-column label="检验方案" align="center" prop="schemaName" />
<el-table-column label="负责人" align="center" prop="managerName" />
<el-table-column label="执行人" align="center" prop="executorName" />
<el-table-column label="执行时间" align="center" prop="executeTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="结果" align="center" prop="result">
<el-table-column :label="t('QualityManagement.ZjTask.schemaName')" align="center" prop="schemaName" />
<el-table-column :label="t('QualityManagement.ZjTask.managerName')" align="center" prop="managerName" />
<el-table-column :label="t('QualityManagement.ZjTask.executorName')" align="center" prop="executorName" />
<el-table-column
:label="t('QualityManagement.ZjTask.executeTime')"
align="center"
prop="executeTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column :label="t('QualityManagement.ZjTask.remark')" align="center" prop="remark" />
<el-table-column :label="t('QualityManagement.ZjTask.result')" align="center" prop="result">
<template #default="scope">
<el-tag v-if="scope.row.result === '1' || scope.row.result === 1" type="success"></el-tag>
<el-tag v-else-if="scope.row.result === '2' || scope.row.result === 2" type="danger">不通过</el-tag>
<el-tag v-if="scope.row.result === '1' || scope.row.result === 1" type="success">
{{ t('QualityManagement.ZjTask.resultPass') }}
</el-tag>
<el-tag v-else-if="scope.row.result === '2' || scope.row.result === 2" type="danger">
{{ t('QualityManagement.ZjTask.resultFail') }}
</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="160px">
<el-table-column :label="t('QualityManagement.ZjTask.operate')" align="center" min-width="160px">
<template #default="scope">
<el-button
link
type="warning"
@click.stop="handleRowClick(scope.row)"
>
检验
{{ t('QualityManagement.ZjTask.inspect') }}
</el-button>
<el-button
link
@ -115,7 +154,7 @@ type="success" plain @click="handleExport" :loading="exportLoading"
@click.stop="openForm('update', scope.row)"
v-hasPermi="['mes:zj-task:update']"
>
编辑
{{ t('action.update') }}
</el-button>
<el-button
link
@ -123,7 +162,7 @@ type="success" plain @click="handleExport" :loading="exportLoading"
@click.stop="handleDelete(scope.row.id)"
v-hasPermi="['mes:zj-task:delete']"
>
删除
{{ t('action.delete') }}
</el-button>
</template>
</el-table-column>
@ -233,7 +272,7 @@ const handleExport = async () => {
ids: selectedIds.value.length ? selectedIds.value.join(',') : undefined,
}
const data = await ZjTaskApi.exportZjTask(params)
download.excel(data, '检验任务.xls')
download.excel(data, t('QualityManagement.ZjTask.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -4,56 +4,83 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="120px"
v-loading="formLoading"
>
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
<el-form-item :label="t('QualityManagement.ZjItem.name')" prop="name">
<el-input
v-model="formData.name"
:placeholder="t('QualityManagement.ZjItem.placeholderName')"
/>
</el-form-item>
<el-form-item label="检验类型" prop="zjType">
<el-select
v-model="formData.zjType"
clearable
filterable
placeholder="请选择检验类型"
>
<el-option
v-for="item in typeList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
<el-form-item :label="t('QualityManagement.ZjItem.zjType')" prop="zjType">
<el-select
v-model="formData.zjType"
clearable
filterable
:placeholder="t('QualityManagement.ZjItem.placeholderZjType')"
>
<el-option
v-for="item in typeList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="作业方式" prop="tool">
<el-input v-model="formData.tool" placeholder="请输入作业方式" />
<el-form-item :label="t('QualityManagement.ZjItem.tool')" prop="tool">
<el-input
v-model="formData.tool"
:placeholder="t('QualityManagement.ZjItem.placeholderTool')"
/>
</el-form-item>
<el-form-item label="标准值" prop="standardVal">
<el-input v-model="formData.standardVal" placeholder="请输入标准值" />
<el-form-item :label="t('QualityManagement.ZjItem.standardVal')" prop="standardVal">
<el-input
v-model="formData.standardVal"
:placeholder="t('QualityManagement.ZjItem.placeholderStandardVal')"
/>
</el-form-item>
<el-form-item label="上限值" prop="upperVal">
<el-input v-model="formData.upperVal" placeholder="请输入上限值" />
<el-form-item :label="t('QualityManagement.ZjItem.upperVal')" prop="upperVal">
<el-input
v-model="formData.upperVal"
:placeholder="t('QualityManagement.ZjItem.placeholderUpperVal')"
/>
</el-form-item>
<el-form-item label="下限值" prop="lowerVal">
<el-input v-model="formData.lowerVal" placeholder="请输入下限值" />
<el-form-item :label="t('QualityManagement.ZjItem.lowerVal')" prop="lowerVal">
<el-input
v-model="formData.lowerVal"
:placeholder="t('QualityManagement.ZjItem.placeholderLowerVal')"
/>
</el-form-item>
<el-form-item label="单位" prop="unitId">
<el-select v-model="formData.unit" clearable placeholder="请选择单位" class="w-1/1">
<el-option
v-for="unit in unitList"
:key="unit.id"
:label="unit.name"
:value="unit.id"
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('QualityManagement.ZjItem.unit')" prop="unitId">
<el-select
v-model="formData.unit"
clearable
:placeholder="t('QualityManagement.ZjItem.placeholderUnit')"
class="w-1/1"
>
<el-option
v-for="unit in unitList"
:key="unit.id"
:label="unit.name"
:value="unit.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('QualityManagement.ZjItem.remark')" prop="remark">
<el-input
v-model="formData.remark"
:placeholder="t('QualityManagement.ZjItem.placeholderRemark')"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false">
{{ t('common.cancel') }}
</el-button>
</template>
</Dialog>
</template>
@ -86,8 +113,8 @@ const formData = ref({
lowerVal: undefined,
})
const formRules = reactive({
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
zjType: [{ required: true, message: '检验类型不能为空', trigger: 'blur' }]
name: [{ required: true, message: t('QualityManagement.ZjItem.validatorNameRequired'), trigger: 'blur' }],
zjType: [{ required: true, message: t('QualityManagement.ZjItem.validatorZjTypeRequired'), trigger: 'blur' }]
})
const formRef = ref() // Ref
@ -153,4 +180,4 @@ const resetForm = () => {
}
</script>
</script>

@ -1,42 +1,57 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item label="检验类型" prop="zjType">
<el-select v-model="queryParams.zjType" clearable filterable placeholder="请选择检验类型" class="!w-240px">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" min-label-width="110px">
<el-form-item :label="t('QualityManagement.ZjItem.zjType')" prop="zjType">
<el-select
v-model="queryParams.zjType"
clearable
filterable
:placeholder="t('QualityManagement.ZjItem.placeholderZjType')"
class="!w-240px"
>
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-form-item :label="t('QualityManagement.ZjItem.name')" prop="name">
<el-input
v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery"
v-model="queryParams.name"
:placeholder="t('QualityManagement.ZjItem.placeholderName')"
clearable
@keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('QualityManagement.ZjItem.remark')" prop="remark">
<el-input
v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter="handleQuery"
v-model="queryParams.remark"
:placeholder="t('QualityManagement.ZjItem.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-form-item :label="t('QualityManagement.ZjItem.createTime')" prop="createTime">
<el-date-picker
v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
start-placeholder="开始日期" end-placeholder="结束日期"
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
:start-placeholder="t('QualityManagement.ZjItem.placeholderCreateTimeStart')"
:end-placeholder="t('QualityManagement.ZjItem.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" />
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
<Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['mes:zj-item:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.create') }}
</el-button>
<el-button
type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['mes:zj-item:export']">
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -54,26 +69,32 @@ type="success" plain @click="handleExport" :loading="exportLoading"
>
<el-table-column type="selection" width="55" fixed="left" reserve-selection />
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="作业方式" align="center" prop="tool" />
<el-table-column label="检验类型" align="center" prop="zjTypeName">
<el-table-column :label="t('QualityManagement.ZjItem.name')" align="center" prop="name" />
<el-table-column :label="t('QualityManagement.ZjItem.tool')" align="center" prop="tool" />
<el-table-column :label="t('QualityManagement.ZjItem.zjType')" align="center" prop="zjTypeName">
<template #default="scope">
<el-tag>{{ scope.row.zjTypeName }}</el-tag>
</template>
</el-table-column>
<el-table-column label="标准值" align="center" prop="standardVal" />
<el-table-column label="上限值" align="center" prop="upperVal" />
<el-table-column label="下限值" align="center" prop="lowerVal" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="操作" align="center" min-width="120px">
<el-table-column :label="t('QualityManagement.ZjItem.standardVal')" align="center" prop="standardVal" />
<el-table-column :label="t('QualityManagement.ZjItem.upperVal')" align="center" prop="upperVal" />
<el-table-column :label="t('QualityManagement.ZjItem.lowerVal')" align="center" prop="lowerVal" />
<el-table-column :label="t('QualityManagement.ZjItem.unit')" align="center" prop="unitName" />
<el-table-column :label="t('QualityManagement.ZjItem.remark')" align="center" prop="remark" />
<el-table-column
:label="t('QualityManagement.ZjItem.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column :label="t('QualityManagement.ZjItem.operate')" align="center" min-width="120px">
<template #default="scope">
<el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['mes:zj-item:update']">
编辑
{{ t('action.update') }}
</el-button>
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['mes:zj-item:delete']">
删除
{{ t('action.delete') }}
</el-button>
</template>
</el-table-column>
@ -182,7 +203,7 @@ const handleExport = async () => {
ids: selectedIds.value.length ? selectedIds.value.join(',') : undefined,
}
const data = await ZjItemApi.exportZjItem(params)
download.excel(data, '质量管理-检验项目.xls')
download.excel(data, t('QualityManagement.ZjItem.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -129,4 +129,4 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
</script>
</script>

@ -244,4 +244,4 @@ const handleExport = async () => {
// onMounted(() => {
// getList()
// })
</script>
</script>

@ -76,4 +76,4 @@ const getList = async () => {
onMounted(() => {
getList()
})
</script>
</script>

@ -1,67 +1,101 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="120px"
v-loading="formLoading"
>
<el-form-item :label="t('QualityManagement.ZjSchema.name')" prop="name">
<el-input
v-model="formData.name"
:placeholder="t('QualityManagement.ZjSchema.placeholderName')"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-form-item :label="t('QualityManagement.ZjSchema.type')" prop="type">
<el-radio-group v-model="formData.type">
<el-radio v-for="dict in getDictOptions('mes_zj_schema_type')" :key="dict.value" :label="dict.value">
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="isSampleType" label="抽检方式" prop="sampleMethod">
<el-form-item v-if="isSampleType" :label="t('QualityManagement.ZjSchema.sampleMethod')" prop="sampleMethod">
<el-radio-group v-model="formData.sampleMethod">
<el-radio v-for="dict in getDictOptions('mes_zj_schema_sample_method')" :key="dict.value" :label="dict.value">
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="isSampleType" label="值" prop="val">
<el-form-item v-if="isSampleType" :label="t('QualityManagement.ZjSchema.val')" prop="val">
<template v-if="isRateMethod">
<el-input-number v-model="rateVal" :min="0" class="!w-160px" />
<span class="ml-8px">%</span>
</template>
<template v-else-if="isGapMethod">
<span>每间隔</span>
<span>{{ t('QualityManagement.ZjSchema.val') }}</span>
<el-input-number v-model="gapInterval" :min="1" class="!w-120px mx-8px" :controls="false" />
<span>抽取</span>
<span>{{ t('QualityManagement.ZjSchema.val') }}</span>
<el-input-number v-model="gapCount" :min="1" class="!w-120px ml-8px" :controls="false" />
</template>
<template v-else>
<el-input v-model="formData.val" placeholder="请输入值" />
<el-input
v-model="formData.val"
:placeholder="t('QualityManagement.ZjSchema.placeholderVal')"
/>
</template>
</el-form-item>
<el-form-item label="关联项目" prop="item">
<el-form-item :label="t('QualityManagement.ZjSchema.item')" prop="item">
<el-row :gutter="8" class="w-full">
<el-col :span="22">
<el-input :model-value="displayItemNames" placeholder="请选择检验项目" readonly />
<el-input
:model-value="displayItemNames"
:placeholder="t('QualityManagement.ZjSchema.placeholderItem')"
readonly
/>
</el-col>
<el-col :span="2" class="text-right">
<el-button type="primary" @click="openItemDialog"></el-button>
<el-button type="primary" @click="openItemDialog">
{{ t('action.select') }}
</el-button>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('QualityManagement.ZjSchema.remark')" prop="remark">
<el-input
v-model="formData.remark"
:placeholder="t('QualityManagement.ZjSchema.placeholderRemark')"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false">
{{ t('common.cancel') }}
</el-button>
</template>
</Dialog>
<el-dialog v-model="itemDialogVisible" title="选择检验项目" width="920px" draggable>
<el-dialog
v-model="itemDialogVisible"
:title="t('QualityManagement.ZjSchema.selectItemDialogTitle')"
width="920px"
draggable
>
<div v-loading="itemLoading">
<div class="formula-config-picklist">
<div class="formula-config-panel">
<div class="formula-config-panel__header">
<div>来源</div>
<div>{{ t('QualityManagement.ZjSchema.source') }}</div>
<div class="formula-config-panel__meta">{{ filteredSourceItems.length }}</div>
</div>
<div class="formula-config-panel__filter">
<el-input v-model="sourceKeyword" placeholder="筛选" clearable />
<el-input
v-model="sourceKeyword"
:placeholder="t('QualityManagement.ZjSchema.filterPlaceholder')"
clearable
/>
</div>
<el-table
class="formula-config-panel__table"
@ -71,8 +105,8 @@
@selection-change="handleSourceSelectionChange"
>
<el-table-column type="selection" width="44" />
<el-table-column label="名称" prop="name" />
<el-table-column label="检验类型">
<el-table-column :label="t('QualityManagement.ZjItem.name')" prop="name" />
<el-table-column :label="t('QualityManagement.ZjItem.zjType')">
<template #default="scope">
{{ scope.row.zjTypeName }}
</template>
@ -91,11 +125,15 @@
<div class="formula-config-panel">
<div class="formula-config-panel__header">
<div>目标</div>
<div>{{ t('QualityManagement.ZjSchema.target') }}</div>
<div class="formula-config-panel__meta">{{ filteredTargetItems.length }}</div>
</div>
<div class="formula-config-panel__filter">
<el-input v-model="targetKeyword" placeholder="筛选" clearable />
<el-input
v-model="targetKeyword"
:placeholder="t('QualityManagement.ZjSchema.filterPlaceholder')"
clearable
/>
</div>
<el-table
class="formula-config-panel__table"
@ -105,8 +143,8 @@
@selection-change="handleTargetSelectionChange"
>
<el-table-column type="selection" width="44" />
<el-table-column label="名称" prop="name" />
<el-table-column label="检验类型">
<el-table-column :label="t('QualityManagement.ZjItem.name')" prop="name" />
<el-table-column :label="t('QualityManagement.ZjItem.zjType')">
<template #default="scope">
{{ scope.row.zjTypeName }}
</template>
@ -116,8 +154,12 @@
</div>
</div>
<template #footer>
<el-button @click="itemDialogVisible = false"> </el-button>
<el-button type="primary" @click="confirmSelectItems"> </el-button>
<el-button @click="itemDialogVisible = false">
{{ t('common.cancel') }}
</el-button>
<el-button type="primary" @click="confirmSelectItems">
{{ t('common.ok') }}
</el-button>
</template>
</el-dialog>
</template>
@ -156,9 +198,11 @@ const targetKeyword = ref('')
const sourceCheckedKeys = ref<number[]>([])
const targetCheckedKeys = ref<number[]>([])
const formRules = reactive({
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
type: [{ required: true, message: '类型不能为空', trigger: 'change' }],
sampleMethod: [{ required: true, message: '抽检方式不能为空', trigger: 'change' }],
name: [{ required: true, message: t('QualityManagement.ZjSchema.validatorNameRequired'), trigger: 'blur' }],
type: [{ required: true, message: t('QualityManagement.ZjSchema.validatorTypeRequired'), trigger: 'change' }],
sampleMethod: [
{ required: true, message: t('QualityManagement.ZjSchema.validatorSampleMethodRequired'), trigger: 'change' },
],
val: [{ validator: (_: any, __: any, callback: any) => validateVal(callback), trigger: 'blur' }],
})
const formRef = ref() // Ref
@ -221,20 +265,20 @@ const validateVal = (callback: any) => {
callback()
return
}
if (isRateMethod.value) {
if (rateVal.value === undefined || rateVal.value === null) {
callback(new Error('值不能为空'))
return
}
} else if (isGapMethod.value) {
if (!gapInterval.value || !gapCount.value) {
callback(new Error('值不能为空'))
if (isRateMethod.value) {
if (rateVal.value === undefined || rateVal.value === null) {
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
return
}
} else if (isGapMethod.value) {
if (!gapInterval.value || !gapCount.value) {
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
return
}
} else if (!formData.value.val) {
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
return
}
} else if (!formData.value.val) {
callback(new Error('值不能为空'))
return
}
callback()
}

@ -1,59 +1,92 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item label="名称" prop="name">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form-item :label="t('QualityManagement.ZjSchema.name')" prop="name">
<el-input
v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery"
class="!w-240px" />
v-model="queryParams.name"
:placeholder="t('QualityManagement.ZjSchema.placeholderName')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable class="!w-240px">
<el-form-item :label="t('QualityManagement.ZjSchema.type')" prop="type">
<el-select
v-model="queryParams.type"
:placeholder="t('QualityManagement.ZjSchema.placeholderType')"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getDictOptions('mes_zj_schema_type')" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="抽检方式" prop="sampleMethod">
<el-select v-model="queryParams.sampleMethod" placeholder="请选择抽检方式" clearable class="!w-240px">
<el-form-item :label="t('QualityManagement.ZjSchema.sampleMethod')" prop="sampleMethod">
<el-select
v-model="queryParams.sampleMethod"
:placeholder="t('QualityManagement.ZjSchema.placeholderSampleMethod')"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getDictOptions('mes_zj_schema_sample_method')" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="值" prop="val">
<el-input v-model="queryParams.val" placeholder="请输入值" clearable @keyup.enter="handleQuery" class="!w-240px" />
<el-form-item :label="t('QualityManagement.ZjSchema.val')" prop="val">
<el-input
v-model="queryParams.val"
:placeholder="t('QualityManagement.ZjSchema.placeholderVal')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('QualityManagement.ZjSchema.remark')" prop="remark">
<el-input
v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter="handleQuery"
class="!w-240px" />
v-model="queryParams.remark"
:placeholder="t('QualityManagement.ZjSchema.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="关联项目" prop="item">
<el-form-item :label="t('QualityManagement.ZjSchema.item')" prop="item">
<el-input
v-model="queryParams.item" placeholder="请输入关联项目" clearable @keyup.enter="handleQuery"
class="!w-240px" />
v-model="queryParams.item"
:placeholder="t('QualityManagement.ZjSchema.placeholderItem')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-form-item :label="t('QualityManagement.ZjSchema.createTime')" prop="createTime">
<el-date-picker
v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" />
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
:start-placeholder="t('QualityManagement.ZjSchema.placeholderCreateTimeStart')"
:end-placeholder="t('QualityManagement.ZjSchema.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
<Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
<Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['mes:zj-schema:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.create') }}
</el-button>
<el-button
type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['mes:zj-schema:export']">
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -73,45 +106,54 @@ type="success" plain @click="handleExport" :loading="exportLoading"
<el-table-column type="expand">
<template #default="scope">
<el-table
v-loading="scope.row._itemLoading" :data="scope.row._items || []" size="small"
:show-overflow-tooltip="true">
<el-table-column label="名称" prop="name" align="center" />
<el-table-column label="作业方式" prop="tool" align="center" />
<el-table-column label="标准值" prop="standardVal" align="center" />
<el-table-column label="单位" prop="unitName" align="center" />
<el-table-column label="上限值" prop="upperVal" align="center" />
<el-table-column label="下限值" prop="lowerVal" align="center" />
<el-table-column label="备注" prop="remark" align="center" />
v-loading="scope.row._itemLoading"
:data="scope.row._items || []"
size="small"
:show-overflow-tooltip="true"
>
<el-table-column :label="t('QualityManagement.ZjItem.name')" prop="name" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.tool')" prop="tool" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.standardVal')" prop="standardVal" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.unit')" prop="unitName" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.upperVal')" prop="upperVal" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.lowerVal')" prop="lowerVal" align="center" />
<el-table-column :label="t('QualityManagement.ZjItem.remark')" prop="remark" align="center" />
</el-table>
</template>
</el-table-column>
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="类型" align="center" prop="type">
<el-table-column :label="t('QualityManagement.ZjSchema.name')" align="center" prop="name" />
<el-table-column :label="t('QualityManagement.ZjSchema.type')" align="center" prop="type">
<template #default="scope">
<dict-tag type="mes_zj_schema_type" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="抽检方式" align="center" prop="sampleMethod">
<el-table-column :label="t('QualityManagement.ZjSchema.sampleMethod')" align="center" prop="sampleMethod">
<template #default="scope">
<dict-tag type="mes_zj_schema_sample_method" :value="scope.row.sampleMethod" />
</template>
</el-table-column>
<el-table-column label="值" align="center" prop="val">
<el-table-column :label="t('QualityManagement.ZjSchema.val')" align="center" prop="val">
<template #default="scope">
{{ formatValDisplay(scope.row.val) }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="操作" align="center" min-width="120px">
<el-table-column :label="t('QualityManagement.ZjSchema.remark')" align="center" prop="remark" />
<el-table-column
:label="t('QualityManagement.ZjSchema.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column :label="t('QualityManagement.ZjSchema.operate')" align="center" min-width="120px">
<template #default="scope">
<el-button
link type="primary" @click="openForm('update', scope.row.id)"
v-hasPermi="['mes:zj-schema:update']">
编辑
{{ t('action.update') }}
</el-button>
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['mes:zj-schema:delete']">
删除
{{ t('action.delete') }}
</el-button>
</template>
</el-table-column>
@ -230,7 +272,7 @@ const handleExport = async () => {
ids: selectedIds.value.length ? selectedIds.value.join(',') : undefined,
}
const data = await ZjSchemaApi.exportZjSchema(params)
download.excel(data, '检验方案.xls')
download.excel(data, t('QualityManagement.ZjSchema.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -4,22 +4,36 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="120px"
v-loading="formLoading"
>
<el-form-item label="编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入编码" :disabled = "formType == 'update'"/>
<el-form-item :label="t('QualityManagement.ZjType.code')" prop="code">
<el-input
v-model="formData.code"
:placeholder="t('QualityManagement.ZjType.placeholderCode')"
:disabled="formType == 'update'"
/>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
<el-form-item :label="t('QualityManagement.ZjType.name')" prop="name">
<el-input
v-model="formData.name"
:placeholder="t('QualityManagement.ZjType.placeholderName')"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('QualityManagement.ZjType.remark')" prop="remark">
<el-input
v-model="formData.remark"
:placeholder="t('QualityManagement.ZjType.placeholderRemark')"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false">
{{ t('common.cancel') }}
</el-button>
</template>
</Dialog>
</template>
@ -43,8 +57,8 @@ const formData = ref({
remark: undefined,
})
const formRules = reactive({
code: [{ required: true, message: '编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
code: [{ required: true, message: t('QualityManagement.ZjType.validatorCodeRequired'), trigger: 'blur' }],
name: [{ required: true, message: t('QualityManagement.ZjType.validatorNameRequired'), trigger: 'blur' }],
})
const formRef = ref() // Ref
@ -100,4 +114,4 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
</script>
</script>

@ -6,56 +6,56 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="110px"
>
<el-form-item label="编码" prop="code">
<el-form-item :label="t('QualityManagement.ZjType.code')" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入编码"
:placeholder="t('QualityManagement.ZjType.placeholderCode')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-form-item :label="t('QualityManagement.ZjType.name')" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
:placeholder="t('QualityManagement.ZjType.placeholderName')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('QualityManagement.ZjType.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('QualityManagement.ZjType.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-form-item :label="t('QualityManagement.ZjType.createTime')" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('QualityManagement.ZjType.placeholderCreateTimeStart')"
:end-placeholder="t('QualityManagement.ZjType.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<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="primary"
plain
@click="openForm('create')"
v-hasPermi="['mes:zj-type:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -64,7 +64,7 @@
:loading="exportLoading"
v-hasPermi="['mes:zj-type:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -82,17 +82,17 @@
>
<el-table-column type="selection" width="55" fixed="left" reserve-selection />
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column label="编码" align="center" prop="code" />
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column :label="t('QualityManagement.ZjType.code')" align="center" prop="code" />
<el-table-column :label="t('QualityManagement.ZjType.name')" align="center" prop="name" />
<el-table-column :label="t('QualityManagement.ZjType.remark')" align="center" prop="remark" />
<el-table-column
label="创建时间"
:label="t('QualityManagement.ZjType.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center" min-width="120px">
<el-table-column :label="t('QualityManagement.ZjType.operate')" align="center" min-width="120px">
<template #default="scope">
<el-button
link
@ -100,7 +100,7 @@
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:zj-type:update']"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -108,7 +108,7 @@
@click="handleDelete(scope.row.id)"
v-hasPermi="['mes:zj-type:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -212,7 +212,7 @@ const handleExport = async () => {
ids: selectedIds.value.length ? selectedIds.value.join(',') : undefined,
}
const data = await ZjTypeApi.exportZjType(params)
download.excel(data, '质量管理-检验类型.xls')
download.excel(data, t('QualityManagement.ZjType.exportFilename'))
} catch {
} finally {
exportLoading.value = false

Loading…
Cancel
Save