Browse Source

验证模板

master_hella_20240701
zhang_li 8 months ago
parent
commit
68278ed6ca
  1. 2
      src/utils/dict.ts
  2. 526
      src/views/qms/basicDataManage/inspectionTemplate/addForm.vue
  3. 211
      src/views/qms/basicDataManage/inspectionTemplate/agvLocationrelation.data.ts
  4. 3
      src/views/qms/basicDataManage/inspectionTemplate/index.vue

2
src/utils/dict.ts

@ -290,6 +290,8 @@ export enum DICT_TYPE {
//========== QMS ==========
SAMPLING_TYPE = "sampling_type", // 取样类型
EVALUATION_MODE = "evaluation_mode", // 评估模式
INSPECTION_CHARACTERISTICS_FEATURE_TYPE = "inspection_characteristics_feature_type", // 特征类型
INSPECTION_CHARACTERISTICS_RESULT_ENTRY = "inspection_characteristics_result_entry", // 结果录入方式
// ========== 业务 - mes -gaojs ==========

526
src/views/qms/basicDataManage/inspectionTemplate/addForm.vue

@ -7,96 +7,267 @@
:vLoading="formLoading"
>
<div style="max-height: 60vh; overflow-y: auto; padding: 0px 20px">
<Form ref="formRefMain" :schema="formAllSchemasMain" :is-col="true" />
<div class="tab-pane">
<div class="left">
<div class="plus">
<Icon icon="ep:plus" size="14" color="black" @click="addProcess"
/></div>
<div class="left-list" v-for="(item, index) in data.list" :key="index">
<div class="left-item" :class="chooseIndex == index ? 'active' : ''">
<el-input
v-model="item.description"
style="width: 120px; margin: 0px 10px"
v-if="item.isEdit"
placeholder="请输入工序名称"
/>
<div class="name" v-else @click="chooseItem(item, index)">{{ item.description }}</div>
<Icon
icon="ep:select"
class="mr-5px ml-5px"
v-if="item.isEdit"
@click="editName(item)"
/>
<Icon icon="ep:edit" class="mr-5px ml-5px" v-else @click="editName(item)" />
<Icon icon="ep:close" class="mr-5px" @click="delProcess(index)" />
</div>
</div>
</div>
<div class="right">
<div class="small-title">检验工序</div>
<Form
ref="formRefProcess"
:schema="formAllSchemasProcess"
:is-col="true"
labelWidth="150px"
/>
<div class="small-title">检验特性</div>
<Form
ref="formRefFeatures"
:schema="formAllSchemasFeatures"
:is-col="true"
labelWidth="150px"
/>
</div>
</div>
<!-- <el-tabs
<!-- <Form ref="formRefMain" :schema="formAllSchemasMain" :is-col="true" :rules="rules" /> -->
<el-form :model="data" label-width="auto">
<el-row>
<el-col :span="12">
<el-form-item label="编码">
<el-input v-model="data.code" placeholder="根据系统生成" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="描述">
<el-input v-model="data.description" placeholder="请填写描述"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="版本">
<el-input v-model="data.version" placeholder="请填写版本"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs
v-model="editableTabsValue"
editable
class="demo-tabs"
@edit="handleTabsEdit"
type="border-card"
tab-position="left"
:stretch="false"
>
<el-tab-pane
v-for="item in editableTabs"
<el-tab-pane
v-for="item in data.process"
:key="item.name"
:label="item.title"
:label="item.description"
:name="item.name"
>
<template #label>
<span class="custom-tabs-label">
<el-icon><calendar /></el-icon>
<span>Route</span>
</span>
</template>
<div class="small-title">检验工序</div>
<Form
ref="formRefProcess"
<!-- <Form
:ref="`formRefProcess`+index"
:schema="formAllSchemasProcess"
:is-col="true"
labelWidth="150px"
/>
:rules="rules"
/> -->
<el-form :model="item" label-width="auto">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="编码">
<el-input v-model="item.code" placeholder="根据系统生成" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验方案模板编码">
<el-input v-model="item.inspectionCode" placeholder="根据系统生成" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="描述">
<el-input v-model="item.description" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="顺序号">
<el-input v-model="item.sequenceCode" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验特性编码">
<el-input v-model="item.inspectionCharCode" placeholder="根据系统生成" :disabled="true"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="small-title">检验特性</div>
<Form
ref="formRefFeatures"
:schema="formAllSchemasFeatures"
:is-col="true"
labelWidth="150px"
/>
<el-form :model="item" label-width="auto">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="编码">
<el-input v-model="item.inspectionCharacteristicsBaseVO.code" placeholder="根据系统生成" :disabled="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="描述">
<el-input v-model="item.inspectionCharacteristicsBaseVO.description" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验方法编码">
<el-select v-model="item.inspectionCharacteristicsBaseVO.inspectionMethodCode" placeholder="请选择检验方法编码">
<el-option
v-for="item in inspectionProcessList"
:key="item.id"
:label="item.description"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="采样过程编码">
<el-select v-model="item.inspectionCharacteristicsBaseVO.inspectionProcessPage" placeholder="请选择采样过程编码">
<el-option
v-for="item in inspectionProcessList"
:key="item.id"
:label="item.description"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="动态修改规则编码">
<el-select v-model="item.inspectionCharacteristicsBaseVO.inspectionMethod" placeholder="请选择动态修改规则编码">
<el-option
v-for="item in inspectionProcessList"
:key="item.id"
:label="item.description"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否允许修改特征值">
<el-select v-model="item.inspectionCharacteristicsBaseVO.isCanUpdate" placeholder="请选择是否允许修改特征值">
<el-option
v-for="item in isYesList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结果录入方式">
<el-select v-model="item.inspectionCharacteristicsBaseVO.resultEntryMethod" placeholder="请选择结果录入方式">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.INSPECTION_CHARACTERISTICS_RESULT_ENTRY)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="特征类型">
<!-- <el-input v-model="item.featureType" /> -->
<el-select v-model="item.inspectionCharacteristicsBaseVO.featureType" placeholder="请选择特征类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.INSPECTION_CHARACTERISTICS_FEATURE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否设定上限">
<el-select v-model="item.inspectionCharacteristicsBaseVO.quantifyIsCapping" placeholder="请选择是否设定上限">
<el-option
v-for="item in isYesList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否设定下限">
<el-select v-model="item.inspectionCharacteristicsBaseVO.quantifyIsLowlimit" placeholder="请选择是否设定下限">
<el-option
v-for="item in isYesList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标值">
<el-input v-model="item.inspectionCharacteristicsBaseVO.quantifyTarget" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上限值">
<el-input v-model="item.inspectionCharacteristicsBaseVO.quantifyCapping" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下限值">
<el-input v-model="item.inspectionCharacteristicsBaseVO.quantifyLowlimit" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计量单位">
<el-input v-model="item.inspectionCharacteristicsBaseVO.quantifyUom" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="小数位">
<el-input v-model="item.inspectionCharacteristicsBaseVO.quantifyDecimal" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="选择集编码">
<el-select v-model="item.inspectionCharacteristicsBaseVO.quantifyQuantifyCode" placeholder="请选择集编码">
<el-option
v-for="item in inspectionProcessList"
:key="item.id"
:label="item.description"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
</el-tabs> -->
</el-tabs>
</div>
<template #footer>
<ButtonBase :Butttondata="Butttondata" @button-base-click="buttonBaseClick" />
</template>
</Dialog>
<Dialog title="修改名称" v-model="dialogVisibleName" width="500px" :close-on-click-modal="false">
<div style="padding: 0px 20px">
<el-input v-model="name" style="width: 240px" placeholder="请输入名称" />
</div>
<template #footer>
<ButtonBase :Butttondata="Butttondata" @button-base-click="buttonBaseClick1" />
</template>
</Dialog>
</template>
<script setup lang="ts">
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import { json } from 'stream/consumers'
import { getCurrentInstance } from 'vue'
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import * as InspectionProcessPageApi from '@/api/qms/inspectionTemplate'
const inspectionProcessList = ref([])
const isYesList = ref([])
onMounted(async()=>{
let inspectionProcessPage = await InspectionProcessPageApi.getInspectionProcessPage()
inspectionProcessList.value = inspectionProcessPage.list
console.log(inspectionProcessList)
isYesList.value =[{
value:0,
label:'是'
},{
value:1,
label:'否'
}]
})
const props = defineProps({
//
basicFormWidth: {
@ -126,6 +297,12 @@ const props = defineProps({
type: Array,
required: false,
default: null
},
// rules
rules: {
type: Object,
required: true,
default: null
}
})
const { t } = useI18n() //
@ -135,25 +312,16 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const dialogWidth = ref()
const form = reactive({
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: ''
const data = ref({
code: '',
description:'',
version:'',
process:[]
})
const chooseIndex = ref(0)
const formAllSchemasFeatures = ref(props.formAllSchemasFeatures?.formSchema)
const formAllSchemasProcess = ref(props.formAllSchemasProcess?.formSchema)
const formAllSchemasMain = ref(props.formAllSchemasMain?.formSchema)
const formRefMain = ref('')
const formRefProcess = ref('')
const formRefFeatures = ref('')
const dialogVisibleName = ref(false)
const name = ref('')
const onSubmit = () => {
console.log('submit!')
}
@ -170,40 +338,96 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any
} else {
dialogTitle.value = t('action.' + type)
}
try {
nextTick(() => {
formRefMain.value.setValues(data.value)
formRefProcess.value.setValues(data.value.list[0])
})
} finally {
formLoading.value = false
}
}
defineExpose({ open, dialogVisible, formLoading }) // open
import type { TabPaneName } from 'element-plus'
const data = ref({
code: '',
description: '',
version: '',
list: [
{
description: '哈哈哈',
code: '',
sequenceCode: ''
},
{
description: '呵呵呵',
isEdit: false,
code: '555',
sequenceCode: '6666'
},
{
description: '哈呵呵',
isEdit: false
let tabIndex = 1
const editableTabsValue = ref('1')
// const editableTabs = ref([])
const handleTabsEdit = (targetName: TabPaneName | undefined, action: 'remove' | 'add') => {
if (action === 'add') {
name.value = ''
dialogVisibleName.value = true
} else if (action === 'remove') {
const tabs = data.value.process
let activeName = editableTabsValue.value
if (activeName === targetName) {
tabs.forEach((tab, index) => {
if (tab.name === targetName) {
const nextTab = tabs[index + 1] || tabs[index - 1]
if (nextTab) {
activeName = nextTab.name
}
}
})
}
]
})
editableTabsValue.value = activeName
data.value.process = tabs.filter((tab) => tab.name !== targetName)
}
}
/** 修改名称时间 */
const buttonBaseClick1 = (val) => {
//
console.log(val)
if (val == 'save') {
const newTabName = `${++tabIndex}`
data.value.process.push({
description: name.value,
name: newTabName,
inspectionCode: '',
sequenceCode: '',
inspectionCharCode: '',
inspectionCharacteristicsBaseVO:{
describe: '',
inspectionMethodCode: '',
dynamicUpdateCode: '',
inspectionMethod: '',
isCanUpdate: '',
isDestructionInspection: '',
resultEntryMethod: '',
featureType: '',
quantifyIsCapping: '',
quantifyIsLowlimit: '',
quantifyTarget: '',
quantifyCapping: '',
quantifyLowlimit: '',
quantifyUom: '',
quantifyDecimal: '',
quantifyQuantifyCode: ''
}
})
console.log( data.value.process)
editableTabsValue.value = newTabName
dialogVisibleName.value = false
}
//
else if (val == 'close') {
dialogVisibleName.value = false
}
}
const buttonBaseClick = (val) => {
//
if (val == 'save') {
submitForm()
}
//
else if (val == 'close') {
dialogVisible.value = false
}
}
const submitForm = async () => {
// const data1= unref(formRefMain)?.formModel
// const data2= unref(formRefProcess)?.formModel
// const data3= unref(formRefFeatures)?.formModel
// console.log(data1)
// console.log(data2)
console.log(data.list)
emit('submitForm', formType.value, data)
}
/** 弹窗按钮 */
let Butttondata: any = []
if (props.footButttondata) {
@ -214,91 +438,21 @@ if (props.footButttondata) {
defaultButtons.formCloseBtn(null) //
]
}
//
const editName = (item) => {
if(!item.description){
p
return;
}
item.isEdit = !item.isEdit
}
//
const addProcess = () => {
data.value.list.push({
name: '哈哈哈',
isEdit: true
})
}
//
const delProcess = (index) => {
data.value.list.splice(index, 1)
}
const chooseItem = (item, index) => {
const data1 = JSON.parse(JSON.stringify(unref(formRefProcess)?.formModel))
data.value.list.forEach((element,index) => {
if (element.code == data1.code) {
data.value.list[index] =JSON.parse(JSON.stringify( data1))
}
})
chooseIndex.value = index
formRefProcess.value.setValues(item)
}
</script>
<style lang="scss" scoped>
<style scoped>
.small-title {
font-weight: bold;
padding: 0px 10px 10px;
color: #1a8bfc;
font-size: 16px;
}
</style>
<style>
.el-tabs--left .el-tabs__header.is-left {
min-height: 700px !important;
min-width: 150px !important;
}
.tab-pane {
border: 1px solid #dcdfe6;
display: flex;
.left {
background: #f5f7fa;
width: 200px;
border-right: 1px solid #dcdfe6;
position: relative;
.plus {
position: absolute;
right: 0px;
border: 1px solid #dcdfe6;
display: flex;
align-items: center;
justify-content: center;
padding: 2px;
top: 8px;
border-radius: 4px;
cursor: pointer;
}
.left-item {
display: flex;
align-items: center;
height: 36px;
margin-bottom: 10px;
cursor: pointer;
.name {
width: 120px;
overflow: hidden;
padding: 0px 10px;
height: 36px;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 36px;
}
}
.active {
background: white;
}
}
.right {
flex: 1;
padding: 20px;
}
.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left {
min-width: 120px !important;
}
</style>

211
src/views/qms/basicDataManage/inspectionTemplate/agvLocationrelation.data.ts

@ -5,7 +5,8 @@ import { Area } from '@/views/wms/basicDataManage/factoryModeling/areabasic/area
import * as LocationApi from '@/api/wms/location'
import { Location } from '@/views/wms/basicDataManage/factoryModeling/location/location.data'
import * as InspectionProcessPageApi from '@/api/qms/inspectionTemplate'
// const inspectionProcessPage = await InspectionProcessPageApi.getInspectionProcessPage()
let inspectionProcessPage = await InspectionProcessPageApi.getInspectionProcessPage()
inspectionProcessPage = inspectionProcessPage.list
// 表单校验
export const AgvLocationrelationRules = reactive({
@ -151,7 +152,71 @@ export const AgvLocationrelation = useCrudSchemas(reactive<CrudSchema[]>([
}
}
]))
export const InspectionTemplateRules = reactive({
description: [
{ required: true , message: '请填写描述', trigger: 'blur' }
],
version: [
{ required: true , message: '请填写版本', trigger: 'blur' }
],
inspectionCode: [
{ required: true, message: '请选择检验方案模板编码', trigger: 'blur' }
],
sequenceCode: [
{ required: true, message: '请填写顺序号', trigger: 'blur' }
],
inspectionCharCode: [
{ required: true, message: '请选择检验特性编码', trigger: 'blur' }
],
describe: [
{ required: true, message: '请填写描述', trigger: 'blur' }
],
inspectionMethodCode: [
{ required: true, message: '请选择检验方法编码', trigger: 'blur' }
],
dynamicUpdateCode: [
{ required: true, message: '请选择采样过程编码', trigger: 'blur' }
],
inspectionMethod: [
{ required: true, message: '请选择动态修改规则编码', trigger: 'blur' }
],
isCanUpdate: [
{ required: true, message: '请选择是否允许修改特征值', trigger: 'blur' }
],
isDestructionInspection: [
{ required: true, message: '请选择是否破坏性检验', trigger: 'blur' }
],
resultEntryMethod: [
{ required: true, message: '请选择结果录入方式', trigger: 'blur' }
],
featureType: [
{ required: true, message: '请选择特征类型', trigger: 'blur' }
],
quantifyIsCapping: [
{ required: true, message: '请选择是否设定上限', trigger: 'blur' }
],
quantifyIsLowlimit: [
{ required: true, message: '请选择是否设定下限', trigger: 'blur' }
],
quantifyTarget: [
{ required: true, message: '请输入目标值', trigger: 'blur' }
],
quantifyCapping: [
{ required: true, message: '请输入上限值', trigger: 'blur' }
],
quantifyLowlimit: [
{ required: true, message: '请输入下限值', trigger: 'blur' }
],
quantifyquantifyUomLowlimit: [
{ required: true, message: '请选择计量单位', trigger: 'blur' }
],
quantifyDecimal: [
{ required: true, message: '请输入小数位', trigger: 'blur' }
],
quantifyQuantifyCode: [
{ required: true, message: '请输入选择集编码', trigger: 'blur' }
],
})
export const InspectionTemplateMain = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '编码',
@ -195,6 +260,16 @@ export const InspectionTemplateProcess = useCrudSchemas(reactive<CrudSchema[]>([
label: '检验方案模板编码',
field: 'inspectionCode',
sort: 'custom',
form:{
component:'Select',
api: () => inspectionProcessPage,
componentProps:{
optionsAlias: {
labelField: 'description',
valueField: 'id'
}
}
}
},{
label: '顺序号',
field: 'sequenceCode',
@ -204,26 +279,14 @@ export const InspectionTemplateProcess = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form:{
component:'Select',
// api: () => inspectionProcessPage,
// componentProps:{
// optionsAlias: {
// labelField: 'name',
// valueField: 'id'
// }
// }
api: () => inspectionProcessPage,
componentProps:{
optionsAlias: {
labelField: 'description',
valueField: 'id'
}
}
}
// form: {
// value: userDept.id,
// component: 'Select',
// api: () => userDeptArray,
// componentProps: {
// disabled: true,
// optionsAlias: {
// labelField: 'name',
// valueField: 'id'
// }
// }
// }
}
]))
export const InspectionTemplateFeatures= useCrudSchemas(reactive<CrudSchema[]>([
@ -247,58 +310,142 @@ export const InspectionTemplateFeatures= useCrudSchemas(reactive<CrudSchema[]>([
field: 'inspectionMethodCode',
sort: 'custom',
form:{
component:'Select'
component:'Select',
api: () => inspectionProcessPage,
componentProps:{
optionsAlias: {
labelField: 'description',
valueField: 'id'
}
}
}
},{
label: '采样过程编码',
field: 'dynamicUpdateCode',
sort: 'custom',
form:{
component:'Select'
component:'Select',
api: () => inspectionProcessPage,
componentProps:{
optionsAlias: {
labelField: 'description',
valueField: 'id'
}
}
}
},{
label: '动态修改规则编码',
field: 'inspectionMethod',
sort: 'custom',
form:{
component:'Select'
component:'Select',
api: () => inspectionProcessPage,
componentProps:{
optionsAlias: {
labelField: 'description',
valueField: 'id'
}
}
}
},{
label: '是否允许修改特征值',
field: 'isCanUpdate',
sort: 'custom',
form:{
component:'Select'
component:'Select',
api: () => [{
value:0,
label:'是'
},{
value:1,
label:'否'
}],
componentProps:{
optionsAlias: {
labelField: 'label',
valueField: 'value'
}
}
}
},{
label: '是否破坏性检验',
field: 'isDestructionInspection',
sort: 'custom',
form:{
component:'Select'
component:'Select',
api: () => [{
value:0,
label:'是'
},{
value:1,
label:'否'
}],
componentProps:{
optionsAlias: {
labelField: 'label',
valueField: 'value'
}
}
}
},{
label: '结果录入方式',
field: 'resultEntryMethod',
sort: 'custom',
form:{
component:'Select'
}
dictType: DICT_TYPE.INSPECTION_CHARACTERISTICS_RESULT_ENTRY,
dictClass: 'string',
table: {
width: 150
},
},{
label: '特征类型',
field: 'featureType',
sort: 'custom',
form:{
component:'Select'
}
dictType: DICT_TYPE.INSPECTION_CHARACTERISTICS_FEATURE_TYPE,
dictClass: 'string',
table: {
width: 150
},
},{
label: '是否设定上限',
field: 'quantifyIsCapping',
sort: 'custom',
form:{
component:'Select',
api: () => [{
value:0,
label:'是'
},{
value:1,
label:'否'
}],
componentProps:{
optionsAlias: {
labelField: 'label',
valueField: 'value'
}
}
}
},{
label: '是否设定下限',
field: 'quantifyIsLowlimit',
sort: 'custom',
form:{
component:'Select',
api: () => [{
value:0,
label:'是'
},{
value:1,
label:'否'
}],
componentProps:{
optionsAlias: {
labelField: 'label',
valueField: 'value'
}
}
}
},{
label: '目标值',
field: 'quantifyTarget',

3
src/views/qms/basicDataManage/inspectionTemplate/index.vue

@ -55,6 +55,7 @@
:formAllSchemasFeatures="InspectionTemplateFeatures.allSchemas"
:formAllSchemasProcess="InspectionTemplateProcess.allSchemas"
:formAllSchemasMain="InspectionTemplateMain.allSchemas"
:rules="InspectionTemplateRules"
/>
<!-- 详情 -->
<Detail
@ -69,7 +70,7 @@
<script setup lang="ts">
import download from '@/utils/download'
import { AgvLocationrelation,AgvLocationrelationRules,InspectionTemplateMain,InspectionTemplateProcess,InspectionTemplateFeatures } from './agvLocationrelation.data'
import { AgvLocationrelation,AgvLocationrelationRules,InspectionTemplateMain,InspectionTemplateProcess,InspectionTemplateFeatures,InspectionTemplateRules } from './agvLocationrelation.data'
import * as AgvLocationrelationApi from '@/api/wms/agvLocationrelation'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import TableHead from '@/components/TableHead/src/TableHead.vue'

Loading…
Cancel
Save