From 62b4b7af6fb8dea23cf14b0709156871a3c144af Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 23 六月 2026 14:41:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_新疆_大罗素马铃薯new' into dev_新疆_大罗素马铃薯new
---
src/views/qualityManagement/processInspection/components/inspectionFormDia.vue | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 254 insertions(+), 0 deletions(-)
diff --git a/src/views/qualityManagement/processInspection/components/inspectionFormDia.vue b/src/views/qualityManagement/processInspection/components/inspectionFormDia.vue
new file mode 100644
index 0000000..10f3671
--- /dev/null
+++ b/src/views/qualityManagement/processInspection/components/inspectionFormDia.vue
@@ -0,0 +1,254 @@
+<template>
+ <div>
+ <el-dialog
+ v-model="dialogFormVisible"
+ title="濉啓妫�楠岃褰�"
+ width="70%"
+ @close="closeDia"
+ >
+ <div v-if="!isViewMode" style="margin-bottom: 10px;text-align: right">
+ <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+ </div>
+ <PIMTable
+ rowKey="id"
+ :column="tableColumn"
+ :tableData="tableData"
+ :tableLoading="tableLoading"
+ :isSelection="true"
+ :isShowPagination="false"
+ @selection-change="handleSelectionChange"
+ height="400"
+ >
+ <template #judgeTypeSlot="{ row }">
+ <el-tag v-if="row.judgeType === '鈮�'" type="success">鈮�</el-tag>
+ <el-tag v-else-if="row.judgeType === '鈮�'" type="warning">鈮�</el-tag>
+ <el-tag v-else-if="row.judgeType === '鑼冨洿'" type="info">鑼冨洿</el-tag>
+ <el-tag v-else>鏂囧瓧</el-tag>
+ </template>
+ <template #isRequiredSlot="{ row }">
+ <el-tag v-if="row.isRequired === 1" type="danger">鏄�</el-tag>
+ <el-tag v-else type="info">鍚�</el-tag>
+ </template>
+ <template #testValueSlot="{ row }">
+ <el-input v-model="row.testValue" clearable :disabled="isViewMode" @input="handleTestValueChange(row)" />
+ </template>
+ <template #isQualifiedSlot="{ row }">
+ <template v-if="row.judgeType !== '鏂囧瓧鎻忚堪'">
+ <el-tag v-if="row.isQualified === 1" type="success">鍚堟牸</el-tag>
+ <el-tag v-else-if="row.isQualified === 0" type="danger">涓嶅悎鏍�</el-tag>
+ <span v-else>-</span>
+ </template>
+ <template v-else>
+ <el-select v-model="row.isQualified" placeholder="璇烽�夋嫨" size="small" :disabled="isViewMode" @change="handleTextResultChange(row)">
+ <el-option :value="1" label="鍚堟牸" />
+ <el-option :value="0" label="涓嶅悎鏍�" />
+ </el-select>
+ </template>
+ </template>
+ </PIMTable>
+
+ <div style="margin-top: 16px;">
+ <el-form label-width="120px">
+ <el-form-item label="鑷姩鍒ゆ柇缁撴灉">
+ <template v-if="autoJudgeResult">
+ <el-tag v-if="autoJudgeResult === '鍚堟牸'" type="success" size="large">鍚堟牸</el-tag>
+ <el-tag v-else-if="autoJudgeResult === '閮ㄥ垎鍚堟牸'" type="warning" size="large">閮ㄥ垎鍚堟牸</el-tag>
+ <el-tag v-else type="danger" size="large">涓嶅悎鏍�</el-tag>
+ <span v-if="autoJudgeResult === '涓嶅悎鏍�'" style="margin-left: 10px; color: #909399;">
+ 锛堝繀瑕佸垽鏂弬鏁版湁涓嶅悎鏍奸」锛屼笉鍙墜鍔ㄤ慨鏀癸級
+ </span>
+ <span v-if="autoJudgeResult === '閮ㄥ垎鍚堟牸'" style="margin-left: 10px; color: #909399;">
+ 锛堝繀瑕佸垽鏂弬鏁板潎鍚堟牸锛岄潪蹇呰鍙傛暟鏈変笉鍚堟牸椤癸紝鍙墜鍔ㄩ�夋嫨鏈�缁堢粨鏋滐級
+ </span>
+ </template>
+ <template v-else>
+ <el-tag type="info" size="large">闇�鎵嬪姩鍒ゆ柇</el-tag>
+ <span style="margin-left: 10px; color: #909399;">
+ 锛堟墍鏈夊弬鏁板潎涓烘枃瀛楁弿杩扮被鍨嬶紝璇锋墜鍔ㄩ�夋嫨锛�
+ </span>
+ </template>
+ </el-form-item>
+ <el-form-item label="鏈�缁堝垽瀹�">
+ <el-radio-group v-model="checkResult" :disabled="isViewMode || autoJudgeResult === '涓嶅悎鏍�'">
+ <el-radio label="鍚堟牸">鍚堟牸</el-radio>
+ <el-radio label="涓嶅悎鏍�">涓嶅悎鏍�</el-radio>
+ <el-radio label="閮ㄥ垎鍚堟牸">閮ㄥ垎鍚堟牸</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ </div>
+
+ <template #footer>
+ <div class="dialog-footer">
+ <template v-if="!isViewMode">
+ <el-button type="primary" @click="submitForm">纭</el-button>
+ <el-button @click="closeDia">鍙栨秷</el-button>
+ </template>
+ <el-button v-else @click="closeDia">鍏抽棴</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script setup>
+import { ref, computed, getCurrentInstance } from "vue";
+import {
+ qualityInspectParamDel,
+ qualityInspectParamInfo,
+ qualityInspectParamUpdate
+} from "@/api/qualityManagement/qualityInspectParam.js";
+import { ElMessageBox } from "element-plus";
+const { proxy } = getCurrentInstance()
+const emit = defineEmits(['close'])
+
+const dialogFormVisible = ref(false);
+const operationType = ref('')
+const currentId = ref('')
+const selectedRows = ref([]);
+const autoJudgeResult = ref(null)
+const checkResult = ref('')
+const isViewMode = computed(() => operationType.value === 'view')
+
+const tableColumn = ref([
+ { label: "鎸囨爣", prop: "parameterItem" },
+ { label: "鍗曚綅", prop: "unit" },
+ { label: "鍘傚鏍囧噯鍊�", prop: "standardValue" },
+ { label: "涓嬮檺鍊�", prop: "minValue" },
+ { label: "涓婇檺鍊�", prop: "maxValue" },
+ { label: "鍐呮帶鍊�", prop: "controlValue" },
+ { label: "鍒ゆ柇绫诲瀷", prop: "judgeType", dataType: 'slot', slot: 'judgeTypeSlot' },
+ { label: "蹇呰鍒ゆ柇", prop: "isRequired", dataType: 'slot', slot: 'isRequiredSlot' },
+ { label: "妫�楠屽��", prop: "testValue", dataType: 'slot', slot: 'testValueSlot' },
+ { label: "鏄惁鍚堟牸", prop: "isQualified", dataType: 'slot', slot: 'isQualifiedSlot' },
+]);
+const tableData = ref([]);
+const tableLoading = ref(false);
+
+const openDialog = (type, row) => {
+ operationType.value = type;
+ dialogFormVisible.value = true;
+ autoJudgeResult.value = null
+ checkResult.value = ''
+ if (operationType.value === 'edit' || operationType.value === 'view') {
+ currentId.value = row.id;
+ getList()
+ }
+}
+const getList = () => {
+ qualityInspectParamInfo(currentId.value).then(res => {
+ tableData.value = res.data;
+ })
+}
+const handleSelectionChange = (selection) => {
+ selectedRows.value = selection;
+};
+
+const handleTestValueChange = (row) => {
+ if (isViewMode.value) return;
+ if (!row.testValue || !row.judgeType || row.judgeType === '鏂囧瓧鎻忚堪') {
+ return;
+ }
+ const testVal = parseFloat(row.testValue);
+ if (isNaN(testVal)) return;
+
+ let qualified = false;
+ if (row.judgeType === '鈮�') {
+ const stdVal = parseFloat(row.standardValue);
+ if (isNaN(stdVal)) return;
+ qualified = testVal >= stdVal;
+ } else if (row.judgeType === '鈮�') {
+ const stdVal = parseFloat(row.standardValue);
+ if (isNaN(stdVal)) return;
+ qualified = testVal <= stdVal;
+ } else if (row.judgeType === '鑼冨洿') {
+ const minVal = parseFloat(row.minValue);
+ const maxVal = parseFloat(row.maxValue);
+ if (isNaN(minVal) || isNaN(maxVal)) return;
+ qualified = testVal >= minVal && testVal <= maxVal;
+ } else {
+ return;
+ }
+ row.isQualified = qualified ? 1 : 0;
+ performAutoJudgeAll();
+};
+
+const handleTextResultChange = () => {
+ performAutoJudgeAll()
+};
+
+const performAutoJudgeAll = () => {
+ if (!tableData.value.length) return;
+ const allTextDesc = tableData.value.every(item => item.judgeType === '鏂囧瓧鎻忚堪');
+ if (allTextDesc) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ const requiredParams = tableData.value.filter(item => item.isRequired === 1);
+ if (requiredParams.length === 0) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ const hasUnqualified = requiredParams.some(item => item.isQualified === 0);
+ const allJudged = requiredParams.every(item => item.isQualified === 1 || item.isQualified === 0);
+ if (!allJudged) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ if (hasUnqualified) {
+ autoJudgeResult.value = '涓嶅悎鏍�';
+ checkResult.value = '涓嶅悎鏍�';
+ return;
+ }
+ const nonRequiredUnqualified = tableData.value.filter(item => item.isRequired !== 1 && item.isQualified === 0);
+ if (nonRequiredUnqualified.length > 0) {
+ autoJudgeResult.value = '閮ㄥ垎鍚堟牸';
+ checkResult.value = '閮ㄥ垎鍚堟牸';
+ } else {
+ autoJudgeResult.value = '鍚堟牸';
+ checkResult.value = '鍚堟牸';
+ }
+};
+
+const submitForm = () => {
+ performAutoJudgeAll();
+ qualityInspectParamUpdate(tableData.value).then(res => {
+ proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+ closeDia();
+ })
+}
+const closeDia = () => {
+ dialogFormVisible.value = false;
+ emit('close')
+};
+const handleDelete = () => {
+ let ids = [];
+ if (selectedRows.value.length > 0) {
+ ids = selectedRows.value.map((item) => item.id);
+ } else {
+ proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+ return;
+ }
+ ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+ confirmButtonText: "纭",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ qualityInspectParamDel(ids).then((res) => {
+ proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ getList();
+ });
+ })
+ .catch(() => {
+ proxy.$modal.msg("宸插彇娑�");
+ });
+};
+defineExpose({
+ openDialog,
+});
+</script>
+
+<style scoped>
+
+</style>
--
Gitblit v1.9.3