123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>{{title}}</title>
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <!-- 新 Bootstrap4 核心 CSS 文件 -->
- <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.1.0/css/bootstrap.min.css">
- <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
- <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
- <!-- popper.min.js 用于弹窗、提示、下拉菜单 -->
- <script src="https://cdn.bootcss.com/popper.js/1.12.5/umd/popper.min.js"></script>
- <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
- <script src="https://cdn.bootcss.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
- <!--可用來建立使用者小圖示-->
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
- <style>
- .span-sensor-value {
- font-weight:600;
- padding-left: 3px;
- }
- .demo_status_css {
- font-weight: bold;
- text-align: center;
- }
- .input-text {
- height: 25px;
- width: 35px;
- text-align: center;
- margin-left: 2px;
- margin-right: 5px;
- }
- </style>
- <script>
- $(document).ready(function(){
- $("#coffee_title_pc").text('DEMO 貨櫃');
- $("#coffee_title_phone").text('DEMO 貨櫃');
- // $(document).attr("title", '{{title}}');
- loading_status();
- loading_sensors();
- });
- clean_input_status = ['{{CI1}}', '{{CI2}}']
- // console.log('clean_input_status: ' + clean_input_status)
- clean_tank_status = ['{{C1}}', '{{C2}}']
- // console.log('clean_tank_status: ' + clean_tank_status)
- colorselect_tank_status = ['{{S1}}', '{{S2}}']
- // console.log('colorselect_tank_status: ' + colorselect_tank_status)
- colorselect_outputg_status = ['{{SOg1}}', '{{SOg2}}']
- // console.log('colorselect_outputg_status: ' + colorselect_outputg_status)
- colorselect_outputb_status = ['{{SOb1}}', '{{SOb2}}']
- // console.log('colorselect_outputb_status: ' + colorselect_outputb_status)
- peel_tank_status = ['{{P1}}', '{{P2}}']
- // console.log('peel_tank_status: ' + peel_tank_status)
- peel_output_status = ['{{PO1}}', '{{PO2}}']
- // console.log('peel_output_status: ' + peel_output_status)
- ferment_tank_status = ['{{F1}}', '{{F2}}']
- dry_tank_status = ['{{D1}}', '{{D2}}']
- dry_output_status = ['{{DO1}}', '{{DO2}}']
- peel_outputb_status = ['{{POb1}}']
- // console.log('peel_outputb_status: ' + peel_outputb_status)
- // 更新桶槽狀態
- function loading_status(){
- for (let i=0; i<clean_input_status.length; i++) {
- if (clean_input_status[i] == 'CI_InputtingBean') {
- $("#CI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#CI"+parseInt(i+1)+"_status").text("CI" + parseInt(i+1) + " 入豆中")
- } else if (clean_input_status[i] == 'CI_Waiting') {
- $("#CI"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#CI"+parseInt(i+1)+"_status").text("CI" + parseInt(i+1) + " 空桶等待")
- } else if (clean_input_status[i] == 'CI_OutputtingBean') {
- $("#CI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#CI"+parseInt(i+1)+"_status").text("CI" + parseInt(i+1) + " 可出豆")
- } else if (clean_input_status[i] == 'CI_Warning') {
- $("#CI"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#CI"+parseInt(i+1)+"_status").text("CI" + parseInt(i+1) + " 發生錯誤")
- $("#CI"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('CI pass')
- }
- }
- for (let i=0; i<clean_tank_status.length; i++) {
- if (clean_tank_status[i] == 'C_InputtingBean') {
- $("#C"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#C"+parseInt(i+1)+"_status").text("C" + parseInt(i+1) + " 入豆中")
- } else if (clean_tank_status[i] == 'C_Waiting') {
- $("#C"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#C"+parseInt(i+1)+"_status").text("C" + parseInt(i+1) + " 空桶等待")
- } else if (clean_tank_status[i] == 'C_OutputtingBean') {
- $("#C"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#C"+parseInt(i+1)+"_status").text("C" + parseInt(i+1) + " 可出豆")
- } else if (clean_tank_status[i] == 'C_Warning') {
- $("#C"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#C"+parseInt(i+1)+"_status").text("C" + parseInt(i+1) + " 發生錯誤")
- $("#C"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('C pass')
- }
- }
- for (let i=0; i<colorselect_tank_status.length; i++) {
- if (colorselect_tank_status[i] == 'S_InputtingBean') {
- $("#S"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#S"+parseInt(i+1)+"_status").text("S" + parseInt(i+1) + " 入豆中")
- } else if (colorselect_tank_status[i] == 'S_Waiting') {
- $("#S"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#S"+parseInt(i+1)+"_status").text("S" + parseInt(i+1) + " 空桶等待")
- } else if (colorselect_tank_status[i] == 'S_OutputtingBean') {
- $("#S"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#S"+parseInt(i+1)+"_status").text("S" + parseInt(i+1) + " 可出豆")
- } else if (colorselect_tank_status[i] == 'S_Warning') {
- $("#S"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#S"+parseInt(i+1)+"_status").text("S" + parseInt(i+1) + " 發生錯誤")
- $("#S"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('S pass')
- }
- }
- for (let i=0; i<colorselect_outputg_status.length; i++) {
- if (colorselect_outputg_status[i] == 'SO_InputtingBean') {
- $("#SOg"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#SOg"+parseInt(i+1)+"_status").text("SOg" + parseInt(i+1) + " 入豆中")
- } else if (colorselect_outputg_status[i] == 'SO_Waiting') {
- $("#SOg"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#SOg"+parseInt(i+1)+"_status").text("SOg" + parseInt(i+1) + " 空桶等待")
- } else if (colorselect_outputg_status[i] == 'SO_OutputtingBean') {
- $("#SOg"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#SOg"+parseInt(i+1)+"_status").text("SOg" + parseInt(i+1) + " 可出豆")
- } else if (colorselect_outputg_status[i] == 'SO_Warning') {
- $("#SOg"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#SOg"+parseInt(i+1)+"_status").text("SOg" + parseInt(i+1) + " 發生錯誤")
- $("#SOg"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('SOg pass')
- }
- }
- for (let i=0; i<colorselect_outputb_status.length; i++) {
- if (colorselect_outputb_status[i] == 'SO_InputtingBean') {
- $("#SOb"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#SOb"+parseInt(i+1)+"_status").text("SOb" + parseInt(i+1) + " 入豆中")
- } else if (colorselect_outputb_status[i] == 'SO_Waiting') {
- $("#SOb"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#SOb"+parseInt(i+1)+"_status").text("SOb" + parseInt(i+1) + " 空桶等待")
- } else if (colorselect_outputb_status[i] == 'SO_OutputtingBean') {
- $("#SOb"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#SOb"+parseInt(i+1)+"_status").text("SOb" + parseInt(i+1) + " 可出豆")
- } else if (colorselect_outputb_status[i] == 'SO_Warning') {
- $("#SOb"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#SOb"+parseInt(i+1)+"_status").text("SOb" + parseInt(i+1) + " 發生錯誤")
- $("#SOb"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('SOb pass')
- }
- }
- for (let i=0; i<peel_tank_status.length; i++) {
- if (peel_tank_status[i] == 'P_Waiting') {
- $("#P"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#P"+parseInt(i+1)+"_status").text("P" + parseInt(i+1) + " 等待中")
- } else if (peel_tank_status[i] == 'P_Peeling') {
- $("#P"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#P"+parseInt(i+1)+"_status").text("P" + parseInt(i+1) + " 脫皮中")
- // } else if (peel_tank_status[i] == 'P_InputtingBean') {
- // $("#P"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- // $("#P"+parseInt(i+1)+"_status").text("P" + parseInt(i+1) + " 入豆中")
- // } else if (peel_tank_status[i] == 'P_OutputtingBean') {
- // $("#P"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- // $("#P"+parseInt(i+1)+"_status").text("P" + parseInt(i+1) + " 可出豆")
- } else if (peel_tank_status[i] == 'P_Warning') {
- $("#P"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#P"+parseInt(i+1)+"_status").text("P" + parseInt(i+1) + " 發生錯誤")
- $("#P"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('P pass')
- }
- }
- for (let i=0; i<peel_output_status.length; i++) {
- if (peel_output_status[i] == 'PO_InputtingBean') {
- $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 入豆中")
- } else if (peel_output_status[i] == 'PO_Waiting') {
- $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 空桶等待")
- } else if (peel_output_status[i] == 'PO_OutputtingBean') {
- $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 可出豆")
- } else if (peel_output_status[i] == 'PO_Warning') {
- $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 發生錯誤")
- $("#PO"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('PO pass')
- }
- }
-
- for (let i=0; i<ferment_tank_status.length; i++) {
- if (ferment_tank_status[i] == 'F_InputtingBean') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆中")
- } else if (ferment_tank_status[i] == 'F_InputtingBean_Pause') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆暫停")
- } else if (ferment_tank_status[i] == 'F_InputtingBean_Finish') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆完成")
- } else if (ferment_tank_status[i] == 'F_InputtingWater') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入水中")
- } else if (ferment_tank_status[i] == 'F_Waiting') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 空桶等待")
- } else if (ferment_tank_status[i] == 'F_Cleaning') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "plum")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 清洗中")
- } else if (ferment_tank_status[i] == 'F_Fermenting') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發酵中")
- } else if (ferment_tank_status[i] == 'F_OutputtingBean') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 可出豆")
- } else if (ferment_tank_status[i] == 'F_Warning') {
- $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發生錯誤")
- $("#F"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('F pass')
- }
- }
-
- for (let i=0; i<dry_tank_status.length; i++) {
- if (dry_tank_status[i] == 'D_InputtingBean') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 入豆中")
- } else if (dry_tank_status[i] == 'D_InputtingBean_Pause') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 入豆暫停")
- } else if (dry_tank_status[i] == 'D_InputtingBean_Finish') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 入豆完成")
- } else if (dry_tank_status[i] == 'D_Waiting') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 空桶等待")
- } else if (dry_tank_status[i] == 'D_Cleaning') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "plum")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 清洗中")
- } else if (dry_tank_status[i] == 'D_Drying') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 乾燥中")
- } else if (dry_tank_status[i] == 'D_OutputtingBean') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 可出豆")
- } else if (dry_tank_status[i] == 'D_Warning') {
- $("#D"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
- $("#D"+parseInt(i+1)+"_status").text("D" + parseInt(i+1) + " 發生錯誤")
- $("#D"+parseInt(i+1)+"_status").css("color", "crimson")
- } else {
- console.log('pass')
- }
- }
- for (let i=0; i<dry_output_status.length; i++) {
- if (dry_output_status[i] == 'DO_InputtingBean') {
- $("#DO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#DO"+parseInt(i+1)+"_status").text("DO" + parseInt(i+1) + " 入豆中")
- } else if (dry_output_status[i] == 'DO_Waiting') {
- $("#DO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#DO"+parseInt(i+1)+"_status").text("DO" + parseInt(i+1) + " 空桶等待")
- } else if (dry_output_status[i] == 'DO_OutputtingBean') {
- $("#DO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#DO"+parseInt(i+1)+"_status").text("DO" + parseInt(i+1) + " 可出豆")
- } else {
- console.log('DO pass')
- }
- }
- for (let i=0; i<peel_outputb_status.length; i++) {
- if (peel_outputb_status[i] == 'PO_InputtingBean') {
- $("#POb"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#POb"+parseInt(i+1)+"_status").text("POb" + parseInt(i+1) + " 入豆中")
- } else if (peel_outputb_status[i] == 'PO_Waiting') {
- $("#POb"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
- $("#POb"+parseInt(i+1)+"_status").text("POb" + parseInt(i+1) + " 空桶等待")
- } else if (peel_outputb_status[i] == 'PO_OutputtingBean') {
- $("#POb"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
- $("#POb"+parseInt(i+1)+"_status").text("POb" + parseInt(i+1) + " 可出豆")
- } else {
- console.log('POb pass')
- }
- }
- //
- };
- // 更新 UltraSonic 數值
- function loading_sensors(){
- $.get('/loading_sensors', '', function (res){
- $("#C1_UltraSonic").text(res.C1_UltraSonic);
- $("#C2_UltraSonic").text(res.C2_UltraSonic);
- $("#PO1_UltraSonic").text(res.PO1_UltraSonic);
- $("#PO2_UltraSonic").text(res.PO2_UltraSonic);
- $("#F1_UltraSonic").text(res.F1_UltraSonic);
- $("#F1_SHT11Temp").text(res.F1_SHT11Temp);
- $("#F1_SHT11Humidity").text(res.F1_SHT11Humidity);
- $("#F2_UltraSonic").text(res.F2_UltraSonic);
- $("#D1_UltraSonic").text(res.D1_UltraSonic);
- $("#D1_SHT11Temp").text(res.D1_SHT11Temp);
- $("#D1_SHT11Humidity").text(res.D1_SHT11Humidity);
- $("#D2_UltraSonic").text(res.D2_UltraSonic);
- $("#DO1_UltraSonic").text(res.DO1_UltraSonic);
- $("#DO2_UltraSonic").text(res.DO2_UltraSonic);
- }, 'json');
- }
- var data; // 狀態判斷傳參數用
- var peel_status_process = 0;
- var peel_status_interval; // 脫皮機自動化, 間隔 5 秒執行
- var ferment_status_process = 0;
- var ferment_status_interval; // 發酵槽自動化, 間隔 5 秒執行
- var dry_status_process = 0;
- var dry_status_interval; // 乾燥槽自動化, 間隔 5 秒執行
-
- </script>
- </head>
- <body>
- <div id="wrapper">
- <div id="coffee_header">
- <!-- 匯入共同使用的 header.html 內容 -->
- {% include 'header.html' %}
-
- </div>
- <div>
- <!-- DEMO 貨櫃 狀態表格 -->
- <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
- <tr>
- <td>
- <!-- 清洗浮選槽入料 CI1 -->
- <div id="CI1" tabindex="0" class="CI1_position" role="button" style="text-align: center;">
- <span id="CI1_status" class="demo_status_css">CI1 status</span>
- <div id="CI1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 清洗浮選槽 C1 -->
- <div id="C1" tabindex="0" class="C1_position" role="button" style="text-align: center;">
- <span id="C1_status" class="demo_status_css">C1 status</span>
- <div id="C1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- 中水桶
- </td>
- <td>
- <!-- 色選機 S1 -->
- <div id="S1" tabindex="0" class="S1_position" role="button" style="text-align: center;">
- <span id="S1_status" class="demo_status_css">S1 status</span>
- <div id="S1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 色選機好果 SOg1 -->
- <div id="SOg1" tabindex="0" class="SOg1_position" role="button" style="text-align: center;">
- <span id="SOg1_status" class="demo_status_css">SOg1 status</span>
- <div id="SOg1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 色選機好果 SOb1 -->
- <div id="SOb1" tabindex="0" class="SOb1_position" role="button" style="text-align: center;">
- <span id="SOb1_status" class="demo_status_css">SOb1 status</span>
- <div id="SOb1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 脫皮機 P1 -->
- <div id="P1" tabindex="0" class="P1_position" role="button" style="text-align: center;">
- <span id="P1_status" class="demo_status_css">P1 status</span>
- <div id="P1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 脫皮機出料儲豆槽 PO1 -->
- <div id="PO1" tabindex="0" class="PO1_position" role="button" style="text-align: center;">
- <span id="PO1_status" class="demo_status_css">PO1 status</span>
- <div id="PO1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 發酵槽 F1 -->
- <div id="F1" tabindex="0" class="F1_position" role="button" style="vertical-align: bottom;">
- <span id="F1_status" class="demo_status_css">F1 status</span>
- <div id="F1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 乾燥槽 D1 -->
- <div id="D1" tabindex="0" class="D1_position" role="button" style="vertical-align: bottom;">
- <span id="D1_status" class="demo_status_css">D1 status</span>
- <div id="D1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 乾燥槽 DO1 -->
- <div id="DO1" tabindex="0" class="DO1_position" role="button" style="vertical-align: bottom;">
- <span id="DO1_status" class="demo_status_css">DO1 status</span>
- <div id="DO1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
-
- </td>
- </tr>
- <tr>
- <td>
- 清洗<br>
- 入料儲豆槽
- </td>
- <td>
- 清洗浮選槽
- </td>
- <td>
- 中水桶
- </td>
- <td>
- 色選機
- </td>
- <td>
- 色選機出料<br>好果
- </td>
- <td>
- 色選機出料<br>壞果
- </td>
- <td>
- 脫皮機
- </td>
- <td>
- 脫皮機<br>出料儲豆槽
- </td>
- <td>
- 發酵槽
- </td>
- <td>
- 乾燥槽
- </td>
- <td>
- 乾燥<br>
- 出料除豆槽
- </td>
- <td>
- 壞豆
- </td>
- </tr>
- <tr>
- <td>
- <!-- 清洗浮選槽入料 CI2 -->
- <div id="CI2" tabindex="0" class="CI2_position" role="button" style="text-align: center;">
- <span id="CI2_status" class="demo_status_css">CI2 status</span>
- <div id="CI2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 清洗浮選槽 C2 -->
- <div id="C2" tabindex="0" class="C2_position" role="button" style="text-align: center;">
- <span id="C2_status" class="demo_status_css">C2 status</span>
- <div id="C2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- 中水桶
- </td>
- <td>
- <!-- 色選機 S2 -->
- <div id="S2" tabindex="0" class="S2_position" role="button" style="text-align: center;">
- <span id="S2_status" class="demo_status_css">S2 status</span>
- <div id="S2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 色選機好果 SOg2 -->
- <div id="SOg2" tabindex="0" class="SOg2_position" role="button" style="text-align: center;">
- <span id="SOg2_status" class="demo_status_css">SOg2 status</span>
- <div id="SOg2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 色選機好果 SOb2 -->
- <div id="SOb2" tabindex="0" class="SOb2_position" role="button" style="text-align: center;">
- <span id="SOb2_status" class="demo_status_css">SOb2 status</span>
- <div id="SOb2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 脫皮機 P2 -->
- <div id="P2" tabindex="0" class="P2_position" role="button" style="text-align: center;">
- <span id="P2_status" class="demo_status_css">P2 status</span>
- <div id="P2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 脫皮機出料儲豆槽 PO2 -->
- <div id="PO2" tabindex="0" class="PO2_position" role="button" style="text-align: center;">
- <span id="PO2_status" class="demo_status_css">PO2 status</span>
- <div id="PO2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 發酵槽 F2 -->
- <div id="F2" tabindex="0" class="F2_position" role="button" style="vertical-align: bottom;">
- <span id="F2_status" class="demo_status_css">F2 status</span>
- <div id="F2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 乾燥槽 D2 -->
- <div id="D2" tabindex="0" class="D2_position" role="button" style="vertical-align: bottom;">
- <span id="D2_status" class="demo_status_css">D2 status</span>
- <div id="D2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 乾燥槽 DO2 -->
- <div id="DO2" tabindex="0" class="DO2_position" role="button" style="vertical-align: bottom;">
- <span id="DO2_status" class="demo_status_css">DO2 status</span>
- <div id="DO2_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- <td>
- <!-- 壞豆槽 POb1 -->
- <div id="POb1" tabindex="0" class="POb1_position" role="button" style="vertical-align: bottom;">
- <span id="POb1_status" class="demo_status_css">POb1 status</span>
- <div id="POb1_status_dot" style="width: 110px; height: 20px; background-color: black;"></div>
- </div>
- </td>
- </tr>
- </table>
- <!-- DEMO 貨櫃 參數設定 -->
- <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 10px;" cellpadding="5" border="1">
- <tr>
- <td>
- 清洗入料
- </td>
- <td>
- 清洗浮選
- </td>
- <td>
- 中水桶
- </td>
- <td>
- 色選機
- </td>
- <td>
- 出料好果
- </td>
- <td>
- 出料壞果
- </td>
- <td>
- 脫皮機
- </td>
- <td>
- 脫皮機出料
- </td>
- <td>
- 發酵槽
- </td>
- <td>
- 乾燥槽
- </td>
- <td>
- 乾燥出料
- </td>
- </tr>
- <tr style="vertical-align: top;">
- <td colspan="3">
- CI1_UltraSonic: <span id="CI1_UltraSonic" class="span-sensor-value">null</span><br>
- C1_UltraSonic: <span id="C1_UltraSonic" class="span-sensor-value">null</span><br>
- ----- 清洗入料 -----<br>
- 生豆高度
- <input id="DEMO_CI_Bean_height" type="text" class="input-text" value="10">cm<br>
- 吸料時間
- <input id="DEMO_CI_vacuumON_time" type="text" class="input-text" value="5">秒<br>
- 放料時間
- <input id="DEMO_CI_vacuumOFF_time" type="text" class="input-text" value="10">秒<br>
- ----- 清洗浮選 -----<br>
- 生豆高度
- <input id="DEMO_C_Bean_height" type="text" class="input-text" value="10">cm<br>
- 吸料時間
- <input id="DEMO_C_vacuumON_time" type="text" class="input-text" value="5">秒<br>
- 放料時間
- <input id="DEMO_C_vacuumOFF_time" type="text" class="input-text" value="10">秒<br>
- 水位高度
- <input id="DEMO_W_Bean_height" type="text" class="input-text" value="10">cm<br>
- ------ 中水桶 ------<br>
- 水位高度
- <input id="DEMO_WaterTank_Water_height" type="text" class="input-text" value="50">cm<br>
- </td>
- <td colspan="3">
- S1_UltraSonic: <span id="S1_UltraSonic" class="span-sensor-value">null</span><br>
- ------ 色選機 ------<br>
- 生豆高度
- <input id="DEMO_S_Bean_height" type="text" class="input-text" value="10">cm<br>
- 吸料時間
- <input id="DEMO_S_vacuumON_time" type="text" class="input-text" value="5">秒<br>
- 放料時間
- <input id="DEMO_S_vacuumOFF_time" type="text" class="input-text" value="10">秒<br>
- ----- 出料好果 -----<br>
- 生豆高度
- <input id="DEMO_SOg_Bean_height" type="text" class="input-text" value="10">cm<br>
- ----- 出料壞果 -----<br>
- 生豆高度
- <input id="DEMO_SOb_Bean_height" type="text" class="input-text" value="10">cm<br>
- </td>
- <td colspan="2">
- PO1_UltraSonic: <span id="PO1_UltraSonic" class="span-sensor-value">null</span><br>
- ------ 脫皮機 ------<br>
- 馬達轉速
- <input name="Peel_Tank_motor_rpm" type="text" class="input-text" value="30">rpm<br>
- 吸料時間
- <input name="Peel_Tank_vacuumON_time" type="text" class="input-text" value="3">秒<br>
- 放料時間
- <input name="Peel_Tank_vacuumOFF_time" type="text" class="input-text" value="30">秒<br>
- --- 脫皮機出料 ---<br>
- 生豆高度
- <input name="Peel_Tank_bean_height" type="text" class="input-text" value="10">cm<br>
- </td>
- <td>
- F1_UltraSonic: <span id="F1_UltraSonic" class="span-sensor-value">null</span><br>
- F1_SHT11Temp: <span id="F1_SHT11Temp" class="span-sensor-value">null</span><br>
- F1_SHT11Humidity: <span id="F1_SHT11Humidity" class="span-sensor-value">null</span><br>
- ------ 發酵槽 ------<br>
- 生豆高度
- <input name="Ferment_Tank_bean_height" class="input-text" type="text" value="10">cm<br>
- 吸料時間
- <input name="Ferment_Tank_vacuumON_time" class="input-text" type="text" value="5">秒<br>
- 放料時間
- <input name="Ferment_Tank_vacuumOFF_time" class="input-text" type="text" value="10">秒<br>
- <br>
- 水位高度
- <input name="Ferment_Tank_water_height" class="input-text" type="text" value="15">cm<br>
- 馬達轉速
- <input name="Ferment_Tank_motor_rpm" class="input-text" type="text" value="15">rpm<br>
- <br>
- 發酵溫度
- <input name="Ferment_Tank_fermenting_temp" class="input-text" type="text" value="10">℃<br>
- 發酵等待
- <input name="Ferment_Tank_fermenting_time" class="input-text" type="text" value="5">秒<br>
- 廢水排放
- <input name="Ferment_Tank_WaterOut_time" class="input-text" type="text" value="5">秒
- </td>
- <td>
- D1_UltraSonic: <span id="D1_UltraSonic" class="span-sensor-value">null</span><br>
- D1_SHT11Temp: <span id="D1_SHT11Temp" class="span-sensor-value">null</span><br>
- D1_SHT11Humidity: <span id="D1_SHT11Humidity" class="span-sensor-value">null</span><br>
- ------ 乾燥槽 ------<br>
- <!-- 乾燥槽 -->
- 生豆高度
- <input name="Dry_Tank_bean_height" type="text" class="input-text" value="10">cm<br>
- 吸料時間
- <input name="Dry_Tank_vacuumON_time" type="text" class="input-text" value="5">秒<br>
- 放料時間
- <input name="Dry_Tank_vacuumOFF_time" type="text" class="input-text" value="10">秒<br>
- 馬達轉速
- <input name="Dry_Tank_motor_rpm" type="text" class="input-text" value="0">rpm<br>
- <br>
- 指定溫度
- <input name="Dry_Tank_drying_temp" type="text" class="input-text" value="38">℃<br>
- 指定濕度
- <input name="Dry_Tank_drying_Humidity" type="text" class="input-text" value="11">%<br>
- 返潮時間
- <input name="Dry_Tank_drying_time" type="text" class="input-text" value="5">秒<br>
- </td>
- <td>
- DO1_UltraSonic: <span id="DO1_UltraSonic" class="span-sensor-value">null</span><br>
- ----- 乾燥出料 -----<br>
- <!-- 乾燥出料 -->
- 生豆高度
- <input name="Dry_Output_bean_height" type="text" class="input-text" value="10">cm<br>
- 吸料時間
- <input name="Dry_Output_vacuumON_time" type="text" class="input-text" value="5"> 秒<br>
- 放料時間
- <input name="Dry_Output_vacuumOFF_time" type="text" class="input-text" value="10"> 秒<br>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="stop_Drying_OutputtingBean()">
- 暫停乾燥<br><u>開啟 D1 蝴蝶閥</u></button>
- <br>
- <br>
- <div style="font-size: 12px; color: crimson; line-height: 15px;">測試水份後<br>將桶槽改為入料中<br>D1_UltraSonic 改為 0</div>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="DtankDiskValve('1')">
- D1 蝴蝶閥 ON</u></button><br>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="DtankDiskValve('0')">
- D1 蝴蝶閥 OFF</u></button>
- <script>
- function DtankDiskValve(params) {
- if (params == '1') {
- data = { "tank_num": "D1", "command": "tank_diskvalve_status", "value": "on" };
- } else if (params == '0') {
- data = { "tank_num": "D1", "command": "tank_diskvalve_status", "value": "off" };
- } else {
- data = { "tank_num": "D1", "command": "tank_diskvalve_status", "value": params };
- }
- $.post('/mqtt/1', data, function (res) {
- console.log('data: ', data)
- console.log('res: ', res)
- }, 'text')
- }
-
- // var outputtingBean_interval
- // function stop_Drying_OutputtingBean_IN(){
- // console.log("---- 測試後入料 ----")
- // }
- function stop_Drying_OutputtingBean(){
- clearInterval(dry_status_interval)
- console.log("------- 狀態自動化判斷 停止 -------")
- console.log("---- 出料至儲豆槽 ----")
- var Dry_Output_bean_height = $("input[name=Dry_Output_bean_height]").val();
- var Dry_Output_vacuumON_time = $("input[name=Dry_Output_vacuumON_time]").val();
- var Dry_Output_vacuumOFF_time = $("input[name=Dry_Output_vacuumOFF_time]").val();
- data = {"command": "stop_Drying_OutputtingBean",
- "Dry_Output_bean_height": Dry_Output_bean_height,
- "Dry_Output_vacuumON_time": Dry_Output_vacuumON_time,
- "Dry_Output_vacuumOFF_time": Dry_Output_vacuumOFF_time
- };
- // 更新桶槽狀態
- $.get('/dryDEMO_outputtingBean', data, function (res){
- D1 = res.Dry_Tank_1
- D2 = res.Dry_Tank_2
- DO1 = res.Dry_Output_1
- DO2 = res.Dry_Output_2
- dry_tank_status = [D1, D2]
- dry_output_status = [DO1, DO2]
- loading_status();
- loading_sensors();
- }, 'json');
- }
- </script>
- </td>
- </tr>
- <tr>
- <td colspan="3">
- 清洗自動化
- </td>
- <td colspan="3">
- 色選自動化
- </td>
- <td colspan="2">
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="peel_auto_status_testing()">
- 脫皮自動化</button>
- <br>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="peel_auto_status_stop()">
- <u>脫皮停止</u></button>
- <script>
- function peel_auto_status_stop(){
- clearInterval(peel_status_interval)
- console.log("------- 脫皮自動化判斷 停止 -------")
- }
- function peel_auto_status_testing(){
- console.log("------- 脫皮自動化判斷 開始 -------")
- var Peel_Tank_bean_height = $('input[name=Peel_Tank_bean_height]').val();
- var Peel_Tank_motor_rpm = $('input[name=Peel_Tank_motor_rpm]').val();
- var Peel_Tank_vacuumON_time = $('input[name=Peel_Tank_vacuumON_time]').val();
- var Peel_Tank_vacuumOFF_time = $('input[name=Peel_Tank_vacuumOFF_time]').val();
- data = {"Peel_Tank_bean_height":Peel_Tank_bean_height,
- "Peel_Tank_motor_rpm":Peel_Tank_motor_rpm,
- "Peel_Tank_vacuumON_time":Peel_Tank_vacuumON_time,
- "Peel_Tank_vacuumOFF_time":Peel_Tank_vacuumOFF_time
- }
- // 更新桶槽狀態
- peel_status_interval = setInterval(peel_auto_status, 5*1000);
- // peel_auto_status()
- function peel_auto_status(){
- if (peel_status_process == 1) { return }
- peel_status_process = 1;
- $.get('/peel_auto_status', data, function (res){
- P1 = res.Peel_Tank_1
- P2 = res.Peel_Tank_2
- PO1 = res.Peel_Output_1
- PO2 = res.Peel_Output_2
- peel_tank_status = [P1, P2]
- peel_output_status = [PO1, PO2]
- loading_status();
- loading_sensors();
- peel_status_process = 0;
- }, 'json');
- }
- }
- </script>
- </td>
- <td>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="ferment_auto_status_testing()">
- 發酵自動化</button>
- <br>
- <button style="margin: 5px 5px 0px 5px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="ferment_auto_status_stop()">
- <u>發酵停止</u></button>
- <script>
- function ferment_auto_status_stop(){
- clearInterval(ferment_status_interval)
- console.log("------- 發酵自動化判斷 停止 -------")
- }
- function ferment_auto_status_testing(){
- console.log("------- 發酵自動化判斷 開始 -------")
- var Ferment_Tank_bean_height = $("input[name=Ferment_Tank_bean_height]").val();
- var Ferment_Tank_vacuumON_time = $("input[name=Ferment_Tank_vacuumON_time]").val();
- var Ferment_Tank_vacuumOFF_time = $("input[name=Ferment_Tank_vacuumOFF_time]").val();
- var Ferment_Tank_water_height = $("input[name=Ferment_Tank_water_height]").val();
- var Ferment_Tank_motor_rpm = $("input[name=Ferment_Tank_motor_rpm]").val();
- var Ferment_Tank_fermenting_temp = $("input[name=Ferment_Tank_fermenting_temp]").val();
- var Ferment_Tank_fermenting_time = $("input[name=Ferment_Tank_fermenting_time]").val();
- var Ferment_Tank_WaterOut_time = $("input[name=Ferment_Tank_WaterOut_time]").val();
- data = {"Ferment_Tank_bean_height":Ferment_Tank_bean_height,
- "Ferment_Tank_vacuumON_time":Ferment_Tank_vacuumON_time,
- "Ferment_Tank_vacuumOFF_time":Ferment_Tank_vacuumOFF_time,
- "Ferment_Tank_water_height":Ferment_Tank_water_height,
- "Ferment_Tank_motor_rpm":Ferment_Tank_motor_rpm,
- "Ferment_Tank_fermenting_temp":Ferment_Tank_fermenting_temp,
- "Ferment_Tank_fermenting_time":Ferment_Tank_fermenting_time,
- "Ferment_Tank_WaterOut_time":Ferment_Tank_WaterOut_time
- }
- // 更新桶槽狀態
- ferment_status_interval = setInterval(ferment_auto_status, 5*1000);
- // ferment_auto_status();
- function ferment_auto_status(){
- if (ferment_status_process == 1) { return }
- ferment_status_process = 1;
- $.get('/fermentDEMO_auto_status', data, function (res){
- F1 = res.Ferment_Tank_1
- F2 = res.Ferment_Tank_2
- ferment_tank_status = [F1, F2]
- loading_status();
- loading_sensors();
- ferment_status_process = 0;
- }, 'json');
- }
- }
- </script>
- </td>
- <td colspan="2">
- <button style="margin: 5px 10px 0px 10px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="dry_auto_status_testing()">
- <u>乾燥自動化</u></button>
- <br>
- <button style="margin: 5px 10px 0px 10px; font-size: 10px;" type="submit" class="btn btn-primary" onclick="dry_auto_status_stop()">
- <u>乾燥停止</u></button>
- <script>
- function dry_auto_status_stop(){
- clearInterval(dry_status_interval)
- console.log("------- 狀態自動化判斷 停止 -------")
- }
- function dry_auto_status_testing(){
- console.log("------- 發酵自動化判斷 開始 -------")
-
- var Dry_Tank_bean_height = $("input[name=Dry_Tank_bean_height]").val();
- var Dry_Tank_vacuumON_time = $("input[name=Dry_Tank_vacuumON_time]").val();
- var Dry_Tank_vacuumOFF_time = $("input[name=Dry_Tank_vacuumOFF_time]").val();
- var Dry_Tank_motor_rpm = $("input[name=Dry_Tank_motor_rpm]").val();
- var Dry_Tank_drying_temp = $("input[name=Dry_Tank_drying_temp]").val();
- var Dry_Tank_drying_Humidity = $("input[name=Dry_Tank_drying_Humidity]").val();
- var Dry_Tank_drying_time = $("input[name=Dry_Tank_drying_time]").val();
- var Dry_Output_bean_height = $("input[name=Dry_Output_bean_height]").val();
- var Dry_Output_vacuumON_time = $("input[name=Dry_Output_vacuumON_time]").val();
- var Dry_Output_vacuumOFF_time = $("input[name=Dry_Output_vacuumOFF_time]").val();
-
- data = {"command": "Dry_auto_parameter",
- "Dry_Tank_bean_height": Dry_Tank_bean_height,
- "Dry_Tank_vacuumON_time": Dry_Tank_vacuumON_time,
- "Dry_Tank_vacuumOFF_time": Dry_Tank_vacuumOFF_time,
- "Dry_Tank_motor_rpm": Dry_Tank_motor_rpm,
- "Dry_Tank_drying_temp": Dry_Tank_drying_temp,
- "Dry_Tank_drying_Humidity": Dry_Tank_drying_Humidity,
- "Dry_Tank_drying_time": Dry_Tank_drying_time,
- "Dry_Output_bean_height": Dry_Output_bean_height,
- "Dry_Output_vacuumON_time": Dry_Output_vacuumON_time,
- "Dry_Output_vacuumOFF_time": Dry_Output_vacuumOFF_time
- };
- // 更新桶槽狀態
- dry_status_interval = setInterval(dry_auto_status, 5*1000);
- // dry_auto_status();
- function dry_auto_status(){
- if (dry_status_process == 1) { return }
- dry_status_process = 1;
- $.get('/dryDEMO_auto_status', data, function (res){
- D1 = res.Dry_Tank_1
- D2 = res.Dry_Tank_2
- DO1 = res.Dry_Output_1
- DO2 = res.Dry_Output_2
- dry_tank_status = [D1, D2]
- dry_output_status = [DO1, DO2]
- loading_status();
- loading_sensors();
- dry_status_process = 0;
- }, 'json');
- }
- }
- </script>
- </td>
- </tr>
- </table>
- </div>
- <div id="coffee_footer">
- <!-- 匯入共同使用的 footer.html 內容 -->
- {% include 'footer.html' %}
- </div>
- </div>
-
- </body>
- </html>
|