|
|
@@ -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>
|