From a09f89b935e9a0085c5bcdb470e053ddad1f7187 Mon Sep 17 00:00:00 2001
From: tanghaolin <1723298894@qq.com>
Date: 星期四, 06 三月 2025 13:39:51 +0800
Subject: [PATCH] 添加泵选型模块

---
 src/components/AppHeader.vue                                  |   32 
 src/views/SPump/Select/ByPara2/components/SelParasDefault.vue | 2754 +++++++++++++++++++
 src/views/SPump/Select/PumpList/General.vue                   | 1741 ++++++++++++
 src/utils/request.ts                                          |   36 
 src/api/login.ts                                              |    8 
 src/stores/db.ts                                              |   29 
 src/views/SPump/Select/ByPara2/Index.vue                      |   44 
 src/I18n/config/cn.ts                                         |  917 ++++++
 src/I18n/index.ts                                             |   36 
 src/views/Login.vue                                           |   49 
 src/main.ts                                                   |    2 
 src/views/SPump/Select/ByPara2/components/selPumpCatalog.vue  |  709 +++++
 src/views/SPump/Select/PumpList/Index.vue                     |   47 
 src/stores/useLogin.ts                                        |  105 
 src/views/SPump/Select/PumpList/FmUL.vue                      |  743 +++++
 src/stores/select.ts                                          |   31 
 index.html                                                    |    1 
 package.json                                                  |    1 
 public/static/Config/globalConfig.js                          |    3 
 src/views/Home.vue                                            |    6 
 src/router/index.ts                                           |    5 
 src/views/SPump/Select/ByPara2/components/selPumpSeries.vue   |  934 ++++++
 22 files changed, 8,206 insertions(+), 27 deletions(-)

diff --git a/index.html b/index.html
index 11e454e..82be522 100644
--- a/index.html
+++ b/index.html
@@ -8,6 +8,7 @@
   </head>
   <body>
     <div id="app"></div>
+    <script type="module" src="/static/Config/globalConfig.js?v=250306"></script>
     <script type="module" src="/src/main.ts"></script>
   </body>
 </html>
diff --git a/package.json b/package.json
index d7fa3cb..28c1255 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
 		"pinia": "^2.0.26",
 		"swiper": "^11.2.4",
 		"vue": "^3.2.45",
+		"vue-i18n": "^11.1.1",
 		"vue-router": "^4.1.6"
 	},
 	"devDependencies": {
diff --git a/public/static/Config/globalConfig.js b/public/static/Config/globalConfig.js
new file mode 100644
index 0000000..f12a4c9
--- /dev/null
+++ b/public/static/Config/globalConfig.js
@@ -0,0 +1,3 @@
+window.globalConfig = {
+    WebApi:"http://desmi.xpump.net/api/",
+}
\ No newline at end of file
diff --git a/src/I18n/config/cn.ts b/src/I18n/config/cn.ts
new file mode 100644
index 0000000..2629814
--- /dev/null
+++ b/src/I18n/config/cn.ts
@@ -0,0 +1,917 @@
+export default {
+    ebookPage: {
+      all: { ID: 772, TR: "鍏ㄩ儴" },
+      driveType: { ID: 1066, TR: "椹卞姩绫诲瀷" },
+      motor: { ID: 830, TR: "鐢垫満" },
+      diesel: { ID: 1069, TR: "鏌存补鏈�" },
+      noProfile: { ID: 2367, TR: "鏆傛棤绠�浠�" },
+      serieslist: { ID: 1, TR: "鐢靛瓙鏍锋湰" },
+      motorFrequency: { ID: 72, TR: "鐢垫満棰戠巼" },
+      motorStandard: { ID: "", TR: "Unit Standard" },
+      displayMode: { ID: 664, TR: "鏄剧ず鏂瑰紡" },
+      list: { ID: 665, TR: "鍒楄〃" },
+      grid: { ID: 666, TR: "缃戞牸" },
+      keyWord: { ID: 661, TR: "鍏抽敭璇�" },
+      keyWordRule: { ID: 1003, TR: "璇疯緭鍏ュ叧閿瓧" },
+      view: { ID: 251, TR: "鏌ヨ" },
+      queryResults: { ID: 2368, TR: "鏌ヨ缁撴灉" },
+      operation: { ID: 1012, TR: "鎿嶄綔" },
+      download: { ID: 448, TR: "涓嬭浇" },
+      type: { ID: 246, TR: "绫诲瀷" },
+      name: { ID: 446, TR: "鍚嶇О" },
+      updateTime: { ID: 758, TR: "鏇存柊鏃堕棿" },
+      version: { ID: 759, TR: "鏂囦欢鐗堟湰" },
+      lang: { ID: 449, TR: "璇█" },
+      size: { ID: 1489, TR: "鏂囦欢灏哄" },
+      desc: { ID: 447, TR: "鎻忚堪" },
+      emptyFlowAndHead: { ID: 2426, TR: "娴侀噺鍜屾壃绋嬩笉鑳戒负绌�" },
+      details: { ID: 983, TR: "璇︽儏" },
+      noData: { ID: "", TR: "鏆傛棤鏁版嵁" },
+      pumpList: { ID: 123, TR: "姘存车鍒楄〃" },
+      spectrumList: { ID: 6, TR: "绯诲垪鍨嬭氨" },
+      modelDrawing: { ID: 183, TR: "瀹炵墿鍥�" },
+      seriesDescription: { ID: 145, TR: "绯诲垪璇存槑" },
+      seriesDocuments: { ID: 687, TR: "绯诲垪鏂囨。" },
+      video: { ID: 688, TR: "瑙嗛" },
+      model_3D: { ID: 132, TR: "涓夌淮妯″瀷" },
+      export: { ID: 277, TR: "瀵煎嚭" },
+      no: { ID: 689, TR: "搴忓彿" },
+      flow: { ID: 47, TR: "娴侀噺" },
+      head: { ID: 48, TR: "鎵▼" },
+      catalog: { ID: 2337, TR: "鎸夌被鍨�" },
+      selectIndustry: { ID: 2369, TR: "閫夋嫨琛屼笟" },
+      choosePump: { ID: "", TR: "閫夋嫨娉靛瀷" }, //yy鍔犱竴涓�夋嫨娉典笟
+      allSeries: { ID: 1963, TR: "鎵�鏈夌郴鍒�" },
+      productStructure: { ID: "", TR: "浜у搧缁撴瀯" },
+      screen: { ID: "", TR: "绛涢��" },
+      search: { ID: 177, TR: "鎼滅储" },
+      deviceList: { ID: "", TR: "璁惧鍒楄〃" },
+    },
+    selectPage: {
+      basicParameters: { ID: 1846, TR: "鍩烘湰鍙傛暟" },
+      drive: { ID: "", TR: "椹卞姩" },
+      acceptanceTolerance: { ID: "", TR: "楠屾敹瀹瑰樊" },
+      toleranceStandard: { ID: "", TR: "瀹瑰樊鏍囧噯" },
+      toleranceLevel: { ID: "", TR: "瀹瑰樊绛夌骇" },
+      flowRange: { ID: "", TR: "娴侀噺鑼冨洿" },
+      headRange: { ID: "", TR: "鎵▼鑼冨洿" },
+      otherSelectionCriteria: { ID: "", TR: "鍏朵粬閫夊瀷鏉′欢" },
+      applicationArea: { ID: 2339, TR: "搴旂敤棰嗗煙" },
+      municipalWaterManagement: { ID: "", TR: "甯傛斂姘村姟" },
+      industrialAndMining: { ID: "", TR: "宸ョ熆搴旂敤" },
+      constructionApplications: { ID: "", TR: "寤虹瓚搴旂敤" },
+      filterCriteria: { ID: "", TR: "绛涢�夌粨鏋�" },
+  
+      selparas: { ID: 5, TR: "鍙傛暟閫夊瀷" },
+      selResult: { ID: 2316, TR: "閫夊瀷缁撴灉" },
+      index: { ID: 1451, TR: "棣栭〉" },
+      selRow: { ID: 724, TR: "鍒楅�夋嫨" },
+      export: { ID: 277, TR: "瀵煎嚭" },
+      print: { ID: 193, TR: "鎵撳嵃" },
+      previous: { ID: 367, TR: "涓婁竴姝�" },
+      physical: { ID: 183, TR: "瀹炵墿鍥�" },
+      series: { ID: 254, TR: "绯诲垪" },
+      model: { ID: 100, TR: "鍨嬪彿" },
+      diagram: { ID: 766, TR: "鏇茬嚎鍥�" },
+      flow: { ID: 47, TR: "娴侀噺" },
+      head: { ID: 48, TR: "鎵▼" },
+      shaftPower: { ID: 109, TR: "杞村姛鐜�" },
+      efficiency: { ID: 108, TR: "鏁堢巼" },
+      inputPower: { ID: "", TR: "杈撳叆鍔熺巼" },
+      unitEfficiency: { ID: "", TR: "鏈虹粍鏁堢巼" },
+      npsh: { ID: 110, TR: "NPSHr" },
+      speed: { ID: 115, TR: "杞��" },
+      impellerDiameter: { ID: 224, TR: "鍙惰疆鐩村緞" },
+      details: { ID: 983, TR: "璇︽儏" },
+      certifiedTraffic: { ID: "", TR: "璁よ瘉娴侀噺" },
+      certifiedHead: { ID: "", TR: "璁よ瘉鎵▼" },
+      certifiedSpeed: { ID: "", TR: "璁よ瘉杞��" },
+      pointFlow_150: { ID: "", TR: "150%鐐规祦閲�" },
+      pointLift_150: { ID: "", TR: "150%鐐规壃绋�" },
+      pointPower_150: { ID: "", TR: "150%鐐瑰姛鐜�" },
+      maxShaftPower: { ID: "", TR: "鏈�澶ц酱鍔熺巼" },
+      deadCenterLift: { ID: "", TR: "鍏虫鐐规壃绋�" },
+      pumpStages: { ID: "", TR: "娉电骇鏁�" },
+      note: { ID: 118, TR: "澶囨敞" },
+      gotoIndexPage: { ID: 2370, TR: "杩斿洖棣栭〉" },
+      quickSelection: { ID: 2317, TR: "蹇�熼�夊瀷" },
+      advancedSelection: { ID: 2318, TR: "楂樼骇閫夊瀷" },
+      workingConditions: { ID: 2319, TR: "宸ュ喌鏉′欢" },
+      productSeries: { ID: 2320, TR: "浜у搧绯诲垪" },
+      driveType: { ID: 2321, TR: "椹卞姩绫诲瀷" },
+      setFrequency: { ID: 2322, TR: "璁剧疆棰戠巼" },
+      moreDesignPoints: { ID: 1443, TR: "鏇村璁捐鐐�" },
+      hide: { ID: 2323, TR: "闅愯棌" },
+      secondDpFlow: { ID: 2324, TR: "绗簩璁捐鐐规祦閲�" },
+      secondDpHead: { ID: 2325, TR: "绗簩璁捐鐐规壃绋�" },
+      thirdDpFlow: { ID: 2326, TR: "绗笁璁捐鐐规祦閲�" },
+      thirdDpHead: { ID: 2327, TR: "绗笁璁捐鐐规壃绋�" },
+      firePump: { ID: 2289, TR: "娑堥槻娉�" },
+      motorPoleNum: { ID: 2328, TR: "鐢垫満绾ф暟" },
+      moreSet: { ID: 2329, TR: "鏇村璁剧疆" },
+      put: { ID: 2330, TR: "鏀惰捣" },
+      expand: { ID: "", TR: "灞曞紑" },
+      motorPowerStd: { ID: 2331, TR: "鐢垫皵鏍囧噯" },
+      mediaName: { ID: 2332, TR: "浠嬭川鍚嶇О" },
+      mediumTemperature: { ID: "", TR: "浠嬭川娓╁害" },
+      cleanWater: { ID: 464, TR: "娓呮按" },
+      maxTemperature: { ID: 2333, TR: "鏈�楂樻俯搴�" },
+      customMediaProp: { ID: 2334, TR: "鑷畾涔変粙璐ㄥ睘鎬�" },
+      maxDensity: { ID: 2335, TR: "鏈�澶у瘑搴�" },
+      mediumViscosity: { ID: 2336, TR: "浠嬭川绮樺害" },
+      nextStep: { ID: 368, TR: "涓嬩竴姝�" },
+      selectAll: { ID: 97, TR: "鍏ㄩ��" },
+      reselect: { ID: 366, TR: "閲嶉��" },
+      invert: { ID: "", TR: "鍙嶉��" },
+      modelList: { ID: 442, TR: "鍨嬪彿鍒楄〃" },
+      byType: { ID: 2337, TR: "鎸夌被鍨�" },
+      byIndustry: { ID: 2338, TR: "鎸夎涓�" },
+      byMedia: { ID: 2371, TR: "鎸変粙璐�" },
+      type: { ID: 246, TR: "绫诲瀷" },
+      applicationArea: { ID: 2339, TR: "搴旂敤棰嗗煙" },
+      flowRule: { ID: 2553, TR: "璇疯緭鍏ユ祦閲�" },
+      headRule: { ID: 1149, TR: "璇疯緭鍏ユ壃绋�" },
+      leastOneType: { ID: "", TR: "鑷冲皯閫夋嫨涓�绉嶇被鍨�" },
+      seriesRule: { ID: 2342, TR: "鑷冲皯閫夋嫨涓�涓郴鍒�" },
+      hangyeRule: { ID: 2372, TR: "鑷冲皯閫夋嫨涓�涓涓�" },
+      jiezhiRule: { ID: 2373, TR: "鑷冲皯閫夋嫨涓�绉嶄粙璐�" },
+      dieselEngineSpeedRule: { ID: 2341, TR: "璇疯緭鍏ユ煷娌规満杞��" },
+      dieselEngineSpeed: { ID: 2340, TR: "鏌存补鏈鸿浆閫�" },
+      pleaseSelect: { ID: 2022, TR: "璇烽�夋嫨" },
+      custom: { ID: 2180, TR: "鑷畾涔�" },
+      unlimited: { ID: "", TR: "涓嶉檺" },
+      toleranceStand: { ID: "", TR: "楠屾敹瀹瑰樊鏍囧噯" },
+      toleranceGrade: { ID: "", TR: "楠屾敹瀹瑰樊绛夌骇" },
+      MinFlowPercentage: { ID: 677, TR: "鏈�灏忔祦閲忕櫨鍒嗘瘮" },
+      MaxFlowPercentage: { ID: 678, TR: "鏈�澶ф祦閲忕櫨鍒嗘瘮" },
+      MinHeadPercentage: { ID: 679, TR: "鏈�灏忔壃绋嬬櫨鍒嗘瘮" },
+      MaxHeadPercentage: { ID: 680, TR: "鏈�澶ф壃绋嬬櫨鍒嗘瘮" },
+      findErr1: { ID: "", TR: "鏈煡鎵惧埌鐩稿叧鍨嬪彿,璇蜂慨鏀圭浉鍏抽�夊瀷鍙傛暟" },
+      findErr2: { ID: "", TR: "鏈煡鎵惧埌鐩稿叧鍨嬪彿,灏嗗湪涓夌鍚庤繑鍥炰笂涓�椤�" },
+      QPerQBep: { ID: "", TR: "棰濆畾鐐�" },
+      PerRated: { ID: "", TR: "閾墝鍙傛暟缁煎悎鍋忓樊" },
+      PerRatedQ: { ID: "", TR: "閾墝鍙傛暟娴侀噺鍋忓樊" },
+      sortMethod: { ID: "", TR: "鎺掑簭鏂瑰紡" },
+      efficiencySort: { ID: "", TR: "鏁堢巼鎺掑簭" },
+      qPerQBepSort: { ID: "", TR: "缁煎悎鎺掑簭" },
+      enum: { ID: 331, TR: "鏁伴噺" }, //yy add--
+      modelSelection: { ID: 26, TR: "閫夊瀷" },
+      mediaLibrary: { ID: "", TR: "浠嬭川搴�" },
+      volumeConcentration: { ID: "", TR: "浣撶Н娴撳害" },
+      mediaDescription: { ID: "", TR: "浠嬭川璇存槑" },
+      isMediumParticles: { ID: "", TR: "鍚湁浠嬭川棰楃矑" },
+      vbr: { ID: "", TR: "鍙橀�熺巼" },
+      cuttingRate: { ID: "", TR: "鍒囧壊鐜�" },
+      salesPrice: { ID: "", TR: "閿�鍞环" },
+      originalImpellerDiameter: { ID: "", TR: "鍘熷鍙惰疆鐩村緞" },
+      ratedSpeed: { ID: "", TR: "棰濆畾杞��" },
+      guidePrice: { ID: "", TR: "鎸囧浠�" },
+      secondDirectory: { ID: "", TR: "浜岀骇鐩綍" },
+      allowCutting: { ID: "", TR: "鍏佽鍒囧壊" },
+      allowFrequencyConversion: { ID: "", TR: "鍏佽鍙橀" },
+  
+      efficiencyAndNPSH: { ID: "", TR: "鏁堢巼鍜屾苯铓�" },
+      minimumEfficiency: { ID: "", TR: "鏈�浣庢晥鐜�" },
+      attributeFiltering: { ID: "", TR: "灞炴�ц繃婊�" },
+      importedCaliber: { ID: "", TR: "杩涘彛鍙e緞" },
+      exportCaliber: { ID: "", TR: "鍑哄彛鍙e緞" },
+      motorParameters: { ID: "", TR: "鐢垫満鍙傛暟" },
+      helpChoose: { ID: "", TR: "甯垜閫�" },
+  
+      similarConversion: { ID: "", TR: "鐩镐技鎹㈢畻" },
+      parameterDesign: { ID: "", TR: "鍙傛暟璁捐" },
+      selectionCondition: { ID: "", TR: "閫夊瀷鏉′欢" },
+      designRequirement: { ID: "", TR: "璁捐瑕佹眰" },
+      calculationParameters: { ID: "", TR: "璁$畻鍙傛暟" },
+      mediumDensity: { ID: "", TR: "浠嬭川瀵嗗害" },
+      selectionMethod: { ID: "", TR: "閫夊瀷鏂规硶" },
+      pumpType: { ID: "", TR: "娉靛瀷" },
+      impellerType: { ID: "", TR: "鍙惰疆绫诲瀷" },
+      modelLibrary: { ID: "", TR: "妯″瀷搴�" },
+      fixedSpeed: { ID: "", TR: "瀹氳浆閫�" },
+      specificSpeed: { ID: "", TR: "姣旇浆閫�" },
+      convertRangeBySpecificSpeed: { ID: "", TR: "姣旇浆閫熸崲绠楄寖鍥�" },
+      efficiencyCorrection: { ID: "", TR: "鏁堢巼淇" },
+      recommendModel: { ID: "", TR: "鎺ㄨ崘妯″瀷" },
+      DifferenceInSpecificSpeed: { ID: "", TR: "姣旇浆閫熷樊鍊�" },
+      originalModelInformation: { ID: "", TR: "鍘熸ā鍨嬩俊鎭�" },
+      afterConversion: { ID: "", TR: "鎹㈢畻鍚�" },
+      scaleRatio: { ID: "", TR: "缂╂斁绯绘暟" },
+      yelunTips: { ID: "", TR: "璇疯緭鍏ュ彾杞洿寰�"},
+      e_requirements:{ID:"",TR:"鏁堢巼瑕佹眰"},
+      currentMotorPower:{ID:"",TR:"褰撳墠鐢垫満鍔熺巼"},
+      requiredMotorPower:{ID:"",TR:"瑕佹眰鐨勭數鏈哄姛鐜�"}, 
+    },
+    //璇︽儏椤甸潰
+    detailPage: {
+      userUnit: { ID: 2117, TR: "鐢ㄦ埛鍗曚綅" },
+      standardUnit: { ID: 2118, TR: "鏍囧噯鍗曚綅" },
+      report: { ID: 692, TR: "鎶ュ憡" },
+      share: { ID: 693, TR: "鍒嗕韩" },
+      costAnalysis: { ID: 570, TR: "鎴愭湰鍒嗘瀽" },
+      medium: { ID: 1448, TR: "浠嬭川" },
+      model_3D: { ID: 132, TR: "涓夌淮妯″瀷" },
+      scanQRShare: { ID: 2354, TR: "鎵弿浜岀淮鐮佸垎浜�" },
+      view: { ID: 251, TR: "鏌ヨ" },
+      close: { ID: 459, TR: "鍏抽棴" },
+      setUp: { ID: 469, TR: "璁惧畾" },
+      flowUnits: { ID: 2102, TR: "娴侀噺鍗曚綅" },
+      headUnit: { ID: 2103, TR: "鎵▼鍗曚綅" },
+      powerUnit: { ID: 2355, TR: "鍔熺巼鍗曚綅" },
+      npshUnit: { ID: "", TR: "姹借殌鍗曚綅" },
+      d2Unit: { ID: "", TR: "鍙惰疆澶栧緞鍗曚綅" },
+      followSystem: { ID: "", TR: "璺熼殢绯荤粺" },
+      exitFull: { ID: 2356, TR: "閫�鍑哄叏灞�" },
+      partNo: { ID: 159, TR: "浜у搧缂栧彿" },
+      materialGroup: { ID: 1715, TR: "鏉愭枡缁�" },
+      material: { ID: 1199, TR: "鏉愭枡" },
+      selectionReport: { ID: 237, TR: "閫夊瀷鎶ュ憡" },
+      lang: { ID: 449, TR: "璇█" },
+      fileFormat: { ID: 1547, TR: "鏂囦欢鏍煎紡" },
+      buildFile: { ID: 2343, TR: "鐢熸垚鏂囦欢" },
+      customerInfo: { ID: 780, TR: "瀹㈡埛淇℃伅" },
+      orderInformation: { ID: 866, TR: "璁㈠崟淇℃伅" },
+      setReportContent: { ID: 871, TR: "璁剧疆鎶ュ憡鍐呭" },
+      reportInformation: { ID: "", TR: "鎶ュ憡淇℃伅" },
+      projectInformation: { ID: 89, TR: "椤圭洰淇℃伅" },
+      productName: { ID: 863, TR: "浜у搧鍚嶇О" },
+      projectCode: { ID: 1011, TR: "椤圭洰缂栧彿" },
+      projectName: { ID: 785, TR: "椤圭洰鍚嶇О" },
+      itemNO: { ID: 786, TR: "宸ヤ綅缂栧彿" },
+      customerName: { ID: 865, TR: "瀹㈡埛鍚嶇О" },
+      customerAddress: { ID: 952, TR: "瀹㈡埛鍦板潃" },
+      contactPerson: { ID: 753, TR: "鑱旂郴浜�" },
+      contactInformation: { ID: 35, TR: "鑱旂郴鏂瑰紡" },
+      email: { ID: 1803, TR: "閭" },
+      website: { ID: 1804, TR: "缃戝潃" },
+      country: { ID: 1805, TR: "鍥藉" },
+      price: { ID: 868, TR: "浜у搧鍗曚环" },
+      productModel: { ID: "", TR: "璁㈠崟涓骇鍝佸瀷鍙�" },
+      pumpPeformance: { ID: 1798, TR: "璁㈠崟鍙�" },
+      purchaseQuantity: { ID: 870, TR: "璐拱鏁伴噺" },
+      orderNote: { ID: 867, TR: "璁㈠崟澶囨敞" },
+      pageReportSet: { ID: 2352, TR: "椤甸潰璁剧疆" },
+      isBWDispplay: { ID: 804, TR: "榛戠櫧鏄剧ず鏇茬嚎" },
+      dataAndCurve: { ID: 801, TR: "鏁版嵁琛ㄥ拰鏇茬嚎" },
+      curveGraph: { ID: 766, TR: "鏇茬嚎鍥�" },
+      sizePicture: { ID: 694, TR: "灏哄鍥�" },
+      assemblyDrawing: { ID: 134, TR: "瀹夎鍥�" },
+      modelDrawing: { ID: 183, TR: "瀹炵墿鍥�" },
+      explosionDiagram: { ID: "", TR: "鐖嗙偢鍥�" },
+      modelDrawinUnit: { ID: 2353, TR: "瀹炵墿鍥�(鏈虹粍)" },
+      structureDrawing: { ID: 185, TR: "缁撴瀯鍥�" },
+      offerText: { ID: 798, TR: "鎶ヤ环鏂囨湰" },
+      companyName: { ID: 995, TR: "鍏徃鎶ご" },
+      companyWebsite: { ID: 1801, TR: "鍏徃缃戝潃" },
+      performanceCurve: { ID: 218, TR: "鎬ц兘鏇茬嚎" },
+      assemblyDrawingPart: { ID: 2344, TR: "瀹夎鍥�(鍗曟车)" },
+      assemblyDrawingSys: { ID: 2345, TR: "瀹夎鍥�(鏈虹粍)" },
+      outlineDrawing: { ID: "", TR: "瀹夎灏哄鍥�" },
+      pumpDimensions: { ID: "", TR: "娉靛ご灏哄鍥�" },
+      physical: { ID: 183, TR: "瀹炵墿鍥�" },
+      parameter: { ID: 111, TR: "鍙傛暟" },
+      productFileName: { ID: 694, TR: "灏哄鍥�" },
+      data: { ID: 2026, TR: "鏁版嵁" },
+      unit: { ID: 526, TR: "鍗曚綅" },
+      operatingParameters: { ID: 2126, TR: "杩愯鍙傛暟" },
+      parameterQuery: { ID: 2346, TR: "鍙傛暟鏌ヨ" },
+      installation: { ID: 2169, TR: "瀹夎淇℃伅" },
+      motor: { ID: 2170, TR: "鐢垫満淇℃伅" },
+      documents: { ID: 687, TR: "绯诲垪鏂囨。" },
+      properties: { ID: 230, TR: "灞炴��" },
+      flow: { ID: 47, TR: "娴侀噺" },
+      head: { ID: 48, TR: "鎵▼" },
+      frequency: { ID: "", TR: "棰戠巼" },
+      shaftPower: { ID: 109, TR: "杞村姛鐜�" },
+      efficiency: { ID: 108, TR: "鏁堢巼" },
+      inputPower: { ID: "", TR: "杈撳叆鍔熺巼" },
+      unitEfficiency: { ID: "", TR: "鏈虹粍鏁堢巼" },
+      press: { ID: 1105, TR: "鍘嬪姏" },
+      power: { ID: 422, TR: "鍔熺巼" },
+  
+      seriesConnect: { ID: "", TR: "涓茶仈" },
+      parallelConnect: { ID: "", TR: "骞惰仈" },
+      method: { ID: "", TR: "鏂瑰紡" },
+      update: { ID: "", TR: "鏇存柊" },
+      number: { ID: "", TR: "鍙版暟" },
+      queryParams: { ID: "", TR: "鏌ヨ鍙傛暟" },
+  
+      impellerDia: { ID: 112, TR: "鍙惰疆澶栧緞" },
+      motorPower: { ID: 682, TR: "鐢垫満鍔熺巼" },
+      npsh: { ID: 110, TR: "NPSHr" },
+      speed: { ID: 115, TR: "杞��" },
+      coefficient: { ID: "", TR: "绯绘暟" },
+      parameterSelection: { ID: 5, TR: "鍙傛暟閫夊瀷" },
+      allowableRegionMax: { ID: 2347, TR: "鍏佽鍖哄煙(澶�)" },
+      allowableRegionMin: { ID: 2348, TR: "鍏佽鍖哄煙(灏�)" },
+      optimalAreaMax: { ID: 2349, TR: "鏈�浼樺尯鍩�(澶�)" },
+      optimalAreaMin: { ID: 2350, TR: "鏈�浼樺尯鍩�(灏�)" },
+      closeDeadCenter: { ID: 2351, TR: "鍏虫鐐�" },
+      bestAdvantage: { ID: 2357, TR: "鏈�浼樼偣" },
+      workingPoint: { ID: 203, TR: "宸ヤ綔鐐�" },
+      flowPoint150: { ID: 2358, TR: "娴侀噺150%鐐�" },
+      powerPointMax: { ID: 2359, TR: "鏈�澶у姛鐜囩偣" },
+      video: { ID: 688, TR: "瑙嗛" },
+      picture: { ID: "", TR: "鍥剧墖" },
+      variableSpeedCurve: { ID: 2374, TR: "鍙橀�熸洸绾�" },
+      seriesParallelConnection: { ID: "", TR: "涓插苟鑱旀洸绾�" },
+      displaySettings: { ID: 1625, TR: "鏄剧ず璁剧疆" },
+      curveExport: { ID: 2375, TR: "鏇茬嚎瀵煎嚭" },
+      chartColor: { ID: 2376, TR: "鍥捐〃棰滆壊" },
+      monochrome: { ID: 139, TR: "鍗曡壊" },
+      multicolour: { ID: "", TR: "褰╄壊" },
+      spectrumDisplay: { ID: 2377, TR: "鍨嬭氨鏄剧ず" },
+      display: { ID: 217, TR: "鏄剧ず" },
+      noDisplay: { ID: 158, TR: "涓嶆樉绀�" },
+      display_curve: { ID: "", TR: "鏄剧ず鍦ㄦ洸绾挎湯绔�" },
+      displayPanel: { ID: "", TR: "鏄剧ず鍦ㄩ潰鏉�" },
+      onlyShowworkCurve: { ID: 1969, TR: "浠呮樉绀哄伐浣滄洸绾�" },
+      speedList: { ID: 2378, TR: "杞�熷垪琛�" },
+      addSpeed: { ID: 2379, TR: "娣诲姞杞��" },
+      addPinLv: { ID: "", TR: "娣诲姞棰戠巼" },
+      pleaseEnterSpeed: { ID: 1154, TR: "璇疯緭鍏ヨ浆閫�" },
+      pleaseEnterHz: { ID: "", TR: "璇疯緭鍏ラ鐜�" },
+      tip: { ID: 286, TR: "鎻愮ず" },
+      define: { ID: 125, TR: "纭畾" },
+      cancel: { ID: 126, TR: "鍙栨秷" },
+      download: { ID: 448, TR: "涓嬭浇" },
+      downloadTips: { ID: "", TR: "璇蜂笅杞芥闈㈢▼搴�,瀵煎嚭鎬ц兘鏇茬嚎" },
+      curve: { ID: 766, TR: "鏇茬嚎鍥�" },
+      document: { ID: 984, TR: "鏂囨。" },
+      DocumentNone: { ID: "", TR: "鏂囨。(鏃�)" },
+      Model: { ID: "", TR: "妯″瀷" },
+      queryPoint: { ID: "", TR: "鏌ヨ鐐�" },
+      productNoSelect: { ID: "", TR: "浜у搧缂栧彿閫夋嫨" },
+      watermark: { ID: "", TR: "姘村嵃" },
+      IsPrintModel3d: { ID: "", TR: "浜х敓涓夌淮椤甸潰" },
+      IsCreateMultiSpeedChart: { ID: "", TR: "浜х敓鍙橀鏇茬嚎" },
+      queryCurve: { ID: "", TR: "鏌ヨ鏇茬嚎" }, //yy  add---
+      parameterQuery: { ID: "", TR: "鍙傛暟鏌ヨ" },
+      parameter_s: { ID: "", TR: "鍙傛暟" },
+      parameterCancel: { ID: "", TR: "鍙栨秷" },
+      parameterDetermine: { ID: "", TR: "纭畾" },
+      showDesignPoints: { ID: "", TR: "鏄剧ず璁捐鐐�" },
+      designPointStyle: { ID: "", TR: "璁捐鐐规牱寮�" },
+      crosshair: { ID: "", TR: "鍗佸瓧绾�" },
+      invertedTriangle: { ID: "", TR: "鍊掍笁瑙�" },
+      roundDot: { ID: "", TR: "鍦嗙偣" },
+      boldRightAngle: { ID: "", TR: "鍔犵矖鐩磋" },
+      deviceCurve: { ID: "", TR: "瑁呯疆鏇茬嚎" },
+      displayIndex: { ID: "", TR: "鏄剧ず" },
+      netHeadValue: { ID: "", TR: "鍑�鎵▼鍊�" },
+      displayCurve: { ID: "", TR: "鏄剧ず鏇茬嚎" },
+      onlyDisplayCurve: { ID: "", TR: "浠呮樉绀哄伐浣滄洸绾�" },
+      showAllCurves: { ID: "", TR: "鏄剧ず鎵�鏈夋洸绾�" },
+      outputChartToCAD: { ID: "", TR: "璇蜂笅杞藉鎴风,瀹㈡埛绔墠鑳藉鍑篊AD鏍煎紡鏂囦欢" },
+      inquiry: { ID: "", TR: "璇环" },
+      productInquiry: { ID: "", TR: "浜у搧璇环" },
+      address: { ID: "", TR: "鍦板潃" },
+      contactName: { ID: "", TR: "鑱旂郴浜哄悕绉�" },
+      pumpModel: { ID: "", TR: "娉靛瀷鍙�" },
+      pumpNumber: { ID: "", TR: "娉垫暟閲�" },
+      submit: { ID: "", TR: "鎻愪氦" },
+      inquirtFormatte1: { ID: "", TR: "璇疯緭鍏ヨ仈绯绘柟寮�" },
+      inquirtFormatte2: { ID: "", TR: "璇疯緭鍏ヨ仈绯讳汉鍚嶇О" },
+      selectMedia: { ID: "", TR: "閫夋嫨浠嬭川" }, //yy add
+      cleanWater: { ID: 459, TR: "娓呮按" },
+      viewDetail: { ID: 661, TR: "鏌ョ湅璇︽儏" },
+      sewage: { ID: 21, TR: "姹℃按" },
+      viscousSlurry: { ID: "", TR: "姹℃按銆佹福娴嗙矘绋犳祮娑�" },
+      chemicalLiquid: { ID: "", TR: "鍖栧娑蹭綋" },
+      hydrocarbons: { ID: "", TR: "鍖栧娑蹭綋銆佺儍绫荤瓑" },
+      Gas: { ID: "", TR: "姘斾綋" },
+      gasList: { ID: "", TR: "绌烘皵銆佹补姘斻�佺摝鏂�" },
+      nameplateParameter: { ID: 2194, TR: "閾墝鍙傛暟" },
+      angle: { ID: 1500, TR: "瑙掑害" },
+      printCompanyInfo: { ID: "", TR: "鎵撳嵃鍏徃淇℃伅" },
+  
+      auto: { ID: "", TR: "鑷姩鍒ゆ柇" },
+      original: { ID: "", TR: "鍘熷鏂瑰悜" },
+      clockwise: { ID: "", TR: "椤烘椂閽堟柟鍚�" },
+      counterclockwise: { ID: "", TR: "閫嗘椂閽堟柟鍚�" },
+  
+      resize: { ID: "", TR: "鑷�傚簲" },
+      zoomIn: { ID: "", TR: "鏀惧ぇ" },
+      zoomOut: { ID: "", TR: "缂╁皬" },
+      highlightModifyArea: { ID: "", TR: "楂樹寒淇敼鍖哄煙" },
+      move: { ID: "", TR: "绉诲姩鏂囨湰" },
+  
+      productConfig: { ID: "", TR: "浜у搧閰嶇疆" },
+      exportSettings: { ID: "", TR: "瀵煎嚭璁剧疆" },
+      path: { ID: "", TR: "璺緞" },
+      monochromeDisplay: { ID: "", TR: "鍗曡壊鏄剧ず" },
+      chartSettings: { ID: "", TR: "鍥捐〃璁剧疆" },
+      selectionPoint: { ID: "", TR: "閫夊瀷鐐�" },
+      nameplateParameterPoints: { ID: "", TR: "閾墝鍙傛暟鐐�" },
+      operatingArea: { ID: "", TR: "杩愯鍖哄煙" },
+      optimalArea: { ID: "", TR: "鏈�浼樺尯鍩�" },
+      deviceArea: { ID: "", TR: "瑁呯疆鏇茬嚎" },
+      flowHeadLine: { ID: "", TR: "娴侀噺鎵▼绾�" },
+      allHeadCurves: { ID: "", TR: "鎵�鏈夋壃绋嬫洸绾�" },
+      flowEfficiencyLine: { ID: "", TR: "娴侀噺鏁堢巼绾�" },
+      onlyWorkingCurve: { ID: "", TR: "浠呭伐浣滄洸绾�" },
+      flowPowerLine: { ID: "", TR: "娴侀噺鍔熺巼绾�" },
+      AllPowerCurves: { ID: "", TR: "鎵�鏈夊姛鐜囨洸绾�" },
+      textContent: { ID: "", TR: "鏂囨湰鍐呭" },
+      rotationAngle: { ID: "", TR: "鏃嬭浆瑙掑害" },
+      fontSize: { ID: "", TR: "鏂囧瓧澶у皬" },
+      alignmentMethod: { ID: "", TR: "瀵归綈鏂瑰紡" },
+      fontColor: { ID: "", TR: "鏂囧瓧棰滆壊" },
+      blod: { ID: "", TR: "鍔犵矖" },
+      italic: { ID: "", TR: "鍊炬枩" },
+      leftRotation: { ID: "", TR: "宸︽棆杞�" },
+      rightRotation: { ID: "", TR: "鍙虫棆杞�" },
+      equivalentLine: { ID: "", TR: "绛夋晥绾�" },
+      minFlowCurve: { ID: "", TR: "鏈�灏忚繛缁祦閲忕嚎" },
+      maximumEfficiencyPoint: { ID: "", TR: "楂樻晥鐐�" },
+      allCurves: { ID: "", TR: "鎵�鏈夋洸绾�" },
+      flowNPSHrCurve: { ID: "", TR: "娴侀噺姹借殌绾�" },
+      colorStyle: { ID: "", TR: "棰滆壊鏍峰紡" },
+      maxMinWorkingCurve: { ID: "", TR: "鏈�澶ф渶灏忓伐浣滄洸绾�" },
+      errorTip: { ID: "", TR: "涓嶈兘灏忎簬鏈�灏忚酱鍔熺巼" },
+    },
+    //鎶ヨ〃鍒嗘瀽
+    LCC: {
+      Analysis: { ID: 568, TR: "鍒嗘瀽" },
+      accumulationCurve: { ID: 927, TR: "骞村害绱鏇茬嚎" },
+      statisticalChart: { ID: 928, TR: "鍗曞勾缁熻鍥�" },
+      workingPointFlow: { ID: 554, TR: "宸ヤ綔鐐规祦閲�" },
+      default: { ID: 921, TR: "榛樿" },
+      heating: { ID: 922, TR: "渚涙殩" },
+      pressurize: { ID: 923, TR: "澧炲帇" },
+      custom: { ID: 924, TR: "鑷畾涔�" },
+      status: { ID: 851, TR: "鐘舵��" },
+      flowRatio: { ID: 932, TR: "娴侀噺姣斾緥" },
+      timeScale: { ID: 933, TR: "鏃堕棿姣斾緥" },
+      fullLoad: { ID: 934, TR: "鍏ㄨ礋鑽�" },
+      partialLoad: { ID: 936, TR: "閮ㄥ垎璐熻嵎" },
+      nightCoolingOperation: { ID: 938, TR: "澶滈棿闄嶆俯杩愯" },
+      lowLoad: { ID: 937, TR: "浣庤礋鑽�" },
+      load: { ID: 2381, TR: "璐熻嵎" },
+      energyCosts: { ID: 560, TR: "鑳借�楁垚鏈�" },
+      workingDays: { ID: 555, TR: "姣忓勾澶ц嚧宸ヤ綔澶╂暟" },
+      workingHours: { ID: 556, TR: "姣忓勾澶ц嚧宸ヤ綔灏忔椂" },
+      powerFees: { ID: 566, TR: "鐢佃垂" },
+      per: { ID: 564, TR: "姣忓害" },
+      risiPowerPrice: { ID: 2382, TR: "鐢佃垂涓婃定" },
+      eachYear: { ID: 565, TR: "姣忓勾" },
+      CalcCycle: { ID: 557, TR: "璁$畻鍛ㄦ湡" },
+      year: { ID: 558, TR: "骞�" },
+      interestRate: { ID: 559, TR: "鍒╃巼" },
+      droop: { ID: 567, TR: "鏁堢巼涓嬮檷" },
+      co2Ratio: { ID: 920, TR: "CO2绯绘暟" },
+      conversionFactor: { ID: 2427, TR: "鐓ょ偔鎶樼畻绯绘暟" },
+      maintenanceCost: { ID: 535, TR: "缁存姢缁翠慨鎴愭湰" },
+      thousand: { ID: 2383, TR: "鍗冨厓" },
+      maintenance: { ID: 2384, TR: "缁存姢鍜岀淮淇�" },
+      runningCost: { ID: 541, TR: "杩愯璐圭敤" },
+      downtimeAndLoss: { ID: 539, TR: "鐢熶骇鍋滃伐鍜屾崯鑰�" },
+      environmentalFee: { ID: 540, TR: "鐜淇濇姢璐�" },
+      othersFee: { ID: 777, TR: "鍏朵粬骞磋垂鐢�" },
+      initialCost: { ID: 548, TR: "涓�娆℃�у垵濮嬫垚鏈�" },
+      orderCost: { ID: 2385, TR: "璁惧閲囪喘璐圭敤" },
+      installDebugCharge: { ID: 550, TR: "瀹夎鍜岃皟璇�" },
+      tonAndkW: { ID: 2386, TR: "鍚�/涓囧崈鐡�" },
+      mapOfCosts: { ID: 925, TR: "璐圭敤鍥�" },
+      costItem: { ID: 929, TR: "璐圭敤椤�" },
+      cost: { ID: 930, TR: "璐圭敤" },
+      percentage: { ID: 931, TR: "鐧惧垎姣�" },
+      maintenanceAndRepair: { ID: 542, TR: "缁翠慨鍜屾姢鐞�" },
+      co2: { ID: "", TR: "CO2" },
+      coalConsumption: { ID: 2388, TR: "鐓よ�楅噺" },
+      totalAnnualCost: { ID: 942, TR: "骞存�昏垂鐢�" },
+      co2TotalEmissions: { ID: 2389, TR: "co2鎬绘帓鏀鹃噺" },
+      tenThousand: { ID: 940, TR: "涓�" },
+      tenThousandTon: { ID: 2390, TR: "涓囧惃" },
+      calculationPeriod: {
+        ID: "",
+        TR: "璇疯緭鍏ヨ绠楀懆鏈�!",
+      }, //yy ---add
+      scaleTime: {
+        ID: "",
+        TR: "璇疯緭鍏ユ椂闂存瘮渚�!",
+      },
+      sumProportions: {
+        ID: "",
+        TR: "璇疯緭鍏ユ椂闂存瘮渚嬩箣鍜屼负100%!",
+      },
+      electricCharge: {
+        ID: "",
+        TR: "璇疯緭鍏ョ數璐�(姣忓害)!",
+      },
+      coefficient_c: {
+        ID: "",
+        TR: "璇疯緭CO2绯绘暟!",
+      },
+      conversionCoefficient: {
+        ID: "",
+        TR: "璇疯緭鍏ョ叅鐐姌绠楃郴鏁�!",
+      },
+    },
+    //棣栭〉
+    indexPage: {
+      corpIntroduction: { ID: 30, TR: "鍏徃浠嬬粛" },
+      basicInformation: { ID: "", TR: "鍩虹淇℃伅" },
+      enterpriseHonors: { ID: 32, TR: "浼佷笟鑽h獕" },
+      enterpriseStyle: { ID: 2286, TR: "浼佷笟椋庤矊" },
+      organizationStructure: { ID: "", TR: "缁勭粐缁撴瀯" },
+      corporateCulture: { ID: "", TR: "浼佷笟鏂囧寲" },
+      introductionToPumpAnimation: { ID: "", TR: "娉靛瀷鍔ㄧ敾浠嬬粛" },
+      companyPortfolio: { ID: "", TR: "鍏紡缁勫悎" },
+      salesNetwork: { ID: 31, TR: "閿�鍞綉缁�" },
+      performanceSelection: { ID: 2287, TR: "姘村姏鎬ц兘閫夊瀷" },
+      productSearch: { ID: 771, TR: "浜у搧鎼滅储" },
+      contactinformation: { ID: 35, TR: "鑱旂郴鏂瑰紡" },
+      myProject: { ID: 1716, TR: "鎴戠殑椤圭洰" },
+      ebook: { ID: 1, TR: "鐢靛瓙鏍锋湰" },
+      pdfFile: { ID: 1717, TR: "绾歌川鏍锋湰" },
+      application: { ID: 2391, TR: "琛屼笟搴旂敤" },
+      intelligentSelection: { ID: 68, TR: "鏅鸿兘閫夊瀷" },
+      firePump: { ID: 2289, TR: "娑堥槻娉�" },
+      flow: { ID: 47, TR: "娴侀噺" },
+      head: { ID: 48, TR: "鎵▼" },
+      type: { ID: 246, TR: "绫诲瀷" },
+      more: { ID: 734, TR: "鏇村" },
+      nextStep: { ID: 368, TR: "涓嬩竴姝�" },
+      zmSearch: { ID: 2392, TR: "鎸夊瓧姣�" },
+      alphaList: { ID: "", TR: "瀛楁瘝鍒楄〃" },
+      byType: { ID: 2337, TR: "鎸夌被鍨�" },
+      byIndustry: { ID: 2338, TR: "鎸夎涓�" },
+      product: { ID: 721, TR: "浜у搧" },
+      material: { ID: 722, TR: "璧勬枡" },
+      byProductLine: { ID: "", TR: "鎸変骇鍝佺嚎" },
+      model_3D: { ID: 132, TR: "涓夌淮妯″瀷" },
+      about_us: { ID: 2393, TR: "鍏充簬鎴戜滑" },
+      product_catalog: { ID: 2394, TR: "浜у搧鐩綍" },
+      product_selection: { ID: 2395, TR: "浜у搧閫夊瀷" },
+      letter_search: { ID: 2396, TR: "瀛楁瘝鎼滅储" },
+      application_HY: { ID: 2391, TR: "琛屼笟搴旂敤" },
+      application_area: { ID: 2339, TR: "搴旂敤棰嗗煙" },
+      sample_Model: { ID: 2397, TR: "鏍锋湰妯″瀷" },
+      searchByPumpImg: { ID: "", TR: "鎸変骇鍝佸浘鎼滅储" },
+      pleaseSelect: { ID: 2022, TR: "璇烽�夋嫨" },
+      corpInfo: { ID: 1802, TR: "鍏徃淇℃伅" },
+      add: { ID: 710, TR: "鍏徃鍦板潃" },
+      tel: { ID: 2398, TR: "鑱旂郴鐢佃瘽" },
+      email: { ID: 2399, TR: "浼佷笟閭" },
+      hotline: { ID: 2400, TR: "鍏ㄥ浗鍚屼竴鏈嶅姟鐑嚎" },
+      helpManual: { ID: "", TR: "甯姪鎵嬪唽" },
+      changePassword: { ID: 23, TR: "淇敼瀵嗙爜" },
+      viewNow: { ID: 170, TR: "绔嬪嵆鏌ョ湅" },
+      quick: { ID: "", TR: "蹇��" },
+      sampleBook: { ID: "", TR: "浜у搧鏍锋湰" },
+      simpleAndDirect: { ID: "", TR: "娓呮櫚绠�鎹�" },
+      clearClassification: { ID: "", TR: "鍒嗙被鏄庣‘" },
+      quickProductSelection: { ID: "", TR: "浜у搧蹇�熼�夊彇" },
+      productSamplePreview: { ID: "", TR: "浜у搧鏍锋湰棰勮" },
+      productNameAtoZ: { ID: "", TR: "浜у搧鍚嶇ОA-Z" },
+      findApplications: { ID: "", TR: "鍙戠幇閫傚悎鎮ㄩ渶姹傜殑搴旂敤" },
+      feedBack: { ID: "", TR: "闂鍙嶉" },
+      feedbackContent: { ID: "", TR: "鍙嶉鍐呭" },
+      feedbackRule: { ID: "", TR: "鑱旂郴浜烘垨鑱旂郴鏂瑰紡涓嶈兘涓虹┖" },
+      problemType: { ID: "", TR: "闂绫诲瀷" },
+      rorExample: { ID: "", TR: "渚嬪锛氳蒋浠堕棶棰樸�佹洸绾块敊璇�" },
+      classAndSelection: { ID: "", TR: "鍒嗙被閫夊瀷" },
+      industrySelection: { ID: "", TR: "琛屼笟閫夊瀷" },
+      projectList: { ID: "", TR: "椤圭洰鍒楄〃" },
+      customerList: { ID: "", TR: "瀹㈡埛鍒楄〃" },
+  
+      intelligentSelectionSub: { ID: "", TR: "鏍规嵁鍙傛暟绛涢�夛紝绮惧噯閫夊嚭鎵�闇�鐨勫瀷鍙�" },
+      marketSector: { ID: "", TR: "甯傚満棰嗗煙" },
+      marketSectorSub: { ID: "", TR: "鏍规嵁璁惧搴旂敤棰嗗煙锛屽憟鐜版墍闇�鐨勫瀷鍙�" },
+      alphabeticSort: { ID: "", TR: "瀛楁瘝鎺掑簭" },
+      alphabeticSortSub: { ID: "", TR: "鏍规嵁瀛楁瘝鎺掑簭锛岀綏鍒楁墍鏈夌殑璁惧绯诲垪" },
+      enterSelect: { ID: "", TR: "杩涘叆閫夊瀷" },
+    },
+    simpleLoginPage: {
+      login: { ID: 673, TR: "鐧诲綍" },
+      register: { ID: 380, TR: "娉ㄥ唽" },
+      enterVerificCode: { ID: 2401, TR: "璇疯緭鍏ラ獙璇佺爜" },
+      verificCodeError: { ID: 2402, TR: "楠岃瘉鐮侀敊璇�" },
+      loginPrompt: { ID: 2403, TR: "鐧诲綍鎻愮ず" },
+      passwordError: { ID: 400, TR: "瀵嗙爜閿欒" },
+      loginSuccessful: { ID: 2404, TR: "鐧诲綍鎴愬姛,姝e湪璺宠浆~" },
+      AccountLogin: { ID: 2405, TR: "璐︽埛鐧诲綍" },
+      CodeScanningLogin: { ID: 2290, TR: "鎵爜鐧诲綍" },
+      registerInfo: {
+        ID: 2291,
+        TR: "濡傛灉鎮ㄨ繕娌℃湁鍔犲叆鎴戜滑锛屽彲浠ョ偣鍑讳笅鏂圭殑娉ㄥ唽鎴愪负鎴戜滑鐨勪竴鍛�",
+      },
+      registerInfoTitle: { ID: 2292, TR: "鏂扮敤鎴�" },
+      loginInfo: {
+        ID: 2293,
+        TR: "濡傛灉鎮ㄥ凡缁忔槸鎴戜滑涓殑涓�鍛樺彲浠ョ偣鍑讳笅鏂圭殑鐧诲綍锛岃繘鍏ュ埌鎴戜滑鐨勫钩鍙�",
+      },
+      loginInfoTitle: { ID: 2294, TR: "鎴戜滑涓殑涓�鍛�" },
+      userType: { ID: 2295, TR: "鐢ㄦ埛绫诲瀷" },
+      loginName: { ID: 2296, TR: "璐︽埛鍚�" },
+      password: { ID: 378, TR: "瀵嗙爜" },
+      userType0: { ID: 703, TR: "鍐呴儴浜哄憳" },
+      userType1: { ID: 2297, TR: "澶栭儴浜哄憳" },
+      userType2: { ID: "", TR: "浠g悊鍟�" },
+      phoneNumber: { ID: 379, TR: "鎵嬫満鍙�" },
+      email: { ID: 1803, TR: "閭" },
+      forgetPassword: { ID: "", TR: "蹇樿瀵嗙爜" },
+      sendSuccess: { ID: "", TR: "鍙戦�佹垚鍔�" },
+      verifyAccount: { ID: "", TR: "璐﹀彿楠岃瘉" },
+      fillInInformation: { ID: "", TR: "濉啓淇℃伅" },
+      registerSuccess: { ID: 890, TR: "娉ㄥ唽鎴愬姛" },
+      registerTips: { ID: "", TR: "璇峰~鍐欐偍娉ㄥ唽鏃剁殑鎵嬫満鍙�" },
+      forgetEmailTips: { ID: "", TR: "璇峰~鍐欐偍娉ㄥ唽鏃剁殑閭" },
+  
+      verifyCode: { ID: 700, TR: "楠岃瘉鐮�" },
+      send: { ID: "", TR: "鍙戦��" },
+      userAccount: { ID: "", TR: "鐢ㄦ埛璐﹀彿" },
+      oldPassword: { ID: "", TR: "鏃у瘑鐮�" },
+      oldPsdTips: { ID: "", TR: "璇疯緭鍏ユ棫瀵嗙爜" },
+      newPassword: { ID: 397, TR: "鏂板瘑鐮�" },
+      newPsdTips: { ID: "", TR: "璇疯緭鍏ユ柊瀵嗙爜" },
+      oldPwdRule: { ID: "", TR: "鏃у瘑鐮佷笉鑳戒负绌�" },
+      newPwdRule: { ID: "", TR: "鏂板瘑鐮佷笉鑳戒负绌�" },
+      oldAndNewPwdRule: { ID: "", TR: "鏂版棫瀵嗙爜涓嶈兘涓�鑷�" },
+      enterPwdAgain: { ID: 2303, TR: "璇峰啀娆¤緭鍏ュ瘑鐮�" },
+      enterTwoPwdDisaccord: { ID: "", TR: "涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�" },
+      changeSuccess: { ID: 636, TR: "淇敼鎴愬姛" },
+      pwdRule: { ID: 399, TR: "瀵嗙爜涓嶄竴鑷�" },
+      accountSettings: { ID: "", TR: "璐﹀彿璁剧疆" },
+      confirmPassword: { ID: "", TR: "纭畾瀵嗙爜" },
+      realName: { ID: "", TR: "鐢ㄦ埛鍚�" },
+      corpName: { ID: 102, TR: "鍏徃鍚嶇О" },
+      corpAddress: { ID: 710, TR: "鍏徃鍦板潃" },
+  
+      formValidate: {
+        email0: { ID: 773, TR: "璇疯緭鍏ラ偖绠�" },
+        email1: { ID: 2298, TR: "璇疯緭鍏ユ纭殑閭鏍煎紡" },
+        TelPhone0: { ID: 2299, TR: "璇疯緭鍏ユ墜鏈哄彿鐮�" },
+        TelPhone1: { ID: 2300, TR: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜鏍煎紡" },
+        pass0: { ID: 2301, TR: "璇疯緭鍏ュ瘑鐮�" },
+        pass1: { ID: 2302, TR: "璇疯緭鍏ュ瘑鐮侀暱搴︿负8~18浣�" },
+        pass2: { ID: 2303, TR: "璇峰啀娆¤緭鍏ュ瘑鐮�" },
+        pass3: { ID: 2304, TR: "涓ゆ瀵嗙爜杈撳叆涓嶄竴鏍�" },
+        pass4: { ID: "", TR: "瀵嗙爜蹇呴』鍖呭惈澶у啓鎴栧皬鍐欏瓧姣嶃�佹暟瀛椼�佺壒娈婂瓧绗�" },
+        loginName0: { ID: 2305, TR: "璇疯緭鍏ョ櫥褰曞悕" },
+        loginName1: { ID: 2306, TR: "璇疯緭鍏ョ櫥褰曞悕闀垮害涓�6~18浣�" },
+        userName0: { ID: 2307, TR: "璇疯緭鍏ョ敤鎴峰鍚�" },
+        corpName0: { ID: 2308, TR: "璇疯緭鍏ュ叕鍙稿悕绉�" },
+        corpAddress0: { ID: "", TR: "璇疯緭鍏ュ叕鍙稿湴鍧�" },
+        tips1: { ID: "", TR: "涓嶈兘鍖呭惈鐗规畩绗﹀彿'鎴栵紙锛夋垨*" },
+      },
+    },
+    // 澶撮儴header鏍�
+    header: {
+      serieslist: { ID: 1, TR: "鐢靛瓙鏍锋湰" },
+      selparas: { ID: 5, TR: "鍙傛暟閫夊瀷" },
+      lang: { ID: 449, TR: "璇█" },
+      cn: { ID: 714, TR: "涓枃" },
+      en: { ID: 296, TR: "鑻辨枃" },
+      ko: { ID: 299, TR: "闊╂枃" },
+      es: { ID: 2360, TR: "瑗跨彮鐗欐枃" },
+      russian: { ID: 302, TR: "淇勬枃" },
+      Applications: { ID: 2309, TR: "鍏朵粬搴旂敤" },
+      danji: { ID: 2310, TR: "鍗曟満鐗�" },
+      android: { ID: 2311, TR: "瀹夊崜" },
+      ios: { ID: 2312, TR: "鑻规灉" },
+      wechat: { ID: 2313, TR: "寰俊" },
+      userInfo: { ID: 2423, TR: "璐︽埛淇℃伅" },
+      logout: { ID: 707, TR: "閫�鍑虹櫥褰�" },
+      collectList: { ID: 2406, TR: "鏀惰棌鍒楄〃" },
+      compareList: { ID: 840, TR: "姣旇緝鍒楄〃" },
+      collect: { ID: 1705, TR: "鏀惰棌" },
+      addCollect: { ID: 2407, TR: "鍔犲叆鏀惰棌" },
+      deleteCollect: { ID: 842, TR: "娓呴櫎鏀惰棌" },
+      compare: { ID: 691, TR: "姣旇緝" },
+      addCompare: { ID: 839, TR: "鍔犲叆姣旇緝" },
+      deleteCompare: { ID: 841, TR: "娓呴櫎姣旇緝" },
+      comparisonAdded: { ID: 2408, TR: "宸茬粡鍔犲叆姣旇緝鍒楄〃" },
+      addComparSueecss: { ID: 2409, TR: "鍔犲叆姣旇緝鍒楄〃鎴愬姛" },
+      clearComparList: { ID: 2410, TR: "纭娓呴櫎姣旇緝鍒楄〃" },
+  
+      clearComparSuccess: { ID: 2411, TR: "娓呴櫎姣旇緝鍒楄〃鎴愬姛" },
+      confirmDelCompar: { ID: 2412, TR: "纭鍒犻櫎姝ゅ瀷鍙风殑姣旇緝" },
+      deleteSuccess: { ID: 2413, TR: "鍒犻櫎鎴愬姛" },
+      confirmDelCollect: { ID: 2414, TR: "纭鍒犻櫎姝ゆ敹钘�" },
+      confirmClearCollect: { ID: 2415, TR: "纭娓呴櫎鏀惰棌" },
+      clearCollectSueecss: { ID: 2416, TR: "娓呴櫎鎴愬姛" },
+      collecExists: { ID: 2417, TR: "鏀惰棌宸插瓨鍦�" },
+      collectSuccess: { ID: 2418, TR: "鏀惰棌鎴愬姛" },
+      login: { ID: 673, TR: "鐧诲綍" },
+      information: { ID: 2419, TR: "涓汉淇℃伅" },
+      tipInfo: { ID: 2420, TR: "鎮ㄧ‘瀹氳閫�鍑虹郴缁熷悧" },
+      tip: { ID: 289, TR: "鎻愮ず" },
+      define: { ID: 125, TR: "纭畾" },
+      cancel: { ID: 126, TR: "鍙栨秷" },
+      collectTip: { ID: 2421, TR: "鏀惰棌鍒楄〃涓虹┖" },
+      compareTip: { ID: 2422, TR: "姣旇緝鍒楄〃鑷冲皯闇�瑕佷袱椤�" },
+      accountModification: { ID: "", TR: "璐︽埛淇敼" },
+      accountInfo: { ID: 2423, TR: "璐︽埛淇℃伅" },
+      baseInfo: { ID: 424, TR: "鍩烘湰淇℃伅" },
+      realName: { ID: 631, TR: "鐪熷疄濮撳悕" },
+      account: { ID: 2424, TR: "璐﹀彿" },
+      telPhoneNumber: { ID: 379, TR: "鎵嬫満鍙�" },
+      email: { ID: 1803, TR: "閭" },
+      corpName: { ID: 102, TR: "鍏徃鍚嶇О" },
+      code: { ID: "", TR: "缂栫爜" },
+      corpAddress: { ID: 710, TR: "鍏徃鍦板潃" },
+      userSetting: { ID: "", TR: "鐢ㄦ埛璁剧疆" },
+  
+      entryName: { ID: "", TR: "椤圭洰鍚嶇О" }, //yy add---
+      companyYName: { ID: "", TR: "鎮ㄧ殑鍏徃鍚�" },
+      companyType: { ID: "", TR: "绫诲瀷" },
+      constructionParty: { ID: "", TR: "閲囪喘鏂�/寤鸿鏂�" },
+      projectLocation: { ID: "", TR: "椤圭洰鎵�鍦ㄥ湴" },
+      projectCity: { ID: "", TR: "鍩庡競" },
+      projectArea: { ID: "", TR: "鍘�/鍖�" },
+      projectDetailAddress: { ID: "", TR: "璇︾粏鍦板潃" },
+      projectNotes: { ID: "", TR: "澶囨敞璇存槑" },
+  
+      itemName: { ID: "", TR: "椤圭洰鍚�" },
+      itemNo: { ID: "", TR: "椤圭洰缂栧彿" },
+      item_start_EndTime: { ID: "", TR: "寮�濮�/缁撴潫鏃堕棿" },
+      ConsumerName: { ID: "", TR: "涓氫富鏂�" },
+      PrjCreateTime: { ID: "", TR: "椤圭洰娣诲姞鏃堕棿" },
+      CustomerDistrict: { ID: "", TR: "鎵�灞炲尯鍩�" },
+      C_Address: { ID: "", TR: "鍦板潃" },
+      itemQuery: { ID: "", TR: "鏌ヨ" },
+      itemDelete: { ID: "", TR: "鍒犻櫎" },
+    },
+    // 搴曢儴footer 鏍�
+    footer: {
+      version: { ID: 29, TR: "鐗堟湰" },
+      technical: { ID: 697, TR: "鎶�鏈敮鎸侊細涓婃捣涔夌淮娴佷綋绉戞妧鏈夐檺鍏徃" },
+      technicalAddres: { ID: "", TR: "澶囨鍙蜂负锛氭勃ICP澶�14049296鍙�-2" },
+      copyright: { ID: "", TR: "鐗堟潈鎵�鏈夛細涓婃捣涔夌淮娴佷綋绉戞妧鏈夐檺鍏徃" },
+      copyrightAddres: { ID: "", TR: "鍦板潃锛氫笂娴峰競闂佃鍖烘睙鏈堣矾999鍙�1骞�615" },
+      tips: { ID: 2425, TR: "鏁版嵁浠呬緵鍙傝�冿細濡傛湁淇敼鎭曚笉閫氱煡 鐗堟潈鎵�鏈夛紝鐩楃増蹇呯┒" },
+    },
+    // 渚涙按椤圭洰
+    swproject: {
+      projectName: { ID: "", TR: "椤圭洰鍚嶇О" },
+      dateTime: { ID: "", TR: "鏃ユ湡鏃堕棿" },
+      projectNo: { ID: "", TR: "椤圭洰缂栧彿" },
+      customerName: { ID: "", TR: "瀹㈡埛鍚嶇О" },
+      consumerName: { ID: "", TR: "缁堢鐢ㄦ埛" },
+      quoteTotalMoney: { ID: "", TR: "鎶ヤ环鍗曟�婚噾棰�" },
+      createTime: { ID: "", TR: "鍒涘缓鏃堕棿" },
+      saveTime: { ID: "", TR: "淇濆瓨鏃堕棿" },
+      inquiryDueDate: { ID: "", TR: "璇环鎴鏃ユ湡" },
+      anticipatedOrderDate: { ID: "", TR: "棰勮璁㈠崟鏃ユ湡" },
+      operation: { ID: "", TR: "鎿嶄綔" },
+      editProject: { ID: "", TR: "缂栬緫" },
+      addAuth: { ID: "", TR: "娣诲姞鏉冮檺" },
+      addItem: { ID: "", TR: "娣诲姞宸ヤ綅" },
+      query: { ID: "", TR: "鏌ヨ" },
+      add: { ID: "", TR: "娣诲姞" },
+      marketType: { ID: "", TR: "甯傚満绫诲瀷" },
+      clearSelect: { ID: "", TR: "娓呯┖鎵�閫夋敹钘忓垪琛�" },
+  
+      basicQuoteInformation: { ID: "", TR: "鍩烘湰淇℃伅" },
+      quoteNumber: { ID: "", TR: "鎶ヤ环鍗曠紪鍙�" },
+      quoteStatus: { ID: "", TR: "鎶ヤ环鐘舵��" },
+      projectStage: { ID: "", TR: "椤圭洰闃舵" },
+      classSale: { ID: "", TR: "鎶ヤ环鐘舵��" },
+      quoteDisposition: { ID: "", TR: "鎶ヤ环澶勭悊" },
+      actualCloseDate: { ID: "", TR: "瀹為檯鍏抽棴鏃ユ湡" },
+      quoteDispositionStatus: { ID: "", TR: "鎶ヤ环澶勭悊鐘舵��" },
+      quoteDispositionReason: { ID: "", TR: "鎶ヤ环澶勭悊鍘熷洜" },
+      quoteDispositionComments: { ID: "", TR: "鎶ヤ环澶勭悊寤鸿" },
+      customerAndEndUser: { ID: "", TR: "瀹㈡埛涓庣粓绔敤鎴�" },
+      customerName: { ID: "", TR: "瀹㈡埛鍚嶇О" },
+      endUser: { ID: "", TR: "缁堢鐢ㄦ埛" },
+      countryOfInstallation: { ID: "", TR: "鍥藉唴/澶�" },
+      country: { ID: "", TR: "鍥藉" },
+      province: { ID: "", TR: "鐪�" },
+      city: { ID: "", TR: "甯�" },
+      area: { ID: "", TR: "鍖�" },
+      addressDetail: { ID: "", TR: "璇︾粏鍦板潃" },
+      customerContact: { ID: "", TR: "鑱旂郴鏂瑰紡" },
+      quotationTimeLine: { ID: "", TR: "鎶ヤ环鏃堕棿绾�" },
+      inquiryReceivedDate: { ID: "", TR: "璇环鎺ユ敹鏃ユ湡" },
+      inquiryDueDate: { ID: "", TR: "璇环鎴鏃ユ湡" },
+      anticipatedOrderDate: { ID: "", TR: "棰勮璁㈠崟鏃ユ湡" },
+      actualQuoteSubmittedDate: { ID: "", TR: "瀹為檯鎶ヤ环鎻愪氦鏃ユ湡" },
+      salesInformationSecurity: { ID: "", TR: "閿�鍞俊鎭�&瀹夊叏" },
+      quoteCurrency: { ID: "", TR: "鎶ヤ环璐у竵" },
+      deliveryPort: { ID: "", TR: "浜よ揣娓彛" },
+      transaction: { ID: "", TR: "浜ゆ槗鏂瑰紡" },
+      exchangeRate: { ID: "", TR: "姹囩巼" },
+      otherEditors: { ID: "", TR: "鍏朵粬缂栬緫鑰�" },
+      available: { ID: "", TR: "鍙�夌殑" },
+      selected: { ID: "", TR: "閫変腑鐨�" },
+      other: { ID: "", TR: "鍏朵粬" },
+      save: { ID: "", TR: "淇濆瓨" },
+      headSculpture: { ID: "", TR: "澶村儚" },
+      no: { ID: "", TR: "缂栧彿" },
+      name: { ID: "", TR: "鍚嶇О" },
+      usageState: { ID: "", TR: "浣跨敤鐘舵��" },
+      location: { ID: "", TR: "浣嶇疆" },
+      address: { ID: "", TR: "璇︾粏鍦板潃" },
+      back: { ID: "", TR: "杩斿洖" },
+      automatically: { ID: "", TR: "鑷姩鐢熸垚" },
+    },
+    // 绠�鏄撻」鐩�
+    simpleProject: {
+      tips1: { ID: "", TR: "璇疯嚦灏戦�変腑涓�涓瀷鍙�" },
+      tips2: { ID: "", TR: "纭杩斿洖锛�" },
+      tips3: { ID: "", TR: "纭鍒犻櫎姝ゅ瀷鍙峰悧锛�" },
+      tips4: { ID: "", TR: "娣诲姞澶辫触" },
+      tips5: { ID: "", TR: "娣诲姞鎴愬姛" },
+      tips6: { ID: "", TR: "娓呴櫎鏀惰棌鍒楄〃" },
+      auto: { ID: "", TR: "鑷姩鐢熸垚" },
+      someAsCustomer: { ID: "", TR: "鍜屽鎴蜂竴鏍�" },
+      itemInfo: { ID: "", TR: "宸ヤ綅淇℃伅" },
+      creator: { ID: "", TR: "鍒涘缓浜�" },
+  
+      upload: { ID: "", TR: "涓婁紶" },
+      notUpload: { ID: "", TR: "鏈笂浼�" },
+      lastEditor: { ID: "", TR: "鏈�鍚庣紪杈戜汉" },
+      tips7: { ID: "", TR: "椤圭洰鍚嶇О涓嶈兘涓虹┖" },
+      tips8: { ID: "", TR: "姝ゆ搷浣滃皢鍒犻櫎璇ラ」鐩�, 鏄惁缁х画?" },
+      tips9: { ID: "", TR: "鏃犳硶璇诲彇鍒伴」鐩俊鎭�" },
+      tips10: { ID: "", TR: "鍒犻櫎澶辫触" },
+      tips11: { ID: "", TR: "鍒犻櫎鎴愬姛" },
+      tips12: { ID: "", TR: "宸插彇娑堝垹闄ゆ搷浣�" },
+      tips13: { ID: "", TR: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖" },
+      tips14: { ID: "", TR: "璇峰~閫夊鎴�" },
+  
+      tips15: { ID: "", TR: "淇敼鎴愬姛" },
+      tips16: { ID: "", TR: "淇敼澶辫触" },
+      tips17: { ID: "", TR: "姝ゆ搷浣滃皢娓呯┖宸插~淇℃伅, 鏄惁缁х画?" },
+      tips18: { ID: "", TR: "宸插彇娑堟搷浣�" },
+    },
+    //蹇�熼�夊瀷-澶у厓
+    quickSelection: {
+      pressurize: { ID: 923, TR: "澧炲帇" },
+      groundWater: { ID: "", TR: "鍦颁笅姘�" },
+      wasteWater: { ID: "", TR: "搴熸按" },
+      liftingStation: { ID: "", TR: "鎻愬崌绔�" },
+      quickSelection: { ID: "", TR: "蹇�熼�夊瀷" },
+      inletPressureType: { ID: "", TR: "鍏ュ彛鍘嬪姏绫诲瀷" },
+      pressurizeType1: { ID: "", TR: "灞嬮《姘寸渚涙按澧炲帇" },
+      pressurizeType2: { ID: "", TR: "姘寸渚涙按澧炲帇" },
+      pressurizeType3: { ID: "", TR: "甯傛斂渚涙按" },
+      pressurizeType4: { ID: "", TR: "璐熷帇灏忎簬8绫�" },
+      selectionParams: { ID: "", TR: "閫夊瀷鍙傛暟" },
+      stopcocks: { ID: "", TR: "姘撮緳澶存暟" },
+      floors: { ID: "", TR: "妤煎眰鏁�" },
+      tappingPoint: { ID: "", TR: "鍒嗘帴鐐�" },
+      houseType: { ID: "", TR: "鎴垮眿绫诲瀷" },
+      tapPressure: { ID: "", TR: "姘撮緳澶村帇鍔�" },
+      singleStoryHouses: { ID: "", TR: "鍗曞眰鎴垮眿" },
+      doubleDeckerHouse: { ID: "", TR: "鍙屽眰鎴垮眿" },
+      outdoorPipelineMaterials: { ID: "", TR: "瀹ゅ绠¢亾鏉愭枡" },
+      outdoorPipelineDiameter: { ID: "", TR: "瀹ゅ绠¢亾鍙e緞" },
+      outdoorPipelineLength: { ID: "", TR: "瀹ゅ绠¢亾闀垮害" },
+      indoorPipelineLength: { ID: "", TR: "瀹ゅ唴绠¢亾闀垮害" },
+      pressureHeadSize: { ID: "", TR: "鍘嬪ご澶у皬纭畾" },
+      crossSectionalArea: { ID: "", TR: "妯埅闈㈢Н纭畾" },
+      plasticPipe: { ID: "", TR: "濉戞枡绠�" },
+      maxTappingHeight: { ID: "", TR: "鏈�楂樺垎鎺ョ偣楂樺害" },
+      buildingHeight: { ID: "", TR: "鎴垮眿楂樺害" },
+      wellheadHeight: { ID: "", TR: "浜曞彛楂樺害" },
+      dynamicWaterLevel: { ID: "", TR: "鍔ㄦ�佹按浣嶉珮搴�" },
+      powerSupply: { ID: "", TR: "鐢垫簮" },
+      houseCableEntry: { ID: "", TR: "鎴垮眿鐢电紗鍏ュ彛" },
+      cableCrossSectionalArea: { ID: "", TR: "鎴垮眿鐢电紗鍏ュ彛" },
+      tips1ByGroundWater: { ID: "", TR: "璇风‘瀹氬帇澶村ぇ灏�" },
+      tips2ByGroundWater: { ID: "", TR: "璇烽�夋嫨鎴垮眿绫诲瀷" },
+      tips3ByGroundWater: { ID: "", TR: "璇风‘璁ょ數缂嗘�婚暱搴�" },
+      tips4ByGroundWater: { ID: "", TR: "鏈煡璇㈠埌婊¤冻鏉′欢鐨勬车" },
+      drainage: { ID: "", TR: "鎺掓按" },
+      drainageType: { ID: "", TR: "鎺掓按绫诲瀷" },
+      sewage: { ID: "", TR: "姹℃按" },
+      sewageOrWastewater: { ID: "", TR: "姹℃按/搴熸按" },
+      maxConveyingDistance: { ID: "", TR: "鏈�澶ц緭閫佽窛绂�" },
+      pressureTip: {
+        tip1: { ID: "", TR: "鍏ュ彛鍘嬪姏绫诲瀷" },
+        tip2: { ID: "", TR: "閫夋嫨鎵�闇�鐨勫帇鍔涚被鍨嬫儏鍐�" },
+        tip3: { ID: "", TR: "杈撳叆姘撮緳澶存暟鍜屾ゼ灞傛暟" },
+        tip4: { ID: "", TR: "閫夊瀷缁撴灉" },
+        tip5: { ID: "", TR: "姝ゅ潡鍖哄煙鍙煡鐪嬬鍚堟潯浠剁殑閫夊瀷缁撴灉" },
+        tip6: { ID: "", TR: "璇疯緭鍏ユゼ灞傛暟" },
+        tip7: { ID: "", TR: "璇疯緭鍏ユ按榫欏ご鏁�" },
+      },
+      groundWaterTip: {
+        tip1: { ID: "", TR: "鏍规嵁鎯呭喌杈撳叆鍙傛暟" },
+        tip2: { ID: "", TR: "鍘嬪ご纭畾" },
+        tip3: { ID: "", TR: "鍘嬪ごA" },
+        tip4: { ID: "", TR: "鍘嬪ごB" },
+        tip5: { ID: "", TR: "鍘嬪ごC" },
+        tip6: { ID: "", TR: "纭畾妯埅闈㈢Н" },
+        tip7: { ID: "", TR: "鏍规嵁鎯呭喌杈撳叆鍚勬鐨勭數缂嗛暱搴�" },
+        tip8: { ID: "", TR: "鐢电紗E" },
+        tip9: { ID: "", TR: "鐢电紗D" },
+        tip10: { ID: "", TR: "鐢电紗F" },
+        tip11: { ID: "", TR: "鑾峰彇閫夊瀷缁撴灉" },
+        tip12: { ID: "", TR: "鐐瑰嚮閫夊瀷鎸夐挳鑾峰彇閫夊瀷缁撴灉" },
+        tip13: { ID: "", TR: "鏍规嵁鎯呭喌杈撳叆闇�瑕佺殑鍚勬鍘嬪ご鍊笺��" },
+      },
+      wasteWaterTips: {
+        tip1: { ID: "", TR: "鎺掓按绫诲瀷绫诲瀷" },
+        tip2: { ID: "", TR: "鏍规嵁鎯呭喌閫夋嫨鎺掓按绫诲瀷" },
+        tip3: { ID: "", TR: "杈撳叆鍘嬪ご鍜屾渶澶ц緭閫佽窛绂�" },
+        tip4: { ID: "", TR: "閫夊瀷缁撴灉" },
+        tip5: { ID: "", TR: "姝ゅ潡鍖哄煙鍙煡鐪嬬鍚堟潯浠剁殑閫夊瀷缁撴灉" },
+      },
+    },
+  };
+  
\ No newline at end of file
diff --git a/src/I18n/index.ts b/src/I18n/index.ts
new file mode 100644
index 0000000..a364931
--- /dev/null
+++ b/src/I18n/index.ts
@@ -0,0 +1,36 @@
+import { createI18n } from 'vue-i18n';
+import cn from './config/cn';
+
+import zhLocale from 'element-plus/dist/locale/zh-cn.mjs';
+
+const messages = {};
+const element = { 'zh-cn': zhLocale };
+const itemize = {
+	'zh-cn': cn,
+};
+
+// 鍚堝苟鏁扮粍瀵硅薄锛堥潪鏍囧噯鏁扮粍瀵硅薄锛屾暟缁勪腑瀵硅薄鐨勬瘡椤� key銆乿alue 閮戒笉鍚岋級
+function mergeArrObj(list, key) {
+	let obj = {};
+    obj = Object.assign({}, obj, list[key]);
+	return obj;
+}
+// 澶勭悊鏈�缁堟牸寮�
+for (const key in itemize) {
+	messages[key] = {
+		name: key,
+		el: element[key].el,
+	};
+	messages[key] = Object.assign(messages[key], mergeArrObj(itemize, key));
+}
+const i18n = createI18n({
+	legacy: false,
+	silentTranslationWarn: true,
+	missingWarn: false,
+	silentFallbackWarn: true,
+	fallbackWarn: false,
+	locale: localStorage.getItem('lang') || 'zh-cn', // 璁剧疆榛樿璇█
+	messages, // 璁剧疆缈昏瘧鍐呭
+});
+
+export default i18n;
diff --git a/src/api/login.ts b/src/api/login.ts
new file mode 100644
index 0000000..ba202d7
--- /dev/null
+++ b/src/api/login.ts
@@ -0,0 +1,8 @@
+import { request } from "@/utils/request"
+export const login = (data)=>{
+    return request ({
+        url:"v3/UserLogin/WebLogin",
+        params:data,
+        method:'get'
+    })
+}
\ No newline at end of file
diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue
index 4c22b84..a8e09fe 100644
--- a/src/components/AppHeader.vue
+++ b/src/components/AppHeader.vue
@@ -17,7 +17,7 @@
 						<el-menu-item index="/certified-products" class="!px-4">鑳芥晥浜у搧</el-menu-item>
 						<el-menu-item index="/eec-label-search" class="!px-4">璇佷功鏌ヨ</el-menu-item>
 						<el-menu-item index="/news-detail/99" class="!px-4">琛ヨ创鏀跨瓥</el-menu-item>
-						<el-menu-item class="!px-4" @click="linkClick(' http://www.xpump.net/web/#/CN/Index')">鏌ユ车缃�</el-menu-item>
+						<el-menu-item class="!px-4" @click="linkClick">鏌ユ车缃�</el-menu-item>
 					</el-menu>
 				</nav>
 
@@ -33,10 +33,10 @@
 						<template v-if="!userInfo">
 							<a href="#" class="hover:text-blue-500">娉ㄥ唽</a>
 							<span class="mx-2">路</span>
-							<router-link to="/login" class="hover:text-blue-500">鐧诲綍</router-link>
+							<a @click="toLogin" class="hover:text-blue-500">鐧诲綍</a>
 						</template>
 						<template v-else>
-							<span class="text-blue-500 mr-2">{{ userInfo.username }}</span>
+							<span class="text-blue-500 mr-2">{{ userInfo.RealName }}</span>
 							<a href="#" class="hover:text-blue-500" @click.prevent="handleLogout">閫�鍑�</a>
 						</template>
 					</div>
@@ -52,6 +52,9 @@
 import { ElMessage } from 'element-plus';
 import { computed, ref } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
+import { useLogin } from '@/stores/useLogin';
+
+const loginStore = useLogin();
 
 const route = useRoute();
 const router = useRouter();
@@ -66,19 +69,30 @@
 
 // 鑾峰彇鐢ㄦ埛淇℃伅
 const userInfo = computed(() => {
-	const info = localStorage.getItem('userInfo');
-	return info ? JSON.parse(info) : null;
+	const UserInfo = loginStore.getUserInfo();
+	return UserInfo ? UserInfo : null;
 });
 
+const toLogin = () => {
+	router.replace({
+		path: '/login',
+		query: {
+			redirectPath: route.fullPath,
+		},
+	});
+};
 // 澶勭悊鐧诲嚭
 const handleLogout = () => {
-	localStorage.removeItem('userInfo');
+	loginStore.logOut();
 	ElMessage.success('宸查��鍑虹櫥褰�');
-	router.push('/login');
+	router.replace({
+		path: '/login',
+		query: { redirectPath: route.fullPath },
+	});
 };
 
-const linkClick = (url) => {
-	window.open(url, '_blank');
+const linkClick = () => {
+	router.push('/select-selpara');
 };
 </script>
 
diff --git a/src/main.ts b/src/main.ts
index 8755154..d372438 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,6 +1,7 @@
 import '@/styles/index.scss';
 import ElementPlus from 'element-plus';
 import 'element-plus/dist/index.css';
+import i18n from './I18n/index';
 import { createApp } from 'vue';
 import App from './App.vue';
 // import './assets/main.css';
@@ -9,6 +10,7 @@
 const app = createApp(App);
 
 app.use(createPinia());
+app.use(i18n)
 app.use(router);
 app.use(ElementPlus);
 
diff --git a/src/router/index.ts b/src/router/index.ts
index a9c8609..333b633 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -72,6 +72,11 @@
 			name: 'order-info',
 			component: () => import('../views/OrderInfo.vue'),
 		},
+		{
+			path:'/select-selpara',
+			name:'select-selpara',
+			component: () => import('../views/SPump/Select/ByPara2/Index.vue'),
+		}
 	],
 });
 
diff --git a/src/stores/db.ts b/src/stores/db.ts
new file mode 100644
index 0000000..1f9d848
--- /dev/null
+++ b/src/stores/db.ts
@@ -0,0 +1,29 @@
+/**鏈湴瀛樺偍搴� */
+
+export default {
+    /**
+     * @description 璁剧疆
+     */
+    set(key:string, value:any) {
+      localStorage.setItem(`${key}`, JSON.stringify(value))
+    },
+    /**
+     * @description 鑾峰彇
+     */
+    get(key:string) {
+      return JSON.parse(localStorage.getItem(`${key}`))
+    },
+    /**
+     * @description 鍒犻櫎浠ょ墝
+     */
+    remove(key:string) {
+      localStorage.removeItem(`${key}`)
+    },
+    /**
+     * @description 娓呴櫎鍏ㄩ儴
+     */
+    clearAll() {
+      localStorage.clear()
+    },
+  }
+  
\ No newline at end of file
diff --git a/src/stores/select.ts b/src/stores/select.ts
new file mode 100644
index 0000000..d08f64e
--- /dev/null
+++ b/src/stores/select.ts
@@ -0,0 +1,31 @@
+//閫夊瀷妯″潡
+import { defineStore } from "pinia";
+const corpFlag = "IEE";
+const keyBySimu = `${corpFlag}_BySimu`;
+const keyByParas = `${corpFlag}_ByParas`;
+export const useSelect = defineStore("select", {
+  state: () => ({
+    /**鍙傛暟閫夊瀷 */
+    ByParas:JSON.parse(sessionStorage.getItem(keyByParas)) || {}
+  }),
+  actions: {
+    setByParas(current) {
+      sessionStorage.setItem(keyByParas,JSON.stringify(current));
+      Object.assign(this.ByParas, current);
+    },
+
+    setBySimu(current) {
+      sessionStorage.setItem(keyBySimu, JSON.stringify(current));
+      Object.assign(this.BySimu, current);
+    },
+
+    setBySWParas(current) {
+      sessionStorage.setItem("BySWParas", JSON.stringify(current));
+      Object.assign(this.BySWParas, current);
+    },
+    
+    clear(key) {
+      sessionStorage.remove(key);
+    },
+  },
+});
diff --git a/src/stores/useLogin.ts b/src/stores/useLogin.ts
new file mode 100644
index 0000000..93db1bc
--- /dev/null
+++ b/src/stores/useLogin.ts
@@ -0,0 +1,105 @@
+import { defineStore } from 'pinia';
+import db from './db';
+const account_key_name = `IEE_account`;
+export const useLogin = defineStore('userInfo', {
+	state: () => ({
+		/** 鐢ㄦ埛ID  0 Employee  1 OuterUser  2 Agent */
+		UserID: 0,
+		/** 鐢ㄦ埛绫诲瀷 */
+		UserType: 0,
+		/** 鐪熷疄濮撳悕 */
+		RealName: '',
+		// 鐧诲綍鏃惰幏鍙栫殑Token
+		Token: null,
+		// 璁板綍閫�鍑虹櫥褰曚箣鍓嶇殑椤甸潰璺�
+		preLoginPagePath: db.get('path') || '',
+	}),
+	actions: {
+		/**
+		 * @description 閫�鍑�
+		 */
+		logOut() {
+			// 娓呮浠ょ墝淇℃伅鍜岃处鎴蜂俊鎭�
+			this.clear();
+		},
+
+		/**
+		 * 浠庢湰鍦板瓨鍌ㄤ腑鍔犺浇浠ょ墝
+		 */
+		loadfromlocalstorage() {
+			const user = db.get(account_key_name);
+			if (user) {
+				this.UserID = user.UserID;
+				this.UserType = user.UserType;
+				this.Token = user.Token;
+				this.RealName = user.RealName;
+			}
+		},
+		/**
+		 * 璁剧疆鐧婚檰鍚庤烦杞殑椤甸潰
+		 */
+		preLoginPageRoute(path) {
+			//灏嗚矾寰勫瓨鍏ョ紦瀛�
+			db.set('path', path);
+			path = db.get('path');
+			this.preLoginPagePath = path;
+		},
+
+		/**
+		 * 鍒濆鍖栫敤鎴蜂俊鎭�
+		 */
+		init(user) {
+			let UserInfo = {
+				UserID: 0,
+				UserType: 0,
+				Token: '',
+			};
+			if (!user) {
+				user = db.get(account_key_name);
+				UserInfo = { ...user };
+			}
+			if (user) {
+				this.UserID = user.UserID;
+				this.UserType = user.UserType;
+				this.Token = user.Token;
+				this.RealName = user.RealName;
+
+				UserInfo.UserID = user.UserID;
+				UserInfo.UserType = user.UserType;
+				UserInfo.Token = user.Token;
+			}
+			db.set(account_key_name, user);
+		},
+		// 鑾峰彇鐢ㄦ埛淇℃伅
+		getUserInfo() {
+			const user = db.get(account_key_name);
+
+			let userInfo = {
+				/** 鐢ㄦ埛ID  0 Employee  1 OuterUser  2 Agent */
+				UserID: this.UserID,
+				/** 鐢ㄦ埛绫诲瀷 */
+				UserType: this.UserType,
+				/** 鐪熷疄濮撳悕 */
+				RealName: this.RealName,
+				// 鐧诲綍鏃惰幏鍙栫殑Token
+				Token: this.Token,
+			};
+			if (user) {
+				userInfo = user;
+				return userInfo;
+			}
+			return userInfo;
+		},
+
+		/**
+		 * 娓呮鐢ㄦ埛淇℃伅
+		 */
+		clear() {
+			this.UserID = 0;
+			this.UserType = 0;
+			this.RealName = '';
+			this.Token = '';
+			db.remove(account_key_name);
+		},
+	},
+});
diff --git a/src/utils/request.ts b/src/utils/request.ts
new file mode 100644
index 0000000..1d3dd4d
--- /dev/null
+++ b/src/utils/request.ts
@@ -0,0 +1,36 @@
+import type { AxiosInstance, CreateAxiosDefaults } from 'axios';
+import axios from 'axios';
+import { useLogin } from '@/stores/useLogin';
+// 閰嶇疆鏂板缓涓�涓� axios 瀹炰緥
+const createAxiosInstance = (option: Partial<CreateAxiosDefaults<any>> = {}) => {
+    const WebApi = window.globalConfig.WebApi
+	return axios.create({
+		baseURL: WebApi,
+		timeout: 1200000,
+		...option,
+	});
+};
+//#region ====================== 鏅�氳姹傚疄渚� ======================
+export const request = createAxiosInstance();
+//#endregion
+
+const initRequestInterceptor_yw = (instance: AxiosInstance) => {
+	instance.interceptors.request.use((config) => {
+		config.headers['Token'] = getToken();
+		config.headers['Lang'] = 0;
+		return config;
+	});
+
+	instance.interceptors.response.use((response) => {
+		return response.data;
+	});
+};
+const getToken = () => {
+    const loginStore = useLogin()
+	const userInfo = loginStore.getUserInfo();
+	return userInfo.Token ?? '';
+};
+
+// 鍒濆鍖栬姹傛嫤鎴櫒
+initRequestInterceptor_yw(request);
+
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 5b0df7f..5dbd22e 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -80,7 +80,7 @@
 							</div>
 						</router-link>
 						<router-link to="/" class="block" style="border-right: 1px solid #e3e3e3">
-							<div class="flex items-center gap-1 justify-center" @click="linkClick(' https://www.xpump.net/')">
+							<div class="flex items-center gap-1 justify-center" @click="linkClick">
 								<div class="w-16 h-16">
 									<!-- <svg viewBox="0 0 24 24" class="w-full h-full">
 										<path
@@ -503,8 +503,8 @@
 	// },
 ]);
 
-const linkClick = (url) => {
-	window.open(url, '_blank');
+const linkClick = () => {
+	router.push('/select-selpara')
 };
 
 const routeClick = (url) => {
diff --git a/src/views/Login.vue b/src/views/Login.vue
index ba3c714..f545523 100644
--- a/src/views/Login.vue
+++ b/src/views/Login.vue
@@ -26,7 +26,7 @@
 						/>
 					</el-form-item>
 
-					<el-form-item prop="captcha" class="flex space-x-4 mb-2">
+					<!-- <el-form-item prop="captcha" class="flex space-x-4 mb-2">
 						<el-input
 							v-model="loginForm.captcha"
 							placeholder="璇疯緭鍏ュ浘鐗囬獙璇佺爜"
@@ -35,7 +35,7 @@
 							class="custom-input flex-1 mr-2"
 						/>
 						<img src="@/assets/login/captcha.png" alt="楠岃瘉鐮�" class="h-[40px] w-[100px] cursor-pointer" @click="refreshCaptcha" />
-					</el-form-item>
+					</el-form-item> -->
 
 					<div class="flex items-center justify-between mb-4">
 						<el-checkbox v-model="loginForm.remember">璁颁綇璐﹀彿</el-checkbox>
@@ -59,14 +59,17 @@
 import { Key, Lock, User } from '@element-plus/icons-vue';
 import { ElMessage } from 'element-plus';
 import { reactive, ref } from 'vue';
+import {useLogin} from '@/stores/useLogin';
+import { useRoute } from 'vue-router';
 import { useRouter } from 'vue-router';
-
+import { login } from '@/api/login';
 const router = useRouter();
+const route = useRoute();
 const formRef = ref();
-
+const loginStore = useLogin()
 const loginForm = reactive({
-	username: '',
-	password: '',
+	username: 'demo',
+	password: '123456',
 	captcha: '',
 	remember: false,
 });
@@ -74,25 +77,41 @@
 const rules = {
 	username: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur' }],
 	password: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' }],
-	captcha: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜', trigger: 'blur' }],
+	// captcha: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜', trigger: 'blur' }],
 };
 
 const handleLogin = () => {
 	formRef.value.validate((valid: boolean) => {
 		if (valid) {
-			// 淇濆瓨鐢ㄦ埛淇℃伅鍒發ocalStorage
-			const userInfo = {
-				username: loginForm.username,
-				isLogin: true,
-			};
-			localStorage.setItem('userInfo', JSON.stringify(userInfo));
-			ElMessage.success('鐧诲綍鎴愬姛');
-			router.push('/');
+			submitLogin()
 		} else {
 			return false;
 		}
 	});
 };
+const submitLogin = async () => {
+	let form_data = {
+		UserType: 0,
+		LoginName: loginForm.username,
+		PassWord: loginForm.password,
+	};
+	let res = await login(form_data);
+	let data = res.Data;
+	if (res.Code !== 0) {
+		ElMessage.error(res.Message);
+		return;
+	}
+	let { redirectPath } = route.query;
+	let redirect = "/";
+	if (redirectPath != null) {
+		redirect = redirectPath;
+	}
+
+	//瀛樺偍鐧诲綍鎴愬姛鍚庣殑鐢ㄦ埛淇℃伅
+	loginStore.init(data.User);
+	ElMessage.success('鐧诲綍鎴愬姛');
+	router.replace(redirect);
+};
 
 const refreshCaptcha = () => {
 	// 鍒锋柊楠岃瘉鐮佺殑閫昏緫
diff --git a/src/views/SPump/Select/ByPara2/Index.vue b/src/views/SPump/Select/ByPara2/Index.vue
new file mode 100644
index 0000000..ffb87df
--- /dev/null
+++ b/src/views/SPump/Select/ByPara2/Index.vue
@@ -0,0 +1,44 @@
+<template>
+  <div class="sel_index">
+    <component :is="selParasComponent"></component>
+  </div>
+</template>
+
+<script setup name="byPara2Index">
+import { defineAsyncComponent, onMounted } from "vue";
+import { useLogin } from "@/stores/useLogin";
+import { useRoute } from "vue-router";
+
+const route = useRoute();
+const loginStore = useLogin();
+const userInfo = loginStore.getUserInfo();
+
+// 榛樿閫夊瀷鍙傛暟鐣岄潰缁勪欢鏄疍efault
+let selParasComponent = defineAsyncComponent(() =>
+  import(`./components/SelParasDefault.vue`)
+);
+
+onMounted(() => {
+  //鍒ゆ柇鏄惁鐧诲綍
+  const cToken = userInfo.Token;
+  if (IsMustLogin) {
+    if (cToken == null || cToken == "") {
+      gotoLoginPage();
+      return;
+    }
+  }
+});
+
+const gotoLoginPage = () => {
+  loginStore.preLoginPageRoute(route.fullPath);
+  loginStore.login(route.fullPath);
+};
+</script>
+
+<style>
+.sel_index {
+  width: 100%;
+  min-width: 13.66rem;
+  height: 100%;
+}
+</style>
diff --git a/src/views/SPump/Select/ByPara2/components/SelParasDefault.vue b/src/views/SPump/Select/ByPara2/components/SelParasDefault.vue
new file mode 100644
index 0000000..d183de9
--- /dev/null
+++ b/src/views/SPump/Select/ByPara2/components/SelParasDefault.vue
@@ -0,0 +1,2754 @@
+<template>
+  <div
+    class="is-homepage"
+    style="display: flex; justify-content: center; align-items: center"
+    v-loading="state.isShowLoadingFrm"
+    element-loading-background="rgba(255,255,255, 0.8)"
+  >
+    <el-container class="o-site-main" style="max-width: 14.4rem; height: 100%">
+      <el-aside width="200" class="large-2 columns" style="min-width: 2.2rem">
+        <ul class="c-sidebar tabs vertical">
+          <li class="c-sidebar__item tabs-title is-active">
+            <a
+              class="c-sidebar__link"
+              role="tab"
+              aria-selected="true"
+              style="text-align: left; font-size: 0.22rem"
+              @click="backTo"
+            >
+              <span class="el-icon-s-home" style="font-size: 0.22rem"></span>
+              {{ t("selectPage.gotoIndexPage.TR") }}
+            </a>
+          </li>
+          <li class="c-sidebar__divider"></li>
+          <li class="c-sidebar__item" v-if="false">
+            <a class="c-sidebar__link" style="display: flex">
+              <span
+                class="iconfont iconsliders"
+                style="line-height: 0.24rem"
+              ></span>
+              &nbsp;{{ t("selectPage.advancedSelection.TR") }}&nbsp;
+            </a>
+          </li>
+        </ul>
+      </el-aside>
+      <el-main style="height: 100%; overflow: unset">
+        <form style="height: 100%">
+          <div class="row js-sticky-parent" style="height: 100%">
+            <div class="small-12 large-6 columns" style="height: 100%">
+              <div class="js-sticky-column" style="height: 100%">
+                <div class="js-sticky-sidebar" style="height: 100%">
+                  <div class="row align-justify align-middle">
+                    <div class="columns">
+                      <h2
+                        class="cos-header"
+                        style="
+                          font-size: 0.4rem;
+                          text-align: left;
+                          color: #3b3b3b;
+                        "
+                      >
+                        {{ t("selectPage.workingConditions.TR") }}
+                      </h2>
+                    </div>
+                  </div>
+                  <div
+                    class="c-card"
+                    style="height: calc(100% - 0.65rem); overflow: auto"
+                  >
+                    <div class="row">
+                      <div class="columns c-quick-select__inputs">
+                        <div class="row">
+                          <!-- 娴侀噺杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="FlowRated">{{
+                              t("selectPage.flow.TR")
+                            }}</label>
+                            <div
+                              class="o-input-select-combo js-ui-flowRated"
+                              style="position: relative"
+                            >
+                              <input
+                                class="c-input-select-combo--left"
+                                type="number"
+                                v-model="state.formData.DpQ"
+                                @input="handleInputDpQ"
+                                id="FlowRated"
+                                name="FlowRated"
+                                size="1"
+                              />
+                              <select
+                                id="FlowRatedUnit"
+                                name="FlowRatedUnit"
+                                size="1"
+                                class="c-input-select-combo--right"
+                                v-model="state.formData.DpQu"
+                                @change="handleDpQuSelect"
+                              >
+                                <option
+                                  :value="item.value"
+                                  :id="index"
+                                  v-for="(item, index) in state.q_unit_list"
+                                  :key="item.value"
+                                >
+                                  {{ item.label }}
+                                </option>
+                              </select>
+                              <label
+                                v-if="state.ruleDpQ"
+                                style="
+                                  position: absolute;
+                                  bottom: -0.02rem;
+                                  font-size: 0.1rem;
+                                  color: red;
+                                "
+                                >*{{ t("selectPage.flowRule.TR") }}</label
+                              >
+                            </div>
+                          </div>
+                          <!-- 鎵▼杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="HeadRated">{{
+                              t("selectPage.head.TR")
+                            }}</label>
+                            <div
+                              class="o-input-select-combo"
+                              style="position: relative"
+                            >
+                              <input
+                                class="c-input-select-combo--left u-no-margin"
+                                type="number"
+                                autofocus="autofocus"
+                                id="HeadRated"
+                                name="HeadRated"
+                                v-model="state.formData.DpH"
+                                @input="handleInputDpH"
+                                size="1"
+                              />
+                              <select
+                                id="HeadRatedUnit"
+                                name="FlowRatedUnit"
+                                v-model="state.formData.DpHu"
+                                @change="handleDpHuSelect"
+                                size="1"
+                                class="c-input-select-combo--right u-no-margin"
+                              >
+                                <option
+                                  :value="item.value"
+                                  :id="index"
+                                  v-for="(item, index) in state.h_unit_list"
+                                  :key="item.value"
+                                >
+                                  {{ item.label }}
+                                </option>
+                              </select>
+                              <label
+                                v-if="state.ruleDpH"
+                                style="
+                                  position: absolute;
+                                  bottom: -0.18rem;
+                                  font-size: 0.1rem;
+                                  color: red;
+                                "
+                              >
+                                *{{ t("selectPage.headRule.TR") }}
+                              </label>
+                            </div>
+                          </div>
+                        </div>
+                        <div class="row">
+                          <!-- 搴旂敤杩愯閰嶇疆鏂囦欢 -->
+                          <div class="columns">
+                            <label
+                              class="c-form-label"
+                              for="trueWeightedEfficiencyProfile"
+                              >{{ t("selectPage.driveType.TR") }}</label
+                            >
+                            <select
+                              class="u-no-margin"
+                              id="loadProfileNameCOS"
+                              name="loadProfileNameCOS"
+                              v-model="state.formData.driveType"
+                              @change="changeDriveType"
+                            >
+                              <option
+                                v-for="item in state.driveTypeList"
+                                :key="item.Value"
+                                :value="item.Value"
+                                :disabled="!item.Enable"
+                              >
+                                {{ item.Text }}
+                              </option>
+                            </select>
+                            <p style="text-align: left">
+                              <a
+                                @click="
+                                  state.isShowMoreDesignPoint =
+                                    !state.isShowMoreDesignPoint
+                                "
+                              >
+                                <span class="right u-pointer u-no-wrap">
+                                  {{
+                                    state.isShowMoreDesignPoint
+                                      ? t("selectPage.hide.TR")
+                                      : t("selectPage.moreDesignPoints.TR")
+                                  }}
+                                  <span
+                                    :class="
+                                      state.isShowMoreDesignPoint
+                                        ? 'fa fa-fw fa-angle-double-down'
+                                        : 'fa fa-fw fa-angle-double-right'
+                                    "
+                                  ></span>
+                                </span>
+                              </a>
+                            </p>
+                          </div>
+                          <!-- 璁剧疆棰戠巼 -->
+                          <div
+                            class="columns"
+                            v-if="state.formData.driveType != 3"
+                          >
+                            <label for="cos_cycle">{{
+                              t("selectPage.setFrequency.TR")
+                            }}</label>
+                            <div class="row align-middle">
+                              <div class="columns" style="padding-left: 0rem">
+                                <select
+                                  id="Frequency"
+                                  name="Frequency"
+                                  size="1"
+                                  class="tableInputField"
+                                  v-model="state.formData.motorFrequence"
+                                  @change="handldHzSelect"
+                                  :disabled="state.formData.driveType == 3"
+                                >
+                                  <option
+                                    v-for="item in state.m_frequenceList"
+                                    :key="item.Value"
+                                    :value="item.Value"
+                                    :id="item.Value"
+                                  >
+                                    {{ item.Text }}
+                                  </option>
+                                </select>
+                              </div>
+                              <div
+                                class="shrink columns"
+                                style="margin-bottom: 0.2rem"
+                              ></div>
+                            </div>
+                          </div>
+                          <!-- 璁剧疆鏌存补鏈鸿浆閫� -->
+                          <div
+                            class="columns"
+                            v-if="state.formData.driveType == 3"
+                          >
+                            <label for="cos_cycle">{{
+                              t("selectPage.dieselEngineSpeed.TR")
+                            }}</label>
+                            <div
+                              class="row align-middle"
+                              style="position: relative"
+                            >
+                              <div class="columns" style="padding-left: 0rem">
+                                <input
+                                  class="c-input-select-combo--left"
+                                  type="tel"
+                                  autofocus="autofocus"
+                                  v-model="state.formData.dieselSpeed"
+                                />
+                                <!-- 鏌存补鏈鸿浆閫熻缃� -->
+                                <!-- <label v-if="ruleDieselSpeed"
+                                  style=" position: absolute; font-size: 0.1rem; color: red; ">
+                                  *{{
+                                    t("selectPage.dieselEngineSpeedRule.TR")
+                                  }}
+                                </label> -->
+                              </div>
+                            </div>
+                          </div>
+                        </div>
+                        <!-- 绗簩璁捐鐐� -->
+                        <div class="row" v-if="state.isShowMoreDesignPoint">
+                          <!-- 娴侀噺杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="FlowRated2">{{
+                              state.m_secondDpFlowText
+                            }}</label>
+                            <div class="o-input-select-combo js-ui-flowRated">
+                              <input
+                                class="c-input-select-combo--left"
+                                type="number"
+                                autofocus="autofocus"
+                                v-model="state.formData.DpQTwo"
+                                id="FlowRated2"
+                                name="FlowRated2"
+                                size="1"
+                              />
+                            </div>
+                          </div>
+                          <!-- 鎵▼杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="HeadRated2">{{
+                              state.m_secondDpHeadText
+                            }}</label>
+                            <div class="o-input-select-combo">
+                              <input
+                                class="c-input-select-combo--left u-no-margin"
+                                type="number"
+                                autofocus="autofocus"
+                                id="HeadRated2"
+                                name="HeadRated2"
+                                v-model="state.formData.DpHTwo"
+                                size="1"
+                              />
+                            </div>
+                          </div>
+                        </div>
+                        <!-- 绗笁璁捐鐐� -->
+                        <div class="row" v-if="state.isShowMoreDesignPoint">
+                          <!-- 娴侀噺杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="FlowRated3">{{
+                              state.m_thirdDpFlowText
+                            }}</label>
+                            <div class="o-input-select-combo js-ui-flowRated">
+                              <input
+                                class="c-input-select-combo--left"
+                                type="number"
+                                autofocus="autofocus"
+                                v-model="state.formData.DpQThree"
+                                id="FlowRated3"
+                                name="FlowRated3"
+                                size="1"
+                              />
+                            </div>
+                          </div>
+                          <!-- 鎵▼杈撳叆 -->
+                          <div class="columns">
+                            <label class="c-form-label" for="HeadRated3">{{
+                              state.m_thirdDpHeadText
+                            }}</label>
+                            <div class="o-input-select-combo">
+                              <input
+                                class="c-input-select-combo--left u-no-margin"
+                                type="number"
+                                autofocus="autofocus"
+                                id="HeadRated3"
+                                name="HeadRated3"
+                                v-model="state.formData.DpHThree"
+                                size="1"
+                              />
+                            </div>
+                          </div>
+                        </div>
+                        <div
+                          class="row align-middle"
+                          v-if="state.isShowFirePumpType"
+                        >
+                          <div class="columns">
+                            <label
+                              class="c-form-label"
+                              for="firePumpTypeComb"
+                              >{{ t("selectPage.firePump.TR") }}</label
+                            >
+                            <div>
+                              <select
+                                id="firePumpTypeComb"
+                                name="firePumpTypeComb"
+                                class="tableInputField"
+                                v-model="state.formData.firePumpType"
+                                @change="changeFirePumpType"
+                              >
+                                <option
+                                  v-for="item in state.firePumpTypeList"
+                                  :key="item.Value"
+                                  :disabled="!item.Enable"
+                                  :value="item.Value"
+                                  :id="item.Value"
+                                >
+                                  {{ item.Text }}
+                                </option>
+                              </select>
+                            </div>
+                          </div>
+                        </div>
+                        <!-- 杞�熸潯浠� -->
+                        <div class="row align-middle">
+                          <div
+                            class="columns"
+                            v-if="state.formData.driveType != 3"
+                          >
+                            <label
+                              class="c-form-label"
+                              for="motorPoleNumComb"
+                              >{{ t("selectPage.motorPoleNum.TR") }}</label
+                            >
+                            <div>
+                              <select
+                                id="motorPoleNumComb"
+                                name="motorPoleNumComb"
+                                class="tableInputField"
+                                v-model="state.formData.motorPoleNum"
+                                @change="changeMotorPoleNum"
+                              >
+                                <option
+                                  v-for="item in state.MotorPoleList"
+                                  :key="item.Value"
+                                  :value="item.Value"
+                                  :id="item.Value"
+                                >
+                                  {{ item.Text }}
+                                </option>
+                              </select>
+                            </div>
+                          </div>
+                        </div>
+                        <!-- 鐢垫満鍔熺巼 -->
+                        <div class="row align-middle">
+                          <div
+                            class="columns"
+                            v-if="state.formData.driveType != 3"
+                          >
+                            <label class="c-form-label" for="FlowRated3"
+                              >{{ t("detailPage.motorPower.TR") }}(kw)</label
+                            >
+                            <div class="o-input-select-combo js-ui-flowRated">
+                              <input
+                                class="c-input-select-combo--left"
+                                type="number"
+                                autofocus="autofocus"
+                                v-model="state.formData.motorPower"
+                                id="motorPowerComb"
+                                name="motorPowerComb"
+                                size="1"
+                              />
+                            </div>
+                          </div>
+                          <div class="columns">
+                            <label class="c-form-label" for="NPSHa"
+                              >NPSHa</label
+                            >
+                            <div class="o-input-select-combo js-ui-flowRated">
+                              <input
+                                class="c-input-select-combo--left"
+                                type="number"
+                                autofocus="autofocus"
+                                size="1"
+                                id="NPSHaComb"
+                                name="NPSHaComb"
+                                v-model="state.formData.NPSHa"
+                              />
+                            </div>
+                          </div>
+                        </div>
+                        <!-- 鏄剧ず闅愯棌鏇村璁剧疆 -->
+                        <p class="lead text-center">
+                          <a
+                            class="js-cos-expand__more"
+                            @click="toggleShowMoreSetting"
+                            :class="state.isShowMoreSetting ? 'hide' : ''"
+                          >
+                            <i class="iconfont iconFontAwesomepluscircle"></i>
+                            {{ t("selectPage.moreSet.TR") }}
+                          </a>
+                          <a
+                            class="js-cos-expand__less"
+                            @click="toggleShowMoreSetting"
+                            :class="state.isShowMoreSetting ? '' : 'hide'"
+                          >
+                            <i class="iconfont iconFontAwesomeminuscircle"></i>
+                            {{ t("selectPage.put.TR") }}
+                          </a>
+                        </p>
+                        <div
+                          class="js-cos-expand"
+                          v-show="state.isShowMoreSetting"
+                        >
+                          <!-- 鐢垫皵鏍囧噯 -->
+                          <div class="row">
+                            <div class="columns">
+                              <label for="electricalStandard">{{
+                                t("selectPage.motorPowerStd.TR")
+                              }}</label>
+                              <select
+                                id="electricalStandard"
+                                v-model="state.formData.motorStd"
+                                @change="changeMotorStd"
+                                name="electricalStandard"
+                              >
+                                <option
+                                  v-for="item in state.m_motorStdList"
+                                  :key="item.Value"
+                                  :value="item.Value"
+                                  :id="item.Value"
+                                  :disabled="!item.Enable"
+                                >
+                                  {{ item.Text }}
+                                </option>
+                              </select>
+                            </div>
+                            <div class="columns">
+                              <label for="MinEta">{{
+                                t("selectPage.e_requirements.TR")
+                              }}</label>
+                              <input
+                                v-model="state.formData.MinEta"
+                                size="6"
+                                type="number"
+                                class="tableInputField"
+                                :min="0"
+                                :max="100"
+                                @change="changeMinEta"
+                              />
+                            </div>
+                          </div>
+                          <hr />
+                          <!-- 浠嬭川鍚嶇О -->
+                          <div class="row">
+                            <!-- 鍙紪杈戠殑浠嬭川鍚嶇О -->
+                            <div
+                              v-if="!state.isDiyJieZhi"
+                              class="columns"
+                              style="position: relative"
+                            >
+                              <label class="c-form-label" for="LiquidType">{{
+                                t("selectPage.mediaName.TR")
+                              }}</label>
+                              <input
+                                v-model="state.formData.jzName"
+                                size="6"
+                                type="text"
+                                class="tableInputField"
+                                @change="handleJzName"
+                              />
+                            </div>
+                            <!-- 鍙緭鍏ュ彲涓嬫媺閫夋嫨鐨勪粙璐ㄥ悕绉� -->
+                            <div
+                              v-else
+                              class="columns jz-select-div"
+                              style="position: relative"
+                            >
+                              <label class="c-form-label" for="LiquidType">{{
+                                t("selectPage.mediaName.TR")
+                              }}</label>
+                              <el-popover
+                                v-model="state.isShowJieZhiPopover"
+                                placement="bottom"
+                                width="400"
+                                trigger="click"
+                                popper-class="jiezhipopoverstyle"
+                                :offset="0"
+                                :popper-options="{
+                                  boundariesElement: 'viewport',
+                                  removeOnDestroy: true,
+                                }"
+                              >
+                                <el-tree
+                                  :data="state.m_JieZhiTreeData"
+                                  :props="state.defaultProps"
+                                  highlight-current
+                                  @node-click="handleJieZhiNodeClick"
+                                  style="max-height: 1.8rem; overflow: auto"
+                                ></el-tree>
+                                <template #reference>
+                                  <div class="w100" style="position: relative">
+                                    <el-input v-model="state.formData.jzName">
+                                      <template #suffix>
+                                        <i
+                                          class="el-input__icon el-icon-caret-bottom"
+                                        ></i>
+                                      </template>
+                                    </el-input>
+                                    <el-icon
+                                      style="
+                                        position: absolute;
+                                        right: 0.2rem;
+                                        top: 0.12rem;
+                                      "
+                                    >
+                                      <ArrowDownBold />
+                                    </el-icon>
+                                  </div>
+                                </template>
+                              </el-popover>
+                            </div>
+                          </div>
+                          <div
+                            id="liquidCalloutDiv"
+                            class="callout grey js-liquid-properties-override"
+                          >
+                            <div class="row align-top">
+                              <div class="shrink columns">
+                                <div class="switch tiny">
+                                  <input
+                                    @change="
+                                      changeJieZhiInputMehtod(isDiyJieZhi)
+                                    "
+                                    v-model="state.isDiyJieZhi"
+                                    type="checkbox"
+                                    name="overrideLiquidProperties"
+                                    id="overrideLiquidProperties"
+                                    class="switch-input"
+                                  />
+                                  <label
+                                    for="overrideLiquidProperties"
+                                    class="switch-paddle"
+                                  ></label>
+                                </div>
+                              </div>
+                              <div class="columns u-no-padding shrink">
+                                <label
+                                  v-if="!state.isDiyJieZhi"
+                                  for="overrideLiquidProperties"
+                                  >{{
+                                    t("selectPage.customMediaProp.TR")
+                                  }}</label
+                                >
+                                <label v-else for="overrideLiquidProperties">
+                                  {{ t("selectPage.mediaLibrary.TR") }}
+                                </label>
+                              </div>
+                            </div>
+                            <div class="row">
+                              <!-- 浣撶Н娴撳害 -->
+                              <div class="columns">
+                                <label
+                                  class="c-form-label"
+                                  for="VolumeConcentration"
+                                >
+                                  {{
+                                    t("selectPage.volumeConcentration.TR")
+                                  }}</label
+                                >
+                                <div class="o-input-select-combo">
+                                  <input
+                                    placeholder=""
+                                    v-model="state.formData.volumeConcentration"
+                                    @blur="handleVolumeConcentration"
+                                    oninput="value=value.replace(/[^0-9.]/g,'')"
+                                    size="6"
+                                    id="VolumeConcentration"
+                                    name="VolumeConcentration"
+                                    type="number"
+                                    class="c-input-select-combo--left"
+                                  />
+                                  <select
+                                    id="VolumeConcentration"
+                                    size="1"
+                                    disabled="true"
+                                    class="c-input-select-combo--right"
+                                  >
+                                    <option selected value="8" id="8">%</option>
+                                  </select>
+                                </div>
+                              </div>
+                              <!-- 娓╁害 -->
+                              <div class="columns">
+                                <label
+                                  class="c-form-label"
+                                  for="TemperatureMax"
+                                  >{{
+                                    t("selectPage.maxTemperature.TR")
+                                  }}</label
+                                >
+                                <div class="o-input-select-combo">
+                                  <input
+                                    placeholder=""
+                                    v-model="state.formData.jzTemperature"
+                                    @blur="handleTemperature"
+                                    size="6"
+                                    id="TemperatureMax"
+                                    name="TemperatureMax"
+                                    type="text"
+                                    class="c-input-select-combo--left"
+                                  />
+                                  <select
+                                    id="TemperatureMaxUnit"
+                                    size="1"
+                                    class="c-input-select-combo--right"
+                                  >
+                                    <option selected value="8" id="8">鈩�</option>
+                                    <option value="22" id="22">掳F</option>
+                                    <option value="139" id="139">掳R茅</option>
+                                    <option value="50" id="50">K</option>
+                                  </select>
+                                </div>
+                              </div>
+                            </div>
+                            <div class="row">
+                              <!-- 瀵嗗害 -->
+                              <div class="columns">
+                                <label class="c-form-label" for="SGMax">{{
+                                  t("selectPage.maxDensity.TR")
+                                }}</label>
+                                <div class="o-input-select-combo">
+                                  <input
+                                    v-model="state.formData.calcDensity"
+                                    size="6"
+                                    name="SGMax"
+                                    id="SGMax"
+                                    type="text"
+                                    class="c-input-select-combo--left"
+                                  />
+                                  <select
+                                    name="FluidDensityUnit"
+                                    id="constFluidDensityUnit"
+                                    v-model="state.formData.miduUnit"
+                                    class="c-input-select-combo--right"
+                                    size="1"
+                                  >
+                                    <option
+                                      v-for="item in state.MiDuOptionList"
+                                      :value="item.value"
+                                      :id="item.value"
+                                    >
+                                      {{ item.label }}
+                                    </option>
+                                  </select>
+                                </div>
+                              </div>
+                              <!-- 绮樺害 -->
+                              <div class="columns">
+                                <label
+                                  class="c-form-label"
+                                  for="ViscosityRated"
+                                  >{{
+                                    t("selectPage.mediumViscosity.TR")
+                                  }}</label
+                                >
+                                <div class="o-input-select-combo">
+                                  <input
+                                    v-model="state.formData.calcViscosity"
+                                    size="6"
+                                    name="ViscosityRated"
+                                    id="ViscosityRated"
+                                    type="text"
+                                    class="c-input-select-combo--left"
+                                  />
+                                  <select
+                                    name="ViscosityRatedUnit"
+                                    v-model="state.NianDuUnit"
+                                    id="ViscosityRatedUnit"
+                                    class="c-input-select-combo--right"
+                                    size="1"
+                                  >
+                                    <option
+                                      v-for="item in state.NianDuOptionList"
+                                      :value="item.value"
+                                      :id="item.value"
+                                      :key="item.value"
+                                    >
+                                      {{ item.label }}
+                                    </option>
+                                  </select>
+                                </div>
+                              </div>
+                            </div>
+                            <div class="row" style="position: relative">
+                              <!-- 浠嬭川璇存槑 -->
+                              <div class="columns">
+                                <label class="c-form-label" for="jzDesc">
+                                  {{
+                                    t("selectPage.mediaDescription.TR")
+                                  }}</label
+                                >
+                                <div class="o-input-select-combo">
+                                  <input
+                                    placeholder=""
+                                    type="text"
+                                    v-model="state.formData.jzDesc"
+                                    size="6"
+                                    id="jzDesc"
+                                    name="jzDesc"
+                                    class="c-input-select-combo--left"
+                                  />
+                                </div>
+                              </div>
+                              <!-- 鏄惁鍚湁浠嬭川棰楃矑 -->
+                              <div
+                                class="columns"
+                                style="position: absolute; right: 0"
+                              >
+                                <label
+                                  class="c-form-label"
+                                  for="TemperatureMax"
+                                ></label>
+                                <div class="o-input-select-combo">
+                                  <el-checkbox
+                                    v-model="state.formData.hasMediaParticles"
+                                  />
+                                  <span>
+                                    {{
+                                      t("selectPage.isMediumParticles.TR")
+                                    }}</span
+                                  >
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                          <!-- 妫�楠屽宸爣鍑� -->
+                          <div class="row align-middle">
+                            <div class="columns">
+                              <label
+                                class="c-form-label"
+                                for="toleranceStandard"
+                                >{{ t("selectPage.toleranceStand.TR") }}</label
+                              >
+                              <div>
+                                <select
+                                  id="toleranceStandard"
+                                  name="toleranceStandard"
+                                  class="tableInputField"
+                                  v-model="state.formData.ToleranceStand"
+                                  @change="changeToleranceStand"
+                                >
+                                  <option
+                                    v-for="item in state.m_toleranceStandardList"
+                                    :key="item.value"
+                                    :disabled="item.disable"
+                                    :value="item.value"
+                                    :id="item.value"
+                                  >
+                                    {{ item.text }}
+                                  </option>
+                                </select>
+                              </div>
+                            </div>
+                          </div>
+                          <!-- 妫�楠屽宸瓑绾� -->
+                          <div class="row align-middle">
+                            <div class="columns">
+                              <label
+                                class="c-form-label"
+                                for="toleranceGrade"
+                                >{{ t("selectPage.toleranceGrade.TR") }}</label
+                              >
+                              <div>
+                                <select
+                                  id="toleranceGrade"
+                                  name="toleranceGrade"
+                                  class="tableInputField"
+                                  v-model="
+                                    state.formData.PointTolerance.ToleranceGrade
+                                  "
+                                  @change="changeToleranceGrade"
+                                >
+                                  <option
+                                    v-for="item in state.m_toleranceGradeList"
+                                    :key="item.value"
+                                    :value="item.value"
+                                    :id="item.value"
+                                  >
+                                    {{ item.text }}
+                                  </option>
+                                </select>
+                              </div>
+                            </div>
+                          </div>
+                          <div class="row">
+                            <!-- 鏈�灏忔祦閲忕櫨鍒嗘瘮 -->
+                            <div class="columns" style="margin-bottom: 0.16rem">
+                              <label for="cos_cycle">{{
+                                t("selectPage.MinFlowPercentage.TR")
+                              }}</label>
+                              <div class="row align-middle">
+                                <div class="columns" style="padding-left: 0rem">
+                                  <input
+                                    class="c-input-select-combo--left u-no-margin"
+                                    type="number"
+                                    autofocus="autofocus"
+                                    id="RatioMinQ"
+                                    name="RatioMinQ"
+                                    :disabled="!state.isToleranceLevelCustom"
+                                    v-model="
+                                      state.formData.PointTolerance.RatioMinQ
+                                    "
+                                    size="1"
+                                  />
+                                </div>
+                                <div class="shrink columns">
+                                  <label>%</label>
+                                </div>
+                              </div>
+                            </div>
+                            <!-- 鏈�澶ф祦閲忕櫨鍒嗘瘮 -->
+                            <div class="columns" style="margin-bottom: 0.16rem">
+                              <label for="cos_cycle">{{
+                                t("selectPage.MaxFlowPercentage.TR")
+                              }}</label>
+                              <div class="row align-middle">
+                                <div class="columns" style="padding-left: 0rem">
+                                  <input
+                                    class="c-input-select-combo--left u-no-margin"
+                                    type="number"
+                                    :disabled="!state.isToleranceLevelCustom"
+                                    autofocus="autofocus"
+                                    id="RatioMaxQ"
+                                    name="RatioMaxQ"
+                                    v-model="
+                                      state.formData.PointTolerance.RatioMaxQ
+                                    "
+                                    size="1"
+                                  />
+                                </div>
+                                <div class="shrink columns">
+                                  <label>%</label>
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                          <div class="row">
+                            <!-- 鏈�灏忔壃绋嬬櫨鍒嗘瘮 -->
+                            <div class="columns" style="margin-bottom: 0.16rem">
+                              <label for="cos_cycle">{{
+                                t("selectPage.MinHeadPercentage.TR")
+                              }}</label>
+                              <div class="row align-middle">
+                                <div class="columns" style="padding-left: 0rem">
+                                  <input
+                                    class="c-input-select-combo--left u-no-margin"
+                                    type="number"
+                                    autofocus="autofocus"
+                                    id="RatioMinH"
+                                    :disabled="!state.isToleranceLevelCustom"
+                                    name="RatioMinH"
+                                    v-model="
+                                      state.formData.PointTolerance.RatioMinH
+                                    "
+                                    size="1"
+                                  />
+                                </div>
+                                <div class="shrink columns">
+                                  <label>%</label>
+                                </div>
+                              </div>
+                            </div>
+                            <!-- 鏈�澶ф壃绋嬬櫨鍒嗘瘮 -->
+                            <div class="columns" style="margin-bottom: 0.16rem">
+                              <label for="cos_cycle">{{
+                                t("selectPage.MaxHeadPercentage.TR")
+                              }}</label>
+                              <div class="row align-middle">
+                                <div class="columns" style="padding-left: 0rem">
+                                  <input
+                                    class="c-input-select-combo--left u-no-margin"
+                                    type="number"
+                                    :disabled="!state.isToleranceLevelCustom"
+                                    autofocus="autofocus"
+                                    id="RatioMaxH"
+                                    name="RatioMaxH"
+                                    v-model="
+                                      state.formData.PointTolerance.RatioMaxH
+                                    "
+                                    size="1"
+                                  />
+                                </div>
+                                <div class="shrink columns">
+                                  <label>%</label>
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                          <div class="row align-middle">
+                            <div class="columns">
+                              <el-checkbox v-model="state.formData.IsAllowCut"
+                                ><span style="font-size: 0.16rem">{{
+                                  t("selectPage.allowCutting.TR")
+                                }}</span></el-checkbox
+                              >
+                            </div>
+                            <div class="columns">
+                              <el-checkbox
+                                v-model="state.formData.IsAllowFrequence"
+                                ><span style="font-size: 0.16rem">{{
+                                  t("selectPage.allowFrequencyConversion.TR")
+                                }}</span></el-checkbox
+                              >
+                            </div>
+                          </div>
+                        </div>
+                        <div v-if="!state.isShowMoreSetting">
+                          <a
+                            class="button"
+                            id="searchButton"
+                            @click.stop="nextPage"
+                          >
+                            {{ t("selectPage.nextStep.TR") }}
+                            <span
+                              class="iconfont icona-AngleDoubleRight"
+                            ></span>
+                          </a>
+                        </div>
+                      </div>
+                      <!-- <div  v-if="!isShowMoreSetting"
+                        @click.stop="nextPage">
+                        <a class="button" id="searchButton">
+                          {{ t("selectPage.nextStep.TR") }}
+                          <span class="iconfont icona-AngleDoubleRight"></span>
+                        </a>
+                      </div> -->
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="small-12 large-6 columns" style="height: 100%">
+              <div style="height: 100%">
+                <div class="sticky-container" style="height: 0.64rem">
+                  <div
+                    style="
+                      width: 100%;
+                      max-width: 5.7rem;
+                      margin-top: 0rem;
+                      top: 0rem;
+                      bottom: auto;
+                    "
+                    class="sticky is-anchored is-at-top"
+                  >
+                    <div class="row align-justify">
+                      <div class="columns">
+                        <h2
+                          class="cos-header"
+                          style="
+                            font-size: 0.4rem;
+                            text-align: left;
+                            color: #3b3b3b;
+                          "
+                        >
+                          {{ t("selectPage.productSeries.TR") }}
+                        </h2>
+                      </div>
+                      <div
+                        class="columns text-right shrink hide-for-small-only"
+                      >
+                        <div
+                          class="menu"
+                          v-if="state.isShowMoreSetting"
+                          @click.stop="nextPage"
+                        >
+                          <a class="button" id="searchButton">
+                            {{ t("selectPage.nextStep.TR") }}
+                            <span
+                              class="iconfont icona-AngleDoubleRight"
+                            ></span>
+                          </a>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+
+                <div
+                  class="c-card"
+                  id="productLines"
+                  style="height: calc(100% - 0.65rem); position: relative"
+                >
+                  <selPumpSeries
+                    v-if="state.m_selPumpSeriesCtrlType"
+                    ref="pumpSeriesCtrl"
+                  ></selPumpSeries>
+                  <selPumpCatalog
+                    v-if="!state.m_selPumpSeriesCtrlType"
+                    ref="pumpCatalogCtrl"
+                  ></selPumpCatalog>
+                </div>
+              </div>
+            </div>
+          </div>
+        </form>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+<script setup name="selParasDefault">
+import { onMounted, ref, reactive } from "vue";
+import { ElMessage, ElContainer, ElMain, ElAside, ElPopover, ElTree, ElInput} from "element-plus";
+import UnitHelper from "@/utils/unit.js";
+import ConstParas from "@/utils/constParas.js";
+import UserSettingsHelper from "@/utils/userSetting.js";
+
+import selPumpSeries from "./selPumpSeries.vue";
+import selPumpCatalog from "./selPumpCatalog.vue";
+import axiosHelper from "@/utils/axiosHelper.js";
+import languageHelper from "@/utils/languageHelper.js";
+import seriesApplicationMixin from "/@/mixin/seriesApplication";
+import { useRoute, useRouter } from "vue-router";
+import { useLanguageMixin } from "/@/mixin/languageHook.js";
+import { useSelect } from "@/store/select.js";
+import { useI18n } from "vue-i18n";
+
+const route = useRoute();
+const router = useRouter();
+const { t } = useI18n();
+
+const selectStore = useSelect();
+const {
+  getLanguageParaName,
+  getCurrentLanguageType,
+  gotoIndexPage,
+  buildCurrentLanguageUrl,
+} = useLanguageMixin();
+const m_currentLanguage = getCurrentLanguageType();
+
+const pumpSeriesCtrl = ref();
+const pumpCatalogCtrl = ref();
+let state = reactive({
+  m_userType: 0,
+  m_Token: "",
+
+  m_selPumpSeriesCtrlType: true, // 琛ㄧず閫夋嫨绫诲瀷鎺т欢
+  m_isSelectAllSeries: false, //鏄惁鍏ㄩ��
+
+  isShowFirePumpType: true, //鏄惁鏄剧ず娑堥槻娉电被鍨�
+  isShowMoreDesignPoint: false, //鏄惁鏄剧ず鏇村璁捐鐐�
+  isShowMoreSetting: false, //鏄剧ず鏇村璁剧疆
+  isShowLoadingFrm: true, //鏄剧ず鍔犺浇鍔ㄧ敾
+  isShowJieZhiPopover: false, //鏄剧ず浠嬭川閫夋嫨
+  MotorPoleList: [
+    //杞�熺瓑绾т笅鎷夋 浠呴┍鍔ㄤ负鐢垫満鏃跺�欎娇鐢�
+    { Value: "", Text: "涓嶉檺" },
+    { Value: "2", Text: "2p" },
+    { Value: "4", Text: "4p" },
+    { Value: "6", Text: "6p" },
+    { Value: "8", Text: "8p" },
+    { Value: "10", Text: "10p" },
+    { Value: "12", Text: "12p" },
+  ],
+  NianDuUnit: 0,
+  NianDuOptionList: UnitHelper.NianDu_Value_List,
+
+  MiDuOptionList: UnitHelper.MiDu_Value_List,
+  q_unit_list: UnitHelper.Q_Value_List,
+  h_unit_list: UnitHelper.H_Value_List,
+
+  m_toleranceStandardList: [], //妫�楠屽宸爣鍑嗕笅鎷夋鏁版嵁
+  m_toleranceGradeList: [], //妫�楠屽宸瓑绾т笅鎷夋鏁版嵁
+
+  m_motorStdList: [], //鐢垫満鍔熺巼鏍囧噯涓嬫媺妗�
+  driveTypeList: [], //椹卞姩绫诲瀷 涓嬫媺閫夋嫨
+  firePumpTypeList: [], //娑堥槻娉电被鍨嬩笅鎷�
+  m_frequenceList: [
+    { Value: 50, Text: "50 HZ" },
+    { Value: 60, Text: "60 HZ" },
+  ], //棰戠巼涓嬫媺
+
+  isDiyJieZhi: false, //鏄惁鑷畾涔変粙璐ㄥ睘鎬�
+
+  m_secondDpFlowText: "", //绗簩璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  m_secondDpHeadText: "", //绗簩璁捐鐐规壃绋嬬殑鏂囧瓧
+
+  m_secondDpFlowText: "", //绗簩璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  m_secondDpHeadText: "", //绗簩璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧鐨勬枃瀛�
+  m_thirdDpFlowText: "", //绗笁璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  m_thirdDpFlowText: "", //绗笁璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧
+
+  formData: {
+    //琛ㄥ崟鏁版嵁
+    DpQ: "", //娴侀噺
+    DpQu: 1, //娴侀噺鍗曚綅
+    DpH: "", //鎵▼
+    DpHu: 0, //鎵▼鍗曚綅
+    DpQTwo: "", //绗簩娴侀噺璁捐鐐�
+    DpHTwo: "", //绗簩鎵▼璁捐鐐�
+    DpQThree: "", //绗笁娴侀噺璁捐鐐�
+    DpHThree: "", //绗笁鎵▼璁捐鐐�
+
+    motorFrequence: 50, //棰戠巼
+    motorPower: "", //鐢垫満鍔熺巼
+    motorPoleNum: "null", //鐢垫満绾ф暟
+    dieselSpeed: "", //鏌存补鏈鸿浆閫�
+    jzID: "1", //褰撳墠閫変腑鐨勪粙璐↖D
+    jzName: t("selectPage.cleanWater.TR"),
+    jzTemperature: "20.0", //娓╁害
+    calcDensity: 1000, //瀵嗗害
+    miduUnit: 0, //瀵嗗害鍗曚綅
+    calcViscosity: 1, //绮樺害
+    volumeConcentration: 100, //浣撶Н娴撳害
+    jzDesc: "", //浠嬭川璇存槑
+    hasMediaParticles: false, //鏄惁鏈変粙璐ㄩ绮�
+    driveType: 0, //椹卞姩绫诲瀷 0鐢垫満 3鏌存补鏈�
+    MinEta: "", //鏁堢巼瑕佹眰
+    firePumpType: 0, //娑堥槻娉电被鍨�
+    NPSHa: "", //姘旇殌
+    IsAllowCut: true, //鏄惁鍏佽鍒囧壊
+    IsAllowFrequence: true, //鏄惁鍏佽鍙橀
+
+    motorStd: 0, //鐢垫満鏍囧噯
+    ToleranceStand: 1, //鏍¢獙瀹瑰樊鏍囧噯ID
+    PointTolerance: {
+      ToleranceGrade: "",
+      RatioMinQ: "",
+      RatioMaxQ: "",
+      RatioMinH: "",
+      RatioMaxH: "",
+    },
+
+    isVisCorrect: false, //鏄惁淇绮樺害 榛樿false
+  },
+  ruleDpQ: false, //鍒ゆ柇鏄惁杈撳叆浜嗘祦閲�
+  ruleDpH: false, //鍒ゆ柇鏄惁杈撳叆浜嗘壃绋�
+  ruleDieselSpeed: false,
+  ruleMotorPoleNum: false, //鍒ゆ柇鏄惁閫夋嫨浜嗙數鏈烘瀬鏁�
+  isToleranceLevelCustom: false,
+  pointToleranceConfig: window.pointToleranceConfig, //瀹瑰樊閰嶇疆
+  m_JieZhiCalaStatus: 0, //褰撳墠浠嬭川璁$畻鐘舵�侊紝涓�1鏃朵笖褰撳墠閫夋嫨鐨勬槸浠嬭川搴撳垯鏍规嵁娓╁害鍜屼綋绉祿搴﹁绠楀瘑搴﹀拰绮樺害
+  m_JieZhiTreeData: [],
+  defaultProps: {
+    children: "children",
+    label: "label",
+  },
+});
+onMounted(() => {
+  translateUI();
+  //鍒濆鍖栭厤缃�
+  initConfig();
+  //鍒濆鍖栭〉闈㈡暟鎹�
+  //this.$nextTick(() => {});
+  seriesApplicationMixin.initialSeriesApplication(
+    function (seriesApplicationData) {
+      initialPageData(seriesApplicationData);
+    },
+    function () {}
+  );
+});
+//鍒濆鍖栭〉闈㈡暟鎹�
+const initialPageData = async (seriesApplicationData) => {
+  axiosHelper
+    .get({
+      version: 3,
+      // lang: this.m_currentLanguage,
+      //isAddLangParam : "false",鏄惁娣诲姞璇█鍙傛暟, 涓嶅姞璁剧疆涓篺alse,鍚﹀垯null
+      controller: "SelectByParas",
+      action: "GetParaPageInfo",
+      data: null, //闄や簡Lang鐨勫叾浠栧弬鏁�
+      userInfo: {},
+      apiUrlType: "main",
+    })
+    .then(async (res) => {
+      state.isShowLoadingFrm = false;
+      document.title = `${t("indexPage.intelligentSelection.TR")}`;
+      let result = res.data;
+      if (result.Code != 0) {
+        ElMessage.error(result.Message);
+        return;
+      }
+      if (result.Data.DriveTypeList) {
+        state.formData.driveType = result.Data.DriveTypeList[0].Value;
+        state.driveTypeList = result.Data.DriveTypeList;
+      }
+      if (result.Data.FireTypeList) {
+        state.formData.firePumpType = result.Data.FireTypeList[0].Value;
+        state.firePumpTypeList = result.Data.FireTypeList;
+      }
+      if (result.Data.MotorStdList) {
+        state.formData.motorStd = result.Data.MotorStdList[0].Value;
+        state.m_motorStdList = result.Data.MotorStdList;
+      }
+
+      if (result.Data.CatalogList && result.Data.SeriesList) {
+        var allCatalogList = result.Data.CatalogList;
+        var allSeriesList = result.Data.SeriesList;
+        getSelectSeriesCtrl().initData(
+          allCatalogList,
+          allSeriesList,
+          m_currentLanguage,
+          seriesApplicationData
+        );
+      }
+      let JieZhi = await initJieZhi();
+      let treeData = buildJieZhiTreeData(JieZhi);
+      state.m_JieZhiTreeData = treeData;
+
+      //璁剧疆榛樿閰嶇疆
+      setDefaultValue();
+      //璁剧疆瀹瑰樊鏍囧噯
+      initalToleranceStandard();
+      //浠庡巻鍙茶〃鍗曚腑鍒濆鍖�
+      initDataFromHistory();
+
+      //浼犲叆绫诲瀷鍒楄〃 绯诲垪鍒楄〃 椹卞姩绫诲瀷 鐢垫満棰戠巼
+      getSelectSeriesCtrl().filterSeriseList(
+        state.formData.driveType,
+        state.formData.motorFrequence,
+        state.formData.firePumpType
+      );
+    })
+    .catch((err) => {
+      console.log(err, 849);
+      state.isShowLoadingFrm = false;
+      //console.log("璇锋眰澶辫触:" + err);
+    });
+};
+// 鑾峰彇浠嬭川搴�
+const initJieZhi = () => {
+  return new Promise((resolve, reject) => {
+    axiosHelper
+      .get({
+        version: 3,
+        controller: "JieZhi",
+        action: "GetLibrary4XPump",
+        data: null, //闄や簡Lang鐨勫叾浠栧弬鏁�
+        userInfo: {},
+        apiUrlType: "main",
+        isAddUrlSoftType: "false",
+      })
+      .then((res) => {
+        let result = res.data;
+        if (result.Code != 0) {
+          ElMessage.error(result.Message);
+          resolve(null);
+        } else {
+          resolve(result.Data);
+        }
+      })
+      .catch((err) => {
+        reject(err);
+      });
+  });
+};
+// 璁$畻浠嬭川
+const calcJieZhi = () => {
+  axiosHelper
+    .get({
+      version: 3,
+      // lang: this.m_currentLanguage,
+      //isAddLangParam : "false",鏄惁娣诲姞璇█鍙傛暟, 涓嶅姞璁剧疆涓篺alse,鍚﹀垯null
+      controller: "JieZhi",
+      action: "CalcJieZhiInfo",
+      data: {
+        JieZhiID: state.formData.jzID,
+        Wendu: state.formData.jzTemperature,
+        Nongdu: state.formData.volumeConcentration,
+      }, //闄や簡Lang鐨勫叾浠栧弬鏁�
+      userInfo: {},
+      apiUrlType: "main",
+      isAddUrlSoftType: "false",
+    })
+    .then((res) => {
+      let result = res.data;
+      if (result.Code != 0) {
+        ElMessage.error(result.Message);
+        return;
+      } else {
+        state.formData.calcViscosity = result.Data.Midu;
+        state.formData.calcDensity = result.Data.Niandu;
+      }
+    })
+    .catch((err) => {
+      console.log(err, 849);
+    });
+};
+
+const buildJieZhiTreeData = (data) => {
+  if (!Array.isArray(data)) {
+    return [];
+  }
+  let treeData = [];
+  data.forEach((item) => {
+    let node = {
+      label: item.Name,
+      children: [],
+    };
+    if (item.Items && item.Items.length > 0) {
+      item.Items.forEach((child_node) => {
+        let treenode = {
+          label: child_node.Name,
+          option: child_node,
+        };
+        node.children.push(treenode);
+      });
+    }
+    treeData.push(node);
+  });
+  return treeData;
+};
+//鍒濆鍖栭厤缃�
+const initConfig = () => {
+  let pageConfig = window.pageConfig;
+  const SelParasPage = pageConfig.SelParasPage;
+  var selectSeriesMethod = SelParasPage.SelectSeriesMethod;
+  if (selectSeriesMethod == "bySeries") state.m_selPumpSeriesCtrlType = true;
+  else state.m_selPumpSeriesCtrlType = false;
+
+  state.isShowFirePumpType = SelParasPage.HasFirePump ?? true;
+
+  //鍒濆鍖栧崟浣� --- 浠庣敤鎴疯缃腑璇诲彇
+  state.formData.DpQu = UserSettingsHelper.getFlowUnit(m_currentLanguage);
+  state.formData.DpHu = UserSettingsHelper.getHeadUnit(m_currentLanguage);
+};
+//璁剧疆榛樿鍙橀噺
+const setDefaultValue = () => {
+  //鏄惁鏈夌數姘旀爣鍑嗚繃婊�
+  var pageConfig = window.pageConfig;
+  if (pageConfig.SelParasPage == null) {
+    return;
+  }
+
+  if (pageConfig.SelParasPage.defaultElectricalStandard) {
+    if (m_currentLanguage == 0) {
+      state.formData.motorStd =
+        pageConfig.SelParasPage.defaultElectricalStandard.CN;
+    } else {
+      state.formData.motorStd =
+        pageConfig.SelParasPage.defaultElectricalStandard.EN;
+    }
+  }
+  if (pageConfig.SelParasPage.defaultNianDuUnit) {
+    if (m_currentLanguage == 0) {
+      state.NianDuUnit = pageConfig.SelParasPage.defaultNianDuUnit.CN;
+    } else {
+      state.formData.motorStd = state.NianDuUnit =
+        pageConfig.SelParasPage.defaultNianDuUnit.EN;
+    }
+  }
+
+  if (pageConfig.SelParasPage.defaultMotorFrequence) {
+    // console.log(this.m_currentLanguage,1110)
+    if (m_currentLanguage == 0) {
+      if (pageConfig.SelParasPage.defaultMotorFrequence.CN) {
+        state.formData.motorFrequence =
+          pageConfig.SelParasPage.defaultMotorFrequence.CN;
+      }
+    } else if (m_currentLanguage == 2) {
+      if (pageConfig.SelParasPage.defaultMotorFrequence.EN) {
+        state.formData.motorFrequence =
+          pageConfig.SelParasPage.defaultMotorFrequence.EN;
+      }
+    } else if (m_currentLanguage == 6) {
+      if (pageConfig.SelParasPage.defaultMotorFrequence.KO) {
+        state.formData.motorFrequence =
+          pageConfig.SelParasPage.defaultMotorFrequence.KO;
+      }
+    } else if (m_currentLanguage == 5) {
+      if (pageConfig.SelParasPage.defaultMotorFrequence.RU) {
+        state.formData.motorFrequence =
+          pageConfig.SelParasPage.defaultMotorFrequence.RU;
+      }
+    } else {
+      if (pageConfig.SelParasPage.defaultMotorFrequence.EN) {
+        state.formData.motorFrequence =
+          pageConfig.SelParasPage.defaultMotorFrequence.EN;
+      }
+    }
+  }
+};
+//
+const getSelectSeriesCtrl = () => {
+  if (state.m_selPumpSeriesCtrlType) {
+    return pumpSeriesCtrl.value;
+  } else {
+    return pumpCatalogCtrl.value;
+  }
+};
+//璁剧疆瀹瑰樊鏍囧噯鏍囧噯
+const initalToleranceStandard = () => {
+  let currentLangName = getLanguageParaName();
+  console.log(currentLangName, 1027);
+  let allStandardList = state.pointToleranceConfig.Standard4PumpSelectList;
+  let toleranceStandardList = [];
+  allStandardList.forEach((item) => {
+    let standColumn = { disable: false };
+    standColumn.text = item.Name;
+    standColumn.value = item.Value;
+    toleranceStandardList.push(standColumn);
+  });
+  state.m_toleranceStandardList = toleranceStandardList;
+
+  let defauleValueObj = state.pointToleranceConfig.DefaultValue;
+
+  let currentDefauleValue = null;
+
+  Object.keys(defauleValueObj).forEach((item) => {
+    if (item == currentLangName) {
+      currentDefauleValue = defauleValueObj[item];
+    }
+  });
+  if (currentDefauleValue == null)
+    currentDefauleValue = defauleValueObj[currentLangName];
+  // 鍒濆鍖栧宸瓑绾у垪琛�
+  initialTolerantGrandList(
+    currentDefauleValue.Standard,
+    currentDefauleValue.ToleranceGrade
+  );
+};
+
+//鑾峰彇涓婃鐨勮〃鍗曞~鍐欒褰�
+const initDataFromHistory = () => {
+  //鑾峰彇涓婃鐨勮〃鍗曞~鍐欒褰�
+  let historyFormData = selectStore.ByParas.selectParas;
+  if (historyFormData == null) {
+    return;
+  }
+  if (historyFormData.DesignInfo == null) {
+    return;
+  }
+  if (historyFormData.FilterInfo == null) {
+    return;
+  }
+
+  state.formData.DpQ = historyFormData.DesignInfo.DpQ || state.formData.DpQ;
+  state.formData.DpQu = historyFormData.DesignInfo.UnitQ;
+  state.formData.DpH = historyFormData.DesignInfo.DpH || state.formData.DpH;
+  state.formData.DpHu = historyFormData.DesignInfo.UnitH;
+  state.formData.jzTemperature = historyFormData.FilterInfo.Temperature || 20;
+  
+
+  if (historyFormData.FilterInfo.MotorFrequence)
+    state.formData.motorFrequence = historyFormData.FilterInfo.MotorFrequence;
+
+  var firePumpType = historyFormData.FilterInfo.FirePumpType;
+  if (firePumpType == "2" || firePumpType == 2) {
+    firePumpType = "2";
+  } else if (firePumpType == "1" || firePumpType == 1) {
+    firePumpType = 1;
+  } else {
+    firePumpType = 0;
+  }
+  state.formData.firePumpType = firePumpType;
+
+  //鍘嗗彶浠嬭川鍙傛暟
+  let jiezhiParas = historyFormData.JieZhi;
+  state.isDiyJieZhi = jiezhiParas.IsCustom ?? false;
+  state.formData.jzTemperature = historyFormData.FilterInfo.Temperature;
+  state.formData.volumeConcentration = jiezhiParas.V_C;
+  state.formData.jzID = jiezhiParas.ID;
+  state.formData.jzName = jiezhiParas.Name;
+  state.formData.miduUnit = jiezhiParas.MiDuUnit ?? state.formData.miduUnit;
+  state.NianDuUnit = jiezhiParas.NianDuUnit ?? state.NianDuUnit;
+
+  if (state.formData.miduUnit !== 0) {
+    jiezhiParas.CalcDensity = jiezhiParas.CalcDensity / 1000;
+  }
+  if (state.NianDuUnit == 1) {
+    jiezhiParas.CalcViscosity = jiezhiParas.CalcViscosity / 100;
+  }
+  if (state.NianDuUnit == 5) {
+    let temp = jiezhiParas.CalcDensity;
+    if (state.formData.miduUnit !== 0) temp * 1000;
+    jiezhiParas.CalcViscosity = jiezhiParas.CalcViscosity / temp;
+  }
+  state.formData.calcDensity = jiezhiParas.CalcDensity;
+  state.formData.calcViscosity = jiezhiParas.CalcViscosity;
+
+  state.formData.motorPoleNum = historyFormData.FilterInfo.MotorPoleNum;
+  state.formData.motorPower = historyFormData.FilterInfo.MotorPower;
+  state.formData.NPSHa = historyFormData.FilterInfo.NPSHa;
+  state.formData.MinEta = historyFormData.FilterInfo.MinEta;
+  state.formData.dieselSpeed = historyFormData.FilterInfo.DieselSpeed;
+  state.formData.driveType = historyFormData.FilterInfo.DriveType;
+
+  state.formData.IsAllowCut = historyFormData.DesignInfo.IsAllowCut ?? true;
+  state.formData.IsAllowFrequence = historyFormData.DesignInfo.IsAllowFrequence ?? true;
+
+  state.formData.ToleranceStand = historyFormData.DesignInfo.ToleranceStand || 1; //瀹瑰樊鏍囧噯
+  // 鑾峰彇褰撳墠鐨勮瑷�绫诲瀷
+  let langType = languageHelper.getParaNameByType(
+    languageHelper.getTypeFromRout(route.fullPath)
+  );
+  // 鑾峰彇閰嶇疆涓宸瓑绾х殑榛樿鍊�
+  let defaultToleranceGrade = window.pointToleranceConfig.DefaultValue[langType].ToleranceGrade;
+  state.formData.PointTolerance.ToleranceGrade = defaultToleranceGrade; //瀹瑰樊绛夌骇
+  if (historyFormData.DesignInfo.PointTolerance) {
+    let ToleranceGrade = historyFormData.DesignInfo.PointTolerance.ToleranceGrade;
+    state.formData.PointTolerance.ToleranceGrade = ToleranceGrade;
+  }
+  if (historyFormData.DesignInfo.PointTolerance && historyFormData.DesignInfo.PointTolerance != "") {
+    state.formData.PointTolerance.RatioMinQ = parseFloat(
+      historyFormData.DesignInfo.PointTolerance.RatioMinQ * 100
+    ).toFixed(1); //鏈�灏忔祦閲忕櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMaxQ = parseFloat(
+      historyFormData.DesignInfo.PointTolerance.RatioMaxQ * 100
+    ).toFixed(1); //鏈�澶ф祦閲忕櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMinH = parseFloat(
+      historyFormData.DesignInfo.PointTolerance.RatioMinH * 100
+    ).toFixed(1); //鏈�灏忔壃绋嬬櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMaxH = parseFloat(
+      historyFormData.DesignInfo.PointTolerance.RatioMaxH * 100
+    ).toFixed(1); //鏈�澶ф壃绋嬬櫨鍒嗘瘮
+  }
+
+  if (state.formData.PointTolerance.ToleranceGrade == 0) {
+    //鍒ゆ柇濡傛灉瀹瑰樊绛夌骇鍊间负0锛岃〃绀烘槸鑷畾涔�
+    state.isToleranceLevelCustom = true;
+  }
+  initialTolerantGrandList(
+    state.formData.ToleranceStand,
+    state.formData.PointTolerance.ToleranceGrade
+  );
+};
+
+//鏄剧ず鎴栭殣钘忔洿澶氳缃�
+const toggleShowMoreSetting = () => {
+  state.isShowMoreSetting = !state.isShowMoreSetting;
+};
+
+//鐩戝惉娴侀噺杈撳叆
+const handleInputDpQ = (val) => {
+  if (val) {
+    state.ruleDpQ = false;
+  } else {
+    state.ruleDpQ = true;
+  }
+};
+//鐩戝惉鎵▼杈撳叆
+const handleInputDpH = (val) => {
+  if (val) {
+    state.ruleDpH = false;
+  } else {
+    state.ruleDpH = true;
+  }
+};
+
+//鐩戝惉椹卞姩绫诲瀷鐨勯�夋嫨
+const changeDriveType = (e) => {
+  let driveType = e.target.value;
+  state.formData.driveType = driveType;
+  if (driveType !== 3) {
+    state.formData.dieselSpeed = "";
+  }
+  // getSelectSeriesCtrl().resetData()
+  getSelectSeriesCtrl().filterSeriseList(
+    state.formData.driveType,
+    state.formData.motorFrequence,
+    state.formData.firePumpType
+  );
+};
+
+
+//鐩戝惉娑堥槻娉电被鍨嬬殑涓嬫媺閫夋嫨
+const changeFirePumpType = (e) => {
+  state.formData.firePumpType = e.target.value;
+
+  if (state.formData.firePumpType == 2) {
+    state.formData.DpQu = 4;
+  } else {
+    state.formData.DpQu = 1;
+  }
+  getSelectSeriesCtrl().filterSeriseList(
+    state.formData.driveType,
+    state.formData.motorFrequence,
+    state.formData.firePumpType
+  );
+};
+//鐩戝惉鐢垫皵鏍囧噯鏍囧噯涓嬫媺閫夋嫨
+const changeMotorStd = (e) => {
+  state.formData.motorStd = e.target.value;
+};
+
+//鐩戝惉杞�熶笅鎷�(椹卞姩绫诲瀷涓虹數鏈�)
+const changeMotorPoleNum = (e) => {
+  state.formData.motorPoleNum = e.target.value;
+};
+//鐩戝惉娴侀噺鍗曚綅涓嬫媺妗嗗彉鍖栫殑鍊�
+const handleDpQuSelect = (val) => {
+  state.formData.DpQu = parseInt(val.target.value);
+  state.m_secondDpFlowText =
+    `${t("selectPage.secondDpFlow.TR")}` +
+    "(" +
+    UnitHelper.GetUnitNameQ(state.formData.DpQu) +
+    ")"; //绗簩璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  state.m_thirdDpFlowText =
+    `${t("selectPage.thirdDpFlow.TR")}` +
+    "(" +
+    UnitHelper.GetUnitNameQ(state.formData.DpQu) +
+    ")"; //绗笁璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+};
+//鐩戝惉鎵▼鍗曚綅涓嬫媺妗嗗彉鍖栫殑鍊�
+const handleDpHuSelect = (val) => {
+  state.formData.DpHu = parseInt(val.target.value);
+  state.m_secondDpHeadText =
+    `${t("selectPage.secondDpHead.TR")}` +
+    "(" +
+    UnitHelper.GetUnitNameH(state.formData.DpHu) +
+    ")"; //绗簩璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧鐨勬枃瀛�
+  state.m_thirdDpHeadText =
+    `${t("selectPage.thirdDpHead.TR")}` +
+    "(" +
+    UnitHelper.GetUnitNameH(state.formData.DpHu) +
+    ")"; //绗笁璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧
+};
+//鐩戝惉璁剧疆棰戠巼閫夋嫨涓嬫媺
+const handldHzSelect = (val) => {
+  state.formData.motorFrequence = parseInt(val.target.value);
+  getSelectSeriesCtrl().filterSeriseList(
+    state.formData.driveType,
+    state.formData.motorFrequence,
+    state.formData.firePumpType
+  );
+};
+// 鐩戝惉浠嬭川鐨勮緭鍏�
+const handleJzName = (e) => {
+  state.formData.jzName = e.target.value;
+};
+// 鐩戝惉浠嬭川閫夋嫨
+const handleJieZhiNodeClick = (data) => {
+  if (data.option) {
+    state.formData.jzID = data.option.ID;
+    state.formData.jzName = data.option.Name;
+    state.formData.calcDensity = data.option.Density;
+    state.formData.calcViscosity = data.option.Viscosity;
+    state.formData.jzTemperature = data.option.Temperature;
+    state.m_JieZhiCalaStatus = data.option.CalcStatus;
+    state.isShowJieZhiPopover = false;
+  }
+  if (state.m_JieZhiCalaStatus == 1 && state.isDiyJieZhi) {
+    calcJieZhi();
+  }
+};
+// 鐩戝惉浠嬭川浣撶Н娴撳害鐨勮緭鍏�
+const handleVolumeConcentration = (e) => {
+  let value = e.target.value;
+  if (value >= 100) {
+    value = 100;
+  }
+  state.formData.volumeConcentration = value;
+  if (state.m_JieZhiCalaStatus == 1 && state.isDiyJieZhi) {
+    calcJieZhi();
+  }
+};
+// 鐩戝惉浠嬭川娓╁害鐨勮緭鍏�
+const handleTemperature = (e) => {
+  let value = e.target.value;
+  state.formData.jzTemperature = value;
+  if (state.m_JieZhiCalaStatus == 1 && state.isDiyJieZhi) {
+    calcJieZhi();
+  }
+};
+// 鐩戝惉鏁堢巼宸�艰緭鍏�
+const changeMinEta = (e) => {
+  let value = e.target.value;
+  if (value > 100) {
+    state.formData.MinEta = 100;
+    return;
+  }
+  state.formData.MinEta = value;
+};
+//鐩戝惉鑷畾涔変粙璐ㄥ睘鎬х殑鍙樺寲
+const changeJieZhiInputMehtod = (e) => {};
+//鐩戝惉楠岃瘉瀹瑰樊鏍囧噯涓嬫媺
+const changeToleranceStand = (e) => {
+  state.isToleranceLevelCustom = false;
+  let standard = parseInt(e.target.value);
+  let grade = 0;
+
+  let allStandardList = state.pointToleranceConfig.Standard4PumpSelectList;
+  allStandardList.forEach((item) => {
+    if (item.Value == standard) {
+      grade = item.DefaultGrade;
+    }
+  });
+
+  initialTolerantGrandList(standard, grade);
+};
+//淇敼鏍囧噯鍚�,鏋勫缓绛夌骇涓嬫媺
+const initialTolerantGrandList = (standard, sel_grade) => {
+  state.formData.ToleranceStand = standard;
+  let allStandardList = state.pointToleranceConfig.Standard4PumpSelectList;
+  allStandardList.forEach((item) => {
+    if (item.Value == standard) {
+      state.formData.PointTolerance.ToleranceGrade =
+        item.ToleranceGrade[0].Value;
+
+      var toleranceGradeList = [];
+      item.ToleranceGrade.forEach((grade) => {
+        let gradeColumn = { disable: false };
+        gradeColumn.text = grade.Name;
+        gradeColumn.value = grade.Value;
+        toleranceGradeList.push(gradeColumn);
+      });
+
+      toleranceGradeList.push({
+        text: `${t("selectPage.custom.TR")}`,
+        value: 0,
+        disable: false,
+      });
+
+      state.m_toleranceGradeList = toleranceGradeList;
+    }
+  });
+
+  if (sel_grade != null && sel_grade != 0) {
+    state.formData.PointTolerance.ToleranceGrade = sel_grade;
+    buildToleranceRangData(sel_grade);
+  } else {
+    state.formData.PointTolerance.ToleranceGrade = sel_grade;
+    state.isToleranceLevelCustom = true;
+    checkCustomValueIsUse();
+  }
+};
+//鐩戝惉楠岃瘉瀹瑰樊绛夌骇涓嬫媺
+const changeToleranceGrade = (e) => {
+  let grade = parseInt(e.target.value);
+  state.formData.PointTolerance.ToleranceGrade = grade;
+  if (grade == 0) {
+    state.isToleranceLevelCustom = true;
+    // 鍒ゆ柇閰嶇疆涓槸鍚︽湁閰嶇疆鑷畾涔夊宸寖鍥村緱鍊�
+    checkCustomValueIsUse();
+  } else {
+    state.isToleranceLevelCustom = false;
+    buildToleranceRangData(grade);
+  }
+};
+// 鏍¢獙瀹瑰樊绛夌骇閰嶇疆鐨勮嚜瀹氫箟鍊兼槸鍚﹀彲鐢�
+const checkCustomValueIsUse = () => {
+  // 鑷畾涔夋渶灏忔祦閲忕櫨鍒嗘瘮
+  if (state.pointToleranceConfig.CustomValue.RatioMinQ.isUse) {
+    state.formData.PointTolerance.RatioMinQ = parseFloat(
+      state.pointToleranceConfig.CustomValue.RatioMinQ.value * 100
+    ).toFixed(1);
+  }
+  // 鑷畾涔夋渶澶ф祦閲忕櫨鍒嗘瘮
+  if (state.pointToleranceConfig.CustomValue.RatioMaxQ.isUse) {
+    state.formData.PointTolerance.RatioMaxQ = parseFloat(
+      state.pointToleranceConfig.CustomValue.RatioMaxQ.value * 100
+    ).toFixed(1);
+  }
+  // 鑷畾涔夋渶灏忔壃绋嬬櫨鍒嗘瘮
+  if (state.pointToleranceConfig.CustomValue.RatioMinH.isUse) {
+    state.formData.PointTolerance.RatioMinH = parseFloat(
+      state.pointToleranceConfig.CustomValue.RatioMinH.value * 100
+    ).toFixed(1);
+  }
+  // 鑷畾涔夋渶澶ф壃绋嬬櫨鍒嗘瘮
+  if (state.pointToleranceConfig.CustomValue.RatioMaxH.isUse) {
+    state.formData.PointTolerance.RatioMaxH = parseFloat(
+      state.pointToleranceConfig.CustomValue.RatioMaxH.value * 100
+    ).toFixed(1);
+  }
+};
+//璁剧疆瀹瑰樊鑼冨洿鐨勬暟鎹�
+const buildToleranceRangData = (grade) => {
+  let grade_tol = state.pointToleranceConfig.getGradeValue(grade);
+  if (grade_tol != null) {
+    state.formData.PointTolerance.RatioMinQ = parseFloat(
+      grade_tol.RatioMinQ * 100
+    ).toFixed(1); //鏈�灏忔祦閲忕櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMaxQ = parseFloat(
+      grade_tol.RatioMaxQ * 100
+    ).toFixed(1); //鏈�澶ф祦閲忕櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMinH = parseFloat(
+      grade_tol.RatioMinH * 100
+    ).toFixed(1); //鏈�灏忔壃绋嬬櫨鍒嗘瘮
+    state.formData.PointTolerance.RatioMaxH = parseFloat(
+      grade_tol.RatioMaxH * 100
+    ).toFixed(1); //鏈�澶ф壃绋嬬櫨鍒嗘瘮
+  }
+};
+
+//鐣岄潰缈昏瘧
+const translateUI = () => {
+  //杞�熺瓑绾х殑璇█杞崲澶勭悊
+  state.MotorPoleList[0].Text = `${t("selectPage.unlimited.TR")}`;
+  //绗簩銆佷笁 璁捐鐐规祦閲忋�佹壃绋� 閫夋嫨椤规枃瀛楃殑澶勭悊
+  state.m_secondDpFlowText = `${t(
+    "selectPage.secondDpFlow.TR"
+  )}(${UnitHelper.GetUnitNameQ(state.formData.DpQu)})`; //绗簩璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  state.m_secondDpHeadText = `${t(
+    "selectPage.secondDpHead.TR"
+  )}(${UnitHelper.GetUnitNameH(state.formData.DpHu)})`; //绗簩璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧鐨勬枃瀛�
+  state.m_thirdDpFlowText = `${t(
+    "selectPage.thirdDpFlow.TR"
+  )}(${UnitHelper.GetUnitNameQ(state.formData.DpQu)})`; //绗笁璁捐鐐规祦閲忔樉绀虹殑鏂囧瓧
+  state.m_thirdDpHeadText = `${t(
+    "selectPage.thirdDpHead.TR"
+  )}(${UnitHelper.GetUnitNameH(state.formData.DpHu)})`; //绗笁璁捐鐐规壃绋嬫樉绀虹殑鏂囧瓧
+};
+//杩斿洖涓婁竴椤�
+const backTo = () => {
+  gotoIndexPage();
+};
+//涓嬩竴姝�
+const nextPage = () => {
+  let cbData = getSelectSeriesCtrl().getSelectData();
+
+  if (cbData == null) return;
+
+  let selSeriesIDs = cbData.SeriesID;
+  let selCatalogIDs = cbData.CatalogID;
+  let selMethod = cbData.SelMethod;
+  if (selCatalogIDs == null || selCatalogIDs.length == 0) {
+    if (selSeriesIDs == null || selSeriesIDs.length == 0) return;
+  }
+
+  state.ruleDpQ = false;
+  state.ruleDpH = false;
+  state.ruleDieselSpeed = false;
+  if (state.formData.DpQ == "" || state.formData.DpH == "") {
+    state.ruleDpQ = true;
+    state.ruleDpH = true;
+    return;
+  }
+  if (state.formData.DpQ == "" || state.formData.DpH == "") {
+    state.ruleDpQ = true;
+    state.ruleDpH = true;
+    return;
+  }
+  //
+  if (state.formData.driveType == ConstParas.DriveType.Motor) {
+    if (state.formData.motorPoleNum == undefined) {
+      state.ruleMotorPoleNum = true;
+      return;
+    }
+  }
+
+  let calcDensity = state.formData.calcDensity;
+  let miduUnit = Number(state.formData.miduUnit);
+  if (miduUnit !== 0) {
+    calcDensity = Number(calcDensity) * 1000;
+  }
+  // 璁$畻绮樺害
+  let calcNianDu = state.formData.calcViscosity;
+  let nianDuUnit = Number(state.NianDuUnit);
+  if (nianDuUnit == 1) {
+    calcNianDu = Number(calcNianDu) * 100;
+  }
+
+  if (nianDuUnit == 5) {
+    let temp = calcDensity;
+    if (miduUnit !== 0) temp = temp / 1000;
+    calcNianDu = calcNianDu / temp;
+  }
+
+  if (calcDensity > 5000) {
+    ElMessage.warning("鏈�澶у瘑搴︿笉鑳藉ぇ浜�5000");
+    return;
+  }
+
+  if (calcNianDu > 1000) {
+    ElMessage.warning("浠嬭川绮樺害涓嶈兘澶т簬1000");
+    return;
+  }
+
+  //淇濆瓨鍙傛暟鍒扮紦瀛橀噷闈�
+  saveParas({
+    SelSeriesIDs: selSeriesIDs,
+    SelCatalogIDs: selCatalogIDs,
+    SelMethod: selMethod,
+    CalcDensity: calcDensity,
+    CalcNianDu: calcNianDu,
+  });
+
+  let path = buildCurrentLanguageUrl("/Select/PumpList/Index");
+  router.push({
+    path: path,
+  });
+};
+//淇濆瓨鍙傛暟鍒扮紦瀛橀噷闈�
+const saveParas = (saveData) => {
+  let { SelSeriesIDs, SelCatalogIDs, SelMethod, CalcDensity, CalcNianDu } =
+    saveData;
+  if (SelSeriesIDs == null) SelSeriesIDs = [];
+  if (SelCatalogIDs == null) SelCatalogIDs = [];
+  // 鍒ゆ柇褰撳墠閫夊瀷鏂规硶鏄笉鏄寜琛屼笟
+  if (SelMethod == null || SelMethod != 1) {
+    // 鍒ゆ柇褰撳墠閫夊瀷鏂规硶鏄惁鏄寜绫诲瀷 m_selPumpSeriesCtrlType = true琛ㄧずbySeries
+    if (state.m_selPumpSeriesCtrlType) {
+      // selMethod = 1 琛ㄧず鎸夌郴鍒楅�夊瀷
+      SelMethod = 1;
+    } else {
+      // selMethod = 0 琛ㄧず鎸夌被鍨嬮�夊瀷
+      SelMethod = 0;
+    }
+  } else {
+    SelMethod = 2;
+  }
+  //鏄惁淇绮樺害 榛樿false
+  var isVisCorrect = false;
+  if (state.formData.calcViscosity && state.formData.calcViscosity > 30)
+    isVisCorrect = true;
+
+  let post_data = {
+    //浠嬭川
+    JieZhi: {
+      ID: state.formData.jzID, //浠嬭川id
+      Name: state.formData.jzName, //浠嬭川鍚嶇О
+      CalcDensity: CalcDensity, //瀵嗗害
+      CalcViscosity: CalcNianDu, //绮樺害
+      Temperature: state.formData.jzTemperature, //娓╁害
+      V_C: state.formData.volumeConcentration, //浣撶Н娴撳害
+      MiDuUnit: state.formData.miduUnit, //瀵嗗害鍗曚綅
+      NianDuUnit: state.NianDuUnit, //绮樺害鍗曚綅
+      IsCustom: state.isDiyJieZhi, //鏄惁鑷畾涔変粙璐�
+    },
+    //绛涢�変俊鎭�
+    FilterInfo: {
+      DriveType: state.formData.driveType, //璁惧绫诲瀷 0鐢垫満 3鏌存补鏈�
+      KeyWord: "", //鍏抽敭瀛� 鏆傛椂榛樿绌�
+      MotorPoleNum: state.formData.motorPoleNum, //鐢垫満鏋佹暟
+      DieselSpeed: state.formData.dieselSpeed, //鏌存补鏈鸿浆閫�
+      MotorFrequence: state.formData.motorFrequence, //鐢垫満璧吂
+      FirePumpType: state.formData.firePumpType, //娑堥槻娉电被鍨�
+      Temperature: state.formData.jzTemperature, //娓╁害
+      MinEta: state.formData.MinEta, //鏁堢巼瑕佹眰
+      MotorStandard: state.formData.motorStd, //鐢垫満鍔熺巼鏍囧噯
+      MotorPower: state.formData.motorPower, //鐢垫満鍔熺巼
+      NPSHa: state.formData.NPSHa, //姘旇殌
+      SeriesSelectMethod: SelMethod, //0 鐢ㄧ殑鏄� CatalogID   1 鐢ㄧ殑鏄疭eriesID      2 琛屼笟
+      SeriesID: SelSeriesIDs.join(","), //娉电郴鍒桰D 鏆傛椂榛樿涓虹┖
+      CatalogID: SelCatalogIDs.join(","), //娉电被鍨媔d
+    },
+    //璁捐鐐瑰弬鏁�
+    DesignInfo: {
+      UnitQ: state.formData.DpQu, //娴侀噺鍗曚綅
+      UnitH: state.formData.DpHu, //鎵▼鍗曚綅
+      DpQ: state.formData.DpQ, //杈撳叆鐨勬祦閲忕殑鍊�
+      DpH: state.formData.DpH, //杈撳叆鐨勬壃绋嬬殑鍊�
+      IsAllowCut: state.formData.IsAllowCut, //鏄惁鍏佽鍒囧壊
+      IsAllowFrequence: state.formData.IsAllowFrequence, //鏄惁鍏佽鍙橀
+      ToleranceStand: state.formData.ToleranceStand,
+      PointTolerance: {
+        ToleranceGrade: state.formData.PointTolerance.ToleranceGrade, //瀹瑰樊绛夌骇鐨勫��
+        RatioMinQ: parseFloat(
+          parseInt(state.formData.PointTolerance.RatioMinQ * 10) / 1000
+        ).toFixed(2),
+        RatioMaxQ: parseFloat(
+          parseInt(state.formData.PointTolerance.RatioMaxQ * 10) / 1000
+        ).toFixed(2),
+        RatioMinH: parseFloat(
+          parseInt(state.formData.PointTolerance.RatioMinH * 10) / 1000
+        ).toFixed(2),
+        RatioMaxH: parseFloat(
+          parseInt(state.formData.PointTolerance.RatioMaxH * 10) / 1000
+        ).toFixed(2),
+      },
+      IsVisCorrect: isVisCorrect,
+    },
+  };
+
+  //灏嗙瓫閫夋暟鎹瓨鍌ㄥ埌缂撳瓨涓�
+  selectStore.setByParas({
+    selectParas: post_data,
+  });
+};
+</script>
+<style lang="scss">
+.is-homepage {
+  width: 100%;
+  height: 100%;
+  margin: 0;
+  padding: 0;
+  background-attachment: fixed;
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  color: #fefefe;
+  font-weight: normal;
+  line-height: 1.5;
+
+  a {
+    color: #0c3471;
+    line-height: inherit;
+  }
+
+  .o-site-main {
+    padding-top: 0.24rem;
+  }
+
+  .large-2 {
+    flex: 0 0 16.6666666667%;
+    max-width: 16.6666666667%;
+  }
+
+  .columns {
+    padding: 0 0.15rem;
+  }
+
+  .tabs {
+    margin: 0;
+    list-style-type: none;
+    background: transparent;
+    border: 0.01rem solid transparent;
+  }
+
+  ul,
+  ol,
+  dl {
+    line-height: 1.5;
+    list-style-position: outside;
+  }
+
+  div,
+  dl,
+  dt,
+  dd,
+  ul,
+  ol,
+  li,
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6,
+  pre,
+  form,
+  p,
+  blockquote,
+  th,
+  td {
+    margin: 0;
+    padding: 0;
+  }
+
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    font-weight: normal;
+    font-style: normal;
+    color: inherit;
+    text-rendering: optimizeLegibility;
+    margin-top: 0;
+    margin-bottom: 0.08rem;
+    line-height: 1.4;
+  }
+
+  button,
+  input,
+  optgroup,
+  select,
+  textarea {
+    color: inherit;
+    font: inherit;
+    margin: 0;
+  }
+
+  .tabs::after {
+    clear: both;
+  }
+
+  .tabs::before,
+  .tabs::after {
+    content: " ";
+    display: table;
+    flex-basis: 0;
+    order: 1;
+  }
+
+  .tabs.vertical > li {
+    width: auto;
+    float: none;
+    display: block;
+  }
+
+  .c-sidebar__item {
+    margin-bottom: 0.08rem;
+  }
+
+  li {
+    font-size: inherit;
+  }
+
+  a {
+    color: #0c3471;
+    text-decoration: none;
+    line-height: inherit;
+    cursor: pointer;
+  }
+
+  p {
+    font-size: inherit;
+    line-height: 1.5;
+    margin-bottom: 0.16rem;
+    text-rendering: optimizeLegibility;
+  }
+
+  .el-radio-button__orig-radio:checked + .el-radio-button__inner {
+    background-color: #0c3471;
+    border-color: #0c3471;
+  }
+
+  .el-radio-button:first-child .el-radio-button__inner {
+    border-top-left-radius: 0.04rem;
+    border-bottom-left-radius: 0.04rem;
+  }
+
+  .el-radio-button:last-child .el-radio-button__inner {
+    border-top-right-radius: 0.04rem;
+    border-bottom-right-radius: 0.04rem;
+  }
+
+  .tabs-title > a {
+    display: block;
+    padding: 0.2rem 0.24rem;
+    line-height: 1;
+    font-size: 0.12rem;
+  }
+
+  .c-sidebar__item > .c-sidebar__link {
+    border-radius: 0.03rem;
+    color: #16181a;
+    font-size: 0.16rem;
+    padding: 0.08rem 0.16rem;
+    transition: background 150ms, color 150ms;
+  }
+
+  .c-sidebar__divider {
+    border-top: 0.01rem solid #91a1aa;
+    margin-bottom: 0.12rem;
+  }
+
+  .is-homepage .c-sidebar__item > .c-sidebar__link:hover,
+  .is-homepage .c-sidebar__item > .c-sidebar__link:focus {
+    color: #40464c;
+  }
+
+  .c-sidebar__item > .c-sidebar__link:hover,
+  .c-sidebar__item > .c-sidebar__link:focus {
+    background: #ced5d9;
+    color: #40464c;
+  }
+
+  .is-homepage .c-sidebar__item > .c-sidebar__link {
+    color: #fefefe;
+  }
+
+  .c-sidebar__item.is-active > .c-sidebar__link {
+    color: #0c3471;
+    font-weight: 700;
+  }
+
+  .row .row {
+    max-width: none;
+  }
+
+  .row {
+    display: flex;
+    flex-flow: row wrap;
+  }
+
+  .large-6 {
+    flex: 0 0 50%;
+    max-width: 50%;
+  }
+
+  .column,
+  .columns {
+    padding-left: 0.08rem;
+    padding-right: 0.08rem;
+  }
+
+  .align-middle {
+    align-items: center;
+  }
+
+  .align-justify {
+    justify-content: space-between;
+  }
+
+  .column,
+  .columns {
+    flex: 1 1 0rem;
+    min-width: initial;
+  }
+
+  .c-card {
+    margin: 0 0 0.16rem 0;
+    padding: 0.16rem;
+    border-radius: 0.03rem;
+    position: relative;
+    color: #16181a;
+    background: #fefefe;
+    border: 0.01rem solid #dbe0e3;
+    box-shadow: 0 0.01rem 0.03rem rgba(145, 161, 170, 0.25);
+  }
+
+  .c-card > :last-child {
+    margin-bottom: 0;
+  }
+
+  .c-card > :first-child {
+    margin-top: 0;
+  }
+
+  label {
+    display: block;
+    margin: 0;
+    font-size: 0.16rem;
+    font-weight: normal;
+    line-height: 1.5;
+    color: #16181a;
+    text-align: left;
+  }
+
+  .o-input-select-combo {
+    display: flex;
+  }
+
+  input {
+    line-height: normal;
+  }
+
+  input[disabled],
+  input:disabled {
+    cursor: not-allowed;
+    background-color: #f1f2f3;
+  }
+
+  select[disabled],
+  select:disabled {
+    cursor: not-allowed;
+    background: #fefefe;
+  }
+
+  [type="submit"],
+  [type="button"] {
+    border-radius: 0.03rem;
+  }
+
+  [type="text"],
+  [type="password"],
+  [type="date"],
+  [type="datetime"],
+  [type="datetime-local"],
+  [type="month"],
+  [type="week"],
+  [type="email"],
+  [type="number"],
+  [type="search"],
+  [type="tel"],
+  [type="time"],
+  [type="url"],
+  [type="color"],
+  textarea {
+    display: block;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%;
+    height: 0.39rem;
+    padding: 0.08rem;
+    border: 0.01rem solid #91a1aa;
+    margin: 0 0 0.16rem;
+    font-family: inherit;
+    font-size: 0.16rem;
+    color: #16181a;
+    background-color: #fefefe;
+    box-shadow: inset 0 0.01rem 0.02rem rgba(22, 24, 26, 0.1);
+    border-radius: 0.03rem;
+    -webkit-transition: box-shadow 150ms, border-color 150ms ease-in-out;
+    transition: box-shadow 150ms, border-color 150ms ease-in-out;
+  }
+
+  .o-input-select-combo > * {
+    min-width: 0rem;
+  }
+
+  .c-input-select-combo--left {
+    border-radius: 0.03rem 0 0 0.03rem;
+  }
+
+  button,
+  select {
+    text-transform: none;
+  }
+
+  select {
+    width: 100%;
+    border-radius: 0.03rem;
+  }
+
+  select {
+    height: 0.39rem;
+    padding: 0.08rem;
+    border: 0.01rem solid #91a1aa;
+    margin: 0 0 0.16rem;
+    font-size: 0.16rem;
+    font-family: inherit;
+    line-height: normal;
+    color: #16181a;
+    background-color: #fefefe;
+    border-radius: 0.03rem;
+    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%2851, 51, 51%29'></polygon></svg>");
+    background-size: 0.09rem 0.06rem;
+    background-position: right -0.16rem center;
+    background-origin: content-box;
+    background-repeat: no-repeat;
+    padding-right: 0.24rem;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    cursor: pointer;
+  }
+
+  input[type="checkbox"],
+  input[type="radio"] {
+    box-sizing: border-box;
+    padding: 0;
+  }
+
+  .o-input-select-combo > * {
+    min-width: 0rem;
+  }
+
+  .c-input-select-combo--right {
+    border-radius: 0 0.03rem 0.03rem 0;
+  }
+
+  .u-pointer,
+  .u-cursor-pointer {
+    cursor: pointer !important;
+  }
+
+  .u-no-wrap {
+    white-space: nowrap !important;
+  }
+
+  .lead {
+    font-size: 125%;
+    line-height: 1.6;
+  }
+
+  .text-center {
+    text-align: center;
+  }
+
+  .switch {
+    margin-bottom: 0.16rem;
+    outline: 0;
+    position: relative;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    color: #fefefe;
+    font-weight: bold;
+    font-size: 0.14rem;
+  }
+
+  .button {
+    display: inline-block;
+    text-align: center;
+    line-height: 1;
+    cursor: pointer;
+    transition: background-color 0.25s ease-out, color 0.25s ease-out;
+    vertical-align: middle;
+    border: 0.01rem solid transparent;
+    border-radius: 0.03rem;
+    padding: 0.136rem 0.16rem;
+    margin: 0 0 0.16rem 0;
+    font-size: 0.16rem;
+    background-color: #0c3471;
+    color: #fff;
+  }
+
+  .button.grey {
+    background-color: #91a1aa;
+    color: #000;
+  }
+
+  input {
+    line-height: normal;
+  }
+
+  input:checked ~ .switch-paddle {
+    background: #0c3471;
+  }
+
+  [type="file"],
+  [type="checkbox"],
+  [type="radio"] {
+    margin: 0 0 0.16rem;
+  }
+
+  .switch-input {
+    opacity: 0;
+    position: absolute;
+  }
+
+  input[type="checkbox"],
+  input[type="radio"] {
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0;
+  }
+
+  [type="checkbox"] + label,
+  [type="radio"] + label {
+    display: inline-block;
+    margin-left: 0.08rem;
+    margin-right: 0.16rem;
+    margin-bottom: 0;
+    vertical-align: baseline;
+  }
+
+  [type="checkbox"] + label[for],
+  [type="radio"] + label[for] {
+    cursor: pointer;
+  }
+
+  .switch-paddle {
+    background: #dbe0e3;
+    cursor: pointer;
+    display: block;
+    position: relative;
+    width: 0.64rem;
+    height: 0.32rem;
+    -webkit-transition: all 0.25s ease-out;
+    transition: all 0.25s ease-out;
+    border-radius: 0.03rem;
+    color: inherit;
+    font-weight: inherit;
+  }
+
+  .switch-paddle::after {
+    background: #fefefe;
+    content: "";
+    display: block;
+    position: absolute;
+    height: 0.24rem;
+    left: 0.04rem;
+    top: 0.04rem;
+    width: 0.24rem;
+    -webkit-transition: all 0.25s ease-out;
+    transition: all 0.25s ease-out;
+    -webkit-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    border-radius: 0.03rem;
+  }
+
+  .switch.tiny .switch-paddle {
+    width: 0.48rem;
+    height: 0.24rem;
+    font-size: 0.1rem;
+  }
+
+  .switch.tiny input:checked ~ .switch-paddle::after {
+    left: 0.28rem;
+  }
+
+  .switch.tiny .switch-paddle::after {
+    width: 0.16rem;
+    height: 0.16rem;
+  }
+
+  input + .switch-paddle {
+    margin: 0;
+  }
+
+  .callout {
+    margin: 0 0 0.16rem 0;
+    padding: 0.16rem;
+    border: none;
+    border-radius: 0.03rem;
+    position: relative;
+    color: #16181a;
+    background-color: #fefefe;
+  }
+
+  .callout.grey {
+    background-color: #91a1aa;
+  }
+
+  .callout > :first-child {
+    margin-top: 0;
+  }
+
+  .shrink {
+    flex: 0 0 auto;
+    max-width: 100%;
+  }
+
+  .align-top {
+    align-items: flex-start;
+  }
+
+  .menu {
+    margin: 0;
+    list-style-type: none;
+    width: 100%;
+    display: flex;
+    flex-wrap: nowrap;
+    align-items: center;
+    flex-wrap: nowrap;
+  }
+
+  .menu > li {
+    flex: 0 0 auto;
+  }
+
+  .menu > li > a {
+    flex-flow: row nowrap;
+  }
+
+  .menu > li > a {
+    display: flex;
+  }
+
+  .menu > li > a {
+    display: block;
+    padding: 0.08rem 0.16rem;
+    line-height: 1;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .shrink {
+    flex: 0 0 auto;
+    max-width: 100%;
+  }
+
+  .text-right {
+    text-align: right;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .button,
+  .button:hover,
+  .button:focus {
+    color: #fff;
+  }
+
+  .button.micro {
+    font-size: 0.12rem;
+    padding: 0.02rem 0.08rem;
+  }
+
+  .u-no-margin {
+    margin: 0 !important;
+  }
+
+  .c-product-line-select {
+    border: 0.01rem solid #ddd;
+    border-radius: 0.03rem;
+    color: #555;
+    margin-top: 0.08rem;
+    overflow: hidden;
+  }
+
+  .c-product-line-select.is-selected {
+    background-color: #efefef;
+    border-color: currentColor;
+    color: black;
+  }
+
+  .c-product-line-select__overview {
+    display: flex;
+  }
+
+  .c-product-line-select__select-button,
+  .c-product-line-select__summary-button {
+    background: 0;
+    border: 0;
+    border-radius: 0;
+    color: currentColor;
+    font-size: calc(0.5vw + 0.16rem);
+  }
+
+  .c-product-line-select__select-button {
+    display: flex;
+    align-items: center;
+    flex-grow: 1;
+    padding: 0;
+    text-align: left;
+  }
+
+  .c-product-line-select__select-icon {
+    display: block;
+    flex: none;
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__name {
+    flex-grow: 1;
+    font-size: calc(0.5vw + 0.12rem);
+    padding: 0.16rem 0 0.16rem 0.32rem;
+  }
+
+  .c-product-line-select__select-icon::before {
+    content: "\f096";
+  }
+
+  .c-product-line-select.is-selected
+    .c-product-line-select__select-icon::before {
+    color: currentColor;
+    content: "\f046";
+    opacity: 1;
+  }
+
+  .c-product-line-select__select-button:hover
+    .c-product-line-select__select-icon::before {
+    content: "\f046";
+    opacity: 0.5;
+  }
+
+  .c-product-line-select__image {
+    display: block;
+    flex: none;
+    max-width: -webkit-calc(4vw + 6.4rem);
+    max-width: calc(4vw + 6.4rem);
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__summary-button {
+    background-color: #ddd;
+    color: currentColor;
+    flex: none;
+    padding: 0 0.12rem;
+  }
+
+  .c-product-line-select__summary {
+    background-color: #ddd;
+    color: black;
+    padding: 0.16rem;
+    text-align: left;
+  }
+
+  .u-no-margin {
+    margin: 0 !important;
+  }
+
+  .hide {
+    display: none !important;
+  }
+
+  .is-homepage .el-input.is-active .el-input__inner,
+  .el-input__inner:focus {
+    border-color: #000;
+    border-width: 2px;
+  }
+
+  .is-homepage .el-input--suffix .el-input__inner {
+    text-align: left;
+  }
+
+  .is-homepage .el-input__suffix {
+    right: 0;
+    top: -5px;
+    color: #000;
+  }
+
+  .jiezhipopoverstyle {
+    margin-top: 0px !important;
+  }
+
+  .jz-select-div {
+    .el-input__wrapper {
+      box-shadow: none;
+    }
+
+    .el-input__wrapper.is-focus {
+      box-shadow: none;
+    }
+  }
+}
+
+*,
+*::before,
+*::after {
+  -moz-box-sizing: inherit;
+  box-sizing: inherit;
+}
+</style>
diff --git a/src/views/SPump/Select/ByPara2/components/selPumpCatalog.vue b/src/views/SPump/Select/ByPara2/components/selPumpCatalog.vue
new file mode 100644
index 0000000..1b62613
--- /dev/null
+++ b/src/views/SPump/Select/ByPara2/components/selPumpCatalog.vue
@@ -0,0 +1,709 @@
+<template>
+  <div class="productCatalog">
+    <div id="productLines" style="height: 100%; position: relative; overflow: auto">
+      <div class="sticky-container" style="height: 0.55rem">
+        <div style="width: 100%; max-width: 5.36rem; margin-top: 0rem; top: 0rem; bottom: auto;"
+          class="sticky is-anchored is-at-top">
+          <div id="productlinePicker">
+            <div class="row">
+              <div class="columns">
+                <ul class="menu head-tool-style">
+                  <li @click="clickSelAllSeries" style="margin-right: 0.05rem;height: unset;">
+                    <a style="display: flex; justify-content: center; align-items: center;">
+                      <input type="checkbox" :checked="state.m_isSelectAll">
+                      <span style="font-size: 16px;margin-left: 5px;">
+                        {{ state.m_isSelectAll ? t("selectPage.reselect.TR") : t("selectPage.selectAll.TR") }}
+                      </span>
+                    </a>
+                  </li>
+                  <li class="select-type-style">
+                    <el-radio-group v-model="state.m_selSeriesMethod.current" size="small"
+                      @change="changeSelSeriesMethod">
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byCatalog.isDisable"
+                        v-if="state.m_selSeriesMethod.byCatalog.isVisible" :label="0">{{ t("selectPage.byType.TR")
+                        }}</el-radio-button>
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byHY.isDisable"
+                        v-if="state.m_selSeriesMethod.byHY.isVisible" :label="1">{{ t("selectPage.byIndustry.TR")
+                        }}</el-radio-button>
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byMedia.isDisable"
+                        v-if="state.m_selSeriesMethod.byMedia.isVisible" :label="2">{{ t("selectPage.byMedia.TR")
+                        }}</el-radio-button>
+                    </el-radio-group>
+                  </li>
+                </ul>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!-- 鎸夌被鍨嬪垪琛� -->
+      <div style="height: calc(100% - 0.55rem); overflow: auto" v-show="state.m_selSeriesMethod.current == 0">
+        <label v-if="state.m_ruleSelectStatus"
+          style="position: absolute; top: 0.3rem; font-size: 0.1rem; color: red">*{{
+            t("selectPage.seriesRule.TR") }}</label>
+        <div v-for="(catalog_item, catalog_index) in state.m_showCatalogList" :key="catalog_index"
+          class="c-product-line-select" :class="catalog_item.isSelected ? 'is-selected' : ''"
+          @click="clickCatalogItem(catalog_index)">
+          <div class="c-product-line-select__overview" style="height: 1.5rem">
+            <button type="button" class="c-product-line-select__select-button">
+              <span class="fa fa-fw c-product-line-select__select-icon"></span>
+              <span class="c-product-line-select__name">
+                {{ catalog_item.Name }}
+              </span>
+              <img alt="Product Line" :onerror="useDefaultImage" :src="catalog_item.ThumbnailImage"
+                style="height: 100%;" class="c-product-line-select__image" />
+            </button>
+            <button @click.stop="
+              catalog_item.isShowDetail = !catalog_item.isShowDetail
+              " type="button" class="c-product-line-select__summary-button">
+              <span class="fa fa-fw fa-info-circle"></span>
+            </button>
+          </div>
+          <div class="c-product-line-select__summary" :class="catalog_item.isShowDetail ? '' : 'hide'">
+            <p class="u-no-margin" style="white-space: pre-line;">{{ catalog_item.ShortDescription }}</p>
+          </div>
+        </div>
+      </div>
+      <!-- 琛屼笟鍒楄〃 -->
+      <div style="height: calc(100% - 0.55rem); overflow: auto" v-show="state.m_selSeriesMethod.current == 1">
+        <label v-if="state.m_ruleSelectStatus"
+          style="position: absolute; top: 0.3rem; font-size: 0.1rem; color: red">*{{
+            t("selectPage.seriesRule.TR") }}</label>
+        <div v-for="(hy_item, hy_index) in state.m_allHangYeList" :key="hy_index" class="c-product-line-select"
+          :class="hy_item.isSelected ? 'is-selected' : ''" @click="clickHangYeItem(hy_index)">
+          <div class="c-product-line-select__overview" style="height: 1.5rem">
+            <button type="button" class="c-product-line-select__select-button">
+              <span class="fa fa-fw c-product-line-select__select-icon"></span>
+              <span class="c-product-line-select__name">{{
+                hy_item.Name
+              }}</span>
+              <img alt="Product Line" :src="hy_item.ImageSrc"
+                style=" height: 1.2rem; width: 1.2rem; filter: drop-shadow(0.02rem 0.04rem 0.06rem black);"
+                class="c-product-line-select__image" />
+            </button>
+            <button @click.stop="hy_item.isShowDetail = !hy_item.isShowDetail" type="button"
+              class="c-product-line-select__summary-button">
+              <span class="fa fa-fw fa-info-circle"></span>
+            </button>
+          </div>
+          <div class="c-product-line-select__summary" :class="hy_item.isShowDetail ? '' : 'hide'">
+            <p class="u-no-margin">{{ hy_item.ShortDescription }}</p>
+          </div>
+        </div>
+      </div>
+      <!-- 鎸変粙璐ㄥ垎绫� -->
+      <div style="height: calc(100% - 0.55rem); overflow: auto" v-if="state.m_selSeriesMethod.current == 2">
+        <label v-if="state.m_ruleSelectJZ" style="position: absolute; top: 0.3rem; font-size: 0.1rem; color: red">*{{
+          t("selectPage.jiezhiRule.TR") }}</label>
+        <div v-for="(jz_item, jz_index) in state.m_allJieZhiList" :key="jz_index" class="c-product-line-select"
+          :class="jz_item.isSelected ? 'is-selected' : ''" @click="clickJieZhiItem(jz_index)">
+          <div class="c-product-line-select__overview" style="height: 1.5rem">
+            <button type="button" class="c-product-line-select__select-button">
+              <span class="fa fa-fw c-product-line-select__select-icon"></span>
+              <span class="c-product-line-select__name">{{
+                jz_item.Name
+              }}</span>
+            </button>
+            <button @click.stop="jz_item.isShowDetail = !jz_item.isShowDetail" type="button"
+              class="c-product-line-select__summary-button">
+              <span class="fa fa-fw fa-info-circle"></span>
+            </button>
+          </div>
+          <div class="c-product-line-select__summary" :class="jz_item.isShowDetail ? '' : 'hide'">
+            <p class="u-no-margin">{{ jz_item.ShortDescription }}</p>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup name="selPumpCatalog">
+import { reactive } from "vue";
+import { ElRadioGroup, ElRadioButton, ElCheckbox } from 'element-plus';
+import { useSelect } from '/@/store/select.js';
+import ConstParas from "/@/utils/constParas";
+import Utils from "/@/utils/utils";
+import SelectByCorpFlag from "/@/utils/selectByCorpFlag";
+import defaultImgUrl from '/@/views/assets/img_fail.png';
+import { useI18n } from 'vue-i18n';
+import noneImg from '/@/views/assets/none_img.png'
+const { t } = useI18n()
+const selectStore = useSelect()
+let state = reactive({
+  m_currentCorpFlag: window.globalConfig.CorpInfo.CorpFlag,
+  m_selSeriesMethod: {
+    current: 0, //0 绫诲瀷
+    byCatalog: {
+      isDisable: true,
+      isVisible: false,
+    },
+    byHY: {
+      isDisable: true,
+      isVisible: false,
+    },
+    byMedia: {
+      isDisable: true,
+      isVisible: false,
+    },
+  },
+  m_isSelectAll: false, //鏄惁鍏ㄩ�� 榛樿鍏ㄩ��
+
+  // m_selSeriesMethod: 1, //鍒嗙被閫夋嫨
+  selCatalogIDs: [],//褰撳墠閫変腑鐨勭被鍨婭D
+
+  m_allCatalogList: [], //绫诲瀷鍒楄〃婧愭暟鎹�
+  m_showCatalogList: [],//鐢ㄤ簬鏄剧ず鐨勭被鍨嬪垪琛�
+  m_allSeriesList: [], //鎵�鏈夌殑绯诲垪
+
+  m_allHangYeList: [], //鎵�鏈夌殑琛屼笟鍒楄〃
+
+  m_ruleSelectStatus: false, //鍒ゆ柇鏄惁閫夋嫨浜嗙郴鍒�
+  m_ruleSelectHY: false, //鍒ゆ柇鏄惁閫夋嫨浜嗚涓�
+  m_ruleSelectJZ: false, //鍒ゆ柇鏄惁閫夋嫨浜嗕粙璐�
+})
+
+//鍒濆鍖栦骇鍝佺郴鍒楁暟鎹�
+const initData = (all_catalog, all_series, currentLanguageType, seriesApplicationData) => {
+
+  if (all_catalog == null || all_catalog.length == 0) return;
+  state.m_allSeriesList = all_series;
+  state.m_allCatalogList = all_catalog
+  initDataFromHistory();
+
+  if (seriesApplicationData && typeof seriesAppData == 'object') {
+    //鏋勫缓琛屼笟鍒楄〃
+    buildHangYeList(currentLanguageType, seriesApplicationData);
+    //鏋勫缓浠嬭川鍒楄〃
+    buildJieZhiList(currentLanguageType, seriesApplicationData);
+  }
+}
+//鏋勫缓琛屼笟鍒楄〃鏁版嵁
+const buildHangYeList = (currentLanguageType, seriesApplicationData) => {
+  let seriesAppData = JSON.parse(JSON.stringify(seriesApplicationData))
+  let hangYeList = seriesAppData.HangYe.List;
+  if (hangYeList == null || hangYeList.length == 0) {
+    state.m_allHangYeList = [];
+  }
+  state.m_selSeriesMethod.byCatalog.isDisable = false;
+  state.m_selSeriesMethod.byCatalog.isVisible = true;
+  state.m_selSeriesMethod.byHY.isDisable = false;
+  state.m_selSeriesMethod.byHY.isVisible = true;
+
+  //  console.log(hangYeList,60)
+  let list = [];
+  if (currentLanguageType == 0) {
+    hangYeList.forEach((element, index) => {
+      let itemObj = {
+        HID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameCN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionCN,
+        ImageSrc: "static/img/HangYe/" + element.ImageName + "/ffffffx128.png",
+      };
+      list.push(itemObj);
+    });
+  }
+  else {
+    hangYeList.forEach((element, index) => {
+      let itemObj = {
+        HID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameEN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionEN,
+        ImageSrc: "static/img/HangYe/" + element.ImageName + "/ffffffx128.png",
+      };
+      list.push(itemObj);
+    });
+  }
+  state.m_allHangYeList = list;
+  // console.log(this.m_HangYeList,93)
+}
+//鏋勫缓浠嬭川鍒楄〃
+const buildJieZhiList = (langType, seriesApplicationData) => {
+  if (
+    seriesApplicationData.JieZhiParas == "undefind" ||
+    seriesApplicationData.JieZhiParas == null
+  ) {
+    seriesApplicationData.JieZhiParas = {};
+  }
+  let jieZhiList = seriesApplicationData.JieZhiParas.List;
+  if (jieZhiList == null || jieZhiList.length == 0) {
+    state.m_allJieZhiList = [];
+    return
+  }
+
+  state.m_selSeriesMethod.byCatalog.isDisable = false;
+  state.m_selSeriesMethod.byCatalog.isVisible = true;
+  state.m_selSeriesMethod.byMedia.isDisable = false;
+  state.m_selSeriesMethod.byMedia.isVisible = true;
+
+  let list = [];
+  if (langType == 0) {
+    jieZhiList.forEach((element, index) => {
+      let itemObj = {
+        ID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameCN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionCN,
+      };
+      if (element.ImageName) {
+        itemObj.ImageSrc =
+          "static/img/HangYe/" + element.ImageName + "/ffffffx128.png";
+      } else {
+        itemObj.ImageSrc = "";
+      }
+      list.push(itemObj);
+    });
+  }
+  else {
+    jieZhiList.forEach((element, index) => {
+      let itemObj = {
+        ID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameEN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionCN,
+      };
+      if (element.ImageName) {
+        itemObj.ImageSrc =
+          "static/img/HangYe/" + element.ImageName + "/ffffffx128.png";
+      } else {
+        itemObj.ImageSrc = "";
+      }
+      list.push(itemObj);
+    });
+  }
+  state.m_allJieZhiList = list;
+}
+const initDataFromHistory = () => {
+  //鑾峰彇涓婃鐨勮〃鍗曞~鍐欒褰�
+  let historyFormData = selectStore.ByParas.selectParas;
+  let corpSelectDataByFlag = SelectByCorpFlag.getData(state.m_currentCorpFlag)
+  if (historyFormData == null || historyFormData.FilterInfo == null) {
+    return;
+  }
+  if (corpSelectDataByFlag.CatalogID == "" || corpSelectDataByFlag.CatalogID.length == 0) {
+    return
+  }
+  // 鍒ゆ柇鍘嗗彶閫夊瀷鏂瑰紡 鏄惁鏄寜琛屼笟 濡傛灉鏄垯涓嶈祴鍊煎巻鍙茬郴鍒梚d
+  state.m_selSeriesMethod.current = corpSelectDataByFlag.SelMethod
+  historyFormData.FilterInfo.CatalogID = corpSelectDataByFlag.CatalogID
+  var selCatalogIDs = historyFormData.FilterInfo.CatalogID;
+  state.selCatalogIDs = selCatalogIDs
+}
+
+//绛涢�夌郴鍒楀垪琛�
+const filterSeriseList = (DriveType, MotorFrequece, FirePumpType) => {
+  //var FirePumpType = this.formData.firePumpType;
+  // return; //鏆傛椂涓嶈繃婊�
+  let showSeriesArr = [];
+  state.m_allSeriesList.forEach((item) => {
+    //鍒ゆ柇鏄惁鏄數鏈�
+    if (DriveType == ConstParas.DriveType.Motor) {
+      //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+      if (item.MotorFrequece == MotorFrequece && item.DriveType == DriveType) {
+        if (item.FirePumpStatus) {
+          if (item.FirePumpStatus.includes(Number(FirePumpType))) {
+            showSeriesArr.push(item);
+          }
+        } else {
+            showSeriesArr.push(item);
+        }
+      }
+    }
+    // 鏄惁鏄煷娌规満
+    else if (DriveType == ConstParas.DriveType.Diesel) {
+      //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+      if (item.DriveType == DriveType) {
+        if (item.FirePumpStatus) {
+          if (item.FirePumpStatus.includes(Number(FirePumpType))) {
+            showSeriesArr.push(item);
+          }
+        } else {
+            showSeriesArr.push(item);
+        }
+      }
+    }
+  });
+  let showCatalogList = []
+  state.m_allCatalogList.forEach((catalogItem, index) => {
+    let catalog_info = {
+      ID: catalogItem.ID,
+      Name: catalogItem.Name,
+      ShortDescription: "",
+      ThumbnailImage: "",
+      isSelected: false, //鏄惁琚�夋嫨
+      isShowDetail: false, //鏄惁灞曠ず璇︽儏
+      SeriesIDs: [],
+    };
+    for (let i = 0; i < showSeriesArr.length; i++) {
+      let seriesItem = showSeriesArr[i];
+      if (catalogItem.ID == seriesItem.CatalogID) {
+        if (catalog_info.ShortDescription == "" && seriesItem.ShortDescription != "") {
+          catalog_info.ShortDescription = seriesItem.ShortDescription.replace(/<br\/>/g, "\n");
+        }
+        let ThumbnailImage = noneImg
+        if (catalog_info.ThumbnailImage == "" && seriesItem.ThumbnailImage != "") {
+          // console.log(catalog_info.ThumbnailImage, seriesItem.ThumbnailImage,362)
+          ThumbnailImage = window.globalConfig.WebApiUrl.FileUrl + 'Data/' + seriesItem.ThumbnailImage;
+        }
+        catalog_info.ThumbnailImage = ThumbnailImage
+        catalog_info.SeriesIDs.push(seriesItem.ID);
+        break;
+      }
+    }
+    if (catalog_info.SeriesIDs.length > 0)
+      showCatalogList.push(catalog_info);
+  });
+  if (state.selCatalogIDs && state.selCatalogIDs.length > 0) {
+    showCatalogList.forEach((element) => {
+      if (state.selCatalogIDs.includes(element.ID)) {
+        element.isSelected = true;
+        state.m_isSelectAll = true
+      } else {
+        element.isSelected = false;
+        state.m_isSelectAll = false
+      }
+    });
+  }
+  state.m_showCatalogList = showCatalogList;
+}
+// 閲嶇疆鍙傛暟锛岀敤浜庡湪椹卞姩绫诲瀷鍒囨崲鏃跺�欎娇鐢�
+const resetData = () => {
+  state.selCatalogIDs = []
+  state.m_isSelectAll = false
+}
+//鏄惁鍏ㄩ��
+const clickSelAllSeries = () => {
+  state.m_isSelectAll = !state.m_isSelectAll;
+
+  if (state.m_selSeriesMethod.current == 0) {
+    if (state.m_isSelectAll) {
+      state.m_showCatalogList.forEach((item) => {
+        item.isSelected = true;
+      });
+      state.m_ruleSelectStatus = false;
+    } else {
+      state.m_showCatalogList.forEach((item) => {
+        item.isSelected = false;
+      });
+    }
+  }
+  if (state.m_selSeriesMethod.current == 1) {
+    if (state.m_isSelectAll) {
+      state.m_allHangYeList.forEach((item) => {
+        item.isSelected = true;
+      });
+      state.m_ruleSelectStatus = false;
+    } else {
+      state.m_allHangYeList.forEach((item) => {
+        item.isSelected = false;
+      });
+    }
+  }
+}
+
+//閫夋嫨绯诲垪
+const clickCatalogItem = (index) => {
+  state.m_showCatalogList[index].isSelected = !state.m_showCatalogList[index].isSelected;
+  var sel_ids = [];
+  state.m_isSelectAll = true;
+  state.m_showCatalogList.forEach((catalog_item) => {
+    if (catalog_item.isSelected) {
+      sel_ids.push(catalog_item.ID);
+    } else {
+      state.m_isSelectAll = false;
+    }
+  });
+  state.selCatalogIDs = sel_ids
+  if (sel_ids.length > 0) state.m_ruleSelectStatus = false;
+}
+//閫夋嫨琛屼笟
+const clickHangYeItem = (index) => {
+  state.m_ruleSelectStatus = false;
+  state.m_allHangYeList[index].isSelected =
+    !state.m_allHangYeList[index].isSelected;
+}
+//杩斿洖缁欎富椤甸潰 閫夋嫨鐨勭被鍨媔d銆佺郴鍒梚d鍜屽綋鍓嶇殑绯诲垪閫夋嫨鏂规硶 0琛ㄧず鎸夌被鍨�  1琛ㄧず鎸夎涓� 2琛ㄧず鎸変粙璐�
+const getSelectData = () => {
+  let sel_series_ids = [];
+  let sel_catalog_ids = []
+  if (state.m_selSeriesMethod.current == 0) {
+    state.m_showCatalogList.forEach((catalog) => {
+      if (catalog.isSelected) {
+        sel_catalog_ids.push(catalog.ID);
+      }
+    });
+
+    state.m_ruleSelectStatus = false;
+    if (sel_catalog_ids == null || sel_catalog_ids.length == 0) {
+      state.m_ruleSelectStatus = true;
+      return null;
+    }
+  }
+  if (state.m_selSeriesMethod.current == 1) {
+    state.m_allHangYeList.forEach((hy) => {
+      if (hy.isSelected) {
+        sel_series_ids.push(...hy.PumpSeriesID);
+      }
+    });
+    sel_catalog_ids = getFilterSeriseIdList(sel_catalog_ids);
+  }
+  let data = {
+    CorpFlag: state.m_currentCorpFlag,
+    SeriesID: Utils.uniqueInArray(sel_series_ids),
+    CatalogID: sel_catalog_ids,
+    SelMethod: state.m_selSeriesMethod.current
+  };
+  SelectByCorpFlag.saveData(state.m_currentCorpFlag, data)
+  return data;
+}
+//杩囨护鍙互閫夋嫨鐨勭郴鍒桰D(琛屼笟 , 浠嬭川鐢�)
+const getFilterSeriseIdList = (series_id_list) => {
+  if (series_id_list == null) return [];
+  var ava_id = [];
+  state.m_allSeriesList.forEach((item) => {
+    if (series_id_list.indexOf(item.ID) < 0) return true;
+    //鍒ゆ柇鏄惁鏄數鏈�
+    if (state.m_DriveType == ConstParas.DriveType.Motor) {
+      if (
+        item.MotorFrequece == state.m_MotorFrequence &&
+        item.DriveType == state.m_DriveType
+      ) {
+        ava_id.push(item.ID);
+      }
+    }
+    // 鏄惁鏄煷娌规満
+    else if (state.m_DriveType == ConstParas.DriveType.Diesel) {
+      if (item.m_DriveType == DriveType) {
+        ava_id.push(item.ID);
+      }
+    }
+  });
+
+  return ava_id;
+}
+//鐩戝惉绯诲垪绛涢�夐�夐」鍒囨崲鐨勫彉鍖� 榛樿鎸夎涓�
+const changeSelSeriesMethod = (val) => {
+  state.m_selSeriesMethod.current = val;
+}
+const useDefaultImage = (event) => {
+  event.target.src = defaultImgUrl;
+}
+
+defineExpose({
+  initData,
+  filterSeriseList,
+  getSelectData
+})
+</script>
+
+<style lang="scss">
+.productCatalog {
+  height: 100%;
+
+  .c-card {
+    margin: 0 0 0.16rem 0;
+    padding: 0.16rem;
+    border-radius: 0.03rem;
+    position: relative;
+    color: #16181a;
+    background: #fefefe;
+    border: 0.01rem solid #dbe0e3;
+    box-shadow: 0 0.01rem 0.03rem rgba(145, 161, 170, 0.25);
+  }
+
+  .c-card> :last-child {
+    margin-bottom: 0;
+  }
+
+  .c-card> :first-child {
+    margin-top: 0;
+  }
+
+  .row .row {
+    max-width: none;
+  }
+
+  .row {
+    display: flex;
+    flex-flow: row wrap;
+  }
+
+  .columns {
+    padding: 0 0.15rem;
+  }
+
+  .column,
+  .columns {
+    padding-left: 0.08rem;
+    padding-right: 0.08rem;
+  }
+
+  .column,
+  .columns {
+    flex: 1 1 0rem;
+    min-width: initial;
+  }
+
+  .menu {
+    margin: 0;
+    list-style-type: none;
+    width: 100%;
+    display: flex;
+    flex-wrap: nowrap;
+    align-items: center;
+    flex-wrap: nowrap;
+  }
+
+  .menu>li {
+    flex: 0 0 auto;
+  }
+
+  .menu>li>a {
+    flex-flow: row nowrap;
+  }
+
+  .menu>li>a {
+    display: flex;
+  }
+
+  .menu>li>a {
+    display: block;
+    padding: 0.08rem 0rem;
+    line-height: 1;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .shrink {
+    flex: 0 0 auto;
+    max-width: 100%;
+  }
+
+  .text-right {
+    text-align: right;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .c-product-line-select {
+    border: 0.01rem solid #ddd;
+    border-radius: 0.03rem;
+    color: #555;
+    margin-top: 0.08rem;
+    overflow: hidden;
+  }
+
+  .c-product-line-select.is-selected {
+    background-color: #efefef;
+    border-color: currentColor;
+    color: black;
+  }
+
+  .c-product-line-select__overview {
+    display: flex;
+  }
+
+  .c-product-line-select__select-button,
+  .c-product-line-select__summary-button {
+    background: 0;
+    border: 0;
+    border-radius: 0;
+    color: currentColor;
+    font-size: calc(0.5vw + 0.16rem);
+  }
+
+  .c-product-line-select__select-button {
+    display: flex;
+    align-items: center;
+    flex-grow: 1;
+    padding: 0;
+    text-align: left;
+  }
+
+  .c-product-line-select__select-icon {
+    display: block;
+    flex: none;
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__name {
+    flex-grow: 1;
+    font-size: calc(0.5vw + 0.12rem);
+    padding: 0.16rem 0 0.16rem 0.32rem;
+  }
+
+  .c-product-line-select__select-icon::before {
+    content: "\f096";
+  }
+
+  .c-product-line-select.is-selected .c-product-line-select__select-icon::before {
+    color: currentColor;
+    content: "\f046";
+    opacity: 1;
+  }
+
+  .c-product-line-select__select-button:hover .c-product-line-select__select-icon::before {
+    content: "\f046";
+    opacity: 0.5;
+  }
+
+  .c-product-line-select__image {
+    display: block;
+    flex: none;
+    max-width: -webkit-calc(4vw + 6.4rem);
+    max-width: calc(4vw + 6.4rem);
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__summary-button {
+    background-color: #ddd;
+    color: currentColor;
+    flex: none;
+    padding: 0 0.12rem;
+  }
+
+  .c-product-line-select__summary {
+    background-color: #ddd;
+    color: black;
+    padding: 0.16rem;
+    text-align: left;
+  }
+
+  .u-no-margin {
+    margin: 0 !important;
+  }
+
+  .hide {
+    display: none !important;
+  }
+
+  .head-tool-style li.active,
+  li:hover {
+    background-color: unset;
+  }
+
+  .select-type-style {
+    label {
+      display: unset;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/SPump/Select/ByPara2/components/selPumpSeries.vue b/src/views/SPump/Select/ByPara2/components/selPumpSeries.vue
new file mode 100644
index 0000000..9af7cad
--- /dev/null
+++ b/src/views/SPump/Select/ByPara2/components/selPumpSeries.vue
@@ -0,0 +1,934 @@
+<template>
+  <div class="productSeries">
+    <div id="productLines" style="height: 100%; position: relative; overflow: auto">
+      <div class="sticky-container" style="height: 0.55rem">
+        <div style=" width: 100%; max-width: 5.36rem; margin-top: 0rem; top: 0rem; bottom: auto; "
+          class="sticky is-anchored is-at-top">
+          <div id="productlinePicker">
+            <div class="row">
+              <div class="columns">
+                <ul class="menu head-tool-style">
+                  <li style="margin-right: 0.05rem;height: unset;">
+                    <el-checkbox class="select_all_style" v-model="state.m_isSelectAllSeries"
+                      @change="clickSelAllSeries" v-if="state.m_selSeriesMethod.current == 0"><span>
+                        {{ state.m_isSelectAllSeries ? t("selectPage.reselect.TR") : t("selectPage.selectAll.TR") }}
+                      </span>
+                    </el-checkbox>
+                  </li>
+                  <li class="select-type-style">
+                    <el-radio-group v-model="state.m_selSeriesMethod.current" size="small"
+                      @change="changeSelSeriesMethod">
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byCatalog.isDisable"
+                        v-if="state.m_selSeriesMethod.byCatalog.isVisible" :value="0">{{ t("selectPage.byType.TR")
+                        }}</el-radio-button>
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byHY.isDisable"
+                        v-if="state.m_selSeriesMethod.byHY.isVisible" :value="1">{{ t("selectPage.byIndustry.TR")
+                        }}</el-radio-button>
+                      <el-radio-button :disabled="state.m_selSeriesMethod.byMedia.isDisable"
+                        v-if="state.m_selSeriesMethod.byMedia.isVisible" :value="2">{{ t("selectPage.byMedia.TR")
+                        }}</el-radio-button>
+                    </el-radio-group>
+                  </li>
+                </ul>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!-- 鎸夌被鍨嬩笅鎷� -->
+      <div class="row" id="prod_line_filters" v-show="state.m_selSeriesMethod.current == 0">
+        <div class="shrink columns" style="display: flex; align-items: center">
+          <label class="c-form-label" style="width: 0.65rem; margin-bottom: 0.16rem" for="comboxCatalog">{{
+            t("selectPage.type.TR") }}:</label>
+          <select name="comboxCatalog" class="small" v-model="state.m_selCatalogID" @change="changeCatalog">
+            <option v-for="item in state.m_allCatalogList" :key="item.ID" :value="item.ID">
+              {{ item.Name }}
+            </option>
+          </select>
+        </div>
+      </div>
+      <!-- 鎸夌被鍨嬪垎绫� -->
+      <div style="height: calc(100% - 1.1rem); overflow: auto" v-if="state.m_selSeriesMethod.current == 0">
+        <label v-if="state.m_ruleSelectStatus" style="position: absolute; top: 1rem; font-size: 0.1rem; color: red">*{{
+          t("selectPage.seriesRule.TR") }}</label>
+        <div class="c-product-line-select" v-for="(series_item, series_index) in state.m_allDispSeriesList"
+          :key="series_index" :class="series_item.isSelected ? 'is-selected' : ''" style="position: relative">
+          <div @click="clickSeriesItem(series_index)">
+            <div class="c-product-line-select__overview" style="height: 1.5rem">
+              <button type="button" class="c-product-line-select__select-button" style="flex-grow: 1;">
+                <span class="fa fa-fw c-product-line-select__select-icon"></span>
+                <span class="c-product-line-select__name"
+                  style="max-width: 2.19rem;display: inline-block; word-wrap: break-word;">
+                  {{ series_item.Name }}
+                </span>
+                <img alt="Product Line" :onerror="useDefaultImage" :src="series_item.ThumbnailImage"
+                  class="c-product-line-select__image" style="height: 100%;" />
+              </button>
+              <button @click.stop="series_item.isShowDetail = !series_item.isShowDetail" type="button"
+                class="c-product-line-select__summary-button">
+                <span class="fa fa-fw fa-info-circle"></span>
+              </button>
+            </div>
+            <div class="c-product-line-select__summary" :class="series_item.isShowDetail ? '' : 'hide'">
+              <p class="u-no-margin" style="white-space: pre-line;">{{ series_item.ShortDescription }}</p>
+            </div>
+          </div>
+          <div v-show="!series_item.isSelectEnable" class="unclick-mask">
+            <div class="error_tip">{{ series_item.errorTips }}</div>
+          </div>
+        </div>
+      </div>
+      <!-- 鎸夎涓氬垎绫� -->
+      <div style="height: calc(100% - 0.55rem); overflow: auto" v-if="state.m_selSeriesMethod.current == 1">
+        <label v-if="state.m_ruleSelectHY" style="position: absolute; top: 0.3rem; font-size: 0.1rem; color: red">*{{
+          $t("selectPage.hangyeRule.TR") }}</label>
+        <div v-for="(hy_item, hy_index) in state.m_allHangYeList" :key="hy_index" class="c-product-line-select"
+          :class="hy_item.isSelected ? 'is-selected' : ''" @click="clickHangYeItem(hy_index)">
+          <div class="c-product-line-select__overview" style="height: 1.5rem">
+            <button type="button" class="c-product-line-select__select-button">
+              <span class="fa fa-fw c-product-line-select__select-icon"></span>
+              <span class="c-product-line-select__name">{{
+                hy_item.Name
+              }}</span>
+              <img alt="Product Line" :src="hy_item.ImageSrc"
+                style=" height: 1.2rem; width: 1.2rem; filter: drop-shadow(0.02rem 0.04rem 0.06rem black); "
+                class="c-product-line-select__image" />
+            </button>
+            <button @click.stop="hy_item.isShowDetail = !hy_item.isShowDetail" type="button"
+              class="c-product-line-select__summary-button">
+              <span class="fa fa-fw fa-info-circle"></span>
+            </button>
+          </div>
+          <div class="c-product-line-select__summary" :class="hy_item.isShowDetail ? '' : 'hide'">
+            <p class="u-no-margin">{{ hy_item.ShortDescription }}</p>
+          </div>
+        </div>
+      </div>
+      <!-- 鎸変粙璐ㄥ垎绫� -->
+      <div style="height: calc(100% - 0.55rem); overflow: auto" v-if="state.m_selSeriesMethod.current == 2">
+        <label v-if="state.m_ruleSelectJZ" style="position: absolute; top: 0.3rem; font-size: 0.1rem; color: red">*{{
+          t("selectPage.jiezhiRule.TR") }}</label>
+        <div v-for="(jz_item, jz_index) in state.m_allJieZhiList" :key="jz_index" class="c-product-line-select"
+          :class="jz_item.isSelected ? 'is-selected' : ''" @click="clickJieZhiItem(jz_index)">
+          <div class="c-product-line-select__overview" style="height: 1.5rem">
+            <button type="button" class="c-product-line-select__select-button">
+              <span class="fa fa-fw c-product-line-select__select-icon"></span>
+              <span class="c-product-line-select__name">{{
+                jz_item.Name
+              }}</span>
+            </button>
+            <button @click.stop="jz_item.isShowDetail = !jz_item.isShowDetail" type="button"
+              class="c-product-line-select__summary-button">
+              <span class="fa fa-fw fa-info-circle"></span>
+            </button>
+          </div>
+          <div class="c-product-line-select__summary" :class="jz_item.isShowDetail ? '' : 'hide'">
+            <p class="u-no-margin">{{ jz_item.ShortDescription }}</p>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup name="selPumpSeries">
+import { onMounted, reactive } from "vue";
+import { ElRadioGroup, ElRadioButton, ElCheckbox, ElCheckboxGroup } from 'element-plus'
+import { useSelect } from '/@/store/select.js';
+import ConstParas from "/@/utils/constParas";
+import Utils from "/@/utils/utils";
+import SelectByCorpFlag from "/@/utils/selectByCorpFlag";
+import defaultImgUrl from '/@/views/assets/img_fail.png';
+import { useI18n } from 'vue-i18n';
+import noneImg from '/@/views/assets/none_img.png'
+const { t } = useI18n()
+const selectStore = useSelect()
+let state = reactive({
+  m_currentCorpFlag: window.globalConfig.CorpInfo.CorpFlag,
+  m_selSeriesMethod: {
+    current: 0, //0 绫诲瀷
+    byCatalog: {
+      isDisable: true,
+      isVisible: false,
+    },
+    byHY: {
+      isDisable: true,
+      isVisible: false,
+    },
+    byMedia: {
+      isDisable: true,
+      isVisible: false,
+    },
+  },
+  m_isSelectAllSeries: false, //鏄惁鍏ㄩ�� 榛樿鍏ㄩ��
+
+  m_allCatalogList: [], //鎵�鏈夌殑绫诲瀷
+  m_allSeriesList: [], //鎵�鏈夌殑绯诲垪
+  m_allDispSeriesList: [], //鐢ㄤ簬鏄剧ず鐨勭郴鍒楀垪琛�
+
+  m_allHangYeList: [], //鎵�鏈夎涓氬垪琛�
+
+  m_allJieZhiList: [], //鎵�鏈変粙璐ㄥ垪琛�
+
+  m_selSeriesIDs: [], //褰撳墠閫変腑鐨勭郴鍒梚d
+  m_selCatalogID: 0, //褰撳墠鐢ㄦ潵灞曠ず鐨勭被鍨媔d
+
+  m_DriveType: 0, //椹卞姩绫诲瀷
+  m_MotorFrequence: 50,
+  m_FirePumpType: 0,//娑堥槻娉电被鍨嬶紝
+  m_isFilterByjieZhiTemperature: false,//鏄惁杩囨护浠嬭川娓╁害 榛樿涓嶈繃婊�
+  m_jieZhiTemperature: null, //浠嬭川娓╁害
+  m_ruleSelectStatus: false, //鍒ゆ柇鏄惁閫夋嫨浜嗙郴鍒�
+  m_ruleSelectHY: false, //鍒ゆ柇鏄惁閫夋嫨浜嗚涓�
+  m_ruleSelectJZ: false, //鍒ゆ柇鏄惁閫夋嫨浜嗕粙璐�
+})
+//鍒濆鍖栦骇鍝佺郴鍒楁暟鎹�
+const initData = (all_catalog, all_series, currentLanguageType, seriesApplicationData) => {
+  if (all_catalog == null || all_catalog.length == 0) return;
+  state.m_selSeriesMethod.byCatalog.isDisable = false;
+  state.m_selSeriesMethod.byCatalog.isVisible = true;
+
+  state.m_allCatalogList = all_catalog;
+  state.m_allSeriesList = all_series;
+
+  state.m_selCatalogID = all_catalog[0].ID;
+
+  var allInfoList = [];
+  all_series.forEach((element, index) => {
+    let series_info = {
+      ID: element.ID,
+      CatalogID: element.CatalogID,
+      SeriesID: element.ID,
+      CatalogName: element.CatalogName,
+      ChartType: element.ChartType,
+      DriveType: element.DriveType,
+      FirePumpStatus: element.FirePumpStatus,
+      MotorFrequece: element.MotorFrequece,
+      Name: element.Name,
+      MaxTemperture: element.MaxTemperture,
+      MinTemperture: element.MinTemperture,
+      errorTips: "",
+      ShortDescription: element.ShortDescription == "" ? t('ebookPage.noProfile.TR') : element.ShortDescription.replace(/<br\/>/g, "\n"),
+      ThumbnailImage: "",
+      isSelected: false, //鏄惁琚�夋嫨
+      isShowDetail: false, //鏄惁灞曠ず璇︽儏
+      isSelectEnable: true, //鑳藉惁琚�夋嫨
+    };
+
+    let ThumbnailImage = noneImg
+    if (element.ThumbnailImage && element.ThumbnailImage != "") {
+      ThumbnailImage = window.globalConfig.WebApiUrl.FileUrl + 'Data/' + element.ThumbnailImage
+    }
+    series_info.ThumbnailImage = ThumbnailImage
+    allInfoList.push(series_info);
+  });
+  state.m_allSeriesList = allInfoList
+  // _this.m_allDispSeriesList = allInfoList
+  initDataFromHistory();
+  if (seriesApplicationData) {
+    //鏋勫缓琛屼笟鍒楄〃
+    buildHangYeList(currentLanguageType, seriesApplicationData);
+    //鏋勫缓浠嬭川鍒楄〃
+    buildJieZhiList(currentLanguageType, seriesApplicationData);
+  }
+}
+
+//鏋勫缓琛屼笟鍒楄〃
+const buildHangYeList = (langType, seriesApplicationData) => {
+  if (
+    seriesApplicationData.HangYe == "undefind" ||
+    seriesApplicationData.HangYe == null
+  ) {
+    seriesApplicationData.HangYe = {};
+  }
+  let HYData = seriesApplicationData.HangYe.List;
+  if (HYData == null || HYData.length == 0) {
+    state.m_allHangYeList = [];
+    return;
+  }
+  state.m_selSeriesMethod.byHY.isDisable = false;
+  state.m_selSeriesMethod.byHY.isVisible = true;
+
+  let list = [];
+
+  HYData.forEach((element, index) => {
+    let itemObj = {
+      HID: element.ID,
+      PumpSeriesID: element.PumpSeriesID,
+      Name: element.NameCN,
+      isSelected: false,
+      isShowDetail: false, //鏄惁灞曠ず璇︽儏
+      ShortDescription: element.DescriptionCN,
+      ImageSrc: "static/img/HangYe/" + element.ImageName + "/ffffffx128.png",
+    };
+    if (langType == 0) {
+      itemObj.Name = element.NameCN
+      itemObj.ShortDescription = element.DescriptionCN
+    } else if (langType == 2) {
+      itemObj.Name = element.NameEN
+      itemObj.ShortDescription = element.DescriptionEN
+    } else if (langType == 6) {
+      itemObj.Name = element.NameKO ? element.NameKO : element.NameEN
+      itemObj.ShortDescription = element.DescriptionKO ? element.DescriptionKO : element.DescriptionEN
+    } else if (langType == 5) {
+      itemObj.Name = element.NameRU ? element.NameRU : element.NameEN
+      itemObj.ShortDescription = element.DescriptionRU ? element.DescriptionRU : element.DescriptionEN
+    } else {
+      itemObj.Name = element.NameCN
+      itemObj.ShortDescription = element.DescriptionCN
+    }
+    list.push(itemObj);
+  });
+
+  state.m_allHangYeList = list;
+}
+//鏋勫缓浠嬭川鍒楄〃
+const buildJieZhiList = (langType, seriesApplicationData) => {
+  // console.log(seriesApplicationData,406)
+  if (
+    seriesApplicationData.JieZhiParas == "undefind" ||
+    seriesApplicationData.JieZhiParas == null
+  ) {
+    seriesApplicationData.JieZhiParas = {};
+  }
+  let jieZhiList = seriesApplicationData.JieZhiParas.List;
+  if (jieZhiList == null || jieZhiList.length == 0) {
+    state.m_allJieZhiList = [];
+    return
+  }
+  state.m_selSeriesMethod.byMedia.isDisable = false;
+  state.m_selSeriesMethod.byMedia.isVisible = true;
+
+  let list = [];
+  if (langType == 0) {
+    jieZhiList.forEach((element, index) => {
+      let itemObj = {
+        ID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameCN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionCN,
+      };
+      if (element.ImageName) {
+        itemObj.ImageSrc = "static/img/HangYe/" + element.ImageName + "/ffffffx128.png";
+      } else {
+        itemObj.ImageSrc = "";
+      }
+      list.push(itemObj);
+    });
+  }
+  else {
+    jieZhiList.forEach((element, index) => {
+      let itemObj = {
+        ID: element.ID,
+        PumpSeriesID: element.PumpSeriesID,
+        Name: element.NameEN,
+        isSelected: false,
+        isShowDetail: false, //鏄惁灞曠ず璇︽儏
+        ShortDescription: element.DescriptionCN,
+      };
+      if (element.ImageName) {
+        itemObj.ImageSrc = "static/img/HangYe/" + element.ImageName + "/ffffffx128.png";
+      } else {
+        itemObj.ImageSrc = "";
+      }
+      list.push(itemObj);
+    });
+  }
+  state.m_allJieZhiList = list;
+}
+//绛涢�夌郴鍒楀垪琛�
+const filterSeriseList = (DriveType, MotorFrequece, FirePumpType) => {
+  state.m_FirePumpType = FirePumpType;
+  // debugger
+  resetSeriesCheckStatus()
+  state.m_DriveType = DriveType;
+  state.m_MotorFrequence = MotorFrequece;
+
+  let showSeriesArr = [];
+  state.m_allSeriesList.forEach((item) => {
+    item.isSelectEnable = true;
+    //鍒ゆ柇鏄惁鏄數鏈�
+    if (DriveType == ConstParas.DriveType.Motor) {
+      if (item.MotorFrequece == MotorFrequece && item.DriveType == DriveType) {
+        if (item.FirePumpStatus) {
+          if (item.FirePumpStatus.includes(Number(FirePumpType))) {
+            if (state.m_selCatalogID == 0) {
+              //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+              showSeriesArr.push(item);
+            } else {
+              if (state.m_selCatalogID == item.CatalogID) {
+                showSeriesArr.push(item);
+              }
+            }
+          }
+        } else {
+          if (state.m_selCatalogID == 0) {
+            //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+            showSeriesArr.push(item);
+          } else {
+            if (state.m_selCatalogID == item.CatalogID) {
+              showSeriesArr.push(item);
+            }
+          }
+        }
+      }
+    }
+    // 鏄惁鏄煷娌规満
+    else if (DriveType == ConstParas.DriveType.Diesel) {
+      if (item.DriveType == DriveType) {
+        if (item.FirePumpStatus) {
+          if (item.FirePumpStatus.includes(Number(FirePumpType))) {
+            if (state.m_selCatalogID == 0) {
+              //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+              showSeriesArr.push(item);
+            } else {
+              if (state.m_selCatalogID == item.CatalogID) {
+                showSeriesArr.push(item);
+              }
+            }
+          }
+        } else {
+          if (state.m_selCatalogID == 0) {
+            //鍒ゆ柇绫诲瀷鏄惁鏄叏閮�
+            showSeriesArr.push(item);
+          } else {
+            if (state.m_selCatalogID == item.CatalogID) {
+              showSeriesArr.push(item);
+            }
+          }
+
+        }
+      }
+    }
+  });
+  //鍒ゆ柇鍘嗗彶鏄惁閫夋嫨浜嗙郴鍒楋紝濡傛灉鏈夊垯灏嗘墍閫夌郴鍒楀嬀涓�
+  if (state.m_selSeriesIDs.length != 0) {
+    state.m_selSeriesIDs.forEach(serIDs => {
+      showSeriesArr.forEach((item) => {
+        if (serIDs == item.ID) {
+          item.isSelected = true
+        }
+      })
+    })
+  }
+  state.m_allDispSeriesList = showSeriesArr;
+  buildDispSeriesList();
+}
+//璁剧疆浠嬭川娓╁害
+const setJieZhiTemperture = (temperture) => {
+  state.m_jieZhiTemperature = temperture;
+  state.m_isFilterByjieZhiTemperature = true;
+  buildDispSeriesList();
+}
+// 鑾峰彇鍘嗗彶琛ㄥ崟璁板綍
+const initDataFromHistory = () => {
+  //鑾峰彇涓婃鐨勮〃鍗曞~鍐欒褰�
+  let historyFormData = selectStore.ByParas.selectParas;
+  let corpSelectDataByFlag = SelectByCorpFlag.getData(state.m_currentCorpFlag)
+  if (historyFormData == null || historyFormData.FilterInfo == null) {
+    return;
+  }
+  if (corpSelectDataByFlag.CatalogID == "" || corpSelectDataByFlag.CatalogID.length == 0) {
+    return
+  }
+  if (corpSelectDataByFlag.SeriesID == "" || corpSelectDataByFlag.SeriesID.length == 0) {
+    return
+  }
+
+  if (historyFormData.FilterInfo.CatalogID) {
+    historyFormData.FilterInfo.CatalogID = corpSelectDataByFlag.CatalogID
+    var selCatalogIDs = historyFormData.FilterInfo.CatalogID;
+    if (selCatalogIDs.length > 0)
+      state.m_selCatalogID = selCatalogIDs[0];
+  }
+  state.m_selSeriesMethod.current = corpSelectDataByFlag.SelMethod
+  // 鍒ゆ柇鍘嗗彶閫夊瀷鏂瑰紡 鏄惁鏄寜琛屼笟 濡傛灉鏄垯涓嶈祴鍊煎巻鍙茬郴鍒梚d
+  if (corpSelectDataByFlag.SelMethod == 0) {
+    if (historyFormData.FilterInfo.SeriesID) {
+      historyFormData.FilterInfo.SeriesID = corpSelectDataByFlag.SeriesID
+      var selSeriesIDs = historyFormData.FilterInfo.SeriesID;
+      state.m_selSeriesIDs = selSeriesIDs;
+      // 鏍规嵁鍘嗗彶閫変腑鐨勭郴鍒梚d鍕鹃�変笂
+      // selSeriesIDs.forEach(sid => {
+      //   this.m_allDispSeriesList.forEach(serItem => {
+      //     if (sid == serItem.SeriesID) {
+      //       serItem.isSelected = true
+      //     }
+      //   })
+      // })
+    }
+  }
+
+}
+//鏋勫缓灞曠ず鐨勭郴鍒楀垪琛�
+const buildDispSeriesList = () => {
+  if (state.m_jieZhiTemperature == null) {
+    state.m_allDispSeriesList.forEach((element) => {
+      element.isSelectEnable = true;
+      element.errorTips = "";
+    });
+    return;
+  }
+  // console.log(this.m_jieZhiTemperature, _this.m_allDispSeriesList,292)
+
+  state.m_allDispSeriesList.forEach((element) => {
+    element.isSelectEnable = true;
+    element.errorTips = "";
+    if (element.MaxTemperture != null) {
+      if (state.m_jieZhiTemperature >= element.MaxTemperture) {
+        element.isSelected = false;
+        element.isSelectEnable = false;
+        element.errorTips = "楂樹簬鏈�澶ч�傜敤娓╁害" + element.MaxTemperture;
+      }
+    }
+    if (element.MinTemperture != null) {
+      if (state.m_jieZhiTemperature <= element.MinTemperture) {
+        element.isSelected = false;
+        element.isSelectEnable = false;
+        element.errorTips = "浣庝簬鏈�灏忛�傜敤娓╁害" + element.MinTemperture;
+      }
+    }
+  });
+}
+// 閲嶇疆涓�閮ㄥ垎鏁版嵁
+const resetData = () => {
+
+}
+//鐩戝惉绯诲垪绛涢�夐�夐」鍒囨崲鐨勫彉鍖� 榛樿鎸夎涓�
+const changeSelSeriesMethod = (val) => {
+  state.m_selSeriesMethod.current = val;
+  state.m_selSeriesIDs = [];
+}
+//鏄惁鍏ㄩ��
+const clickSelAllSeries = () => {
+  let ser_id = [];
+  if (state.m_isSelectAllSeries) {
+    state.m_selSeriesIDs = [];
+    if (state.m_selSeriesMethod.current == 0) {
+      state.m_allDispSeriesList.forEach((item) => {
+        if (item.isSelectEnable) {
+          item.isSelected = true;
+          ser_id.push(item.SeriesID);
+        }
+      });
+      state.m_selSeriesIDs = ser_id;
+
+      // console.log(this.m_selSeriesIDs,"m_selSeriesIDs")
+    }
+    // 褰撳墠涓烘寜琛屼笟妯″潡
+    if (state.m_selSeriesMethod.current == 1) {
+      state.m_allHangYeList.forEach((item) => {
+        item.isSelected = true;
+        ser_id.push(...item.PumpSeriesID);
+      });
+      state.m_selSeriesIDs = Utils.uniqueInArray(ser_id);
+    }
+    state.m_ruleSelectStatus = false;
+  } else {
+    state.m_selSeriesIDs = [];
+    if (state.m_selSeriesMethod.current == 0) {
+      state.m_allDispSeriesList.forEach((item) => {
+        item.isSelected = false;
+      });
+    }
+    if (state.m_selSeriesMethod.current == 1) {
+      state.m_allHangYeList.forEach((item) => {
+        item.isSelected = false;
+      });
+    }
+  }
+}
+//鐩戝惉鎸夌被鍨嬩笅鎷夌殑鍙樺寲
+const changeCatalog = (e) => {
+  //鍒囨崲绫诲瀷鍚庯紝鍙栨秷鍏ㄩ�夊拰缃┖宸查�夋嫨鐨剆eriesID鏁扮粍
+  state.m_isSelectAllSeries = false
+  state.m_selSeriesIDs = [];
+  state.m_selCatalogID = parseInt(e.target.value) || state.m_allCatalogList[0].ID;
+
+  filterSeriseList(
+    state.m_DriveType,
+    state.m_MotorFrequence,
+    state.m_FirePumpType
+  );
+  if (state.m_isFilterByjieZhiTemperature) {
+    buildDispSeriesList();
+  }
+}
+//閫夋嫨绯诲垪
+const clickSeriesItem = (index) => {
+  state.m_allDispSeriesList[index].isSelected = !state.m_allDispSeriesList[index].isSelected;
+  var sel_ids = [];
+
+  state.m_isSelectAllSeries = false;
+  state.m_allDispSeriesList.forEach((series_item) => {
+    if (series_item.isSelected) {
+      //   this.m_isSelectAllSeries = true;
+      sel_ids.push(series_item.SeriesID);
+    }
+  });
+
+  state.m_selSeriesIDs = sel_ids;
+  // console.log(this.m_selSeriesIDs,630)
+  //鍒ゆ柇褰撳墠閫変腑鐨勭郴鍒梚d涓暟鏄惁鍜屽叏閮ㄧ殑绯诲垪涓暟鐩稿悓锛岀浉鍚屽垯浠h〃宸茬粡鍏ㄩ��
+  if (state.m_selSeriesIDs.length == state.m_allDispSeriesList.length) {
+    state.m_isSelectAllSeries = true
+  }
+  if (state.m_selSeriesIDs.length > 0) {
+    state.m_ruleSelectStatus = false;
+  }
+
+  //console.log(this.m_selSeriesIDs, 375);
+}
+//閫夋嫨琛屼笟
+const clickHangYeItem = (index) => {
+  state.m_allHangYeList.forEach((old_item) => {
+    old_item.isSelected = false;
+  });
+
+  state.m_allHangYeList[index].isSelected = !state.m_allHangYeList[index].isSelected;
+}
+//閫夋嫨浠嬭川
+const clickJieZhiItem = (index) => {
+  state.m_allJieZhiList.forEach((old_item) => {
+    old_item.isSelected = false;
+  });
+
+  state.m_allJieZhiList[index].isSelected = !state.m_allJieZhiList[index].isSelected;
+}
+//杩斿洖缁欎富椤甸潰 閫夋嫨鐨勭被鍨媔d 鍜� 绯诲垪id
+const getSelectData = () => {
+  var sel_series_ids = [];
+  var sel_catalog_ids = [];
+  if (state.m_selSeriesMethod.current == 0) {
+    if (state.m_selSeriesIDs == null || state.m_selSeriesIDs.length == 0) {
+      state.m_ruleSelectStatus = true;
+      return null;
+    }
+    sel_series_ids = state.m_selSeriesIDs;
+    sel_catalog_ids.push(state.m_selCatalogID);
+  }
+
+  if (state.m_selSeriesMethod.current == 1) {
+    state.m_allHangYeList.forEach((hy_item) => {
+      if (hy_item.isSelected) {
+        state.m_isSelectAllSeries = true;
+        sel_series_ids.push(...hy_item.PumpSeriesID);
+      }
+    });
+
+    sel_series_ids = getFilterSeriseIdList(sel_series_ids); //杩囨护涓�涓�, 鍝簺绯诲垪ID鍙
+
+    if (sel_series_ids == null || sel_series_ids.length == 0) {
+      state.m_ruleSelectHY = true;
+      return null;
+    }
+  }
+  if (state.m_selSeriesMethod.current == 2) {
+    state.m_allJieZhiList.forEach((jz_item1, index1) => {
+      if (jz_item1.isSelected) {
+        //鍒ゆ柇褰撳墠閫変腑鐨勪粙璐ㄩ」瀵瑰簲鐨勬车绯诲垪id鏄惁绛変簬 -1
+        if (
+          jz_item1.PumpSeriesID.length == 1 &&
+          jz_item1.PumpSeriesID[0] == -1
+        ) {
+          state.m_allJieZhiList.forEach((jz_item2, index2) => {
+            if (index1 != index2) {
+              sel_series_ids.push(...jz_item2.PumpSeriesID);
+            }
+          });
+        } else {
+          sel_series_ids.push(...jz_item1.PumpSeriesID);
+        }
+      }
+    });
+
+    sel_series_ids = getFilterSeriseIdList(sel_series_ids); //杩囨护涓�涓�, 鍝簺绯诲垪ID鍙
+    if (sel_series_ids == null || sel_series_ids.length == 0) {
+      state.m_ruleSelectJZ = true;
+      return null;
+    }
+  }
+  //console.log(sel_series_ids)
+  let data = {
+    CorpFlag: state.m_currentCorpFlag,
+    SeriesID: sel_series_ids,
+    CatalogID: sel_catalog_ids,
+    SelMethod: state.m_selSeriesMethod.current
+  };
+
+  SelectByCorpFlag.saveData(state.m_currentCorpFlag, data)
+  state.m_ruleSelectStatus = false;
+  return data;
+}
+//杩囨护鍙互鍙互閫夋嫨鐨勭郴鍒桰D(琛屼笟 , 浠嬭川鐢�)
+const getFilterSeriseIdList = (series_id_list) => {
+  //  console.log(series_id_list)
+  if (series_id_list == null) return [];
+  var ava_id = [];
+  state.m_allSeriesList.forEach((item) => {
+    if (!item.isSelectEnable) return true;
+    if (series_id_list.indexOf(item.ID) < 0) return true;
+    //鍒ゆ柇鏄惁鏄數鏈�
+    if (state.m_DriveType == ConstParas.DriveType.Motor) {
+      if (
+        item.MotorFrequece == state.m_MotorFrequence &&
+        item.DriveType == state.m_DriveType
+      ) {
+        ava_id.push(item.ID);
+      }
+    }
+    // 鏄惁鏄煷娌规満
+    else if (state.m_DriveType == ConstParas.DriveType.Diesel) {
+      if (item.state.m_DriveType == DriveType) {
+        ava_id.push(item.ID);
+      }
+    }
+  });
+
+  return ava_id;
+}
+//娓呴櫎绯诲垪鍒楄〃鐨勯�変腑鐘舵�併��
+const resetSeriesCheckStatus = () => {
+  if (state.m_allDispSeriesList && state.m_allDispSeriesList.length > 0) {
+    state.m_allDispSeriesList.forEach(item => {
+      item.isSelected = false
+    })
+  }
+}
+const useDefaultImage = (event) => {
+  event.target.src = defaultImgUrl;
+}
+
+defineExpose({
+  initData,
+  filterSeriseList,
+  getSelectData,
+  setJieZhiTemperture
+})
+</script>
+
+<style lang="scss">
+.productSeries {
+  height: calc(100% - 0rem);
+
+  .c-card {
+    margin: 0 0 0.16rem 0;
+    padding: 0.16rem;
+    border-radius: 0.03rem;
+    position: relative;
+    color: #16181a;
+    background: #fefefe;
+    border: 0.01rem solid #dbe0e3;
+    box-shadow: 0 0.01rem 0.03rem rgba(145, 161, 170, 0.25);
+  }
+
+  .c-card> :last-child {
+    margin-bottom: 0;
+  }
+
+  .c-card> :first-child {
+    margin-top: 0;
+  }
+
+  .row .row {
+    max-width: none;
+  }
+
+  .row {
+    display: flex;
+    flex-flow: row wrap;
+  }
+
+  .columns {
+    padding: 0 0.15rem;
+  }
+
+  .column,
+  .columns {
+    padding-left: 0.08rem;
+    padding-right: 0.08rem;
+  }
+
+  .column,
+  .columns {
+    flex: 1 1 0rem;
+    min-width: initial;
+  }
+
+  .menu {
+    margin: 0;
+    list-style-type: none;
+    width: 100%;
+    display: flex;
+    flex-wrap: nowrap;
+    align-items: center;
+    flex-wrap: nowrap;
+  }
+
+  .menu>li {
+    flex: 0 0 auto;
+  }
+
+  .menu>li>a {
+    flex-flow: row nowrap;
+  }
+
+  .menu>li>a {
+    display: flex;
+  }
+
+  .menu>li>a {
+    display: block;
+    padding: 0.08rem 0rem;
+    line-height: 1;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .shrink {
+    flex: 0 0 auto;
+    max-width: 100%;
+  }
+
+  .text-right {
+    text-align: right;
+  }
+
+  .menu input,
+  .menu a,
+  .menu button {
+    margin-bottom: 0;
+  }
+
+  .c-product-line-select {
+    border: 0.01rem solid #ddd;
+    border-radius: 0.03rem;
+    color: #555;
+    margin-top: 0.08rem;
+    overflow: hidden;
+  }
+
+  .c-product-line-select.is-selected {
+    background-color: #efefef;
+    border-color: currentColor;
+    color: black;
+  }
+
+  .c-product-line-select__overview {
+    display: flex;
+  }
+
+  .c-product-line-select__select-button,
+  .c-product-line-select__summary-button {
+    background: 0;
+    border: 0;
+    border-radius: 0;
+    color: currentColor;
+    font-size: calc(0.5vw + 0.16rem);
+  }
+
+  .c-product-line-select__select-button {
+    display: flex;
+    align-items: center;
+    flex-grow: 1;
+    padding: 0;
+    text-align: left;
+  }
+
+  .c-product-line-select__select-icon {
+    display: block;
+    flex: none;
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__name {
+    flex-grow: 1;
+    font-size: calc(0.5vw + 0.12rem);
+    padding: 0.16rem 0 0.16rem 0.32rem;
+  }
+
+  .c-product-line-select__select-icon::before {
+    content: "\f096";
+  }
+
+  .c-product-line-select.is-selected .c-product-line-select__select-icon::before {
+    color: currentColor;
+    content: "\f046";
+    opacity: 1;
+  }
+
+  .c-product-line-select__select-button:hover .c-product-line-select__select-icon::before {
+    content: "\f046";
+    opacity: 0.5;
+  }
+
+  .c-product-line-select__image {
+    display: block;
+    flex: none;
+    max-width: -webkit-calc(4vw + 6.4rem);
+    max-width: calc(4vw + 6.4rem);
+    padding: 0.16rem;
+  }
+
+  .c-product-line-select__summary-button {
+    background-color: #ddd;
+    color: currentColor;
+    flex: none;
+    padding: 0 0.12rem;
+  }
+
+  .c-product-line-select__summary {
+    background-color: #ddd;
+    color: black;
+    padding: 0.16rem;
+    text-align: left;
+  }
+
+  .u-no-margin {
+    margin: 0 !important;
+  }
+
+  .hide {
+    display: none !important;
+  }
+
+  .error_tip {
+    color: red;
+    padding: 0.16rem;
+    text-align: left;
+    font-size: 18px;
+    font-weight: 600;
+  }
+
+  .unclick-mask {
+    width: 100%;
+    height: 1.5rem;
+    background-color: #fff;
+    position: absolute;
+    top: 0;
+    opacity: 0.7;
+    cursor: not-allowed;
+  }
+
+  .head-tool-style li.active,
+  li:hover {
+    background-color: unset;
+  }
+
+  .select-type-style {
+    label {
+      display: unset;
+    }
+  }
+
+  .select_all_style {
+    display: inline-flex !important;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/SPump/Select/PumpList/FmUL.vue b/src/views/SPump/Select/PumpList/FmUL.vue
new file mode 100644
index 0000000..abb6f97
--- /dev/null
+++ b/src/views/SPump/Select/PumpList/FmUL.vue
@@ -0,0 +1,743 @@
+<template>
+  <div style="height: 100%">
+    <page-head> </page-head>
+    <div style="height: calc(100% - 0.86rem)" ref="selpumplist" class="selpumplist" v-loading="state.isShowLoadingFrm"
+      element-loading-background="rgba(255,255,255, 0.8)">
+      <div class="nav_header_box">
+        <div class="nav_header">
+          <div style="cursor: pointer" class="nav_header_a" @click="toHomePage">{{ t("selectPage.index.TR") }}</div>
+        </div>
+        <div class="nav_header_right">
+          <!-- <el-dropdown v-if="false" :hide-on-click="false" trigger="click" :max-height="300">
+            <el-button class="btn_color">
+              {{ t("selectPage.selRow.TR") }}<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <template #dropdown>
+              <el-dropdown-menu class="pumplist_dropdown_menu">
+                <el-dropdown-item><el-checkbox-group v-model="state.m_dispColumnNameList">
+                    <el-checkbox v-for="item in m_columnOptions" :value="item.value" :key="item.value"
+                      :checked="item.visible" 
+                      :disabled="item.disable">{{ item.label }}</el-checkbox> </el-checkbox-group></el-dropdown-item>
+              </el-dropdown-menu>
+            </template>
+</el-dropdown> -->
+          <!-- 瀵煎嚭鎸夐挳 -->
+          <el-button class="btn_color">{{ t('selectPage.export.TR') }}</el-button>
+          <!-- 鎵撳嵃鎸夐挳 -->
+          <el-button class="btn_color">{{ t('selectPage.print.TR') }}</el-button>
+          <!-- 涓婁竴姝ユ寜閽� -->
+          <span class="btn_span" @click="prevPage">{{ t('selectPage.previous.TR') }}</span>
+        </div>
+      </div>
+      <div class="tableBox">
+        <el-table :data="state.tableData" border stripei :max-height="state.tableMaxHeight" style="width: 100%"
+          :empty-text="state.tableEmptyContent" :header-cell-style="{ background: '#b0d8dd', color: '#606266' }">
+          <!-- 琛ㄦ牸澶�--瀹炵墿鍥�-->
+          <el-table-column fixed align="center" header-align="center" width="200" :label="t('selectPage.physical.TR')">
+            <template #default="scope">
+              <div>
+                <img :src="scope.row.ThumbnailImage" :alt="`${scope.row.groupName}`" />
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--绯诲垪-->
+          <el-table-column fixed align="center" header-align="center" width="120" prop="SereisName"
+            :label="t('selectPage.series.TR')"></el-table-column>
+          <!-- 琛ㄦ牸澶�--娉靛瀷鍙�-->
+          <el-table-column align="center" header-align="center" width="240" prop="PumpName"
+            :label="t('selectPage.model.TR')">
+            <template #default="scope">
+              <div @click="clickPumpNameCell(scope.$index, scope.row)">
+                <span style="color: #6396c2; cursor: pointer">{{
+                  scope.row.PumpName
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--鏇茬嚎鍥�-->
+          <el-table-column align="center" header-align="center" width="300" prop="WorkCurveGroup"
+            :label="t('selectPage.diagram.TR')">
+            <template #default="scope">
+              <div style="width: 1.5rem; height: 0.9rem" class="CurveVhart" ref="CurveVhart" :data-svg="true"
+                :id="scope.row.PumpID" :data-pump_id="scope.row.PumpID" :data-pump_charttype="scope.row.ChartType">
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--璁よ瘉娴侀噺-->
+          <el-table-column align="right" header-align="center" prop="CertifiedPointQ" width="180">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.certifiedTraffic.TR") }}</div>
+                <div>gpm</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--璁よ瘉鎵▼-->
+          <el-table-column align="right" header-align="center" prop="CertifiedPointHrange" width="180">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.certifiedHead.TR") }}</div>
+                <div>psi</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--璁よ瘉杞��-->
+          <el-table-column align="right" header-align="center" prop="CertifiedPointSpeed" width="180">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.certifiedSpeed.TR") }}</div>
+                <div>rpm</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--150%鐐规祦閲�-->
+          <el-table-column align="right" header-align="center" width="180" prop="PercentPoint150Q">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.pointFlow_150.TR") }}</div>
+                <div>({{ state.SelDesignPtQUnitName }})</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--150%鐐规壃绋�-->
+          <el-table-column align="right" header-align="center" prop="PercentPoint150H" width="180">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.pointLift_150.TR") }}</div>
+                <div>{{ state.SelDesignPtHUnitName }}</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--150%鐐瑰姛鐜�-->
+          <el-table-column align="right" header-align="center" prop="PercentPoint150P" width="180">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.pointPower_150.TR") }}</div>
+                <div>({{ state.SelDesignPtPUnitName }})</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--鏈�澶ц酱鍔熺巼 -->
+          <el-table-column width="180" align="right" header-align="center" prop="MaxPower">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.maxShaftPower.TR") }}</div>
+                <div>({{ state.SelDesignPtPUnitName }})</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--鍙惰疆鐩村緞 -->
+          <el-table-column align="right" width="180" header-align="center" property="WorkD2">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.impellerDiameter.TR") }}</div>
+                <div>(mm)</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--鍏虫鐐规壃绋� -->
+          <el-table-column align="right" width="180" header-align="center" property="ShutoffHead">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.deadCenterLift.TR") }}</div>
+                <div>({{ state.SelDesignPtHUnitName }})</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 琛ㄦ牸澶�--澶囨敞 -->
+          <el-table-column v-if="getColumnVisbileStatus('澶囨敞')" align="center" header-align="center" width="80"
+            property="Note" :label="t('selectPage.note.TR')"></el-table-column>
+          <!-- 琛ㄦ牸澶�--娉电骇鏁� -->
+          <el-table-column v-if="getColumnVisbileStatus('娉电骇鏁�')" align="center" header-align="center" width="80"
+            property="StageNumber" :label="t('selectPage.pumpStages.TR')"></el-table-column>
+          <!-- 琛ㄦ牸澶�--璇︽儏 -->
+          <el-table-column :label="t('selectPage.details.TR')" align="right" header-align="center" width="80">
+            <template #default="scope">
+              <el-button size="small" class="btn_color" @click="clickDetailCell(scope.$index, scope.row)">{{
+                t('selectPage.details.TR') }}</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+    <page-footer> </page-footer>
+  </div>
+</template>
+
+<script setup name="SelPumpListFMUL">
+import { onMounted, reactive, ref, nextTick } from "vue";
+import { ElMessage, ElTable, ElTableColumn, ElButton } from "element-plus";
+import thumbnailChart from "/@/components/chart/ThumbnailChart.js";
+import UnitHelper from "/@/utils/unit";
+import ConstParas from "/@/utils/constParas";
+import pageHead from "/@/views/head.vue";
+import pageFooter from "/@/views/footer.vue";
+import { useRoute, useRouter } from 'vue-router';
+import { useLanguageMixin } from '/@/mixin/languageHook.js'
+import axiosHelper from "/@/utils/axiosHelper.js";
+import noneImg from '/@/views/assets/none_img.png';
+import { useSelect } from '/@/store/select.js';
+import { useI18n } from "vue-i18n";
+let { getCurrentLanguageType, buildCurrentLanguageUrl, getLanguageParaName } = useLanguageMixin()
+const m_currentLanguage = getCurrentLanguageType()
+const { t } = useI18n()
+const selectStore = useSelect()
+const route = useRoute()
+const router = useRouter()
+const selpumplist = ref(null)
+let state = reactive({
+  detailPageQueryModel: {}, //鐢ㄤ簬浼犻�佺粰涓嬩竴涓〉闈㈢殑绫�
+
+  SelDesignPtQ_StdUnit: 0, //鏍囧噯鍗曚綅鐨勮璁$偣(鐢ㄤ簬缁樺埗灏忓浘)
+  SelDesignPtH_StdUnit: 0, //鏍囧噯鍗曚綅鐨勮璁$偣(鐢ㄤ簬缁樺埗灏忓浘)
+
+  SelDesignPtQUnit: 4,
+  SelDesignPtQUnitName: "gpm",
+
+  SelDesignPtHUnit: 5,
+  SelDesignPtHUnitName: "psi",
+
+  SelDesignPtPUnit: 2,
+  SelDesignPtPUnitName: "hp",
+
+  isShowLoadingFrm: true, //绛夊緟妗�
+
+  tableData: [],
+
+  m_columnOptions: [
+    { label: "瀹炵墿鍥�", unit: "", value: 1, disable: false, visible: true },
+    { label: "绯诲垪", unit: "", value: 2, disable: false, visible: true },
+    { label: "娉靛瀷鍙�", unit: "", value: 3, disable: false, visible: true },
+    { label: "鏇茬嚎鍥�", unit: "", value: 4, disable: true, visible: true },
+    {
+      label: "璁よ瘉娴侀噺",
+      unit: "(gpm)",
+      value: 5,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: "璁よ瘉鎵▼",
+      unit: "(psi)",
+      value: 6,
+      disable: false,
+      visible: true,
+    },
+
+    {
+      label: "杞��",
+      unit: "(rpm)",
+      value: 10,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: "鍙惰疆鐩村緞",
+      unit: "(mm)",
+      value: 11,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: "鍙橀�熺巼",
+      unit: "(%)",
+      value: 12,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: "鍒囧壊鐜�",
+      unit: "(%)",
+      value: 13,
+      disable: false,
+      visible: true,
+    },
+    { label: "閿�鍞环", value: 14, disable: false, visible: false },
+    { label: "娉电骇鏁�", value: 15, disable: false, visible: false },
+    {
+      label: "鍘熷鍙惰疆鐩村緞",
+      unit: "(mm)",
+      value: 16,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: "鍏虫鐐规壃绋�",
+      unit: "(m)",
+      value: 17,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: "棰濆畾杞��",
+      unit: "(rpm)",
+      value: 19,
+      disable: false,
+      visible: false,
+    },
+    { label: "澶囨敞", value: 22, disable: true, visible: false },
+    { label: "璇︾粏", value: 23, disable: true, visible: true },
+    { label: "鎸囧浠�", value: 24, disable: true, visible: false },
+  ],
+  m_dispColumnNameList: [],
+  tableMaxHeight: 790,
+  tableEmptyContent: "loading"
+})
+
+const initialPage = () => {
+  document.title = `${t('selectPage.selResult.TR')}`
+  state.tableEmptyContent = "loading"
+  let prvePathDataObj = selectStore.ByParas.selectParas;
+  if (prvePathDataObj == null) return;
+  if (prvePathDataObj.DesignInfo == null) return;
+
+  var selDesignPtQ = prvePathDataObj.DesignInfo.DpQ;
+  var selDesignPtQUnit = prvePathDataObj.DesignInfo.UnitQ;
+  var selDesignPtH = prvePathDataObj.DesignInfo.DpH;
+  var selDesignPtHUnit = prvePathDataObj.DesignInfo.UnitH;
+
+  state.SelDesignPtQUnit = selDesignPtQUnit;
+  state.SelDesignPtQUnitName = UnitHelper.GetUnitNameQ(selDesignPtQUnit);
+  state.SelDesignPtQ_StdUnit = UnitHelper.ConvertQ_toM3H(
+    selDesignPtQUnit,
+    selDesignPtQ
+  );
+
+  state.SelDesignPtHUnit = selDesignPtHUnit;
+  state.SelDesignPtHUnitName = UnitHelper.GetUnitNameH(selDesignPtHUnit);
+  state.SelDesignPtH_StdUnit = UnitHelper.ConvertH_toM(
+    selDesignPtHUnit,
+    selDesignPtH
+  );
+
+  var dispColumnNameList = [];
+  state.m_columnOptions.forEach((element) => {
+    if (element.visible) dispColumnNameList.push(element.label);
+
+    if (element.label.indexOf("娴侀噺") >= 0)
+      element.unit = UnitHelper.GetUnitNameQ(selDesignPtQUnit);
+    if (element.label.indexOf("鎵▼") >= 0)
+      element.unit = UnitHelper.GetUnitNameH(selDesignPtHUnit);
+  });
+  state.m_dispColumnNameList = dispColumnNameList;
+
+  initData(prvePathDataObj);
+
+  nextTick(() => {
+    // console.log(document.body.clientHeight);
+    // console.log(document.querySelector("#app header").clientHeight);
+    let headHeight = 0;
+    let footerHeight = 0;
+    if (document.querySelector("#app header")) {
+      headHeight = document.querySelector("#app header").clientHeight;
+    }
+    if (document.querySelector("#app footer")) {
+      footerHeight = document.querySelector("#app footer").clientHeight;
+    }
+    state.tableMaxHeight =
+      document.body.clientHeight - headHeight - footerHeight - 40; //
+  });
+  window.onresize = () => {
+    let headHeight = 0;
+    let footerHeight = 0;
+    if (document.querySelector("#app header")) {
+      headHeight = document.querySelector("#app header").clientHeight;
+    }
+    if (document.querySelector("#app footer")) {
+      footerHeight = document.querySelector("#app footer").clientHeight;
+    }
+    return (() => {
+      //绐楀彛鍙樺寲鏄缃〃鏍兼渶澶ч珮搴︼紝浣垮叾閫傚簲绐楀彛鍙樺寲
+      state.tableMaxHeight =
+        document.body.clientHeight - headHeight - footerHeight - 40;
+    })();
+  };
+}
+//鍒濆鍖栨暟鎹�
+const initData = (prvePathDataObj) => {
+
+  //console.log(prvePathDataObj, 401);
+  let postRequestData = {
+    //浠嬭川
+    JieZhi: {
+      ID: prvePathDataObj.JieZhi.ID, //浠嬭川id
+      Name: prvePathDataObj.JieZhi.Name, //浠嬭川鍚嶇О
+      CalcDensity: prvePathDataObj.JieZhi.CalcDensity, //瀵嗗害
+      CalcViscosity: prvePathDataObj.JieZhi.CalcViscosity, //绮樺害
+    },
+    //绛涢�変俊鎭�
+    FilterInfo: {
+      DriveType: prvePathDataObj.FilterInfo.DriveType, //璁惧绫诲瀷 0鐢垫満 3鏌存补鏈�
+      KeyWord: prvePathDataObj.FilterInfo.KeyWord, //鍏抽敭瀛� 鏆傛椂榛樿绌�
+      FirePumpType: prvePathDataObj.FilterInfo.FirePumpType, //娑堥槻娉电被鍨�
+      MotorPoleNum: prvePathDataObj.FilterInfo.MotorPoleNum, //鐢垫満鏁堢巼绛夌骇 鏆傛椂涓虹┖
+      DieselSpeed: prvePathDataObj.FilterInfo.DieselSpeed == "" ? 0 : prvePathDataObj.FilterInfo.DieselSpeed, //鏌存补鏈鸿浆閫� 鏆傛椂榛樿
+      MotorFrequence: prvePathDataObj.FilterInfo.MotorFrequence, //鐢垫満璧吂
+    },
+    //璁捐鐐瑰弬鏁�
+    DesignInfo: {
+      UnitQ: prvePathDataObj.DesignInfo.UnitQ, //娴侀噺鍗曚綅
+      UnitH: prvePathDataObj.DesignInfo.UnitH, //鎵▼鍗曚綅
+      DpQ: prvePathDataObj.DesignInfo.DpQ, //杈撳叆鐨勬祦閲忕殑鍊�
+      DpH: prvePathDataObj.DesignInfo.DpH, //杈撳叆鐨勬壃绋嬬殑鍊�
+      IsAllowCut: prvePathDataObj.DesignInfo.IsAllowCut, //鏄惁鍏佽鍒囧壊
+      IsAllowFrequence: prvePathDataObj.DesignInfo.IsAllowFrequence, //鏄惁鍏佽鍙橀
+      PointTolerance: prvePathDataObj.DesignInfo.PointTolerance, // 鐐瑰宸寖鍥� 榛樿绌�
+      IsVisCorrect: prvePathDataObj.DesignInfo.IsVisCorrect, //鏄惁淇绮樺害 榛樿false
+    },
+    SeriesID: prvePathDataObj.FilterInfo.SeriesID, //娉电郴鍒桰D
+    CatalogID: prvePathDataObj.FilterInfo.CatalogID, //娉电被鍨媔d
+    SoftType: window.globalConfig.SoftType,
+    SystemInfo: ""
+  };
+
+  //console.log(this.requireData,2738)
+
+  state.detailPageQueryModel = {
+    //鐢ㄤ簬鐐瑰嚮琛ㄦ牸璇︽儏浼犲嚭鐨勫弬鏁�
+    SID: "",
+    PID: "",
+    from: ConstParas.DetailPageFrom.ByParas,
+    pur: ConstParas.DetailPagePurpose.ByParas,//XPumpByParas = 1, 
+    DpQ: postRequestData.DesignInfo.DpQ,
+    DpH: postRequestData.DesignInfo.DpH,
+    DpQu: postRequestData.DesignInfo.UnitQ,
+    DpHu: postRequestData.DesignInfo.UnitH,
+    jzid: postRequestData.JieZhi.ID,
+    jzmd: postRequestData.JieZhi.CalcDensity,
+    jznd: postRequestData.JieZhi.CalcViscosity,
+    jzmz: postRequestData.JieZhi.Name,
+    isndc: prvePathDataObj.DesignInfo.IsVisCorrect,
+    fpt: prvePathDataObj.FilterInfo.FirePumpType,
+    drive: prvePathDataObj.FilterInfo.DriveType,
+    speed: prvePathDataObj.FilterInfo.DieselSpeed
+  };
+
+
+  axiosHelper
+    .post({
+      version: 3,
+      // lang: this.m_currentLanguage,
+      controller: "SelectByParas",
+      action: "GetPageList",
+      data: postRequestData,
+      apiUrlType: "main",
+    })
+    .then((res) => {
+      state.isShowLoadingFrm = false;
+      let result = res.data;
+      if (result.Code != 0) {
+        if (result.Code == -3) {
+          state.tableEmptyContent = `${t('ebookPage.noData.TR')}`
+          if (result.Message.length > 0) state.tableEmptyContent = result.Message
+          ElMessage({
+            message: result.Message,
+            type: "error",
+            duration: 4000,
+            center: true,
+          });
+
+
+          return;
+        } else {
+          ElMessage({
+            message: result.Message,
+            type: "error",
+            duration: 4000,
+            center: true,
+          });
+          // setTimeout(() => {
+          //   that.$router.go(-1); //璇锋眰涓嶅埌鏁版嵁杩斿洖涓婁竴椤�
+          // }, 3000);
+        }
+
+        return;
+      }
+
+      let itemList = result.Data.ItemList;
+      //console.log(itemList, 632);
+
+      var selDesignPtQUnit = state.SelDesignPtQUnit;
+      var selDesignPtHUnit = state.SelDesignPtHUnit;
+      var selDesignPtPUnit = state.SelDesignPtPUnit;
+
+      var resultImg = {};
+      var tableData = [];
+      for (let i = 0; i < itemList.length; i++) {
+        let tableItem = {
+          CatalogID: itemList[i].CatalogID, //绫诲瀷id
+          ChartType: itemList[i].ChartType,
+          SeriesID: itemList[i].SeriesID, //绯诲垪id
+          PumpID: itemList[i].PumpID, //娉礽d
+          ThumbnailImage: "", //瀹炵墿鍥捐矾寰�
+          SereisName: itemList[i].SereisName, //绯诲垪
+          PumpName: itemList[i].PumpName, //娉靛瀷鍙�
+
+          CertifiedPointQ: itemList[i].CertifiedPointQ,
+          CertifiedPointHrange: itemList[i].CertifiedPointHrange,
+          CertifiedPointSpeed: itemList[i].CertifiedPointSpeed,
+          PercentPoint150Q: itemList[i].PercentPoint150Q,
+          PercentPoint150H: itemList[i].PercentPoint150H,
+          PercentPoint150H_per: itemList[i].PercentPoint150H_per,
+          PercentPoint150E: itemList[i].PercentPoint150E,
+          PercentPoint150P: itemList[i].PercentPoint150P,
+          MaxPower: itemList[i].MaxPower,
+
+          WorkSpeed: itemList[i].WorkSpeed, //杞��
+          WorkD2: itemList[i].WorkD2, //鍙惰疆鐩村緞
+          Note: itemList[i].Note, //澶囨敞
+
+          QPerQBep: itemList[i].QPerQBep, //閫夊瀷鐐瑰拰楂樻晥鐐圭殑鐧惧垎姣�
+          Ratedn: itemList[i].Ratedn, //鍘熷棰濆畾杞��(榛樿涓嶆樉绀�)
+          OrginD2: itemList[i].OrginD2, //鍘熷鍙惰疆鐩村緞(榛樿涓嶆樉绀�)
+
+          CutRatio: itemList[i].CutRatio, //鍒囧壊鐜�(榛樿涓嶆樉绀�)
+          StageNumber: itemList[i].StageNumber, //娉电骇鏁�(榛樿涓嶆樉绀�)
+          ShutoffHead: itemList[i].ShutoffHead, //鍏虫鐐规壃绋�(榛樿涓嶆樉绀�)
+          SalePrice: itemList[i].SalePrice, //閿�鍞环(鎶樻墸鍚�)
+          OriginSalePrice: itemList[i].OriginSalePrice, //鎸囧浠�(鍘熷)
+          ChartObjects: itemList[i].ChartObjects, //宸ヤ綔鏇茬嚎
+        };
+        let ThumbnailImage = noneImg //榛樿鍥剧墖璺緞
+        if (itemList[i].ThumbnailImage && itemList[i].ThumbnailImage != "") {
+          ThumbnailImage = window.globalConfig.WebApiUrl.FileUrl + 'Data/' + itemList[i].ThumbnailImage
+        }
+        tableItem.ThumbnailImage = ThumbnailImage
+        if (itemList[i].WorkPtNPSH)
+          tableItem.WorkPtNPSH = itemList[i].WorkPtNPSH.toFixed(1);
+
+        if (itemList[i].WorkPtQ)
+          tableItem.WorkPtQ = UnitHelper.getDispValueQ(
+            UnitHelper.ConvertQ_fromM3H(
+              selDesignPtQUnit,
+              itemList[i].WorkPtQ
+            )
+          );
+        if (itemList[i].PercentPoint150Q)
+          tableItem.PercentPoint150Q = UnitHelper.getDispValueQ(
+            UnitHelper.ConvertQ_fromM3H(
+              selDesignPtQUnit,
+              itemList[i].PercentPoint150Q
+            )
+          );
+        if (itemList[i].WorkPtH)
+          tableItem.WorkPtH = UnitHelper.getDispValueH(
+            UnitHelper.ConvertH_fromM(selDesignPtHUnit, itemList[i].WorkPtH)
+          );
+        if (itemList[i].PercentPoint150H)
+          tableItem.PercentPoint150H = UnitHelper.getDispValueH(
+            UnitHelper.ConvertH_fromM(
+              selDesignPtHUnit,
+              itemList[i].PercentPoint150H
+            )
+          );
+        if (itemList[i].ShutoffHead)
+          tableItem.ShutoffHead = UnitHelper.getDispValueH(
+            UnitHelper.ConvertH_fromM(
+              selDesignPtHUnit,
+              itemList[i].ShutoffHead
+            )
+          );
+        if (itemList[i].WorkPtE) tableItem.WorkPtE = itemList[i].WorkPtE;
+        if (itemList[i].WorkPtP)
+          tableItem.WorkPtP = UnitHelper.getDispValueP(
+            UnitHelper.ConvertP_fromKW(
+              selDesignPtPUnit,
+              itemList[i].WorkPtP
+            )
+          );
+        if (itemList[i].PercentPoint150P)
+          tableItem.PercentPoint150P = UnitHelper.getDispValueP(
+            UnitHelper.ConvertP_fromKW(
+              selDesignPtPUnit,
+              itemList[i].PercentPoint150P
+            )
+          );
+
+        if (itemList[i].MaxPower)
+          tableItem.MaxPower = UnitHelper.getDispValueP(
+            UnitHelper.ConvertP_fromKW(
+              selDesignPtPUnit,
+              itemList[i].MaxPower
+            )
+          );
+
+        tableData.push(tableItem);
+
+        let index = itemList[i].PumpID.toString();
+        resultImg[index] = itemList[i].ChartObjects;
+      }
+      state.tableData = tableData;
+      setTimeout(() => {
+        buildAllChartImg(resultImg);
+      }, 500);
+      // console.log(that.tableData, 525);
+      //console.log(that.resultImg, 547);
+    })
+    .catch((err) => {
+      state.isShowLoadingFrm = false;
+      //console.log("璇锋眰澶辫触:" + err);
+    });
+}
+//杩斿洖涓婚〉
+const toHomePage = () => {
+  router.push({
+    path: buildCurrentLanguageUrl(`/Index`),
+  });
+}
+//琛ㄥご鏄剧ず鎴栬�呴殣钘�
+const getColumnVisbileStatus = (label) => {
+  let index = state.m_dispColumnNameList.indexOf(label);
+  return index == -1 ? false : true;
+}
+//鐩戝惉褰撳墠鐐瑰嚮鐨勬车鍚嶇О鐨勫睘鎬�
+const clickPumpNameCell = (index, row) => {
+  state.detailPageQueryModel.SID = row.SeriesID;
+  state.detailPageQueryModel.PID = row.PumpID;
+  let routerPath = buildCurrentLanguageUrl(`/byParas/Index`);
+  let query = state.detailPageQueryModel;
+  let routeData = router.resolve({ path: routerPath, query: query });
+  window.open(routeData.href, "_blank");
+  // window.open(routeData.href, "_blank");
+}
+//鐩戝惉鐐瑰嚮鐨勫綋鍓嶈〃鏍艰鐨勮鎯�
+const clickDetailCell = (index, row) => {
+  state.detailPageQueryModel.SID = row.SeriesID;
+  state.detailPageQueryModel.PID = row.PumpID;
+  let routerPath = buildCurrentLanguageUrl(`/byParas/Index`);
+  let query = state.detailPageQueryModel;
+  let routeData = router.resolve({ path: routerPath, query: query });
+  window.open(routeData.href, "_blank");
+  // window.open(routeData.href, "_blank");
+}
+//涓婁竴姝�
+const prevPage = () => {
+  router.go(-1);
+}
+//
+const buildAllChartImg = (resultImg) => {
+  document
+    .querySelectorAll("div[data-svg=true]")
+    .forEach(function (element) {
+      let $this = element;
+      let pumpId = $this.getAttribute("data-pump_id");
+      let chartType = $this.getAttribute("data-pump_ChartType");
+      if (pumpId in resultImg) {
+        drawChart(resultImg[pumpId], pumpId, 180, 300, chartType);
+      }
+    });
+}
+//
+const drawChart = (data, container, width, height, chartType) => {
+
+  let c = new thumbnailChart.ThumbnailChart();
+  var chartStyle = window.pageConfig.ChartStyle;
+  c.setChartStyle(chartStyle);
+
+  if (chartType == 4 || chartType == "4") {
+    c.setContainerDivInfo(container, 220, 120);
+    c.setDesignPoint(state.SelDesignPtQ_StdUnit, state.SelDesignPtH_StdUnit);
+    let myChart = c.createChartZlp(data);
+  } else {
+    c.setContainerDivInfo(container, 220, 120);
+    c.setDesignPoint(state.SelDesignPtQ_StdUnit, state.SelDesignPtH_StdUnit);
+    let myChart = c.createChartLxp(data);
+  }
+}
+// 鏍规嵁prop鍒ゆ柇鏄鏈塼oolTip
+const hasToolTipByProp = (prop, TipColumns) => {
+  if (!TipColumns || 0 == TipColumns.length) {
+    return false
+  }
+  for (let i = 0; i < TipColumns.length; i++) {
+    let item = TipColumns[i];
+    if (prop == item.Col) {
+      return true;
+    }
+  }
+  return false;
+}
+const getNoteByProp = (prop, TipColumns) => {
+  for (let i = 0; i < TipColumns.length; i++) {
+    let item = TipColumns[i];
+    if (item.Col == prop) {
+      return item.Note
+    }
+  }
+  return ""
+}
+defineExpose({ initialPage })
+</script>
+
+<style lang="scss">
+//scoped  //缁勪欢鏃朵娇鐢�
+.selpumplist {
+  height: 100%;
+  width: 100%;
+
+  .el-table__header {
+    background-color: rgb(176, 216, 221);
+  }
+
+  .el-button {
+    padding: 0.1rem 0.15rem;
+
+    &.active {
+      background-color: #6396c2;
+      color: #fff;
+    }
+  }
+
+  .tableBox {
+    width: 100%;
+  }
+
+  .el-table .cell {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+
+  .tabHead {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+  }
+
+  .tabHead>div {
+    font-size: 0.14rem;
+  }
+
+  .el-table th>.cell {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+}
+
+.pumplist_dropdown_menu {
+  .el-checkbox {
+    display: block;
+  }
+
+  .table-default-style {
+    position: relative;
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    i {
+      position: absolute;
+      left: 0.1rem;
+      font-size: .18rem;
+    }
+  }
+
+  .bg-red {
+    color: red;
+    font-weight: bold;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/SPump/Select/PumpList/General.vue b/src/views/SPump/Select/PumpList/General.vue
new file mode 100644
index 0000000..993ccfa
--- /dev/null
+++ b/src/views/SPump/Select/PumpList/General.vue
@@ -0,0 +1,1741 @@
+<template>
+  <div style="height: 100%">
+    <page-head>
+      <template #customer>
+        <div class="customer-style">
+          <div style="
+              font-size: 0.28rem;
+              color: #003da6;
+              font-family: 'PingFang SC';
+            ">
+            {{ state.m_headerTitle }}
+          </div>
+        </div>
+      </template>
+    </page-head>
+    <div style="height: calc(100% - 0.86rem)" ref="selpumplist" class="selpumplist" v-loading="state.isShowLoadingFrm"
+      element-loading-background="rgba(255,255,255, 0.8)">
+      <div class="nav_header_box">
+        <div class="nav_header">
+          <div style="cursor: pointer" class="nav_header_a" @click="toHomePage">
+            {{ t("selectPage.index.TR") }}
+          </div>
+          <div style="cursor: pointer" class="nav_header_a" @click="prevPage">
+            {{ t("selectPage.selparas.TR") }}
+          </div>
+        </div>
+        <div class="nav_header_right">
+          <!-- 鎺掑簭鏂瑰紡 -->
+          <el-dropdown v-if="true" :hide-on-click="true" @command="handleSortMethod" trigger="click" :max-height="300"
+            style="margin-right: 10px">
+            <el-button class="btn_color">
+              {{ t("selectPage.sortMethod.TR") }}
+              <el-icon class="el-icon--right">
+                <arrow-down />
+              </el-icon>
+            </el-button>
+            <template #dropdown>
+              <el-dropdown-menu class="pumplist_dropdown_menu">
+                <el-dropdown-item command="efficiencySort">
+                  <div class="check-icon-style">
+                    <el-icon v-if="state.currentSortMethodIndex == 1" color="blue">
+                      <Check />
+                    </el-icon>
+                  </div>
+                  {{ t("selectPage.efficiencySort.TR") }}
+                </el-dropdown-item>
+                <el-dropdown-item command="compreSort">
+                  <div class="check-icon-style">
+                    <el-icon v-if="state.currentSortMethodIndex == 2" color="blue">
+                      <Check />
+                    </el-icon>
+                  </div>
+                  {{ t("selectPage.qPerQBepSort.TR") }}
+                </el-dropdown-item>
+              </el-dropdown-menu>
+            </template>
+          </el-dropdown>
+          <!-- 鍒楅�夋嫨 -->
+          <el-popover placement="bottom" width="90" trigger="click" max-height="300" popper-class="col-select-popStyle">
+            <el-scrollbar height="500px">
+              <el-checkbox-group v-model="state.m_dispColumnNameList">
+                <el-checkbox v-for="item in state.m_columnOptions" v-model="item.label" :key="item.value"
+                  :value="item.label" :disabled="item.disable">{{ item.label }}</el-checkbox>
+              </el-checkbox-group>
+            </el-scrollbar>
+            <template #reference>
+              <el-button class="btn_color">
+                {{ t("selectPage.selRow.TR") }}
+                <el-icon class="el-icon--right"><arrow-down /></el-icon>
+              </el-button>
+            </template>
+          </el-popover>
+          <!-- 姣旇緝 -->
+          <el-button class="btn_color" @click="toCompare4Select">
+            {{ t("header.compare.TR") }}
+          </el-button>
+          <!-- 瀵煎嚭 -->
+          <el-button class="btn_color" @click="exportExcel">
+            {{ t("selectPage.export.TR") }}
+          </el-button>
+          <span class="btn_span custom-btn-span" @click="prevPage">
+            {{ t("selectPage.previous.TR") }}
+          </span>
+        </div>
+      </div>
+      <div class="tableBox">
+      <!-- 鐢ㄤ簬灞曠ず鐨勮〃鏍� -->
+        <el-table ref="tableList" :data="state.disp_tableData" border stripe :max-height="state.tableMaxHeight"
+          style="width: 100%" :header-cell-style="{
+            background: '#b0d8dd',
+            color: '#606266',
+            height: '0.63rem',
+          }" @selection-change="handleTableSelectionChange" :empty-text="state.tableEmptyContent">
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.physical.TR'))" fixed align="center"
+            header-align="center" width="200" :label="t('selectPage.physical.TR')">
+            <template #default="scope">
+              <el-tooltip class="item" :enterable="true" effect="dark" placement="right-start">
+                <template #content>
+                  {{ t("ebookPage.noProfile.TR") }}
+                </template>
+                <div>
+                  <img :src="scope.row.ThumbnailImage" :onerror="handleOnError" class="thumbnail-img-style"
+                    :alt="`${scope.row.groupName}`" />
+                </div>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.series.TR'))" align="center" header-align="center"
+            width="120" fixed prop="SereisName" :label="t('selectPage.series.TR')">
+          </el-table-column>
+          <el-table-column sortable v-if="getColumnVisbileStatus(t('selectPage.model.TR'))" align="center"
+            header-align="center" width="160" fixed prop="PumpName" :label="t('selectPage.model.TR')">
+            <template #default="scope">
+              <div @click="clickPumpNameCell(scope.$index, scope.row)">
+                <span id="series_selected_name" style="cursor: pointer">{{
+                  scope.row.PumpName
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" header-align="center" width="300" fixed prop="WorkCurveGroup"
+            :label="t('selectPage.diagram.TR')">
+            <template #default="scope">
+              <!-- style="width: 1.5rem; height: 0.9rem" -->
+              <div class="CurveChart" :data-svg="true" :id="scope.row.PumpID" :data-pump_id="scope.row.PumpID"
+                :data-pump_charttype="scope.row.ChartType"></div>
+            </template>
+          </el-table-column>
+          <!-- 娴侀噺 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.flow.TR'))" align="right" header-align="center"
+            prop="WorkPtQ" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.flow.TR") }}</div>
+                <div>{{ state.SelDesignPtQUnitName }}</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtQ', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtQ", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtQ', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtQ }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtQ }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鎵▼ -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.head.TR'))" align="right" header-align="center"
+            prop="WorkPtH" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.head.TR") }}</div>
+                <div>{{ state.SelDesignPtHUnitName }}</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtH', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtH", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtH', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtH }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtH }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鏁堢巼 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.efficiency.TR'))" sortable align="right"
+            header-align="center" width="120" prop="WorkPtE" class-name="tool-tip-cell-style"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.efficiency.TR") }}</div>
+                <div>(%)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtE', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtE", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtE', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtE }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtE }}</span>
+            </template>
+          </el-table-column>
+          <!--  -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.PerRated.TR'))" align="right"
+            header-align="center" width="120" prop="PerRated"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.PerRated.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.PerRatedQ.TR'))" align="right"
+            header-align="center" width="120" prop="PerRatedQ"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.PerRatedQ.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 杞村姛鐜� -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.shaftPower.TR'))" align="right"
+            header-align="center" prop="WorkPtP" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.shaftPower.TR") }}</div>
+                <div>({{ state.SelDesignPtPUnitName }})</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtP', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtP", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtP', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtP }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtP }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鐢垫満鍔熺巼 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('detailPage.motorPower.TR'))" align="right"
+            header-align="center" prop="MotorPower" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("detailPage.motorPower.TR") }}</div>
+                <div>(kW)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('MotorPower', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("MotorPower", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('MotorPower', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.MotorPower }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.MotorPower }}</span>
+            </template>
+          </el-table-column>
+          <!-- 姹借殌 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.npsh.TR'))" align="right" header-align="center"
+            prop="WorkPtNPSH" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.npsh.TR") }}</div>
+                <div>(m)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtNPSH', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtNPSH", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtNPSH', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtNPSH }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtNPSH }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.speed.TR'))" align="right" header-align="center"
+            prop="WorkSpeed">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.speed.TR") }}</div>
+                <div>rpm</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 鍙惰疆鐩村緞 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.impellerDiameter.TR'))" align="right"
+            header-align="center" prop="WorkD2" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.impellerDiameter.TR") }}</div>
+                <div>(mm)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkD2', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkD2", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkD2', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkD2 }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkD2 }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鏈�澶у厑璁告祦閲� -->
+          <el-table-column v-if="getColumnVisbileStatus('鏈�澶у厑璁告祦閲�')" align="right" header-align="center"
+            prop="AllowableRegionMax" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>鏈�澶у厑璁告祦閲�</div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.note.TR'))" align="center" header-align="center"
+            width="80" prop="Note">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.note.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.ratedSpeed.TR'))" align="center"
+            header-align="center" width="80" prop="Ratedn">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.ratedSpeed.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.vbr.TR'))" align="center" header-align="center"
+            width="80" prop="SpeedRatio">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.vbr.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 鍒囧壊鐜� -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.cuttingRate.TR'))" align="right"
+            header-align="center" prop="CutRatio" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.cuttingRate.TR") }}</div>
+                <div>(%)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('CutRatio', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("CutRatio", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('CutRatio', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.CutRatio }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.CutRatio }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.guidePrice.TR'))" align="center"
+            header-align="center" width="80" prop="OriginSalePrice">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.guidePrice.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.salesPrice.TR'))" align="center"
+            header-align="center" width="80" prop="SalePrice">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.salesPrice.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.pumpStages.TR'))" align="center"
+            header-align="center" width="80" prop="StageNumber">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.pumpStages.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="
+            getColumnVisbileStatus(
+              t('selectPage.originalImpellerDiameter.TR')
+            )
+          " align="center" header-align="center" width="120" prop="OrginD2">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.originalImpellerDiameter.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column :label="t('selectPage.details.TR')" align="right" header-align="center" width="100"
+            fixed="right">
+            <template #default="scope">
+              <el-button size="default" class="btn_color" @click="clickDetailCell(scope.$index, scope.row)">{{
+                t("selectPage.details.TR") }}</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <!-- 鐢ㄤ簬瀵煎嚭鐨勮〃鏍� -->
+        <el-table v-show="false" id="export-sel-list" ref="exportSelListRef" :data="state.exportTableData"
+          :empty-text="state.tableEmptyContent">
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.series.TR'))" align="center" header-align="center"
+            width="120" prop="SereisName" :label="t('selectPage.series.TR')">
+          </el-table-column>
+          <el-table-column sortable v-if="getColumnVisbileStatus(t('selectPage.model.TR'))" align="center"
+            header-align="center" width="160" prop="PumpName" :label="t('selectPage.model.TR')">
+            <template #default="scope">
+              <div @click="clickPumpNameCell(scope.$index, scope.row)">
+                <span id="series_selected_name" style="cursor: pointer">{{
+                  scope.row.PumpName
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 娴侀噺 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.flow.TR'))" align="right" header-align="center"
+            prop="WorkPtQ" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.flow.TR") }}</div>
+                <div>{{ state.SelDesignPtQUnitName }}</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtQ', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtQ", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtQ', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtQ }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtQ }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鎵▼ -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.head.TR'))" align="right" header-align="center"
+            prop="WorkPtH" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.head.TR") }}</div>
+                <div>{{ state.SelDesignPtHUnitName }}</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtH', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtH", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtH', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtH }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtH }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鏁堢巼 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.efficiency.TR'))" sortable align="right"
+            header-align="center" width="120" prop="WorkPtE" class-name="tool-tip-cell-style"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.efficiency.TR") }}</div>
+                <div>(%)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtE', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtE", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtE', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtE }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtE }}</span>
+            </template>
+          </el-table-column>
+          <!--  -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.PerRated.TR'))" align="right"
+            header-align="center" width="120" prop="PerRated"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.PerRated.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.PerRatedQ.TR'))" align="right"
+            header-align="center" width="120" prop="PerRatedQ"
+            style="display: flex; justify-content: center; align-items: center">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.PerRatedQ.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 杞村姛鐜� -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.shaftPower.TR'))" align="right"
+            header-align="center" prop="WorkPtP" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.shaftPower.TR") }}</div>
+                <div>({{ state.SelDesignPtPUnitName }})</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtP', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtP", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtP', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtP }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtP }}</span>
+            </template>
+          </el-table-column>
+          <!-- 鐢垫満鍔熺巼 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('detailPage.motorPower.TR'))" align="right"
+            header-align="center" prop="MotorPower" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("detailPage.motorPower.TR") }}</div>
+                <div>(kW)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('MotorPower', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("MotorPower", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('MotorPower', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.MotorPower }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.MotorPower }}</span>
+            </template>
+          </el-table-column>
+          <!-- 姹借殌 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.npsh.TR'))" align="right" header-align="center"
+            prop="WorkPtNPSH" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.npsh.TR") }}</div>
+                <div>(m)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkPtNPSH', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkPtNPSH", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkPtNPSH', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkPtNPSH }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkPtNPSH }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.speed.TR'))" align="right" header-align="center"
+            prop="WorkSpeed">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.speed.TR") }}</div>
+                <div>rpm</div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 鍙惰疆鐩村緞 -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.impellerDiameter.TR'))" align="right"
+            header-align="center" prop="WorkD2" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.impellerDiameter.TR") }}</div>
+                <div>({{ state.SelDesignPtD2UnitName }})</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('WorkD2', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("WorkD2", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('WorkD2', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.WorkD2 }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.WorkD2 }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.note.TR'))" align="center" header-align="center"
+            width="80" prop="Note">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.note.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.ratedSpeed.TR'))" align="center"
+            header-align="center" width="80" prop="Ratedn">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.ratedSpeed.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.vbr.TR'))" align="center" header-align="center"
+            width="80" prop="SpeedRatio">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.vbr.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <!-- 鍒囧壊鐜� -->
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.cuttingRate.TR'))" align="right"
+            header-align="center" prop="CutRatio" class-name="tool-tip-cell-style">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.cuttingRate.TR") }}</div>
+                <div>(%)</div>
+              </div>
+            </template>
+            <template #default="scope">
+              <el-tooltip v-if="hasToolTipByProp('CutRatio', scope.row.TipColumns)" class="item" :enterable="true"
+                effect="dark" placement="top">
+                <template #content>
+                  {{ getNoteByProp("CutRatio", scope.row.TipColumns) }}
+                </template>
+                <div class="table-default-style" :class="hasToolTipByProp('CutRatio', scope.row.TipColumns)
+                    ? 'bg-yellow'
+                    : ''
+                  ">
+                  <el-icon>
+                    <warning-filled />
+                  </el-icon>
+                  <span>{{ scope.row.CutRatio }}</span>
+                </div>
+              </el-tooltip>
+              <span v-else>{{ scope.row.CutRatio }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.guidePrice.TR'))" align="center"
+            header-align="center" width="80" prop="OriginSalePrice">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.guidePrice.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.salesPrice.TR'))" align="center"
+            header-align="center" width="80" prop="SalePrice">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.salesPrice.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="getColumnVisbileStatus(t('selectPage.pumpStages.TR'))" align="center"
+            header-align="center" width="80" prop="StageNumber">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.pumpStages.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="
+            getColumnVisbileStatus(
+              t('selectPage.originalImpellerDiameter.TR')
+            )
+          " align="center" header-align="center" width="120" prop="OrginD2">
+            <template #header>
+              <div class="tabHead">
+                <div>{{ t("selectPage.originalImpellerDiameter.TR") }}</div>
+                <div></div>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+    <page-footer></page-footer>
+  </div>
+</template>
+
+<script setup name="pumpListGeneral">
+import errorImg from "../../assets/img_fail.png";
+import { onMounted, reactive, ref, watch, nextTick } from "vue";
+import {
+  ElMessage,
+  ElTable,
+  ElTableColumn,
+  ElDropdown,
+  ElDropdownItem,
+  ElDropdownMenu,
+  ElButton,
+  ElTooltip,
+  ElPopover,
+  ElCheckboxGroup,
+  ElCheckbox,
+  ElScrollbar,
+} from "element-plus";
+import thumbnailChart from "/@/components/chart/ThumbnailChart.js";
+import UnitHelper from "/@/utils/unit";
+import FileSaver from "file-saver";
+import * as XLSX from "xlsx";
+import ConstParas from "/@/utils/constParas";
+import PageHead from "/@/views/head.vue";
+import PageFooter from "/@/views/footer.vue";
+import { useLanguageMixin } from "/@/mixin/languageHook.js";
+import axiosHelper from "/@/utils/axiosHelper.js";
+import UserSettingsHelper from "/@/utils/userSetting";
+import { useI18n } from "vue-i18n";
+import { useSelect } from "/@/store/select.js";
+import { useRoute, useRouter } from "vue-router";
+import noneImg from "/@/views/assets/none_img.png";
+let { getCurrentLanguageType, buildCurrentLanguageUrl, getLanguageParaName } = useLanguageMixin();
+const m_currentLanguage = getCurrentLanguageType();
+const { t } = useI18n();
+
+const emits = defineEmits(["prevPageClick"]);
+const selectStore = useSelect();
+
+const state = reactive({
+  detailPageQueryModel: {}, //鐢ㄤ簬浼犻�佺粰涓嬩竴涓〉闈㈢殑绫�
+
+  SelDesignPtQ_StdUnit: 0, //鏍囧噯鍗曚綅鐨勮璁$偣(鐢ㄤ簬缁樺埗灏忓浘)
+  SelDesignPtH_StdUnit: 0, //鏍囧噯鍗曚綅鐨勮璁$偣(鐢ㄤ簬缁樺埗灏忓浘)
+
+  SelDesignPtQUnit: 0,
+  SelDesignPtQUnitName: "m鲁/h",
+
+  SelDesignPtHUnit: 1,
+  SelDesignPtHUnitName: "m",
+
+  SelDesignPtPUnit: 1,
+  SelDesignPtPUnitName: "kW",
+
+  SelDesignPtD2Unit: 0,
+  SelDesignPtD2UnitName: "mm",
+
+  isShowLoadingFrm: true, //绛夊緟妗�
+
+  tableData: [],
+  disp_tableData: [],
+  exportTableData: [],
+  m_columnOptions: [
+    {
+      label: `${t("selectPage.physical.TR")}`,
+      unit: "",
+      value: 1,
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.series.TR")}`,
+      unit: "",
+      value: 2,
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.model.TR")}`,
+      unit: "",
+      value: 3,
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.diagram.TR")}`,
+      unit: "",
+      value: 4,
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.flow.TR")}`,
+      unit: "(m鲁/h)",
+      value: 5,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.head.TR")}`,
+      unit: "(m)",
+      value: 6,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.efficiency.TR")}`,
+      unit: "(kW)",
+      value: 7,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.shaftPower.TR")}`,
+      unit: "(kW)",
+      value: "",
+      disable: false,
+      visible: true,
+    },
+    //鐢垫満鍔熺巼
+    {
+      label: `${t("detailPage.motorPower.TR")}`,
+      unit: "(kW)",
+      value: "MotorPower",
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.npsh.TR")}`,
+      unit: "(m)",
+      value: 8,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.efficiency.TR")}`,
+      unit: "(%)",
+      value: 9,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.speed.TR")}`,
+      unit: "(rpm)",
+      value: 10,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.impellerDiameter.TR")}`,
+      unit: "mm",
+      value: 11,
+      disable: false,
+      visible: true,
+    },
+    {
+      label: `鏈�澶у厑璁告祦閲廯,
+      unit: "",
+      value: "",
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.vbr.TR")}`,
+      unit: "%",
+      value: 12,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.cuttingRate.TR")}`,
+      unit: "(%)",
+      value: 13,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.salesPrice.TR")}`,
+      value: 14,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.guidePrice.TR")}`,
+      value: 24,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.pumpStages.TR")}`,
+      value: 15,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.originalImpellerDiameter.TR")}`,
+      unit: "mm",
+      value: 16,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.deadCenterLift.TR")}`,
+      unit: "(m)",
+      value: 17,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.ratedSpeed.TR")}`,
+      unit: "(rpm)",
+      value: 19,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.note.TR")}`,
+      value: 22,
+      disable: true,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.details.TR")}`,
+      value: 23,
+      disable: true,
+      visible: true,
+    },
+    {
+      label: `${t("selectPage.PerRated.TR")}`,
+      value: 25,
+      disable: false,
+      visible: false,
+    },
+    {
+      label: `${t("selectPage.PerRatedQ.TR")}`,
+      value: 26,
+      disable: false,
+      visible: false,
+    },
+  ],
+  m_dispColumnNameList: [],
+  tableMaxHeight: 790,
+  m_currentSelectArr: [], //瀛樻斁褰撳墠閫夋嫨鐨勬暟缁�
+  m_compare4SelectList: [], //褰撳墠鐨勬瘮杈冨垪琛�
+  currentSelectIcon: "el-icon-check",
+  currentSortMethodIndex: 2, //褰撳墠鎺掑簭鏂规硶榛樿鏄患鍚堟帓搴�
+
+  m_currentFromPath: "123", //褰撳墠鏄摢涓〉闈㈣烦杞繃鏉ョ殑
+  tableEmptyContent: `Loading...`,
+  m_headerTitle: "",
+  m_NPSHa_Ratio: 0.6, //姘旇殌宸�肩郴鏁�
+});
+const route = useRoute();
+const router = useRouter();
+const tableList = ref();
+watch(
+  () => state.m_dispColumnNameList,
+  (m_dispColumnNameList) => { },
+  { deep: true, immediate: true }
+);
+
+const initialPage = () => {
+  state.tableEmptyContent = `Loading...`;
+  const pageConfig = window.pageConfig.SelParasPage;
+  let currentLang = getLanguageParaName();
+  if (pageConfig.HeadSetting) {
+    state.m_headerTitle = pageConfig.HeadSetting.Title[currentLang];
+  }
+
+  state.m_NPSHa_Ratio = pageConfig.NPSHaRatio ?? state.m_NPSHa_Ratio;
+
+  let prvePathDataObj = selectStore.ByParas.selectParas;
+
+  if (prvePathDataObj == null) return;
+  if (prvePathDataObj.DesignInfo == null) return;
+
+  var selDesignPtQ = prvePathDataObj.DesignInfo.DpQ;
+  var selDesignPtQUnit = prvePathDataObj.DesignInfo.UnitQ;
+  var selDesignPtH = prvePathDataObj.DesignInfo.DpH;
+  var selDesignPtHUnit = prvePathDataObj.DesignInfo.UnitH;
+
+  state.SelDesignPtQUnit = selDesignPtQUnit;
+  state.SelDesignPtQUnitName = UnitHelper.GetUnitNameQ(selDesignPtQUnit);
+  state.SelDesignPtQ_StdUnit = UnitHelper.ConvertQ_toM3H(
+    selDesignPtQUnit,
+    selDesignPtQ
+  );
+
+  state.SelDesignPtHUnit = selDesignPtHUnit;
+  state.SelDesignPtHUnitName = UnitHelper.GetUnitNameH(selDesignPtHUnit);
+  state.SelDesignPtH_StdUnit = UnitHelper.ConvertH_toM(
+    selDesignPtHUnit,
+    selDesignPtH
+  );
+
+  let D2_unit_setting = UserSettingsHelper.getD2UnitSetting(m_currentLanguage);
+  if (D2_unit_setting >= 0) {
+    state.SelDesignPtD2Unit = D2_unit_setting;
+    state.SelDesignPtD2UnitName = UnitHelper.GetUnitNameLength(D2_unit_setting);
+  }
+
+  var p_unit_setting =
+    UserSettingsHelper.getPowerUnitSetting(m_currentLanguage);
+  if (p_unit_setting >= 0) {
+    state.SelDesignPtPUnit = p_unit_setting;
+    state.SelDesignPtPUnitName = UnitHelper.GetUnitNameP(p_unit_setting);
+  }
+
+  var dispColumnNameList = [];
+  state.m_columnOptions.forEach((element) => {
+    if (element.visible) dispColumnNameList.push(element.label);
+
+    if (element.label.indexOf("娴侀噺") >= 0)
+      element.unit = UnitHelper.GetUnitNameQ(selDesignPtQUnit);
+    if (element.label.indexOf("鎵▼") >= 0)
+      element.unit = UnitHelper.GetUnitNameH(selDesignPtHUnit);
+  });
+  state.m_dispColumnNameList = dispColumnNameList;
+  // 鍒濆鍖栨暟鎹�
+  initData(prvePathDataObj);
+
+  nextTick(function () {
+    let headHeight = 0;
+    let footerHeight = 0;
+    if (document.querySelector("#app header")) {
+      headHeight = document.querySelector("#app header").clientHeight;
+    }
+    if (document.querySelector("#app footer")) {
+      footerHeight = document.querySelector("#app footer").clientHeight;
+    }
+    state.tableMaxHeight =
+      document.body.clientHeight - headHeight - footerHeight - 40; //
+  });
+  window.onresize = () => {
+    let headHeight = 0;
+    let footerHeight = 0;
+    if (document.querySelector("#app header")) {
+      headHeight = document.querySelector("#app header").clientHeight;
+    }
+    if (document.querySelector("#app footer")) {
+      footerHeight = document.querySelector("#app footer").clientHeight;
+    }
+    return (() => {
+      //绐楀彛鍙樺寲鏄缃〃鏍兼渶澶ч珮搴︼紝浣垮叾閫傚簲绐楀彛鍙樺寲
+      state.tableMaxHeight =
+        document.body.clientHeight - headHeight - footerHeight - 40;
+    })();
+  };
+};
+//鍒濆鍖栨暟鎹�
+const initData = (prvePathDataObj) => {
+  document.title = `${t("selectPage.selResult.TR")}`;
+  // 鍏堝皢鏁版嵁缃┖
+  state.tableData = [];
+  state.disp_tableData = [];
+
+  if (prvePathDataObj.DesignInfo.IsAllowCut == undefined) {
+    prvePathDataObj.DesignInfo.IsAllowCut = true;
+  }
+
+  if (prvePathDataObj.DesignInfo.IsAllowFrequence == undefined) {
+    prvePathDataObj.DesignInfo.IsAllowFrequence = true;
+  }
+
+  let postRequestData = {
+    //浠嬭川
+    JieZhi: {
+      ID: prvePathDataObj.JieZhi.ID, //浠嬭川id
+      Name: prvePathDataObj.JieZhi.Name, //浠嬭川鍚嶇О
+      CalcDensity: prvePathDataObj.JieZhi.CalcDensity, //瀵嗗害
+      CalcViscosity: prvePathDataObj.JieZhi.CalcViscosity, //绮樺害
+    },
+    //绛涢�変俊鎭�
+    FilterInfo: {
+      DriveType: prvePathDataObj.FilterInfo.DriveType, //璁惧绫诲瀷 0鐢垫満 3鏌存补鏈�
+      KeyWord: prvePathDataObj.FilterInfo.KeyWord, //鍏抽敭瀛� 鏆傛椂榛樿绌�
+      FirePumpType: prvePathDataObj.FilterInfo.FirePumpType, // 娑堥槻娉电被鍨�
+      MotorPoleNum: prvePathDataObj.FilterInfo.MotorPoleNum, //鐢垫満鏁堢巼绛夌骇 鏆傛椂涓虹┖
+      MotorPower: prvePathDataObj.FilterInfo.MotorPower, //鐢垫満鍔熺巼
+      MotorFrequence: prvePathDataObj.FilterInfo.MotorFrequence, //鐢垫満璧吂
+      // "MotorStandard": prvePathDataObj.FilterInfo.MotorStandard?'International' : 'US Standard',//瀹㈡埛涓烘嘲鎴堢殑鏃跺�欎娇鐢�
+      MotorStandard: prvePathDataObj.FilterInfo.MotorStandard,
+      DieselSpeed: prvePathDataObj.FilterInfo.DieselSpeed == "" ? 0 : prvePathDataObj.FilterInfo.DieselSpeed, //鏌存补鏈鸿浆閫� 鏆傛椂榛樿
+      MinEta: prvePathDataObj.FilterInfo.MinEta + ""//鏁堢巼瑕佹眰
+    },
+    //璁捐鐐瑰弬鏁�
+    DesignInfo: {
+      UnitQ: prvePathDataObj.DesignInfo.UnitQ, //娴侀噺鍗曚綅
+      UnitH: prvePathDataObj.DesignInfo.UnitH, //鎵▼鍗曚綅
+      DpQ: prvePathDataObj.DesignInfo.DpQ, //杈撳叆鐨勬祦閲忕殑鍊�
+      DpH: prvePathDataObj.DesignInfo.DpH, //杈撳叆鐨勬壃绋嬬殑鍊�
+      IsAllowCut: prvePathDataObj.DesignInfo.IsAllowCut, //鏄惁鍏佽鍒囧壊
+      IsAllowFrequence: prvePathDataObj.DesignInfo.IsAllowFrequence, //鏄惁鍏佽鍙橀
+      PointTolerance: prvePathDataObj.DesignInfo.PointTolerance, // 鐐瑰宸寖鍥� 榛樿绌�
+      IsVisCorrect: prvePathDataObj.DesignInfo.IsVisCorrect, //鏄惁淇绮樺害 榛樿false
+    },
+    SeriesID: prvePathDataObj.FilterInfo.SeriesID, //娉电郴鍒桰D
+    CatalogID: prvePathDataObj.FilterInfo.CatalogID, //娉电被鍨媔d
+    SoftType: window.globalConfig.SoftType,
+    SystemInfo: "",
+  };
+
+  state.detailPageQueryModel = {
+    //鐢ㄤ簬鐐瑰嚮琛ㄦ牸璇︽儏浼犲嚭鐨勫弬鏁�
+    SID: "",
+    PID: "",
+    from: ConstParas.DetailPageFrom.ByParas,
+    pur: ConstParas.DetailPagePurpose.ByParas,
+    DpQ: postRequestData.DesignInfo.DpQ,
+    DpH: postRequestData.DesignInfo.DpH,
+    DpQu: postRequestData.DesignInfo.UnitQ,
+    DpHu: postRequestData.DesignInfo.UnitH,
+    jzid: postRequestData.JieZhi.ID,
+    jzmd: postRequestData.JieZhi.CalcDensity,
+    jznd: postRequestData.JieZhi.CalcViscosity,
+    jzmz: postRequestData.JieZhi.Name,
+    jzvc: prvePathDataObj.JieZhi.V_C,
+    isndc: prvePathDataObj.DesignInfo.IsVisCorrect,
+    fpt: prvePathDataObj.FilterInfo.FirePumpType,
+    TGrade: postRequestData.DesignInfo.PointTolerance?.ToleranceGrade,
+    TRatioMinQ: postRequestData.DesignInfo.PointTolerance?.RatioMinQ,
+    TRatioMaxQ: postRequestData.DesignInfo.PointTolerance?.RatioMaxQ,
+    TRatioMinH: postRequestData.DesignInfo.PointTolerance?.RatioMinH,
+    TRatioMaxH: postRequestData.DesignInfo.PointTolerance?.RatioMaxH,
+    drive: prvePathDataObj.FilterInfo.DriveType,
+    speed: prvePathDataObj.FilterInfo.DieselSpeed,
+  };
+
+  if (!prvePathDataObj.DesignInfo.IsAllowCut) {
+    state.detailPageQueryModel.iscut = 0;
+  }
+
+  if (!prvePathDataObj.DesignInfo.IsAllowFrequence) {
+    state.detailPageQueryModel.isspeed = 0;
+  }
+
+  let selDesignPtQUnit = state.SelDesignPtQUnit;
+  let selDesignPtHUnit = state.SelDesignPtHUnit;
+  let selDesignPtPUnit = state.SelDesignPtPUnit;
+  let selDesignPtD2Unit = state.SelDesignPtD2Unit;
+  //娓呴櫎宸ヤ綔鏇茬嚎
+  clearCurve();
+
+  axiosHelper
+    .post({
+      version: 3,
+      controller: "SelectByParas",
+      action: "GetPageList",
+      data: postRequestData,
+      apiUrlType: "main",
+    })
+    .then((res) => {
+      state.isShowLoadingFrm = false;
+      let result = res.data;
+      if (result.Code != 0) {
+        state.tableEmptyContent = `${t("ebookPage.noData.TR")}`;
+        if (result.Message.length > 0) state.tableEmptyContent = result.Message;
+        if (result.Code == -3) {
+          let errorMsg = t("selectPage.findErr1.TR");
+          if (result.Message.length > 0) {
+            errorMsg = result.Message;
+          }
+          ElMessage({
+            message: `${errorMsg}`,
+            type: "error",
+            duration: 4000,
+            center: true,
+          });
+          let curr_rount1 = window.location.href;
+          setTimeout(() => {
+            var curr_rount2 = window.location.href;
+            if (curr_rount1 == curr_rount2) {
+              router.go(-1);
+            } //璇锋眰涓嶅埌鏁版嵁杩斿洖涓婁竴椤�
+            else {
+              return;
+            }
+          }, 5000);
+
+          return;
+        } else {
+          ElMessage({
+            message: `${result.Message}`,
+            type: "error",
+            duration: 4000,
+            center: true,
+          });
+          setTimeout(() => {
+            router.go(-1); //璇锋眰涓嶅埌鏁版嵁杩斿洖涓婁竴椤�
+          }, 3000);
+        }
+        return;
+      }
+      // console.log(result, 589)
+      let itemList = result.Data.ItemList;
+      var resultImg = {};
+      var tableData = [];
+      for (let i = 0; i < itemList.length; i++) {
+        var item = itemList[i];
+
+        let tableItem = {
+          CatalogID: item.CatalogID, //绫诲瀷id
+          ChartType: item.ChartType,
+          SeriesID: item.SeriesID, //绯诲垪id
+          PumpID: item.PumpID, //娉礽d
+          ThumbnailImage: "", //瀹炵墿鍥捐矾寰�
+          SereisName: item.SereisName, //绯诲垪
+          PumpName: item.PumpName, //娉靛瀷鍙�
+          AllowableRegionMax: item.AllowableRegionMax, //鏈�澶у厑璁告祦閲�
+          WorkSpeed: item.WorkSpeed, //杞��
+          WorkD2: "", //鍙惰疆鐩村緞
+          PerRated: item.PerRated, //閾墝鍙傛暟缁煎悎鍋忓樊鍊�
+          PerRatedQ: item.PerRatedQ, //閾墝鍙傛暟娴侀噺鍋忓樊鍊�
+          MotorPower: item.MotorPower, //鐢垫満鍔熺巼
+
+          Note: item.Note, //澶囨敞
+          PlaceAngle: item.PlaceAngle, //瀹夋斁瑙�
+          QPerQBep: item.QPerQBep, //閫夊瀷鐐瑰拰楂樻晥鐐圭殑鐧惧垎姣�
+          Ratedn: item.Ratedn, //鍘熷棰濆畾杞��(榛樿涓嶆樉绀�)
+          OrginD2: item.OrginD2, //鍘熷鍙惰疆鐩村緞(榛樿涓嶆樉绀�)
+          Note: item.Note,
+          CutRatio: item.CutRatio, //鍒囧壊鐜�(榛樿涓嶆樉绀�)
+          StageNumber: item.StageNumber, //娉电骇鏁�(榛樿涓嶆樉绀�)
+          ShutoffHead: item.ShutoffHead, //鍏虫鐐规壃绋�(榛樿涓嶆樉绀�)
+          SalePrice: item.SalePrice, //閿�鍞环(鎶樻墸鍚�)
+          OriginSalePrice: item.OriginSalePrice, //鎸囧浠�(鍘熷)
+          ChartObjects: item.ChartObjects, //宸ヤ綔鏇茬嚎
+          TipColumns: item.TipColumns ?? [],
+        };
+        let ThumbnailImage = noneImg; //榛樿鍥剧墖璺緞
+        if (item.ThumbnailImage && item.ThumbnailImage != "") {
+          ThumbnailImage =
+            window.globalConfig.WebApiUrl.FileUrl +
+            "Data/" +
+            item.ThumbnailImage;
+        }
+        tableItem.ThumbnailImage = ThumbnailImage;
+        // 鍙惰疆鐩村緞
+        if (itemList[i].WorkD2) {
+          const transD2 = (workD2) => {
+            return UnitHelper.getDispValueLength(
+              UnitHelper.ConverLength_FromMM(selDesignPtD2Unit, workD2), true
+            )
+          }
+          let d2_value = itemList[i].WorkD2.split('/');
+          tableItem.WorkD2 = transD2(parseFloat(d2_value[0]));
+          if (d2_value.length > 1) {
+            tableItem.WorkD2 = transD2(parseFloat(d2_value[0])) + '/' + transD2(parseFloat(d2_value[1]));
+          }
+        }
+        if (item.WorkPtNPSH) tableItem.WorkPtNPSH = item.WorkPtNPSH.toFixed(1);
+
+        if (item.WorkPtQ)
+          tableItem.WorkPtQ = UnitHelper.getDispValueQ(
+            UnitHelper.ConvertQ_fromM3H(selDesignPtQUnit, item.WorkPtQ)
+          );
+
+        if (item.WorkPtH)
+          tableItem.WorkPtH = UnitHelper.getDispValueH(
+            UnitHelper.ConvertH_fromM(selDesignPtHUnit, item.WorkPtH)
+          );
+        if (item.WorkPtE) tableItem.WorkPtE = item.WorkPtE;
+        if (item.WorkPtP)
+          tableItem.WorkPtP = UnitHelper.getDispValueP(
+            UnitHelper.ConvertP_fromKW(selDesignPtPUnit, item.WorkPtP)
+          );
+
+        let selParasMotorPower = prvePathDataObj.FilterInfo.MotorPower;
+        let selParasNPSHa = prvePathDataObj.FilterInfo.NPSHa;
+        if (selParasMotorPower !== "" && item.MotorPower > selParasMotorPower) {
+          tableItem.TipColumns.push({
+            Col: "MotorPower",
+            Note: `${t('selectPage.currentMotorPower.TR')}(${item.MotorPower}kW)>${t('selectPage.requiredMotorPower.TR')}(${selParasMotorPower}kW)`,
+          });
+        }
+        if (
+          selParasNPSHa !== "" &&
+          selParasNPSHa - state.m_NPSHa_Ratio <= item.WorkPtNPSH
+        ) {
+          tableItem.TipColumns.push({
+            Col: "WorkPtNPSH",
+            Note: `NPSHr(${item.WorkPtNPSH})鈮PSHa(${selParasNPSHa}-${state.m_NPSHa_Ratio})`,
+          });
+        }
+
+        tableData.push(tableItem);
+
+        let index = item.PumpID.toString();
+        resultImg[index] = item.ChartObjects;
+      }
+      state.tableData = tableData;
+      state.disp_tableData = tableData;
+
+      //svg
+      // var list_svg = document.getElementsByTagName("svg");
+      // if (list_svg != null) {
+      //   for (i = 0; i < list_svg.length; i++) {
+      //     if (list_svg[i] != null)
+      //     //  list_svg[i].parentNode.removeChild(list_svg[i]);
+      //     list_svg[i].remove();
+      //   }
+      // }
+
+      //
+      setTimeout(() => {
+        buildAllChartImg(resultImg);
+      }, 500);
+
+      // 鏍规嵁閰嶇疆鍒囨崲鎺掑簭 涓�0鏃舵槸鏁堢巼鎺掑簭 榛樿缁煎悎鎺掑簭锛堟殏鏃朵笉浣跨敤锛�
+      // if (window.pageConfig.SelectPumpList && window.pageConfig.SelectPumpList.defaultSort == 0) {
+      //   this.currentSortMethodIndex = window.pageConfig.SelectPumpList.defaultSort
+      //   this.$refs.tableList.sort('WorkPtE', 'descending')
+      // }
+      // // 鏍规嵁閰嶇疆鍒囨崲鎺掑簭 涓�2鏃舵槸棰濆畾鐐规帓搴� 涔熷彨缁煎悎鎺掑簭
+      // if (window.pageConfig.SelectPumpList && window.pageConfig.SelectPumpList.defaultSort == 2) {
+      //   this.currentSortMethodIndex = window.pageConfig.SelectPumpList.defaultSort
+      //   this.$refs.tableList.sort('QPerQBep', 'descending')
+      // }
+    })
+    .catch((err) => {
+      state.isShowLoadingFrm = false;
+      console.log("璇锋眰澶辫触:" + err);
+    });
+};
+const clearCurve = () => {
+  //娓呯悊鍘熸潵鐨勫浘琛�
+  let list_svg = document.getElementsByClassName("CurveChart");
+  if (list_svg != null) {
+    for (let i = 0; i < list_svg.length; i++) {
+      if (list_svg[i] != null)
+        //  list_svg[i].parentNode.removeChild(list_svg[i]);
+        list_svg[i].innerHTML = "";
+    }
+  }
+};
+//鐩戝惉閫夋嫨椤圭殑鍙樺寲鐘舵��
+const handleTableSelectionChange = (selection) => {
+  // console.log(selection,780)
+  state.m_currentSelectArr = selection;
+  // console.log(this.m_currentSelectArr,778)
+};
+//璺宠浆鍒版瘮杈冮〉闈�
+const toCompare4Select = () => {
+  // 鏈�灏戜袱涓繘琛屾瘮杈�
+  if (state.m_currentSelectArr.length < 2) {
+    ElMessage({
+      message: `${t("header.compareTip.TR")}`,
+      type: "warning",
+    });
+    return;
+  }
+
+  let compare4SelectList = [];
+  compare4SelectList = compare4SelectList.concat(state.m_currentSelectArr);
+  if (compare4SelectList.length > 10) {
+    return;
+  }
+  let json = JSON.stringify(compare4SelectList);
+  //瀛樺偍
+  localStorage.setItem("compare4SelectList", json);
+  state.m_compare4SelectList = compare4SelectList;
+
+  let routerPath = buildCurrentLanguageUrl(`/Compare4Select/Index`);
+  router.push({ path: routerPath });
+
+  // window.open(routeData.href, "_blank");
+};
+//瀵煎嚭琛ㄦ牸
+const exportExcel = () => {
+  state.exportTableData = state.tableData;
+
+  const fileName = `${document.title}.xlsx`;
+  nextTick(() => {
+    const wb = XLSX.utils.table_to_book(
+      document.getElementById("export-sel-list")
+    );
+    const wbout = XLSX.write(wb, {
+      bookType: "xlsx",
+      bookSST: true,
+      type: "array",
+    });
+    try {
+      FileSaver.saveAs(
+        new Blob([wbout], { type: "application/octet-stream" }),
+        fileName
+      );
+      state.exportTableData = [];
+    } catch (e) {
+      if (typeof console !== "undefined") console.log(e, wbout);
+      return wbout;
+    }
+  });
+};
+
+//杩斿洖涓婚〉
+const toHomePage = () => {
+  router.push({
+    path: buildCurrentLanguageUrl(`/Index`),
+  });
+};
+//琛ㄥご鏄剧ず鎴栬�呴殣钘�
+const getColumnVisbileStatus = (label) => {
+  let index = state.m_dispColumnNameList.indexOf(label);
+  //console.log(index,label,759)
+  return index == -1 ? false : true;
+};
+//鐩戝惉褰撳墠鐐瑰嚮鐨勬车鍚嶇О鐨勫睘鎬�
+const clickPumpNameCell = (index, row) => {
+  openPumpDetailPage(row.SeriesID, row.PumpID);
+};
+//鐩戝惉鐐瑰嚮鐨勫綋鍓嶈〃鏍艰鐨勮鎯�
+const clickDetailCell = (index, row) => {
+  openPumpDetailPage(row.SeriesID, row.PumpID);
+};
+
+const openPumpDetailPage = (sid, pid) => {
+  state.detailPageQueryModel.SID = sid;
+  state.detailPageQueryModel.PID = pid;
+
+  let routerPath = buildCurrentLanguageUrl(`/byParas/Index`);
+  let query = state.detailPageQueryModel;
+  let routeData = router.resolve({ path: routerPath, query: query });
+
+  window.open(routeData.href, "_blank");
+};
+//涓婁竴姝�
+const prevPage = () => {
+  emits("prevPageClick");
+};
+const handleOnError = (event) => {
+  event.target.src = errorImg;
+};
+//
+const buildAllChartImg = (resultImg) => {
+  //console.log(this.resultImg, 2875);
+  document.querySelectorAll("div[data-svg=true]").forEach(function (element) {
+    let $this = element;
+    let pumpId = $this.getAttribute("data-pump_id");
+    let chartType = $this.getAttribute("data-pump_ChartType");
+    if (pumpId in resultImg) {
+      drawChart(resultImg[pumpId], pumpId, 180, 300, chartType);
+    }
+  });
+};
+//
+const drawChart = (data, container, width, height, chartType) => {
+  let c = new thumbnailChart.ThumbnailChart();
+
+  //
+  var chartStyle = window.pageConfig.ChartStyle;
+  c.setChartStyle(chartStyle);
+
+  if (chartType == 4 || chartType == "4") {
+    c.setContainerDivInfo(container, 220, 120);
+    c.setDesignPoint(state.SelDesignPtQ_StdUnit, state.SelDesignPtH_StdUnit);
+    let myChart = c.createChartZlp(data);
+  } else {
+    c.setContainerDivInfo(container, 220, 120);
+    c.setDesignPoint(state.SelDesignPtQ_StdUnit, state.SelDesignPtH_StdUnit);
+    let myChart = c.createChartLxp(data);
+  }
+};
+// 鎺掑簭鏂规硶鐩戝惉浜嬩欢
+const handleSortMethod = (commend) => {
+  let [...data] = state.tableData; //闃叉sort鎺掑簭鏃跺鑷寸殑鍘熸暟缁勬敼鍙�
+  if (commend == "efficiencySort") {
+    state.currentSortMethodIndex = 1;
+    tableList.value.sort("WorkPtE", "descending");
+  }
+  if (commend == "compreSort") {
+    state.currentSortMethodIndex = 2;
+    state.disp_tableData = state.tableData;
+    tableList.value.clearSort();
+  }
+};
+// 鏍规嵁prop鍒ゆ柇鏄鏈塼oolTip
+const hasToolTipByProp = (prop, TipColumns) => {
+  if (!TipColumns || 0 == TipColumns.length) {
+    return false;
+  }
+  for (let i = 0; i < TipColumns.length; i++) {
+    let item = TipColumns[i];
+    if (prop == item.Col) {
+      return true;
+    }
+  }
+  return false;
+};
+const getNoteByProp = (prop, TipColumns) => {
+  for (let i = 0; i < TipColumns.length; i++) {
+    let item = TipColumns[i];
+    if (item.Col == prop) {
+      return item.Note;
+    }
+  }
+  return "";
+};
+
+defineExpose({ initialPage });
+</script>
+
+<style lang="scss">
+//scoped  //缁勪欢鏃朵娇鐢�
+.selpumplist {
+  height: 100%;
+  width: 100%;
+
+  .el-table__header {
+    background-color: rgb(176, 216, 221);
+  }
+
+  .el-button {
+    padding: 0.1rem 0.15rem;
+    width: unset;
+
+    &.active {
+      background-color: #6396c2;
+      color: #fff;
+    }
+  }
+
+  .tableBox {
+    width: 100%;
+  }
+
+  .el-table .cell {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    padding: unset;
+    height: 100%;
+  }
+
+  .tabHead {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+  }
+
+  .tabHead>div {
+    font-size: 0.14rem;
+  }
+
+  .el-table th>.cell {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    padding: unset;
+    height: 100%;
+  }
+}
+
+.thumbnail-img-style {
+  width: 100%;
+  object-fit: cover;
+}
+
+.pumplist_dropdown_menu {
+  .el-checkbox {
+    display: block;
+  }
+
+  .el-tooltip__popper.is-dark {
+    left: 155px !important;
+  }
+}
+
+.warin-color {
+  color: red;
+  margin-right: 0.05rem;
+  font-size: 0.16rem;
+}
+
+.col-select-popStyle {
+  max-height: 500px;
+  height: 500px;
+}
+
+.check-icon-style {
+  width: 0.14rem;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.custom-btn-span {
+  height: 32px;
+  margin-left: 15px;
+  line-height: 32px;
+}
+
+#series_selected_name {
+  text-decoration: underline;
+  color: var(--selModelNameColor);
+}
+
+.table-default-style {
+  position: relative;
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100%;
+
+  i {
+    position: absolute;
+    top: 0.05rem;
+    right: 0.05rem;
+    font-size: 0.18rem;
+  }
+}
+
+.tool-tip-cell-style {
+  padding: unset !important;
+  height: 1.27rem;
+  // background-color: red;
+}
+
+.bg-red {
+  color: red;
+  font-weight: bold;
+}
+
+.bg-yellow {
+  background-color: rgb(250 236 216 / 50%) !important;
+  color: red;
+  font-weight: bold;
+}
+</style>
diff --git a/src/views/SPump/Select/PumpList/Index.vue b/src/views/SPump/Select/PumpList/Index.vue
new file mode 100644
index 0000000..2a5ee31
--- /dev/null
+++ b/src/views/SPump/Select/PumpList/Index.vue
@@ -0,0 +1,47 @@
+<template>
+    <div style="height: 100%;width: 100%;
+    min-width: 13.66rem;">
+        <pumpListGeneral ref="pumpListGeneralCtrl" v-if="state.isGeneralList" @prevPageClick=prevPageClick>
+        </pumpListGeneral>
+        <pumpListFmUL ref="pumpListFmULCtrl" v-if="state.isFmUlList" @prevPageClick=prevPageClick></pumpListFmUL>
+    </div>
+</template>
+
+<script setup name="pumpListIndex">
+import { onMounted, reactive, ref, nextTick } from "vue";
+import pumpListGeneral from "/@/views/Select/PumpList/General.vue";
+import pumpListFmUL from "/@/views/Select/PumpList/FmUL.vue";
+import { useSelect } from "/@/store/select.js"
+import { useRouter } from "vue-router";
+const router = useRouter()
+const selectStore = useSelect()
+let state = reactive({
+    isGeneralList: true,
+    isFmUlList: false,
+})
+const pumpListGeneralCtrl = ref()
+const pumpListFmULCtrl = ref()
+onMounted(() => {
+    let prvePathDataObj = selectStore.ByParas.selectParas;
+    if (prvePathDataObj == null) return;
+    if (prvePathDataObj.FilterInfo == null) return;
+    let firePumpType = prvePathDataObj.FilterInfo.FirePumpType;
+    if (firePumpType == 2 || firePumpType == "2") {
+        state.isGeneralList = false;
+        state.isFmUlList = true;
+        nextTick(() => {
+            pumpListFmULCtrl.value.initialPage();
+        });
+    } else {
+        state.isGeneralList = true;
+        state.isFmUlList = false;
+        nextTick(() => {
+            pumpListGeneralCtrl.value.initialPage();
+        });
+    }
+})
+const prevPageClick = () => {
+    router.go(-1);
+}
+</script>
+ 
\ No newline at end of file

--
Gitblit v1.9.3