| | |
| | | <div class="card-body"> |
| | | <!-- <div class="process-name">{{ process.name }}</div> --> |
| | | <div class="process-desc">{{ process.remark || '暂无描述' }}</div> |
| | | <div class="process-device">关联设备: {{ deviceOptions.find(item => item.id === Number(process.deviceLedgerId))?.deviceName|| '未关联' }}</div> |
| | | <div class="process-device">关联设备: {{ (deviceOptions.find(item => item.id === Number(process.deviceLedgerId))?.deviceName) || '未关联' }}</div> |
| | | <div class="process-device">标准数量: {{ process.standardQuantity || 0 }}</div> |
| | | <div class="process-device"></div> |
| | | </div> |
| | | <div class="card-footer"> |
| | | <div class="status-tag"> |
| | |
| | | </el-tag> |
| | | <el-tag v-if="process.type !== null && process.type !== undefined" |
| | | size="small" |
| | | :type="process.type == 1 ? 'primary' : 'success'" |
| | | type="primary" |
| | | style="margin-left: 8px"> |
| | | {{ process.type == 0 ? '计时' : '计件' }} |
| | | 计件 |
| | | </el-tag> |
| | | </div> |
| | | <span class="param-count">工资定额: ¥{{ process.salaryQuota || 0 }}</span> |
| | | <span class="param-count"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <el-input v-model="processForm.name" |
| | | placeholder="请输入工序名称" /> |
| | | </el-form-item> |
| | | <el-form-item label="工资定额" |
| | | prop="salaryQuota"> |
| | | <el-input v-model="processForm.salaryQuota" |
| | | <el-form-item label="标准数量" |
| | | prop="standardQuantity"> |
| | | <el-input v-model="processForm.standardQuantity" |
| | | type="number" |
| | | :step="0.001" /> |
| | | :step="0.001" |
| | | placeholder="请输入工序标准数量" /> |
| | | </el-form-item> |
| | | <el-form-item label="小提琴系数" |
| | | prop="violinFactor"> |
| | | <el-input v-model="processForm.violinFactor" |
| | | type="number" |
| | | :step="0.001" |
| | | placeholder="请输入小提琴系数" /> |
| | | </el-form-item> |
| | | <el-form-item label="大提琴系数" |
| | | prop="violaFactor"> |
| | | <el-input v-model="processForm.violaFactor" |
| | | type="number" |
| | | :step="0.001" |
| | | placeholder="请输入大提琴系数" /> |
| | | </el-form-item> |
| | | <el-form-item label="贝斯系数" |
| | | prop="bassFactor"> |
| | | <el-input v-model="processForm.bassFactor" |
| | | type="number" |
| | | :step="0.001" |
| | | placeholder="请输入贝斯系数" /> |
| | | </el-form-item> |
| | | <el-form-item label="是否质检" |
| | | prop="isQuality"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="计费类型" |
| | | prop="type"> |
| | | <el-radio-group v-model="processForm.type"> |
| | | <el-radio :label="0">计时</el-radio> |
| | | <el-radio-group v-model="processForm.type" disabled> |
| | | <el-radio :label="1">计件</el-radio> |
| | | </el-radio-group> |
| | | <div style="margin-top: 6px; color: #909399; font-size: 12px;"> |
| | | 工序仅支持计件 |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="关联设备" |
| | | prop="deviceLedgerId"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="标准值"> |
| | | <el-input v-model="selectedParam.standardValue" |
| | | @input="val => onStandardValueInput(val, selectedParam)" |
| | | placeholder="请输入默认值" /> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <el-form-item label="标准值" |
| | | prop="standardValue"> |
| | | <el-input v-model="editParamForm.standardValue" |
| | | @input="val => onStandardValueInput(val, editParamForm)" |
| | | placeholder="请输入标准值" /> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | id: null, |
| | | no: "", |
| | | name: "", |
| | | salaryQuota: null, |
| | | standardQuantity: null, |
| | | violinFactor: null, |
| | | violaFactor: null, |
| | | bassFactor: null, |
| | | isQuality: false, |
| | | isProduction: false, |
| | | remark: "", |
| | | deviceLedgerId: null, |
| | | type: 0, |
| | | type: 1, |
| | | }); |
| | | const processRules = { |
| | | no: [{ required: true, message: "请输入工序编码", trigger: "blur" }], |
| | | name: [{ required: true, message: "请输入工序名称", trigger: "blur" }], |
| | | salaryQuota: [ |
| | | standardQuantity: [ |
| | | { |
| | | required: false, |
| | | message: "请输入工资定额", |
| | | message: "请输入标准数量", |
| | | trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value == null || value === "") { |
| | | callback(); |
| | | return; |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("工资定额必须是非负数字")); |
| | | callback(new Error("标准数量必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | violinFactor: [ |
| | | { |
| | | required: false, |
| | | message: "请输入小提琴系数", |
| | | trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value == null || value === "") { |
| | | callback(); |
| | | return; |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("小提琴系数必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | violaFactor: [ |
| | | { |
| | | required: false, |
| | | message: "请输入大提琴系数", |
| | | trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value == null || value === "") { |
| | | callback(); |
| | | return; |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("大提琴系数必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | bassFactor: [ |
| | | { |
| | | required: false, |
| | | message: "请输入贝斯系数", |
| | | trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value == null || value === "") { |
| | | callback(); |
| | | return; |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("贝斯系数必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | |
| | | deviceLedgerId: [ |
| | | { required: false, message: "请选择设备", trigger: "change" }, |
| | | ], |
| | | type: [{ required: false, message: "请选择计费类型", trigger: "change" }], |
| | | type: [ |
| | | { |
| | | required: true, |
| | | message: "工序仅支持计件", |
| | | trigger: "change", |
| | | validator: (rule, value, callback) => { |
| | | if (value !== 1) { |
| | | callback(new Error("工序仅支持计件")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | }; |
| | | |
| | | // 参数对话框 |
| | |
| | | technologyParamId: null, |
| | | paramName: "", |
| | | standardValue: null, |
| | | paramType: null, |
| | | }); |
| | | |
| | | const onStandardValueInput = (val, target) => { |
| | | const data = target.value || target; |
| | | const type = data.paramType; |
| | | if (type === 1) { |
| | | // 数值格式:不能输入中文或英文字符 |
| | | data.standardValue = val.replace(/[a-zA-Z\u4e00-\u9fa5]/g, ""); |
| | | } |
| | | }; |
| | | |
| | | const editParamRules = { |
| | | standardValue: [ |
| | | { |
| | |
| | | if (value === null || value === undefined || value === "") { |
| | | callback(new Error("请输入标准值")); |
| | | } else { |
| | | const type = editParamForm.paramType; |
| | | if (type === 1 && value) { |
| | | if (/[a-zA-Z\u4e00-\u9fa5]/.test(value)) { |
| | | return callback(new Error("数值格式不能包含中英文字符")); |
| | | } |
| | | } |
| | | callback(); |
| | | } |
| | | }, |
| | |
| | | processForm.id = null; |
| | | processForm.no = ""; |
| | | processForm.name = ""; |
| | | processForm.salaryQuota = null; |
| | | processForm.standardQuantity = null; |
| | | processForm.violinFactor = null; |
| | | processForm.violaFactor = null; |
| | | processForm.bassFactor = null; |
| | | processForm.isQuality = false; |
| | | processForm.isProduction = false; |
| | | processForm.remark = ""; |
| | | processForm.deviceLedgerId = null; |
| | | processForm.type = 0; |
| | | processForm.type = 1; |
| | | processDialogVisible.value = true; |
| | | }; |
| | | |
| | |
| | | processForm.id = process.id; |
| | | processForm.no = process.no; |
| | | processForm.name = process.name; |
| | | processForm.salaryQuota = process.salaryQuota; |
| | | processForm.standardQuantity = process.standardQuantity; |
| | | processForm.violinFactor = process.violinFactor; |
| | | processForm.violaFactor = process.violaFactor; |
| | | processForm.bassFactor = process.bassFactor; |
| | | processForm.isQuality = !!process.isQuality; |
| | | processForm.isProduction = !!process.isProduction; |
| | | processForm.remark = process.remark || ""; |
| | | processForm.deviceLedgerId = Number(process.deviceLedgerId); |
| | | // 如果设备 ID 为 0 或者在设备列表中找不到,则回显为空(null) |
| | | const deviceId = Number(process.deviceLedgerId); |
| | | const hasDevice = deviceOptions.value.some(item => item.id === deviceId); |
| | | processForm.deviceLedgerId = deviceId && hasDevice ? deviceId : null; |
| | | processForm.type = process.type; |
| | | processDialogVisible.value = true; |
| | | }; |
| | |
| | | editParamForm.technologyParamId = row.technologyParamId; |
| | | editParamForm.paramName = row.paramName; |
| | | editParamForm.standardValue = row.standardValue; |
| | | editParamForm.paramType = row.paramType; |
| | | editParamDialogVisible.value = true; |
| | | }; |
| | | |