{"__symbolic":"module","version":4,"metadata":{"TiktokEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"icc-tiktok-editor","styles":[],"template":"<icc-msg-generator #msgtplgenerator [options]=\"options\" [hidden]=\"isAutoMath\"></icc-msg-generator>\r\n<app-tiktok-tpl-auto-match [tplList]=\"tplList\" *ngIf=\"isAutoMath\"></app-tiktok-tpl-auto-match>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":13,"character":37},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":13,"character":66},{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":13,"character":103}]}],"tplGenerator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["msgtplgenerator",{"static":false}]}]}],"ngOnInit":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"setDisabled":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"setSelectedTplData":[{"__symbolic":"method"}],"setAutoMathTpl":[{"__symbolic":"method"}],"cancelAutoMathTpl":[{"__symbolic":"method"}],"getMessageData":[{"__symbolic":"method"}],"getMobilePreviewData":[{"__symbolic":"method"}],"setChannelInfoByBizId":[{"__symbolic":"method"}],"setVideoUrl":[{"__symbolic":"method"}],"setImgUrl":[{"__symbolic":"method"}]}},"TiktokMobilePreviewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-tiktok-mobile-preview","styles":[],"template":"<p>tiktok-mobile-preview works!</p>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setData":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}},"TiktokModalDetailComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"icc-tiktok-modal-detail","styles":[],"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">{{ title || (isMo ? '上行内容' : '发送内容') }}</div>\r\n</div>\r\n<!-- 文本/模板 -->\r\n<div *ngIf=\"contentType === contentTypes.TEXT\" [innerHTML]=\"content | html\"></div>\r\n<!-- 图片 -->\r\n<icc-image-upload *ngIf=\"contentType === contentTypes.IMAGE\" [editable]=\"false\" [imgList]=\"content\" width=\"300\"> </icc-image-upload>\r\n<!-- 视频 -->\r\n<icc-video [disabled]=\"true\" *ngIf=\"contentType === contentTypes.VIDEO\" status=\"6\" [url]=\"content\" (closeModel)=\"closeModel()\"></icc-video>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":12,"character":29}]}],"ngOnInit":[{"__symbolic":"method"}],"closeModel":[{"__symbolic":"method"}]}},"TiktokTimelineContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"icc-tiktok-timeline-content","styles":[],"template":"<!-- 视频 -->\r\n<icc-video *ngIf=\"contentType === contentTypes.VIDEO\" [disabled]=\"true\" [url]=\"content\" [name]=\"!!name ? name : ''\"></icc-video>\r\n\r\n<!-- 图片 -->\r\n<icc-image-upload *ngIf=\"contentType === contentTypes.IMAGE\" [editable]=\"false\" [imgList]=\"content\" width=\"300\" [scene]=\"'timeline'\"> </icc-image-upload>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setData":[{"__symbolic":"method"}]}},"TiktokTplAuditComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"icc-tiktok-tpl-audit","template":"<section class=\"card\">\r\n  <p class=\"title\">抖音模板</p>\r\n  <div class=\"content\">\r\n    <ng-container *ngFor=\"let tpl of tplList; let i = index\">\r\n      <!--新增的模板 -->\r\n      <ng-container *ngIf=\"openEffect && tpl.type === operate['add']\">\r\n        <div class=\"item\">\r\n          <label class=\"item-name color-green\">模板名称：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"color-green\">{{ tpl.map.name.value }}</span>\r\n          </div>\r\n        </div>\r\n        <!-- <div class=\"item\" *ngIf=\"useTmplMethod !== 2\">\r\n          <label class=\"item-name color-green\">优先级：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"color-green\">{{ tpl.map.priority.value }}</span>\r\n          </div>\r\n        </div> -->\r\n        <div class=\"item\">\r\n          <label class=\"item-name color-green\">标题：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"color-green\">{{ tpl.map.title.value }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name color-green\">内容格式：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"color-green\">{{ tpl.map.realContentType.name }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name color-green\">内容：</label>\r\n          <div class=\"item-box auto-box border-green\">\r\n            <icc-video *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.value.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.value.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n        </div>\r\n        <div class=\"condition-wrapper\" *ngIf=\"tpl.useTmplMethod !== 2\">\r\n          <div class=\"item\" *ngIf=\"tpl.map.isDefault.value\">\r\n            <label class=\"item-name color-green\">默认执行：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-checkbox [(ngModel)]=\"tpl.map.isDefault.value\" disabled><span class=\"color-green\">是</span></label>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.value\">\r\n            <label class=\"item-name color-green\">执行条件：</label>\r\n            <div class=\"item-value\" style=\"width: 75%;\">\r\n              <icc-condition-table-audit [config]=\"tableConfig\" [tableData]=\"tpl.map.conditions.list\" [openEffect]=\"openEffect\"></icc-condition-table-audit>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.value && isRealConditionsOverOne(tpl.map.conditions.list)\">\r\n            <label class=\"item-name color-green\">逻辑关系：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-radio [ngModel]=\"true\" class=\"color-green\">{{ relationTypes[tpl.map.operateType.value] }}</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <nz-divider *ngIf=\"i < tplList.length - 1\" nzDashed=\"true\"></nz-divider>\r\n      </ng-container>\r\n      <!--未修改的模板 || 未打开修改标记 -->\r\n      <ng-container *ngIf=\"!openEffect || tpl.type === operate['normal']\">\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板名称：</label>\r\n          <div class=\"item-value\">\r\n            <span>{{ tpl.map.name.value }}</span>\r\n          </div>\r\n        </div>\r\n        <!-- <div class=\"item\" *ngIf=\"useTmplMethod !== 2\">\r\n          <label class=\"item-name\">优先级：</label>\r\n          <div class=\"item-value\">\r\n            <span>{{ tpl.map.priority.value }}</span>\r\n          </div>\r\n        </div> -->\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">标题：</label>\r\n          <div class=\"item-value\">\r\n            <span>{{ tpl.map.title.value }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">内容格式：</label>\r\n          <div class=\"item-value\">\r\n            <span>{{ tpl.map.realContentType.name }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板内容：</label>\r\n          <div class=\"item-box auto-box\">\r\n            <icc-video *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.value.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.value.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n        </div>\r\n        <div class=\"condition-wrapper\" *ngIf=\"tpl.useTmplMethod !== 2\">\r\n          <div class=\"item\" *ngIf=\"tpl.map.isDefault.value\">\r\n            <label class=\"item-name\">默认执行：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-checkbox [(ngModel)]=\"tpl.map.isDefault.value\" disabled><span>是</span></label>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.value\">\r\n            <label class=\"item-name\">执行条件：</label>\r\n            <div class=\"item-value\" style=\"width: 75%;\">\r\n              <icc-condition-table-audit [config]=\"tableConfig\" [tableData]=\"tpl.map.conditions.list\" [openEffect]=\"openEffect\"></icc-condition-table-audit>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.value && isRealConditionsOverOne(tpl.map.conditions.list)\">\r\n            <label class=\"item-name\">逻辑关系：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-radio [ngModel]=\"true\">{{ relationTypes[tpl.map.operateType.value] }}</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <nz-divider *ngIf=\"i < tplList.length - 1\" nzDashed=\"true\"></nz-divider>\r\n      </ng-container>\r\n      <!--删除的模板 -->\r\n      <ng-container *ngIf=\"openEffect && tpl.type === operate['delete']\">\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板名称：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"delete-line\">{{ tpl.map.name.oldValue }}</span>\r\n          </div>\r\n        </div>\r\n        <!-- <div class=\"item\" *ngIf=\"useTmplMethod !== 2\">\r\n          <label class=\"item-name\">优先级：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"delete-line\">{{ tpl.map.priority.oldValue }}</span>\r\n          </div>\r\n        </div> -->\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">标题：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"delete-line\">{{ tpl.map.title.oldValue }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">内容格式：</label>\r\n          <div class=\"item-value\">\r\n            <span class=\"delete-line\">{{ tpl.map.realContentType.name }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板内容：</label>\r\n          <div class=\"item-box auto-box delete-line\">\r\n            <icc-video *ngIf=\"tpl.map.mediaList.oldValue && tpl.map.mediaList.oldValue.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.oldValue.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.oldValue && tpl.map.mediaList.oldValue.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.oldValue.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n        </div>\r\n        <div class=\"condition-wrapper\" *ngIf=\"tpl.useTmplMethod !== 2\">\r\n          <div class=\"item\" *ngIf=\"tpl.map.isDefault.oldValue\">\r\n            <label class=\"item-name\">默认执行：</label>\r\n            <div class=\"item-value\">\r\n              <label class=\"delete-line\" nz-checkbox [(ngModel)]=\"tpl.map.isDefault.oldValue\" disabled><span class=\"color-default\">是</span></label>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.oldValue\">\r\n            <label class=\"item-name\">执行条件：</label>\r\n            <div class=\"item-value\" style=\"width: 75%;\">\r\n              <icc-condition-table-audit [config]=\"tableConfig\" [tableData]=\"tpl.map.conditions.list\" [openEffect]=\"openEffect\"></icc-condition-table-audit>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!tpl.map.isDefault.oldValue && isRealConditionsOverOne(tpl.map.conditions.list)\">\r\n            <label class=\"item-name\">逻辑关系：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-radio [ngModel]=\"true\" class=\"delete-line\">{{ relationTypes[tpl.map.operateType.oldValue] }}</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <nz-divider *ngIf=\"i < tplList.length - 1\" nzDashed=\"true\"></nz-divider>\r\n      </ng-container>\r\n      <!-- 存在修改的模板 -->\r\n      <ng-container *ngIf=\"openEffect && tpl.type === operate['update']\">\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板名称：</label>\r\n          <div class=\"item-value\">\r\n            <span *ngIf=\"tpl.map.name.type === operate.normal\">{{ tpl.map.name.value }}</span>\r\n            <span *ngIf=\"tpl.map.name.type === operate.update\" class=\"color-red\" [nzTooltipTitle]=\"tpl.map.name.oldValue\" nz-tooltip>{{ tpl.map.name.value }}</span>\r\n          </div>\r\n        </div>\r\n        <!-- <div class=\"item\" *ngIf=\"useTmplMethod !== 2\">\r\n          <label class=\"item-name\">优先级：</label>\r\n          <div class=\"item-value\">\r\n            <span *ngIf=\"tpl.map.priority.type === operate.normal\">{{ tpl.map.priority.value }}</span>\r\n            <span *ngIf=\"tpl.map.priority.type === operate.update\" class=\"color-red\" [nzTooltipTitle]=\"tpl.map.priority.oldValue\" nz-tooltip>{{ tpl.map.priority.value }}</span>\r\n          </div>\r\n        </div> -->\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">标题：</label>\r\n          <div class=\"item-value\">\r\n            <span *ngIf=\"tpl.map.title.type === operate.normal\">{{ tpl.map.title.value }}</span>\r\n            <span *ngIf=\"tpl.map.title.type === operate.update\" class=\"color-red\" [nzTooltipTitle]=\"tpl.map.title.oldValue\" nz-tooltip>{{ tpl.map.title.value }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">内容格式：</label>\r\n          <div class=\"item-value\">\r\n            <span *ngIf=\"tpl.map.realContentType.type === operate.normal\">{{ tpl.map.realContentType.name }}</span>\r\n            <span *ngIf=\"tpl.map.realContentType.type === operate.update\" class=\"color-red\">{{ tpl.map.realContentType.name }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"item\">\r\n          <label class=\"item-name\">模板内容：</label>\r\n          <div *ngIf=\"tpl.map.mediaList.type === operate.add\" class=\"item-box auto-box border-green\">\r\n            <icc-video *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.value.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.value.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n          <div *ngIf=\"tpl.map.mediaList.type === operate.normal\" class=\"item-box\">\r\n            <icc-video *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.value.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.value.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n          <div *ngIf=\"tpl.map.mediaList.type === operate.update\" class=\"item-box auto-box border-red\" [nzPopoverContent]=\"contentTemplate\" nz-popover>\r\n            <icc-video *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.value.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.value && tpl.map.mediaList.value.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.value.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </div>\r\n          <ng-template #contentTemplate>\r\n            <icc-video *ngIf=\"tpl.map.mediaList.oldValue && tpl.map.mediaList.oldValue.contentType === contentType.VIDEO\" [url]=\"tpl.map.mediaList.oldValue.mediaList[0].url\" [disabled]=\"true\"></icc-video>\r\n            <icc-image-upload *ngIf=\"tpl.map.mediaList.oldValue && tpl.map.mediaList.oldValue.contentType === contentType.IMAGE\" [imgList]=\"tpl.map.mediaList.oldValue.mediaList\" editable=\"false\"></icc-image-upload>\r\n          </ng-template>\r\n        </div>\r\n        <div class=\"condition-wrapper\" *ngIf=\"tpl.useTmplMethod !== 2\">\r\n          <div class=\"item\">\r\n            <label class=\"item-name\">默认执行：</label>\r\n            <div class=\"item-value\">\r\n              <label nz-checkbox [(ngModel)]=\"tpl.map.isDefault.value\" [ngClass]=\"{ 'delete-line': tpl.map.isDefault.type === operate['delete'] }\" disabled>\r\n                <span *ngIf=\"tpl.map.isDefault.type !== operate['update']\" class=\"color-default\">是</span>\r\n                <span *ngIf=\"tpl.map.isDefault.type === operate['update']\" class=\"color-red\" [nzTooltipTitle]=\"tpl.map.isDefault.oldValue ? '是' : '否'\" nz-tooltip>是</span>\r\n              </label>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!(tpl.map.isDefault.type === operate['normal'] && tpl.map.isDefault.value)\">\r\n            <label class=\"item-name\">执行条件：</label>\r\n            <div class=\"item-value\" style=\"width: 75%;\">\r\n              <icc-condition-table-audit [config]=\"tableConfig\" [tableData]=\"tpl.map.conditions.list\" [openEffect]=\"openEffect\"></icc-condition-table-audit>\r\n            </div>\r\n          </div>\r\n          <div class=\"item\" *ngIf=\"!(tpl.map.isDefault.type === operate['normal'] && tpl.map.isDefault.value)\">\r\n            <label class=\"item-name\">逻辑关系：</label>\r\n            <div class=\"item-value\">\r\n              <label\r\n                nz-radio\r\n                [ngModel]=\"true\"\r\n                *ngIf=\"tpl.map.operateType.type !== operate['update']\"\r\n                [ngClass]=\"{\r\n                  'delete-line': tpl.map.operateType.type === operate['delete'],\r\n                  'color-green': tpl.map.operateType.type === operate['add']\r\n                }\"\r\n              >\r\n                {{ relationTypes[tpl.map.operateType.value] }}\r\n              </label>\r\n              <label nz-radio [ngModel]=\"true\" *ngIf=\"tpl.map.operateType.type === operate['update']\" class=\"color-red\" [nzTooltipTitle]=\"relationTypes[tpl.map.operateType.oldValue]\" nz-tooltip>\r\n                {{ relationTypes[tpl.map.operateType.value] }}\r\n              </label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <nz-divider *ngIf=\"i < tplList.length - 1\" nzDashed=\"true\"></nz-divider>\r\n      </ng-container>\r\n    </ng-container>\r\n  </div>\r\n</section>\r\n","styles":[".card{width:100%;margin-bottom:20px;background:#fff;border:1px solid #e8e8e8}.card .title{position:relative;display:flex;align-items:center;justify-content:space-between;height:60px;margin-bottom:0;padding:0 20px;color:#49536e;font-weight:600;font-size:18px;border-bottom:1px solid #e8e8e8}.card .title .wenhao{position:absolute;top:18px;right:145px;color:#49536e;font-size:18px;cursor:pointer}.card .title .wenhao:hover{color:#37ba9d}.content{padding:20px 25px}.content p{margin-bottom:0}.content .color-red{color:#fd605e!important;cursor:pointer}.content .color-default{color:#49536e}.content .bg-red{padding:5px 10px;background:#ffeded!important}.content .color-green{color:#2dbb2d!important}.content .bg-green{padding:5px 10px;background:#edf6ef!important}.content .bg-default{padding:5px 10px;background:#f3f4f9!important}.content .arrow{position:relative;margin-right:35px!important}.content .arrow::after{position:absolute;top:0;right:-34px;width:0;height:0;border-color:transparent transparent transparent #f3f4f9;border-style:solid;border-width:17px;content:''}.content .arrow-red::after{border-color:transparent transparent transparent #ffeded!important}.content .arrow-green::after{border-color:transparent transparent transparent #edf6ef!important}.content .line-before-default{position:relative;margin-left:40px!important}.content .line-before-default::before{position:absolute;top:0;left:-20px;width:1px;height:100%;background:rgba(73,83,110,.6);content:''}.content .line-before-red{position:relative;margin-left:40px!important}.content .line-before-red::before{position:absolute;top:0;left:-20px;width:1px;height:100%;background:#fd605e;content:''}.content .line-before-green{position:relative;margin-left:40px!important}.content .line-before-green::before{position:absolute;top:0;left:-20px;width:1px;height:100%;background:#62b673;content:''}.item{display:flex;margin-bottom:20px}.item .item-name{width:120px;margin-right:5px;text-align:right}.item .item-value{display:flex;flex-wrap:wrap;align-items:center}.item .item-value .box-span{margin:0 12px 8px 0;padding:0 20px;border-radius:2px}.item .item-value .box-span-default{color:#49536e;background-color:#fff;border:1px solid #ccc}.item .item-value .box-span-gray{color:#49536e;background:#f5f5f5;border:1px solid #e8e8e8}.item .item-value .box-span-red{color:#fd605e;background:#fff6f7;border:1px solid #fd605e;cursor:pointer}.item .item-value .box-span-green{color:#2dbb2d;background:#edf6ef;border:1px solid #62b673}.item .item-value .center-text{margin:0 8px}.item .item-value .type-span{display:flex;align-items:center;margin-right:20px}.item .item-value .type-span .span-icon{margin-right:6px}.item .item-value .span-char{margin-right:10px;margin-left:-10px}.item .item-box{width:75%;min-height:100px;padding:20px;word-break:break-all;background:#f3f4f9;border:1px solid #e8e8e8;border-radius:4px}.item .item-box .config-item{padding:10px}.item .item-box .config-item .config-title{margin:5px 3px}.item .item-box .inner-title{display:inline-block;width:88px;padding-right:10px;text-align:right}.item .item-box .link{text-decoration:underline}.item .auto-box{width:auto}.item .border-green{border-color:#2dbb2d}.item .border-red{border-color:#fd605e}.delete-line{position:relative;margin-left:5px!important}.delete-line::after{position:absolute;top:50%;left:-10px;width:calc(100% + 20px);height:1px;background:rgba(73,83,110,.6);content:''}nz-divider{margin:40px 0;border-color:#c3c3c3}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setData":[{"__symbolic":"method"}],"switchDisplayStatus":[{"__symbolic":"method"}],"isRealConditionsOverOne":[{"__symbolic":"method"}]}},"TiktokTplAutoMatchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-tiktok-tpl-auto-match","styles":[],"template":"<div *ngFor=\"let item of viewList\" style=\"width: 100%;\">\r\n  <p style=\"width: 80%; margin: 5px 0;font-size: 16px;font-weight: bold;\">\r\n    {{ item.name }}\r\n    <span>\r\n      <img src=\"./assets/images/btnIcon/btn_eye_green.png\" alt=\"查看发送策略\" style=\"margin-left: 10px;transform: translateY(-2px);cursor: pointer\" nz-popover [nzPopoverTitle]=\"titleTemplate\" [nzPopoverContent]=\"contentTemplate\" nzPopoverPlacement=\"topLeft\" />\r\n      <ng-template #titleTemplate>发送策略</ng-template>\r\n      <ng-template #contentTemplate>\r\n        <div style=\"margin-bottom: 10px;\">\r\n          <span style=\"font-weight: bold\">默认执行：</span>\r\n          {{ item.isDefault ? '是' : '否' }}\r\n        </div>\r\n        <div *ngIf=\"!item.isDefault\">\r\n          <div style=\"margin-bottom: 10px;font-weight: bold;\">\r\n            执行条件:\r\n          </div>\r\n          <div style=\"width:500px\">\r\n            <app-condition [conditions]=\"item.conditions || []\" [mode]=\"'view'\"></app-condition>\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n    </span>\r\n  </p>\r\n  <textarea nz-input disabled=\"true\" [(ngModel)]=\"item.content\" rows=\"5\" maxlength=\"500\"></textarea>\r\n</div>\r\n<div *ngIf=\"!viewList || !viewList.length\" style=\"text-align: center;color: #a7a7a7;margin-top: 20px;\">\r\n  无模板数据\r\n</div>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"tplList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"parseData":[{"__symbolic":"method"}]}},"TiktokTplDetailComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-tiktok-tpl-detail","template":"<div *ngFor=\"let template of data.templates; index as tIndex\" [id]=\"template.htmlId\" class=\"biz-type-item\">\r\n  <!--优先级-->\r\n  <div class=\"flag-box\" *ngIf=\"data.index != MSG_TYPE.TIKTOK.type\">\r\n    <img src=\"assets/images/others/flag.png\" alt=\"\" />\r\n    <span>{{ template.priority }}</span>\r\n  </div>\r\n  <div class=\"content\">\r\n    <div class=\"content-item\">\r\n      <span class=\"span-title\">模版名称 : </span>\r\n      <span class=\"span-content\">{{ template.name }}</span>\r\n    </div>\r\n    <div class=\"content-item\">\r\n      <span class=\"span-title\">标题 : </span>\r\n      <span class=\"span-content\">{{ template.content.title }}</span>\r\n    </div>\r\n    <div class=\"content-item\">\r\n      <span class=\"span-title\">内容格式 : </span>\r\n      <span class=\"span-content\">{{ template.content.contentType === 3 ? '图片' : template.content.contentType === 4 ? '视频' : '' }}</span>\r\n    </div>\r\n    <div class=\"content-item\">\r\n      <span class=\"span-title\">模版内容 : </span>\r\n      <div class=\"span-box\" *ngIf=\"template.content.contentType == _MSG_CONTENT_TYPE.TEXT\">\r\n        <span class=\"span-content\">{{ template.content.content }}</span>\r\n      </div>\r\n      <span class=\"span-content\" *ngIf=\"template.content.contentType == _MSG_CONTENT_TYPE.IMAGE\">\r\n        <icc-image-upload [editable]=\"false\" [imgList]=\"template.content.mediaList\"></icc-image-upload>\r\n      </span>\r\n      <span class=\"span-content\" *ngIf=\"template.content.contentType == _MSG_CONTENT_TYPE.VIDEO\">\r\n        <icc-video [disabled]=\"true\" [url]=\"template.content.mediaList[0].url\"></icc-video>\r\n      </span>\r\n    </div>\r\n    <div class=\"condition-wrapper\" *ngIf=\"data.useTmplMethod !== '2'\">\r\n      <div class=\"content-item\">\r\n        <span class=\"span-title\">默认执行 : </span>\r\n        <span class=\"span-content\">{{ template.isDefault === true ? '是' : '否' }}</span>\r\n      </div>\r\n      <div class=\"content-item\" *ngIf=\"template.isDefault === false\">\r\n        <span class=\"span-title\">执行条件 : </span>\r\n        <app-condition style=\"width:70%\" [conditions]=\"template.conditions\" [mode]=\"'view'\"></app-condition>\r\n      </div>\r\n      <div class=\"content-item\" *ngIf=\"template.isDefault === false && template.conditions.length > 1\">\r\n        <span class=\"span-title\">逻辑关系 : </span>\r\n        <nz-radio-group [nzDisabled]=\"true\" [(ngModel)]=\"template.operateType\" name=\"operateType\">\r\n          <label nz-radio nzValue=\"1\">“与”关系</label>\r\n          <label nz-radio nzValue=\"2\">“或”关系</label>\r\n        </nz-radio-group>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[".biz-type-item:not(:last-child){border-bottom:1px solid #e8e8e8}.flag-box{float:left;position:relative;z-index:11}.flag-box span{display:inline-block;position:absolute;left:0;top:5px;width:100%;text-align:center;color:#fff}.content{padding:45px 80px 25px}.content-item{display:flex;justify-content:flex-start;font-size:14px}.content-item .span-title{display:inline-block;margin-right:10px;min-width:70px;text-align:right;color:#49536e}.content-item .span-content{display:inline-block;color:#9ea8c8}.content-item:not(:last-child){margin-bottom:20px}.span-box{padding:10px;border:1px solid #e8e8e8;border-radius:4px;width:75%;min-height:100px;color:#9ea8c8}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setData":[{"__symbolic":"method"}]}},"TiktokTplEditComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"icc-tiktok-tpl-edit","styles":[],"template":"<icc-tpl-header [type]=\"type\" [template]=\"standardTemplate\" (update)=\"updateHandle()\">\r\n  <img class=\"biz-type-icon\" src=\"{{ _MSGTYPES.MT.TIKTOK.icon }}\" alt=\"\" />\r\n</icc-tpl-header>\r\n\r\n<form #form=\"ngForm\" nz-form>\r\n  <div *ngFor=\"let item of source.templates; index as i\" class=\"biz-type-item\">\r\n    <!--优先级-->\r\n    <div class=\"flag-box\" *ngIf=\"source.useTmplMethod == 1\">\r\n      <img src=\"assets/images/others/flag.png\" alt=\"\" />\r\n      <span>{{ item.priority }}</span>\r\n    </div>\r\n\r\n    <!-- 操作栏 -->\r\n    <icc-tpl-operate [index]=\"i\" [type]=\"type\" [valid]=\"form.valid\" [template]=\"standardTemplate\" (update)=\"updateHandle()\"></icc-tpl-operate>\r\n\r\n    <!-- 模板名称 -->\r\n    <icc-tpl-name [index]=\"i\" [type]=\"type\"></icc-tpl-name>\r\n\r\n    <!-- START 定制化部分 -->\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\" nzRequired>标题</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"10\" [nzErrorTip]=\"titleTips\">\r\n        <input nz-input [(ngModel)]=\"item.content.title\" placeholder=\"标题长度1~55字符\" maxlength=\"55\" name=\"title{{ i }}\" required />\r\n      </nz-form-control>\r\n      <ng-template #titleTips let-control>\r\n        <ng-container *ngIf=\"control.hasError('required')\">\r\n          标题不能为空\r\n        </ng-container>\r\n      </ng-template>\r\n    </nz-form-item>\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\" nzRequired>\r\n        <span>\r\n          内容\r\n          <i nz-icon nz-tooltip nzTooltipTitle=\"若视频与图片均上传了内容，仅保持选中格式的内容。\" nzType=\"question-circle\" nzTheme=\"outline\"></i>\r\n        </span>\r\n      </nz-form-label>\r\n      <nz-form-control [nzSpan]=\"15\">\r\n        <icc-media-editor [content]=\"item.content\" [uploadUrl]=\"uploadUrl\" [mediaDownUrl]=\"mediaDownParams\" [showArry]=\"[0, 1, 1, 0]\"> </icc-media-editor>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <!-- END 定制化部分 -->\r\n  </div>\r\n</form>\r\n"}]}],"members":{"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":51,"character":3},"arguments":["form",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"TemplateService","line":53,"character":39},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":53,"character":79}]}],"setFormData":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"processTemplate":[{"__symbolic":"method"}],"updateHandle":[{"__symbolic":"method"}],"cleanupDirty":[{"__symbolic":"method"}]}},"SocialTiktokComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-social-tiktok","template":"<router-outlet></router-outlet>","styles":[]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social"}},"TiktokAccountComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-tiktok-account","template":"<div class=\"wrapper\">\n  <div class=\"table-outter-box\">\n    <nz-card [nzBordered]=\"false\">\n      <pre *ngIf=\"isShowInfo\" class=\"show-info\"><i class=\"info-icon\" nz-icon nzType=\"exclamation-circle\" nzTheme=\"twotone\" [nzTwotoneColor]=\"'#ffa600'\"></i>注：初始化时，需要间隔2天后，方可获取全部数据，且仅提供粉丝数大于100的用户数据<i nz-icon nzType=\"close-circle\"  nzTheme=\"outline\" class=\"close-icon\" (click)=\"closeInfo()\"></i></pre>\n      <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n        <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n            <nz-form-item>\n              <nz-form-label nzFor=\"tiktokofficialAccountId\">抖音号</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.channelId\" [nzShowSearch]=\"true\" nzPlaceHolder=\"请选择抖音号\" name=\"selectId\">\n                  <nz-option *ngFor=\"let item of searchTikTokNums; let idx = index\" [nzLabel]=\"item.label\" [nzValue]=\"item.value\"></nz-option>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\">\n            <nz-form-item class=\"form-item\">\n              <nz-form-label nzSpan=\"2\" class=\"text\">统计时间</nz-form-label>\n              <nz-form-control nzSpan=\"20\" nzValidateStatus=\"{{ isRangeError ? 'error' : 'success' }}\" [nzErrorTip]=\"nzErrorTip\">\n                <range-picker name=\"date\" [(ngModel)]=\"searchOptions.start\" [(ngModelEnd)]=\"searchOptions.end\" [nzFormat]=\"'yyyy-MM-dd'\" [ngModelOptions]=\"{ standalone: true }\" [nzAllowClear]=\"false\" [nzDisabledDate]=\"disabledDate\" (nzOnOk)=\"handleDateChange()\"></range-picker>\n                <ng-template #nzErrorTip let-control>\n                  <ng-container *ngFor=\"let error of validateRange.errorList\">\n                    <ng-container *ngIf=\"error.key === validateRange.errorKey\">{{ error.value }}</ng-container>\n                  </ng-container>\n                </ng-template>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col [nzSpan]=\"8\" [ngStyle]=\"{ 'justify-content': 'flex-start' }\" class=\"search-btns\">\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n              <span>查询</span>\n            </icc-button>\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n              <span>重置</span>\n            </icc-button>\n            <!-- <i nz-icon nzType=\"info-circle\" nzTheme=\"twotone\" (click)=\"showInfo()\" style=\"font-size: 20px;line-height: 42px; float: right;margin-right: 20px;cursor: pointer;\"></i> -->\n          </div>\n        </div>\n      </form>\n      <st #st [widthMode]=\"{ type: 'strict' }\" [data]=\"stData\" [columns]=\"columns\" [res]=\"res\" [req]=\"req\" [page]=\"{ show: false, total: false }\" [noResult]=\"noResultRef\">\n        <ng-template #noResultRef>\n          <div class=\"st-empty-box\">\n            <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n            <p class=\"empty-text\">抱歉，查询无此数据</p>\n          </div>\n        </ng-template>\n      </st>\n      <div class=\"pagination-wrapper\" *ngIf=\"stData.length > 0\">\n        <nz-pagination [nzShowTotal]=\"totalTemplate\" [(nzPageIndex)]=\"currentIndex\" [nzTotal]=\"total\" [nzPageSize]=\"pageSize\" style=\"margin-top: 20px;float:right;\" (nzPageIndexChange)=\"pageChange()\"> </nz-pagination>\n        <ng-template #totalTemplate let-total> 共 {{ total }} 条 </ng-template>\n      </div>\n    </nz-card>\n  </div>\n</div>\n","styles":[":host ::ng-deep .ant-form-explain{position:absolute}.alert-tips{margin-bottom:18px}::ng-deep .ant-calendar-time-picker-btn{display:none!important}.show-info{padding:8px 15px 4px;border:1px solid #ffe58f;border-radius:4px;background-color:#fffbe6;font-size:14px;color:#48516c}.show-info .info-icon{font-size:16px;transform:translateX(-5px)}.show-info .close-icon{float:right;cursor:pointer;font-size:16px;color:#ecb141;transform:translateY(2px)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":16,"character":30},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":16,"character":52},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":16,"character":88},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":16,"character":116},{"__symbolic":"reference","module":"ng-zorro-antd/message","name":"NzMessageService","line":16,"character":152}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":20,"character":3},"arguments":["st",{"static":false}]}]}],"ngOnInit":[{"__symbolic":"method"}],"requestTikTokNums":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"handleDateChange":[{"__symbolic":"method"}],"selectDate":[{"__symbolic":"method"}],"closeInfo":[{"__symbolic":"method"}],"pageChange":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-account"}},"TiktokAnalyzeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-tiktok-analyze","template":"<div class=\"main\">\n  <!-- 头部样式 -->\n  <div class=\"social-header\">\n    <div class=\"img-box\">\n      <img src=\"../../../../assets/images/report/logo.png\" />\n    </div>\n    <span class=\"tiktok-name\">{{ tiktokName }}</span>\n    <span class=\"tiktok-tag\">抖音号: {{ tiktokNum }}</span>\n    <icc-button class=\"back-btn\" [btnType]=\"'hollow'\" (btnClick)=\"goBack()\"><span>返回</span></icc-button>\n  </div>\n  <div class=\"menu\">\n    <ul nz-menu nzMode=\"horizontal\">\n      <li *ngFor=\"let m of menus\" nz-menu-item [nzSelected]=\"m.selected\" (click)=\"to(m)\">{{ m.title }}</li>\n    </ul>\n  </div>\n  <div class=\"content\">\n    <router-outlet></router-outlet>\n  </div>\n</div>\n","styles":[".social-header{position:relative;display:flex;align-items:center;justify-content:flex-start;width:100%;height:70px;margin:0 auto 15px;padding-left:10px;color:#fff;font-size:18px;line-height:70px;background-image:url(../../../../../assets/images/report/header-bg.png);background-repeat:no-repeat;background-position:center;background-size:100%;border-radius:2px}.social-header .back-btn{position:absolute;right:5px}.social-header .img-box{display:flex;align-items:center;justify-content:center;width:50px;height:50px;margin-right:15px;padding-left:3px;background-color:#feffff;border:2px solid #afc9fa;border-radius:3px}.social-header .tiktok-tag{display:inline-block;height:24px;margin-left:15px;padding:0 10px;color:#48516a;font-size:10px;line-height:24px;text-align:center;background-color:#feffff;border-radius:12px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":24,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":24,"character":51},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":24,"character":82},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":24,"character":114},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":24,"character":141}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"setActive":[{"__symbolic":"method"}],"to":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-analyze"}},"ActiveDaysComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-active-days","template":"<div class=\"title\">粉丝活跃天数分布</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length > 0\">\n  <div class=\"chart-el\"></div>\n  <div class=\"rank-wrapper\">\n    <ul class=\"rank-list\">\n      <li class=\"rank-row rank-header\">\n        <span class=\"row-item\">排名</span>\n        <span class=\"row-item\">活跃天数</span>\n        <span class=\"row-item\">占比</span>\n        <span class=\"row-item\">粉丝数</span>\n      </li>\n      <li class=\"rank-row\" *ngFor=\"let item of rankList; let i = index\">\n        <span class=\"row-item\"><img [src]=\"'./assets/images/home/ranking' + (i + 1) + '.png'\"/></span>\n        <span class=\"row-item text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.ratio }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.value }}</span>\n      </li>\n    </ul>\n  </div>\n</div>\n<!-- 空数据 -->\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!data || data.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host{display:block}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.chart-wrapper{width:100%;height:400px;display:flex;justify-content:flex-start;align-items:center}.chart-wrapper .chart-el{float:left;width:60%;height:100%}.chart-wrapper .rank-wrapper{float:right;width:40%}.chart-wrapper .rank-wrapper .rank-list{width:370px;list-style:none;padding:0;border:1px solid #ebecf0;border-bottom:0}.chart-wrapper .rank-wrapper .rank-list .rank-row{border-bottom:1px solid #ebecf0;height:30px;line-height:30px}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item{text-align:center;display:inline-block;width:25%}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item img{width:30px;margin-top:-22px}.chart-wrapper .rank-wrapper .rank-list .rank-header{background-color:#ebecf0;font-weight:600}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":10,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"getRank":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-active"}},"FansAgeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-fans-age","template":"<div class=\"title\">粉丝年龄分布</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length > 0\">\n  <div class=\"chart-el\"></div>\n  <div class=\"rank-wrapper\">\n    <ul class=\"rank-list\">\n      <li class=\"rank-row rank-header\">\n        <span class=\"row-item\">排名</span>\n        <span class=\"row-item\">年龄段</span>\n        <span class=\"row-item\">占比</span>\n        <span class=\"row-item\">粉丝数</span>\n      </li>\n      <li class=\"rank-row\" *ngFor=\"let item of rankList; let i = index\">\n        <span class=\"row-item\"><img [src]=\"'./assets/images/home/ranking' + (i + 1) + '.png'\"/></span>\n        <span class=\"row-item text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.ratio }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.value }}</span>\n      </li>\n    </ul>\n  </div>\n</div>\n<!-- 空数据 -->\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!data || data.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host{display:block}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.chart-wrapper{width:100%;height:400px;display:flex;justify-content:flex-start;align-items:center}.chart-wrapper .chart-el{float:left;width:60%;height:100%}.chart-wrapper .rank-wrapper{float:right;width:40%}.chart-wrapper .rank-wrapper .rank-list{width:370px;list-style:none;padding:0;border:1px solid #ebecf0;border-bottom:0}.chart-wrapper .rank-wrapper .rank-list .rank-row{border-bottom:1px solid #ebecf0;height:30px;line-height:30px}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item{text-align:center;display:inline-block;width:25%}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item img{width:30px;margin-top:-22px}.chart-wrapper .rank-wrapper .rank-list .rank-header{background-color:#ebecf0;font-weight:600}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":10,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"getRank":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-age"}},"FansAreaComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-fans-area","template":"<div class=\"title\">\n  粉丝地域分布\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length > 0\">\n  <div class=\"chart-el\"></div>\n  <div class=\"rank-wrapper\">\n    <ul class=\"rank-list\">\n      <li class=\"rank-row rank-header\">\n        <span class=\"row-item\">排名</span>\n        <span class=\"row-item\">省份</span>\n        <span class=\"row-item\">占比</span>\n        <span class=\"row-item\">粉丝数</span>\n      </li>\n      <li class=\"rank-row\" *ngFor=\"let item of rankList; let i = index\">\n        <span class=\"row-item\"><img [src]=\"'./assets/images/home/ranking' + (i + 1) + '.png'\"/></span>\n        <span class=\"row-item text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.ratio }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.value }}</span>\n      </li>\n    </ul>\n  </div>\n</div>\n<!-- 空数据 -->\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!data || data.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host{display:block}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.chart-wrapper{width:100%;height:600px;display:flex;justify-content:flex-start;align-items:center}.chart-wrapper .chart-el{float:left;width:70%;height:100%}.chart-wrapper .rank-wrapper{float:right;width:30%;transform:translateX(-80px)}.chart-wrapper .rank-wrapper .rank-list{width:370px;list-style:none;padding:0;border:1px solid #ebecf0;border-bottom:0}.chart-wrapper .rank-wrapper .rank-list .rank-row{border-bottom:1px solid #ebecf0;height:30px;line-height:30px}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item{text-align:center;display:inline-block;width:82px}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item img{width:30px;margin-top:-22px}.chart-wrapper .rank-wrapper .rank-list .rank-header{background-color:#ebecf0;font-weight:600}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":12,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"formatChartData":[{"__symbolic":"method"}],"getRank":[{"__symbolic":"method"}],"changeCountIndex":[{"__symbolic":"method"}],"selfAdaptionRange":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-area"}},"FansGenderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-fans-gender","template":"<div class=\"title\">\n  粉丝性别分布\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"wrapper\" *ngIf=\"pieData && pieData.length\">\n  <div class=\"imgWrapper\">\n    <div class=\"imgItemMale\">\n      <div class=\"floor\" [ngStyle]=\"{ 'left.px': maleData.floorPx }\"></div>\n      <img class=\"maleImg\" src=\"assets/images/others/male.png\" alt=\"\" />\n    </div>\n    <div class=\"imgItemFemale\">\n      <div class=\"floor\" [ngStyle]=\"{ 'left.px': femaleData.floorPx }\"></div>\n      <img class=\"femaleImg\" src=\"assets/images/others/female.png\" alt=\"\" />\n    </div>\n  </div>\n  <div class=\"infoWrapper\">\n    <div class=\"infoItem male\">\n      <span class=\"ratioSpan\">{{ maleData.ratio }}</span>\n      <span class=\"countSpan\">男 {{ maleData.value }}人</span>\n    </div>\n    <div class=\"infoItem female\">\n      <span class=\"ratioSpan\">{{ femaleData.ratio }}</span>\n      <span class=\"countSpan\">女 {{ femaleData.value }}人</span>\n    </div>\n  </div>\n</div>\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!pieData || pieData.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host{display:block}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.wrapper{padding-left:100px;height:250px;display:flex;justify-content:flex-start;align-items:center}.wrapper .imgWrapper{width:400px}.wrapper .imgWrapper .imgItemMale{height:65px;position:relative;background-color:#6eb4ff;margin-bottom:20px;overflow:hidden}.wrapper .imgWrapper .imgItemMale .floor{width:400px;height:65px;background-color:#d8dce4;position:absolute;left:0}.wrapper .imgWrapper .imgItemMale .maleImg{width:400px;height:65px;position:absolute;left:0;top:0}.wrapper .imgWrapper .imgItemFemale{height:65px;position:relative;background-color:#ff828a;overflow:hidden}.wrapper .imgWrapper .imgItemFemale .floor{width:400px;height:65px;background-color:#d8dce4;position:absolute;left:0}.wrapper .imgWrapper .imgItemFemale .femaleImg{width:400px;height:65px;position:absolute;left:0;top:0}.wrapper .infoWrapper{width:30%;margin-left:50px}.wrapper .infoWrapper .infoItem{margin-bottom:10px;width:100px;height:65px;display:flex;flex-direction:column;justify-content:center;align-items:center}.wrapper .infoWrapper .infoItem .ratioSpan{font-size:30px;font-weight:700}.wrapper .male{color:#6eb4ff}.wrapper .female{color:#ff828a}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":9,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"getMaleAndFemaleData":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-gender"}},"FansInterestComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-fans-interest","template":"<div class=\"title\">粉丝兴趣分布</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length > 0\">\n  <div class=\"chart-el\"></div>\n  <div class=\"rank-wrapper\">\n    <ul class=\"rank-list\">\n      <li class=\"rank-row rank-header\">\n        <span class=\"row-item\">排名</span>\n        <span class=\"row-item\">兴趣</span>\n        <span class=\"row-item\">占比</span>\n        <span class=\"row-item\">粉丝数</span>\n      </li>\n      <li class=\"rank-row\" *ngFor=\"let item of rankList; let i = index\">\n        <span class=\"row-item\"><img [src]=\"'./assets/images/home/ranking' + (i + 1) + '.png'\"/></span>\n        <span class=\"row-item text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.ratio }}</span>\n        <span class=\"row-item text-ellipsis\">{{ item.value }}</span>\n      </li>\n    </ul>\n  </div>\n</div>\n<!-- 空数据 -->\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!data || data.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host{display:block}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.chart-wrapper{width:100%;height:400px;display:flex;justify-content:flex-start;align-items:center}.chart-wrapper .chart-el{float:left;width:60%;height:100%}.chart-wrapper .rank-wrapper{float:right;width:40%}.chart-wrapper .rank-wrapper .rank-list{width:370px;list-style:none;padding:0;border:1px solid #ebecf0;border-bottom:0}.chart-wrapper .rank-wrapper .rank-list .rank-row{border-bottom:1px solid #ebecf0;height:30px;line-height:30px}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item{text-align:center;display:inline-block;width:25%}.chart-wrapper .rank-wrapper .rank-list .rank-row .row-item img{width:30px;margin-top:-22px}.chart-wrapper .rank-wrapper .rank-list .rank-header{background-color:#ebecf0;font-weight:600}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":10,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"getRank":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-interest"}},"TiktokFansTrendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-tiktok-fans-trend","template":"<div class=\"title\">\n  数据趋势\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n\n<form nz-form #validForm=\"ngForm\" class=\"date-form\">\n  <nz-form-item class=\"form-item\">\n    <nz-form-label nzSpan=\"2\" class=\"text\">数据时间</nz-form-label>\n    <nz-form-control nzSpan=\"6\" nzValidateStatus=\"{{ isRangeError ? 'error' : 'success' }}\" [nzErrorTip]=\"nzErrorTip\">\n      <range-picker name=\"date\" [(ngModel)]=\"searchOptions.start\" [(ngModelEnd)]=\"searchOptions.end\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [nzDisabledDate]=\"disabledDate\" (nzOnOk)=\"handleDateChange()\"></range-picker>\n      <ng-template #nzErrorTip let-control>\n        <ng-container *ngFor=\"let error of validateRange.errorList\">\n          <ng-container *ngIf=\"error.key === validateRange.errorKey\">{{ error.value }}</ng-container>\n        </ng-container>\n      </ng-template>\n    </nz-form-control>\n  </nz-form-item>\n</form>\n\n<div class=\"options\">\n  <div class=\"option-item\">\n    <div class=\"text\">数据指标:</div>\n    <div class=\"select-area\">\n      <icc-tags [notDelete]=\"true\" [theme]=\"item.isSelected ? 'cyan' : 'gray'\" (click)=\"handleClickDITag($event)\" *ngFor=\"let item of dataIndicatorList\">{{ item.name }}</icc-tags>\n    </div>\n  </div>\n</div>\n<!-- 趋势折线图 -->\n<div class=\"chartTitle\">\n  <div class=\"block\"></div>\n  <div class=\"text\">趋势图</div>\n</div>\n<div class=\"chart-el\" *ngIf=\"dataSource && dataSource.length\"></div>\n<!-- 空数据 -->\n<app-empty-data [text]=\"'粉丝数不足100，暂无法获取数据'\" *ngIf=\"!dataSource || !dataSource.length\" class=\"empty-data\"></app-empty-data>\n","styles":[":host ::ng-deep .ant-form-item-label>label{color:#9ea8c8}:host ::ng-deep .ant-form-explain{position:absolute}:host ::ng-deep .ant-calendar-picker{width:400px!important}.date-form{margin-top:30px}.date-form .form-item{margin-bottom:0}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.options{width:100%;display:flex;flex-direction:column;align-items:center;padding-left:60px;margin-bottom:10px;color:#9ea8c8}.options .option-item{width:100%;display:flex;justify-content:flex-start;align-items:center;margin-top:25px}.options .option-item .text{font-size:14px;margin-right:10px}.options .option-item icc-tags{cursor:pointer}.chartTitle{width:100%;height:25px;line-height:25px;padding-left:50px;display:flex;justify-content:flex-start;align-items:center;transform:translateY(20px)}.chartTitle .block{height:25px;width:5px;background-color:#5ea1e7;margin-right:15px}.chartTitle .text{color:#49536e;font-size:18px}.chart-el{width:100%;height:400px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":15,"character":26},{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":15,"character":56},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":15,"character":80},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":15,"character":108},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":15,"character":147}]}],"channelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"handleClickDITag":[{"__symbolic":"method"}],"handleDateChange":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"formatData":[{"__symbolic":"method"}],"formatDisplayDate":[{"__symbolic":"method"}],"selectDate":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans-trend"}},"TiktokFansComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-tiktok-fans","template":"<div class=\"wrapper\">\n  <div class=\"countContent\">\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">粉丝总数</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of fansCountList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n    </div>\n    <nz-divider nzType=\"vertical\" class=\"divider-in\"></nz-divider>\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">昨日新增粉丝数</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of yIncreasedFansList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n    </div>\n    <!-- <nz-divider nzType=\"vertical\" class=\"divider-in\"></nz-divider> -->\n    <!--     <div class=\"text-area\">\n      <div class=\"totalCountName\">昨日取关粉丝数</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of yUnfollowFansList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n    </div> -->\n  </div>\n</div>\n<!-- 粉丝数据趋势 -->\n<div class=\"wrapper\">\n  <app-tiktok-fans-trend class=\"tiktok-fans-trend\" [channelId]=\"channelId\"></app-tiktok-fans-trend>\n</div>\n<!-- 粉丝活跃天数分布 -->\n<div class=\"wrapper\">\n  <app-active-days class=\"active-days\" [data]=\"activeDayDistribution\"></app-active-days>\n</div>\n<!-- 粉丝兴趣分布 -->\n<div class=\"wrapper\">\n  <app-fans-interest class=\"fans-interest\" [data]=\"interestDistribution\"></app-fans-interest>\n</div>\n<!-- 粉丝年龄分布 -->\n<div class=\"wrapper\">\n  <app-fans-age class=\"fans-age\" [data]=\"ageDistribution\"></app-fans-age>\n</div>\n<!-- 粉丝性别分布 -->\n<div class=\"wrapper\">\n  <app-fans-gender class=\"fans-gender\" [data]=\"genderDistribution\"></app-fans-gender>\n</div>\n<!-- 粉丝地域分布 -->\n<div class=\"wrapper\">\n  <app-fans-area class=\"fans-area\" [data]=\"areaDistribution\"></app-fans-area>\n</div>\n","styles":[".wrapper{display:flex;background:#fff;min-width:1024px;border-radius:3px;margin-bottom:20px}.wrapper .countContent{width:100%;display:flex;justify-content:space-around;align-items:center}.wrapper .countContent .text-area{display:flex;flex-direction:column;align-items:center;width:30%;color:#49536e;margin:20px auto 10px}.wrapper .countContent .text-area .number-area{text-align:center;height:50px;line-height:50px}.wrapper .countContent .text-area .number-area .number-box{width:42px;height:50px;color:#007fff;font-weight:700;font-size:25px;line-height:50px;text-align:center}.wrapper .countContent .text-area .number-area .dot-box{width:42px;height:50px;color:#007fff;font-weight:500;font-size:25px;line-height:50px;text-align:center}.wrapper .countContent .text-area .rangeCount{color:#9ea8c8;font-size:12px}.wrapper .countContent .divider-in{border-width:0 0 0 1px;height:75%;border-color:#dadada}.wrapper .active-days,.wrapper .fans-age,.wrapper .fans-area,.wrapper .fans-gender,.wrapper .fans-interest,.wrapper .tiktok-fans-trend{width:100%}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":24,"character":29},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":24,"character":59},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":24,"character":85}]}],"handleCount":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-fans"}},"TiktokDataTrendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-tiktok-data-trend","template":"<div class=\"title\">\n  数据趋势\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n\n<form nz-form #validForm=\"ngForm\" class=\"date-form\">\n  <nz-form-item class=\"form-item\">\n    <nz-form-label nzSpan=\"2\" class=\"text\">数据时间</nz-form-label>\n    <nz-form-control nzSpan=\"6\" nzValidateStatus=\"{{ isRangeError ? 'error' : 'success' }}\" [nzErrorTip]=\"nzErrorTip\">\n      <range-picker name=\"date\" [(ngModel)]=\"searchOptions.start\" [(ngModelEnd)]=\"searchOptions.end\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [nzDisabledDate]=\"disabledDate\" (nzOnOk)=\"handleDateChange()\"></range-picker>\n      <ng-template #nzErrorTip let-control>\n        <ng-container *ngFor=\"let error of validateRange.errorList\">\n          <ng-container *ngIf=\"error.key === validateRange.errorKey\">{{ error.value }}</ng-container>\n        </ng-container>\n      </ng-template>\n    </nz-form-control>\n  </nz-form-item>\n</form>\n\n<div class=\"options\">\n  <div class=\"option-item\">\n    <div class=\"text\">数据指标 :</div>\n    <div class=\"select-area\">\n      <icc-tags [notDelete]=\"true\" [theme]=\"item.isSelected ? 'cyan' : 'gray'\" (click)=\"handleClickDITag($event)\" *ngFor=\"let item of dataIndicatorList\">{{ item.name }}</icc-tags>\n    </div>\n  </div>\n</div>\n<!-- 趋势折线图 -->\n<div class=\"chartTitle\">\n  <div class=\"block\"></div>\n  <div class=\"text\">趋势图</div>\n</div>\n<div class=\"chart-el\" *ngIf=\"dataSource && dataSource.length\"></div>\n<!-- 空数据 -->\n<app-empty-data *ngIf=\"!dataSource || !dataSource.length\" class=\"empty-data\"></app-empty-data>\n","styles":[":host ::ng-deep .ant-form-item-label>label{color:#9ea8c8}:host ::ng-deep .ant-form-explain{position:absolute}:host ::ng-deep .ant-calendar-picker{width:400px!important}.date-form{margin-top:30px}.date-form .form-item{margin-bottom:0}.title{height:70px;padding-left:20px;color:#49536e;font-weight:700;font-size:18px;line-height:70px}.divider-in{width:100%;margin:0}.options{display:flex;flex-direction:column;align-items:center;width:100%;margin-bottom:10px;padding-left:60px;color:#9ea8c8}.options .option-item{display:flex;align-items:center;justify-content:flex-start;width:100%;margin-top:25px}.options .option-item .text{margin-right:10px;font-size:14px}.options .option-item icc-tags{cursor:pointer}.chartTitle{display:flex;align-items:center;justify-content:flex-start;width:100%;height:25px;padding-left:50px;line-height:25px;transform:translateY(20px)}.chartTitle .block{width:5px;height:25px;margin-right:15px;background-color:#5ea1e7}.chartTitle .text{color:#49536e;font-size:18px}.empty-data{display:flex;align-items:center;justify-content:center;margin-top:60px;margin-bottom:0;transform:translateX(-20px)}.chart-el{width:100%;height:400px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":14,"character":26},{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":14,"character":56},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":80},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":14,"character":116}]}],"channelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"handleClickDITag":[{"__symbolic":"method"}],"handleDateChange":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"selectDate":[{"__symbolic":"method"}],"formatData":[{"__symbolic":"method"}],"formatDisplayDate":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-video-trend"}},"VideoPublishFrequencyComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-video-publish-frequency","template":"<div class=\"title\">\n  视频发布频率\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<form nz-form #validForm=\"ngForm\" class=\"date-form\">\n  <nz-form-item class=\"form-item\">\n    <nz-form-label nzSpan=\"2\" class=\"text\">数据时间</nz-form-label>\n    <nz-form-control nzSpan=\"6\" nzValidateStatus=\"{{ isRangeError ? 'error' : 'success' }}\" [nzErrorTip]=\"nzErrorTip\">\n      <range-picker name=\"date\" [(ngModel)]=\"searchOptions.start\" [(ngModelEnd)]=\"searchOptions.end\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [nzDisabledDate]=\"disabledDate\" (nzOnOk)=\"handleDateChange()\"></range-picker>\n      <ng-template #nzErrorTip let-control>\n        <ng-container *ngFor=\"let error of validateRange.errorList\">\n          <ng-container *ngIf=\"error.key === validateRange.errorKey\">{{ error.value }}</ng-container>\n        </ng-container>\n      </ng-template>\n    </nz-form-control>\n  </nz-form-item>\n</form>\n<div class=\"chart-el\" *ngIf=\"dataSource && dataSource.length\"></div>\n<!-- 空数据 -->\n<app-empty-data *ngIf=\"!dataSource || !dataSource.length\" class=\"empty-data\"></app-empty-data>\n","styles":[":host ::ng-deep .ant-form-item-label>label{color:#9ea8c8}:host ::ng-deep .ant-form-explain{position:absolute}:host ::ng-deep .ant-calendar-picker{width:400px!important}.date-form{margin-top:30px}.date-form .form-item{margin-bottom:0}.title{height:70px;line-height:70px;font-size:18px;font-weight:700;color:#49536e;padding-left:20px}.divider-in{width:100%;margin:0}.options{width:100%;display:flex;flex-direction:column;align-items:center;padding-left:70px;margin-bottom:10px;color:#9ea8c8}.options .option-item{width:100%;display:flex;justify-content:flex-start;align-items:center;margin-top:25px}.options .option-item .text{font-size:14px;margin-right:10px}.chart-el{width:100%;height:400px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":14,"character":26},{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":14,"character":56},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":80},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":14,"character":116}]}],"channelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"dateList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"countList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"handleDateChange":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"selectDate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"formatData":[{"__symbolic":"method"}],"formatDisplayDate":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-video-publish"}},"VideoStatisticsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-video-statistics","template":"<div class=\"title\">\n  <div class=\"title-text\">视频统计</div>\n  <div class=\"sort-options\">\n    <form nz-form #validForm=\"ngForm\" class=\"date-form\">\n      <nz-form-item class=\"form-item\">\n        <nz-form-label nzSpan=\"2\" class=\"text\">数据时间</nz-form-label>\n        <nz-form-control nzSpan=\"10\" nzValidateStatus=\"{{ isRangeError ? 'error' : 'success' }}\" [nzErrorTip]=\"nzErrorTip\">\n          <range-picker name=\"date\" [(ngModel)]=\"searchOptions.start\" [(ngModelEnd)]=\"searchOptions.end\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [nzDisabledDate]=\"disabledDate\" (nzOnOk)=\"handleDateChange()\"></range-picker>\n          <ng-template #nzErrorTip let-control>\n            <ng-container *ngFor=\"let error of validateRange.errorList\">\n              <ng-container *ngIf=\"error.key === validateRange.errorKey\">{{ error.value }}</ng-container>\n            </ng-container>\n          </ng-template>\n        </nz-form-control>\n      </nz-form-item>\n    </form>\n    <div class=\"sort-wrapper\">\n      <div [ngClass]=\"{ option: !type.isSelected, selectedOption: type.isSelected }\" *ngFor=\"let type of sortTypeList\">\n        <span (click)=\"sortByOption($event)\">{{ type.name }}</span\n        ><img class=\"typeImg\" src=\"../../../../../../assets/images/others/icon-blue-grey-sort18x18.png\" *ngIf=\"type.isSelected && type.isAsc\" /><img class=\"typeImg\" src=\"../../../../../../assets/images/others/icon-grey-bule-sort18x18.png\" *ngIf=\"type.isSelected && !type.isAsc\" /><img class=\"typeImg\" src=\"../../../../../../assets/images/others/icon-grey-sort18x18.png\" *ngIf=\"!type.isSelected\" />\n      </div>\n    </div>\n  </div>\n</div>\n<nz-divider class=\"divider-in\"></nz-divider>\n<div class=\"content-wrapper\" *ngIf=\"displayItemList && displayItemList.length > 0\">\n  <div class=\"item\" *ngFor=\"let i of displayItemList\">\n    <div class=\"itemContent\">\n      <div class=\"imgWrap\">\n        <a [href]=\"i.videoUrl\" target=\"_blank\">\n          <img class=\"image\" [src]=\"i.imageUrl\" />\n        </a>\n      </div>\n      <div class=\"text\">\n        <a class=\"text-title\" [href]=\"i.videoUrl\" target=\"_blank\">{{ i.title }}</a>\n        <div class=\"text-content\">\n          <span class=\"text-info\">播放: {{ i.playCount }}</span>\n          <span class=\"text-info\">点赞: {{ i.likeCount }}</span>\n          <span class=\"text-info\">评论: {{ i.commentCount }}</span>\n          <span class=\"text-info\">分享: {{ i.sharedCount }}</span>\n        </div>\n      </div>\n      <div class=\"releaseTime\">{{ i.releaseTime }}</div>\n    </div>\n    <nz-divider class=\"divider-in\"></nz-divider>\n  </div>\n  <div class=\"loadWrap\">\n    <div class=\"loadMore\" (click)=\"loadMore()\" *ngIf=\"!noMore\">加载更多</div>\n    <div class=\"noMore\" *ngIf=\"noMore\">没有更多...</div>\n  </div>\n</div>\n<app-empty-data *ngIf=\"!displayItemList || displayItemList.length === 0\" class=\"empty-data\"></app-empty-data>\n","styles":[":host ::ng-deep .ant-form-item-label>label{color:#9ea8c8}:host ::ng-deep .ant-form-explain{position:absolute;transform:translate(410px,-28px)}:host ::ng-deep .ant-calendar-picker{width:400px!important;min-width:400px}.date-form .form-item{margin-bottom:0}.title{display:flex;flex-direction:column;padding-left:20px;padding-right:20px}.title .title-text{margin-bottom:-12px;width:100%;height:70px;line-height:70px;font-weight:700;font-size:18px;color:#49536e}.title .sort-options{margin-bottom:10px;height:40px}.title .sort-options .date-form{float:left;width:50%}.title .sort-options .date-form .text{margin-right:10px;font-size:14px;color:#9ea8c8}.title .sort-options .sort-wrapper{display:flex;float:right;justify-content:flex-start;align-items:center;height:32px;transform:translateY(7px)}.title .sort-options .sort-wrapper .option{margin-left:20px;font-size:14px;color:#9ea8c8}.title .sort-options .sort-wrapper .option span{cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.title .sort-options .sort-wrapper .selectedOption{margin-left:20px;font-size:14px;color:#5283f7}.title .sort-options .sort-wrapper .selectedOption span{cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.typeImg{width:14px;height:14px;transform:translate(5px,-1px)}.divider-in{margin:0;width:100%}.item{width:100%;height:100px}.item .itemContent{display:flex;position:relative;justify-content:flex-start;align-items:center;padding-left:20px;width:100%;height:99%}.item .itemContent .imgWrap{display:flex;overflow:hidden;justify-content:center;align-items:center;margin-right:15px;border-radius:3px;width:100px;height:70px;background-color:#ddd}.item .itemContent .imgWrap .image{width:100px;cursor:pointer;transition:.4s}.item .itemContent .imgWrap .image:hover{transform:scale(1.2)}.item .itemContent .text{width:500px;height:70px}.item .itemContent .text .text-title{display:inline-block;margin-top:5px;height:30px;line-height:30px;font-size:16px}.item .itemContent .text .text-content{height:30px;line-height:30px;font-size:16px}.item .itemContent .text .text-content .text-info{margin-right:20px;font-size:14px;color:#9ea8c8}.item .itemContent .releaseTime{position:absolute;right:20px;top:20px;font-size:14px;color:#9ea8c8}.loadWrap{display:flex;justify-content:center;align-items:center;width:100%;height:80px}.loadWrap .loadMore{border-radius:3px;width:300px;height:40px;background-color:#f2f5f8;cursor:pointer;line-height:40px;text-align:center;font-weight:700;color:#9ea8c8}.loadWrap .loadMore:hover{background-color:#ebedf1;transition:.5s}.loadWrap .noMore{width:300px;height:40px;line-height:40px;text-align:center;font-weight:700;color:#9ea8c8}.asc,.desc{width:20px;height:20px}.desc{transform:translateX(-10px)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":14,"character":32},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":14,"character":65},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":94}]}],"channelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"itemList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"formatData":[{"__symbolic":"method"}],"loadMore":[{"__symbolic":"method"}],"sortByOption":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"selectDate":[{"__symbolic":"method"}],"handleDateChange":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-video-statistics"}},"VideoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-video","template":"<!-- 头部总量显示 -->\n<div class=\"wrapper\">\n  <div class=\"countContent\">\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">总播放量</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of playnumList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n      <div class=\"rangeCount\">昨日: {{ displayYPC }}</div>\n      <div class=\"rangeCount\">本月: {{ displayMPC }}</div>\n    </div>\n    <nz-divider nzType=\"vertical\" class=\"divider-in\"></nz-divider>\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">总点赞量</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of likenumList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n      <div class=\"rangeCount\">昨日: {{ displayYLC }}</div>\n      <div class=\"rangeCount\">本月: {{ displayMLC }}</div>\n    </div>\n    <nz-divider nzType=\"vertical\" class=\"divider-in\"></nz-divider>\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">总评论量</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of commentnumList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n      <div class=\"rangeCount\">昨日: {{ displayYCC }}</div>\n      <div class=\"rangeCount\">本月: {{ displayMCC }}</div>\n    </div>\n    <nz-divider nzType=\"vertical\" class=\"divider-in\"></nz-divider>\n    <div class=\"text-area\">\n      <div class=\"totalCountName\">总分享量</div>\n      <div class=\"number-area\">\n        <ng-container *ngFor=\"let numStr of sharednumList\">\n          <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\n          <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\n        </ng-container>\n      </div>\n      <div class=\"rangeCount\">昨日: {{ displayYSC }}</div>\n      <div class=\"rangeCount\">本月: {{ displayMSC }}</div>\n    </div>\n  </div>\n</div>\n<!-- 数据趋势 -->\n<div class=\"wrapper\">\n  <app-tiktok-data-trend class=\"tiktok-data-trend\" [channelId]=\"channelId\"></app-tiktok-data-trend>\n</div>\n<!-- 视频发布频率 -->\n<div class=\"wrapper\">\n  <app-video-publish-frequency class=\"video-publish-frequency\" [channelId]=\"channelId\"></app-video-publish-frequency>\n</div>\n<!-- 视频统计 -->\n<div class=\"wrapper\">\n  <app-video-statistics class=\"video-statistics\" [channelId]=\"channelId\"></app-video-statistics>\n</div>\n","styles":[".wrapper{background:#fff;min-width:1024px;border-radius:3px;margin-bottom:20px}.wrapper .countContent{width:100%;display:flex;justify-content:space-around;align-items:center}.wrapper .countContent .text-area{display:flex;flex-direction:column;align-items:center;width:24%;color:#49536e;margin:10px auto}.wrapper .countContent .text-area .number-area{text-align:center;height:50px;line-height:50px}.wrapper .countContent .text-area .number-area .number-box{width:42px;height:50px;color:#007fff;font-weight:700;font-size:25px;line-height:50px;text-align:center}.wrapper .countContent .text-area .number-area .dot-box{width:42px;height:50px;color:#007fff;font-weight:500;font-size:25px;line-height:50px;text-align:center}.wrapper .countContent .text-area .rangeCount{color:#9ea8c8;font-size:12px}.wrapper .countContent .divider-in{border-width:0 0 0 2px;height:80px;border-color:#dadada}.wrapper .tiktok-data-trend,.wrapper .video-publish-frequency,.wrapper .video-statistics{width:100%}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":63,"character":29},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":63,"character":59}]}],"ngOnInit":[{"__symbolic":"method"}],"handleCount":[{"__symbolic":"method"}],"handlePreviousCount":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-social-video"}},"SendDetailTiktokListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"sendDetail","styles":[],"template":"<div class=\"main\">\n  <div class=\"icc-page-inner-header\" *ngIf=\"queryParams.isDetail\">\n      <icc-button [btnType]=\"'hollow'\" (btnClick)=\"back()\"><span>返回</span></icc-button><span class=\"title-name\">{{ queryParams.batchName }}</span>\n  </div>\n\n  <div class=\"menu\">\n    <ul nz-menu nzMode=\"horizontal\">\n      <li *ngFor=\"let m of menus\" nz-menu-item [nzSelected]=\"m.selected\" (click)=\"to(m)\">{{ m.title }}</li>\n    </ul>\n  </div>\n  <div class=\"content\">\n    <router-outlet></router-outlet>\n  </div>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":18,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":19,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":20,"character":16},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":21,"character":24},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":22,"character":19}]}],"to":[{"__symbolic":"method"}],"back":[{"__symbolic":"method"}],"setActive":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-sendDetail"}},"SendDetailTiktokCommentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"app-msgRecord-sendDetail-tiktok","template":"<nz-card [nzBordered]=\"true\">\n  <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n    <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n      <!-- <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"acceptResult\">接收结果</nz-form-label>\n          <nz-form-control>\n            <nz-select [(ngModel)]=\"searchOptions.acceptResults.acceptResult\" name=\"acceptResult\" [nzShowSearch]=\"true\">\n              <nz-option *ngFor=\"let result of searchOptions.acceptResults.list; let idx = index\"\n                [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>\n            </nz-select>\n          </nz-form-control>\n        </nz-form-item>\n      </div> -->\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"packName\">批次名称</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.packName\" name=\"packName\" placeholder=\"请输入完整的批次名称\" id=\"packName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"batchName\">发送人</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.userName\" name=\"batchName\" placeholder=\"请输入发送人\" id=\"userName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"phone\">提交时间</nz-form-label>\n          <nz-form-control>\n            <!-- <nz-range-picker [(ngModel)]=\"searchOptions.dateRange\" [ngModelOptions]=\"{ standalone: true }\" nzShowTime> </nz-range-picker> -->\n            <range-picker name=\"date\" [(ngModel)]=\"searchOptions.dateRange[0]\" [(ngModelEnd)]=\"searchOptions.dateRange[1]\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [ngModelOptions]=\"{ standalone: true }\" (nzOnOk)=\"onOkDate()\" (nzOnOpenChange)=\"onOkDate()\"></range-picker>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <!--      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">-->\n      <!--        <nz-form-item>-->\n      <!--          <nz-form-label nzFor=\"openId\">评论ID</nz-form-label>-->\n      <!--          <nz-form-control>-->\n      <!--            <input nz-input [(ngModel)]=\"searchOptions.phone\" name=\"phone\" placeholder=\"请输入评论Id\" id=\"openId\" />-->\n      <!--          </nz-form-control>-->\n      <!--        </nz-form-item>-->\n      <!--      </div>-->\n\n      <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\" class=\"search-btns\" [ngStyle]=\"{ 'justify-content': expandForm ? 'flex-end' : 'flex-start' }\">\n        <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n          <span>查询</span>\n        </icc-button>\n        <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n          <span>重置</span>\n        </icc-button>\n        <a class=\"expand-box\" (click)=\"expandForm = !expandForm\">\n          {{ expandForm ? '收起' : '展开' }}\n          <i nz-icon [nzType]=\"expandForm ? 'caret-up' : 'caret-down'\"></i>\n        </a>\n      </div>\n    </div>\n  </form>\n\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"export()\" acl [acl-ability]=\"'sendDetail.tiktok.comment.export'\">\n    <img src=\"./assets/images/btnIcon/btn_export_white.png\" alt=\"\" />\n    <span>导出</span>\n  </icc-button>\n\n  <!-- <div *ngIf=\"queryParams.isDetail\" class=\"my-md\">\n    <nz-alert [nzType]=\"'info'\" [nzShowIcon]=\"true\" [nzMessage]=\"message\">\n      <ng-template #message>\n        接收量\n        <strong class=\"text-primary\">{{ queryParams.sentCount }}</strong>\n        &nbsp;&nbsp; 成功量\n        <strong class=\"text-primary\">{{ queryParams.successCount }}</strong>\n        &nbsp;&nbsp; 失败量\n        <strong class=\"text-primary\">{{ queryParams.failCount }}</strong>\n        &nbsp;&nbsp; 未知量\n        <strong class=\"text-primary\">{{ queryParams.unknownCount }}</strong>\n        &nbsp;&nbsp; 上行量\n        <strong class=\"text-primary\">{{ queryParams.moCount }}</strong>\n      </ng-template>\n    </nz-alert>\n  </div> -->\n  <div class=\"my-md\">\n    <st #st [widthMode]=\"{ type: 'strict' }\" [scroll]=\"{ x: '1600px' }\" [data]=\"url\" (change)=\"stChange($event)\" [columns]=\"columns\" [noResult]=\"noResultRef\" [req]=\"req\" [res]=\"res\">\n      <ng-template #noResultRef>\n        <div class=\"st-empty-box\">\n          <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n          <p class=\"empty-text\">抱歉，查询无此数据</p>\n        </div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-batchName\" let-item let-index=\"index\">\n        <div style=\"text-overflow: ellipsis;overflow: hidden; width: 218px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.batchName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.batchName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-userName\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 80px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.userName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.userName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-terminalId\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 200px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.terminalId\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.terminalId }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-submitOriginResultStr\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 100px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.submitOriginResultStr\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.submitOriginResultStr }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-channelName\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 120px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.channelName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.channelName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-content\" let-item let-index=\"index\">\n        <icc-table-text [text]=\"getConmment(item.content)\" [width]=\"118\"></icc-table-text>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-account\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 120px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.account\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.account }}</div>\n      </ng-template>\n      <ng-template st-row=\"ticketStateResult\" let-item let-index=\"index\">\n        <span nz-tooltip [nzTooltipTitle]=\"item.ticketState === 2 ? '提交成功' : item.submitOriginResult\">\n          <nz-badge *ngIf=\"item.ticketState === 1\" nzStatus=\"processing\" nzText=\"等待提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 2\" nzStatus=\"success\" nzText=\"提交成功\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 3\" nzStatus=\"default\" nzText=\"取消提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 4\" nzStatus=\"error\" nzText=\"提交失败\"></nz-badge>\n        </span>\n      </ng-template>\n    </st>\n  </div>\n</nz-card>\n\n<!-- 抖音详情 -->\n<!-- <icc-msg-content\n    *ngIf=\"isOpenContentDetail\"\n    isModal=\"true\"\n    title=\"抖音详情\"\n    [message]=\"detailItem\"\n    (close)=\"_handleClose()\"\n></icc-msg-content> -->\n\n<!-- 抖音详情 -->\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" nzTitle=\"抖音详情\" nzWidth=\"800\" (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <div class=\"modal-inner-box\">\n    <h3 class=\"content-title\">{{ detailItem.title }}</h3>\n    <icc-msg-content class=\"content-box\" *ngIf=\"isOpenContentDetail\" [message]=\"detailItem\" (close)=\"_handleClose()\"> </icc-msg-content>\n  </div>\n</nz-modal>\n<!--\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" [nzTitle]=\"this.currentTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==3\">\n    <icc-image [src]=\"imagUrl\"></icc-image>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==4\">\n    <icc-video disabled=true [url]=\"mediaUrl\" style=\"margin-left: calc(50% - 150px);display: inline-block\">\n    </icc-video>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==2\">\n    {{currentTemplate.content}}\n  </ng-container>\n</nz-modal> -->\n\n<!-- <nz-modal [(nzVisible)]=\"isOpenVideoDetail\" [nzTitle]=\"this.videoTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose('video')\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <icc-video [url]=\"mediaUrl\"></icc-video>\n</nz-modal> -->\n\n<nz-modal [(nzVisible)]=\"isOpenExport\" nzTitle=\"提示\" (nzOnCancel)=\"closeExport()\" [nzFooter]=\"modalFooter\">\n  <p>\n    <icc-image src=\"./assets/images/send/export-icon.gif\" style=\"vertical-align: middle;\"></icc-image>\n    <label style=\"margin-left: 10px;\">数据正在导出中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goExport()\">【导入/导出管理】</a>查看操作结果。</p>\n  <ng-template #modalFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeExport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n","styles":[":host ::ng-deep .search-btns{display:flex;align-items:center}:host ::ng-deep .search-btns .expand-box{margin-left:10px;font-size:12px;color:#49536e}:host ::ng-deep .search-btns .expand-box:hover{color:#37ba9d}:host ::ng-deep .clear{clear:both}:host ::ng-deep .ant-pagination-total-text{display:none}:host ::ng-deep .ant-card-bordered{border:none!important}.item{display:flex;margin-bottom:20px}.item .item-name{margin-right:5px;width:100px;text-align:right}.item .item-value{display:flex;flex-wrap:wrap;align-items:center;flex:1}.item .item-value .box-span{margin:0 12px 8px 0;padding:0 20px;border-radius:2px}.item .item-value .center-text{margin:0 8px}.item .item-value .type-span{display:flex;align-items:center;margin-right:20px;padding:5px 10px;background:#f3f4f9}.item .item-value .type-span .span-icon{margin-right:6px}.item .item-value .span-char{margin-left:-10px;margin-right:10px}.item .item-box{border:1px solid #e8e8e8;width:75%;min-height:100px}.item .item-box .config-item{padding:10px}.item .item-box .config-item .config-title{margin:5px 3px}.msg-arrow{position:relative;margin-right:35px!important}.msg-arrow::after{position:absolute;right:-34px;top:0;border-width:17px;border-style:solid;border-color:transparent transparent transparent #f3f4f9;width:0;height:0;content:\"\"}::ng-deep .ant-calendar-time-picker-btn{display:none!important}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":26,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":27,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":28,"character":19},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":29,"character":20},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":30,"character":27}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":81,"character":3},"arguments":["st",{"static":false}]}]}],"_handleClose":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"isJsonString":[{"__symbolic":"method"}],"queryStatistical":[{"__symbolic":"method"}],"multiLineDisplay":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"goExport":[{"__symbolic":"method"}],"closeExport":[{"__symbolic":"method"}],"export":[{"__symbolic":"method"}],"onOkDate":[{"__symbolic":"method"}],"getConmment":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-sendDetail-comment"}},"SendDetailTiktokGroupSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"app-msgRecord-sendDetail-tiktok","template":"<nz-card [nzBordered]=\"true\">\n  <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n    <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n      <!-- <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"acceptResult\">接收结果</nz-form-label>\n          <nz-form-control>\n            <nz-select [(ngModel)]=\"searchOptions.acceptResults.acceptResult\" name=\"acceptResult\" [nzShowSearch]=\"true\">\n              <nz-option *ngFor=\"let result of searchOptions.acceptResults.list; let idx = index\"\n                [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>\n            </nz-select>\n          </nz-form-control>\n        </nz-form-item>\n      </div> -->\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"packName\"><span style=\"display: inline-block;width: 70px;\">批次名称</span></nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.packName\" name=\"packName\" placeholder=\"请输入完整的批次名称\" id=\"packName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"sendResult\">发布结果</nz-form-label>\n          <nz-form-control>\n            <nz-select [(ngModel)]=\"searchOptions.sendResults.sendResult\" name=\"sendResult\" [nzShowSearch]=\"true\">\n              <nz-option *ngFor=\"let result of searchOptions.sendResults.list; let idx = index\" [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>\n            </nz-select>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"phone\">提交时间</nz-form-label>\n          <nz-form-control>\n            <!-- <nz-range-picker [(ngModel)]=\"searchOptions.dateRange\" [ngModelOptions]=\"{ standalone: true }\" nzShowTime> </nz-range-picker> -->\n            <range-picker name=\"date\" [(ngModel)]=\"searchOptions.dateRange[0]\" [(ngModelEnd)]=\"searchOptions.dateRange[1]\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [ngModelOptions]=\"{ standalone: true }\" (nzOnOk)=\"onOkDate()\" (nzOnOpenChange)=\"onOkDate()\"></range-picker>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"batchName\">发送抖音号</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.channelName\" name=\"batchName\" placeholder=\"请输入发送抖音号\" id=\"channelName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\" class=\"search-btns\" [ngStyle]=\"{ 'justify-content': expandForm ? 'flex-end' : 'flex-start' }\">\n        <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n          <span>查询</span>\n        </icc-button>\n        <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n          <span>重置</span>\n        </icc-button>\n        <a class=\"expand-box\" (click)=\"expandForm = !expandForm\">\n          {{ expandForm ? '收起' : '展开' }}\n          <i nz-icon [nzType]=\"expandForm ? 'caret-up' : 'caret-down'\"></i>\n        </a>\n      </div>\n    </div>\n  </form>\n\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"export()\" acl [acl-ability]=\"'sendDetail.tiktok.broadcast.export'\">\n    <img src=\"./assets/images/btnIcon/btn_export_white.png\" alt=\"\" />\n    <span>导出</span>\n  </icc-button>\n\n  <!--  <div *ngIf=\"queryParams.isDetail\" class=\"my-md\">-->\n  <!--    <nz-alert [nzType]=\"'info'\" [nzShowIcon]=\"true\" [nzMessage]=\"message\">-->\n  <!--      <ng-template #message>-->\n  <!--        接收量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.sentCount }}</strong>-->\n  <!--        &nbsp;&nbsp; 提交量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.validTickets }}</strong>-->\n  <!--        &nbsp;&nbsp; 成功量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.successCount }}</strong>-->\n  <!--        &nbsp;&nbsp; 失败量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.failCount }}</strong>-->\n  <!--        &nbsp;&nbsp; 未知量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.unknownCount }}</strong>-->\n  <!--        &nbsp;&nbsp; 上行量-->\n  <!--        <strong class=\"text-primary\">{{ queryParams.moCount }}</strong>-->\n  <!--      </ng-template>-->\n  <!--    </nz-alert>-->\n  <!--  </div>-->\n  <div class=\"my-md\">\n    <st #st [widthMode]=\"{ type: 'strict' }\" [scroll]=\"{ x: '1600px' }\" [data]=\"url\" (change)=\"stChange($event)\" [columns]=\"columns\" [noResult]=\"noResultRef\" [req]=\"req\" [res]=\"res\">\n      <ng-template #noResultRef>\n        <div class=\"st-empty-box\">\n          <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n          <p class=\"empty-text\">抱歉，查询无此数据</p>\n        </div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-batchName\" let-item let-index=\"index\">\n        <div style=\"text-overflow: ellipsis;overflow: hidden; width: 218px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.batchName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.batchName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-channelName\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 120px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.channelName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.channelName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-submitOriginResultStr\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 100px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.submitOriginResultStr\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.submitOriginResultStr }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-title\" let-item let-index=\"index\">\n        <icc-table-text [text]=\"getTitle(item.content)\" [width]=\"118\"></icc-table-text>\n      </ng-template>\n\n      <!-- <ng-template st-row=\"tpl-title\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 110px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.title\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.title }}</div>\n      </ng-template> -->\n\n      <ng-template st-row=\"ticketStateResult\" let-item let-index=\"index\">\n        <span nz-tooltip [nzTooltipTitle]=\"item.ticketState === 2 ? '提交成功' : item.submitOriginResult\">\n          <nz-badge *ngIf=\"item.ticketState === 1\" nzStatus=\"processing\" nzText=\"等待提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 2\" nzStatus=\"success\" nzText=\"提交成功\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 3\" nzStatus=\"default\" nzText=\"取消提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 4\" nzStatus=\"error\" nzText=\"提交失败\"></nz-badge>\n        </span>\n      </ng-template>\n    </st>\n  </div>\n</nz-card>\n\n<!-- 抖音详情 -->\n<!-- <icc-msg-content\n    *ngIf=\"isOpenContentDetail\"\n    isModal=\"true\"\n    title=\"抖音详情\"\n    [message]=\"detailItem\"\n    (close)=\"_handleClose()\"\n></icc-msg-content> -->\n\n<!-- 抖音详情 -->\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" nzTitle=\"抖音详情\" nzWidth=\"800\" (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <div class=\"modal-inner-box\">\n    <h3 class=\"content-title\">{{ detailItem.title }}</h3>\n    <icc-msg-content class=\"content-box\" *ngIf=\"isOpenContentDetail\" [message]=\"detailItem\" (close)=\"_handleClose()\"> </icc-msg-content>\n  </div>\n</nz-modal>\n<!--\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" [nzTitle]=\"this.currentTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==3\">\n    <icc-image [src]=\"imagUrl\"></icc-image>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==4\">\n    <icc-video disabled=true [url]=\"mediaUrl\" style=\"margin-left: calc(50% - 150px);display: inline-block\">\n    </icc-video>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==2\">\n    {{currentTemplate.content}}\n  </ng-container>\n</nz-modal> -->\n\n<!-- <nz-modal [(nzVisible)]=\"isOpenVideoDetail\" [nzTitle]=\"this.videoTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose('video')\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <icc-video [url]=\"mediaUrl\"></icc-video>\n</nz-modal> -->\n\n<nz-modal [(nzVisible)]=\"isOpenExport\" nzTitle=\"提示\" (nzOnCancel)=\"closeExport()\" [nzFooter]=\"modalFooter\">\n  <p>\n    <icc-image src=\"./assets/images/send/export-icon.gif\" style=\"vertical-align: middle;\"></icc-image>\n    <label style=\"margin-left: 10px;\">数据正在导出中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goExport()\">【导入/导出管理】</a>查看操作结果。</p>\n  <ng-template #modalFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeExport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n","styles":[":host ::ng-deep .search-btns{display:flex;align-items:center}:host ::ng-deep .search-btns .expand-box{margin-left:10px;font-size:12px;color:#49536e}:host ::ng-deep .search-btns .expand-box:hover{color:#37ba9d}:host ::ng-deep .clear{clear:both}:host ::ng-deep .ant-pagination-total-text{display:none}:host ::ng-deep .ant-card-bordered{border:none!important}.item{display:flex;margin-bottom:20px}.item .item-name{margin-right:5px;width:100px;text-align:right}.item .item-value{display:flex;flex-wrap:wrap;align-items:center;flex:1}.item .item-value .box-span{margin:0 12px 8px 0;padding:0 20px;border-radius:2px}.item .item-value .center-text{margin:0 8px}.item .item-value .type-span{display:flex;align-items:center;margin-right:20px;padding:5px 10px;background:#f3f4f9}.item .item-value .type-span .span-icon{margin-right:6px}.item .item-value .span-char{margin-left:-10px;margin-right:10px}.item .item-box{border:1px solid #e8e8e8;width:75%;min-height:100px}.item .item-box .config-item{padding:10px}.item .item-box .config-item .config-title{margin:5px 3px}.msg-arrow{position:relative;margin-right:35px!important}.msg-arrow::after{position:absolute;right:-34px;top:0;border-width:17px;border-style:solid;border-color:transparent transparent transparent #f3f4f9;width:0;height:0;content:\"\"}::ng-deep .ant-calendar-time-picker-btn{display:none!important}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":27,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":28,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":29,"character":19},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":30,"character":20},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":31,"character":27},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":32,"character":19}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":82,"character":3},"arguments":["st",{"static":false}]}]}],"_handleClose":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"isJsonString":[{"__symbolic":"method"}],"queryStatistical":[{"__symbolic":"method"}],"multiLineDisplay":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"goExport":[{"__symbolic":"method"}],"closeExport":[{"__symbolic":"method"}],"export":[{"__symbolic":"method"}],"onOkDate":[{"__symbolic":"method"}],"getTitle":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-sendDetail-groupSend"}},"SendDetailTiktokMessageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"app-msgRecord-sendDetail-tiktok","template":"<nz-card [nzBordered]=\"true\">\n  <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n    <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n      <!-- <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"acceptResult\">接收结果</nz-form-label>\n          <nz-form-control>\n            <nz-select [(ngModel)]=\"searchOptions.acceptResults.acceptResult\" name=\"acceptResult\" [nzShowSearch]=\"true\">\n              <nz-option *ngFor=\"let result of searchOptions.acceptResults.list; let idx = index\"\n                [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>\n            </nz-select>\n          </nz-form-control>\n        </nz-form-item>\n      </div> -->\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"packName\">批次名称</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.packName\" name=\"packName\" placeholder=\"请输入完整的批次名称\" id=\"packName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"batchName\">发送抖音号</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.channelName\" name=\"batchName\" placeholder=\"请输入发送抖音号\" id=\"channelName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"batchName\">发送人</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.userName\" name=\"batchName\" placeholder=\"请输入发送人\" id=\"userName\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <!--      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">-->\n      <!--        <nz-form-item>-->\n      <!--          <nz-form-label nzFor=\"sendResult\">类型</nz-form-label>-->\n      <!--          <nz-form-control>-->\n      <!--            <nz-select [(ngModel)]=\"searchOptions.contentTypes.contentType\" name=\"contentType\" [nzShowSearch]=\"true\">-->\n      <!--              <nz-option *ngFor=\"let result of searchOptions.contentTypes.list; let idx = index\" [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>-->\n      <!--            </nz-select>-->\n      <!--          </nz-form-control>-->\n      <!--        </nz-form-item>-->\n      <!--      </div>-->\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"phone\"><span style=\"display: inline-block;width: 70px;\">提交时间</span></nz-form-label>\n          <nz-form-control>\n            <!-- <nz-range-picker [(ngModel)]=\"searchOptions.dateRange\" [ngModelOptions]=\"{ standalone: true }\" nzShowTime> </nz-range-picker> -->\n            <range-picker name=\"date\" [(ngModel)]=\"searchOptions.dateRange[0]\" [(ngModelEnd)]=\"searchOptions.dateRange[1]\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [ngModelOptions]=\"{ standalone: true }\" (nzOnOk)=\"onOkDate()\" (nzOnOpenChange)=\"onOkDate()\"></range-picker>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"openId\">OpenID</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.phone\" name=\"phone\" placeholder=\"请输入openId\" id=\"openId\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\" class=\"search-btns\" [ngStyle]=\"{ 'justify-content': expandForm ? 'flex-end' : 'flex-start' }\">\n        <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n          <span>查询</span>\n        </icc-button>\n        <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n          <span>重置</span>\n        </icc-button>\n        <a class=\"expand-box\" (click)=\"expandForm = !expandForm\">\n          {{ expandForm ? '收起' : '展开' }}\n          <i nz-icon [nzType]=\"expandForm ? 'caret-up' : 'caret-down'\"></i>\n        </a>\n      </div>\n    </div>\n  </form>\n\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"export()\" acl [acl-ability]=\"'sendDetail.tiktok.message.export'\">\n    <img src=\"./assets/images/btnIcon/btn_export_white.png\" alt=\"\" />\n    <span>导出</span>\n  </icc-button>\n\n  <!-- <div *ngIf=\"queryParams.isDetail\" class=\"my-md\">\n    <nz-alert [nzType]=\"'info'\" [nzShowIcon]=\"true\" [nzMessage]=\"message\">\n      <ng-template #message>\n        接收量\n        <strong class=\"text-primary\">{{ queryParams.sentCount }}</strong>\n        &nbsp;&nbsp; 成功量\n        <strong class=\"text-primary\">{{ queryParams.successCount }}</strong>\n        &nbsp;&nbsp; 失败量\n        <strong class=\"text-primary\">{{ queryParams.failCount }}</strong>\n        &nbsp;&nbsp; 未知量\n        <strong class=\"text-primary\">{{ queryParams.unknownCount }}</strong>\n        &nbsp;&nbsp; 上行量\n        <strong class=\"text-primary\">{{ queryParams.moCount }}</strong>\n      </ng-template>\n    </nz-alert>\n  </div> -->\n  <div class=\"my-md\">\n    <st #st [widthMode]=\"{ type: 'strict' }\" [scroll]=\"{ x: '1600px' }\" [data]=\"url\" (change)=\"stChange($event)\" [columns]=\"columns\" [noResult]=\"noResultRef\" [req]=\"req\" [res]=\"res\">\n      <ng-template #noResultRef>\n        <div class=\"st-empty-box\">\n          <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n          <p class=\"empty-text\">抱歉，查询无此数据</p>\n        </div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-batchName\" let-item let-index=\"index\">\n        <div style=\"text-overflow: ellipsis;overflow: hidden; width: 218px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.batchName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.batchName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-userName\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 80px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.userName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.userName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-terminalId\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 200px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.terminalId\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.terminalId }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-channelName\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 120px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.channelName\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.channelName }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-account\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 120px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.account\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.account }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"tpl-submitOriginResultStr\" let-item let-index=\"index\">\n        <div style=\"overflow: hidden; width: 100px;height: 21px;word-wrap: none;cursor: pointer;\" [nzTooltipTitle]=\"item.submitOriginResultStr\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.submitOriginResultStr }}</div>\n      </ng-template>\n\n      <ng-template st-row=\"ticketStateResult\" let-item let-index=\"index\">\n        <span nz-tooltip [nzTooltipTitle]=\"item.ticketState === 2 ? '提交成功' : item.submitOriginResult\">\n          <nz-badge *ngIf=\"item.ticketState === 1\" nzStatus=\"processing\" nzText=\"等待提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 2\" nzStatus=\"success\" nzText=\"提交成功\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 3\" nzStatus=\"default\" nzText=\"取消提交\"></nz-badge>\n          <nz-badge *ngIf=\"item.ticketState === 4\" nzStatus=\"error\" nzText=\"提交失败\"></nz-badge>\n        </span>\n      </ng-template>\n    </st>\n  </div>\n</nz-card>\n\n<!-- 抖音详情 -->\n<!-- <icc-msg-content\n    *ngIf=\"isOpenContentDetail\"\n    isModal=\"true\"\n    title=\"抖音详情\"\n    [message]=\"detailItem\"\n    (close)=\"_handleClose()\"\n></icc-msg-content> -->\n\n<!-- 抖音详情 -->\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" nzTitle=\"抖音详情\" nzWidth=\"800\" (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <div class=\"modal-inner-box\">\n    <h3 class=\"content-title\">{{ detailItem.title }}</h3>\n    <icc-msg-content class=\"content-box\" *ngIf=\"isOpenContentDetail\" [message]=\"detailItem\" (close)=\"_handleClose()\"> </icc-msg-content>\n  </div>\n</nz-modal>\n<!--\n<nz-modal [(nzVisible)]=\"isOpenContentDetail\" [nzTitle]=\"this.currentTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==3\">\n    <icc-image [src]=\"imagUrl\"></icc-image>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==4\">\n    <icc-video disabled=true [url]=\"mediaUrl\" style=\"margin-left: calc(50% - 150px);display: inline-block\">\n    </icc-video>\n  </ng-container>\n  <ng-container *ngIf=\"currentTemplate&&currentTemplate.contentType==2\">\n    {{currentTemplate.content}}\n  </ng-container>\n</nz-modal> -->\n\n<!-- <nz-modal [(nzVisible)]=\"isOpenVideoDetail\" [nzTitle]=\"this.videoTemplate.title\" nzWidth=\"800\"\n  (nzOnCancel)=\"_handleClose('video')\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\n  <icc-video [url]=\"mediaUrl\"></icc-video>\n</nz-modal> -->\n\n<nz-modal [(nzVisible)]=\"isOpenExport\" nzTitle=\"提示\" (nzOnCancel)=\"closeExport()\" [nzFooter]=\"modalFooter\">\n  <p>\n    <icc-image src=\"./assets/images/send/export-icon.gif\" style=\"vertical-align: middle;\"></icc-image>\n    <label style=\"margin-left: 10px;\">数据正在导出中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goExport()\">【导入/导出管理】</a>查看操作结果。</p>\n  <ng-template #modalFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeExport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n","styles":[":host ::ng-deep .search-btns{display:flex;align-items:center}:host ::ng-deep .search-btns .expand-box{margin-left:10px;font-size:12px;color:#49536e}:host ::ng-deep .search-btns .expand-box:hover{color:#37ba9d}:host ::ng-deep .clear{clear:both}:host ::ng-deep .ant-pagination-total-text{display:none}:host ::ng-deep .ant-card-bordered{border:none!important}.item{display:flex;margin-bottom:20px}.item .item-name{margin-right:5px;width:100px;text-align:right}.item .item-value{display:flex;flex-wrap:wrap;align-items:center;flex:1}.item .item-value .box-span{margin:0 12px 8px 0;padding:0 20px;border-radius:2px}.item .item-value .center-text{margin:0 8px}.item .item-value .type-span{display:flex;align-items:center;margin-right:20px;padding:5px 10px;background:#f3f4f9}.item .item-value .type-span .span-icon{margin-right:6px}.item .item-value .span-char{margin-left:-10px;margin-right:10px}.item .item-box{border:1px solid #e8e8e8;width:75%;min-height:100px}.item .item-box .config-item{padding:10px}.item .item-box .config-item .config-title{margin:5px 3px}.msg-arrow{position:relative;margin-right:35px!important}.msg-arrow::after{position:absolute;right:-34px;top:0;border-width:17px;border-style:solid;border-color:transparent transparent transparent #f3f4f9;width:0;height:0;content:\"\"}::ng-deep .ant-calendar-time-picker-btn{display:none!important}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":25,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":26,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":27,"character":19},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":20},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":29,"character":27}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":79,"character":3},"arguments":["st",{"static":false}]}]}],"_handleClose":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"isJsonString":[{"__symbolic":"method"}],"queryStatistical":[{"__symbolic":"method"}],"multiLineDisplay":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"goExport":[{"__symbolic":"method"}],"closeExport":[{"__symbolic":"method"}],"export":[{"__symbolic":"method"}],"onOkDate":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-sendDetail-message"}},"CommentTiktokComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-tiktok","styles":[],"template":"<div class=\"main\">\n\n  <div class=\"menu\" *ngIf=\"queryParams.isInner === '0'\">\n    <ul nz-menu nzMode=\"horizontal\">\n      <li *ngFor=\"let m of menus\" nz-menu-item [nzSelected]=\"m.selected\" (click)=\"changeMsgType(m)\">\n        {{ m.title }}\n      </li>\n    </ul>\n  </div>\n  <div class=\"content\" [ngStyle]=\"{ 'margin-top': queryParams.isInner !== '0' ? '5px' : '0' }\">\n    <router-outlet></router-outlet>\n  </div>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":31,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":32,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":34,"character":16},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":35,"character":24}]}],"changeMsgType":[{"__symbolic":"method"}],"initMenu":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-comment"}},"TikTokLeaveMessageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"selector":"app-leave-message","template":"<nz-card [nzBordered]=\"false\">\n  <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n    <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"moOfficialAccount\">接收抖音号</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.channelName\" name=\"channelName\" placeholder=\"请输入上行抖音号\" id=\"moOfficialAccount\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"moResult\">回复状态</nz-form-label>\n          <nz-form-control>\n            <nz-select [(ngModel)]=\"searchOptions.replyState.status\" name=\"moResult\" [nzShowSearch]=\"true\">\n              <nz-option *ngFor=\"let result of searchOptions.replyState.list; let idx = index\" [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>\n            </nz-select>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <!--      <div nz-col nzMd=\"8\" nzSm=\"24\">-->\n      <!--        <nz-form-item>-->\n      <!--          <nz-form-label nzFor=\"moResult\">回复类型</nz-form-label>-->\n      <!--          <nz-form-control>-->\n      <!--            <nz-select [(ngModel)]=\"searchOptions.contentTypes.contentType\" name=\"moResult\" [nzShowSearch]=\"true\">-->\n      <!--              <nz-option *ngFor=\"let result of searchOptions.contentTypes.list; let idx = index\" [nzLabel]=\"result.label\" [nzValue]=\"result.value\"></nz-option>-->\n      <!--            </nz-select>-->\n      <!--          </nz-form-control>-->\n      <!--        </nz-form-item>-->\n      <!--      </div>-->\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"id\">OpenID</nz-form-label>\n          <nz-form-control>\n            <input nz-input [(ngModel)]=\"searchOptions.terminalId\" name=\"id\" placeholder=\"请输入OpenID\" id=\"id\" />\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <!--      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">-->\n      <!--        <nz-form-item>-->\n      <!--          <nz-form-label nzFor=\"name\"><span style=\"display: inline-block;width: 70px;\">粉丝名称</span></nz-form-label>-->\n      <!--          <nz-form-control>-->\n      <!--            <input nz-input [(ngModel)]=\"searchOptions.nickName\" name=\"name\" placeholder=\"请输入粉丝名称\" id=\"name\" />-->\n      <!--          </nz-form-control>-->\n      <!--        </nz-form-item>-->\n      <!--      </div>-->\n\n      <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n        <nz-form-item>\n          <nz-form-label nzFor=\"time\">私信时间</nz-form-label>\n          <nz-form-control>\n            <!-- <nz-range-picker [(ngModel)]=\"searchOptions.dateRange\" [ngModelOptions]=\"{ standalone: true }\" nzShowTime> </nz-range-picker> -->\n            <range-picker name=\"date\" [(ngModel)]=\"searchOptions.dateRange[0]\" [(ngModelEnd)]=\"searchOptions.dateRange[1]\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [ngModelOptions]=\"{ standalone: true }\" (nzOnOk)=\"onOkDate()\" (nzOnOpenChange)=\"onOkDate()\"></range-picker>\n          </nz-form-control>\n        </nz-form-item>\n      </div>\n\n      <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\" class=\"search-btns\" [ngStyle]=\"{ 'justify-content': expandForm ? 'flex-end' : 'flex-start' }\">\n        <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n          <span>查询</span>\n        </icc-button>\n        <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n          <span>重置</span>\n        </icc-button>\n        <a class=\"expand-box\" (click)=\"expandForm = !expandForm\">\n          {{ expandForm ? '收起' : '展开' }}\n          <i nz-icon [nzType]=\"expandForm ? 'caret-up' : 'caret-down'\"></i>\n        </a>\n      </div>\n    </div>\n  </form>\n\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"export()\" acl [acl-ability]=\"'moRecord.voice.export'\">\n    <img src=\"./assets/images/btnIcon/btn_export_white.png\" alt=\"\" />\n    <span>导出</span>\n  </icc-button>\n\n  <div class=\"my-md\">\n    <st #st [scroll]=\"{ x: '1700px' }\" [widthMode]=\"{ type: 'strict' }\" [data]=\"url\" (change)=\"stChange($event)\" [columns]=\"columns\" [noResult]=\"noResultRef\" [req]=\"req\">\n      <ng-template #noResultRef>\n        <div class=\"st-empty-box\">\n          <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n          <p class=\"empty-text\">抱歉，查询无此数据</p>\n        </div>\n      </ng-template>\n    </st>\n  </div>\n</nz-card>\n\n<icc-msg-content *ngIf=\"isOpenContentDetail\" isModal=\"true\" title=\"上行内容\" [message]=\"detailItem\" (close)=\"_handleClose()\"></icc-msg-content>\n\n<nz-modal [(nzVisible)]=\"isOpenReplyDetail\" nzTitle=\"回复内容\" (nzOnCancel)=\"_handleClose()\" (nzOnOk)=\"_handleClose()\">\n  <ng-container>\n    {{ this.detailItem.content }}\n  </ng-container>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"isOpenReplyDialog\" nzWidth=\"800\" nzTitle=\"回复信息\" (nzOnCancel)=\"cancelReplyDialog()\" nzClassName=\"replay-dialog\" (nzOnOk)=\"ensureReplyDialog()\">\n  <p class=\"replay-tips\">上行内容：<!--<a href=\"javacsript:;\" (click)=\"gotoTimeLine()\">查看用户交互时光轴</a>--></p>\n  <div class=\"replay-upstream\">\n    <div class=\"img-container\">\n      <img src=\"/assets/images/layout/logo.png\" alt=\"img\" />\n    </div>\n    <div class=\"title-container\">\n      <p class=\"title\">\n        <span class=\"name\">{{ currentUpstream.channelName }}</span>\n        <span class=\"time\">{{ currentUpstream.postTime }}</span>\n      </p>\n      <div class=\"content\">\n        <div class=\"scroll\">\n          <!-- 上行：文字 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'text'\">\n            {{ currentUpstream.content }}\n          </ng-container>\n          <!-- 上行：图片 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'image'\">\n            <img [src]=\"currentUpstream.content\" alt=\"\" />\n          </ng-container>\n          <!-- 上行：音频 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'voice'\">\n            <icc-audio [url]=\"currentUpstream.content\"></icc-audio>\n          </ng-container>\n          <!-- 上行：视频 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'video'\">\n            <icc-video [disabled]=\"true\" [url]=\"currentUpstream.content\"></icc-video>\n          </ng-container>\n          <!-- 上行：地理位置 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'location'\">\n            【收到不支持的消息，暂无法显示】\n          </ng-container>\n          <!-- 上行：链接 -->\n          <ng-container *ngIf=\"currentUpstream.type == 'link'\">\n            【收到不支持的消息，暂无法显示】\n          </ng-container>\n        </div>\n      </div>\n    </div>\n  </div>\n  <p class=\"replay-tips\"><span style=\"color: red;\">*</span>回复内容：</p>\n\n  <div class=\"replay-content\">\n    <nz-tabset [nzAnimated]=\"false\" [nzSelectedIndex]=\"selectTab\">\n      <ng-container *ngFor=\"let item of tabList; let i = index\">\n        <nz-tab [nzTitle]=\"item.title\">\n          <!-- 文字 -->\n          <ng-container *ngIf=\"item.title == '文字'\">\n            <div class=\"text-container\">\n              <textarea placeholder=\"请输入文字内容...\" [(ngModel)]=\"replyContent\" maxlength=\"100\"></textarea>\n            </div>\n          </ng-container>\n\n          <!-- 图片 -->\n          <ng-container *ngIf=\"item.title == '图片'\">\n            <div class=\"box\">\n              TODO...\n            </div>\n          </ng-container>\n\n          <!-- 语音 -->\n          <ng-container *ngIf=\"item.title == '语音'\">\n            <div class=\"box\">\n              TODO...\n            </div>\n          </ng-container>\n\n          <!-- 视频 -->\n          <ng-container *ngIf=\"item.title == '视频'\">\n            <div class=\"box\">\n              TODO...\n            </div>\n          </ng-container>\n        </nz-tab>\n      </ng-container>\n    </nz-tabset>\n  </div>\n</nz-modal>\n<nz-modal [(nzVisible)]=\"isOpenExport\" nzTitle=\"提示\" (nzOnCancel)=\"closeExport()\" [nzFooter]=\"modalFooter\">\n  <p>\n    <icc-image src=\"./assets/images/send/export-icon.gif\" style=\"vertical-align: middle;\"></icc-image>\n    <label style=\"margin-left: 10px;\">数据正在导出中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goExport()\">【导入/导出管理】</a>查看操作结果。</p>\n  <ng-template #modalFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeExport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n","styles":[":host ::ng-deep .search-btns{display:flex;align-items:center}:host ::ng-deep .search-btns .expand-box{margin-left:10px;font-size:12px;color:#49536e}:host ::ng-deep .search-btns .expand-box:hover{color:#37ba9d}.replay-tips{margin-bottom:10px;font-size:14px}.replay-tips a{float:right;text-decoration:underline}.replay-upstream{margin-bottom:20px}.replay-upstream .img-container{display:inline-block;padding:0 20px;width:11%;height:85px;vertical-align:top}.replay-upstream .img-container img{display:block;border:1px solid gray;border-radius:50%;width:100%;height:auto}.replay-upstream .title-container{display:inline-block;width:89%;vertical-align:top}.replay-upstream .title-container .title{overflow:hidden;margin-bottom:5px;font-size:16px}.replay-upstream .title-container .title .name{overflow:hidden;float:left;width:77%;text-overflow:ellipsis;font-weight:700;white-space:nowrap}.replay-upstream .title-container .title .time{float:right;width:23%;text-align:right;color:#acacac}.replay-upstream .title-container .content{clear:both;padding:20px;background:#f3f4fa}.replay-upstream .title-container .content .scroll{overflow:auto;position:relative;max-height:140px}.replay-upstream .title-container .content img{display:block;margin:0 auto;max-width:100%}.replay-content{border:1px solid #e8e8e8}.replay-content /deep/ .ant-tabs-bar{margin-bottom:0}.replay-content /deep/ .ant-tabs-tabpane{padding:20px}.replay-content .box{overflow-y:auto;position:relative;height:200px}.replay-content .text-container{height:200px}.replay-content .text-container textarea{border:none;width:100%;height:100%;outline:0}::ng-deep .ant-calendar-time-picker-btn{display:none!important}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":28,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":29,"character":18},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":30,"character":19},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzMessageService","line":31,"character":20},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":32,"character":20},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":33,"character":27}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":65,"character":3},"arguments":["st",{"static":false}]}]}],"_handleClose":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"goExport":[{"__symbolic":"method"}],"closeExport":[{"__symbolic":"method"}],"export":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"openReplyDialog":[{"__symbolic":"method"}],"closeReplyDialog":[{"__symbolic":"method"}],"ensureReplyDialog":[{"__symbolic":"method"}],"cancelReplyDialog":[{"__symbolic":"method"}],"gotoTimeLine":[{"__symbolic":"method"}],"onOkDate":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-comment-message"}},"TikTokCommentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-comment","template":"<nz-card>\n  <div class=\"left\">\n    <nz-select nzShowSearch nzAllowClear nzPlaceHolder=\"全部抖音号\" [(ngModel)]=\"selectedValue\" (ngModelChange)=\"resetCommentMedia()\">\n      <!-- <nz-option nzLabel=\"Jack\" nzValue=\"jack\"></nz-option>\n      <nz-option nzLabel=\"Lucy\" nzValue=\"lucy\"></nz-option>\n      <nz-option nzLabel=\"Tom\" nzValue=\"tom\"></nz-option> -->\n      <nz-option *ngFor=\"let item of channels; let channelIndex = index\" [nzLabel]=\"item.name\" [nzValue]=\"channelIndex\"></nz-option>\n    </nz-select>\n    <div style=\"width: 285px;padding-left: 15px\">\n      <!-- <nz-range-picker nzFormat=\"yyyy-MM-dd\" [nzPlaceHolder]=\"['开始时间', '结束时间']\" [(ngModel)]=\"searchOptions.timeRange\" (ngModelChange)=\"resetCommentMedia()\" name=\"timeRange\"> </nz-range-picker> -->\n      <range-picker name=\"date\" [(ngModel)]=\"searchOptions.timeRange[0]\" [(ngModelEnd)]=\"searchOptions.timeRange[1]\" [nzFormat]=\"'yyyy-MM-dd'\" [nzAllowClear]=\"false\" [ngModelOptions]=\"{ standalone: true }\" (nzOnOk)=\"onOkDate()\" (nzOnOpenChange)=\"onOkDate($event)\"></range-picker>\n    </div>\n    <div class=\"card-wrapper\">\n      <nz-spin nzTip=\"Loading...\" [nzSpinning]=\"nzSpinning\" style=\"height: 100%;\">\n        <icc-comment-card *ngFor=\"let item of cardList; index as j\" [card]=\"item\" [active]=\"j === actCardIndex\" (clickHandle)=\"clickHandle(j, item)\" [width]=\"270\">\n          <a [href]=\"item.resourceUrl\" target=\"_blank\">查看详细内容</a>\n        </icc-comment-card>\n        <div class=\"st-empty-box\" *ngIf=\"!cardList || cardList.length <= 0\">\n          <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n          <p class=\"empty-text\">暂无广播消息</p>\n        </div>\n      </nz-spin>\n    </div>\n\n    <div class=\"arr-wrapper\">\n      <i nz-icon nzType=\"left\" nzTheme=\"outline\" (click)=\"toggleCardPage(true)\"></i>\n      <span>第{{ actCardPageIndex }}/{{ cardTotal }}页</span>\n      <i nz-icon nzType=\"right\" nzTheme=\"outline\" (click)=\"toggleCardPage(false)\"></i>\n    </div>\n  </div>\n  <div class=\"right\">\n    <ul class=\"tag-wrapper\">\n      <li (click)=\"changeTag(i, item)\" [ngClass]=\"{ active: i === actTagIndex }\" *ngFor=\"let item of tagList; index as i\">{{ item.name }}：{{ item.num }}</li>\n    </ul>\n    <div class=\"operate-box\" *ngIf=\"!isCardListEmpty && !nzSpinning\">\n      <icc-button (click)=\"pullMediaComment()\">同步数据</icc-button>\n      <icc-button (click)=\"replyBatchOpenDialog()\">批量回复</icc-button>\n      <!--      <icc-button [btnType]=\"'danger'\">-->\n      <!--        <img src=\"./assets/images/btnIcon/btn_remove_white.png\" alt=\"\" />-->\n      <!--        <span>删除</span>-->\n      <!--      </icc-button>-->\n    </div>\n    <div class=\"pannel-wrapper\">\n      <div class=\"st-empty-box\" *ngIf=\"isCommentListEmpty\">\n        <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n        <p class=\"empty-text\">暂无评论</p>\n      </div>\n      <icc-comment-pannel *ngFor=\"let item of commentList; index as i\" [data]=\"item\" [commentConfig]=\"commentConfig\" [replyConfig]=\"replyConfig\" (checkChangeHandle)=\"checkChangeHandle($event, item)\"></icc-comment-pannel>\n    </div>\n    <div class=\"page-wrapper\">\n      <nz-pagination [(nzPageIndex)]=\"params2.pi\" [nzTotal]=\"commentTotal\" [nzPageSize]=\"params2.ps\" [nzShowTotal]=\"totalTemplate\" (nzPageIndexChange)=\"getCommentItem()\"></nz-pagination>\n      <!-- <ng-template #totalTemplate let-range=\"range\" let-total> {{ range[0] }}-{{ range[1] }} of {{ total }} items </ng-template> -->\n      <ng-template #totalTemplate let-range=\"range\" let-total> 共 {{ total }} 条 </ng-template>\n    </div>\n  </div>\n</nz-card>\n\n<nz-modal [(nzVisible)]=\"isOpenReplyDialog\" nzWidth=\"800\" nzTitle=\"回复评论\" (nzOnCancel)=\"cancelReplyDialog()\" nzClassName=\"replay-dialog\" (nzOnOk)=\"ensureReplyDialog()\">\n  <div class=\"content\">\n    <div>\n      <textarea rows=\"4\" nz-input [(ngModel)]=\"replyContent\" maxlength=\"100\"></textarea>\n    </div>\n  </div>\n</nz-modal>\n","styles":[":host ::ng-deep .ant-card-body{padding:0}:host ::ng-deep nz-select{display:block;width:90%;margin:5px auto 10px}:host ::ng-deep .ant-calendar-picker{margin:0 7px}.left{width:300px;float:left;padding:10px 0;border-right:1px solid #dcdcdc;height:calc(100vh - 194px)}.left .card-wrapper{height:calc(100% - 128px);overflow:auto;margin-top:10px;border-bottom:1px solid #dcdcdc}.left .arr-wrapper{height:48px;display:flex;justify-content:center;align-items:center;color:#a6acc5}.left .arr-wrapper i{cursor:pointer}.left .arr-wrapper span{font-size:12px;margin:0 20px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.right{width:calc(100% - 300px);padding:10px 0;float:right;height:calc(100vh - 194px)}.right .pannel-wrapper{max-height:calc(100% - 156px);overflow:auto}.right .operate-box{padding-left:20px;padding-bottom:11px}.right .tag-wrapper{margin:2px 0 15px 20px;padding:0}.right .tag-wrapper li,.right .tag-wrapper ul{list-style:none;padding:0;margin:0}.right .tag-wrapper li{display:inline-block;padding:.3em 1em;border:1px solid #dcdcdc;border-radius:2.7em;font-size:12px;cursor:pointer;margin:4px 12px 0 0;transition:.2s}.right .tag-wrapper li.active,.right .tag-wrapper li:hover{background:#ebf8fe;border-color:#3ca5d6;color:#3ca5d6}.right .page-wrapper{text-align:right;margin-top:20px;padding-right:20px}::ng-deep .ant-calendar-time-picker-btn{display:none!important}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":18},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":15,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"checkChangeHandle":[{"__symbolic":"method"}],"clickHandle":[{"__symbolic":"method"}],"changeTag":[{"__symbolic":"method"}],"resetParams2":[{"__symbolic":"method"}],"getChannel":[{"__symbolic":"method"}],"getCommentMedia":[{"__symbolic":"method"}],"resetCommentMedia":[{"__symbolic":"method"}],"getCommentItem":[{"__symbolic":"method"}],"toggleCardPage":[{"__symbolic":"method"}],"comfirm":[{"__symbolic":"method"}],"makeCommentTopOrCancel":[{"__symbolic":"method"}],"replyBatchOpenDialog":[{"__symbolic":"method"}],"cancelReplyDialog":[{"__symbolic":"method"}],"ensureReplyDialog":[{"__symbolic":"method"}],"replyCommentOne":[{"__symbolic":"method"}],"replyCommentBatch":[{"__symbolic":"method"}],"resetTagList":[{"__symbolic":"method"}],"pullMediaComment":[{"__symbolic":"method"}],"onOkDate":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-comment-comment"}},"TikTokChannelEditComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-edit","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":14,"character":19},"member":"OnPush"},"template":"<!-- <div class=\"modal-header modal-header-update header-cls\">\n  <div class=\"modal-title title\" *ngIf=\"record.id > 0\">编辑渠道信息</div>\n  <div class=\"modal-title title\" *ngIf=\"record.id <= 0\">新增渠道</div>\n</div> -->\n<div class=\"icc-page-inner-header\">\n  <ng-container *ngIf=\"!record.id\">\n    <icc-button [btnType]=\"'hollow'\" (btnClick)=\"close()\"><span>返回</span></icc-button\n    ><span class=\"title-name\">新增</span>\n  </ng-container>\n  <ng-container *ngIf=\"record.id\">\n    <icc-button [btnType]=\"'hollow'\" (btnClick)=\"close()\"><span>返回</span></icc-button\n    ><span class=\"title-name\">{{ record.name }}</span>\n  </ng-container>\n</div>\n<nz-card [nzBordered]=\"false\">\n  <form nz-form [formGroup]=\"form\" (ngSubmit)=\"save(form.value)\" se-container=\"2\" labelWidth=\"230\">\n    <p class=\"form-section-title\">基础信息</p>\n    <se col=\"2\" label=\"渠道商\" error=\"请选择渠道商\" required>\n      <nz-select [nzDisabled]=\"true\" id=\"provider\" nzPlaceHolder=\"用户选择的渠道商\" formControlName=\"providerId\">\n        <nz-option *ngFor=\"let option of optionList\" [nzValue]=\"option.id\" [nzLabel]=\"option.name\"></nz-option>\n      </nz-select>\n    </se>\n    <se col=\"2\" label=\"渠道名称（用户昵称）\" error=\"请输入用户昵称\" required>\n      <input nz-input formControlName=\"name\" placeholder=\"填写抖音昵称\" minLength=\"1\" maxLength=\"30\" />\n    </se>\n    <se col=\"2\" label=\"渠道号（抖音号）\" error=\"请输入填写抖音编号,长度控制在1-30个字符\" required>\n      <input nz-input formControlName=\"channelNum\" [disabled]=\"checkDisable\" minLength=\"1\" maxLength=\"30\" [readonly]=\"checkDisable\" placeholder=\"填写抖音号\" />\n    </se>\n    <p class=\"form-section-title\">配置信息</p>\n    <input formControlName=\"hidControl\" hidden required />\n    <se col=\"2\" label=\"渠道标识号\" error=\"只允许输入英文及数字，且必须以英文字母开头。\" required> <input [readonly]=\"checkDisable\" [disabled]=\"checkDisable\" (input)=\"ngIdentityChange()\" nz-input formControlName=\"identity\" placeholder=\"用户填入的渠道识别号\" minLength=\"1\" maxLength=\"20\" /><span [hidden]=\"identityHid\" style=\"color: red;\">渠道识别号已存在!</span> </se>\n    <!-- <se col=\"2\" label=\"是否支持评论\" required>\n      <label formControlName=\"supportComment\" [disabled]=\"isEdit\" name=\"bindSelf\" nz-checkbox></label>\n    </se> -->\n    <se col=\"2\" label=\"Client Key\" error=\"请输入Client Key\" required>\n      <input nz-input formControlName=\"appKey\" placeholder=\"从抖音信息中进行获取\" minLength=\"1\" maxLength=\"50\" />\n    </se>\n    <se col=\"2\" label=\"Client Secret\" error=\"请输入Client Secret\" required>\n      <input nz-input formControlName=\"appSecret\" placeholder=\"从抖音信息中进行获取\" minLength=\"1\" maxLength=\"100\" />\n    </se>\n    <se col=\"2\" label=\"openid\" error=\"请填入正确的openid\" required>\n      <input nz-input formControlName=\"openId\" minLength=\"1\" maxLength=\"100\" placeholder=\"从抖音信息中进行获取\" />\n    </se>\n    <!-- <se col=\"2\" label=\"AccessToken\" error=\"请填入正确的AccessToken\" required>\n      <input nz-input formControlName=\"accessToken\" minLength=\"1\" maxLength=\"100\" placeholder=\"从抖音信息中进行获取\" />\n    </se> -->\n  </form>\n</nz-card>\n<div class=\"footer-cls\">\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"close()\"><span>取消</span></icc-button>\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"save(form.value)\" [isDisabled]=\"!form.valid\" [isLoading]=\"http.loading\"> <span>保存</span></icc-button>\n</div>\n","styles":[":host ::ng-deep form>div:nth-of-type(1){margin-right:0!important;margin-left:0!important}:host ::ng-deep .form-section-title{clear:both;width:100%;padding:10px 0 15px;color:#49536e;font-size:18px;border-bottom:1px solid #eaecf0}:host ::ng-deep form{padding:0 15px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":18,"character":27},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":18,"character":52},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":18,"character":88},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":19,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":20,"character":25}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"ngNameChange":[{"__symbolic":"method"}],"ngIdentityChange":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-channel-edit"}},"TikTokChannelViewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-view","template":"<div class=\"modal-header modal-header-update header\">\n  <div class=\"modal-title title\" *ngIf=\"record.id > 0\">查看详情</div>\n</div>\n<nz-card [nzBordered]=\"false\">\n  <form nz-form se-container=\"1\" labelWidth=\"180\">\n    <p class=\"form-section-title\" col=\"1\">\n      基础信息\n    </p>\n    <se label=\"渠道商\" error=\"请选择渠道商\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.providerName }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.providerName }}</span>\n    </se>\n    <se label=\"渠道名称（抖音名称）\" error=\"请输入用户昵称,长度控制在1-50个字符\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.name }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.name }}</span>\n    </se>\n    <se label=\"渠道号（抖音号）\" error=\"请输入抖音号,长度控制在1-30个字符\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.channelNum }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.channelNum }}</span>\n    </se>\n    <p class=\"form-section-title\" col=\"1\">\n      配置信息\n    </p>\n    <se label=\"渠道标识号\" error=\"请输入渠道标识号\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.identity }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.identity }}</span>\n    </se>\n    <!-- <se label=\"最高发送速度\" error=\"请输入最高发送速度\" >\n      <span>{{channel.speed}}条/秒</span>\n\n    </se> -->\n    <se label=\"Client Key\" error=\"请输入Client Key\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.appKey }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.appKey }}</span>\n    </se>\n    <se label=\"Client Secret\" error=\"请输入Client Secret\">\n      <span>{{ channel.appSecret }}</span>\n    </se>\n    <se label=\"openid\" error=\"请输入Client Key\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.openId }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.openId }}</span>\n    </se>\n    <se label=\"accessToken\" error=\"请输入Client Secret\">\n      <span class=\"text-ellipsis max-label-width\" nzTooltipTitle=\"{{ channel.accessToken }}\" nzTooltipPlacement=\"top\" nz-tooltip>{{ channel.accessToken }}</span>\n    </se>\n  </form>\n</nz-card>\n","styles":[":host ::ng-deep .se__label-text{color:#9ea8c8}.max-label-width{width:auto;max-width:300px;cursor:pointer}.form-section-title{clear:both;width:100%;padding:20px 0 15px;color:#49536e;font-size:18px;border-bottom:1px solid #eaecf0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":11,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}]},"statics":{"SCENE":"icc-msg-channel-view"}},"TiktokFansManageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"icc-tiktok-fans","host":{"[style.width]":"'100%'","$quoted$":["[style.width]"]},"template":"<div class=\"wrapper\">\n  <div class=\"tree-outter-box\" id=\"tree-outter-box-id\">\n    <p class=\"tree-title\">抖音号</p>\n\n    <!--    <div class=\"tree-box\" nz-row>-->\n    <!--      <nz-tree #nzTreeComponent [nzData]=\"nodes\" [nzExpandedKeys]=\"defaultExpandedKeys\"-->\n    <!--        [nzSelectedKeys]=\"defaultSelectedKeys\" (nzClick)=\"nzClick($event)\" [nzShowLine]='true'>-->\n    <!--      </nz-tree>-->\n    <!--    </div>-->\n\n    <div class=\"tree-box\" nz-row>\n      <ul class=\"tiktok-account-wrapper\">\n        <li class=\"tiktok-account-item\" [ngClass]=\"{ active: i === actIndex }\" *ngFor=\"let item of tiktokAccounts; index as i\" (click)=\"getFans(item.id, i)\">\n          <span nz-tooltip [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" class=\"tiktok-item-span\">{{ item.name }}</span>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"table-outter-box\">\n    <nz-card [nzBordered]=\"false\" id=\"tag-table-wrapper-id\">\n      <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n        <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n          <div nz-col nzMd=\"8\" nzSm=\"24\">\n            <nz-form-item>\n              <nz-form-label nzFor=\"nickname\">粉丝昵称</nz-form-label>\n              <nz-form-control>\n                <input nz-input [(ngModel)]=\"searchOptions.nickname\" name=\"nickname\" placeholder=\"请输入昵称\" maxlength=\"50\" />\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\">\n            <nz-form-item>\n              <nz-form-label>openId</nz-form-label>\n              <nz-form-control>\n                <input nz-input [(ngModel)]=\"searchOptions.openId\" name=\"openId\" placeholder=\"请输入openId\" maxlength=\"50\" />\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n\n          <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\" [ngStyle]=\"{ 'justify-content': expandForm ? 'flex-end' : 'flex-start' }\" class=\"search-btns\">\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n              <span>查询</span>\n            </icc-button>\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n              <span>重置</span>\n            </icc-button>\n          </div>\n        </div>\n      </form>\n      <icc-button [btnType]=\"'default'\" (btnClick)=\"update()\" acl [acl-ability]=\"'commCenter.tiktokFansMgt.updateFans'\" [isDisabled]=\"disabledClick\">\n        <!-- <img src=\"./assets/images/btnIcon/btn_add_white.png\" alt=\"\"> -->\n        <i nz-icon nzType=\"sync\" nzTheme=\"outline\"></i>\n        <span>获取更新</span>\n      </icc-button>\n\n      <st #st id=\"tag-table-id\" [data]=\"url\" [columns]=\"columns\" [res]=\"res\" [req]=\"req\" [page]=\"page\" [noResult]=\"noResultRef\" (change)=\"stChange($event)\" style=\"margin-top: 10px;\">\n        <ng-template #noResultRef>\n          <div class=\"st-empty-box\">\n            <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n            <p class=\"empty-text\">抱歉，查询无此数据</p>\n          </div>\n        </ng-template>\n        <ng-template st-row=\"tpl-openId\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.openId\" [width]=\"268\"></icc-table-text>\n        </ng-template>\n        <ng-template st-row=\"templ-country\" let-item let-index=\"index\">\n          <span *ngIf=\"!item || item.country === ''\">/</span>\n          <span *ngIf=\"item && item.country !== ''\">{{ item.country }}</span>\n        </ng-template>\n        <ng-template st-row=\"templ-city\" let-item let-index=\"index\">\n          <span *ngIf=\"!item || item.city === ''\">/</span>\n          <span *ngIf=\"item && item.city !== ''\">{{ item.city }}</span>\n        </ng-template>\n      </st>\n    </nz-card>\n  </div>\n</div>\n","styles":[":host ::ng-deep .danger{color:red}:host ::ng-deep nz-select{width:100%}:host ::ng-deep .wrapper{display:flex;border:1px solid #e8e8e8;min-width:1024px;background:#fff}:host ::ng-deep .ant-card{margin:0;border:0}:host ::ng-deep .tree-outter-box{display:flex;flex-direction:column;width:235px;min-height:550px;background:0 0}:host ::ng-deep .tree-outter-box .tree-title{margin:0;padding:0 20px;border-bottom:1px solid #eaecf0;height:60px;line-height:60px;font-size:18px;color:#49536e}:host ::ng-deep .tree-outter-box .tree-btn-group{display:flex;padding:10px 20px;border-bottom:1px solid #e8e8e8}:host ::ng-deep .tree-outter-box .tree-btn-group .btn-icon{margin:0 20px 0 0;width:18px;cursor:pointer}:host ::ng-deep .tree-outter-box .tree-box{overflow:auto;flex:1;padding:0;width:100%;height:auto}:host ::ng-deep .tree-outter-box .tree-box .ant-tree{padding:18px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host ::ng-deep .table-outter-box{flex:1;border-left:1px solid #e8e8e8}:host ::ng-deep .table-outter-box .search-btns{display:flex;align-items:center}:host ::ng-deep .table-outter-box .search-btns .expand-box{margin-left:10px;font-size:12px;color:#49536e}:host ::ng-deep .table-outter-box .search-btns .expand-box:hover{color:#37ba9d}.modal-row{display:flex;height:420px}.modal-row .modal-column:nth-of-type(1),.modal-row .modal-column:nth-of-type(4){display:flex;flex-direction:column;width:220px}.modal-row .modal-column:nth-of-type(1) .box-title,.modal-row .modal-column:nth-of-type(4) .box-title{box-sizing:border-box;margin:0;padding:0 20px;border-bottom:1px solid #eaecf0;height:60px;line-height:60px;font-size:18px;color:#49536e}.modal-row .modal-column:nth-of-type(1) .tree-box,.modal-row .modal-column:nth-of-type(4) .tree-box{overflow:auto;flex:1;padding:0;width:100%;height:auto}.modal-row .modal-column:nth-of-type(1) .tree-box .ant-tree,.modal-row .modal-column:nth-of-type(4) .tree-box .ant-tree{padding:18px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.modal-row .modal-column:nth-of-type(1) .list-box,.modal-row .modal-column:nth-of-type(4) .list-box{overflow:auto;flex:1;padding:0 10px;width:100%;height:100%}.modal-row .modal-column:nth-of-type(2){border-left:0;width:740px}.modal-row .modal-column:nth-of-type(2) .form-box{position:relative;padding-right:132px}.modal-row .modal-column:nth-of-type(2) .form-box .btn-search{position:absolute;right:80px;top:13px}.modal-row .modal-column:nth-of-type(2) .form-box .btn-cancel{position:absolute;right:10px;top:13px}.modal-row .modal-column:nth-of-type(2) .my-md{margin-left:10px;margin-right:10px}.modal-row .modal-column:nth-of-type(3){display:flex;flex-direction:column;justify-content:center;align-items:center;border:0;width:120px}.modal-row .modal-column:nth-of-type(3) icc-button{margin:8px 0}.modal-row .modal-column{border:1px solid #eaecf0;height:100%}.footer-bar{display:flex;justify-content:center;align-items:center;padding:20px 0 0}.tiktok-account-wrapper{margin:0;padding:0;width:100%}.tiktok-account-item{list-style:none;margin:0;padding:0 20px;height:42px;cursor:pointer;line-height:3}.tiktok-account-item .tiktok-item-span{display:inline-block;overflow:hidden;max-width:195px;height:42px;cursor:pointer;text-overflow:ellipsis;white-space:nowrap}.tiktok-account-item:hover{background-color:rgba(190,220,235,.8)}.tiktok-account-item.active{background-color:rgba(190,229,249,.9)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":25,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":25,"character":56},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":25,"character":92}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":3},"arguments":["st",{"static":false}]}]}],"getTableList":[{"__symbolic":"method"}],"getFans":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"getTiktokAccounts":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-fans"}},"TiktokConstraintKeywordEditComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-edit","template":"<div class=\"modal-header modal-header-update header-cls\">\n  <div class=\"modal-title title\" *ngIf=\"record.id === 0\">新增敏感字</div>\n  <div class=\"modal-title title\" *ngIf=\"record.id > 0\">编辑敏感字</div>\n</div>\n<nz-card [nzBordered]=\"false\" style=\"margin-bottom: 0;\">\n  <form nz-form [formGroup]=\"form\" (ngSubmit)=\"save(form.value)\" se-container=\"1\" labelWidth=\"112\" nzLayout=\"horizontal\">\n    <se label=\"管控类型\" required>\n      <nz-radio-group formControlName=\"controlType\" (ngModelChange)=\"controlTypeChange($event)\" [nzDisabled]=\"record.id > 0\">\n        <label nz-radio nzValue=\"3\">业务类型敏感字</label>\n        <label nz-radio nzValue=\"2\">账号敏感字</label>\n        <label nz-radio nzValue=\"4\">渠道敏感字</label>\n        <label nz-radio nzValue=\"1\">全局敏感字</label>\n      </nz-radio-group>\n    </se>\n    <div *ngIf=\"controlType == 2\">\n      <se style=\"transform: translateY(-8px);\" label=\"关联账号\" error=\"请输入正确的关联账号\" required>\n        <nz-select nzPlaceHolder=\"请选择关联账号\" [nzDisabled]=\"record.id > 0\" formControlName=\"targetId\" name=\"targetId\" [nzShowSearch]=\"true\" (nzOnSearch)=\"search($event)\" (ngModelChange)=\"checkAccount()\">\n          <ng-container *ngFor=\"let user of userEnums; let idx = index\">\n            <nz-option *ngIf=\"record.id <= 0 && idx < 10\" [nzValue]=\"user.value\" [nzLabel]=\"user.label\"></nz-option>\n            <nz-option *ngIf=\"record.id > 0\" [nzValue]=\"user.value\" [nzLabel]=\"user.label\"></nz-option>\n          </ng-container>\n        </nz-select>\n      </se>\n    </div>\n    <div *ngIf=\"controlType == 3\">\n      <se style=\"transform: translateY(-8px);\" label=\"关联业务类型\" error=\"请输入正确的关联业务类型\" required>\n        <nz-select nzPlaceHolder=\"请选择关联业务类型\" [nzDisabled]=\"record.id > 0\" formControlName=\"targetId\" name=\"targetId\" [nzShowSearch]=\"true\" (nzOnSearch)=\"searchBiz($event)\" (ngModelChange)=\"checkAccount()\">\n          <ng-container *ngFor=\"let biz of bizEnums; let idx = index\">\n            <nz-option *ngIf=\"record.id <= 0 && idx < 10\" [nzValue]=\"biz.value\" [nzLabel]=\"biz.label\"></nz-option>\n            <nz-option *ngIf=\"record.id > 0\" [nzValue]=\"biz.value\" [nzLabel]=\"biz.label\"></nz-option>\n          </ng-container>\n        </nz-select>\n      </se>\n    </div>\n    <div *ngIf=\"controlType == 4\">\n      <se style=\"transform: translateY(-8px);\" label=\"关联渠道\" error=\"请输入正确的关联渠道\" required>\n        <nz-select nzPlaceHolder=\"请选择关联渠道\" [nzDisabled]=\"record.id > 0\" formControlName=\"targetId\" name=\"targetId\" [nzShowSearch]=\"true\" (nzOnSearch)=\"searchChannel($event)\" (ngModelChange)=\"checkAccount()\">\n          <ng-container *ngFor=\"let channel of channelEnums; let idx = index\">\n            <nz-option *ngIf=\"record.id <= 0 && idx < 10\" [nzValue]=\"channel.value\" [nzLabel]=\"channel.label\"></nz-option>\n            <nz-option *ngIf=\"record.id > 0\" [nzValue]=\"channel.value\" [nzLabel]=\"channel.label\"></nz-option>\n          </ng-container>\n        </nz-select>\n      </se>\n    </div>\n    <se label=\"管控策略\" required>\n      <nz-radio-group formControlName=\"controlStrategy\">\n        <label nz-radio nzValue=\"1\">自动拦截</label>\n        <label nz-radio nzValue=\"2\">人工审核</label>\n      </nz-radio-group>\n    </se>\n    <se label=\"敏感字类型\" required>\n      <nz-radio-group formControlName=\"keywordType\" (ngModelChange)=\"keywordTypeChange($event)\">\n        <label nz-radio nzValue=\"1\">单一敏感字</label>\n        <label nz-radio nzValue=\"2\">逻辑敏感字</label>\n      </nz-radio-group>\n    </se>\n    <se label=\"敏感字内容\" error=\"请输入正确的敏感字\" required>\n      <textarea (ngModelChange)=\"isValidLogicKeyword($event)\" nz-input formControlName=\"keyword\" placeholder=\"请填写敏感字\" minLength=\"1\" maxLength=\"100\"> </textarea>\n      <span [hidden]=\"logicKeywordCont\" style=\"color: red;\">只允许出现某种校验符号，否则逻辑敏感字会存在校验失败风险。</span>\n      <span [hidden]=\"keywordRepe\" style=\"color: red;\">已有相同名称敏感字，请进行修改。</span>\n      <div style=\"margin-bottom: -20px;\">\n        <span *ngIf=\"keywordType == 1\">\n          提示：输入的内容，作为一个完成敏感字进行配对，不作逻辑识别和组合。\n        </span>\n        <span *ngIf=\"keywordType == 2\">\n          提示: 输入的内容，根据逻辑表达式进行敏感字匹配。\n          <br />\n          允许的操作符如下：全“||”或操作；全“&&”与操作；\n        </span>\n      </div>\n    </se>\n    <input type=\"hidden\" nz-input formControlName=\"logicKeyword\" name=\"logicKeyword\" required />\n  </form>\n</nz-card>\n<div class=\"modal-footer modal-footer-update footer-cls\">\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"close()\"><span>关闭</span></icc-button>\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"save(form.value)\" [isDisabled]=\"!form.valid\"> <span>保存</span></icc-button>\n</div>\n","styles":[":host ::ng-deep .modal-header-update{margin:-24px -20px 0}:host ::ng-deep .modal-footer-update{margin:0 -20px -24px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":17,"character":38},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":17,"character":69},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":17,"character":94},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":17,"character":119},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":17,"character":155}]}],"ngOnInit":[{"__symbolic":"method"}],"controlTypeChange":[{"__symbolic":"method"}],"checkAccount":[{"__symbolic":"method"}],"keywordTypeChange":[{"__symbolic":"method"}],"isValidLogicKeyword":[{"__symbolic":"method"}],"checkExist":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"searchBiz":[{"__symbolic":"method"}],"searchChannel":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg"}},"TiktokConstraintKeywordImportExportComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-import-export","template":"<div class=\"modal-header modal-header-update\">\n  <div class=\"modal-title\">导入</div>\n</div>\n<div class=\"main\">\n  <icc-upload #iccupload [exampleUrl]=\"exampleUrl\" [action]=\"actionUrl\" [filter]=\"filters\" [size]=\"104857600\" [showReason]=\"showReason\" [customRequest]=\"customRequest\" [percent]=\"uploadPercent\" [status]=\"uploadStatus\" [hasProgress]=\"hasProgress\" [totalCount]=\"totalSize\" [successCount]=\"succSize\" [logUrl]=\"stzaPath\" [errorMsg]=\"errorMsg\" (remove)=\"fileRemove($event)\"> </icc-upload>\n\n  <div class=\"modal-footer modal-footer-update\">\n    <icc-button [btnType]=\"'hollow'\" (btnClick)=\"close()\"><span>关闭</span></icc-button>\n    <icc-button [btnType]=\"'default'\" [isDisabled]=\"!tempItem\" (btnClick)=\"handleUpload()\"> <span>确定</span></icc-button>\n  </div>\n</div>\n","styles":[".uploadInput{display:inline-block;position:relative;list-style:none;box-sizing:border-box;margin:0;padding:4px 11px;border:1px solid #d9d9d9;border-radius:4px;width:205%;min-width:20%;height:32px;background-color:#fff;background-image:none;line-height:1.5;font-variant:tabular-nums;font-size:14px;color:rgba(0,0,0,.65);transition:.3s;font-feature-settings:\"tnum\"}.floatLeft{float:left}.danger{color:red}.marginTop{margin-top:3%}a{text-decoration:underline}.thicker{font-weight:900;font-size:medium}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":29,"character":28},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":29,"character":56},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":29,"character":91}]}],"iccUpload":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":3},"arguments":["iccupload",{"static":false}]}]}],"handleUpload":[{"__symbolic":"method"}],"fileUpload":[{"__symbolic":"method"}],"getUploadProgressPercent":[{"__symbolic":"method"}],"fileRemove":[{"__symbolic":"method"}],"loadFileData":[{"__symbolic":"method"}],"cancelTimer":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"TiktokConstraintKeywordComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-tiktok","template":"<div class=\"wrapper\">\n  <div class=\"table-outter-box\">\n    <nz-card [nzBordered]=\"false\">\n      <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\n        <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\n          <div nz-col nzMd=\"8\" nzSm=\"24\">\n            <nz-form-item>\n              <nz-form-label>敏感字</nz-form-label>\n              <nz-form-control>\n                <input nz-input [(ngModel)]=\"searchOptions.keyword\" placeHolder=\"请输入敏感字\" name=\"keyword\" id=\"keyword\" />\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\">\n            <nz-form-item>\n              <nz-form-label>敏感字类型</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.keywordTypes.select\" name=\"keywordType\" [nzPlaceHolder]=\"'请选择敏感字类型'\" [nzShowSearch]=\"true\">\n                  <nz-option *ngFor=\"let keywordType of searchOptions.keywordTypes.list; let idx = index\" [nzLabel]=\"keywordType.label\" [nzValue]=\"keywordType.value\"></nz-option>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n            <nz-form-item>\n              <nz-form-label>管控策略</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.controlStrategys.select\" name=\"controlStrategy\" [nzPlaceHolder]=\"'请选择管控策略'\" [nzShowSearch]=\"true\">\n                  <nz-option *ngFor=\"let controlStrategy of searchOptions.controlStrategys.list; let idx = index\" [nzLabel]=\"controlStrategy.label\" [nzValue]=\"controlStrategy.value\"></nz-option>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n            <nz-form-item>\n              <nz-form-label>管控类型</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.controlTypes.select\" name=\"controlType\" [nzPlaceHolder]=\"'请选择管控类型'\" [nzShowSearch]=\"true\">\n                  <nz-option *ngFor=\"let controlType of searchOptions.controlTypes.list; let idx = index\" [nzLabel]=\"controlType.label\" [nzValue]=\"controlType.value\"></nz-option>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <!-- <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm\">\n            <nz-form-item>\n              <nz-form-label style=\"width: 92px;\">敏感字</nz-form-label>\n              <nz-form-control>\n                <input nz-input [(ngModel)]=\"searchOptions.keyword\" placeholder=\"请输入敏感字\" name=\"keyword\" id=\"keyword\" />\n              </nz-form-control>\n            </nz-form-item>\n          </div> -->\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm && searchOptions.controlTypes.select === 2\">\n            <nz-form-item>\n              <nz-form-label nzFor=\"userAccount\">关联账号</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.user.select\" name=\"user\" [nzShowSearch]=\"true\" (nzOnSearch)=\"search($event)\">\n                  <ng-container *ngFor=\"let user of searchOptions.user.list; let idx = index\">\n                    <nz-option *ngIf=\"idx < 10\" [nzValue]=\"user.value\" [nzLabel]=\"user.label\"></nz-option>\n                  </ng-container>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm && searchOptions.controlTypes.select === 3\">\n            <nz-form-item>\n              <nz-form-label nzFor=\"biz\">关联业务类型</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.biz.select\" name=\"biz\" [nzShowSearch]=\"true\" (nzOnSearch)=\"searchBiz($event)\">\n                  <ng-container *ngFor=\"let biz of searchOptions.biz.list; let idx = index\">\n                    <nz-option *ngIf=\"idx < 10\" [nzValue]=\"biz.value\" [nzLabel]=\"biz.label\"></nz-option>\n                  </ng-container>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col nzMd=\"8\" nzSm=\"24\" *ngIf=\"expandForm && searchOptions.controlTypes.select === 4\">\n            <nz-form-item>\n              <nz-form-label nzFor=\"channel\">关联渠道</nz-form-label>\n              <nz-form-control>\n                <nz-select [(ngModel)]=\"searchOptions.channel.select\" name=\"channel\" [nzShowSearch]=\"true\" (nzOnSearch)=\"searchChannel($event)\">\n                  <ng-container *ngFor=\"let channel of searchOptions.channel.list; let idx = index\">\n                    <nz-option *ngIf=\"idx < 10\" [nzValue]=\"channel.value\" [nzLabel]=\"channel.label\"></nz-option>\n                  </ng-container>\n                </nz-select>\n              </nz-form-control>\n            </nz-form-item>\n          </div>\n          <div nz-col [nzSpan]=\"expandForm ? 24 : 8\" [class.text-right]=\"expandForm\">\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"getTableList()\">\n              <span>查询</span>\n            </icc-button>\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"resetTableList()\">\n              <span>重置</span>\n            </icc-button>\n            <a class=\"expand-box\" (click)=\"expandForm = !expandForm\">\n              {{ expandForm ? '收起' : '展开' }}\n              <i nz-icon [nzType]=\"expandForm ? 'caret-up' : 'caret-down'\"></i>\n            </a>\n          </div>\n        </div>\n      </form>\n      <icc-button [btnType]=\"'default'\" (btnClick)=\"add()\" acl [acl-ability]=\"'sendconstraint.keyword.tiktok.add'\">\n        <img src=\"./assets/images/btnIcon/btn_add_white.png\" alt=\"\" />\n        <span>新增</span>\n      </icc-button>\n      <icc-button [btnType]=\"'default'\" (btnClick)=\"import()\" acl [acl-ability]=\"'sendconstraint.keyword.import'\">\n        <img src=\"./assets/images/btnIcon/btn_import_white.png\" alt=\"\" />\n        <span>导入</span>\n      </icc-button>\n      <icc-button [btnType]=\"'default'\" (btnClick)=\"export()\" acl [acl-ability]=\"'sendconstraint.keyword.export'\">\n        <img src=\"./assets/images/btnIcon/btn_export_white.png\" alt=\"\" />\n        <span>导出</span>\n      </icc-button>\n      <icc-button [btnType]=\"'danger'\" acl [acl-ability]=\"'sendconstraint.keyword.tiktok.delete'\" (btnClick)=\"showModal('', true)\">\n        <img src=\"./assets/images/btnIcon/btn_remove_white.png\" alt=\"\" />\n        <span>删除</span>\n      </icc-button>\n      <div class=\"my-md\">\n        <nz-alert [nzType]=\"'info'\" [nzShowIcon]=\"true\" [nzMessage]=\"message\">\n          <ng-template #message>\n            已选择\n            <strong class=\"text-primary\">{{ selectedRows.length }}</strong> 项\n          </ng-template>\n        </nz-alert>\n      </div>\n      <st #st [widthMode]=\"{ type: 'strict' }\" [data]=\"url\" [columns]=\"columns\" [res]=\"res\" [req]=\"req\" [page]=\"page\" [noResult]=\"noResultRef\" (change)=\"stChange($event)\">\n        <ng-template #noResultRef>\n          <div class=\"st-empty-box\">\n            <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n            <p class=\"empty-text\">抱歉，查询无此数据</p>\n          </div>\n        </ng-template>\n        <ng-template st-row=\"templ-keyword\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.keyword\" [width]=\"228\"></icc-table-text>\n        </ng-template>\n        <ng-template st-row=\"templ-account\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.controlType === 2 ? item.targetUserName : '-'\" [width]=\"118\"></icc-table-text>\n        </ng-template>\n        <ng-template st-row=\"templ-updateUserName\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.updateUserName == null ? '-' : item.updateUserName\" [width]=\"118\"></icc-table-text>\n        </ng-template>\n        <ng-template st-row=\"templ-targetChannelName\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.controlType !== 4  ? '-' : item.targetChannelName\" [width]=\"118\"></icc-table-text>\n        </ng-template>\n        <ng-template st-row=\"templ-targetBizName\" let-item let-index=\"index\">\n          <icc-table-text [text]=\"item.controlType !== 3 ? '-' : item.targetBizName\" [width]=\"118\"></icc-table-text>\n        </ng-template>\n      </st>\n    </nz-card>\n  </div>\n</div>\n<nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"请确认是否删除!\" [nzFooter]=\"modalFooter1\" (nzOnCancel)=\"handleCancel()\">\n  <p class=\"danger\">{{ messages }}</p>\n  <ng-template #modalFooter1>\n    <icc-button [btnType]=\"'hollow'\" (btnClick)=\"handleCancel()\"><span>取消</span></icc-button>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"handleOk()\"><span>确定</span></icc-button>\n  </ng-template>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"isOpenExport\" nzTitle=\"提示\" (nzOnCancel)=\"closeExport()\" [nzFooter]=\"modalExportFooter\">\n  <p>\n    <img src=\"./assets/images/send/export-icon.gif\" alt=\"\" style=\"display:inline-block\" />\n    <label style=\"margin-left: 10px;\">数据正在导出中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goExport()\">【导入/导出管理】</a>界面查看结果</p>\n  <ng-template #modalExportFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeExport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n<nz-modal [(nzVisible)]=\"isOpenImport\" nzTitle=\"提示\" (nzOnCancel)=\"closeImport()\" [nzFooter]=\"modalImportFooter\">\n  <p>\n    <img src=\"./assets/images/send/import-icon.gif\" alt=\"\" style=\"display:inline-block\" />\n    <label style=\"margin-left: 10px;\">数据正在导入中。。。</label>\n  </p>\n  <p style=\"color: #9ea8c8;\">您可以直接进入<a (click)=\"goImport()\">【导入/导出管理】</a>界面查看结果</p>\n  <ng-template #modalImportFooter>\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"closeImport()\"><span>知道了</span></icc-button>\n  </ng-template>\n</nz-modal>\n","styles":[".expand-box{color:#49536e;font-size:12px;margin-left:10px;display:inline-block;transform:translateY(-10px)}.expand-box:hover{color:#37ba9d}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":17,"character":27},{"__symbolic":"reference","module":"icc-common-lib","name":"DialogService","line":17,"character":63},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":17,"character":94},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":17,"character":122},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":17,"character":149},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":17,"character":175},{"__symbolic":"reference","module":"icc-common-lib","name":"MessageService","line":17,"character":218}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":52,"character":3},"arguments":["st",{"static":false}]}]}],"add":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"resetTableList":[{"__symbolic":"method"}],"stChange":[{"__symbolic":"method"}],"import":[{"__symbolic":"method"}],"export":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"handleReload":[{"__symbolic":"method"}],"showModal":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"handleCancel":[{"__symbolic":"method"}],"handleOk":[{"__symbolic":"method"}],"deleteOne":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"goImport":[{"__symbolic":"method"}],"closeImport":[{"__symbolic":"method"}],"goExport":[{"__symbolic":"method"}],"closeExport":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"searchChannel":[{"__symbolic":"method"}],"searchBiz":[{"__symbolic":"method"}]},"statics":{"NAME":"icc-msg-sendconstraint-keyword"}},"TiktokLibModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":87,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TiktokEditorComponent"},{"__symbolic":"reference","name":"TiktokMobilePreviewComponent"},{"__symbolic":"reference","name":"TiktokModalDetailComponent"},{"__symbolic":"reference","name":"TiktokTimelineContentComponent"},{"__symbolic":"reference","name":"TiktokTplAuditComponent"},{"__symbolic":"reference","name":"TiktokTplAutoMatchComponent"},{"__symbolic":"reference","name":"TiktokTplDetailComponent"},{"__symbolic":"reference","name":"TiktokTplEditComponent"},{"__symbolic":"reference","name":"SocialTiktokComponent"},{"__symbolic":"reference","name":"VideoComponent"},{"__symbolic":"reference","name":"VideoStatisticsComponent"},{"__symbolic":"reference","name":"VideoPublishFrequencyComponent"},{"__symbolic":"reference","name":"TiktokDataTrendComponent"},{"__symbolic":"reference","name":"TiktokFansTrendComponent"},{"__symbolic":"reference","name":"FansInterestComponent"},{"__symbolic":"reference","name":"FansGenderComponent"},{"__symbolic":"reference","name":"FansAreaComponent"},{"__symbolic":"reference","name":"FansAgeComponent"},{"__symbolic":"reference","name":"ActiveDaysComponent"},{"__symbolic":"reference","name":"TiktokAnalyzeComponent"},{"__symbolic":"reference","name":"TiktokAccountComponent"},{"__symbolic":"reference","name":"TiktokFansComponent"},{"__symbolic":"reference","name":"SendDetailTiktokListComponent"},{"__symbolic":"reference","name":"SendDetailTiktokMessageComponent"},{"__symbolic":"reference","name":"SendDetailTiktokGroupSendComponent"},{"__symbolic":"reference","name":"SendDetailTiktokCommentComponent"},{"__symbolic":"reference","name":"CommentTiktokComponent"},{"__symbolic":"reference","name":"TikTokLeaveMessageComponent"},{"__symbolic":"reference","name":"TikTokCommentComponent"},{"__symbolic":"reference","name":"TikTokChannelEditComponent"},{"__symbolic":"reference","name":"TikTokChannelViewComponent"},{"__symbolic":"reference","name":"TiktokFansManageComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordImportExportComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordEditComponent"}],"imports":[{"__symbolic":"reference","module":"icc-common-lib","name":"CommonLibModule","line":89,"character":12},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":89,"character":29}],"entryComponents":[{"__symbolic":"reference","name":"TiktokEditorComponent"},{"__symbolic":"reference","name":"TiktokMobilePreviewComponent"},{"__symbolic":"reference","name":"TiktokModalDetailComponent"},{"__symbolic":"reference","name":"TiktokTimelineContentComponent"},{"__symbolic":"reference","name":"TiktokTplAuditComponent"},{"__symbolic":"reference","name":"TiktokTplAutoMatchComponent"},{"__symbolic":"reference","name":"TiktokTplDetailComponent"},{"__symbolic":"reference","name":"TiktokTplEditComponent"},{"__symbolic":"reference","name":"SocialTiktokComponent"},{"__symbolic":"reference","name":"VideoComponent"},{"__symbolic":"reference","name":"VideoStatisticsComponent"},{"__symbolic":"reference","name":"VideoPublishFrequencyComponent"},{"__symbolic":"reference","name":"TiktokDataTrendComponent"},{"__symbolic":"reference","name":"TiktokFansTrendComponent"},{"__symbolic":"reference","name":"FansInterestComponent"},{"__symbolic":"reference","name":"FansGenderComponent"},{"__symbolic":"reference","name":"FansAreaComponent"},{"__symbolic":"reference","name":"FansAgeComponent"},{"__symbolic":"reference","name":"ActiveDaysComponent"},{"__symbolic":"reference","name":"TiktokAnalyzeComponent"},{"__symbolic":"reference","name":"TiktokAccountComponent"},{"__symbolic":"reference","name":"TiktokFansComponent"},{"__symbolic":"reference","name":"SendDetailTiktokListComponent"},{"__symbolic":"reference","name":"SendDetailTiktokMessageComponent"},{"__symbolic":"reference","name":"SendDetailTiktokGroupSendComponent"},{"__symbolic":"reference","name":"SendDetailTiktokCommentComponent"},{"__symbolic":"reference","name":"CommentTiktokComponent"},{"__symbolic":"reference","name":"TikTokLeaveMessageComponent"},{"__symbolic":"reference","name":"TikTokCommentComponent"},{"__symbolic":"reference","name":"TikTokChannelEditComponent"},{"__symbolic":"reference","name":"TikTokChannelViewComponent"},{"__symbolic":"reference","name":"TiktokFansManageComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordImportExportComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordEditComponent"}],"providers":[{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":91,"character":14}],"exports":[{"__symbolic":"reference","name":"TiktokEditorComponent"},{"__symbolic":"reference","name":"TiktokMobilePreviewComponent"},{"__symbolic":"reference","name":"TiktokModalDetailComponent"},{"__symbolic":"reference","name":"TiktokTimelineContentComponent"},{"__symbolic":"reference","name":"TiktokTplAuditComponent"},{"__symbolic":"reference","name":"TiktokTplAutoMatchComponent"},{"__symbolic":"reference","name":"TiktokTplDetailComponent"},{"__symbolic":"reference","name":"TiktokTplEditComponent"},{"__symbolic":"reference","name":"SocialTiktokComponent"},{"__symbolic":"reference","name":"VideoComponent"},{"__symbolic":"reference","name":"VideoStatisticsComponent"},{"__symbolic":"reference","name":"VideoPublishFrequencyComponent"},{"__symbolic":"reference","name":"TiktokDataTrendComponent"},{"__symbolic":"reference","name":"TiktokFansTrendComponent"},{"__symbolic":"reference","name":"FansInterestComponent"},{"__symbolic":"reference","name":"FansGenderComponent"},{"__symbolic":"reference","name":"FansAreaComponent"},{"__symbolic":"reference","name":"FansAgeComponent"},{"__symbolic":"reference","name":"ActiveDaysComponent"},{"__symbolic":"reference","name":"TiktokAnalyzeComponent"},{"__symbolic":"reference","name":"TiktokAccountComponent"},{"__symbolic":"reference","name":"TiktokFansComponent"},{"__symbolic":"reference","name":"SendDetailTiktokListComponent"},{"__symbolic":"reference","name":"SendDetailTiktokMessageComponent"},{"__symbolic":"reference","name":"SendDetailTiktokGroupSendComponent"},{"__symbolic":"reference","name":"SendDetailTiktokCommentComponent"},{"__symbolic":"reference","name":"CommentTiktokComponent"},{"__symbolic":"reference","name":"TikTokLeaveMessageComponent"},{"__symbolic":"reference","name":"TikTokCommentComponent"},{"__symbolic":"reference","name":"TikTokChannelEditComponent"},{"__symbolic":"reference","name":"TikTokChannelViewComponent"},{"__symbolic":"reference","name":"TiktokFansManageComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordImportExportComponent"},{"__symbolic":"reference","name":"TiktokConstraintKeywordEditComponent"}]}]}],"members":{}}},"origins":{"TiktokEditorComponent":"./lib/component/tiktok-editor/tiktok-editor.component","TiktokMobilePreviewComponent":"./lib/component/tiktok-mobile-preview/tiktok-mobile-preview.component","TiktokModalDetailComponent":"./lib/component/tiktok-modal-detail/tiktok-modal-detail.component","TiktokTimelineContentComponent":"./lib/component/tiktok-timeline-content/tiktok-timeline-content.component","TiktokTplAuditComponent":"./lib/component/tiktok-tpl-audit/tiktok-tpl-audit.component","TiktokTplAutoMatchComponent":"./lib/component/tiktok-tpl-auto-match/tiktok-tpl-auto-match.component","TiktokTplDetailComponent":"./lib/component/tiktok-tpl-detail/tiktok-tpl-detail.component","TiktokTplEditComponent":"./lib/component/tiktok-tpl-edit/tiktok-tpl-edit.component","SocialTiktokComponent":"./lib/component/tiktok-social/social-tiktok.component","TiktokAccountComponent":"./lib/component/tiktok-social/tiktok-account/tiktok-account.component","TiktokAnalyzeComponent":"./lib/component/tiktok-social/tiktok-analyze/tiktok-analyze.component","ActiveDaysComponent":"./lib/component/tiktok-social/tiktok-fans/active-days/active-days.component","FansAgeComponent":"./lib/component/tiktok-social/tiktok-fans/fans-age/fans-age.component","FansAreaComponent":"./lib/component/tiktok-social/tiktok-fans/fans-area/fans-area.component","FansGenderComponent":"./lib/component/tiktok-social/tiktok-fans/fans-gender/fans-gender.component","FansInterestComponent":"./lib/component/tiktok-social/tiktok-fans/fans-interest/fans-interest.component","TiktokFansTrendComponent":"./lib/component/tiktok-social/tiktok-fans/tiktok-fans-trend/tiktok-fans-trend.component","TiktokFansComponent":"./lib/component/tiktok-social/tiktok-fans/tiktok-fans.component","TiktokDataTrendComponent":"./lib/component/tiktok-social/video/tiktok-data-trend/tiktok-data-trend.component","VideoPublishFrequencyComponent":"./lib/component/tiktok-social/video/video-publish-frequency/video-publish-frequency.component","VideoStatisticsComponent":"./lib/component/tiktok-social/video/video-statistics/video-statistics.component","VideoComponent":"./lib/component/tiktok-social/video/video.component","SendDetailTiktokListComponent":"./lib/component/tiktok-sendDetail/tiktokList.component","SendDetailTiktokCommentComponent":"./lib/component/tiktok-sendDetail/comment/comment.component","SendDetailTiktokGroupSendComponent":"./lib/component/tiktok-sendDetail/groupSend/groupSend.component","SendDetailTiktokMessageComponent":"./lib/component/tiktok-sendDetail/message/message.component","CommentTiktokComponent":"./lib/component/tiktok-comment/tiktok.component","TikTokLeaveMessageComponent":"./lib/component/tiktok-comment/leave-message/leave-message.component","TikTokCommentComponent":"./lib/component/tiktok-comment/comment/comment.component","TikTokChannelEditComponent":"./lib/component/tikok-channel/edit/edit.component","TikTokChannelViewComponent":"./lib/component/tikok-channel/view/view.component","TiktokFansManageComponent":"./lib/component/tiktok-fans-manage/tiktok-fans-manage.component","TiktokConstraintKeywordEditComponent":"./lib/component/tiktok-constraint-keyword/edit/edit.component","TiktokConstraintKeywordImportExportComponent":"./lib/component/tiktok-constraint-keyword/import-export/import-export.component","TiktokConstraintKeywordComponent":"./lib/component/tiktok-constraint-keyword/tiktok.component","TiktokLibModule":"./lib/tiktok-lib.module"},"importAs":"icc-msg-tiktok-lib"}