|
|
|
|
@ -8,15 +8,32 @@
|
|
|
|
|
v-loading="formLoading"
|
|
|
|
|
>
|
|
|
|
|
<el-form-item label="操作类型" prop="operateType">
|
|
|
|
|
<el-select v-model="formData.operateType" placeholder="请选择操作类型">
|
|
|
|
|
<el-option label="请选择字典生成" value="" />
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-radio-group v-model="formData.operateType">
|
|
|
|
|
<el-radio :label="1">上模</el-radio>
|
|
|
|
|
<el-radio :label="2">下模</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="关联模具id" prop="moldId">
|
|
|
|
|
<el-input v-model="formData.moldId" placeholder="请输入关联模具id" />
|
|
|
|
|
<el-form-item label="设备" prop="deviceId">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.deviceId" filterable clearable :loading="deviceLoading"
|
|
|
|
|
placeholder="请选择设备" class="!w-full" @change="deviceChange(formData.deviceId)">
|
|
|
|
|
<el-option v-for="opt in deviceOptions" :key="String(opt.value)" :label="opt.label" :value="opt.value" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="关联设备id" prop="deviceId">
|
|
|
|
|
<el-input v-model="formData.deviceId" placeholder="请输入关联设备id" />
|
|
|
|
|
<el-form-item label="模具" prop="moldId" v-if = "formData.operateType == '1'">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.moldId"
|
|
|
|
|
clearable
|
|
|
|
|
filterable
|
|
|
|
|
placeholder="请选择模具"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in moldList"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
:label="item.name"
|
|
|
|
|
:value="item.id"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
|
|
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
|
|
|
|
@ -30,12 +47,19 @@
|
|
|
|
|
</template>
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { MoldOperateApi, MoldOperateVO } from '@/api/mes/moldoperate'
|
|
|
|
|
import { MoldBrandApi, MoldVO } from '@/api/erp/mold'
|
|
|
|
|
import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger'
|
|
|
|
|
|
|
|
|
|
/** 模具上下模 表单 */
|
|
|
|
|
defineOptions({ name: 'MoldOperateForm' })
|
|
|
|
|
|
|
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
|
const moldList = ref<MoldVO[]>([]) // 模具列表
|
|
|
|
|
|
|
|
|
|
const deviceLoading = ref(false)
|
|
|
|
|
const deviceOptions = ref<{ label: string; value: number; raw?: DeviceLedgerVO }[]>([])
|
|
|
|
|
const deviceOptionsLoaded = ref(false)
|
|
|
|
|
|
|
|
|
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
|
|
|
|
const dialogTitle = ref('') // 弹窗的标题
|
|
|
|
|
@ -49,7 +73,9 @@ const formData = ref({
|
|
|
|
|
remark: undefined,
|
|
|
|
|
})
|
|
|
|
|
const formRules = reactive({
|
|
|
|
|
moldId: [{ required: true, message: '关联模具id不能为空', trigger: 'blur' }],
|
|
|
|
|
moldId: [{ required: true, message: '关联模具不能为空', trigger: 'blur' }],
|
|
|
|
|
operateType: [{ required: true, message: '操作类型不能为空', trigger: 'blur' }],
|
|
|
|
|
deviceId: [{ required: true, message: '关联设备不能为空', trigger: 'blur' }],
|
|
|
|
|
})
|
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
|
|
|
|
|
|
@ -59,6 +85,8 @@ const open = async (type: string, id?: number) => {
|
|
|
|
|
dialogTitle.value = t('action.' + type)
|
|
|
|
|
formType.value = type
|
|
|
|
|
resetForm()
|
|
|
|
|
moldList.value = await MoldBrandApi.getMoldAllList()
|
|
|
|
|
await ensureDeviceOptionsLoaded()
|
|
|
|
|
// 修改时,设置数据
|
|
|
|
|
if (id) {
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
@ -73,28 +101,109 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
|
|
|
|
|
|
|
|
/** 提交表单 */
|
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
|
// const submitForm = async () => {
|
|
|
|
|
// // 校验表单
|
|
|
|
|
// await formRef.value.validate()
|
|
|
|
|
// // 检验
|
|
|
|
|
// if (formData.value.operateType === '1') {
|
|
|
|
|
// const data = await MoldOperateApi.getMoldOperateMold(formData.value.deviceId)
|
|
|
|
|
// if (data === true) {
|
|
|
|
|
// message.alert('请先将该设备上的模具换下!')
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// // 提交请求
|
|
|
|
|
// formLoading.value = true
|
|
|
|
|
// try {
|
|
|
|
|
// const data = formData.value as unknown as MoldOperateVO
|
|
|
|
|
// if (formType.value === 'create') {
|
|
|
|
|
// await MoldOperateApi.createMoldOperate(data)
|
|
|
|
|
// message.success(t('common.createSuccess'))
|
|
|
|
|
// } else {
|
|
|
|
|
// await MoldOperateApi.updateMoldOperate(data)
|
|
|
|
|
// message.success(t('common.updateSuccess'))
|
|
|
|
|
// }
|
|
|
|
|
// dialogVisible.value = false
|
|
|
|
|
// // 发送操作成功的事件
|
|
|
|
|
// emit('success')
|
|
|
|
|
// } finally {
|
|
|
|
|
// formLoading.value = false
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
const submitForm = async () => {
|
|
|
|
|
// 校验表单
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
// 提交请求
|
|
|
|
|
// 立即开始 loading
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const data = formData.value as unknown as MoldOperateVO
|
|
|
|
|
// 1. 表单校验
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
|
|
|
|
|
// 2. 业务条件检查
|
|
|
|
|
if (formData.value.operateType == '1') {
|
|
|
|
|
const data = await MoldOperateApi.getMoldOperateMold(formData.value.deviceId)
|
|
|
|
|
if (data === true) {
|
|
|
|
|
message.alert('请先将该设备上的模具换下!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const data = await MoldOperateApi.getMoldOperateMold(formData.value.deviceId)
|
|
|
|
|
if (data === false) {
|
|
|
|
|
message.alert('该设备没有安装模具!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 3. 提交数据
|
|
|
|
|
const submitData = formData.value as unknown as MoldOperateVO
|
|
|
|
|
if (formType.value === 'create') {
|
|
|
|
|
await MoldOperateApi.createMoldOperate(data)
|
|
|
|
|
await MoldOperateApi.createMoldOperate(submitData)
|
|
|
|
|
message.success(t('common.createSuccess'))
|
|
|
|
|
} else {
|
|
|
|
|
await MoldOperateApi.updateMoldOperate(data)
|
|
|
|
|
await MoldOperateApi.updateMoldOperate(submitData)
|
|
|
|
|
message.success(t('common.updateSuccess'))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 4. 成功处理
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
|
// 发送操作成功的事件
|
|
|
|
|
emit('success')
|
|
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
// 确保 loading 状态被清除
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const ensureDeviceOptionsLoaded = async () => {
|
|
|
|
|
if (deviceOptionsLoaded.value) return
|
|
|
|
|
deviceLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const data = await DeviceLedgerApi.getDeviceLedgerPage({})
|
|
|
|
|
const rows = (data?.list ?? []) as DeviceLedgerVO[]
|
|
|
|
|
deviceOptions.value = rows
|
|
|
|
|
.filter((r) => typeof r?.id === 'number')
|
|
|
|
|
.map((r) => ({ label: `${r.deviceCode ?? ''} ${r.deviceName ?? ''}`.trim(), value: r.id, raw: r }))
|
|
|
|
|
deviceOptionsLoaded.value = true
|
|
|
|
|
} finally {
|
|
|
|
|
deviceLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设备更改
|
|
|
|
|
const deviceChange = async (deviceId:number) => {
|
|
|
|
|
const data = await MoldOperateApi.getMoldOperateMold(deviceId)
|
|
|
|
|
if (formData.value.operateType == '1') {
|
|
|
|
|
if (data === true) {
|
|
|
|
|
message.alert('请先将该设备上的模具换下!')
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (data === false) {
|
|
|
|
|
message.alert('该设备没有安装模具!')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 重置表单 */
|
|
|
|
|
const resetForm = () => {
|
|
|
|
|
formData.value = {
|
|
|
|
|
|