SafeValve.qml 37 KB

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