| | |
| | | :value="user.userId" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div v-if="params.length > 0" |
| | | class="param-grid" |
| | | v-loading="paramLoading"> |
| | | <el-form-item v-for="param in params" |
| | | :key="param.id" |
| | | :label="param.paramName" |
| | | :label-width="120" |
| | | class="param-item"> |
| | | <template v-if="param.paramType == '1'"> |
| | | <div class="param-input-group"> |
| | | <el-input-number v-model="reportForm.paramGroups[param.id]" |
| | | controls-position="right" |
| | | :key="param.id" |
| | | style="width: 250px" |
| | | class="param-input" /> |
| | | <span v-if="param.unit && param.unit != '/'" |
| | | class="param-unit">{{ param.unit }}</span> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="param.paramType == '2'"> |
| | | <div class="param-input-group"> |
| | | <el-input v-model="reportForm.paramGroups[param.id]" |
| | | :key="param.id" |
| | | style="width: 250px" |
| | | class="param-input" /> |
| | | <span v-if="param.unit && param.unit != '/'" |
| | | class="param-unit">{{ param.unit }}</span> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="param.paramType == '3'"> |
| | | <div class="param-input-group"> |
| | | <el-select v-model="reportForm.paramGroups[param.id]" |
| | | placeholder="请选择" |
| | | :key="param.id" |
| | | class="param-select" |
| | | style="width: 250px"> |
| | | <el-option v-for="option in dictOptions[param.paramFormat] || []" |
| | | :key="option.dictLabel" |
| | | :label="option.dictLabel" |
| | | :value="option.dictLabel" /> |
| | | </el-select> |
| | | <span v-if="param.unit && param.unit != '/'" |
| | | class="param-unit">{{ param.unit }}</span> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="param.paramType == '4'"> |
| | | <div class="param-input-group"> |
| | | <el-date-picker :value-format="param.paramFormat.replace('yyyy', 'YYYY').replace('dd', 'DD')" |
| | | :format="param.paramFormat.replace('yyyy', 'YYYY').replace('dd', 'DD')" |
| | | :key="param.id" |
| | | :type="param.paramFormat=='yyyy-MM-dd'?'date':'datetime'" |
| | | v-model="reportForm.paramGroups[param.id]" |
| | | class="param-input" |
| | | style="width: 250px" /> |
| | | <span v-if="param.unit && param.unit != '/'" |
| | | class="param-unit">{{ param.unit }}</span> |
| | | </div> |
| | | </template> |
| | | <template v-else> |
| | | <div class="param-input-group"> |
| | | <el-input v-model="reportForm.paramGroups[param.id]" |
| | | :key="param.id" |
| | | class="param-input" /> |
| | | <span v-if="param.unit && param.unit != '/'" |
| | | class="param-unit">{{ param.unit }}</span> |
| | | </div> |
| | | </template> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | |
| | | addProductMain, |
| | | downProductWorkOrder, |
| | | } from "@/api/productionManagement/workOrder.js"; |
| | | import { findProcessParamListOrder } from "@/api/productionManagement/productProcessRoute.js"; |
| | | import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js"; |
| | | import { getDicts } from "@/api/system/dict/data"; |
| | | import QRCode from "qrcode"; |
| | | import { getCurrentInstance, reactive, toRefs } from "vue"; |
| | | import FilesDia from "./components/filesDia.vue"; |
| | |
| | | productProcessRouteItemId: "", |
| | | userId: "", |
| | | productMainId: null, |
| | | productionOrderRoutingOperationId: "", |
| | | productionOrderId: "", |
| | | paramGroups: {}, |
| | | }); |
| | | |
| | | const params = ref({}); |
| | | const dictOptions = ref({}); |
| | | const paramLoading = ref(false); |
| | | |
| | | // 本次生产数量验证规则 |
| | | const validateQuantity = (rule, value, callback) => { |
| | |
| | | reportForm.productMainId = row.productMainId; |
| | | reportForm.scrapQty = |
| | | row.scrapQty !== undefined && row.scrapQty !== null ? row.scrapQty : null; |
| | | reportForm.productionOrderRoutingOperationId = |
| | | row.productionOrderRoutingOperationId; |
| | | reportForm.productionOrderId = row.productionOrderId; |
| | | nextTick(() => { |
| | | reportFormRef.value?.clearValidate(); |
| | | if (row.productionOrderRoutingOperationId && row.productionOrderId) { |
| | | loadParams(row.productionOrderRoutingOperationId, row.productionOrderId); |
| | | } |
| | | }); |
| | | // 获取当前登录用户信息,设置为默认选中 |
| | | getUserProfile() |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | |
| | | return; |
| | | } |
| | | |
| | | const params = { |
| | | const productionOperationParamList = params.value.map(param => ({ |
| | | ...param, |
| | | inputValue: reportForm.paramGroups[param.id] ?? "", |
| | | })); |
| | | |
| | | const submitParams = { |
| | | quantity: quantity, |
| | | scrapQty: isNaN(scrapQty) ? 0 : scrapQty, |
| | | userId: reportForm.userId, |
| | | userName: reportForm.userName, |
| | | workOrderId: reportForm.workOrderId, |
| | | productionOperationTaskId: reportForm.workOrderId, |
| | | productProcessRouteItemId: reportForm.productProcessRouteItemId, |
| | | reportWork: reportForm.reportWork, |
| | | productMainId: reportForm.productMainId, |
| | | productionOrderRoutingOperationId: |
| | | reportForm.productionOrderRoutingOperationId, |
| | | productionOrderId: reportForm.productionOrderId, |
| | | productionOperationParamList: productionOperationParamList, |
| | | }; |
| | | |
| | | addProductMain(params) |
| | | addProductMain(submitParams) |
| | | .then(res => { |
| | | proxy.$modal.msgSuccess("报工成功"); |
| | | reportDialogVisible.value = false; |
| | |
| | | const handleUserChange = val => { |
| | | const user = userOptions.value.find(item => item.userId === val); |
| | | reportForm.userName = user ? user.nickName : ""; |
| | | }; |
| | | |
| | | const getDictOptions = async dictType => { |
| | | if (!dictType) return []; |
| | | if (dictOptions.value[dictType]) return dictOptions.value[dictType]; |
| | | try { |
| | | const res = await getDicts(dictType); |
| | | if (res.code === 200) { |
| | | dictOptions.value[dictType] = res.data; |
| | | return res.data; |
| | | } |
| | | return []; |
| | | } catch (error) { |
| | | console.error("获取字典数据失败:", error); |
| | | return []; |
| | | } |
| | | }; |
| | | |
| | | const loadParams = (productionOrderRoutingOperationId, productionOrderId) => { |
| | | paramLoading.value = true; |
| | | findProcessParamListOrder({ |
| | | productionOrderRoutingOperationId, |
| | | productionOrderId, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | const paramList = res.data || []; |
| | | params.value = paramList; |
| | | reportForm.paramGroups = {}; |
| | | paramList.forEach(param => { |
| | | if (!reportForm.paramGroups[param.id]) { |
| | | reportForm.paramGroups[param.id] = ""; |
| | | } |
| | | if (param.paramType == "3" && param.paramFormat) { |
| | | getDictOptions(param.paramFormat); |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | console.error("获取工序参数失败:", err); |
| | | }) |
| | | .finally(() => { |
| | | paramLoading.value = false; |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | |
| | | text-align: center; |
| | | margin-top: 20px; |
| | | } |
| | | .param-grid { |
| | | margin-top: 10px; |
| | | border-top: 1px solid #ebe9f3; |
| | | padding-top: 10px; |
| | | } |
| | | .param-item { |
| | | margin-bottom: 12px; |
| | | } |
| | | .param-input-group { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | } |
| | | .param-input { |
| | | flex: 1; |
| | | } |
| | | .param-select { |
| | | flex: 1; |
| | | } |
| | | .param-unit { |
| | | color: #909399; |
| | | font-size: 12px; |
| | | min-width: 30px; |
| | | } |
| | | </style> |
| | | |
| | | <style lang="scss"> |