| <template> | 
|   <div class="mod-taskReliability-operatConditModel}"> | 
|     <zt-table-wraper @dataLoaded="dataLoaded" ref="tableObj" :paging='false' defaultNotQuery="true" | 
|                      query-url="/taskReliability/OperatConditModel/page" | 
|                      delete-url="/taskReliability/OperatConditModel/" v-slot="{ table }"> | 
|       <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()"> | 
|         <el-form-item> | 
|           <el-button v-if="dataForm.productId" type="primary" @click="save()">保存</el-button> | 
|         </el-form-item> | 
|       </el-form> | 
|       <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" | 
|                 v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle" | 
|                 row-key="iid" | 
|                 :tree-props="{children: 'children', hasChildren: 'hasChildren'}" | 
|                 :default-expand-all="true"> | 
|         <el-table-column prop="productName" label="产品节点"/> | 
|         <el-table-column prop="modelId" label="产品模型"> | 
|           <template slot-scope="scope"> | 
|             <el-select v-model="scope.row.modelId" :disabled="scope.row.isDisabled == 1" placeholder="请选择" | 
|                        style="width:100%" @change="modelChanged(scope.row)"> | 
|               <el-option | 
|                          v-for="item in scope.row.modelList" | 
|                          :key="item.id" | 
|                          :label="item.modelName" | 
|                          :value="item.id" | 
|               /> | 
|             </el-select> | 
|           </template> | 
|         </el-table-column> | 
|         <el-table-column label="操作" width="100px"> | 
|           <template v-slot="{ row }"> | 
|             <el-button v-if="row.modelId" type="primary" size="small" @click="drawRBD(row)">查看模型</el-button> | 
|           </template> | 
|         </el-table-column> | 
|       </el-table> | 
|       <el-dialog v-dialogDrag :title="title" top="1vh" width='95%' :visible.sync="dialogVisible2" v-if="dialogVisible2"> | 
|         <model-view ref="modelView"></model-view> | 
|       </el-dialog> | 
|     </zt-table-wraper> | 
|   </div> | 
| </template> | 
|   | 
| <script> | 
|   import ModelView from "./ModelView"; | 
|   import cloneDeep from 'lodash/cloneDeep' | 
|   | 
|   export default { | 
|     name: 'OperaConditModel', | 
|     data() { | 
|       return { | 
|         dataForm: { | 
|           id: '', | 
|           operatConditId: '', | 
|           productId: '', | 
|         }, | 
|         mapModelNodes: {}, | 
|         modelList: [], | 
|         dialogVisible2: false, | 
|         isChange: false, | 
|         title: '' | 
|       } | 
|     }, | 
|     components: { | 
|       ModelView | 
|     }, | 
|     mounted() { | 
|       this.getModelNodes() | 
|     }, | 
|     methods: { | 
|       init(param) { | 
|         console.log(param, '') | 
|         this.dataForm.operatConditId = param.row.id | 
|         this.dataForm.productId = param.productId | 
|         this.$refs.tableObj.query() | 
|       }, | 
|       dataLoaded(dataList) { | 
|         dataList[0].isDisabled = 0 | 
|         if (!dataList[0].modelId && dataList[0].modelList.length == 1) { | 
|           console.log(dataList[0].modelList[0].id, ' dataList[0].modelList[0].modelId') | 
|           dataList[0].modelId = dataList[0].modelList[0].id | 
|           console.log(dataList[0], 'dataLoaded(dataList)') | 
|           this.modelChangedProess(dataList[0]) | 
|         } | 
|       }, | 
|       async save() { | 
|         let res = await this.$http.post('/taskReliability/OperatConditModel/', this.$refs.tableObj.dataList[0]) | 
|         if (res.success) { | 
|           this.$tip.success() | 
|           this.isChange = false | 
|           this.$refs.tableObj.query() | 
|         } | 
|       }, | 
|       async getModelNodes() { | 
|         let res = await this.$http.get(`/taskReliability/OperatConditModel/getModelNodes?shipId=0`) | 
|         console.log(res, 'res taskReliability') | 
|         console.log(res.data, 'res.data taskReliability') | 
|         if (res.data) { | 
|           this.mapModelNodes = res.data | 
|   | 
|         } | 
|       }, | 
|       modelChanged(row) { | 
|         this.isChange = true | 
|         this.modelChangedProess(row) | 
|       }, | 
|       modelChangedProess(row) { | 
|         let modelId = row.modelId | 
|         let modelNodes = this.mapModelNodes[modelId] | 
|         console.log(modelId, 'modelChanged modelId') | 
|         console.log(modelNodes, 'modelChanged modelNodes') | 
|         console.log(row.children, 'row.children') | 
|   | 
|         for (let subRow of row.children) { | 
|           console.log(subRow, 'subRow') | 
|           console.log(subRow.productId, 'subRow.productId') | 
|           if (modelNodes.indexOf(subRow.productId) != -1) { | 
|             subRow.isDisabled = 0 | 
|             if (subRow.modelList.length == 1) { | 
|               subRow.modelId = subRow.modelList[0].id | 
|               console.log(subRow.modelId, 'subRow.modelId 111') | 
|               console.log(this.mapModelNodes[subRow.modelId], 'this.mapModelNodes[subRow.modelId] 111') | 
|             } else { | 
|               //subRow.modelId = null | 
|             } | 
|           } else { | 
|             subRow.isDisabled = 1 | 
|             subRow.modelId = null | 
|           } | 
|           this.nodeIteration(subRow) | 
|         } | 
|       }, | 
|       nodeIteration(parentRow) { | 
|         for (let subRow of parentRow.children) { | 
|           if (parentRow.modelId) { | 
|             subRow.isDisabled = 0 | 
|             if (subRow.modelList.length == 1) { | 
|               subRow.modelId = subRow.modelList[0].id | 
|             } | 
|           } else { | 
|             subRow.isDisabled = 1 | 
|             subRow.modelId = null | 
|           } | 
|           this.nodeIteration(subRow) | 
|         } | 
|       }, | 
|       drawRBD(row) { | 
|         this.dialogVisible2 = true | 
|         this.title=row.modelName + '模型设计' | 
|         let param = { | 
|           id: row.modelId, | 
|           modelName: row.modelName, | 
|         } | 
|         this.$nextTick(() => { | 
|           this.$refs.modelView.init(param) | 
|         }) | 
|       } | 
|     } | 
|   } | 
| </script> |