Commit eccf5c70 authored by “yiyousong”'s avatar “yiyousong”
parents bdbbe25e 60e1d7a3
......@@ -13468,6 +13468,69 @@ msg|String|消息|-
```
## 人员流量统计
### 查询人员流量统计报表
**请求URL:** refined/realtime/dataflow/stat/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询人员流量统计
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
**请求样例:**
```
{
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键ID,主键,自增长
  siteId|Long|站点Id
  siteName|String|站点名称
  personSum|Integer|人流总数
  strangerSum|Integer|陌生人数量
  recoginzeSum|Integer|识别注册群众数量
  year|Integer|年
  month|Integer|月
  day|Integer|日
  hour|Integer|小时
  createTime|Date|创建时间
  createUserId|Long|创建人id
  updateTime|Date|更新时间
  updateUserId|Long|更新人id
dict|object|字典对象
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
## 字典附录
......
......@@ -43,5 +43,6 @@ public interface ParamService extends ICRUDCacheService<ParamEntity, Long>, IPar
* @return
*/
Map<String, String> getParamBySecondOrganize(String firstOrganize,String secondOrganize, String... excludeParamKeys);
Map<String, String> getParamBySecondOrganizeOrder(String firstOrganize,String secondOrganize, String... excludeParamKeys);
}
\ No newline at end of file
......@@ -12,9 +12,7 @@ import com.mortals.xhx.base.system.param.model.ParamEntity;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -76,6 +74,18 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par
}
public Map<String, String> getParamBySecondOrganizeOrder(String firstOrganize, String secondOrganize, String... excludeParamKeys) {
List<ParamEntity> list = this.getCacheList();
return list.stream()
.filter(f -> firstOrganize.equals(f.getFirstOrganize()))
.filter(f -> secondOrganize.equals(f.getSecondOrganize()))
.filter(s ->
!Arrays.asList(excludeParamKeys).contains(s.getParamKey())
).sorted(Comparator.comparing(ParamEntity::getDisplayType)).collect(Collectors.toMap(x -> x.getParamKey(), y -> y.getParamValue(), (o, n) -> n, LinkedHashMap::new));
}
@Override
public boolean needRefresh() {
if (super.cacheService.isShareCache()) {
......
package com.mortals.xhx.busiz;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
public class SignRsaDemo {
static String PUBLICKEY = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIwYDUWp+QkuihFJxWJmAQ0ZmdTVbOg7yETtckUZkUQ6JUKEzKz9UIbmjrKS8kLY39QDjyzCuOzBR2eF2ZrS89MCAwEAAQ==";
static String user = "yibinTFTB";
static String pwd = "f82c10dea5fc4936853ff90e576ac216";
/**
* RSA公钥加密
*
* @param str 加密字符串
* @param publicKey 公钥
* @return 密文
* @throws Exception 加密过程中的异常信息
*/
public static String encrypt(String str, String publicKey) throws Exception {
//base64编码的公钥
byte[] decoded = Base64.decodeBase64(publicKey);
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA")
.generatePublic(new X509EncodedKeySpec(decoded));
//RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
return outStr;
}
/**
* RSA私钥解密
*
* @param str 加密字符串
* @param privateKey 私钥
* @return 明文
* @throws Exception 解密过程中的异常信息
*/
public static String decrypt(String str, String privateKey) throws Exception {
//64位解码加密后的字符串
byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
//base64编码的私钥
byte[] decoded = Base64.decodeBase64(privateKey);
RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA")
.generatePrivate(new PKCS8EncodedKeySpec(decoded));
//RSA解密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, priKey);
String outStr = new String(cipher.doFinal(inputByte));
return outStr;
}
public static void main(String[] args) throws Exception {
Long curTime = System.currentTimeMillis();
System.out.println("====== curTime:" + curTime);
String pwdRsa = pwd + "#" + curTime;
System.out.println("====== pwdRsa:" + pwdRsa);
pwdRsa = encrypt(pwdRsa, PUBLICKEY);
System.out.println("====== pwdRsa:" + pwdRsa);
String param = "{\"USER\":\"" + user + "\",\"PWD\":\"" + pwdRsa + "\"}";
System.out.println("====== param:" + param);
param = Base64.encodeBase64String(param.getBytes("UTF-8"));
System.out.println("====== param:" + param);
String request = "{\"idCardNo\":\"41010229611620007X\",\"orgNo\":\"10080000\"}";
request = Base64.encodeBase64String(request.getBytes("UTF-8"));
System.out.println("====== request:" + request);
}
}
......@@ -16,5 +16,8 @@ public class MidReq{
private String path;
//1 sha加密 2 rsa加密提交
private Integer type;
}
......@@ -12,7 +12,9 @@ import com.mortals.xhx.busiz.req.MidReq;
import com.mortals.xhx.busiz.rsp.SignResp;
import com.mortals.xhx.common.utils.EncryptionUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -32,7 +34,7 @@ import java.util.Map;
@Slf4j
public class MidSignApiController {
@Value("${mid.midUrl:http://172.15.28.117:9000}")
@Value("${mid.midUrl:http://112.19.80.237:9000/masm_agent}")
private String midUrl;
@Value("${mid.appId:01C67D56D0630517}")
......@@ -44,6 +46,14 @@ public class MidSignApiController {
@Value("${mid.secretKey:ad80c59e575a78ab}")
private String secretKey;
@Value("${mid.publickey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIwYDUWp+QkuihFJxWJmAQ0ZmdTVbOg7yETtckUZkUQ6JUKEzKz9UIbmjrKS8kLY39QDjyzCuOzBR2eF2ZrS89MCAwEAAQ==}")
private String publickey = "";
@Value("${mid.user:yibinTFTB}")
private String user;
@Value("${mid.pwd:f82c10dea5fc4936853ff90e576ac216}")
private String pwd;
@PostMapping(value = "sign")
@UnAuth
public Rest<SignResp> midSign(@RequestBody MidReq midReq) {
......@@ -51,7 +61,7 @@ public class MidSignApiController {
try {
Map<String, String> headerMap = new HashMap<>();
if("post".equalsIgnoreCase(midReq.getMethod())){
if ("post".equalsIgnoreCase(midReq.getMethod())) {
headerMap.put("appId", appId);
headerMap.put("appKey", appKey);
JSONObject object1 = JSONObject.parseObject(midReq.getBody());
......@@ -67,14 +77,14 @@ public class MidSignApiController {
signResp.setTimeStamp(timeStamp);
signResp.setNonce(nonce);
signResp.setSecretKey(secretKey);
}else if("get".equalsIgnoreCase(midReq.getMethod())){
} else if ("get".equalsIgnoreCase(midReq.getMethod())) {
HashMap<String, String> paramsMap = JSON.parseObject(midReq.getBody(), HashMap.class);
if (!paramsMap.isEmpty()) {
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
headerMap.put(entry.getKey(), entry.getValue());
}
}
}else {
} else {
}
......@@ -96,13 +106,14 @@ public class MidSignApiController {
signResp.setSign(sign);
return Rest.ok(signResp);
} catch (Exception e) {
log.error("签名异常",e);
log.error("签名异常", e);
return Rest.fail("签名异常!");
}
}
/**
* 透传请求
*
* @param midReq
* @return
*/
......@@ -119,20 +130,8 @@ public class MidSignApiController {
String nonce = RandomUtil.randomNumbers(6);
headerMap.put("nonce", nonce);
headerMap.put("secretKey", secretKey);
if("post".equalsIgnoreCase(midReq.getMethod())){
JSONObject object1 = JSONObject.parseObject(midReq.getBody());
headerMap.put("body", object1.toJSONString());
}else if("get".equalsIgnoreCase(midReq.getMethod())){
/* HashMap<String, String> paramsMap = JSON.parseObject(midReq.getBody(), HashMap.class);
if (!paramsMap.isEmpty()) {
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
headerMap.put(entry.getKey(), entry.getValue());
}
}*/
}else{
JSONObject object1 = JSONObject.parseObject(midReq.getBody());
headerMap.put("body", object1.toJSONString());
}
JSONObject object = JSONObject.parseObject(midReq.getBody());
headerMap.put("body", object.toJSONString());
signSb.append("appId").append("=").append(headerMap.get("appId")).append("&");
signSb.append("appKey").append("=").append(headerMap.get("appKey")).append("&");
......@@ -144,22 +143,62 @@ public class MidSignApiController {
log.info("签名源字符串: " + signStr);
String sign = EncryptionUtils.SHA256(signStr);
log.info("签名计算结果: " + sign);
headerMap.put("sign", sign);
//请求转发
String fullUrl =UrlBuilder.ofHttp(midUrl).addPath(midReq.getPath()).build();
//String fullUrl = URLUtil.completeUrl(midUrl, midReq.getPath());
log.info("mid url:{},body:{}",fullUrl,headerMap.get("body"));
String body = HttpUtil.createRequest(Method.POST, fullUrl).headerMap(headerMap, true).body(headerMap.get("body")).execute().body();
JSONObject bodyJson = JSONObject.parseObject(body);
log.info("mid resp:"+bodyJson.toJSONString());
return Rest.ok(bodyJson.toJSONString());
if (ObjectUtils.isEmpty(midReq.getType()) || midReq.getType() == 2) {
//rsa提交
//todo 添加rsa非对称加密
String pwdRsa = pwd + "#" + timeStamp;
pwdRsa = EncryptionUtils.encrypt(pwdRsa, publickey);
String param = "{\"USER\":\"" + user + "\",\"PWD\":\"" + pwdRsa + "\"}";
param = Base64.encodeBase64String(param.getBytes("UTF-8"));
headerMap.put("param", param);
String request = Base64.encodeBase64String(object.toJSONString().getBytes("UTF-8"));
JSONObject reqBody = new JSONObject();
reqBody.put("request", request);
String fullUrl = midUrl + midReq.getPath();
log.info("url:{} \n body:{} \n", fullUrl, reqBody.toJSONString());
String body = HttpUtil.createRequest(Method.POST, fullUrl).headerMap(headerMap, true).body(reqBody.toJSONString()).execute().body();
JSONObject bodyJson = JSONObject.parseObject(body);
log.info("mid resp:" + bodyJson.toJSONString());
return Rest.ok(bodyJson.toJSONString());
} else {
//sha加密提交
String fullUrl = midUrl + midReq.getPath();
if ("post".equalsIgnoreCase(midReq.getMethod())) {
log.info("mid post url:{},body:{}", fullUrl, headerMap.get("body"));
String body = HttpUtil.createRequest(Method.POST, fullUrl).headerMap(headerMap, true).body(headerMap.get("body")).execute().body();
JSONObject bodyJson = JSONObject.parseObject(body);
log.info("mid resp:" + bodyJson.toJSONString());
return Rest.ok(bodyJson.toJSONString());
} else if ("get".equalsIgnoreCase(midReq.getMethod())) {
Map<String, Object> paramsMap = JSON.parseObject(midReq.getBody(), HashMap.class);
log.info("mid get url:{},body:{}", fullUrl, JSON.toJSONString(paramsMap));
// if (!paramsMap.isEmpty()) {
// for (Map.Entry<String, Object> entry : paramsMap.entrySet()) {
// headerMap.put(entry.getKey(), entry.getValue());
// }
// }
String body = HttpUtil.createRequest(Method.GET, fullUrl).headerMap(headerMap, true).form(paramsMap).execute().body();
JSONObject bodyJson = JSONObject.parseObject(body);
log.info("mid resp:" + bodyJson.toJSONString());
return Rest.ok(bodyJson.toJSONString());
}else{
log.info("mid post url:{},body:{}", fullUrl, headerMap.get("body"));
String body = HttpUtil.createRequest(Method.POST, fullUrl).headerMap(headerMap, true).body(headerMap.get("body")).execute().body();
JSONObject bodyJson = JSONObject.parseObject(body);
log.info("mid resp:" + bodyJson.toJSONString());
return Rest.ok(bodyJson.toJSONString());
}
}
} catch (Exception e) {
log.error("透传请求异常",e);
log.error("透传请求异常", e);
return Rest.fail("透传请求异常!");
}
}
}
package com.mortals.xhx.common.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
@Slf4j
public class EncryptionUtils {
......@@ -60,4 +67,49 @@ public class EncryptionUtils {
public final static String SHA256(String s){
return digest(s, DigestType.SHA256);
}
/**
* RSA公钥加密
*
* @param str 加密字符串
* @param publicKey 公钥
* @return 密文
* @throws Exception 加密过程中的异常信息
*/
public static String encrypt(String str, String publicKey) throws Exception {
//base64编码的公钥
byte[] decoded = Base64.decodeBase64(publicKey);
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA")
.generatePublic(new X509EncodedKeySpec(decoded));
//RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
return outStr;
}
/**
* RSA私钥解密
*
* @param str 加密字符串
* @param privateKey 私钥
* @return 明文
* @throws Exception 解密过程中的异常信息
*/
public static String decrypt(String str, String privateKey) throws Exception {
//64位解码加密后的字符串
byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
//base64编码的私钥
byte[] decoded = Base64.decodeBase64(privateKey);
RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA")
.generatePrivate(new PKCS8EncodedKeySpec(decoded));
//RSA解密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, priKey);
String outStr = new String(cipher.doFinal(inputByte));
return outStr;
}
}
......@@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
......@@ -38,17 +39,16 @@ public class StatSiteDeptMatterTaskImpl implements ITaskExcuteService {
log.info("开始同步事项列表!");
List<DeptEntity> deptEntities = deptService.find(new DeptQuery());
for (DeptEntity deptEntity : deptEntities) {
int total = matterService.count(new MatterQuery().source(SourceEnum.政务网.getValue()).deptCode(deptEntity.getDeptNumber()), null);
if (total > 0) {
DeptEntity deptQuery = new DeptEntity();
deptQuery.setTotal(total);
deptQuery.setUpdateTime(new Date());
DeptEntity condition = new DeptEntity();
condition.setId(deptEntity.getId());
deptService.getDao().update(deptQuery, condition);
}
MatterQuery matterQuery = new MatterQuery();
matterQuery.setEventTypeShowNotList(Arrays.asList("行政处罚"));
int total = matterService.count(matterQuery.source(SourceEnum.政务网.getValue()).deptCode(deptEntity.getDeptNumber()), null);
DeptEntity deptQuery = new DeptEntity();
deptQuery.setTotal(total);
deptQuery.setUpdateTime(new Date());
DeptEntity condition = new DeptEntity();
condition.setId(deptEntity.getId());
deptService.getDao().update(deptQuery, condition);
}
}
......
......@@ -55,7 +55,7 @@ public class SyncSiteDeviceTaskImpl implements ITaskExcuteService {
devicePdu.setSiteId(site.getId());
devicePdu.setSize(-1);
Rest<RespData<List<DevicePdu>>> deviceRest = deviceFeign.list(devicePdu);
log.info("deviceRest:{}", JSON.toJSONString(deviceRest));
// log.info("deviceRest:{}", JSON.toJSONString(deviceRest));
if (YesNoEnum.YES.getValue() == deviceRest.getCode()) {
List<DevicePdu> devicePduList = deviceRest.getData().getData();
if (!ObjectUtils.isEmpty(devicePduList)) {
......
......@@ -45,4 +45,14 @@ public class AppVo extends BaseEntityLong {
*/
private String deviceCode;
/**
* 源app
*/
private Long sourceAppId;
/**
* 目标app
*/
private Long targetAppId;
}
\ No newline at end of file
......@@ -27,6 +27,10 @@ public interface AppService extends ICRUDService<AppEntity, Long> {
Rest<String> cloneAppsBySites(List<AppEntity> appList, List<SiteEntity> siteList, Context context);
Rest<String> cloneAppBySameSite(AppEntity appEntity, Context context);
AppDao getAppDao();
}
\ No newline at end of file
......@@ -73,8 +73,8 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
@Override
protected void doListBefore(AppEntity query, Map<String, Object> model, Context context) throws AppException {
String serverName = request.getHeader("server-name");
Integer serverPort = DataUtil.converStr2Int(request.getHeader("server-port"),0);
log.info("【应用请求】【请求体】-->serverName{} ,port:{}",serverName ,serverPort);
Integer serverPort = DataUtil.converStr2Int(request.getHeader("server-port"), 0);
log.info("【应用请求】【请求体】-->serverName{} ,port:{}", serverName, serverPort);
query.setServerName(serverName);
query.setServerPort(serverPort);
super.doListBefore(query, model, context);
......@@ -86,7 +86,7 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
entity.setApplianceSiteScope(appEntityList.size());
entity.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
SiteEntity siteEntity = siteService.getCache(entity.getSiteId().toString());
if(!ObjectUtils.isEmpty(siteEntity)){
if (!ObjectUtils.isEmpty(siteEntity)) {
//请求地址 http://domian/app/siteCode/appcode/html
String domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
entity.setCustUrl(UrlBuilder.of(domainUrl)
......@@ -95,7 +95,7 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
.addPath(entity.getAppCode())
.addPath(entity.getVersion().toString())
.toString());
}else{
} else {
entity.setCustUrl("");
}
return super.infoAfter(id, model, entity, context);
......@@ -168,10 +168,31 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
return rest;
}
/**
* app应用克隆给本站点
*/
@PostMapping(value = "cloneAppBySameSite")
public Rest<Void> cloneAppBySameSite(@RequestBody AppEntity appQuery) {
String busiDesc = this.getModuleDesc() + "自助服务应用部署克隆";
Rest<Void> rest = Rest.ok(busiDesc + " 【成功】");
try {
if (ObjectUtils.isEmpty(appQuery.getSourceAppId())) {
throw new AppException("源appId不能为空!");
}
if (ObjectUtils.isEmpty(appQuery.getTargetAppId())) {
throw new AppException("目标appId不能为空!");
}
Rest<String> cloneRest = this.service.cloneAppBySameSite(appQuery, getContext());
if(YesNoEnum.NO.getValue()==cloneRest.getCode()){
return Rest.fail(cloneRest.getMsg());
}
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("应用克隆异常", e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
public static void main(String[] args) {
......@@ -182,7 +203,7 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
String s = UrlBuilder.of(domainUrl).addPath("app").addPath("1").addPath("2").toString();
System.out.println(s);*/
ZipUtil.unzip("F://1672973316144.zip","E://abc");
ZipUtil.unzip("F://1672973316144.zip", "E://abc");
}
......
......@@ -3,6 +3,7 @@ package com.mortals.xhx.module.dept.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.dept.model.vo.DeptVo;
......@@ -43,6 +44,7 @@ public class DeptEntity extends DeptVo {
/**
* 部门电话
*/
@JsonInclude(JsonInclude.Include.ALWAYS)
private String deptTelphone;
/**
* 部门编号
......@@ -391,19 +393,19 @@ public class DeptEntity extends DeptVo {
this.tid = null;
this.tname = null;
this.tname = "";
this.name = null;
this.name = "";
this.simpleName = null;
this.simpleName = "";
this.siteId = null;
this.deptAbb = null;
this.deptAbb = "";
this.deptTelphone = null;
this.deptTelphone = "";
this.deptNumber = null;
this.deptNumber = "";
this.isAutotable = 1;
......
......@@ -6,9 +6,7 @@ import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.utils.PageUtils;
import com.mortals.xhx.common.code.IsBusinessEnum;
import com.mortals.xhx.common.utils.MemoryPagination;
import com.mortals.xhx.module.business.model.BusinessEntity;
import com.mortals.xhx.module.business.model.BusinessMatterEntity;
import com.mortals.xhx.module.business.model.BusinessMatterQuery;
......@@ -55,10 +53,6 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
*/
@Override
protected SiteBusinessEntity findBefore(SiteBusinessEntity params, PageInfo pageInfo, Context context) throws AppException {
//查询所有
pageInfo.setCurrPage(1);
pageInfo.setPrePageResult(-1);
if (!ObjectUtils.isEmpty(params.getIdNotList())) {
Set<Long> notIdSet = params.getIdNotList().stream().collect(Collectors.toSet());
//排除掉了父级,但是子集存在,需要吧父id排除到notlist外
......@@ -91,8 +85,6 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
@Override
protected void findAfter(SiteBusinessEntity params, PageInfo pageInfo, Context context, List<SiteBusinessEntity> list) throws AppException {
//重新内存分页
list = MemoryPagination.pagination(list, params.getSize() == -1 ? list.size() : params.getSize(), params.getPage());
if (!ObjectUtils.isEmpty(params.getIdNotList())) {
//排除掉已经存在的ids
log.info("idNotList:{}", JSON.toJSONString(params.getIdNotList()));
......@@ -180,19 +172,19 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
SiteBusinessEntity siteBusinessEntity = this.get(item);
return this.find(new SiteBusinessQuery().parentId(siteBusinessEntity.getId())).stream();
}).collect(Collectors.toList());
log.info("delete childs list:{}", JSON.toJSONString(childs));
Long[] childIds = childs.stream().map(item -> item.getId()).toArray(Long[]::new);
log.info("delete childs list:{}",JSON.toJSONString(childs));
Long[] childIds = childs.stream().map(item->item.getId()).toArray(Long[]::new);
this.getDao().delete(childIds);
Long[] bussinessIds = childs.stream().map(item -> item.getBusinessId()).toArray(Long[]::new);
log.info("childBussinessIds:{}", JSON.toJSONString(bussinessIds));
if (!ObjectUtils.isEmpty(bussinessIds)) {
businessService.remove(bussinessIds, context);
Long[] bussinessIds = childs.stream().map(item->item.getBusinessId()).toArray(Long[]::new);
log.info("childBussinessIds:{}",JSON.toJSONString(bussinessIds));
if(!ObjectUtils.isEmpty(bussinessIds)){
businessService.remove(bussinessIds,context);
}
Long[] mainIds = this.get(ids, context).stream().map(item -> item.getBusinessId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(mainIds)) {
if(!ObjectUtils.isEmpty(mainIds)){
//删除
businessService.remove(mainIds, context);
businessService.remove(mainIds,context);
}
}
......
......@@ -16,6 +16,7 @@ import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.AreaLevelDxTypeEnum;
import com.mortals.xhx.common.code.AreaLevelEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.pdu.RespData;
......@@ -454,12 +455,10 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
throw new AppException("当前站点无子区域!");
}
siteAreaVo.setAreaCode(areaEntity.getAreaCode());
siteAreaVo.setAreaName("市本级");
siteAreaVo.setAreaName(AreaLevelEnum.getByValue(areaEntity.getAreaLevel()).getValue()==AreaLevelEnum.地市州.getValue()?"市本级":areaEntity.getName());
List<SiteEntity> siteEntityList = this.find(new SiteQuery().areaCode(areaEntity.getAreaCode()));
// List<SiteEntity> siteIdlist = this.getFlatSitesBySiteId(query.getId(), context);
siteAreaVo.setSiteList(siteEntityList);
list.add(siteAreaVo);
//两层结构{xxx:[{sitename:xxx},{}...],bbb:[{sitename:xxx},{}...]}
AreaQuery areaQuery = new AreaQuery();
areaQuery.setPid(areaEntity.getIid());
......
......@@ -2,6 +2,7 @@ package com.mortals.xhx.module.site.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
......@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
/**
......@@ -41,10 +43,9 @@ public class SiteMatterController extends BaseCRUDJsonBodyMappingController<Site
@Override
protected void doListBefore(SiteMatterEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
if(ObjectUtils.isEmpty(query.getEventTypeShowNotList())){
ArrayList<String> notList = new ArrayList<>();
notList.add("行政处罚");
query.setEventTypeShowNotList(notList);
query.setOrderColList(Arrays.asList(new OrderCol("hot", OrderCol.DESCENDING)));
if (ObjectUtils.isEmpty(query.getEventTypeShowNotList())) {
query.setEventTypeShowNotList(Arrays.asList("行政处罚"));
}
}
}
\ No newline at end of file
......@@ -19,7 +19,7 @@ Content-Type: application/json
{
"page":1,
"size":1
"size":10
}
......
......@@ -8,6 +8,7 @@ Content-Type: application/json
"isWorkGuide":1 ,
"filter":1 ,
"page":1,
"source": 0,
"size":-1
}
......
......@@ -124,7 +124,7 @@ client.global.set("Matter_id", JSON.parse(response.body).data.id);
%}
###基础事项查看
GET {{baseUrl}}/matter/info?id=34000
GET {{baseUrl}}/matter/info?id=39654
Accept: application/json
###基础事项编辑
......
......@@ -4,12 +4,12 @@ POST {{baseUrl}}/site/matter/list
Content-Type: application/json
{
"siteId":1,
"page":1,
"deptCode":"008702197",
"siteId": 1,
"page": 1,
"deptId": 414,
"display": 1,
"source": 1,
"size":10
"source": 0,
"size": 10
}
......@@ -18,12 +18,12 @@ POST {{baseUrl}}/site/matter/save
Content-Type: application/json
{
"siteId":2268,
"siteName":"lrt9zi",
"matterId":6861,
"matterName":"cnobgt",
"deptId":1953,
"deptName":"ittgh4"
"siteId": 2268,
"siteName": "lrt9zi",
"matterId": 6861,
"matterName": "cnobgt",
"deptId": 1953,
"deptName": "ittgh4"
}
> {%
......@@ -49,8 +49,8 @@ Content-Type: application/json
Authorization: {{authToken}}
{
"siteId":35,
"matterIds":"1"
"siteId": 35,
"matterIds": "1"
}
......
......@@ -122,8 +122,20 @@ Content-Type: application/json
{
"method":"post",
"path":"/api/edge-service-agent/V2.10/59522c3302b699fd/jbxx",
"body":"{\"areaCode\":\"510727000000\"}"
"type": 2,
"path":"/api/edge-service-agent/1.0/46ce3be3269e8894/cxyhbhsfz_",
"body":"{\"idCardNo\":\"41010229611620007X\",\"orgNo\":\"10080000\"}"
}
### trans1
POST {{baseUrl}}/mid/trans
Content-Type: application/json
{
"method":"post",
"type": 2,
"path":"/api/edge-service-agent/1.0/8d0b663762f8bba6/cxbzlb_",
"body":"{\"accountId\":\"1018145\"}"
}
###短信设置编辑
......
VUE_APP_API_BASE_URL=http://192.168.0.98:11072
\ No newline at end of file
VUE_APP_API_BASE_URL=http://8.136.255.30:11072
\ No newline at end of file
# 开发环境配置
NODE_ENV = development
VUE_APP_API_BASE_URL=http://192.168.0.98:11078
VUE_APP_API_BASE_URL=http://8.136.255.30:11078
#图片显示拼接
VUE_APP_API_IMG_URL=http://192.168.0.98:11078/
VUE_APP_API_IMG_URL=http://8.136.255.30:11078/
#余林
VUE_APP_API_PHP_URL=http://192.168.0.98:8090
VUE_APP_API_PHP_URL=http://8.136.255.30:8090
#宜宾
#VUE_APP_API_BASE_URL=http://10.12.185.213:11072
#正式
VUE_APP_API_PRP_RUL=http://112.19.80.237:11007
#易政秀报表
VUE_APP_API_TEST_RUL=http://8.136.255.30
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_TEST_RUL
let proURL = process.env.VUE_APP_API_PRP_RUL;
// 查询客户管理列表
export function getCustomer(params) {
return http.post(`${baseURL}/eas/customer/list`, params);
}
// 窗口列表
export function windowList(params) {
return http.post(`${proURL}/basics_api/base/window/list`, params);
}
......@@ -2,6 +2,32 @@ import http from "../request/http";
let baseURL = process.env.VUE_APP_API_BASE_URL;
let BASEURL = process.env.VUE_APP_API_PHP_URL;
/* 业务数据分析分析 */
//整体情况
export function getAllInfo(params) {
return http.get(`${BASEURL}/inter/statistic/allInfo`, params);
}
//排队取号
export function getBusinessInfo(params) {
return http.get(`${BASEURL}/inter/statistic/businessInfo`, params);
}
//预约情况
export function getWyInfo(params) {
return http.get(`${BASEURL}/inter/statistic/wyInfo`, params);
}
//取号Top
export function getTopBusiness(params) {
return http.get(`${BASEURL}/inter/statistic/topBusiness`, params);
}
//预约Top
export function getTopWy(params) {
return http.get(`${BASEURL}/inter/statistic/topWy`, params);
}
//业务分析
export function getBusInfoById(params) {
return http.get(`${BASEURL}/inter/statistic/busInfoById`, params);
}
/* 使用行为分析 */
//事件分析
export function getEventCensus(params) {
......
......@@ -190,4 +190,4 @@ export function getImpossibleInfo(params) {
*/
export function getKqalert(params) {
return http.get(`${BASEURL}/admin/kqalert/list`, params);
}
\ No newline at end of file
}
......@@ -351,6 +351,7 @@
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
& > div {
display: flex;
justify-content: flex-start;
......@@ -521,3 +522,8 @@
text-overflow: ellipsis;
white-space: nowrap;
}
.addclass {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
}
\ No newline at end of file
......@@ -6,7 +6,7 @@
sub-title="Sorry, the page you visited does not exist."
>
<template #extra>
<a-button type="primary" @click="$router.push('/home')">
<a-button type="primary" class="addclass" @click="$router.push('/home')">
返回首页
</a-button>
</template>
......
......@@ -31,7 +31,7 @@
/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getList"> 开始分析 </a-button>
<a-button type="primary" class="addclass" @click="getList"> 开始分析 </a-button>
</a-form-model-item>
</a-form-model>
<div class="mt20">
......
......@@ -35,7 +35,7 @@
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getData">
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
......
......@@ -97,7 +97,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -13,7 +13,7 @@
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getData">
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
......
......@@ -13,7 +13,7 @@
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getData">
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
......
......@@ -25,7 +25,7 @@
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getList">
<a-button type="primary" class="addclass" @click="getList">
开始分析
</a-button>
</a-form-model-item>
......
......@@ -13,7 +13,7 @@
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" @click="getData">
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
......
......@@ -6,7 +6,7 @@
<div class="head_title">分析结果</div>
</div>
</template>
<a-row type="flex" align="middle">
<a-row type="flex" align="middle" v-if="formState">
<a-col :span="4">
<div class="f_40 f_center">{{ formState.name }}</div>
<div class="f_center">业务名称</div>
......@@ -24,13 +24,13 @@
</a-col>
<a-col :span="10">
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}">
<a-form-item label="业务级别:">{{ formState.level }}</a-form-item>
<a-form-item label="业务级别:">{{ formState.level ? '二级业务' : '一级业务' }}</a-form-item>
<a-form-item label="父级业务:">{{ formState.parent_name }}</a-form-item>
<a-form-item label="关联事项:">
<a-tag v-for="(item, index) in formState.matter" :key="index">{{ item.matterName }}</a-tag>
</a-form-item>
<a-form-item label="是否预约:">{{ formState.canorder ? '允许' : '不允许'}}</a-form-item>
<a-form-item label="验证方式:">{{ }}</a-form-item>
<a-form-item label="验证方式:">{{testWay.join(',')}}</a-form-item>
</a-form>
</a-col>
</a-row>
......@@ -64,6 +64,7 @@
<script >
import axios from 'axios'
import LineChart from "../Component/line/index.vue";
import {getBusInfoById} from '@/api/dataActuary.js'
export default {
components:{
LineChart
......@@ -98,7 +99,8 @@ import LineChart from "../Component/line/index.vue";
lineData: {},
useNumber: '0',
checkName: '',
formState: {}
formState: {},
testWay:[]
}
},
mounted(){
......@@ -108,25 +110,32 @@ import LineChart from "../Component/line/index.vue";
'$route.query': {
immediate: true,
handler(newVal, oldVal){
this.checkName= newVal
this.getAnalysisData(newVal.name)
this.checkName= newVal.name
this.getAnalysisData()
}
}
},
methods: {
async getAnalysisData(name, val) {
if(val == undefined) {
val= 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/busInfoById',{ params: {bus_name: name, selected: val }}).then((res)=>{
if(res && res.status == 200){
this.formState= res.data.data
console.log(this.formState)
async getAnalysisData() {
const res = await getBusInfoById({bus_name: this.checkName, selected: this.useNumber || 0 })
if(res.code == 1){
if (res.data.phone) this.testWay.push('手机号')
if (res.data.idcardtake) this.testWay.push('身份证')
if (res.data.face) this.testWay.push('人脸')
this.formState= res.data
this.lineData= {
title: '',
legend: ['排队次数','预约次数'],
xData: res.data.qh_list.length > 0 ? res.data.qh_list.map(item=>item.datetime) : res.data.wy_list.map(item=>item.datetime),
dataList: [
{name: '排队次数', data: res.data.qh_list.map(item=>item.nums)},
{name: '预约次数', data: res.data.wy_list.map(item=>item.nums)},
]
}
})
}
},
handleChange(val){
this.getAnalysisData(this.checkName, val)
handleChange(){
this.getAnalysisData()
}
},
}
......
......@@ -236,6 +236,7 @@
<script >
import Pie from "../Component/emptyPie/index.vue"
import axios from 'axios'
import {getAllInfo,getBusinessInfo,getWyInfo,getTopBusiness,getTopWy} from '@/api/dataActuary.js'
import moment from "moment"
export default {
components:{
......@@ -454,127 +455,120 @@ import moment from "moment"
//获取全部基本数据
async getAllData() {
this.nowDate= moment(new Date()).format('YYYY-MM-DD h:mm:ss')
await axios.get('http://192.168.0.98:8090/inter/statistic/allInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
this.situation= res.data.data
this.firstPie= {
name: '占比',
val: res.data.data.lev1_nums,
total: res.data.data.lev1_not_child_nums,
color: '#04CA8F'
}
this.secondPie= {
name: '占比',
val: res.data.data.lev1_has_child_nums,
total: res.data.data.child_nums,
color: '#6394f9'
}
const res = await getAllInfo()
if(res.code == 1){
this.situation= res.data
this.firstPie= {
name: '占比',
val: res.data.lev1_nums,
total: res.data.lev1_not_child_nums,
color: '#04CA8F'
}
})
this.secondPie= {
name: '占比',
val: res.data.lev1_has_child_nums,
total: res.data.child_nums,
color: '#6394f9'
}
}
},
// 排队取号
async getTakeLineData() {
await axios.get('http://192.168.0.98:8090/inter/statistic/businessInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
let arr= res.data.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.lineUp[0][item.id]= item.lev1_nums
this.lineUp[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.lineUp[2][item.id]= item.lev2_nums
this.lineUp[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.lineUpColumns= [...this.lineUpColumns, ...newArr]
this.takeLineTotal=res.data.data.use_bus_nums
this.noTakeLine=res.data.data.not_use_bus_nums
this.thirdPie= {
name: '占比',
val: res.data.data.not_use_bus_nums,
total: res.data.data.use_bus_nums,
color: '#04CA8F'
const res = await getBusinessInfo()
if(res.code == 1){
let arr= res.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.lineUp[0][item.id]= item.lev1_nums
this.lineUp[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.lineUp[2][item.id]= item.lev2_nums
this.lineUp[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.lineUpColumns= [...this.lineUpColumns, ...newArr]
this.takeLineTotal=res.data.use_bus_nums
this.noTakeLine=res.data.not_use_bus_nums
this.thirdPie= {
name: '占比',
val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums,
color: '#04CA8F'
}
})
}
},
// 预约情况
async getAppointmentData() {
await axios.get('http://192.168.0.98:8090/inter/statistic/wyInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
let arr= res.data.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.appointment[0][item.id]= item.lev1_nums
this.appointment[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.appointment[2][item.id]= item.lev2_nums
this.appointment[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.appointmentColumns= [...this.appointmentColumns, ...newArr]
this.appointmentTotal=res.data.data.use_bus_nums
this.noAppointment=res.data.data.not_use_bus_nums
this.fourthPie= {
name: '占比',
val: res.data.data.not_use_bus_nums,
total: res.data.data.use_bus_nums,
color: '#04CA8F'
const res = await getWyInfo()
if(res.code == 1){
let arr= res.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.appointment[0][item.id]= item.lev1_nums
this.appointment[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.appointment[2][item.id]= item.lev2_nums
this.appointment[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.appointmentColumns= [...this.appointmentColumns, ...newArr]
this.appointmentTotal=res.data.use_bus_nums
this.noAppointment=res.data.not_use_bus_nums
this.fourthPie= {
name: '占比',
val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums,
color: '#04CA8F'
}
})
}
},
// 取号TOP
async getTakeNumberTop(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topBusiness',{ params: { siteid: '1', selected: val, sort: 'DESC' }}).then((res)=>{
if(res && res.status == 200) {
this.takeNumberTop= res.data.data
}
})
const res = getTopBusiness({selected: val,sort: 'DESC'})
if(res.code == 1) {
this.takeNumberTop= res.data
}
},
// 取号Less
async getTakeNumberLess(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topBusiness',{ params: { siteid: '1', selected: val, sort: 'ASC' }}).then((res)=>{
if(res && res.status == 200) {
this.takeNumberLess= res.data.data
}
})
const res = getTopBusiness({selected: val,sort: 'ASC'})
if(res.code == 1) {
this.takeNumberLess= res.data
}
},
// 预约TOP
async getAppointmentTop(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topWy',{ params: { siteid: '1', selected: val, sort: 'DESC' }}).then((res)=>{
if(res && res.status == 200) {
this.appointmentTop= res.data.data
}
})
const res = getTopWy({selected: val,sort: 'DESC'})
if(res.code == 1) {
this.appointmentTop= res.data
}
},
// 预约LESS
async getAppointmentLess(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topWy',{ params: { siteid: '1', selected: val, sort: 'ASC' }}).then((res)=>{
if(res && res.status == 200) {
this.appointmentLess= res.data.data
}
})
const res = getTopWy({selected: val,sort: 'ASC'})
if(res.code == 1) {
this.appointmentLess= res.data
}
},
changeTakeNumberTopDate(val){
this.getTakeNumberTop(val)
......@@ -598,10 +592,10 @@ import moment from "moment"
justify-content: flex-start;
align-items: center;
.head_title{
font-weight: 700;
font-weight: bold;
font-style: normal;
font-size: 1.125rem;
color: #0595FD;
font-size: 16px;
color: #333;
margin-right: 1.25rem;
}
.head_desc{
......
......@@ -15,8 +15,8 @@
@select="onSelect"
@search="onSearch"
/>
<a-button type="primary" @click="startAnalysis">开始分析</a-button>
<a-button type="primary" v-if="btnShow" @click="backBase">返回</a-button>
<a-button type="primary" class="addclass" @click="startAnalysis">开始分析</a-button>
<a-button type="primary" class="addclass" v-if="btnShow" @click="backBase">返回</a-button>
</div>
</div>
<div class="content_view">
......@@ -130,7 +130,7 @@
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -7,8 +7,8 @@
</div>
<div class="searchBox">
<a-input v-model="peopleName" placeholder="请输入群众名称搜索" style="width: 35.625rem"></a-input>
<a-button type="primary" @click="startAnalysis()">开始分析</a-button>
<a-button type="primary" v-if="btnShow" @click="backBase()">返回</a-button>
<a-button type="primary" class="addclass" @click="startAnalysis()">开始分析</a-button>
<a-button type="primary" class="addclass" v-if="btnShow" @click="backBase()">返回</a-button>
</div>
</div>
<div class="content_view">
......@@ -92,7 +92,7 @@
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -341,8 +341,8 @@ import moment from "moment"
.head_title{
font-weight: 700;
font-style: normal;
font-size: 1.125rem;
color: #0595FD;
font-size: 16px;
color: #333;
margin-right: 1.25rem;
}
.head_desc{
......
......@@ -18,7 +18,7 @@
<a-button @click="">返回</a-button>
</template>
<div style="display: flex;justify-content: space-between;align-items: center;">
<a-button type="primary">导出</a-button>
<a-button type="primary" class="addclass" >导出</a-button>
<diV>
<a-form layout="inline" :model="seacrhForm">
<a-form-item>
......@@ -31,7 +31,7 @@
<a-input placeholder="请输入昵称关键字查询" />
</a-form-item>
<a-form-item>
<a-button type="primary">搜索</a-button>
<a-button type="primary" class="addclass" >搜索</a-button>
</a-form-item>
</a-form>
</diV>
......@@ -226,7 +226,7 @@ import Breadcrumb from "../breadcrumb/index.vue";
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,7 +2,7 @@
<div class="PoliticsShow-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="primary" class="addclass" @click="exportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<span>告警次数:<i>256次</i></span>
......@@ -43,7 +43,7 @@
v-model="BegindAndEndTime">
</a-range-picker>
<a-button type="primary">搜索</a-button>
<a-button type="primary" class="addclass" >搜索</a-button>
</span>
</div>
<div class="main">
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,7 +2,7 @@
<div class="ff p15">
<div class="form-box">
<div class="num-dv">
<a-button :loading="btnLoading" type="success" @click="handleExportTable">
<a-button :loading="btnLoading" type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<div class="ml20">提交总次数:<span style="color:#1890ff;font-weight: bold;">{{ numObj ? numObj.count : 0 }}</span></div>
......@@ -27,7 +27,7 @@
<a-input v-model:value="queryform.keyword" placeholder="请输入标题或者名字关键字搜索" style="width: 220px" />
</a-form-item>
<a-form-item>
<a-button type="primary" @click="getlist">搜索</a-button>
<a-button type="primary" class="addclass" @click="getlist">搜索</a-button>
</a-form-item>
</a-form>
</div>
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -25,7 +25,7 @@
</a-select-option>
</a-select>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
</a-space>
</span>
</div>
......
......@@ -99,7 +99,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,40 +2,21 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="handleExportTable">
<a-button type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b
>评价次数:<i>{{ evaCount }}</i></b
>
<sub
>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub
>
<b>评价次数:<i>{{ evaCount }}</i></b>
<sub>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub>
</div>
<span>
<a-space>
<a-select
v-model="evaChoose"
placeholder="全部评价"
mode="multiple"
style="max-width: 140px"
>
<a-select-option
v-for="item in optonList"
:key="item.id"
:value="item.id"
>{{ item.name }}</a-select-option
>
<a-select v-model="evaChoose" placeholder="全部评价" mode="multiple">
<a-select-option v-for="item in optonList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
</a-select>
<a-select
v-model="evaFrom"
placeholder="全部来源"
mode="multiple"
style="max-width: 160px"
>
<a-select v-model="evaFrom" placeholder="全部来源" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
......@@ -44,69 +25,31 @@
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker
:allowClear="false"
valueFormat="YYYY-MM-DD"
style="width: 200px"
class="range_picker_style"
v-model="BegindAndEndTime"
>
<a-range-picker :allowClear="false" valueFormat="YYYY-MM-DD" style="width: 200px" class="range_picker_style"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input
style="width: 280px"
v-model="searchName"
placeholder="请输入评价人姓名或部门名称搜索"
@pressEnter="handleSearch"
>
<a-input style="width: 280px" v-model="searchName" placeholder="请输入评价人姓名或部门名称搜索" @pressEnter="handleSearch">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="clearnAllChoose">重置</a-button>
</a-space>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="changeTablePage"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text">
<a-avatar
v-if="!text || !baseurl"
shape="square"
:size="40"
icon="user"
/>
<img
v-else
:src="baseurl + '/' + text"
alt=""
srcset=""
style="max-width: 100px; max-height: 100px"
/>
<a-avatar v-if="!text || !baseurl" shape="square" :size="40" icon="user" />
<img v-else :src="baseurl + '/' + text" alt="" srcset="" style="max-width: 100px; max-height: 100px" />
</template>
<template slot="操作" slot-scope="text, record">
<a-button
type="link"
style="color: #ff7370"
@click="handleDel(record.id)"
>删除</a-button
>
<a-button type="link" @click="openHandlingDetails(record)"
>详情</a-button
>
<a-button type="link" style="color: #ff7370" @click="handleDel(record.id)">删除</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails" />
......@@ -483,7 +426,7 @@ export default {
justify-content: space-between;
align-items: center;
& > div {
&>div {
display: flex;
justify-content: flex-start;
align-items: center;
......
......@@ -2,40 +2,21 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="handleExportTable">
<a-button type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b
>评价次数:<i>{{ evaCount }}</i></b
>
<sub
>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub
>
<b>评价次数:<i>{{ evaCount }}</i></b>
<sub>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub>
</div>
<span>
<a-space>
<a-select
v-model="evaChoose"
placeholder="全部评价"
mode="multiple"
style="max-width: 140px"
>
<a-select-option
v-for="item in optonList"
:key="item.id"
:value="item.id"
>{{ item.name }}</a-select-option
>
<a-select v-model="evaChoose" placeholder="全部评价" mode="multiple">
<a-select-option v-for="item in optonList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
</a-select>
<a-select
v-model="evaFrom"
placeholder="全部来源"
mode="multiple"
style="max-width: 160px"
>
<a-select v-model="evaFrom" placeholder="全部来源" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
......@@ -44,69 +25,31 @@
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker
:allowClear="false"
valueFormat="YYYY-MM-DD"
style="width: 200px"
class="range_picker_style"
v-model="BegindAndEndTime"
>
<a-range-picker :allowClear="false" valueFormat="YYYY-MM-DD" style="width: 200px" class="range_picker_style"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input
style="width: 280px"
v-model="searchName"
placeholder="请输入评价人姓名或排号编号搜索"
@pressEnter="handleSearch"
>
<a-input style="width: 280px" v-model="searchName" placeholder="请输入评价人姓名或排号编号搜索" @pressEnter="handleSearch">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="clearnAllChoose">重置</a-button>
</a-space>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="changeTablePage"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text">
<a-avatar
v-if="!text || !baseurl"
shape="square"
:size="40"
icon="user"
/>
<img
v-else
:src="baseurl + '/' + text"
alt=""
srcset=""
style="max-width: 100px; max-height: 100px"
/>
<a-avatar v-if="!text || !baseurl" shape="square" :size="40" icon="user" />
<img v-else :src="baseurl + '/' + text" alt="" srcset="" style="max-width: 100px; max-height: 100px" />
</template>
<template slot="操作" slot-scope="text, record">
<a-button
type="link"
style="color: #ff7370"
@click="handleDel(record.id)"
>删除</a-button
>
<a-button type="link" @click="openHandlingDetails(record)"
>详情</a-button
>
<a-button type="link" style="color: #ff7370" @click="handleDel(record.id)">删除</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails" />
......@@ -486,7 +429,7 @@ export default {
justify-content: space-between;
align-items: center;
& > div {
&>div {
display: flex;
justify-content: flex-start;
align-items: center;
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,40 +2,21 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="handleExportTable">
<a-button type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b
>评价次数:<i>{{ evaCount }}</i></b
>
<sub
>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub
>
<b>评价次数:<i>{{ evaCount }}</i></b>
<sub>统计时间段:{{ BegindAndEndTime[0] }}~{{ BegindAndEndTime[1] }}</sub>
</div>
<span>
<a-space>
<a-select
v-model="evaChoose"
placeholder="全部评价"
mode="multiple"
style="max-width: 140px"
>
<a-select-option
v-for="item in optonList"
:key="item.id"
:value="item.id"
>{{ item.name }}</a-select-option
>
<a-select v-model="evaChoose" placeholder="全部评价" mode="multiple">
<a-select-option v-for="item in optonList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
</a-select>
<a-select
v-model="evaFrom"
placeholder="全部来源"
mode="multiple"
style="max-width: 160px"
>
<a-select v-model="evaFrom" placeholder="全部来源" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
......@@ -44,67 +25,31 @@
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker
style="width: 200px"
:allowClear="false"
valueFormat="YYYY-MM-DD"
class="range_picker_style"
v-model="BegindAndEndTime"
>
<a-range-picker style="width: 200px" :allowClear="false" valueFormat="YYYY-MM-DD" class="range_picker_style"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input
style="width: 280px"
v-model="searchName"
placeholder="请输入评价人姓名或窗口编号搜索"
@pressEnter="handleSearch"
>
<a-input style="width: 280px" v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索" @pressEnter="handleSearch">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="clearnAllChoose">重置</a-button>
</a-space>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="changeTablePage"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text">
<a-avatar
v-if="!text || !baseurl"
shape="square"
:size="40"
icon="user"
/>
<img
v-else
:src="baseurl + '/' + text"
style="max-width: 100px; max-height: 100px"
/>
<a-avatar v-if="!text || !baseurl" shape="square" :size="40" icon="user" />
<img v-else :src="baseurl + '/' + text" style="max-width: 100px; max-height: 100px" />
</template>
<template slot="操作" slot-scope="text, record">
<a-button
type="link"
style="color: #ff7370"
@click="handleDel(record.id)"
>删除</a-button
>
<a-button type="link" @click="openHandlingDetails(record)"
>详情</a-button
>
<a-button type="link" style="color: #ff7370" @click="handleDel(record.id)">删除</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails" />
......@@ -489,7 +434,7 @@ export default {
justify-content: space-between;
align-items: center;
& > div {
&>div {
display: flex;
justify-content: flex-start;
align-items: center;
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -50,7 +50,7 @@
>
</a-range-picker>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -38,7 +38,7 @@
{{ v }}
</a-select-option>
</a-select>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -99,7 +99,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
<template>
<div class="Container">
<div class="header">
<a-button type="success" @click="$router.go(-1)">返回上一级</a-button>
<a-button type="primary" class="addclass" @click="$router.go(-1)">返回上一级</a-button>
</div>
<div class="main">
<div class="left_">
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -37,7 +37,7 @@
>
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,7 +2,7 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button :loading="btnLoading" type="success" @click="handleExportTable">
<a-button :loading="btnLoading" type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>拨打次数:<i>{{total}}</i></b>
......@@ -11,7 +11,7 @@
<a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="getList">搜索</a-button>
<a-button type="primary" class="addclass" @click="getList">搜索</a-button>
</span>
</div>
<div class="main">
......@@ -28,8 +28,8 @@
<script>
import table from "@/mixins/table";
import {getSys12345} from "@/api/dataAdmin"
import {
export2Excel
import {
export2Excel
} from "@/utils/js/exportExcel";
export default {
mixins: [table],
......
......@@ -91,7 +91,7 @@
position: 'absolute', right: 0, bottom: 0, width: '100%', borderTop: '1px solid #e9e9e9',
padding: '10px 16px', background: '#fff', textAlign: 'right', zIndex: 1,
}">
<!-- <a-button type="primary" @click="onClose">
<!-- <a-button type="primary" class="addclass" @click="onClose">
确定
</a-button> -->
<a-button :style="{ marginRight: '8px' }" @click="onClose">
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,7 +2,7 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="handleExportTable" :loading="btnLoading">
<a-button type="primary" class="addclass" @click="handleExportTable" :loading="btnLoading">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>建议次数:<i>{{JYCount}}</i></b>
......@@ -35,7 +35,7 @@
<a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="togetWLLZCount">搜索</a-button>
<a-button type="primary" class="addclass" @click="togetWLLZCount">搜索</a-button>
<a-button @click="resetting">重置</a-button>
</a-space>
</span>
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -2,7 +2,7 @@
<div class="reportForm-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="primary" class="addclass" @click="exportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
</div>
......@@ -46,7 +46,7 @@
>
</a-range-picker>
<a-button type="primary">搜索</a-button>
<a-button type="primary" class="addclass" >搜索</a-button>
</span>
</div>
<div class="main">
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -42,7 +42,7 @@
>
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -40,7 +40,7 @@
v-model="searchForm.time"
>
</a-range-picker>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -39,7 +39,7 @@
>
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -2,31 +2,21 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button
type="success"
@click="handleExportTable"
:loading="btnLoading"
>
<a-button type="primary" class="addclass" @click="handleExportTable" :loading="btnLoading">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b
>叫号次数:<i>{{ tablePagination.total }}</i></b
>
<b>叫号次数:<i>{{ tablePagination.total }}</i></b>
<sub>统计时间段:{{ searchForm.time[0] }}~{{ searchForm.time[1] }}</sub>
</div>
<span>
<a-space>
<a-select v-model="searchForm.id" style="width: 120px">
<a-select v-model="searchForm.id">
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="item in deviceData"
:key="item.id"
:value="item.id"
>
<a-select-option v-for="item in deviceData" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
<a-select v-model="searchForm.style" style="width: 120px">
<a-select v-model="searchForm.style">
<a-select-option value=""> 全部状态 </a-select-option>
<a-select-option v-for="v in style" :key="v.key" :value="v.key">{{
v.name
......@@ -34,34 +24,20 @@
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time">
</a-range-picker>
<a-input
v-model="searchForm.flownum"
placeholder="请输入排队编号搜索"
@pressEnter="handleSearch"
>
<a-input v-model="searchForm.flownum" placeholder="请输入排队编号搜索" @pressEnter="handleSearch">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="resetBtn">重置</a-button>
</a-space>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="changeTablePage"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableList"
>
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableList">
<!-- 序号 -->
<span slot="num" slot-scope="text, record, index">{{
(tablePagination.current - 1) * tablePagination.pageSize + index + 1
......@@ -83,11 +59,7 @@
</template>
<!-- 办理业务 -->
<template slot="business" slot-scope="text">
<a
v-if="text.business"
@click="openBusiness(text.business, text.businessid)"
>{{ text.business }}</a
>
<a v-if="text.business" @click="openBusiness(text.business, text.businessid)">{{ text.business }}</a>
<span v-else>--</span>
</template>
<!-- 办理开始时间 -->
......@@ -98,8 +70,8 @@
<template slot="window_name" slot-scope="text">
{{
text.window_name
? text.window_name + "-" + text.window_fromnum
: "--"
? text.window_name + "-" + text.window_fromnum
: "--"
}}
</template>
<!-- 工作人员 -->
......@@ -119,13 +91,11 @@
</template>
<!-- 状态 -->
<template slot="style" slot-scope="text">
<span
:class="{
'stand-line': text.style === 0,
'on-transact': text.style === 1,
'on-end': text.style === 4,
}"
>
<span :class="{
'stand-line': text.style === 0,
'on-transact': text.style === 1,
'on-end': text.style === 4,
}">
{{ $codeMap.queueState[text.style] }}
</span>
</template>
......@@ -323,7 +293,7 @@ export default {
this.getCalllistArr();
this.getCallQueListArr();
},
mounted() {},
mounted() { },
methods: {
//重置按钮
resetBtn() {
......@@ -501,6 +471,7 @@ export default {
/deep/.ant-spin-container {
display: block !important;
}
.stand-line {
color: #f23a3a;
}
......
......@@ -17,7 +17,7 @@
</h4>
</div>
<template slot="footer">
<a-button type="primary" ghost @click="lookDetails">查看业务分析</a-button>
<a-button type="primary" class="addclass" ghost @click="lookDetails">查看业务分析</a-button>
</template>
</a-modal>
</div>
......
......@@ -17,8 +17,8 @@
</h2>
</div>
<template slot="footer">
<a-button type="primary" ghost @click="openBlockchain">查看TA的数据画像</a-button>
<a-button type="primary" ghost @click="openBlockchain">区块链信息</a-button>
<a-button type="primary" class="addclass" ghost @click="openBlockchain">查看TA的数据画像</a-button>
<a-button type="primary" class="addclass" ghost @click="openBlockchain">区块链信息</a-button>
</template>
</a-modal>
<Blockchain ref="Blockchain" />
......
......@@ -25,8 +25,8 @@
</h2>
</div>
<template slot="footer">
<a-button type="primary" ghost @click="openBlockchain">查看TA的数据画像</a-button>
<a-button type="primary" ghost @click="openBlockchain">区块链信息</a-button>
<a-button type="primary" class="addclass" ghost @click="openBlockchain">查看TA的数据画像</a-button>
<a-button type="primary" class="addclass" ghost @click="openBlockchain">区块链信息</a-button>
</template>
</a-modal>
<Blockchain ref="Blockchain" />
......
......@@ -2,31 +2,21 @@
<div class="queueRecord-Container">
<div class="header_box">
<div>
<a-button
:loading="btnLoading"
type="success"
@click="handleExportTable"
>
<a-button :loading="btnLoading" type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b
>取号次数:<i>{{ tablePagination.total }}</i></b
>
<b>取号次数:<i>{{ tablePagination.total }}</i></b>
<sub>统计时间段:{{ searchForm.time[0] }}~{{ searchForm.time[1] }}</sub>
</div>
<span>
<a-space>
<a-select v-model="searchForm.id" style="width: 120px">
<a-select v-model="searchForm.id">
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="item in deviceData"
:key="item.id"
:value="item.id"
>
<a-select-option v-for="item in deviceData" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
<a-select v-model="searchForm.style" style="width: 120px">
<a-select v-model="searchForm.style">
<a-select-option value=""> 全部状态 </a-select-option>
<a-select-option v-for="v in style" :key="v.key" :value="v.key">{{
v.name
......@@ -34,34 +24,20 @@
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time">
</a-range-picker>
<a-input
v-model="searchForm.flownum"
placeholder="请输入排队编号搜索"
@pressEnter="handleSearch"
>
<a-input v-model="searchForm.flownum" placeholder="请输入排队编号搜索" @pressEnter="handleSearch">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="resetBtn">重置</a-button>
</a-space>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="changeTablePage"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableList"
>
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableList">
<!-- 序号 -->
<span slot="num" slot-scope="text, record, index">{{
(tablePagination.current - 1) * tablePagination.pageSize + index + 1
......@@ -83,11 +59,7 @@
</template>
<!-- 办理业务 -->
<template slot="business" slot-scope="text">
<a
v-if="text.business"
@click="openBusiness(text.business, text.businessid)"
>{{ text.business }}</a
>
<a v-if="text.business" @click="openBusiness(text.business, text.businessid)">{{ text.business }}</a>
<span v-else>--</span>
</template>
<!-- 办理开始时间 -->
......@@ -98,8 +70,8 @@
<template slot="window_name" slot-scope="text">
{{
text.window_name
? text.window_name + "-" + text.window_fromnum
: "--"
? text.window_name + "-" + text.window_fromnum
: "--"
}}
</template>
<!-- 工作人员 -->
......@@ -119,13 +91,11 @@
</template>
<!-- 状态 -->
<template slot="style" slot-scope="text">
<span
:class="{
'stand-line': text.style === 0,
'on-transact': text.style === 1,
'on-end': text.style === 4,
}"
>
<span :class="{
'stand-line': text.style === 0,
'on-transact': text.style === 1,
'on-end': text.style === 4,
}">
{{ $codeMap.queueState[text.style] }}
</span>
</template>
......@@ -329,7 +299,7 @@ export default {
this.getTaskListArr();
this.getQueueDataArr();
},
mounted() {},
mounted() { },
methods: {
//重置按钮
resetBtn() {
......
......@@ -95,7 +95,7 @@ export default {
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
font-size: 14px !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
......
......@@ -4,7 +4,7 @@
<div>
<a-button
:loading="btnLoading"
type="success"
type="primary" class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -40,7 +40,7 @@
>
</a-range-picker>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......
......@@ -20,7 +20,7 @@
<a-select-option value="5"> 自定义 </a-select-option>
</a-select>
<a-button type="primary" @click="getData">搜索</a-button>
<a-button type="primary" class="addclass" @click="getData">搜索</a-button>
</template>
</Head>
<div class="heat_box" v-if="data">
......
......@@ -20,7 +20,7 @@
<a-select-option value="5"> 自定义 </a-select-option>
</a-select>
<a-button type="primary" @click="getData">搜索</a-button>
<a-button type="primary" class="addclass" @click="getData">搜索</a-button>
</template>
</Head>
<div class="echarts">
......
......@@ -33,7 +33,7 @@
<div slot="footer">
<a-button style="margin-left: 10px" @click="resetForm">重置</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
<a-button type="primary" class="addclass" @click="handleOk">确定</a-button>
</div>
</a-modal>
</template>
......
......@@ -201,7 +201,7 @@ export default {
.title {
font-style: normal;
font-weight: bold;
font-size: 1.5rem;
font-size: 20px;
color: #fff;
margin-right: 1rem;
}
......@@ -246,7 +246,7 @@ export default {
line-height: 1.4;
cursor: pointer;
margin: 0 0.7rem;
font-size: 0.5rem;
font-size: 14px;
display: flex;
flex-flow: column;
align-items: center;
......@@ -276,7 +276,7 @@ export default {
.ant-layout-header {
height: @headerH !important;
padding: 0 1.2rem !important;
background-color: rgba(255, 255, 255, 0.15) !important;
background: linear-gradient(90deg, #1845c6 0%, #2999ff 100%);
}
.ant-dropdown-link {
color: #fff;
......
......@@ -36,7 +36,7 @@
/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="backstage" @click="handleSubmit"
<a-button type="primary" class="addclass backstage" @click="handleSubmit"
>登录</a-button
>
</a-form-model-item>
......
......@@ -40,7 +40,7 @@
>
<div class="api-name">{{ v.apiName }}</div>
<span class="service-name">{{ v.systemServiceName }}</span>
<a-button icon="read" type="primary" @click="pushroeuter(v)">
<a-button icon="read" type="primary" class="addclass" @click="pushroeuter(v)">
查看文档
</a-button>
</div>
......
......@@ -49,7 +49,7 @@
失效时间:{{ $moment(itm.lapseTime).format("YYYY-MM-DD") }}
</div>
<a-button
type="primary"
type="primary" class="addclass"
@click="handleDowload(itm.packagePath, itm.systemServiceName)"
>
<a-icon type="download" />下载
......
......@@ -11,7 +11,7 @@
v-model="BegindAndEndTime"
>
</a-range-picker>
<a-button type="primary" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button @click="resetSearch">重置</a-button>
</a-space>
</div>
......
......@@ -117,7 +117,7 @@
@change="handleChangeFile"
accept="image/jpeg,image/png"
>
<a-button type="primary">
<a-button type="primary" class="addclass" >
<a-icon type="upload" /> 选择文件
</a-button>
</a-upload>
......@@ -141,7 +141,7 @@
</a-form-model>
<template slot="footer">
<a-button @click="resetForm">重置</a-button>
<a-button type="primary" @click="Modal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
</template>
</a-modal>
</div>
......
<template>
<div class="menuMgmt">
<div class="header_box">
<a-button type="primary" @click="showEditModal(1)">新增</a-button>
<a-button type="primary" class="addclass" @click="showEditModal(1)">新增</a-button>
<span>
<a-input v-model="searchForm.name" placeholder="请输入菜单名称搜索">
<a-icon slot="prefix" type="search" />
......@@ -13,7 +13,7 @@
</a-select-option>
</a-select>
<a-button type="primary" @click="searchData">搜索</a-button>
<a-button type="primary" class="addclass" @click="searchData">搜索</a-button>
<a-button @click="resetSearch">重置</a-button>
</span>
</div>
......
......@@ -4,7 +4,7 @@
<!-- <button class="addRoles_btn" @click="showRoleEditModal(false)">
<span>新增角色</span>
</button> -->
<a-button type="primary" @click="showRoleEditModal(false)"
<a-button type="primary" class="addclass" @click="showRoleEditModal(false)"
>新增角色</a-button
>
<span>
......@@ -19,7 +19,7 @@
<a-icon slot="prefix" type="search" />
</a-input> -->
<!-- <button class="search_btn" @click="getRoleList">搜索</button> -->
<!-- <a-button type="primary" @click="getRoleList">搜索</a-button> -->
<!-- <a-button type="primary" class="addclass" @click="getRoleList">搜索</a-button> -->
</span>
</div>
<div class="main">
......
......@@ -36,7 +36,7 @@
<div slot="footer">
<a-button style="margin-left: 10px" @click="handleClose">取消</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
<a-button type="primary" class="addclass" @click="handleOk">确定</a-button>
</div>
</a-modal>
</div>
......
......@@ -56,7 +56,7 @@
</a-form-model>
<div slot="footer">
<a-button style="margin-left: 10px" @click="resetForm">重置</a-button>
<a-button type="primary" @click="onSubmit">确定</a-button>
<a-button type="primary" class="addclass" @click="onSubmit">确定</a-button>
</div>
</a-modal>
</div>
......
......@@ -41,7 +41,7 @@
</a-form-model>
<template slot="footer">
<a-button @click="resetForm">重置</a-button>
<a-button type="primary" @click="roleEditModal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="roleEditModal_Ok">确定</a-button>
</template>
</a-modal>
</div>
......
......@@ -80,7 +80,7 @@
</a-form-model>
<div slot="footer">
<a-button style="margin-left: 10px" @click="resetForm">重置</a-button>
<a-button type="primary" @click="onSubmit">确定</a-button>
<a-button type="primary" class="addclass" @click="onSubmit">确定</a-button>
</div>
</a-modal>
</div>
......
......@@ -164,7 +164,7 @@
</div>
</div>
<div class="bottom_">
<a-button type="primary" @click="save">保存</a-button>
<a-button type="primary" class="addclass" @click="save">保存</a-button>
<a-button @click="resetForm">重置</a-button>
</div>
</div>
......
......@@ -2,7 +2,7 @@
<div class="user">
<div class="user_btn">
<div class="add_btn">
<a-button type="primary" @click="addUserModal">新增用户</a-button>
<a-button type="primary" class="addclass" @click="addUserModal">新增用户</a-button>
</div>
<div class="search_btn">
<a-space>
......@@ -25,7 +25,7 @@
>{{ v.value }}</a-select-option
>
</a-select>
<a-button type="primary" @click="getUserList">搜索</a-button>
<a-button type="primary" class="addclass" @click="getUserList">搜索</a-button>
<a-button @click="resetList">重置</a-button>
</a-space>
</div>
......
......@@ -173,7 +173,7 @@
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" @click="ceshidayin"> 添加参数 </a-button>
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<h1 class="title_">响应数据</h1>
......@@ -221,11 +221,11 @@
</template>
</a-table>
<div class="table_footer">
<a-button type="primary" @click="ceshidayin"> 添加参数 </a-button>
<a-button type="primary" class="addclass" @click="ceshidayin"> 添加参数 </a-button>
</div>
<div class="drawer_footer">
<a-button type="primary" @click="modalClose"> 保存 </a-button>
<a-button type="primary" class="addclass" @click="modalClose"> 保存 </a-button>
<a-button @click="modalClose"> 取消 </a-button>
</div>
</a-form-model>
......
......@@ -28,7 +28,7 @@
</a-form-model-item>
</a-form-model>
<template slot="footer">
<a-button type="primary" @click="Modal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
<a-button @click="resetForm">重置</a-button>
</template>
</a-modal>
......
......@@ -47,7 +47,7 @@
</a-form-model-item>
</a-form-model>
<template slot="footer">
<a-button type="primary" @click="Modal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
<a-button @click="resetForm">取消</a-button>
</template>
</a-modal>
......
......@@ -40,7 +40,7 @@
</a-form-model-item>
</a-form-model>
<template slot="footer">
<a-button type="primary" @click="Modal_Ok">确定</a-button>
<a-button type="primary" class="addclass" @click="Modal_Ok">确定</a-button>
<a-button @click="resetForm">取消</a-button>
</template>
</a-modal>
......
......@@ -10,7 +10,7 @@
</h4>
</div>
<div class="main">
<a-button type="primary" ghost class="add_btn" @click="showModal(2)">
<a-button type="primary" class="addclass add_btn" ghost @click="showModal(2)">
新增产品
</a-button>
<ul class="content">
......@@ -19,12 +19,7 @@
<template slot="content">
<div class="popoverContent">
<p>
<a-button
type="link"
size="small"
style="color: #0595fd"
@click="showModal(1)"
>
<a-button type="link" size="small" style="color: #0595fd" @click="showModal(1)">
编辑
</a-button>
</p>
......@@ -64,7 +59,7 @@ export default {
components: {
AddEditAppName,
},
mounted() {},
mounted() { },
methods: {
pushroeuter() {
this.$router.push({
......@@ -107,9 +102,11 @@ export default {
<style lang="less" scoped>
@headerH: 4.5rem;
.Container {
height: 100%;
background: #f5f5f5;
.search_box {
height: 20rem;
background: url("~@/assets/images/u210.png") top no-repeat;
......@@ -118,21 +115,25 @@ export default {
align-items: center;
display: flex;
flex-flow: column;
h3 {
font-size: 2rem;
color: #fff;
font-weight: bold;
padding: 4rem 0 2rem;
}
h4 {
display: flex;
align-items: center;
}
/deep/.ant-input {
width: 30rem !important;
margin-right: 2rem;
height: 3rem !important;
}
.search_btn {
width: 7rem;
height: 3rem;
......@@ -152,7 +153,8 @@ export default {
line-height: 3rem;
padding: 0;
border: none;
& > span {
&>span {
position: relative;
display: block;
width: 100%;
......@@ -196,8 +198,8 @@ export default {
width: 100%;
}
& > span:before,
& > span:after {
&>span:before,
&>span:after {
position: absolute;
content: "";
left: 0;
......@@ -210,25 +212,26 @@ export default {
transition: all 0.3s ease;
}
& > span:before {
&>span:before {
width: 2px;
height: 0%;
}
& > span:after {
&>span:after {
height: 2px;
width: 0%;
}
& > span:hover:before {
&>span:hover:before {
height: 100%;
}
& > span:hover:after {
&>span:hover:after {
width: 100%;
}
}
}
.main {
width: 75rem;
margin: -40px auto 0;
......@@ -237,16 +240,18 @@ export default {
box-shadow: 0 2px 5px 1px #ddd;
border: 1px solid #d7dae2;
overflow: hidden;
& > .add_btn {
&>.add_btn {
margin: 15px;
}
& > .content {
&>.content {
display: flex;
flex-wrap: wrap;
border-top: 1px solid #d7dae2;
border-bottom: 1px solid #d7dae2;
& > .list {
&>.list {
width: 25%;
padding: 15px;
display: flex;
......@@ -255,7 +260,7 @@ export default {
border-right: 1px solid #d7dae2;
border-bottom: 1px solid #d7dae2;
& > .app-operation {
&>.app-operation {
margin: 8px 0;
height: 25px;
width: 25px;
......@@ -265,27 +270,31 @@ export default {
left: 90%;
cursor: pointer;
}
& > .app-img {
&>.app-img {
width: 108px;
height: 108px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
margin: 8px auto;
border-radius: 6px;
}
& > .app-name {
&>.app-name {
font-weight: bold;
font-size: 18px;
text-align: center;
margin: 8px 0;
}
& > .app-option {
&>.app-option {
margin: 8px 0;
color: #0595fd;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
& > li {
&>li {
cursor: pointer;
}
}
......@@ -299,22 +308,15 @@ export default {
width: 100%;
height: @headerH;
background: rgb(59, 135, 255);
background: -moz-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
background: -webkit-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
background: linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff",endColorstr="#6c35f7",GradientType=1);
background: -moz-linear-gradient(174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%);
background: -webkit-linear-gradient(174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%);
background: linear-gradient(174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff", endColorstr="#6c35f7", GradientType=1);
}
}
</style>
}</style>
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