12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481 |
- <template>
- <div style="display: flex">
- <div class="select-info">
- <div class="info-title">{{ $t("配置概要") }}</div>
- <div class="scroll">
- <div class="product-wrapper">
- <div class="product">
- <div class="product-header">
- <div class="title">{{ $t("光头") }}</div>
- <span
- @click="
- active = 1;
- resultArr = [];
- fujianArr = [];
- items.splice(2, 1);
- isEdit = true;
- "
- v-if="!!resultArr[0]"
- >
- <img src="@/assets/reSelect.svg" alt="" />
- {{ $t("重选") }}
- </span>
- </div>
- <div class="product-name">
- {{ resultArr[0] ? resultArr[0].itemname : $t("暂无") }}
- </div>
- <div class="attrite" v-if="resultArr[0] && resultArr[0].torque">
- <div class="attrite-title">{{ $t("扭矩") }}:</div>
- <div class="attrite-value">{{ resultArr[0].torque }}</div>
- </div>
- <div class="attrite" v-if="resultArr[0] && resultArr[0].flh">
- <div class="attrite-title">{{ $t("法兰号") }}:</div>
- <div class="attrite-value">
- {{
- typeof resultArr[0].flh == "string"
- ? resultArr[0].flh
- : resultArr[0].flh[0]
- }}
- </div>
- </div>
- <div class="attrite" v-if="resultArr[0] && resultArr[0].caliber">
- <div class="attrite-title">{{ $t("公称通径") }}:</div>
- <div class="attrite-value">{{ resultArr[0].caliber }}</div>
- </div>
- <div
- class="attrite"
- v-if="resultArr[0] && resultArr[0].nominalpressure"
- >
- <div class="attrite-title">{{ $t("公称压力") }}:</div>
- <div class="attrite-value">
- {{ tool.nominalPressureSet(resultArr[0].nominalpressure) }}
- </div>
- </div>
- <div
- class="attrite"
- v-if="resultArr[0] && resultArr[0].stemmaterial"
- >
- <div class="attrite-title">{{ $t("阀杆材质") }}:</div>
- <div class="attrite-value">{{ resultArr[0].stemmaterial }}</div>
- </div>
- <div
- class="attrite"
- v-if="resultArr[0] && resultArr[0].bodymaterial"
- >
- <div class="attrite-title">{{ $t("阀体材质") }}:</div>
- <div class="attrite-value">{{ resultArr[0].bodymaterial }}</div>
- </div>
- </div>
- <div class="product">
- <div class="product-header">
- <div class="title">{{ $t("执行器") }}</div>
- <span
- @click="
- active = 2;
- resultArr.splice(1);
- fujianArr = [];
- isEdit = true;
- "
- v-if="!!resultArr[1]"
- >
- <img src="@/assets/reSelect.svg" alt="" />
- {{ $t("重选") }}
- </span>
- </div>
- <div class="product-name">
- {{ resultArr[1] ? resultArr[1].actuatorname : $t("暂无") }}
- </div>
- <div
- class="attrite"
- v-if="guangtouParam.content.where.drivetype == '电动'"
- >
- {{
- resultArr[1]
- ? `${resultArr[1].itemname}+${resultArr[1].gearboxname}`
- : $t("暂无")
- }}
- </div>
- <div class="attrite" v-else>
- {{ resultArr[1] ? `${resultArr[1].itemname}` : $t("暂无") }}
- </div>
- <div class="attrite" v-if="resultArr[1] && resultArr[1].torque">
- <div class="attrite-title">{{ $t("输出扭矩") }}:</div>
- <div class="attrite-value">{{ resultArr[1].torque }}</div>
- </div>
- <div class="attrite" v-if="resultArr[1] && resultArr[1].maxruntime">
- <div class="attrite-title">{{ $t("开关时间") }}:</div>
- <div class="attrite-value">{{ resultArr[1].maxruntime }}</div>
- </div>
- <div class="attrite" v-if="resultArr[1] && resultArr[1].speed">
- <div class="attrite-title">{{ $t("转速") }}:</div>
- <div class="attrite-value">{{ resultArr[1].speed }}</div>
- </div>
- <div class="attrite" v-if="resultArr[1] && resultArr[1].ratio">
- <div class="attrite-title">{{ $t("减速比") }}:</div>
- <div class="attrite-value">{{ resultArr[1].ratio }}</div>
- </div>
- <div
- class="attrite"
- v-if="resultArr[1] && resultArr[1].supplyvoltage"
- >
- <div class="attrite-title">{{ $t("电压") }}:</div>
- <div class="attrite-value">{{ resultArr[1].supplyvoltage }}</div>
- </div>
- <div
- class="attrite"
- v-if="resultArr[1] && resultArr[1].ratedcurrent"
- >
- <div class="attrite-title">{{ $t("电流") }}:</div>
- <div class="attrite-value">{{ resultArr[1].ratedcurrent }}</div>
- </div>
- <div class="attrite" v-if="resultArr[1] && resultArr[1].ratedpower">
- <div class="attrite-title">{{ $t("功率") }}:</div>
- <div class="attrite-value">{{ resultArr[1].ratedpower }}</div>
- </div>
- </div>
- <div class="product">
- <div class="product-header">
- <div class="title">{{ $t("辅件") }}</div>
- <span
- @click="
- fujianArr = [];
- fujianParam.content.othertypes = [
- '电磁阀',
- '限位开关',
- '过滤减压阀',
- ];
- $refs.fujianRef.listData();
- isEdit = true;
- "
- v-if="resultArr.length >= 3"
- >
- <img src="@/assets/reSelect.svg" alt="" />
- {{ $t("重选") }}
- </span>
- </div>
- <div
- class="attrite2"
- v-for="item in fujianArr"
- :key="item.othertype"
- >
- <div class="attrite-title">{{ $t(item.othertype) }}:</div>
- <div class="attrite-value">{{ $t(item.model) }}</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="drawer__panel">
- <div class="my-steps">
- <a-steps
- :current="active - 1"
- style="margin-bottom: 10px"
- @change="stepsChange"
- >
- <a-step
- :title="item.title"
- v-for="(item, index) in items"
- :key="index"
- >
- <i
- slot="icon"
- class="iconfont"
- style="font-size: 32px; color: #3874f6 !important"
- v-if="active > index + 1"
- ></i
- >
- </a-step>
- </a-steps>
- </div>
- <!--选光头-->
- <div class="dialog-content" v-show="active == 1">
- <div class="option-line">
- <div class="item">
- <div class="label">{{ $t("驱动方式") }}:</div>
- <MySelect
- :isClear="false"
- @click="
- ($event) => {
- guangtouChange($event);
- Search('guangtouParam', 'drivetype');
- }
- "
- :options="drivetype"
- v-model="guangtouParam.content.where.drivetype"
- ></MySelect>
- </div>
- </div>
- <div class="option-line">
- <div class="item">
- <div class="label">{{ $t("公称通径") }}:</div>
- <el-select
- filterable
- v-model="guangtouParam.content.where.caliber"
- :placeholder="$t(`请选择公称通径`)"
- size="small"
- style="width: 100%"
- clearable
- @change="Search('guangtouParam', 'caliber')"
- >
- <el-option
- v-for="item in caliber"
- :key="item.value"
- :value="item.value"
- :label="$t(item.value)"
- ></el-option>
- </el-select>
- </div>
- <div class="item">
- <div class="label">{{ $t("公称压力") }}:</div>
- <el-select
- filterable
- @change="Search('guangtouParam', 'nominalpressure')"
- :disabled="!guangtouParam.content.where.caliber"
- v-model="guangtouParam.content.where.nominalpressure"
- :placeholder="$t(`请选择公称压力`)"
- 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">{{ $t("连接方式") }}:</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">{{ $t("阀体材质") }}:</div>
- <el-select
- filterable
- @change="Search('guangtouParam', 'bodymaterial')"
- :disabled="!guangtouParam.content.where.connection"
- v-model="guangtouParam.content.where.bodymaterial"
- :placeholder="$t(`请选择阀体材质`)"
- 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">{{ $t("阀杆材质") }}:</div>
- <el-select
- filterable
- @change="Search('guangtouParam', 'stemmaterial')"
- :disabled="!guangtouParam.content.where.bodymaterial"
- v-model="guangtouParam.content.where.stemmaterial"
- :placeholder="$t(`请选择阀杆材质`)"
- 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">{{ $t("阀座材质") }}:</div>
- <el-select
- filterable
- @change="Search('guangtouParam', 'plinthmaterial')"
- :disabled="!guangtouParam.content.where.stemmaterial"
- v-model="guangtouParam.content.where.plinthmaterial"
- :placeholder="$t(`请选择阀座材质`)"
- 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>
- <!--光头-->
- <MyTable
- :noQuery="true"
- fixedName="operation"
- :height="tableHeight"
- ref="guangtouRef"
- :layout="tool.tabelCol($route.name)['guangtouTable'].tablecols"
- :param="guangtouParam"
- :opwidth="200"
- :custom="true"
- style="margin-top: 14px"
- >
- <template v-slot:customcol="scope">
- <span v-if="scope.column.columnname != 'operation'">{{
- $t(scope.column.data[scope.column.columnname])
- }}</span>
- </template>
- <template v-slot:opreation="scope">
- <el-button
- type="text"
- size="mini"
- @click="selectTarget(scope.data, '主阀')"
- :disabled="!guangtouParam.content.where.drivetype"
- >{{ $t("选择") }}</el-button
- >
- </template>
- </MyTable>
- </div>
- <!--选执行器-->
- <div class="dialog-content" v-show="active == 2">
- <div class="option-line">
- <div class="item">
- <div class="label">{{ $t("执行器") }}:</div>
- <el-input
- :placeholder="$t(`型号/料号`)"
- 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">{{ $t("减速箱") }}:</div>
- <el-input
- :placeholder="$t(`型号/料号`)"
- 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">{{ $t("驱动方式") }}:</div>
- <MySelect
- :isClear="false"
- :options="[
- { remarks: '气动调节', value: '气动调节' },
- { remarks: '气动开关', value: '气动开关' },
- ]"
- v-model="excelParam.content.where.drivetype"
- ></MySelect>
- </div>
- </div>
- <div
- class="option-line"
- v-if="guangtouParam.content.where.drivetype == '电动'"
- >
- <div class="item">
- <div class="label">{{ $t("驱动方式") }}:</div>
- <MySelect
- @click="
- Search('excelParam', 'actuatordrivetype');
- calcTableHieght('excelRef');
- "
- :options="[
- { remarks: '电动开关', value: '电动开关' },
- { remarks: '电动调节', value: '电动调节' },
- ]"
- v-model="excelParam.content.where.actuatordrivetype"
- ></MySelect>
- </div>
- </div>
- <div
- class="option-line"
- v-if="guangtouParam.content.where.drivetype == '电动'"
- >
- <div class="item">
- <div class="label">{{ $t("品牌") }}:</div>
- <MySelect
- @click="
- Search('excelParam', 'actuatorbrand');
- calcTableHieght('excelRef');
- "
- :disabled="!excelParam.content.where.actuatordrivetype"
- :options="actuatorbrand"
- v-model="excelParam.content.where.actuatorbrand"
- ></MySelect>
- </div>
- </div>
- <div class="option-line" v-else>
- <div class="item">
- <div class="label">{{ $t("品牌") }}:</div>
- <MySelect
- @click="Search('excelParam', 'actuatorbrand')"
- :options="actuatorbrand"
- v-model="excelParam.content.where.actuatorbrand"
- ></MySelect>
- </div>
- </div>
- <div
- v-if="
- guangtouParam.content.where.drivetype == '电动' &&
- excelParam.content.where.actuatorbrand &&
- actuatorname.length
- "
- >
- <div class="option-line">
- <div class="item">
- <div class="label" style="width: 80px">
- {{ $t("执行器类型") }}:
- </div>
- <span
- style="font-size: 14px; font-weight: bold; color: #3874f6"
- >{{ $t(excelParam.content.where.actuatorname) || "--" }}</span
- >
- </div>
- </div>
- <SelectBar
- style="margin: 20px 0"
- v-model="excelParam.content.where.actuatorname"
- @change="Search('excelParam', 'actuatorname')"
- :options="computedActuatorNameOptions"
- ></SelectBar>
- </div>
- <div
- class="option-line"
- v-if="guangtouParam.content.where.drivetype == '电动'"
- >
- <div class="item">
- <div class="label">{{ $t("电源电压") }}:</div>
- <MySelect
- @click="Search('excelParam', 'supplyvoltage')"
- :disabled="!excelParam.content.where.actuatorname"
- :options="supplyvoltage"
- v-model="excelParam.content.where.supplyvoltage"
- ></MySelect>
- </div>
- <div class="item">
- <div class="label">{{ $t("信号类型") }}:</div>
- <MySelect
- @click="Search('excelParam', 'actuatorsignal')"
- :disabled="!excelParam.content.where.supplyvoltage"
- :options="actuatorsignal"
- v-model="excelParam.content.where.actuatorsignal"
- ></MySelect>
- </div>
- </div>
- <div
- class="option-line"
- v-show="guangtouParam.content.where.drivetype == '气动'"
- >
- <div class="item">
- <div class="label">{{ $t("功能") }}:</div>
- <MySelect
- :disabled="!excelParam.content.where.actuatorname"
- @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">{{ $t("结构") }}:</div>
- <MySelect
- :disabled="!excelParam.content.where.func"
- @click="Search('excelParam', 'bodystructure')"
- :options="bodystructure"
- v-model="excelParam.content.where.bodystructure"
- ></MySelect>
- </div>
- </div>
- <div style="display: flex;justify-content: left;margin-top: 10px">
- <div
- class="tips"
- v-if="
- guangtouParam.content.where.drivetype == '电动' && resultArr.length
- "
- style="color: #3874f6;margin-top: 2px"
- >
- <i class="el-icon-warning" style="margin-right: 5px"></i
- >{{ $t("建议开关阀时间")
- }}{{
- caliber.filter((v) => v.value == resultArr[0].caliber).length
- ? caliber
- .filter((v) => v.value == resultArr[0].caliber)[0]
- .remarks.split(";")[0]
- : "-"
- }}{{ $t("秒") }}
- </div>
- <div style="margin-left: 20px;display: flex;justify-content: left">
- <div class="label" style="margin-top:2px;">{{$t(`开关阀安全时间:`)}}</div>
- <el-input style="width: 160px;margin-right: 10px" size="small" v-model="mintime" :placeholder="$t(`开关阀安全时间`)"></el-input> -
- <el-input style="width: 160px;margin-left: 10px" size="small" v-model="maxtime" :placeholder="$t(`开关阀安全时间`)"></el-input>
- </div>
- <el-button type="primary" style="margin-left: 10px" size="small" @click="Search('excelParam')">{{$t(`查询`)}}</el-button>
- </div>
- <!--执行器-->
- <div v-if="guangtouParam.content.where.drivetype == '电动'">
- <MyTable
- fixedName="operation"
- :height="tableHeight"
- :noQuery="true"
- ref="excelRef"
- :layout="tool.tabelCol($route.name)['excelTable1'].tablecols"
- :param="excelParam"
- :custom="true"
- style="margin-top: 14px"
- >
- <template v-slot:customcol="scope">
- <span
- v-if="scope.column.columnname == 'matchratio'"
- style="color: red"
- >{{ $t(scope.column.data[scope.column.columnname]) }}</span
- >
- <span v-else-if="scope.column.columnname == 'maxsquarewidth'">{{
- scope.column.data[scope.column.columnname].join(",")
- }}</span>
- <span v-else-if="scope.column.columnname != 'operation'">{{
- $t(scope.column.data[scope.column.columnname])
- }}</span>
- </template>
- <template v-slot:opreation="scope">
- <el-button
- type="text"
- size="mini"
- @click="selectTarget(scope.data, '执行器')"
- :disabled="
- (guangtouParam.content.where.drivetype == '电动' &&
- resultArr.length == 2)
- "
- >{{ $t("选择") }}</el-button
- >
- </template>
- </MyTable>
- </div>
- <MyTable
- v-else
- :height="tableHeight"
- fixedName="operation"
- :noQuery="true"
- ref="excelRef"
- :layout="tool.tabelCol($route.name)['excelTable2'].tablecols"
- :param="excelParam"
- :custom="true"
- style="margin-top: 14px"
- >
- <template v-slot:customcol="scope">
- <span
- v-if="scope.column.columnname == 'matchratio'"
- style="color: red"
- >{{ $t(scope.column.data[scope.column.columnname]) }}</span
- >
- <span v-else-if="scope.column.columnname == 'maxsquarewidth'">{{
- scope.column.data[scope.column.columnname].join(",")
- }}</span>
- <span v-else-if="scope.column.columnname != 'operation'">{{
- $t(scope.column.data[scope.column.columnname])
- }}</span>
- </template>
- <template v-slot:opreation="scope">
- <el-button
- type="text"
- size="mini"
- @click="selectTarget(scope.data, '执行器')"
- :disabled="
- (guangtouParam.content.where.drivetype == '电动' &&
- resultArr.length == 2)
- "
- >{{ $t("选择") }}</el-button
- >
- </template>
- </MyTable>
- </div>
- <!--选辅件-->
- <div class="dialog-content" v-show="active == 3">
- <MyTable
- :noQuery="true"
- ref="fujianRef"
- fixedName="operation"
- :height="tableHeight"
- :layout="tool.tabelCol($route.name)['itemList'].tablecols"
- :param="fujianParam"
- :opwidth="200"
- :custom="true"
- style="margin-top: 14px"
- >
- <template v-slot:customcol="scope">
- <span v-if="scope.column.columnname != 'operation'">{{
- $t(scope.column.data[scope.column.columnname])
- }}</span>
- </template>
- <template v-slot:opreation="scope">
- <el-button
- type="text"
- size="mini"
- @click="selectTarget(scope.data, '辅件')"
- :disabled="loading"
- >{{ $t("选择") }}</el-button
- >
- </template>
- </MyTable>
- </div>
- <div class="fixed__btn__panel">
- <el-button size="small" @click="close()" class="normal-btn-width">{{
- $t(`取 消`)
- }}</el-button>
- <el-button
- size="small"
- type="primary"
- @click="onSubmit"
- class="normal-btn-width"
- v-if="active == 3"
- :disabled="$refs.fujianRef.list.length != 0"
- >{{ $t("确认") }}</el-button
- >
- </div>
- </div>
- </div>
- </template>
- <script>
- import "@/optionSystem/valveOption/index.css";
- import MySelect from "@/optionSystem/FProductManage/modules/select.vue";
- import MyTable from "@/optionSystem/FProductManage/modules/table.vue";
- import SelectBar from "@/optionSystem/FProductManage/modules/selectBar.vue";
- export default {
- components: { MySelect, MyTable, SelectBar },
- props: ["data"],
- inject: ["valvetype", "resultArrs"],
- computed: {
- //执行器类型选项
- computedActuatorNameOptions() {
- return this.actuatorname.map((v) => {
- return {
- url: v.url,
- remarks: v.remarks.split("-").pop(),
- value: v.remarks,
- };
- });
- },
- },
- data() {
- return {
- items: [
- { title: "选光头", value: "光头" },
- { title: "选执行器", value: "执行器" },
- ],
- active: 1,
- tableHeight: "400px",
- isEdit: false,
- excel: "",
- gangtou: "",
- resultArr: [],
- caliber: [],
- nominalpressure: [],
- connection: [],
- bodymaterial: [],
- stemmaterial: [],
- plinthmaterial: [],
- actuatorbrand: [],
- actuatorname: [],
- actuatorsignal: [],
- supplyvoltage: [],
- actuatordrivetype: [],
- drivetype: [],
- bodystructure: [],
- func: [],
- guangtouList: [],
- 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: 30,
- 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: 30,
- sa_lectotypecfgid: this.$route.query.id,
- where: {
- actuatordrivetype: "电动开关", //驱动方式
- condition1: "",
- condition2: "",
- torque: "", //阀门扭矩
- flh: "", //法兰号
- actuatorbrand: "", //品牌
- actuatorname: "",
- supplyvoltage: "",
- actuatorsignal: "",
- maxsquarewidth: "", //方阀杆最大宽度
- maxrounddiameter: "", //圆阀杆最大直径
- mintime:"",
- maxtime:""
- },
- },
- },
- fujianList: [],
- fujianArr: [],
- loading: false,
- fujianParam: {
- id: 20240718162402,
- content: {
- othertypes: [],
- pageNumber: 1,
- pageSize: 300,
- where: {
- actuatorbrand: "", //品牌
- },
- },
- },
- timer: null,
- product: {},
- /*开关阀时间*/
- dateDefault:{
- id: 20220901092501,
- content: {
- optiontypeid: 115, //光头id
- pageNumber: 1,
- pageSize: 9999999,
- where: {
- condition: "",
- },
- },
- },
- diameter:'',
- mintime:"",
- maxtime:""
- };
- },
- watch: {
- active(val) {
- switch (val) {
- case 1:
- this.calcTableHieght("guangtouRef");
- break;
- case 2:
- this.calcTableHieght("excelRef");
- break;
- case 3:
- this.calcTableHieght("fujianRef");
- break;
- default:
- break;
- }
- },
- },
- 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.items.push({ title: "选辅件", value: "辅件" });
- this.fujianArr = this.data.filter.other.fujianArr;
- }
- this.$refs.guangtouRef.listData(() => {
- if (!this.$refs.guangtouRef.list.length) return;
- console.log(this.$refs.guangtouRef.list[0]);
- 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.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.actuatorname = this.$refs.excelRef.list[0].option.actuatorname;
- this.func = this.$refs.excelRef.list[0].option.func;
- });
- this.$refs.fujianRef.listData();
- }, 1000);
- },
- calcTableHieght(id) {
- this.$nextTick(() => {
- if (!this.$refs[id]) return;
- let target = this.$refs[id].$el.getBoundingClientRect();
- let clientHeight = document.body.clientHeight;
- this.tableHeight = clientHeight - target.top - 85 + "px";
- this.$refs[id].$refs.table.doLayout();
- });
- },
- close() {
- this.active = 1;
- this.guangtouParam.content.where.drivetype = "电动";
- this.resultArr = [];
- this.fujianArr = [];
- this.items = [
- { title: "选光头", value: "光头" },
- { title: "选执行器", value: "执行器" },
- ];
- 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]] = ""
- this.excelParam.content.where.mintime = this.mintime
- this.excelParam.content.where.maxtime = this.maxtime
- }
- }
- 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 && whereKeys[i] != "drivetype") {
- 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 && whereKeys[i] != "drivetype")
- 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) {
- if (whereKeys[i] != "drivetype")
- 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 &&
- whereKeys[i] != "drivetype"
- ) {
- that.excelParam.content.where[whereKeys[i]] = "";
- }
- if (
- that.$refs.excelRef.list[0].option[whereKeys[i]].length > 1
- ) {
- isbreak = true;
- }
- }
- } else {
- if (i >= index && whereKeys[i] != "drivetype")
- that[whereKeys[i]] = [];
- }
- }
- }
- }
- },
- guangtouChange(val) {
- switch (val) {
- case "电动":
- this.excelParam = {
- id: 20240718162202,
- content: {
- itemid: 0, //光头id
- pageNumber: 1,
- pageSize: 30,
- where: {
- actuatordrivetype: "电动开关", //驱动方式
- condition1: "",
- condition2: "",
- torque: "", //阀门扭矩
- flh: "", //法兰号
- actuatorbrand: "", //品牌
- actuatorname: "",
- supplyvoltage: "",
- actuatorsignal: "",
- maxsquarewidth: "", //方阀杆最大宽度
- maxrounddiameter: "", //圆阀杆最大直径
- },
- },
- };
- break;
- case "气动":
- this.excelParam = {
- id: 20240718162302,
- content: {
- pageNumber: 1,
- pageSize: 30,
- where: {
- condition1: "",
- torque: "", //阀门扭矩
- flh: "", //法兰号
- maxsquarewidth: "", //方阀杆最大宽度
- maxrounddiameter: "", //圆阀杆最大直径
- actuatorbrand: "", //品牌
- actuatorname: "",
- 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 : "确认提交数据吗?", this.$t("提示"), {
- confirmButtonText: this.$t("确定"),
- cancelButtonText: this.$t("取消"),
- 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.queryDefaultDate(data)
- this.resultArr[0] = data;
- if (
- this.guangtouParam.content.where.drivetype == "气动" &&
- this.items.length == 2
- ) {
- this.items.push({ title: "选辅件", value: "辅件" });
- } else if (
- this.guangtouParam.content.where.drivetype == "电动" &&
- this.items.length == 3
- ) {
- this.items.splice(2, 1);
- }
- 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.active = 2;
- } else if (type == "执行器") {
- if (this.guangtouParam.content.where.drivetype === "电动") {
- const times = this.caliber
- .find(
- (v) =>
- v.value === this.guangtouParam.content.where.caliber
- )
- .remarks.split(";")[0]
- .split("-")
- .map(Number);
- const maxRuntime = parseInt(data.maxruntime, 10);
- if (maxRuntime > times[1] || maxRuntime < times[0]) {
- this.$confirm(
- `${this.$t("当前选择执行器开关时间为")}${
- data.maxruntime
- }${this.$t("秒,超出建议值")}${times.join("-")},${this.$t(
- "是否确认"
- )}?`,
- this.$t("提示"),
- {
- confirmButtonText: this.$t("确定"),
- cancelButtonText: this.$t("取消"),
- type: "warning",
- }
- )
- .then(() => {
- handle.call(this);
- })
- .catch(() => {});
- } else {
- handle.call(this);
- }
- } else {
- handle.call(this);
- }
- function handle() {
- this.resultArr[1] = data;
- this.resultArr[1].itemname = this.resultArr[1].actuatormodel;
- if (this.guangtouParam.content.where.drivetype === "电动") {
- const gearbox = {
- parttype: "减速箱",
- itemid: this.resultArr[1].gearboxid,
- };
- if (this.resultArr.length === 3) {
- this.resultArr[2] = gearbox;
- } else {
- this.resultArr.push(gearbox);
- }
- }
- this.fujianParam.content.othertypes =
- this.excelParam.content.where.drivetype === "气动调节"
- ? ["定位器", "过滤减压阀"]
- : ["电磁阀", "限位开关", "过滤减压阀"];
- this.fujianArr = [];
- const spliceIndex =
- this.guangtouParam.content.where.drivetype === "电动" ? 3 : 2;
- this.resultArr.splice(
- spliceIndex,
- this.resultArr.length - spliceIndex
- );
- data.itemid = data.actuatorid;
- data.itemname = data.actuatormodel;
- if (this.items.length >= 3) {
- this.active = 3;
- 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();
- },
- stepsChange(val) {
- if (this.isEdit)
- return this.$message.warning("已操作过选型单,请按步骤进行!!");
- this.active = val + 1;
- },
- //选项
- optionsList() {
- this.$store.dispatch("optiontypeselect", "caliber").then((res) => {
- this.caliber = res.data;
- });
- this.drivetype = [
- { remarks: "电动", value: "电动" },
- { remarks: "气动", value: "气动" },
- ];
- },
- async queryDefaultDate(val){
- const res = await this.$api.requested(this.dateDefault)
- res.data.forEach(e=>{
- if (e.value == val.caliber){
- this.diameter = e
- }
- })
- let newDiameter = this.diameter.remarks.split(';')
- let diameter = newDiameter[1].split('-')
- this.mintime = diameter[0]
- this.maxtime = diameter[1]
- }
- },
- created() {
- this.optionsList();
- },
- mounted() {
- this.init();
- this.calcTableHieght("guangtouRef");
- },
- };
- </script>
- <style scoped>
- /deep/.ant-steps-item-finish
- > .ant-steps-item-container
- > .ant-steps-item-content
- > .ant-steps-item-title::after {
- background: #3874f6 !important;
- }
- /deep/.ant-steps-item-finish .ant-steps-item-icon {
- background: none !important;
- }
- /deep/.ant-steps-item-icon {
- background: #3874f6;
- height: 32px !important;
- }
- /deep/.ant-steps-item-wait .ant-steps-item-icon {
- background: none !important;
- }
- /deep/.ant-steps-item-active .ant-steps-item-title {
- color: #3874f6 !important;
- font-weight: bold;
- }
- /deep/.fixed__btn__panel {
- padding-left: 240px !important;
- }
- .scroll {
- height: calc(100vh - 60px);
- overflow-y: scroll;
- }
- ::-webkit-scrollbar {
- display: none;
- }
- .select-info {
- background: #f5f6fa;
- font-family: Microsoft YaHei, Microsoft YaHei;
- width: 240px;
- border-right: 1px #999999 solid;
- z-index: 99999991;
- flex-shrink: 0;
- word-wrap: break-word;
- }
- .select-info .info-title {
- font-weight: bold;
- font-size: 20px;
- color: #333333;
- padding: 10px 20px;
- border-bottom: 1px solid #d9d9d9;
- }
- .select-info .product-wrapper {
- padding: 0 20px;
- }
- .select-info .product-wrapper .product {
- padding-bottom: 20px;
- border-bottom: #d9d9d9 1px solid;
- }
- .select-info .product-wrapper .product:last-child {
- border-bottom: none !important;
- }
- .select-info .product-wrapper .product .product-header {
- display: flex;
- align-items: center;
- align-content: center;
- padding: 10px 0;
- }
- .select-info .product-wrapper .product .product-header span:last-child {
- color: #3874f6;
- margin-left: 18px;
- cursor: pointer;
- }
- .select-info .product-wrapper .product .product-header .title {
- font-weight: bold;
- font-size: 14px;
- color: #333333;
- }
- .select-info .product-wrapper .product .product-header img {
- width: 12px;
- height: 12px;
- }
- .select-info .product-wrapper .product .product-name {
- font-weight: 400;
- font-size: 14px;
- color: #555555;
- }
- .select-info .product-wrapper .product .attrite {
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-weight: 400;
- font-size: 12px;
- color: #999999;
- padding-top: 10px;
- }
- .select-info .product-wrapper .product .attrite .attrite-title {
- color: #555555;
- }
- .select-info .product-wrapper .product .attrite .attrite-value {
- }
- .select-info .product-wrapper .product .attrite2 {
- display: flex;
- flex-direction: column;
- font-weight: 400;
- font-size: 12px;
- color: #999999;
- padding-top: 10px;
- }
- .select-info .product-wrapper .product .attrite2 .attrite-title {
- color: #555555;
- margin-bottom: 5px;
- }
- .select-info .product-wrapper .product .attrite2 .attrite-value {
- }
- .select-info .product-wrapper .product {
- display: flex;
- flex-direction: column;
- }
- .drawer__panel {
- font-family: Source Han Sans SC, Source Han Sans SC;
- padding: 10px 40px !important;
- flex: 1;
- overflow: hidden;
- }
- .my-steps {
- padding: 0px 68px;
- }
- .drawer__panel {
- font-family: Source Han Sans SC, Source Han Sans SC;
- }
- .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: 10px;
- }
- .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-last: justify;
- margin-right: 15px;
- color: #000000 !important;
- }
- .descript {
- font-size: 12px;
- color: red;
- }
- </style>
|