ng-yunzai-mobile
Version:
1. 修改wechat.micro.ts
181 lines • 17.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: layout/yz-default-index/yz-default-index.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { ActivatedRoute, Router } from "@angular/router";
import { UserService } from "../../user/user.service";
import { InfoService } from "../../info/info.service";
var YzDefaultIndexComponent = /** @class */ (function () {
function YzDefaultIndexComponent(userService, activatedRoute, infoService, router) {
this.userService = userService;
this.activatedRoute = activatedRoute;
this.infoService = infoService;
this.router = router;
this.logoUrl = '';
this.title = '';
this.menus = [];
this.color = '';
this.colorDodge = '';
}
/**
* @return {?}
*/
YzDefaultIndexComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var menus = this.userService.get().menu || [];
this.activatedRoute.data.subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
/** @type {?} */
var systemCode = res.systemCode;
/** @type {?} */
var mobileApp = _this.userService.findMenuBySystemCode(menus, 'mobileApp');
/** @type {?} */
var app = _this.userService.findMenuBySystemCode(mobileApp.children, systemCode);
if (app) {
_this.title = app.text;
/** @type {?} */
var groups = app.children || [];
_this.menus = groups.flatMap((/**
* @param {?} group
* @return {?}
*/
function (group) { return group.children || []; }));
}
// 用传过来的标题覆盖
if (res.title) {
_this.title = res.title;
}
}));
this.infoService.getSystemInfo().subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.logoUrl = res.maxLogoUrl;
if (res.clientEnd && res.clientEnd.color) {
_this.color = res.clientEnd.color;
_this.colorDodge = _this.colorRgba(_this.color, 0.71);
}
}));
};
/**
* @param {?} item
* @return {?}
*/
YzDefaultIndexComponent.prototype.routerJump = /**
* @param {?} item
* @return {?}
*/
function (item) {
if (item.link) {
this.router.navigateByUrl(item.link);
}
else if (item.appUrl) {
window.location.href = item.appUrl;
}
};
/**
* 十六进制颜色值减淡
* @param value 颜色值
* @param transparency 透明度<=1
*/
/**
* 十六进制颜色值减淡
* @param {?} value 颜色值
* @param {?} transparency 透明度<=1
* @return {?}
*/
YzDefaultIndexComponent.prototype.colorRgba = /**
* 十六进制颜色值减淡
* @param {?} value 颜色值
* @param {?} transparency 透明度<=1
* @return {?}
*/
function (value, transparency) {
// 16进制颜色值的正则
/** @type {?} */
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
// 把颜色值变成小写
/** @type {?} */
var color = value.toLowerCase();
if (reg.test(color)) {
// 如果只有三位的值,需变成六位,如:#fff => #ffffff
if (color.length === 4) {
/** @type {?} */
var colorNew = "#";
for (var i = 1; i < 4; i += 1) {
colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1));
}
color = colorNew;
}
// 处理六位的颜色值,转为RGB
/** @type {?} */
var colorChange = [];
for (var i = 1; i < 7; i += 2) {
colorChange.push(parseInt("0x" + color.slice(i, i + 2)));
}
return "rgba(" + colorChange.join(",") + "," + transparency + ")";
}
else {
return color;
}
};
YzDefaultIndexComponent.decorators = [
{ type: Component, args: [{
selector: 'yz-default-index',
template: "<div class=\"page\">\r\n <div class=\"common-svc-index\">\r\n <div class=\"common-svc-index-bg\"\r\n [ngStyle]=\"{'background':'linear-gradient(180deg, '+color+', '+colorDodge+', rgba(161, 33, 41, 0))'}\"></div>\r\n <img *ngIf=\"logoUrl\" [src]=\"logoUrl\" class=\"common-svc-index-logo\"/>\r\n <div class=\"common-svc-index-title\">{{ title }}</div>\r\n <div class=\"page-card\">\r\n <div class=\"tab-btn-row\">\r\n <ng-container *ngFor=\"let item of menus;let i=index\">\r\n <div [class]=\"'button'\"\r\n (click)=\"routerJump(item)\">\r\n <span>{{ item.text }}</span>\r\n <div class=\"button-icon\">\r\n <i class=\"anticon anticon-right\" nz-icon=\"\" type=\"right\"><svg viewBox=\"64 64 896 896\" fill=\"currentColor\" width=\"1em\" height=\"1em\" data-icon=\"right\" aria-hidden=\"true\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z\"></path></svg></i>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
styles: [".page{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:1;background-color:#f7f7f7}.common-svc-index{position:relative}.common-svc-index .common-svc-index-bg{content:'';position:absolute;left:0;top:0;width:100%;height:326px;background:linear-gradient(180deg,#891616,rgba(161,33,41,.8) 71%,rgba(161,33,41,0))}.common-svc-index .common-svc-index-logo,.common-svc-index .common-svc-index-title,.common-svc-index .page-card{position:relative;z-index:1}.common-svc-index .common-svc-index-logo{max-height:80px;display:block;margin:0 auto;padding:30px 0;max-width:90%}.common-svc-index .common-svc-index-title{font-size:27px;font-weight:600;color:#fff;line-height:40px;display:block;text-align:center;padding:0 37px 40px}.common-svc-index .page-card{width:90%;padding:20px 0;margin:0 auto 30px;background:#fff;border-radius:6px;color:#333;align-items:center;justify-content:flex-start;font-size:17px;font-weight:400;line-height:20px;position:relative}.common-svc-index .page-card .tab-btn-row .button{font-size:17px;font-weight:400;border-radius:2px;color:#333;padding:25px 60px 25px 85px;display:flex;justify-content:space-between;position:relative}.common-svc-index .page-card .tab-btn-row .button:before{content:'';position:absolute;left:60px;top:31px;width:10px;height:10px}.common-svc-index .page-card .tab-btn-row .button:hover{opacity:.8}.common-svc-index .page-card .tab-btn-row .button:nth-child(1n):before{background-color:#909399}.common-svc-index .page-card .tab-btn-row .button:nth-child(2n):before{background-color:#67c23a}.common-svc-index .page-card .tab-btn-row .button:nth-child(3n):before{background-color:#e6a23c}.common-svc-index .page-card .tab-btn-row .button:nth-child(4n):before{background-color:#3ce6b9}.common-svc-index .page-card .tab-btn-row .button:nth-child(5n):before{background-color:#db3ce6}.common-svc-index .page-card .tab-btn-row .button:nth-child(6n):before{background-color:#a2e63c}.common-svc-index .page-card .tab-btn-row .button:nth-child(7n):before{background-color:#e6693c}.common-svc-index .page-card .tab-btn-row .button:nth-child(8n):before{background-color:#3ccde6}.button-icon{font-size:14px}.button-icon svg path,.button-icon svg rect{fill:#333}"]
}] }
];
/** @nocollapse */
YzDefaultIndexComponent.ctorParameters = function () { return [
{ type: UserService },
{ type: ActivatedRoute },
{ type: InfoService },
{ type: Router }
]; };
return YzDefaultIndexComponent;
}());
export { YzDefaultIndexComponent };
if (false) {
/** @type {?} */
YzDefaultIndexComponent.prototype.logoUrl;
/** @type {?} */
YzDefaultIndexComponent.prototype.title;
/** @type {?} */
YzDefaultIndexComponent.prototype.menus;
/** @type {?} */
YzDefaultIndexComponent.prototype.color;
/** @type {?} */
YzDefaultIndexComponent.prototype.colorDodge;
/**
* @type {?}
* @private
*/
YzDefaultIndexComponent.prototype.userService;
/**
* @type {?}
* @private
*/
YzDefaultIndexComponent.prototype.activatedRoute;
/**
* @type {?}
* @private
*/
YzDefaultIndexComponent.prototype.infoService;
/**
* @type {?}
* @private
*/
YzDefaultIndexComponent.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXotZGVmYXVsdC1pbmRleC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsibGF5b3V0L3l6LWRlZmF1bHQtaW5kZXgveXotZGVmYXVsdC1pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRDtJQVdFLGlDQUFvQixXQUF3QixFQUN4QixjQUE4QixFQUM5QixXQUF3QixFQUN4QixNQUFjO1FBSGQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSbEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFLaEIsQ0FBQzs7OztJQUVELDBDQUFROzs7SUFBUjtRQUFBLGlCQXlCQzs7WUF4Qk8sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUzs7OztRQUFDLFVBQUEsR0FBRzs7Z0JBQzlCLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVTs7Z0JBRTNCLFNBQVMsR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFD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RyxDQUFDLEdBQUcsR0FBRyxHQUFHLFlBQVksR0FBRyxHQUFHLENBQUM7U0FDbkU7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDOztnQkFqRkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLG90Q0FBZ0Q7O2lCQUVqRDs7OztnQkFQTyxXQUFXO2dCQURYLGNBQWM7Z0JBRWQsV0FBVztnQkFGSyxNQUFNOztJQXVGOUIsOEJBQUM7Q0FBQSxBQW5GRCxJQW1GQztTQTlFWSx1QkFBdUI7OztJQUNsQywwQ0FBcUI7O0lBQ3JCLHdDQUFtQjs7SUFDbkIsd0NBQWtCOztJQUNsQix3Q0FBVzs7SUFDWCw2Q0FBZ0I7Ozs7O0lBQ0osOENBQWdDOzs7OztJQUNoQyxpREFBc0M7Ozs7O0lBQ3RDLDhDQUFnQzs7Ozs7SUFDaEMseUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vdXNlci91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJbmZvU2VydmljZX0gZnJvbSBcIi4uLy4uL2luZm8vaW5mby5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3l6LWRlZmF1bHQtaW5kZXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi95ei1kZWZhdWx0LWluZGV4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95ei1kZWZhdWx0LWluZGV4LmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFl6RGVmYXVsdEluZGV4Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsb2dvVXJsOiBzdHJpbmcgPSAnJztcclxuICB0aXRsZTogc3RyaW5nID0gJyc7XHJcbiAgbWVudXM6IGFueVtdID0gW107XHJcbiAgY29sb3IgPSAnJztcclxuICBjb2xvckRvZGdlID0gJyc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmZvU2VydmljZTogSW5mb1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtZW51cyA9IHRoaXMudXNlclNlcnZpY2UuZ2V0KCkubWVudSB8fCBbXTtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgY29uc3Qgc3lzdGVtQ29kZSA9IHJlcy5zeXN0ZW1Db2RlO1xyXG5cclxuICAgICAgY29uc3QgbW9iaWxlQXBwID0gdGhpcy51c2VyU2VydmljZS5maW5kTWVudUJ5U3lzdGVtQ29kZShtZW51cywgJ21vYmlsZUFwcCcpO1xyXG4gICAgICBjb25zdCBhcHAgPSB0aGlzLnVzZXJTZXJ2aWNlLmZpbmRNZW51QnlTeXN0ZW1Db2RlKG1vYmlsZUFwcC5jaGlsZHJlbiwgc3lzdGVtQ29kZSk7XHJcbiAgICAgIGlmIChhcHApIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gYXBwLnRleHQ7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gYXBwLmNoaWxkcmVuIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubWVudXMgPSBncm91cHMuZmxhdE1hcChncm91cCA9PiBncm91cC5jaGlsZHJlbiB8fCBbXSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5Lyg6L+H5p2l55qE5qCH6aKY6KaG55uWXHJcbiAgICAgIGlmIChyZXMudGl0bGUpIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gcmVzLnRpdGxlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbmZvU2VydmljZS5nZXRTeXN0ZW1JbmZvKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubG9nb1VybCA9IHJlcy5tYXhMb2dvVXJsO1xyXG4gICAgICBpZiAocmVzLmNsaWVudEVuZCAmJiByZXMuY2xpZW50RW5kLmNvbG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IHJlcy5jbGllbnRFbmQuY29sb3I7XHJcbiAgICAgICAgdGhpcy5jb2xvckRvZGdlID0gdGhpcy5jb2xvclJnYmEodGhpcy5jb2xvciwgMC43MSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHJvdXRlckp1bXAoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaXRlbS5saW5rKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbS5hcHBVcmwpIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBpdGVtLmFwcFVybDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWNgeWFrei/m+WItuminOiJsuWAvOWHj+a3oVxyXG4gICAqIEBwYXJhbSB2YWx1ZSDpopzoibLlgLxcclxuICAgKiBAcGFyYW0gdHJhbnNwYXJlbmN5IOmAj+aYjuW6pjw9MVxyXG4gICAqL1xyXG4gIGNvbG9yUmdiYSh2YWx1ZSwgdHJhbnNwYXJlbmN5KSB7XHJcbiAgICAvLyAxNui/m+WItuminOiJsuWAvOeahOato+WImVxyXG4gICAgY29uc3QgcmVnID0gL14jKFswLTlhLWZBLWZdezN9fFswLTlhLWZBLWZdezZ9KSQvO1xyXG4gICAgLy8g5oqK6aKc6Imy5YC85Y+Y5oiQ5bCP5YaZXHJcbiAgICBsZXQgY29sb3IgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHJlZy50ZXN0KGNvbG9yKSkge1xyXG4gICAgICAvLyDlpoLmnpzlj6rmnInkuInkvY3nmoTlgLzvvIzpnIDlj5jmiJDlha3kvY3vvIzlpoLvvJojZmZmID0+ICNmZmZmZmZcclxuICAgICAgaWYgKGNvbG9yLmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICAgIGxldCBjb2xvck5ldyA9IFwiI1wiO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSArPSAxKSB7XHJcbiAgICAgICAgICBjb2xvck5ldyArPSBjb2xvci5zbGljZShpLCBpICsgMSkuY29uY2F0KGNvbG9yLnNsaWNlKGksIGkgKyAxKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbG9yID0gY29sb3JOZXc7XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aSE55CG5YWt5L2N55qE6aKc6Imy5YC877yM6L2s5Li6UkdCXHJcbiAgICAgIGNvbnN0IGNvbG9yQ2hhbmdlID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNzsgaSArPSAyKSB7XHJcbiAgICAgICAgY29sb3JDaGFuZ2UucHVzaChwYXJzZUludChcIjB4XCIgKyBjb2xvci5zbGljZShpLCBpICsgMikpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCJyZ2JhKFwiICsgY29sb3JDaGFuZ2Uuam9pbihcIixcIikgKyBcIixcIiArIHRyYW5zcGFyZW5jeSArIFwiKVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGNvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19