| src/views/productionManagement/productionReporting/components/Detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/productionManagement/workOrder/components/ProductionRecordForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/productionManagement/workOrder/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/productionManagement/productionReporting/components/Detail.vue
@@ -1,5 +1,5 @@ <script setup lang="ts"> import {computed} from "vue"; import {computed, onMounted} from "vue"; defineOptions({ name: "ReportingDetail" @@ -23,6 +23,17 @@ set: (value: boolean) => emits("update:isShow", value), }); const otherData = ref([]) const init = () => { if (props.row.otherData !== null && props.row.otherData !== '') { otherData.value = JSON.parse(props.row.otherData); } }; onMounted(() => { init(); }) </script> <template> @@ -40,6 +51,12 @@ <el-descriptions-item label="æ¥åºæ°é">{{ row.quantity || '-' }}</el-descriptions-item> <el-descriptions-item label="åä½">{{ row.scrapQty || '-' }}</el-descriptions-item> <el-descriptions-item label="å建æ¶é´">{{ row.createTime || '-' }}</el-descriptions-item> <el-descriptions-item v-for="item in otherData" :label="`${item.parameterItem}`" > {{ item.value || '-' }} </el-descriptions-item> </el-descriptions> <template #footer> <span class="dialog-footer"> src/views/productionManagement/workOrder/components/ProductionRecordForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,146 @@ <script setup lang="ts"> import {computed, reactive, ref, watch} from "vue"; import {getDeviceLedger} from "@/api/equipmentManagement/ledger"; defineOptions({ name: "ProductionRecordForm" }); const props = defineProps({ list: { type: Array, default() { return []; } } }); const formRef = ref(); const formData = reactive({ list: [] as any[], }); const fieldLabel = (item: any) => { if (!item.unit || item.unit === "/") { return item.parameterItem; } return `${item.parameterItem}ï¼${item.unit}ï¼`; }; const getType = (item: any) => item.type || "ææ¬æ ¼å¼"; const rules = computed(() => { const result: Record<string, any[]> = {}; formData.list.forEach((item, index) => { if (String(item.isRequired) === "1") { result[`list.${index}.value`] = [{required: true, message: `请è¾å ¥${item.parameterItem}`, trigger: "blur"}]; } }); return result; }); const deviceOptions = ref([]); const loadDeviceName = async () => { const {data} = await getDeviceLedger(); deviceOptions.value = data; }; const initData = () => { formData.list = props.list || []; formData.list.forEach(item => { if (item.value === undefined) { item.value = null; } }); loadDeviceName() }; const submitData = async () => { const valid = await formRef.value.validate().catch(() => false) if (valid) { return formData.list } else { return null } } watch( () => props.list, () => { initData(); }, {immediate: true, deep: true} ); defineExpose({ submitData }) </script> <template> <el-form ref="formRef" :model="formData" :rules="rules" label-width="120px"> <el-form-item v-for="(item, index) in formData.list" :key="item.id" :label="fieldLabel(item)" :prop="`list.${index}.value`" > <el-input-number v-if="getType(item) === 'æ°å¼æ ¼å¼'" v-model="item.value" :controls="false" style="width: 100%" placeholder="请è¾å ¥" /> <el-date-picker v-else-if="getType(item) === 'æ¶é´æ ¼å¼'" v-model="item.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" placeholder="è¯·éæ©" style="width: 100%" /> <el-date-picker v-else-if="getType(item) === 'æ¥ææ ¼å¼'" v-model="item.value" type="date" value-format="YYYY-MM-DD" format="YYYY-MM-DD" placeholder="è¯·éæ©" style="width: 100%" /> <el-select v-else-if="getType(item) === 'æ¯/å¦éæ¡'" v-model="item.value" placeholder="è¯·éæ©" clearable style="width: 100%" > <el-option label="æ¯" value="æ¯"/> <el-option label="å¦" value="å¦"/> </el-select> <el-select v-else-if="getType(item) === 'æºå°éæ©'" v-model="item.value" placeholder="è¯·éæ©" clearable style="width: 100%" > <el-option v-for="(item, index) in deviceOptions" :key="index" :label="item.deviceName" :value="item.deviceName" ></el-option> </el-select> <el-input v-else v-model="item.value" placeholder="请è¾å ¥" clearable /> </el-form-item> </el-form> </template> src/views/productionManagement/workOrder/index.vue
@@ -211,6 +211,7 @@ :value="user.userId"/> </el-select> </el-form-item> <ProductionRecordForm ref="productionRecordFormRef" :list="processParamList"/> </el-form> <template #footer> <span class="dialog-footer"> @@ -250,12 +251,16 @@ 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 {priority_type} = proxy.useDict("priority_type"); const CopperPrintingForm = defineAsyncComponent(() => import("./components/CopperPrintingForm.vue")); const VoltageSortingForm = defineAsyncComponent(() => import("./components/VoltageSortingForm.vue")); const ProductionRecordForm = defineAsyncComponent(() => import("./components/ProductionRecordForm.vue")); const tableColumn = ref([ { label: "ä¼å 级", @@ -401,7 +406,9 @@ productProcessRouteItemId: "", userId: "", productMainId: null, otherData: {} }); const productionRecordFormRef = ref(); // æ¬æ¬¡ç产æ°ééªè¯è§å const validateQuantity = (rule, value, callback) => { @@ -631,7 +638,22 @@ }); }; 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; if (row.processName === 'å°é' || row.processName === 'å°é¶') { copperPrintingFormVisible.value = true @@ -641,6 +663,7 @@ voltageSortingFormVisible.value = true return; } processParamList.value = await getProcessParamList(row) reportForm.planQuantity = row.planQuantity; reportForm.quantity = row.quantity !== undefined && row.quantity !== null ? row.quantity : null; reportForm.productProcessRouteItemId = row.productProcessRouteItemId; @@ -670,7 +693,9 @@ workOrderFilesRef.value?.openDialog(row); }; const handleReport = () => { const handleReport = async () => { const data = await productionRecordFormRef.value.submitData() reportForm.otherData = JSON.stringify(data || {}); reportFormRef.value?.validate((valid) => { if (!valid) { return false;