BreatheValve.qml 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  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. if(subversiveComboBox.currentText === "90°"){
  209. breatheTable.capsizeTabview.currentIndex = 0
  210. var tab = breatheTable.capsizeTabview.getTab(0)
  211. var sealPressureModel = tab.item.modelData
  212. }
  213. else if(subversiveComboBox.currentText === "180°"){
  214. breatheTable.capsizeTabview.currentIndex = 1
  215. tab = breatheTable.capsizeTabview.getTab(1)
  216. sealPressureModel = tab.item.modelData
  217. }
  218. else if(subversiveComboBox.currentText === "270°"){
  219. breatheTable.capsizeTabview.currentIndex = 2
  220. tab = breatheTable.capsizeTabview.getTab(2)
  221. sealPressureModel = tab.item.modelData
  222. }
  223. breatheResult.visible = false
  224. sealPressureModel.clear()
  225. ret = BreatheTestJs.capsizeTestStart(processWindow,controlSerial,sensorSerial,
  226. sealPressureModel,pressureDisplaySigFun,resultSigFun,spy,log)
  227. if(ret === false){
  228. processWindow.show("测试退出,泄气中...")
  229. BreatheTestJs.runningBackup = groupbox.running
  230. BreatheTestJs.positiveTestStop(controlSerial,pressureDisplaySigFun,spy,log)
  231. }
  232. }
  233. testStop()
  234. choosevalve.menuEnable = true
  235. }
  236. }
  237. function testStop(){
  238. processWindow.exit()
  239. breatheResult.visible = true
  240. startStopButton.running = false
  241. }
  242. function reportPositiveGeneratePicture( )
  243. {
  244. var tab
  245. var axisxMin = 0;var axisyMin = 0; var axisyMax=30;
  246. tab = breatheTable.positiveTabview.getTab(0)
  247. reportPicture0.generateTabPicture(tab,"2.1",axisxMin,axisyMin,axisyMax)
  248. groupbox.pointList0 = reportPicture0.pointList;
  249. tab = breatheTable.positiveTabview.getTab(1)
  250. reportPicture1.generateTabPicture(tab,"2.2",axisxMin,axisyMin,axisyMax)
  251. groupbox.pointList1 = reportPicture1.pointList;
  252. tab = breatheTable.positiveTabview.getTab(2)
  253. reportPicture2.generateTabPicture(tab,"2.3",axisxMin,axisyMin,axisyMax)
  254. groupbox.pointList2 = reportPicture2.pointList;
  255. tab = breatheTable.positiveTabview.getTab(3)
  256. reportPicture3.generateTabPicture(tab,"2.4",axisxMin,axisyMin,axisyMax)
  257. groupbox.pointList3 = reportPicture3.pointList;
  258. tab = breatheTable.positiveTabview.getTab(4)
  259. reportPicture4.generateTabPicture(tab,"2.5",axisxMin,axisyMin,axisyMax)
  260. groupbox.pointList4 = reportPicture4.pointList;
  261. tab = breatheTable.positiveTabview.getTab(5)
  262. reportPicture5.generateTabPicture(tab,"2.6",axisxMin,axisyMin,axisyMax)
  263. groupbox.pointList5 = reportPicture5.pointList;
  264. }
  265. function reportNegativeGeneratePicture( )
  266. {
  267. var tab
  268. var axisxMin = 0;var axisyMin = -10; var axisyMax=5;
  269. tab = breatheTable.negativeTabview.getTab(0)
  270. reportPicture6.generateTabPicture(tab,"3.1",axisxMin,axisyMin,axisyMax)
  271. groupbox.pointList6 = reportPicture6.pointList;
  272. tab = breatheTable.negativeTabview.getTab(1)
  273. reportPicture7.generateTabPicture(tab,"3.2",axisxMin,axisyMin,axisyMax)
  274. groupbox.pointList7 = reportPicture7.pointList;
  275. tab = breatheTable.negativeTabview.getTab(2)
  276. reportPicture8.generateTabPicture(tab,"3.3",axisxMin,axisyMin,axisyMax)
  277. groupbox.pointList8 = reportPicture8.pointList;
  278. tab = breatheTable.negativeTabview.getTab(3)
  279. reportPicture9.generateTabPicture(tab,"3.4",axisxMin,axisyMin,axisyMax)
  280. groupbox.pointList9 = reportPicture9.pointList;
  281. tab = breatheTable.negativeTabview.getTab(4)
  282. reportPicture10.generateTabPicture(tab,"3.5",axisxMin,axisyMin,axisyMax)
  283. groupbox.pointList10 = reportPicture10.pointList;
  284. tab = breatheTable.negativeTabview.getTab(5)
  285. reportPicture11.generateTabPicture(tab,"3.6",axisxMin,axisyMin,axisyMax)
  286. groupbox.pointList11 = reportPicture11.pointList;
  287. }
  288. function reportCapsizeGeneratePicture( )
  289. {
  290. var tab
  291. var axisxMin = 0;var axisyMin = 0; var axisyMax=50;
  292. tab = breatheTable.capsizeTabview.getTab(0)
  293. reportPicture12.generateTabPicture(tab,"4.1",axisxMin,axisyMin,axisyMax)
  294. groupbox.pointList12 = reportPicture12.pointList;
  295. tab = breatheTable.capsizeTabview.getTab(1)
  296. reportPicture13.generateTabPicture(tab,"4.2",axisxMin,axisyMin,axisyMax)
  297. groupbox.pointList13 = reportPicture13.pointList;
  298. tab = breatheTable.capsizeTabview.getTab(2)
  299. reportPicture14.generateTabPicture(tab,"4.3",axisxMin,axisyMin,axisyMax)
  300. groupbox.pointList14 = reportPicture14.pointList;
  301. }
  302. //报告
  303. Connections{
  304. target: reportButton
  305. onUserClicked:{
  306. console.log("reportPositiveGeneratePicture")
  307. groupbox.reportPositiveGeneratePicture()
  308. console.log("reportNegativeGeneratePicture")
  309. groupbox.reportNegativeGeneratePicture()
  310. console.log("reportCapsizeGeneratePicture")
  311. groupbox.reportCapsizeGeneratePicture()
  312. var fileName = root.manufacture+"_"+root.type+"_"+root.serialNumber+"_"+root.carplate
  313. var text = getWordSaveFileName(fileName)
  314. console.log(text)
  315. saveWordDialog.currentFile = getWordSaveFileName(text)
  316. saveWordDialog.open()
  317. }
  318. }
  319. FileDialog {
  320. id: saveWordDialog
  321. title: "保存为"
  322. nameFilters: [ "Word files (*.doc)"]
  323. fileMode: FileDialog.SaveFile
  324. onAccepted: {
  325. var savePath = file.toString().substring(8)
  326. var para={}
  327. para.manufacture = root.manufacture
  328. para.type = root.type
  329. para.serialNumber = root.serialNumber
  330. para.user = root.user
  331. para.carplate = root.carplate
  332. para.state = root.state
  333. para.setPressure = ""
  334. para.valve="呼吸阀"
  335. //正压测试
  336. var obj1={}
  337. obj1.resultSetPressure1 = breatheResult.positiveOpenPressure1
  338. obj1.resultSetPressure2 = breatheResult.positiveOpenPressure2
  339. obj1.resultSetPressure3 = breatheResult.positiveOpenPressure3
  340. obj1.resultSealPressure1 = breatheResult.positiveSealPressure1
  341. obj1.resultSealPressure2 = breatheResult.positiveSealPressure2
  342. obj1.resultSealPressure3 = breatheResult.positiveSealPressure3
  343. obj1.pointList0 = groupbox.pointList0
  344. obj1.pointList1 = groupbox.pointList1
  345. obj1.pointList2 = groupbox.pointList2
  346. obj1.pointList3 = groupbox.pointList3
  347. obj1.pointList4 = groupbox.pointList4
  348. obj1.pointList5 = groupbox.pointList5
  349. //负压测试
  350. var obj2={}
  351. obj2.resultSetPressure1 = breatheResult.negativeOpenPressure1
  352. obj2.resultSetPressure2 = breatheResult.negativeOpenPressure2
  353. obj2.resultSetPressure3 = breatheResult.negativeOpenPressure3
  354. obj2.resultSealPressure1 = breatheResult.negativeSealPressure1
  355. obj2.resultSealPressure2 = breatheResult.negativeSealPressure2
  356. obj2.resultSealPressure3 = breatheResult.negativeSealPressure3
  357. obj2.pointList0 = groupbox.pointList6
  358. obj2.pointList1 = groupbox.pointList7
  359. obj2.pointList2 = groupbox.pointList8
  360. obj2.pointList3 = groupbox.pointList9
  361. obj2.pointList4 = groupbox.pointList10
  362. obj2.pointList5 = groupbox.pointList11
  363. //颠覆密封测试
  364. var obj3={}
  365. obj3.resultSealPressure1 = breatheResult.capsizeSealPressure1
  366. obj3.resultSealPressure2 = breatheResult.capsizeSealPressure2
  367. obj3.resultSealPressure3 = breatheResult.capsizeSealPressure3
  368. obj3.pointList0 = groupbox.pointList12
  369. obj3.pointList1 = groupbox.pointList13
  370. obj3.pointList2 = groupbox.pointList14
  371. reportWord.generateBreatheValveWord(savePath,para,obj1,obj2,obj3)
  372. }
  373. }
  374. function pressureDisplayInput(number){
  375. pressureCnt++
  376. if(pressureCnt <= 61){
  377. dataArray.push(number)
  378. curveDisplay.spline.append(pressureCnt-1,number)
  379. }
  380. else{
  381. dataArray.push(number)
  382. dataArray.shift()
  383. curveDisplay.spline.clear()
  384. for(var i=0; i<61; i++){
  385. curveDisplay.spline.append(i,dataArray[i])
  386. }
  387. }
  388. gauge.value = number
  389. }
  390. function show(){
  391. animationShow.running = true
  392. }
  393. function exit(){
  394. BreatheTestJs.exit = true
  395. animationExit.running = true
  396. startStopButton.running = false
  397. stopTimer.start()
  398. }
  399. //加载任务动画效果
  400. NumberAnimation {
  401. id: animationShow
  402. target: groupbox
  403. property: "x"
  404. from: groupbox.x
  405. to: 0
  406. duration: 500
  407. }
  408. NumberAnimation {
  409. id: animationExit
  410. target: groupbox
  411. property: "x"
  412. from: groupbox.x
  413. to: 1024
  414. duration: 500
  415. }
  416. Column{
  417. anchors.left: parent.left
  418. anchors.leftMargin: 3
  419. anchors.top: parent.top
  420. anchors.topMargin: 10
  421. spacing: 0
  422. Rectangle{
  423. id:paraRectagle
  424. property int addHeight :0
  425. width: 980
  426. height: 70+addHeight
  427. color: "white"
  428. radius: 6
  429. Row{
  430. spacing: 10
  431. Item {
  432. width: 820
  433. height: paraRectagle.height
  434. Column{
  435. anchors.left: parent.left
  436. anchors.leftMargin: 10
  437. anchors.top: parent.top
  438. anchors.topMargin: 10
  439. spacing: 4
  440. Row{
  441. spacing: 10
  442. InputLine{
  443. id:manufactureInputLine
  444. paraName: "制造单位:"
  445. paraLength: 180
  446. onTextChanged: {
  447. root.manufacture = text
  448. }
  449. }
  450. InputLine{
  451. id:typeInputLine
  452. paraName: "型号:"
  453. paraLength: 130
  454. validator:RegExpValidator {
  455. regExp: /[0-9a-zA-Z.-]*/
  456. }
  457. onTextChanged: {
  458. root.type = text
  459. }
  460. }
  461. InputLine{
  462. id:serialNumberInputLine
  463. paraName: "编号:"
  464. paraLength: 139
  465. validator:RegExpValidator {
  466. regExp: /[0-9a-zA-Z.-]*/
  467. }
  468. onTextChanged: {
  469. root.serialNumber = text
  470. }
  471. }
  472. InputLine{
  473. id:openPressureTimeMaxInputLine
  474. paraName: "开启计时:"
  475. paraLength: 40
  476. text: BreatheTestJs.openPressureTimeMax
  477. validator:RegExpValidator {
  478. regExp: /[0-9]*/
  479. }
  480. inputMethodHints: Qt.ImhDigitsOnly
  481. onTextChanged: {
  482. BreatheTestJs.openPressureTimeMax = Number(text)
  483. console.log("openPressureTimeMax:",BreatheTestJs.openPressureTimeMax)
  484. if(Number(text) >180){
  485. text = 180
  486. }
  487. }
  488. // onTextFocusChanged: {
  489. // if(Number(text) >180){
  490. // text = 180
  491. // }
  492. // }
  493. }
  494. UserComboBox{
  495. id:userComboBox
  496. width: 80
  497. height:25
  498. bgColor:"#D2D5D9"
  499. model: ["试验1次","试验2次", "试验3次"]
  500. onActivated: {
  501. }
  502. Binding{
  503. target: root
  504. property: "count"
  505. value: userComboBox.currentIndex+1
  506. }
  507. }
  508. }
  509. Row{
  510. spacing: 10
  511. InputLine{
  512. id:userInputLine
  513. paraName: "使用单位:"
  514. paraLength: 180
  515. onTextChanged: {
  516. root.user = text
  517. }
  518. }
  519. CarPlate{
  520. id:carplateInputLine
  521. paraName: "车牌:"
  522. paraLength: 130-55
  523. onPlattextChanged: {
  524. root.carplate = plattext
  525. console.log("BreathValve Carplattext:" + plattext)
  526. }
  527. }
  528. UserComboBox{
  529. id:testTypeComboBox
  530. anchors.verticalCenter: parent.verticalCenter
  531. width: 177
  532. height:25
  533. bgColor:"#D2D5D9"
  534. enabled: !groupbox.running
  535. model: ["正压开启压力和密封试验","负压开启压力和密封试验", "颠覆性密封试验"]
  536. onCurrentTextChanged: {
  537. if(currentText === "颠覆性密封试验"){
  538. paraRectagle.addHeight = 35
  539. }
  540. else{
  541. paraRectagle.addHeight = 0
  542. }
  543. switch(currentText){
  544. case "正压开启压力和密封试验":
  545. BreatheTestJs.openPressureTimeMax = 30
  546. BreatheTestJs.sealPressureTimemax = 15
  547. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  548. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  549. openPressureTimeMaxInputLine.enabled = true
  550. break
  551. case "负压开启压力和密封试验":
  552. BreatheTestJs.openPressureTimeMax = 15
  553. BreatheTestJs.sealPressureTimemax = 15
  554. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  555. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  556. openPressureTimeMaxInputLine.enabled = true
  557. break
  558. case "颠覆性密封试验":
  559. openPressureTimeMaxInputLine.enabled = false
  560. BreatheTestJs.sealPressureTimemax = 30
  561. sealPressureTimemaxInputLine.text = BreatheTestJs.sealPressureTimemax
  562. openPressureTimeMaxInputLine.text = BreatheTestJs.openPressureTimeMax
  563. break
  564. }
  565. groupbox.clearCurveDisplay()
  566. }
  567. }
  568. InputLine{
  569. id:sealPressureTimemaxInputLine
  570. paraName: "密封计时:"
  571. paraLength: 39
  572. text: BreatheTestJs.sealPressureTimemax
  573. validator:RegExpValidator {
  574. regExp: /[0-9]*/
  575. }
  576. inputMethodHints: Qt.ImhDigitsOnly
  577. onTextChanged: {
  578. BreatheTestJs.sealPressureTimemax = Number(text)
  579. if(Number(text) >180){
  580. text = 180
  581. }
  582. }
  583. // onTextFocusChanged: {
  584. // if(Number(text) >180){
  585. // text = 180
  586. // }
  587. // }
  588. }
  589. UserComboBox{
  590. id:valveStateComboBox
  591. anchors.verticalCenter: parent.verticalCenter
  592. width: 80
  593. height:25
  594. bgColor:"#D2D5D9"
  595. model: ["在用阀","新阀"]
  596. onCurrentTextChanged: {
  597. root.state = currentText
  598. }
  599. }
  600. }
  601. Row{
  602. visible: paraRectagle.addHeight === 0?false:true
  603. spacing: 10
  604. InputLine{
  605. id:openPressureLine
  606. paraName: "开启压力(kPa):"
  607. paraLength: 145
  608. text: BreatheTestJs.capsizeOpenPresure
  609. validator:RegExpValidator {
  610. regExp: /[0-9.]*/
  611. }
  612. inputMethodHints: Qt.ImhDigitsOnly
  613. onTextChanged: {
  614. BreatheTestJs.capsizeOpenPresure = Number(text)
  615. console.log(BreatheTestJs.capsizeOpenPresure)
  616. inputPressureLine.text = BreatheTestJs.capsizeOpenPresure+22
  617. }
  618. }
  619. InputLine{
  620. id:inputPressureLine
  621. paraName: "进气压力(kPa):"
  622. paraLength: 68
  623. text: BreatheTestJs.capsizeSetPressure
  624. validator:RegExpValidator {
  625. regExp: /[0-9.]*/
  626. }
  627. inputMethodHints: Qt.ImhDigitsOnly
  628. onTextChanged: {
  629. BreatheTestJs.capsizeSetPressure = Number(text)
  630. console.log(BreatheTestJs.capsizeSetPressure)
  631. }
  632. }
  633. UserComboBox{
  634. id:subversiveComboBox
  635. anchors.verticalCenter: parent.verticalCenter
  636. width: 177
  637. height:25
  638. bgColor:"#D2D5D9"
  639. visible: testTypeComboBox.currentText === "颠覆性密封试验"?true:false
  640. model: ["90°","180°", "270°"]
  641. }
  642. }
  643. }
  644. }
  645. Item {
  646. width: 150
  647. height: paraRectagle.height
  648. Row{
  649. anchors.verticalCenter: parent.verticalCenter
  650. spacing: 20
  651. StartStopButton{
  652. id:startStopButton
  653. width: 50
  654. height: 50
  655. anchors.verticalCenter: parent.verticalCenter
  656. // onRunningChanged: {
  657. // groupbox.running = running
  658. // }
  659. }
  660. ReportButton{
  661. id:reportButton
  662. width: 50
  663. height: 50
  664. anchors.verticalCenter: parent.verticalCenter
  665. }
  666. }
  667. }
  668. }
  669. }
  670. Row{
  671. x:-10
  672. CurveDisplay{
  673. id:curveDisplay
  674. anchors.verticalCenter: parent.verticalCenter
  675. width: 450
  676. height: 300
  677. axisxMax:60
  678. axisxMin:0
  679. axisyMax:{
  680. if(testTypeComboBox.currentText === "正压开启压力和密封试验")
  681. return 30
  682. if(testTypeComboBox.currentText === "颠覆性密封试验")
  683. return 50
  684. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  685. return 5
  686. }
  687. axisyMin:{
  688. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  689. return -10
  690. return 0
  691. }
  692. name:"横轴时间(秒) 纵轴压力(kPa)"
  693. }
  694. Rectangle{
  695. width: (300-18)*0.75
  696. height: 300-18
  697. color: "white"
  698. radius: 6
  699. anchors.verticalCenter: parent.verticalCenter
  700. Gauge {
  701. id:gauge
  702. width: parent.width
  703. height: parent.width
  704. anchors.centerIn: parent
  705. value: 0
  706. maximumValue: {
  707. if(testTypeComboBox.currentText === "正压开启压力和密封试验")
  708. return 50
  709. if(testTypeComboBox.currentText === "颠覆性密封试验")
  710. return 50
  711. if(testTypeComboBox.currentText === "负压开启压力和密封试验")
  712. return 15
  713. }
  714. minimumValue: -10
  715. tickmarkStepSize:5
  716. labelStepSize:5
  717. Behavior on value { NumberAnimation { duration: 1000 }}
  718. }
  719. }
  720. Item {
  721. width: 338
  722. height: 300
  723. anchors.verticalCenter: parent.verticalCenter
  724. Rectangle{
  725. id:resultWindow
  726. anchors.fill: parent
  727. anchors.margins: 10
  728. color: "white"
  729. radius: 6
  730. ProcessWindow{
  731. id:processWindow
  732. width: 280
  733. height: 50
  734. hideWith:resultWindow.width
  735. anchors.centerIn: parent
  736. }
  737. BreatheResult{
  738. id:breatheResult
  739. // visible: false
  740. }
  741. Connections{
  742. target: testTypeComboBox
  743. onCurrentIndexChanged: {
  744. breatheResult.swipeview.setCurrentIndex(testTypeComboBox.currentIndex)
  745. }
  746. }
  747. }
  748. }
  749. }
  750. Rectangle{
  751. width: 980
  752. height: 265 - paraRectagle.addHeight
  753. color: "white"
  754. radius: 6
  755. BreatheTable{
  756. id:breatheTable
  757. anchors.fill: parent
  758. }
  759. Connections{
  760. target: testTypeComboBox
  761. onCurrentIndexChanged: {
  762. breatheTable.swipeview.setCurrentIndex(testTypeComboBox.currentIndex)
  763. }
  764. }
  765. }
  766. }
  767. InputPanel {
  768. id: inputPanel
  769. z: 99
  770. x: -11
  771. y: window.height
  772. width: window.width
  773. onActiveChanged: {
  774. if(!active)
  775. {
  776. manufactureInputLine.textFocus = false
  777. typeInputLine.textFocus = false
  778. serialNumberInputLine.textFocus = false
  779. userInputLine.textFocus = false
  780. carplateInputLine.textFocus = false
  781. openPressureTimeMaxInputLine.textFocus = false
  782. sealPressureTimemaxInputLine.textFocus = false
  783. }
  784. }
  785. states:
  786. State {
  787. name: "visible"
  788. when: inputPanel.active
  789. PropertyChanges {
  790. target: inputPanel
  791. y: window.height/2
  792. }
  793. }
  794. transitions: Transition {
  795. from: ""
  796. to: "visible"
  797. reversible: true
  798. ParallelAnimation {
  799. NumberAnimation {
  800. properties: "y"
  801. duration: 250
  802. easing.type: Easing.InOutQuad
  803. }
  804. }
  805. }
  806. Component.onCompleted: {
  807. VirtualKeyboardSettings.styleName = "retro"
  808. VirtualKeyboardSettings.activeLocales=["en_GB","zh_CN"]
  809. VirtualKeyboardSettings.locale = "en_GB";//"fi_FI";
  810. }
  811. }
  812. }
  813. }
  814. }