From 4ae5681e4a92c1cc98e811135098c71958c48a02 Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期三, 30 四月 2025 10:04:51 +0800 Subject: [PATCH] 可靠性计划优化检验项 --- src/views/business/reliabilityPlan/index.vue | 201 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 138 insertions(+), 63 deletions(-) diff --git a/src/views/business/reliabilityPlan/index.vue b/src/views/business/reliabilityPlan/index.vue index 0c08a30..edc0a74 100644 --- a/src/views/business/reliabilityPlan/index.vue +++ b/src/views/business/reliabilityPlan/index.vue @@ -49,19 +49,21 @@ <el-cascader v-model="proPlanForm.productName" :options="itemParameterData.cascaderField.sample.tree" :props="{ value: 'name', label: 'name', checkStrictly: false, multiple: false, emitPath: false }" :show-all-levels="false" clearable filterable placeholder="璇烽�夋嫨浜у搧鍚嶇О" size="small" style="width: 100%;" - :disabled="operationType === 'review'" @change="handleProductNameChange"> + :disabled="operationType === 'review' || operationType === 'submit'" @change="handleProductNameChange"> </el-cascader> </el-form-item> <el-form-item label="浜у搧鍨嬪彿" prop="productType"> <el-select v-model="proPlanForm.productType" clearable filterable placeholder="璇烽�夋嫨浜у搧鍨嬪彿" - :disabled="operationType === 'review' || !proPlanForm.productName" style="width: 100%;"> + :disabled="operationType === 'review' || !proPlanForm.productName || operationType === 'submit'" + style="width: 100%;"> <el-option v-for="item in typeOption" :key="item.id" :label="item.modelName" :value="item.modelName"> </el-option> </el-select> </el-form-item> <el-form-item label="闆朵欢鍙�" prop="partNo"> <el-select v-model="proPlanForm.partNo" placeholder="璇烽�夋嫨" clearable filterable - :disabled="operationType === 'review' || !proPlanForm.productName" style="width: 100%;"> + :disabled="operationType === 'review' || !proPlanForm.productName || operationType === 'submit'" + style="width: 100%;"> <el-option v-for="item in partNoOption" :key="item.id" :label="item.partNo" :value="item.partNo"> </el-option> </el-select> @@ -76,25 +78,35 @@ </el-form> <div slot="footer" class="foot"> <el-button v-if="operationType !== 'review'" @click="closeProDia">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'review'" type="primary" :loading="submitProLoading" @click="submitProForm">淇� + <el-button v-if="operationType !== 'review' && operationType !== 'submit'" type="primary" + :loading="submitProLoading" @click="submitProForm(0)">淇� 瀛�</el-button> + <el-button v-if="operationType == 'submit'" type="primary" :loading="submitProLoading" + @click="submitProForm(1)">鎻� 浜�</el-button> <el-button v-if="operationType === 'review'" :loading="submitProLoading" - @click="submitProForm(0)">涓嶉�氳繃</el-button> + @click="submitProForm(3)">涓嶉�氳繃</el-button> <el-button v-if="operationType === 'review'" type="primary" :loading="submitProLoading" - @click="submitProForm(1)">閫氳繃</el-button> + @click="submitProForm(2)">閫氳繃</el-button> + <el-button v-if="operationType === 'review'" type="primary" :loading="submitMatLoading" + @click="submitProForm(0)">鍙� 鏇�</el-button> </div> </el-dialog> <el-dialog :visible.sync="materialDia" title="鍘熻緟鏉愯鍒�"> <el-form :model="materialForm" ref="materialForm" :rules="materialRules" label-width="90px" size="small"> <el-form-item label="鍘熻緟鏉愬悕绉�" prop="materialName"> <el-cascader v-model="materialForm.materialName" :options="itemParameterData.cascaderField.sample.tree" - :props="{ value: 'name', label: 'name', checkStrictly: false, multiple: false }" :show-all-levels="false" - clearable filterable placeholder="璇烽�夋嫨鍘熻緟鏉愬悕绉�" size="small" style="width: 100%;" - :disabled="operationType === 'review'"></el-cascader> + :props="{ value: 'name', label: 'name', checkStrictly: false, multiple: false, emitPath: false }" + :show-all-levels="false" clearable filterable placeholder="璇烽�夋嫨鍘熻緟鏉愬悕绉�" size="small" style="width: 100%;" + :disabled="operationType === 'review' || operationType === 'submit'" @change="handleMaterialNameChange"> + </el-cascader> </el-form-item> <el-form-item label="闆朵欢鍙�" prop="partNo"> - <el-input v-model="materialForm.partNo" placeholder="璇峰~鍐欓浂浠跺彿" - :disabled="operationType === 'review'"></el-input> + <el-select v-model="materialForm.partNo" placeholder="璇烽�夋嫨" clearable filterable + :disabled="operationType === 'review' || !materialForm.materialName || operationType === 'submit'" + style="width: 100%;"> + <el-option v-for="item in materialPartNoOption" :key="item.id" :label="item.partNo" :value="item.partNo"> + </el-option> + </el-select> </el-form-item> <!-- <el-form-item label="瀹℃牳浜�" prop="reviewerId"> <el-select v-model="proPlanForm.reviewerId" clearable filterable size="small" style="width: 50%;" @@ -105,13 +117,18 @@ </el-form-item> --> </el-form> <div slot="footer" class="foot"> - <el-button v-if="operationType !== 'review'" @click="closeMaterialRulesDia">鍙� 娑�</el-button> - <el-button v-if="operationType !== 'review'" type="primary" :loading="submitMatLoading" - @click="submitMaterialRulesForm">淇� 瀛�</el-button> + <el-button v-if="operationType !== 'review'" @click="closeMaterialRulesDia">鍙� + 娑�</el-button> + <el-button v-if="operationType !== 'review' && operationType !== 'submit'" type="primary" + :loading="submitMatLoading" @click="submitMaterialRulesForm(0)">淇� 瀛�</el-button> + <el-button v-if="operationType == 'submit'" type="primary" :loading="submitProLoading" + @click="submitMaterialRulesForm(1)">鎻� 浜�</el-button> <el-button v-if="operationType === 'review'" :loading="submitMatLoading" - @click="submitMaterialRulesForm(0)">涓嶉�氳繃</el-button> + @click="submitMaterialRulesForm(3)">涓嶉�氳繃</el-button> <el-button v-if="operationType === 'review'" type="primary" :loading="submitMatLoading" - @click="submitMaterialRulesForm(1)">閫氳繃</el-button> + @click="submitMaterialRulesForm(2)">閫� 杩�</el-button> + <el-button v-if="operationType === 'review'" type="primary" :loading="submitMatLoading" + @click="submitMaterialRulesForm(0)">鍙� 鏇�</el-button> </div> </el-dialog> </div> @@ -146,6 +163,7 @@ tableData: [], typeOption: [], partNoOption: [], // 娣诲姞浜у搧鍨嬪彿閫夐」鏁版嵁 + materialPartNoOption:[], tableLoading: false, itemParameterData: { cascaderField: { @@ -163,21 +181,25 @@ label: '瀹℃牳鐘舵��', prop: 'state', formatData: (params) => { - if (params == 1) { + if (params == 0 || !params) { + return '寰呮彁浜�' + } else if (params == 1) { + return '寰呭鏍�' + } else if (params == 2) { return '閫氳繃' - } else if (params == 0) { + } else if (params == 3) { return '涓嶉�氳繃' - } else { - return null } }, formatType: (params) => { - if (params == 1) { - return 'success' - } else if (params == 0) { + if (params == 0 || !params) { + return 'warning' + } else if (params == 1) { return 'danger' - } else { - return null + } else if (params == 2) { + return 'success' + } else if (params == 3) { + return 'danger' } } }, @@ -193,7 +215,7 @@ this.openAddDia('edit', row); }, disabled: (row) => { - return row.state == 1 + return row.state > 0 }, }, { @@ -216,7 +238,7 @@ this.openAddDia('submit', row); }, disabled: (row) => { - return row.state == 1 + return row.state > 0 }, }, { @@ -233,7 +255,7 @@ this.handleDelete(row); }, disabled: (row) => { - return row.state == 1 + return row.state > 0 }, }, ] @@ -256,21 +278,25 @@ label: '瀹℃牳鐘舵��', prop: 'state', formatData: (params) => { - if (params == 1) { + if (params == 0 || !params) { + return '寰呮彁浜�' + } else if (params == 1) { + return '寰呭鏍�' + } else if (params == 2) { return '閫氳繃' - } else if (params == 0) { + } else if (params == 3) { return '涓嶉�氳繃' - } else { - return null } }, formatType: (params) => { - if (params == 1) { - return 'success' - } else if (params == 0) { + if (params == 0 || !params) { + return 'warning' + } else if (params == 1) { return 'danger' - } else { - return null + } else if (params == 2) { + return 'success' + } else if (params == 3) { + return 'danger' } } }, @@ -284,7 +310,10 @@ type: 'text', clickFun: (row) => { this.openAddDia('edit', row); - } + }, + disabled: (row) => { + return row.state > 0 + }, }, { name: '璁″垝', @@ -306,7 +335,7 @@ this.openAddDia('submit', row); }, disabled: (row) => { - return row.state == 1 + return row.state > 0 }, }, { @@ -323,7 +352,7 @@ this.handleDeleteM(row); }, disabled: (row) => { - return row.state == 1 + return row.state > 0 }, }, ] @@ -425,9 +454,6 @@ // 鎵撳紑鏂板寮规 openAddDia(type, row) { this.operationType = type - this.getTypeOptions() - this.getPartNoOptions() - // this.getUserList() if (this.tabIndex === 0) { this.proPlanDia = true if (this.operationType === 'add') { @@ -440,31 +466,78 @@ } } else { this.proPlanForm = { ...row } + // 缂栬緫鏃惰幏鍙栭�変腑鑺傜偣鐨処D骞跺姞杞界浉鍏虫暟鎹� + const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, row.productName) + if (selectedNode) { + this.getTypeOptions(selectedNode.id) + this.getPartNoOptions(selectedNode.id) + } } } else { this.materialDia = true - if (this.operationType === 'add') { - this.materialForm = { - id: '', - materialName: '', - partNo: '', - state: '', - reviewerId: '' + if (this.operationType === 'add') { + this.materialForm = { + id: '', + materialName: '', + partNo: '', + state: '', + reviewerId: '' + } + } else { + this.materialForm = { ...row } + // 缂栬緫鏃惰幏鍙栭�変腑鑺傜偣鐨処D骞跺姞杞界浉鍏虫暟鎹� + const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, row.materialName) + if (selectedNode) { + this.getMaterialPartNoOptions(selectedNode.id) + } } - } else { - this.materialForm = { ...row } - } } }, + + //鍘熻緟鏉愰浂浠跺彿閫夋嫨 + handleMaterialNameChange(value) { + if (value) { + const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, value) + if (selectedNode) { + this.getMaterialPartNoOptions(selectedNode.id) + } + } else { + this.materialPartNoOption = [] + this.materialForm.partNo = '' + } + }, + + // 鑾峰彇鍘熻緟鏉愰浂浠跺彿鍒楄〃 + getMaterialPartNoOptions(materialId) { + if (!materialId) { + this.materialPartNoOption = [] + return + } + getPartNoList({ productId: materialId }).then(res => { + if (res.code === 200) { + this.materialPartNoOption = res.data || [] + if (this.materialPartNoOption.length === 0) { + this.materialForm.partNo = '' + } + } + }).catch(() => { + this.materialPartNoOption = [] + this.materialForm.partNo = '' + }) + }, // 鎴愬搧淇℃伅鎻愪氦 submitProForm(state) { this.submitProLoading = true - if (this.operationType === 'add') { - this.proPlanForm.state = '' - } else { - this.proPlanForm.state = state + // 鑾峰彇閫変腑鑺傜偣鐨処D + const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, this.proPlanForm.productName) + const params = { + ...this.proPlanForm, + state: state === undefined ? null : parseInt(state), + productId: selectedNode?.id, + itemType: ['鎴愬搧', '鍘熻緟鏉�'][this.tabIndex] // 0鎴愬搧1鍘熻緟鏉� } - addOrUpdateProduct(this.proPlanForm).then(res => { + + addOrUpdateProduct(params).then(res => { if (res.code === 200) { this.closeProDia() this.$message.success('鎿嶄綔鎴愬姛') @@ -484,12 +557,14 @@ // 鍘熻緟鏉愪俊鎭彁浜� submitMaterialRulesForm(state) { this.submitMatLoading = true - if (this.operationType === 'add') { - this.materialForm.state = '' - } else { - this.materialForm.state = state + // 鑾峰彇閫変腑鑺傜偣鐨処D + const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, this.materialForm.materialName) + const params = { + ...this.materialForm, + state: state === undefined ? null : parseInt(state), + materialId: selectedNode?.id } - addOrUpdateMaterial(this.materialForm).then(res => { + addOrUpdateMaterial(params).then(res => { if (res.code === 200) { this.closeMaterialRulesDia() this.$message.success('鎿嶄綔鎴愬姛') -- Gitblit v1.9.3