|
@@ -0,0 +1,889 @@
|
|
|
+import QtQuick 2.15
|
|
|
+import QtQuick.Layouts 1.3
|
|
|
+import QtQuick.Controls 1.2
|
|
|
+import QtQuick.Controls.Styles 1.4
|
|
|
+import Qt.labs.qmlmodels 1.0
|
|
|
+import QtQuick.LocalStorage 2.0
|
|
|
+//import io.qt.DataBaseModel 1.0
|
|
|
+import Qt.labs.platform 1.1
|
|
|
+
|
|
|
+import TService 1.0
|
|
|
+import "selftest_db.js" as SelfDB
|
|
|
+
|
|
|
+
|
|
|
+Item {
|
|
|
+ id: selftest_root
|
|
|
+ property string title_str:"系统自测"
|
|
|
+
|
|
|
+ property string background: "#d7e3bc"
|
|
|
+ property string alterBackground: "white"
|
|
|
+ property string highlight: "#e4f7d6"
|
|
|
+ property string headerBkgnd: "#F0F0F0"
|
|
|
+
|
|
|
+ property var allArray: []
|
|
|
+ //property string state
|
|
|
+ property string pressure:"0.00"
|
|
|
+ property int pressureCnt:0
|
|
|
+ property int test_direction:0
|
|
|
+ property bool bStart: false
|
|
|
+ property real m_maxY: 0.0
|
|
|
+ property real m_minY: 0.0
|
|
|
+
|
|
|
+ property string report_record_str:"null"
|
|
|
+ property string test_state_str:"未开始"
|
|
|
+ property string test_result_str:"未知"
|
|
|
+
|
|
|
+ //var selftest_info = new Object
|
|
|
+
|
|
|
+ property var normalG: Gradient {
|
|
|
+ GradientStop { position: 0.0; color: "#c7d3ac" }
|
|
|
+ GradientStop { position: 1.0; color: "#F0F0F0" }
|
|
|
+ }
|
|
|
+ property var hoverG: Gradient {
|
|
|
+ GradientStop { position: 0.0; color: "white"; }
|
|
|
+ GradientStop { position: 1.0; color: "#d7e3bc"; }
|
|
|
+ }
|
|
|
+ property var pressG: Gradient {
|
|
|
+ GradientStop { position: 0.0; color: "#d7e3bc"; }
|
|
|
+ GradientStop { position: 1.0; color: "white"; }
|
|
|
+ }
|
|
|
+
|
|
|
+ function qmlProcessState(id, str1, str2){
|
|
|
+ if(id === 0){
|
|
|
+
|
|
|
+ test_state_str = str1
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function qmlProcessResult(id, str, bPassed){
|
|
|
+ if(id === 0){
|
|
|
+ if(bPassed){
|
|
|
+ test_result_str = "合格"
|
|
|
+ }else{
|
|
|
+ test_result_str = "超标"
|
|
|
+ }
|
|
|
+
|
|
|
+ var selftest_info = new Object
|
|
|
+ var jsontmp = testService.get_selftest_info()
|
|
|
+
|
|
|
+ selftest_info.target = jsontmp.target
|
|
|
+ selftest_info.interval = jsontmp.interval
|
|
|
+ selftest_info.threshold = jsontmp.threshold
|
|
|
+ selftest_info.begin = jsontmp.begin
|
|
|
+ selftest_info.end = jsontmp.end
|
|
|
+ selftest_info.delta = jsontmp.delta
|
|
|
+ selftest_info.passed = jsontmp.pass
|
|
|
+
|
|
|
+ //pagetest.show_selftestDetail(str)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function qmlProcessStop(id){
|
|
|
+ if(id === 0){
|
|
|
+ //pagetest.selftestStop()
|
|
|
+ startStopButton.running = false;
|
|
|
+ database_add()
|
|
|
+ tableview_refresh()
|
|
|
+ //console.log("qmlProcessStop pagetest ",id )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function database_add(){
|
|
|
+
|
|
|
+ //var record = new Object
|
|
|
+ //record.target = selftest_info.target
|
|
|
+ //record.interval = selftest_info.interval
|
|
|
+ //record.threshold = selftest_info.threshold
|
|
|
+ //record.begin = selftest_info.begin
|
|
|
+ //record.end = selftest_info.end
|
|
|
+ //record.passed = selftest_info.passed
|
|
|
+
|
|
|
+ var selftest_info = new Object
|
|
|
+ var jsontmp = testService.get_selftest_info()
|
|
|
+
|
|
|
+ selftest_info.target = jsontmp.target
|
|
|
+ selftest_info.interval = jsontmp.interval
|
|
|
+ selftest_info.threshold = jsontmp.threshold
|
|
|
+ selftest_info.begin = jsontmp.begin
|
|
|
+ selftest_info.end = jsontmp.end
|
|
|
+ selftest_info.delta = jsontmp.delta
|
|
|
+ selftest_info.passed = jsontmp.passed
|
|
|
+
|
|
|
+ SelfDB.insertRecord(selftest_info)
|
|
|
+ SelfDB.insertData(allArray)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function curveDisplay_refresh(date){
|
|
|
+ curveDisplay.spline.clear()
|
|
|
+ pressureCnt =0
|
|
|
+
|
|
|
+ let table_name = 'data_'+date
|
|
|
+ var records = SelfDB.readData(table_name)
|
|
|
+
|
|
|
+ if(records){
|
|
|
+
|
|
|
+ if(records.rows.length > 0){
|
|
|
+ var index = 0
|
|
|
+ while(index < records.rows.length){
|
|
|
+
|
|
|
+ var item = records.rows.item(index)
|
|
|
+ curveDisplay_show(item)
|
|
|
+
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ console.log("tableview_refresh records is null:" )
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function tableview_refresh(){
|
|
|
+ selttest_Model.clear()
|
|
|
+ var records = SelfDB.readData("test_table")
|
|
|
+
|
|
|
+ if(records){
|
|
|
+
|
|
|
+ console.log("tableview_refresh records.rows.length:"+records.rows.length )
|
|
|
+
|
|
|
+ if(records.rows.length > 0){
|
|
|
+ var index = records.rows.length-1
|
|
|
+ var tmp_id = 0;
|
|
|
+ while(index >= 0){
|
|
|
+ var item = records.rows.item(index)
|
|
|
+ /*
|
|
|
+ selttest_Model.append({
|
|
|
+ "idx":tmp_id,
|
|
|
+ "date":item.dt,
|
|
|
+ "time":item.time,
|
|
|
+ "target":item.target.toString(),
|
|
|
+ "interval":item.interval.toString(),
|
|
|
+ "threshold":item.threshold.toString(),
|
|
|
+ "start":item.begin.toString(),
|
|
|
+ "end":item.end.toString(),
|
|
|
+ "delta":item.delta.toString(),
|
|
|
+ "result":item.passed === 1? "合格":"超标" })
|
|
|
+ */
|
|
|
+
|
|
|
+ selttest_Model.append({
|
|
|
+ "idx":tmp_id,
|
|
|
+ "date":item.dt,
|
|
|
+ "time":item.time,
|
|
|
+ "target":item.target,
|
|
|
+ "interval":item.interval,
|
|
|
+ "threshold":item.threshold,
|
|
|
+ "start":item.begin,
|
|
|
+ "end":item.end,
|
|
|
+ "delta":item.delta,
|
|
|
+ "result":item.passed === 1? "合格":"超标" })
|
|
|
+ index--
|
|
|
+ tmp_id++
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ console.log("tableview_refresh records is null:" )
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function qmlProcessReportProgress_self(str){
|
|
|
+
|
|
|
+ console.log("main.qml tservice qmlProcessReportProgress:", str )
|
|
|
+
|
|
|
+ if(str === "close"){
|
|
|
+ genreportprogress_self.exit()
|
|
|
+ }else{
|
|
|
+ genreportprogress_self.show(str)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function qmlProcessPressure(id, map){
|
|
|
+ //console.log("main.qml qmlProcessPressure ",id )
|
|
|
+ //log.show2(str)
|
|
|
+ //var textstring = ''
|
|
|
+ //var varmap = map
|
|
|
+ //textstring += map.pressure+":"
|
|
|
+ //textstring += map.direction.toString()+":"
|
|
|
+ //textstring += map.stage.toString()+":"
|
|
|
+ //textstring += map.step.toString()+":"
|
|
|
+
|
|
|
+ //console.log("main.qml qmlProcessPressure :",textstring.toString() )
|
|
|
+ if(id === 0){
|
|
|
+ pressure = map.pressure
|
|
|
+ //pressureDisplayInput(Number(pressure_map.pressure))
|
|
|
+
|
|
|
+ var data = new Object
|
|
|
+ data.step = map.step
|
|
|
+ data.pressure = Number(map.pressure)
|
|
|
+
|
|
|
+ curveDisplay_show(data)
|
|
|
+
|
|
|
+ allArray.push(data)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function curveDisplay_show(value){
|
|
|
+ pressureCnt++
|
|
|
+ var number = value.pressure
|
|
|
+
|
|
|
+ m_maxY = (m_maxY < number)? number:m_maxY
|
|
|
+ m_minY = (m_minY > number)? number:m_minY
|
|
|
+
|
|
|
+ curveDisplay.setRange_Y(m_minY-2.0, m_maxY+2.0)
|
|
|
+
|
|
|
+ if(pressureCnt <= 180){
|
|
|
+ curveDisplay.spline.append(pressureCnt-1,number)
|
|
|
+ }
|
|
|
+ else{
|
|
|
+
|
|
|
+ curveDisplay.setRange_X(0, pressureCnt-1)
|
|
|
+ curveDisplay.spline.append(pressureCnt-1,number)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ function cleardata(){
|
|
|
+
|
|
|
+ allArray = []
|
|
|
+ curveDisplay.spline.clear()
|
|
|
+ pressureCnt =0
|
|
|
+
|
|
|
+ pressure = "0.00"
|
|
|
+
|
|
|
+ test_state_str="未开始"
|
|
|
+ test_result_str="未知"
|
|
|
+ }
|
|
|
+
|
|
|
+ function pad_with_zeroes(number, length) {
|
|
|
+ var my_string = '' + number;
|
|
|
+ while (my_string.length < length) {
|
|
|
+ my_string = '0' + my_string;
|
|
|
+ }
|
|
|
+ return my_string;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getWordSaveFileName( para){
|
|
|
+ var date = new Date;
|
|
|
+ var year = date.getFullYear()
|
|
|
+ var month = pad_with_zeroes(date.getMonth()+1,2)
|
|
|
+ var day = pad_with_zeroes(date.getDate(),2)
|
|
|
+ var hour = pad_with_zeroes(date.getHours(),2)
|
|
|
+ var minute = pad_with_zeroes(date.getMinutes(),2)
|
|
|
+ var second = pad_with_zeroes(date.getSeconds(),2)
|
|
|
+
|
|
|
+ var time = year+month+day+hour+minute+second
|
|
|
+ return "file:///"+time+"_"+para
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ DynamicGroupBox{
|
|
|
+ id:groupbox_all
|
|
|
+ anchors.centerIn: parent
|
|
|
+ anchors.fill: parent
|
|
|
+
|
|
|
+ title: title_str
|
|
|
+
|
|
|
+ Column{
|
|
|
+ anchors.left: parent.left
|
|
|
+ anchors.leftMargin: 3
|
|
|
+ anchors.top: parent.top
|
|
|
+ anchors.topMargin: 10
|
|
|
+ spacing: 0
|
|
|
+
|
|
|
+ FileDialog {
|
|
|
+ id: saveWordDialog
|
|
|
+ title: "保存为"
|
|
|
+ //nameFilters: [ "Word files (*.doc)"]
|
|
|
+ //nameFilters: [ "Word files (*.doc)", "Text files (*.pdf)"]
|
|
|
+ nameFilters: ["Text files (*.pdf)"]
|
|
|
+ fileMode: FileDialog.SaveFile
|
|
|
+ onAccepted: {
|
|
|
+
|
|
|
+ var fileName = "D:/tmp/selftest.jpg"
|
|
|
+
|
|
|
+ rect_display.grabToImage(function(result) {
|
|
|
+ result.saveToFile(fileName);
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ var savePath = file.toString().substring(8)
|
|
|
+
|
|
|
+ console.log("saveWordDialog savePath:")
|
|
|
+ console.log(savePath)
|
|
|
+
|
|
|
+ if("null" == report_record_str){
|
|
|
+ testService.genReport_Self(savePath, "D:/tmp/")
|
|
|
+ }else{
|
|
|
+ testService.genReport_Self2(report_record_str, savePath, "D:/tmp/")
|
|
|
+ }
|
|
|
+
|
|
|
+ //reportWord.generateBreatheValveWord(savePath,para,obj1,obj2,obj3)
|
|
|
+ // testService.genReport(savePath, "D:/tmp/")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Row{
|
|
|
+ //x:-10
|
|
|
+ y:-10
|
|
|
+ //width: 900
|
|
|
+ //height: parent.height
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:rect_display
|
|
|
+ //anchors.verticalCenter: parent.verticalCenter
|
|
|
+ width: 900
|
|
|
+ height: 460
|
|
|
+
|
|
|
+ CurveDisplay{
|
|
|
+ id:curveDisplay
|
|
|
+ anchors.fill: parent
|
|
|
+
|
|
|
+ axisxMax:180
|
|
|
+ axisxMin:0
|
|
|
+ axisyMax:14
|
|
|
+ axisyMin:0
|
|
|
+ name:"横轴时间(秒) 纵轴压力(kPa)"
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Item {
|
|
|
+ id:button_root
|
|
|
+ width: 360
|
|
|
+ height: 460
|
|
|
+
|
|
|
+ Column{
|
|
|
+ id:button_column
|
|
|
+ spacing: 10
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:buttonWindow
|
|
|
+ //anchors.fill: parent
|
|
|
+ width: 350
|
|
|
+ height: 70
|
|
|
+
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+
|
|
|
+ Row{
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ anchors.horizontalCenter: parent.horizontalCenter
|
|
|
+ spacing: 50
|
|
|
+
|
|
|
+ StartStopButton{
|
|
|
+ id:startStopButton
|
|
|
+ width: 50
|
|
|
+ height: 50
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ onRunningChanged: {
|
|
|
+
|
|
|
+ if(running){
|
|
|
+ //clearCurveDisplay()
|
|
|
+ cleardata()
|
|
|
+ bStart = testService.tstart(0, 0)
|
|
|
+ if(!bStart){
|
|
|
+ running=false;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(bStart){
|
|
|
+ testService.tstop(0)
|
|
|
+ bStart=false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ReportButton{
|
|
|
+ id:reportButton
|
|
|
+ width: 50
|
|
|
+ height: 50
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ onUserClicked:{
|
|
|
+
|
|
|
+ //database_add()
|
|
|
+ //tableview_refresh()
|
|
|
+
|
|
|
+
|
|
|
+ if(false == startStopButton.running){
|
|
|
+
|
|
|
+ //var fileName = "D:/tmp/selftest.jpg"
|
|
|
+
|
|
|
+ //rect_display.grabToImage(function(result) {
|
|
|
+ // result.saveToFile(fileName);
|
|
|
+ //});
|
|
|
+
|
|
|
+ var date = new Date;
|
|
|
+ var year = date.getFullYear()
|
|
|
+ var month = pad_with_zeroes(date.getMonth()+1,2)
|
|
|
+ var day = pad_with_zeroes(date.getDate(),2)
|
|
|
+
|
|
|
+ var time = year+month+day
|
|
|
+ saveWordDialog.currentFile = "file:///"+time+"_VRST2000"
|
|
|
+
|
|
|
+ report_record_str = "null"
|
|
|
+
|
|
|
+ saveWordDialog.open()
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ReturnButton{
|
|
|
+ id: return_button
|
|
|
+ width: 50
|
|
|
+ height: 50
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ onUserClicked: {
|
|
|
+ if(false == startStopButton.running){
|
|
|
+ selftest_root.destroy()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:test_selrect
|
|
|
+ //anchors.fill: parent
|
|
|
+ anchors.margins: 10
|
|
|
+ width: 350
|
|
|
+ height: 50
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+ UserComboBox{
|
|
|
+ id:test_comboBox
|
|
|
+ //anchors.fill:parent
|
|
|
+ implicitWidth:350
|
|
|
+ implicitHeight:50
|
|
|
+ bgColor:"#D2D5D9"
|
|
|
+ model: ["正压系统自测","负压系统自测"]
|
|
|
+ onCurrentTextChanged: {
|
|
|
+ //root.standard_name = currentText
|
|
|
+ test_direction = currentIndex
|
|
|
+ console.log("choose test direction : "+test_direction)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:pressureWindow
|
|
|
+ //anchors.fill: parent
|
|
|
+ anchors.margins: 10
|
|
|
+ width: 350
|
|
|
+ height: 100
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+
|
|
|
+
|
|
|
+ Text {
|
|
|
+ id: pressurekpa
|
|
|
+ anchors.right: pressureWindow.right
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ text: qsTr("kPa ")
|
|
|
+ //font: 40
|
|
|
+ font.bold: true
|
|
|
+ font.pixelSize: 35
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:pressure_rect
|
|
|
+
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ anchors.right: pressurekpa.left;
|
|
|
+
|
|
|
+ width: 250
|
|
|
+ height: 80
|
|
|
+ LCDNumber{
|
|
|
+ id:lcd_pressure
|
|
|
+ anchors.centerIn: parent
|
|
|
+ text: selftest_root.pressure
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:resultWindow
|
|
|
+ //anchors.fill: parent
|
|
|
+ anchors.margins: 5
|
|
|
+ width: 350
|
|
|
+ height: 80
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+
|
|
|
+ Column{
|
|
|
+ anchors.margins: 10
|
|
|
+ anchors.fill: parent
|
|
|
+ spacing: 5
|
|
|
+
|
|
|
+ ResultDisplayText{
|
|
|
+ id: result_title
|
|
|
+ width: parent.width
|
|
|
+ height: 25
|
|
|
+ color: "white"
|
|
|
+ //paraName_fontColor:"red"
|
|
|
+ paraName: "自身密闭性检测:"
|
|
|
+ paraResult:""
|
|
|
+ paraUnit:""
|
|
|
+ }
|
|
|
+
|
|
|
+ ResultDisplayText{
|
|
|
+ id:result_dis
|
|
|
+ width: parent.width
|
|
|
+ height: 25
|
|
|
+ color: "#D2D5D9"
|
|
|
+ paraName_fontColor:"green"
|
|
|
+ paraName: "检测结果:"
|
|
|
+ paraResult_fontColor:"#272727"
|
|
|
+ paraResult:test_result_str
|
|
|
+ paraUnit:""
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:progressWindow
|
|
|
+ //anchors.fill: parent
|
|
|
+ anchors.margins: 5
|
|
|
+ width: 350
|
|
|
+ height: 110
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+
|
|
|
+ Column{
|
|
|
+ anchors.margins: 10
|
|
|
+ anchors.fill: parent
|
|
|
+ spacing: 5
|
|
|
+
|
|
|
+ ResultDisplayText{
|
|
|
+ id: state_title
|
|
|
+ width: parent.width
|
|
|
+ height: 25
|
|
|
+ color: "white"
|
|
|
+ //paraName_fontColor:"red"
|
|
|
+ paraName: "检测进度:"
|
|
|
+ paraResult:""
|
|
|
+ paraUnit:""
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ TNormalProgress {
|
|
|
+ id:test_progress
|
|
|
+ width: parent.width
|
|
|
+ backgroundColor: "#D2D5D9"
|
|
|
+ //barType: TNormalProgress.BarType.SucceedOrFailed
|
|
|
+
|
|
|
+ percent: 100
|
|
|
+ //NumberAnimation on percent { from: 0; to: 100; duration: 5000; running: true; loops: Animation.Infinite}
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+ ResultDisplayText{
|
|
|
+ id:state_dis
|
|
|
+ width: parent.width
|
|
|
+ height: 25
|
|
|
+ color: "#D2D5D9"
|
|
|
+ paraName_fontColor:"green"
|
|
|
+ paraName: "检测状态:"
|
|
|
+ paraResult_fontColor:"#272727"
|
|
|
+ paraResult:test_state_str
|
|
|
+ paraUnit:""
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Rectangle{
|
|
|
+ id:records_rect
|
|
|
+ //x:-10
|
|
|
+ width: 1250
|
|
|
+ height: 240
|
|
|
+ color: "white"
|
|
|
+ radius: 6
|
|
|
+ border.color: "black"
|
|
|
+
|
|
|
+ Text{
|
|
|
+ id:text_title
|
|
|
+ anchors.top: parent.top
|
|
|
+ anchors.topMargin: 10
|
|
|
+ anchors.horizontalCenter: parent.horizontalCenter
|
|
|
+ font.bold: true
|
|
|
+ font.pixelSize: 24
|
|
|
+ text: "系统自测历史记录"
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Component{
|
|
|
+ id:itemDelegateText
|
|
|
+ Text {
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ color: styleData.selected?"#1E90FF":"#000000"
|
|
|
+ elide: styleData.elideMode
|
|
|
+ text: styleData.value
|
|
|
+ font.pointSize: 10
|
|
|
+ //font.pixelSize: 24
|
|
|
+ //font.bold: true
|
|
|
+ horizontalAlignment: Text.AlignHCenter
|
|
|
+ verticalAlignment: Text.AlignVCenter
|
|
|
+ anchors.fill: parent
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Component{
|
|
|
+ id:itemDelegateButton
|
|
|
+ Row{
|
|
|
+ anchors.fill: parent
|
|
|
+ anchors.centerIn: parent
|
|
|
+ spacing: 10
|
|
|
+
|
|
|
+ Button {
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ //color: styleData.selected?"#1E90FF":"#000000"
|
|
|
+ //elide: styleData.elideMode
|
|
|
+ //anchors.centerIn: parent
|
|
|
+ text: "报告"
|
|
|
+ width: 60
|
|
|
+ onClicked: {
|
|
|
+
|
|
|
+ console.log("index ==="+styleData.row);
|
|
|
+ console.log("tableView.currentRow ==="+tableView.currentRow);
|
|
|
+ console.log("select date:"+selttest_Model.get(styleData.row).date);
|
|
|
+
|
|
|
+ var today = new Date(selttest_Model.get(styleData.row).date);
|
|
|
+ var DD = String(today.getDate()).padStart(2, '0'); // 获取日
|
|
|
+ var MM = String(today.getMonth()+1).padStart(2, '0'); //获取月份,1 月为 0
|
|
|
+ var yyyy = today.getFullYear(); // 获取年
|
|
|
+
|
|
|
+ let date = yyyy + MM + DD;
|
|
|
+ curveDisplay_refresh(date)
|
|
|
+
|
|
|
+ //var fileName = "D:/tmp/selftest.jpg"
|
|
|
+
|
|
|
+ //rect_display.grabToImage(function(result) {
|
|
|
+ // result.saveToFile(fileName);
|
|
|
+ //});
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //生成测试结果 JSON 字符串
|
|
|
+ var recordJson={}
|
|
|
+
|
|
|
+ recordJson.target = Number(selttest_Model.get(styleData.row).target)
|
|
|
+ recordJson.interval = Number(selttest_Model.get(styleData.row).interval)
|
|
|
+ recordJson.threshold = Number(selttest_Model.get(styleData.row).threshold)
|
|
|
+ recordJson.begin = Number(selttest_Model.get(styleData.row).start)
|
|
|
+ recordJson.end = Number(selttest_Model.get(styleData.row).end)
|
|
|
+ recordJson.delta = Number(selttest_Model.get(styleData.row).delta)
|
|
|
+
|
|
|
+ if("合格" === selttest_Model.get(styleData.row).result){
|
|
|
+ recordJson.passed = 1
|
|
|
+ }else{
|
|
|
+ recordJson.passed = 0
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ report_record_str = JSON.stringify(recordJson)
|
|
|
+
|
|
|
+ saveWordDialog.currentFile = "file:///"+date+"_VRST2000"
|
|
|
+ saveWordDialog.open()
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Button {
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ //color: styleData.selected?"#1E90FF":"#000000"
|
|
|
+ //elide: styleData.elideMode
|
|
|
+ //anchors.centerIn: parent
|
|
|
+ text: "删除"
|
|
|
+ width: 60
|
|
|
+
|
|
|
+ onClicked: {
|
|
|
+
|
|
|
+ //curveDisplay.spline.clear()
|
|
|
+ // pressureCnt =0
|
|
|
+
|
|
|
+ SelfDB.deleteRecord(selttest_Model.get(styleData.row).date)
|
|
|
+ tableview_refresh()
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ TableView{
|
|
|
+ id:tableView
|
|
|
+ //frameVisible: true
|
|
|
+ width: parent.width
|
|
|
+ focus: true
|
|
|
+ //height: parent.height - 50
|
|
|
+ anchors.top: text_title.bottom
|
|
|
+ anchors.bottom: parent.bottom
|
|
|
+ anchors.topMargin: 10
|
|
|
+
|
|
|
+ TableViewColumn{role: "idx"; title: "ID"; width: 40;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "date"; title: "自检日期"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "time"; title: "完成时间"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "target"; title: "目标压力(Kpa)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "interval"; title: "检测时间(秒)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "threshold"; title: "变化限值(Kpa)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "start"; title: "开始压力(Kpa)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "end"; title: "结束压力(Kpa)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "delta"; title: "压力变化(Kpa)"; width: 120;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "result"; title: "自测结果"; width: 80;delegate: itemDelegateText}
|
|
|
+ TableViewColumn{role: "detail"; title: "操作"; width: 130;delegate: itemDelegateButton}
|
|
|
+
|
|
|
+ //model: modelItems
|
|
|
+
|
|
|
+ headerDelegate: Rectangle{
|
|
|
+ implicitWidth: 16
|
|
|
+ implicitHeight: 24
|
|
|
+
|
|
|
+ gradient: styleData.pressed ? selftest_root.pressG : (styleData.containsMouse ? selftest_root.hoverG: selftest_root.normalG)
|
|
|
+
|
|
|
+ border.color: "gray"
|
|
|
+ border.width: 1
|
|
|
+ Text{
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ anchors.left: parent.left
|
|
|
+ anchors.leftMargin: 4
|
|
|
+ anchors.right: parent.right
|
|
|
+ anchors.rightMargin: 4
|
|
|
+ text: styleData.value
|
|
|
+ color: styleData.pressed ?"red" : "blue"
|
|
|
+ horizontalAlignment: Text.AlignHCenter
|
|
|
+ verticalAlignment: Text.AlignVCenter
|
|
|
+ font.bold: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rowDelegate: Rectangle{
|
|
|
+ height: 28
|
|
|
+ //border.color: "gray"
|
|
|
+ //color: styleData.selected?"#f0b0b0af":(styleData.alternate?"#c3c3c0":"#c0c0c3")
|
|
|
+ color: styleData.selected ? selftest_root.highlight : selftest_root.alterBackground
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ itemDelegate: Rectangle {
|
|
|
+ height: 24
|
|
|
+ //border.color: "gray"
|
|
|
+ color: "transparent"
|
|
|
+ Text {
|
|
|
+ //anchors.centerIn: parent
|
|
|
+ //anchors.left: parent.left
|
|
|
+ anchors.leftMargin: 6
|
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
|
+ //color: styleData.textColor
|
|
|
+ color: styleData.selected ? "red" : styleData.textColor
|
|
|
+ text: styleData.value
|
|
|
+ verticalAlignment: Text.AlignVCenter
|
|
|
+ font.pointSize: 13
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ onClicked:{
|
|
|
+ console.log("onClicked index ==="+ row);
|
|
|
+ console.log("select date:"+selttest_Model.get(row).date);
|
|
|
+
|
|
|
+ var today = new Date(selttest_Model.get(row).date);
|
|
|
+ var DD = String(today.getDate()).padStart(2, '0'); // 获取日
|
|
|
+ var MM = String(today.getMonth()+1).padStart(2, '0'); //获取月份,1 月为 0
|
|
|
+ var yyyy = today.getFullYear(); // 获取年
|
|
|
+
|
|
|
+ let date = yyyy + MM + DD;
|
|
|
+ curveDisplay_refresh(date)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ model:ListModel{
|
|
|
+ id: selttest_Model
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Log{
|
|
|
+ id:genreportprogress_self
|
|
|
+ z:30
|
|
|
+ width: 300
|
|
|
+ height: 50
|
|
|
+ //anchors.centerIn: parent
|
|
|
+ anchors.top: parent.top
|
|
|
+ anchors.topMargin: 100
|
|
|
+ anchors.left: parent.left
|
|
|
+ anchors.leftMargin: 480
|
|
|
+ }
|
|
|
+
|
|
|
+ Component.onCompleted: {
|
|
|
+
|
|
|
+ testService.sigPressure.connect(qmlProcessPressure);
|
|
|
+
|
|
|
+ testService.sigState.connect(qmlProcessState);
|
|
|
+ //testService.sigSystemResult.connect(qmlProcessSystemResult);
|
|
|
+ //testService.sigValveResult.connect(qmlProcessValveResult);
|
|
|
+ testService.sigSelfTestResult.connect(qmlProcessResult);
|
|
|
+ testService.onGenreportProgress.connect(qmlProcessReportProgress_self);
|
|
|
+
|
|
|
+ testService.sigStop.connect(qmlProcessStop);
|
|
|
+
|
|
|
+ SelfDB.initDatabase()
|
|
|
+
|
|
|
+ tableview_refresh()
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/*##^##
|
|
|
+Designer {
|
|
|
+ D{i:0;autoSize:true;height:480;width:640}
|
|
|
+}
|
|
|
+##^##*/
|