| | |
| | | :value="user.userId" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="设备选择"> |
| | | <el-select v-model="reportForm.deviceId" |
| | | style="width: 300px" |
| | | placeholder="请选择设备" |
| | | clearable |
| | | filterable |
| | | @change="handleDeviceChange"> |
| | | <el-option v-for="device in deviceOptions" |
| | | :key="device.id" |
| | | :label="device.deviceName" |
| | | :value="device.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="currentDevice" label="设备编号"> |
| | | <el-input v-model="currentDevice.deviceCode" |
| | | disabled |
| | | style="width: 300px" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="currentDevice" label="转数"> |
| | | <el-input v-model="currentDevice.rpm" |
| | | disabled |
| | | style="width: 300px" /> |
| | | </el-form-item> |
| | | <ProductionRecordForm ref="productionRecordFormRef" :list="processParamList"/> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref, nextTick } from "vue"; |
| | | import { onMounted, ref, nextTick, computed } from "vue"; |
| | | import { ElMessageBox } from "element-plus"; |
| | | import dayjs from "dayjs"; |
| | | import { |
| | |
| | | downProductWorkOrder, |
| | | } from "@/api/productionManagement/workOrder.js"; |
| | | import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js"; |
| | | import { getBindDevices } from "@/api/productionManagement/productionProcess.js"; |
| | | import QRCode from "qrcode"; |
| | | import { getCurrentInstance, reactive, toRefs } from "vue"; |
| | | import FilesDia from "./components/filesDia.vue"; |
| | | import { |
| | | listPage as listProcessParamPage, |
| | | } from "@/api/productionManagement/productProcessParameter.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | const ProductionRecordForm = defineAsyncComponent(() => import("./components/ProductionRecordForm.vue")); |
| | | |
| | | const tableColumn = ref([ |
| | | { |
| | |
| | | { |
| | | label: "规格", |
| | | prop: "model", |
| | | }, |
| | | { |
| | | label: "UID码", |
| | | prop: "uidNo", |
| | | }, |
| | | { |
| | | label: "单位", |
| | |
| | | const workOrderFilesRef = ref(null); |
| | | const reportFormRef = ref(null); |
| | | const userOptions = ref([]); |
| | | const deviceOptions = ref([]); |
| | | const reportForm = reactive({ |
| | | planQuantity: 0, |
| | | totalInvestment: 0, |
| | |
| | | productProcessRouteItemId: "", |
| | | userId: "", |
| | | productMainId: null, |
| | | deviceId: null, |
| | | otherData: { |
| | | rows: [] |
| | | }, |
| | | }); |
| | | const productionRecordFormRef = ref(); |
| | | |
| | | const currentDevice = computed(() => { |
| | | if (!reportForm.deviceId) return null; |
| | | return deviceOptions.value.find(device => device.id === reportForm.deviceId) || null; |
| | | }); |
| | | |
| | | // 投入总量验证规则 |
| | |
| | | }); |
| | | }; |
| | | |
| | | const showReportDialog = row => { |
| | | const processParamPage = reactive({ |
| | | current: 1, |
| | | size: 9999, |
| | | total: 0, |
| | | }); |
| | | const getProcessParamList = async (row) => { |
| | | const params = { |
| | | processId: row.processId, |
| | | ...processParamPage, |
| | | }; |
| | | const res = await listProcessParamPage(params) |
| | | return res.data.records |
| | | }; |
| | | |
| | | const processParamList = ref([]) |
| | | const showReportDialog = async row => { |
| | | currentReportRowData.value = row; |
| | | processParamList.value = await getProcessParamList(row) |
| | | reportForm.planQuantity = row.planQuantity; |
| | | reportForm.totalInvestment = row.totalInvestment; |
| | | reportForm.quantity = |
| | |
| | | reportForm.inspectedQuantity = row.inspectedQuantity; |
| | | reportForm.scrapQty = |
| | | row.scrapQty !== undefined && row.scrapQty !== null ? row.scrapQty : null; |
| | | reportForm.deviceId = row.deviceId || null; |
| | | |
| | | // 获取工序绑定设备列表 |
| | | getDeviceList(row.processId); |
| | | |
| | | nextTick(() => { |
| | | reportFormRef.value?.clearValidate(); |
| | | }); |
| | |
| | | workOrderFilesRef.value?.openDialog(row); |
| | | }; |
| | | |
| | | const handleReport = () => { |
| | | const handleReport = async () => { |
| | | try { |
| | | const data = await productionRecordFormRef.value.submitData(); |
| | | console.log("生产记录表单数据:", data); |
| | | reportForm.otherData.rows = data || []; |
| | | } catch (error) { |
| | | console.error("获取生产记录表单数据失败", error); |
| | | return; |
| | | } |
| | | |
| | | reportFormRef.value?.validate(valid => { |
| | | if (!valid) { |
| | | return false; |
| | |
| | | ...reportForm, |
| | | quantity: quantity, |
| | | scrapQty: scrapQty, |
| | | otherData: JSON.stringify(reportForm.otherData) |
| | | }; |
| | | |
| | | // console.log(submitData); |
| | | addProductMain(submitData).then(res => { |
| | | if (res.code === 200) { |
| | | proxy.$modal.msgSuccess("报工成功"); |
| | |
| | | confirmButtonText: "确定", |
| | | }); |
| | | } |
| | | }).catch(err => { |
| | | console.error("报工失败", err); |
| | | ElMessageBox.alert("报工失败", "提示", { |
| | | confirmButtonText: "确定", |
| | | }); |
| | | }); |
| | | }); |
| | | }; |
| | |
| | | }); |
| | | }; |
| | | |
| | | // 获取设备列表 |
| | | const getDeviceList = (processId) => { |
| | | if (!processId) { |
| | | deviceOptions.value = []; |
| | | return; |
| | | } |
| | | getBindDevices(processId) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | deviceOptions.value = res.data || []; |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | console.error("获取设备列表失败", err); |
| | | deviceOptions.value = []; |
| | | }); |
| | | }; |
| | | |
| | | // 用户选择变化时更新 userName |
| | | const handleUserChange = userId => { |
| | | if (userId) { |
| | |
| | | } |
| | | }; |
| | | |
| | | // 设备选择变化时更新 deviceId |
| | | const handleDeviceChange = deviceId => { |
| | | reportForm.deviceId = deviceId; |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | | getUserList(); |