feat: 接入 UserHome 前端业务代码(含真实 src/依赖,保留 projman 标准 CI)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Document</title>
|
||||
<script src="./js/bschcrypto.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="overflow: hidden">
|
||||
<div style="width: 45%; float: left">
|
||||
<textarea id="textarea1" rows="5" style="width: 100%"></textarea>
|
||||
<br />
|
||||
<button onclick="decrypt()">decrypt</button>
|
||||
</div>
|
||||
|
||||
<div style="width: 45%; float: right">
|
||||
<textarea id="textarea2" rows="5" style="width: 100%"></textarea>
|
||||
<br />
|
||||
<button onclick="encrypt()">encrypt</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<textarea id="textarea3" rows="5" style="width: 100%"></textarea>
|
||||
|
||||
<script>
|
||||
const bschCrypto = new BschCryptoUtil();
|
||||
function decrypt() {
|
||||
var data = document.getElementById("textarea1").value;
|
||||
console.log(data);
|
||||
const plaintext = bschCrypto.decrypt(data);
|
||||
console.log(plaintext);
|
||||
document.getElementById("textarea3").value = JSON.stringify(plaintext);
|
||||
}
|
||||
|
||||
function encrypt() {
|
||||
var data = document.getElementById("textarea2").value;
|
||||
const ciphertext = bschCrypto.encrypt(data);
|
||||
console.log(ciphertext);
|
||||
document.getElementById("textarea3").value = ciphertext;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,47 @@
|
||||
(function (global) {
|
||||
/* ---------- 1. 默认 16 字节密钥 ---------- */
|
||||
const DEFAULT_KEY_WA = CryptoJS.MD5("bsch2025"); // WordArray(16 byte)
|
||||
|
||||
class BschCryptoUtil {
|
||||
#aesKey;
|
||||
|
||||
constructor(key) {
|
||||
// 支持外部传入字符串或 WordArray,默认用隐藏后的 MD5
|
||||
this.#aesKey = key != null ? key : DEFAULT_KEY_WA;
|
||||
}
|
||||
|
||||
encrypt(data) {
|
||||
const message = typeof data === "string" ? data : JSON.stringify(data);
|
||||
const encrypted = CryptoJS.AES.encrypt(message, this.#aesKey, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7,
|
||||
});
|
||||
return encrypted.toString(); // Base64
|
||||
}
|
||||
|
||||
decrypt(cipherText) {
|
||||
if (!cipherText) throw new Error("cipherText is empty");
|
||||
const decrypted = CryptoJS.AES.decrypt(cipherText, this.#aesKey, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7,
|
||||
});
|
||||
const plain = decrypted.toString(CryptoJS.enc.Utf8);
|
||||
if (!plain) throw new Error("decrypt failed");
|
||||
try {
|
||||
return JSON.parse(plain);
|
||||
} catch (_) {
|
||||
return plain;
|
||||
}
|
||||
}
|
||||
|
||||
static encrypt(data, key) {
|
||||
return new BschCryptoUtil(key).encrypt(data);
|
||||
}
|
||||
|
||||
static decrypt(cipherText, key) {
|
||||
return new BschCryptoUtil(key).decrypt(cipherText);
|
||||
}
|
||||
}
|
||||
/* ---------- 6. 暴露到全局 ---------- */
|
||||
global.BschCryptoUtil = BschCryptoUtil;
|
||||
})(typeof window !== "undefined" ? window : this);
|
||||
Vendored
+2
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";function _instanceof(n,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](n):n instanceof e}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _classCallCheck(a,n){if(!_instanceof(a,n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t)}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object");}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _classPrivateFieldSet(s,a,r){return s.set(_assertClassBrand(s,a),r),r}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object");}var _isDev=new WeakMap();var _appId=new WeakMap();var BschLoadUtil=function(){function BschLoadUtil(){_classCallCheck(this,BschLoadUtil);_classPrivateFieldInitSpec(this,_isDev,false);_classPrivateFieldInitSpec(this,_appId,null);if(!BschLoadUtil.instance){this.isSelf=window.self===window.top;_classPrivateFieldSet(_appId,this,this.uuid());this.ticket=null;this.roleInfo={roleId:null,schId:null,childId:null};BschLoadUtil.instance=this}return BschLoadUtil.instance}return _createClass(BschLoadUtil,[{key:"getTicket",value:function getTicket(){if(!_classPrivateFieldGet(_isDev,this)){var ticket=this.getUrlParam("ticket"),roleInfoStr=this.getUrlParam("role");var roleInfo=this.roleDecode(roleInfoStr);this.ticket=ticket;this.roleInfo=roleInfo}return{ticket:this.ticket,roleInfo:this.roleInfo}}},{key:"goBackDesktop",value:function goBackDesktop(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:1}),"*")}},{key:"reloadParent",value:function reloadParent(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:2}),"*")}},{key:"showUserInfo",value:function showUserInfo(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:3}),"*")}},{key:"roleDecode",value:function roleDecode(roleInfoStr){try{var str=window.atob(roleInfoStr);str=decodeURIComponent(str);var obj=JSON.parse(str);return obj}catch(error){console.error(error);return{id:null,ticket:"",roleInfo:{}}}}},{key:"setDevTicket",value:function setDevTicket(ticket,roleInfo){if(this.isSelf){this.ticket=ticket;this.roleInfo=roleInfo;_classPrivateFieldSet(_isDev,this,true)}}},{key:"getIsSelf",value:function getIsSelf(){if(_classPrivateFieldGet(_isDev,this))return false;else return this.isSelf}},{key:"getUrlParam",value:function getUrlParam(name){var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");var r=window.location.search.substr(1).match(reg);if(r!=null)return unescape(r[2]);else return null}},{key:"uuid",value:function uuid(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c=="x"?r:r&0x3|0x8;return v.toString(16)})}}],[{key:"getInstance",value:function getInstance(){if(!this.instance){return this.instance=new BschLoadUtil()}return this.instance}}])}();
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
"use strict";function _instanceof(n,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](n):n instanceof e}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _classCallCheck(a,n){if(!_instanceof(a,n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t)}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object");}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _classPrivateFieldSet(s,a,r){return s.set(_assertClassBrand(s,a),r),r}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object");}var _isDev=new WeakMap();var _appId=new WeakMap();var BschLoadUtil=function(){function BschLoadUtil(){_classCallCheck(this,BschLoadUtil);_classPrivateFieldInitSpec(this,_isDev,false);_classPrivateFieldInitSpec(this,_appId,null);if(!BschLoadUtil.instance){this.isSelf=window.self===window.top;_classPrivateFieldSet(_appId,this,this.uuid());this.ticket=null;this.roleInfo={userId:null,roleId:null,schId:null,childId:null};BschLoadUtil.instance=this}return BschLoadUtil.instance}return _createClass(BschLoadUtil,[{key:"getTicket",value:function getTicket(){if(!_classPrivateFieldGet(_isDev,this)){var ticket=this.getUrlParam("ticket"),roleInfoStr=this.getUrlParam("role");var roleInfo=this.roleDecode(roleInfoStr);this.ticket=ticket;this.roleInfo=roleInfo}return{ticket:this.ticket,roleInfo:this.roleInfo}}},{key:"goBackDesktop",value:function goBackDesktop(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:1}),"*")}},{key:"reloadParent",value:function reloadParent(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:2}),"*")}},{key:"showUserInfo",value:function showUserInfo(){if(_classPrivateFieldGet(_isDev,this)){console.error("调试模式,无效操作!");return}parent.postMessage(JSON.stringify({id:_classPrivateFieldGet(_appId,this),code:3}),"*")}},{key:"roleDecode",value:function roleDecode(roleInfoStr){try{var str=window.atob(roleInfoStr);str=decodeURIComponent(str);var obj=JSON.parse(str);return obj}catch(error){console.error(error);return{id:null,ticket:"",roleInfo:{}}}}},{key:"setDevTicket",value:function setDevTicket(ticket,roleInfo){if(this.isSelf){this.ticket=ticket;this.roleInfo=roleInfo;_classPrivateFieldSet(_isDev,this,true)}}},{key:"getIsSelf",value:function getIsSelf(){if(_classPrivateFieldGet(_isDev,this))return false;else return this.isSelf}},{key:"getUrlParam",value:function getUrlParam(name){var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");var r=window.location.search.substr(1).match(reg);if(r!=null)return unescape(r[2]);else return null}},{key:"uuid",value:function uuid(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c=="x"?r:r&0x3|0x8;return v.toString(16)})}}],[{key:"getInstance",value:function getInstance(){if(!this.instance){return this.instance=new BschLoadUtil()}return this.instance}}])}();
|
||||
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* 数字基座内嵌加载帮助类
|
||||
*/
|
||||
|
||||
class BschLoadUtil {
|
||||
#isDev = false;
|
||||
#appId = null;
|
||||
#headerInfo = {};
|
||||
constructor() {
|
||||
if (!BschLoadUtil.instance) {
|
||||
this.isSelf = window.self === window.top;
|
||||
this.ticket = null;
|
||||
this.roleInfo = {
|
||||
roleId: null,
|
||||
schId: null,
|
||||
childId: null,
|
||||
};
|
||||
BschLoadUtil.instance = this;
|
||||
}
|
||||
return BschLoadUtil.instance;
|
||||
}
|
||||
getTicket() {
|
||||
if (this.#isDev) return Promise.resolve({ ticket: this.ticket, roleInfo: this.roleInfo });
|
||||
else
|
||||
return new Promise((resolve, reject) => {
|
||||
window.addEventListener(
|
||||
"message",
|
||||
e => {
|
||||
var { id, ticket, roleInfo, headerInfo } = this.roleDecode(e.data);
|
||||
this.#appId = id;
|
||||
this.#headerInfo = headerInfo;
|
||||
this.ticket = ticket;
|
||||
this.roleInfo = roleInfo;
|
||||
resolve({ ticket, roleInfo });
|
||||
},
|
||||
false
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
replaceHeaderStyle(el) {
|
||||
if (this.#headerInfo == null) return false;
|
||||
const { appName, avatar, username } = this.#headerInfo;
|
||||
let headerStr = `
|
||||
<header class="header-container fix">
|
||||
<h4 class="fl align-middle">${appName}</h4>
|
||||
<div class="header-aside fr">
|
||||
<img id="js_comp_user_phone" src="${avatar}" class="fl align-middle">
|
||||
<a id="js_comp_user_name" class="name fl align-middle text-ellipsis" href="javascript:void(0);">${username}</a>
|
||||
<div class="delimiter fl align-middle"></div>
|
||||
<a href="javascript:;" id="js_comp_operate" class="logout fl align-middle" title="返回桌面">
|
||||
<i class="iconfont icon-shouye"></i>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
`;
|
||||
const _this = this;
|
||||
$(el).append(headerStr);
|
||||
$(el)
|
||||
.find("#js_comp_user_phone")
|
||||
.click(() => _this.showUserInfo());
|
||||
$(el)
|
||||
.find("#js_comp_user_name")
|
||||
.click(() => _this.showUserInfo());
|
||||
$(el)
|
||||
.find("#js_comp_operate")
|
||||
.click(() => _this.goBackDesktop());
|
||||
}
|
||||
|
||||
goBackDesktop() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 1 }), "*");
|
||||
}
|
||||
|
||||
reloadParent() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 2 }), "*");
|
||||
}
|
||||
|
||||
showUserInfo() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 3 }), "*");
|
||||
}
|
||||
|
||||
roleDecode(roleInfoStr) {
|
||||
try {
|
||||
var str = window.atob(roleInfoStr);
|
||||
str = decodeURIComponent(str);
|
||||
var obj = JSON.parse(str);
|
||||
return obj;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return {
|
||||
id: null,
|
||||
ticket: "",
|
||||
roleInfo: {},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
setDevTicket(ticket, roleInfo) {
|
||||
if (this.isSelf) {
|
||||
this.ticket = ticket;
|
||||
this.roleInfo = roleInfo;
|
||||
this.#isDev = true;
|
||||
}
|
||||
}
|
||||
getIsSelf() {
|
||||
if (this.#isDev) return false;
|
||||
else return this.isSelf;
|
||||
}
|
||||
|
||||
static getInstance() {
|
||||
if (!this.instance) {
|
||||
return (this.instance = new BschLoadUtil());
|
||||
}
|
||||
return this.instance;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* 数字基座内嵌加载帮助类
|
||||
*/
|
||||
|
||||
class BschLoadUtil {
|
||||
#isDev = false;
|
||||
#appId = null;
|
||||
constructor() {
|
||||
if (!BschLoadUtil.instance) {
|
||||
this.isSelf = window.self === window.top;
|
||||
this.#appId = this.uuid();
|
||||
this.ticket = null;
|
||||
this.roleInfo = {
|
||||
userId: null,
|
||||
roleId: null,
|
||||
schId: null,
|
||||
childId: null,
|
||||
};
|
||||
BschLoadUtil.instance = this;
|
||||
}
|
||||
return BschLoadUtil.instance;
|
||||
}
|
||||
getTicket() {
|
||||
if (!this.#isDev) {
|
||||
const ticket = this.getUrlParam("ticket"),
|
||||
roleInfoStr = this.getUrlParam("role");
|
||||
var roleInfo = this.roleDecode(roleInfoStr);
|
||||
this.ticket = ticket;
|
||||
this.roleInfo = roleInfo;
|
||||
}
|
||||
return { ticket: this.ticket, roleInfo: this.roleInfo };
|
||||
}
|
||||
|
||||
goBackDesktop() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 1 }), "*");
|
||||
}
|
||||
|
||||
reloadParent() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 2 }), "*");
|
||||
}
|
||||
|
||||
showUserInfo() {
|
||||
if (this.#isDev) {
|
||||
console.error("调试模式,无效操作!");
|
||||
return;
|
||||
}
|
||||
parent.postMessage(JSON.stringify({ id: this.#appId, code: 3 }), "*");
|
||||
}
|
||||
|
||||
roleDecode(roleInfoStr) {
|
||||
try {
|
||||
var str = window.atob(roleInfoStr);
|
||||
str = decodeURIComponent(str);
|
||||
var obj = JSON.parse(str);
|
||||
return obj;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return {
|
||||
id: null,
|
||||
ticket: "",
|
||||
roleInfo: {},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
setDevTicket(ticket, roleInfo) {
|
||||
if (this.isSelf) {
|
||||
this.ticket = ticket;
|
||||
this.roleInfo = roleInfo;
|
||||
this.#isDev = true;
|
||||
}
|
||||
}
|
||||
getIsSelf() {
|
||||
if (this.#isDev) return false;
|
||||
else return this.isSelf;
|
||||
}
|
||||
|
||||
getUrlParam(name) {
|
||||
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
||||
let r = window.location.search.substr(1).match(reg);
|
||||
if (r != null) return unescape(r[2]);
|
||||
else return null;
|
||||
}
|
||||
uuid() {
|
||||
return "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
||||
let r = (Math.random() * 16) | 0,
|
||||
v = c == "x" ? r : (r & 0x3) | 0x8;
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
||||
|
||||
static getInstance() {
|
||||
if (!this.instance) {
|
||||
return (this.instance = new BschLoadUtil());
|
||||
}
|
||||
return this.instance;
|
||||
}
|
||||
}
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -7,372 +7,89 @@ email: hunter.z@263.net
|
||||
website: http://code.google.com/p/jquerytree/
|
||||
|
||||
-------------------------------------*/
|
||||
.ztree * {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif
|
||||
}
|
||||
|
||||
.ztree {
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
color: #333
|
||||
}
|
||||
|
||||
.ztree li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
line-height: 17px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
outline: 0
|
||||
}
|
||||
|
||||
.ztree li ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 18px
|
||||
}
|
||||
|
||||
.ztree li ul.line {
|
||||
background: url(./img/line_conn.png) 0 0 repeat-y;
|
||||
}
|
||||
|
||||
.ztree li a {
|
||||
padding-right: 3px;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
height: 21px;
|
||||
color: #333;
|
||||
background-color: transparent;
|
||||
text-decoration: none;
|
||||
vertical-align: top;
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.ztree li a:hover {
|
||||
text-decoration: underline
|
||||
}
|
||||
|
||||
.ztree li a.curSelectedNode {
|
||||
padding-top: 0px;
|
||||
background-color: #e5e5e5;
|
||||
color: black;
|
||||
height: 21px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.ztree li a.curSelectedNode_Edit {
|
||||
padding-top: 0px;
|
||||
background-color: #e5e5e5;
|
||||
color: black;
|
||||
height: 21px;
|
||||
border: 1px #666 solid;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.ztree li a.tmpTargetNode_inner {
|
||||
padding-top: 0px;
|
||||
background-color: #aaa;
|
||||
color: white;
|
||||
height: 21px;
|
||||
border: 1px #666 solid;
|
||||
opacity: 0.8;
|
||||
filter: alpha(opacity=80)
|
||||
}
|
||||
.ztree * {padding:0; margin:0; font-size:14px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
|
||||
.ztree {margin:0; padding:5px; color:#333}
|
||||
.ztree li{padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0}
|
||||
.ztree li ul{ margin:0; padding:0 0 0 18px}
|
||||
.ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
|
||||
|
||||
.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; vertical-align:top; display: inline-block}
|
||||
.ztree li a:hover {text-decoration:underline}
|
||||
.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; opacity:0.8;}
|
||||
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; border:1px #666 solid; opacity:0.8;}
|
||||
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
|
||||
opacity:0.8; filter:alpha(opacity=80)}
|
||||
.ztree li a.tmpTargetNode_prev {}
|
||||
|
||||
.ztree li a.tmpTargetNode_next {}
|
||||
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
|
||||
font-size:12px; border:1px #585956 solid; *border:0px}
|
||||
.ztree li span {line-height:21px; margin-right:2px}
|
||||
.ztree li span.button {line-height:0; margin:0; padding: 0; width:21px; height:21px; display: inline-block; vertical-align:middle;
|
||||
border:0 none; cursor: pointer;outline:none;
|
||||
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
|
||||
background-image:url("./img/bootstrap.png");}
|
||||
|
||||
.ztree li a input.rename {
|
||||
height: 14px;
|
||||
width: 80px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
border: 1px #585956 solid;
|
||||
*border: 0px
|
||||
}
|
||||
.ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto}
|
||||
.ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;}
|
||||
.ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;}
|
||||
.ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;}
|
||||
.ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;}
|
||||
.ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;}
|
||||
.ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;}
|
||||
.ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;}
|
||||
.ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;}
|
||||
.ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;}
|
||||
.ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;}
|
||||
.ztree li span.button.chk.radio_false_full {background-position: -47px -5px;}
|
||||
.ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;}
|
||||
.ztree li span.button.chk.radio_false_part {background-position: -47px -47px;}
|
||||
.ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;}
|
||||
.ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;}
|
||||
.ztree li span.button.chk.radio_true_full {background-position: -68px -5px;}
|
||||
.ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;}
|
||||
.ztree li span.button.chk.radio_true_part {background-position: -68px -47px;}
|
||||
.ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;}
|
||||
.ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;}
|
||||
|
||||
.ztree li span {
|
||||
line-height: 21px;
|
||||
margin-right: 2px
|
||||
}
|
||||
|
||||
.ztree li span.button {
|
||||
line-height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 21px;
|
||||
height: 21px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
border: 0 none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
background-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
background-attachment: scroll;
|
||||
background-image: url("./img/bootstrap.png");
|
||||
}
|
||||
|
||||
.ztree li span.button.chk {
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
margin: 0 2px;
|
||||
cursor: auto
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_false_full {
|
||||
background-position: -5px -5px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_false_full_focus {
|
||||
background-position: -5px -26px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_false_part {
|
||||
background-position: -5px -48px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_false_part_focus {
|
||||
background-position: -5px -68px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_false_disable {
|
||||
background-position: -5px -89px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_true_full {
|
||||
background-position: -26px -5px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_true_full_focus {
|
||||
background-position: -26px -26px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_true_part {
|
||||
background-position: -26px -48px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_true_part_focus {
|
||||
background-position: -26px -68px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.checkbox_true_disable {
|
||||
background-position: -26px -89px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_false_full {
|
||||
background-position: -47px -5px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_false_full_focus {
|
||||
background-position: -47px -26px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_false_part {
|
||||
background-position: -47px -47px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_false_part_focus {
|
||||
background-position: -47px -68px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_false_disable {
|
||||
background-position: -47px -89px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_true_full {
|
||||
background-position: -68px -5px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_true_full_focus {
|
||||
background-position: -68px -26px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_true_part {
|
||||
background-position: -68px -47px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_true_part_focus {
|
||||
background-position: -68px -68px;
|
||||
}
|
||||
|
||||
.ztree li span.button.chk.radio_true_disable {
|
||||
background-position: -68px -89px;
|
||||
}
|
||||
|
||||
.ztree li span.button.switch {
|
||||
width: 21px;
|
||||
height: 21px
|
||||
}
|
||||
|
||||
.ztree li span.button.root_open {
|
||||
background-position: -105px -63px
|
||||
}
|
||||
|
||||
.ztree li span.button.root_close {
|
||||
background-position: -126px -63px
|
||||
}
|
||||
|
||||
.ztree li span.button.roots_open {
|
||||
background-position: -105px 0;
|
||||
}
|
||||
|
||||
.ztree li span.button.roots_close {
|
||||
background-position: -126px 0;
|
||||
}
|
||||
|
||||
.ztree li span.button.center_open {
|
||||
background-position: -105px -21px;
|
||||
}
|
||||
|
||||
.ztree li span.button.center_close {
|
||||
background-position: -126px -21px;
|
||||
}
|
||||
|
||||
.ztree li span.button.bottom_open {
|
||||
background-position: -105px -42px;
|
||||
}
|
||||
|
||||
.ztree li span.button.bottom_close {
|
||||
background-position: -126px -42px;
|
||||
}
|
||||
|
||||
.ztree li span.button.noline_open {
|
||||
background-position: -105px -84px;
|
||||
}
|
||||
|
||||
.ztree li span.button.noline_close {
|
||||
background-position: -126px -84px;
|
||||
}
|
||||
|
||||
.ztree li span.button.root_docu {
|
||||
background-position: -105px -63px;
|
||||
}
|
||||
|
||||
.ztree li span.button.roots_docu {
|
||||
background-position: -84px 0;
|
||||
}
|
||||
|
||||
.ztree li span.button.center_docu {
|
||||
background-position: -84px -21px;
|
||||
}
|
||||
|
||||
.ztree li span.button.bottom_docu {
|
||||
background-position: -84px -42px;
|
||||
}
|
||||
|
||||
.ztree li span.button.noline_docu {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.ztree li span.button.ico_open {
|
||||
margin-right: 2px;
|
||||
background-position: -147px -21px;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
|
||||
.ztree li span.button.ico_close {
|
||||
margin-right: 2px;
|
||||
margin-right: 2px;
|
||||
background-position: -147px 0;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
|
||||
.ztree li span.button.ico_docu {
|
||||
margin-right: 2px;
|
||||
background-position: -147px -43px;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
|
||||
.ztree li span.button.edit {
|
||||
margin-left: 2px;
|
||||
margin-right: -1px;
|
||||
background-position: -189px -21px;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
.ztree li span.button.switch {width:21px; height:21px}
|
||||
.ztree li span.button.root_open{background-position:-105px -63px}
|
||||
.ztree li span.button.root_close{background-position:-126px -63px}
|
||||
.ztree li span.button.roots_open{background-position: -105px 0;}
|
||||
.ztree li span.button.roots_close{background-position: -126px 0;}
|
||||
.ztree li span.button.center_open{background-position: -105px -21px;}
|
||||
.ztree li span.button.center_close{background-position: -126px -21px;}
|
||||
.ztree li span.button.bottom_open{background-position: -105px -42px;}
|
||||
.ztree li span.button.bottom_close{background-position: -126px -42px;}
|
||||
.ztree li span.button.noline_open{background-position: -105px -84px;}
|
||||
.ztree li span.button.noline_close{background-position: -126px -84px;}
|
||||
.ztree li span.button.root_docu{ background:none;}
|
||||
.ztree li span.button.roots_docu{background-position: -84px 0;}
|
||||
.ztree li span.button.center_docu{background-position: -84px -21px;}
|
||||
.ztree li span.button.bottom_docu{background-position: -84px -42px;}
|
||||
.ztree li span.button.noline_docu{ background:none;}
|
||||
|
||||
.ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -43px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.edit:hover {
|
||||
background-position: -168px -21px;
|
||||
background-position: -168px -21px;
|
||||
}
|
||||
|
||||
.ztree li span.button.remove {
|
||||
margin-left: 2px;
|
||||
margin-right: -1px;
|
||||
background-position: -189px -42px;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
|
||||
.ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.remove:hover {
|
||||
background-position: -168px -42px;
|
||||
background-position: -168px -42px;
|
||||
}
|
||||
|
||||
.ztree li span.button.add {
|
||||
margin-left: 2px;
|
||||
margin-right: -1px;
|
||||
background-position: -189px 0;
|
||||
vertical-align: top;
|
||||
*vertical-align: middle
|
||||
}
|
||||
|
||||
.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.add:hover {
|
||||
background-position: -168px 0;
|
||||
background-position: -168px 0;
|
||||
}
|
||||
|
||||
ul.tmpTargetzTree {
|
||||
background-color: #FFE6B0;
|
||||
opacity: 0.8;
|
||||
filter: alpha(opacity=80)
|
||||
}
|
||||
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
|
||||
|
||||
span.tmpzTreeMove_arrow {
|
||||
width: 16px;
|
||||
height: 21px;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin: 2px 0 0 1px;
|
||||
border: 0 none;
|
||||
position: absolute;
|
||||
background-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
background-attachment: scroll;
|
||||
background-position: -168px -84px;
|
||||
background-image: url("./img/bootstrap.png");
|
||||
z-index: 10000;
|
||||
}
|
||||
span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
|
||||
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
|
||||
background-position:-168px -84px; background-image:url("./img/bootstrap.png");}
|
||||
|
||||
span.tmpzTreeMove_prev {
|
||||
background: red;
|
||||
}
|
||||
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
|
||||
.ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
|
||||
|
||||
|
||||
|
||||
ul.ztree.zTreeDragUL {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: auto;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
background-color: #cfcfcf;
|
||||
border: 1px #00B83F dotted;
|
||||
opacity: 0.8;
|
||||
filter: alpha(opacity=80)
|
||||
}
|
||||
|
||||
.ztreeMask {
|
||||
z-index: 10000;
|
||||
background-color: #cfcfcf;
|
||||
opacity: 0.0;
|
||||
filter: alpha(opacity=0);
|
||||
position: absolute
|
||||
}
|
||||
Reference in New Issue
Block a user