| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup lang="ts"> |
| | | import {computed, onMounted, reactive, ref} from "vue"; |
| | | import dayjs from "dayjs"; |
| | | import {userListNoPageByTenantId} from "@/api/system/user.js"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {addProductMain} from "@/api/productionManagement/workOrder.js"; |
| | | |
| | | defineOptions({ |
| | | name: "VoltageSortingForm" |
| | | }); |
| | | |
| | | const props = defineProps({ |
| | | isShow: { |
| | | type: Boolean, |
| | | required: true |
| | | }, |
| | | isEdit: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | row: { |
| | | type: Object, |
| | | default: () => ({}), |
| | | } |
| | | }); |
| | | |
| | | const emits = defineEmits(["update:isShow", "refreshData"]); |
| | | |
| | | const visible = computed({ |
| | | get: () => props.isShow, |
| | | set: (value: boolean) => emits("update:isShow", value), |
| | | }); |
| | | |
| | | const formData = reactive({ |
| | | productProcessRouteItemId: undefined, |
| | | workOrderId: undefined, |
| | | planQuantity: undefined, |
| | | reportWork: undefined, |
| | | productMainId: undefined, |
| | | quantity: undefined, // äº§åºæ°é |
| | | userId: undefined, // ä½ä¸å |
| | | userName: undefined, // ä½ä¸å |
| | | scrapQty: undefined, // ä¸è¯æ°é |
| | | otherData: { |
| | | engineException: undefined,// ææ å·¥ç¨å¼å¸¸ |
| | | specificIssue: undefined,// å
·ä½ä¸è¯ |
| | | dryingTemperature: '', // ç干温度 |
| | | scrapingDate: dayjs().format('YYYY-MM-DD HH:mm:ss'), // å®éæ¥æ |
| | | machineNumber: undefined, // æºå°å· |
| | | receiveQuantity: undefined, // æ¥æ¶æ°é |
| | | voltageSpecs: [], // çµåè§æ ¼, |
| | | voltage: [], // çµå |
| | | quantity: [], // æ°é |
| | | comprehensiveHit: undefined, // 综åå½ä¸æ¬ |
| | | userId: undefined, // ä½ä¸å |
| | | userName: undefined, // ä½ä¸å |
| | | exceptionDealResult: undefined, // å¼å¸¸å¤çç»æ |
| | | } |
| | | }) |
| | | |
| | | const userOptions = ref([]); |
| | | const getUserList = () => { |
| | | userListNoPageByTenantId() |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | userOptions.value = res.data || []; |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | console.error("è·åç¨æ·å表失败", err); |
| | | }); |
| | | }; |
| | | // ç¨æ·éæ©ååæ¶æ´æ° userName |
| | | const handleUserChange = (value) => { |
| | | if (value) { |
| | | formData.userName = userOptions.value.find(user => user.userId === value).userName; |
| | | } |
| | | }; |
| | | const handleReport = () => { |
| | | if (!formData.userId) { |
| | | ElMessage.error('è¯·éæ©ä½ä¸å') |
| | | return; |
| | | } |
| | | if (!formData.quantity || formData.quantity <= 0) { |
| | | ElMessage.error('请è¾å
¥äº§åºæ°é') |
| | | return; |
| | | } |
| | | |
| | | const otherData = JSON.stringify(formData.otherData); |
| | | const submitData = { |
| | | ...formData, |
| | | otherData: otherData |
| | | }; |
| | | |
| | | addProductMain(submitData).then(res => { |
| | | if (res.code === 200) { |
| | | ElMessage({ |
| | | message: 'æ¥å·¥æå', |
| | | type: 'success', |
| | | }) |
| | | emits("refreshData") |
| | | visible.value = false; |
| | | } else { |
| | | ElMessage.error('æ¥å·¥å¤±è´¥') |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const initData = () => { |
| | | if (!props.isEdit) { |
| | | formData.otherData = JSON.parse(props.row.otherData || '{}'); |
| | | formData.quantity = props.row.quantity; |
| | | } else { |
| | | const row = props.row; |
| | | formData.planQuantity = row.planQuantity |
| | | formData.productProcessRouteItemId = row.productProcessRouteItemId |
| | | formData.workOrderId = row.id |
| | | formData.reportWork = row.reportWork |
| | | formData.productMainId = row.productMainId |
| | | } |
| | | } |
| | | |
| | | const displayValue = (value: any) => { |
| | | return value === undefined || value === null || value === "" ? "-" : value; |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | getUserList(); |
| | | initData() |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <el-dialog v-model="visible" |
| | | :title="isEdit? 'çµåå鿥工' : '详æ
'" |
| | | width="90%"> |
| | | <el-form :model="formData"> |
| | | <table class="report-table"> |
| | | <tbody> |
| | | <tr> |
| | | <td class="tip" colspan="12">çµååéæ
åµ</td> |
| | | <td class="label" colspan="2">å®éæ¥æ</td> |
| | | <td colspan="2"> |
| | | <el-date-picker |
| | | v-if="props.isEdit" |
| | | v-model="formData.otherData.scrapingDate" |
| | | type="datetime" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | placeholder="è¯·éæ©" |
| | | style="width: 100%" |
| | | /> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.scrapingDate) }}</span> |
| | | </td> |
| | | <td class="label" colspan="2">æºå°å·</td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.machineNumber" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.machineNumber) }}</span> |
| | | </td> |
| | | <td class="label" colspan="3">ä½ä¸å</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="label" colspan="2">æ¡£ä½</td> |
| | | <td class="label" colspan="2">䏿¡£</td> |
| | | <td class="label" colspan="2">äºæ¡£</td> |
| | | <td class="label" colspan="2">䏿¡£</td> |
| | | <td class="label" colspan="2">åæ¡£</td> |
| | | <td class="label" colspan="2">äºæ¡£</td> |
| | | <td class="label" colspan="2">æ¥æ¶æ°é</td> |
| | | <td colspan="6"> |
| | | <el-input-number v-if="props.isEdit" v-model="formData.otherData.receiveQuantity" controls-position="right" style="width: 100%;" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.receiveQuantity) }}</span> |
| | | </td> |
| | | <td rowspan="6" colspan="3"> |
| | | <el-select v-model="formData.userId" |
| | | v-if="props.isEdit" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©ä½ä¸å" |
| | | clearable |
| | | filterable |
| | | @change="handleUserChange"> |
| | | <el-option v-for="user in userOptions" |
| | | :key="user.userId" |
| | | :label="user.userName" |
| | | :value="user.userId"/> |
| | | </el-select> |
| | | <span v-else class="view-value">{{ displayValue(formData.userName || formData.userId) }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="label" colspan="2">çµåè§æ ¼</td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltageSpecs[0]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltageSpecs[0]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltageSpecs[1]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltageSpecs[1]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltageSpecs[2]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltageSpecs[2]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltageSpecs[3]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltageSpecs[3]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltageSpecs[4]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltageSpecs[4]) }}</span> |
| | | </td> |
| | | <td class="label" colspan="2">äº§åºæ°é</td> |
| | | <td colspan="6"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.quantity" style="width: 100%;" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.quantity) }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="label" colspan="2">çµå</td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltage[0]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltage[0]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltage[1]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltage[1]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltage[2]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltage[2]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltage[3]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltage[3]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.voltage[4]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.voltage[4]) }}</span> |
| | | </td> |
| | | <td class="label" colspan="2">ä¸è¯æ°é</td> |
| | | <td colspan="6"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.scrapQty" style="width: 100%;" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.scrapQty) }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="label" colspan="2">æ°é</td> |
| | | <td colspan="2"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.otherData.quantity[0]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.quantity[0]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.otherData.quantity[1]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.quantity[1]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.otherData.quantity[2]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.quantity[2]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.otherData.quantity[3]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.quantity[3]) }}</span> |
| | | </td> |
| | | <td colspan="2"> |
| | | <el-input-number v-if="props.isEdit" controls-position="right" v-model="formData.otherData.quantity[4]" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.quantity[4]) }}</span> |
| | | </td> |
| | | <td class="label" colspan="2">综åå½ä¸æ¬</td> |
| | | <td colspan="6"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.comprehensiveHit" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.comprehensiveHit) }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="label" colspan="2">ææ å·¥ç¨å¼å¸¸</td> |
| | | <td colspan="10"> |
| | | <div v-if="props.isEdit" style="display: flex; align-items: center; width: 100%;"> |
| | | <el-radio-group v-model="formData.otherData.engineException" style="display: flex; margin-right: 20px;"> |
| | | <el-radio value="æ ">æ </el-radio> |
| | | <el-radio value="æ">æ</el-radio> |
| | | </el-radio-group> |
| | | <div v-if="formData.otherData.engineException === 'æ'" style="display: flex; align-items: center; flex: 1;"> |
| | | <div style="width: 100px;">å
·ä½ä¸è¯ï¼</div> |
| | | <el-input v-model="formData.otherData.specificIssue" placeholder="请è¾å
¥" style="width: 100%;"/> |
| | | </div> |
| | | </div> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.specificIssue) }}</span> |
| | | </td> |
| | | <td class="label" colspan="2">å¼å¸¸å¤çç»æ</td> |
| | | <td colspan="6"> |
| | | <el-input v-if="props.isEdit" v-model="formData.otherData.exceptionDealResult" placeholder="请è¾å
¥"/> |
| | | <span v-else class="view-value">{{ displayValue(formData.otherData.exceptionDealResult) }}</span> |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button v-if="props.isEdit" type="primary" |
| | | @click="handleReport">ç¡®å®</el-button> |
| | | <el-button @click="visible = false">{{ props.isEdit ? "åæ¶" : "å
³é" }}</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .report-table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | table-layout: fixed; |
| | | font-size: 13px; |
| | | } |
| | | |
| | | .report-table td { |
| | | border: 1px solid #dcdfe6; |
| | | padding: 6px; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .report-table .label { |
| | | width: 90px; |
| | | background: #f5f7fa; |
| | | text-align: center; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .report-table .tip { |
| | | text-align: center; |
| | | font-weight: 500; |
| | | line-height: 1.4; |
| | | background: #fafafa; |
| | | } |
| | | |
| | | .view-value { |
| | | display: inline-block; |
| | | min-height: 32px; |
| | | line-height: 32px; |
| | | } |
| | | </style> |