codeMan vor 1 Jahr
Ursprung
Commit
600d72069d

+ 55 - 13
src/HDrpManagement/ProductMag/modules/add.vue

@@ -7,22 +7,22 @@
           <el-form label-position="right" label-width="90px" :model="form" :rules="rules" ref="form" size="small">
             <el-col :span="12">
               <el-form-item label="品号" prop="itemno">
-                <el-input v-model="form.itemno" placeholder="输入品号" @change="itemnoChange"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.itemno" placeholder="输入品号" @change="itemnoChange" @blur="searchFproduct"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="品名" prop="itemname">
-                <el-input v-model="form.itemname"  placeholder="输入品名"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.itemname"  placeholder="输入品名"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="ERP品号" prop="erpitemno">
-                <el-input v-model="form.erpitemno" placeholder="输入ERP品号" @change="erpitemnoChange"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.erpitemno" placeholder="输入ERP品号" @change="erpitemnoChange"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="ERP品名" prop="erpitemname">
-                <el-input v-model="form.erpitemname" placeholder="输入ERP品名"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.erpitemname" placeholder="输入ERP品名"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -207,7 +207,7 @@
             </el-col>
             <el-col :span="12" >
               <el-form-item label="压力等级" >
-                <el-select style="width:100%" v-model="form.pressure" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.pressure" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in pressures"
                     :key="item.value"
@@ -219,7 +219,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="蝶板驱动" >
-                <el-select style="width:100%" v-model="form.butterflyplatedrive" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.butterflyplatedrive" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in butterflyplatedrive"
                     :key="item.value"
@@ -231,7 +231,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="连接形式" >
-                <el-select style="width:100%" v-model="form.connection" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.connection" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in connectionmode"
                     :key="item.value"
@@ -243,7 +243,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="阀板材质" >
-                <el-select style="width:100%" v-model="form.valveplatematerial" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.valveplatematerial" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in valveplatematerial"
                     :key="item.value"
@@ -255,7 +255,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="阀体材质" >
-                <el-select style="width:100%" v-model="form.bodymaterial" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.bodymaterial" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in bodymaterial"
                     :key="item.value"
@@ -267,7 +267,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="执行器类型" >
-                <el-select style="width:100%" v-model="form.actuatortype" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatortype" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in actuatortype"
                     :key="item.value"
@@ -279,7 +279,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="执行器品牌">
-                <el-select style="width:100%" v-model="form.actuatorbrand" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatorbrand" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in actuatorbrand"
                     :key="item.value"
@@ -416,15 +416,56 @@ export default {
       actuatorbrand:[],// 执行器品牌
       connectionmode:[],// 连接形式
       categoriesList:[],//商品大类
-      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
+      Fproduct:{},//成品
     }
   },
   computed:{
     ...mapGetters({
       loading:'loading'
-    })
+    }),
+    calcDisabled () {
+      return Object.keys(this.Fproduct).length != 0
+    }
   },
   methods:{
+    //查询是否存在品号对应成品
+    async searchFproduct (e) {
+      console.log(e.target.value);
+      let res = await this.$api.requested({
+        "id": 2024072713393302,
+        "content": {
+        "pageNumber": 1,
+        "pageSize": 20,
+        "where": {
+          "itemno":e.target.value,
+          "condition": ""
+        }
+        },
+      })
+      if (res.data.length) {
+        this.$confirm('该料号已有成品档案,商品信息将自动同步!', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+            }).then(async () => {
+              this.Fproduct = res.data[0]
+              this.form.itemname = this.Fproduct.itemname
+              this.form.erpitemno = this.Fproduct.erpitemno
+              this.form.erpitemname = this.Fproduct.erpitemname
+              this.form.pressure = this.Fproduct.pressure
+              this.form.butterflyplatedrive = this.Fproduct.butterflyplatedrive
+              this.form.connectionmode = this.Fproduct.connectionmode
+              this.form.valveplatematerial = this.Fproduct.valveplatematerial
+              this.form.bodymaterial = this.Fproduct.bodymaterial
+              this.form.actuatortype = this.Fproduct.actuatortype
+              this.form.actuatorbrand = this.Fproduct.actuatorbrand
+
+              console.log(this.Fproduct);
+            }).catch(() => {
+            })
+      }
+    },
     onShow () {
       this.unitlist()
       this.unitGrouplist()
@@ -568,6 +609,7 @@ export default {
     },
     onCancel(){
       this.dialogFormVisible = false
+      this.Fproduct = {}
       this.$refs['form'].resetFields();
       this.form={
         "attinfos":[],

+ 16 - 11
src/HDrpManagement/ProductMag/modules/edit.vue

@@ -7,22 +7,22 @@
           <el-form label-position="right" label-width="90px" :model="form" :rules="rules" ref="form" size="small">
             <el-col :span="12">
               <el-form-item label="品号" prop="itemno">
-                <el-input v-model="form.itemno" placeholder="输入产品编号" @change="itemnoChange"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.itemno" placeholder="输入产品编号" @change="itemnoChange"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="品名" prop="itemname">
-                <el-input v-model="form.itemname"  placeholder="输入产品名称"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.itemname"  placeholder="输入产品名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="ERP品号" prop="erpitemno">
-                <el-input v-model="form.erpitemno" placeholder="输入ERP品号" @change="erpitemnoChange"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.erpitemno" placeholder="输入ERP品号" @change="erpitemnoChange"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="ERP品名" prop="erpitemname">
-                <el-input v-model="form.erpitemname" placeholder="输入ERP品名"></el-input>
+                <el-input :disabled="calcDisabled" v-model="form.erpitemname" placeholder="输入ERP品名"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -210,7 +210,7 @@
 
             <el-col :span="12">
               <el-form-item label="压力等级" >
-                <el-select style="width:100%" v-model="form.pressure" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.pressure" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in pressures"
                     :key="item.value"
@@ -223,7 +223,7 @@
 
             <el-col :span="12">
               <el-form-item label="蝶板驱动" >
-                <el-select style="width:100%" v-model="form.butterflyplatedrive" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.butterflyplatedrive" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in butterflyplatedrive"
                     :key="item.value"
@@ -235,7 +235,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="连接形式" >
-                <el-select style="width:100%" v-model="form.connection" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.connection" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in connectionmode"
                     :key="item.value"
@@ -247,7 +247,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="阀板材质" >
-                <el-select style="width:100%" v-model="form.valveplatematerial" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.valveplatematerial" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in valveplatematerial"
                     :key="item.value"
@@ -259,7 +259,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="阀体材质" >
-                <el-select style="width:100%" v-model="form.bodymaterial" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.bodymaterial" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in bodymaterial"
                     :key="item.value"
@@ -271,7 +271,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="执行器类型" >
-                <el-select style="width:100%" v-model="form.actuatortype" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatortype" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in actuatortype"
                     :key="item.value"
@@ -283,7 +283,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="执行器品牌" >
-                <el-select style="width:100%" v-model="form.actuatorbrand" placeholder="请选择" clearable>
+                <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatorbrand" placeholder="请选择" clearable>
                   <el-option
                     v-for="item in actuatorbrand"
                     :key="item.value"
@@ -425,6 +425,11 @@ export default {
       categoriesList:[]
     }
   },
+  computed: {
+    calcDisabled () {
+      return !!this.data.itemtype
+    }
+  },
   methods:{
 
     onShow () {

+ 13 - 2
src/HDrpManagement/contractManage/components/productDetailList/productDetailList.vue

@@ -18,7 +18,10 @@
                     class="inline-16"  :params="paramsAdd" :tablecolsAdd="tablecolsAdd" title="添加" :typeName="data.type"
                     @addSuccess="addProducts" @addProduct="addProduct" @uploadData="uploadData" @closeDrawer="closeDrawer"
                      ref="addProduct"
-        ></addProduct>
+        >
+        <!--阀门选型-->
+        <selectOption position="合同" slot="optionSystem" style="margin-left: 10px" @handleParam="handleOptionParam"></selectOption>
+        </addProduct>
         <slot name="cooperate"></slot>
         <exportFile v-if="tool.checkAuth($route.name,'export')" :param="params" :columns="tablecols" fileName="产品明细折扣"></exportFile>
       </div>
@@ -122,8 +125,9 @@ import previewImage from '@/components/previewImage/index'
 import uploadAllData from '@/components/uploadAllData/index'
 import tableLayout from '@/components/dynamic-table/index3'
 import exportFile from '@/components/export_file/index1'
+import SelectOption from '@/optionSystem/selectOption/add.vue'
 export default {
-  components: {addProduct,previewImage,uploadAllData,tableLayout,exportFile},
+  components: {addProduct,previewImage,uploadAllData,tableLayout,exportFile,SelectOption},
   name: '',
   props:["data","isLeader"],
   data() {
@@ -205,6 +209,13 @@ export default {
       this.totalPage = res.pageTotal
       // this.$emit('priceChange')
     },
+    //处理选型请求参数
+    handleOptionParam (param) {
+      param.content.enterprisename = this.data.enterprisename
+      param.content.projectname = this.data.projectname
+      param.content.sourcetable = 'sa_contract'
+      param.content.source = `合同:${this.data.billno}`
+    },
     tableLoad () {
       if (this.params.content.pageNumber == this.totalPage) return
       this.params.content.pageNumber += 1

+ 13 - 3
src/HDrpManagement/projectChange/modules/modules/productSet/index.vue

@@ -6,7 +6,10 @@
                   :tradefield="data.tradefield" v-if="tool.checkAuth($route.name,'productSetManage') && data.disabled && data.status !== '已失败' && data.status !== '已结案'"
                   class="inline-16" :params="paramsAdd" title="添 加"
                   @addSuccess="addProducts" :discountrate="discountrate" @addProduct="addProduct" :tablecolsAdd="tablecolsAdd"
-      ></addProduct>
+      >
+      <!--阀门选型-->
+      <selectOption position="项目" slot="optionSystem" style="margin-left: 10px" @handleParam="handleOptionParam"></selectOption>
+    </addProduct>
 <!--      <uploadAllData
           v-if="tool.checkAuth($route.name,'productSetManage') && data.disabled "
           class="inline-16"
@@ -86,9 +89,10 @@ import previewImage from "@/components/previewImage";
 import delete_product from './deleteProduct'
 import uploadAllData from '@/components/uploadAllData/index'
 import importFile from '@/template/importFile/index'
+import SelectOption from '@/optionSystem/selectOption/add.vue'
 export default {
   props:["data","disabled","flagTag","isLeader"],
-  components:{add,uploadAllData,addProduct,uploadFile, previewImage,delete_product,importFile},
+  components:{add,uploadAllData,addProduct,uploadFile, previewImage,delete_product,importFile,SelectOption},
   data () {
     return {
       errorurl:null,
@@ -146,7 +150,13 @@ export default {
     /*list (vm) {
       vm.content.sa_projectid = this.$route.query.id
     },*/
-
+    //处理选型请求参数
+    handleOptionParam (param) {
+      param.content.enterprisename = this.data.enterprisename
+      param.content.projectname = this.data.projectname
+      param.content.sourcetable = 'sa_project'
+      param.content.source = `项目配置:${this.data.projectname}`
+    },
     async listData(){
       this.discountrate = Math.round((this.data.discountrate * 100) * 100) / 100
       this.totalPrice = 0

+ 15 - 3
src/SDrpManagement/QuotedPrice/detail/modules/productInventory/index.vue

@@ -28,12 +28,16 @@
                            class="inline-16" @productAdd="productData" title="自项目产品添加" :params="paramsProjectAdd" :tablecolsAdd="tablecolsAdd"
                          @addSuccess="addProducts" @addProduct="addProduct" @uploadData="uploadData" @closeDrawer="productData"
                          :tradefield="data.tradefield" ref="addProductProject"
-      ></addProductProject>
+      >
+    </addProductProject>
       <addProduct v-if="tool.checkAuth($route.name,'productDetails') && data.status === '新建' && disabled"
                   class="inline-16" @productAdd="productData" :params="paramsAdd" :tablecolsAdd="tablecolsAdd" title="自产品档案添加"
                   @addSuccess="addProducts" @addProduct="addProduct" @uploadData="uploadData" @closeDrawer="productData"
                   :tradefield="data.tradefield" ref="addProduct"
-      ></addProduct>
+      >
+      <!--阀门选型-->
+      <selectOption position="报价单" slot="optionSystem" style="margin-left: 10px" @handleParam="handleOptionParam"></selectOption>
+    </addProduct>
       <slot name="cooperate"></slot>
       <importFile v-if="tool.checkAuth($route.name,'productDetails') && data.status === '新建' &&  disabled" class="inline-16" accept=".xlsx"  :bindData="{ownertable:'productDetailsDiscountTable',ownerid:'',usetype:'default'}" paramId="20221024141403" @onSuccess="importSuccess">
         <a class="error-link" v-if="errorurl" :href="errorurl" slot="errorFile">下载错误数据</a>
@@ -120,10 +124,11 @@ import addProductProject from '@/template/addProduct'
 import uploadAllData from '@/components/uploadAllData/index'
 import importFile from '@/template/importFile/index'
 import tableNewLayout from '@/components/dynamic-newTable/index1'
+import SelectOption from '@/optionSystem/selectOption/add.vue'
 export default {
   props:["data","disabled","isLeader"],
   name: "productInventory",
-  components:{uploadAllData,addProductProject,addProduct,uploadFile, previewImage,product_table,productTableProject,productTable,importFile,tableNewLayout},
+  components:{uploadAllData,addProductProject,addProduct,uploadFile, previewImage,product_table,productTableProject,productTable,importFile,tableNewLayout,SelectOption},
   data(){
     return {
       errorurl:null,
@@ -201,6 +206,13 @@ export default {
     }
   },
   methods:{
+    //处理选型请求参数
+    handleOptionParam (param) {
+      param.content.enterprisename = this.data.enterprisename
+      param.content.projectname = this.data.projectname
+      param.content.sourcetable = 'sa_quotedprice'
+      param.content.source = `项目报价:${this.data.billno}`
+    },
     /*产品配置信息*/
     async productData(){
       this.param.content.sa_quotedpriceid = this.$route.query.id

+ 1 - 1
src/components/normal-basic-layout/details/index.vue

@@ -10,7 +10,7 @@
           <div>
             <slot name="customOperationBef"></slot>
           </div>
-          <cpEdit v-if="tool.checkAuth($route.name,'update')" :formPath="formPath" :oldFormPath="oldFormPath" :data="editData" btnType="default" @onAddSuccess="onSuccess"></cpEdit>
+          <cpEdit v-if="tool.checkAuth($route.name,'update')" :formPath="formPath" :oldFormPath="oldFormPath" :data="editData" btnType="default" @onAddSuccess="onSuccess" v-on="$listeners"></cpEdit>
           <!-- 打印 -->
           <reportCenter size="mini" position="detail" class="inline-16" :data="reportCenterLsit.filter(item => item.type == 'printinfo')" v-if="reportCenterLsit.filter(item => item.type == 'printinfo').length > 0 && systemappid != 163">
             <template v-slot:print="scope2">

+ 4 - 1
src/components/normal-basic-layout/modules/cpEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="inline-16">
-    <component :is="formComponent" :data="data" :btnType="btnType" @onSuccess="onSuccess"></component>
+    <component :is="formComponent" :data="data" :btnType="btnType" @onSuccess="onSuccess" @onEditSuccess="onEditSuccess"></component>
   </div>
 </template>
 
@@ -25,6 +25,9 @@ export default {
   methods:{
     onSuccess () {
       this.$emit('onAddSuccess')
+    },
+    onEditSuccess () {
+      this.$emit('onEditSuccess')
     }
   },
   mounted () {

+ 1 - 2
src/optionSystem/FProductManage/modules/add.vue

@@ -3,8 +3,7 @@
     <el-dropdown @command="onShow">
       <el-button type="primary" size="small"> 新建 </el-button>
       <el-dropdown-menu slot="dropdown">
-        <!-- <el-dropdown-item :command="item.value" v-for="item in itemTypeList()" :key="item.value">{{ item.remarks }}</el-dropdown-item> -->
-        <el-dropdown-item command="蝶阀">蝶阀</el-dropdown-item>
+        <el-dropdown-item :command="item.value" v-for="item in itemTypeList()" :key="item.value">{{ item.remarks }}</el-dropdown-item>
       </el-dropdown-menu>
     </el-dropdown>
     <el-drawer

+ 18 - 10
src/optionSystem/FProductManage/modules/diefa/diefaAdd.vue

@@ -33,7 +33,7 @@
                 </el-form-item>
             </el-col>
             <el-col :span="12">
-                <el-form-item  label="材质" prop="material">
+                <el-form-item  label="材质" prop="material" :rules="[{ required: true, message: '请输入材质'}]">
                     <el-input type="text" autosize v-model="form.material" placeholder="输入材质"></el-input>
                 </el-form-item>
             </el-col>
@@ -49,7 +49,7 @@
             <div class="title">组成件</div>
             <div class="handle">
                 <el-button type="primary" size="mini" style="margin-right: 10px;" @click="showFun" :disabled="resultArr.length!=0">选择</el-button>
-                <el-dialog :visible.sync="dialogVisible" width="1100px" append-to-body :show-close="false" v-if="dialogVisible">
+                <el-dialog custom-class="custom-select-option_class" :visible.sync="dialogVisible" width="1100px" append-to-body :show-close="false" v-if="dialogVisible">
                     <el-tabs v-model="activePosition">
                         <el-tab-pane label="选光头" name="光头" :disabled="activePosition!='光头'">
                             <div class="dialog-content">
@@ -117,7 +117,7 @@
                                     </div>
                                 </div>
                                 <!--光头-->
-                                <MyTable height="400" ref="guangtouRef" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                <MyTable :height="tableHeight" ref="guangtouRef" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                     <template v-slot:customcol="scope">
                                         <p>{{scope.column.data[scope.column.columnname]}}</p>
                                     </template>
@@ -177,7 +177,7 @@
                                 <div class="option-line" v-if="guangtouParam.content.where.drivetype=='气动'">
                                     <div class="item">
                                         <div class="label">驱动方式:</div>
-                                        <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="isactuatordrivetype"></MySelect>
+                                        <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="excelParam.content.where.drivetype"></MySelect>
                                     </div>
                                 </div>
 
@@ -203,7 +203,7 @@
                                 </div>
 
                                 <!--执行器-->
-                                <MyTable height="400" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                <MyTable :height="tableHeight" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                     <template v-slot:customcol="scope">
                                         <p v-if="scope.column.columnname == 'matchratio'" style="color:red">{{scope.column.data[scope.column.columnname]}}</p>
                                         <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
@@ -248,7 +248,7 @@
 
                                 <div class="option-line">
                                     <div class="item">
-                                        <div class="label" style="width:130px !important">{{isactuatordrivetype}}型阀门成品:</div>
+                                        <div class="label" style="width:50px !important">辅件:</div>
                                         <div style="display: flex">
                                             <el-tag size="small" closable v-for="item in fujianArr" :key="item.itemid" style="margin-right: 10px" @close="handleClose(item)">{{ item.model }}:{{ item.itemname }}</el-tag>    
                                         </div>
@@ -256,7 +256,7 @@
                                 </div>
 
                                 <!--辅件-->
-                                <MyTable :noQuery="true" ref="fujianRef" height="400" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :data="fujianList" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                <MyTable :noQuery="true" ref="fujianRef" :height="tableHeight" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                 <template v-slot:customcol="scope">
                                     <p>{{scope.column.data[scope.column.columnname]}}</p>
                                 </template>
@@ -370,6 +370,7 @@ export default {
     props:['data'],
     data () {
         return {
+            tableHeight:'200px',
             dialogVisible:false,
             form:{},
             rules:{
@@ -382,7 +383,6 @@ export default {
             },
             excel:'',
             gangtou:'',
-            isactuatordrivetype:'气动调节',
             resultArr:[],
             activePosition:'光头',
             
@@ -518,7 +518,7 @@ export default {
                 }
             } else if (type == 'excelParam') {
                 for (let i = index; i < whereKeys.length; i++) {
-                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1) continue
+                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1 || whereKeys[i].indexOf('drivetype') != -1) continue
                     this[type].content.where[whereKeys[i]] = ''
                 }
             }
@@ -637,6 +637,7 @@ export default {
                             "actuatorbrand": "", //品牌
                             "func": "", //功能
                             "bodystructure": "", //结构
+                            "drivetype":'气动调节',
                         }
                     },
                 }
@@ -672,7 +673,7 @@ export default {
             } else if (type == '执行器') {
                 this.resultArr[1].itenname = this.resultArr[1].actuatormodel
 
-                if (this.isactuatordrivetype == '气动调节') {
+                if (this.excelParam.content.where.drivetype == '气动调节') {
                     this.fujianParam.content.othertypes = ['定位器','过滤减压阀']
                 } else {
                     this.fujianParam.content.othertypes = ['电磁阀','限位开关','过滤减压阀']
@@ -864,4 +865,11 @@ export default {
        font-size:12px;
        color:red;
     }
+</style>
+<style>
+@media screen and (max-width:1800px) {
+    .custom-select-option_class.el-dialog {
+        margin-top: 10px !important;
+    }
+}
 </style>

+ 19 - 11
src/optionSystem/FProductManage/modules/diefa/edit.vue

@@ -33,7 +33,7 @@
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item  label="材质" prop="material">
+                    <el-form-item  label="材质" prop="material" :rules="[{ required: true, message: '请输入材质'}]">
                         <el-input type="text" autosize v-model="form.material" placeholder="输入材质"></el-input>
                     </el-form-item>
                 </el-col>
@@ -49,7 +49,7 @@
                 <div class="title">组成件</div>
                 <div class="handle">
                     <el-button type="primary" size="mini" style="margin-right: 10px;" @click="dialogVisible=true" :disabled="resultArr.length!=0">选择</el-button>
-                    <el-dialog :visible.sync="dialogVisible" width="1100px" append-to-body :show-close="false" v-if="dialogVisible">
+                    <el-dialog custom-class="custom-select-option_class" :visible.sync="dialogVisible" width="1100px" append-to-body :show-close="false" v-if="dialogVisible">
                         <el-tabs v-model="activePosition">
                             <el-tab-pane label="选光头" name="光头" :disabled="activePosition!='光头'">
                                 <div class="dialog-content">
@@ -117,7 +117,7 @@
                                         </div>
                                     </div>
                                     <!--光头-->
-                                    <MyTable height="400" ref="guangtouRef" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                    <MyTable :height="tableHeight" ref="guangtouRef" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                         <template v-slot:customcol="scope">
                                             <p>{{scope.column.data[scope.column.columnname]}}</p>
                                         </template>
@@ -177,7 +177,7 @@
                                     <div class="option-line" v-if="guangtouParam.content.where.drivetype=='气动'">
                                         <div class="item">
                                             <div class="label">驱动方式:</div>
-                                            <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="isactuatordrivetype"></MySelect>
+                                            <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="excelParam.content.where.drivetype"></MySelect>
                                         </div>
                                     </div>
 
@@ -203,7 +203,7 @@
                                     </div>
 
                                     <!--执行器-->
-                                    <MyTable height="400" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                    <MyTable :height="tableHeight" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                         <template v-slot:customcol="scope">
                                             <p v-if="scope.column.columnname == 'matchratio'" style="color:red">{{scope.column.data[scope.column.columnname]}}</p>
                                             <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
@@ -248,7 +248,7 @@
 
                                     <div class="option-line">
                                         <div class="item">
-                                            <div class="label" style="width:130px !important">{{isactuatordrivetype}}型阀门成品:</div>
+                                            <div class="label" style="width:130px !important">辅件:</div>
                                             <div style="display: flex">
                                                 <el-tag size="small" closable v-for="item in fujianArr" :key="item.itemid" style="margin-right: 10px" @close="handleClose(item)">{{ item.model }}:{{ item.itemname }}</el-tag>    
                                             </div>
@@ -256,7 +256,7 @@
                                     </div>
 
                                     <!--辅件-->
-                                    <MyTable :noQuery="true" ref="fujianRef" height="400" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :data="fujianList" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                                    <MyTable :noQuery="true" ref="fujianRef" :height="tableHeight" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
                                     <template v-slot:customcol="scope">
                                         <p>{{scope.column.data[scope.column.columnname]}}</p>
                                     </template>
@@ -370,6 +370,7 @@
       props:['data'],
       data () {
           return {
+              tableHeight:'200px',
               dialogVisible:false,
               drawer:false,
               rules:{
@@ -382,7 +383,6 @@
               },
               excel:'',
               gangtou:'',
-              isactuatordrivetype:'气动调节',
               resultArr:[],
               activePosition:'光头',
               
@@ -513,7 +513,7 @@
                 }
             } else if (type == 'excelParam') {
                 for (let i = index; i < whereKeys.length; i++) {
-                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1) continue
+                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1 || whereKeys[i].indexOf('drivetype') != -1) continue
                     this[type].content.where[whereKeys[i]] = ''
                 }
             }
@@ -631,6 +631,7 @@
                             "actuatorbrand": "", //品牌
                             "func": "", //功能
                             "bodystructure": "", //结构
+                            "drivetype":'气动调节',
                         }
                     },
                 }
@@ -666,7 +667,7 @@
             } else if (type == '执行器') {
                 this.resultArr[1].itenname = this.resultArr[1].actuatormodel
 
-                if (this.isactuatordrivetype == '气动调节') {
+                if (this.excelParam.content.where.drivetype == '气动调节') {
                     this.fujianParam.content.othertypes = ['定位器','过滤减压阀']
                 } else {
                     this.fujianParam.content.othertypes = ['电磁阀','限位开关','过滤减压阀']
@@ -869,4 +870,11 @@
          font-size:12px;
          color:red;
       }
-  </style>
+  </style>
+<style>
+    @media screen and (max-width:1800px) {
+        .custom-select-option_class.el-dialog {
+            margin-top: 10px !important;
+        }
+    }
+</style>

+ 1 - 1
src/optionSystem/FProductManage/modules/edit.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-    <el-button type="primary" size="mini" @click="onShow"> 编辑 </el-button>
+    <el-button type="primary" size="mini" @click="onShow" :disabled="data.status != '新建'"> 编辑 </el-button>
       <el-drawer
         title="编辑成品"
         :visible.sync="drawer"

+ 1 - 0
src/optionSystem/FProductManage/modules/select.vue

@@ -11,6 +11,7 @@
 
 <script>
 export default {
+    name:'MySelect',
     props:{
         title: {
             type:String,

+ 4 - 3
src/optionSystem/FProductManage/modules/table.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
       <!-- :header-cell-style="{background:'#EEEEEE',color:'#333'}" -->
-      <el-table ref="table" :row-class-name="tableClassName" highlight-current-row :data="list"  size="mini" :height="height ? height : list.length <= 4?'260px':list.length <= 20?'calc(100vh - 420px)':'calc(100vh - 420px)'"  @row-click="rowClick" style="width:100%;min-height:260px;max-height: calc(100vh - 420px)" :header-cell-style="{background:'#fafafafa',height:'40px',color:'#000000'}" @selection-change="selectionChange">
+      <el-table ref="table" :row-class-name="tableClassName" highlight-current-row :data="data != undefined ? data : list"  size="mini" :height="height ? height : list.length <= 4?'260px':list.length <= 20?'calc(100vh - 420px)':'calc(100vh - 420px)'"  @row-click="rowClick" style="width:100%;min-height:260px;max-height: calc(100vh - 420px)" :header-cell-style="{background:'#fafafafa',height:'40px',color:'#000000'}" @selection-change="selectionChange">
         <el-table-column
             type="selection"
             width="35" fixed v-if="checkbox">
@@ -22,7 +22,7 @@
           </template>
         </el-table-column>
       </el-table>
-      <div  class="container normal-panel" style="text-align:right">
+      <div  class="container normal-panel" style="text-align:right" v-if="param">
         <el-pagination
             background
             @size-change="handleSizeChange"
@@ -46,6 +46,7 @@
       custom:是否启用自定义结构;
       opwidth:操作列宽度
     */
+    name:'MyTable',
     props:['layout','data','custom','height','fixedName','width','checkbox','redirect','customHeader','param','noQuery'],
     data () {
       return {
@@ -89,7 +90,7 @@
       },
     },
     created () {
-      !this.noQuery && this.listData()
+      !this.noQuery && this.param && this.listData()
     },
     mounted () {
     }

+ 1 - 1
src/optionSystem/itemManage/index.vue

@@ -91,7 +91,7 @@
         {{ scope.data.column.data.nominalpressure.join(',') }}
       </div>
       <div v-else-if="scope.data.column.columnname === 'drivetype'">
-        {{ scope.data.column.data.drivetype.join(',') }}
+        <el-tag size="mini" type="primary" v-for="item in scope.data.column.data.drivetype" :key="item" style="margin-right: 10px;">{{ item }}</el-tag>
       </div>
       <p v-else>{{ scope.data.column.data[[scope.data.column.columnname]] }}</p>
     </template>

+ 16 - 6
src/optionSystem/optionOrder/detail/index.vue

@@ -3,25 +3,26 @@
       <basicDetails
         ref="details"
         :titleText="mainData.billno"
+        :oldFormPath="{ edit: 'optionSystem/optionOrder/detail/modules' }"
         :editData="mainData"
         :mainAreaData="mainAreaData"
         turnPageId="2024071815534702"
         delApiId="2024071814493602"
         idname="sa_lectotypecfgid"
-        ownertable="plm_item"
+        ownertable="sa_lectotypecfg"
         tags=""
         :tabs="['产品配置']"
         :statusCheck="[{key:'status',value:'审核'}]"
         @pageChange="pageChange"
-        @onEditSuccess="queryMainData($route.query.id);$refs.list.queryOptions()"
+        @onEditSuccess="queryMainData($route.query.id);$refs.Product.listData()"
       >
         <div slot="customOperation">
           <customBtn
-            
+            class="inline-16"
             btnName="开始评审"
             message="确定开始评审当前选型单吗?"
-            idName="20240710094702"
-            keyName="sa_lectotypecfgid"
+            idName="2024071815111102"
+            keyName="sa_lectotypecfgids"
             :id="[$route.query.id]"
             :paramData="[{key:'status',value:'评审中'},{key:'refusetype',value:''},{key:'refuseinfo',value:''}]"
             @onSuccess="queryMainData()"
@@ -75,6 +76,11 @@
   export default {
     name: "detail",
     components:{Table},
+    provide () {
+      return {
+        resultArrs:() => this.$refs.Product.list
+      }
+    },
     data() {
       return {
         mainData: {},
@@ -132,6 +138,7 @@
               })
               this.tool.showMessage(res,() => {
                 this.rejectVisible = false
+                this.queryMainData()
                 this.$refs.form.resetFields()
               })
             })
@@ -153,7 +160,7 @@
                 case '无需评审':
                   style = {color:"rgb(82, 196, 26)"}
                   break;
-                case '待审':
+                case '待审':
                   style = {color:"#3874f6"}
                   break;
                 case '评审拒绝':
@@ -212,6 +219,9 @@
       this.queryMainData(this.$route.query.id)
       this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols
     },
+    mounted () {
+    }
+    
   };
   </script>
   

+ 740 - 0
src/optionSystem/optionOrder/detail/modules/components/DieFa.vue

@@ -0,0 +1,740 @@
+<template>
+  <div>
+    <el-tabs v-model="activePosition">
+        <el-tab-pane label="选光头" name="光头" :disabled="isEdit && activePosition!='光头'">
+            <div class="dialog-content">
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">搜索:</div>
+                        <el-input
+                            placeholder="名称/料号"
+                            v-model="guangtouParam.content.where.condition"
+                            clearable
+                            @clear="Search('guangtouParam')"
+                            size="small"
+                            @keyup.enter.native="Search('guangtouParam')">
+                        </el-input>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">公称通径:</div>
+                        <el-select v-model="guangtouParam.content.where.caliber" placeholder="请选择公称通径" size="small" style="width:100%" clearable @change="Search('guangtouParam','caliber')">
+                            <el-option v-for="item in caliber" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">公称压力:</div>
+                        <el-select @change="Search('guangtouParam','nominalpressure')" :disabled="!guangtouParam.content.where.caliber" v-model="guangtouParam.content.where.nominalpressure" placeholder="请选择公称压力" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in nominalpressure" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">连接方式:</div>
+                        <MySelect @click="Search('guangtouParam','connection')" :disabled="!guangtouParam.content.where.nominalpressure" :options="connection" v-model="guangtouParam.content.where.connection"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">阀体材质:</div>
+                        <el-select @change="Search('guangtouParam','bodymaterial')" :disabled="!guangtouParam.content.where.connection" v-model="guangtouParam.content.where.bodymaterial" placeholder="请选择阀体材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in bodymaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">阀杆材质:</div>
+                        <el-select @change="Search('guangtouParam','stemmaterial')" :disabled="!guangtouParam.content.where.bodymaterial" v-model="guangtouParam.content.where.stemmaterial" placeholder="请选择阀杆材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in stemmaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">阀座材质:</div>
+                        <el-select @change="Search('guangtouParam','plinthmaterial')" :disabled="!guangtouParam.content.where.stemmaterial" v-model="guangtouParam.content.where.plinthmaterial" placeholder="请选择阀座材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in plinthmaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">驱动方式:</div>
+                        <MySelect @click="guangtouChange();Search('guangtouParam','drivetype');resultArr=[]" :options="drivetype" v-model="guangtouParam.content.where.drivetype"></MySelect>
+                    </div>
+                </div>
+                <!--光头-->
+                <MyTable :height="tableHeight" ref="guangtouRef" :noQuery="true" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                    <template v-slot:customcol="scope">
+                        <p>{{scope.column.data[scope.column.columnname]}}</p>
+                    </template>
+                    <template v-slot:opreation="scope">
+                        <i class="el-icon-check" style="color: #3874f6;" v-if="scope.data.isSelect"></i>
+                        <el-button type="text" size="mini" @click="selectTarget(scope.data,'主阀')" :disabled="!guangtouParam.content.where.drivetype" v-else >选择</el-button>
+                    </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+
+        <el-tab-pane label="选执行器" name="执行器" :disabled="isEdit && activePosition!='执行器'">
+            <div class="dialog-content">
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">光头:</div>
+                        <MySelect 
+                            v-if="resultArr.length"
+                            :higit="true"
+                            :options="[{
+                                remarks:`${resultArr[0].itemname}`,value:`${resultArr[0].itemid}`
+                            }]" 
+                            v-model="gangtou"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='光头';isFujianShow=false;resultArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">执行器:</div>
+                        <el-input
+                            placeholder="型号/料号"
+                            v-model="excelParam.content.where.condition1"
+                            clearable
+                            @clear="Search('excelParam')"
+                            size="small"
+                            @keyup.enter.native="Search('excelParam')">
+                        </el-input>
+                    </div>
+
+                    <div class="item" v-if="guangtouParam.content.where.drivetype!='气动'">
+                        <div class="label">减速箱:</div>
+                        <el-input
+                            placeholder="型号/料号"
+                            v-model="excelParam.content.where.condition2"
+                            clearable
+                            @clear="Search('excelParam')"
+                            size="small"
+                            @keyup.enter.native="Search('excelParam')">
+                        </el-input>
+                    </div>
+                </div>
+
+                <div class="option-line" v-if="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">驱动方式:</div>
+                        <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="excelParam.content.where.drivetype"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">品牌:</div>
+                        <MySelect @click="Search('excelParam','actuatorbrand')" :options="actuatorbrand" v-model="excelParam.content.where.actuatorbrand"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line" v-show="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">功能:</div>
+                        <MySelect :disabled="!excelParam.content.where.actuatorbrand" @click="Search('excelParam','func')" :options="func" v-model="excelParam.content.where.func"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line" v-show="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">结构:</div>
+                        <MySelect :disabled="!excelParam.content.where.func"  @click="Search('excelParam','bodystructure')" :options="bodystructure" v-model="excelParam.content.where.bodystructure"></MySelect>
+                    </div>
+                </div>
+
+                <!--执行器-->
+                <MyTable :height="tableHeight" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                    <template v-slot:customcol="scope">
+                        <p v-if="scope.column.columnname == 'matchratio'" style="color:red">{{scope.column.data[scope.column.columnname]}}</p>
+                        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+                    </template>
+                    <template v-slot:opreation="scope">
+                        <i class="el-icon-check" style="color: #3874f6;" v-if="scope.data.isSelect"></i>
+                        <el-button type="text" size="mini" @click="selectTarget(scope.data,'执行器')" v-else>选择</el-button>
+                    </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+
+        <el-tab-pane label="选辅件" name="辅件" :disabled="isEdit && activePosition!='辅件'" v-if="isFujianShow">
+            <div class="dialog-content">
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">光头:</div>
+                        <MySelect 
+                            v-if="resultArr.length"
+                            :higit="true"
+                            :options="[{remarks:`${resultArr[0].itemname}`,value:`${resultArr[0].itemid}`}]" 
+                            v-model="gangtou"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='光头';isFujianShow=false;resultArr=[];fujianArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">执行器:</div>
+                        <MySelect 
+                            v-if="resultArr.length>=2"
+                            :higit="true"
+                            :options="[{remarks:resultArr[1].actuatormodel||resultArr[1].itemname,value:resultArr[1].itemid}]" 
+                            v-model="excel"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='执行器';resultArr.splice(1);fujianArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label" style="width:50px !important">辅件:</div>
+                        <div style="display: flex">
+                            <el-tag size="small" closable v-for="item in fujianArr" :key="item.itemid" style="margin-right: 10px" @close="handleClose(item)">{{ item.model }}:{{ item.itemname }}</el-tag>    
+                        </div>
+                    </div>
+                </div>
+
+                <!--辅件-->
+                <MyTable :noQuery="true" ref="fujianRef" :height="tableHeight" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                <template v-slot:customcol="scope">
+                    <p>{{scope.column.data[scope.column.columnname]}}</p>
+                </template>
+                <template v-slot:opreation="scope">
+                    <el-button type="text" size="mini" @click="selectTarget(scope.data,'辅件')" :disabled="loading">选择</el-button>
+                </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+    </el-tabs>
+
+    <div class="dialog-footer">
+        <el-button size="small" @click="close" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width" v-if="activePosition == '辅件'" :disabled="$refs.fujianRef.list.length!= 0">确认</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import MySelect from '@/optionSystem/FProductManage/modules/select.vue'
+import MyTable from '@/optionSystem/FProductManage/modules/table.vue'
+export default {
+    components:{MySelect,MyTable},
+    props:['data'],
+    inject:['valvetype','resultArrs'],
+    data () {
+        return {
+            tableHeight:'200px',
+            isEdit:false,
+            excel:'',
+            gangtou:'',
+            resultArr:[],
+            activePosition:'光头',
+            
+            caliber:[],
+            nominalpressure:[],
+            connection:[],
+            bodymaterial:[],
+            stemmaterial:[],
+            plinthmaterial:[],
+            actuatorbrand:[],
+            actuatordrivetype:[],
+            drivetype:[],
+            bodystructure:[],
+            func:[],
+            guangtouList:[],
+            isFujianShow:false,//辅件是否显示
+            form: {
+                "itemid": 0,
+                "plm_itemextendid": 0,
+                "valvetype": "蝶阀", //阀门类型(固定)
+                "itemno": "", //产品编码(必填,唯一)
+                "itemname": "", //产品名称(必填)
+                "erpitemno": "", //erp品号(必填)
+                "erpitemname": "", //erp品名(必填)
+                "spec": "", //规格尺寸(必填)
+                "model": "", //型号(必填)
+                "material": "", //材质(必填,选项)
+                "marketprice": '',
+                "caliber": "", //公称通径
+                "nominalpressure": [
+                    
+                ], //公称压力
+                "connection": "",
+                "drivetype": [
+             
+                ], //驱动方式
+                "valveplatematerial": "",
+                "bodymaterial": "",
+                "stemmaterial": "",
+                "plinthmaterial": "",
+                "torque": "", //
+                "maxruntime": "", //90°最大运行时间
+                "actuatorbrand":"",//执行器品牌
+                "actuatordrivetype":"",//执行器类型
+                "part_itemids": [
+                    
+                ]
+            },
+            guangtouParam: {
+                "id": 20240718162102,
+                "content": {
+                    "pageNumber": 1,
+                    "pageSize": 20,
+                    "sa_lectotypecfgid":this.$route.query.id,
+                    "where": {
+                        "condition": "",
+                        "caliber": "", //公称通径
+                        "nominalpressure": "", //公称压力
+                        "connection": "", //连接方式
+                        "bodymaterial": "", //阀体材质
+                        "stemmaterial": "", //阀杆材质
+                        "plinthmaterial": "", //阀座材质
+                        "drivetype": "电动" //驱动方式
+                    }
+                },
+            },
+            excelList:[],
+            excelParam: {
+                "id": 20240718162202,
+                "content": {
+                    "itemid": "",//光头id
+                    "pageNumber": 1,
+                    "pageSize": 20,
+                    "sa_lectotypecfgid":this.$route.query.id,
+                    "where": {
+                        "condition1": "",
+                        "condition2": "",
+                        "torque": "", //阀门扭矩
+                        "flh": "", //法兰号
+                        "actuatorbrand": "", //品牌
+                        "actuatordrivetype": "", //驱动方式
+                        "maxsquarewidth": "", //方阀杆最大宽度
+                        "maxrounddiameter": "" //圆阀杆最大直径
+                    }
+                },
+            },
+            fujianList:[],
+            fujianArr:[],
+            loading:false,
+            fujianParam: {
+                "id": 20240718162402,
+                "content": {
+                    "othertypes": [
+                    ],
+                    "pageNumber": 1,
+                    "pageSize": 300,
+                    "where": {
+                        "actuatorbrand": "" //品牌
+                    }
+                },
+            },
+            timer:null,
+            product:{}
+        }
+    },
+    methods: {
+        init () {
+            this.guangtouChange(this.data.filter.mainvalve.drivetype)
+            Object.keys(this.data.filter.mainvalve).forEach(v => {
+                this.guangtouParam.content.where[v] = this.data.filter.mainvalve[v]
+            })
+            Object.keys(this.data.filter.actuator).forEach(v => {
+                this.excelParam.content.where[v] = this.data.filter.actuator[v]
+            })
+            if (this.guangtouParam.content.where.drivetype == '气动') {
+                this.isFujianShow = true
+                this.fujianArr = this.data.filter.other.fujianArr
+            }
+            this.$refs.guangtouRef.listData(() => {
+                if (!this.$refs.guangtouRef.list.length) return
+                this.nominalpressure = this.$refs.guangtouRef.list[0].option.nominalpressure
+                this.connection = this.$refs.guangtouRef.list[0].option.connection
+                this.bodymaterial = this.$refs.guangtouRef.list[0].option.bodymaterial
+                this.stemmaterial = this.$refs.guangtouRef.list[0].option.stemmaterial
+                this.plinthmaterial = this.$refs.guangtouRef.list[0].option.plinthmaterial
+                this.drivetype = this.$refs.guangtouRef.list[0].option.drivetype
+            })
+            this.resultArr = JSON.parse(JSON.stringify(this.resultArrs()))
+            console.log(this.resultArr);
+            
+            setTimeout(() => {
+                this.$refs.excelRef.listData(() => {
+                    if (!this.$refs.excelRef.list.length) return
+                    this.actuatorbrand = this.$refs.excelRef.list[0].option.actuatorbrand
+                    this.bodystructure = this.$refs.excelRef.list[0].option.bodystructure
+                    this.func = this.$refs.excelRef.list[0].option.func
+                })
+                this.$refs.fujianRef.listData()
+            }, 1000);
+        },
+        close () {
+            this.activePosition = '光头'
+            this.guangtouParam.content.where.drivetype = '电动'
+            this.resultArr = []
+            this.fujianArr = []
+            this.isEdit = false
+            this.$emit('close')
+        },
+        //搜索
+        Search (type,position,init) {
+            if (!init) this.isEdit = true
+            let index = 0
+            let whereKeys = Object.keys(this[type].content.where)
+            if (position) {
+                index = whereKeys.indexOf(position) + 1
+            }
+            if (type != 'excelParam') {
+                for (let i = index; i < whereKeys.length - 1; i++) {
+                    if (!position && whereKeys[i].indexOf('condition') != -1) continue
+                    this[type].content.where[whereKeys[i]] = ''            
+                }
+            } else if (type == 'excelParam') {
+                for (let i = index; i < whereKeys.length; i++) {
+                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1 || whereKeys[i].indexOf('drivetype') != -1) continue
+                    this[type].content.where[whereKeys[i]] = ''
+                }
+            }
+            switch (type) {
+                case 'guangtouParam':
+                    if (this.loading) return
+                    this.loading = true
+                    whereKeys = whereKeys.filter(item => item != 'caliber')
+                    this.$refs.guangtouRef&&this.$refs.guangtouRef.listData(_changeOption)
+                    break;
+                case 'excelParam':
+                    if (this.loading) return
+                    this.loading = true
+                    this.$nextTick(() => {
+                        this.$refs.excelRef&&this.$refs.excelRef.listData(_changeOption2)
+                    })
+                    break;
+                default:
+                    break;
+            }
+            //更新选项列表
+            let that = this
+            function _changeOption () {
+                that.loading = false
+                let isbreak=false
+                for (let i = 0; i < whereKeys.length; i++) {
+                    if (isbreak) break;
+                    if (whereKeys[i].indexOf('condition') == -1) {
+                        if (that.$refs.guangtouRef.list.length) {
+                            if (i >= index-1) {
+                                that[whereKeys[i]] = that.$refs.guangtouRef.list[0].option[whereKeys[i]]
+                                if (that[whereKeys[i]].length == 1) {
+                                    if (that.guangtouParam.content.where[position]) that.guangtouParam.content.where[whereKeys[i]] = that[whereKeys[i]][0].value
+                                    if (that.timer) clearTimeout(that.timer)
+                                    that.timer = setTimeout(() => {
+                                        that.$refs.guangtouRef&&that.$refs.guangtouRef.listData()
+                                    })
+                                } else if (that[whereKeys[i]].length > 1) {
+                                    that.guangtouParam.content.where[whereKeys[i]] = ''
+                                }
+
+                                if (that.$refs.guangtouRef.list[0].option[whereKeys[i]].length>1) {
+                                    isbreak = true
+                                }
+                            }
+                        } else {
+                            if (i >= index) that[whereKeys[i]] = []
+                        }
+                    }
+                }
+            }
+            function _changeOption2 () {
+                that.loading = false
+                let isbreak=false
+                for (let i = 5; i < whereKeys.length; i++) {
+                    if (isbreak) break;
+                    if (whereKeys[i].indexOf('condition') == -1) {
+                        if (that.$refs.excelRef.list.length) {
+                            if (i >= index) {
+                                that[whereKeys[i]] = that.$refs.excelRef.list[0].option[whereKeys[i]]
+                                if (that[whereKeys[i]].length == 1) {
+                                    if (that.excelParam.content.where[position]) that.excelParam.content.where[whereKeys[i]] = that[whereKeys[i]][0].value
+                                    if (that.timer) clearTimeout(that.timer)
+                                    that.timer = setTimeout(() => {
+                                        that.$refs.excelRef&&that.$refs.excelRef.listData()
+                                    })
+                                } else if (that[whereKeys[i]].length > 1) {
+                                    that.excelParam.content.where[whereKeys[i]] = ''
+                                }
+                                if (that.$refs.excelRef.list[0].option[whereKeys[i]].length>1) {
+                                    isbreak = true
+                                }
+                            }
+                        } else {
+                            if (i >= index) that[whereKeys[i]] = []
+                        }
+                    }
+                }
+            }
+        },
+        guangtouChange (val) {
+            switch (val) {
+                case '电动':
+                    this.excelParam = {
+                        "id": 20240718162202,
+                        "content": {
+                            "itemid": 0,//光头id
+                            "pageNumber": 1,
+                            "pageSize": 20,
+                            "sa_lectotypecfgid":this.$route.query.id,
+                            "where": {
+                                "condition1": "",
+                                "condition2": "",
+                                "torque": "", //阀门扭矩
+                                "flh": "", //法兰号
+                                "actuatorbrand": "", //品牌
+                                "actuatordrivetype": "", //驱动方式
+                                "maxsquarewidth": "", //方阀杆最大宽度
+                                "maxrounddiameter": "" //圆阀杆最大直径
+                            }
+                        },
+                    }
+                    break;
+                case '气动':
+                    
+                this.excelParam = {
+                    "id": 20240718162302,
+                    "content": {
+                        "pageNumber": 1,
+                        "pageSize": 20,
+                        "sa_lectotypecfgid":this.$route.query.id,
+                        "where": {
+                            "condition1": "",
+                            "torque": "", //阀门扭矩
+                            "flh": "", //法兰号
+                            "maxsquarewidth": "", //方阀杆最大宽度
+                            "maxrounddiameter": "", //圆阀杆最大直径
+                            "actuatorbrand": "", //品牌
+                            "func": "", //功能
+                            "bodystructure": "", //结构
+                            "drivetype":'气动调节',
+                        }
+                    },
+                }
+                break;
+                default:
+                    break;
+            }
+        },
+        async onSubmit () {
+            let res = await this.$api.requested({
+                "content": {
+                    "sa_lectotypecfgid": this.$route.query.id
+                },
+                "id": 2024072414593102,
+            })
+            this.$confirm(res.data ? res.data : '确认提交数据吗?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+            }).then(async () => {
+                let mainvalve = Object.keys(this.guangtouParam.content.where).filter(v => v.indexOf('condition') == -1).reduce((result,item) => {
+                    result[item] = this.guangtouParam.content.where[item]
+                    return result
+                },{})
+                let actuator = Object.keys(this.excelParam.content.where).filter(v => v.indexOf('condition') == -1).reduce((result,item) => {
+                    result[item] = this.excelParam.content.where[item]
+                    return result
+                },{})
+                let param = {
+                    "id": 2024071809123402,
+                    "content": {
+                        "sa_lectotypecfgid": this.$route.query.id,
+                        "projectname": this.data.projectname,
+                        "enterprisename": this.data.enterprisename,
+                        "source": this.data.source,
+                        "sourceid": this.$route.query.id,
+                        "sourcetable": this.data.sourcetable,
+                        "valvetype":this.valvetype(),
+                        "filter": {
+                            "mainvalve": mainvalve,
+                            "actuator": actuator,
+                            "other": {
+                                fujianArr:this.fujianArr
+                            }
+                        },
+                        "part_itemids": this.resultArr
+                    },
+                }
+                this.$emit('handleParam',param)
+                let res = await this.$api.requested(param)
+                this.tool.showMessage(res,() => {
+                    this.close()
+                    this.$emit('onEditSuccess')
+                })
+            }).catch(() => {
+            })
+            
+        },
+        //选择目标
+        selectTarget (data,type) {
+            this.isEdit = true
+            data.parttype = type
+            if (type == '主阀') {
+                this.resultArr[0] = data
+                
+                if (this.guangtouParam.content.where.drivetype == '气动') {
+                    this.isFujianShow = true
+                } else {
+                    this.isFujianShow = false
+                }
+                this.guangtouChange(this.guangtouParam.content.where.drivetype)
+                this.excelParam.content.itemid = data.itemid
+                this.excelParam.content.where.torque = data.torque
+                this.excelParam.content.where.flh = data.flh
+                this.excelParam.content.where.maxsquarewidth = data.maxsquarewidth
+                this.excelParam.content.where.maxrounddiameter = data.maxrounddiameter
+                this.$nextTick(() => {
+                    this.$refs.excelRef.listData(() => {
+                        if (!this.$refs.excelRef.list.length) return
+                        this.actuatorbrand = this.$refs.excelRef.list[0].option.actuatorbrand
+                        this.bodystructure = this.$refs.excelRef.list[0].option.bodystructure
+                        this.func = this.$refs.excelRef.list[0].option.func
+                    })
+                })
+                this.activePosition = '执行器'
+            } else if (type == '执行器') {
+                this.resultArr[1] = data
+                this.resultArr[1].itenname = this.resultArr[1].actuatormodel
+
+                if (this.guangtouParam.content.where.drivetype == '电动') {
+                    if (this.resultArr.length == 3) {
+                        this.resultArr[2] = {parttype:'减速箱',itemid:this.resultArr[1].gearboxid}
+                    } else {
+                        this.resultArr.push({parttype:'减速箱',itemid:this.resultArr[1].gearboxid})
+                    }
+                }
+
+                if (this.excelParam.content.where.drivetype == '气动调节') {
+                    this.fujianParam.content.othertypes = ['定位器','过滤减压阀']
+                } else {
+                    this.fujianParam.content.othertypes = ['电磁阀','限位开关','过滤减压阀']
+                }
+
+                this.fujianArr = []
+                if (this.guangtouParam.content.where.drivetype == '电动') {
+                    this.resultArr.splice(3,this.resultArr.length - 1)
+                } else {
+                    this.resultArr.splice(2,this.resultArr.length - 1)
+                }
+
+                data.itemid = data.actuatorid
+                data.itemname = data.actuatormodel
+                if (this.isFujianShow) {
+                    this.activePosition = '辅件'
+                    this.$refs.fujianRef.listData()
+                } else {
+                    this.onSubmit()
+                }
+            } else {
+                this.resultArr.push(data)
+                if (this.fujianArr.filter(item=>item.itemid==data.itemid).length) return
+                this.fujianParam.content.othertypes.splice(this.fujianParam.content.othertypes.indexOf(data.itemname),1)
+                this.loading = true
+                this.$refs.fujianRef.listData(()=> {
+                    this.fujianArr.push(data)
+                    this.loading = false
+                })
+                
+            }
+        },
+        handleClose (tag) {
+            this.fujianArr = this.fujianArr.filter(item => {
+                if (item.itemid != tag.itemid) {
+                    return item
+                } else {
+                    this.fujianParam.content.othertypes.push(item.itemname)
+                }
+            })
+            this.resultArr = this.resultArr.filter(item => {
+                if (item.itemid != tag.itemid) {
+                    return item
+                }
+            })
+            
+            this.$refs.fujianRef.listData()
+        },
+        //选项
+        optionsList () {
+            this.$store.dispatch("optiontypeselect", "caliber").then((res) => {
+                this.caliber = res.data;
+            });
+            this.drivetype = [{remarks:'电动',value:'电动'},{remarks:'气动',value:'气动'}];
+        }
+    },
+    created () {
+        this.optionsList()
+    },
+    mounted () {
+        this.init()
+    }
+}
+</script>
+
+<style scoped>
+    
+    .product-content {
+
+    }
+    .product-content .block {
+        margin-top: 30px;
+        padding-left: 20px;
+    }
+    .product-content .block .header {
+        display: flex;
+        align-content: center;
+        align-items: center;
+        margin-bottom: 20px;
+    }
+    .product-content .block .header .title {
+        font-size: 16px;
+        font-weight: bold;
+        margin-right: 20px;
+    }
+    .product-content .block .header .handle {
+        display: flex;
+    }
+    
+    .dialog-content {
+
+    }
+    .dialog-content .option-line {
+        display: flex;
+        margin-top: 20px;
+    }
+    .dialog-content .option-line .item {
+        display: flex;
+        align-items: center;
+        font-size: 14px;
+        font-weight: 500px;
+        margin-right: 20px;
+    }
+    .dialog-content .option-line .item .label {
+        width: 70px;
+        flex-shrink: 0;
+        text-align: right;
+        margin-right: 15px;
+        color: #000000 !important;
+    }
+    .descript {
+       font-size:12px;
+       color:red;
+    }
+</style>

+ 85 - 0
src/optionSystem/optionOrder/detail/modules/edit.vue

@@ -0,0 +1,85 @@
+<template>
+    <div>
+        <el-button type="primary" size="mini" @click="onShow" :disabled="data.createuserid != userid || data.status == '无需评审'"> 编辑 </el-button>
+        <el-dialog custom-class="custom-select-option_class" :visible.sync="drawer" width="1100px" append-to-body :show-close="false">
+            <component ref="target" @close="drawer=false" :is="formComponent" :data="data" @onEditSuccess="onEditSuccess"></component>
+        </el-dialog>
+    </div>
+  </template>
+<script>
+import { mapGetters } from "vuex";
+export default {
+    props:['data'],
+    data() {
+        return {
+        drawer: false,
+        type: "",
+        userid:JSON.parse(sessionStorage.getItem('active_account')).userid
+        };
+    },
+    provide () {
+        return {
+        valvetype:() => this.type,
+        }
+    },
+    computed: {
+        ...mapGetters({
+        loading: "loading",
+    }),
+
+    formComponent() {
+        switch (this.type) {
+            case "蝶阀":
+            return () =>
+                import("@/optionSystem/optionOrder/detail/modules/components/DieFa.vue");
+            break;
+            default:
+            break;
+        }
+    },
+},
+methods: {
+    onShow() {
+        this.type = this.data.valvetype;
+        this.drawer = true;
+        if (this.$refs.target) {
+            this.$refs.target.init()
+        }
+    },
+    onSubmit() {
+        this.$refs.target.$refs['form'].validate(async (valid) => {
+            if (!valid) return false
+            this.$refs.target.onSubmit(() => {
+            this.$refs.target.refresh()
+            this.drawer = false
+            })
+        });
+    },
+    onEditSuccess () {
+        this.$emit('onEditSuccess')
+    }
+},
+created () {
+}
+};
+</script>
+<style scoped>
+.dialog-footer {
+    margin-top: 32px;
+    text-align: center;
+}
+/deep/.el-dialog__header {
+    display: none !important;
+}
+/deep/.el-dialog__body {
+    padding-top: 0 !important;
+}
+</style>
+<style>
+@media screen and (max-width:1800px) {
+    .custom-select-option_class.el-dialog {
+        margin-top: 10px !important;
+    }
+}
+</style>
+    

+ 6 - 4
src/optionSystem/optionOrder/index.vue

@@ -24,8 +24,10 @@
           size="small"
           clearable
         >
-          <el-option label="新建" value="新建"></el-option>
-          <el-option label="审核" value="审核"></el-option>
+          <el-option label="无需评审" value="无需评审"></el-option>
+          <el-option label="待评审" value="待评审"></el-option>
+          <el-option label="评审中" value="评审中"></el-option>
+          <el-option label="评审拒绝" value="评审拒绝"></el-option>
         </el-select>
       </div>
       <div class="mt-10" style="margin-right:10px">
@@ -50,7 +52,7 @@
             ? 'color:#000000'
             : scope.data.column.data.status === '无需评审'
               ? 'color:rgb(82, 196, 26)'
-              : scope.data.column.data.status === '待审'
+              : scope.data.column.data.status === '待审'
                 ? 'color:#3874f6' : 'color:red'
         "
         v-if="scope.data.column.columnname === 'status'"
@@ -58,7 +60,7 @@
         {{ scope.data.column.data.status }}
       </div>
       <div v-else-if="scope.data.column.columnname === 'price'">
-        {{ tool.formatAmount(scope.data.column.data.marketprice, 2) }}
+        {{ tool.formatAmount(scope.data.column.data.price, 2) }}
       </div>
       <p v-else>{{ scope.data.column.data[[scope.data.column.columnname]] }}</p>
     </template>

+ 93 - 0
src/optionSystem/selectOption/add.vue

@@ -0,0 +1,93 @@
+<template>
+    <div style="display: inline;">
+      <el-dropdown @command="onShow">
+        <el-button type="primary" size="small"> 阀门选型 </el-button>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item :command="item.value" v-for="item in valvetypeList" :key="item.value">{{ item.remarks }}</el-dropdown-item>
+        </el-dropdown-menu>
+        </el-dropdown>
+        <el-dialog custom-class="custom-select-option_class" :visible.sync="drawer" width="1100px" append-to-body :show-close="false">
+            <component :position="position" @close="drawer=false" :is="formComponent" v-on="$listeners"></component>
+        </el-dialog>
+    </div>
+  </template>
+    
+<script>
+import { mapGetters } from "vuex";
+export default {
+    props:['position'],
+    data() {
+        return {
+        drawer: false,
+        type: "",
+        valvetypeList:[]
+        };
+    },
+    provide () {
+        return {
+        valvetype:() => this.type
+        }
+    },
+    computed: {
+        ...mapGetters({
+        loading: "loading",
+    }),
+
+    formComponent() {
+        switch (this.type) {
+            case "蝶阀":
+            return () =>
+                import("@/optionSystem/selectOption/components/DieFa.vue");
+            break;
+            default:
+            break;
+        }
+    },
+},
+methods: {
+    onShow(type) {
+    this.type = type;
+    this.drawer = true;
+    },
+    onSubmit() {
+        this.$refs.target.$refs['form'].validate(async (valid) => {
+            if (!valid) return false
+            this.$refs.target.onSubmit(() => {
+            this.$refs.target.refresh()
+            this.drawer = false
+            })
+        });
+    },
+optionList() {
+    this.$store.dispatch("optiontypeselect", "valvetype").then((res) => {
+        this.valvetypeList = res.data;
+        console.log(this.valvetypeList, "阀门类型");
+    });
+},
+},
+created () {
+    this.optionList()
+}
+};
+</script>
+<style scoped>
+.dialog-footer {
+    margin-top: 32px;
+    text-align: center;
+}
+/deep/.el-dialog__header {
+    display: none !important;
+}
+/deep/.el-dialog__body {
+    padding-top: 0 !important;
+}
+</style>
+<style>
+@media screen and (max-width:1800px) {
+    .custom-select-option_class.el-dialog {
+        margin-top: 10px !important;
+    }
+}
+
+</style>
+    

+ 738 - 0
src/optionSystem/selectOption/components/DieFa.vue

@@ -0,0 +1,738 @@
+<template>
+  <div>
+    <el-tabs v-model="activePosition">
+        <el-tab-pane label="选光头" name="光头" :disabled="activePosition!='光头'">
+            <div class="dialog-content">
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">公称通径:</div>
+                        <el-select v-model="guangtouParam.content.where.caliber" placeholder="请选择公称通径" size="small" style="width:100%" clearable @change="Search('guangtouParam','caliber')">
+                            <el-option v-for="item in caliber" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">公称压力:</div>
+                        <el-select @change="Search('guangtouParam','nominalpressure')" :disabled="!guangtouParam.content.where.caliber" v-model="guangtouParam.content.where.nominalpressure" placeholder="请选择公称压力" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in nominalpressure" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">连接方式:</div>
+                        <MySelect @click="Search('guangtouParam','connection')" :disabled="!guangtouParam.content.where.nominalpressure" :options="connection" v-model="guangtouParam.content.where.connection"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">阀体材质:</div>
+                        <el-select @change="Search('guangtouParam','bodymaterial')" :disabled="!guangtouParam.content.where.connection" v-model="guangtouParam.content.where.bodymaterial" placeholder="请选择阀体材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in bodymaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">阀杆材质:</div>
+                        <el-select @change="Search('guangtouParam','stemmaterial')" :disabled="!guangtouParam.content.where.bodymaterial" v-model="guangtouParam.content.where.stemmaterial" placeholder="请选择阀杆材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in stemmaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="item">
+                        <div class="label">阀座材质:</div>
+                        <el-select @change="Search('guangtouParam','plinthmaterial')" :disabled="!guangtouParam.content.where.stemmaterial" v-model="guangtouParam.content.where.plinthmaterial" placeholder="请选择阀座材质" size="small" style="width:100%" clearable>
+                            <el-option v-for="item in plinthmaterial" :key="item.value" :value="item.value" :label="item.remarks"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">驱动方式:</div>
+                        <MySelect @click="guangtouChange();Search('guangtouParam','drivetype')" :options="drivetype" v-model="guangtouParam.content.where.drivetype"></MySelect>
+                    </div>
+                </div>
+                <!--光头-->
+                <MyTable :height="tableHeight" ref="guangtouRef" :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols" :param="guangtouParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                    <template v-slot:customcol="scope">
+                        <p>{{scope.column.data[scope.column.columnname]}}</p>
+                    </template>
+                    <template v-slot:opreation="scope">
+                        <el-button type="text" size="mini" @click="selectTarget(scope.data,'主阀')" :disabled="!guangtouParam.content.where.drivetype">选择</el-button>
+                    </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+
+        <el-tab-pane label="选执行器" name="执行器"  :disabled="activePosition!='执行器'">
+            <div class="dialog-content">
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">光头:</div>
+                        <MySelect 
+                            v-if="resultArr.length"
+                            :higit="true"
+                            :options="[{
+                                remarks:`${resultArr[0].itemname}`,value:`${resultArr[0].itemid}`
+                            }]" 
+                            v-model="gangtou"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='光头';isFujianShow=false;resultArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">执行器:</div>
+                        <el-input
+                            placeholder="型号/料号"
+                            v-model="excelParam.content.where.condition1"
+                            clearable
+                            @clear="Search('excelParam')"
+                            size="small"
+                            @keyup.enter.native="Search('excelParam')">
+                        </el-input>
+                    </div>
+
+                    <div class="item" v-if="guangtouParam.content.where.drivetype!='气动'">
+                        <div class="label">减速箱:</div>
+                        <el-input
+                            placeholder="型号/料号"
+                            v-model="excelParam.content.where.condition2"
+                            clearable
+                            @clear="Search('excelParam')"
+                            size="small"
+                            @keyup.enter.native="Search('excelParam')">
+                        </el-input>
+                    </div>
+                </div>
+
+                <div class="option-line" v-if="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">驱动方式:</div>
+                        <MySelect :isClear="false" :options="[{remarks:'气动调节',value:'气动调节'},{remarks:'气动开关',value:'气动开关'}]" v-model="excelParam.content.where.drivetype"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">品牌:</div>
+                        <MySelect @click="Search('excelParam','actuatorbrand')" :options="actuatorbrand" v-model="excelParam.content.where.actuatorbrand"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line" v-show="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">功能:</div>
+                        <MySelect :disabled="!excelParam.content.where.actuatorbrand" @click="Search('excelParam','func')" :options="func" v-model="excelParam.content.where.func"></MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line" v-show="guangtouParam.content.where.drivetype=='气动'">
+                    <div class="item">
+                        <div class="label">结构:</div>
+                        <MySelect :disabled="!excelParam.content.where.func"  @click="Search('excelParam','bodystructure')" :options="bodystructure" v-model="excelParam.content.where.bodystructure"></MySelect>
+                    </div>
+                </div>
+
+                <!--执行器-->
+                <MyTable :height="tableHeight" :noQuery="true" ref="excelRef" :layout="guangtouParam.content.where.drivetype=='电动'?tool.tabelCol($route.name)['excelTable1'].tablecols:tool.tabelCol($route.name)['excelTable2'].tablecols" :param="excelParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                    <template v-slot:customcol="scope">
+                        <p v-if="scope.column.columnname == 'matchratio'" style="color:red">{{scope.column.data[scope.column.columnname]}}</p>
+                        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+                    </template>
+                    <template v-slot:opreation="scope">
+                        <el-button type="text" size="mini" @click="selectTarget(scope.data,'执行器')">选择</el-button>
+                    </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+
+        <el-tab-pane label="选辅件" name="辅件"  :disabled="activePosition!='辅件'" v-if="isFujianShow">
+            <div class="dialog-content">
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">光头:</div>
+                        <MySelect 
+                            v-if="resultArr.length"
+                            :higit="true"
+                            :options="[{remarks:`${resultArr[0].itemname}`,value:`${resultArr[0].itemid}`}]" 
+                            v-model="gangtou"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='光头';isFujianShow=false;resultArr=[];fujianArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label">执行器:</div>
+                        <MySelect 
+                            v-if="resultArr.length>=2"
+                            :higit="true"
+                            :options="[{remarks:resultArr[1].actuatormodel,value:resultArr[1].itemid}]" 
+                            v-model="excel"
+                            :isClear="false"
+                        >
+                            <el-button slot="custom" type="text" size="mini" @click="activePosition='执行器';resultArr.splice(1);fujianArr=[]">重选</el-button>
+                        </MySelect>
+                    </div>
+                </div>
+
+                <div class="option-line">
+                    <div class="item">
+                        <div class="label" style="width:50px !important">辅件:</div>
+                        <div style="display: flex">
+                            <el-tag size="small" closable v-for="item in fujianArr" :key="item.itemid" style="margin-right: 10px" @close="handleClose(item)">{{ item.model }}:{{ item.itemname }}</el-tag>    
+                        </div>
+                    </div>
+                </div>
+
+                <!--辅件-->
+                <MyTable :noQuery="true" ref="fujianRef" :height="tableHeight" :layout="tool.tabelCol($route.name)['itemList'].tablecols" :param="fujianParam" :opwidth="200" :custom="true" style="margin-top: 25px">
+                <template v-slot:customcol="scope">
+                    <p>{{scope.column.data[scope.column.columnname]}}</p>
+                </template>
+                <template v-slot:opreation="scope">
+                    <el-button type="text" size="mini" @click="selectTarget(scope.data,'辅件')" :disabled="loading">选择</el-button>
+                </template>
+                </MyTable>
+            </div>
+        </el-tab-pane>
+        <el-tab-pane label="确认配置" name="配置" :disabled="activePosition!='配置'">
+            <div class="dialog-content">
+                <div class="option-line">
+                    <div class="item">
+                        <span class="label" style="font-weight: bold">成品料号:</span>
+                        <span style="color: #3874f6;font-size: 14px;font-weight: bold">{{ Object.keys(product).length ? product.itemno||'暂无成品' : '' }}</span>
+                    </div>
+                    <div class="item">
+                        <span class="label" style="font-weight: bold">{{product.itemno?'牌价':'预估价格'}}:</span>
+                        <span style="color: red;font-size: 14px;font-weight: bold">{{ Object.keys(product).length ? tool.formatAmount(product.price,2) : 'xxxxxx' }}</span>
+                    </div>
+                </div>
+                <MyTable height="400" ref="resultTable" :layout="tool.tabelCol($route.name)['reslutList'].tablecols" :data="resultArr" :opwidth="200" :custom="true" style="margin-top: 25px">
+                    <template v-slot:customcol="scope">
+                        <p v-if="scope.column.columnname == 'model'">{{ scope.column.data.actuatormodel }}/{{ scope.column.data.spec }}</p>
+                        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+                    </template>
+                </MyTable>
+            </div>
+            
+        </el-tab-pane>
+    </el-tabs>
+
+    <div class="dialog-footer">
+        <el-button size="small" @click="close" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="activePosition='配置'" class="normal-btn-width" v-if="activePosition == '辅件'" :disabled="$refs.fujianRef.list.length!= 0">下一步</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width" v-if="activePosition == '配置'">加入{{ position }}</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import MySelect from '@/optionSystem/FProductManage/modules/select.vue'
+import MyTable from '@/optionSystem/FProductManage/modules/table.vue'
+export default {
+    props:['position'],
+    components:{MySelect,MyTable},
+    inject:['valvetype'],
+    data () {
+        return {
+            tableHeight:'200px',
+            excel:'',
+            gangtou:'',
+            resultArr:[],
+            activePosition:'光头',
+            
+            caliber:[],
+            nominalpressure:[],
+            connection:[],
+            bodymaterial:[],
+            stemmaterial:[],
+            plinthmaterial:[],
+            actuatorbrand:[],
+            actuatordrivetype:[],
+            drivetype:[],
+            bodystructure:[],
+            func:[],
+            guangtouList:[],
+            isFujianShow:false,//辅件是否显示
+            form: {
+                "itemid": 0,
+                "plm_itemextendid": 0,
+                "valvetype": "蝶阀", //阀门类型(固定)
+                "itemno": "", //产品编码(必填,唯一)
+                "itemname": "", //产品名称(必填)
+                "erpitemno": "", //erp品号(必填)
+                "erpitemname": "", //erp品名(必填)
+                "spec": "", //规格尺寸(必填)
+                "model": "", //型号(必填)
+                "material": "", //材质(必填,选项)
+                "marketprice": '',
+                "caliber": "", //公称通径
+                "nominalpressure": [
+                    
+                ], //公称压力
+                "connection": "",
+                "drivetype": [
+             
+                ], //驱动方式
+                "valveplatematerial": "",
+                "bodymaterial": "",
+                "stemmaterial": "",
+                "plinthmaterial": "",
+                "torque": "", //
+                "maxruntime": "", //90°最大运行时间
+                "actuatorbrand":"",//执行器品牌
+                "actuatordrivetype":"",//执行器类型
+                "part_itemids": [
+                    
+                ]
+            },
+            guangtouParam: {
+                "id": 20240718162102,
+                "content": {
+                    "pageNumber": 1,
+                    "pageSize": 20,
+                    "where": {
+                        "condition": "",
+                        "caliber": "", //公称通径
+                        "nominalpressure": "", //公称压力
+                        "connection": "", //连接方式
+                        "bodymaterial": "", //阀体材质
+                        "stemmaterial": "", //阀杆材质
+                        "plinthmaterial": "", //阀座材质
+                        "drivetype": "电动" //驱动方式
+                    }
+                },
+            },
+            excelList:[],
+            excelParam: {
+                "id": 20240718162202,
+                "content": {
+                    "itemid": "",//光头id
+                    "pageNumber": 1,
+                    "pageSize": 20,
+                    "where": {
+                        "condition1": "",
+                        "condition2": "",
+                        "torque": "", //阀门扭矩
+                        "flh": "", //法兰号
+                        "actuatorbrand": "", //品牌
+                        "actuatordrivetype": "", //驱动方式
+                        "maxsquarewidth": "", //方阀杆最大宽度
+                        "maxrounddiameter": "" //圆阀杆最大直径
+                    }
+                },
+            },
+            fujianList:[],
+            fujianArr:[],
+            loading:false,
+            fujianParam: {
+                "id": 20240718162402,
+                "content": {
+                    "othertypes": [
+                    ],
+                    "pageNumber": 1,
+                    "pageSize": 300,
+                    "where": {
+                        "actuatorbrand": "" //品牌
+                    }
+                },
+            },
+            timer:null,
+            product:{}
+        }
+    },
+    watch: {
+        activePosition (val) {
+            if (val == '配置') {
+                if (this.guangtouParam.content.where.drivetype == '电动') {
+                    if (this.resultArr[1].gearboxid) this.resultArr.push({parttype:'减速箱',itemid:this.resultArr[1].gearboxid,itemname:this.resultArr[1].gearboxname,actuatorbrand:this.resultArr[1].actuatorbrand})
+                }
+                this.$api.requested({
+                    "id": 2024071916224702,
+                    "content": {
+                        "part_itemids": this.resultArr.map(item => {
+                            return {
+                                parttype:item.parttype,
+                                itemid:item.itemid
+                            }
+                        })
+                    },
+                }).then(res => {
+                    this.product = res.data
+                })
+            }
+        }
+    },
+    methods: {
+        close () {
+            this.activePosition = '光头'
+            this.guangtouParam.content.where.drivetype = '电动'
+            this.resultArr = []
+            this.fujianArr = []
+            this.$emit('close')
+        },
+        //搜索
+        Search (type,position) {
+            let index = 0
+            let whereKeys = Object.keys(this[type].content.where)
+            if (position) {
+                index = whereKeys.indexOf(position) + 1
+            }
+            if (type != 'excelParam') {
+                for (let i = index; i < whereKeys.length - 1; i++) {
+                    if (!position && whereKeys[i].indexOf('condition') != -1) continue
+                    this[type].content.where[whereKeys[i]] = ''            
+                }
+            } else if (type == 'excelParam') {
+                for (let i = index; i < whereKeys.length; i++) {
+                    if (whereKeys[i].indexOf('condition') != -1 || whereKeys[i].indexOf('flh') != -1 || whereKeys[i].indexOf('maxrounddiameter') != -1 || whereKeys[i].indexOf('maxsquarewidth') != -1 || whereKeys[i].indexOf('torque') != -1 || whereKeys[i].indexOf('drivetype') != -1) continue
+                    this[type].content.where[whereKeys[i]] = ''
+                }
+            }
+            switch (type) {
+                case 'guangtouParam':
+                    if (this.loading) return
+                    this.loading = true
+                    whereKeys = whereKeys.filter(item => item != 'caliber')
+                    this.$refs.guangtouRef&&this.$refs.guangtouRef.listData(_changeOption)
+                    break;
+                case 'excelParam':
+                    if (this.loading) return
+                    this.loading = true
+                    this.$nextTick(() => {
+                        this.$refs.excelRef&&this.$refs.excelRef.listData(_changeOption2)
+                    })
+                    break;
+                default:
+                    break;
+            }
+            //更新选项列表
+            let that = this
+            function _changeOption () {
+                that.loading = false
+                let isbreak=false
+                for (let i = 0; i < whereKeys.length; i++) {
+                    if (isbreak) break;
+                    if (whereKeys[i].indexOf('condition') == -1) {
+                        if (that.$refs.guangtouRef.list.length) {
+                            if (i >= index-1) {
+                                that[whereKeys[i]] = that.$refs.guangtouRef.list[0].option[whereKeys[i]]
+                                if (that[whereKeys[i]].length == 1) {
+                                    if (that.guangtouParam.content.where[position]) that.guangtouParam.content.where[whereKeys[i]] = that[whereKeys[i]][0].value
+                                    if (that.timer) clearTimeout(that.timer)
+                                    that.timer = setTimeout(() => {
+                                        that.$refs.guangtouRef&&that.$refs.guangtouRef.listData()
+                                    })
+                                } else if (that[whereKeys[i]].length > 1) {
+                                    that.guangtouParam.content.where[whereKeys[i]] = ''
+                                }
+
+                                if (that.$refs.guangtouRef.list[0].option[whereKeys[i]].length>1) {
+                                    isbreak = true
+                                }
+                            }
+                        } else {
+                            if (i >= index) that[whereKeys[i]] = []
+                        }
+                    }
+                }
+            }
+            function _changeOption2 () {
+                that.loading = false
+                let isbreak=false
+                for (let i = 5; i < whereKeys.length; i++) {
+                    if (isbreak) break;
+                    if (whereKeys[i].indexOf('condition') == -1) {
+                        if (that.$refs.excelRef.list.length) {
+                            if (i >= index) {
+                                that[whereKeys[i]] = that.$refs.excelRef.list[0].option[whereKeys[i]]
+                                console.log(whereKeys[i],whereKeys,i,index);
+                                
+                                if (that[whereKeys[i]].length == 1) {
+                                    if (that.excelParam.content.where[position]) that.excelParam.content.where[whereKeys[i]] = that[whereKeys[i]][0].value
+                                    if (that.timer) clearTimeout(that.timer)
+                                    that.timer = setTimeout(() => {
+                                        that.$refs.excelRef&&that.$refs.excelRef.listData()
+                                    })
+                                } else if (that[whereKeys[i]].length > 1) {
+                                    that.excelParam.content.where[whereKeys[i]] = ''
+                                }
+                                if (that.$refs.excelRef.list[0].option[whereKeys[i]].length>1) {
+                                    isbreak = true
+                                }
+                            }
+                        } else {
+                            if (i >= index) that[whereKeys[i]] = []
+                        }
+                    }
+                }
+            }
+        },
+        guangtouChange (val) {
+            switch (val) {
+                case '电动':
+                    this.excelParam = {
+                        "id": 20240718162202,
+                        "content": {
+                            "itemid": 0,//光头id
+                            "pageNumber": 1,
+                            "pageSize": 20,
+                            "where": {
+                                "condition1": "",
+                                "condition2": "",
+                                "torque": "", //阀门扭矩
+                                "flh": "", //法兰号
+                                "actuatorbrand": "", //品牌
+                                "actuatordrivetype": "", //驱动方式
+                                "maxsquarewidth": "", //方阀杆最大宽度
+                                "maxrounddiameter": "" //圆阀杆最大直径
+                            }
+                        },
+                    }
+                    break;
+                case '气动':
+                    
+                this.excelParam = {
+                    "id": 20240718162302,
+                    "content": {
+                        "pageNumber": 1,
+                        "pageSize": 20,
+                        "where": {
+                            "condition1": "",
+                            "torque": "", //阀门扭矩
+                            "flh": "", //法兰号
+                            "maxsquarewidth": "", //方阀杆最大宽度
+                            "maxrounddiameter": "", //圆阀杆最大直径
+                            "actuatorbrand": "", //品牌
+                            "func": "", //功能
+                            "bodystructure": "", //结构
+                            "drivetype":'气动调节',
+                        }
+                    },
+                }
+                break;
+                default:
+                    break;
+            }
+        },
+        async onSubmit () {
+            this.$confirm('确认提交数据吗?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+            }).then(async () => {
+                let mainvalve = Object.keys(this.guangtouParam.content.where).filter(v => v.indexOf('condition') == -1).reduce((result,item) => {
+                    result[item] = this.guangtouParam.content.where[item]
+                    return result
+                },{})
+                let actuator = Object.keys(this.excelParam.content.where).filter(v => v.indexOf('condition') == -1).reduce((result,item) => {
+                    result[item] = this.excelParam.content.where[item]
+                    return result
+                },{})
+
+                let param = {
+                    "id": 2024071809123402,
+                    "content": {
+                        "sa_lectotypecfgid": 0,
+                        "projectname": "",
+                        "enterprisename": "",
+                        "source": "",
+                        "sourceid": this.$route.query.id,
+                        "sourcetable": "",
+                        "valvetype":this.valvetype(),
+                        "filter": {
+                            "mainvalve": mainvalve,
+                            "actuator": actuator,
+                            "other": {
+                                fujianArr:this.fujianArr
+                            }
+                        },
+                        "part_itemids": this.resultArr
+                    },
+                }
+                this.$emit('handleParam',param)
+                let res = await this.$api.requested(param)
+                this.tool.showMessage(res,() => {
+                    this.close()
+                })
+            }).catch(() => {
+            })
+            
+        },
+        //选择目标
+        selectTarget (data,type) {
+            data.parttype = type
+            this.resultArr.push(data)
+            if (type == '主阀') {
+                if (this.guangtouParam.content.where.drivetype == '气动') this.isFujianShow = true
+                this.guangtouChange(this.guangtouParam.content.where.drivetype)
+                this.excelParam.content.itemid = data.itemid
+                this.excelParam.content.where.torque = data.torque
+                this.excelParam.content.where.flh = data.flh
+                this.excelParam.content.where.maxsquarewidth = data.maxsquarewidth
+                this.excelParam.content.where.maxrounddiameter = data.maxrounddiameter
+                this.$nextTick(() => {
+                    this.$refs.excelRef.listData(() => {
+                        if (!this.$refs.excelRef.list.length) return
+                        this.actuatorbrand = this.$refs.excelRef.list[0].option.actuatorbrand
+                        this.bodystructure = this.$refs.excelRef.list[0].option.bodystructure
+                        this.func = this.$refs.excelRef.list[0].option.func
+                    })
+                })
+                
+
+                this.activePosition = '执行器'
+            } else if (type == '执行器') {
+                this.resultArr[1].itenname = this.resultArr[1].actuatorname
+                this.resultArr[1].itemno = this.resultArr[1].actuatorno
+
+                if (this.excelParam.content.where.drivetype == '气动调节') {
+                    this.fujianParam.content.othertypes = ['定位器','过滤减压阀']
+                } else {
+                    this.fujianParam.content.othertypes = ['电磁阀','限位开关','过滤减压阀']
+                }
+                data.itemid = data.actuatorid
+                data.itemname = data.actuatorname
+                if (this.isFujianShow) {
+                    this.activePosition = '辅件'
+                    this.$refs.fujianRef.listData()
+                } else {
+                    this.activePosition = '配置'
+                }
+            } else {
+                if (this.fujianArr.filter(item=>item.itemid==data.itemid).length) return
+                this.fujianParam.content.othertypes.splice(this.fujianParam.content.othertypes.indexOf(data.itemname),1)
+                this.loading = true
+                this.$refs.fujianRef.listData(()=> {
+                    this.fujianArr.push(data)
+                    this.loading = false
+                })
+                
+            }
+            this.resultArr[this.resultArr.length - 1] = data
+        },
+        handleClose (tag) {
+            this.fujianArr = this.fujianArr.filter(item => {
+                if (item.itemid != tag.itemid) {
+                    return item
+                } else {
+                    this.fujianParam.content.othertypes.push(item.itemname)
+                }
+            })
+            this.resultArr = this.resultArr.filter(item => {
+                if (item.itemid != tag.itemid) {
+                    return item
+                }
+            })
+            
+            this.$refs.fujianRef.listData()
+        },
+        //选项
+        optionsList () {
+            this.$store.dispatch("optiontypeselect", "caliber").then((res) => {
+                this.caliber = res.data;
+                console.log(this.caliber, "公称通径");
+            });
+            this.$store.dispatch("optiontypeselect", "pressure").then((res) => {
+                this.nominalpressure = res.data;
+                console.log(this.nominalpressure, "公称压力");
+            });
+            this.$store.dispatch("optiontypeselect", "connection").then((res) => {
+                this.connection = res.data;
+                console.log(this.connection, "连接方式");
+            });
+            this.$store.dispatch("optiontypeselect", "bodymaterial").then((res) => {
+                this.bodymaterial = res.data;
+                console.log(this.bodymaterial, "阀体材质");
+            });
+            this.$store.dispatch("optiontypeselect", "stemmaterial").then((res) => {
+                this.stemmaterial = res.data;
+                console.log(this.stemmaterial, "阀杆材质");
+            });
+            this.$store.dispatch("optiontypeselect", "plinthmaterial").then((res) => {
+                this.plinthmaterial = res.data;
+                console.log(this.plinthmaterial, "阀座材质");
+            });
+            this.drivetype = [{remarks:'电动',value:'电动'},{remarks:'气动',value:'气动'}];
+            console.log(this.drivetype, "驱动方式");
+            this.$store.dispatch("optiontypeselect", "actuatorbrand").then((res) => {
+                this.actuatorbrand = res.data;
+                console.log(this.actuatorbrand, "执行器品牌");
+            });
+            this.$store.dispatch("optiontypeselect", "actuatordrivetype").then((res) => {
+                this.actuatordrivetype = res.data;
+                console.log(this.actuatordrivetype, "执行器驱动方式");
+            });
+            this.$store.dispatch("optiontypeselect", "bodystructure").then((res) => {
+                this.bodystructure = res.data;
+                console.log(this.bodystructure, "结构");
+            });
+            this.$store.dispatch("optiontypeselect", "func").then((res) => {
+                this.func = res.data;
+                console.log(this.func, "功能");
+            });
+        }
+    },
+    created () {
+        this.optionsList()
+    }
+}
+</script>
+
+<style scoped>
+    
+    .product-content {
+
+    }
+    .product-content .block {
+        margin-top: 30px;
+        padding-left: 20px;
+    }
+    .product-content .block .header {
+        display: flex;
+        align-content: center;
+        align-items: center;
+        margin-bottom: 20px;
+    }
+    .product-content .block .header .title {
+        font-size: 16px;
+        font-weight: bold;
+        margin-right: 20px;
+    }
+    .product-content .block .header .handle {
+        display: flex;
+    }
+    
+    .dialog-content {
+
+    }
+    .dialog-content .option-line {
+        display: flex;
+        margin-top: 20px;
+    }
+    .dialog-content .option-line .item {
+        display: flex;
+        align-items: center;
+        font-size: 14px;
+        font-weight: 500px;
+        margin-right: 20px;
+    }
+    .dialog-content .option-line .item .label {
+        width: 70px;
+        flex-shrink: 0;
+        text-align: right;
+        margin-right: 15px;
+        color: #000000 !important;
+    }
+    .descript {
+       font-size:12px;
+       color:red;
+    }
+</style>

+ 1 - 0
src/template/addProduct/index.vue

@@ -25,6 +25,7 @@
               :options="options.itemclass"
               :props="{ checkStrictly: true,children:'subdep',label:'itemclassname',value:'itemclassid' }"
               clearable @change="classChange"></el-cascader>
+              <slot name="optionSystem"></slot>
         </div>
         <div class="top-margin">
           <uploadAllData