{"__symbolic":"module","version":4,"metadata":{"varSelect":{"label":"变量","value":1},"tagSelect":{"label":"标签","value":2},"ConditionComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-condition","template":"<nz-table #conditionDatas nzBordered [nzData]=\"noEmpty\" nzSize=\"middle\" [nzShowPagination]=\"false\">\r\n  <thead>\r\n    <tr>\r\n      <th style=\"width:100px;\"><span style=\"color: red;\">* </span>类型</th>\r\n      <th style=\"width:250px;\"><span style=\"color: red;\">* </span>条件名称</th>\r\n      <th><span style=\"color: red;\">* </span>条件描述</th>\r\n      <th *ngIf=\"mode === 'edit'\" style=\"width:100px;\">操作</th>\r\n    </tr>\r\n  </thead>\r\n  <tbody>\r\n    <!-- 不用conditionDatas -->\r\n    <tr *ngFor=\"let condition of conditions; index as cIndex\">\r\n      <td>\r\n        <ng-container *ngIf=\"editIndex !== cIndex; else typeSelectTpl\">\r\n          {{ condition.type.label }}\r\n        </ng-container>\r\n        <ng-template #typeSelectTpl>\r\n          <nz-form-control nzHasFeedback>\r\n            <nz-select [(ngModel)]=\"condition.type\" name=\"conditionType{{ sIndex }}{{ cIndex }}\" (nzOpenChange)=\"typeSelectChange()\" (ngModelChange)=\"typeChange(condition)\" required>\r\n              <nz-option [nzValue]=\"type\" nzLabel=\"{{ type.label }}\" [nzHide]=\"needVarTypeHide(type)\" *ngFor=\"let type of conditionType\"> </nz-option>\r\n            </nz-select>\r\n          </nz-form-control>\r\n        </ng-template>\r\n      </td>\r\n      <td>\r\n        <ng-container *ngIf=\"editIndex !== cIndex; else nameSelectTpl\">\r\n          {{ condition.bindObj.name || condition.bindObj.label }}\r\n        </ng-container>\r\n        <ng-template #nameSelectTpl>\r\n          <nz-form-control nzHasFeedback *ngIf=\"condition.type && condition.type.value === 1\">\r\n            <nz-select [(ngModel)]=\"condition.bindObj.id\" name=\"conditionVarName{{ sIndex }}{{ cIndex }}\" nzPlaceHolder=\"请选择\" (ngModelChange)=\"selectVar(condition)\" required [nzDropdownStyle]=\"{ width: '250px' }\">\r\n              <nz-option *ngFor=\"let va of variableBinds\" [nzHide]=\"needVarTagHide(condition, va)\" [nzValue]=\"va.id\" nzLabel=\"{{ va.name }}\"> </nz-option>\r\n            </nz-select>\r\n          </nz-form-control>\r\n          <nz-form-control nzHasFeedback *ngIf=\"condition.type && condition.type.value === 2\">\r\n            <input placeholder=\"请选择\" nz-input [(ngModel)]=\"condition.bindObj.label\" name=\"conditionTagName{{ sIndex }}{{ cIndex }}\" required (input)=\"loadTagMeta(condition, $event.target?.value, true)\" [nzAutocomplete]=\"auto\" (click)=\"loadTagMeta(condition, $event.target?.value, false)\" />\r\n            <nz-autocomplete #auto [nzWidth]=\"250\">\r\n              <nz-auto-option (click)=\"selectTagMeta(condition, meta)\" *ngFor=\"let meta of tagMetaList$ | async\" [nzValue]=\"meta.label\">\r\n                {{ meta.label }}\r\n              </nz-auto-option>\r\n            </nz-autocomplete>\r\n          </nz-form-control>\r\n        </ng-template>\r\n      </td>\r\n      <td>\r\n        <ng-container *ngIf=\"editIndex !== cIndex; else valueInputTpl\">\r\n          {{ condition.value || (condition.min && !condition.max ? '>=' + condition.min : !condition.min && condition.max ? '<=' + condition.max : condition.min + '~' + condition.max) }}\r\n        </ng-container>\r\n        <ng-template #valueInputTpl>\r\n          <nz-form-control nzHasFeedback *ngIf=\"condition.type && condition.type.value === 1 && condition.bindObj.dataType === 1\">\r\n            <nz-input-number [nzMin]=\"0\" nzMax=\"{{ condition.max || condition.max === 0 ? condition.max : 2147483647 }}\" [nzStep]=\"0.0001\" placeholder=\"下界\" [(ngModel)]=\"condition.min\" name=\"minConditionVarValue{{ sIndex }}{{ cIndex }}\"> </nz-input-number>\r\n            ~\r\n            <nz-input-number nzMin=\"{{ condition.min || condition.min === 0 ? condition.min : 0 }}\" [nzMax]=\"2147483647\" [nzStep]=\"0.0001\" placeholder=\"上界\" [(ngModel)]=\"condition.max\" name=\"maxConditionVarValue{{ sIndex }}{{ cIndex }}\"> </nz-input-number>\r\n            <img style=\"transform: translate(15px,-2px);\" src=\"./assets/images/layout/info.png\" alt=\"\" nz-tooltip nzTooltipTitle=\"设置数值区间，为空表示无穷大\" />\r\n          </nz-form-control>\r\n\r\n          <nz-form-control nzHasFeedback *ngIf=\"condition.type && condition.type.value === 1 && condition.bindObj.dataType === 2\">\r\n            <nz-select nzMode=\"tags\" nzPlaceHolder=\"请直接输入变量内容\" [(ngModel)]=\"condition.value\" (ngModelChange)=\"limitMaxLength(condition.value)\" name=\"conditionVarValue{{ sIndex }}{{ cIndex }}\" [nzMaxMultipleCount]=\"20\" required> </nz-select>\r\n          </nz-form-control>\r\n          <!--\r\n          <nz-form-control nzHasFeedback\r\n            *ngIf=\"condition.type && condition.type.value === 1 && condition.bindObj.dataType === 2\">\r\n            <input type=\"text\" nz-input [(ngModel)]=\"condition.value\" name=\"conditionVarValue{{ sIndex }}{{ cIndex }}\"\r\n              required minlength=\"1\" maxlength=\"15\" />\r\n          </nz-form-control>\r\n          -->\r\n          <nz-form-control nzHasFeedback *ngIf=\"condition.type && condition.type.value === 2\">\r\n            <nz-select [(ngModel)]=\"condition.value\" nzMode=\"tags\" nzPlaceHolder=\"请选择\" name=\"conditionTagValue{{ sIndex }}{{ cIndex }}\" [nzMaxMultipleCount]=\"20\" nzMode=\"multiple\" required>\r\n              <nz-option *ngFor=\"let tag of condition.bindObj.customerTagList\" [nzLabel]=\"tag.value\" [nzValue]=\"tag.value\"> </nz-option>\r\n            </nz-select>\r\n          </nz-form-control>\r\n        </ng-template>\r\n      </td>\r\n      <td *ngIf=\"mode === 'edit'\">\r\n        <div>\r\n          <ng-container *ngIf=\"editIndex !== cIndex; else saveTpl\">\r\n            <a (click)=\"editCondition(cIndex)\">编辑</a>\r\n            <nz-divider nzType=\"vertical\"></nz-divider>\r\n            <a nz-popconfirm nzPopconfirmTitle=\"是否要删除?\" nzPopconfirmPlacement=\"bottom\" (nzOnConfirm)=\"removeCondition(cIndex)\">删除</a>\r\n          </ng-container>\r\n          <ng-template #saveTpl>\r\n            <a (click)=\"saveCondition(condition)\">保存</a>\r\n            <nz-divider nzType=\"vertical\"></nz-divider>\r\n            <a (click)=\"cancelCondition(cIndex)\">取消</a>\r\n          </ng-template>\r\n        </div>\r\n      </td>\r\n    </tr>\r\n  </tbody>\r\n</nz-table>\r\n<button style=\"margin-top: 2px;\" *ngIf=\"editIndex === -1 && mode === 'edit'\" nz-button [nzType]=\"'dashed'\" (click)=\"addConditon()\" nzBlock class=\"mt-md\" class=\"add-Btn\">\r\n  <i nz-icon nzType=\"plus\"></i>\r\n  <span>新增</span>\r\n</button>\r\n","styles":[".add-Btn{padding:0 15px;border:1px dashed #d9d9d9;border-radius:4px;height:32px;background:#fff;cursor:pointer;line-height:32px;transition:.5s}.add-Btn:hover{border:1px dashed #37ba9d;background:#fff;color:#37ba9d}td{word-break:break-all}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":15,"character":65}]}],"conditions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"sIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"variableBinds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"tagUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"mode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"processCondition":[{"__symbolic":"method"}],"loadTagInfos":[{"__symbolic":"method"}],"needVarTagHide":[{"__symbolic":"method"}],"needVarTypeHide":[{"__symbolic":"method"}],"addConditon":[{"__symbolic":"method"}],"loadTagMeta":[{"__symbolic":"method"}],"typeChange":[{"__symbolic":"method"}],"typeSelectChange":[{"__symbolic":"method"}],"selectTagMeta":[{"__symbolic":"method"}],"selectVar":[{"__symbolic":"method"}],"editCondition":[{"__symbolic":"method"}],"saveCondition":[{"__symbolic":"method"}],"removeCondition":[{"__symbolic":"method"}],"cancelCondition":[{"__symbolic":"method"}],"setEditTmpInfo":[{"__symbolic":"method"}],"limitMaxLength":[{"__symbolic":"method"}]}},"ConditionTableAuditComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-condition-table-audit","template":"<nz-table #basicTable [nzData]=\"tableData\" nzFrontPagination=\"false\" style=\"word-break: break-all;\">\r\n  <thead>\r\n    <tr>\r\n      <th *ngFor=\"let hv of config.header\" class=\"table-header\">{{ hv }}</th>\r\n    </tr>\r\n  </thead>\r\n  <tbody *ngIf=\"openEffect\">\r\n    <tr *ngFor=\"let row of basicTable.data\">\r\n      <!--新增的行-->\r\n      <ng-container *ngIf=\"row.type === operate['add']\">\r\n        <ng-container *ngFor=\"let cell of config.attr\">\r\n          <td *ngIf=\"cell.type === 'string'\" class=\"color-green\">{{ row[cell.name] }}</td>\r\n          <td *ngIf=\"cell.type === 'object'\" class=\"color-green\">{{ row[cell.name].value }}</td>\r\n          <td *ngIf=\"cell.type === 'array'\" class=\"color-green\">\r\n            <span *ngFor=\"let item of row[cell.name]; let i = index\" [ngClass]=\"{ 'line-before-green': i !== 0 }\">{{ item.value }}</span>\r\n          </td>\r\n        </ng-container>\r\n      </ng-container>\r\n      <!--删除的行-->\r\n      <ng-container *ngIf=\"row.type === operate['delete']\">\r\n        <ng-container *ngFor=\"let cell of config.attr\">\r\n          <td *ngIf=\"cell.type === 'string'\">\r\n            <span class=\"delete-line\">{{ row[cell.name] }}</span>\r\n          </td>\r\n          <td *ngIf=\"cell.type === 'object'\">\r\n            <span class=\"delete-line\">{{ row[cell.name].value }}</span>\r\n          </td>\r\n          <td *ngIf=\"cell.type === 'array'\">\r\n            <span *ngFor=\"let item of row[cell.name]; let i = index\" class=\"delete-line\" [ngClass]=\"{ 'line-before-default': i !== 0 }\">{{ item.value }}</span>\r\n          </td>\r\n        </ng-container>\r\n      </ng-container>\r\n      <!--修改的行-->\r\n      <ng-container *ngIf=\"row.type === operate['update']\">\r\n        <ng-container *ngFor=\"let cell of config.attr\">\r\n          <td *ngIf=\"cell.type === 'string'\">\r\n            <span>{{ row[cell.name] }}</span>\r\n          </td>\r\n          <td *ngIf=\"cell.type === 'object'\">\r\n            <span *ngIf=\"row[cell.name].type === operate['add']\" class=\"color-green\">{{ row[cell.name].value }}</span>\r\n            <span *ngIf=\"row[cell.name].type === operate['delete']\" class=\"delete-line\">{{ row[cell.name].value }}</span>\r\n            <span *ngIf=\"row[cell.name].type === operate['normal']\">{{ row[cell.name].value }}</span>\r\n            <span *ngIf=\"row[cell.name].type === operate['update']\" class=\"color-red\" [nzTooltipTitle]=\"row[cell.name].oldValue\" nz-tooltip>{{ row[cell.name].value }}</span>\r\n          </td>\r\n          <td *ngIf=\"cell.type === 'array'\">\r\n            <ng-container *ngFor=\"let item of row[cell.name]; let i = index\">\r\n              <span *ngIf=\"item.type === operate['add']\" class=\"color-green\" [ngClass]=\"{ 'line-before-green': i !== 0 }\">{{ item.value }}</span>\r\n              <span *ngIf=\"item.type === operate['delete']\" class=\"delete-line\" [ngClass]=\"{ 'line-before-default': i !== 0 }\">{{ item.value }}</span>\r\n              <span *ngIf=\"item.type === operate['update']\" class=\"color-red\" [ngClass]=\"{ 'line-before-red': i !== 0 }\" [nzTooltipTitle]=\"item.oldValue\" nz-tooltip>{{ item.value }}</span>\r\n              <span *ngIf=\"item.type === operate['normal']\" [ngClass]=\"{ 'line-before-default': i !== 0 }\">{{ item.value }}</span>\r\n            </ng-container>\r\n          </td>\r\n        </ng-container>\r\n      </ng-container>\r\n      <!--不变的行-->\r\n      <ng-container *ngIf=\"row.type === operate['normal']\">\r\n        <ng-container *ngFor=\"let cell of config.attr\">\r\n          <td *ngIf=\"cell.type === 'string'\">{{ row[cell.name] }}</td>\r\n          <td *ngIf=\"cell.type === 'object'\">{{ row[cell.name].value }}</td>\r\n          <td *ngIf=\"cell.type === 'array'\">\r\n            <span *ngFor=\"let item of row[cell.name]; let i = index\" [ngClass]=\"{ 'line-before-default': i !== 0 }\">{{ item.value }}</span>\r\n          </td>\r\n        </ng-container>\r\n      </ng-container>\r\n    </tr>\r\n  </tbody>\r\n  <tbody *ngIf=\"!openEffect\">\r\n    <ng-container *ngFor=\"let row of basicTable.data\">\r\n      <tr *ngIf=\"row.type !== operate['delete']\">\r\n        <ng-container *ngFor=\"let cell of config.attr\">\r\n          <td *ngIf=\"cell.type === 'string'\">{{ row[cell.name] }}</td>\r\n          <td *ngIf=\"cell.type === 'object'\">{{ row[cell.name].value }}</td>\r\n          <td *ngIf=\"cell.type === 'array'\">\r\n            <ng-container *ngFor=\"let item of row[cell.name]; let i = index\">\r\n              <span *ngIf=\"item.type !== operate['delete']\" [ngClass]=\"{ 'line-before-default': i !== 0 }\">{{ item.value }}</span>\r\n            </ng-container>\r\n          </td>\r\n        </ng-container>\r\n      </tr>\r\n    </ng-container>\r\n  </tbody>\r\n</nz-table>\r\n","styles":[":host{display:inline-block;width:100%}.color-red{cursor:pointer;color:#fd605e!important}.bg-red{padding:5px 10px;background:#ffeded!important}.color-green{color:#2dbb2d!important}.bg-green{padding:5px 10px;background:#edf6ef!important}.bg-default{padding:5px 10px;background:#f3f4f9!important}.delete-line{position:relative;margin-left:5px!important}.delete-line::after{position:absolute;left:-10px;top:50%;width:calc(100% + 20px);height:1px;background:rgba(73,83,110,.6);content:\"\"}.line-before-default{position:relative;margin-left:40px!important}.line-before-default::before{position:absolute;left:-20px;top:0;width:1px;height:100%;background:rgba(73,83,110,.6);content:\"\"}.line-before-red{position:relative;margin-left:40px!important}.line-before-red::before{position:absolute;left:-20px;top:0;width:1px;height:100%;background:#fd605e;content:\"\"}.line-before-green{position:relative;margin-left:40px!important}.line-before-green::before{position:absolute;left:-20px;top:0;width:1px;height:100%;background:#62b673;content:\"\"}.table-header{min-width:150px;text-align:center}td{text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"tableData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"openEffect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccAudioComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"icc-audio","template":"<audio #audioview *ngIf=\"!isAmr\" [src]=\"url\" controls=\"controls\" (canplay)=\"handleCanplay()\" (error)=\"handelError()\" muted>\r\n  您的浏览器不支持 audio 标签。\r\n</audio>\r\n\r\n<!---->\r\n<div class=\"amr\" *ngIf=\"isAmr\" (mousemove)=\"dragging($event)\" (mouseleave)=\"dragEnd($event)\" (mouseup)=\"dragEnd($event)\">\r\n  <i *ngIf=\"!isRunning\" nz-icon nzType=\"caret-right\" nzTheme=\"outline\" (click)=\"run()\"></i>\r\n  <i *ngIf=\"isRunning\" nz-icon nzType=\"pause\" nzTheme=\"outline\" (click)=\"pause()\"></i>\r\n  <label class=\"amr-time\">\r\n    <span>{{ currentTime }}</span>\r\n    <span class=\"chart\">/</span>\r\n    <span>{{ duration }}</span>\r\n  </label>\r\n  <div class=\"amr-progress\">\r\n    <span class=\"amr-block\" [ngStyle]=\"{ 'margin-left': (currentTime / duration) * 108 + 'px' }\" (mousedown)=\"dragStart($event)\"></span>\r\n  </div>\r\n</div>\r\n<p *ngIf=\"errorText\" class=\"error\">{{ errorText }}</p>\r\n","styles":[":host{display:inline-block;border-radius:25px;width:280px;height:54px;background:#f1f3f4}audio{width:100%}.amr{display:flex;float:left;clear:both;justify-content:center;align-items:center;border-radius:inherit;width:100%;height:100%;background:0 0;color:#000!important}.amr i{margin:0 8px;cursor:pointer;font-weight:bolder;font-size:20px}.amr .amr-time{color:#49536e;white-space:nowrap}.amr .amr-time .chart{margin:0 4px}.amr .amr-progress{display:flex;align-items:center;margin:0 10px;border-radius:4px;width:120px;height:4px;background:#ccc}.amr .amr-progress .amr-block{display:inline-block;border-radius:50%;width:12px;height:12px;background:#000;cursor:pointer}.error{margin:5px 0 0;padding-right:25px;line-height:2;text-align:right}"]}]}],"members":{"url":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"canplay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":17,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"audioView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":3},"arguments":["audioview",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":43,"character":27}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"amrLoad":[{"__symbolic":"method"}],"run":[{"__symbolic":"method"}],"pause":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"watchTime":[{"__symbolic":"method"}],"dragStart":[{"__symbolic":"method"}],"dragging":[{"__symbolic":"method"}],"dragEnd":[{"__symbolic":"method"}],"handleCanplay":[{"__symbolic":"method"}],"handelError":[{"__symbolic":"method"}]}},"IccAudioUploadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"icc-audio-upload","template":"<div class=\"upload-area\" *ngIf=\"!fileUrl\">\r\n  <nz-upload class=\"nz-upload-cls\" [nzAction]=\"nzAction\" [nzCustomRequest]=\"customRequest\" [nzDisabled]=\"disabled\" [nzBeforeUpload]=\"beforeUpload\" nzListType=\"picture-card\" [nzName]=\"'file'\" [(nzFileList)]=\"nzFileList\">\r\n    <i nz-icon nzType=\"plus\"></i>\r\n    <p>上传音频</p>\r\n  </nz-upload>\r\n  <div class=\"tips-wapper\">\r\n    <div class=\"tips\" *ngIf=\"!isSupportExtendFormat\">仅支持 AMR 格式</div>\r\n    <div class=\"tips\" *ngIf=\"isSupportExtendFormat\">支持 AMR、MP3、M4A 格式</div>\r\n    <!-- <div class=\"tips\">播放时长不超过60s</div> -->\r\n    <div class=\"tips\">文件大小不超过{{ fileSizeLimit }}MB</div>\r\n  </div>\r\n</div>\r\n<div *ngIf=\"fileUrl\" class=\"voice-wrapper\">\r\n  <icc-audio [url]=\"fileUrl\"></icc-audio>\r\n  <icc-image *ngIf=\"!disabled\" class=\"remove-img\" (click)=\"removeAudio($event)\" src=\"assets/images/btnIcon/delete_red.png\"></icc-image>\r\n</div>\r\n","styles":[".upload-area{display:flex;flex-direction:row;align-items:center}.upload-area .tips-wapper{display:flex;flex-direction:column;justify-content:center;margin-left:10px}.upload-area .tips-wapper .tips{height:30px;line-height:30px;font-size:13px;color:#999}.nz-upload-cls{margin-right:10px;width:104px;height:104px}.voice-wrapper{display:flex;align-items:center}.remove-img{margin-left:10px;cursor:pointer}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":28},{"__symbolic":"reference","name":"DialogService"}]}],"nzAction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"fileUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"isSupportExtendFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"fileSizeLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"delete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"success":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"nzBeforeUpload":[{"__symbolic":"method"}],"removeAudio":[{"__symbolic":"method"}]}},"IccButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"icc-button","template":"<button\r\n  nz-button\r\n  type=\"button\"\r\n  (click)=\"handleClick($event)\"\r\n  [nzLoading]=\"btnLoading\"\r\n  [ngStyle]=\"{\r\n    backgroundColor: isDisabled ? btnTypes['disabled'].fillColor : btnTypes[btnType].fillColor,\r\n    borderColor: isDisabled ? btnTypes['disabled'].borderColor : btnTypes[btnType].borderColor,\r\n    color: isDisabled ? btnTypes['disabled'].textColor : btnTypes[btnType].textColor\r\n  }\"\r\n  (mouseover)=\"handleMouseover()\"\r\n  (mouseleave)=\"handleMouseleave()\"\r\n  [disabled]=\"isDisabled\"\r\n  http-host\r\n  [loading]=\"http.loading\"\r\n>\r\n  <ng-content></ng-content>\r\n</button>\r\n","styles":[":host{display:inline-block;margin:0 16px 0 0}:host ::ng-deep button{display:flex;align-items:center;justify-content:center;float:left;clear:both;width:100%}:host ::ng-deep .ant-btn{height:32px;line-height:30px}:host ::ng-deep .ant-btn>span{display:flex;align-items:center}:host ::ng-deep .ant-btn>span img{width:18px;margin:0 2px}:host ::ng-deep .ant-btn>span span{margin:0 2px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":10,"character":27},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":10,"character":52},{"__symbolic":"reference","name":"EventService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":10,"character":106}]}],"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"isDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"btnType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"btnClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":14,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}],"limitHttpTimes":[{"__symbolic":"method"}],"handleMouseover":[{"__symbolic":"method"}],"handleMouseleave":[{"__symbolic":"method"}],"changeState":[{"__symbolic":"method"}]}},"IccFakeTextAreaComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-fake-textarea","template":"<!-- HTML contenteditable  by：LHD    -->\r\n<div\r\n  #mockTextarea\r\n  [ngStyle]=\"{\r\n    height: height ? height + 'px' : '150px',\r\n    'background-color': isDisabled ? ' #f5f5f5' : '#ffffff'\r\n  }\"\r\n  (input)=\"handleInputChange($event)\"\r\n  (click)=\"handleBlur()\"\r\n  class=\"mockTextarea\"\r\n  attr.contenteditable=\"{{ !isDisabled }}\"\r\n  attr.placeholder=\"{{ placeholder }}\"\r\n></div>\r\n","styles":[".mockTextarea{display:inline-block;overflow-x:hidden;overflow-y:auto;flex-direction:column;padding:8px 10px;border:1px solid #d9d9d9;border-color:-internal-light-dark(#767676,#858585);border-radius:4px;-o-border-image:initial;border-image:initial;width:100%;max-width:100%;height:150px;min-height:150px;-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;background-color:-internal-light-dark(#fff,#3b3b3b);resize:auto;cursor:text;vertical-align:middle;text-overflow:ellipsis;text-align:start;text-indent:0;text-shadow:none;text-transform:none;font:400 13.3333px Arial;color:#49536e;overflow-wrap:break-word;word-break:break-all;word-spacing:normal;letter-spacing:normal;white-space:pre-wrap;transition:.3s,height;-webkit-transition:.3s,height;scrollbar-color:rgba(0,0,0,.3) #6e6e6e;scrollbar-width:thin;text-rendering:auto;-webkit-rtl-ordering:logical}.mockTextarea:hover{border-color:#40a9ff!important}.mockTextarea:focus{outline:0;box-shadow:0 0 5px rgba(222,240,255,.8);-webkit-box-shadow-color:#1890ff}.mockTextarea:focus:before{content:none}.mockTextarea:empty:before{padding-top:10px;line-height:21px;vertical-align:middle;font-size:14px;color:#ccc;content:attr(placeholder)}.mockTextarea .innerPaster,.mockTextarea .innerShortLink{display:inline-block;border:1px solid #b8e5f5;width:auto;height:21px;background:rgba(184,229,245,.14)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":8,"character":27}]}],"mockTextarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":10,"character":3},"arguments":["mockTextarea",{"static":false}]}]}],"isTplEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"pasterList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"targetUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"serverUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"maxlength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"isDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"emitCursorOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"addToDom":[{"__symbolic":"method"}],"moveFocus":[{"__symbolic":"method"}],"emitValue":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"handleBlur":[{"__symbolic":"method"}],"getCursorPosition":[{"__symbolic":"method"}],"displayValue":[{"__symbolic":"method"}]}},"IccIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-icon","styles":[],"template":"<img [ngStyle]=\"{ width: isHundredWidth ? '100%' : 'auto' }\" [hidden]=\"isHover\" [src]=\"icon\" (mouseenter)=\"isHover = true\" alt=\"\" />\r\n<img [ngStyle]=\"{ width: isHundredWidth ? '100%' : 'auto' }\" [hidden]=\"!isHover\" [src]=\"hoverIcon\" (mouseleave)=\"isHover = false\" (click)=\"imgClick()\" alt=\"\" />\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"icon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"hoverIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"isHundredWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"iconClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":17,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"imgClick":[{"__symbolic":"method"}]}},"IccImageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"icc-image","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"<img *ngIf=\"loadUrl\" class=\"icc-img\" [src]=\"loadUrl\" [alt]=\"alt\" ondragstart=\"return false;\" />\r\n<div *ngIf=\"!loadUrl\" class=\"mask-block\"></div>\r\n","styles":[":host{display:inline-block;overflow:hidden}.icc-img{width:inherit;max-width:100%;height:inherit;max-height:100%}.mask-block{width:100%;height:100%;background-color:transparent}"]}]}],"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"alt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"changes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":46,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":46,"character":51}]}],"ngOnChanges":[{"__symbolic":"method"}],"updateAlt":[{"__symbolic":"method"}],"lazyLoadByObserver":[{"__symbolic":"method"}]}},"IccImageUploadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"icc-image-upload","template":"<div class=\"img-wrapper\">\r\n  <ul [ngClass]=\"{ readOnly: !editable }\">\r\n    <!-- 正确上传的列表 -->\r\n    <ng-container *ngFor=\"let item of imgList; let i = index\">\r\n      <li class=\"img-container\" [ngStyle]=\"{ width: width + 'px', height: width + 'px', margin: !editable && 0 }\" (click)=\"showDialog(i)\" complete>\r\n        <div class=\"img-box\" [ngStyle]=\"{ background: scene !== 'timeline' ? 'black' : 'transparent' }\">\r\n          <div style=\"width: 100%;height: 100%;\" class=\"placeholder\" [ngClass]=\"{ active: i == actIndex }\" [ngStyle]=\"{ 'background-image': 'url(' + item.url + ')' }\">\r\n            <icc-image [src]=\"item.url\" class=\"download-box\" error=\"./assets/images/nothing/invalid_white.png\" (changes)=\"updateUrl($event, item)\"> </icc-image>\r\n          </div>\r\n          <!-- <img [src]=\"item.url\" class=\"img\" /> -->\r\n        </div>\r\n\r\n        <div class=\"title-box\" *ngIf=\"scene !== 'timeline'\">\r\n          <span class=\"shadow\"></span>\r\n          <p class=\"name\">{{ item.name }}</p>\r\n        </div>\r\n\r\n        <a class=\"btn-close\" nz-tooltip nzTooltipTitle=\"删除图片\" (click)=\"removeImage(imgList, i)\"></a>\r\n      </li>\r\n    </ng-container>\r\n\r\n    <!-- 上传中列表 -->\r\n    <ng-container *ngFor=\"let item of loadingList; let i = index\">\r\n      <li class=\"img-container\" loading [ngStyle]=\"{ width: width + 'px', height: width + 'px' }\">\r\n        <span class=\"loading-box\">\r\n          <i nz-icon nzType=\"loading\" nzTheme=\"outline\"></i>\r\n        </span>\r\n        <div class=\"title-box\">\r\n          <span class=\"shadow\"></span>\r\n          <p class=\"name\">{{ item.name }}</p>\r\n        </div>\r\n        <a class=\"btn-close\" nz-tooltip nzTooltipTitle=\"删除图片\" (click)=\"removeImage(loadingList, i)\"></a>\r\n      </li>\r\n    </ng-container>\r\n\r\n    <!-- 上传失败的列表 -->\r\n    <ng-container *ngFor=\"let item of errorList; let i = index\">\r\n      <li class=\"img-container\" error [ngStyle]=\"{ width: width + 'px', height: width + 'px' }\">\r\n        <div class=\"error-box\">\r\n          <p class=\"name\">{{ item.name }}</p>\r\n          <p class=\"tips\">该图片上传失败</p>\r\n        </div>\r\n        <a class=\"btn-close\" nz-tooltip nzTooltipTitle=\"删除图片\" (click)=\"removeImage(errorList, i)\"></a>\r\n      </li>\r\n    </ng-container>\r\n\r\n    <li class=\"img-container img-container-upload\" [hidden]=\"imgList.length >= maxCount || imgList.length > 0\" [ngStyle]=\"{ width: width + 'px', height: width + 'px' }\">\r\n      <span class=\"ico-add\"></span>\r\n      <p class=\"title\">上传图片</p>\r\n      <p class=\"tips\">支持{{ allowTypeText }}格式</p>\r\n      <!-- <p class=\"tips\">支持批量上传</p> -->\r\n      <p class=\"tips\">图片总大小不超过{{ this.maxSize }}m</p>\r\n\r\n      <div class=\"no-drop\" [hidden]=\"imgList.length > 0\"></div>\r\n      <nz-upload class=\"avatar-uploader\" nzShowUploadList=\"false\" [nzAction]=\"uploadImage\" [nzBeforeUpload]=\"thumbBeforeUpload\" [nzCustomRequest]=\"thumbCustomReq\" nzListType=\"picture-card\" [nzAccept]=\"['.jpg', '.jpeg', '.png']\">\r\n        <i nz-icon nzType=\"plus\" class=\"plus-icon\"></i>\r\n        <div class=\"ant-upload-text\">上传封面 <br /><span style=\"font-size:13px\">900*500</span></div>\r\n      </nz-upload>\r\n    </li>\r\n  </ul>\r\n\r\n  <!-- 弹窗部分 -->\r\n  <nz-modal nzWrapClassName=\"vertical-center-modal\" [nzVisible]=\"isVisibleMiddle\" [nzContent]=\"modalContent\" [nzFooter]=\"null\" nzWidth=\"100%\" nzHeight=\"100%\" nzClosable=\"false\" (nzOnCancel)=\"isVisibleMiddle = false\" class=\"image-modal\"> </nz-modal>\r\n\r\n  <ng-template #modalContent>\r\n    <span class=\"mask\" (click)=\"isVisibleMiddle = false\"></span>\r\n\r\n    <ng-container *ngFor=\"let item of imgList; let i = index\">\r\n      <div (click)=\"isVisibleMiddle = false\" class=\"img-container\" [ngClass]=\"{ active: i == actIndex }\" [ngStyle]=\"{ 'background-image': 'url(' + item.url + ')' }\">\r\n        <img [src]=\"item.url\" style=\"width: 100%;height: 100%;opacity: 0;\" />\r\n      </div>\r\n    </ng-container>\r\n\r\n    <a *ngIf=\"imgList.length > 1\" href=\"javascript:;\" (click)=\"prevFocusImg()\" class=\"arrow arrow-prev\"></a>\r\n    <a *ngIf=\"imgList.length > 1\" href=\"javascript:;\" (click)=\"nextFocusImg()\" class=\"arrow arrow-next\"></a>\r\n\r\n    <ul *ngIf=\"imgList.length > 1\" class=\"circle-container\">\r\n      <ng-container *ngFor=\"let item of imgList; let i = index\">\r\n        <li class=\"circle\" [ngClass]=\"{ active: i == actIndex }\"></li>\r\n      </ng-container>\r\n    </ul>\r\n  </ng-template>\r\n</div>\r\n","styles":[".center-align{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.no-select{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.img-wrapper{position:relative;padding:0;overflow:hidden;line-height:1}.img-wrapper ul{position:relative;padding-left:0}.img-wrapper ul::before{display:table;content:''}.img-wrapper p{margin:0}.img-wrapper .img-container{position:relative;display:inline-block;margin:10px;text-align:center;vertical-align:top}.img-wrapper .img-container .placeholder{width:100%;height:100%;background-repeat:no-repeat;background-position:center;background-size:contain}.img-wrapper .img-container .placeholder .download-box{position:absolute;top:0;left:0;z-index:999;width:100%;height:100%;opacity:0}.img-wrapper .img-container .loading-box{width:40px;height:40px;color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.img-wrapper .img-container .title-box{text-align:left}.img-wrapper .img-container .title-box .shadow{position:absolute;top:0;bottom:0;left:0;width:100%;background-image:linear-gradient(0,#000,rgba(255,0,0,0) 45%)}.img-wrapper .img-container .title-box .name{position:absolute;right:0;bottom:0;left:0;box-sizing:border-box;margin:0;padding:0 9px;overflow:hidden;color:#fff;font-size:12px;line-height:31px;white-space:nowrap;text-overflow:ellipsis}.img-wrapper .img-container .img-box{position:relative;height:100%;overflow:hidden;background:#000}.img-wrapper .img-container .img-box .img{width:100%;height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.img-wrapper .img-container .error-box{margin-top:77px;color:gray}.img-wrapper .img-container .error-box .name{margin-top:45px;color:gray}.img-wrapper .img-container .error-box .tips{margin-top:8px;color:#ff4545}.img-wrapper .img-container .btn-close{position:absolute;top:-13px;right:-13px;width:26px;height:26px;background:#fff;border-radius:50%;cursor:pointer}.img-wrapper .img-container .btn-close::before{width:80%;height:80%;background-color:#ff4545;border-radius:50%;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.img-wrapper .img-container .btn-close::after{width:50%;height:3px;background:#fff;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.img-wrapper .img-container[complete]{cursor:pointer}.img-wrapper .img-container[loading]{background:gray}.img-wrapper .img-container[error]{background-color:#fff4f6;border:1px dashed #ff4545}.img-wrapper .img-container ::ng-deep .avatar-uploader:hover .plus-icon{color:#45c9ac}.img-wrapper .img-container ::ng-deep .avatar-uploader:hover .ant-upload{border-color:#45c9ac}.img-wrapper .img-container ::ng-deep .avatar-uploader:hover .ant-upload-text{color:#45c9ac}.img-wrapper .img-container-upload{text-align:center;border:1px dashed #bbb;cursor:pointer}.img-wrapper .img-container-upload .ico-add{position:relative;display:block;width:17px;height:2px;margin:50px auto 0;background-color:#37ba9d}.img-wrapper .img-container-upload .ico-add::before{width:2px;height:17px;background-color:#37ba9d;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.img-wrapper .img-container-upload .title{margin-top:16px;margin-bottom:18px;font-size:15px}.img-wrapper .img-container-upload .tips{margin-top:7px;color:#bfbfbf;font-size:13px}.img-wrapper .img-container-upload /deep/ .ant-upload{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0}.img-wrapper .img-container-upload /deep/ .ant-upload-list-item,.img-wrapper .img-container-upload /deep/ .ant-upload-list-picture-card{opacity:0}.img-wrapper .no-drop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:99;display:none;cursor:no-drop}.img-wrapper .readOnly{margin:0}.img-wrapper .readOnly .btn-close{display:none}.img-wrapper .readOnly .no-drop{display:block}.image-modal /deep/ .ant-modal-content{background:rgba(0,0,0,.34)}.image-modal /deep/ .ant-modal,.image-modal /deep/ .ant-modal-body,.image-modal /deep/ .ant-modal-content{width:100%;height:100%;padding:0}.image-modal .img-container{position:absolute;top:15%;right:0;bottom:15%;left:0;background-repeat:no-repeat;background-position:center;background-size:contain;visibility:hidden;opacity:0;transition:.3s}.image-modal .img-container.active{visibility:visible;opacity:1}.image-modal .arrow{position:absolute;top:40%;width:44px;height:100px;color:#bdb9b9;font-size:27px;line-height:80px;cursor:pointer}.image-modal .arrow.arrow-prev{left:0;background:url(../../../../assets/images/layout/spr-arrow-prev.png) top/100% no-repeat}.image-modal .arrow.arrow-next{right:0;background:url(../../../../assets/images/layout/spr-arrow-next.png) top/100% no-repeat}.image-modal .arrow:hover{background-position:bottom}.image-modal .mask{position:absolute;top:0;right:0;bottom:0;left:0}.image-modal .circle-container{position:absolute;bottom:1%;left:50%;text-align:center;transform:translateX(-50%)}.image-modal .circle-container .circle{display:inline-block;width:10px;height:10px;margin:6px;vertical-align:middle;background:#fff;border-radius:50%;opacity:.4;transition:opacity .3s}.image-modal .circle-container .circle.active{opacity:1}"]}]}],"members":{"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"uploadImage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"maxCount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"maxSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"singleSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"exceptImage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"success":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":47,"character":3}}]}],"fail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":51,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":55,"character":3}}]}],"imgList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"scene":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":63,"character":28},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzMessageService","line":63,"character":58}]}],"ngOnInit":[{"__symbolic":"method"}],"addImage":[{"__symbolic":"method"}],"removeImage":[{"__symbolic":"method"}],"emptyList":[{"__symbolic":"method"}],"showDialog":[{"__symbolic":"method"}],"changFocusImg":[{"__symbolic":"method"}],"prevFocusImg":[{"__symbolic":"method"}],"nextFocusImg":[{"__symbolic":"method"}],"updateUrl":[{"__symbolic":"method"}],"imageArr2String":[{"__symbolic":"method"}],"byte2m":[{"__symbolic":"method"}],"validateImageType":[{"__symbolic":"method"}],"validateImageSize":[{"__symbolic":"method"}],"validateAllImagesSize":[{"__symbolic":"method"}],"getAllmagesSize":[{"__symbolic":"method"}]}},"IccMsgFormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"icc-msg-form","template":"<div class=\"icc-msg-form\" *ngIf=\"form\">\r\n  <!-- 使用用户的自定义表单 -->\r\n  <ng-container *ngIf=\"!useGuideIndex\">\r\n    <ng-container *ngFor=\"let item of form; index as i\">\r\n      <!-- 多行文本的模板列表采用另一种数据形式，其他的则统一该种模板方式 -->\r\n      <p *ngIf=\"item.config.isHasTemplate && 'textarea' !== item.type\" style=\"width: 100%; margin: 5px 0;\">\r\n        {{ item.config.templateName }}\r\n      </p>\r\n      <div class=\"icc-msg-item\" [ngStyle]=\"{ width: item.width }\">\r\n        <label\r\n          *ngIf=\"item.label\"\r\n          [ngStyle]=\"{\r\n            width: item.labelWidth + 'px' || '',\r\n            'padding-top': item.config.isHasPaster && !item.disabled ? '10px' : ''\r\n          }\"\r\n          class=\"icc-msg-item-name\"\r\n        >\r\n          <span *ngIf=\"item.require\" class=\"icc-msg-item-require\">*&nbsp;</span>\r\n          {{ item.label }}：\r\n        </label>\r\n        <div class=\"icc-msg-item-value\">\r\n          <!-- 单行文本 -->\r\n          <input *ngIf=\"'input' === item.type\" type=\"text\" nz-input [disabled]=\"!!item.disabled\" [(ngModel)]=\"item.config.value\" [maxlength]=\"item.maxlength\" placeholder=\"{{ item.placeholder }}\" class=\"comp-item\" />\r\n          <!-- 多行文本（包含自动匹配模板情况） -->\r\n          <ng-container *ngIf=\"'textarea' === item.type\">\r\n            <ng-container *ngIf=\"!item.config.isHasTemplate\">\r\n              <div\r\n                class=\"tag-group\"\r\n                [ngStyle]=\"{\r\n                  'margin-bottom': item.config.isHasPaster && !item.disabled ? '-10px' : 0\r\n                }\"\r\n                *ngIf=\"item.config.extraTag && item.config.extraTag.list && item.config.extraTag.list.length && isShowTags\"\r\n              >\r\n                <nz-tag\r\n                  *ngFor=\"let tag of item.config.extraTag.list\"\r\n                  [nzMode]=\"item.config.extraTag.nzMode || 'default'\"\r\n                  (click)=\"varClick(tag, item, i)\"\r\n                  [ngStyle]=\"{\r\n                    cursor: item.disabled ? 'not-allowed' : ''\r\n                  }\"\r\n                >\r\n                  {{ tag.name }}\r\n                </nz-tag>\r\n              </div>\r\n              <div class=\"btn-wrapper\">\r\n                <button *ngIf=\"item.config.isHasPaster && !item.disabled\" (click)=\"pasterClick(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n                  <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                  <span>添加贴片</span>\r\n                </button>\r\n                <button *ngIf=\"item.config.isHasShortLink && !item.disabled\" (click)=\"shortLinkClick(item, textArea.nativeElement)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n                  <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                  <span>添加短链</span>\r\n                </button>\r\n                <icc-patch-popover *ngFor=\"let item of item.config.pasterList\" [target]=\"item\" style=\"margin: 0 10px 10px 0;\"></icc-patch-popover>\r\n              </div>\r\n              <!-- <textarea\r\n                #textArea\r\n                nz-input\r\n                [disabled]=\"item.disabled\"\r\n                [(ngModel)]=\"item.config.value\"\r\n                (ngModelChange)=\"textAreaChange(item.config)\"\r\n                rows=\"5\"\r\n                [maxlength]=\"item.maxlength\"\r\n                [ngStyle]=\"{\r\n                  'min-height': item.config.height ? item.config.height + 'px' : '150px',\r\n                  height: item.config.height ? item.config.height + 'px' : '150px'\r\n                }\"\r\n                placeholder=\"{{ item.placeholder }}\"\r\n              ></textarea> -->\r\n              <!-- icc-fake-textarea -->\r\n              <icc-fake-textarea #textArea style=\"width: 100%;\" (valueChange)=\"handelValueChange($event, item.config)\" [value]=\"item.config.value\" [pasterList]=\"item.config.pasterList\" [targetUrl]=\"item.config.targetUrl\" (emitCursorOffset)=\"setCursorOffset($event, item.config)\" *ngIf=\"!item.disabled\" [maxlength]=\"item.maxLength\" [height]=\"item.config.height\" [placeholder]=\"item.placeholder\" isTplEdit=\"true\"></icc-fake-textarea>\r\n              <p style=\"width: 100%;line-height: 1.4;color: #969595;font-size: 12px;text-align: right;\">已输入{{ item?.config?.value?.length }}/{{ item.maxLength }}</p>\r\n              <!-- 手动选择模版-显示 -->\r\n              <icc-fake-textarea *ngIf=\"item.disabled\" style=\"width: 100%;\" [isDisabled]=\"true\" [value]=\"item.config.value\" [pasterList]=\"item.config.pasterList\" [targetUrl]=\"item.config.targetUrl\"></icc-fake-textarea>\r\n\r\n              <!-- ----------------- -->\r\n              <span style=\"width: 100%;text-align: right;\" *ngIf=\"item.config.extraTag && item.config.extraTag.isHasSegment && item.config.extraTag.segments && item.config.extraTag.segments > 1\">\r\n                共&nbsp;\r\n                <b>{{ item.config.value.length }}</b>\r\n                &nbsp;字， 预计分&nbsp;\r\n                <b style=\"color:red;\">{{ item.config.extraTag.segments }}</b>\r\n                &nbsp;段\r\n              </span>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"item.config.isHasTemplate\">\r\n              <div *ngFor=\"let tplItem of item.config.templateList\" style=\"width: 100%;\">\r\n                <p style=\"width: 80%; margin: 5px 0;\">\r\n                  {{ tplItem.name }}\r\n                </p>\r\n                <textarea\r\n                  #textArea\r\n                  nz-input\r\n                  [disabled]=\"!!item.disabled\"\r\n                  [(ngModel)]=\"tplItem.content\"\r\n                  (ngModelChange)=\"textAreaChange(item.config)\"\r\n                  rows=\"5\"\r\n                  [maxlength]=\"item.maxlength\"\r\n                  [ngStyle]=\"{\r\n                    'min-height': item.config.height ? item.config.height + 'px' : '150px',\r\n                    height: item.config.height ? item.config.height + 'px' : '150px'\r\n                  }\"\r\n                  class=\"comp-item\"\r\n                ></textarea>\r\n              </div>\r\n            </ng-container>\r\n          </ng-container>\r\n          <!-- 富文本-->\r\n          <ng-container *ngIf=\"'editor' === item.type\">\r\n            <div\r\n              class=\"tag-group\"\r\n              [ngStyle]=\"{\r\n                'margin-bottom': item.config.isHasPaster && !item.disabled ? '-10px' : 0\r\n              }\"\r\n              *ngIf=\"item.config.extraTag && item.config.extraTag.list && item.config.extraTag.list.length\"\r\n            >\r\n              <nz-tag\r\n                *ngFor=\"let tag of item.config.extraTag.list\"\r\n                [nzMode]=\"item.config.extraTag.nzMode || 'default'\"\r\n                (click)=\"varClick(tag, item, i)\"\r\n                [ngStyle]=\"{\r\n                  cursor: item.disabled ? 'not-allowed' : ''\r\n                }\"\r\n              >\r\n                {{ tag.name }}\r\n              </nz-tag>\r\n            </div>\r\n            <div class=\"btn-wrapper\">\r\n              <button *ngIf=\"item.config.isHasPaster && !item.disabled\" (click)=\"pasterClick(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n                <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                <span>添加贴片</span>\r\n              </button>\r\n              <button *ngIf=\"item.config.isHasShortLink && !item.disabled\" (click)=\"addWXShortLink(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n                <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                <span>添加短链</span>\r\n              </button>\r\n              <icc-patch-popover *ngFor=\"let item of item.config.pasterList\" [target]=\"item\" style=\"margin: 0 10px 10px 0;\"></icc-patch-popover>\r\n            </div>\r\n            <div style=\"width: 100%;\">\r\n              <ngx-neditor #ngxEditor name=\"icc_wechat_rich_editor\" [config]=\"editorConfig\" [loadingTip]=\"'加载中……'\" [(ngModel)]=\"item.config.value\" (neOnReady)=\"nedReady($event, item)\" (neOnDestroy)=\"neDestroy()\" (ngModelChange)=\"inputChange(item.config)\" class=\"comp-item\"> </ngx-neditor>\r\n              <div style=\"line-height: 20px;font-size: 12px;color: #aaa;\">上传的图片大小不可超过2M，否则无法上传!</div>\r\n            </div>\r\n          </ng-container>\r\n\r\n          <!-- 视频上传 -->\r\n          <icc-video *ngIf=\"'icc-video' === item.type\" [url]=\"item.config.url\" [req]=\"item.config.req\" [size]=\"item.config.size\" [disabled]=\"item.config.disabled\" [name]=\"item.config.name\" (success)=\"item.config.success($event)\" (fail)=\"item.config.fail($event)\" (cancel)=\"item.config.cancel($event)\" (videoRemove)=\"item.config.videoRemove($event)\" (closeModel)=\"item.config.closeModel($event)\"></icc-video>\r\n          <!-- nz-upload -->\r\n          <nz-upload\r\n            *ngIf=\"'nz-upload' === item.type\"\r\n            class=\"avatar-uploader\"\r\n            [nzAction]=\"item.config.nzAction\"\r\n            [nzCustomRequest]=\"item.config.nzCustomRequest\"\r\n            [nzBeforeUpload]=\"item.config.nzBeforeUpload\"\r\n            nzListType=\"picture-card\"\r\n            [nzName]=\"'file'\"\r\n            [(nzFileList)]=\"item.config.nzFileList\"\r\n            [nzShowButton]=\"item.config.nzFileList.length < 1\"\r\n            [nzShowUploadList]=\"item.config.nzShowUploadList\"\r\n            (nzChange)=\"item.config.nzChange($event)\"\r\n            [nzRemove]=\"item.config.nzRemove\"\r\n            [nzPreview]=\"handlePreview\"\r\n            [nzAccept]=\"['.jpg', '.jpeg', '.png']\"\r\n            [nzDisabled]=\"item.config.nzDisabled\"\r\n          >\r\n            <i nz-icon class=\"plus-icon\" nzType=\"plus\"></i>\r\n            <div *ngIf=\"item.config.slot\" [innerHTML]=\"item.config.slot | html\"></div>\r\n          </nz-upload>\r\n          <!-- 自定义图片上传 -->\r\n          <icc-image-upload *ngIf=\"'icc-image-upload' === item.type\" [imgList]=\"item.config.imgList\" [editable]=\"item.config.editable\" [uploadImage]=\"item.config.uploadImage\" [maxCount]=\"item.config.maxCount\" [maxSize]=\"item.config.maxSize\" [singleSize]=\"item.config.singleSize\" [width]=\"item.config.width\" (success)=\"item.config.success($event)\" (remove)=\"item.config.remove($event)\" (fail)=\"item.config.fail($event)\"></icc-image-upload>\r\n\r\n          <!-- 自定义音频上传组件 -->\r\n          <icc-audio-upload *ngIf=\"'icc-audio-upload' === item.type\" [disabled]=\"item.config.disabled\" [nzAction]=\"item.config.nzAction\" [fileUrl]=\"item.config.fileUrl\" (success)=\"item.config.success($event)\" (delete)=\"item.config.delete($event)\"></icc-audio-upload>\r\n\r\n          <!-- nz-tabset -->\r\n          <nz-tabset *ngIf=\"'nz-tabset' === item.type && item.tabList\" [nzSelectedIndex]=\"item.activeIndex\" (nzSelectedIndexChange)=\"tabChange($event, item)\">\r\n            <nz-tab *ngFor=\"let tabItem of item.tabList\" [nzTitle]=\"tabItem.title\" [nzDisabled]=\"tabItem.disabled\">\r\n              <icc-msg-form [form]=\"tabItem.form\"></icc-msg-form>\r\n            </nz-tab>\r\n          </nz-tabset>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </ng-container>\r\n  <!-- 使用根据guide匹配的默认表单 -->\r\n  <ng-container *ngIf=\"useGuideIndex\">\r\n    <div class=\"icc-msg-item\" *ngFor=\"let item of form; index as i\" [ngStyle]=\"{ width: item.width }\">\r\n      <label\r\n        *ngIf=\"item.label\"\r\n        [ngStyle]=\"{\r\n          width: item.labelWidth + 'px' || '',\r\n          'padding-top': item.config.isHasPaster && !item.disabled ? '10px' : ''\r\n        }\"\r\n        class=\"icc-msg-item-name\"\r\n      >\r\n        <span *ngIf=\"item.require\" class=\"icc-msg-item-require\">*&nbsp;</span>\r\n        {{ item.label }}：\r\n      </label>\r\n      <div class=\"icc-msg-item-value\">\r\n        <!-- 单行文本 -->\r\n        <input *ngIf=\"'input' === item.type\" type=\"text\" nz-input [disabled]=\"!!item.disabled\" [(ngModel)]=\"selectedItem[item.config.index]\" [maxlength]=\"item.maxlength\" placeholder=\"{{ item.placeholder }}\" class=\"comp-item\" />\r\n        <!-- 多行文本（包含sms模板及非模板情况） -->\r\n        <ng-container *ngIf=\"'textarea' === item.type\">\r\n          <div class=\"tag-group\" [ngStyle]=\"{ 'margin-bottom': item.config.isHasPaster && !item.disabled ? '-10px' : 0 }\" *ngIf=\"!item.config.isHasTemplate && item.config.extraTag && item.config.extraTag.list && item.config.extraTag.list.length\">\r\n            <nz-tag *ngFor=\"let tag of item.config.extraTag.list\" [nzMode]=\"item.config.extraTag.nzMode || 'default'\" (click)=\"varClick(tag, item, i)\">\r\n              {{ tag.name }}\r\n            </nz-tag>\r\n          </div>\r\n          <p *ngIf=\"item.config.isHasTemplate\" style=\"width: 100%;\">\r\n            {{ item.config.templateName }}\r\n          </p>\r\n          <div class=\"btn-wrapper\">\r\n            <button *ngIf=\"item.config.isHasPaster && !item.disabled\" (click)=\"pasterClick(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n              <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n              <span>添加贴片</span>\r\n            </button>\r\n            <icc-patch-popover *ngFor=\"let item of item.config.pasterList\" [target]=\"item\" style=\"margin: 0 10px 10px 0;\"></icc-patch-popover>\r\n          </div>\r\n          <textarea\r\n            #textArea\r\n            nz-input\r\n            [disabled]=\"!!item.disabled\"\r\n            [(ngModel)]=\"selectedItem[item.config.index]\"\r\n            (ngModelChange)=\"textAreaChange(item.config)\"\r\n            rows=\"5\"\r\n            [maxlength]=\"item.maxlength\"\r\n            [ngStyle]=\"{\r\n              'min-height': item.config.height ? item.config.height + 'px' : '150px',\r\n              height: item.config.height ? item.config.height + 'px' : '150px'\r\n            }\"\r\n            placeholder=\"{{ item.placeholder }}\"\r\n            class=\"comp-item comp-textarea\"\r\n          ></textarea>\r\n          <span style=\"width: 100%;\" *ngIf=\"item.config.extraTag && item.config.extraTag.isHasSegment && item.config.extraTag.segments && item.config.extraTag.segments > 1\">\r\n            共&nbsp;\r\n            <b>{{ item.config.value.length }}</b>\r\n            &nbsp;字， 预计分&nbsp;\r\n            <b style=\"color:red;\">{{ item.config.extraTag.segments }}</b>\r\n            &nbsp;段\r\n          </span>\r\n        </ng-container>\r\n        <!-- 富文本  -->\r\n        <ng-container *ngIf=\"'editor' === item.type\">\r\n          <div class=\"btn-wrapper\">\r\n            <button *ngIf=\"item.config.isHasPaster && !item.disabled\" (click)=\"pasterClick(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n              <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n              <span>添加贴片</span>\r\n            </button>\r\n            <ng-container *ngIf=\"item.config.isHasShortLink && !item.disabled\">\r\n              <label>配置短链：</label>\r\n              <button (click)=\"addWXShortLink(item)\" class=\"add-btn\" nz-button nzType=\"dashed\" style=\"margin: 10px 10px 10px 0;\">\r\n                <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                <span>添加短链</span>\r\n              </button>\r\n            </ng-container>\r\n            <icc-patch-popover *ngFor=\"let item of item.config.pasterList\" [target]=\"item\" style=\"margin: 0 10px 10px 0;\"></icc-patch-popover>\r\n          </div>\r\n          <div style=\"width: 100%;\">\r\n            <ngx-neditor name=\"icc_wechat_rich_editor\" [config]=\"editorConfig\" [loadingTip]=\"'加载中……'\" [(ngModel)]=\"selectedItem[item.config.index]\" (neOnReady)=\"nedReady($event, item)\" (neOnDestroy)=\"neDestroy()\" (ngModelChange)=\"inputChange(item.config, selectedItem)\" class=\"comp-item\"> </ngx-neditor>\r\n            <div style=\"line-height: 20px;font-size: 12px;color: #aaa;\">上传的图片大小不可超过2M，否则无法上传!</div>\r\n          </div>\r\n        </ng-container>\r\n\r\n        <!-- 视频上传 -->\r\n        <icc-video *ngIf=\"'icc-video' === item.type\" [url]=\"selectedItem[item.config.index]\" [req]=\"item.config.req\" [size]=\"item.config.size\" [disabled]=\"item.config.disabled\" [name]=\"item.config.name\" (success)=\"item.config.success($event)\" (fail)=\"item.config.fail($event)\" (cancel)=\"item.config.cancel($event)\" (videoRemove)=\"item.config.videoRemove($event)\" (closeModel)=\"item.config.closeModel($event)\"></icc-video>\r\n        <!-- nz-upload -->\r\n        <nz-upload\r\n          *ngIf=\"'nz-upload' === item.type\"\r\n          class=\"avatar-uploader\"\r\n          [nzAction]=\"item.config.nzAction\"\r\n          [nzCustomRequest]=\"item.config.nzCustomRequest\"\r\n          [nzBeforeUpload]=\"item.config.nzBeforeUpload\"\r\n          nzListType=\"picture-card\"\r\n          [nzName]=\"'file'\"\r\n          [(nzFileList)]=\"selectedItem[item.config.index]\"\r\n          [nzShowUploadList]=\"item.config.nzShowUploadList\"\r\n          [nzShowButton]=\"!selectedItem || !selectedItem[item.config.index] || !selectedItem[item.config.index].length\"\r\n          (nzChange)=\"item.config.nzChange($event)\"\r\n          [nzRemove]=\"item.config.nzRemove\"\r\n          [nzPreview]=\"handlePreview\"\r\n          [nzAccept]=\"['.jpg', '.jpeg', '.png']\"\r\n          [nzDisabled]=\"item.config.nzDisabled\"\r\n        >\r\n          <div *ngIf=\"item.config.slot\" [innerHTML]=\"item.config.slot | html\"></div>\r\n\r\n          <i *ngIf=\"!item.config.slot\" nz-icon class=\"plus-icon\" nzType=\"plus\"></i>\r\n        </nz-upload>\r\n        <!-- 自定义图片上传 -->\r\n        <icc-image-upload *ngIf=\"'icc-image-upload' === item.type\" [imgList]=\"selectedItem[item.config.index]\" [editable]=\"item.config.editable\" [uploadImage]=\"item.config.uploadImage\" [maxCount]=\"item.config.maxCount\" [maxSize]=\"item.config.maxSize\" [singleSize]=\"item.config.singleSize\" [width]=\"item.config.width\" (success)=\"item.config.success($event)\" (remove)=\"item.config.remove($event)\" (fail)=\"item.config.fail($event)\"></icc-image-upload>\r\n        <!-- 自定义音频上传组件 -->\r\n        <icc-audio-upload *ngIf=\"'icc-audio-upload' === item.type\" [disabled]=\"item.config.disabled\" [nzAction]=\"item.config.nzAction\" [fileUrl]=\"item.config.fileUrl\" (delete)=\"item.config.delete($event)\"></icc-audio-upload>\r\n\r\n        <!-- 单选 -->\r\n        <ng-container *ngIf=\"'checkbox' === item.type\">\r\n          <label nz-checkbox [(ngModel)]=\"selectedItem[item.config.index]\"></label>\r\n        </ng-container>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n</div>\r\n\r\n<!-- nz-upload的预览组件 -->\r\n<nz-modal [nzVisible]=\"isPreviewImage\" [nzContent]=\"modalContent\" [nzFooter]=\"null\" (nzOnCancel)=\"isPreviewImage = false\">\r\n  <ng-template #modalContent>\r\n    <img\r\n      [src]=\"previewImageSrc\"\r\n      [ngStyle]=\"{\r\n        width: '100%'\r\n      }\"\r\n    />\r\n  </ng-template>\r\n</nz-modal>\r\n","styles":[":host{display:flex;width:100%}:host ::ng-deep .edui-editor-toolbarbox{position:relative!important;display:block!important;width:auto!important}:host ::ng-deep .edui-editor>div:nth-of-type(1){display:none}:host ::ng-deep ngx-neditor{width:100%}:host ::ng-deep ngx-neditor div:nth-of-type(1){width:auto}:host ::ng-deep ngx-neditor div:nth-of-type(2){width:auto}:host ::ng-deep .ant-tabs .ant-tabs-top-content>.ant-tabs-tabpane{display:flex}.icc-msg-form{width:100%}.icc-msg-item{position:relative;display:flex;float:left;margin-bottom:20px}.icc-msg-item .paster-cls{position:absolute;top:-2px;right:10px;z-index:100;text-decoration:underline}.icc-msg-item .icc-msg-item-name{width:100px;margin-right:5px;line-height:32px;text-align:right}.icc-msg-item .icc-msg-item-require{color:red}.icc-msg-item .icc-msg-item-value{display:flex;flex:1;flex-wrap:wrap;align-items:center}.icc-msg-item .icc-msg-item-value .comp-item{flex:1}.icc-msg-item .icc-msg-item-value .box-span{margin:0 12px 8px 0;padding:0 20px;border-radius:2px}.icc-msg-item .icc-msg-item-value .center-text{margin:0 8px}.icc-msg-item .icc-msg-item-value .type-span{display:flex;align-items:center;margin-right:20px;padding:5px 10px;background:#f3f4f9}.icc-msg-item .icc-msg-item-value .type-span .span-icon{margin-right:6px}.icc-msg-item .icc-msg-item-value .span-char{margin-right:10px;margin-left:-10px}.tag-group{display:flex;flex-wrap:wrap;width:90%;margin-top:5px}.tag-group nz-tag{margin-bottom:12px;padding:2px 18px;background:#f2f2f2;border:0;border-radius:15px;cursor:pointer}.tag-group nz-tag:hover{background:#e5f6ff}.tag-group .active{color:#4880ff!important;background:#e5f6ff!important}::ng-deep .avatar-uploader:hover .plus-icon{color:#45c9ac}::ng-deep .avatar-uploader:hover .ant-upload{border-color:#45c9ac}::ng-deep .avatar-uploader:hover .ant-upload-text{color:#45c9ac}.btn-wrapper{width:100%}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":23,"character":72},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":23,"character":97}]}],"textArea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":24,"character":3},"arguments":["textArea",{"static":false}]}]}],"ngxEditor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":25,"character":3},"arguments":["ngxEditor",{"static":false}]}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"useGuideIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"selectedItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewChecked":[{"__symbolic":"method"}],"initOptions":[{"__symbolic":"method"}],"tabChange":[{"__symbolic":"method"}],"createConfigByType":[{"__symbolic":"method"}],"varClick":[{"__symbolic":"method"}],"pasterClick":[{"__symbolic":"method"}],"shortLinkClick":[{"__symbolic":"method"}],"addWXShortLink":[{"__symbolic":"method"}],"textAreaChange":[{"__symbolic":"method"}],"handelValueChange":[{"__symbolic":"method"}],"inputChange":[{"__symbolic":"method"}],"insertByCursor":[{"__symbolic":"method"}],"setCursorOffset":[{"__symbolic":"method"}],"nedReady":[{"__symbolic":"method"}],"neDestroy":[{"__symbolic":"method"}],"test":[{"__symbolic":"method"}]}},"IccMsgGeneratorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-msg-generator","template":"<nz-tabset [nzSelectedIndex]=\"activeIndex\" (nzSelectedIndexChange)=\"rootTabChange($event)\" *ngIf=\"options.length > 1\">\r\n  <nz-tab\r\n    *ngFor=\"let tab of options; let tabIndex = index\"\r\n    [nzTitle]=\"tab.title\"\r\n    [nzDisabled]=\"!!tab.disabled\"\r\n    class=\"tab-item\"\r\n  >\r\n    <div\r\n      class=\"tab-left\"\r\n      *ngIf=\"tab.guide\"\r\n      [ngStyle]=\"{\r\n        width: tab.guide.width ? tab.guide.width + 'px' : '255px'\r\n      }\"\r\n    >\r\n      <icc-side-menu\r\n        *ngIf=\"'icc-side-menu' === tab.guide.type\"\r\n        [header]=\"tab.guide.config.header ? tab.guide.config.header : null\"\r\n        [list]=\"tab.guide.config.list ? tab.guide.config.list : []\"\r\n        [events]=\"tab.guide.config.events ? tab.guide.config.events : []\"\r\n        (change)=\"tab.guide.config.change ? tab.guide.config.change($event) : null\"\r\n        (remove)=\"tab.guide.config.remove ? tab.guide.config.remove($event) : null\"\r\n      ></icc-side-menu>\r\n    </div>\r\n    <icc-msg-form\r\n      [useGuideIndex]=\"tab.useGuideIndex\"\r\n      [selectedItem]=\"tab.guide ? tab.guide.config.selectedItem : null\"\r\n      [form]=\"tab.form\"\r\n      [disabled]=\"tab.disabled\"\r\n      class=\"tab-right\"\r\n    ></icc-msg-form>\r\n  </nz-tab>\r\n</nz-tabset>\r\n\r\n<icc-msg-form\r\n  *ngIf=\"options.length === 1 && options[0].form\"\r\n  class=\"icc-msg-form\"\r\n  [form]=\"options[0].form\"\r\n  [disabled]=\"options[0].disabled\"\r\n  [useGuideIndex]=\"options[0].useGuideIndex\"\r\n  [selectedItem]=\"options[0].guide ? options[0].guide.config.selectedItem : null\"\r\n></icc-msg-form>\r\n","styles":[":host ::ng-deep .ant-tabs .ant-tabs-top-content>.ant-tabs-tabpane{display:flex}.tab-left{padding:10px;background-color:#f6f8f9}.tab-right{display:inline-block;flex:1;padding:10px 20px 0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"rootTabChange":[{"__symbolic":"method"}],"updateActiveIndex":[{"__symbolic":"method"}],"setOptions":[{"__symbolic":"method"}]}},"IccMsgIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-msg-icon","styles":[":host {display:flex; width:24px;}"],"template":"\n    <ng-container *ngFor=\"let item of msgList\">\n      <img *ngIf=\"item.type == msgType\" [src]=\"item.icon\" alt=\"\" style=\"width:100%;\" />\n    </ng-container>\n  "}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"msgType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"isMO":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccPatchDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-icc-patch-dialog","styles":[".patch-dialog-form{transform: translateX(-30px)}"],"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">选择贴片</div>\r\n</div>\r\n<div class=\"main\" style=\"height: 70vh;overflow-y: auto;max-height: 600px;\">\r\n  <form nz-form nz-row #validForm=\"ngForm\" class=\"patch-dialog-form\">\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\">贴片名称</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\" nzHasFeedback>\r\n        <nz-select placeholder=\"请输入有效期内的贴片名称\" [(ngModel)]=\"patchStrategy.groupId\" nzPlaceHolder=\"请选择贴片类型\" name=\"patchGroupId\" (nzOnSearch)=\"searchPatchGroup($event)\" (ngModelChange)=\"getPatchTypes()\" [nzShowSearch]=\"true\" required>\r\n          <nz-option *ngFor=\"let group of patchGroups\" [nzValue]=\"group.id\" [nzLabel]=\"group.name\">\r\n            {{ group.name }}\r\n          </nz-option>\r\n        </nz-select>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\"\r\n        >使用场景\r\n        <span nz-popover [nzPopoverContent]=\"contentTemplate\"><span class=\"iconfont icon-wenhao\"></span></span>\r\n        <ng-template #contentTemplate>\r\n          <p style=\"margin-bottom:0\">1) 指定贴片：选择指定的贴片，在消息发送时，除消息原有内容外，还会带入选择的贴片内容。</p>\r\n          <p style=\"margin-bottom:0\">2) 随机贴片：在消息发送时，除消息原有内容外，还会随机带入一条贴片内容。</p>\r\n          <p style=\"margin-bottom:0\">3) 按比例贴片：设置贴片的发送比例，一种贴片类型下，需满足贴片内容总和为100%，在消息发送时，除消息原有内容外，根据设置的比例带入贴片。</p>\r\n          <p style=\"margin-bottom:0\">4) 贴片的发送不包括标题。</p>\r\n        </ng-template>\r\n      </nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <nz-radio-group [(ngModel)]=\"patchStrategy.method\" (ngModelChange)=\"changePatchGroupMethod($event)\" name=\"patchGroupMethod\" required>\r\n          <label nz-radio nzValue=\"1\">指定贴片</label>\r\n          <label nz-radio nzValue=\"2\">随机贴片</label>\r\n          <label nz-radio nzValue=\"3\">按比例贴片</label>\r\n        </nz-radio-group>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\">贴片类型</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <nz-select [(ngModel)]=\"patchStrategy.type\" name=\"patchType\" (nzOnSearch)=\"selectPatchType($event)\" required (ngModelChange)=\"getPatchItemByGroupIdAndType($event)\" (click)=\"selectPatchTypeClick()\">\r\n          <nz-option *ngFor=\"let type of patchTypes\" [nzValue]=\"type.id\" [nzLabel]=\"type.name\">\r\n            {{ type.name }}\r\n          </nz-option>\r\n        </nz-select>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\">贴片内容</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <nz-card nz-row style=\"height: 400px; overflow: auto;\">\r\n          <ng-container *ngIf=\"patchStrategy.method === '1' || patchStrategy.method === '3'\">\r\n            <icc-state *ngFor=\"let item of patchItems\" (stateChange)=\"selectPatchItemChange($event, item)\" nz-col nzSpan=\"11\" style=\"padding:2px;margin:10px;width: 100%;height:254px;\" [state]=\"item.state\">\r\n              <nz-card nzTitle=\"{{ item.title }}\" [nzBordered]=\"false\">\r\n                <div *ngIf=\"item.type !== 3\" style=\"max-width: 260px;word-break: break-all;height: 150px;overflow: hidden;\">{{ item.content && item.content.length > 120 ? item.content.slice(0, 120) + '...' : item.content }}</div>\r\n                <icc-image-upload *ngIf=\"item.type === 3\" [singleSize]=\"10\" [editable]=\"false\" [maxCount]=\"1\" [maxSize]=\"10\" [imgList]=\"item.imgTempList || []\"> </icc-image-upload>\r\n              </nz-card>\r\n              <div style=\"width: 100%;padding: 2px;z-index:1000; position: absolute; left:0px; bottom:0px\">\r\n                <div style=\"background-color: rgba(247, 249, 250, 1);text-align: right;width: 100%;padding:3px\" *ngIf=\"patchStrategy.method === '3'\">设置比例：<nz-input-number [nzMin]=\"0\" [nzMax]=\"100\" [nzStep]=\"1\" [nzPrecision]=\"0\" id=\"weight{{ item.id }}\" name=\"weight{{ item.id }}\" [(ngModel)]=\"item.weight\" style=\"width: 50px;margin-right: 5px;\"> </nz-input-number>%</div>\r\n              </div>\r\n            </icc-state>\r\n          </ng-container>\r\n          <ng-container *ngIf=\"patchStrategy.method === '2'\">\r\n            <div\r\n              *ngFor=\"let item of patchItems\"\r\n              nz-col\r\n              nzSpan=\"11\"\r\n              style=\"margin:10px;border: 1px solid rgba(128, 128, 128, 0.3);\r\n            box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.13);overflow: hidden;height:254px;\"\r\n            >\r\n              <nz-card nzTitle=\"{{ item.title }}\" [nzBordered]=\"false\">\r\n                <div *ngIf=\"item.type !== 3\" style=\"max-width: 260px;word-break: break-all;height: 150px;overflow: hidden;\">{{ item.content && item.content.length > 120 ? item.content.slice(0, 120) + '...' : item.content }}</div>\r\n                <icc-image-upload *ngIf=\"item.type === 3\" [singleSize]=\"10\" [editable]=\"false\" [maxCount]=\"1\" [maxSize]=\"10\" [imgList]=\"item.imgTempList || []\"> </icc-image-upload>\r\n              </nz-card>\r\n            </div>\r\n          </ng-container>\r\n        </nz-card>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n  </form>\r\n</div>\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"destroy()\"><span>关闭</span> </icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\" [isDisabled]=\"!validForm.form.valid\">\r\n    <span>保存</span>\r\n  </icc-button>\r\n</div>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":12,"character":65},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":12,"character":93}]}],"ngOnInit":[{"__symbolic":"method"}],"searchPatchGroup":[{"__symbolic":"method"}],"changePatchGroupMethod":[{"__symbolic":"method"}],"selectPatchType":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"checkPatchData":[{"__symbolic":"method"}],"getPatchGroupsByMsgType":[{"__symbolic":"method"}],"getPatchTypes":[{"__symbolic":"method"}],"selectPatchTypeClick":[{"__symbolic":"method"}],"getPatchItemByGroupIdAndType":[{"__symbolic":"method"}],"selectPatchItemChange":[{"__symbolic":"method"}]}},"IccPatchPopoverComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"icc-patch-popover","template":"<div class=\"tag-wrapper\" theme=\"cyan\" nz-popover nzPopoverPlacement=\"topLeft\" [nzPopoverTitle]=\"null\" [nzPopoverContent]=\"patchContent\">\r\n  {{ name }}\r\n</div>\r\n\r\n<ng-template #patchContent>\r\n  <div class=\"detail-box\" [attr.type]=\"target.type\">\r\n    <p class=\"tips\">使用场景：{{ method }}</p>\r\n\r\n    <!-- 文字 -->\r\n    <ng-container *ngIf=\"target.type === 1 || target.type === 2\">\r\n      <p *ngIf=\"target.type === 1\" class=\"tips\">贴片类型：文本</p>\r\n      <p *ngIf=\"target.type === 2\" class=\"tips\">贴片类型：语音</p>\r\n      <div class=\"pannel-box\" *ngFor=\"let patch of patchList\">\r\n        <div class=\"pannel-title\">\r\n          <span class=\"name\">{{ patch.title }}</span>\r\n          <span class=\"rate\" *ngIf=\"patch.rate\"> {{ patch.rate }}% </span>\r\n        </div>\r\n        <div class=\"pannel-body\">\r\n          {{ patch.content }}\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n\r\n    <!-- 图片 -->\r\n    <ng-container *ngIf=\"target.type === 3\">\r\n      <p class=\"tips\">贴片类型：图片</p>\r\n      <div class=\"pannel-box\" *ngFor=\"let patch of patchList\">\r\n        <div class=\"pannel-title\">\r\n          <span class=\"name\">{{ patch.title }}</span>\r\n          <span class=\"rate\" *ngIf=\"patch.rate\"> {{ patch.rate }}% </span>\r\n        </div>\r\n        <div class=\"pannel-body\">\r\n          <img class=\"pannel-img\" [src]=\"mediaUrl + patch.content\" />\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n</ng-template>\r\n","styles":[":host{margin:0}.tag-wrapper{display:inline-block;padding:3px 16px;border-radius:2px;cursor:pointer;line-height:24px}.tag-wrapper .close{margin-left:10px;cursor:pointer;font-weight:700;color:gray}.tag-wrapper[theme=green]{border:1px solid #5de0c6;background:rgba(93,224,198,.14);transition:background .2s}.tag-wrapper[theme=green]:hover{background:rgba(93,224,198,.54)}.tag-wrapper[theme=magenta]{border:1px solid #eb2f96;background:rgba(235,47,150,.14);transition:background .2s}.tag-wrapper[theme=magenta]:hover{background:rgba(235,47,150,.54)}.tag-wrapper[theme=volcano]{border:1px solid #fa541c;background:rgba(250,84,28,.14);transition:background .2s}.tag-wrapper[theme=volcano]:hover{background:rgba(250,84,28,.54)}.tag-wrapper[theme=purple]{border:1px solid #722ed1;background:rgba(114,46,209,.14);transition:background .2s}.tag-wrapper[theme=purple]:hover{background:rgba(114,46,209,.54)}.tag-wrapper[theme=blue]{border:1px solid #1890ff;background:rgba(24,144,255,.14);transition:background .2s}.tag-wrapper[theme=blue]:hover{background:rgba(24,144,255,.54)}.tag-wrapper[theme=cyan]{border:1px solid #b8e5f5;background:rgba(184,229,245,.14);transition:background .2s}.tag-wrapper[theme=cyan]:hover{background:rgba(184,229,245,.54)}.tag-wrapper[theme=gray]{border:1px solid #eaecf0;background:rgba(234,236,240,.14);transition:background .2s}.tag-wrapper[theme=gray]:hover{background:rgba(234,236,240,.54)}.detail-box{overflow:auto;max-width:650px}.detail-box[type=\"1\"],.detail-box[type=\"2\"]{max-height:330px}.detail-box[type=\"1\"] .pannel-body,.detail-box[type=\"2\"] .pannel-body{overflow:auto;height:80px;word-break:break-all}.detail-box[type=\"3\"]{max-height:282px}.detail-box[type=\"3\"] .pannel-body{height:160px}.detail-box .pannel-box{display:inline-block;margin:10px 20px 0 0;width:310px}.detail-box .pannel-box:nth-child(2n){margin-right:0}.detail-box .pannel-box .pannel-title{padding:0 1em;border:1px solid #dcdcdc;background-color:#f7f7f7;line-height:2.4em;font-size:14px}.detail-box .pannel-box .pannel-title .name{display:inline-block;width:86%;vertical-align:middle;font-weight:700}.detail-box .pannel-box .pannel-title .rate{display:inline-block;width:13%;vertical-align:middle;text-align:right}.detail-box .pannel-box .pannel-body{overflow:auto;padding:.4em 1em;border:1px solid #dcdcdc;border-top:none;background-color:#fff;line-height:1.64}.detail-box .pannel-box .pannel-img{display:block;margin:0 auto;max-width:100%;max-height:100%}.detail-box .tips{margin-bottom:5px}"]}]}],"members":{"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"target":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":52,"character":28},{"__symbolic":"reference","name":"DialogService"}]}],"ngOnInit":[{"__symbolic":"method"}],"processMethods":[{"__symbolic":"method"}],"processPatch":[{"__symbolic":"method"}],"getPatchListByGroupId":[{"__symbolic":"method"}]}},"IccShortChainConfigComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"icc-short-chain-config","styles":[],"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">{{ isShortLink ? '插入短链' : '选择链接' }}</div>\r\n</div>\r\n<form nz-form #f=\"ngForm\" se-container=\"1\" labelWidth=\"120\" style=\"padding: 0 25px 0 0;\">\r\n  <se label=\"链接类型\" required>\r\n    <nz-select [(ngModel)]=\"types\" name=\"websiteType\" nzPlaceHolder=\"--请选择类型--\" (ngModelChange)=\"changeTypes($event)\">\r\n      <nz-option nzValue=\"0\" nzLabel=\"普通链接\"></nz-option>\r\n      <nz-option nzValue=\"1\" nzLabel=\"小程序链接\"></nz-option>\r\n    </nz-select>\r\n  </se>\r\n  <se label=\"链接名称\" required>\r\n    <nz-select [(ngModel)]=\"website\" name=\"website\" nzPlaceHolder=\"--请选择网址--\" (ngModelChange)=\"changeSite($event)\" required>\r\n      <nz-option *ngFor=\"let item of websiteFilterList\" [nzValue]=\"item.id\" [nzLabel]=\"item.name\"></nz-option>\r\n    </nz-select>\r\n  </se>\r\n  <se label=\"链接地址\" required>\r\n    <textarea rows=\"6\" nz-input [(ngModel)]=\"longAdress\" name=\"longAdress\" minlength=\"1\" placeholder=\"请输入长链接\" [disabled]=\"true\" style=\"height:70px;\" required></textarea>\r\n  </se>\r\n  <se label=\"域名\" *ngIf=\"isShortLink\" required>\r\n    <nz-select [(ngModel)]=\"domain\" name=\"domain\" nzPlaceHolder=\"--请选择域名--\" required>\r\n      <nz-option *ngFor=\"let item of shortLinks\" [nzValue]=\"item.serveName\" [nzLabel]=\"item.serveName\"></nz-option>\r\n    </nz-select>\r\n  </se>\r\n</form>\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancel()\"><span>关闭</span></icc-button>\r\n  <icc-button *ngIf=\"!isGeneratorLink\" [btnType]=\"'default'\" (btnClick)=\"confirm()\" [isLoading]=\"http.loading\" [isDisabled]=\"f.invalid\"><span>确定</span></icc-button>\r\n  <icc-button *ngIf=\"isGeneratorLink\" [btnType]=\"'default'\" (btnClick)=\"generatorLinkClick()\" [isLoading]=\"http.loading\" [isDisabled]=\"f.invalid\"><span>生成短链</span></icc-button>\r\n</div>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":14,"character":29},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":54},{"__symbolic":"reference","name":"DialogService"}]}],"ngOnInit":[{"__symbolic":"method"}],"initData":[{"__symbolic":"method"}],"requestWebsiteList":[{"__symbolic":"method"}],"requestWxAppList":[{"__symbolic":"method"}],"requestShortLinks":[{"__symbolic":"method"}],"generatorShortLink":[{"__symbolic":"method"}],"changeSite":[{"__symbolic":"method"}],"changeTypes":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"generatorLinkClick":[{"__symbolic":"method"}]}},"IccSideMenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"icc-side-menu","template":"<div class=\"side-list\" (click)=\"componentClick()\">\r\n  <p *ngIf=\"header && (header.title || header.iconUrl)\" class=\"header-title\">\r\n    <img *ngIf=\"header && header.iconUrl\" [src]=\"header.iconUrl\" alt=\"\" />\r\n    <span *ngIf=\"header && header.title\">{{ header.title }}</span>\r\n  </p>\r\n  <ng-container *ngFor=\"let item of list; let i = index\">\r\n    <!-- <button (click)=\"test()\">test</button> -->\r\n    <div\r\n      [ngClass]=\"{\r\n        'big-box': i === 0,\r\n        'small-box': i !== 0,\r\n        selected: list.length > 1 && selectedItem && selectedItem._id === item._id\r\n      }\"\r\n      [ngStyle]=\"{ overflow: !readonly && selectedItem && selectedItem._id === item._id ? 'hidden' : 'inherit' }\"\r\n      (click)=\"selectChange($event, item)\"\r\n      (mousemove)=\"menuMove(item)\"\r\n    >\r\n      <p class=\"mask\" *ngIf=\"i === 0\"></p>\r\n      <span class=\"menu-title\" [title]=\"item.title\">{{ item.title }}</span>\r\n      <img *ngIf=\"item.thumb\" [src]=\"item.thumb\" alt=\"\" />\r\n      <div *ngIf=\"!item.thumb\" class=\"empty-img\"></div>\r\n      <nz-divider *ngIf=\"(i !== 0 && i !== list.length - 1) || (i === list.length - 1 && events && events.length)\" class=\"horiz-line\" [ngClass]=\"{ 'last-horiz-line': i === list.length - 1 }\"></nz-divider>\r\n    </div>\r\n  </ng-container>\r\n  <div class=\"add-box\" *ngIf=\"events && events.length && !readonly\">\r\n    <span class=\"inner-box\" style=\"cursor: pointer;\" *ngIf=\"events.length === 1\" (click)=\"addClick(events[0])\">\r\n      <span class=\"iconfont icon-add\"></span>\r\n      {{ events[0].name }}\r\n    </span>\r\n    <span nz-popover [nzPopoverContent]=\"contentTemplate\" nzPopoverPlacement=\"top\" class=\"inner-box\" *ngIf=\"events.length > 1\">\r\n      <span class=\"iconfont icon-add\"></span>\r\n      新建消息\r\n    </span>\r\n    <ng-template #contentTemplate>\r\n      <ul class=\"event-list\">\r\n        <li *ngFor=\"let evet of events\" (click)=\"addClick(evet)\">\r\n          <span class=\"iconfont\" [ngClass]=\"['icon-' + evet.icon]\"></span>\r\n          {{ evet.name }}\r\n        </li>\r\n      </ul>\r\n    </ng-template>\r\n  </div>\r\n  <div class=\"hover-bars\" [hidden]=\"!showSideMenu || readonly\">\r\n    <div class=\"bar\" *ngIf=\"list[0] && selectedItem && list[0]._id !== selectedItem._id\" (click)=\"moveUp()\" nzTooltipTitle=\"上移\" nzTooltipPlacement=\"left\" nz-tooltip>\r\n      <span class=\"iconfont icon-up-arrow\"></span>\r\n    </div>\r\n    <div class=\"bar\" *ngIf=\"list[0] && selectedItem && list[list.length - 1]._id !== selectedItem._id\" (click)=\"moveDown()\" nzTooltipTitle=\"下移\" nzTooltipPlacement=\"left\" nz-tooltip>\r\n      <span class=\"iconfont icon-down-Arrow\"></span>\r\n    </div>\r\n    <div class=\"bar\" *ngIf=\"list.length > 1\" (click)=\"moveDelete()\" nzTooltipTitle=\"删除\" nzTooltipPlacement=\"left\" nz-tooltip>\r\n      <span class=\"iconfont icon-remove\"></span>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:block;width:100%;box-shadow:0 0 8px 0 rgba(229,229,229,.5)}.side-list{position:relative;width:100%;background:#fff}.side-list .header-title{display:flex;align-items:center;justify-content:flex-start!important;margin-bottom:0;padding:10px}.side-list .header-title img{width:20px;margin-right:10px;border-radius:50%}.side-list .menu-title{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.side-list .big-box{position:relative;overflow:hidden;cursor:pointer}.side-list .big-box .mask{position:absolute;bottom:0;width:100%;height:40px;margin:0;background:rgba(0,0,0,.22)}.side-list .big-box img{width:100%}.side-list .big-box span{position:absolute;bottom:0;margin-bottom:10px;margin-left:10px;color:#fff;font-size:14px}.side-list .big-box .empty-img{width:100%;height:150px;background:rgba(0,0,0,.22)}.side-list .small-box{position:relative;display:flex;align-items:center;justify-content:space-between;height:70px;padding:10px;overflow:hidden;cursor:pointer}.side-list .small-box img{height:35px}.side-list .small-box span{width:80%;margin-bottom:0}.side-list .small-box .empty-img{width:20%;height:70%;background:rgba(0,0,0,.22)}.side-list .big-box>.horiz-line,.side-list .small-box>.horiz-line{position:absolute;top:100%;left:10px;width:70%;min-width:70%;margin:0}.side-list .last-horiz-line{width:calc(100% - 20px)!important;min-width:calc(100% - 20px)!important}.side-list .selected{border:2px solid #44b549}.side-list .add-box{display:flex;align-items:center;justify-content:center;height:80px}.side-list .add-box .inner-box{color:#9a9a9a}.side-list .hover-bars{position:absolute;top:0;right:-70px;z-index:9999;margin:0 10px;padding:15px 7px;background-color:#fff;border-radius:25px;box-shadow:0 1px 6px 0 #e4e8eb;transition:.5s}.side-list .hover-bars .bar{position:relative;display:flex;align-items:center;justify-content:center;width:34px;height:34px;margin:5px 0;border-radius:50%;cursor:pointer}.side-list .hover-bars .bar:hover{background:#ccc}.event-list{margin:-12px -16px;padding:12px 0;list-style:none}.event-list li{height:30px;padding:0 25px;line-height:30px;cursor:pointer}.event-list li .iconfont{margin-right:8px}.event-list li:hover{background:#f3f3f3}"]}]}],"members":{"header":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"events":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":43,"character":26}]}],"componentClick":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"selectChange":[{"__symbolic":"method"}],"menuMove":[{"__symbolic":"method"}],"moveUp":[{"__symbolic":"method"}],"moveDown":[{"__symbolic":"method"}],"moveDelete":[{"__symbolic":"method"}],"addClick":[{"__symbolic":"method"}],"locationSideMenu":[{"__symbolic":"method"}],"getSelectedIndex":[{"__symbolic":"method"}],"test":[{"__symbolic":"method"}]}},"IccStateComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"icc-state","template":"\n        <div class=\"mask\" [attr.state]=\"state\">\n            <a\n                class=\"targger\"\n                (click)=\"changeState()\"\n                [ngStyle]=\"{ left: offsetArr[0] + 'px', right: offsetArr[1] + 'px', top: offsetArr[2] + 'px', bottom: offsetArr[3] + 'px' }\"\n            ></a>\n        </div>\n        <ng-content class=\"content\"></ng-content>\n    ","styles":[":host{display:inline-block;vertical-align:top;margin-right:20px;margin-bottom:20px;position:relative;border-radius:5px;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid rgba(128,128,128,.3);box-shadow:1px 1px 3px rgba(0,0,0,.13)}:host .mask{width:100%;height:100%;position:absolute;top:0;left:0;z-index:9;background-position:right top;background-repeat:no-repeat;background-size:40px 40px}:host .mask[state='0']{background-image:url(../../../../assets/images/layout/state-uncheck.png)}:host .mask[state='1']{border:2px solid #4880ff;background-image:url(../../../../assets/images/layout/state-checked.png)}:host .mask[state='2']{background-position:right top;background-size:60px 60px;background-color:rgba(0,0,0,.36);cursor:not-allowed;z-index:999;background-image:url(../../../../assets/images/layout/state-audit.png)}:host .mask[state='2'] .targger{cursor:not-allowed}:host .mask .targger{position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer}"]}]}],"members":{"state":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":5}}]}],"offsetArr":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":5}}]}],"stateChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"changeState":[{"__symbolic":"method"}]}},"IccTagsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":1,"character":1},"arguments":[{"selector":"icc-tags","template":"\n    <div class=\"ele tag-wrapper\" [attr.theme]=\"theme\">\n      <ng-content></ng-content>\n      <ng-container *ngIf=\"!notDelete\">\n        <i (click)=\"removeHandle()\" nzTooltipTitle=\"删除\" nzTooltipPlacement=\"top\" nz-tooltip nz-icon nzType=\"close\" nzTheme=\"outline\" class=\"close\"></i>\n      </ng-container>\n    </div>\n  ","styles":[".tag-wrapper{display:inline-block;margin-right:10px;line-height:24px;padding:3px 16px;border-radius:15px}.tag-wrapper .close{color:gray;font-weight:700;margin-left:10px;cursor:pointer}.tag-wrapper[theme=green]{background:rgba(93,224,198,.14);border:1px solid #5de0c6;transition:background .2s}.tag-wrapper[theme=green]:hover{background:rgba(93,224,198,.54)}.tag-wrapper[theme=magenta]{background:rgba(235,47,150,.14);border:1px solid #eb2f96;transition:background .2s}.tag-wrapper[theme=magenta]:hover{background:rgba(235,47,150,.54)}.tag-wrapper[theme=volcano]{background:rgba(250,84,28,.14);border:1px solid #fa541c;transition:background .2s}.tag-wrapper[theme=volcano]:hover{background:rgba(250,84,28,.54)}.tag-wrapper[theme=purple]{background:rgba(114,46,209,.14);border:1px solid #722ed1;transition:background .2s}.tag-wrapper[theme=purple]:hover{background:rgba(114,46,209,.54)}.tag-wrapper[theme=blue]{background:rgba(24,144,255,.14);border:1px solid #1890ff;transition:background .2s}.tag-wrapper[theme=blue]:hover{background:rgba(24,144,255,.54)}.tag-wrapper[theme=cyan]{background:rgba(184,229,245,.14);border:1px solid #b8e5f5;transition:background .2s}.tag-wrapper[theme=cyan]:hover{background:rgba(184,229,245,.54)}.tag-wrapper[theme=gray]{background:rgba(234,236,240,.14);border:1px solid #eaecf0;transition:background .2s}.tag-wrapper[theme=gray]:hover{background:rgba(234,236,240,.54)}"]}]}],"members":{"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"notDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"removeEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"removeHandle":[{"__symbolic":"method"}]}},"IccTplConditionComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"icc-tpl-condition","template":"\n    <ng-container *ngIf=\"source.useTmplMethod !== 2\">\n      <nz-form-item>\n        <nz-form-label [nzSpan]=\"3\">默认执行</nz-form-label>\n        <nz-form-control [nzSpan]=\"15\">\n          <label [(ngModel)]=\"item.isDefault\" nz-checkbox [name]=\"'isDefault' + index\" [nzDisabled]=\"hasDefaultTemplate && !item.isDefault\"></label>\n        </nz-form-control>\n      </nz-form-item>\n\n      <nz-form-item [hidden]=\"item.isDefault\">\n        <nz-form-label [nzSpan]=\"3\">执行条件</nz-form-label>\n        <nz-form-control [nzSpan]=\"16\">\n          <div class=\"steps-content\" style=\"width: 100%;align-items: flex-start;flex-direction: column;\" nz-row>\n            <button acl [acl-ability]=\"'smartCusGroup.customerGroup.list'\" nz-button nzType=\"link\" type=\"button\" title=\"获取智能客群条件\" type=\"button\" (click)=\"openSmartCustGroup(item)\" style=\"padding:0\">\n              获取智能客群条件\n            </button>\n            <app-condition style=\"width: 100%;\" [conditions]=\"item.conditions || []\" [sIndex]=\"index\" mode=\"edit\" [variableBinds]=\"source.variableBinds\" [tagUrl]=\"tagUrl\" #condition></app-condition>\n          </div>\n        </nz-form-control>\n      </nz-form-item>\n\n      <nz-form-item *ngIf=\"!item.isDefault && item.conditions && item.conditions.length > 1\">\n        <nz-form-label [nzSpan]=\"3\">逻辑关系</nz-form-label>\n        <nz-form-control [nzSpan]=\"15\">\n          <nz-radio-group [(ngModel)]=\"item.operateType\" name=\"operateType\">\n            <label nz-radio nzValue=\"1\">“与”关系</label>\n            <label nz-radio nzValue=\"2\">“或”关系</label>\n          </nz-radio-group>\n        </nz-form-control>\n      </nz-form-item>\n    </ng-container>\n  "}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"condition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":50,"character":3},"arguments":["condition",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":63,"character":29},{"__symbolic":"reference","name":"TemplateService"},{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":63,"character":135}]}],"ngOnInit":[{"__symbolic":"method"}],"openSmartCustGroup":[{"__symbolic":"method"}]}},"IccTplCopyComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-tpl-copy","template":"\n    <nz-form-item>\n      <nz-form-label [nzSpan]=\"3\">复用已有模板</nz-form-label>\n      <nz-form-control [nzSpan]=\"10\">\n        <nz-select style=\"width: 210px;\" nzPlaceHolder=\"请选择已有模板\" (click)=\"provinceClick()\" [(ngModel)]=\"item.copyValue\" [nzShowSearch]=\"true\" (ngModelChange)=\"provinceChange($event)\">\n          <nz-option [nzValue]=\"0\" nzLabel=\"请选择\"></nz-option>\n          <!-- <nz-option *ngFor=\"let option of copyList; index as j\" [nzValue]=\"option.htmlId\" [nzLabel]=\"option.name + '【' + _MSGTYPES.getMsgByType(false, option.msgType).name + '】'\"> </nz-option> -->\n          <nz-option *ngFor=\"let option of copyList; index as j\" [nzValue]=\"option.htmlId\" [nzLabel]=\"option.name\"> </nz-option>\n        </nz-select>\n\n        <span class=\"iconfont icon-wenhao wenhao\" nz-popover nzPopoverTrigger=\"click\" [nzPopoverContent]=\"copyContentTemplate\" nzPopoverPlacement=\"leftTop\"></span>\n        <ng-template #copyContentTemplate>\n          <div>\n            1、选取当前业务类型下的模板名称，可快速复用该模板内容，可免除重复填充内容的操作；<br />\n            2、若被复用内容过长，根据当前消息类型所限制的字符长度进行对内容的截取；<br />\n            3、复用规则：<br />\n            短信可复用短信、语音、极光推送；<br />\n            微信仅可复用微信；<br />\n            语音可复用短信、语音、极光推送；<br />\n            邮件可复用短信、语音、邮件、极光推送；<br />\n            极光推送可复用短信、语音、极光推送；<br />\n            企业微信可复用企业微信；<br />\n            5G消息可复用5G消息。<br />\n          </div>\n        </ng-template>\n      </nz-form-control>\n    </nz-form-item>\n  "}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"actIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"update":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":45,"character":3}}]}],"copyChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":47,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"provinceChange":[{"__symbolic":"method"}],"provinceClick":[{"__symbolic":"method"}]}},"IccTplHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-tpl-header","styles":["\n      .add-tpl {\n        margin-left: 20px;\n        color: #36bc99;\n        font-weight: bold;\n        font-size: 20px;\n        cursor: pointer;\n      }\n      .biz-type-title {\n        position: relative;\n        z-index: 0;\n        display: flex;\n        align-items: center;\n        width: calc(100% + 40px);\n        height: 60px;\n        margin-top: -20px;\n        margin-bottom: 0;\n        margin-left: -20px;\n        padding-left: 20px;\n        font-size: 18px;\n        border-bottom: 1px solid #e8e8e8;\n      }\n      :host ::ng-deep .biz-type-icon {\n        margin-right: 20px;\n      }\n    "],"template":"\n    <p class=\"biz-type-title\">\n      <ng-content></ng-content>\n      {{ msgName }}模板 ({{ source.templates && source.templates.length ? source.templates.length : 0 }})\n      <span class=\"iconfont icon-add add-tpl\" (click)=\"addTemplate()\" nz-popover [nzPopoverContent]=\"addTpl\" nzPopoverPlacement=\"top\"></span>\n      <ng-template #addTpl>\n        添加模板\n      </ng-template>\n    </p>\n  "}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"template":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"update":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":50,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"addTemplate":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"IccTplNameComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-tpl-name","template":"\n    <nz-form-item>\n      <nz-form-label [nzSpan]=\"3\" nzRequired>模板名称</nz-form-label>\n      <nz-form-control [nzSpan]=\"10\" [nzErrorTip]=\"nameTips\">\n        <input\n          [name]=\"'name' + index\"\n          nz-input\n          [(ngModel)]=\"item.name\"\n          placeholder=\"模板名称长度1~30字符\"\n          maxlength=\"30\"\n          required\n          (ngModelChange)=\"nameChange($event, index)\"\n        />\n        <ng-template #nameTips let-control>\n          <ng-container *ngIf=\"control.hasError('required')\">\n            模板名称不能为空\n          </ng-container>\n        </ng-template>\n        <span style=\"color: red;\" *ngIf=\"!item.valid\">\n          模板名称不能重复\n        </span>\n      </nz-form-control>\n    </nz-form-item>\n  "}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateService"}]}],"ngOnInit":[{"__symbolic":"method"}],"nameChange":[{"__symbolic":"method"}]}},"IccTplOperateComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-tpl-operate","template":"\n    <div class=\"operate-group\">\n      <nz-switch\n        *ngIf=\"item.id > 0 && !item.isDefault\"\n        [ngModel]=\"item.state == 1 ? true : false\"\n        nzSize=\"default\"\n        nzCheckedChildren=\"开启\"\n        nzUnCheckedChildren=\"停用\"\n        [name]=\"'state' + index\"\n        (ngModelChange)=\"changeTemplateState($event, index)\"\n      ></nz-switch>\n\n      <span class=\"iconfont icon-add span-icon pointer\" (click)=\"addTemplate()\" nz-popover nzPopoverContent=\"添加模板\" nzPopoverPlacement=\"top\"> </span>\n\n      <span\n        *ngIf=\"0 !== index && source.useTmplMethod == 1\"\n        class=\"iconfont icon-up-arrow span-icon pointer\"\n        nz-popover\n        (click)=\"moveTemplate(index, index - 1)\"\n        nzPopoverContent=\"优先级上移\"\n        nzPopoverPlacement=\"top\"\n      ></span>\n      <span\n        *ngIf=\"source.templates.length - 1 !== index && source.useTmplMethod == 1\"\n        class=\"iconfont icon-down-Arrow span-icon pointer\"\n        nz-popover\n        nzPopoverContent=\"优先级下移\"\n        (click)=\"moveTemplate(index, index + 1)\"\n        nzPopoverPlacement=\"top\"\n      ></span>\n\n      <!-- 智能模板 ：不是默认才可以删 -->\n      <!-- 普通模板：因为没有执行条件，所以可以删 -->\n      <icc-image\n        class=\"icc-image pointer\"\n        src=\"assets/images/btnIcon/delete_red.png\"\n        nz-popconfirm\n        *ngIf=\"source.useTmplMethod == 2 || (item.state !== 4 && !item.isDefault)\"\n        nzPopconfirmTitle=\"是否确认删除该模板?\"\n        (nzOnConfirm)=\"removeTemplate(index)\"\n      >\n      </icc-image>\n    </div>\n  "}]}],"members":{"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"valid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"template":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"update":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":63,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateService"},{"__symbolic":"reference","name":"DialogService"}]}],"ngOnInit":[{"__symbolic":"method"}],"addTemplate":[{"__symbolic":"method"}],"moveTemplate":[{"__symbolic":"method"}],"removeTemplate":[{"__symbolic":"method"}],"changeTemplateState":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"IccTplVariableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-tpl-variable","template":"\n    <nz-form-item *ngIf=\"variableBinds && variableBinds.length > 0\">\n      <nz-form-label [nzSpan]=\"3\">业务变量</nz-form-label>\n      <nz-form-control [nzSpan]=\"18\">\n        <icc-tags [theme]=\"v.isRequired ? 'cyan' : 'gray'\" *ngFor=\"let v of variableBinds\" (click)=\"insertHandle(v)\" [notDelete]=\"true\" style=\"cursor: pointer;\">\n          <span nzTooltipTitle=\"点击变量添加到模板内容中\" nzTooltipPlacement=\"top\" nz-tooltip>{{ v.name }}</span>\n        </icc-tags>\n      </nz-form-control>\n    </nz-form-item>\n  ","styles":[]}]}],"members":{"variableBinds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"insert":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":21,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"insertHandle":[{"__symbolic":"method"}]}},"IccVideoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"icc-video","template":"<div class=\"icc-video\">\r\n  <input style=\"display: none;\" type=\"file\" (change)=\"fileChange($event)\" #input />\r\n  <!-- 没有视频时 -->\r\n  <div class=\"video-box flex-dire-column\" [ngClass]=\"{ 'no-video': !disabled, 'no-video-disabled': disabled }\" [ngStyle]=\"{ cursor: disabled ? 'not-allowed' : '', 'width.px': 300 * scale, 'height.px': 200 * scale }\" (click)=\"selectFile($event)\" *ngIf=\"!coverUrl && status === statusInfo.nothing\">\r\n    <span class=\"iconfont icon-add upload-icon\"></span>\r\n    <span class=\"upload-text\">上传视频</span>\r\n  </div>\r\n  <div class=\"video-box flex-dire-column\" [ngStyle]=\"{ cursor: disabled ? 'not-allowed' : '', 'width.px': 300 * scale, 'height.px': 200 * scale }\" (click)=\"selectFile($event)\" *ngIf=\"!coverUrl && status === statusInfo.damaged\">\r\n    <img style=\"width: 80%;height: 80%;\" src=\"./assets/images/nothing/invalid.png\" alt=\"视频已损坏\" />\r\n  </div>\r\n\r\n  <!-- 上传中 -->\r\n  <div class=\"video-box flex-dire-column bg-black\" [ngStyle]=\"{ 'width.px': 300 * scale, 'height.px': 200 * scale }\" *ngIf=\"!coverUrl && status === statusInfo.loading\">\r\n    <span class=\"upload-name\">{{ name }}</span>\r\n    <span class=\"upload-cancel\" (click)=\"uploadCancel($event)\" *ngIf=\"!isCanUpload && !isBreak\">取消上传</span>\r\n    <span class=\"upload-cancel\" *ngIf=\"!isCanUpload && isBreak\">正在取消上传...</span>\r\n    <p class=\"upload-info\">\r\n      <span *ngIf=\"speed\">速度：{{ speed }}k/s</span>\r\n      <span *ngIf=\"remaining\">剩余时间：{{ remaining }}</span>\r\n    </p>\r\n    <span class=\"progress-box\">\r\n      <span class=\"progress-inner\" [ngStyle]=\"{ width: progress + '%' }\"></span>\r\n    </span>\r\n  </div>\r\n\r\n  <!-- 上传失败 -->\r\n  <div class=\"video-box flex-dire-column upload-fail\" [ngStyle]=\"{ 'width.px': 300 * scale, 'height.px': 200 * scale }\" *ngIf=\"!coverUrl && status === statusInfo.fail\">\r\n    <p>{{ name }}</p>\r\n    <p>{{ errorMsg }}</p>\r\n    <a (click)=\"selectFile($event)\" *ngIf=\"!disabled\">重新上传</a>\r\n  </div>\r\n\r\n  <!-- 上传成功 -->\r\n  <!-- <div class=\"video-box bg-black\" [hidden]=\"status !== statusInfo.success && status !== statusInfo.playing\"> -->\r\n  <div id=\"preview-video-box-id\" class=\"video-box bg-black\" *ngIf=\"coverUrl || status === statusInfo.success || status === statusInfo.playing\" [ngStyle]=\"{ 'width.px': 300 * scale, 'height.px': 200 * scale }\">\r\n    <!-- 删除按钮 -->\r\n    <icc-icon icon=\"./assets/images/btnIcon/btn_remove.png\" hoverIcon=\"./assets/images/btnIcon/btn_remove_hover.png\" (iconClick)=\"remove()\" class=\"icon-delete\" *ngIf=\"!disabled\"></icc-icon>\r\n\r\n    <div *ngIf=\"bufferUrl || !loading\">\r\n      <!-- 打开播放按钮 -->\r\n      <icc-icon [ngStyle]=\"{ 'width.px': 60 * scale, 'height.px': 60 * scale, 'margin-left.px': -30 * scale, 'margin-top.px': -30 * scale }\" *ngIf=\"bufferUrl || (url && !showPoster)\" isHundredWidth=\"true\" icon=\"./assets/images/btnIcon/btn_play.png\" hoverIcon=\"./assets/images/btnIcon/btn_play_hover.png\" (iconClick)=\"openPlay()\" class=\"icon-play\"></icc-icon>\r\n      <a class=\"reload-text\" (click)=\"selectFile($event)\" *ngIf=\"!disabled && tryAgain\">重新上传</a>\r\n    </div>\r\n    <p *ngIf=\"!coverUrl && loading\" style=\"color:white;margin-bottom: 0;\">视频加载中<span class=\"loading-circle\"></span></p>\r\n    <!-- onloadeddata 事件在当前帧的数据加载完成且还没有足够的数据播放视频/音频（audio/video）的下一帧时触发。 -->\r\n    <video [src]=\"url\" [hidden]=\"!url || showPosterImg || loading\" #videoview on-loadeddata=\"setPoster()\" style=\"position: absolute;\">\r\n      your browser does not support the video tag\r\n    </video>\r\n    <!-- 用此图作为封面而不用视频封面的原因，是为了让视频隐藏播放从而获取多张封面推荐图 -->\r\n    <img *ngIf=\"coverUrl || showPosterImg\" class=\"poster-img\" [src]=\"coverUrl || posterImg\" />\r\n  </div>\r\n\r\n  <!-- 提示信息 -->\r\n  <div class=\"video-tips\" *ngIf=\"!coverUrl && !disabled\">\r\n    <!-- <p>支持MP4、flv、mov、ogg、rm、rmvb、wmv、avi、webm。</p> -->\r\n    <p>{{ typeDescript }}</p>\r\n    <p>推荐使用分辨率为720P(1280*720)，比例16:9。</p>\r\n    <p>文件大小不超过{{ size }}MB。</p>\r\n  </div>\r\n\r\n  <!-- 播放视频 -->\r\n  <nz-modal [(nzVisible)]=\"(status === statusInfo.playing || status === statusInfo.onlyPlay) && hasvideoUrl\" [nzWidth]=\"0\" [nzFooter]=\"null\" nzClosable=\"false\">\r\n    <div class=\"ant-modal-mask mask-size\" *ngIf=\"(status === statusInfo.playing || status === statusInfo.onlyPlay) && hasvideoUrl\">\r\n      <div class=\"video-wrapper\">\r\n        <video id=\"video-id\" [src]=\"bufferUrl || url\" autoplay=\"autoplay\" controls=\"controls\" width=\"100%\" height=\"100%\">\r\n          your browser does not support the video tag\r\n        </video>\r\n        <p class=\"video-name\">\r\n          {{ name }}\r\n          <icc-icon icon=\"./assets/images/btnIcon/video/close.png\" hoverIcon=\"./assets/images/btnIcon/video/close_hover.png\" (iconClick)=\"close()\" class=\"close-icon\"> </icc-icon>\r\n        </p>\r\n      </div>\r\n    </div>\r\n  </nz-modal>\r\n</div>\r\n","styles":[":host ::ng-deep .icc-video{display:flex;align-items:center}:host ::ng-deep .flex-dire-column{flex-direction:column}:host ::ng-deep .bg-black{background:#000}:host ::ng-deep .video-box{display:flex;position:relative;justify-content:center;align-items:center;width:300px;height:200px}:host ::ng-deep .video-box .upload-name{font-size:16px;color:#fff}:host ::ng-deep .video-box .upload-cancel{margin-top:10px;padding:0 20px;border-radius:20px;background:rgba(51,51,51,.8);cursor:pointer;line-height:30px;font-size:12px;color:#888}:host ::ng-deep .video-box .upload-cancel:hover{background:#333}:host ::ng-deep .video-box .upload-info{display:flex;position:absolute;bottom:8px;justify-content:space-between;margin-bottom:-2px;padding:0 10px;width:100%;height:20px;line-height:20px;color:#666}:host ::ng-deep .video-box .upload-info span{line-height:40px}:host ::ng-deep .video-box .progress-box{display:inline-block;overflow:hidden;position:absolute;bottom:0;width:100%;height:4px;background:#333}:host ::ng-deep .video-box .progress-box .progress-inner{display:inline-block;position:absolute;bottom:0;width:36%;height:100%;background:#4980ff}:host ::ng-deep .video-box .icon-delete{position:absolute;right:-11px;top:-21px;z-index:100;cursor:pointer;line-height:40px}:host ::ng-deep .video-box .icon-play{position:absolute;left:50%;top:50%;z-index:98;margin-left:-30px;margin-top:-30px;cursor:pointer}:host ::ng-deep .video-box .reload-text{position:absolute;right:-75px;bottom:0;border-bottom:1px solid #1890ff;height:32px;line-height:40px;color:#1890ff}:host ::ng-deep .video-box video{width:100%;height:100%}:host ::ng-deep .video-box .poster-img{width:100%;max-width:300px;max-height:100%}:host ::ng-deep .no-video-disabled{border:1px dashed #d9d9d9;cursor:pointer;font-size:16px;transition:border-color .3s}:host ::ng-deep .no-video{border:1px dashed #d9d9d9;cursor:pointer;font-size:16px;transition:border-color .3s}:host ::ng-deep .no-video:hover{border-color:#36bc99}:host ::ng-deep .upload-icon{margin-bottom:-10px;font-weight:600;font-size:24px;color:#36bc99}:host ::ng-deep .upload-text{line-height:40px}:host ::ng-deep .upload-fail{border:1px dashed #ff4141;background-color:#fff7f8;font-size:14px}:host ::ng-deep .upload-fail p{margin-bottom:0;width:100%;line-height:40px;text-align:center}:host ::ng-deep .upload-fail p:nth-of-type(1){margin-bottom:-15px}:host ::ng-deep .upload-fail p:nth-of-type(2){margin:0;min-height:15px;color:#ff4141}:host ::ng-deep .upload-fail a{margin-top:-15px;border-bottom:1px solid #ff4141;height:32px;line-height:40px;color:#ff4141}:host ::ng-deep .video-tips{margin-left:20px;color:#999}:host ::ng-deep .video-tips p{margin-bottom:-8px;line-height:40px}:host ::ng-deep .mask-size{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:transparent}:host ::ng-deep .mask-size .video-wrapper{position:relative;width:50%;height:75%;background-color:#000}:host ::ng-deep .mask-size .video-wrapper video{outline:0}:host ::ng-deep .mask-size .video-wrapper:hover .video-name{opacity:1}:host ::ng-deep .mask-size .video-wrapper .video-name{position:absolute;left:0;top:0;margin-bottom:0;width:100%;height:46px;background-image:linear-gradient(rgba(0,0,0,.8),rgba(0,0,0,.5),rgba(0,0,0,.1));box-shadow:0 5px 10px rgba(0,0,0,.1);opacity:0;line-height:46px;text-align:center;font-size:16px;color:#fff;transition:opacity .6s}:host ::ng-deep .mask-size .video-wrapper .video-name .close-icon{float:right;margin-right:18px;margin-top:-2px;cursor:pointer}:host ::ng-deep .loading-circle{display:inline-block;overflow:hidden;margin-top:-.3em;height:1.3em;line-height:1.5em;vertical-align:text-bottom}:host ::ng-deep .loading-circle::after{display:inline-table;text-align:left;white-space:pre;content:\"\\A.\\A..\\A...\";-webkit-animation:2s steps(4) infinite spin4;animation:2s steps(4) infinite spin4}@-webkit-keyframes spin4{to{transform:translateY(-6em)}}@keyframes spin4{to{transform:translateY(-6em)}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":13,"character":28},{"__symbolic":"reference","name":"DialogService"}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["input",{"static":false}]}]}],"videoView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":15,"character":3},"arguments":["videoview",{"static":false}]}]}],"url":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"coverUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"bufferUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"req":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"showPoster":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"success":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"fail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"cancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"videoRemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":33,"character":3}}]}],"closeModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"loadReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"status":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"vTypes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"typeDescript":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"tryAgain":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"scale":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"selectFile":[{"__symbolic":"method"}],"fileChange":[{"__symbolic":"method"}],"requestFileUpload":[{"__symbolic":"method"}],"getUploadProgress":[{"__symbolic":"method"}],"fileCheck":[{"__symbolic":"method"}],"uploadCancel":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"openPlay":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"setLoadingState":[{"__symbolic":"method"}],"setPoster":[{"__symbolic":"method"}]}},"SmartGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-smart-group","styles":[],"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">{{ title }}</div>\r\n</div>\r\n<nz-card>\r\n  <st #st [data]=\"url\" [columns]=\"columns\" [req]=\"req\" [page]=\"page\"></st>\r\n</nz-card>\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancel()\"><span>关闭</span></icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\"><span>确定</span></icc-button>\r\n</div>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":11,"character":29}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":35,"character":3},"arguments":["st",{"static":false}]}]}],"ngOnInit":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"Icc5GContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-5g-content","template":"<div class=\"msg-5g-wrapper\">\r\n  <!-- [ngStyle]=\"{\r\n      'justify-content': cardList && cardList.length === 1 ? 'center' : 'start'\r\n    }\" -->\r\n  <div #cardlist *ngIf=\"!isTextType\" class=\"msg-5g-panel\">\r\n    <div\r\n      class=\"card-5g not-select\"\r\n      *ngFor=\"let item of cardList; let i = index\"\r\n      [ngStyle]=\"{\r\n        'margin-left': i === 0 ? left + 'px' : ''\r\n      }\"\r\n    >\r\n      <ng-container *ngIf=\"item.type === 'img'\">\r\n        <icc-image [src]=\"item.url || item.src\"></icc-image>\r\n      </ng-container>\r\n      <ng-container *ngIf=\"item.type === 'video'\">\r\n        <video [src]=\"item.src\"></video>\r\n        <!-- <icc-video [disabled]=\"true\" [url]=\"item.url || item.src\" [showPoster]=\"true\"></icc-video> -->\r\n      </ng-container>\r\n      <p class=\"text-ellipsis\" [nzTooltipTitle]=\"item.title\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.title }}</p>\r\n      <span class=\"mutil-row-ellipsis\" [nzTooltipTitle]=\"item.des\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.des }}</span>\r\n      <div class=\"btn-group\">\r\n        <div class=\"btn-item\" [nzTooltipTitle]=\"titleTemplate\" nzTooltipPlacement=\"top\" nz-tooltip *ngFor=\"let btn of item.btnGroup\">\r\n          {{ btn.text || btn.name }}\r\n          <ng-template #titleTemplate>\r\n            <span *ngIf=\"btn.action === 1 || btn.action === 3 || btn.action === 7\">{{ btn.param.extInfo }}</span>\r\n            <a *ngIf=\"btn.action === 2\" [href]=\"formatHttps(btn.param.link.longUrl)\" target=\"_blank\">\r\n              {{ btn.param.link.longUrl }}\r\n            </a>\r\n            <span *ngIf=\"btn.action === 4\">获取用户终端位置</span>\r\n            <span *ngIf=\"btn.action === 5\">{{ btn.param.map.currentTude }}</span>\r\n            <span *ngIf=\"btn.action === 6\">共享终端信息</span>\r\n            <span *ngIf=\"btn.action === 8\">\r\n              <label>日历标题：</label>\r\n              <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.title ? btn.param.calendarInfo.title : '' }}</span>\r\n              <br />\r\n              <label>起止时间：</label>\r\n              <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.startTime ? btn.param.calendarInfo.startTime + ' ~ ' : '' }}{{ btn.param.calendarInfo && btn.param.calendarInfo.endTime ? btn.param.calendarInfo.endTime : '' }}</span>\r\n            </span>\r\n          </ng-template>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <span *ngIf=\"isTextType\">{{ textContent }}</span>\r\n  <span *ngIf=\"btnList && btnList.length\" class=\"line-cls\"></span>\r\n  <div #btnlist *ngIf=\"btnList && btnList.length\" class=\"bottom-btns-wrapper\">\r\n    <div class=\"bottom-btns not-select\" (mousedown)=\"onDragDown($event)\" (mousemove)=\"onDragMove($event, btnList.length)\" (mouseup)=\"onDragUp($event)\" (mouseleave)=\"onDragUp($event)\">\r\n      <span\r\n        *ngFor=\"let btn of btnList; let idx = index\"\r\n        [nzTooltipTitle]=\"bottomTemplate\"\r\n        nzTooltipPlacement=\"top\"\r\n        nz-tooltip\r\n        class=\"bottom-btn-item\"\r\n        [ngStyle]=\"{\r\n          'margin-left': idx === 0 ? btnLeft + 'px' : ''\r\n        }\"\r\n        >{{ btn.name }}\r\n        <ng-template #bottomTemplate>\r\n          <span *ngIf=\"btn.action === 1 || btn.action === 3 || btn.action === 7\">{{ btn.param.extInfo }}</span>\r\n          <a *ngIf=\"btn.action === 2\" [href]=\"formatHttps(btn.param.link.longUrl)\" target=\"_blank\">\r\n            {{ btn.param.link.longUrl }}\r\n          </a>\r\n          <span *ngIf=\"btn.action === 4\">获取用户终端位置</span>\r\n          <span *ngIf=\"btn.action === 5\">{{ btn.param.map.currentTude }}</span>\r\n          <span *ngIf=\"btn.action === 6\">共享终端信息</span>\r\n          <span *ngIf=\"btn.action === 8\">\r\n            <label>日历标题：</label>\r\n            <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.title ? btn.param.calendarInfo.title : '' }}</span>\r\n            <br />\r\n            <label>起止时间：</label>\r\n            <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.startTime ? btn.param.calendarInfo.startTime + ' ~ ' : '' }}{{ btn.param.calendarInfo && btn.param.calendarInfo.endTime ? btn.param.calendarInfo.endTime : '' }}</span>\r\n          </span>\r\n        </ng-template>\r\n      </span>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[".msg-5g-wrapper{display:flex;overflow:hidden;flex-direction:column;width:100%}.msg-5g-wrapper .msg-5g-panel{display:flex;overflow-x:auto;overflow-y:scroll;justify-content:flex-start;margin-right:-10px;width:calc(100% + 10px);height:auto;background:0 0;padding-bottom:6px}.msg-5g-wrapper .msg-5g-panel .card-5g{margin-right:6px;width:160px;height:auto;background:#fff;cursor:pointer}.msg-5g-wrapper .msg-5g-panel .card-5g icc-image,.msg-5g-wrapper .msg-5g-panel .card-5g video{width:160px}.msg-5g-wrapper .msg-5g-panel .card-5g p:nth-of-type(1){margin:0;padding:0 5px;font-size:14px}.msg-5g-wrapper .msg-5g-panel .card-5g .mutil-row-ellipsis{display:-webkit-box;overflow:hidden;padding:0 5px;font-size:12px;color:gray;-webkit-box-orient:vertical;-webkit-line-clamp:2}.msg-5g-wrapper .msg-5g-panel .card-5g .btn-group{display:flex;flex-direction:column;padding-top:5px}.msg-5g-wrapper .msg-5g-panel .card-5g .btn-group .btn-item{margin:0 5px 5px;padding:3px;border-radius:11px;background:#1890ff;text-align:center;font-size:12px;color:#fff}.msg-5g-wrapper .bottom-btns-wrapper{margin:0;padding-top:5px}.msg-5g-wrapper .bottom-btns-wrapper .bottom-btns{overflow:hidden;width:100%;white-space:nowrap}.msg-5g-wrapper .bottom-btns-wrapper .bottom-btns .bottom-btn-item{margin-right:8px;padding:4px 13px;border:1px solid #9bbbd6;border-radius:25px;cursor:pointer;font-size:12px;background-color:#fff;display:inline-block}.msg-5g-wrapper .line-cls{margin-top:10px;border-top:1px solid #9bbbd6;width:100%;height:0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"cardsDom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":10,"character":3},"arguments":["cardlist",{"static":false}]}]}],"btnsDom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":11,"character":3},"arguments":["btnlist",{"static":false}]}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"packRcsPreviewData":[{"__symbolic":"method"}],"onMouseDown":[{"__symbolic":"method"}],"onMouseMove":[{"__symbolic":"method"}],"onMouseUp":[{"__symbolic":"method"}],"onDragDown":[{"__symbolic":"method"}],"onDragMove":[{"__symbolic":"method"}],"onDragUp":[{"__symbolic":"method"}],"formatHttps":[{"__symbolic":"method"}]}},"Icc5GCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"app-card","template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">卡片内容新增</div>\r\n</div>\r\n<div class=\"main modal-content model-content-scroll\">\r\n  <form nz-form nz-row #validForm=\"ngForm\">\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\" nzRequired>标题</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\" [nzErrorTip]=\"titleErrorTip\" nzHasFeedback>\r\n        <input nz-input name=\"title\" [(ngModel)]=\"card.title\" placeholder=\"请输入\" maxlength=\"30\" required />\r\n      </nz-form-control>\r\n      <ng-template #titleErrorTip 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\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\" nzRequired>描述</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\" [nzErrorTip]=\"desErrorTip\" nzHasFeedback>\r\n        <div *ngIf=\"variableBinds && variableBinds.length > 0\" style=\"width: 96%;\">\r\n          <span class=\"var-item \" [ngClass]=\"{ 'var-require': v.isRequired === true, 'var-default': v.isRequired !== true }\" (mouseover)=\"varMouseOver($event)\" (mouseleave)=\"varMouseLeave($event)\" *ngFor=\"let v of variableBinds\" (click)=\"insertVar(card, v)\">\r\n            {{ v.code }}\r\n          </span>\r\n          <span class=\"iconfont icon-wenhao wenhao\" nz-popover [nzPopoverContent]=\"varUseTipTmp\" style=\"float: right; margin-right: -15px;\"></span>\r\n        </div>\r\n        <textarea rows=\"3\" name=\"content\" nz-input (click)=\"getCaretPosWithEvent(card, $event)\" (keyup)=\"getCaretPosWithEvent(card, $event)\" [(ngModel)]=\"card.description\" [maxlength]=\"maxLengthForDes\" required></textarea>\r\n        <p style=\"line-height: 1.4;color: #969595;font-size: 12px;position: absolute;right: 0;\">已输入{{ card?.description?.length }}/{{ maxLengthForDes }}</p>\r\n\r\n        <ng-template #varUseTipTmp>\r\n          点击变量添加到描述内容中\r\n        </ng-template>\r\n      </nz-form-control>\r\n      <ng-template #desErrorTip 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\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\">卡片操作项</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <nz-table #conditionDatas [nzData]=\"emptyData\" nzBordered nzSize=\"middle\" [nzShowPagination]=\"false\">\r\n          <thead>\r\n            <tr>\r\n              <th class=\"card-thead\">操作按钮名称</th>\r\n              <th class=\"card-thead\">建议操作</th>\r\n              <th class=\"card-thead\">内容</th>\r\n              <th class=\"card-thead\">操作</th>\r\n            </tr>\r\n          </thead>\r\n          <tbody>\r\n            <tr *ngFor=\"let suggestion of card.suggestions; index as sIndex\" style=\"word-break:break-all; word-wrap:break-word;\">\r\n              <td>\r\n                <ng-container *ngIf=\"editIndex !== sIndex; else textTpl\">\r\n                  {{ suggestion.text }}\r\n                </ng-container>\r\n                <ng-template #textTpl>\r\n                  <nz-form-control nzHasFeedback [nzErrorTip]=\"textErrorTips\">\r\n                    <input nz-input name=\"sugText\" [(ngModel)]=\"suggestion.text\" placeholder=\"请输入\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                  <ng-template #textErrorTips let-control>\r\n                    <ng-container *ngIf=\"control.hasError('required')\">\r\n                      按钮名称不能为空\r\n                    </ng-container>\r\n                  </ng-template>\r\n                </ng-template>\r\n              </td>\r\n              <td>\r\n                <ng-container *ngIf=\"editIndex !== sIndex; else actionTpl\">\r\n                  <!-- {{ suggestion.action === suggestionActions[0].value ? suggestionActions[0].label : suggestionActions[1].label }} -->\r\n                  <span *ngIf=\"suggestion.action == 1\">电话拨打</span>\r\n                  <span *ngIf=\"suggestion.action == 2\">链接跳转</span>\r\n                  <span *ngIf=\"suggestion.action == 3\">消息上行</span>\r\n                  <span *ngIf=\"suggestion.action == 4\">获取终端位置</span>\r\n                  <span *ngIf=\"suggestion.action == 5\">发送地理位置</span>\r\n                  <span *ngIf=\"suggestion.action == 6\">共享终端信息</span>\r\n                  <span *ngIf=\"suggestion.action == 7\">视频通话</span>\r\n                  <span *ngIf=\"suggestion.action == 8\">创建日历</span>\r\n                </ng-container>\r\n                <ng-template #actionTpl>\r\n                  <nz-form-control nzHasFeedback>\r\n                    <nz-select [(ngModel)]=\"suggestion.action\" name=\"action{{ sIndex }}\" nzPlaceHolder=\"请选择\" (ngModelChange)=\"actionChannge($event, suggestion)\" required>\r\n                      <nz-option *ngFor=\"let action of suggestionActions\" [nzValue]=\"action.value\" nzLabel=\"{{ action.label }}\"> </nz-option>\r\n                    </nz-select>\r\n                  </nz-form-control>\r\n                </ng-template>\r\n              </td>\r\n              <td>\r\n                <ng-container *ngIf=\"editIndex !== sIndex; else paramTpl\">\r\n                  <div *ngIf=\"suggestion.action == 1\">{{ suggestion.param.extInfo }}</div>\r\n                  <div *ngIf=\"suggestion.action == 2\">{{ suggestion.param.link.longUrlName || suggestion.param.link.targetUrl }}</div>\r\n                  <div *ngIf=\"suggestion.action == 3\">{{ suggestion.param.extInfo }}</div>\r\n                  <div *ngIf=\"suggestion.action == 4\" style=\"width: 130px;\">获取用户终端位置</div>\r\n                  <div *ngIf=\"suggestion.action == 5\">{{ suggestion.param.map.currentTude }}</div>\r\n                  <div *ngIf=\"suggestion.action == 6\" style=\"width: 130px;\">共享终端信息</div>\r\n                  <div *ngIf=\"suggestion.action == 7\">{{ suggestion.param.extInfo }}</div>\r\n                  <a *ngIf=\"suggestion.action == 8\" (click)=\"openCalendarModal(suggestion, false, sIndex)\">查看日历事件</a>\r\n                </ng-container>\r\n                <ng-template #paramTpl>\r\n                  <!-- 1电话号码 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 1\" nzHasFeedback [nzErrorTip]=\"tepPhoneErrorTips\">\r\n                    <input nz-input name=\"param\" pattern=\"^[0-9]*$\" [(ngModel)]=\"suggestion.param.extInfo\" placeholder=\"请输入电话号码\" maxlength=\"20\" required />\r\n                    <ng-template #tepPhoneErrorTips let-control>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">\r\n                        电话号码不能为空\r\n                      </ng-container>\r\n                      <ng-container *ngIf=\"control.hasError('pattern')\">\r\n                        请输入正确的电话号码\r\n                      </ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                  <!-- 2链接跳转 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 2\" nzHasFeedback [nzErrorTip]=\"urlErrorTips\">\r\n                    <input nz-input name=\"param\" [(ngModel)]=\"suggestion.param.link.targetUrl || suggestion.param.link.longUrlName\" placeholder=\"请选择跳转链接\" maxlength=\"100\" required readonly />\r\n                    <ng-template #urlErrorTips let-control>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">\r\n                        链接不能为空\r\n                      </ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                  <!-- 3上行关键字 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 3\" [nzSpan]=\"18\" nzHasFeedback [nzErrorTip]=\"combineTpl3\">\r\n                    <nz-select style=\"min-width: 160px;\" nzPlaceHolder=\"请选择上行关键字\" nzAllowClear nzShowSearch nzServerSearch [(ngModel)]=\"suggestion.param.extInfo\" (click)=\"clickReply($event)\" (nzOnSearch)=\"onSearch($event)\" name=\"keyword\" required>\r\n                      <nz-option *ngFor=\"let node of autoReplyList\" [nzValue]=\"node\" [nzLabel]=\"node\"></nz-option>\r\n                    </nz-select>\r\n                    <ng-template #combineTpl3 let-control>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">上行关键字不可为空</ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                  <!-- 4获取终端位置 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 4\" [nzSpan]=\"18\">\r\n                    <div style=\"width: 130px;\">获取用户终端位置</div>\r\n                  </nz-form-control>\r\n                  <!-- 5发送地理位置 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 5\" [nzSpan]=\"18\" nzHasFeedback [nzErrorTip]=\"combineTpl5\">\r\n                    <input style=\"min-width: 200px;\" nz-input name=\"param\" [(ngModel)]=\"suggestion.param.map.currentTude\" placeholder=\"请选择地理位置\" maxlength=\"100\" required readonly />\r\n                    <ng-template #combineTpl5 let-control>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">地理位置不可为空</ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                  <!-- 6共享终端信息 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 6\" [nzSpan]=\"18\">\r\n                    <div style=\"width: 130px;\">共享终端信息</div>\r\n                  </nz-form-control>\r\n                  <!-- 7视频通话 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 7\" nzHasFeedback [nzErrorTip]=\"tepPhoneErrorTips\">\r\n                    <input nz-input name=\"param\" pattern=\"^[0-9]*$\" [(ngModel)]=\"suggestion.param.extInfo\" placeholder=\"请输入电话号码\" maxlength=\"20\" required />\r\n                    <ng-template #tepPhoneErrorTips let-control>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">\r\n                        电话号码不能为空\r\n                      </ng-container>\r\n                      <ng-container *ngIf=\"control.hasError('pattern')\">\r\n                        请输入正确的电话号码\r\n                      </ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                  <!-- 8创建日历 -->\r\n                  <nz-form-control *ngIf=\"suggestion.action == 8\">\r\n                    <a (click)=\"openCalendarModal(suggestion, true, sIndex)\">编辑终端日历</a>\r\n                  </nz-form-control>\r\n                </ng-template>\r\n              </td>\r\n              <td>\r\n                <ng-container *ngIf=\"editIndex !== sIndex; else saveTpl\">\r\n                  <a (click)=\"editSuggestion(sIndex)\">编辑</a>\r\n                  <nz-divider nzType=\"vertical\"></nz-divider>\r\n                  <a nz-popconfirm nzPopconfirmTitle=\"是否要删除?\" nzPopconfirmPlacement=\"bottom\" (nzOnConfirm)=\"deleteSuggestion(sIndex)\">删除</a>\r\n                </ng-container>\r\n                <ng-template #saveTpl>\r\n                  <div [ngStyle]=\"{ 'width.px': card.suggestions[sIndex].action == 5 || card.suggestions[sIndex].action == 2 ? 150 : 100 }\">\r\n                    <a *ngIf=\"card.suggestions[sIndex].action == 5\" (click)=\"queryPosition()\">查询坐标</a>\r\n                    <nz-divider *ngIf=\"card.suggestions[sIndex].action == 5\" nzType=\"vertical\"></nz-divider>\r\n                    <a *ngIf=\"card.suggestions[sIndex].action == 2\" (click)=\"OpenShortChainModal()\">插入短链</a>\r\n                    <nz-divider *ngIf=\"card.suggestions[sIndex].action == 2\" nzType=\"vertical\"></nz-divider>\r\n                    <a *ngIf=\"card.suggestions[sIndex].action == 2\" (click)=\"OpenLongChainModal()\">选择链接</a>\r\n                    <nz-divider *ngIf=\"card.suggestions[sIndex].action == 2\" nzType=\"vertical\"></nz-divider>\r\n                    <a (click)=\"saveSuggestion(sIndex)\">保存</a>\r\n                    <nz-divider nzType=\"vertical\"></nz-divider>\r\n                    <a (click)=\"cancelSuggestion(sIndex)\">取消</a>\r\n                  </div>\r\n                </ng-template>\r\n              </td>\r\n            </tr>\r\n            <nz-modal [(nzVisible)]=\"isShowCalendarModal\" nzKeyboard=\"false\" [nzMaskClosable]=\"false\" [nzTitle]=\"isEditCalendar ? '编辑终端日历' : '查看日历事件'\" [nzFooter]=\"isEditCalendar ? modalFooter : null\" (nzOnCancel)=\"handleCancel()\">\r\n              <form #form=\"ngForm\" se-container=\"1\" labelWidth=\"150\" nz-form>\r\n                <div nz-row>\r\n                  <nz-form-item>\r\n                    <nz-form-label nz-col nzSpan=\"5\" nzRequired>日历标题</nz-form-label>\r\n                    <nz-form-control nz-col nzSpan=\"17\">\r\n                      <input nz-input placeholder=\"请输入日历标题\" [(ngModel)]=\"calendarTitle\" name=\"calendarTitle\" minlength=\"1\" maxlength=\"50\" autocomplete=\"off\" [disabled]=\"!isEditCalendar\" />\r\n                    </nz-form-control>\r\n                  </nz-form-item>\r\n                </div>\r\n                <div nz-row>\r\n                  <nz-form-item>\r\n                    <nz-form-label nz-col nzSpan=\"5\" nzRequired>起止时间</nz-form-label>\r\n                    <nz-form-control nz-col nzSpan=\"17\">\r\n                      <nz-range-picker [(ngModel)]=\"timeRange\" [ngModelOptions]=\"{ standalone: true }\" [nzShowTime]=\"true\" [disabled]=\"!isEditCalendar\"> </nz-range-picker>\r\n                    </nz-form-control>\r\n                  </nz-form-item>\r\n                </div>\r\n              </form>\r\n              <ng-template #modalFooter>\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"handleCancel()\"><span>取消</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"handleOkCalendar()\"><span>确定</span></icc-button>\r\n              </ng-template>\r\n            </nz-modal>\r\n          </tbody>\r\n        </nz-table>\r\n        <button class=\"add-Btn\" *ngIf=\"editIndex === -1 && mode === 'edit'\" nz-button [nzType]=\"'dashed'\" (click)=\"addSuggestion()\" nzBlock>\r\n          <i nz-icon nzType=\"plus\"></i>\r\n          <span>新增</span>\r\n        </button>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"4\" nzRequired>卡片封面</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <material-tab #materialTab [imgList]=\"imgList\" [videoUrl]=\"videoUrl\" (selectEvent)=\"selectMedia($event)\" (retSelectEvent)=\"selectMedia($event)\"></material-tab>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n  </form>\r\n</div>\r\n\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"destroy()\"><span>关闭</span> </icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\" [isDisabled]=\"!validForm.form.valid || editIndex !== -1\">\r\n    <span>保存</span>\r\n  </icc-button>\r\n</div>\r\n","styles":[".var-item{display:inline-block;margin-right:10px;margin-bottom:10px;padding:0 15px;border-radius:15px;height:30px;cursor:pointer;line-height:28px}.main{overflow:auto;height:70vh;max-height:600px}.main form{transform:translateX(-30px)}.card-thead{padding:7px 8px!important}.var-default{border:1px solid #ccc}.var-active{border:1px solid #b9e3e6!important;background:#e8f6f7!important}.var-require{border:1px solid #ccc;background:#f3f4f8}.add-Btn{padding:0 15px;border:1px dashed #d9d9d9;border-radius:4px;height:32px;background:#fff;cursor:pointer;line-height:32px;transition:.5s}.add-Btn:hover{border:1px dashed #37ba9d;background:#fff;color:#37ba9d}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":22,"character":27},{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":22,"character":93},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":22,"character":126}]}],"materialTab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":["materialTab",{"static":false}]}]}],"addSuggestion":[{"__symbolic":"method"}],"deleteSuggestion":[{"__symbolic":"method"}],"editSuggestion":[{"__symbolic":"method"}],"saveSuggestion":[{"__symbolic":"method"}],"cancelSuggestion":[{"__symbolic":"method"}],"setEditTmpInfo":[{"__symbolic":"method"}],"getCaretPosWithEvent":[{"__symbolic":"method"}],"insertVar":[{"__symbolic":"method"}],"varMouseOver":[{"__symbolic":"method"}],"varMouseLeave":[{"__symbolic":"method"}],"actionChannge":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"selectMedia":[{"__symbolic":"method"}],"clickReply":[{"__symbolic":"method"}],"onSearch":[{"__symbolic":"method"}],"init5GReplySearch":[{"__symbolic":"method"}],"queryPosition":[{"__symbolic":"method"}],"OpenShortChainModal":[{"__symbolic":"method"}],"OpenLongChainModal":[{"__symbolic":"method"}],"openCalendarModal":[{"__symbolic":"method"}],"handleOkCalendar":[{"__symbolic":"method"}],"handleCancel":[{"__symbolic":"method"}],"onOpenChange":[{"__symbolic":"method"}]}},"Icc5gEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"selector":"icc-5g-editor","template":"<nz-form-item>\r\n  <nz-form-label *ngIf=\"!disabled\" [nzSpan]=\"3\" nzRequired>展示样式</nz-form-label>\r\n  <nz-form-label *ngIf=\"disabled\" [nzSpan]=\"3\">展示样式</nz-form-label>\r\n  <nz-form-control [nzSpan]=\"20\">\r\n    <nz-radio-group [(ngModel)]=\"contentRoot.contentType\" (ngModelChange)=\"change5GContentType($event)\" name=\"showType\">\r\n      <label nz-radio nzValue=\"1\" [hidden]=\"disabled && contentRoot.contentType != 1\">多卡片消息</label>\r\n      <label nz-radio nzValue=\"2\" [hidden]=\"disabled && contentRoot.contentType != 2\">单卡片消息</label>\r\n      <label nz-radio nzValue=\"3\" [hidden]=\"disabled && contentRoot.contentType != 3\">纯文本</label>\r\n      <label nz-radio nzValue=\"4\" [hidden]=\"disabled && contentRoot.contentType != 4\">视频消息</label>\r\n      <label nz-radio nzValue=\"5\" [hidden]=\"disabled && contentRoot.contentType != 5\">图片消息</label>\r\n      <label nz-radio nzValue=\"6\" [hidden]=\"disabled && contentRoot.contentType != 6\">音频消息</label>\r\n    </nz-radio-group>\r\n  </nz-form-control>\r\n</nz-form-item>\r\n\r\n<!-- 业务变量 -->\r\n<!-- 非匹配模版下可编辑状态，启用点击 -->\r\n<icc-tpl-variable *ngIf=\"contentRoot.contentType == 3 && !disabled && variableBinds && variableBinds.length > 0\" [variableBinds]=\"variableBinds\" (insert)=\"insertVar($event)\"></icc-tpl-variable>\r\n<!-- 匹配模版下不可编辑状态，禁用点击 -->\r\n<icc-tpl-variable *ngIf=\"contentRoot.contentType == 3 && disabled && variableBinds && variableBinds.length > 0\" [variableBinds]=\"variableBinds\"></icc-tpl-variable>\r\n\r\n<nz-form-item *ngIf=\"contentRoot.contentType == 3 && isHasShowUrl && !disabled\">\r\n  <nz-form-label [nzSpan]=\"3\">配置短链</nz-form-label>\r\n  <nz-form-control [nzSpan]=\"15\">\r\n    <button (click)=\"openShortChainModal(contentRoot)\" class=\"add-btn\" nz-button nzType=\"dashed\">\r\n      <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n      <span>插入短链</span>\r\n    </button>\r\n  </nz-form-control>\r\n</nz-form-item>\r\n\r\n<nz-form-item>\r\n  <nz-form-label *ngIf=\"!disabled\" [nzSpan]=\"3\" nzRequired>内容</nz-form-label>\r\n  <nz-form-label *ngIf=\"disabled\" [nzSpan]=\"3\">内容</nz-form-label>\r\n  <nz-form-control [nzSpan]=\"15\" *ngIf=\"contentRoot.contentType == 1 || contentRoot.contentType == 2\">\r\n    <!-- <button class=\"add-Btn\" nz-button nzType=\"dashed\" *ngIf=\"!disabled\" (click)=\"addCard()\"> -->\r\n    <button class=\"add-Btn\" nz-button nzType=\"dashed\" (click)=\"addCard()\" *ngIf=\"!(contentRoot.contentType == 2 && !is5GCardListEmpty()) && !disabled\">\r\n      <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n      <span>添加卡片</span>\r\n    </button>\r\n    <icc-card [width]=\"width\" [cardLists]=\"cardList\" [num]=\"groupCards\" (editEvent)=\"editCard($event)\" (removeEvent)=\"removeCard($event)\" [editable]=\"!disabled\" *ngIf=\"!is5GCardListEmpty()\"></icc-card>\r\n  </nz-form-control>\r\n  <nz-form-control [nzSpan]=\"15\" *ngIf=\"contentRoot.contentType == 3\">\r\n    <!-- <div *ngIf=\"variableBinds && variableBinds.length > 0\" style=\"width: 96%;\"> -->\r\n    <!-- 非匹配模版下可编辑状态，启用点击 -->\r\n    <!-- <div *ngIf=\"!disabled\" style=\"display: inline-block;width: 96%;\">\r\n        <span class=\"var-item \" [ngClass]=\"{ 'var-require': v.isRequired === true, 'var-default': v.isRequired !== true }\" (mouseover)=\"varMouseOver($event)\" (mouseleave)=\"varMouseLeave($event)\" *ngFor=\"let v of variableBinds\" (click)=\"insertVar(v)\">\r\n          {{ v.code }}\r\n        </span>\r\n      </div> -->\r\n\r\n    <!-- 匹配模版下不可编辑状态，禁用点击 -->\r\n    <!-- <div *ngIf=\"disabled\" style=\"display: inline-block;width: 96%;\">\r\n        <span class=\"var-item \" [ngClass]=\"{ 'var-require': v.isRequired === true, 'var-default': v.isRequired !== true }\" (mouseover)=\"varMouseOver($event)\" (mouseleave)=\"varMouseLeave($event)\" *ngFor=\"let v of variableBinds\">\r\n          {{ v.code }}\r\n        </span>\r\n      </div> -->\r\n    <!-- <span class=\"iconfont icon-wenhao wenhao\" nz-popover [nzPopoverContent]=\"varUseTipTmp\" style=\"float: right; margin-right: -15px;\"></span>\r\n    </div> -->\r\n    <!--\r\n    <textarea style=\"width: 1000px;margin-top: 10px;\" (click)=\"getCaretPosWithEvent($event)\" (keyup)=\"getCaretPosWithEvent($event)\" rows=\"6\" name=\"textContent\" nz-input [(ngModel)]=\"contentRoot.content\" minlength=\"1\" [maxlength]=\"maxLength\" [disabled]=\"disabled\" required></textarea>\r\n\r\n<!-- <ng-template #varUseTipTmp>\r\n      点击变量添加到模板内容中\r\n    </ng-template> -->\r\n\r\n    <!-- icc-fake-textarea -->\r\n    <!-- 模版编辑 -->\r\n    <icc-fake-textarea *ngIf=\"!disabled\" #textArea style=\"width: 100%;\" (valueChange)=\"handelValueChange($event, contentRoot)\" [value]=\"contentRoot.content\" (emitCursorOffset)=\"setCursorOffset($event, contentRoot)\" [targetUrl]=\"contentRoot.targetUrl\" [serverUrl]=\"contentRoot.serverUrl || null\" [isDisabled]=\"disabled\" [maxlength]=\"maxLength\" [placeholder]=\"'请输入内容'\" [isTplEdit]=\"isTplEdit\"></icc-fake-textarea>\r\n    <!-- 手动选择模版-显示 -->\r\n    <icc-fake-textarea *ngIf=\"disabled\" style=\"width: 100%;\" [isDisabled]=\"true\" [value]=\"contentRoot.content\" [targetUrl]=\"contentRoot.targetUrl\"></icc-fake-textarea>\r\n    <p style=\"line-height: 1.4;color: #969595;font-size: 12px;text-align: right;\">已输入{{ contentRoot?.content?.length }}/{{ maxLength }}</p>\r\n  </nz-form-control>\r\n  <nz-form-control [nzSpan]=\"15\" *ngIf=\"contentRoot.contentType == 4\" style=\"margin: 10px 0 10px 5px\">\r\n    <div *ngIf=\"!videoUrl\" (click)=\"selectMeterial('video')\" class=\"upload\">\r\n      <i nz-icon nzType=\"upload\" nzTheme=\"outline\" class=\"ico\"></i>\r\n      <span>从素材库选择视频</span>\r\n    </div>\r\n    <div style=\"width: 300px;\" *ngIf=\"videoUrl\">\r\n      <icc-video [disabled]=\"true\" [url]=\"videoUrl\"></icc-video>\r\n      <icc-button *ngIf=\"!disabled\" (click)=\"reSelect('video')\" style=\"width: 100%;\">重新选择</icc-button>\r\n    </div>\r\n  </nz-form-control>\r\n  <nz-form-control [nzSpan]=\"15\" *ngIf=\"contentRoot.contentType == 5\" style=\"margin: 10px 0 10px 5px\">\r\n    <div *ngIf=\"imgList.length < 1\" (click)=\"selectMeterial('img')\" class=\"upload\">\r\n      <i nz-icon nzType=\"upload\" nzTheme=\"outline\" class=\"ico\"></i>\r\n      <span>从素材库选择图片</span>\r\n    </div>\r\n    <div style=\"width: 160px;\" *ngIf=\"imgList.length > 0\">\r\n      <icc-image-upload [width]=\"160\" [imgList]=\"imgList\" [editable]=\"false\"></icc-image-upload>\r\n      <icc-button *ngIf=\"!disabled\" (click)=\"reSelect('img')\" style=\"width: 100%;\">重新选择</icc-button>\r\n    </div>\r\n  </nz-form-control>\r\n  <nz-form-control [nzSpan]=\"15\" *ngIf=\"contentRoot.contentType == 6\" style=\"margin: 10px 0 10px 5px\">\r\n    <div *ngIf=\"!audioUrl\" (click)=\"selectMeterial('audio')\" class=\"upload\">\r\n      <i nz-icon nzType=\"upload\" nzTheme=\"outline\" class=\"ico\"></i>\r\n      <span>从素材库选择音频</span>\r\n    </div>\r\n    <div class=\"audio-wrapper\" *ngIf=\"audioUrl\">\r\n      <div class=\"title-wrapper\" [nzTooltipTitle]=\"audioTitle\" nzTooltipPlacement=\"top\" nz-tooltip><span class=\"title-label\">名称：</span>{{ audioTitle }}</div>\r\n      <icc-audio style=\"width: 100%;\" [url]=\"audioUrl\"></icc-audio>\r\n    </div>\r\n    <icc-button *ngIf=\"!disabled && audioUrl\" (click)=\"reSelect('audio')\" style=\"width: 400px;margin-top: 10px;\">重新选择</icc-button>\r\n  </nz-form-control>\r\n</nz-form-item>\r\n\r\n<!-- ----------- 回落信息 ------------ -->\r\n<nz-form-item>\r\n  <nz-form-label [nzSpan]=\"3\">回落信息</nz-form-label>\r\n  <nz-form-control [nzSpan]=\"15\">\r\n    <div class=\"fallBack-wrapper\">\r\n      <!-- <input placeholder=\"请输入回落信息\" nz-input name=\"fallBackContent\" [(ngModel)]=\"contentRoot.fallBackContent\" [disabled]=\"disabled\" require /> -->\r\n      <textarea placeholder=\"请输入回落信息\" name=\"fallBackContent\" [disabled]=\"disabled\" rows=\"3\" nz-input [(ngModel)]=\"contentRoot.fallBackContent\" [maxlength]=\"1000\"></textarea>\r\n      <span style=\"transform: translate(10px, -4px)\" nz-tooltip [nzTooltipTitle]=\"tips\"><span class=\"iconfont icon-wenhao\"></span></span>\r\n      <ng-template #tips>\r\n        <span>说明：在5G消息业务场景中，融合消息平台向用户下行5G消息，如若终端是非5G消息设备，则5G消息自动回落成普通短信，其内容即为上述填写的回落内容。</span>\r\n      </ng-template>\r\n    </div>\r\n  </nz-form-control>\r\n</nz-form-item>\r\n\r\n<nz-form-item *ngIf=\"!(disabled && !supportSuggestion)\">\r\n  <nz-form-label [nzSpan]=\"3\">悬浮菜单</nz-form-label>\r\n  <nz-form-control [nzSpan]=\"15\">\r\n    <!-- 详情状态 -->\r\n    <div class=\"detailState\" *ngIf=\"disabled\">\r\n      <icc-tags *ngFor=\"let item of contentRoot.suggestions\" [notDelete]=\"disabled\" [nzPopoverContent]=\"viewSuggestionTemplate\" nz-popover>\r\n        <span style=\"cursor: pointer;\">{{ item.text }}</span>\r\n        <!--  ---------------------------预览悬浮菜单---------------------------- -->\r\n        <ng-template #viewSuggestionTemplate>\r\n          <nz-tabset style=\"width:600px; padding-bottom: 20px;\">\r\n            <nz-tab nzTitle=\"电话拨打\" *ngIf=\"item.action === 1\">\r\n              <form nz-form nz-row #validForm=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" maxlength=\"15\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">电话号码</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telNum\" [(ngModel)]=\"item.param.extInfo\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"链接跳转\" *ngIf=\"item.action === 2\">\r\n              <form nz-form nz-row #validForm2=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"linkText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">目标链接</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input [(ngModel)]=\"item.param.link.longUrl || item.param.link.targetUrl\" nz-input name=\"linkAddr\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"消息上行\" *ngIf=\"item.action === 3\">\r\n              <form nz-form nz-row #validForm3=\"ngForm\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" maxlength=\"15\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">上行内容</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"moConent\" [(ngModel)]=\"item.param.extInfo\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <!-- 不要对pre内的内容格式化，影响样式 -->\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding-top: 5px;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：\r\n    1、悬浮菜单中，触发了消息上行的操作后，用户仅上行所配置的“上行内容”;\r\n    2、系统支持对上行内容触发自动回复操作，如需配置回复内容，请前往5G消息<a target=\"_blank\" routerLink=\"/msgRecord/msgAutomationEngine/autoReply/5g\">自动回复</a>模块进行新增;\r\n    3、对上行内容输入时，系统会自动匹配已存在的自动回复。\r\n          </pre>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"获取终端位置\" *ngIf=\"item.action === 4\">\r\n              <form nz-form nz-row #validForm4=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <!-- 不要对pre内的内容格式化，影响样式 -->\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于获取终端用户的地理位置信息\r\n          </pre>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"发送地理位置\" *ngIf=\"item.action === 5\">\r\n              <form nz-form nz-row #validForm5=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">目标位置经纬度</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input placeholder=\"请选择地理位置\" [(ngModel)]=\"item.param.map.currentTude\" nz-input name=\"linkAddr\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于向终端用户发送指定的地理位置信息\r\n          </pre>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"共享终端信息\" *ngIf=\"item.action === 6\">\r\n              <form nz-form nz-row #validForm6=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"视频通话\" *ngIf=\"item.action === 7\">\r\n              <form nz-form nz-row #validForm7=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">电话号码</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telNum\" [(ngModel)]=\"item.param.extInfo\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"创建日历\" *ngIf=\"item.action === 8\">\r\n              <form nz-form nz-row #validForm6=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\">操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"item.text\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label nz-col [nzSpan]=\"6\">日历标题</nz-form-label>\r\n                  <nz-form-control nz-col [nzSpan]=\"15\">\r\n                    <input nz-input [(ngModel)]=\"item.param.calendarInfo.title\" name=\"calendarTitle\" readonly />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label nz-col [nzSpan]=\"6\">起止时间</nz-form-label>\r\n                  <nz-form-control nz-col [nzSpan]=\"15\">\r\n                    <nz-range-picker [(ngModel)]=\"item.param.calendarInfo.viewTimeRange\" [ngModelOptions]=\"{ standalone: true }\" [nzShowTime]=\"true\" nzAllowClear=\"false\" required> </nz-range-picker>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n            </nz-tab>\r\n          </nz-tabset>\r\n        </ng-template>\r\n      </icc-tags>\r\n    </div>\r\n    <!-- 编辑状态 -->\r\n    <div class=\"editState\" *ngIf=\"!disabled\">\r\n      <button class=\"add-Btn\" style=\"margin-right: 10px;\" nz-button nzType=\"dashed\" nz-popover [(nzVisible)]=\"showAddSuggestion\" nzPopoverTrigger=\"null\" (click)=\"showPopoverContent()\" [nzPopoverContent]=\"addSuggestionTemplate\">\r\n        <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n        <span>添加</span>\r\n      </button>\r\n      <icc-tags *ngFor=\"let item of contentRoot.suggestions\" [notDelete]=\"disabled\" (removeEvent)=\"removeSuggestion(item)\" (click)=\"editSuggestion(item)\" nz-popover [(nzVisible)]=\"item.showEditSuggestion\" nzPopoverTrigger=\"null\" [nzPopoverContent]=\"editSuggestionTemplate\">\r\n        <span style=\"cursor: pointer;\">{{ item.text }}</span>\r\n        <!--  ---------------------------编辑悬浮菜单---------------------------- -->\r\n        <ng-template #editSuggestionTemplate>\r\n          <nz-tabset [nzSelectedIndex]=\"editSuggestionTmp.action - 1\" style=\"width:600px; padding-bottom: 20px;\" (nzSelectChange)=\"editChangeSuggestionType($event)\">\r\n            <nz-tab nzTitle=\"电话拨打\">\r\n              <form nz-form nz-row #validForm=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>电话号码</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\" [nzErrorTip]=\"telTplEdit\">\r\n                    <input nz-input name=\"telNum\" [(ngModel)]=\"editSuggestionTmp.param.extInfo\" required pattern=\"^[0-9]*$\" maxlength=\"15\" />\r\n                    <ng-template #telTplEdit let-control>\r\n                      <ng-container *ngIf=\"control.hasError('pattern')\">格式错误！</ng-container>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">必填!</ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"链接跳转\">\r\n              <form nz-form nz-row #validForm2=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"linkText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>目标链接</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input placeholder=\"请选择目标链接\" [(ngModel)]=\"editSuggestionTmp.param.link.longUrlName || editSuggestionTmp.param.link.targetUrl\" nz-input name=\"linkAddr\" required readonly />\r\n                    <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"editShortChainModal()\">\r\n                      <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                      <span>插入短链</span>\r\n                    </button>\r\n                    <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"editLongChainModal()\">\r\n                      <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                      <span>选择链接</span>\r\n                    </button>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm2.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"消息上行\">\r\n              <form nz-form nz-row #validForm3=\"ngForm\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>上行内容</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input placeholder=\"请输入\" nz-input name=\"moConent\" [(ngModel)]=\"editSuggestionTmp.param.extInfo\" maxlength=\"15\" required (input)=\"search5GReply($event)\" [nzAutocomplete]=\"auto\" (click)=\"search5GReplyClick($event)\" />\r\n                    <nz-autocomplete [nzDataSource]=\"_5GReplyList\" nzBackfill #auto></nz-autocomplete>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <!-- 不要对pre内的内容格式化，影响样式 -->\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding-top: 5px;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：\r\n    1、悬浮菜单中，触发了消息上行的操作后，用户仅上行所配置的“上行内容”;\r\n    2、系统支持对上行内容触发自动回复操作，如需配置回复内容，请前往5G消息<a target=\"_blank\" routerLink=\"/msgRecord/msgAutomationEngine/autoReply/5g\">自动回复</a>模块进行新增;\r\n    3、对上行内容输入时，系统会自动匹配已存在的自动回复。\r\n          </pre>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm3.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"获取终端位置\">\r\n              <form nz-form nz-row #validForm4=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <!-- 不要对pre内的内容格式化，影响样式 -->\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于获取终端用户的地理位置信息\r\n          </pre>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm4.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"发送地理位置\">\r\n              <form nz-form nz-row #validForm5=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>目标位置经纬度</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input placeholder=\"请选择地理位置\" [(ngModel)]=\"editSuggestionTmp.param.map.currentTude\" nz-input name=\"linkAddr\" required readonly />\r\n                    <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"editQueryPosition(item)\">\r\n                      <span>查询坐标</span>\r\n                    </button>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <pre\r\n                style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n              ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于向终端用户发送指定的地理位置信息\r\n          </pre>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm5.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"共享终端信息\">\r\n              <form nz-form nz-row #validForm6=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm6.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"视频通话\">\r\n              <form nz-form nz-row #validForm7=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>电话号码</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\" [nzErrorTip]=\"telTplEdit\">\r\n                    <input nz-input name=\"telNum\" [(ngModel)]=\"editSuggestionTmp.param.extInfo\" required pattern=\"^[0-9]*$\" maxlength=\"15\" />\r\n                    <ng-template #telTplEdit let-control>\r\n                      <ng-container *ngIf=\"control.hasError('pattern')\">格式错误！</ng-container>\r\n                      <ng-container *ngIf=\"control.hasError('required')\">必填!</ng-container>\r\n                    </ng-template>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm7.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n            <nz-tab nzTitle=\"创建日历\">\r\n              <form nz-form nz-row #validForm8=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n                <nz-form-item>\r\n                  <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n                  <nz-form-control [nzSpan]=\"15\">\r\n                    <input nz-input name=\"telText\" [(ngModel)]=\"editSuggestionTmp.text\" maxlength=\"15\" required />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label nz-col [nzSpan]=\"6\" nzRequired>日历标题</nz-form-label>\r\n                  <nz-form-control nz-col [nzSpan]=\"15\">\r\n                    <input nz-input placeholder=\"请输入日历标题\" [(ngModel)]=\"editSuggestionTmp.param.calendarInfo.title\" name=\"calendarTitle\" required minlength=\"1\" maxlength=\"50\" autocomplete=\"off\" />\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n                <nz-form-item>\r\n                  <nz-form-label nz-col [nzSpan]=\"6\" nzRequired>起止时间</nz-form-label>\r\n                  <nz-form-control nz-col [nzSpan]=\"15\">\r\n                    <nz-range-picker [(ngModel)]=\"editTimeRange\" [ngModelOptions]=\"{ standalone: true }\" [nzShowTime]=\"true\" required> </nz-range-picker>\r\n                  </nz-form-control>\r\n                </nz-form-item>\r\n              </form>\r\n              <div class=\"modal-footer modal-footer-update\">\r\n                <icc-button [btnType]=\"'hollow'\" (btnClick)=\"editCancelSuggestion(item)\"> <span>关闭</span></icc-button>\r\n                <icc-button [btnType]=\"'default'\" (btnClick)=\"editSaveSuggestion(item)\" [isDisabled]=\"!validForm8.form.valid\">\r\n                  <span>保存</span>\r\n                </icc-button>\r\n              </div>\r\n            </nz-tab>\r\n          </nz-tabset>\r\n        </ng-template>\r\n      </icc-tags>\r\n    </div>\r\n    <!-- --------------------------------------------------------------------------- -->\r\n    <!-- 新增悬浮菜单 -->\r\n    <ng-template #addSuggestionTemplate>\r\n      <nz-tabset style=\"width:600px; padding-bottom: 20px;\" (nzSelectChange)=\"changeSuggestionType($event)\">\r\n        <nz-tab nzTitle=\"电话拨打\">\r\n          <form nz-form nz-row #validForm=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>电话号码</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\" [nzErrorTip]=\"telTplAdd\">\r\n                <input nz-input name=\"telNum\" [(ngModel)]=\"suggestionTmp.param.extInfo\" required pattern=\"^[0-9]*$\" maxlength=\"15\" />\r\n                <ng-template #telTplAdd let-control>\r\n                  <ng-container *ngIf=\"control.hasError('pattern')\">格式错误！</ng-container>\r\n                  <ng-container *ngIf=\"control.hasError('required')\">必填!</ng-container>\r\n                </ng-template>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"链接跳转\">\r\n          <form nz-form nz-row #validForm2=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"linkText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>目标链接</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input placeholder=\"请选择目标链接\" [(ngModel)]=\"suggestionTmp.param.link.longUrlName || suggestionTmp.param.link.targetUrl\" nz-input name=\"linkAddr\" required readonly />\r\n                <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"addShortChainModal()\">\r\n                  <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                  <span>插入短链</span>\r\n                </button>\r\n                <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"addLongChainModal()\">\r\n                  <i nz-icon nzType=\"plus\" class=\"add\"></i>\r\n                  <span>选择链接</span>\r\n                </button>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm2.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"消息上行\">\r\n          <form nz-form nz-row #validForm3=\"ngForm\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>上行内容</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input placeholder=\"请输入\" nz-input name=\"moConent\" [(ngModel)]=\"suggestionTmp.param.extInfo\" maxlength=\"15\" required (input)=\"search5GReply($event)\" [nzAutocomplete]=\"auto\" (click)=\"search5GReplyClick($event)\" />\r\n                <nz-autocomplete [nzDataSource]=\"_5GReplyList\" nzBackfill #auto></nz-autocomplete>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <!-- 不要对pre内的内容格式化，影响样式 -->\r\n          <pre\r\n            style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding-top: 5px;\"\r\n          ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：\r\n    1、悬浮菜单中，触发了消息上行的操作后，用户仅上行所配置的“上行内容”;\r\n    2、系统支持对上行内容触发自动回复操作，如需配置回复内容，请前往5G消息<a target=\"_blank\" routerLink=\"/msgRecord/msgAutomationEngine/autoReply/5g\">自动回复</a>模块进行新增;\r\n    3、对上行内容输入时，系统会自动匹配已存在的自动回复。\r\n          </pre>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm3.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"获取终端位置\">\r\n          <form nz-form nz-row #validForm4=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <!-- 不要对pre内的内容格式化，影响样式 -->\r\n          <pre\r\n            style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n          ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于获取终端用户的地理位置信息\r\n          </pre>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm4.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"发送地理位置\">\r\n          <form nz-form nz-row #validForm5=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>目标位置经纬度</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input placeholder=\"请选择地理位置\" [(ngModel)]=\"suggestionTmp.param.map.currentTude\" nz-input name=\"linkAddr\" required readonly />\r\n                <button class=\"add-Btn\" style=\"margin-right: 10px;margin-top: 15px;\" nz-button nzType=\"dashed\" (click)=\"addqueryPosition()\">\r\n                  <span>查询坐标</span>\r\n                </button>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <pre\r\n            style=\"font-size: 12px;\r\n            color:rgb(102, 102, 101);\r\n            background-color: #fffce9;\r\n            border:1px solid #f9eaac;\r\n            padding: 20px 0 0 15px;margin: 10px 0 -10px 0;\"\r\n          ><img src=\"./assets/images/layout/info.png\" alt=\"\" />说明：此按钮用于向终端用户发送指定的地理位置信息\r\n          </pre>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm5.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"共享终端信息\">\r\n          <form nz-form nz-row #validForm6=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm6.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"视频通话\">\r\n          <form nz-form nz-row #validForm7=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>电话号码</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\" [nzErrorTip]=\"telTplAdd\">\r\n                <input nz-input name=\"telNum\" [(ngModel)]=\"suggestionTmp.param.extInfo\" required pattern=\"^[0-9]*$\" maxlength=\"15\" />\r\n                <ng-template #telTplAdd let-control>\r\n                  <ng-container *ngIf=\"control.hasError('pattern')\">格式错误！</ng-container>\r\n                  <ng-container *ngIf=\"control.hasError('required')\">必填!</ng-container>\r\n                </ng-template>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm7.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n        <nz-tab nzTitle=\"创建日历\">\r\n          <form nz-form nz-row #validForm8=\"ngForm\" style=\"margin-bottom: -20px;\">\r\n            <nz-form-item>\r\n              <nz-form-label [nzSpan]=\"6\" nzRequired>操作按钮名称</nz-form-label>\r\n              <nz-form-control [nzSpan]=\"15\">\r\n                <input nz-input name=\"telText\" [(ngModel)]=\"suggestionTmp.text\" maxlength=\"15\" required />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label nz-col [nzSpan]=\"6\" nzRequired>日历标题</nz-form-label>\r\n              <nz-form-control nz-col [nzSpan]=\"15\">\r\n                <input nz-input placeholder=\"请输入日历标题\" [(ngModel)]=\"suggestionTmp.param.calendarInfo.title\" name=\"calendarTitle\" required minlength=\"1\" maxlength=\"50\" autocomplete=\"off\" />\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n            <nz-form-item>\r\n              <nz-form-label nz-col [nzSpan]=\"6\" nzRequired>起止时间</nz-form-label>\r\n              <nz-form-control nz-col [nzSpan]=\"15\">\r\n                <nz-range-picker [(ngModel)]=\"addTimeRange\" [ngModelOptions]=\"{ standalone: true }\" [nzShowTime]=\"true\" required> </nz-range-picker>\r\n              </nz-form-control>\r\n            </nz-form-item>\r\n          </form>\r\n          <div class=\"modal-footer modal-footer-update\">\r\n            <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancelSuggestion()\"> <span>关闭</span></icc-button>\r\n            <icc-button [btnType]=\"'default'\" (btnClick)=\"saveSuggestion()\" [isDisabled]=\"!validForm8.form.valid\">\r\n              <span>保存</span>\r\n            </icc-button>\r\n          </div>\r\n        </nz-tab>\r\n      </nz-tabset>\r\n    </ng-template>\r\n  </nz-form-control>\r\n</nz-form-item>\r\n","styles":[".var-item{display:inline-block;height:30px;margin-right:10px;margin-bottom:10px;padding:0 15px;line-height:28px;border-radius:15px;cursor:pointer}.var-default{border:1px solid #ccc}.var-active{background:#e8f6f7!important;border:1px solid #b9e3e6!important}.var-require{background:#f3f4f8;border:1px solid #ccc}.add-Btn{height:32px;padding:0 15px;line-height:32px;background:#fff;border:1px dashed #d9d9d9;border-radius:4px;cursor:pointer;transition:.5s}.add-Btn:hover{color:#37ba9d;background:#fff;border:1px dashed #37ba9d}.fallBack-wrapper{display:flex;justify-content:flex-start;transform:translateY(3px)}.upload{display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;justify-content:center;width:160px;height:160px;border:1px dashed #bdbdbd;cursor:pointer}.upload:hover{border-color:#26c59a}.upload .ico{color:#26c59a;font-size:24px}.upload .img-wrapper{width:160px}.upload .img-wrapper .btn-sel{width:100%}.upload .video-wrapper{width:300px}.upload .video-wrapper .btn-sel{width:100%}.title-wrapper{display:inline-block;width:360px;height:30px;overflow:hidden;font-weight:700;font-size:16px;line-height:30px;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.title-wrapper .title-label{display:inline-block;width:50px;height:30px;color:#9a9a9a;font-weight:400;line-height:30px}.audio-wrapper{width:400px;padding:20px 20px 5px;border-image-source:none;border-image-slice:100%;border-image-width:1;border-image-outset:0;border-image-repeat:stretch;box-shadow:rgba(0,0,0,.13) 1px 1px 3px 0;border-top:1px solid rgba(128,128,128,.3);border-right:1px solid rgba(128,128,128,.3);border-bottom:1px solid rgba(128,128,128,.3);border-color:rgba(128,128,128,.3);border-width:1px;border-style:solid;border-left:1px solid rgba(128,128,128,.3);border-radius:5px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":28,"character":67},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":28,"character":93},{"__symbolic":"reference","name":"PermissionControlService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":28,"character":172}]}],"textArea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":3},"arguments":["textArea",{"static":false}]}]}],"contentRoot":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"supportSuggestion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"variableBinds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"groupCards":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"channelIds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"isHandChangeChannel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"isTplEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"textContentChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":102,"character":3}}]}],"uuid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getCaretPosWithEvent":[{"__symbolic":"method"}],"init5GReplySearch":[{"__symbolic":"method"}],"change5GContentType":[{"__symbolic":"method"}],"is5GCardListEmpty":[{"__symbolic":"method"}],"addCard":[{"__symbolic":"method"}],"flushCardList":[{"__symbolic":"method"}],"editCard":[{"__symbolic":"method"}],"removeCard":[{"__symbolic":"method"}],"showPopoverContent":[{"__symbolic":"method"}],"changeSuggestionType":[{"__symbolic":"method"}],"editChangeSuggestionType":[{"__symbolic":"method"}],"saveSuggestion":[{"__symbolic":"method"}],"editSaveSuggestion":[{"__symbolic":"method"}],"cancelSuggestion":[{"__symbolic":"method"}],"editCancelSuggestion":[{"__symbolic":"method"}],"removeSuggestion":[{"__symbolic":"method"}],"search5GReply":[{"__symbolic":"method"}],"search5GReplyClick":[{"__symbolic":"method"}],"insertVar":[{"__symbolic":"method"}],"varMouseOver":[{"__symbolic":"method"}],"varMouseLeave":[{"__symbolic":"method"}],"editSuggestion":[{"__symbolic":"method"}],"selectMeterial":[{"__symbolic":"method"}],"reSelect":[{"__symbolic":"method"}],"openShortChainModal":[{"__symbolic":"method"}],"handelValueChange":[{"__symbolic":"method"}],"setCursorOffset":[{"__symbolic":"method"}],"addShortChainModal":[{"__symbolic":"method"}],"addLongChainModal":[{"__symbolic":"method"}],"editShortChainModal":[{"__symbolic":"method"}],"editLongChainModal":[{"__symbolic":"method"}],"addqueryPosition":[{"__symbolic":"method"}],"editQueryPosition":[{"__symbolic":"method"}]}},"IccAnchorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"icc-anchor","template":"<div #anchor class=\"anchor-box\" [ngClass]=\"{ 'timeline-fixed': hasFixedClass }\" id=\"anchor-box-id\" [ngStyle]=\"{ display: list.length > 0 ? 'block' : 'none' }\">\r\n  <ul>\r\n    <ng-container *ngFor=\"let item of list; let i = index\">\r\n      <li class=\"ant-timeline-item\" (click)=\"location($event)\">\r\n        <div class=\"timeline-item-tail\"></div>\r\n        <div class=\"timeline-item-head timeline-item-head-gray timeline-item-head-first\"></div>\r\n        <div class=\"ant-timeline-item-content timeline-item-content\">\r\n          <span class=\"timeline-name-first\">\r\n            <span (click)=\"quickLink($event, item.htmlId, i, null)\" name=\"anchor-name\">{{ item.name }}</span>\r\n            <ng-container *ngIf=\"!readonly && item.eventList && item.eventList.length\">\r\n              <span *ngFor=\"let evt of item.eventList\" class=\"iconfont hover\" [ngClass]=\"[evt.icon]\" (click)=\"handleClick(evt)\" nz-popover [nzPopoverContent]=\"evt.text\" nzPopoverPlacement=\"top\"></span>\r\n            </ng-container>\r\n            <i nz-icon nzType=\"right\" nzTheme=\"outline\" class=\"open-icon\" *ngIf=\"item.isFold\" nz-popover nzPopoverContent=\"展开\" nzPopoverPlacement=\"top\" (click)=\"toggle(item)\"></i>\r\n            <i nz-icon nzType=\"down\" nzTheme=\"outline\" class=\"open-icon\" *ngIf=\"!item.isFold\" nz-popover nzPopoverContent=\"收起\" nzPopoverPlacement=\"top\" (click)=\"toggle(item)\"></i>\r\n          </span>\r\n        </div>\r\n      </li>\r\n      <ng-container *ngIf=\"item.children.length && !item.isFold\">\r\n        <li class=\"ant-timeline-item\" *ngFor=\"let child of item.children; let cid = index\" (click)=\"location($event)\">\r\n          <div class=\"timeline-item-tail\" *ngIf=\"!(readonly && i === list.length - 1 && cid === item.children.length - 1)\"></div>\r\n          <div class=\"timeline-item-head timeline-item-head-gray\"></div>\r\n          <div class=\"ant-timeline-item-content timeline-item-content\" style=\"margin-left: 32px;\">\r\n            <span class=\"timeline-name-second\" (click)=\"quickLink($event, item.childClassName, i, cid)\" [title]=\"child.name\" name=\"anchor-name\">{{ child.name }}</span>\r\n          </div>\r\n        </li>\r\n      </ng-container>\r\n    </ng-container>\r\n\r\n    <li class=\"ant-timeline-item\" *ngIf=\"!readonly\">\r\n      <div class=\"timeline-item-head timeline-item-head-gray\"></div>\r\n      <div class=\"ant-timeline-item-content\">\r\n        <ng-content></ng-content>\r\n      </div>\r\n    </li>\r\n  </ul>\r\n  <span id=\"anchor-arrow-id\" [hidden]=\"!showRefer\" #anchorarrow></span>\r\n</div>\r\n","styles":[":host{display:inline-block;margin:0 5px}:host ::ng-deep .ant-timeline-item{position:relative;height:31px;margin:0;padding:0 0 10px;font-size:14px;list-style:none}:host ::ng-deep .anchor-box{position:relative;width:200px}:host ::ng-deep .anchor-box #anchor-arrow-id{position:absolute;top:-4px;left:27px;width:16px;height:16px;background:#4880ff;transition:.5s}:host ::ng-deep .anchor-box #anchor-arrow-id::after{position:absolute;top:0;right:-16px;width:0;height:0;border-color:transparent transparent transparent #4880ff;border-style:solid;border-width:8px;content:''}:host ::ng-deep .anchor-box .timeline-item-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host ::ng-deep .anchor-box .timeline-item-tail{position:absolute;top:0;left:4px;height:100%;border-left:2px solid #e8e8e8}:host ::ng-deep .anchor-box .timeline-item-head{position:absolute;left:1px;width:8px;height:8px;border:2px solid transparent;border-radius:100px}:host ::ng-deep .anchor-box .timeline-item-head-gray{color:#ccc;background:#ccc}:host ::ng-deep .anchor-box .timeline-item-head-first{left:2px;width:5px;height:5px;background:#9c9c9c;box-shadow:0 0 12px #000}:host ::ng-deep .anchor-box .timeline-name-first{display:flex;height:24px;color:#49536e;cursor:pointer}:host ::ng-deep .anchor-box .timeline-name-first .hover{margin-top:-1px;margin-left:6px;color:#b3b3b3;font-weight:600}:host ::ng-deep .anchor-box .timeline-name-first .hover:hover{color:#4880ff}:host ::ng-deep .anchor-box .timeline-name-first:hover{color:#4880ff}:host ::ng-deep .anchor-box .timeline-name-first .open-icon{margin-top:4px;margin-left:5px;color:#b3b3b3;font-weight:bolder}:host ::ng-deep .anchor-box .timeline-name-first .open-icon:hover{color:#4880ff}:host ::ng-deep .anchor-box .timeline-name-second{color:#49536e;font-size:12px;cursor:pointer}:host ::ng-deep .anchor-box .timeline-name-second:hover{color:#4880ff}:host ::ng-deep .timeline-fixed{position:fixed;top:100px;right:52px;margin-left:155px}"]}]}],"members":{"anchorArrow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":3},"arguments":["anchorarrow",{"static":false}]}]}],"scrollId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"breadCrumbHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"pageInnerHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"fatherId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"isChangeClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"showRefer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"isDetail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":96,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"getArrowIndex":[{"__symbolic":"method"}],"quickLink":[{"__symbolic":"method"}],"location":[{"__symbolic":"method"}],"getPositionById":[{"__symbolic":"method"}],"getPositionByClassName":[{"__symbolic":"method"}],"getDomOffsetTop":[{"__symbolic":"method"}],"getParentDomByTag":[{"__symbolic":"method"}],"getDomById":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}]}},"IccCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"icc-card","template":"\n    <div class=\"card-container\" [ngStyle]=\"{ width: width + 'px' }\">\n      <!-- 空状态 -->\n      <nz-empty *ngIf=\"isEmpty()\" style=\"margin:15px 0\"></nz-empty>\n      <div *ngIf=\"!isEmpty()\" class=\"card-wrapper\" [ngStyle]=\"{ width: groupNum * width + 'px', marginLeft: -offsetX + 'px' }\">\n        <ng-container *ngFor=\"let card of list; index as i\">\n          <div class=\"card-slider\" [ngStyle]=\"{ width: width + 'px' }\" [ngClass]=\"{ active: i === actIndex }\">\n            <div class=\"item\" [ngStyle]=\"{ width: 80 * (1 / num) + '%' }\" *ngFor=\"let item of card\">\n              <div class=\"header\">\n                <!-- 图片 -->\n                <ng-container *ngIf=\"item.type === 'img'\">\n                  <img [src]=\"item.url || item.src\" />\n                </ng-container>\n                <!-- 视频 -->\n                <ng-container *ngIf=\"item.type === 'video'\">\n                  <p class=\"mask\" *ngIf=\"loading\">视频加载中<span class=\"loading-circle\"></span></p>\n                  <icc-video [url]=\"item.url || item.src\" [disabled]=\"true\" [showPoster]=\"true\"></icc-video>\n                </ng-container>\n              </div>\n              <div class=\"content\">\n                <p class=\"title\" [nzTooltipTitle]=\"item.title\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.title }}</p>\n                <div class=\"des\" [innerHTML]=\"item.des\" [nzTooltipTitle]=\"item.des\" nzTooltipPlacement=\"top\" nz-tooltip></div>\n                <!-- 按钮组 -->\n                <ng-container *ngIf=\"item.btnGroup\">\n                  <div class=\"btn\" *ngFor=\"let btn of item.btnGroup\" [nzTooltipTitle]=\"titleTemplate\" nzTooltipPlacement=\"top\" nz-tooltip>\n                    {{ btn.text || btn.name }}\n                    <ng-template #titleTemplate>\n                      <span *ngIf=\"btn.action === 1 || btn.action === 3 || btn.action === 7\">{{ btn.param.extInfo }}</span>\n                      <a *ngIf=\"btn.action === 2\" [href]=\"formatHttps(btn.param.link.longUrl)\" target=\"_blank\">\n                        {{ btn.param.link.longUrl }}\n                      </a>\n                      <span *ngIf=\"btn.action === 4\">获取用户终端位置</span>\n                      <span *ngIf=\"btn.action === 5\">{{ btn.param.map.currentTude }}</span>\n                      <span *ngIf=\"btn.action === 6\">共享终端信息</span>\n                      <div *ngIf=\"btn.action === 8\">\n                        <label>日历标题：</label>\n                        <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.title ? btn.param.calendarInfo.title : '' }}</span>\n                        <br />\n                        <label>起止时间：</label>\n                        <span>{{ btn.param.calendarInfo && btn.param.calendarInfo.startTime ? btn.param.calendarInfo.startTime + ' ~ ' : '' }}{{ btn.param.calendarInfo && btn.param.calendarInfo.endTime ? btn.param.calendarInfo.endTime : '' }}</span>\n                      </div>\n                    </ng-template>\n                  </div>\n                </ng-container>\n              </div>\n\n              <!-- 操作组 -->\n              <div class=\"operate\" *ngIf=\"editable\">\n                <i nz-icon nzType=\"edit\" (click)=\"editHandle(item)\" nzTheme=\"outline\" nzTooltipTitle=\"编辑\" nzTooltipPlacement=\"top\" nz-tooltip></i>\n                <div style=\"margin-left: 20px;\" nz-icon nzType=\"delete\" nzTheme=\"outline\" nzTooltipTitle=\"删除\" nzTooltipPlacement=\"top\" nz-tooltip nz-popconfirm nzPopconfirmTitle=\"确认删除该卡片？\" (nzOnConfirm)=\"removeHandle(item)\" nzPopconfirmPlacement=\"top\" nzPopconfirmShowArrow=\"false\"></div>\n              </div>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n      <div class=\"arrow-wrapper\" *ngIf=\"isOverflow()\">\n        <a href=\"javascript:;\" class=\"arrow arrow-prev\" (click)=\"prevFocusImg()\"></a>\n        <a href=\"javascript:;\" class=\"arrow arrow-next\" (click)=\"nextFocusImg()\"></a>\n      </div>\n      <div class=\"pagination-wrapper\" *ngIf=\"isOverflow()\">\n        <span class=\"dot\" (click)=\"changCardGroup(i)\" [ngClass]=\"{ active: i === actIndex }\" *ngFor=\"let item of pagination; let i = index\"></span>\n      </div>\n    </div>\n  ","styles":[".card-container{position:relative;overflow:hidden;background:#9ed0fb2b;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.card-container .card-wrapper{position:relative;display:block;margin:0 auto;transition:.3s}.card-container .card-slider{position:relative;display:inline-block;width:100%;padding:30px 0;text-align:center;vertical-align:top}.card-container .card-slider .item{position:relative;display:inline-block;width:20%;height:40%;margin:0 10px;overflow:hidden;vertical-align:top;box-shadow:0 0 3px 1px rgba(154,154,154,.58)}.card-container .card-slider .header{position:relative;height:120px}.card-container .card-slider .header img,.card-container .card-slider .header video{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-container .card-slider .header .mask{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;background-color:#000}.card-container .card-slider .header .loading-circle{display:inline-block;height:1.3em;margin-top:-.3em;overflow:hidden;line-height:1.5em;vertical-align:text-bottom}.card-container .card-slider .header .loading-circle::after{display:inline-table;white-space:pre;text-align:left;-webkit-animation:2s steps(4) infinite spin4;animation:2s steps(4) infinite spin4;content:\"\\A.\\A..\\A...\"}.card-container .card-slider .content{position:relative;min-height:100px;padding:9px 10px;overflow:hidden;text-align:left;background-color:#fff}.card-container .card-slider .content .title{margin-bottom:5px;overflow:hidden;font-weight:700;font-size:15px;line-height:1.5;white-space:nowrap;text-overflow:ellipsis}.card-container .card-slider .content .des{display:-webkit-box;overflow:hidden;color:gray;font-size:12px;line-height:1.7;-webkit-box-orient:vertical;-webkit-line-clamp:2}.card-container .card-slider .content .btn{margin:11px auto;padding:4px 0;line-height:2;text-align:center;background-color:#e8f0f7;border-radius:21px}.card-container .card-slider .operate{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;background:rgba(0,0,0,.5);opacity:0;transition:.3s}.card-container .card-slider .operate i{margin:0 7px;cursor:pointer;opacity:0}.card-container .card-slider .operate:hover,.card-container .card-slider .operate:hover i{opacity:1}.card-container .arrow-wrapper .arrow{position:absolute;top:40%;width:44px;height:100px;color:#bdb9b9;font-size:27px;line-height:80px;cursor:pointer;opacity:.5}.card-container .arrow-wrapper .arrow.arrow-prev{left:0;background:url(../../../../assets/images/layout/spr-arrow-prev.png) top/100% no-repeat}.card-container .arrow-wrapper .arrow.arrow-next{right:0;background:url(../../../../assets/images/layout/spr-arrow-next.png) top/100% no-repeat}.card-container .arrow-wrapper .arrow:hover{background-position:bottom}.card-container .pagination-wrapper{position:relative;display:block;margin-bottom:10px;text-align:center}.card-container .pagination-wrapper .dot{display:inline-block;width:10px;height:10px;margin:0 5px;vertical-align:middle;background-color:#cbd2d8;border-radius:50%;cursor:pointer;transition:background-color .3s}.card-container .pagination-wrapper .dot.active{background-color:#1890ff}@-webkit-keyframes spin4{to{transform:translateY(-6em)}}@keyframes spin4{to{transform:translateY(-6em)}}"]}]}],"members":{"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"num":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"cardLists":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"removeEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":127,"character":3}}]}],"editEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":129,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"splitArray":[{"__symbolic":"method"}],"getGroups":[{"__symbolic":"method"}],"editHandle":[{"__symbolic":"method"}],"removeHandle":[{"__symbolic":"method"}],"canplaythrough":[{"__symbolic":"method"}],"isEmpty":[{"__symbolic":"method"}],"isOverflow":[{"__symbolic":"method"}],"changCardGroup":[{"__symbolic":"method"}],"prevFocusImg":[{"__symbolic":"method"}],"nextFocusImg":[{"__symbolic":"method"}],"formatHttps":[{"__symbolic":"method"}]}},"IccChannelTableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"icc-channel-table","styles":[],"template":"<div *ngIf=\"currentMsgType; else empty\">\r\n  <nz-table nzBordered nzSize=\"middle\" [nzFrontPagination]=\"false\" [nzShowPagination]=\"false\" #channelProviderDatas [nzData]=\"currentMsgType.channelProviders\">\r\n    <thead>\r\n      <tr>\r\n        <th class=\"table-header\" style=\"width:100px\" *ngIf=\"currentMsgType.value == MSGTYPE.SMS.type || currentMsgType.value == MSGTYPE._5G.type\">\r\n          运营商\r\n        </th>\r\n        <th class=\"table-header\" style=\"width:120px\">渠道商名称</th>\r\n        <th class=\"table-header\" style=\"width:150px\">渠道商占比(%)</th>\r\n        <th class=\"table-header\">渠道</th>\r\n        <th class=\"table-header\" style=\"width:50px\">操作</th>\r\n      </tr>\r\n    </thead>\r\n    <tbody style=\"background-color: #FFFFFF;\">\r\n      <tr *ngFor=\"let provider of channelProviderDatas.data; index as i\">\r\n        <td *ngIf=\"provider.rowSpan > 0 && (currentMsgType.value == MSGTYPE.SMS.type || currentMsgType.value == MSGTYPE._5G.type)\" [rowSpan]=\"provider.rowSpan\">\r\n          {{ provider.carrierName }}\r\n        </td>\r\n        <td>{{ provider.name }}</td>\r\n        <td>\r\n          <nz-form-control [nzSpan]=\"12\">\r\n            <nz-input-number [nzMin]=\"0\" [nzMax]=\"100\" [nzStep]=\"1\" [nzPrecision]=\"0\" [(ngModel)]=\"provider.channelProportion\" name=\"channelProportion{{ i }}\" (ngModelChange)=\"proportionChange($event, provider)\"> </nz-input-number>\r\n          </nz-form-control>\r\n        </td>\r\n        <td>\r\n          <span *ngFor=\"let channel of provider.channels\">\r\n            <span *ngIf=\"currentMsgType.value != MSGTYPE.WECHAT.type && currentMsgType.value != MSGTYPE.JPUSH.type && currentMsgType.value != MSGTYPE._5G.type\">{{ channel.channelName + '【' + channel.channelNum + '】' }} </span>\r\n            <span *ngIf=\"currentMsgType.value == MSGTYPE.WECHAT.type\">{{ channel.channelName + (channel.wechatType === 0 ? '【服务号】' : '【订阅号】') }} </span>\r\n            <span *ngIf=\"currentMsgType.value == MSGTYPE.JPUSH.type\">{{ channel.channelName + '【' + channel.identity + '】' }} </span>\r\n            <span *ngIf=\"currentMsgType.value == MSGTYPE._5G.type\">{{ channel.channelName }} </span>\r\n            <nz-divider nzType=\"vertical\"></nz-divider>\r\n          </span>\r\n        </td>\r\n        <td>\r\n          <a (click)=\"openChannelModal(provider, currentMsgType.value, provider.carrierId, currentMsgType)\">选择</a>\r\n        </td>\r\n      </tr>\r\n    </tbody>\r\n  </nz-table>\r\n</div>\r\n\r\n<ng-template #empty>\r\n  <nz-empty style=\"margin-top: 80px;\"></nz-empty>\r\n</ng-template>\r\n"}]}],"members":{"currentMsgType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"businessType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"channelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":24,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":28,"character":67},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":96}]}],"ngOnInit":[{"__symbolic":"method"}],"openChannelModal":[{"__symbolic":"method"}],"proportionChange":[{"__symbolic":"method"}],"handleWechatInChannel":[{"__symbolic":"method"}],"validateChannel":[{"__symbolic":"method"}]}},"IccCommentCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"icc-comment-card","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":19},"member":"OnPush"},"styles":["\n      .card-wrapper {\n        background-color: white;\n        padding: 17px 15px;\n        position: relative;\n        overflow: hidden;\n        margin: 0 auto;\n        /* border-top: 1px solid gainsboro; */\n        border-bottom: 1px solid gainsboro;\n        cursor: pointer;\n      }\n      .card-wrapper:hover {\n        background-color: #ebf8fe;\n      }\n      .card-wrapper.active {\n        background-color: #ebf8fe;\n      }\n      .card-content {\n        position: relative;\n        height: 100%;\n      }\n      .card-wrapper p {\n        margin: 0;\n        color: #a6acc5;\n        font-size: 14px;\n      }\n      .title {\n        font-weight: bold;\n        display: -webkit-box;\n        -webkit-box-orient: vertical;\n        -webkit-line-clamp: 2;\n        overflow: hidden;\n        font-size: 13px;\n      }\n      .author {\n        text-align: right;\n      }\n      .total {\n        float: left;\n        width: 39%;\n      }\n      time {\n        float: right;\n        width: 60%;\n        text-align: right;\n      }\n      .top {\n        position: absolute;\n        top: 0;\n        width: 100%;\n        left: 0;\n      }\n      .bottom {\n        position: absolute;\n        bottom: 0;\n        width: 100%;\n        left: 0;\n      }\n    "],"template":"\n    <div class=\"card-wrapper\" [ngStyle]=\"{ width: width + 'px', height: height + 'px' }\" [ngClass]=\"{ active: active }\" (click)=\"cardClick()\">\n      <div class=\"card-content\">\n        <div class=\"top\">\n          <h2 class=\"title\">{{ card.title }}</h2>\n        </div>\n        <div class=\"bottom\">\n          <p class=\"author\">{{ card.authorName }}</p>\n          <p>\n            <span class=\"total\">总评论数：{{ card.commentTotalCount }}</span>\n            <time>{{ card.createTime }}</time>\n          </p>\n          <ng-content></ng-content>\n        </div>\n      </div>\n    </div>\n  "}]}],"members":{"card":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"clickHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":109,"character":3}}]}],"cardClick":[{"__symbolic":"method"}]}},"BtnConfig":{"__symbolic":"interface"},"Data":{"__symbolic":"interface"},"Reply":{"__symbolic":"interface"},"IccCommentPannelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":44,"character":1},"arguments":[{"selector":"icc-comment-pannel","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":47,"character":19},"member":"OnPush"},"template":"<div class=\"comment-wrapper\">\r\n  <div class=\"comment-box\">\r\n    <!-- 评论 -->\r\n    <div class=\"main\">\r\n      <h3 class=\"title\">\r\n        <label nz-checkbox (ngModelChange)=\"checkChange($event, data)\" [ngModel]=\"false\">\r\n          <ng-container *ngIf=\"!titleTemplate\">\r\n            <!--            {{ data.userName }}-->\r\n              {{ data.commentUserName }}\r\n          </ng-container>\r\n          <ng-container *ngIf=\"!titleTemplate && !data.commentUserName\">\r\n            <!--            {{ data.userName }}-->\r\n            {{ data.commentUserId }}\r\n          </ng-container>\r\n\r\n\r\n          <ng-container *ngTemplateOutlet=\"titleTemplate; context: data\"> </ng-container>\r\n        </label>\r\n\r\n\r\n      </h3>\r\n      <p class=\"content\" [ngStyle]=\"{ width: 'calc(100% - ' + commentConfig.length * 40 + 'px)' }\">\r\n        {{ data.content }}\r\n      </p>\r\n      <time>{{ data.createTime }}</time>\r\n\r\n      <div class=\"operate-box\" *ngIf=\"!hiddenBtns\">\r\n        <a class=\"btn\" [hidden]=\"btn.hidden && btn.hidden(data, btn)\" *ngFor=\"let btn of commentConfig\" (click)=\"btn.click && btn.click(data, btn)\" [nzTooltipTitle]=\"handleBtnTooltip(data, btn)\" [ngStyle]=\"{ 'background-image': 'url(' + btn.icon + ')' }\" [ngClass]=\"{ active: btn.active && btn.active(data) }\" nzTooltipPlacement=\"top\" nz-tooltip> </a>\r\n      </div>\r\n    </div>\r\n    <!-- 回复 -->\r\n    <div class=\"replay\" *ngIf=\"data.replies && data.replies.length > 0\">\r\n      <div class=\"list\" *ngFor=\"let list of data.replies; index as i\" [hidden]=\"maxReplay > 0 && i + 1 > maxReplay\">\r\n        <!--        <h3 class=\"title\">{{ list.commentFromUserName }}</h3>-->\r\n        <h3 class=\"title\" >{{ list.commentFromUserName }}</h3>\r\n        <h3 class=\"title\" *ngIf=\"!list.commentFromUserName\"  >{{ list.commentFromUserId }}</h3>\r\n        <p class=\"content\" [ngStyle]=\"{ width: 'calc(100% - ' + replyConfig.length * 40 + 'px)' }\">\r\n          {{ list.content }}\r\n        </p>\r\n        <time>{{ list.createTime }}</time>\r\n\r\n        <div class=\"operate-box\" *ngIf=\"!hiddenBtns\">\r\n          <a class=\"btn\" [hidden]=\"btn.hidden && btn.hidden(list, btn)\" *ngFor=\"let btn of replyConfig\" (click)=\"btn.click && btn.click(list, btn)\" [nzTooltipTitle]=\"handleBtnTooltip(list, btn)\" [ngStyle]=\"{ 'background-image': 'url(' + btn.icon + ')' }\" [ngClass]=\"{ active: btn.active && btn.active(list) }\" nzTooltipPlacement=\"top\" nz-tooltip> </a>\r\n        </div>\r\n      </div>\r\n      <a class=\"btn-more\" *ngIf=\"data.replies.length > maxReplay && maxReplay > 0\" (click)=\"moreReplay()\">点击查看全部 {{ data.replies.length }} 条回复</a>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[".comment-wrapper{background-color:#fff;padding:0 20px}.comment-wrapper .comment-box{border-bottom:1px solid #dcdcdc}:host:first-child .comment-box{border-top:1px solid #dcdcdc}.main{padding:0 10px 10px;position:relative;transition:background .2s}.main:hover{background-color:#ebf8fe}.main .title{line-height:30px;padding-bottom:5px;padding-top:14px;margin:0}.main .title ::ng-deep .ant-checkbox{top:-.13em}.main .title ::ng-deep span{font-weight:700;font-size:15px}.main .content{padding-left:24px;width:calc(100% - 160px);margin-bottom:.26em}.main time{padding-left:24px;font-size:12px;color:#b1adad}.operate-box{text-align:center;position:absolute;right:22px;top:46px;font-size:17px}.operate-box .btn{display:inline-block;vertical-align:middle;width:20px;height:20px;background-size:100%;background-repeat:no-repeat;background-position:top;margin:0 3px}.operate-box .btn.active,.operate-box .btn:hover{background-position:bottom}.replay{margin-left:33px;background-color:#f8f8f8;overflow:auto;max-height:356px}.replay .title{color:#4b8bff!important}.replay .list{padding:10px 43px;font-size:12px;position:relative;transition:background .2s}.replay .list:after{content:'';position:absolute;bottom:0;background:#dcdcdc;height:1px;left:26px;right:26px}.replay .list:last-child:after{content:none}.replay .list:hover{background-color:#ebf8fe}.replay .list .content{color:#585858;width:calc(100% - 160px);margin-bottom:.4em}.replay .list .operate-box{top:31px}.replay .list time{color:#b1adad}.replay .btn-more{padding:16px 44px;display:block;color:#a6acc5}"]}]}],"members":{"titleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"maxReplay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"hiddenBtns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"commentConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"replyConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"checkChangeHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":71,"character":3}}]}],"moreReplay":[{"__symbolic":"method"}],"checkChange":[{"__symbolic":"method"}],"handleBtnTooltip":[{"__symbolic":"method"}]}},"IccDateComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-date","styles":[],"template":"<nz-range-picker [nzDisabledDate]=\"disabledDate\" [nzDisabledTime]=\"disabledRangeTime\" [nzShowTime]=\"{ nzHideDisabledOptions: true, nzDefaultOpenValue: timeDefaultValue }\" nzFormat=\"yyyy-MM-dd HH:mm:ss\"></nz-range-picker>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"range":[{"__symbolic":"method"}]}},"IccHeadUploadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-head-upload","template":"<div class=\"head-panel flex-center\">\r\n  <div class=\"header-box\">\r\n    <h3>头像</h3>\r\n    <div class=\"img-box\">\r\n      <div class=\"text-box flex-center\">\r\n        <icc-button class=\"upload-text\" (btnClick)=\"displayModal(true)\">上传头像</icc-button>\r\n        <img [hidden]=\"headerImg\" id=\"header_photo_id\" class=\"img-canvas\"/>\r\n        <img *ngIf=\"headerImg\" [src]=\"headerImg\" alt=\"\" class=\"img-url\">\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n<nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"上传头像\" (nzOnCancel)=\"displayModal(false)\" nzWidth=\"583\" [nzFooter]=\"modalFooter\">\r\n  <div class=\"box-wrapper flex-center\">\r\n    <div class=\"box-cls\">\r\n      <div class=\"content\">\r\n        <div class=\"imgs-box\">\r\n          <div class=\"img-left flex-center\" (mousemove)=\"mouseMove($event)\" (mouseup)=\"mouseUp()\" (mouseleave)=\"mouseUp()\">\r\n            <!--无图片时-->\r\n            <div class=\"empty-tips\" *ngIf=\"!hasImage\" (click)=\"openFile()\">\r\n              <h2 class=\"empty-icon\">\r\n                <i nz-icon nzType=\"upload\" nzTheme=\"outline\"></i>\r\n              </h2>\r\n              <h3 class=\"empty-text\">\r\n                点击选择图片\r\n                <div class=\"sub-text\">\r\n                  只支持JPG、GIF、PNG格式的图片文件，且文件大小小于1M\r\n                </div>\r\n              </h3>\r\n            </div>\r\n            <!--有图片时-->\r\n            <div class=\"img-panel\" *ngIf=\"hasImage\">\r\n              <img class=\"selected_img\"/>\r\n              <span class=\"mask\" id=\"mask_id\"></span>\r\n              <span class=\"dynamic-circle-box\" id=\"dynamic_circle_box_id\" (mousedown)=\"mouseDown($event)\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"dynamic-circle\">\r\n\t\t\t\t\t\t\t\t\t\t<img class=\"selected_img\" id=\"dynamic_image_id\"/>\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"constant-circle\" (mousedown)=\"resize_mouseDown($event)\"></span>\r\n\t\t\t\t\t\t\t\t</span>\r\n            </div>\r\n          </div>\r\n          <div class=\"img-right\">\r\n            <h2 class=\"preview-text\">预览</h2>\r\n            <ul class=\"preview-boxs\">\r\n              <li>\r\n                <div class=\"preview-100\">\r\n                  <!--注意：canvas宽高必须以属性方式设置-->\r\n                  <canvas class=\"box-100\" id=\"canvas_100_id\" width=\"100\" height=\"100\"></canvas>\r\n                  100 x 100\r\n                </div>\r\n              </li>\r\n              <li>\r\n                <div class=\"preview-50\">\r\n                  <!--注意：canvas宽高必须以属性方式设置-->\r\n                  <canvas class=\"box-50\" id=\"canvas_50_id\" width=\"50\" height=\"50\"></canvas>\r\n                  50 x 50\r\n                </div>\r\n              </li>\r\n            </ul>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <input type=\"file\" accept=\"image/x-png, image/gif, image/jpeg\" value=\"选择文件\" (change)=\"selectImage($event)\" id=\"open_input_file_id\"/>\r\n    </div>\r\n  </div>\r\n  <ng-template #modalFooter>\r\n    <icc-button [btnType]=\"'hollow'\" (btnClick)=\"openFile()\"><span>选择文件</span></icc-button>\r\n    <icc-button [btnType]=\"'default'\" (btnClick)=\"uploadImage()\" style=\"width: 92px\"><span>上传</span></icc-button>\r\n  </ng-template>\r\n</nz-modal>\r\n","styles":[":host{display:inline-block}:host .head-panel{display:flex;align-items:center;justify-content:center;width:100%;height:100%}:host .head-panel .header-box{width:200px;height:250px}:host .head-panel .header-box h3{height:50px;line-height:50px;text-align:center}:host .head-panel .header-box .img-box{position:relative;width:150px;height:150px;margin:0 auto;overflow:hidden;background:#f6f6f6;border-radius:100px}:host .head-panel .header-box .img-box .text-box{box-sizing:border-box;width:100%;height:100%;background:rgba(0,0,0,.1);transition:.5s}:host .head-panel .header-box .img-box .text-box .img-canvas{position:absolute;top:0;left:0;display:none;width:100%;height:100%}:host .head-panel .header-box .img-box .text-box .img-url{position:absolute;top:0;left:0;width:100%;height:100%}:host .head-panel .header-box .img-box .text-box .upload-text{z-index:2;width:100px;height:36px;margin:0;color:#fff;line-height:36px;text-align:center;border-radius:4px;cursor:pointer;opacity:0;transition:opacity .5s}:host .head-panel .header-box .img-box .text-box:hover .upload-text{opacity:1}.flex-center{display:flex;align-items:center;justify-content:center}.box-wrapper{box-sizing:border-box;width:100%;height:100%;margin:0;padding:0}.box-wrapper .box-cls{position:relative;width:583px;height:auto;min-height:200px;background:#fff}.box-wrapper .box-cls .content{box-sizing:border-box;width:100%;height:auto}.box-wrapper .box-cls .content .imgs-box{box-sizing:border-box;width:100%;height:100%}.box-wrapper .box-cls .content .imgs-box .img-left{float:left;width:360px;height:360px;background-color:#f3f4fa}.box-wrapper .box-cls .content .imgs-box .img-left .empty-tips{box-sizing:border-box;width:100%;height:100%;padding:30px;cursor:pointer}.box-wrapper .box-cls .content .imgs-box .img-left .empty-tips .empty-icon{margin-top:60px;font-size:36px;text-align:center}.box-wrapper .box-cls .content .imgs-box .img-left .empty-tips .empty-text{margin-top:20px;font-weight:600;font-size:16px;text-align:center}.box-wrapper .box-cls .content .imgs-box .img-left .empty-tips .empty-text .sub-text{margin-top:10px;color:#abb4cf;font-weight:500;font-size:14px}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel{position:relative;display:-ms-grid;display:grid;box-sizing:border-box}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel .mask{position:absolute;top:0;left:0;display:block;background:rgba(0,0,0,.5)}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel .dynamic-circle-box{position:absolute;top:0;left:0;z-index:12;display:block;width:50px;height:50px;cursor:move}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel .dynamic-circle-box .dynamic-circle{position:relative;display:block;width:100%;height:100%;overflow:hidden;border-radius:50%}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel .dynamic-circle-box .dynamic-circle img{position:absolute;top:0;left:0;max-width:none}.box-wrapper .box-cls .content .imgs-box .img-left .img-panel .dynamic-circle-box .constant-circle{position:absolute;top:85%;left:85%;width:20px;height:20px;background:#50b35f;border:2px solid #fff;border-radius:50%;cursor:se-resize}.box-wrapper .box-cls .content .imgs-box .img-right{float:left;width:170px;height:360px;margin-left:10px;background-color:#f3f4fa}.box-wrapper .box-cls .content .imgs-box .img-right .preview-text{height:30px;margin-top:40px;font-size:14px;line-height:30px;text-align:center}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs{margin:0 auto;padding:0;list-style:none}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs li{width:100px;margin:0 auto 20px}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs .preview-100{width:100px;height:130px;color:#abb4cf;font-size:13px;text-align:center}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs .preview-100 .box-100{display:block;margin-bottom:8px;background-color:#eaecf0;border-radius:50px}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs .preview-50{width:100px;height:80px;color:#abb4cf;font-size:13px;text-align:center}.box-wrapper .box-cls .content .imgs-box .img-right .preview-boxs .preview-50 .box-50{display:block;margin:0 auto 8px;background-color:#eaecf0;border-radius:25px}.box-wrapper .box-cls .content::after{display:block;clear:both;content:''}.box-wrapper .box-cls #open_input_file_id{position:absolute;z-index:-100}"]}]}],"members":{"upload":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":10,"character":3}}]}],"headerImg":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"displayModal":[{"__symbolic":"method"}],"openFile":[{"__symbolic":"method"}],"selectImage":[{"__symbolic":"method"}],"displayImage":[{"__symbolic":"method"}],"previewImage":[{"__symbolic":"method"}],"uploadImage":[{"__symbolic":"method"}],"mouseDown":[{"__symbolic":"method"}],"mouseMove":[{"__symbolic":"method"}],"mouseUp":[{"__symbolic":"method"}],"getNumberFormPixel":[{"__symbolic":"method"}],"resize_mouseDown":[{"__symbolic":"method"}],"moveCircle":[{"__symbolic":"method"}],"resizeCircle":[{"__symbolic":"method"}]}},"IccListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-list","template":"<div class=\"icc-list\">\r\n  <span (click)=\"displayModel(true)\">\r\n    <ng-content></ng-content>\r\n  </span>\r\n</div>\r\n\r\n<nz-modal [(nzVisible)]=\"isVisible\" [nzTitle]=\"title\" (nzOnCancel)=\"displayModel(false)\" [nzWidth]=\"width\" [nzFooter]=\"modalFooter\">\r\n  <p class=\"font-desc\">{{ description }}</p>\r\n  <p class=\"icon-group\" (click)=\"handleClick($event, '')\">\r\n    <span name=\"add\" class=\"iconfont icon-add bolder\"></span>\r\n    <span name=\"up\" class=\"iconfont icon-up\" [ngClass]=\"{ disabled: selectedIndex === 0 || list.length < 1 }\"></span>\r\n    <span name=\"down\" class=\"iconfont icon-down\" [ngClass]=\"{ disabled: selectedIndex === list.length - 1 || list.length < 1 }\"></span>\r\n    <span *ngIf=\"showCheckedBox\" name=\"close\" class=\"iconfont icon-close bolder red\" [ngClass]=\"{ disabled: !hasChecked }\"></span>\r\n    <span *ngIf=\"!showCheckedBox\" name=\"close\" class=\"iconfont icon-close bolder red\"></span>\r\n  </p>\r\n  <div class=\"box\" id=\"scroll-box-id\">\r\n    <p\r\n      class=\"item\"\r\n      *ngFor=\"let item of list; let i = index\"\r\n      [ngStyle]=\"{ 'padding-left': showCheckedBox ? '15px' : '25px' }\"\r\n      [ngClass]=\"{ selected: selectedIndex === i }\"\r\n      (click)=\"changeSelected($event, i)\"\r\n    >\r\n      <label *ngIf=\"showCheckedBox\" class=\"item-checkbox\" nz-checkbox [(ngModel)]=\"item.checked\" (ngModelChange)=\"checkedChange($event)\"></label>\r\n      <span *ngIf=\"editIndex !== i\" class=\"item-label\" (click)=\"toggleDom($event, i)\">{{ item.name }}</span>\r\n      <input\r\n        [hidden]=\"editIndex !== i\"\r\n        [ngStyle]=\"{ border: hasWarning ? '1px solid #f97a7a' : '' }\"\r\n        class=\"item-input\"\r\n        type=\"text\"\r\n        nz-input\r\n        [maxlength]=\"textMaxLength\"\r\n        [(ngModel)]=\"item.name\"\r\n        (keydown)=\"addItem($event)\"\r\n        (blur)=\"onblurHandle($event, i)\"\r\n      />\r\n    </p>\r\n  </div>\r\n  <ng-template #modalFooter>\r\n    <icc-button btnType=\"hollow\" (btnClick)=\"displayModel(false)\"><span>取消</span></icc-button>\r\n    <icc-button btnType=\"default\" [isDisabled]=\"hasWarning\" (btnClick)=\"btnOk()\"><span>确定</span></icc-button>\r\n  </ng-template>\r\n</nz-modal>\r\n","styles":[":host{display:inline-block;width:auto}.font-desc{color:#49536e;margin-bottom:5px}.box{width:100%;height:auto;min-height:150px;border:1px solid #ccc;background:#fff;padding:10px 0;max-height:200px;overflow-y:auto}.box .item{display:flex;align-items:center;padding:0 15px;margin-bottom:0;height:34px}.box .item .item-checkbox{width:30px}.box .item .item-label{cursor:pointer}.box .item .item-input{height:26px;line-height:26px;width:66%}.box .item:hover{background:#ccebf87d}.box .selected{background:#ccebf8!important}.icon-group{margin-bottom:10px}.icon-group .bolder{font-weight:bolder}.icon-group span{margin-right:5px;cursor:pointer}.icon-group .disabled{color:#abb4cf!important;cursor:default!important}.icon-group .red{color:red}.icon-group .icon-add{color:#000}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":9,"character":65}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":10,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"description":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"maxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"textMaxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"showCheckedBox":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"displayModel":[{"__symbolic":"method"}],"toggleDom":[{"__symbolic":"method"}],"changeSelected":[{"__symbolic":"method"}],"addItem":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}],"checkedChange":[{"__symbolic":"method"}],"btnOk":[{"__symbolic":"method"}],"getNewItemName":[{"__symbolic":"method"}],"isExistChecked":[{"__symbolic":"method"}],"findExistName":[{"__symbolic":"method"}],"onblurHandle":[{"__symbolic":"method"}]}},"IccMapPositionComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-map-position","template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">查询位置</div>\r\n</div>\r\n\r\n<form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\r\n  <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\r\n    <div nz-col nzMd=\"10\" nzSm=\"24\">\r\n      <nz-form-item>\r\n        <nz-form-label>查询地址</nz-form-label>\r\n        <nz-form-control>\r\n          <input nz-input [(ngModel)]=\"searchAdress\" (keyup)=\"pressEnter($event)\" name=\"searchPosition\" placeholder=\"请输查询地址\" maxlength=\"15\" />\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n    </div>\r\n    <div nz-col nzMd=\"10\" nzSm=\"24\">\r\n      <nz-form-item>\r\n        <nz-form-label>当前经纬度</nz-form-label>\r\n        <nz-form-control>\r\n          <!-- <input nz-input [(ngModel)]=\"currentTude\" name=\"currentTude\" readonly /> -->\r\n          <span>{{currentTude}}</span>\r\n        </nz-form-control>\r\n      </nz-form-item>\r\n    </div>\r\n  </div>\r\n</form>\r\n<div class=\"container\">\r\n  <nz-spin [hidden]=\"!isLoading\" nzSimple [nzSize]=\"'large'\" nzTip=\"地图加载中...\"></nz-spin>\r\n  <div [hidden]=\"isLoading\" id=\"map\"></div>\r\n</div>\r\n\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"destroy()\"><span>关闭</span></icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\"><span>确定</span></icc-button>\r\n</div>\r\n","styles":[":host ::ng-deep .modal-header-update{margin:-24px -20px 10px}.search__form{margin-bottom:15px}.container{display:flex;justify-content:center;align-items:center;width:900px;height:450px;transform:translateX(-20px)}#map{width:100%;height:500px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":12,"character":27},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":12,"character":55}]}],"ngOnInit":[{"__symbolic":"method"}],"initPoint":[{"__symbolic":"method"}],"initMap":[{"__symbolic":"method"}],"localSearch":[{"__symbolic":"method"}],"roundNumber":[{"__symbolic":"method"}],"pressEnter":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}},"IccMaterialTabComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"material-tab","template":"\n    <div class=\"tab-wrapper\">\n      <div class=\"tab\" (click)=\"changeMenu(i)\" *ngFor=\"let menu of menuList; let i = index\" [ngClass]=\"{ active: i === actIndex }\">\n        {{ menu.name }}\n      </div>\n    </div>\n\n    <div class=\"content-wrapper\" *ngFor=\"let menu of menuList; let i = index\">\n      <!-- 图片 -->\n      <div *ngIf=\"i === actIndex\" class=\"content\">\n        <ng-container *ngIf=\"menu.type === 'img'\">\n          <div *ngIf=\"imgList.length < 1\" (click)=\"selectMeterial('img')\" class=\"upload\" [ngStyle]=\"{ width: width + 'px', height: height + 'px' }\">\n            <i nz-icon nzType=\"upload\" nzTheme=\"outline\" class=\"ico\"></i>\n            <span>从素材库选择图片</span>\n          </div>\n\n          <div class=\"img-wrapper\" *ngIf=\"imgList.length > 0\">\n            <icc-image-upload [width]=\"width\" [imgList]=\"imgList\" [editable]=\"false\"></icc-image-upload>\n            <icc-button (click)=\"retSelect(menu.type)\" class=\"btn-sel\">重新选择</icc-button>\n          </div>\n        </ng-container>\n\n        <!-- 视频 -->\n        <ng-container *ngIf=\"menu.type === 'video'\">\n          <div *ngIf=\"!videoUrl\" (click)=\"selectMeterial('video')\" class=\"upload\" [ngStyle]=\"{ width: width + 'px', height: height + 'px' }\">\n            <i nz-icon nzType=\"upload\" nzTheme=\"outline\" class=\"ico\"></i>\n            <span>从素材库选择视频</span>\n          </div>\n\n          <div class=\"video-wrapper\" *ngIf=\"videoUrl\">\n            <icc-video [disabled]=\"true\" [url]=\"videoUrl\"></icc-video>\n            <icc-button (click)=\"retSelect(menu.type)\" style=\"margin:10px 0\" class=\"btn-sel\">重新选择</icc-button>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n  ","styles":[".tab-wrapper{background:#f3f4fa;line-height:35px}.tab-wrapper .tab{display:inline-block;padding:0 25px;border-color:transparent;border-bottom:2px solid;cursor:pointer;vertical-align:top;transition:.3s}.tab-wrapper .tab.active{border-color:#009fff}.content-wrapper{margin:10px auto}.content-wrapper .upload{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:center;align-items:center;border:1px dashed #bdbdbd;cursor:pointer}.content-wrapper .upload:hover{border-color:#26c59a}.content-wrapper .upload .ico{font-size:24px;color:#26c59a}.content-wrapper .content{display:inline-block;position:relative}.content-wrapper .content .btn-sel{width:100%}"]}]}],"members":{"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"imgList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"videoUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"selectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"retSelectEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":56,"character":3}}]}],"actIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"changeMenu":[{"__symbolic":"method"}],"selectMeterial":[{"__symbolic":"method"}],"retSelect":[{"__symbolic":"method"}]}},"IccMediaEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"icc-media-editor","template":"<nz-tabset (nzSelectChange)=\"selectChange($event)\" [nzSelectedIndex]=\"selectIndex\">\r\n  <nz-tab nzTitle=\"文字\" [nzDisabled]=\"disabled\" *ngIf=\"(!disabled && showArry[0]) || (disabled && selectIndex == 0)\">\r\n    <!-- <div *ngIf=\"variableBinds && variableBinds.length > 0\" style=\"width: 96%;\">\r\n      <span class=\"var-item \" [ngClass]=\"{ 'var-require': v.isRequired === true, 'var-default': v.isRequired !== true }\" (mouseover)=\"varMouseOver($event)\" (mouseleave)=\"varMouseLeave($event)\" *ngFor=\"let v of variableBinds\" (click)=\"insertVar(v)\">\r\n        {{ v.code }}\r\n      </span>\r\n      <span class=\"iconfont icon-wenhao wenhao\" nz-popover [nzPopoverContent]=\"varUseTipTmp\" style=\"float: right; margin-right: -15px;\"></span>\r\n    </div> -->\r\n    <!-- 文字插槽 -->\r\n    <ng-content select=\".textSlot\"></ng-content>\r\n\r\n    <textarea *ngIf=\"!useFakeTextarea\" (click)=\"getCaretPosWithEvent($event)\" rows=\"6\" [readonly]=\"disabled\" [disabled]=\"disabled\" (keyup)=\"getCaretPosWithEvent($event)\" name=\"templateContent{{ id }}\" nz-input [(ngModel)]=\"content.content\" placeholder=\"请输入内容...\" minlength=\"1\" [maxlength]=\"textMaxLength\" required (ngModelChange)=\"textContentChange.next(content.content)\"></textarea>\r\n\r\n    <icc-fake-textarea #textArea *ngIf=\"useFakeTextarea\" style=\"width: 100%;\" (emitCursorOffset)=\"emitCursorOffset($event)\" (valueChange)=\"handelTextContentChange($event, item)\" [value]=\"item.content.content\" [serverUrl]=\"item.serverUrl\" [maxlength]=\"textMaxLength\" [placeholder]=\"'请输入内容...'\" isTplEdit=\"true\"></icc-fake-textarea>\r\n    <p style=\"line-height: 1.4;color: rgb(150, 149, 149);font-size: 12px;text-align: right;\">已输入{{ content?.content?.length }}/{{ textMaxLength }}</p>\r\n\r\n    <ng-template #varUseTipTmp>\r\n      点击变量添加到模板内容中\r\n    </ng-template>\r\n  </nz-tab>\r\n  <nz-tab nzTitle=\"图片\" [nzDisabled]=\"disabled\" *ngIf=\"(!disabled && showArry[1]) || (disabled && selectIndex == 1)\">\r\n    <!-- 图片 -->\r\n    <icc-image-upload [singleSize]=\"imgMaxSize\" [editable]=\"!disabled\" [uploadImage]=\"uploadUrl\" [maxCount]=\"1\" [maxSize]=\"imgMaxSize\" [imgList]=\"imgTempList || []\" (success)=\"uploadImageSuccess($event, content)\" (fail)=\"uploadImageFail($event, content)\" (remove)=\"removeImageSuccess($event, content)\"> </icc-image-upload>\r\n  </nz-tab>\r\n  <nz-tab nzTitle=\"视频\" [nzDisabled]=\"disabled\" *ngIf=\"(!disabled && showArry[2]) || (disabled && selectIndex == 2)\">\r\n    <!-- 视频 -->\r\n    <icc-video [disabled]=\"disabled\" [req]=\"uploadUrl\" [url]=\"videoTempList && videoTempList.length > 0 ? videoTempList[0].url : null\" [name]=\"videoTempList && videoTempList.length > 0 ? videoTempList[0].name : null\" (success)=\"uploadSuccess($event, content)\" (fail)=\"uploadVideoFail($event, content)\" (videoRemove)=\"VideoRemove(content)\" (cancel)=\"uploadVideoCancel($event, content)\" [vTypes]=\"videoTypes\" [typeDescript]=\"typeSupportDes\" [size]=\"videoMaxSize\"> </icc-video>\r\n  </nz-tab>\r\n  <nz-tab nzTitle=\"语音\" [nzDisabled]=\"disabled\" *ngIf=\"(!disabled && showArry[3]) || (disabled && selectIndex == 3)\">\r\n    <icc-audio-upload [nzAction]=\"uploadUrl\" [disabled]=\"disabled\" [fileUrl]=\"audioTempList && audioTempList.length > 0 ? audioTempList[0].url : null\" (success)=\"uploadAudioSuccess($event, content)\" (delete)=\"removeAudio($event, content)\"></icc-audio-upload>\r\n  </nz-tab>\r\n</nz-tabset>\r\n","styles":[".var-item{display:inline-block;height:30px;margin-right:10px;margin-bottom:10px;padding:0 15px;line-height:28px;border-radius:15px;cursor:pointer}.var-default{border:1px solid #ccc}.var-active{background:#e8f6f7!important;border:1px solid #b9e3e6!important}.var-require{background:#f3f4f8;border:1px solid #ccc}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"item":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"variableBinds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"showArry":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"mediaDownUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"uploadUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"imgMaxSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"videoMaxSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"videoTypes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"typeSupportDes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"useFakeTextarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"textMaxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"getPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3}}]}],"textContentChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":74,"character":3}}]}],"tabchange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":76,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getCaretPosWithEvent":[{"__symbolic":"method"}],"emitCursorOffset":[{"__symbolic":"method"}],"toMediaList":[{"__symbolic":"method"}],"contentTypeChange":[{"__symbolic":"method"}],"uploadSuccess":[{"__symbolic":"method"}],"uploadVideoFail":[{"__symbolic":"method"}],"VideoRemove":[{"__symbolic":"method"}],"uploadVideoCancel":[{"__symbolic":"method"}],"uploadImageSuccess":[{"__symbolic":"method"}],"uploadImageFail":[{"__symbolic":"method"}],"removeImageSuccess":[{"__symbolic":"method"}],"uploadAudioSuccess":[{"__symbolic":"method"}],"removeAudio":[{"__symbolic":"method"}],"selectChange":[{"__symbolic":"method"}],"insertVar":[{"__symbolic":"method"}],"varMouseOver":[{"__symbolic":"method"}],"varMouseLeave":[{"__symbolic":"method"}],"handelTextContentChange":[{"__symbolic":"method"}]}},"IccMediaSelectComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-media-select","template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">素材选择</div>\r\n</div>\r\n\r\n<div class=\"wrapper\">\r\n  <div class=\"tree-outter-box\">\r\n    <p class=\"tree-title\" *ngIf=\"mediaType === 'img'\">图片分组</p>\r\n    <p class=\"tree-title\" *ngIf=\"mediaType === 'video'\">视频分组</p>\r\n    <p class=\"tree-title\" *ngIf=\"mediaType === 'audio'\">音频分组</p>\r\n    <div class=\"tree-box\" nz-row>\r\n      <nz-tree [nzData]=\"groupData\" [nzSelectedKeys]=\"defaultSelectedKeys\" (nzClick)=\"nzClick()\" [nzShowLine]=\"true\"> </nz-tree>\r\n    </div>\r\n  </div>\r\n  <div class=\"tree-outter-content\">  \r\n    <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\r\n      <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\r\n        <div nz-col nzSpan=\"8\" style=\"float:right;\">\r\n          <nz-form-item *ngIf=\"mediaType === 'img'\">\r\n            <nz-input-group nzSearch [nzAddOnAfter]=\"suffixImgButton\">\r\n              <input type=\"text\" nz-input [(ngModel)]=\"name\" name=\"imgName\" placeholder=\"请输入图片名称\" />\r\n            </nz-input-group>\r\n            <ng-template #suffixImgButton>\r\n              <button nz-button nzType=\"primary\" nzSearch (click)=\"search()\"><i nz-icon nzType=\"search\"></i></button>\r\n            </ng-template>\r\n          </nz-form-item>\r\n          <nz-form-item *ngIf=\"mediaType === 'video'\">\r\n            <nz-input-group nzSearch [nzAddOnAfter]=\"suffixVideoButton\">\r\n              <input type=\"text\" nz-input [(ngModel)]=\"title\" name=\"videoTitle\" placeholder=\"请输入视频标题\" />\r\n            </nz-input-group>\r\n            <ng-template #suffixVideoButton>\r\n              <button nz-button nzType=\"primary\" nzSearch (click)=\"search()\"><i nz-icon nzType=\"search\"></i></button>\r\n            </ng-template>\r\n          </nz-form-item>\r\n          <nz-form-item *ngIf=\"mediaType === 'audio'\">\r\n            <nz-input-group nzSearch [nzAddOnAfter]=\"suffixVideoButton\">\r\n              <input type=\"text\" nz-input [(ngModel)]=\"audioName\" name=\"audioName\" placeholder=\"请输入音频名称\" />\r\n            </nz-input-group>\r\n            <ng-template #suffixVideoButton>\r\n              <button nz-button nzType=\"primary\" nzSearch (click)=\"search()\"><i nz-icon nzType=\"search\"></i></button>\r\n            </ng-template>\r\n          </nz-form-item>\r\n        </div>\r\n      </div>\r\n    </form>\r\n    <nz-spin *ngIf=\"isLoading\" style=\"margin: 100px;\" nzTip=\"加载中...\"></nz-spin>\r\n    <div *ngIf=\"!isLoading\" class=\"item-container\" nz-row>\r\n      <ng-container *ngIf=\"mediaType === 'img'\">\r\n        <div *ngFor=\"let media of mediaList\" nz-col class=\"pic-box\">\r\n          <icc-state style=\"margin-bottom: 8px; margin-right: 0;\" [(state)]=\"media.selectState\" (stateChange)=\"stateChange($event, media)\">\r\n            <!-- 插槽样式见less -->\r\n            <icc-image [src]=\"mediaUrl + media.id\" class=\"img-box\"> </icc-image>\r\n          </icc-state>\r\n          <span [nzTooltipTitle]=\"media.allName\" nzTooltipPlacement=\"topCenter\" nz-tooltip class=\"pic-title\">{{ media.title }}</span>\r\n        </div>\r\n      </ng-container>\r\n      <ng-container *ngIf=\"mediaType === 'video'\">\r\n        <div *ngFor=\"let media of mediaList\" nz-col nzSpan=\"12\" style=\"display: inline-block;\">\r\n          <icc-state style=\"margin-bottom: 8px;\" [(state)]=\"media.selectState\" (stateChange)=\"stateChange($event, media)\">\r\n            <!-- 插槽样式见less -->\r\n            <div class=\"video-slot\">\r\n              <div class=\"video-container\">\r\n                <icc-video [url]=\"mediaUrl + media.id\" [disabled]=\"true\"></icc-video>\r\n                <div class=\"des-wrapper\">\r\n                  <p class=\"title\">{{ media.title }}</p>\r\n                  <p class=\"time\">{{ media.updateTime }}</p>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </icc-state>\r\n        </div>\r\n      </ng-container>\r\n      <ng-container *ngIf=\"mediaType === 'audio'\">\r\n        <div *ngFor=\"let media of mediaList\" nz-col nzSpan=\"12\" style=\"display: inline-block;height: 100px;\">\r\n          <icc-state style=\"margin: 0 0 -10px 10px;\" [(state)]=\"media.selectState\" (stateChange)=\"stateChange($event, media)\">\r\n            <!-- 插槽样式见less -->\r\n            <div class=\"audio-slot\">\r\n              <div class=\"audio-container\">\r\n                <icc-audio [url]=\"downloadUrl + media.ftpUrl\"></icc-audio>\r\n                <div class=\"des-wrapper\">\r\n                  <icc-table-text [text]=\"media.title\" [width]=\"128\" [isBold]=\"true\"></icc-table-text>\r\n                  <div class=\"time\">{{ media.updateTime }}</div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </icc-state>\r\n        </div>\r\n      </ng-container>\r\n      <!-- 空数据 -->\r\n      <ng-container>\r\n        <div class=\"empty-wrapper\">\r\n          <app-empty-data *ngIf=\"!mediaList || !mediaList.length\" class=\"empty-data\"></app-empty-data>\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n    <div class=\"pagination-wrapper\" *ngIf=\"mediaList && mediaList.length > 0\">\r\n      <nz-pagination [(nzPageIndex)]=\"currentIndex\" [nzTotal]=\"total\" [nzPageSize]=\"pageSize\" (nzPageIndexChange)=\"pageChange($event)\"> </nz-pagination>\r\n    </div>\r\n  </div>\r\n  \r\n</div>\r\n\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"destroy()\"><span>关闭</span></icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\"><span>确定</span></icc-button>\r\n</div>\r\n","styles":[".img-box{display:block;width:150px;height:150px}.img-box ::ng-deep .icc-img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.video-slot{width:380px;height:150px;padding:10px}.video-slot .video-container{display:flex;justify-content:flex-start;width:100%;height:100%}.video-slot icc-video{display:inline-block;min-width:230px;max-width:230px;height:100%;vertical-align:top}.video-slot ::ng-deep .icc-video{width:100%;height:100%}.video-slot ::ng-deep .video-box{width:100%;height:100%}.video-slot .des-wrapper{position:relative;display:inline-block;width:50%;height:100%;padding:14px;vertical-align:top}.video-slot .des-wrapper .title{position:absolute;top:30px;left:7px;display:-webkit-box;margin:0;padding:0;overflow:hidden;font-weight:700;word-break:break-all;-webkit-box-orient:vertical;-webkit-line-clamp:2}.video-slot .des-wrapper .time{position:absolute;bottom:25px;left:7px;margin:0;padding:0;overflow:hidden;font-size:12px;white-space:nowrap;text-overflow:ellipsis}.audio-slot{width:405px;height:90px;padding:10px}.audio-slot .audio-container{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%}.audio-slot .audio-container icc-audio{z-index:10000;min-width:230px;max-width:230px}.audio-slot .des-wrapper{position:relative;display:inline-block;width:50%;height:100%;padding:10px;vertical-align:top;transform:translateY(5px)}.audio-slot .des-wrapper .title-wrapper{font-weight:700}.audio-slot .des-wrapper .time{margin:0;padding:0;overflow:hidden;font-size:12px;white-space:nowrap;text-overflow:ellipsis}.item-container{display:flex;flex-wrap:wrap;justify-content:flex-start;min-height:300px;max-height:500px;overflow:auto}.pagination-wrapper{display:flex;align-items:center;justify-content:flex-end;height:50px}.empty-wrapper{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.pic-box{display:inline-block;width:160px;margin-right:15px}.pic-box:nth-child(5n){margin-right:0}.pic-title{display:block;margin-bottom:10px;overflow:hidden;white-space:nowrap;text-align:center;text-overflow:ellipsis}.wrapper{display:flex;height:100%;border:1px solid #e8e8e8}.wrapper .tree-outter-box{width:200px}.wrapper .tree-outter-box .tree-title{height:60px;margin:0;padding:0 20px;color:#49536e;font-size:18px;line-height:60px}.wrapper .tree-outter-content{flex:1;padding:10px 15px 0;border-left:1px solid #e8e8e8}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":14,"character":27},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":14,"character":55}]}],"ngOnInit":[{"__symbolic":"method"}],"queryMediaList":[{"__symbolic":"method"}],"getGroups":[{"__symbolic":"method"}],"stateChange":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"pageChange":[{"__symbolic":"method"}],"nzClick":[{"__symbolic":"method"}]}},"IccMsgContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"icc-msg-content","template":"<!-- 非弹窗展示 -->\r\n\r\n<div *ngIf=\"!isModal\">\r\n  <!-- 纯文本(之所以不和contentTypes.html混用，是因为有些文本（<script>aaa</script>）需要显示出来) -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.text\" class=\"content-box\">{{ targetItem.content }}</div>\r\n\r\n  <!-- HTML字符串 -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.html\" [innerHTML]=\"targetItem.content | html\" class=\"content-box\"></div>\r\n\r\n  <!-- 音频 -->\r\n  <icc-audio *ngIf=\"targetItem.contentType === contentTypes.audio\" [url]=\"targetItem.content\"></icc-audio>\r\n\r\n  <!-- 视频 -->\r\n  <icc-video [disabled]=\"true\" *ngIf=\"targetItem.contentType === contentTypes.video && !isModal\" [url]=\"targetItem.content\" [name]=\"!!targetItem.name ? targetItem.name : ''\"></icc-video>\r\n\r\n  <!-- 图片 -->\r\n  <icc-image-upload [editable]=\"false\" [imgList]=\"targetItem.content\" width=\"300\" *ngIf=\"targetItem.contentType === contentTypes.image\"> </icc-image-upload>\r\n\r\n  <!-- 微信图文:在时光轴使用 -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.wechatList\" style=\"overflow: hidden;\">\r\n    <icc-side-menu [list]=\"targetItem.content\" (change)=\"selectedChange($event)\" [readonly]=\"true\"></icc-side-menu>\r\n  </div>\r\n\r\n  <!-- 5G - 非时光轴 -->\r\n  <icc-5g-editor *ngIf=\"targetItem.contentType === contentTypes._5g && !isTimeline\" [contentRoot]=\"targetItem.content\" [supportSuggestion]=\"true\" [disabled]=\"true\"></icc-5g-editor>\r\n  <!-- 5G - 时光轴 -->\r\n  <!-- <app-g5-timeline-content *ngIf=\"targetItem.contentType === contentTypes._5g && isTimeline\" [content]=\"targetItem.content\"></app-g5-timeline-content> -->\r\n  <icc-5g-content *ngIf=\"targetItem.contentType === contentTypes._5g && isTimeline\" [content]=\"targetItem.content\"></icc-5g-content>\r\n</div>\r\n\r\n<!-- 视频弹窗展示 -->\r\n<icc-video [disabled]=\"true\" *ngIf=\"targetItem.contentType === contentTypes.video && isModal\" status=\"6\" [url]=\"targetItem.content\" [name]=\"!!targetItem.name ? targetItem.name : ''\" (closeModel)=\"closeModel()\"></icc-video>\r\n\r\n<!-- 非视频弹窗展示 -->\r\n<nz-modal [(nzVisible)]=\"targetItem.contentType !== contentTypes.video && isModal\" [nzTitle]=\"title\" nzWidth=\"800\" (nzOnCancel)=\"closeModel()\" [nzFooter]=\"null\" nzClassName=\"model-auto-height\">\r\n  <!-- 纯文本(之所以不和contentTypes.html混用，是因为有些文本（<script>aaa</script>）需要显示出来) -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.text\" class=\"content-box\">{{ targetItem.content }}</div>\r\n  <!-- HTML字符串 -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.html\" [innerHTML]=\"targetItem.content | html\" class=\"content-box\"></div>\r\n  <!-- 音频 -->\r\n  <icc-audio *ngIf=\"targetItem.contentType === contentTypes.audio\" [url]=\"targetItem.content\"></icc-audio>\r\n  <!-- 微信图文 -->\r\n  <div *ngIf=\"targetItem.contentType === contentTypes.wechatList\" style=\"overflow: hidden;display: flex;\">\r\n    <icc-side-menu [list]=\"targetItem.content\" (change)=\"selectedChange($event)\" [readonly]=\"true\" style=\"width: 30%;\"> </icc-side-menu>\r\n    <ng-container *ngIf=\"menuItem && menuItem.content\">\r\n      <div [innerHTML]=\"menuItem.content | html\" style=\"flex: 1; margin-left: 20px; background: #f1f1f1;\"></div>\r\n    </ng-container>\r\n  </div>\r\n  <!-- 图片 -->\r\n  <icc-image-upload [editable]=\"false\" [imgList]=\"targetItem.content\" width=\"150\" *ngIf=\"targetItem.contentType === contentTypes.image\"> </icc-image-upload>\r\n  <!-- 5G - 非时光轴 -->\r\n  <icc-5g-editor *ngIf=\"targetItem.contentType === contentTypes._5g\" [width]=\"1000\" [contentRoot]=\"targetItem.content\" [supportSuggestion]=\"true\" disabeld=\"true\"></icc-5g-editor>\r\n</nz-modal>\r\n","styles":[":host{display:inline-block}:host ::ng-deep .content-box>p{margin-bottom:0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":27}]}],"message":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"isModal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"isTimeline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"errorImgUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"wechatClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":52,"character":3}}]}],"close":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}],"getParsedContent":[{"__symbolic":"method"}],"isJsonString":[{"__symbolic":"method"}],"selectedChange":[{"__symbolic":"method"}],"closeModel":[{"__symbolic":"method"}]}},"IccMsgTplComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-msg-tpl","template":"<div class=\"msg-tpl\" (mousedown)=\"mouseDown($event)\" (mouseup)=\"mouseUp($event)\" (mouseleave)=\"mouseLeave($event)\" (mouseenter)=\"mouseEnter($event)\">\r\n  <p class=\"title\">\r\n    <label nz-checkbox [(ngModel)]=\"tpl.checked\" class=\"check-box not-select\"></label>\r\n    {{ tpl.name }}\r\n    &nbsp;\r\n    <!-- <span class=\"code-text\">{{ tpl.code }}</span> -->\r\n    <a class=\"code-text\" (click)=\"toDetail()\">{{ tpl.code }}</a>\r\n    <img class=\"title-img\" src=\"./assets/images/others/check_avoid.png\" *ngIf=\"tpl.ignoreAudit\" alt=\"\" />\r\n    <span class=\"right-float not-select\">\r\n      <!-- 不需要动画显示的按钮 -->\r\n      <ng-container *ngFor=\"let action of actionList\">\r\n        <img *ngIf=\"!action.isAnimation\" [src]=\"action.icon\" alt=\"\" nz-popover (click)=\"operateClick($event, action)\" [nzPopoverContent]=\"action.text\" nzPopoverPlacement=\"top\" />\r\n      </ng-container>\r\n      <!-- 按钮切换 - \"更多项\" -->\r\n      <span class=\"btns\" [ngStyle]=\"{ width: !showBtns ? '40px' : 0 }\">\r\n        <img src=\"./assets/images/btnIcon/btn_more.png\" alt=\"\" (mouseover)=\"displayBtnList(true)\" />\r\n      </span>\r\n      <!-- 按钮切换 - 需要动画显示的按钮 -->\r\n      <span class=\"btns\" [ngStyle]=\"{ width: showBtns ? animationBtnsWidth : 0 }\">\r\n        <ng-container *ngFor=\"let action of actionList\">\r\n          <img *ngIf=\"action.isAnimation\" [src]=\"action.icon\" alt=\"\" (click)=\"operateClick($event, action)\" />\r\n          <span *ngIf=\"action.isAnimation\" class=\"evt-text\" (click)=\"operateClick($event, action)\">{{ action.text }}</span>\r\n        </ng-container>\r\n      </span>\r\n    </span>\r\n  </p>\r\n  <div class=\"category-box\">\r\n    <ul>\r\n      <li class=\"li-msg-types\">\r\n        <div class=\"msg-icons-wrapper\">\r\n          <ng-container *ngFor=\"let type of tpl.msgTypeStrs; let i = index\">\r\n            <icc-msg-icon [msgType]=\"type\" class=\"msg-icon\"></icc-msg-icon>\r\n            {{ tpl.templateNums ? tpl.templateNums[type] || 0 : 0 }}\r\n            &nbsp;\r\n          </ng-container>\r\n        </div>\r\n      </li>\r\n      <li class=\"li-flex-item\">\r\n        <p *ngIf=\"!tpl.msgTypeStrs || tpl.msgTypeStrs.length <= 1\" style=\"padding-left: 20px;\">无</p>\r\n        <!-- parallelStrategySize属性不存在 -->\r\n        <p *ngIf=\"tpl.msgTypeStrs && tpl.msgTypeStrs.length > 1\">并行策略：{{ tpl.parallelStrategySize }}</p>\r\n        <!-- serialStrategySize属性不存在 -->\r\n        <p *ngIf=\"tpl.msgTypeStrs && tpl.msgTypeStrs.length > 1\">串行策略：{{ tpl.serialStrategySize }}</p>\r\n      </li>\r\n      <li class=\"li-flex-item\">\r\n        <p>{{ tpl.updateUserName || '无' }}</p>\r\n      </li>\r\n      <li class=\"li-flex-item\">\r\n        <p>{{ tpl.updateTime }}</p>\r\n      </li>\r\n      <li class=\"li-last-item\" [ngSwitch]=\"tpl.auditResult\">\r\n        <p *ngSwitchCase=\"1\" nz-popover [nzPopoverContent]=\"contentTemplate\"><img src=\"assets/images/others/passed.png\" alt=\"\" /><span class=\"passed-text\">已通过</span></p>\r\n        <p *ngSwitchCase=\"0\" nz-popover [nzPopoverContent]=\"contentTemplate\"><img src=\"assets/images/others/checking.png\" alt=\"\" /><span class=\"checking-text\">待审核</span></p>\r\n        <p *ngSwitchCase=\"2\" nz-popover [nzPopoverContent]=\"contentTemplate\"><img src=\"assets/images/others/rejected.png\" alt=\"\" /><span class=\"rejected-text\">被驳回</span></p>\r\n        <ng-template #contentTemplate>\r\n          审核人:{{ tpl.auditUserAccount }}<br />\r\n          审核时间:{{ tpl.auditTime }} <br />\r\n          <span class=\"auditCommentSpan\">审核批注:{{ tpl.auditComment ? tpl.auditComment : '无' }}</span>\r\n        </ng-template>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:inline-block;width:100%;min-width:250px}:host .msg-tpl{display:inline-block;overflow:hidden;position:relative;box-sizing:border-box;margin:0 0 10px;border:1px solid #eaecf0;width:100%;background:#fff;transition:.3s}:host .msg-tpl:hover{box-shadow:0 0 20px -5px #799a93f0}:host .msg-tpl .title{display:flex;position:relative;align-items:center;margin-bottom:0;padding-left:24px;border-bottom:1px solid #eaecf0;line-height:60px;font-weight:500;font-size:18px}:host .msg-tpl .title .check-box{margin-right:12px}:host .msg-tpl .title .code-text{margin-left:20px;margin-bottom:-2px;text-decoration:underline;font-size:14px;color:#1890ff}:host .msg-tpl .title .title-img{margin-left:10px}:host .msg-tpl .title .right-float{display:flex;position:absolute;right:20px;top:0;justify-content:center;align-items:center;height:100%}:host .msg-tpl .title .right-float .btns{display:inline-block;overflow:hidden;height:100%;transition:.6s}:host .msg-tpl .title .right-float .btns img{display:inline-block;margin-left:20px;width:18px;opacity:1;cursor:pointer}:host .msg-tpl .title .right-float .btns .evt-text{padding:0 0 0 12px;cursor:pointer;font-size:14px;color:#9e9e9e}:host .msg-tpl .title .ng-tag{padding:0 10px;height:19px;line-height:16px}:host .msg-tpl .category-box{display:flex;overflow:hidden;margin-bottom:0;padding:0 20px 0 24px;width:100%;height:100px}:host .msg-tpl .category-box .box{display:flex;float:left;align-items:center;margin:8px 60px 8px 0;width:auto}:host .msg-tpl .category-box .box .type-name{margin:0 0 0 10px}:host .msg-tpl .category-box .box .count{margin-left:2px;letter-spacing:2px}:host .msg-tpl .category-box ul{display:flex;list-style:none;margin:0;padding:0;width:100%}:host .msg-tpl .category-box ul .li-msg-types{display:flex;align-items:center;padding-left:20px;width:40%}:host .msg-tpl .category-box ul .li-msg-types .msg-icons-wrapper .msg-icon{display:inline-block;margin:5px}:host .msg-tpl .category-box ul .li-flex-item{display:flex;flex-direction:column;justify-content:center;width:15%}:host .msg-tpl .category-box ul .li-flex-item p{margin:3px 0;cursor:pointer}:host .msg-tpl .category-box ul .li-last-item{display:flex;justify-content:flex-end;align-items:center;padding-right:2%;width:15%}:host .msg-tpl .category-box ul .li-last-item p{margin:3px 0;cursor:pointer}:host .msg-tpl .category-box ul .li-last-item p .passed-text{margin-left:3px;color:#34c55b}:host .msg-tpl .category-box ul .li-last-item p .checking-text{margin-left:3px;color:#ff9c00}:host .msg-tpl .category-box ul .li-last-item p .rejected-text{margin-left:3px;color:#ff5552}:host .msg-tpl .btn-group{display:flex;position:absolute;right:0;top:0;align-items:center;height:100%;transition:right 1s}:host .msg-tpl .btn-group .btn-item{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0 15px;width:60px;height:100%;background:#38ba9e;cursor:pointer;color:#fff}:host .msg-tpl .btn-group .btn-item:hover{background:#31ad92}:host .msg-tpl .btn-group .btn-item img{margin-bottom:2px}:host .msg-tpl .btn-group .red{background:#f46e6b}:host .msg-tpl .btn-group .red:hover{background:#d4615e}.auditCommentSpan{display:inline-block;max-width:300px}"]}]}],"members":{"tpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"actionList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":59,"character":26},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":59,"character":53}]}],"ngOnInit":[{"__symbolic":"method"}],"mouseDown":[{"__symbolic":"method"}],"mouseUp":[{"__symbolic":"method"}],"mouseEnter":[{"__symbolic":"method"}],"mouseLeave":[{"__symbolic":"method"}],"operateClick":[{"__symbolic":"method"}],"displayBtnList":[{"__symbolic":"method"}],"toDetail":[{"__symbolic":"method"}]}},"IccMultiLineCellComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-multi-line-cell","styles":[],"template":"<label style=\"cursor: pointer;\" nz-tooltip [nzTooltipTitle]=\"rolesTitleTemplate\" class=\"cell-label\"></label>\r\n<ng-template #rolesTitleTemplate>\r\n  <!-- <icc-multi-line-cell [list]=\"list\" [lines]=\"0\"></icc-multi-line-cell> -->\r\n  <div [innerHTML]=\"htmlStr\"></div>\r\n</ng-template>\r\n"}]}],"members":{"cellTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":12,"character":3},"arguments":["rolesTitleTemplate",{"static":false}]}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"lines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":16,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"multiLineDisplay":[{"__symbolic":"method"}]}},"IccCollapsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"icc-collaps","template":"<div class=\"collaps-wrapper\">\r\n  <section *ngFor=\"let item of list; let i = index\">\r\n    <div class=\"section-item\" >\r\n      <p>\r\n        <span class=\"title\">{{ item.title }}</span>\r\n        <span class=\"operate-text\" (click)=\"collapsClick(item)\">{{ selectedIndex === item.index ? '折叠' : '展开' }}</span>\r\n      </p>\r\n      <div class=\"content\" [ngClass]=\"{'show': selectedIndex === item.index, 'hidden': selectedIndex !== item.index}\">{{ item.content }}</div>\r\n    </div>\r\n  </section>\r\n</div>\r\n\r\n","styles":[".collaps-wrapper{padding-top:1px}.collaps-wrapper .section-item{border:1px solid #ccc;margin-top:-1px}.collaps-wrapper .section-item p{display:flex;align-items:center;justify-content:space-between;margin-bottom:0;padding:8px;background:#efefef}.collaps-wrapper .section-item p .title{font-size:16px;font-weight:bolder;margin-left:15px}.collaps-wrapper .section-item p .operate-text{margin-right:15px;cursor:pointer}.collaps-wrapper .section-item .content{overflow:hidden;transition:1s}.collaps-wrapper .section-item .show{height:100px;opacity:1}.collaps-wrapper .section-item .hidden{height:0;opacity:0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"collapsClick":[{"__symbolic":"method"}]}},"IccOrderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":30,"character":1},"arguments":[{"selector":"icc-order","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"\n    <div class=\"content\" #content>\n      <div\n        class=\"order-wrapper\"\n        [ngClass]=\"{ active: menuState }\"\n        [ngStyle]=\"{ right: position[0] + 'px', bottom: position[1] + 'px' }\"\n      >\n        <div class=\"order-content\">\n          <div class=\"title\">\n            {{ title }}\n          </div>\n          <div class=\"scroll\" [ngStyle]=\"{ maxWidth: width + 'px', maxHeight: height + 'px' }\">\n            <ng-container *ngIf=\"data && data.length > 0\">\n              <ul>\n                <li *ngFor=\"let item of data; index as level\">\n                  <div class=\"name\">\n                    {{ item.name }}\n                  </div>\n                  <div\n                    class=\"item\"\n                    *ngFor=\"let it of item.list; index as i\"\n                    [ngClass]=\"{ active: level === currentLevel && i === currentIndex }\"\n                  >\n                    <p class=\"des\" (click)=\"markIndex(level, i)\">{{ it.title }}</p>\n                    <p class=\"btn\">\n                      <a (click)=\"move(level, i, false)\" [hidden]=\"level === currentLevel && currentIndex <= 0\">\n                        <i nz-icon nzType=\"arrow-up\" nzTheme=\"outline\"></i>\n                      </a>\n                      <a\n                        (click)=\"move(level, i, true)\"\n                        [hidden]=\"level === currentLevel && currentIndex + 1 >= item.list.length\"\n                      >\n                        <i nz-icon nzType=\"arrow-down\" nzTheme=\"outline\"></i>\n                      </a>\n                    </p>\n                  </div>\n                </li>\n              </ul>\n              <span class=\"tip\" [ngStyle]=\"{ top: tipTop + 'px' }\"> </span>\n            </ng-container>\n\n            <!-- 缺省 -->\n            <ng-container *ngIf=\"data && data.length < 1\">\n              <div class=\"empty-box\">\n                <img src=\"./assets/images/nothing/search.png\" alt=\"\" />\n                <p class=\"empty-text\">暂无数据</p>\n              </div>\n            </ng-container>\n          </div>\n          <div class=\"footer\" *ngIf=\"data && data.length > 0\">\n            <icc-button (click)=\"saveHandle()\">保存</icc-button>\n            <icc-button btnType=\"hollow\" (click)=\"freshHandle()\">重置</icc-button>\n          </div>\n        </div>\n      </div>\n      <div class=\"trigger\" (click)=\"toggleMenu()\" [ngStyle]=\"{ cursor: trigger === 'hover' ? 'normal' : 'pointer' }\">\n        <img src=\"assets/images/layout/anchor.png\" />\n      </div>\n    </div>\n    <div *ngIf=\"menuState\" class=\"mask\" (click)=\"menuState = false\"></div>\n  ","styles":[".order-wrapper{position:absolute;opacity:0;visibility:hidden;transition:.25s;padding-right:25px}.order-wrapper.active{opacity:1;visibility:visible}.order-wrapper .order-content{border:1px solid #dcdcdc;box-shadow:0 0 7px 1px rgba(0,0,0,.21);background-color:#fff;position:relative}.order-wrapper .order-content::before{content:'';width:0;height:0;border-top:9px solid transparent;border-left:12px solid #dcdcdc;border-bottom:9px solid transparent;position:absolute;right:-13px;bottom:19px}.order-wrapper .order-content::after{content:'';width:0;height:0;border-top:8px solid transparent;border-left:11px solid #f6f6f7;border-bottom:8px solid transparent;position:absolute;right:-11px;bottom:20px}.title{line-height:40px;padding:0 20px;border-bottom:1px solid #dcdcdc;font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#40a9ff}.content .scroll{position:relative;margin:7px 21px;overflow:auto;padding:0 10px}.content ul{list-style:none;margin:0;padding:0;overflow:hidden}.content li{line-height:1;position:relative}.content li::before{content:'';width:2px;background-color:#e8e8e8;height:100%;position:absolute;left:9px;top:-14px}.content li:first-child:before{top:21px}.content .name{font-size:16px;font-weight:700;padding:12px 0 7px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-indent:1.7em}.content .name::before{content:'';position:absolute;left:7px;top:18px;width:5px;height:5px;background:#9c9c9c;box-shadow:0 0 7px #000;border-radius:50%;overflow:hidden}.content .item{padding:8px 0;font-size:14px;position:relative;display:flex}.content .item::before{content:'';position:absolute;left:6px;top:12px;width:8px;height:8px;background:#ccc;border-radius:50%;z-index:8}.content .item .des{text-indent:3em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;max-width:calc(100% - 50px);cursor:pointer}.content .item .btn{margin:0;text-align:center;width:50px;visibility:hidden;opacity:0}.content .item .btn a{cursor:pointer;margin:2px}.content .item.active .des{color:#40a9ff}.content .item.active .btn{visibility:visible;opacity:1}.content .empty-box{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;padding:30px 0}.content .empty-box p{margin-top:.6em}.trigger{width:40px;height:40px}.trigger img{display:block;width:100%;height:auto}.tip{position:absolute;top:8px;left:11px;width:16px;height:16px;background:#40a9ff;transition:.2s;z-index:11}.tip:after{position:absolute;top:0;right:-16px;width:0;height:0;border-color:transparent transparent transparent #40a9ff;border-style:solid;border-width:8px;content:''}.mask{position:fixed;top:0;bottom:0;right:0;left:0;z-index:-1}.footer{padding-left:21px;margin:21px 0 13px}:host{position:fixed;bottom:20px;right:20px;z-index:99}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":98,"character":27}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":139,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"trigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":149,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":154,"character":3}}]}],"save":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":158,"character":3}}]}],"fresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":162,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":164,"character":3},"arguments":["content",{"static":false}]}]}],"getTotalItemCount":[{"__symbolic":"method"}],"changeTipTop":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"markIndex":[{"__symbolic":"method"}],"move":[{"__symbolic":"method"}],"swapArray":[{"__symbolic":"method"}],"toggleMenu":[{"__symbolic":"method"}],"saveHandle":[{"__symbolic":"method"}],"freshHandle":[{"__symbolic":"method"}]}},"IccTableTextComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":1,"character":1},"arguments":[{"selector":"icc-table-text","template":"<div *ngIf=\"!url\" class=\"table-text\" [ngStyle]=\"{ 'max-width.px': width, 'min-width.px': width, 'text-align': textAlign, 'font-weight': isBold ? 'bold' : 'normal', color: color ? color : '' }\" [nzTooltipTitle]=\"text\" (click)=\"textClick()\" nzTooltipPlacement=\"top\" nz-tooltip>\r\n  {{ text }}\r\n</div>\r\n\r\n<!-- 可点击url -->\r\n<div *ngIf=\"url\" class=\"table-text\" [ngStyle]=\"{ 'max-width.px': width, 'min-width.px': width, 'text-align': textAlign }\" [nzTooltipTitle]=\"titleTemplate\" nzTooltipPlacement=\"top\" nz-tooltip [nzOverlayStyle]=\"{ 'max-width.px': tooltipMaxWidth }\">\r\n  <a [href]=\"formatHttps(url)\" [ngStyle]=\"{ color: color ? color : '' }\" target=\"_blank\">{{ text }}</a>\r\n</div>\r\n<ng-template #titleTemplate>\r\n  <a [href]=\"formatHttps(url)\" target=\"_blank\" style=\"color: #fff;\">{{ url }}</a>\r\n</ng-template>\r\n","styles":[".table-text{display:inline-block;width:100%;height:21px;overflow:hidden;white-space:nowrap;text-align:center;text-overflow:ellipsis;cursor:pointer}.table-text a{color:#49536e}:host{display:flex}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"url":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"isBold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"textAlign":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"tooltipMaxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"textclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":16,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"textClick":[{"__symbolic":"method"}],"formatHttps":[{"__symbolic":"method"}]}},"IccToggleComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-toggle","template":"<input type=\"checkbox\" class=\"switch\" [ngClass]=\"{ checked: checked }\" [ngStyle]=\"{ 'background-color': color }\" (click)=\"switch()\" [disabled]=\"idDisabled\" />\r\n","styles":[":host ::ng-deep .switch{position:relative;box-sizing:border-box;width:52px;height:32px;background-color:#dfdfdf;border:1px solid #dfdfdf;border-radius:16px;outline:0;cursor:pointer;transition:background-color .1s,border .1s;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host ::ng-deep .switch::before{position:absolute;top:0;left:0;width:50px;height:30px;background-color:#fdfdfd;border-radius:15px;transition:transform .35s cubic-bezier(.45,1,.4,1);content:' '}:host ::ng-deep .switch::after{position:absolute;top:0;left:0;width:30px;height:30px;background-color:#fff;border-radius:15px;box-shadow:0 1px 3px rgba(0,0,0,.4);transition:transform .35s cubic-bezier(.4,.4,.25,1.35);content:' '}:host ::ng-deep .checked::before{transform:scale(0)}:host ::ng-deep .checked::after{transform:translateX(20px)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"checked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"idDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"toggle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"switch":[{"__symbolic":"method"}]}},"IccUploadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-upload","template":"<div class=\"icc-upload\">\r\n  <!--文字提示区-->\r\n  <nz-alert nzType=\"warning\" nzCloseable=\"false\" [nzMessage]=\"warnMessage\">\r\n    <ng-template #warnMessage>\r\n      <ng-content></ng-content>\r\n      <span class=\"warning-text\">选择Excel文件前，请确保导入的数据项与模板的数据项一致！</span>\r\n      <a [href]=\"exampleUrl\" target=\"_blank\">下载excel模板</a>\r\n    </ng-template>\r\n  </nz-alert>\r\n  <!--附件上传区-->\r\n  <div class=\"upload-box\">\r\n    <nz-input-group nzSize=\"large\" [nzAddOnAfter]=\"suffixText\">\r\n      <input type=\"text\" nz-input class=\"show-input\" [ngModel]=\"currentFileName\" disabled />\r\n    </nz-input-group>\r\n    <ng-template #suffixText>\r\n      <nz-upload [nzAccept]=\"accept\" [nzAction]=\"action\" [nzBeforeUpload]=\"beforeUpload\"\r\n        [nzCustomRequest]=\"customRequest\" [nzDisabled]=\"disabled\" [nzSize]=\"size\" [nzFileType]=\"fileType\"\r\n        [nzFilter]=\"filter\" [nzShowUploadList]=\"false\" [nzWithCredentials]=\"withCredentials\"\r\n        (nzChange)=\"change($event)\">\r\n        选择文件\r\n      </nz-upload>\r\n    </ng-template>\r\n    <p class=\"limit-size\">文件不能超过{{ (size/1024/1024).toFixed(0) }}M</p>\r\n    <ul *ngIf=\"fileList.length\" class=\"file-list\">\r\n      <li *ngFor=\"let file of fileList;let i = index;\" class=\"file-item\">\r\n        <label class=\"left\">\r\n          <i *ngIf=\"fileStatusObj['0'] === file.status\" nz-icon nzType=\"loading\" nzTheme=\"outline\"></i>\r\n          <i *ngIf=\"fileStatusObj['1'] === file.status\" nz-icon nzType=\"file-excel\" nzTheme=\"outline\"></i>\r\n          <i *ngIf=\"fileStatusObj['2'] === file.status\" nz-icon nzType=\"file-excel\" nzTheme=\"outline\"\r\n            style=\"color: red;\"></i>\r\n          <span [ngStyle]=\"{ 'color': fileStatusObj['2'] === file.status ? 'red':'#49536e' }\">{{ file.name }}</span>\r\n        </label>\r\n        <img class=\"right\" (click)=\"removeFile(i)\" src=\"./assets/images/btnIcon/delete_red.png\" alt=\"\">\r\n      </li>\r\n    </ul>\r\n  </div>\r\n  <!--加载进度区-->\r\n  <div class=\"progress-box\" *ngIf=\"hasProgress\">\r\n    <p><span class=\"float-left\">正在导入</span><span class=\"float-right\">{{ percent }}%</span></p>\r\n    <nz-progress nzShowInfo=\"false\" [nzStatus]=\"status\" [nzPercent]=\"percent\">\r\n    </nz-progress>\r\n  </div>\r\n  <!--附件统计区-->\r\n  <div *ngIf=\"fileList.length && !hasProgress && showReason\">\r\n    <section>\r\n      <div class=\"notification-wrapper total-box\">\r\n        <div class=\"title\">\r\n          <img *ngIf=\"fileStatusObj['1'] === fileList[0].status\" src=\"./assets/images/layout/success.png\" alt=\"\">\r\n          <img *ngIf=\"fileStatusObj['2'] === fileList[0].status\" src=\"./assets/images/layout/error.png\" alt=\"\">\r\n          <span *ngIf=\"fileStatusObj['1'] === fileList[0].status\" class=\"tip-text\">导入成功</span>\r\n          <span *ngIf=\"fileStatusObj['2'] === fileList[0].status\" class=\"tip-text\">导入失败</span>\r\n        </div>\r\n        <div class=\"content\">\r\n          <span *ngIf=\"errorMsg\">{{ errorMsg }}</span>\r\n          <span *ngIf=\"!errorMsg && fileStatusObj['1'] === fileList[0].status && totalCount == successCount\">共导入{{ totalCount }}条记录！全部数据项符合规范！</span>\r\n          <span\r\n            *ngIf=\"!errorMsg && fileStatusObj['1'] === fileList[0].status && totalCount != successCount\">共导入{{ totalCount }}条记录！{{ successCount }}条记录符合规范！部分数据项不符合规范！修改后请重新导入！</span>\r\n          <span\r\n            *ngIf=\"!errorMsg && fileStatusObj['2'] === fileList[0].status\">共导入{{ totalCount }}条记录！{{ successCount }}条记录符合规范！部分数据项不符合规范！修改后请重新导入！</span>\r\n          <a *ngIf=\"!errorMsg && logUrl\" [href]=\"logUrl\">下载查看原因</a>\r\n        </div>\r\n      </div>\r\n    </section>\r\n  </div>\r\n  <div *ngIf=\"!fileList.length && !hasProgress && errorMsg\">\r\n    <section>\r\n      <div class=\"notification-wrapper total-box\">\r\n        <div class=\"title\">\r\n          <img src=\"./assets/images/layout/error.png\" alt=\"\">\r\n          <span class=\"tip-text\">导入失败</span>\r\n        </div>\r\n        <div class=\"content\">\r\n          <span *ngIf=\"errorMsg\">{{ errorMsg }}</span>\r\n        </div>\r\n      </div>\r\n    </section>\r\n  </div>\r\n</div>\r\n","styles":[":host ::ng-deep .ant-progress-text{display:none}:host ::ng-deep .ant-progress-outer{margin-right:0!important;padding-right:0!important}:host ::ng-deep .ant-progress-inner{background:#dcdde9}:host ::ng-deep nz-upload{cursor:pointer}:host ::ng-deep .warning-text{color:rgba(163,133,57,.85)}:host ::ng-deep .icc-upload .upload-box{margin:20px 0;width:85%}:host ::ng-deep .icc-upload .upload-box .show-input{background:#fff;color:#49536e;height:30px;font-size:14px}:host ::ng-deep .icc-upload .limit-size{color:#abb4cf;margin-top:8px;font-size:12px}:host ::ng-deep .icc-upload .file-list{list-style:none;padding:0;margin:0}:host ::ng-deep .icc-upload .file-list .file-item{display:flex;align-items:center;justify-content:space-between;margin:8px 0;padding:5px;border-radius:2px;cursor:pointer}:host ::ng-deep .icc-upload .file-list .file-item:hover{background:#f0f1f9}:host ::ng-deep .icc-upload .file-list .file-item .left{display:flex;align-items:center;justify-content:center;cursor:pointer}:host ::ng-deep .icc-upload .file-list .file-item .left i{font-size:16px;margin-right:10px;color:#4880ff}:host ::ng-deep .icc-upload .file-list .file-item .right{cursor:pointer}:host ::ng-deep .icc-upload .progress-box{background:#f0f1f9;padding:10px 20px;margin-bottom:10px;font-size:12px;border-radius:2px}:host ::ng-deep .icc-upload .float-left{float:left}:host ::ng-deep .icc-upload .float-right{float:right}:host ::ng-deep .icc-upload .total-box{width:100%;padding:8px 8px 2px;background:#f0f1f9;border-radius:2px}:host ::ng-deep .icc-upload .total-box .content{padding:0 0 5px 42px}"]}]}],"members":{"accept":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"action":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"beforeUpload":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"customRequest":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"fileType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"withCredentials":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"handleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"percent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"status":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"exampleUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"hasProgress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":43,"character":3}}]}],"totalCount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"successCount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"logUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"showReason":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"errorMsg":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"change":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"EmptyDataComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-empty-data","styles":[],"template":"<p style=\"display: flex; flex-direction: column;align-items: center; height: 180px; margin: 40px 0 20px;\">\r\n  <img src=\"assets/images/nothing/put.png\" alt=\"\" />\r\n  <span style=\"display: block;font-size: 14px; margin-left: 30px; margin-top: 10px;color: #999;\">{{ text }}</span>\r\n</p>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccFunnelVoiceSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-funnel-voice-send","template":"<p class=\"chart-title\">\r\n  语音消息发送漏斗图\r\n</p>\r\n<div class=\"chart-el\"></div>\r\n","styles":[":host{display:block}.chart-title{text-align:center;font-size:18px;font-weight:700}.chart-el{width:100%;height:500px;margin-top:60px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":8,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]}},"IccRadioMsgSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-radio-msg-send","template":"<p class=\"chart-tilte\">各消息类型发送占比</p>\r\n<p class=\"msg-more\" *ngIf=\"data && 0 === reportType && maxRatioName && !noData\">\r\n  本周使用<a>【{{ maxRatioName }}】</a>发送的消息更多\r\n</p>\r\n<p class=\"msg-more\" *ngIf=\"data && 1 === reportType && maxRatioName && !noData\">\r\n  本月使用<a>【{{ maxRatioName }}】</a>发送的消息更多\r\n</p>\r\n<p class=\"msg-more\" *ngIf=\"data && 2 === reportType && maxRatioName && !noData\">\r\n  使用<a>【{{ maxRatioName }}】</a>发送的消息更多\r\n</p>\r\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length && !noData\">\r\n  <div class=\"chart-el\"></div>\r\n  <ul class=\"legend-tip\">\r\n    <li *ngFor=\"let item of pieData; let i = index\" class=\"legend-item\">\r\n      <span class=\"legend-block\" [ngStyle]=\"{ 'background-color': colorList[i] }\"></span>\r\n      <span class=\"legend-name\">{{ item.name }}</span>\r\n      <span class=\"legend-ratio\">{{ item.radio }}%</span>\r\n      <span class=\"legend-value\">{{ item.valueStr }}</span>\r\n      <img class=\"rank-icon\" *ngIf=\"item.ranking === 1\" src=\"./assets/images/report/rank_up.png\" />\r\n      <img class=\"rank-icon\" *ngIf=\"item.ranking === 2\" src=\"./assets/images/report/rank_down.png\" />\r\n      <span *ngIf=\"item.ranking === 0\">-</span>\r\n    </li>\r\n  </ul>\r\n</div>\r\n<app-empty-data *ngIf=\"!data || !data.length  || noData\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-tilte{text-align:center;font-size:18px;font-weight:700}.msg-more{text-align:center;font-size:16px}.chart-wrapper{width:100%;height:450px;margin-top:-50px;margin-bottom:-75px}.chart-wrapper .chart-el{float:left;width:60%;height:100%}.chart-wrapper .legend-tip{float:right;margin-top:25%;width:40%;list-style:none}.chart-wrapper .legend-tip .legend-item{height:100%;line-height:100%;margin-bottom:10px}.chart-wrapper .legend-tip .legend-item .legend-block{width:10px;height:10px;display:inline-block;margin-right:20px}.chart-wrapper .legend-tip .legend-item .legend-name{width:115px;padding-right:0;display:inline-block;vertical-align:bottom}.chart-wrapper .legend-tip .legend-item .legend-ratio{width:60px;padding-right:20px;display:inline-block}.chart-wrapper .legend-tip .legend-item .legend-value{margin-right:10px;display:inline-block;width:60px;text-align:right}.chart-wrapper .legend-tip .legend-item .rank-icon{width:6px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":11,"character":26}]}],"reportType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]}},"IccRadioSmsChannelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-radio-sms-channel","template":"<p class=\"chart-tilte\">\r\n  短信渠道发送占比\r\n</p>\r\n<div class=\"content-panel\" *ngIf=\"data && data.length\">\r\n  <div class=\"chart-wrapper\">\r\n    <div id=\"icc-radio-sms-channel-chart-id\" class=\"chart-el\"></div>\r\n    <ul class=\"legend-tip\">\r\n      <li *ngFor=\"let item of pieData; let i = index\" class=\"legend-item\">\r\n        <span class=\"legend-block\" [ngStyle]=\"{ 'background-color': colorList[i] }\"></span>\r\n        <span class=\"legend-name text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\r\n        <span class=\"legend-ratio\">{{ item.radio }}%</span>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n  <ul class=\"rank-list\">\r\n    <li class=\"rank-row rank-header\">\r\n      <span class=\"row-item\">排名</span>\r\n      <span class=\"row-item\">渠道名称</span>\r\n      <span class=\"row-item\">占比</span>\r\n      <span class=\"row-item\">发送量</span>\r\n      <span class=\"row-item\">成功率</span>\r\n    </li>\r\n    <li class=\"rank-row\" *ngFor=\"let item of pieData; let i = index\">\r\n      <span class=\"row-item\"><img [src]=\"'./assets/images/home/ranking' + (i + 1) + '.png'\"/></span>\r\n      <span class=\"row-item text-ellipsis\" [nzTooltipTitle]=\"item.name\" nzTooltipPlacement=\"top\" nz-tooltip>{{ item.name }}</span>\r\n      <span class=\"row-item text-ellipsis\">{{ item.radio }}</span>\r\n      <span class=\"row-item text-ellipsis\">{{ item.valueStr }}</span>\r\n      <span class=\"row-item text-ellipsis\">{{ item.success }}%</span>\r\n    </li>\r\n  </ul>\r\n</div>\r\n<app-empty-data *ngIf=\"!data || !data.length\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-tilte{text-align:center;font-size:18px;font-weight:700}.content-panel{height:340px}.content-panel .chart-wrapper{float:left;width:50%;height:280px}.content-panel .chart-wrapper .chart-el{float:left;width:60%;height:100%}.content-panel .chart-wrapper .legend-tip{float:right;margin-top:30%;width:40%;list-style:none;padding:0}.content-panel .chart-wrapper .legend-tip .legend-item{height:14px;line-height:14px;margin-bottom:10px}.content-panel .chart-wrapper .legend-tip .legend-item .legend-block{width:10px;height:10px;display:inline-block;margin-right:10px;margin-bottom:2px}.content-panel .chart-wrapper .legend-tip .legend-item .legend-name{width:100px;display:inline-block}.content-panel .chart-wrapper .legend-tip .legend-item .legend-ratio{width:40px;display:inline-block;margin-bottom:5px}.content-panel .rank-list{float:right;margin-top:12%;width:50%;list-style:none;padding:0;border:1px solid #ebecf0;border-bottom:0}.content-panel .rank-list .rank-row{border-bottom:1px solid #ebecf0;height:30px;line-height:30px}.content-panel .rank-list .rank-row .row-item{text-align:center;display:inline-block;width:82px}.content-panel .rank-list .rank-row .row-item img{width:30px;margin-top:-22px}.content-panel .rank-list .rank-header{background-color:#ebecf0;font-weight:600}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]}},"IccReportComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"icc-report","template":"<!-- <div class=\"report-wrapper\" id=\"report-id\">\r\n  <div class=\"report-panel\"> -->\r\n<div class=\"report-logo\"><img src=\"./assets/images/report/logo.png\" /> 融合通信中台</div>\r\n<div class=\"report-header\">\r\n  <div class=\"info-layout\">\r\n    <span class=\"name\" *ngIf=\"reportType === 0\">运营周报</span>\r\n    <span class=\"name\" *ngIf=\"reportType === 1\">{{ month }}月&nbsp;运营月报</span>\r\n    <span class=\"name\" *ngIf=\"reportType === 2\">运营报表</span>\r\n    <span class=\"time\">{{ startDate }}-{{ endDate }}</span>\r\n  </div>\r\n</div>\r\n<div class=\"report-content\" *ngIf=\"showContent\">\r\n  <ng-container *ngFor=\"let id of viewIds; let i = index\">\r\n    <nz-divider *ngIf=\"i === 0\" nzText=\"发送数据总览\" id=\"viewid\"></nz-divider>\r\n    <!-- 总发送量 -->\r\n    <icc-total-send id=\"reportMode1\" [reportType]=\"reportType\" [count]=\"reportMode1.count\" [ringRatio]=\"reportMode1.ringRatio\" [sameRatio]=\"reportMode1.sameRatio\" [successRatio]=\"reportMode1.successRatio\" *ngIf=\"reportConstant.TOTAL_SEND.id === id\"></icc-total-send>\r\n\r\n    <!-- 发送趋势图 -->\r\n    <icc-trend-send id=\"reportMode2\" title=\"发送趋势\" [reportType]=\"reportType\" [dateList]=\"reportMode2.dateList\" [receiveList]=\"reportMode2.receiveList\" [sendList]=\"reportMode2.sendList\" [ratioList]=\"reportMode2.ratioList\" *ngIf=\"reportConstant.TREND_SEND.id === id\"></icc-trend-send>\r\n\r\n    <!-- 各消息类型发送占比 -->\r\n    <icc-radio-msg-send id=\"reportMode3\" [reportType]=\"reportType\" [data]=\"reportMode3\" *ngIf=\"reportConstant.RATIO_MSG_SEND.id === id\"></icc-radio-msg-send>\r\n\r\n    <!-- 业务类型发送量top5 -->\r\n    <icc-total-biztype-send id=\"reportMode4\" [data]=\"reportMode4\" *ngIf=\"reportConstant.TOTAL_BIZTYPE_SEND.id === id\"> </icc-total-biztype-send>\r\n\r\n    <nz-divider *ngIf=\"i !== viewIds.length - 1\" nzDashed=\"true\" class=\"horiz-line\"></nz-divider>\r\n  </ng-container>\r\n\r\n  <ng-container *ngFor=\"let id of totalIds; let i = index\">\r\n    <nz-divider *ngIf=\"i === 0\" nzText=\"消息类型发送数据统计\" id=\"totalid\"></nz-divider>\r\n    <!-- 短信发送趋势 -->\r\n    <icc-trend-send id=\"reportMode5\" title=\"短信发送趋势\" [reportType]=\"reportType\" [dateList]=\"reportMode5.dateList\" [receiveList]=\"reportMode5.receiveList\" [sendList]=\"reportMode5.sendList\" [ratioList]=\"reportMode5.ratioList\" *ngIf=\"reportConstant.TREND_SMS_SEND.id === id\"></icc-trend-send>\r\n\r\n    <!-- 短信渠道发送占比 -->\r\n    <icc-radio-sms-channel id=\"reportMode6\" [data]=\"reportMode6\" *ngIf=\"reportConstant.RATIO_SMS_CHANNEL.id === id\"></icc-radio-sms-channel>\r\n\r\n    <!-- 短信上行统计 -->\r\n    <icc-total-mo-sms id=\"reportMode7\" [data]=\"reportMode7\" *ngIf=\"reportConstant.TOTAL_MO_SMS.id === id\"></icc-total-mo-sms>\r\n\r\n    <ng-container *ngFor=\"let item of reportMode8; let w = index\">\r\n      <ng-container *ngIf=\"reportConstant.TOTAL_WECHAT_FANS.id === id\">\r\n        <!-- 微信头部样式 -->\r\n        <div class=\"wechat-header\" [id]=\"'reportMode8' + w\">\r\n          <span class=\"img-box\" *ngIf=\"item.officialAccount.icon\">\r\n            <img [src]=\"item.officialAccount.icon\" />\r\n          </span>\r\n          <span class=\"wechat-name\">{{ item.officialAccount.name }}</span>\r\n        </div>\r\n        <!-- 微信粉丝 -->\r\n        <icc-total-wechat-fans [data]=\"item.fans\"></icc-total-wechat-fans>\r\n      </ng-container>\r\n    </ng-container>\r\n\r\n    <ng-container *ngFor=\"let item of reportMode9; let w = index\">\r\n      <ng-container *ngIf=\"reportConstant.TREND_WECHAT_INDICATOR.id === id\">\r\n        <!-- 微信头部样式 -->\r\n        <div class=\"wechat-header\" [id]=\"'reportMode9' + w\">\r\n          <span class=\"img-box\" *ngIf=\"item.officialAccount.icon\">\r\n            <img [src]=\"item.officialAccount.icon\" />\r\n          </span>\r\n          <span class=\"wechat-name\">{{ item.officialAccount.name }}</span>\r\n        </div>\r\n        <!-- 微信关键指标趋势 -->\r\n        <icc-trend-wechat-indicator [data]=\"item.indicator\"> </icc-trend-wechat-indicator>\r\n      </ng-container>\r\n    </ng-container>\r\n\r\n    <!-- 邮件发送趋势 -->\r\n    <icc-trend-send id=\"reportMode10\" title=\"邮件发送趋势\" [reportType]=\"reportType\" [dateList]=\"reportMode10.dateList\" [receiveList]=\"reportMode10.receiveList\" [sendList]=\"reportMode10.sendList\" [ratioList]=\"reportMode10.ratioList\" *ngIf=\"reportConstant.TREND_EMAIL_SEND.id === id\"></icc-trend-send>\r\n\r\n    <!-- 邮件上行统计 -->\r\n    <icc-total-mo-email id=\"reportMode11\" [data]=\"reportMode11\" *ngIf=\"reportConstant.TOTAL_MO_EMAIL.id === id\"></icc-total-mo-email>\r\n\r\n    <!-- 语音通话时长趋势图 -->\r\n    <icc-trend-voice-time id=\"reportMode12\" [reportType]=\"reportType\" [AllTalkTime]=\"reportMode12.AllTalkTime\" [dayTalkTime]=\"reportMode12.dayTalkTime\" [data]=\"reportMode12.list\" *ngIf=\"reportConstant.TREND_VOICE_TIME.id === id\"> </icc-trend-voice-time>\r\n\r\n    <!-- 语音消息发送漏斗图 -->\r\n    <icc-funnel-voice-send id=\"reportMode13\" [data]=\"reportMode13\" *ngIf=\"reportConstant.FUNNEL_VOICE_SEND.id === id\"> </icc-funnel-voice-send>\r\n    <nz-divider *ngIf=\"i !== totalIds.length - 1\" nzDashed=\"true\" class=\"horiz-line\"></nz-divider>\r\n  </ng-container>\r\n  <!-- <div nz-col nzSpan=\"2\" nzOffset=\"1\" nzOffsetTop=\"100\" class=\"anchor-wrapper\">\r\n        <icc-anchor [fatherId]=\"'report-id'\" [scrollId]=\"'report-id'\" [list]=\"anchorList\" [isChangeClass]=\"false\"> </icc-anchor>\r\n      </div> -->\r\n  <div *ngIf=\"type === 1\" style=\"float: right;\"><span style=\"font-size: 5px;color: #9ea8c8;\">注：由于报表的数据获取存在一定时间差，报表结果与系统实时展示数据可能存在一定误差</span></div>\r\n</div>\r\n<!-- </div>\r\n</div> -->\r\n","styles":[":host{display:block;margin:30px auto;width:965px;box-shadow:1;box-shadow:0 0 6px 2px rgba(0,0,0,.16)}.ant-divider-horizontal.ant-divider-with-text-center::after,.ant-divider-horizontal.ant-divider-with-text-center::before,.ant-divider-horizontal.ant-divider-with-text-left::after,.ant-divider-horizontal.ant-divider-with-text-left::before,.ant-divider-horizontal.ant-divider-with-text-right::after,.ant-divider-horizontal.ant-divider-with-text-right::before{border-top:1px solid #007fff;transform:translateY(51%);-webkit-transform:translateY(51%);-ms-transform:translateY(51%)}.ant-divider-horizontal.ant-divider-with-text-center{margin:55px 0;font-size:30px;color:#007fff}.report-logo{padding-left:20px;width:100%;height:60px;line-height:60px;font-weight:600;font-size:20px;color:#000}.report-logo img{margin-right:10px}.report-header{position:relative;padding-left:11.458%;height:264px;background-image:url(../../../../../assets/images/report/report-header.png);background-repeat:no-repeat;background-position:center;background-size:100%}.report-header .info-layout{position:absolute;top:50%;margin-top:-75px;width:350px;height:130px}.report-header .info-layout .name{display:block;margin-bottom:10px;font-weight:500;font-size:50px;color:#fff;letter-spacing:3px}.report-header .info-layout .time{display:block;border-radius:30px;height:40px;background-color:#fff;line-height:38px;text-align:center;font-weight:400;font-size:28px;color:#007fff}.report-content{margin:0 7.3%;padding-bottom:50px}.report-content .horiz-line{margin:35px 0 48px}.report-content .wechat-header{margin-top:60px;margin-bottom:70px;padding-left:10px;width:100%;height:70px;background-image:url(../../../../../assets/images/report/header-bg.png);background-repeat:no-repeat;background-position:center;background-size:100%;line-height:70px;font-size:18px;color:#fff}.report-content .wechat-header .img-box{display:inline-block;margin-right:0;padding-left:3px;border:2px solid #abcaff;border-radius:4px;width:50px;height:50px;background:#fff;line-height:50px}.report-content .wechat-header .wechat-name{margin-left:10px}.report-content .anchor-wrapper{position:fixed;right:100px;bottom:0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MsgPluginFilterService"},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":15,"character":83},{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":15,"character":152}]}],"reportIds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"reportType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"endDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"clear":[{"__symbolic":"method"}],"loadReportData":[{"__symbolic":"method"}],"setWechatFans":[{"__symbolic":"method"}],"setWechatIndicator":[{"__symbolic":"method"}],"getTwoPartIds":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"getEmailTrend":[{"__symbolic":"method"}],"getVoiceTrend":[{"__symbolic":"method"}],"requestReportData":[{"__symbolic":"method"}],"onBack":[{"__symbolic":"method"}]}},"IccTotalBiztypeSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"icc-total-biztype-send","template":"<p class=\"chart-tilte\">\r\n  业务类型发送量TOP5\r\n</p>\r\n<div class=\"chart-wrapper\" *ngIf=\"data && data.length\">\r\n  <div class=\"chart-el\"></div>\r\n  <ul class=\"legend-tip\">\r\n    <li *ngFor=\"let item of innerPieData; let i = index\" class=\"legend-item\">\r\n      <span class=\"legend-block\" [ngStyle]=\"{ 'background-color': innerColors[i] }\"></span>\r\n      <span class=\"legend-name text-ellipsis\">{{ item.name }}</span>\r\n      <span class=\"legend-ratio\">{{ item.radio }}%</span>\r\n      <span class=\"legend-value\">{{ item.valueStr }}</span>\r\n      <img class=\"rank-icon\" *ngIf=\"item.ranking === 1\" src=\"./assets/images/report/rank_up.png\" />\r\n      <img class=\"rank-icon\" *ngIf=\"item.ranking === 2\" src=\"./assets/images/report/rank_down.png\" />\r\n      <span *ngIf=\"item.ranking === 0\">-</span>\r\n    </li>\r\n  </ul>\r\n</div>\r\n<app-empty-data *ngIf=\"!data || !data.length\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-tilte{text-align:center;font-size:18px;font-weight:700}.chart-wrapper{width:100%;height:500px;margin-top:-30px}.chart-wrapper .chart-el{float:left;width:60%;height:100%}.chart-wrapper .legend-tip{float:right;margin-top:25%;width:40%;list-style:none}.chart-wrapper .legend-tip .legend-item{height:100%;line-height:100%;margin-bottom:10px}.chart-wrapper .legend-tip .legend-item .legend-block{width:10px;height:10px;display:inline-block;margin-right:20px}.chart-wrapper .legend-tip .legend-item .legend-name{width:115px;padding-right:0;display:inline-block}.chart-wrapper .legend-tip .legend-item .legend-ratio{width:60px;padding-right:20px;display:inline-block}.chart-wrapper .legend-tip .legend-item .legend-value{margin-right:10px;display:inline-block;width:60px;text-align:right}.chart-wrapper .legend-tip .legend-item .rank-icon{width:6px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":11,"character":26}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatPieData":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]}},"IccTotalMoEmailComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-total-mo-email","template":"<p class=\"total-tilte\">\r\n  邮件上行统计\r\n</p>\r\n<div class=\"total-panel\">\r\n  <div class=\"top-content\">\r\n    <div class=\"total-item left-box\">\r\n      <span class=\"icon-bg\">\r\n        <img class=\"icon\" src=\"assets/images/report/sms.png\" />\r\n      </span>\r\n      <div class=\"info-box\">\r\n        <p class=\"count\">{{ viewData.count }}</p>\r\n        <p class=\"text\">邮件上行数量</p>\r\n      </div>\r\n    </div>\r\n    <div class=\"total-item right-box\">\r\n      <span class=\"icon-bg\">\r\n        <img src=\"assets/images/report/sms.png\" />\r\n      </span>\r\n      <div class=\"info-box\">\r\n        <p class=\"count\">{{ viewData.users }}</p>\r\n        <p class=\"text\">邮件上行用户数量</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"bottom-content\">\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行关键字数量</span>\r\n      <span class=\"text\">{{ viewData.keywords }}条</span>\r\n    </div>\r\n    <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行其他内容数量</span>\r\n      <span class=\"text\">{{ viewData.others }}条</span>\r\n    </div>\r\n    <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行回复数量</span>\r\n      <span class=\"text\">{{ viewData.replies }}条</span>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:block}.total-tilte{text-align:center;font-size:18px;font-weight:700;margin-bottom:65px}.total-panel{width:78%;margin:0 11%}.total-panel .top-content .left-box{width:300px;margin-right:40px}.total-panel .top-content .right-box{width:300px}.total-panel .top-content .total-item{display:inline-block;width:300px;height:100px;background-color:#e5f3ff;border-radius:4px;position:relative}.total-panel .top-content .total-item .icon-bg{display:inline-block;width:100px;height:100px;position:relative;background-color:#34a3ff;border-radius:4px}.total-panel .top-content .total-item .icon-bg img{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto}.total-panel .top-content .total-item .info-box{display:inline-block;text-align:left;position:absolute;top:10px;padding-left:15px}.total-panel .top-content .total-item .info-box .count{font-size:28px;color:#34a3ff;margin-top:10px;margin-bottom:0}.total-panel .top-content .total-item .info-box .text{margin:0}.total-panel .bottom-content{margin-top:55px}.total-panel .bottom-content .text-area{display:inline-block;width:30%;text-align:center;margin:0}.total-panel .bottom-content .text-area .count{display:block}.total-panel .bottom-content .text-area .text{display:block;font-size:28px;color:#34a3ff}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px;height:50px;border-color:#dadada}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccTotalMoSmsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-total-mo-sms","template":"<p class=\"total-tilte\">\r\n  短信上行统计\r\n</p>\r\n<div class=\"total-panel\">\r\n  <div class=\"top-content\">\r\n    <div class=\"total-item left-box\">\r\n      <span class=\"icon-bg\">\r\n        <img class=\"icon\" src=\"assets/images/report/sms.png\" />\r\n      </span>\r\n      <div class=\"info-box\">\r\n        <p class=\"count\">{{ viewData.count }}</p>\r\n        <p class=\"text\">短信上行数量</p>\r\n      </div>\r\n    </div>\r\n    <div class=\"total-item right-box\">\r\n      <span class=\"icon-bg\">\r\n        <img src=\"assets/images/report/sms.png\" />\r\n      </span>\r\n      <div class=\"info-box\">\r\n        <p class=\"count\">{{ viewData.users }}</p>\r\n        <p class=\"text\">短信上行用户数量</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"bottom-content\">\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行退订数量</span>\r\n      <span class=\"text\">{{ viewData.unsubscribe }}条</span>\r\n    </div>\r\n    <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行关键字数量</span>\r\n      <span class=\"text\">{{ viewData.keywords }}条</span>\r\n    </div>\r\n    <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n    <div class=\"text-area\">\r\n      <span class=\"count\">上行其他内容数量</span>\r\n      <span class=\"text\">{{ viewData.others }}条</span>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:block}.total-tilte{text-align:center;font-size:18px;font-weight:700;margin-bottom:65px}.total-panel{width:78%;margin:0 11%}.total-panel .top-content .left-box{width:300px;margin-right:40px}.total-panel .top-content .right-box{width:300px}.total-panel .top-content .total-item{display:inline-block;width:300px;height:100px;background-color:#e5f3ff;border-radius:4px;position:relative}.total-panel .top-content .total-item .icon-bg{display:inline-block;width:100px;height:100px;position:relative;background-color:#34a3ff;border-radius:4px}.total-panel .top-content .total-item .icon-bg img{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto}.total-panel .top-content .total-item .info-box{display:inline-block;text-align:left;position:absolute;top:10px;padding-left:15px}.total-panel .top-content .total-item .info-box .count{font-size:28px;color:#34a3ff;margin-top:10px;margin-bottom:0}.total-panel .top-content .total-item .info-box .text{margin:0}.total-panel .bottom-content{margin-top:55px}.total-panel .bottom-content .text-area{display:inline-block;width:30%;text-align:center;margin:0}.total-panel .bottom-content .text-area .count{display:block}.total-panel .bottom-content .text-area .text{display:block;font-size:28px;color:#34a3ff}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px;height:50px;border-color:#dadada}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccTotalSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-total-send","template":"<p class=\"total-name\" *ngIf=\"reportType === 0 || reportType === 1\">{{ reportType ? '月' : '周' }}总提交量</p>\r\n<p class=\"total-name\" *ngIf=\"reportType === 2\">总提交量</p>\r\n<div class=\"number-area\">\r\n  <ng-container *ngFor=\"let numStr of numList\">\r\n    <span *ngIf=\"numStr !== ','\" class=\"number-box\">{{ numStr }}</span>\r\n    <span *ngIf=\"numStr === ','\" class=\"dot-box\">{{ numStr }}</span>\r\n  </ng-container>\r\n</div>\r\n<div class=\"chart-data\">\r\n  <div class=\"test-box\">\r\n    <div class=\"ib\">\r\n      <nz-progress *ngIf=\"successRatio\" nzType=\"circle\" [nzPercent]=\"successRatio\" [nzWidth]=\"85\" [nzStrokeColor]=\"{ '0%': '#108ee9', '50%': '#2db7f5', '100%': '#87d068' }\"></nz-progress>\r\n    </div>\r\n    <div class=\"ib text-area\">\r\n      <p>\r\n        <span>{{ successRatio || 0 }}</span>%\r\n      </p>\r\n      <p>成功率</p>\r\n    </div>\r\n  </div>\r\n  <div class=\"test-box\">\r\n    <div class=\"ib\">\r\n      <img *ngIf=\"ringRatioNum < 0\" src=\"./assets/images/report/rank_down.png\" />\r\n      <img *ngIf=\"ringRatioNum > 0\" src=\"./assets/images/report/rank_up.png\" />\r\n      <img *ngIf=\"ringRatio  && ringRatio === '0'\" src=\"./assets/images/report/equal.png\" />\r\n    </div>\r\n    <div class=\"ib text-area\">\r\n      <p *ngIf=\"ringRatio && ringRatio !== '0'\">\r\n        <span>{{ ringRatio }}</span\r\n        >%\r\n      </p>\r\n      <p *ngIf=\"!ringRatio && ringRatio === '0'\"><span>持平</span></p>\r\n      <p *ngIf=\"!ringRatio\"><span>-</span></p>\r\n      <p>环比</p>\r\n    </div>\r\n  </div>\r\n  <div class=\"test-box\">\r\n    <div class=\"ib\">\r\n      <img *ngIf=\"sameRatioNum < 0\" src=\"./assets/images/report/rank_down.png\" />\r\n      <img *ngIf=\"sameRatioNum > 0\" src=\"./assets/images/report/rank_up.png\" />\r\n      <img *ngIf=\"sameRatio  && sameRatio === '0'\" src=\"./assets/images/report/equal.png\" />\r\n    </div>\r\n    <div class=\"ib text-area\">\r\n      <p *ngIf=\"sameRatio && sameRatio !== '0'\">\r\n        <span>{{ sameRatio }}</span\r\n        >%\r\n      </p>\r\n      <p *ngIf=\"sameRatio && sameRatio === '0'\"><span>持平</span></p>\r\n      <p *ngIf=\"!sameRatio\"><span>-</span></p>\r\n      <p>同比</p>\r\n    </div>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:block}.total-name{margin-bottom:35px;font-weight:700;font-size:18px;text-align:center}.number-area{text-align:center;height:66px;line-height:66px}.number-area .number-box{width:42px;height:66px;color:#007fff;font-weight:700;font-size:50px;line-height:62px;text-align:center;margin-right:9px;margin-left:9px;padding-left:5px;padding-right:5px}.number-area .dot-box{width:42px;height:66px;margin-right:-18px;color:#007fff;font-weight:500;font-size:50px;line-height:62px;text-align:center}.ant-divider-vertical.ant-divider-dashed{height:85px;border-color:#dadada;border-width:0 0 0 1px}.test-box{display:inline-block;width:33.33%;text-align:center;vertical-align:top;border-right:1px dashed #dcdcdc;margin-top:55px;padding-left:10px}.test-box:last-child{border-right:none}.ib{display:inline-block;vertical-align:middle}.test-box .text-area{padding-left:20px}.test-box .text-area p:nth-of-type(1){margin-bottom:-6px}.test-box .text-area p:nth-of-type(1) span{color:#3f3f41;font-weight:500;font-size:35px}.test-box .text-area p:nth-of-type(2){margin-bottom:0;font-size:20px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"reportType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"count":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"successRatio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ringRatio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"sameRatio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}]}},"IccTotalWechatFansComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-total-wechat-fans","template":"<p class=\"total-tilte\">\r\n  微信粉丝\r\n</p>\r\n<div class=\"content\">\r\n  <div class=\"text-area\">\r\n    <span class=\"text\">{{ viewData.follow }}条</span>\r\n    <span class=\"count\">累计关注粉丝数量</span>\r\n    <span *ngIf=\"viewData.compare.follow !== 0\" class=\"compare\">\r\n      <img *ngIf=\"viewData.compare.follow < 0\" src=\"assets/images/report/rank_down.png\" />\r\n      <img *ngIf=\"viewData.compare.follow > 0\" src=\"assets/images/report/rank_up.png\" />\r\n      {{ viewData.compare.follow > 0 ? viewData.compare.follow : -viewData.compare.follow }}%\r\n    </span>\r\n    <span *ngIf=\"viewData.compare.follow === 0\" class=\"compare\">-</span>\r\n  </div>\r\n  <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n  <div class=\"text-area\">\r\n    <span class=\"text\">{{ viewData.new }}条</span>\r\n    <span class=\"count\">新增关注粉丝数量</span>\r\n    <span *ngIf=\"viewData.compare.new !== 0\" class=\"compare\">\r\n      <img *ngIf=\"viewData.compare.new < 0\" src=\"assets/images/report/rank_down.png\" />\r\n      <img *ngIf=\"viewData.compare.new > 0\" src=\"assets/images/report/rank_up.png\" />\r\n      {{ viewData.compare.new > 0 ? viewData.compare.new : -viewData.compare.new }}%\r\n    </span>\r\n    <span *ngIf=\"viewData.compare.new === 0\" class=\"compare\">-</span>\r\n  </div>\r\n  <nz-divider nzType=\"vertical\" nzDashed=\"true\"></nz-divider>\r\n  <div class=\"text-area\">\r\n    <span class=\"text\">{{ viewData.unfollow }}条</span>\r\n    <span class=\"count\">取消关注粉丝数量</span>\r\n    <span *ngIf=\"viewData.compare.unfollow !== 0\" class=\"compare\">\r\n      <img *ngIf=\"viewData.compare.unfollow < 0\" src=\"assets/images/report/rank_down.png\" />\r\n      <img *ngIf=\"viewData.compare.unfollow > 0\" src=\"assets/images/report/rank_up.png\" />\r\n      {{ viewData.compare.unfollow > 0 ? viewData.compare.unfollow : -viewData.compare.unfollow }}%\r\n    </span>\r\n    <span *ngIf=\"viewData.compare.unfollow === 0\" class=\"compare\">-</span>\r\n  </div>\r\n</div>\r\n","styles":[":host{display:block}.total-tilte{text-align:center;font-size:18px;font-weight:700;margin-bottom:60px;margin-top:50px}.content{width:78%;margin:55px 11% 0}.content .text-area{display:inline-block;width:30%}.content .text-area .count{display:block;margin-bottom:-6px;text-align:center}.content .text-area .text{display:block;text-align:center;font-size:28px;color:#34a3ff}.content .text-area .compare{display:block;text-align:center;margin-top:8px;font-size:16px}.content .text-area .compare img{width:6px;margin-right:10px;margin-top:3px}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px;height:50px;border-color:#dadada}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"IccTrendSendComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-trend-send","template":"<p class=\"chart-title\">\r\n    {{ title }}\r\n</p>\r\n<div class=\"chart-el\" *ngIf=\"dateList && dateList.length\"></div>\r\n\r\n<div class=\"text-tip\" *ngIf=\"dateList && dateList.length\">\r\n    <p class=\"tip-item\">[成功率]: 成功量 / 提交量 * 100%</p>\r\n    <p class=\"tip-item\">[接收量]: 平台接收到待发送消息的数量</p>\r\n    <p class=\"tip-item\">[提交量]: 平台提交到运营商的消息数</p>\r\n</div>\r\n\r\n<app-empty-data *ngIf=\"!dateList || !dateList.length\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-title{text-align:center;font-size:18px;font-weight:700;margin-bottom:35px}.chart-el{width:100%;height:500px}.text-tip{padding:6px 0 10px 10%}.text-tip .tip-item{margin-bottom:5px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":8,"character":26}]}],"reportType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"dateList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"receiveList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"sendList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"ratioList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"changeYaxisUnit":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatRatioList":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}],"getSeries":[{"__symbolic":"method"}]}},"IccTrendVoiceTimeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"icc-trend-voice-time","template":"<p class=\"chart-title\">\r\n  语音通话时长趋势\r\n</p>\r\n<div class=\"content\" *ngIf=\"data && data.length\">\r\n  <div class=\"text-area\">\r\n    <span class=\"text\">{{ AllTalkTime }}</span>\r\n    <span class=\"count\">本{{ reportType ? '月' : '周' }}总通话时长</span>\r\n  </div>\r\n  <nz-divider nzType=\"vertical\" nzDashed=\"true\" class=\"divider-in\"></nz-divider>\r\n  <div class=\"text-area\">\r\n    <span class=\"text\">{{ dayTalkTime }}</span>\r\n    <span class=\"count\">日均通话时长</span>\r\n  </div>\r\n</div>\r\n<div class=\"chart-el\" *ngIf=\"data && data.length\"></div>\r\n<app-empty-data *ngIf=\"!data || !data.length\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-title{text-align:center;font-size:18px;font-weight:700}.chart-el{width:100%;height:500px;margin-top:60px}.content{width:78%;margin:0 11%}.content .divider-in{display:inline-block;width:2%;margin-top:-40px}.content .text-area{display:inline-block;width:47%}.content .text-area .count{display:block;text-align:center;margin-bottom:-6px}.content .text-area .text{display:block;text-align:center;font-size:28px;color:#34a3ff}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px;height:50px;border-color:#dadada}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":9,"character":26}]}],"reportType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"AllTalkTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"dayTalkTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatData":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}],"getSeries":[{"__symbolic":"method"}]}},"IccTrendWechatIndicatorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"icc-trend-wechat-indicator","template":"<p class=\"chart-title\">\r\n  微信关键指标趋势\r\n</p>\r\n<div class=\"chart-el\" *ngIf=\"data && data.length\"></div>\r\n\r\n<app-empty-data *ngIf=\"!data || !data.length\"></app-empty-data>\r\n","styles":[":host{display:block}.chart-title{text-align:center;font-size:18px;font-weight:700}.chart-el{width:100%;height:500px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":8,"character":26}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"formatData":[{"__symbolic":"method"}],"createLineChart":[{"__symbolic":"method"}]}},"WechatRefComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">{{ title }}</div>\r\n</div>\r\n<nz-card class=\"model-content-scroll\" style=\"border: 0;\">\r\n  <ng-container *ngIf=\"!isEdit\">\r\n    <form nz-form [nzLayout]=\"'inline'\" class=\"search__form\">\r\n      <div nz-row [nzGutter]=\"{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }\">\r\n        <div nz-col nzSpan=\"8\" style=\"float:right;\">\r\n          <nz-form-item>\r\n            <nz-input-group nzSearch [nzAddOnAfter]=\"suffixIconButton\">\r\n              <input type=\"text\" nz-input [(ngModel)]=\"searchParams.title\" name=\"templateName\" placeholder=\"请输入模板标题\" />\r\n              <ng-template #suffixIconButton>\r\n                <button nz-button nzType=\"primary\" nzSearch (click)=\"search()\"><i nz-icon nzType=\"search\"></i></button>\r\n              </ng-template>\r\n            </nz-input-group>\r\n          </nz-form-item>\r\n        </div>\r\n      </div>\r\n    </form>\r\n\r\n    <st #st [data]=\"url\" [columns]=\"columns\" [req]=\"req\">\r\n      <ng-template st-row=\"titleTemp\" let-item let-index=\"index\">\r\n        <span nz-tooltip [nzTooltipTitle]=\"item.title\">{{ item?.title?.length > 8 ? item.title.substr(0, 8) + '...' : item.title }}</span>\r\n      </ng-template>\r\n      <ng-template st-row=\"contentTemp\" let-item let-index=\"index\">\r\n        <span nz-tooltip [nzTooltipTitle]=\"item.content\">{{ item?.content?.length > 30 ? item.content.substr(0, 30) + '...' : item.content }}</span>\r\n      </ng-template>\r\n      <ng-template st-row=\"exampleTemp\" let-item let-index=\"index\">\r\n        <span nz-tooltip [nzTooltipTitle]=\"item.example\">{{ item?.example?.length > 30 ? item.example.substr(0, 30) + '...' : item.example }}</span>\r\n      </ng-template>\r\n    </st>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"isEdit\" [ngTemplateOutlet]=\"formPanel\"></ng-container>\r\n</nz-card>\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button *ngIf=\"isEdit\" (btnClick)=\"handleOk()\"><span>确定</span></icc-button>\r\n\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"returnBack()\"><span>关闭</span></icc-button>\r\n</div>\r\n\r\n<nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"引用模板\" (nzOnCancel)=\"isVisible = false\" [nzWidth]=\"1000\" nzOkText=\"确定\" nzCancelText=\"返回\" (nzOnOk)=\"handleOk()\">\r\n  <ng-container [ngTemplateOutlet]=\"formPanel\"></ng-container>\r\n</nz-modal>\r\n\r\n<ng-template #varUseTipTmp>\r\n  点击变量替换微信模板中的变量\r\n</ng-template>\r\n\r\n<ng-template #formPanel>\r\n  <form nz-form nz-row #validForm=\"ngForm\" [nzLayout]=\"'horizontal'\" style=\"max-height: 470px;overflow: auto;\">\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\">模板标题</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"15\">\r\n        <nz-form-text>{{ selectTemplate.title }}</nz-form-text>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\">模板内容</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"15\">\r\n        <nz-card [nzBodyStyle]=\"{ 'min-height': '150px', 'max-height': '300px' }\">\r\n          <pre>{{ selectTemplate.content }}</pre>\r\n        </nz-card>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\">模板跳转链接</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\" nzErrorTip=\"请输入合法的URL链接\">\r\n        <nz-input-group [nzSuffix]=\"inputClearTpl\" [nzAddOnAfter]=\"suffixButton\">\r\n          <input nz-input [(ngModel)]=\"selectTemplate.url\" [ngModelOptions]=\"{ standalone: true }\" required [maxLength]=\"100\" />\r\n        </nz-input-group>\r\n        <ng-template #inputClearTpl><i nz-icon class=\"ant-input-clear-icon\" nzTheme=\"fill\" nzType=\"close-circle\" *ngIf=\"selectTemplate.url\" (click)=\"selectTemplate.url = ''\"></i></ng-template>\r\n        <ng-template #suffixButton>\r\n          <button nz-button nzType=\"primary\" nzSize=\"large\" (click)=\"OpenShortChainModal(selectTemplate)\" class=\"short-link-btn\">添加短链</button>\r\n        </ng-template>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n\r\n    <!-- 业务变量 -->\r\n    <icc-tpl-variable [ngStyle]=\"{ transform: isEdit ? 'translateX(25px)' : 'translateX(40px)' }\" [variableBinds]=\"variableBinds\" (insert)=\"insertvariable($event)\"></icc-tpl-variable>\r\n\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\">贴片</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"20\">\r\n        <button nz-button nzType=\"link\" type=\"button\" title=\"添加贴片\" (click)=\"openPatchModal()\">\r\n          添加贴片\r\n        </button>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n    <nz-form-item>\r\n      <nz-form-label [nzSpan]=\"3\" nzRequired>参数编辑</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"7\">\r\n        <nz-card>\r\n          <ng-container *ngFor=\"let v of varList\">\r\n            <nz-form-label>{{ v.value }}</nz-form-label>\r\n            <input nz-input (click)=\"varClcik(v, $event)\" [(ngModel)]=\"v.replace\" (ngModelChange)=\"changePreview()\" (change)=\"chnageSelection($event)\" name=\"{{ v.value }}\" required [maxLength]=\"100\" />\r\n          </ng-container>\r\n        </nz-card>\r\n      </nz-form-control>\r\n      <nz-form-label [nzSpan]=\"3\">实时编辑展示</nz-form-label>\r\n      <nz-form-control [nzSpan]=\"10\">\r\n        <nz-card [nzBodyStyle]=\"{ 'min-height': '150px', 'max-height': '300px' }\">\r\n          <pre>{{ contentPreview }}</pre>\r\n        </nz-card>\r\n        <span *ngIf=\"contentPreview && contentPreview.length > 200\" style=\"color:red;\">模板长度不得超过200字符</span>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n    <div nz-col nzOffset=\"3\" class=\"tip-box\" style=\"padding: 0px 10px; display: inline-block;float: none;\">\r\n      <img src=\"./assets/images/layout/info.png\" alt=\"\" />\r\n      <span>注意事项：</span>\r\n      <p>1、如果变量和输入的文字一样，将被系统替换为变量</p>\r\n      <p>2、模板整体字数不可超过200</p>\r\n    </div>\r\n  </form>\r\n</ng-template>\r\n","styles":[".var-item{display:inline-block;margin-right:10px;margin-bottom:10px;padding:0 15px;border-radius:15px;height:30px;cursor:pointer;line-height:28px}.var-default{border:1px solid #ccc}.var-active{border:1px solid #b9e3e6!important;background:#e8f6f7!important}.var-require{border:1px solid #ccc;background:#f3f4f8}.short-link-btn{margin:-1px -12px 0;padding:0 12px;border-radius:0;height:32px;font-size:14px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":16,"character":28},{"__symbolic":"reference","module":"mmmo-mo-common-lib","name":"DialogService","line":16,"character":64},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":16,"character":94},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":16,"character":127},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":16,"character":127}]}],"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":53,"character":3},"arguments":["st",{"static":false}]}]}],"ngOnInit":[{"__symbolic":"method"}],"handleVarList":[{"__symbolic":"method"}],"handleTemplateVarMap":[{"__symbolic":"method"}],"getTableList":[{"__symbolic":"method"}],"varClcik":[{"__symbolic":"method"}],"chnageSelection":[{"__symbolic":"method"}],"insertSource":[{"__symbolic":"method"}],"openPatchModal":[{"__symbolic":"method"}],"validateBeforeOpenPatchModal":[{"__symbolic":"method"}],"processPatch":[{"__symbolic":"method"}],"insertvariable":[{"__symbolic":"method"}],"validateBeforeInsertvariable":[{"__symbolic":"method"}],"changePreview":[{"__symbolic":"method"}],"handleOk":[{"__symbolic":"method"}],"getTemplateById":[{"__symbolic":"method"}],"returnBack":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"OpenShortChainModal":[{"__symbolic":"method"}]}},"BtnGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-btn-group","template":"<div class=\"btn-group\">\r\n  <span\r\n    *ngFor=\"let name of list; let i = index\"\r\n    class=\"btn-item\"\r\n    [ngClass]=\"{ 'more-text': isMoreText, 'btn-active': active === i, 'btn-hover': hoverIndex === i && active !== i }\"\r\n    (click)=\"btnClick({ name: name, index: i })\"\r\n    (mousemove)=\"mouseMove(i)\"\r\n    (mouseleave)=\"mouseLeave(i)\"\r\n    >{{ name }}</span\r\n  >\r\n</div>\r\n","styles":[".btn-group{display:inline-block;width:auto;background:#ffff;border:1px solid #eaecf0}.btn-group .btn-item{display:inline-block;min-width:40px;height:30px;color:#9da1ad;font-size:12px;line-height:30px;text-align:center;background-color:rgba(157,161,173,.13);border-right:1px solid #eaecf0;cursor:default;padding:0 9px}.btn-group .btn-item:nth-last-of-type(1){border-right:0!important}.btn-group .btn-active{color:#48516c;font-weight:700;background-color:#fff}.btn-group .btn-hover{background-color:rgba(157,161,173,.18);cursor:pointer}.btn-group .more-text{width:auto;padding:0 15px}"]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"btnclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"btnClick":[{"__symbolic":"method"}],"mouseMove":[{"__symbolic":"method"}],"mouseLeave":[{"__symbolic":"method"}]}},"DialogService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"init":[{"__symbolic":"method"}],"initDialog":[{"__symbolic":"method"}],"render":[{"__symbolic":"method"}],"createElement":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"hide":[{"__symbolic":"method"}],"hideConfirm":[{"__symbolic":"method"}],"trigger":[{"__symbolic":"method"}],"isShow":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EventService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"}]}],"addWatcher":[{"__symbolic":"method"}],"change":[{"__symbolic":"method"}],"isExistAttr":[{"__symbolic":"method"}],"deleteAttr":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PermissionControlService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"menuControl":[{"__symbolic":"method"}],"getLimitByField":[{"__symbolic":"method"}],"forEachConfig":[{"__symbolic":"method"}],"iteartorMenuTree":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TemplateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DialogService"},{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":35,"character":66}]}],"setMode":[{"__symbolic":"method"}],"setSource":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"addTemplate":[{"__symbolic":"method"}],"removeTemplate":[{"__symbolic":"method"}],"moveTemplate":[{"__symbolic":"method"}],"copyTemplate":[{"__symbolic":"method"}],"validateName":[{"__symbolic":"method"}],"changeTemplateState":[{"__symbolic":"method"}],"reqForChangeTemplate":[{"__symbolic":"method"}],"getAllTpl":[{"__symbolic":"method"}],"getTpl":[{"__symbolic":"method"}],"getLastTpl":[{"__symbolic":"method"}],"getMsg":[{"__symbolic":"method"}],"getStandardTpl":[{"__symbolic":"method"}],"getTpllen":[{"__symbolic":"method"}],"getTemplateByRefMap":[{"__symbolic":"method"}],"updatePriority":[{"__symbolic":"method"}],"hasDefaultTpl":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AddresseeServiceService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"addAddressee":[{"__symbolic":"method"}],"addAddressees":[{"__symbolic":"method"}],"getAddressees":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CustomerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":16,"character":28},{"__symbolic":"reference","module":"@delon/theme","name":"ModalHelper","line":16,"character":56}]}],"getCustomGroups":[{"__symbolic":"method"}],"handleError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EncryptService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":10,"character":28}]}],"encrypt":[{"__symbolic":"method"}],"executeEncrypt":[{"__symbolic":"method"}],"rsaEncrypt":[{"__symbolic":"method"}],"toSM2Encrypt":[{"__symbolic":"method"}],"encryptDataFormat":[{"__symbolic":"method"}],"clearEncryptRule":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setData":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MsgPluginFilterService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":22,"character":27},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":22,"character":60}]}],"requestMsgPluginCollection":[{"__symbolic":"method"}],"getMsgList":[{"__symbolic":"method"}],"_isArray":[{"__symbolic":"method"}],"_forEach":[{"__symbolic":"method"}],"getMsgListByPermission":[{"__symbolic":"method"}],"getMsgListByPlugin":[{"__symbolic":"method"}],"msgTypeFilter":[{"__symbolic":"method"}],"getMsgPatchTypeByPlugin":[{"__symbolic":"method"}],"getReportIdsByPlugin":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"NoticeService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":19,"character":28},{"__symbolic":"reference","module":"@delon/acl","name":"ACLService","line":19,"character":61}]}],"updateNotice":[{"__symbolic":"method"}],"getNoticeList":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"InnerHtmlPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":7,"character":1},"arguments":[{"name":"html"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":11,"character":33}]}],"transform":[{"__symbolic":"method"}]}},"TextFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"textFormat"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":7,"character":33}]}],"transform":[{"__symbolic":"method"}]}},"HttpDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":4,"character":1},"arguments":[{"selector":"[http-host]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":9,"character":27},{"__symbolic":"reference","name":"EventService"}]}],"loading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}]}},"AdDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[ad-host]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":7,"character":39}]}]}},"MsgTypesDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":3,"character":1},"arguments":[{"selector":"[msgTypes]"}]}],"members":{"msgs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":13,"character":26},{"__symbolic":"reference","name":"MsgPluginFilterService"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ValidateNameDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":6,"character":1},"arguments":[{"selector":"[appValidateName]","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_ASYNC_VALIDATORS","line":10,"character":15},"useExisting":{"__symbolic":"reference","name":"ValidateNameDirective"},"multi":true}]}]}],"members":{"vparam":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"_HttpClient","line":19,"character":27}]}],"validate":[{"__symbolic":"method"}]}},"CommonLibModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":175,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ConditionComponent"},{"__symbolic":"reference","name":"ConditionTableAuditComponent"},{"__symbolic":"reference","name":"Icc5GContentComponent"},{"__symbolic":"reference","name":"Icc5GCardComponent"},{"__symbolic":"reference","name":"Icc5gEditorComponent"},{"__symbolic":"reference","name":"IccAnchorComponent"},{"__symbolic":"reference","name":"IccCardComponent"},{"__symbolic":"reference","name":"IccChannelTableComponent"},{"__symbolic":"reference","name":"IccCollapsComponent"},{"__symbolic":"reference","name":"IccCommentCardComponent"},{"__symbolic":"reference","name":"IccCommentPannelComponent"},{"__symbolic":"reference","name":"IccDateComponent"},{"__symbolic":"reference","name":"IccHeadUploadComponent"},{"__symbolic":"reference","name":"IccListComponent"},{"__symbolic":"reference","name":"IccMapPositionComponent"},{"__symbolic":"reference","name":"IccMaterialTabComponent"},{"__symbolic":"reference","name":"IccMediaEditorComponent"},{"__symbolic":"reference","name":"IccMediaSelectComponent"},{"__symbolic":"reference","name":"IccMsgContentComponent"},{"__symbolic":"reference","name":"IccMsgTplComponent"},{"__symbolic":"reference","name":"IccMultiLineCellComponent"},{"__symbolic":"reference","name":"IccOrderComponent"},{"__symbolic":"reference","name":"IccTableTextComponent"},{"__symbolic":"reference","name":"IccToggleComponent"},{"__symbolic":"reference","name":"IccUploadComponent"},{"__symbolic":"reference","name":"EmptyDataComponent"},{"__symbolic":"reference","name":"IccFunnelVoiceSendComponent"},{"__symbolic":"reference","name":"IccRadioMsgSendComponent"},{"__symbolic":"reference","name":"IccRadioSmsChannelComponent"},{"__symbolic":"reference","name":"IccReportComponent"},{"__symbolic":"reference","name":"IccTotalBiztypeSendComponent"},{"__symbolic":"reference","name":"IccTotalMoEmailComponent"},{"__symbolic":"reference","name":"IccTotalMoSmsComponent"},{"__symbolic":"reference","name":"IccTotalSendComponent"},{"__symbolic":"reference","name":"IccTotalWechatFansComponent"},{"__symbolic":"reference","name":"IccTrendSendComponent"},{"__symbolic":"reference","name":"IccTrendVoiceTimeComponent"},{"__symbolic":"reference","name":"IccTrendWechatIndicatorComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"IccMsgGeneratorComponent"},{"__symbolic":"reference","name":"IccPatchDialogComponent"},{"__symbolic":"reference","name":"IccShortChainConfigComponent"},{"__symbolic":"reference","name":"IccMsgFormComponent"},{"__symbolic":"reference","name":"IccFakeTextAreaComponent"},{"__symbolic":"reference","name":"IccPatchPopoverComponent"},{"__symbolic":"reference","name":"SmartGroupComponent"},{"__symbolic":"reference","name":"IccTplConditionComponent"},{"__symbolic":"reference","name":"IccTplCopyComponent"},{"__symbolic":"reference","name":"IccTplHeaderComponent"},{"__symbolic":"reference","name":"IccTplNameComponent"},{"__symbolic":"reference","name":"IccTplOperateComponent"},{"__symbolic":"reference","name":"IccTplVariableComponent"},{"__symbolic":"reference","name":"IccSideMenuComponent"},{"__symbolic":"reference","name":"IccStateComponent"},{"__symbolic":"reference","name":"IccImageComponent"},{"__symbolic":"reference","name":"IccImageUploadComponent"},{"__symbolic":"reference","name":"IccButtonComponent"},{"__symbolic":"reference","name":"IccVideoComponent"},{"__symbolic":"reference","name":"IccAudioComponent"},{"__symbolic":"reference","name":"IccAudioUploadComponent"},{"__symbolic":"reference","name":"IccTagsComponent"},{"__symbolic":"reference","name":"IccMsgIconComponent"},{"__symbolic":"reference","name":"IccIconComponent"},{"__symbolic":"reference","name":"BtnGroupComponent"},{"__symbolic":"reference","name":"WechatRefComponent"},{"__symbolic":"reference","name":"InnerHtmlPipe"},{"__symbolic":"reference","name":"TextFormatPipe"},{"__symbolic":"reference","name":"HttpDirective"},{"__symbolic":"reference","name":"AdDirective"},{"__symbolic":"reference","name":"ValidateNameDirective"},{"__symbolic":"reference","name":"MsgTypesDirective"}],"imports":[{"__symbolic":"reference","module":"ng-zorro-antd","name":"NgZorroAntdModule","line":88,"character":2},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzFormModule","line":89,"character":2},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":90,"character":2},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":91,"character":2},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":92,"character":2},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":93,"character":2},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@delon/form","name":"DelonFormModule","line":94,"character":2},"member":"forRoot"}},{"__symbolic":"reference","module":"@notadd/ngx-neditor","name":"NgxNeditorModule","line":95,"character":2},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@delon/theme","name":"AlainThemeModule","line":96,"character":2},"member":"forChild"}},{"__symbolic":"reference","module":"@delon/acl","name":"DelonACLModule","line":97,"character":2},{"__symbolic":"reference","module":"@delon/abc","name":"PageHeaderModule","line":85,"character":30},{"__symbolic":"reference","module":"@delon/abc","name":"STModule","line":85,"character":48},{"__symbolic":"reference","module":"@delon/abc","name":"SEModule","line":85,"character":58},{"__symbolic":"reference","module":"@delon/abc","name":"SVModule","line":85,"character":68},{"__symbolic":"reference","module":"@delon/abc","name":"ResultModule","line":85,"character":78}],"providers":[{"provide":{"__symbolic":"reference","module":"ng-zorro-antd","name":"NZ_I18N","line":189,"character":15},"useValue":{"__symbolic":"reference","module":"ng-zorro-antd","name":"zh_CN","line":189,"character":34}}],"entryComponents":[{"__symbolic":"reference","name":"Icc5GCardComponent"},{"__symbolic":"reference","name":"IccMediaSelectComponent"},{"__symbolic":"reference","name":"IccPatchDialogComponent"},{"__symbolic":"reference","name":"IccShortChainConfigComponent"},{"__symbolic":"reference","name":"SmartGroupComponent"},{"__symbolic":"reference","name":"IccTplOperateComponent"},{"__symbolic":"reference","name":"IccTplNameComponent"},{"__symbolic":"reference","name":"IccTplCopyComponent"},{"__symbolic":"reference","name":"IccTplConditionComponent"},{"__symbolic":"reference","name":"IccTplHeaderComponent"},{"__symbolic":"reference","name":"IccTplVariableComponent"},{"__symbolic":"reference","name":"IccMapPositionComponent"}],"exports":[{"__symbolic":"reference","name":"IccMsgGeneratorComponent"},{"__symbolic":"reference","name":"IccPatchDialogComponent"},{"__symbolic":"reference","name":"IccShortChainConfigComponent"},{"__symbolic":"reference","name":"IccMsgFormComponent"},{"__symbolic":"reference","name":"IccFakeTextAreaComponent"},{"__symbolic":"reference","name":"ConditionComponent"},{"__symbolic":"reference","name":"IccPatchPopoverComponent"},{"__symbolic":"reference","name":"SmartGroupComponent"},{"__symbolic":"reference","name":"IccTplConditionComponent"},{"__symbolic":"reference","name":"IccTplCopyComponent"},{"__symbolic":"reference","name":"IccTplHeaderComponent"},{"__symbolic":"reference","name":"IccTplNameComponent"},{"__symbolic":"reference","name":"IccTplOperateComponent"},{"__symbolic":"reference","name":"IccTplVariableComponent"},{"__symbolic":"reference","name":"IccSideMenuComponent"},{"__symbolic":"reference","name":"IccStateComponent"},{"__symbolic":"reference","name":"IccImageComponent"},{"__symbolic":"reference","name":"IccImageUploadComponent"},{"__symbolic":"reference","name":"IccButtonComponent"},{"__symbolic":"reference","name":"IccVideoComponent"},{"__symbolic":"reference","name":"IccAudioComponent"},{"__symbolic":"reference","name":"IccAudioUploadComponent"},{"__symbolic":"reference","name":"IccTagsComponent"},{"__symbolic":"reference","name":"IccMsgIconComponent"},{"__symbolic":"reference","name":"ConditionTableAuditComponent"},{"__symbolic":"reference","name":"IccIconComponent"},{"__symbolic":"reference","name":"Icc5GContentComponent"},{"__symbolic":"reference","name":"Icc5GCardComponent"},{"__symbolic":"reference","name":"Icc5gEditorComponent"},{"__symbolic":"reference","name":"IccAnchorComponent"},{"__symbolic":"reference","name":"IccCardComponent"},{"__symbolic":"reference","name":"IccChannelTableComponent"},{"__symbolic":"reference","name":"IccCollapsComponent"},{"__symbolic":"reference","name":"IccCommentCardComponent"},{"__symbolic":"reference","name":"IccCommentPannelComponent"},{"__symbolic":"reference","name":"IccDateComponent"},{"__symbolic":"reference","name":"IccHeadUploadComponent"},{"__symbolic":"reference","name":"IccListComponent"},{"__symbolic":"reference","name":"IccMapPositionComponent"},{"__symbolic":"reference","name":"IccMaterialTabComponent"},{"__symbolic":"reference","name":"IccMediaEditorComponent"},{"__symbolic":"reference","name":"IccMediaSelectComponent"},{"__symbolic":"reference","name":"IccMsgContentComponent"},{"__symbolic":"reference","name":"IccMsgTplComponent"},{"__symbolic":"reference","name":"IccMultiLineCellComponent"},{"__symbolic":"reference","name":"IccOrderComponent"},{"__symbolic":"reference","name":"IccTableTextComponent"},{"__symbolic":"reference","name":"IccToggleComponent"},{"__symbolic":"reference","name":"IccUploadComponent"},{"__symbolic":"reference","name":"EmptyDataComponent"},{"__symbolic":"reference","name":"IccFunnelVoiceSendComponent"},{"__symbolic":"reference","name":"IccRadioMsgSendComponent"},{"__symbolic":"reference","name":"IccRadioSmsChannelComponent"},{"__symbolic":"reference","name":"IccReportComponent"},{"__symbolic":"reference","name":"IccTotalBiztypeSendComponent"},{"__symbolic":"reference","name":"IccTotalMoEmailComponent"},{"__symbolic":"reference","name":"IccTotalMoSmsComponent"},{"__symbolic":"reference","name":"IccTotalSendComponent"},{"__symbolic":"reference","name":"IccTotalWechatFansComponent"},{"__symbolic":"reference","name":"IccTrendSendComponent"},{"__symbolic":"reference","name":"IccTrendVoiceTimeComponent"},{"__symbolic":"reference","name":"IccTrendWechatIndicatorComponent"},{"__symbolic":"reference","name":"InnerHtmlPipe"},{"__symbolic":"reference","name":"TextFormatPipe"},{"__symbolic":"reference","name":"HttpDirective"},{"__symbolic":"reference","name":"AdDirective"},{"__symbolic":"reference","name":"ValidateNameDirective"},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NgZorroAntdModule","line":264,"character":4},{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzFormModule","line":265,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":266,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":267,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":268,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":269,"character":4},{"__symbolic":"reference","module":"@delon/form","name":"DelonFormModule","line":270,"character":4},{"__symbolic":"reference","module":"@notadd/ngx-neditor","name":"NgxNeditorModule","line":271,"character":4},{"__symbolic":"reference","module":"@delon/theme","name":"AlainThemeModule","line":272,"character":4},{"__symbolic":"reference","module":"@delon/acl","name":"DelonACLModule","line":273,"character":4},{"__symbolic":"reference","module":"@delon/abc","name":"PageHeaderModule","line":85,"character":30},{"__symbolic":"reference","module":"@delon/abc","name":"STModule","line":85,"character":48},{"__symbolic":"reference","module":"@delon/abc","name":"SEModule","line":85,"character":58},{"__symbolic":"reference","module":"@delon/abc","name":"SVModule","line":85,"character":68},{"__symbolic":"reference","module":"@delon/abc","name":"ResultModule","line":85,"character":78},{"__symbolic":"reference","name":"BtnGroupComponent"},{"__symbolic":"reference","name":"WechatRefComponent"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"template":"<div class=\"modal-header modal-header-update\">\r\n  <div class=\"modal-title\">{{ title }}</div>\r\n</div>\r\n<nz-card>\r\n  <p *ngIf=\"msgType === '2'\">\r\n    1.微信最多只能绑定一条渠道;\r\n  </p>\r\n  <p *ngIf=\"msgType === '2'\">\r\n    2.由于微信管控限制，公众号类型为【订阅号】时，只允许使用微信此消息类型。\r\n  </p>\r\n  <st #st [widthMode]=\"{ type: 'strict' }\" [data]=\"url\" [columns]=\"columns\" [req]=\"req\" [res]=\"res\" [page]=\"page\">\r\n    <ng-template st-row=\"tpl-name\" let-item let-index=\"index\">\r\n      <icc-table-text [text]=\"item.name\" [width]=\"218\"></icc-table-text>\r\n    </ng-template>\r\n    <ng-template st-row=\"tpl-identity\" let-item let-index=\"index\">\r\n      <icc-table-text [text]=\"item.identity\" [width]=\"168\"></icc-table-text>\r\n    </ng-template>\r\n    <ng-template st-row=\"tpl-senderAddress\" let-item let-index=\"index\">\r\n      <icc-table-text [text]=\"item.senderAddress\" [width]=\"218\"></icc-table-text>\r\n    </ng-template>\r\n  </st>\r\n</nz-card>\r\n<div class=\"modal-footer modal-footer-update\">\r\n  <icc-button [btnType]=\"'hollow'\" (btnClick)=\"cancel()\"><span>关闭</span></icc-button>\r\n  <icc-button [btnType]=\"'default'\" (btnClick)=\"confirm()\"><span>确定</span></icc-button>\r\n</div>\r\n"}]}],"members":{"st":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":78,"character":3},"arguments":["st",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ng-zorro-antd","name":"NzModalRef","line":234,"character":29},{"__symbolic":"reference","name":"DialogService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}}},"origins":{"varSelect":"./lib/components/condition/condition.component","tagSelect":"./lib/components/condition/condition.component","ConditionComponent":"./lib/components/condition/condition.component","ConditionTableAuditComponent":"./lib/components/condition-table-audit/condition-table-audit.component","IccAudioComponent":"./lib/components/icc-audio/icc-audio.component","IccAudioUploadComponent":"./lib/components/icc-audio-upload/icc-audio-upload.component","IccButtonComponent":"./lib/components/icc-button/icc-button.component","IccFakeTextAreaComponent":"./lib/components/icc-fake-textarea/icc-fake-textarea.component","IccIconComponent":"./lib/components/icc-icon/icc-icon.component","IccImageComponent":"./lib/components/icc-image/icc-image.component","IccImageUploadComponent":"./lib/components/icc-image-upload/icc-image-upload.component","IccMsgFormComponent":"./lib/components/icc-msg-form/icc-msg-form.component","IccMsgGeneratorComponent":"./lib/components/icc-msg-generator/icc-msg-generator.component","IccMsgIconComponent":"./lib/components/icc-msg-icon/icc-msg-icon.component","IccPatchDialogComponent":"./lib/components/icc-patch-dialog/icc-patch-dialog.component","IccPatchPopoverComponent":"./lib/components/icc-patch-popover/icc-patch-popover.component","IccShortChainConfigComponent":"./lib/components/icc-short-chain-config/icc-short-chain-config.component","IccSideMenuComponent":"./lib/components/icc-side-menu/icc-side-menu.component","IccStateComponent":"./lib/components/icc-state/icc-state.component","IccTagsComponent":"./lib/components/icc-tags/icc-tags.component","IccTplConditionComponent":"./lib/components/icc-tpl-group/icc-tpl-condition.component","IccTplCopyComponent":"./lib/components/icc-tpl-group/icc-tpl-copy.component","IccTplHeaderComponent":"./lib/components/icc-tpl-group/icc-tpl-header.component","IccTplNameComponent":"./lib/components/icc-tpl-group/icc-tpl-name.component","IccTplOperateComponent":"./lib/components/icc-tpl-group/icc-tpl-operate.component","IccTplVariableComponent":"./lib/components/icc-tpl-group/icc-tpl-variable.component","IccVideoComponent":"./lib/components/icc-video/icc-video.component","SmartGroupComponent":"./lib/components/smart-group/smart-group.component","Icc5GContentComponent":"./lib/components/icc-5g-content/icc-5g-content.component","Icc5GCardComponent":"./lib/components/icc-5Gcard/icc-5Gcard.component","Icc5gEditorComponent":"./lib/components/icc-5GEditor/icc-5g-editor.component","IccAnchorComponent":"./lib/components/icc-anchor/icc-anchor.component","IccCardComponent":"./lib/components/icc-card/icc-card.component","IccChannelTableComponent":"./lib/components/icc-channel-table/icc-channel-table.component","IccCommentCardComponent":"./lib/components/icc-comment-card/icc-comment-card.component","BtnConfig":"./lib/components/icc-comment-pannel/icc-comment-pannel.component","Data":"./lib/components/icc-comment-pannel/icc-comment-pannel.component","Reply":"./lib/components/icc-comment-pannel/icc-comment-pannel.component","IccCommentPannelComponent":"./lib/components/icc-comment-pannel/icc-comment-pannel.component","IccDateComponent":"./lib/components/icc-date/icc-date.component","IccHeadUploadComponent":"./lib/components/icc-head-upload/icc-head-upload.component","IccListComponent":"./lib/components/icc-list/icc-list.component","IccMapPositionComponent":"./lib/components/icc-map-position/icc-map-position.component","IccMaterialTabComponent":"./lib/components/icc-material-tab/icc-material-tab.component","IccMediaEditorComponent":"./lib/components/icc-media-editor/icc-media-editor.component","IccMediaSelectComponent":"./lib/components/icc-media-select/icc-media-select.component","IccMsgContentComponent":"./lib/components/icc-msg-content/icc-msg-content.component","IccMsgTplComponent":"./lib/components/icc-msg-tpl/icc-msg-tpl.component","IccMultiLineCellComponent":"./lib/components/icc-multi-line-cell/icc-multi-line-cell.component","IccCollapsComponent":"./lib/components/icc-collaps/icc-collaps.component","IccOrderComponent":"./lib/components/icc-order/icc-order.component","IccTableTextComponent":"./lib/components/icc-table-text/icc-table-text.component","IccToggleComponent":"./lib/components/icc-toggle/icc-toggle.component","IccUploadComponent":"./lib/components/icc-upload/icc-upload.component","EmptyDataComponent":"./lib/components/report/empty-data/empty-data.component","IccFunnelVoiceSendComponent":"./lib/components/report/icc-funnel-voice-send/icc-funnel-voice-send.component","IccRadioMsgSendComponent":"./lib/components/report/icc-radio-msg-send/icc-radio-msg-send.component","IccRadioSmsChannelComponent":"./lib/components/report/icc-radio-sms-channel/icc-radio-sms-channel.component","IccReportComponent":"./lib/components/report/icc-report/icc-report.component","IccTotalBiztypeSendComponent":"./lib/components/report/icc-total-biztype-send/icc-total-biztype-send.component","IccTotalMoEmailComponent":"./lib/components/report/icc-total-mo-email/icc-total-mo-email.component","IccTotalMoSmsComponent":"./lib/components/report/icc-total-mo-sms/icc-total-mo-sms.component","IccTotalSendComponent":"./lib/components/report/icc-total-send/icc-total-send.component","IccTotalWechatFansComponent":"./lib/components/report/icc-total-wechat-fans/icc-total-wechat-fans.component","IccTrendSendComponent":"./lib/components/report/icc-trend-send/icc-trend-send.component","IccTrendVoiceTimeComponent":"./lib/components/report/icc-trend-voice-time/icc-trend-voice-time.component","IccTrendWechatIndicatorComponent":"./lib/components/report/icc-trend-wechat-indicator/icc-trend-wechat-indicator.component","WechatRefComponent":"./lib/components/wechat-ref/wechat-ref.component","BtnGroupComponent":"./lib/components/btn-group/btn-group.component","DialogService":"./lib/services/dialog.service","EventService":"./lib/services/event.service","PermissionControlService":"./lib/services/permission-control.service","TemplateService":"./lib/services/template.service","AddresseeServiceService":"./lib/services/addressee-service.service","CustomerService":"./lib/services/customer.service","EncryptService":"./lib/services/encrypt.service","MessageService":"./lib/services/message.service","MsgPluginFilterService":"./lib/services/msg-plugin-filter.service","NoticeService":"./lib/services/notice.service","InnerHtmlPipe":"./lib/pipe/inner-html.pipe","TextFormatPipe":"./lib/pipe/text-format.pipe","HttpDirective":"./lib/directive/http.directive","AdDirective":"./lib/directive/ad.directive","MsgTypesDirective":"./lib/directive/msgTypes.directive","ValidateNameDirective":"./lib/directive/validate.name","CommonLibModule":"./lib/common-lib.module","ɵa":"./lib/components/biztype/channel/channel.component"},"importAs":"common-lib"}