Commit 2927698b by carrieyzzhang

Merge branch 'master' of git.minrow.com:reyun/saasio

parents 4b19368b fe4b8031
...@@ -108,16 +108,6 @@ public class LoginController ...@@ -108,16 +108,6 @@ public class LoginController
rtnMap.put("code", 203); rtnMap.put("code", 203);
return ResultModel.OK(rtnMap); return ResultModel.OK(rtnMap);
} }
//没有控制权限AuthStr没有授权
if (!account.getRoleCategory().equals(RoleEnumType.MANAGER.getKey())) {
if (!ValidateUtil.isValid(account.getAuthStr()) || !ValidateUtil.isValid(JSONObject.fromObject(account.getAuthStr()))) {
rtnMap.put("msg", "没有产品权限");
rtnMap.put("code", 202);
return ResultModel.OK(rtnMap);
}
}
} }
//存储token //存储token
......
package com.reyun.dic;
/**
* description:
*
* @author nolan
* @date 29/12/2017
*/
public enum AppTypeEnum
{
TEST("00", "测试"),
GAME("02", "游戏"),
APP("04", "应用");
private String code;
private String val;
AppTypeEnum(String code, String val) {
this.code = code;
this.val = val;
}
public static AppTypeEnum getVal(String code) {
for (AppTypeEnum appTypeEnum : AppTypeEnum.values()) {
if (appTypeEnum.getCode().equals(code)) {
return appTypeEnum;
}
}
return null;
}
public String getCode() {
return code;
}
public String getVal() {
return val;
}
}
package com.reyun.model;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* Created by sunhao on 17/3/1.
*/
@Entity
public class Notice {
private Long id;
@NotNull
private String title;
@NotNull
private String content;
private boolean isdeploy;
private Date deployDate;
private Date createDate;
private Date endDate;
private String createUser;
private Date modifyDate;
private String modifyUser;
private boolean isTop;
private boolean isRead;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name = "content",columnDefinition="text")
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public boolean getIsdeploy() {
return isdeploy;
}
public void setIsdeploy(boolean isdeploy) {
this.isdeploy = isdeploy;
}
public Date getDeployDate() {
return deployDate;
}
public void setDeployDate(Date deployDate) {
this.deployDate = deployDate;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
public String getModifyUser() {
return modifyUser;
}
public void setModifyUser(String modifyUser) {
this.modifyUser = modifyUser;
}
public boolean getIsTop() {
return isTop;
}
public void setIsTop(boolean isTop) {
this.isTop = isTop;
}
@Transient
public boolean getIsRead() {
return isRead;
}
public void setIsRead(boolean isRead) {
this.isRead = isRead;
}
}
package com.reyun.service; package com.reyun.service;
import com.reyun.model.IONotice; import com.reyun.model.IONotice;
import com.reyun.model.Notice;
import com.reyun.model.UserNoticeLog; import com.reyun.model.UserNoticeLog;
import java.util.List; import java.util.List;
......
...@@ -5,6 +5,7 @@ import com.google.common.base.Function; ...@@ -5,6 +5,7 @@ import com.google.common.base.Function;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.reyun.dic.AppTypeEnum;
import com.reyun.dic.ReportEnumType; import com.reyun.dic.ReportEnumType;
import com.reyun.dic.RoleEnumType; import com.reyun.dic.RoleEnumType;
import com.reyun.model.*; import com.reyun.model.*;
...@@ -17,8 +18,11 @@ import com.reyun.service.IDicService; ...@@ -17,8 +18,11 @@ import com.reyun.service.IDicService;
import com.reyun.util.CipherUtil; import com.reyun.util.CipherUtil;
import com.reyun.util.Constant; import com.reyun.util.Constant;
import com.reyun.util.DateUtil; import com.reyun.util.DateUtil;
import com.reyun.util.HttpClientUtil;
import com.reyun.util.ShortUrlGenerator; import com.reyun.util.ShortUrlGenerator;
import com.reyun.util.StringUtil; import com.reyun.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -34,6 +38,8 @@ import java.util.stream.Collectors; ...@@ -34,6 +38,8 @@ import java.util.stream.Collectors;
@Service @Service
public class AppServiceImpl implements AppService { public class AppServiceImpl implements AppService {
private static final Logger logger = LoggerFactory.getLogger(AppServiceImpl.class);
@Autowired @Autowired
AppRepository appRepository; AppRepository appRepository;
...@@ -170,6 +176,11 @@ public class AppServiceImpl implements AppService { ...@@ -170,6 +176,11 @@ public class AppServiceImpl implements AppService {
this.iAppTagService.saveOrUpdate(app.getId(), app.getAppTagList()); this.iAppTagService.saveOrUpdate(app.getId(), app.getAppTagList());
} }
if (AppTypeEnum.APP.getCode().equals(app.getTagType()) || AppTypeEnum.GAME.getCode().equals(app.getTagType())) {
boolean flag = doInvokeOfficeAudit(app.getId());
logger.info("调试完成, 分配任务至运营人员. app:{}, httpstatus: {}", app.getId(), flag);
}
return app; return app;
} }
...@@ -258,4 +269,18 @@ public class AppServiceImpl implements AppService { ...@@ -258,4 +269,18 @@ public class AppServiceImpl implements AppService {
return categoryRepository.findAll(); return categoryRepository.findAll();
} }
private boolean doInvokeOfficeAudit(Long app){
String url = Constant.adminUrl + "/api/ioapp/tag/task/distribute?app=" + app;
String result = HttpClientUtil.doHttpGetRequest(url, "");
Map resObj;
try {
resObj = new ObjectMapper().readValue(result, Map.class);
} catch (IOException e) {
logger.error("doInvokeOfficeAudit occur failed. app:{}", app);
return false;
}
return "200".equals(resObj.get("code"));
}
} }
...@@ -4,7 +4,6 @@ import com.google.common.base.Function; ...@@ -4,7 +4,6 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.reyun.model.Account; import com.reyun.model.Account;
import com.reyun.model.IONotice; import com.reyun.model.IONotice;
import com.reyun.model.Notice;
import com.reyun.model.UserNoticeLog; import com.reyun.model.UserNoticeLog;
import com.reyun.repository.NoticeRepository; import com.reyun.repository.NoticeRepository;
import com.reyun.repository.UserNoticeLogRepository; import com.reyun.repository.UserNoticeLogRepository;
......
...@@ -13,15 +13,9 @@ ...@@ -13,15 +13,9 @@
<ul class="icon_lists clear"> <ul class="icon_lists clear">
<li> <li>
<i class="icon iconfont icon-campaigninfo"></i> <i class="icon iconfont icon-android"></i>
<div class="name">campaigninfo</div> <div class="name">android</div>
<div class="fontclass">.icon-campaigninfo</div> <div class="fontclass">.icon-android</div>
</li>
<li>
<i class="icon iconfont icon-attribute"></i>
<div class="name">attribute</div>
<div class="fontclass">.icon-attribute</div>
</li> </li>
<li> <li>
...@@ -31,183 +25,51 @@ ...@@ -31,183 +25,51 @@
</li> </li>
<li> <li>
<i class="icon iconfont icon-campaign"></i>
<div class="name">campaign</div>
<div class="fontclass">.icon-campaign</div>
</li>
<li>
<i class="icon iconfont icon-custommenu"></i>
<div class="name">custommenu</div>
<div class="fontclass">.icon-custommenu</div>
</li>
<li>
<i class="icon iconfont icon-channel"></i>
<div class="name">channel</div>
<div class="fontclass">.icon-channel</div>
</li>
<li>
<i class="icon iconfont icon-channeleffect"></i>
<div class="name">channeleffect</div>
<div class="fontclass">.icon-channeleffect</div>
</li>
<li>
<i class="icon iconfont icon-costrecovery"></i>
<div class="name">costrecovery</div>
<div class="fontclass">.icon-costrecovery</div>
</li>
<li>
<i class="icon iconfont icon-customset"></i> <i class="icon iconfont icon-customset"></i>
<div class="name">customset</div> <div class="name">customset</div>
<div class="fontclass">.icon-customset</div> <div class="fontclass">.icon-customset</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-android"></i>
<div class="name">android</div>
<div class="fontclass">.icon-android</div>
</li>
<li>
<i class="icon iconfont icon-dashboard"></i>
<div class="name">dashboard</div>
<div class="fontclass">.icon-dashboard</div>
</li>
<li>
<i class="icon iconfont icon-auth"></i>
<div class="name">auth</div>
<div class="fontclass">.icon-auth</div>
</li>
<li>
<i class="icon iconfont icon-eventlist"></i>
<div class="name">eventlist</div>
<div class="fontclass">.icon-eventlist</div>
</li>
<li>
<i class="icon iconfont icon-funnel"></i>
<div class="name">funnel</div>
<div class="fontclass">.icon-funnel</div>
</li>
<li>
<i class="icon iconfont icon-event"></i>
<div class="name">event</div>
<div class="fontclass">.icon-event</div>
</li>
<li>
<i class="icon iconfont icon-effectevaluate"></i>
<div class="name">effectevaluate</div>
<div class="fontclass">.icon-effectevaluate</div>
</li>
<li>
<i class="icon iconfont icon-eventstats"></i>
<div class="name">eventstats</div>
<div class="fontclass">.icon-eventstats</div>
</li>
<li>
<i class="icon iconfont icon-intelligentpath"></i>
<div class="name">intelligentpath</div>
<div class="fontclass">.icon-intelligentpath</div>
</li>
<li>
<i class="icon iconfont icon-ios"></i> <i class="icon iconfont icon-ios"></i>
<div class="name">ios</div> <div class="name">ios</div>
<div class="fontclass">.icon-ios</div> <div class="fontclass">.icon-ios</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-keyword"></i>
<div class="name">keyword</div>
<div class="fontclass">.icon-keyword</div>
</li>
<li>
<i class="icon iconfont icon-logdump"></i>
<div class="name">logdump</div>
<div class="fontclass">.icon-logdump</div>
</li>
<li>
<i class="icon iconfont icon-logexport"></i>
<div class="name">logexport</div>
<div class="fontclass">.icon-logexport</div>
</li>
<li>
<i class="icon iconfont icon-logtool"></i>
<div class="name">logtool</div>
<div class="fontclass">.icon-logtool</div>
</li>
<li>
<i class="icon iconfont icon-realtime"></i>
<div class="name">realtime</div>
<div class="fontclass">.icon-realtime</div>
</li>
<li>
<i class="icon iconfont icon-report"></i>
<div class="name">report</div>
<div class="fontclass">.icon-report</div>
</li>
<li>
<i class="icon iconfont icon-logo"></i> <i class="icon iconfont icon-logo"></i>
<div class="name">logo</div> <div class="name">logo</div>
<div class="fontclass">.icon-logo</div> <div class="fontclass">.icon-logo</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-roi"></i> <i class="icon iconfont icon-m_event"></i>
<div class="name">roi</div> <div class="name">m_event</div>
<div class="fontclass">.icon-roi</div> <div class="fontclass">.icon-m_event</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-packageinfo"></i> <i class="icon iconfont icon-m_action"></i>
<div class="name">packageinfo</div> <div class="name">m_action</div>
<div class="fontclass">.icon-packageinfo</div> <div class="fontclass">.icon-m_action</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-subcampaign"></i> <i class="icon iconfont icon-m_dataview"></i>
<div class="name">subcampaign</div> <div class="name">m_dataview</div>
<div class="fontclass">.icon-subcampaign</div> <div class="fontclass">.icon-m_dataview</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-usergroup"></i> <i class="icon iconfont icon-m_tool"></i>
<div class="name">usergroup</div> <div class="name">m_tool</div>
<div class="fontclass">.icon-usergroup</div> <div class="fontclass">.icon-m_tool</div>
</li> </li>
<li> <li>
<i class="icon iconfont icon-systemparam"></i> <i class="icon iconfont icon-m_user"></i>
<div class="name">systemparam</div> <div class="name">m_user</div>
<div class="fontclass">.icon-systemparam</div> <div class="fontclass">.icon-m_user</div>
</li>
<li>
<i class="icon iconfont icon-retention"></i>
<div class="name">retention</div>
<div class="fontclass">.icon-retention</div>
</li>
<li>
<i class="icon iconfont icon-wrap"></i>
<div class="name">wrap</div>
<div class="fontclass">.icon-wrap</div>
</li> </li>
<li> <li>
...@@ -217,15 +79,9 @@ ...@@ -217,15 +79,9 @@
</li> </li>
<li> <li>
<i class="icon iconfont icon-userdetail"></i> <i class="icon iconfont icon-wrap"></i>
<div class="name">userdetail</div> <div class="name">wrap</div>
<div class="fontclass">.icon-userdetail</div> <div class="fontclass">.icon-wrap</div>
</li>
<li>
<i class="icon iconfont icon-asmeffectevaluate"></i>
<div class="name">asmeffectevaluate</div>
<div class="fontclass">.icon-asmeffectevaluate</div>
</li> </li>
</ul> </ul>
......
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1520575908675'); /* IE9*/
src: url('iconfont.eot?t=1520575908675#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('iconfont.ttf?t=1520575908675') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1520575908675#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-android:before { content: "\e65e"; }
.icon-app:before { content: "\e65f"; }
.icon-customset:before { content: "\e661"; }
.icon-ios:before { content: "\e665"; }
.icon-logo:before { content: "\e667"; }
.icon-m_event:before { content: "\e669"; }
.icon-m_action:before { content: "\e66a"; }
.icon-m_dataview:before { content: "\e66b"; }
.icon-m_tool:before { content: "\e66c"; }
.icon-m_user:before { content: "\e66d"; }
.icon-web:before { content: "\e66f"; }
.icon-wrap:before { content: "\e670"; }
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#4186EC;}
</style>
<path id="XMLID_2_" class="st0" d="M13,5V3h2v2H13z M9,7h2v2H9V7z M9,3h2v2H9V3z M5,11h2v2H5V11z M5,7h2v2H5V7z M5,3h2v2H5V3z M1,11
h2v2H1V11z M1,7h2v2H1V7z M1,3h2v2H1V3z"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#4186EC;}
</style>
<path class="st0" d="M13.5,15.5h-11c-1.1,0-2-0.9-2-2v-11c0-1.1,0.9-2,2-2h11c1.1,0,2,0.9,2,2v11C15.5,14.6,14.6,15.5,13.5,15.5z
M14.5,2.5c0-0.6-0.4-1-1-1h-11c-0.6,0-1,0.4-1,1v11c0,0.6,0.4,1,1,1h11c0.6,0,1-0.4,1-1V2.5z M13,12H3c-0.3,0-0.5-0.2-0.5-0.5
S2.7,11,3,11h10c0.3,0,0.5,0.2,0.5,0.5S13.3,12,13,12z M13,9c-0.3,0-0.5-0.2-0.5-0.5V5.8L9,9.8C8.7,10,8.3,10.1,8.1,9.9c0,0,0,0,0,0
C8,9.8,7.8,9.8,7.7,9.7L5.2,7.2L3.6,9.4C3.3,9.6,3,9.6,2.8,9.4c-0.2-0.2-0.2-0.5,0-0.8l1.9-2.4c0.2-0.2,0.4-0.2,0.6-0.1
c0.2,0,0.3,0.1,0.5,0.2l2.5,2.5L11.8,5H9C8.7,5,8.5,4.8,8.5,4.5S8.7,4,9,4h4c0.1,0,0.2,0,0.3,0.1l0,0c0,0,0.1,0,0.1,0.1
c0.1,0.1,0.2,0.3,0.1,0.4v3.9C13.5,8.8,13.3,9,13,9z"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#4186EC;}
</style>
<path class="st0" d="M8,16c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S12.4,16,8,16z M8,1C4.1,1,1,4.1,1,8s3.1,7,7,7s7-3.1,7-7
S11.9,1,8,1z M8,12c-2.2,0-4-1.8-4-4s1.8-4,4-4s4,1.8,4,4S10.2,12,8,12z M8,5C6.3,5,5,6.3,5,8s1.3,3,3,3s3-1.3,3-3S9.7,5,8,5z"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.2" baseProfile="tiny" id="图层_1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 16 16"
xml:space="preserve">
<g id="侧导航">
<g id="展开-copy" transform="translate(-14.000000, -383.000000)">
<g id="工具箱" transform="translate(14.000000, 383.000000)">
<path id="Combined-Shape" fill="#838688" d="M6,8.5h1c0,0.6,0.4,1,1,1s1-0.4,1-1h1c0,1.1-0.9,2-2,2S6,9.6,6,8.5z M11,2.5h3
c1.1,0,2,0.9,2,2v9c0,1.1-0.9,2-2,2H2c-1.1,0-2-0.9-2-2v-9c0-1.1,0.9-2,2-2l0,0h3v-1l0,0c0-0.6,0.4-1,1-1h4c0.6,0,1,0.4,1,1V2.5z
M10,2.5v-1H6v1H10z M2,3.5L2,3.5c-0.6,0-1,0.4-1,1v9c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1v-9c0-0.6-0.4-1-1-1H2z M1,7.5h14v1H1
V7.5z"/>
</g>
</g>
</g>
<g id="XMLID_1_">
</g>
<g id="XMLID_7_">
</g>
<g id="XMLID_8_">
</g>
<g id="XMLID_9_">
</g>
<g id="XMLID_10_">
</g>
<g id="XMLID_11_">
</g>
<g id="XMLID_12_">
</g>
<g id="XMLID_13_">
</g>
<g id="XMLID_14_">
</g>
<g id="XMLID_15_">
</g>
<g id="XMLID_16_">
</g>
<g id="XMLID_17_">
</g>
<g id="XMLID_18_">
</g>
<g id="XMLID_19_">
</g>
<g id="XMLID_20_">
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#4186EC;}
</style>
<path id="XMLID_2_" class="st0" d="M15.3,11.1c0.4,0.5,0.7,1.2,0.7,1.9c0,1.7-1.3,3-3,3c-1,0-1.8-0.5-2.4-1.2C10.1,14.9,9.6,15,9,15
c-2.8,0-5.2-1.7-6.3-4C1.2,10.8,0,9.5,0,8s1.2-2.8,2.7-3C3.8,2.7,6.2,1,9,1c0.6,0,1.1,0.1,1.6,0.2C11.2,0.5,12,0,13,0
c1.7,0,3,1.3,3,3c0,0.7-0.3,1.4-0.7,1.9C15.7,5.9,16,6.9,16,8S15.7,10.1,15.3,11.1z M1,8c0,1.1,0.9,2,2,2s2-0.9,2-2S4.1,6,3,6
S1,6.9,1,8z M13,1c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S14.1,1,13,1z M14.5,5.6C14,5.8,13.5,6,13,6c-1.7,0-3-1.3-3-3
c0-0.3,0.1-0.6,0.1-0.9C9.8,2,9.4,2,9,2C6.7,2,4.8,3.3,3.8,5.1C5.1,5.5,6,6.6,6,8s-0.9,2.5-2.2,2.9c1,1.8,3,3.1,5.2,3.1
c0.4,0,0.8,0,1.1-0.1C10.1,13.6,10,13.3,10,13c0-1.7,1.3-3,3-3c0.5,0,1,0.2,1.5,0.4C14.8,9.7,15,8.9,15,8S14.8,6.3,14.5,5.6z M13,11
c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S14.1,11,13,11z"/>
</svg>
...@@ -88,12 +88,6 @@ ...@@ -88,12 +88,6 @@
</a> </a>
</div> </div>
<div class="rightHeader clearfix"> <div class="rightHeader clearfix">
<div class="mainMenu" ng-class="{'mainShow':hasMenuFlag || isall}">
<div ng-class="{'active':mainMenu=='behavior'}" ng-click="showSubMenus('behavior')">行为分析</div>
<div ng-class="{'active':mainMenu=='export'}" ng-click="showSubMenus('export')">数据导出</div>
<div ng-class="{'active':mainMenu=='management'}" ng-click="showSubMenus('management')">管理中心</div>
</div>
<div class="flowinfo"> <div class="flowinfo">
<div class="flowCircle" ng-if="flowKnow && !flowRestrict"></div> <div class="flowCircle" ng-if="flowKnow && !flowRestrict"></div>
</div> </div>
...@@ -127,14 +121,14 @@ ...@@ -127,14 +121,14 @@
</div> </div>
</div> </div>
<div class="userInfoBottom" ng-class="{'third':isSuper || isManage}"> <div class="userInfoBottom" ng-class="{'third':isSuper || isManage}">
<div class="itemInfo light" ng-mouseenter="us = true;" ng-mouseleave="us = false;" ng-click="goPage('collect.userinfo')" ng-class="{'userInfoBotton':!isSuper && !isManage && byflow}"> <div class="itemBtn light" ng-click="goPage('collect.userinfo')">
<span class="usetIcon" ng-class="{'active':us}"></span>账号管理 账号管理
</div> </div>
<div class="itemInfo light" ng-mouseenter="ap = true;" ng-mouseleave="ap = false;" ng-click="goPage('collect.app')" ng-show="isSuper || isManage"> <div class="itemBtn light" ng-click="goPage('collect.auth')" ng-if="!demoU && (isSuper || isManage)">
<span class="appLIcon" ng-class="{'active':ap}"></span>应用管理 成员管理
</div> </div>
<div class="itemInfo light" ng-mouseenter="lgo = true;" ng-mouseleave="lgo = false;" ng-click="userLogout()" ng-class="{'userInfoBotton':!isSuper && !isManage && byflow}"> <div class="itemBtn light" ng-mouseenter="lgo = true;" ng-mouseleave="lgo = false;" ng-click="userLogout()" style="margin-right:0px;">
<span class="logoutIcon" ng-class="{'active':lgo}"></span>注销 注销
</div> </div>
</div> </div>
</div> </div>
...@@ -142,10 +136,13 @@ ...@@ -142,10 +136,13 @@
<a ng-if="!preStatus" class="wapSetInfo" href="http://doc.trackingio.com" target="_blank" title="帮助中心"><span class="helpIconN"></span></a> <a ng-if="!preStatus" class="wapSetInfo" href="http://doc.trackingio.com" target="_blank" title="帮助中心"><span class="helpIconN"></span></a>
<div class="wapSetInfo p" ng-show="mainMenu!='management' && pagePath!='userinfo'"> <div class="wapSetInfo p" ng-show="noLeftMenus.indexOf(pagePath)==-1">
<select-list meau-info="applistInfo" meau-id="appid" meau-data="appidInit" meau-refresh="appfresh" class="appWrap" icon-type="white" style="margin:0px;"></select-list> <select-list meau-info="applistInfo" meau-id="appid" meau-data="appidInit" meau-refresh="appfresh" class="appWrap" icon-type="white"></select-list>
</div>
<div class="wapSetInfo p" ng-click="goPage('collect.app')">
<span class="app_icon" title="全部产品"></span>
<label ng-show="noLeftMenus.indexOf(pagePath)>-1">全部产品</label>
</div> </div>
</div> </div>
</div> </div>
<div class="contentWrap"> <div class="contentWrap">
...@@ -162,7 +159,7 @@ ...@@ -162,7 +159,7 @@
<!-- <div class="infoTips spin-toggle" ng-if="operShow">{{operMsg}}</div> --> <!-- <div class="infoTips spin-toggle" ng-if="operShow">{{operMsg}}</div> -->
<div class="infoTips toggle" ng-if="operShow" ng-cloak>{{operMsg}}</div> <div class="infoTips toggle" ng-if="operShow" ng-cloak>{{operMsg}}</div>
<div class="leftSidebar slide-down" ng-show="pagePath!='userinfo' && pagePath!='nopower'"> <div class="leftSidebar slide-down" ng-show="noLeftMenus.indexOf(pagePath)==-1">
<div ui-view></div> <div ui-view></div>
</div> </div>
<div class="rightWrap"> <div class="rightWrap">
......
...@@ -163,12 +163,12 @@ ...@@ -163,12 +163,12 @@
$state.go(ui,{pageid:null}); $state.go(ui,{pageid:null});
} }
} }
$rootScope.noLeftMenus = ["userinfo","nopower","auth","app"];
$scope.resizeStyle = function(){ $scope.resizeStyle = function(){
var mleft = '0px'; var mleft = '0px';
if($rootScope.pagePath == "userinfo" || $rootScope.pagePath == "nopower"){ if($rootScope.noLeftMenus.indexOf($rootScope.pagePath) == -1){
$rootScope.mainMenu = false; mleft = $rootScope.unfoldFlag ? '40px' : '186px';
}else{
mleft = $rootScope.unfoldFlag?'40px':'186px';
} }
$(".conditionAlpha").css('left',mleft); $(".conditionAlpha").css('left',mleft);
$rootScope.panelw = $(window).width()-mleft.slice(0,-2)-84; $rootScope.panelw = $(window).width()-mleft.slice(0,-2)-84;
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
} }
queryFlow(); queryFlow();
var speMenus = ["userinfo","product","nopower","expiration"]; var speMenus = ["userinfo","product","nopower","expiration","auth","app"];
$rootScope.mainMenus ={ $rootScope.mainMenus ={
behavior:["custommenu","eventstats","retention","funnel","usergroup","profile","event","activityevent","custommenuDetail","intelligentpath"], behavior:["custommenu","eventstats","retention","funnel","usergroup","profile","event","activityevent","custommenuDetail","intelligentpath"],
dataexport:["logtool","report"], dataexport:["logtool","report"],
......
...@@ -4,64 +4,41 @@ ...@@ -4,64 +4,41 @@
function collectCtrl($rootScope,$scope,$state,ToolService,$timeout){ function collectCtrl($rootScope,$scope,$state,ToolService,$timeout){
var meauTree = { var meauTree = {
"analysis":["campaigninfo","channeleffect","attribute","effectevaluate","roi","keyword","packageinfo"], "dataview":["custommenu"],
"decisionsupport":["paymentinsight","potentialusergroup","device"], "action":["eventstats","funnel","retention","intelligentpath"],
"campaignmanager":["campaign","campgroup","datacb","onelink","sublink","subpackage"], "user":["usergroup"],
"export":["logexport","logdump","logtool","report","subcampaign"], "event":["event","profile"],
"eventmanage":["event","profile"] "tool":["logtool","report"]
}; };
$scope.getSubMenu = function(menu){ $scope.menustatus = {
if(menu == 'custommenu'){ dataview:true,
if($rootScope.isSuper && $scope.ctmMenuList.length == 0){ action:true,
ToolService.showAlp(); user:false,
$rootScope.tipCustom = true; event:false,
return false; tool:false
}
}
if($scope.subflag == menu && $state.current && $state.current.name!=menu){
$scope.subflag = "";
}else{
$scope.subflag = menu;
}
$rootScope.custID = "";
// $timeout(function(){
// $(".leftSidebar").perfectScrollbar("update");
// },100);
} }
$scope.getSubMenu = function(menu){
$scope.closeTip = function(){ $scope.menustatus[menu] = !$scope.menustatus[menu];
$rootScope.tipCustom = false;
ToolService.hideAlp();
}
$scope.okCust = function(){
$scope.goPage('collect.custommenu');
$scope.closeTip();
} }
$rootScope.$watch("pagePath",function(n){ $rootScope.$watch("pagePath",function(n){
if(angular.isDefined(n)){ if(angular.isDefined(n)){
$scope.subflag = "";
var idx = n.indexOf("Detail"); var idx = n.indexOf("Detail");
if(idx>-1){ if(idx>-1){
n = n.substring(0,n); n = n.substring(0,n);
} }
$scope.menuCurFlag = "";
for(var k in meauTree){ for(var k in meauTree){
var ms = meauTree[k]; var ms = meauTree[k];
if(ms.indexOf(n)>-1){ if(ms.indexOf(n)>-1){
$scope.subflag = k; $scope.menuCurFlag = k;
$scope.menustatus[k] = true;
break; break;
} }
} }
if(n == 'custommenu'){
$scope.subflag = n;
}
} }
}); });
// $(".leftSidebar").perfectScrollbar();
} }
})(); })();
...@@ -105,12 +105,9 @@ ...@@ -105,12 +105,9 @@
window.location.href = "olduser.html"; window.location.href = "olduser.html";
}else{ }else{
if(data.account.status == 1){ if(data.account.status == 1){
if(account.roleCategory == 1 || isSuper){
window.location.href = "index.html#/manage/app"; window.location.href = "index.html#/manage/app";
}else{
window.location.href = "index.html";
} }
}else{ else{
window.location.href = "index.html#/active/product"; window.location.href = "index.html#/active/product";
} }
} }
......
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
}); });
},200); },200);
//启用停用 //启用停用
$scope.onOff = function(id,flag){ $scope.onOff = function(info){
var url = "mng/app/enable/"+id,tipmsg = "启用成功"; var url = "mng/app/enable/"+info.id,tipmsg = "启用成功";
if(flag && flag==1){ if(info.regedbutton){
url = "mng/app/forbidden/"+id; url = "mng/app/forbidden/"+info.id;
tipmsg = "停用成功"; tipmsg = "停用成功";
} }
var userPM = HttpService.putInfo(url,{}); var userPM = HttpService.putInfo(url,{});
...@@ -61,6 +61,22 @@ ...@@ -61,6 +61,22 @@
}); });
} }
$scope.limitCount = 9;
$scope.isShow = function() {
if(!$scope.appAlllistInfo){
return false;
}
$scope.resultList = $scope.appAlllistInfo;
if($scope.resultList && $scope.resultList.length > $scope.limitCount){
return true;
}else{
return false;
}
}
$scope.getMore = function(){
$scope.limitCount += $scope.limitCount+9;
};
$scope.gopage = function(id,flag){ $scope.gopage = function(id,flag){
if(flag){ if(flag){
isLog = true; isLog = true;
...@@ -75,7 +91,8 @@ ...@@ -75,7 +91,8 @@
} }
} }
$scope.goReport = function(info){ $scope.goReport = function(info,e){
if($(e.target).hasClass('copyBtn')) return;
$rootScope.isweb = info.platform == 'H5'; $rootScope.isweb = info.platform == 'H5';
$scope.$emit("mngappTo",info.id); $scope.$emit("mngappTo",info.id);
......
...@@ -309,11 +309,18 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -309,11 +309,18 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
background-position:-130px -117px; background-position:-130px -117px;
cursor: pointer; cursor: pointer;
} }
.rightHeader .wapSetInfo{ .rightHeader .wapSetInfo{
float:right; float:right;
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
line-height: $iptheight; line-height: $iptheight;
label{
font-size: 14px;
color: #ffffff;
padding-left: 6px;
cursor: pointer;
}
} }
.helpIcon{ .helpIcon{
@extend .myicon; @extend .myicon;
...@@ -461,13 +468,17 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -461,13 +468,17 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
margin-left: 3px; margin-left: 3px;
} }
.copyBtnIcon{ .copyBtnIcon{
@extend .settingIcon; background: url(../images/copy.png) no-repeat;
background-position:-33px -100px;
width:12px; width:12px;
height:12px; height:12px;
display: inline-block; display: inline-block;
vertical-align:middle; vertical-align:middle;
margin-left: 3px; margin-left: 3px;
margin-top: -3px;
cursor: pointer;
&:hover{
background: url(../images/copy_hover.png) no-repeat;
}
} }
.rightHeader .helpInfo:hover{ .rightHeader .helpInfo:hover{
...@@ -518,6 +529,18 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -518,6 +529,18 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
line-height: 25px; line-height: 25px;
padding-bottom:15px; padding-bottom:15px;
} }
.userInfoWrap .userInfoBottom .itemBtn{
background:#ffffff;
border:1px solid #c9c9c9;
border-radius:3px;
color:#333333;
width:70px;
height:28px;
text-align: center;
display: inline-block;
line-height: 28px;
margin-right: 14px;
}
.flowCircle { .flowCircle {
background:#ff3000; background:#ff3000;
...@@ -551,9 +574,9 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -551,9 +574,9 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
} }
.userInfoWrap .userInfoBottom{ .userInfoWrap .userInfoBottom{
height: 38px; height: 38px;
background-color:$userbottombg;
border-top:1px solid $userbottombr;
line-height: 38px; line-height: 38px;
text-align: center;
padding-bottom: 24px;
} }
.userInfoBottom .itemInfo{ .userInfoBottom .itemInfo{
width:49%; width:49%;
...@@ -564,6 +587,10 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -564,6 +587,10 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
.userInfoBottom .itemInfo:hover{ .userInfoBottom .itemInfo:hover{
color:$menuliactiveft; color:$menuliactiveft;
} }
.userInfoBottom .itemBtn:hover{
border:1px solid $menuliactiveft;
color:$menuliactiveft;
}
.userInfoBottom .itemInfo:first-child{ .userInfoBottom .itemInfo:first-child{
border-right:1px solid $userbottombr; border-right:1px solid $userbottombr;
} }
...@@ -616,7 +643,16 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -616,7 +643,16 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
.userInfoBotton{ .userInfoBotton{
width:49% !important; width:49% !important;
} }
.app_icon{
background:url(../images/app.png) no-repeat;
display: inline-block;
width: 16px;
height: 16px;
line-height: 34px;
vertical-align: middle;
margin-top: -3px;
margin-right: -6px;
}
.userIcon{ .userIcon{
@extend .myicon; @extend .myicon;
height:16px; height:16px;
...@@ -696,7 +732,7 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;} ...@@ -696,7 +732,7 @@ ul li .darklabel,.darklabel{color:$darkfontcolor;}
height:5px; height:5px;
width:8px; width:8px;
float:right; float:right;
margin-top:14px; margin-top:7px;
margin-right:10px; margin-right:10px;
background-position:-128px -160px; background-position:-128px -160px;
cursor: pointer; cursor: pointer;
...@@ -1082,6 +1118,7 @@ textarea.iptform{ ...@@ -1082,6 +1118,7 @@ textarea.iptform{
} }
.sidebarNav li.subli{ .sidebarNav li.subli{
border-left-color:transparent; border-left-color:transparent;
border-left-width: 3px;
} }
.sidebarNav a{ .sidebarNav a{
text-decoration:none; text-decoration:none;
...@@ -3669,7 +3706,7 @@ pre{ ...@@ -3669,7 +3706,7 @@ pre{
.selList.appWrap>span{ .selList.appWrap>span{
color:#ffffff; color:#ffffff;
float:right; // float:right;
margin-right:30px; margin-right:30px;
} }
.selList:hover,.selList.active{ .selList:hover,.selList.active{
...@@ -3761,8 +3798,13 @@ pre{ ...@@ -3761,8 +3798,13 @@ pre{
display:block; display:block;
margin:20px auto; margin:20px auto;
border-color:#5f97fb; border-color:#5f97fb;
border-radius:16px; // border-radius:16px;
background-color:#5f97fb; background-color:#5f97fb;
border-left:1px solid #ffffff;
font-size: 14px;
height: 20px;
line-height: 20px;
margin-top: 7px;
} }
.selList.appWrap b,.selList.appWrap i,.platformIcon{ .selList.appWrap b,.selList.appWrap i,.platformIcon{
@extend .icon0413; @extend .icon0413;
...@@ -4972,10 +5014,10 @@ pre{ ...@@ -4972,10 +5014,10 @@ pre{
top:10px; top:10px;
} }
.onOffBtn{ .onOffBtn{
background-color:#d8d8d8; background-color:#d3d2d2;
width:34px; width:24px;
height:18px; height:14px;
border-radius:9px; border-radius:29px;
display:inline-block; display:inline-block;
vertical-align:middle; vertical-align:middle;
margin-left:10px; margin-left:10px;
...@@ -4984,8 +5026,8 @@ pre{ ...@@ -4984,8 +5026,8 @@ pre{
} }
.onOffBtn:before{ .onOffBtn:before{
content:""; content:"";
width:12px; width:8px;
height:12px; height:8px;
border-radius:50%; border-radius:50%;
background-color:#fff; background-color:#fff;
position:absolute; position:absolute;
...@@ -4993,7 +5035,7 @@ pre{ ...@@ -4993,7 +5035,7 @@ pre{
top:3px; top:3px;
} }
.onOffBtn.on{ .onOffBtn.on{
background-color:#6cc9ee; background-color:#87b2ff;
} }
.onOffBtn.on:before{ .onOffBtn.on:before{
left:inherit; left:inherit;
...@@ -6877,3 +6919,128 @@ pre{ ...@@ -6877,3 +6919,128 @@ pre{
float: right; float: right;
} }
} }
.appList{
margin-right: -14px;
.appWrap{
width: 33.333%;
float: left;
box-sizing: border-box;
padding-right: 14px;
padding-top: 14px;
display: inline-block;
height:140px;
.app{
background:#ffffff;
height: 100%;
border:1px solid #e4e4e4;
border-radius:3px;
cursor: pointer;
&:hover{
border: 1px solid $logobg;
box-shadow:0 1px 4px 0 rgba(0,0,0,0.10);
}
.setting{
background: url(../images/settings.png) no-repeat;
width:16px;
height:16px;
cursor: pointer;
margin-right: 20px;
float: right;
position: relative;
&:hover{
background: url(../images/settings_hover.png) no-repeat;
}
ul{
background:#ffffff;
border:1px solid #e4e4e4;
box-shadow:0 1px 5px 0 rgba(0,0,0,0.10);
border-radius:3px;
width:78px;
position: absolute;
top:17px;
right: 0px;
li{
height:32px;
line-height: 32px;
padding-left: 10px;
&:hover{
color: $menuliactiveft;
}
}
}
}
.iconfont{
margin-left: 0px;
color:#5f97fb;
}
.title{
font-size:16px;
color:#333333;
cursor: pointer;
}
.key{
font-size:12px;
color:#666666;
margin-left: 20px;
margin-top: 20px;
}
.bottom{
font-size:12px;
color:#666666;
margin-left: 20px;
margin-top: 14px;
span:last-child{
margin-right: 20px;
}
.debugbtn{
background:#ffa331;
border-radius:3px;
width:70px;
height:26px;
color: #ffffff;
text-align: center;
line-height: 26px;
display: inline-block;
cursor: pointer;
}
}
}
}
.more{
text-align: center;
margin: auto;
color:#1964d4;
cursor: pointer;
clear: both;
padding-top: 20px;
width: auto;
span:before{
content: "";
background: url(../images/drop.png) no-repeat;
width: 10px;
height: 11px;
display: inline-block;
}
label{
padding-left: 5px;
color: #b5b0b0;
display: inline-block;
}
}
.noData{
text-align: center;
span{
background: url(../images/no_data.png) no-repeat center center;
display: inline-block;
width:41px;
height:41px;
margin-top: 80px;
}
div{
font-size:14px;
color:#999999;
padding-top: 10px;
}
}
}
...@@ -16,21 +16,21 @@ $lightfontcolor:#999; ...@@ -16,21 +16,21 @@ $lightfontcolor:#999;
$labelfontcolor:#666; $labelfontcolor:#666;
$blackfontcolor:#171a1e; $blackfontcolor:#171a1e;
$disfontcolor:#c8c8c8; $disfontcolor:#c8c8c8;
$activebgcolor:#00a9e8; $activebgcolor:#1964d4;
$activeftcolor:#fff; $activeftcolor:#fff;
$iptheight:34px; $iptheight:34px;
$btnheight:34px; $btnheight:34px;
$comradius:3px; $comradius:3px;
$btndiscolor:#dcdcdc; $btndiscolor:#dcdcdc;
$btnformcolor:#01b9e0; $btnformcolor:#1964d4;
$btngraybg:#cbcbcb; $btngraybg:#cbcbcb;
$btngraybg1:#fbfbfb; $btngraybg1:#fbfbfb;
$disbgcolor:#f9f9f9; $disbgcolor:#f9f9f9;
$nofontcolor:#bababa; $nofontcolor:#bababa;
$tipftcolor:#b5b0b0; $tipftcolor:#b5b0b0;
$comactiveftcolor:#00a9e8; //font active color eg:blue $comactiveftcolor:#1964d4; //font active color eg:blue
$loadingbarcolor:#00a9e8; $loadingbarcolor:#5f97fb;
$darkbluecolor:#4e93cf; $darkbluecolor:#4e93cf;
$disbtncolor:#b8b8b8; $disbtncolor:#b8b8b8;
...@@ -43,7 +43,9 @@ $menulibw:3px; //li border-width ...@@ -43,7 +43,9 @@ $menulibw:3px; //li border-width
$menuliactivebc:#5f97fb; $menuliactivebc:#5f97fb;
$menuliactivebg:#f1f3f5; $menuliactivebg:#f1f3f5;
$menuliactiveft:#4186ec; $menuliactiveft:#4186ec;
$submenuliactiveft:#00a9e8; $menulihoverbg:#f5f5f8;
$menulihoverft:#525559;
$submenuliactiveft:#1964d4;
$wraptitleH:50px; $wraptitleH:50px;
$wraptitlebgc:#fbfbfb; //bg-color $wraptitlebgc:#fbfbfb; //bg-color
...@@ -84,13 +86,13 @@ $labeldisft:#b4b4b4; ...@@ -84,13 +86,13 @@ $labeldisft:#b4b4b4;
$labeldisbr:#c9c9c9; $labeldisbr:#c9c9c9;
$labeldistips:#e74646; $labeldistips:#e74646;
$selectactivebr:#00a9e8; $selectactivebr:#1964d4;
$optionbr:#c9c9c9; $optionbr:#c9c9c9;
$optionliheight:34px; $optionliheight:34px;
$optionlifc:#666666; $optionlifc:#666666;
$optionpad:16px; $optionpad:16px;
$optionliactivebg:#edfaff; $optionliactivebg:#edfaff;
$optionliactivefc:#00a9e8; $optionliactivefc:#1964d4;
$datebr:#c9c9c9; $datebr:#c9c9c9;
$datewrapgap:20px; $datewrapgap:20px;
...@@ -102,7 +104,7 @@ $datethfc:#2f6fa6; ...@@ -102,7 +104,7 @@ $datethfc:#2f6fa6;
$datelabelfc:#666666; $datelabelfc:#666666;
$datedisfc:#999999; $datedisfc:#999999;
$datefz:12px; $datefz:12px;
$dateactivecolor:#00a9e8; $dateactivecolor:#1964d4;
$dateradius:13px; $dateradius:13px;
$datecellhw:26px; $datecellhw:26px;
$datewcellhw:40px; $datewcellhw:40px;
......
<div class="mb20">
<h3>全部产品</h3>
</div>
<div class="btn3 mb20" ng-click="gopage()" ng-if="(appAlllistInfo.length<limitInfo.appNum || limitInfo.appNum==-1) && (isManage || isSuper)"><span class="formAddIcon"></span>新建产品</div> <div class="btn3 mb20" ng-click="gopage()" ng-if="(appAlllistInfo.length<limitInfo.appNum || limitInfo.appNum==-1) && (isManage || isSuper)"><span class="formAddIcon"></span>新建产品</div>
<div class="btn2 big dis mb20" ng-if="(appAlllistInfo.length>=limitInfo.appNum && limitInfo.appNum!=-1) || (!isSuper && !isManage)"><span class="formAddIcon dis"></span>新建产品</div> <div class="btn2 big dis mb20" ng-if="(appAlllistInfo.length>=limitInfo.appNum && limitInfo.appNum!=-1) || (!isSuper && !isManage)"><span class="formAddIcon dis"></span>新建产品</div>
<span class="tiplabel" ng-if="limitInfo.appNum!=-1">主账号仅允许创建{{limitInfo.appNum}}个产品,如需升级请联系商务。</span> <span class="tiplabel" ng-if="limitInfo.appNum!=-1">主账号仅允许创建{{limitInfo.appNum}}个产品,如需升级请联系商务。</span>
<div class="clear"></div> <div class="searchWrap">
<div class="wrapTitle formTitleWrap">
<span>产品管理</span>
<div class="searchWrap">
<input type="text" class="searchIpt" ng-model="searchTxt" placeholder="搜索产品名称或APPKEY"> <input type="text" class="searchIpt" ng-model="searchTxt" placeholder="搜索产品名称或APPKEY">
</div>
</div> </div>
<div class="tableList yeswrap"> <div class="clear"></div>
<table>
<tr> <div class="appList">
<th>序号</th> <div ng-if="resultList.length>0" class="appWrap" ng-repeat="info in appAlllistInfo | limitTo:limitCount | filterList:searchTxt:'name,appkey' as filterResult track by $index">
<th>平台</th> <div class="app" ng-click="goReport(info,$event)">
<th>产品名称</th> <div class="ml20 mt20">
<th>APPKEY</th> <div class="iconfont platform" ng-class="{'iOS':'icon-ios','Android':'icon-android','H5':'icon-wrap'}[info.platform]"></div>
<th style="width:150px;">创建时间</th> <span class="title">{{info.name}}</span>
<th style="width:110px;">操作</th>
</tr>
<tr ng-repeat="info in appAlllistInfo | filterList:searchTxt:'name,appkey' track by $index" ng-if="$index>flipPage.start && $index < flipPage.end">
<td>{{$index+1}}</td>
<td>
<div class="appicon" style="margin-left: 0px;" ng-class="{'iOS':'apple','Android':'android','H5':'web'}[info.platform]"></div>
</td>
<td ng-if="!info.isDebug">
<span class="ckblue" ng-click="goReport(info)">{{info.name}}</span>
<span class="copyBtnIcon copyBtn" data-clipboard-text="{{info.name}}" title="点击复制"></span> <span class="copyBtnIcon copyBtn" data-clipboard-text="{{info.name}}" title="点击复制"></span>
</td> <span class="setting" ng-click="info.isShow=!info.isShow" stop-event>
<td ng-if="info.isDebug"> <ul ng-show="info.isShow" ng-mouseleave="info.isShow=false">
{{info.name}} <li ng-click="gopage(info.id)">编辑</li>
</td> <li ng-click="doRemove(info.id)" ng-if="specialsAppkey.indexOf(info.appkey)==-1 && !isAppManage">删除</li>
<td>{{info.appkey}}</td> </ul>
<td>{{info.createTime | date:'yyyy-MM-dd HH:mm:ss'}}</td> </span>
<td class="formOper"> </div>
<div class="formBtn" ng-click="gopage(info.id)" style="margin-right: 10px;"><span class="editIcon"></span>编辑</div> <div class="key">APPKEY:{{info.appkey}}
<div class="formBtn" ng-click="doRemove(info.id)" ng-if="specialsAppkey.indexOf(info.appkey)==-1" style="margin-right: 10px;"><span class="removeIcon"></span>删除</div> <span class="copyBtnIcon copyBtn" data-clipboard-text="{{info.appkey}}" title="点击复制"></span>
<!-- <div class="formBtn" ng-click="gopage(info.id,1)" ng-if="info.isDebug" style="margin-right: 10px;">调试</div> --> </div>
<!-- <span class="label" ng-if="!info.isDebug" style="color:#999">已调试</span> --> <div class="bottom">
</td> <span stop-event>自动生成日志<div class="onOffBtn" ng-class="{'on':info.regedbutton == true}" ng-click="onOff(info)"></div></span>
</tr> <span class="right">创建时间:{{info.createTime | date:'yyyy-MM-dd HH:mm:ss'}}</span>
</table> </div>
<del-tip status="delstatus" delfn="removeInfo()">确定删除该产品?<br><b class="error">此应用的数据将彻底删除,无法恢复!</b></del-tip> </div>
</div>
<div class="more" ng-click="getMore()" ng-show="isShow() && filterResult.length>0"><span>更多产品<label>(共{{resultList.length}}个产品)</label></span></div>
<div class="noData" ng-if="resultList.length==0">
<span></span>
<div>暂无产品</div>
</div>
<div class="noData" ng-if="filterResult.length==0">
<span></span>
<div>无搜索结果</div>
</div>
</div> </div>
<flip-info list-info="appAlllistInfo" search-txt="searchTxt" search-name="name,appkey"></flip-info> <del-tip status="delstatus" delfn="removeInfo()">确定删除该产品?<br><b class="error">此应用的数据将彻底删除,无法恢复!</b></del-tip>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment