BreatheValve.qml 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947
  1. import QtQuick 2.11
  2. import QtQuick.VirtualKeyboard 2.14
  3. import QtQuick.VirtualKeyboard.Settings 2.14
  4. import QtQuick.Controls 1.4
  5. import QtTest 1.14
  6. import "modbus.js" as ModbusJs
  7. import "breatheTest.js" as BreatheTestJs
  8. import Qt.labs.platform 1.1
  9. Item{
  10. id:root
  11. //阀门生产厂家
  12. property string manufacture
  13. //阀门类型
  14. property string type
  15. //阀门编号
  16. property string serialNumber
  17. //使用单位
  18. property string user
  19. //车牌号
  20. property string carplate
  21. //试验类型
  22. property string testType
  23. //倾覆角度
  24. property string angle
  25. //试验次数
  26. property int count:1
  27. //
  28. property string state
  29. Loader{
  30. id:loader
  31. anchors.fill: parent
  32. anchors.margins: 5
  33. }
  34. function show(){
  35. if(loader.sourceComponent === null){
  36. loader.sourceComponent = componet
  37. }
  38. loader.item.show()
  39. }
  40. function exit(){
  41. if(loader.sourceComponent !== null){
  42. loader.item.exit()
  43. }
  44. }
  45. Component{
  46. id:componet
  47. GroupBox{
  48. id:groupbox
  49. x:width
  50. title: "呼吸阀试验"
  51. property bool running:startStopButton.running
  52. property int pressureCnt:0
  53. property var dataArray: []
  54. signal pressureDisplaySigFun(var pressureNumber)
  55. signal resultSigFun(var result)
  56. property var pointList0:[]
  57. property var pointList1:[]
  58. property var pointList2:[]
  59. property var pointList3:[]
  60. property var pointList4:[]
  61. property var pointList5:[]
  62. property var pointList6:[]
  63. property var pointList7:[]
  64. property var pointList8:[]
  65. property var pointList9:[]
  66. property var pointList10:[]
  67. property var pointList11:[]
  68. property var pointList12:[]
  69. property var pointList13:[]
  70. property var pointList14:[]
  71. property var currentIndex:0
  72. onResultSigFun: {
  73. //需要区分第一次 第二次 第三次
  74. if(testTypeComboBox.currentText === "正压开启压力和密封试验"){
  75. switch(groupbox.currentIndex)
  76. {
  77. case 0:
  78. breatheResult.positiveOpenPressure1 = result.openPressureNumber
  79. breatheResult.positiveSealPressure1 = result.sealPressureNumber
  80. break
  81. case 1:
  82. breatheResult.positiveOpenPressure2 = result.openPressureNumber
  83. breatheResult.positiveSealPressure2 = result.sealPressureNumber
  84. break
  85. case 2:
  86. breatheResult.positiveOpenPressure3 = result.openPressureNumber
  87. breatheResult.positiveSealPressure3 = result.sealPressureNumber
  88. break
  89. }
  90. }
  91. else if(testTypeComboBox.currentText === "负压开启压力和密封试验"){
  92. switch(groupbox.currentIndex)
  93. {
  94. case 0:
  95. breatheResult.negativeOpenPressure1 = result.openPressureNumber
  96. breatheResult.negativeSealPressure1 = result.sealPressureNumber
  97. break
  98. case 1:
  99. breatheResult.negativeOpenPressure2 = result.openPressureNumber
  100. breatheResult.negativeSealPressure2 = result.sealPressureNumber
  101. break
  102. case 2:
  103. breatheResult.negativeOpenPressure3 = result.openPressureNumber
  104. breatheResult.negativeSealPressure3 = result.sealPressureNumber
  105. break
  106. }
  107. }
  108. else{
  109. if(subversiveComboBox.currentText === "90°"){
  110. breatheResult.capsizeSealPressure1 = result.sealPressureNumber
  111. }
  112. else if(subversiveComboBox.currentText === "180°"){
  113. breatheResult.capsizeSealPressure2 = result.sealPressureNumber
  114. }
  115. else if(subversiveComboBox.currentText === "270°"){
  116. breatheResult.capsizeSealPressure3 = result.sealPressureNumber
  117. }
  118. }
  119. }
  120. onPressureDisplaySigFun: {
  121. pressureDisplayInput(pressureNumber)
  122. }
  123. onRunningChanged: {
  124. BreatheTestJs.running = running
  125. if(running === true){
  126. startTimer.start()
  127. }
  128. }
  129. Timer{
  130. id:stopTimer
  131. repeat: false
  132. interval: 500
  133. onTriggered: {
  134. //aModbusJs.closeAllValve(controlSerial)
  135. testStop()
  136. }
  137. }
  138. function clearCurveDisplay()
  139. {
  140. curveDisplay.spline.clear()
  141. groupbox.pressureCnt =0
  142. groupbox.dataArray = []
  143. }
  144. Timer{
  145. id:startTimer
  146. repeat: false
  147. interval: 500
  148. onTriggered: {
  149. choosevalve.menuEnable = false
  150. BreatheTestJs.exit = false
  151. console.log("正在自检....")
  152. var ret = ModbusJs.checkModebusDevice(controlSerial,sensorSerial,log)
  153. if(ret === false){
  154. log.show("自检错误")
  155. testStop()
  156. choosevalve.menuEnable = true
  157. return
  158. }
  159. console.log("自检正常")
  160. clearCurveDisplay()
  161. groupbox.currentIndex = 0
  162. if(testTypeComboBox.currentText === "正压开启压力和密封试验"){
  163. do{
  164. let tab = breatheTable.positiveTabview.getTab(groupbox.currentIndex)
  165. let tabView = breatheTable.positiveTabview
  166. let openPressureModel = tab.item.modelData
  167. tab = breatheTable.positiveTabview.getTab(groupbox.currentIndex+3)
  168. let sealPressureModel = tab.item.modelData
  169. breatheResult.visible = false
  170. openPressureModel.clear()
  171. sealPressureModel.clear()
  172. ret = BreatheTestJs.positiveTestStart(groupbox.currentIndex,tabView,processWindow,controlSerial,sensorSerial,
  173. openPressureModel,sealPressureModel,
  174. pressureDisplaySigFun,resultSigFun,spy,log)
  175. if(ret === false){
  176. processWindow.show("测试退出,泄气中...")
  177. BreatheTestJs.runningBackup = groupbox.running
  178. BreatheTestJs.positiveTestStop(controlSerial,pressureDisplaySigFun,spy,log)
  179. }
  180. spy.wait(1500) //延时 确认全关继电器
  181. groupbox.currentIndex++
  182. }while(groupbox.currentIndex <root.count && ret === true)
  183. }
  184. else if(testTypeComboBox.currentText === "负压开启压力和密封试验"){
  185. do{
  186. let tab = breatheTable.negativeTabview.getTab(groupbox.currentIndex)
  187. let tabView = breatheTable.negativeTabview
  188. let openPressureModel = tab.item.modelData
  189. tab = breatheTable.negativeTabview.getTab(groupbox.currentIndex+3)
  190. let sealPressureModel = tab.item.modelData
  191. breatheResult.visible = false
  192. openPressureModel.clear()
  193. sealPressureModel.clear()
  194. ret = BreatheTestJs.negativeTestStart(groupbox.currentIndex,tabView,processWindow,controlSerial,sensorSerial,
  195. openPressureModel,sealPressureModel,
  196. pressureDisplaySigFun,resultSigFun,spy,log)
  197. if(ret === false){
  198. processWindow.show("测试退出,泄气中...")
  199. BreatheTestJs.runningBackup = groupbox.running
  200. BreatheTestJs.negativeTestStop(controlSerial,pressureDisplaySigFun,spy,log)
  201. }
  202. spy.wait(1500) //延时 确认全关继电器
  203. groupbox.currentIndex++
  204. }while(groupbox.currentIndex <root.count && ret === true)
  205. }
  206. else if(testTypeComboBox.currentText === "颠覆性密封试验"){
  207. console.log("颠覆性密封试验")
  208. var tab = breatheTable.capsizeTabview.getTab(0)
  209. var sealPressureModel = tab.item.modelData
  210. if(subversiveComboBox.currentText === "90°"){
  211. breatheTable.capsizeTabview.currentIndex = 0
  212. tab = breatheTable.capsizeTabview.getTab(0)
  213. sealPressureModel = tab.item.modelData
  214. }
  215. else if(subversiveComboBox.currentText === "180°"){
  216. breatheTable.capsizeTabview.currentIndex = 1
  217. tab = breatheTable.capsizeTabview.getTab(1)
  218. sealPressureModel = tab.item.modelData
  219. }
  220. else if(subversiveComboBox.currentText === "270°"){
  221. breatheTable.capsizeTabview.currentIndex = 2
  222. tab = breatheTable.capsizeTabview.getTab(2)
  223. sealPressureModel = tab.item.modelData
  224. }
  225. breatheResult.visible = false
  226. sealPressureModel.clear()
  227. ret = BreatheTestJs.capsizeTestStart(processWindow,controlSerial,sensorSerial,
  228. sealPressureModel,pressureDisplaySigFun,resultSigFun,spy,log)
  229. if(ret === false){
  230. processWindow.show("测试退出,泄气中...")
  231. BreatheTestJs.runningBackup = groupbox.running
  232. BreatheTestJs.positiveTestStop(controlSerial,pressureDisplaySigFun,spy,log)
  233. }
  234. }
  235. testStop()
  236. choosevalve.menuEnable = true
  237. }
  238. }
  239. function testStop(){
  240. processWindow.exit()
  241. breatheResult.visible = true
  242. startStopButton.running = false
  243. }
  244. function reportPositiveGeneratePicture( )
  245. {
  246. var tab
  247. var axisxMin = 0;var axisyMin = 0; var axisyMax=30;
  248. tab = breatheTable.positiveTabview.getTab(0)
  249. reportPicture0.generateTabPicture(tab,"2.1",axisxMin,axisyMin,axisyMax)
  250. groupbox.pointList0 = reportPicture0.pointList;
  251. tab = breatheTable.positiveTabview.getTab(1)
  252. reportPicture1.generateTabPicture(tab,"2.2",axisxMin,axisyMin,axisyMax)
  253. groupbox.pointList1 = reportPicture1.pointList;
  254. tab = breatheTable.positiveTabview.getTab(2)
  255. reportPicture2.generateTabPicture(tab,"2.3",axisxMin,axisyMin,axisyMax)
  256. groupbox.pointList2 = reportPicture2.pointList;
  257. tab = breatheTable.positiveTabview.getTab(3)
  258. reportPicture3.generateTabPicture(tab,"2.4",axisxMin,axisyMin,axisyMax)
  259. groupbox.pointList3 = reportPicture3.pointList;
  260. tab = breatheTable.positiveTabview.getTab(4)
  261. reportPicture4.generateTabPicture(tab,"2.5",axisxMin,axisyMin,axisyMax)
  262. groupbox.pointList4 = reportPicture4.pointList;
  263. tab = breatheTable.positiveTabview.getTab(5)
  264. reportPicture5.generateTabPicture(tab,"2.6",axisxMin,axisyMin,axisyMax)
  265. groupbox.pointList5 = reportPicture5.pointList;
  266. }
  267. function reportNegativeGeneratePicture( )
  268. {
  269. var tab
  270. var axisxMin = 0;var axisyMin = -10; var axisyMax=5;
  271. tab = breatheTable.negativeTabview.getTab(0)
  272. reportPicture6.generateTabPicture(tab,"3.1",axisxMin,axisyMin,axisyMax)
  273. groupbox.pointList6 = reportPicture6.pointList;
  274. tab = breatheTable.negativeTabview.getTab(1)
  275. reportPicture7.generateTabPicture(tab,"3.2",axisxMin,axisyMin,axisyMax)
  276. groupbox.pointList7 = reportPicture7.pointList;
  277. tab = breatheTable.negativeTabview.getTab(2)
  278. reportPicture8.generateTabPicture(tab,"3.3",axisxMin,axisyMin,axisyMax)
  279. groupbox.pointList8 = reportPicture8.pointList;
  280. tab = breatheTable.negativeTabview.getTab(3)
  281. reportPicture9.generateTabPicture(tab,"3.4",axisxMin,axisyMin,axisyMax)
  282. groupbox.pointList9 = reportPicture9.pointList;
  283. tab = breatheTable.negativeTabview.getTab(4)
  284. reportPicture10.generateTabPicture(tab,"3.5",axisxMin,axisyMin,axisyMax)
  285. groupbox.pointList10 = reportPicture10.pointList;
  286. tab = breatheTable.negativeTabview.getTab(5)
  287. reportPicture11.generateTabPicture(tab,"3.6",axisxMin,axisyMin,axisyMax)
  288. groupbox.pointList11 = reportPicture11.pointList;
  289. }
  290. function reportCapsizeGeneratePicture( )
  291. {
  292. var tab
  293. var axisxMin = 0;var axisyMin = 0; var axisyMax=50;
  294. tab = breatheTable.capsizeTabview.getTab(0)
  295. reportPicture12.generateTabPicture(tab,"4.1",axisxMin,axisyMin,axisyMax)
  296. groupbox.pointList12 = reportPicture12.pointList;
  297. tab = breatheTable.capsizeTabview.getTab(1)
  298. reportPicture13.generateTabPicture(tab,"4.2",axisxMin,axisyMin,axisyMax)
  299. groupbox.pointList13 = reportPicture13.pointList;
  300. tab = breatheTable.capsizeTabview.getTab(2)
  301. reportPicture14.generateTabPicture(tab,"4.3",axisxMin,axisyMin,axisyMax)
  302. groupbox.pointList14 = reportPicture14.pointList;
  303. }
  304. //报告
  305. Connections{
  306. target: reportButton
  307. onUserClicked:{
  308. console.log("reportPositiveGeneratePicture")
  309. groupbox.reportPositiveGeneratePicture()
  310. console.log("reportNegativeGeneratePicture")
  311. groupbox.reportNegativeGeneratePicture()
  312. console.log("reportCapsizeGeneratePicture")
  313. groupbox.reportCapsizeGeneratePicture()
  314. var fileName = root.manufacture+"_"+root.type+"_"+root.serialNumber+"_"+root.carplate
  315. var text = getWordSaveFileName(fileName)
  316. console.log(text)
  317. saveWordDialog.currentFile = getWordSaveFileName(text)
  318. saveWordDialog.open()
  319. }
  320. }
  321. FileDialog {
  322. id: saveWordDialog
  323. title: "保存为"
  324. nameFilters: [ "Word files (*.doc)"]
  325. fileMode: FileDialog.SaveFile
  326. onAccepted: {
  327. var savePath = file.toString().substring(8)
  328. var para={}
  329. para.manufacture = root.manufacture
  330. para.type = root.type
  331. para.serialNumber = root.serialNumber
  332. para.user = root.user
  333. para.carplate = root.carplate
  334. para.state = root.state
  335. para.setPressure = ""
  336. para.valve="呼吸阀"
  337. //正压测试
  338. var obj1={}
  339. obj1.resultSetPressure1 = breatheResult.positiveOpenPressure1
  340. obj1.resultSetPressure2 = breatheResult.positiveOpenPressure2
  341. obj1.resultSetPressure3 = breatheResult.positiveOpenPressure3
  342. obj1.resultSealPressure1 = breatheResult.positiveSealPressure1
  343. obj1.resultSealPressure2 = breatheResult.positiveSealPressure2
  344. obj1.resultSealPressure3 = breatheResult.positiveSealPressure3
  345. obj1.pointList0 = groupbox.pointList0
  346. obj1.pointList1 = groupbox.pointList1
  347. obj1.pointList2 = groupbox.pointList2
  348. obj1.pointList3 = groupbox.pointList3
  349. obj1.pointList4 = groupbox.pointList4
  350. obj1.pointList5 = groupbox.pointList5
  351. //负压测试
  352. var obj2={}
  353. obj2.resultSetPressure1 = breatheResult.negativeOpenPressure1
  354. obj2.resultSetPressure2 = breatheResult.negativeOpenPressure2
  355. obj2.resultSetPressure3 = breatheResult.negativeOpenPressure3
  356. obj2.resultSealPressure1 = breatheResult.negativeSealPressure1
  357. obj2.resultSealPressure2 = breatheResult.negativeSealPressure2
  358. obj2.resultSealPressure3 = breatheResult.negativeSealPressure3
  359. obj2.pointList0 = groupbox.pointList6
  360. obj2.pointList1 = groupbox.pointList7
  361. obj2.pointList2 = groupbox.pointList8
  362. obj2.pointList3 = groupbox.pointList9
  363. obj2.pointList4 = groupbox.pointList10
  364. obj2.pointList5 = groupbox.pointList11
  365. //颠覆密封测试
  366. var obj3={}
  367. obj3.resultSealPressure1 = breatheResult.capsizeSealPressure1
  368. obj3.resultSealPressure2 = breatheResult.capsizeSealPressure2
  369. obj3.resultSealPressure3 = breatheResult.capsizeSealPressure3
  370. obj3.pointList0 = groupbox.pointList12
  371. obj3.pointList1 = groupbox.pointList13
  372. obj3.pointList2 = groupbox.pointList14
  373. reportWord.generateBreatheValveWord(savePath,para,obj1,obj2,obj3)
  374. }
  375. }
  376. /*
  377. function pressureDisplayInput(number){
  378. pressureCnt++
  379. if(pressureCnt <= 61){
  380. dataArray.push(number)
  381. curveDisplay.spline.append(pressureCnt-1,number)
  382. }
  383. else{
  384. dataArray.push(number)
  385. dataArray.shift()
  386. curveDisplay.spline.clear()
  387. for(var i=0; i<61; i++){
  388. curveDisplay.spline.append(i,dataArray[i])
  389. }
  390. }
  391. gauge.value = number
  392. }
  393. */
  394. function pressureDisplayInput(number){
  395. pressureCnt++
  396. //console.log("pressureDisplayInput number:%f", number)
  397. if(number+2 > curveDisplay.axisyMax ){
  398. curveDisplay.axisyMax = number +2
  399. }
  400. if(pressureCnt <= 61){
  401. dataArray.push(number)
  402. curveDisplay.spline.append(pressureCnt-1,number)
  403. }
  404. else{
  405. dataArray.push(number)
  406. //dataArray.shift()
  407. curveDisplay.spline.clear()
  408. curveDisplay.axisxMax = pressureCnt+1
  409. for(var i=0; i<pressureCnt; i++){
  410. curveDisplay.spline.append(i,dataArray[i])
  411. }
  412. }
  413. gauge.value = number
  414. }
  415. function show(){
  416. animationShow.running = true
  417. }
  418. function exit(){
  419. BreatheTestJs.exit = true
  420. animationExit.running = true
  421. startStopButton.running = false
  422. stopTimer.start()
  423. }
  424. //加载任务动画效果
  425. NumberAnimation {
  426. id: animationShow
  427. target: groupbox
  428. property: "x"
  429. from: groupbox.x
  430. to: 0
  431. duration: 500
  432. }
  433. NumberAnimation {
  434. id: animationExit
  435. target: groupbox
  436. property: "x"
  437. from: groupbox.x
  438. to: 1024
  439. duration: 500
  440. }
  441. Column{
  442. anchors.left: parent.left
  443. anchors.leftMargin: 3
  444. anchors.top: parent.top
  445. anchors.topMargin: 10
  446. spacing: 0
  447. Rectangle{
  448. id:paraRectagle
  449. property int addHeight :0
  450. width: 980
  451. height: 70+addHeight
  452. color: "white"
  453. radius: 6
  454. Row{
  455. spacing: 10
  456. Item {
  457. width: 820
  458. height: paraRectagle.height
  459. Column{
  460. anchors.left: parent.left
  461. anchors.leftMargin: 10
  462. anchors.top: parent.top
  463. anchors.topMargin: 10
  464. spacing: 4
  465. Row{
  466. spacing: 10
  467. InputLine{
  468. id:manufactureInputLine
  469. paraName: "制造单位:"
  470. paraLength: 180
  471. onTextChanged: {
  472. root.manufacture = text
  473. }
  474. }
  475. InputLine{
  476. id:typeInputLine
  477. paraName: "型号:"
  478. paraLength: 130
  479. validator:RegExpValidator {
  480. regExp: /[0-9a-zA-Z.-]*/
  481. }
  482. onTextChanged: {
  483. root.type = text
  484. }
  485. }
  486. InputLine{
  487. id:serialNumberInputLine
  488. paraName: "编号:"
  489. paraLength: 139
  490. validator:RegExpValidator {
  491. regExp: /[0-9a-zA-Z.-]*/
  492. }
  493. onTextChanged: {
  494. root.serialNumber = text
  495. }
  496. }
  497. InputLine{
  498. id:openPressureTimeMaxInputLine
  499. paraName: "开启计时:"
  500. paraLength: 40
  501. text: BreatheTestJs.openPressureTimeMax
  502. validator:RegExpValidator {
  503. regExp: /[0-9]*/
  504. }
  505. inputMethodHints: Qt.ImhDigitsOnly
  506. onTextChanged: {
  507. BreatheTestJs.openPressureTimeMax = Number(text)
  508. console.log("openPressureTimeMax:",BreatheTestJs.openPressureTimeMax)
  509. if(Number(text) >180){
  510. text = 180
  511. }
  512. }
  513. // onTextFocusChanged: {
  514. // if(Number(text) >180){
  515. // text = 180
  516. // }
  517. // }
  518. }
  519. UserComboBox{
  520. id:userComboBox
  521. width: 80
  522. height:25
  523. bgColor:"#D2D5D9"
  524. model: ["试验1次","试验2次", "试验3次"]
  525. onActivated: {
  526. }
  527. Binding{
  528. target: root
  529. property: "count"
  530. value: userComboBox.currentIndex+1
  531. }
  532. }
  533. }
  534. Row{
  535. spacing: 10
  536. InputLine{
  537. id:userInputLine
  538. paraName: "使用单位:"
  539. paraLength: 180
  540. onTextChanged: {
  541. root.user = text
  542. }
  543. }
  544. CarPlate{
  545. id:carplateInputLine
  546. paraName: "车牌:"
  547. paraLength: 130-55
  548. onPlattextChanged: {
  549. root.carplate = plattext
  550. console.log("BreathValve Carplattext:" + plattext)
  551. }
  552. }
  553. UserComboBox{
  554. id:testTypeComboBox
  555. anchors.verticalCenter: parent.verticalCenter
  556. width: 177
  557. height:25
  558. bgColor:"#D2D5D9"
  559. enabled: !groupbox.running
  560. model: ["正压开启压力和密封试验","负压开启压力和密封试验", "颠覆性密封试验"]
  561. onCurrentTextChanged: {
  562. if(currentText === "颠覆性密封试验"){
  563. paraRectagle.addHeight = 35
  564. }
  565. else{
  566. paraRectagle.addHeight = 0
  567. }
  568. switch(currentText){
  569. case "正压开启压力和密封试验":
  570. BreatheTestJs.openPressureTimeMax = 3
  571. BreatheTestJs.sealPressureTimemax = 15
  572. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  573. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  574. openPressureTimeMaxInputLine.enabled = true
  575. break
  576. case "负压开启压力和密封试验":
  577. BreatheTestJs.openPressureTimeMax = 3
  578. BreatheTestJs.sealPressureTimemax = 15
  579. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  580. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  581. openPressureTimeMaxInputLine.enabled = true
  582. break
  583. case "颠覆性密封试验":
  584. openPressureTimeMaxInputLine.enabled = false
  585. BreatheTestJs.sealPressureTimemax = 15
  586. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  587. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  588. break
  589. }
  590. groupbox.clearCurveDisplay()
  591. }
  592. }
  593. InputLine{
  594. id:sealPressureTimemaxInputLine
  595. paraName: "密封计时:"
  596. paraLength: 39
  597. text: BreatheTestJs.sealPressureTimemax
  598. validator:RegExpValidator {
  599. regExp: /[0-9]*/
  600. }
  601. inputMethodHints: Qt.ImhDigitsOnly
  602. onTextChanged: {
  603. BreatheTestJs.sealPressureTimemax = Number(text)
  604. if(Number(text) >180){
  605. text = 180
  606. }
  607. }
  608. // onTextFocusChanged: {
  609. // if(Number(text) >180){
  610. // text = 180
  611. // }
  612. // }
  613. }
  614. UserComboBox{
  615. id:valveStateComboBox
  616. anchors.verticalCenter: parent.verticalCenter
  617. width: 80
  618. height:25
  619. bgColor:"#D2D5D9"
  620. model: ["在用阀","新阀"]
  621. onCurrentTextChanged: {
  622. root.state = currentText
  623. }
  624. }
  625. }
  626. Row{
  627. visible: paraRectagle.addHeight === 0?false:true
  628. spacing: 10
  629. Text{
  630. width: 425
  631. }
  632. // InputLine{
  633. // id:openPressureLine
  634. // paraName: "开启压力(kPa):"
  635. // paraLength: 145
  636. // text: BreatheTestJs.capsizeOpenPresure
  637. // validator:RegExpValidator {
  638. // regExp: /[0-9.]*/
  639. // }
  640. // inputMethodHints: Qt.ImhDigitsOnly
  641. // onTextChanged: {
  642. // BreatheTestJs.capsizeOpenPresure = Number(text)
  643. // console.log(BreatheTestJs.capsizeOpenPresure)
  644. // inputPressureLine.text = BreatheTestJs.capsizeOpenPresure+22
  645. // }
  646. // }
  647. // InputLine{
  648. // id:inputPressureLine
  649. // paraName: "进气压力(kPa):"
  650. // paraLength: 68
  651. // text: BreatheTestJs.capsizeSetPressure
  652. // validator:RegExpValidator {
  653. // regExp: /[0-9.]*/
  654. // }
  655. // inputMethodHints: Qt.ImhDigitsOnly
  656. // onTextChanged: {
  657. // BreatheTestJs.capsizeSetPressure = Number(text)
  658. // console.log(BreatheTestJs.capsizeSetPressure)
  659. // }
  660. // }
  661. UserComboBox{
  662. id:subversiveComboBox
  663. anchors.verticalCenter: parent.verticalCenter
  664. width: 177
  665. height:25
  666. bgColor:"#D2D5D9"
  667. visible: testTypeComboBox.currentText === "颠覆性密封试验"?true:false
  668. model: ["90°","180°", "270°"]
  669. }
  670. }
  671. }
  672. }
  673. Item {
  674. width: 150
  675. height: paraRectagle.height
  676. Row{
  677. anchors.verticalCenter: parent.verticalCenter
  678. spacing: 20
  679. StartStopButton{
  680. id:startStopButton
  681. width: 50
  682. height: 50
  683. anchors.verticalCenter: parent.verticalCenter
  684. // onRunningChanged: {
  685. // groupbox.running = running
  686. // }
  687. }
  688. ReportButton{
  689. id:reportButton
  690. width: 50
  691. height: 50
  692. anchors.verticalCenter: parent.verticalCenter
  693. }
  694. }
  695. }
  696. }
  697. }
  698. Row{
  699. x:-10
  700. CurveDisplay{
  701. id:curveDisplay
  702. anchors.verticalCenter: parent.verticalCenter
  703. width: 450
  704. height: 300
  705. axisxMax:60
  706. axisxMin:0
  707. axisyMax:{
  708. if(testTypeComboBox.currentText === "正压开启压力和密封试验")
  709. return 15
  710. if(testTypeComboBox.currentText === "颠覆性密封试验")
  711. return 15
  712. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  713. return 5
  714. }
  715. axisyMin:{
  716. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  717. return -10
  718. return 0
  719. }
  720. name:"横轴时间(秒) 纵轴压力(kPa)"
  721. }
  722. Rectangle{
  723. width: (300-18)*0.75
  724. height: 300-18
  725. color: "white"
  726. radius: 6
  727. anchors.verticalCenter: parent.verticalCenter
  728. Gauge {
  729. id:gauge
  730. width: parent.width
  731. height: parent.width
  732. anchors.centerIn: parent
  733. value: 0
  734. maximumValue: {
  735. if(testTypeComboBox.currentText === "正压开启压力和密封试验")
  736. return 50
  737. if(testTypeComboBox.currentText === "颠覆性密封试验")
  738. return 50
  739. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  740. return 15
  741. }
  742. minimumValue: -10
  743. tickmarkStepSize:5
  744. labelStepSize:5
  745. Behavior on value { NumberAnimation { duration: 1000 }}
  746. }
  747. }
  748. Item {
  749. width: 338
  750. height: 300
  751. anchors.verticalCenter: parent.verticalCenter
  752. Rectangle{
  753. id:resultWindow
  754. anchors.fill: parent
  755. anchors.margins: 10
  756. color: "white"
  757. radius: 6
  758. ProcessWindow{
  759. id:processWindow
  760. width: 280
  761. height: 50
  762. hideWith:resultWindow.width
  763. anchors.centerIn: parent
  764. }
  765. BreatheResult{
  766. id:breatheResult
  767. // visible: false
  768. }
  769. Connections{
  770. target: testTypeComboBox
  771. onCurrentIndexChanged: {
  772. breatheResult.swipeview.setCurrentIndex(testTypeComboBox.currentIndex)
  773. }
  774. }
  775. }
  776. }
  777. }
  778. Rectangle{
  779. width: 980
  780. height: 265 - paraRectagle.addHeight
  781. color: "white"
  782. radius: 6
  783. BreatheTable{
  784. id:breatheTable
  785. anchors.fill: parent
  786. }
  787. Connections{
  788. target: testTypeComboBox
  789. onCurrentIndexChanged: {
  790. breatheTable.swipeview.setCurrentIndex(testTypeComboBox.currentIndex)
  791. }
  792. }
  793. }
  794. }
  795. InputPanel {
  796. id: inputPanel
  797. z: 99
  798. x: -11
  799. y: window.height
  800. width: window.width
  801. onActiveChanged: {
  802. if(!active)
  803. {
  804. manufactureInputLine.textFocus = false
  805. typeInputLine.textFocus = false
  806. serialNumberInputLine.textFocus = false
  807. userInputLine.textFocus = false
  808. carplateInputLine.textFocus = false
  809. openPressureTimeMaxInputLine.textFocus = false
  810. sealPressureTimemaxInputLine.textFocus = false
  811. }
  812. }
  813. states:
  814. State {
  815. name: "visible"
  816. when: inputPanel.active
  817. PropertyChanges {
  818. target: inputPanel
  819. y: window.height/2
  820. }
  821. }
  822. transitions: Transition {
  823. from: ""
  824. to: "visible"
  825. reversible: true
  826. ParallelAnimation {
  827. NumberAnimation {
  828. properties: "y"
  829. duration: 250
  830. easing.type: Easing.InOutQuad
  831. }
  832. }
  833. }
  834. Component.onCompleted: {
  835. VirtualKeyboardSettings.styleName = "retro"
  836. VirtualKeyboardSettings.activeLocales=["en_GB","zh_CN"]
  837. VirtualKeyboardSettings.locale = "en_GB";//"fi_FI";
  838. }
  839. }
  840. }
  841. }
  842. }