rootfs_enc1v2_hi3520d_20231229
This commit is contained in:
		
							parent
							
								
									a593839f20
								
							
						
					
					
						commit
						9f42b6e939
					
				
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -29,5 +29,6 @@
 | 
			
		|||
    "wifi",
 | 
			
		||||
    "dongle",
 | 
			
		||||
    "other"
 | 
			
		||||
  ]
 | 
			
		||||
  ],
 | 
			
		||||
  "gw":"eth0"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,15 @@
 | 
			
		|||
[
 | 
			
		||||
  {
 | 
			
		||||
    "version": "2.9.0 build 20231229",
 | 
			
		||||
    "logs": [
 | 
			
		||||
      "经典版:修复切换指定输入源的布局,有概率输入源切入无效问题",
 | 
			
		||||
      "标准版:修复集成通信页面未绑定导播软件,导致的页面加载异常问题",
 | 
			
		||||
      "标准版:修复设置LPH后,切换版本后设置无效的问题",
 | 
			
		||||
      "标准版:解码设置页面新增一键hdmi输出的功能",
 | 
			
		||||
      "移除LPH设置水印接口多余的返回值",
 | 
			
		||||
      "网络管理功能优化"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "version": "2.8.0 build 20231130",
 | 
			
		||||
    "logs": [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
{
 | 
			
		||||
    "app": "2.0.0 build 20220512_869",
 | 
			
		||||
    "sdk": "2.0.0 build 20220518_20716",
 | 
			
		||||
    "sys": "2.8.0 build 20231130"
 | 
			
		||||
    "sys": "2.9.0 build 20231229"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,8 @@ if [ -f /link/config/auto/webVer.json ] && web=$(jq -r ".web" /link/config/auto/
 | 
			
		|||
    sed -i '/<div class=".*d-flex.*">/,/<\/div>/ s/>[^<]*</>'"${footer}"'</g' /link/webflex/public/footfoot.inc
 | 
			
		||||
    rm -rf /link/webflex/assets/img
 | 
			
		||||
    ln -s /link/web/img /link/webflex/assets/
 | 
			
		||||
    rm -rf /link/webflex/.htaccess
 | 
			
		||||
    ln -s /link/web/.htaccess /link/webflex/
 | 
			
		||||
    cp /link/web/favicon.ico /link/webflex/
 | 
			
		||||
    sync
 | 
			
		||||
    /link/shell/net.sh &
 | 
			
		||||
| 
						 | 
				
			
			@ -22,13 +24,14 @@ else
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d /sys/class/net/eth1 ]; then
 | 
			
		||||
    /link/shell/setMac2.sh
 | 
			
		||||
    if [ -d /sys/class/net/eth2 ];then
 | 
			
		||||
	if [ "$fac" == "ENC2" ] || [ "$fac" == "ENC2V2" ] || [ "$fac" == "ENC2_SS528" ]; then
 | 
			
		||||
	    /link/shell/setMac2.sh eth2
 | 
			
		||||
	    /link/shell/setNetwork2.sh eth2
 | 
			
		||||
	fi
 | 
			
		||||
    else
 | 
			
		||||
	if [ "$fac" != "ENC2" ] && [ "$fac" != "ENC2V2" ] && [ "$fac" != "ENC2V2_SS528" ]; then
 | 
			
		||||
	    /link/shell/setMac2.sh eth1
 | 
			
		||||
	    /link/shell/setNetwork2.sh eth1
 | 
			
		||||
	fi
 | 
			
		||||
    fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +1,26 @@
 | 
			
		|||
{
 | 
			
		||||
  "files": {
 | 
			
		||||
    "main.css": "./mixer/static/css/main.375af961.chunk.css",
 | 
			
		||||
    "main.js": "./mixer/static/js/main.84be4e27.chunk.js",
 | 
			
		||||
    "main.js.map": "./mixer/static/js/main.84be4e27.chunk.js.map",
 | 
			
		||||
    "main.js": "./mixer/static/js/main.5f5e49d2.chunk.js",
 | 
			
		||||
    "main.js.map": "./mixer/static/js/main.5f5e49d2.chunk.js.map",
 | 
			
		||||
    "runtime-main.js": "./mixer/static/js/runtime-main.c45edf70.js",
 | 
			
		||||
    "runtime-main.js.map": "./mixer/static/js/runtime-main.c45edf70.js.map",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css": "./mixer/static/css/2.0b7c8b97.chunk.css",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js": "./mixer/static/js/2.f2aad125.chunk.js",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js.map": "./mixer/static/js/2.f2aad125.chunk.js.map",
 | 
			
		||||
    "index.html": "./mixer/index.html",
 | 
			
		||||
    "precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js": "./mixer/precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js",
 | 
			
		||||
    "precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js": "./mixer/precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js",
 | 
			
		||||
    "service-worker.js": "./mixer/service-worker.js",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css.map": "./mixer/static/css/2.0b7c8b97.chunk.css.map",
 | 
			
		||||
    "static/css/main.375af961.chunk.css.map": "./mixer/static/css/main.375af961.chunk.css.map",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js.LICENSE.txt": "./mixer/static/js/2.f2aad125.chunk.js.LICENSE.txt",
 | 
			
		||||
    "static/js/main.84be4e27.chunk.js.LICENSE.txt": "./mixer/static/js/main.84be4e27.chunk.js.LICENSE.txt"
 | 
			
		||||
    "static/js/main.5f5e49d2.chunk.js.LICENSE.txt": "./mixer/static/js/main.5f5e49d2.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  "entrypoints": [
 | 
			
		||||
    "static/js/runtime-main.c45edf70.js",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js",
 | 
			
		||||
    "static/css/main.375af961.chunk.css",
 | 
			
		||||
    "static/js/main.84be4e27.chunk.js"
 | 
			
		||||
    "static/js/main.5f5e49d2.chunk.js"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./mixer/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./mixer/logo192.png"/><link rel="manifest" href="./mixer/manifest.json"/><title>React App</title><link href="./mixer/static/css/2.0b7c8b97.chunk.css" rel="stylesheet"><link href="./mixer/static/css/main.375af961.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,l=r[0],f=r[1],a=r[2],c=0,s=[];c<l.length;c++)i=l[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var f=t[l];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./mixer/";var l=this.webpackJsonpmixer=this.webpackJsonpmixer||[],f=l.push.bind(l);l.push=r,l=l.slice();for(var a=0;a<l.length;a++)r(l[a]);var p=f;t()}([])</script><script src="./mixer/static/js/2.f2aad125.chunk.js"></script><script src="./mixer/static/js/main.84be4e27.chunk.js"></script></body></html>
 | 
			
		||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./mixer/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./mixer/logo192.png"/><link rel="manifest" href="./mixer/manifest.json"/><title>React App</title><link href="./mixer/static/css/2.0b7c8b97.chunk.css" rel="stylesheet"><link href="./mixer/static/css/main.375af961.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,l=r[0],f=r[1],a=r[2],c=0,s=[];c<l.length;c++)i=l[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var f=t[l];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./mixer/";var l=this.webpackJsonpmixer=this.webpackJsonpmixer||[],f=l.push.bind(l);l.push=r,l=l.slice();for(var a=0;a<l.length;a++)r(l[a]);var p=f;t()}([])</script><script src="./mixer/static/js/2.f2aad125.chunk.js"></script><script src="./mixer/static/js/main.5f5e49d2.chunk.js"></script></body></html>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
self.__precacheManifest = (self.__precacheManifest || []).concat([
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "17cea485705a58e350102e3a5d2effcb",
 | 
			
		||||
    "url": "./mixer/index.html"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "25cc111d980ef7eb4b05",
 | 
			
		||||
    "url": "./mixer/static/css/2.0b7c8b97.chunk.css"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "be6c0e6e77d1c21ca23f",
 | 
			
		||||
    "url": "./mixer/static/css/main.375af961.chunk.css"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "25cc111d980ef7eb4b05",
 | 
			
		||||
    "url": "./mixer/static/js/2.f2aad125.chunk.js"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "4390933dc3b3a92d4f565fd4f47c3cd7",
 | 
			
		||||
    "url": "./mixer/static/js/2.f2aad125.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "be6c0e6e77d1c21ca23f",
 | 
			
		||||
    "url": "./mixer/static/js/main.5f5e49d2.chunk.js"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "5c84e2504d745b1010aeb6ce2aad7554",
 | 
			
		||||
    "url": "./mixer/static/js/main.5f5e49d2.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "96af6c8d9af51963848a",
 | 
			
		||||
    "url": "./mixer/static/js/runtime-main.c45edf70.js"
 | 
			
		||||
  }
 | 
			
		||||
]);
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
 | 
			
		||||
 | 
			
		||||
importScripts(
 | 
			
		||||
  "./mixer/precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js"
 | 
			
		||||
  "./mixer/precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js"
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
self.addEventListener('message', (event) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
/*!
 | 
			
		||||
 * Sizzle CSS Selector Engine v2.3.4
 | 
			
		||||
 * https://sizzlejs.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright JS Foundation and other contributors
 | 
			
		||||
 * Released under the MIT license
 | 
			
		||||
 * https://js.foundation/
 | 
			
		||||
 *
 | 
			
		||||
 * Date: 2019-04-08
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*!
 | 
			
		||||
 * jQuery JavaScript Library v3.4.1
 | 
			
		||||
 * https://jquery.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Includes Sizzle.js
 | 
			
		||||
 * https://sizzlejs.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright JS Foundation and other contributors
 | 
			
		||||
 * Released under the MIT license
 | 
			
		||||
 * https://jquery.org/license
 | 
			
		||||
 *
 | 
			
		||||
 * Date: 2019-05-01T21:04Z
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
 | 
			
		||||
| 
						 | 
				
			
			@ -759,7 +759,7 @@ input[type="password"]::-ms-reveal{
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
.lp-cursor-pointer {
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    cursor: pointer !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.lp-display-hide {
 | 
			
		||||
| 
						 | 
				
			
			@ -880,9 +880,22 @@ input[type="password"]::-ms-reveal{
 | 
			
		|||
    background-clip: unset;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.login .input-group-text {
 | 
			
		||||
    width: 46px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.login .input-group-text i {
 | 
			
		||||
    margin: 0 auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.login .input-group input {
 | 
			
		||||
    line-height: 2.1rem;
 | 
			
		||||
    font-size: 1.3rem;
 | 
			
		||||
    line-height: 2.5rem;
 | 
			
		||||
    font-size: 1.2rem;
 | 
			
		||||
    border-left-width: 2px !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.login .form-check-input:focus {
 | 
			
		||||
    box-shadow: none !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dashboard .w_chart {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -558,6 +558,10 @@
 | 
			
		|||
    border-color: transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=dark] .mix .lay-border {
 | 
			
		||||
    border: 1px solid #999;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=dark] .sys .input-group-text {
 | 
			
		||||
    color: var(--bs-body-color-semi);
 | 
			
		||||
    border: 2px solid var(--bs-border-color-translucent) !important;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@
 | 
			
		|||
    --bs-default-auth-border-color:#495057;
 | 
			
		||||
    --bs-default-body-color:#555;
 | 
			
		||||
    --bs-default-bg-color:#212529;
 | 
			
		||||
    --bs-default-txt-color:#555;
 | 
			
		||||
    --bs-default-active-bg-color:#ffbb00;
 | 
			
		||||
    --bs-default-acitve-color:#eeaa00;
 | 
			
		||||
    --bs-default-hr-color:#bbbbbb;
 | 
			
		||||
| 
						 | 
				
			
			@ -58,8 +59,7 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .sidebar-wrapper .sidebar-bottom .dropdown-menu {
 | 
			
		||||
 | 
			
		||||
    background-color: var(--bs-default-bg-color-2);
 | 
			
		||||
    /*background-color: var(--bs-default-bg-color);*/
 | 
			
		||||
    border-color:var(--bs-border-color-translucent);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -373,8 +373,17 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .login .input-group-text {
 | 
			
		||||
    color: var(--bs-body-color-semi);
 | 
			
		||||
    background-color: var(--bs-body-bg-color);
 | 
			
		||||
    color: var(--bs-default-txt-color);
 | 
			
		||||
    background-color: #eeeeee;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .login .input-group-text:nth-child(3) {
 | 
			
		||||
    color: var(--bs-default-txt-color);
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .login .input-group input {
 | 
			
		||||
    background: #fff !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .login ::placeholder {
 | 
			
		||||
| 
						 | 
				
			
			@ -420,6 +429,10 @@
 | 
			
		|||
    color: #ddd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .mix .lay-border {
 | 
			
		||||
    border: 1px solid #fff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[data-bs-theme=default] .record .rec-file-title {
 | 
			
		||||
    background-color: #555;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,5 +8,4 @@ Promise.all([queryData("config/lang.json"),queryData("config/theme_standard.json
 | 
			
		|||
    html.setAttribute('data-bs-theme', themeConf.used);
 | 
			
		||||
    document.body.style.display = "block";
 | 
			
		||||
    html.dispatchEvent(new Event("loaded"));
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -98,22 +98,29 @@ export const statusTemperatureComponent = {
 | 
			
		|||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>`,
 | 
			
		||||
    props: ['value','color'],
 | 
			
		||||
    props: {
 | 
			
		||||
        modelValue: {
 | 
			
		||||
            type: Number,
 | 
			
		||||
            default: 0
 | 
			
		||||
        },
 | 
			
		||||
        activeColor: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: "#fb0"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    setup(props, context) {
 | 
			
		||||
 | 
			
		||||
        const tmp_mask = ref(null);
 | 
			
		||||
        const tmp_text = ref(null);
 | 
			
		||||
 | 
			
		||||
        const { value } = toRefs(props);
 | 
			
		||||
        const { modelValue,activeColor } = toRefs(props);
 | 
			
		||||
 | 
			
		||||
        watch(value,()=>{
 | 
			
		||||
            tmp_mask.value.style.bottom = props.value + '%';
 | 
			
		||||
            tmp_text.value.textContent = props.value + '℃';
 | 
			
		||||
        watch(modelValue,()=>{
 | 
			
		||||
            tmp_mask.value.style.bottom = modelValue.value + '%';
 | 
			
		||||
            tmp_text.value.textContent = modelValue.value + '℃';
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        onMounted(()=>{
 | 
			
		||||
            tmp_mask.value.parentElement.style.background = props.color;
 | 
			
		||||
        })
 | 
			
		||||
        onMounted(() => tmp_mask.value.parentElement.style.background = activeColor.value);
 | 
			
		||||
 | 
			
		||||
        return { tmp_mask,tmp_text }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -883,7 +890,16 @@ export const vueColorPickerComponent = {
 | 
			
		|||
                  <div class="arrow" data-popper-arrow></div>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>`,
 | 
			
		||||
    props: ['modelValue','direct'],
 | 
			
		||||
    props: {
 | 
			
		||||
        modelValue: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        direct: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: "bottom"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    components: {
 | 
			
		||||
        "sketch-picker": defineAsyncComponent(() => {
 | 
			
		||||
            return import('../plugins/vueColor/vue3.color.esm.js').then(module => {
 | 
			
		||||
| 
						 | 
				
			
			@ -993,10 +1009,39 @@ export const uploadModalComponent = {
 | 
			
		|||
                      </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
               </div>`,
 | 
			
		||||
    props:['modalTitle','modalShow','modalFade','uploadTip',"uploadAction",'uploadAllow','uploadCount'],
 | 
			
		||||
    props:{
 | 
			
		||||
        modalTitle: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        modalShow: {
 | 
			
		||||
            type: Boolean,
 | 
			
		||||
            default: false
 | 
			
		||||
        },
 | 
			
		||||
        modalFade: {
 | 
			
		||||
            type: Boolean,
 | 
			
		||||
            default: false
 | 
			
		||||
        },
 | 
			
		||||
        uploadTip: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        uploadAction: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        uploadAllow: {
 | 
			
		||||
            type: Array,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        uploadCount: {
 | 
			
		||||
            type: [Number,String],
 | 
			
		||||
            default: 1
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    setup(props,context) {
 | 
			
		||||
 | 
			
		||||
        const { modalShow,modalFade } = toRefs(props);
 | 
			
		||||
        const { modalShow,modalFade,uploadAllow } = toRefs(props);
 | 
			
		||||
 | 
			
		||||
        const state = {
 | 
			
		||||
            modal : ref(null),
 | 
			
		||||
| 
						 | 
				
			
			@ -1058,7 +1103,7 @@ export const uploadModalComponent = {
 | 
			
		|||
                dropZoneTitle: state.uploadTip,
 | 
			
		||||
                showClose: false,
 | 
			
		||||
                browseClass:"btn btn-primary btn-df",
 | 
			
		||||
                allowedFileExtensions: eval('('+props.uploadAllow+')'),
 | 
			
		||||
                allowedFileExtensions: uploadAllow.value,
 | 
			
		||||
                uploadUrl: props.uploadAction,
 | 
			
		||||
                maxFileCount: isNaN(Number(props.uploadCount)) ? 1 : Number(props.uploadCount)
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -1085,6 +1130,15 @@ export const uploadModalComponent = {
 | 
			
		|||
                initBsModal();
 | 
			
		||||
                initUploadFile();
 | 
			
		||||
            })
 | 
			
		||||
            const observer = new mutationObserver(() => {
 | 
			
		||||
                updateLangText();
 | 
			
		||||
            });
 | 
			
		||||
            const config = {
 | 
			
		||||
                attributes: true,
 | 
			
		||||
                attributeFilter: ["data-bs-language"],
 | 
			
		||||
                subtree: false
 | 
			
		||||
            };
 | 
			
		||||
            observer.observe(html, config);
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        return { ...state,modalFade }
 | 
			
		||||
| 
						 | 
				
			
			@ -1161,19 +1215,21 @@ export const upgradeModalComponent = {
 | 
			
		|||
                                        </a>
 | 
			
		||||
                                    </td>
 | 
			
		||||
                                    <td>
 | 
			
		||||
                                        <a class="lp-cursor-pointer" @click="handleUpdatePatch(index)">
 | 
			
		||||
                                        <a v-if="item.allow" class="lp-cursor-pointer" @click="handleUpdatePatch(index)">
 | 
			
		||||
                                            <div v-if="upgradePatch.id === item.id && hadUpdate">{{updatePercent}}%</div>
 | 
			
		||||
                                            <div v-else>
 | 
			
		||||
                                                <cn>更新</cn>
 | 
			
		||||
                                                <en>Update</en>
 | 
			
		||||
                                            </div>
 | 
			
		||||
                                        </a>
 | 
			
		||||
                                        <a v-else>/</a>
 | 
			
		||||
                                    </td>
 | 
			
		||||
                                    <td>
 | 
			
		||||
                                        <a class="lp-cursor-pointer" @click="handleDownloadPatch(index)">
 | 
			
		||||
                                        <a v-if="item.allow" class="lp-cursor-pointer" @click="handleDownloadPatch(index)">
 | 
			
		||||
                                            <cn>下载</cn>
 | 
			
		||||
                                            <en>Download</en>
 | 
			
		||||
                                        </a>
 | 
			
		||||
                                        <a v-else>/</a>
 | 
			
		||||
                                    </td>
 | 
			
		||||
                                </tr>
 | 
			
		||||
                                </tbody>
 | 
			
		||||
| 
						 | 
				
			
			@ -1203,7 +1259,24 @@ export const upgradeModalComponent = {
 | 
			
		|||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>`,
 | 
			
		||||
    props:['modalShow','modalFade','checkUpgrade','patchSn'],
 | 
			
		||||
    props: {
 | 
			
		||||
        modalShow: {
 | 
			
		||||
            type: Boolean,
 | 
			
		||||
            default: false
 | 
			
		||||
        },
 | 
			
		||||
        modalFade: {
 | 
			
		||||
            type:Boolean,
 | 
			
		||||
            default: true
 | 
			
		||||
        },
 | 
			
		||||
        checkUpgrade: {
 | 
			
		||||
            type: Boolean,
 | 
			
		||||
            default: false
 | 
			
		||||
        },
 | 
			
		||||
        patchSn: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default:""
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    setup(props,context) {
 | 
			
		||||
 | 
			
		||||
        const { modalFade,checkUpgrade,patchSn } = toRefs(props);
 | 
			
		||||
| 
						 | 
				
			
			@ -1256,6 +1329,16 @@ export const upgradeModalComponent = {
 | 
			
		|||
                    }
 | 
			
		||||
                    state.systemPatchs.splice(0);
 | 
			
		||||
                    state.systemPatchs.push(...result.data);
 | 
			
		||||
                    let hadImpact = false;
 | 
			
		||||
                    for(let i=0;i<state.systemPatchs.length;i++) {
 | 
			
		||||
                        state.systemPatchs[i].allow = true;
 | 
			
		||||
                        if(!hadImpact) {
 | 
			
		||||
                            const impact = state.systemPatchs[i].impact;
 | 
			
		||||
                            hadImpact = impact === "1";
 | 
			
		||||
                        } else {
 | 
			
		||||
                            state.systemPatchs[i].allow = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    result = await func("/upgrade/checkVersionMaster");
 | 
			
		||||
                    if (result.status === "error") {
 | 
			
		||||
| 
						 | 
				
			
			@ -1309,6 +1392,16 @@ export const upgradeModalComponent = {
 | 
			
		|||
                    }
 | 
			
		||||
                    state.systemPatchs.splice(0);
 | 
			
		||||
                    state.systemPatchs.push(...result.data);
 | 
			
		||||
                    let hadImpact = false;
 | 
			
		||||
                    for(let i=0;i<state.systemPatchs.length;i++) {
 | 
			
		||||
                        state.systemPatchs[i].allow = true;
 | 
			
		||||
                        if(!hadImpact) {
 | 
			
		||||
                            const impact = state.systemPatchs[i].impact;
 | 
			
		||||
                            hadImpact = impact === "1";
 | 
			
		||||
                        } else {
 | 
			
		||||
                            state.systemPatchs[i].allow = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    state.bsModal.show();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -1398,25 +1491,6 @@ export const upgradeModalComponent = {
 | 
			
		|||
                type = "update";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const params = {
 | 
			
		||||
                action:"download", name:name,
 | 
			
		||||
                chip:chip, type:type
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // const fileName = name;
 | 
			
		||||
            // axios_post('/link/upgrade.php',params, { responseType: 'arraybuffer' })
 | 
			
		||||
            //     .then(data => {
 | 
			
		||||
            //         const blob = new Blob([data], { type: 'application/octet-stream' });
 | 
			
		||||
            //         const url = URL.createObjectURL(blob);
 | 
			
		||||
            //         const a = document.createElement('a');
 | 
			
		||||
            //         a.href = url;
 | 
			
		||||
            //         a.download = fileName;
 | 
			
		||||
            //         document.body.appendChild(a);
 | 
			
		||||
            //         a.click();
 | 
			
		||||
            //         document.body.removeChild(a);
 | 
			
		||||
            //         URL.revokeObjectURL(url);
 | 
			
		||||
            //     })
 | 
			
		||||
 | 
			
		||||
            const url = "http://help.linkpi.cn:5735/upgrade/"+chip+"/"+type+"/"+name;
 | 
			
		||||
            const downName = "";
 | 
			
		||||
            const a = document.createElement('a');
 | 
			
		||||
| 
						 | 
				
			
			@ -1614,16 +1688,23 @@ export const loadingButtonComponent = {
 | 
			
		|||
                        <slot></slot>
 | 
			
		||||
                    </span>
 | 
			
		||||
                </button>`,
 | 
			
		||||
    props:['customClass','hadLoading'],
 | 
			
		||||
    props: {
 | 
			
		||||
        customClass: {
 | 
			
		||||
            type: String,
 | 
			
		||||
            default: ""
 | 
			
		||||
        },
 | 
			
		||||
        hadLoading: {
 | 
			
		||||
            type: Boolean,
 | 
			
		||||
            default: false
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    setup(props,context) {
 | 
			
		||||
 | 
			
		||||
        const { hadLoading } = toRefs(props);
 | 
			
		||||
 | 
			
		||||
        const onButtonClick = () => {
 | 
			
		||||
            context.emit("button-click","click")
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return { hadLoading,onButtonClick }
 | 
			
		||||
        return { onButtonClick }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -173,7 +173,7 @@ export const useNetManagerConf = (tip = "tip") => {
 | 
			
		|||
 | 
			
		||||
        const [conf,mac, mac2] = await Promise.all([
 | 
			
		||||
            queryData("config/netManager.json"),
 | 
			
		||||
            queryData("config/mac",{responseType: 'text'}),
 | 
			
		||||
            await checkFileExists("config/mac") ? queryData("config/mac",{responseType: 'text'}) : Promise.resolve(""),
 | 
			
		||||
            await checkFileExists("config/mac2") ? queryData("config/mac2",{responseType: 'text'}) : Promise.resolve("")
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Bundled by jsDelivr using Rollup v2.79.1 and Terser v5.19.2.
 | 
			
		||||
 * Original file: /npm/default-passive-events@2.0.0/dist/index.module.js
 | 
			
		||||
 *
 | 
			
		||||
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 | 
			
		||||
 */
 | 
			
		||||
var e,t=["scroll","wheel","touchstart","touchmove","touchenter","touchend","touchleave","mouseout","mouseleave","mouseup","mousedown","mousemove","mouseenter","mousewheel","mouseover"];if(function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}()){var o=EventTarget.prototype.addEventListener;e=o,EventTarget.prototype.addEventListener=function(o,r,n){var s,a="object"==typeof n&&null!==n,i=a?n.capture:n;(n=a?function(e){var t=Object.getOwnPropertyDescriptor(e,"passive");return t&&!0!==t.writable&&void 0===t.set?Object.assign({},e):e}(n):{}).passive=void 0!==(s=n.passive)?s:-1!==t.indexOf(o)&&!0,n.capture=void 0!==i&&i,e.call(this,o,r,n)},EventTarget.prototype.addEventListener._original=e}
 | 
			
		||||
//# sourceMappingURL=/sm/9e4a60b7470909b12cee41c1a75bf776dfc8fdd591416e18f74ab92915ed263e.map
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
                                    </div>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div class="col-lg-4 text-center">
 | 
			
		||||
                                    <tmp-compt :value="tmp" :color="theme_color"></tmp-compt>
 | 
			
		||||
                                    <tmp-compt v-model="tmp" :active-color="theme_color"></tmp-compt>
 | 
			
		||||
                                    <div>
 | 
			
		||||
                                        <cn>核心温度</cn>
 | 
			
		||||
                                        <en>Core temperature</en>
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +113,7 @@
 | 
			
		|||
 | 
			
		||||
  <script type="module">
 | 
			
		||||
      import { rpc } from "./assets/js/lp.utils.js";
 | 
			
		||||
      import { useDefaultConf,useHardwareConf } from "./assets/js/vue.hooks.js";
 | 
			
		||||
      import { useDefaultConf } from "./assets/js/vue.hooks.js";
 | 
			
		||||
      import { ignoreCustomElementPlugin,bootstrapSwitchComponent,statusPieChartComponent,statusTemperatureComponent,netFlotChartComponent } from "./assets/js/vue.helper.js"
 | 
			
		||||
      import vue from "./assets/js/vue.build.js";
 | 
			
		||||
      import mutationObserver from './assets/plugins/polyfill/mutationobserver.esm.js';
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +151,6 @@
 | 
			
		|||
              }
 | 
			
		||||
 | 
			
		||||
              const { defaultConf } = useDefaultConf();
 | 
			
		||||
              const { hardwareConf } = useHardwareConf();
 | 
			
		||||
 | 
			
		||||
              const getData1 = (d) => {
 | 
			
		||||
                  state.data1.shift();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,6 +162,10 @@
 | 
			
		|||
                                <cn>开关</cn>
 | 
			
		||||
                                <en>enable</en>
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div class="col text-center">
 | 
			
		||||
                                <cn>HDMI</cn>
 | 
			
		||||
                                <en>HDMI</en>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <hr >
 | 
			
		||||
                        <div class="row mt-1" v-for="(item,index) in handleNetConf" :key="item.id">
 | 
			
		||||
| 
						 | 
				
			
			@ -202,6 +206,12 @@
 | 
			
		|||
                                    <div class="col lp-align-center">
 | 
			
		||||
                                        <bs-switch v-model="item.enable"></bs-switch>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="col lp-align-center">
 | 
			
		||||
                                        <button type="button" class="btn btn-primary border-1 px-3" @click="onDisplayHdmi(item.id,item.enable)">
 | 
			
		||||
                                            <cn>输出</cn>
 | 
			
		||||
                                            <en>display</en>
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <hr >
 | 
			
		||||
                            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +235,11 @@
 | 
			
		|||
                                <cn>开关</cn>
 | 
			
		||||
                                <en>enable</en>
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div class="col-7"></div>
 | 
			
		||||
                            <div class="col text-center">
 | 
			
		||||
                                <cn>HDMI</cn>
 | 
			
		||||
                                <en>HDMI</en>
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div class="col-6"></div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <hr >
 | 
			
		||||
                        <div class="row mt-1">
 | 
			
		||||
| 
						 | 
				
			
			@ -243,7 +257,13 @@
 | 
			
		|||
                                    <div class="col lp-align-center">
 | 
			
		||||
                                        <bs-switch v-model="handleVideoFileConf.enable"></bs-switch>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="col-7"></div>
 | 
			
		||||
                                    <div class="col lp-align-center">
 | 
			
		||||
                                        <button type="button" class="btn btn-primary border-1 px-3" @click="onDisplayHdmi(handleVideoFileConf.id,handleVideoFileConf.enable)">
 | 
			
		||||
                                            <cn>输出</cn>
 | 
			
		||||
                                            <en>display</en>
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="col-6"></div>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -331,7 +351,7 @@
 | 
			
		|||
<?php include ("./public/foot.inc") ?>
 | 
			
		||||
<script type="module">
 | 
			
		||||
    
 | 
			
		||||
    import { rpc,extend,deepCopy,confirm,swap,clearReactiveArray,clearReactiveObject,formatTime } from "./assets/js/lp.utils.js";
 | 
			
		||||
    import { rpc, extend, deepCopy, confirm, swap, clearReactiveArray, clearReactiveObject, formatTime, alertMsg } from "./assets/js/lp.utils.js";
 | 
			
		||||
    import { useDefaultConf,useUsbFilesConf,useHardwareConf } from "./assets/js/vue.hooks.js";
 | 
			
		||||
    import { ignoreCustomElementPlugin,bootstrapSwitchComponent,multipleSelectComponent,nouiSliderComponent,languageOptionDirective } from "./assets/js/vue.helper.js"
 | 
			
		||||
    import vue from "./assets/js/vue.build.js";
 | 
			
		||||
| 
						 | 
				
			
			@ -373,6 +393,17 @@
 | 
			
		|||
                })
 | 
			
		||||
            })
 | 
			
		||||
 | 
			
		||||
            const onDisplayHdmi = (chnId,chnEnable) => {
 | 
			
		||||
                if(chnEnable) {
 | 
			
		||||
                    const mix = defaultConf.find(item => item.type === "mix");
 | 
			
		||||
                    mix.output.src = chnId;
 | 
			
		||||
                    updateDefaultConf("noTip").then(()=>{
 | 
			
		||||
                        alertMsg("<cn>输出至HDMI成功</cn><en>Display hdmi successfully!</en>","success");
 | 
			
		||||
                    })
 | 
			
		||||
                } else
 | 
			
		||||
                    alertMsg("<cn>通道未开启</cn><en>Display hdmi successfully!</en>","error");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const handleVideoFileConf = computed(()=>{
 | 
			
		||||
                if(defaultConf.length > 0) {
 | 
			
		||||
                    return defaultConf.find(item => {
 | 
			
		||||
| 
						 | 
				
			
			@ -501,7 +532,7 @@
 | 
			
		|||
            });
 | 
			
		||||
            
 | 
			
		||||
            return {...state,defaultConf,hardwareConf,handleVideoFileConf,handleUsbMp4File,onAddVideoFile, onVideoFileOption,formatTime,onTimelineSliderEnd,
 | 
			
		||||
                onHandleFileDuration,onHandleFilePostion,handleNetConf,saveGlobalConfByLocal,saveDefaultConf}
 | 
			
		||||
                onHandleFileDuration,onHandleFilePostion,onDisplayHdmi,handleNetConf,saveGlobalConfByLocal,saveDefaultConf}
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    app.use(ignoreCustomElementPlugin);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -387,7 +387,9 @@
 | 
			
		|||
                                    dev.title = intercomConf.intercom.name;
 | 
			
		||||
                                    dev.talking = state.intercomState.talking;
 | 
			
		||||
                                }
 | 
			
		||||
                                const count = state.intercomState.tally.length;
 | 
			
		||||
                                let count = 0;
 | 
			
		||||
                                if(state.intercomState.tally)
 | 
			
		||||
                                    count = state.intercomState.tally.length;
 | 
			
		||||
                                if(idx < count)
 | 
			
		||||
                                    dev.state = state.intercomState.tally[idx];
 | 
			
		||||
                                else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,13 +46,23 @@ class Layout extends Verify
 | 
			
		|||
                $result['srcA'] = $item['srcA'];
 | 
			
		||||
                foreach ($defLays as $defLay)
 | 
			
		||||
                {
 | 
			
		||||
                    $layList = [];
 | 
			
		||||
                    $layList = [];$layList1=[];
 | 
			
		||||
                    $layouts = $defLay['layouts'];
 | 
			
		||||
                    foreach ($layouts as $layout)
 | 
			
		||||
                    {
 | 
			
		||||
                        $pos = $layout['pos'];
 | 
			
		||||
                        //按顺序生成新对象,方便后面对比
 | 
			
		||||
                        $lay = array(
 | 
			
		||||
                            'a' => $pos['a'],
 | 
			
		||||
                            'x' => $pos['x'],
 | 
			
		||||
                            'y' => $pos ['y'],
 | 
			
		||||
                            'w' => $pos['w'],
 | 
			
		||||
                            'h' => $pos['h'],
 | 
			
		||||
                            'index' => $pos['index']
 | 
			
		||||
                        );
 | 
			
		||||
                        array_push($layList,$lay);
 | 
			
		||||
 | 
			
		||||
                        $lay1 = array(
 | 
			
		||||
                            'a' => $pos['a'],
 | 
			
		||||
                            'h' => $pos['h'],
 | 
			
		||||
                            'index' => $pos['index'],
 | 
			
		||||
| 
						 | 
				
			
			@ -60,9 +70,9 @@ class Layout extends Verify
 | 
			
		|||
                            'x' => $pos['x'],
 | 
			
		||||
                            'y' => $pos ['y']
 | 
			
		||||
                        );
 | 
			
		||||
                        array_push($layList,$lay);
 | 
			
		||||
                        array_push($layList1,$lay1);
 | 
			
		||||
                    }
 | 
			
		||||
                    if(json_encode($item['layout']) == json_encode($layList))
 | 
			
		||||
                    if(json_encode($item['layout']) == json_encode($layList) || json_encode($item['layout']) == json_encode($layList1))
 | 
			
		||||
                    {
 | 
			
		||||
                        $result['curLayId'] = $defLay['layId'];
 | 
			
		||||
                        $result['curLayName'] = $defLay['layName'];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ class Root extends Basic
 | 
			
		|||
            $ctx = 'location /link {rewrite ^(.*)/link/([a-zA-Z0-9\_]+)/([a-zA-Z0-9\_]+)$ $1/link/monitor.php?class=$2&func=$3&verify=false&login=true last;}';
 | 
			
		||||
        if($param == '3')
 | 
			
		||||
            $ctx = 'location /link {rewrite ^(.*)/link/([a-zA-Z0-9\_]+)/([a-zA-Z0-9\_]+)$ $1/link/monitor.php?class=$2&func=$3&verify=false&login=false last;}';
 | 
			
		||||
        file_put_contents('/link/web/.htaccess',$ctx);
 | 
			
		||||
        file_put_contents('/link/webflex/.htaccess',$ctx);
 | 
			
		||||
        exec('/usr/nginx/sbin/nginx -p /usr/nginx -s reload');
 | 
			
		||||
        return $this->handleRet($param, 'success', '保存成功', 'save successfully');
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,11 +59,10 @@ foreach ($configFiles as $historyFile) {
 | 
			
		|||
        continue;
 | 
			
		||||
 | 
			
		||||
    if(!strpos($currentFile, ".json") || strpos($currentFile, "version.json") ||
 | 
			
		||||
        strpos($currentFile, "net.json") || strpos($currentFile, "net2.json") || strpos($currentFile, "netEx.json"))
 | 
			
		||||
        strpos($currentFile, "net.json") || strpos($currentFile, "net2.json") ||
 | 
			
		||||
        strpos($currentFile, "netEx.json") || strpos($currentFile,"netManager.json"))
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
    echo $currentFile."\n";
 | 
			
		||||
 | 
			
		||||
    $historyCtx = json_decode(file_get_contents($historyFile));
 | 
			
		||||
    $currentCtx = json_decode(file_get_contents($currentFile));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div class="container-fluid login auth-cover lp-align-center" id="app">
 | 
			
		||||
    <div class="card border-3" style="width: 430px">
 | 
			
		||||
    <div class="card border-3" style="width: 400px">
 | 
			
		||||
        <div class="card-body p-4">
 | 
			
		||||
            <div class="row">
 | 
			
		||||
                <div class="col-lg-12 text-center">
 | 
			
		||||
| 
						 | 
				
			
			@ -17,20 +17,20 @@
 | 
			
		|||
                <form @submit.prevent="handleSubmit" class="row g-3" action="/link/action.php" method="post" ref="form" autocomplete="off">
 | 
			
		||||
                    <div class="col-12">
 | 
			
		||||
                        <div class="input-group">
 | 
			
		||||
                            <div class="input-group-text border-0 lp-cursor-pointer input-group-title"><i class="fa-solid fa-user font-17"></i></div>
 | 
			
		||||
                            <div class="input-group-text border-0 lp-cursor-pointer"><i class="fa-solid fa-user"></i></div>
 | 
			
		||||
                            <input v-model.trim.lazy="username" type="text" class="form-control border-0 border-start" name="username">
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="col-12">
 | 
			
		||||
                        <div class="input-group">
 | 
			
		||||
                            <div class="input-group-text border-0 lp-cursor-pointer input-group-title"><i class="fa-solid fa-key font-17"></i></div>
 | 
			
		||||
                            <div class="input-group-text border-0 lp-cursor-pointer"><i class="fa-solid fa-key"></i></div>
 | 
			
		||||
                            <input v-model.trim.lazy="password" :type="!showPasswd ? 'password' : 'text'" class="form-control border-0 border-start input-passwd" name="password">
 | 
			
		||||
                            <div class="input-group-text border-0 lp-cursor-pointer font-16" @click="showPasswd = !showPasswd"><i :class="['fa-regular',{'fa-eye-slash':showPasswd},{'fa-eye ':!showPasswd}]"></i></div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="col-6">
 | 
			
		||||
                        <div class="form-check form-switch form-check-primary border-0">
 | 
			
		||||
                            <input class="form-check-input" type="checkbox" v-model="remember">
 | 
			
		||||
                            <input class="form-check-input lp-cursor-pointer" type="checkbox" v-model="remember">
 | 
			
		||||
                            <label class="form-check-label"><cn>记住密码</cn><en>Remember Me</en></label>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@
 | 
			
		|||
                form: ref(null),
 | 
			
		||||
                username: ref(""),
 | 
			
		||||
                password: ref(""),
 | 
			
		||||
                remember: ref(true),
 | 
			
		||||
                remember: ref(false),
 | 
			
		||||
                showPasswd:ref(false)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@
 | 
			
		|||
                let param = getUrlParam("u");
 | 
			
		||||
                if(param === "e") {
 | 
			
		||||
                    alertMsg("<cn>账号或密码错误</cn><en>The account or password is incorrect</en>","error")
 | 
			
		||||
                    //removeUrlParam();
 | 
			
		||||
                    removeUrlParam();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            return { ...state,handleSubmit }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@
 | 
			
		|||
                    <div class="card-body pb-4" >
 | 
			
		||||
                        <div class="lp-aspect-ratio">
 | 
			
		||||
                            <div class="aspect-ratio-content bg-black">
 | 
			
		||||
                                <div v-for="(item,index) in handleActiveDefLayConf.layouts" :style="{position:'absolute',width:item.pos.w * 100+'%',height:item.pos.h*100+'%',left:item.pos.x*100+'%',top:item.pos.y*100+'%'}">
 | 
			
		||||
                                <div class="lay-border" v-for="(item,index) in handleActiveDefLayConf.layouts" :style="{position:'absolute',width:item.pos.w * 100+'%',height:item.pos.h*100+'%',left:item.pos.x*100+'%',top:item.pos.y*100+'%'}">
 | 
			
		||||
                                    <div :style="{width:'100%',height:'100%',backgroundColor: handleLayBackColor(index)}">
 | 
			
		||||
                                        <div class="d-flex align-items-center gap-1 border-0 px-2 py-1">
 | 
			
		||||
                                            <div class="flex-grow-1">
 | 
			
		||||
| 
						 | 
				
			
			@ -147,8 +147,10 @@
 | 
			
		|||
            });
 | 
			
		||||
    
 | 
			
		||||
            const handleActiveVolume = index => {
 | 
			
		||||
                const idx = defaultConf[state.mixIndex.value].srcV[index].toString();
 | 
			
		||||
                return !defaultConf[state.mixIndex.value].srcA.includes(idx) && !defaultConf[state.mixIndex.value].srcA.includes(Number(idx));
 | 
			
		||||
                if(index < defaultConf[state.mixIndex.value].srcV.length) {
 | 
			
		||||
                    const idx = defaultConf[state.mixIndex.value].srcV[index].toString();
 | 
			
		||||
                    return !defaultConf[state.mixIndex.value].srcA.includes(idx) && !defaultConf[state.mixIndex.value].srcA.includes(Number(idx));
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
            
 | 
			
		||||
            const onUpdateActiveVolume = chnId => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +1,26 @@
 | 
			
		|||
{
 | 
			
		||||
  "files": {
 | 
			
		||||
    "main.css": "./mixer/static/css/main.375af961.chunk.css",
 | 
			
		||||
    "main.js": "./mixer/static/js/main.84be4e27.chunk.js",
 | 
			
		||||
    "main.js.map": "./mixer/static/js/main.84be4e27.chunk.js.map",
 | 
			
		||||
    "main.js": "./mixer/static/js/main.5f5e49d2.chunk.js",
 | 
			
		||||
    "main.js.map": "./mixer/static/js/main.5f5e49d2.chunk.js.map",
 | 
			
		||||
    "runtime-main.js": "./mixer/static/js/runtime-main.c45edf70.js",
 | 
			
		||||
    "runtime-main.js.map": "./mixer/static/js/runtime-main.c45edf70.js.map",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css": "./mixer/static/css/2.0b7c8b97.chunk.css",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js": "./mixer/static/js/2.f2aad125.chunk.js",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js.map": "./mixer/static/js/2.f2aad125.chunk.js.map",
 | 
			
		||||
    "index.html": "./mixer/index.html",
 | 
			
		||||
    "precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js": "./mixer/precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js",
 | 
			
		||||
    "precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js": "./mixer/precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js",
 | 
			
		||||
    "service-worker.js": "./mixer/service-worker.js",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css.map": "./mixer/static/css/2.0b7c8b97.chunk.css.map",
 | 
			
		||||
    "static/css/main.375af961.chunk.css.map": "./mixer/static/css/main.375af961.chunk.css.map",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js.LICENSE.txt": "./mixer/static/js/2.f2aad125.chunk.js.LICENSE.txt",
 | 
			
		||||
    "static/js/main.84be4e27.chunk.js.LICENSE.txt": "./mixer/static/js/main.84be4e27.chunk.js.LICENSE.txt"
 | 
			
		||||
    "static/js/main.5f5e49d2.chunk.js.LICENSE.txt": "./mixer/static/js/main.5f5e49d2.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  "entrypoints": [
 | 
			
		||||
    "static/js/runtime-main.c45edf70.js",
 | 
			
		||||
    "static/css/2.0b7c8b97.chunk.css",
 | 
			
		||||
    "static/js/2.f2aad125.chunk.js",
 | 
			
		||||
    "static/css/main.375af961.chunk.css",
 | 
			
		||||
    "static/js/main.84be4e27.chunk.js"
 | 
			
		||||
    "static/js/main.5f5e49d2.chunk.js"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./mixer/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./mixer/logo192.png"/><link rel="manifest" href="./mixer/manifest.json"/><title>React App</title><link href="./mixer/static/css/2.0b7c8b97.chunk.css" rel="stylesheet"><link href="./mixer/static/css/main.375af961.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,l=r[0],f=r[1],a=r[2],c=0,s=[];c<l.length;c++)i=l[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var f=t[l];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./mixer/";var l=this.webpackJsonpmixer=this.webpackJsonpmixer||[],f=l.push.bind(l);l.push=r,l=l.slice();for(var a=0;a<l.length;a++)r(l[a]);var p=f;t()}([])</script><script src="./mixer/static/js/2.f2aad125.chunk.js"></script><script src="./mixer/static/js/main.84be4e27.chunk.js"></script></body></html>
 | 
			
		||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./mixer/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./mixer/logo192.png"/><link rel="manifest" href="./mixer/manifest.json"/><title>React App</title><link href="./mixer/static/css/2.0b7c8b97.chunk.css" rel="stylesheet"><link href="./mixer/static/css/main.375af961.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,l=r[0],f=r[1],a=r[2],c=0,s=[];c<l.length;c++)i=l[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var f=t[l];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./mixer/";var l=this.webpackJsonpmixer=this.webpackJsonpmixer||[],f=l.push.bind(l);l.push=r,l=l.slice();for(var a=0;a<l.length;a++)r(l[a]);var p=f;t()}([])</script><script src="./mixer/static/js/2.f2aad125.chunk.js"></script><script src="./mixer/static/js/main.5f5e49d2.chunk.js"></script></body></html>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
self.__precacheManifest = (self.__precacheManifest || []).concat([
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "17cea485705a58e350102e3a5d2effcb",
 | 
			
		||||
    "url": "./mixer/index.html"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "25cc111d980ef7eb4b05",
 | 
			
		||||
    "url": "./mixer/static/css/2.0b7c8b97.chunk.css"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "be6c0e6e77d1c21ca23f",
 | 
			
		||||
    "url": "./mixer/static/css/main.375af961.chunk.css"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "25cc111d980ef7eb4b05",
 | 
			
		||||
    "url": "./mixer/static/js/2.f2aad125.chunk.js"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "4390933dc3b3a92d4f565fd4f47c3cd7",
 | 
			
		||||
    "url": "./mixer/static/js/2.f2aad125.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "be6c0e6e77d1c21ca23f",
 | 
			
		||||
    "url": "./mixer/static/js/main.5f5e49d2.chunk.js"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "5c84e2504d745b1010aeb6ce2aad7554",
 | 
			
		||||
    "url": "./mixer/static/js/main.5f5e49d2.chunk.js.LICENSE.txt"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "revision": "96af6c8d9af51963848a",
 | 
			
		||||
    "url": "./mixer/static/js/runtime-main.c45edf70.js"
 | 
			
		||||
  }
 | 
			
		||||
]);
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
 | 
			
		||||
 | 
			
		||||
importScripts(
 | 
			
		||||
  "./mixer/precache-manifest.58ca0a035d7d4a54ca84834ef500469e.js"
 | 
			
		||||
  "./mixer/precache-manifest.1a06c0869ff880086e3a9be9dac86c16.js"
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
self.addEventListener('message', (event) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
/*!
 | 
			
		||||
 * Sizzle CSS Selector Engine v2.3.4
 | 
			
		||||
 * https://sizzlejs.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright JS Foundation and other contributors
 | 
			
		||||
 * Released under the MIT license
 | 
			
		||||
 * https://js.foundation/
 | 
			
		||||
 *
 | 
			
		||||
 * Date: 2019-04-08
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*!
 | 
			
		||||
 * jQuery JavaScript Library v3.4.1
 | 
			
		||||
 * https://jquery.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Includes Sizzle.js
 | 
			
		||||
 * https://sizzlejs.com/
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright JS Foundation and other contributors
 | 
			
		||||
 * Released under the MIT license
 | 
			
		||||
 * https://jquery.org/license
 | 
			
		||||
 *
 | 
			
		||||
 * Date: 2019-05-01T21:04Z
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
 | 
			
		||||
| 
						 | 
				
			
			@ -305,7 +305,7 @@
 | 
			
		|||
                                            </label>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                        <div class="col-lg-6">
 | 
			
		||||
                                            <picker-color v-model="handleEditData.color" direct="bottom"></picker-color>
 | 
			
		||||
                                            <picker-color v-model="handleEditData.color" :direct="'bottom'"></picker-color>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="row mt-4" v-if="handleEditData.type === 'text' || handleEditData.type === 'time'">
 | 
			
		||||
| 
						 | 
				
			
			@ -316,7 +316,7 @@
 | 
			
		|||
                                            </label>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                        <div class="col-lg-6">
 | 
			
		||||
                                            <picker-color v-model="handleEditData.bgColor" direct="bottom"></picker-color>
 | 
			
		||||
                                            <picker-color v-model="handleEditData.bgColor" :direct="'bottom'"></picker-color>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="row mt-4" v-if="handleEditData.type === 'text' || handleEditData.type === 'time' || handleEditData.type === 'pic'">
 | 
			
		||||
| 
						 | 
				
			
			@ -390,9 +390,9 @@
 | 
			
		|||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <upload-modal modal-title="上传资源&Upload" :modal-show="showModal" modal-fade="true"
 | 
			
		||||
                          upload-allow="['png','ttf']" upload-action="/link/upd/uploadRes.php" upload-count="2"
 | 
			
		||||
                          upload-tip="请把资源拖到此处,仅支持png图片,ttf格式字体...&Please drag the resourse here..."
 | 
			
		||||
            <upload-modal :modal-title="'上传资源&Upload'" :modal-show="showModal" :modal-fade="true"
 | 
			
		||||
                          :upload-allow="['png','ttf']" :upload-action="'/link/upd/uploadRes.php'" :upload-count="2"
 | 
			
		||||
                          :upload-tip="'请把资源拖到此处,仅支持png图片,ttf格式字体...&Please drag the resourse here...'"
 | 
			
		||||
                          @upload-success="uploadSuccess" @upload-error="uploadError">
 | 
			
		||||
            </upload-modal>
 | 
			
		||||
        </main>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,4 +3,5 @@
 | 
			
		|||
<script src="assets/js/lp.loader.js" type="module"></script>
 | 
			
		||||
<script src="assets/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
 | 
			
		||||
<script src="assets/plugins/pace/js/pace.min.js"></script>
 | 
			
		||||
<script src="assets/plugins/simplebar/js/simplebar.min.js"></script>
 | 
			
		||||
<script src="assets/plugins/simplebar/js/simplebar.min.js"></script>
 | 
			
		||||
<script src="assets/plugins/passive/passive.events.min.js"></script>
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
                            <i v-else class="fa-regular fa-sun" @click="updateThemeConf('default')"></i>
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li class="nav-item">
 | 
			
		||||
                    <li class="nav-item" v-if="Object.keys(hardwareConf).length > 0 && hardwareConf.fac !== 'REC1'">
 | 
			
		||||
                        <a class="nav-link" style="font-size: 19px;" @click="changeWeb">
 | 
			
		||||
                            <i class="fa-solid fa-arrow-right-arrow-left"></i>
 | 
			
		||||
                        </a>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
                <ul class="nav nav-tabs nav-primary" role="tablist">
 | 
			
		||||
                    <li class="nav-item" role="presentation" v-if="Object.keys(netAdapter).length > 0 && Object.keys(netManagerConf).length > 0" v-for="(item,index) in Object.values(netAdapter)" :key="index">
 | 
			
		||||
                        <a v-if="netManagerConf.interface.hasOwnProperty(item.dev)" :class="['nav-link',{'active':index===0}]" data-bs-toggle="tab" :href="'#tab'+(index+1)" role="tab" aria-selected="true">
 | 
			
		||||
                            <div v-if="item.type === 'lan'" class="d-flex align-items-center">
 | 
			
		||||
                            <div v-if="item.type === 'lan' || item.type === 'other'" class="d-flex align-items-center">
 | 
			
		||||
                                <div class="tab-icon"><i :class="['fa-solid me-1',{'fa-code-merge':index%2===1},{'fa-code-fork':index%2===0}]"></i></i></div>
 | 
			
		||||
                                <div class="tab-title">
 | 
			
		||||
                                    <cn>网口</cn>
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@
 | 
			
		|||
 | 
			
		||||
                <div class="tab-content py-3 pe-2 ps-2">
 | 
			
		||||
                    <div v-if="Object.keys(netAdapter).length > 0 && Object.keys(netManagerConf).length > 0" v-for="(item,index) in Object.values(netAdapter)" :class="['tab-pane fade',{'show active':index===0}]" :key="index" :id="'tab'+(index+1)" role="tabpanel">
 | 
			
		||||
                        <div v-if="netManagerConf.interface.hasOwnProperty(item.dev) && item.type === 'lan'">
 | 
			
		||||
                        <div v-if="netManagerConf.interface.hasOwnProperty(item.dev) && (item.type === 'lan' || item.type === 'other')">
 | 
			
		||||
                            <div v-if="Object.keys(hardwareConf).length > 0 && hardwareConf.function.dhcp" class="row mt-3">
 | 
			
		||||
                                <div class="col-lg-2 offset-lg-1 lp-align-center">
 | 
			
		||||
                                    <label>
 | 
			
		||||
| 
						 | 
				
			
			@ -374,8 +374,10 @@
 | 
			
		|||
                                        </div>
 | 
			
		||||
                                        <div class="col-lg-6">
 | 
			
		||||
                                            <div class="input-group">
 | 
			
		||||
                                                <input class="form-control" :type="!showPasswd.oldpwd ? 'password' : 'text'" v-model.trim.lazy="userPasswd.oldpwd">
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.oldpwd = !showPasswd.oldpwd"><i :class="['fa-regular',{'fa-eye-slash':!showPasswd.oldpwd},{'fa-eye':showPasswd.oldpwd}]"></i></span>
 | 
			
		||||
                                                <form>
 | 
			
		||||
                                                    <input class="form-control" :type="!showPasswd.oldpwd ? 'password' : 'text'" v-model.trim.lazy="userPasswd.oldpwd" autocomplete="off">
 | 
			
		||||
                                                </form>
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.oldpwd = !showPasswd.oldpwd"><i :class="['fa-regular',{'fa-eye-slash':showPasswd.oldpwd},{'fa-eye':!showPasswd.oldpwd}]"></i></span>
 | 
			
		||||
                                            </div>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -390,8 +392,10 @@
 | 
			
		|||
                                        </div>
 | 
			
		||||
                                        <div class="col-lg-6">
 | 
			
		||||
                                            <div class="input-group">
 | 
			
		||||
                                                <input class="form-control" :type="!showPasswd.newpwd ? 'password' : 'text'" v-model.trim.lazy="userPasswd.newpwd">
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.newpwd = !showPasswd.newpwd"><i :class="['fa-regular',{'fa-eye-slash':!showPasswd.newpwd},{'fa-eye':showPasswd.newpwd}]"></i></span>
 | 
			
		||||
                                                <form>
 | 
			
		||||
                                                    <input class="form-control" :type="!showPasswd.newpwd ? 'password' : 'text'" v-model.trim.lazy="userPasswd.newpwd" autocomplete="off">
 | 
			
		||||
                                                </form>
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.newpwd = !showPasswd.newpwd"><i :class="['fa-regular',{'fa-eye-slash':showPasswd.newpwd},{'fa-eye':!showPasswd.newpwd}]"></i></span>
 | 
			
		||||
                                            </div>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -404,8 +408,10 @@
 | 
			
		|||
                                        </div>
 | 
			
		||||
                                        <div class="col-lg-6">
 | 
			
		||||
                                            <div class="input-group">
 | 
			
		||||
                                                <input class="form-control" :type="!showPasswd.confirm ? 'password' : 'text'" v-model.trim.lazy="userPasswd.confirm">
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.confirm = !showPasswd.confirm"><i :class="['fa-regular',{'fa-eye-slash':!showPasswd.confirm},{'fa-eye':showPasswd.confirm}]"></i></span>
 | 
			
		||||
                                                <form>
 | 
			
		||||
                                                    <input class="form-control" :type="!showPasswd.confirm ? 'password' : 'text'" v-model.trim.lazy="userPasswd.confirm" autocomplete="off">
 | 
			
		||||
                                                </form>
 | 
			
		||||
                                                <span class="input-group-text input-group-addon lp-cursor-pointer" @click="showPasswd.confirm = !showPasswd.confirm"><i :class="['fa-regular',{'fa-eye-slash':showPasswd.confirm},{'fa-eye':!showPasswd.confirm}]"></i></span>
 | 
			
		||||
                                            </div>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -918,9 +924,9 @@
 | 
			
		|||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <upload-modal modal-title="上传升级包&Upload" :modal-show="showUploadModal" modal-fade="true"
 | 
			
		||||
                      upload-allow="['bin']" upload-action="/link/upd/uploadPatch.php" upload-count="1"
 | 
			
		||||
                      upload-tip="请把升级包拖动到此处...&Please drag the upgrade package here..."
 | 
			
		||||
        <upload-modal :modal-title="'上传升级包&Upload'" :modal-show="showUploadModal" :modal-fade="true"
 | 
			
		||||
                      :upload-allow="['bin']" :upload-action="'/link/upd/uploadPatch.php'" :upload-count="1"
 | 
			
		||||
                      :upload-tip="'请把升级包拖动到此处...&Please drag the upgrade package here...'"
 | 
			
		||||
                      @upload-success="uploadSuccess" @upload-error="uploadError">
 | 
			
		||||
        </upload-modal>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -961,7 +967,7 @@
 | 
			
		|||
            </div>
 | 
			
		||||
        </search-modal>
 | 
			
		||||
 | 
			
		||||
        <upgrade-modal v-model:check-upgrade="checkUpgrade" :patch-sn="patchSN" modal-fade="true"></upgrade-modal>
 | 
			
		||||
        <upgrade-modal v-model:check-upgrade="checkUpgrade" :patch-sn="patchSN" :modal-fade="true"></upgrade-modal>
 | 
			
		||||
    </main>
 | 
			
		||||
</div>
 | 
			
		||||
<?php include ("./public/foot.inc") ?>
 | 
			
		||||
| 
						 | 
				
			
			@ -1093,17 +1099,6 @@
 | 
			
		|||
            const getAdapterNetState = () => {
 | 
			
		||||
                rpc2("net.getState").then(data => {
 | 
			
		||||
                    clearReactiveObject(state.netAdapter);
 | 
			
		||||
                    const ignoreAry = [];
 | 
			
		||||
                    if(hardwareConf.fac === "ENC5V2") {
 | 
			
		||||
                        Object.values(data.interface).forEach(item => {
 | 
			
		||||
                            if(item.type === "lan" && item.dev.includes("eth"))
 | 
			
		||||
                                ignoreAry.push(item.dev);
 | 
			
		||||
                        })
 | 
			
		||||
                    }
 | 
			
		||||
                    ignoreAry.forEach(item => {
 | 
			
		||||
                        if(item !== "eth0")
 | 
			
		||||
                            delete data.interface[item];
 | 
			
		||||
                    })
 | 
			
		||||
                    Object.assign(state.netAdapter,data.interface);
 | 
			
		||||
                });
 | 
			
		||||
                setTimeout(getAdapterNetState,2000);
 | 
			
		||||
| 
						 | 
				
			
			@ -1117,8 +1112,8 @@
 | 
			
		|||
 | 
			
		||||
            const updateDefNetwork = (dev) => {
 | 
			
		||||
                updateNetManagerConf().then(()=>{
 | 
			
		||||
                    if(dev === "eth0")
 | 
			
		||||
                        setTimeout(() => window.location.href="http://"+netManagerConf["interface"]["eth0"]["ip"]+"/sys.php",1000)
 | 
			
		||||
                    if(dev === netManagerConf["gw"])
 | 
			
		||||
                        setTimeout(() => window.location.href="http://"+netManagerConf["interface"][dev]["ip"]+"/sys.php",1000)
 | 
			
		||||
                })
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue