add mold record

main
chenshuichuan 2 years ago
parent b04205bde4
commit 5f39ee3d7c

@ -14,7 +14,24 @@ export interface MoldBrandVO {
remark: string // 备注 remark: string // 备注
isEnable: boolean // 是否启用 isEnable: boolean // 是否启用
} }
// 模具 VO
export interface MoldVO {
id: number // ID
code: string // 模具编码
name: string // 模具名称
unitId: number // 单位ID
machineId: number // 机台ID
useTime: number // 使用时间(小时)
inTime: Date // 入库时间
status: number // 状态
images: string // 模具图片
remark: string // 备注
isEnable: boolean // 是否启用
brandId: number // 型号id
lastMaintainTime: Date // 上次保养
lastRepairTime: Date // 上次维修
lastMoldTime: Date // 上次换模
}
// 模具型号 API // 模具型号 API
export const MoldBrandApi = { export const MoldBrandApi = {
// 查询模具型号分页 // 查询模具型号分页
@ -46,9 +63,15 @@ export const MoldBrandApi = {
exportMoldBrand: async (params) => { exportMoldBrand: async (params) => {
return await request.download({ url: `/erp/mold-brand/export-excel`, params }) return await request.download({ url: `/erp/mold-brand/export-excel`, params })
}, },
// 查询模具型号列表
getBrandList: async (params) => {
return await request.get({ url: `/erp/mold-brand/getBrandList`, params })
},
// ==================== 子表(模具) ==================== // ==================== 子表(模具) ====================
// 查询模具列表
getMoldList: async (params) => {
return await request.get({ url: `/erp/mold-brand/getMoldList`, params })
},
// 获得模具分页 // 获得模具分页
getMoldPage: async (params) => { getMoldPage: async (params) => {
return await request.get({ url: `/erp/mold-brand/mold/page`, params }) return await request.get({ url: `/erp/mold-brand/mold/page`, params })

@ -33,9 +33,13 @@ export const MoldRecordSubjectApi = {
deleteMoldRecordSubject: async (id: number) => { deleteMoldRecordSubject: async (id: number) => {
return await request.delete({ url: `/mes/mold-record-subject/delete?id=` + id }) return await request.delete({ url: `/mes/mold-record-subject/delete?id=` + id })
}, },
// 查询维保项目列表
getList: async (params: any) => {
return await request.get({ url: `/mes/mold-record-subject/getList`, params })
},
// 导出维保项目 Excel // 导出维保项目 Excel
exportMoldRecordSubject: async (params) => { exportMoldRecordSubject: async (params) => {
return await request.download({ url: `/mes/mold-record-subject/export-excel`, params }) return await request.download({ url: `/mes/mold-record-subject/export-excel`, params })
} }
}
}

@ -253,6 +253,7 @@ export enum DICT_TYPE {
MES_PROGRESS_TYPE = "mes_progress_type", MES_PROGRESS_TYPE = "mes_progress_type",
MES_MOLD_RECORD_STATUS = "mes_mold_record_status", MES_MOLD_RECORD_STATUS = "mes_mold_record_status",
MES_MOLD_RECORD_TYPE = "mes_mold_record_type", MES_MOLD_RECORD_TYPE = "mes_mold_record_type",
MES_PASS_OR_NOPASS = "mes_pass_or_nopass",
//====iot //====iot
IOT_SIEMENS_TYPE = "iot_siemens_type", IOT_SIEMENS_TYPE = "iot_siemens_type",
IOT_MODBUS_TYPE = "iot_modbus_type", IOT_MODBUS_TYPE = "iot_modbus_type",

@ -44,6 +44,14 @@
/> />
<el-table-column label="操作" align="center" fixed="right" width="150px"> <el-table-column label="操作" align="center" fixed="right" width="150px">
<template #default="scope"> <template #default="scope">
<el-button
link
type="success"
@click="openRecordForm('create', scope.row.id, scope.row.brandId)"
v-hasPermi="['mes:mold-record:update']"
>
维保
</el-button>
<el-button <el-button
link link
type="primary" type="primary"
@ -73,12 +81,16 @@
</ContentWrap> </ContentWrap>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<MoldForm ref="formRef" @success="getList" /> <MoldForm ref="formRef" @success="getList" />
<!-- 表单弹窗添加/修改 -->
<MoldRecordForm ref="recordFormRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { DICT_TYPE } from '@/utils/dict' import { DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import { MoldBrandApi } from '@/api/erp/mold' import { MoldBrandApi } from '@/api/erp/mold'
import MoldForm from './MoldForm.vue' import MoldForm from './MoldForm.vue'
import MoldRecordForm from "@/views/erp/mold/components/MoldRecordForm.vue";
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -148,4 +160,11 @@ const handleDelete = async (id: number) => {
await getList() await getList()
} catch {} } catch {}
} }
/** 添加/修改操作 */
const recordFormRef = ref()
const openRecordForm = (type: string, id?: number, brandId?:number) => {
recordFormRef.value.open(type, id, brandId)
}
</script> </script>

@ -0,0 +1,269 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1000px">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="单号" prop="code">
<el-input :disabled="editDisable" v-model="formData.flowCode" placeholder="保存自动生成" />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="模具型号" prop="brandId">
<el-select
:disabled='editDisable'
v-model="formData.brandId"
clearable
filterable
placeholder="请选择模具型号"
@change="changeBrand"
>
<el-option
v-for="item in brandList"
:key="item.id"
:label="item.code+'/'+item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="模具" prop="moldId">
<el-select
:disabled='editDisable'
v-model="formData.moldId"
clearable
filterable
placeholder="请选择模具"
>
<el-option
v-for="item in moldList"
:key="item.id"
:label="item.code+'/'+item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="单据类型" prop="recordType">
<el-radio-group v-model="formData.recordType">
<el-radio
v-for="dict in getStrDictOptions(DICT_TYPE.MES_MOLD_RECORD_TYPE)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-row v-if="formData.recordType=='换模'">
<el-col :span="12">
<el-form-item label="机台" prop="machineId">
<el-select
v-model="formData.machineId"
clearable
filterable
placeholder="请选择机台"
>
<el-option
v-for="item in machineList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="前模具" prop="oldMoldId">
<el-input disabled v-model="formData.oldMoldId" placeholder="请输入前模具" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="负责人" prop="userId">
<el-select v-model="formData.userId" clearable filterable placeholder="请选择负责人">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
v-model="formData.startTime"
type="date"
value-format="x"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="formData.endTime"
type="date"
value-format="x"
placeholder="选择结束时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<Editor v-model="formData.remark" height="200px" />
</el-form-item>
</el-form>
<!-- 子表的表单 -->
<el-tabs v-model="subTabsName">
<el-tab-pane label="模具维保明细" name="moldRecordSubjectDetail">
<MoldRecordSubjectDetailForm ref="moldRecordSubjectDetailFormRef" :record-id="formData.id" />
</el-tab-pane>
</el-tabs>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MoldRecordApi, MoldRecordVO } from '@/api/mes/moldrecord'
import MoldRecordSubjectDetailForm from './MoldRecordSubjectDetailForm.vue'
import {MoldBrandApi, MoldBrandVO, MoldVO} from "@/api/erp/mold";
import * as UserApi from "@/api/system/user";
import {MachineComponentApi, MachineComponentVO} from "@/api/mes/machine";
/** 模具维保 表单 */
defineOptions({ name: 'MoldRecordForm' })
const { t } = useI18n() //
const message = useMessage() //
const editDisable = ref(false)
const brandList = ref<MoldBrandVO[]>([]) //
const moldList = ref<MoldVO[]>([]) //
const userList = ref<UserApi.UserVO[]>([]) //
const machineList = ref<MachineComponentVO[]>([]) //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
flowCode: undefined,
brandId: undefined,
moldId: undefined,
oldMoldId: undefined,
machineId: undefined,
userId: undefined,
recordType: undefined,
recordStatus: undefined,
remark: undefined
})
const formRules = reactive({
brandId: [{ required: true, message: '模具型号ID不能为空', trigger: 'blur' }],
moldId: [{ required: true, message: '模具ID不能为空', trigger: 'blur' }],
userId: [{ required: true, message: '负责人ID不能为空', trigger: 'blur' }],
recordType: [{ required: true, message: '单据类型不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 子表的表单 */
const subTabsName = ref('moldRecordSubjectDetail')
const moldRecordSubjectDetailFormRef = ref()
/** 打开弹窗 */
const open = async (type: string, moldId?: number,brandId?:number, machineId?: number) => {
dialogVisible.value = true
dialogTitle.value = "新建换模单"
formType.value = type
resetForm()
editDisable.value = false
//
brandList.value = await MoldBrandApi.getBrandList()
//
userList.value = await UserApi.getSimpleUserList()
//
machineList.value = await MachineComponentApi.getMachineComponentList()
formData.value.brandId = brandId
formData.value.moldId = moldId
formData.value.machineId = machineId
if(brandId){
query.brandId = formData.value.brandId
//
moldList.value = await MoldBrandApi.getMoldList(query)
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
try {
await moldRecordSubjectDetailFormRef.value.validate()
} catch (e) {
subTabsName.value = 'moldRecordSubjectDetail'
return
}
//
formLoading.value = true
try {
const data = formData.value as unknown as MoldRecordVO
//
data.moldRecordSubjectDetails = moldRecordSubjectDetailFormRef.value.getData()
if (formType.value === 'create') {
await MoldRecordApi.createMoldRecord(data)
message.success(t('common.createSuccess'))
} else {
await MoldRecordApi.updateMoldRecord(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
flowCode: undefined,
brandId: undefined,
moldId: undefined,
oldMoldId: undefined,
machineId: undefined,
userId: undefined,
recordType: undefined,
recordStatus: undefined,
remark: undefined
}
formRef.value?.resetFields()
}
const query = reactive({
brandId: undefined
})
const changeBrand = async(e) => {
query.brandId = formData.value.brandId
//
moldList.value = await MoldBrandApi.getMoldList(query)
}
</script>

@ -0,0 +1,144 @@
<template>
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
v-loading="formLoading"
label-width="0px"
:inline-message="true"
>
<el-table :data="formData" class="-mt-10px">
<el-table-column label="序号" type="index" width="100" />
<el-table-column label="项目" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subject`" :rules="formRules.subject" class="mb-0px!">
<el-select
v-model="row.subject"
clearable
filterable
placeholder="请选择项目"
>
<el-option
v-for="item in subjectList"
:key="item.subject"
:label="item.subject"
:value="item.subject"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="预期" min-width="400">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.expect`" :rules="formRules.expect">
<!-- <Editor v-model="row.expect" height="150px" />-->
<el-input type="textarea" v-model="row.expect" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="结果" min-width="400">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.result`" :rules="formRules.result">
<el-input type="textarea" v-model="row.result" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="明细状态" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.detailStatus`" :rules="formRules.detailStatus" class="mb-0px!">
<el-radio-group v-model="row.detailStatus">
<el-radio
v-for="dict in getStrDictOptions(DICT_TYPE.MES_PASS_OR_NOPASS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
<el-row justify="center" class="mt-3">
<el-button @click="handleAdd" round>+ 添加模具维保明细</el-button>
</el-row>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MoldRecordApi } from '@/api/mes/moldrecord'
import {MoldBrandApi, MoldBrandVO} from "@/api/erp/mold";
import {MoldRecordSubjectApi, MoldRecordSubjectVO} from "@/api/mes/moldrecordsubject";
const props = defineProps<{
recordId: undefined // id
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
})
const formRef = ref() // Ref
const subjectList = ref<MoldRecordSubjectVO[]>([]) //
/** 监听主表的关联字段的变化,加载对应的子表数据 */
watch(
() => props.recordId,
async (val) => {
// 1.
formData.value = []
// 2. val
if (!val) {
return;
}
try {
formLoading.value = true
formData.value = await MoldRecordApi.getMoldRecordSubjectDetailListByRecordId(val)
} finally {
formLoading.value = false
}
},
{ immediate: true }
)
/** 新增按钮操作 */
const handleAdd = () => {
const row = {
id: undefined,
subject: undefined,
expect: undefined,
result: undefined,
detailStatus: undefined,
recordId: undefined
}
row.recordId = props.recordId
formData.value.push(row)
}
/** 删除按钮操作 */
const handleDelete = (index) => {
formData.value.splice(index, 1)
}
/** 表单校验 */
const validate = () => {
return formRef.value.validate()
}
/** 表单值 */
const getData = () => {
return formData.value
}
/** 初始化 */
onMounted(async () => {
//
subjectList.value = await MoldRecordSubjectApi.getList()
})
defineExpose({ validate, getData })
</script>

@ -145,6 +145,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="显示顺序" align="center" prop="sort" /> <el-table-column label="显示顺序" align="center" prop="sort" />
<el-table-column label="模具" align="center" prop="moldName" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
@ -170,11 +171,11 @@
</el-button> </el-button>
<el-button <el-button
link link
type="primary" type="success"
@click="openForm('update', scope.row.id)" @click="openRecordForm('create', scope.row.id)"
v-hasPermi="['mes:machine-component:update']" v-hasPermi="['mes:machine-component:update']"
> >
</el-button> </el-button>
<el-button <el-button
link link
@ -198,6 +199,8 @@
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<MachineComponentForm ref="formRef" @success="getList" /> <MachineComponentForm ref="formRef" @success="getList" />
<!-- 表单弹窗添加/修改 -->
<MoldRecordForm ref="recordFormRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -207,6 +210,7 @@ import { handleTree } from '@/utils/tree'
import download from '@/utils/download' import download from '@/utils/download'
import { MachineComponentApi, MachineComponentVO } from '@/api/mes/machine' import { MachineComponentApi, MachineComponentVO } from '@/api/mes/machine'
import MachineComponentForm from './MachineComponentForm.vue' import MachineComponentForm from './MachineComponentForm.vue'
import MoldRecordForm from "@/views/erp/mold/components/MoldRecordForm.vue";
/** 机台 列表 */ /** 机台 列表 */
defineOptions({ name: 'MachineComponent' }) defineOptions({ name: 'MachineComponent' })
@ -312,4 +316,10 @@ const handleTabClick = (tab: TabsPaneContext) => {
queryParams.machineType = tab.paneName queryParams.machineType = tab.paneName
handleQuery() handleQuery()
} }
/** 添加/修改操作 */
const recordFormRef = ref()
const openRecordForm = (type: string, id?: number) => {
recordFormRef.value.open(type, null, null,id)
}
</script> </script>

@ -8,17 +8,44 @@
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="单号" prop="code"> <el-form-item label="单号" prop="code">
<el-input :disabled="true" v-model="formData.flowCode" placeholder="保存自动生成" /> <el-input :disabled="editDisable" v-model="formData.flowCode" placeholder="保存自动生成" />
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="模具型号" prop="brandId"> <el-form-item label="模具型号" prop="brandId">
<el-input v-model="formData.brandId" placeholder="请输入模具型号" /> <el-select
:disabled='editDisable'
v-model="formData.brandId"
clearable
filterable
placeholder="请选择模具型号"
@change="changeBrand"
>
<el-option
v-for="item in brandList"
:key="item.id"
:label="item.code+'/'+item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="模具" prop="moldId"> <el-form-item label="模具" prop="moldId">
<el-input v-model="formData.moldId" placeholder="请输入模具" /> <el-select
:disabled='editDisable'
v-model="formData.moldId"
clearable
filterable
placeholder="请选择模具"
>
<el-option
v-for="item in moldList"
:key="item.id"
:label="item.code+'/'+item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -33,20 +60,44 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-row> <el-row v-if="formData.recordType=='换模'">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="机台" prop="machineId"> <el-form-item label="机台" prop="machineId">
<el-input v-model="formData.machineId" placeholder="请输入机台ID" /> <el-select
v-model="formData.machineId"
clearable
filterable
placeholder="请选择机台"
>
<el-option
v-for="item in machineList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="前模具" prop="oldMoldId"> <el-form-item label="前模具" prop="oldMoldId">
<el-input v-model="formData.oldMoldId" placeholder="请输入前模具ID" /> <el-input v-model="formData.oldMoldId" placeholder="请输入前模具" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="8">
<el-form-item label="负责人" prop="userId">
<el-select v-model="formData.userId" clearable filterable placeholder="请选择负责人">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime"> <el-form-item label="开始时间" prop="startTime">
<el-date-picker <el-date-picker
v-model="formData.startTime" v-model="formData.startTime"
@ -56,7 +107,7 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item label="结束时间" prop="endTime"> <el-form-item label="结束时间" prop="endTime">
<el-date-picker <el-date-picker
v-model="formData.endTime" v-model="formData.endTime"
@ -67,12 +118,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="负责人" prop="userId">
<el-input v-model="formData.userId" placeholder="请输入负责人ID" />
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<Editor v-model="formData.remark" height="200px" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 子表的表单 --> <!-- 子表的表单 -->
@ -91,12 +139,20 @@
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict' import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MoldRecordApi, MoldRecordVO } from '@/api/mes/moldrecord' import { MoldRecordApi, MoldRecordVO } from '@/api/mes/moldrecord'
import MoldRecordSubjectDetailForm from './components/MoldRecordSubjectDetailForm.vue' import MoldRecordSubjectDetailForm from './components/MoldRecordSubjectDetailForm.vue'
import {MoldBrandApi, MoldBrandVO, MoldVO} from "@/api/erp/mold";
import * as UserApi from "@/api/system/user";
import {MachineComponentApi, MachineComponentVO} from "@/api/mes/machine";
/** 模具维保 表单 */ /** 模具维保 表单 */
defineOptions({ name: 'MoldRecordForm' }) defineOptions({ name: 'MoldRecordForm' })
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
const editDisable = ref(false)
const brandList = ref<MoldBrandVO[]>([]) //
const moldList = ref<MoldVO[]>([]) //
const userList = ref<UserApi.UserVO[]>([]) //
const machineList = ref<MachineComponentVO[]>([]) //
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
@ -118,9 +174,7 @@ const formRules = reactive({
brandId: [{ required: true, message: '模具型号ID不能为空', trigger: 'blur' }], brandId: [{ required: true, message: '模具型号ID不能为空', trigger: 'blur' }],
moldId: [{ required: true, message: '模具ID不能为空', trigger: 'blur' }], moldId: [{ required: true, message: '模具ID不能为空', trigger: 'blur' }],
userId: [{ required: true, message: '负责人ID不能为空', trigger: 'blur' }], userId: [{ required: true, message: '负责人ID不能为空', trigger: 'blur' }],
recordType: [{ required: true, message: '单据类型不能为空', trigger: 'blur' }], recordType: [{ required: true, message: '单据类型不能为空', trigger: 'blur' }]
recordStatus: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }]
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
@ -139,10 +193,17 @@ const open = async (type: string, id?: number) => {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await MoldRecordApi.getMoldRecord(id) formData.value = await MoldRecordApi.getMoldRecord(id)
editDisable.value = true
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
} }
//
brandList.value = await MoldBrandApi.getBrandList()
//
userList.value = await UserApi.getSimpleUserList()
//
machineList.value = await MachineComponentApi.getMachineComponentList()
} }
defineExpose({ open }) // open defineExpose({ open }) // open
@ -195,4 +256,14 @@ const resetForm = () => {
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const query = reactive({
brandId: undefined
})
const changeBrand = async(e) => {
query.brandId = formData.value.brandId
//
moldList.value = await MoldBrandApi.getMoldList(query)
}
</script> </script>

@ -12,21 +12,34 @@
<el-table-column label="项目" min-width="150"> <el-table-column label="项目" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subject`" :rules="formRules.subject" class="mb-0px!"> <el-form-item :prop="`${$index}.subject`" :rules="formRules.subject" class="mb-0px!">
<el-input v-model="row.subject" placeholder="请输入项目" /> <el-select
v-model="row.subject"
clearable
filterable
placeholder="请选择项目"
>
<el-option
v-for="item in subjectList"
:key="item.subject"
:label="item.subject"
:value="item.subject"
/>
</el-select>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预期" min-width="400"> <el-table-column label="预期" min-width="400">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.expect`" :rules="formRules.expect" class="mb-0px!"> <el-form-item :prop="`${$index}.expect`" :rules="formRules.expect">
<Editor v-model="row.expect" height="150px" /> <!-- <Editor v-model="row.expect" height="150px" />-->
<el-input type="textarea" v-model="row.expect" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结果" min-width="400"> <el-table-column label="结果" min-width="400">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.result`" :rules="formRules.result" class="mb-0px!"> <el-form-item :prop="`${$index}.result`" :rules="formRules.result">
<Editor v-model="row.result" height="150px" /> <el-input type="textarea" v-model="row.result" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -47,7 +60,9 @@
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -59,6 +74,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict' import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { MoldRecordApi } from '@/api/mes/moldrecord' import { MoldRecordApi } from '@/api/mes/moldrecord'
import {MoldBrandApi, MoldBrandVO} from "@/api/erp/mold";
import {MoldRecordSubjectApi, MoldRecordSubjectVO} from "@/api/mes/moldrecordsubject";
const props = defineProps<{ const props = defineProps<{
recordId: undefined // id recordId: undefined // id
@ -68,7 +85,7 @@ const formData = ref([])
const formRules = reactive({ const formRules = reactive({
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
const subjectList = ref<MoldRecordSubjectVO[]>([]) //
/** 监听主表的关联字段的变化,加载对应的子表数据 */ /** 监听主表的关联字段的变化,加载对应的子表数据 */
watch( watch(
() => props.recordId, () => props.recordId,
@ -118,5 +135,10 @@ const getData = () => {
return formData.value return formData.value
} }
/** 初始化 */
onMounted(async () => {
//
subjectList.value = await MoldRecordSubjectApi.getList()
})
defineExpose({ validate, getData }) defineExpose({ validate, getData })
</script> </script>

@ -17,24 +17,22 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="模具" prop="moldId">
<el-input
v-model="queryParams.moldId"
placeholder="请输入模具"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="负责人" prop="userId"> <el-form-item label="负责人" prop="userId">
<el-input <el-select
v-model="queryParams.userId" v-model="queryParams.userId"
placeholder="请输入负责人"
clearable clearable
@keyup.enter="handleQuery" filterable
placeholder="请选择负责人"
@change="handleQuery"
class="!w-240px" class="!w-240px"
/> ><el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="recordStatus"> <el-form-item label="状态" prop="recordStatus">
<el-select <el-select
@ -137,14 +135,14 @@
label="开始时间" label="开始时间"
align="center" align="center"
prop="startTime" prop="startTime"
:formatter="dateFormatter" :formatter="dateFormatter2"
width="180px" width="180px"
/> />
<el-table-column <el-table-column
label="结束时间" label="结束时间"
align="center" align="center"
prop="endTime" prop="endTime"
:formatter="dateFormatter" :formatter="dateFormatter2"
width="180px" width="180px"
/> />
<el-table-column <el-table-column
@ -190,11 +188,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict' import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime' import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { MoldRecordApi, MoldRecordVO } from '@/api/mes/moldrecord' import { MoldRecordApi, MoldRecordVO } from '@/api/mes/moldrecord'
import MoldRecordForm from './MoldRecordForm.vue' import MoldRecordForm from './MoldRecordForm.vue'
import MoldRecordSubjectDetailList from './components/MoldRecordSubjectDetailList.vue' import MoldRecordSubjectDetailList from './components/MoldRecordSubjectDetailList.vue'
import * as UserApi from "@/api/system/user";
/** 模具维保 列表 */ /** 模具维保 列表 */
defineOptions({ name: 'MoldRecord' }) defineOptions({ name: 'MoldRecord' })
@ -204,6 +203,7 @@ const { t } = useI18n() // 国际化
const loading = ref(true) // const loading = ref(true) //
const list = ref<MoldRecordVO[]>([]) // const list = ref<MoldRecordVO[]>([]) //
const userList = ref<UserApi.UserVO[]>([]) //
const total = ref(0) // const total = ref(0) //
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
@ -281,8 +281,10 @@ const handleExport = async () => {
} }
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(async () => {
getList() await getList()
//
userList.value = await UserApi.getSimpleUserList()
}) })
/** tab 切换 */ /** tab 切换 */
let activeName = '' let activeName = ''

Loading…
Cancel
Save