对质量管理检查组件进行重构,将“检测结果”替换为“合格率”,并实施通过率计算及显示逻辑。更新表单字段,以反映数据处理方式及通过率视觉呈现方面的变化。
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测结果:" prop="checkResult"> |
| | | <el-select v-model="form.checkResult" :disabled="isViewMode"> |
| | | <el-option label="合格" value="合格" /> |
| | | <el-option label="不合格" value="不合格" /> |
| | | <el-option label="部分合格" value="部分合格" /> |
| | | </el-select> |
| | | <el-form-item label="合格率:"> |
| | | <el-tag :type="passRateTagType">{{ passRateDisplayText }}</el-tag> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | qualifiedQuantity: "", |
| | | unqualifiedQuantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | }, |
| | | rules: { |
| | | checkTime: [{ required: true, message: "请输入", trigger: "blur" }], |
| | |
| | | qualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | unqualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | checkCompany: [{ required: false, message: "请输入", trigger: "blur" }], |
| | | checkResult: [{ required: true, message: "请输入", trigger: "change" }], |
| | | }, |
| | | }); |
| | | const { form, rules } = toRefs(data); |
| | | // 是否为查看模式 |
| | | const isViewMode = computed(() => operationType.value === 'view'); |
| | | |
| | | const passRateValue = computed(() => { |
| | | const fromApi = form.value.passRate; |
| | | if (fromApi != null && fromApi !== '') { |
| | | const n = Number(fromApi); |
| | | if (!Number.isNaN(n)) return n; |
| | | } |
| | | const quantity = Number(form.value.quantity); |
| | | const qualified = Number(form.value.qualifiedQuantity); |
| | | if (!quantity || Number.isNaN(quantity)) return null; |
| | | const qualifiedNum = Number.isNaN(qualified) ? 0 : qualified; |
| | | return (qualifiedNum / quantity) * 100; |
| | | }); |
| | | |
| | | const passRateDisplayText = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }); |
| | | |
| | | const passRateTagType = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }); |
| | | // 编辑时:productMainId 或 purchaseLedgerId 任一有值则工序、数量置灰 |
| | | const processQuantityDisabled = computed(() => { |
| | | const v = form.value || {}; |
| | |
| | | width: 120 |
| | | }, |
| | | { |
| | | label: "检测结果", |
| | | prop: "checkResult", |
| | | label: "合格率", |
| | | prop: "passRate", |
| | | width: 100, |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == '不合格') { |
| | | return "danger"; |
| | | } else if (params == '合格') { |
| | | return "success"; |
| | | } else { |
| | | return 'danger'; |
| | | } |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }, |
| | | }, |
| | | { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测结果:" |
| | | prop="checkResult"> |
| | | <el-select v-model="form.checkResult" :disabled="isViewMode"> |
| | | <el-option label="合格" |
| | | value="合格" /> |
| | | <el-option label="不合格" |
| | | value="不合格" /> |
| | | <el-option label="部分合格" |
| | | value="部分合格" /> |
| | | </el-select> |
| | | <el-form-item label="合格率:"> |
| | | <el-tag :type="passRateTagType">{{ passRateDisplayText }}</el-tag> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | qualifiedQuantity: "", |
| | | unqualifiedQuantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | }, |
| | | rules: { |
| | | checkTime: [{ required: true, message: "请输入", trigger: "blur" }], |
| | |
| | | qualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | unqualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | checkCompany: [{ required: false, message: "请输入", trigger: "blur" }], |
| | | checkResult: [{ required: true, message: "请输入", trigger: "change" }], |
| | | }, |
| | | }); |
| | | const userList = ref([]); |
| | | const { form, rules } = toRefs(data); |
| | | // 是否为查看模式 |
| | | const isViewMode = computed(() => operationType.value === 'view'); |
| | | |
| | | const passRateValue = computed(() => { |
| | | const fromApi = form.value.passRate; |
| | | if (fromApi != null && fromApi !== '') { |
| | | const n = Number(fromApi); |
| | | if (!Number.isNaN(n)) return n; |
| | | } |
| | | const quantity = Number(form.value.quantity); |
| | | const qualified = Number(form.value.qualifiedQuantity); |
| | | if (!quantity || Number.isNaN(quantity)) return null; |
| | | const qualifiedNum = Number.isNaN(qualified) ? 0 : qualified; |
| | | return (qualifiedNum / quantity) * 100; |
| | | }); |
| | | |
| | | const passRateDisplayText = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }); |
| | | |
| | | const passRateTagType = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }); |
| | | // 编辑时:productMainId 或 purchaseLedgerId 任一有值则工序、数量置灰 |
| | | const processQuantityDisabled = computed(() => { |
| | | const v = form.value || {}; |
| | |
| | | unit: "", |
| | | quantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | }; |
| | | testStandardOptions.value = []; |
| | | tableData.value = []; |
| | |
| | | width: 120 |
| | | }, |
| | | { |
| | | label: "检测结果", |
| | | prop: "checkResult", |
| | | label: "合格率", |
| | | prop: "passRate", |
| | | width: 100, |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == '不合格') { |
| | | return "danger"; |
| | | } else if (params == '合格') { |
| | | return "success"; |
| | | } else { |
| | | return 'danger'; |
| | | } |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }, |
| | | }, |
| | | { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测结果:" prop="checkResult"> |
| | | <el-select v-model="form.checkResult" :disabled="isViewMode"> |
| | | <el-option label="合格" value="合格"/> |
| | | <el-option label="不合格" value="不合格"/> |
| | | <el-option label="部分合格" value="部分合格"/> |
| | | </el-select> |
| | | <el-form-item label="合格率:"> |
| | | <el-tag :type="passRateTagType">{{ passRateDisplayText }}</el-tag> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | unit: "", |
| | | quantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | }, |
| | | rules: { |
| | | checkTime: [{required: true, message: "请输入", trigger: "blur"},], |
| | |
| | | qualifiedQuantity: [{required: true, message: "请输入", trigger: "blur"}], |
| | | unqualifiedQuantity: [{required: true, message: "请输入", trigger: "blur"}], |
| | | checkCompany: [{required: false, message: "请输入", trigger: "blur"}], |
| | | checkResult: [{required: true, message: "请选择检测结果", trigger: "change"}], |
| | | }, |
| | | }); |
| | | const tableColumn = ref([ |
| | |
| | | // 是否为查看模式 |
| | | const isViewMode = computed(() => operationType.value === 'view'); |
| | | |
| | | const passRateValue = computed(() => { |
| | | const fromApi = form.value.passRate; |
| | | if (fromApi != null && fromApi !== '') { |
| | | const n = Number(fromApi); |
| | | if (!Number.isNaN(n)) return n; |
| | | } |
| | | const quantity = Number(form.value.quantity); |
| | | const qualified = Number(form.value.qualifiedQuantity); |
| | | if (!quantity || Number.isNaN(quantity)) return null; |
| | | const qualifiedNum = Number.isNaN(qualified) ? 0 : qualified; |
| | | return (qualifiedNum / quantity) * 100; |
| | | }); |
| | | |
| | | const passRateDisplayText = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }); |
| | | |
| | | const passRateTagType = computed(() => { |
| | | const params = passRateValue.value; |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }); |
| | | |
| | | // 编辑时:productMainId 或 purchaseLedgerId 任一有值则供应商、数量置灰 |
| | | const supplierQuantityDisabled = computed(() => { |
| | | const v = form.value || {}; |
| | |
| | | unit: "", |
| | | quantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | } |
| | | testStandardOptions.value = []; |
| | | tableData.value = []; |
| | |
| | | width: 120 |
| | | }, |
| | | { |
| | | label: "检测结果", |
| | | prop: "checkResult", |
| | | label: "合格率", |
| | | prop: "passRate", |
| | | width: 100, |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == null || params === '') return '—'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return '—'; |
| | | return `${n.toFixed(2)}%`; |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === '不合格') { |
| | | return "danger"; |
| | | } else if (params === '合格') { |
| | | return "success"; |
| | | } else { |
| | | return 'danger'; |
| | | } |
| | | if (params == null || params === '') return 'info'; |
| | | const n = Number(params); |
| | | if (Number.isNaN(n)) return 'info'; |
| | | if (n >= 100) return 'success'; |
| | | if (n >= 90) return 'warning'; |
| | | return 'danger'; |
| | | }, |
| | | }, |
| | | { |