diff --git a/bin/Release/D3Dcompiler_47.dll b/bin/Release/D3Dcompiler_47.dll index 56512f5..e5bf5cf 100644 Binary files a/bin/Release/D3Dcompiler_47.dll and b/bin/Release/D3Dcompiler_47.dll differ diff --git a/bin/Release/EES.exe b/bin/Release/EES.exe index c3f37ed..a68f22d 100644 Binary files a/bin/Release/EES.exe and b/bin/Release/EES.exe differ diff --git a/bin/Release/EES.pdb b/bin/Release/EES.pdb new file mode 100644 index 0000000..c383a7e Binary files /dev/null and b/bin/Release/EES.pdb differ diff --git a/bin/Release/EES_20250410.exe b/bin/Release/EES_20250410.exe deleted file mode 100644 index ef38c83..0000000 Binary files a/bin/Release/EES_20250410.exe and /dev/null differ diff --git a/bin/Release/Qt5Charts.dll b/bin/Release/Qt5Charts.dll index e74eb6b..ff40047 100644 Binary files a/bin/Release/Qt5Charts.dll and b/bin/Release/Qt5Charts.dll differ diff --git a/bin/Release/Qt5Core.dll b/bin/Release/Qt5Core.dll index 40e8de1..46cee93 100644 Binary files a/bin/Release/Qt5Core.dll and b/bin/Release/Qt5Core.dll differ diff --git a/bin/Release/Qt5Gui.dll b/bin/Release/Qt5Gui.dll index bf38dda..3931732 100644 Binary files a/bin/Release/Qt5Gui.dll and b/bin/Release/Qt5Gui.dll differ diff --git a/bin/Release/Qt5Network.dll b/bin/Release/Qt5Network.dll index d32644d..800a355 100644 Binary files a/bin/Release/Qt5Network.dll and b/bin/Release/Qt5Network.dll differ diff --git a/bin/Release/Qt5Positioning.dll b/bin/Release/Qt5Positioning.dll index ec9e17d..5ac30ab 100644 Binary files a/bin/Release/Qt5Positioning.dll and b/bin/Release/Qt5Positioning.dll differ diff --git a/bin/Release/Qt5PrintSupport.dll b/bin/Release/Qt5PrintSupport.dll index de4c30b..05f7816 100644 Binary files a/bin/Release/Qt5PrintSupport.dll and b/bin/Release/Qt5PrintSupport.dll differ diff --git a/bin/Release/Qt5Qml.dll b/bin/Release/Qt5Qml.dll index 7c2e538..599828f 100644 Binary files a/bin/Release/Qt5Qml.dll and b/bin/Release/Qt5Qml.dll differ diff --git a/bin/Release/Qt5QmlModels.dll b/bin/Release/Qt5QmlModels.dll index a0497d3..b1a17cf 100644 Binary files a/bin/Release/Qt5QmlModels.dll and b/bin/Release/Qt5QmlModels.dll differ diff --git a/bin/Release/Qt5Quick.dll b/bin/Release/Qt5Quick.dll index 4ff0bc6..3e78a2f 100644 Binary files a/bin/Release/Qt5Quick.dll and b/bin/Release/Qt5Quick.dll differ diff --git a/bin/Release/Qt5QuickWidgets.dll b/bin/Release/Qt5QuickWidgets.dll index 11214e8..43a5314 100644 Binary files a/bin/Release/Qt5QuickWidgets.dll and b/bin/Release/Qt5QuickWidgets.dll differ diff --git a/bin/Release/Qt5SerialPort.dll b/bin/Release/Qt5SerialPort.dll index b72028e..a32d7a6 100644 Binary files a/bin/Release/Qt5SerialPort.dll and b/bin/Release/Qt5SerialPort.dll differ diff --git a/bin/Release/Qt5Svg.dll b/bin/Release/Qt5Svg.dll index edfbf4a..5cc39ac 100644 Binary files a/bin/Release/Qt5Svg.dll and b/bin/Release/Qt5Svg.dll differ diff --git a/bin/Release/Qt5WebChannel.dll b/bin/Release/Qt5WebChannel.dll index a14cff6..d61eae4 100644 Binary files a/bin/Release/Qt5WebChannel.dll and b/bin/Release/Qt5WebChannel.dll differ diff --git a/bin/Release/Qt5WebEngineCore.dll b/bin/Release/Qt5WebEngineCore.dll index 7ac3371..e74a56b 100644 Binary files a/bin/Release/Qt5WebEngineCore.dll and b/bin/Release/Qt5WebEngineCore.dll differ diff --git a/bin/Release/Qt5WebEngineWidgets.dll b/bin/Release/Qt5WebEngineWidgets.dll index 6dcafb9..eb77a19 100644 Binary files a/bin/Release/Qt5WebEngineWidgets.dll and b/bin/Release/Qt5WebEngineWidgets.dll differ diff --git a/bin/Release/Qt5Widgets.dll b/bin/Release/Qt5Widgets.dll index 80ae4e3..98f4870 100644 Binary files a/bin/Release/Qt5Widgets.dll and b/bin/Release/Qt5Widgets.dll differ diff --git a/bin/Release/QtWebEngineProcess.exe b/bin/Release/QtWebEngineProcess.exe index 25a867f..024c22b 100644 Binary files a/bin/Release/QtWebEngineProcess.exe and b/bin/Release/QtWebEngineProcess.exe differ diff --git a/bin/Release/WSES.exe b/bin/Release/WSES.exe deleted file mode 100644 index f6c8d2d..0000000 Binary files a/bin/Release/WSES.exe and /dev/null differ diff --git a/bin/Release/assets/config/app.json b/bin/Release/assets/config/app.json new file mode 100644 index 0000000..9732221 --- /dev/null +++ b/bin/Release/assets/config/app.json @@ -0,0 +1,9 @@ +{ + "database": { + "host": "localhost", + "port": 3306, + "user": "root", + "passwd": "123456", + "dbname": "ees" + } +} \ No newline at end of file diff --git a/bin/Release/assets/html/css/mystyle.css b/bin/Release/assets/html/css/mystyle.css index e69de29..f336923 100644 --- a/bin/Release/assets/html/css/mystyle.css +++ b/bin/Release/assets/html/css/mystyle.css @@ -0,0 +1,454 @@ +/* 自定义滚动条样式 */ +div::-webkit-scrollbar { + width: 12px; +} + +div::-webkit-scrollbar-thumb { + background-color: #08536e60; + border-radius: 4px; +} + +div::-webkit-scrollbar-track { + background-color: #60606060; +} + +/******************************************************************************************************/ +.dt-container { + color: white; + font-size: 14px; + padding-left: 0px; +} + +/* div.dt-container .dt-paging { + margin-top: 10px; +} */ + +.dt-paging { + color: white; + margin-left: 0px; +} + +div.dt-container .dt-paging .dt-paging-button { + line-height: 28px; + /* width: 32px; */ + padding: 0 0px 0 0; + border: 1px solid white; + margin-right: 5px; + padding: 0 10px 0 10px; +} + +div.dt-container .dt-paging .dt-paging-button.disabled, +div.dt-container .dt-paging .dt-paging-button.disabled:hover, +div.dt-container .dt-paging .dt-paging-button.disabled:active { + color: white !important; + border: 1px solid gray; +} + +div.dt-container .dt-paging .dt-paging-button.current { + background: linear-gradient(to bottom, #1c797a 0%, #1c797a 100%); +} + +div.dt-container .dt-paging .dt-paging-button.current:hover { + background: linear-gradient(to bottom, #1c797a 0%, #1c797a 100%); +} + +div.dt-container .dt-paging .dt-paging-button:hover { + color: white !important; + border: 1px solid #111; + background-color: #111; + + /* Chrome,Safari4+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome10+,Safari5.1+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* W3C */ + background: linear-gradient(to bottom, #1c797a 0%, #1c797a 100%); +} + +.mydt-ext { + display: flex; + flex-direction: row; + align-items: center; + margin-top: 10px; + /* justify-content: flex-start; */ +} + +.mydt-ext .item { + margin-right: 30px; +} + +/******************************************************************************************************/ + +/* table { + border: solid 2px #1c797a; + font-weight: bold; + color: white; + width: 100%; + text-align: center; + border-collapse: separate; + border-spacing: 0; +} + +tr, +th { + height: 60px; + border-right: solid 1px gray; + border-bottom: solid 1px gray; +} + +table thead { + background-color: #125c70; + height: 20px; +} + +table thead tr { + font-size: 14px; + height: 20px; +} + +table thead tr th { + height: 20px; + border-right: solid 1px gray; + border-bottom: solid 1px gray; +} + +table tbody tr { + height: 24px; + font-size: 13px; + font-weight: bold; +} + +table tbody tr td { + height: 24px; + border-right: solid 1px gray; + border-bottom: solid 1px gray; +} */ + +/* +td:last-child, +th:last-child { + border-right-color: transparent; +} + +td.details-control { + background: url('../assets/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../assets/details_close.png') no-repeat center center; +} +*/ + + + +#flex-sample { + display: flex; + /* 排列方向 flex-direction: row | row-reverse | column | column-reverse */ + flex-direction: column; + /* 换行方式 flex-wrap: nowrap(不换行) | wrap(换行,第一行在上面) | wrap-reverse(换行,第一行在下面) */ + flex-wrap: nowrap; + /* 是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap */ + flex-flow: column nowrap; + /* 主轴上的对齐方式 justify-content: flex-start | flex-end | center | space-between | space-around */ + justify-content: center; + align-items: stretch; + /* flex-start | flex-end | center | baseline | stretch */ + align-content: flex-start; + /* flex-start | flex-end | center | space-between | space-around | stretch */ +} + +.mypanelstat { + /* width: 100%; */ + height: calc(90vh - 130px); + background-color: #052f4d; + /* margin-top: 10px; */ + /* padding: 10px 10px 10px 10px; */ + border-radius: 12px; +} + +.mask { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + font-size: 16px; + /* IE9以下不支持rgba模式 */ + background-color: rgba(0, 0, 0, 0.3); + /* 兼容IE8及以下 */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000, endColorstr=#7f000000); + /* 显示: block, 不显示:none overlay.style.display = 'block' */ + display: none; +} + +/* 弹出框主体 */ +.pop { + background-color: #e0e0e0; + min-width: 200px; + max-width: 600px; + height: 300px; + border-radius: 10px; + margin: 200px auto; + text-align: center; + /* overflow: hidden; */ +} + +/* 弹出框的标题 */ +.pop_title { + font-size: 28px; + font-weight: 1000; + height: 50px; + line-height: 50px; + background-color: #909090; + border-radius: 10px 10px 0 0; + /* border-bottom: solid 2px #8080ff; */ +} + +/* 弹出框的内容 */ +.pop_content { + height: 50px; + line-height: 50px; + padding: 15px 20px; + color: #198754; +} + +/* 弹出框的按钮栏 */ +.pop_btn { + padding-bottom: 10px; +} + +/* 弹出框的按钮 */ +.pop_btn button { + color: #778899; + width: 40%; + height: 40px; + cursor: pointer; + border: solid 1px #cccccc; + border-radius: 5px; + margin: 5px 10px; + color: #ffffff; + background-color: #337ab7; +} + +.myrow { + color: white; + display: flex; + flex-direction: row; + align-content: flex-start; +} + +.mycol { + color: white; + display: flex; + flex-direction: column; +} + +.myblock { + background-color: chocolate; + width: 50px; + height: 50px; + margin: 10px 0px 0px 10px; +} + +.mycardbtn { + background-color: #07486f; + border-radius: 10px; + margin: 0 10px 10px 10px; + padding: 10px 10px 10px 10px; +} + +.mycardbtn-active { + background-color: #1d6466; + border-radius: 10px; + margin: 0 10px 10px 10px; + padding: 10px 10px 10px 10px; + border: 2px solid #01b7d1; +} + +.mycardbtn:hover { + background-color: #1d6466; + cursor: pointer; +} + +.mycard { + background-color: #08365b; + width: 220px; + height: 340px; + border-radius: 10px; + margin: 10px 0px 0px 10px; + padding: 10px; + position: relative; +} + +.mycard-param { + display: flex; + margin-top: 3px; + font-size: 14px; + margin-left: 10px; +} + +.mycard-param-key { + font-weight: bold; + color: #a6b8dd; + width: 70px; +} + +.mycard-param-text { + font-weight: bold; + color: white; +} + +.status-ok { + background-color: green; + width: 14px; + height: 14px; + border-radius: 7px; +} + +.status-err { + background-color: red; + width: 14px; + height: 14px; + border-radius: 7px; +} + +.text-ok { + color: green; +} + +.text-err { + color: red; +} + +.mychart { + background-color: #30303030; +} + + +.mypanel { + width: 100%; + height: 200px; + background-color: #052f4d; + border-radius: 8px; + padding: 10px 10px 10px 10px; + margin: 0px 0px 10px 0px; + overflow: hidden; +} + +.mypanel-title { + height: 30px; + font-size: 16px; + font-weight: 1000; + color: #63c4d8; +} + +.myline-l { + /* 前 5px 红色, 5px 后剩余部分透明 */ + background: linear-gradient(#21ffd2, #21ffd2) left 2px / 5px 100% no-repeat; + padding-left: 16px; + height: 20px; +} + +.myline-b { + background: linear-gradient(to right, #09c8d3ff, transparent) bottom / 100% 3px no-repeat; + padding-bottom: 5px; +} + +.myline-lb { + /* 左侧 5px + 底部 3px 渐变透明 */ + background: + linear-gradient(#21ffd2, #21ffd2) left 3px / 5px calc(100% - 12px) no-repeat, + linear-gradient(to right, #09c8d3ff, transparent) bottom / 100% 3px no-repeat; + padding-bottom: 5px; + padding-left: 16px; + padding-top: 0px; +} + + +.label-bkg { + border-radius: 5px; + background-color: #a0a0a010; + float: left; + /* margin-right: 10px; */ +} + +.label-key { + /* border: solid 1px white; */ + width: 100%; + height: 50%; + font-size: 14px; + font-weight: 1000; + color: white; + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +.label-val-lg { + /* border: solid 1px white; */ + width: 65%; + height: 50%; + font-size: 36px; + color: #4dd7f0; + float: left; + display: flex; + justify-content: flex-end; + align-items: flex-end; + text-align: right; +} + +.label-val { + /* border: solid 1px white; */ + width: 65%; + height: 50%; + font-size: 20px; + color: #4dd7f0; + float: left; + display: flex; + justify-content: flex-end; + align-items: flex-end; +} + +.label-tail { + /* border: solid 1px white; */ + padding-left: 10px; + width: 35%; + height: 45%; + font-size: 16px; + font-weight: 1000; + color: white; + display: flex; + justify-content: left; + align-items: flex-end; +} + +#maskTest { + position: absolute; + z-index: 1; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.page { + padding: 5px 8px 5px 8px; +} + + + +.btn-default { + background-color: #a5a5a5; +} + +.btn-default:hover { + background-color: #858585; +} \ No newline at end of file diff --git a/bin/Release/assets/html/font/优设标题黑.ttf b/bin/Release/assets/html/font/优设标题黑.ttf new file mode 100644 index 0000000..3729151 Binary files /dev/null and b/bin/Release/assets/html/font/优设标题黑.ttf differ diff --git a/bin/Release/assets/html/js/common.js b/bin/Release/assets/html/js/common.js new file mode 100644 index 0000000..e16becf --- /dev/null +++ b/bin/Release/assets/html/js/common.js @@ -0,0 +1,238 @@ +var G = { + user: { username: '' }, + + loadPage: function (pagename) { + while (1) { + var script = document.querySelector("script[id='mytempfile']") + if (!script) break + script.remove() + } + var file = 'assets/html/pages/' + pagename + '.html' + G.cppNative.readFile(file).then(function (text) { + // 加载 html 页面内容文件 + document.getElementById('mypage').innerHTML = text + // 加载 js 脚本文件 + var jsUrl = './pages/' + pagename + '.js' + var element = document.createElement('script') + element.src = jsUrl + '?t=' + new Date().getTime() + element.async = false // 脚本按照加载先后顺序处理 + element.setAttribute('id', 'mytempfile') + document.body.appendChild(element) + }) + }, + + switchSetStatus: function (id1, id2, checked, callback) { + document.getElementById(id2).checked = !(document.getElementById(id1).checked = checked) + if (callback) callback(checked) + }, + switchGetStatus: function (id) { return document.getElementById(id).checked }, + + initTable: function (id, info) { + if (info.table) { + info.table.ajax.reload() + return; + } + var tableOption = G.tableGetOption() + tableOption.columns = info.columns + tableOption.ajax = function (req, callback, settings) { + G.cppNative.log('lxy=== table ajax start') + if (info.query) { + info.query(1, 10).then(res => { + var result = [] + res.data.forEach(function (item, index) { + var rowData = [] + info.header.forEach(function (key, index) { rowData.push(item[key]) }) + result.push(rowData) + }) + G.cppNative.log("table ajax: " + JSON.stringify(result)) + callback({ draw: req.draw, recordsTotal: result.length, recordsFiltered: result.length, data: result }) + }) + } else { + callback({ draw: req.draw, recordsTotal: 0, recordsFiltered: 0, data: [] }) + } + } + // 初始化表格 + info.table = $('#' + id + 'Table').DataTable(tableOption) + G.cppNative.log('lxy=== table init end') + //$('div.gotopage').html('跳转至 页') + }, + + updateTableData: function (queryFunc, params) { + if (queryFunc) { + } + }, + + cppCall: function (id) { + var cppfunc = G.cppNative[id] + if (cppfunc) { + G.cppNative.log('call cpp function [' + id + ']') + cppfunc() + } else { + G.cppNative.log('call cpp function [' + id + '] error: not exist') + } + }, + + cppSignal: function (id, callback) { + var signal = G.cppNative[id] + if (signal) { + G.cppNative.log('cpp signal [' + id + '] ') + signal.connect(callback) + } else { + G.cppNative.log('cpp signal [' + id + '] error: not exist') + } + }, + + initForm: function (id, funcPopConfirm) { + var form = document.getElementById(id + 'Form') + var formBtnOk = document.getElementById(id + 'FormOk') + if (form && formBtnOk) { + // 监听表单的输入事件,检查表单的必填项是否完成输入,如果未完成,则确认按钮不可用 + form.addEventListener('input', function () { formBtnOk.disabled = !form.checkValidity() }) + // 编辑弹窗的确定按钮监听点击事件 + formBtnOk.addEventListener('click', function () { if (funcPopConfirm) { funcPopConfirm(id) } }) + } + }, + + showElement: function (id, visible) { + var elemt = document.getElementById(id) + if (elemt) { elemt.style.display = visible ? 'block' : 'none' } + }, + + popSetParams: function (id, keys, rowdata, callback) { + keys.forEach(function (key, index) { + var val = '' + if (rowdata && rowdata.length > index) { val = rowdata[index] } + + if (key == 'is_open') { + G.switchSetStatus(id + 'Form_on', id + 'Form_off', parseInt(val)) + } else { + var myval = (callback) ? callback(id, key, val) : val + // 回调函数返回 undefined 时, 不需要设置参数值 + if (myval != undefined) { + val = myval + var element = $('#' + id + 'Form_' + key) + if (element) { + if (element.prop("tagName") == "SELECT" && val == '') { + element.get(0).selectedIndex = 0; + } else { + element.val(val) + } + } + } + } + }) + }, + + popGetParams: function (id, keys, rowdata, callback) { + var params = {} + keys.forEach(function (key, index) { + var val + if (key == 'is_open') { + val = G.switchGetStatus(id + 'Form_on') ? '1' : '0' + } else { + var myval = callback ? callback(id, key) : undefined + val = myval != undefined ? myval : $('#' + id + 'Form_' + key).val() + } + if (rowdata) { + if (rowdata.length > index && val != rowdata[index]) { params[key] = val } + } else { + if (val != '') { params[key] = val } + } + }) + G.cppNative.log('POP get params: id=' + id + ', params=' + JSON.stringify(params)) + return params + }, + + popSetParamReadonly: function (id, key, isReadonly) { + $('#' + id + 'Form_' + key).attr('readonly', isReadonly) + }, + + tableGetOption: function () { + return { + data: [], + columns: [], + bSort: false, + scollY: "600px", + //aLengthMenu: [10, 20, 50, 100], //设置每页显示数据条数的下拉选项 + //displayLength: 5, //每页初始显示最大记录数量 + // 设置:表格(t)、分页数据条数(l)、搜索框(f)、表格信息(i)、分页(p)、加载信息(r) + dom: 'rt<"mydt-ext"p<"item"<"gotopage">><"item"i><"item"f>>', + language: { + emptyTable: '无数据', + lengthMenu: '每页显示 _MENU_ 条记录', + zeroRecords: '对不起,查询不到任何相关数据', + info: '共有 _TOTAL_ 条记录', // '当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录', + infoEmpty: '共 0 页', + infoFiltered: '数据表中共为 _MAX_ 条记录)', + processing: '正在加载中...', + search: '结果中搜索', + paginate: { + previous: '上一页', next: '下一页', first: '首页', last: '尾页' + }, + }, + columnDefs: [{ targets: '_all', className: 'dt-head-left' }, { targets: '_all', className: 'dt-body-left' }], + //serverSide: true, + processing: false, + ajax: function (req, callback, settings) { + // 查询服务器获取数据, 同时获取总数据条数 + callback({ draw: req.draw, recordsTotal: 0, recordsFiltered: 0, data: [] }) + }, + + createdRow: function (row, data, dataIndex) { + if (dataIndex % 2 === 0) { + //$(row).css('background-color', '#ff000010') + } else { + //$(row).css('background-color', '#00ff0010') + } + + $(row).on('mouseenter', function () { + //if (curEditRow && myTableApi.row(curEditRow).index() == myTableApi.row($(this)).index()) return + $(this).css('background-color', '#ff808050') // 高亮颜色 + }) + $(row).on('mouseleave', function () { + //if (curEditRow && myTableApi.row(curEditRow).index() == myTableApi.row($(this)).index()) return + $(this).css('background-color', '') // 恢复默认 + }) + }, + } + }, + + clickSubpageBtn: function (id) { + if (G.curSubpageId == id) return + + if (G.curSubpageId) { + var oldBtn = document.getElementById(G.curSubpageId + 'Btn') + if (oldBtn) { oldBtn.className = 'btn btn-primary' } + var oldSubpage = $('#' + G.curSubpageId) + if (oldSubpage) { oldSubpage.hide() } + } + if (id) { + var curBtn = document.getElementById(id + 'Btn') + if (curBtn) { curBtn.className = 'btn btn-success btn-lg' } + var curSubpage = $('#' + id) + if (curSubpage) { curSubpage.show() } + } + + G.curSubpageId = id + }, + + + getRandDataDay: function (a, b, n) { + var data = [] + var t0 = Date.parse('2025-03-01 00:00:00') + if (!n) { n = 24 } + var step = 86400 / n + var y = a; + for (var i = 0; i < n; ++i) { + // data[i] = { x: t0 + i * step * 1000, y: Math.sin(i * 0.1) * (n - m) } + y = Math.floor((y + RAND(0, 50) - 25) * 100) / 100 + data[i] = { x: t0 + i * step * 1000, y: y } + } + return data + } +} + + +function RAND(a, b) { + return a + Math.random() * (b - a) +} \ No newline at end of file diff --git a/bin/Release/assets/html/js/myecharts.js b/bin/Release/assets/html/js/myecharts.js index 7a9af69..dc03c39 100644 --- a/bin/Release/assets/html/js/myecharts.js +++ b/bin/Release/assets/html/js/myecharts.js @@ -204,7 +204,7 @@ function initEchartCurve(id, seriesItems) { option.legend.data = seriesItems option.series = [] seriesItems.forEach(item => { - option.series.push({ name: item, type: 'line', smooth: true, symbolSize: 0, data: [] }) + option.series.push({ name: item, type: 'line', smooth: false, symbolSize: 0, data: [] }) }) echart.setOption(option) return echart diff --git a/bin/Release/assets/html/login.html b/bin/Release/assets/html/login.html new file mode 100644 index 0000000..259a658 --- /dev/null +++ b/bin/Release/assets/html/login.html @@ -0,0 +1,13 @@ + + + +
+ +