| | |
| | | :class="{ active: selectedProcess?.id === process.id }" |
| | | @click="selectProcess(process)"> |
| | | <div class="card-header"> |
| | | <div class="process-name">{{ process.name }} <span class="process-code">{{ process.no }}</span></div> |
| | | <div class="process-name"> |
| | | <span v-if="process.color" |
| | | class="process-color-dot" |
| | | :style="{ backgroundColor: process.color }"></span> |
| | | {{ process.name }} <span class="process-code">{{ process.no }}</span> |
| | | </div> |
| | | <div class="card-actions"> |
| | | <el-button link |
| | | type="primary" |
| | |
| | | <el-radio :label="0">计时</el-radio> |
| | | <el-radio :label="1">计件</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="工序颜色" |
| | | prop="color"> |
| | | <el-color-picker v-model="processForm.color" |
| | | :predefine="predefineColors" /> |
| | | <span class="color-tip">用于生产模块工序标识颜色渲染</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联设备" |
| | | prop="deviceLedgerId"> |
| | |
| | | remark: "", |
| | | deviceLedgerId: null, |
| | | type: 0, |
| | | color: "", |
| | | }); |
| | | const predefineColors = [ |
| | | "#409eff", |
| | | "#67c23a", |
| | | "#e6a23c", |
| | | "#f56c6c", |
| | | "#909399", |
| | | "#9254de", |
| | | "#13c2c2", |
| | | "#fa8c16", |
| | | ]; |
| | | const processRules = { |
| | | no: [{ required: true, message: "请输入工序编码", trigger: "blur" }], |
| | | name: [{ required: true, message: "请输入工序名称", trigger: "blur" }], |
| | |
| | | processForm.remark = ""; |
| | | processForm.deviceLedgerId = null; |
| | | processForm.type = 0; |
| | | processForm.color = ""; |
| | | processDialogVisible.value = true; |
| | | }; |
| | | |
| | |
| | | const hasDevice = deviceOptions.value.some(item => item.id === deviceId); |
| | | processForm.deviceLedgerId = deviceId && hasDevice ? deviceId : null; |
| | | processForm.type = process.type; |
| | | processForm.color = process.color || ""; |
| | | processDialogVisible.value = true; |
| | | }; |
| | | |
| | |
| | | const handleProcessSubmit = () => { |
| | | processFormRef.value.validate(valid => { |
| | | if (valid) { |
| | | // 颜色清空后为 null,后端 updateById 会忽略 null 字段,统一转为空串提交 |
| | | const submitData = { ...processForm, color: processForm.color || "" }; |
| | | if (processForm.id) { |
| | | update(processForm) |
| | | update(submitData) |
| | | .then(() => { |
| | | ElMessage.success("编辑成功"); |
| | | processDialogVisible.value = false; |
| | |
| | | ElMessage.error("编辑失败"); |
| | | }); |
| | | } else { |
| | | add(processForm) |
| | | add(submitData) |
| | | .then(() => { |
| | | ElMessage.success("新增成功"); |
| | | processDialogVisible.value = false; |
| | |
| | | font-family: "Courier New", monospace; |
| | | } |
| | | |
| | | .process-color-dot { |
| | | display: inline-block; |
| | | width: 10px; |
| | | height: 10px; |
| | | border-radius: 50%; |
| | | margin-right: 6px; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .card-actions { |
| | | display: flex; |
| | | gap: 4px; |
| | |
| | | justify-content: center; |
| | | } |
| | | |
| | | .color-tip { |
| | | margin-left: 10px; |
| | | font-size: 12px; |
| | | color: #909399; |
| | | } |
| | | |
| | | // 表格样式 |
| | | :deep(.el-table) { |
| | | border: none; |