Commit 7d3d4c7c authored by “yiyousong”'s avatar “yiyousong”
parents 6e8a25cf 97863118
...@@ -5572,19 +5572,28 @@ deptAbb|String|部门简称|否|- ...@@ -5572,19 +5572,28 @@ deptAbb|String|部门简称|否|-
deptNumber|String|部门编号|否|- deptNumber|String|部门编号|否|-
filter|Integer|是否过滤没有事项的部门(0.否,1.是)|否|- filter|Integer|是否过滤没有事项的部门(0.否,1.是)|否|-
isBkb|Integer|背靠背展示 (0.否,1.是)|否|- isBkb|Integer|背靠背展示 (0.否,1.是)|否|-
orderColList| arrays |否|排序列表字段
 | object |否|排序列表对象
  colName| String |否|排序列名
  sortKind| String |否|排序方式(asc:升序,desc:降序,默认升序)
**请求样例:** **请求样例:**
``` ```
{
{ "siteId":1,
"name":"8xbeej", "isWorkGuide":1,
"deptAbb":"lk7pnx", "filter":1,
"deptNumber":"jjfxah",
"page":1, "page":1,
"size":10 "source":0,
"size":-1,
"orderColList":[
{
"colName":"sort",
"sortKind":"desc"
} }
]
}
``` ```
**响应参数:** **响应参数:**
...@@ -13218,6 +13227,128 @@ data|object|数据对象 ...@@ -13218,6 +13227,128 @@ data|object|数据对象
``` ```
### 查看设备告警日志统计列表
**请求URL:** m/device/alarm/info/statlist
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看告警统计信息列表
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
siteId|Long|是|站点ID
**请求样例:**
```
{
"siteId": 1
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|arrays|数据列表对象
 todayAlarmInfoCount|Integer|今日告警次数
 todayAlarmDeviceCount|Integer|今日告警设备数量
 alarmTypeStr|String|告警类型
 alarmStatus|Integer|告警状态
 alarmTime|Long|告警时间
 device|object|设备详细信息
**响应消息样例:**
```
{
"data": [
{
"todayAlarmInfoCount": 2,
"todayAlarmDeviceCount": 0,
"device": {
"id": 826,
"createUserId": 1,
"createTime": 1685069567000,
"updateUserId": 1,
"updateTime": 1685369203000,
"deleted": 0,
"productCode": "dzmp",
"switchSend": true,
"deviceName": "电子门牌-多人",
"deviceCode": "18-93-7f-b7-f9-4a",
"deviceMac": "18-93-7f-b7-f9-4a",
"siteId": 1,
"siteCode": "511500000000-0001",
"siteName": "宜宾市民中心",
"platformId": 9,
"platformName": "智慧办公",
"productId": 19,
"productName": "电子门牌",
"skinName": "",
"homeUrl": "",
"deviceFirmname": "",
"deviceSrc": 2,
"deviceDataSourceWay": 0,
"lon": "",
"lati": "",
"leadingOfficial": "周杨",
"leadingOfficialTelephone": "15108243162",
"isReceiveMess": 0,
"devicePhotoPath": "",
"ip": "",
"centernum": "",
"port": "",
"deviceTopic": "",
"deviceStatus": 1,
"enabled": 1,
"deviceAuthCode": "",
"deviceRemark": "",
"onlineTime": 1685369203000,
"offlineTime": 1685072125000,
"source": 1,
"deviceSN": "",
"deviceVersion": "19",
"hallName": "",
"showSms": 1,
"showPrint": 1,
"showWechatQrCode": 1
},
"alarmTypeStr": "离线",
"alarmTime": 1685455603000,
"alarmReceivePersonnel": "",
"receivePersonnelTelephone": "",
"alarmStatus": 0,
"alarmContent": "",
"deviceCode": "",
"deviceName": ""
},
{
"todayAlarmInfoCount": 1,
"todayAlarmDeviceCount": 0,
"device": {
"id": 828,
},
"alarmTypeStr": "离线",
"alarmTime": 1685455637000,
"alarmReceivePersonnel": "",
"receivePersonnelTelephone": "",
"alarmStatus": 0,
"alarmContent": "",
"deviceCode": "",
"deviceName": ""
}
],
"code": 1,
"msg": "操作成功"
}
```
## 设备 ## 设备
### 查询设备列表 ### 查询设备列表
......
...@@ -28,7 +28,7 @@ public class SyncTreeSiteThread implements Runnable { ...@@ -28,7 +28,7 @@ public class SyncTreeSiteThread implements Runnable {
SiteService siteService = SpringUtils.getBean(SiteService.class); SiteService siteService = SpringUtils.getBean(SiteService.class);
List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(context); List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(context);
siteService.setSiteTree(siteTreeSelects, context); siteService.setSiteTree(siteTreeSelects, context);
log.info("刷新用户站点树=》userID:{} siteIds:{} siteTree:{}",context.getUser().getId(),context.getUser().getSiteIds(), JSON.toJSONString(siteService.getSiteTree(context))); // log.info("刷新用户站点树=》userID:{} siteIds:{} siteTree:{}",context.getUser().getId(),context.getUser().getSiteIds(), JSON.toJSONString(siteService.getSiteTree(context)));
} }
} }
...@@ -12,6 +12,7 @@ import com.mortals.xhx.common.code.IsBusinessEnum; ...@@ -12,6 +12,7 @@ import com.mortals.xhx.common.code.IsBusinessEnum;
import com.mortals.xhx.module.business.model.BusinessEntity; import com.mortals.xhx.module.business.model.BusinessEntity;
import com.mortals.xhx.module.business.service.BusinessService; import com.mortals.xhx.module.business.service.BusinessService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -21,31 +22,30 @@ import java.util.HashMap; ...@@ -21,31 +22,30 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
* * 站点业务
* 站点业务 *
* * @author zxfei
* @author zxfei * @date 2022-01-13
* @date 2022-01-13 */
*/
@RestController @RestController
@RequestMapping("business") @RequestMapping("business")
public class BusinessController extends BaseCRUDJsonBodyMappingController<BusinessService,BusinessEntity,Long> { public class BusinessController extends BaseCRUDJsonBodyMappingController<BusinessService, BusinessEntity, Long> {
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
public BusinessController(){ public BusinessController() {
super.setModuleDesc( "站点业务"); super.setModuleDesc("站点业务");
} }
@Override @Override
protected void init( Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "isBusiness", paramService.getParamBySecondOrganize("Business","isBusiness")); this.addDict(model, "isBusiness", paramService.getParamBySecondOrganize("Business", "isBusiness"));
this.addDict(model, "canorder", paramService.getParamBySecondOrganize("Business","canorder")); this.addDict(model, "canorder", paramService.getParamBySecondOrganize("Business", "canorder"));
this.addDict(model, "cantake", paramService.getParamBySecondOrganize("Business","cantake")); this.addDict(model, "cantake", paramService.getParamBySecondOrganize("Business", "cantake"));
this.addDict(model, "datashow", paramService.getParamBySecondOrganize("Business","datashow")); this.addDict(model, "datashow", paramService.getParamBySecondOrganize("Business", "datashow"));
this.addDict(model, "status", paramService.getParamBySecondOrganize("Business","status")); this.addDict(model, "status", paramService.getParamBySecondOrganize("Business", "status"));
this.addDict(model, "businessType", paramService.getParamBySecondOrganize("Business","businessType")); this.addDict(model, "businessType", paramService.getParamBySecondOrganize("Business", "businessType"));
super.init(model, context); super.init(model, context);
} }
...@@ -63,10 +63,10 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine ...@@ -63,10 +63,10 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine
public String addBusinessToSite(@RequestBody Map<String, Object> map) { public String addBusinessToSite(@RequestBody Map<String, Object> map) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
String businessIds=(String)map.get("businessIds"); String businessIds = (String) map.get("businessIds");
Long siteId= DataUtil.converObj2Long(map.get("siteId")); Long siteId = DataUtil.converObj2Long(map.get("siteId"));
try { try {
this.service.addBusinessToSite(businessIds,siteId,getContext()); this.service.addBusinessToSite(businessIds, siteId, getContext());
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "添加业务到站点成功!"); jsonObject.put(KEY_RESULT_MSG, "添加业务到站点成功!");
...@@ -79,7 +79,6 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine ...@@ -79,7 +79,6 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine
} }
/** /**
* 查询业务扁平结构 * 查询业务扁平结构
*/ */
...@@ -93,7 +92,9 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine ...@@ -93,7 +92,9 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine
Result<BusinessEntity> result = this.service.flatList(query, pageInfo, getContext()); Result<BusinessEntity> result = this.service.flatList(query, pageInfo, getContext());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!"); jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!");
......
...@@ -57,12 +57,6 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE ...@@ -57,12 +57,6 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
private MattersDeptService mattersDeptService; private MattersDeptService mattersDeptService;
@Autowired @Autowired
private WindowService windowService; private WindowService windowService;
@Autowired
private BusinessService businessService;
@Autowired
private SiteBusinessService siteBusinessService;
@Autowired
private WindowBusinessService windowBusinessService;
@Override @Override
...@@ -70,6 +64,20 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE ...@@ -70,6 +64,20 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
return data.getDeptNumber(); return data.getDeptNumber();
} }
/**
* @param entity
* @param context
* @throws AppException
*/
@Override
protected void saveBefore(DeptEntity entity, Context context) throws AppException {
super.saveBefore(entity, context);
//新增校验部门编码是否重复
DeptEntity extCache = this.getExtCache(entity.getDeptNumber());
if (!ObjectUtils.isEmpty(extCache)) {
throw new AppException("部门编码重复!deptCode:" + extCache.getDeptNumber());
}
}
/** /**
* @param entity * @param entity
...@@ -77,14 +85,16 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE ...@@ -77,14 +85,16 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
* @throws AppException * @throws AppException
*/ */
@Override @Override
protected void validData(DeptEntity entity, Context context) throws AppException { protected void updateBefore(DeptEntity entity, Context context) throws AppException {
super.validData(entity, context); super.updateBefore(entity, context);
//校验部门编码是否重复 DeptEntity beforeEntity = this.get(entity.getId(), context);
if(!beforeEntity.getDeptNumber().equals(entity.getDeptNumber())){
DeptEntity extCache = this.getExtCache(entity.getDeptNumber()); DeptEntity extCache = this.getExtCache(entity.getDeptNumber());
if (!ObjectUtils.isEmpty(extCache) && SourceEnum.自定义.getValue() == entity.getSource()) { if (!ObjectUtils.isEmpty(extCache)) {
throw new AppException("部门编码重复!deptCode:" + extCache.getDeptNumber()); throw new AppException("部门编码重复!deptCode:" + extCache.getDeptNumber());
} }
} }
}
@Override @Override
public void syncDept(String areaCode, Context context) { public void syncDept(String areaCode, Context context) {
......
...@@ -9,6 +9,7 @@ import com.mortals.framework.model.OrderCol; ...@@ -9,6 +9,7 @@ import com.mortals.framework.model.OrderCol;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.SourceEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.business.model.BusinessEntity; import com.mortals.xhx.module.business.model.BusinessEntity;
import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptEntity;
...@@ -53,14 +54,18 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic ...@@ -53,14 +54,18 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
@Override @Override
protected void doListBefore(DeptEntity query, Map<String, Object> model, Context context) throws AppException { protected void doListBefore(DeptEntity query, Map<String, Object> model, Context context) throws AppException {
if (ObjectUtils.isEmpty(query.getOrderColList())) {
query.setOrderColList(new ArrayList<OrderCol>() { query.setOrderColList(new ArrayList<OrderCol>() {
{ {
add(new OrderCol("a.sort", OrderCol.ASCENDING)); add(new OrderCol("a.sort", OrderCol.ASCENDING));
add(new OrderCol("a.createTime", OrderCol.ASCENDING)); add(new OrderCol("a.createTime", OrderCol.DESCENDING));
} }
}); });
} else {
if(!ObjectUtils.isEmpty(query.getFilter())&& YesNoEnum.YES.getValue()==query.getFilter()){ query.getOrderColList().add(new OrderCol("a.createTime", OrderCol.DESCENDING));
}
if (!ObjectUtils.isEmpty(query.getFilter()) && YesNoEnum.YES.getValue() == query.getFilter()) {
//过滤部门事项数据为0的部门 //过滤部门事项数据为0的部门
query.setTotalStart(1); query.setTotalStart(1);
} }
...@@ -116,7 +121,9 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic ...@@ -116,7 +121,9 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
throw new AppException("参数部门ids不能为空!"); throw new AppException("参数部门ids不能为空!");
} }
Rest<Map<String, List<DeptVo>>> rest = this.service.getBusinessByDept(deptQuery, getContext()); Rest<Map<String, List<DeptVo>>> rest = this.service.getBusinessByDept(deptQuery, getContext());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, rest.getData()); jsonObject.put(KEY_RESULT_DATA, rest.getData());
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, busiDesc + "成功!"); jsonObject.put(KEY_RESULT_MSG, busiDesc + "成功!");
...@@ -142,7 +149,9 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic ...@@ -142,7 +149,9 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
throw new AppException("业务id不能为空!"); throw new AppException("业务id不能为空!");
} }
Rest<Map<String, List<DeptVo>>> rest = this.service.getDeptListByBusiness(deptQuery, getContext()); Rest<Map<String, List<DeptVo>>> rest = this.service.getDeptListByBusiness(deptQuery, getContext());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, rest.getData()); jsonObject.put(KEY_RESULT_DATA, rest.getData());
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, busiDesc + "成功!"); jsonObject.put(KEY_RESULT_MSG, busiDesc + "成功!");
...@@ -163,11 +172,15 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic ...@@ -163,11 +172,15 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
*/ */
@Override @Override
protected void saveBefore(DeptEntity entity, Map<String, Object> model, Context context) throws AppException { protected void saveBefore(DeptEntity entity, Map<String, Object> model, Context context) throws AppException {
DeptEntity deptEntity = this.service.selectOne(new DeptQuery().deptNumber(entity.getDeptNumber())); // DeptEntity deptEntity = this.service.selectOne(new DeptQuery().deptNumber(entity.getDeptNumber()));
if(!ObjectUtils.isEmpty(deptEntity)){ // if(!ObjectUtils.isEmpty(deptEntity)){
throw new AppException("部门编码已存在!"); // throw new AppException("部门编码已存在!");
// }
if (entity.newEntity()) {
entity.setSource(SourceEnum.自定义.getValue());
} }
entity.setSource(1);
super.saveBefore(entity, model, context); super.saveBefore(entity, model, context);
} }
} }
\ No newline at end of file
...@@ -63,7 +63,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -63,7 +63,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
*/ */
@Override @Override
protected void doListBefore(MatterEntity query, Map<String, Object> model, Context context) throws AppException { protected void doListBefore(MatterEntity query, Map<String, Object> model, Context context) throws AppException {
if(ObjectUtils.isEmpty(query.getEventTypeShowNotList())){ if (ObjectUtils.isEmpty(query.getEventTypeShowNotList())) {
ArrayList<String> notList = new ArrayList<>(); ArrayList<String> notList = new ArrayList<>();
notList.add("行政处罚"); notList.add("行政处罚");
query.setEventTypeShowNotList(notList); query.setEventTypeShowNotList(notList);
...@@ -148,7 +148,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -148,7 +148,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
jsonObject.put(KEY_RESULT_MSG, rest.getMsg()); jsonObject.put(KEY_RESULT_MSG, rest.getMsg());
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
this.recordSysLog(this.request, rest.getMsg()); this.recordSysLog(this.request, rest.getMsg());
}
} catch (Exception e) { } catch (Exception e) {
log.error("获取异常", e); log.error("获取异常", e);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
...@@ -165,7 +167,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -165,7 +167,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
Context context = this.getContext(); Context context = this.getContext();
String busiDesc = "查询差集" + this.getModuleDesc(); String busiDesc = "查询差集" + this.getModuleDesc();
int code=VALUE_RESULT_SUCCESS; int code = VALUE_RESULT_SUCCESS;
try { try {
PageInfo pageInfo = buildPageInfo(query); PageInfo pageInfo = buildPageInfo(query);
Result<MatterEntity> result = this.getService().findSubList(query, pageInfo, context); Result<MatterEntity> result = this.getService().findSubList(query, pageInfo, context);
...@@ -173,7 +175,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -173,7 +175,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
model.put(MESSAGE_INFO, busiDesc + "成功"); model.put(MESSAGE_INFO, busiDesc + "成功");
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
} catch (Exception e) { } catch (Exception e) {
code = VALUE_RESULT_FAILURE; code = VALUE_RESULT_FAILURE;
this.doException(request, busiDesc, model, e); this.doException(request, busiDesc, model, e);
......
...@@ -185,9 +185,11 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -185,9 +185,11 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override @Override
protected void saveAfter(SiteEntity entity, Context context) throws AppException { protected void saveAfter(SiteEntity entity, Context context) throws AppException {
log.info("站点更新1");
//刷新站点树 //刷新站点树
//ThreadPool.getInstance().execute(new SyncTreeSiteThread(this,context)); //ThreadPool.getInstance().execute(new SyncTreeSiteThread(this,context));
Rest<String> rest = userFeign.synchSiteAuth(); Rest<String> rest = userFeign.synchSiteAuth();
log.info("站点更新2");
if (rest.getCode().equals(YesNoEnum.YES.getValue())) { if (rest.getCode().equals(YesNoEnum.YES.getValue())) {
UserPdu userPdu = new UserPdu(); UserPdu userPdu = new UserPdu();
userPdu.setPage(1); userPdu.setPage(1);
...@@ -195,8 +197,10 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -195,8 +197,10 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu); Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu);
userService.updateUserList(list.getData().getData()); userService.updateUserList(list.getData().getData());
} }
log.info("站点更新3");
//更新同步部门相关 //更新同步部门相关
deptService.syncDeptBySiteId(entity, context); deptService.syncDeptBySiteId(entity, context);
log.info("站点更新4");
super.saveAfter(entity, context); super.saveAfter(entity, context);
} }
...@@ -439,9 +443,9 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -439,9 +443,9 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override @Override
public Rest<List<SiteAreaVo>> getAreaSitesBySite(SiteQuery query, Context context) { public Rest<List<SiteAreaVo>> getAreaSitesBySite(SiteQuery query, Context context) {
List<SiteAreaVo> list = new ArrayList<>(); List<SiteAreaVo> list = new ArrayList<>();
SiteAreaVo siteAreaVo = new SiteAreaVo(); SiteAreaVo siteAreaVo = new SiteAreaVo();
//获取当前节点的第一层子节点 //获取当前节点的第一层子节点
if (ObjectUtils.isEmpty(query.getAreaName())) { if (ObjectUtils.isEmpty(query.getAreaName())) {
throw new AppException("区域名称查询参数不能为空!"); throw new AppException("区域名称查询参数不能为空!");
...@@ -465,7 +469,6 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -465,7 +469,6 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
List<AreaEntity> childList = areaService.find(areaQuery, context); List<AreaEntity> childList = areaService.find(areaQuery, context);
for (AreaEntity child : childList) { for (AreaEntity child : childList) {
siteAreaVo = new SiteAreaVo(); siteAreaVo = new SiteAreaVo();
siteAreaVo.setAreaCode(child.getAreaCode()); siteAreaVo.setAreaCode(child.getAreaCode());
siteAreaVo.setAreaName(child.getName()); siteAreaVo.setAreaName(child.getName());
String matchCode = child.getAreaCode().replaceAll("(0)+$", ""); String matchCode = child.getAreaCode().replaceAll("(0)+$", "");
......
...@@ -15,6 +15,7 @@ import com.mortals.xhx.module.site.model.SiteBusinessTreeSelect; ...@@ -15,6 +15,7 @@ import com.mortals.xhx.module.site.model.SiteBusinessTreeSelect;
import com.mortals.xhx.module.site.service.SiteBusinessService; import com.mortals.xhx.module.site.service.SiteBusinessService;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -119,7 +120,9 @@ public class SiteBusinessController extends BaseCRUDJsonBodyMappingController<Si ...@@ -119,7 +120,9 @@ public class SiteBusinessController extends BaseCRUDJsonBodyMappingController<Si
Result<SiteBusinessEntity> result = this.service.flatList(query, pageInfo, getContext()); Result<SiteBusinessEntity> result = this.service.flatList(query, pageInfo, getContext());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "查询站点业务列表成功!"); jsonObject.put(KEY_RESULT_MSG, "查询站点业务列表成功!");
......
...@@ -35,10 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -35,10 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -108,7 +105,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -108,7 +105,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
} }
model.put("siteTree", siteTree); model.put("siteTree", siteTree);
this.init(model, getContext()); this.init(model, getContext());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
} catch (Exception e) { } catch (Exception e) {
...@@ -137,7 +136,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -137,7 +136,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
List<SiteTreeSelect> siteTree = this.service.getSiteTree(context); List<SiteTreeSelect> siteTree = this.service.getSiteTree(context);
model.put("siteTree", siteTree); model.put("siteTree", siteTree);
this.init(model, getContext()); this.init(model, getContext());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
} catch (Exception e) { } catch (Exception e) {
...@@ -158,25 +159,41 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -158,25 +159,41 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
String busiDesc = "根据区域编码查询站点列表" + this.getModuleDesc(); String busiDesc = "根据区域编码查询站点列表" + this.getModuleDesc();
try { try {
if (!ObjectUtils.isEmpty(site.getSiteName())) { if (!ObjectUtils.isEmpty(site.getSiteName())) {
SiteEntity siteEntity = this.service.selectOne(new SiteQuery().siteName(site.getSiteName())); // SiteEntity siteEntity = this.service.selectOne(new SiteQuery().siteName(site.getSiteName()));
if (!ObjectUtils.isEmpty(siteEntity)) { List<SiteEntity> siteEntities = this.service.find(new SiteQuery().siteName(site.getSiteName()));
site.setAreaCode(siteEntity.getAreaCode());
if (!ObjectUtils.isEmpty(siteEntities)) {
site.setAreaCodeList(siteEntities.stream().map(i -> i.getAreaCode()).collect(Collectors.toList()));
} }
/* if (!ObjectUtils.isEmpty(siteEntity)) {
site.setAreaCode(siteEntity.getAreaCode());
}*/
} }
if (!ObjectUtils.isEmpty(site.getAreaName())) { if (!ObjectUtils.isEmpty(site.getAreaName())) {
AreaEntity areaEntity = areaService.selectOne(new AreaQuery().name(site.getAreaName())); //AreaEntity areaEntity = areaService.selectOne(new AreaQuery().name(site.getAreaName()));
if (!ObjectUtils.isEmpty(areaEntity)) { List<AreaEntity> areaEntities = areaService.find(new AreaQuery().name(site.getAreaName()));
site.setAreaCode(areaEntity.getAreaCode()); if (!ObjectUtils.isEmpty(areaEntities)) {
// site.setAreaCode(areaEntity.getAreaCode());
site.setAreaCodeList(areaEntities.stream().map(i -> i.getAreaCode()).collect(Collectors.toList()));
} }
} }
List<SiteEntity> siteEntityList = this.service.getFlatSitesByAreaCode(site.getAreaCode(), getContext());
if (ObjectUtils.isEmpty(site.getAreaCodeList())) {
site.setAreaCodeList(Arrays.asList(site.getAreaCode()));
}
List<SiteEntity> siteEntityList = site.getAreaCodeList().stream().flatMap(areaCode -> {
return this.service.getFlatSitesByAreaCode(areaCode, getContext()).stream();
}).distinct().collect(Collectors.toList());
//List<SiteEntity> siteEntityList = this.service.getFlatSitesByAreaCode(site.getAreaCode(), getContext());
if (!ObjectUtils.isEmpty(site.getSiteName())) { if (!ObjectUtils.isEmpty(site.getSiteName())) {
siteEntityList = siteEntityList.stream().filter(item -> site.getSiteName().equals(item.getSiteName())).collect(Collectors.toList()); siteEntityList = siteEntityList.stream().filter(item -> site.getSiteName().equals(item.getSiteName())).collect(Collectors.toList());
} }
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, siteEntityList); jsonObject.put(KEY_RESULT_DATA, siteEntityList);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!"); jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!");
...@@ -201,8 +218,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -201,8 +218,9 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
String siteIds = site.getAreaCodeList().stream().flatMap(areaId -> String siteIds = site.getAreaCodeList().stream().flatMap(areaId ->
this.service.getFlatSitesByAreaCode(areaId, getContext()).stream() this.service.getFlatSitesByAreaCode(areaId, getContext()).stream()
).map(item -> item.getId().toString()).distinct().collect(Collectors.joining(",")); ).map(item -> item.getId().toString()).distinct().collect(Collectors.joining(","));
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
jsonObject.put(KEY_RESULT_DATA, siteIds); jsonObject.put(KEY_RESULT_DATA, siteIds);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!"); jsonObject.put(KEY_RESULT_MSG, "查询站点列表成功!");
......
...@@ -7,6 +7,7 @@ import com.mortals.xhx.base.system.param.service.ParamService; ...@@ -7,6 +7,7 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.business.model.BusinessEntity; import com.mortals.xhx.module.business.model.BusinessEntity;
import com.mortals.xhx.module.site.model.*; import com.mortals.xhx.module.site.model.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -71,7 +72,10 @@ public class SiteHallController extends BaseCRUDJsonBodyMappingController<SiteHa ...@@ -71,7 +72,10 @@ public class SiteHallController extends BaseCRUDJsonBodyMappingController<SiteHa
int code = VALUE_RESULT_SUCCESS; int code = VALUE_RESULT_SUCCESS;
try { try {
Rest<List<BusinessEntity>> rest = this.service.getBusinessByHall(siteHall, getContext()); Rest<List<BusinessEntity>> rest = this.service.getBusinessByHall(siteHall, getContext());
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
model.put(KEY_RESULT_DATA, rest.getData()); model.put(KEY_RESULT_DATA, rest.getData());
model.put("message_info", busiDesc + "成功"); model.put("message_info", busiDesc + "成功");
} catch (Exception e) { } catch (Exception e) {
......
...@@ -55,7 +55,6 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus ...@@ -55,7 +55,6 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus
Map<Long, WindowEntity> collect = windowService.findToMap(new WindowQuery(), context); Map<Long, WindowEntity> collect = windowService.findToMap(new WindowQuery(), context);
Map<Long, WindowHallEntity> windowHallEntityMap = windowHallService.find(new WindowHallQuery(), context).parallelStream().collect(Collectors.toMap(x -> x.getWindowId(), Function.identity())); Map<Long, WindowHallEntity> windowHallEntityMap = windowHallService.find(new WindowHallQuery(), context).parallelStream().collect(Collectors.toMap(x -> x.getWindowId(), Function.identity()));
Iterator iterator = list.iterator(); Iterator iterator = list.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
WindowBusinessEntity item = (WindowBusinessEntity) iterator.next(); WindowBusinessEntity item = (WindowBusinessEntity) iterator.next();
...@@ -68,6 +67,8 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus ...@@ -68,6 +67,8 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus
if (!ObjectUtils.isEmpty(windowHallEntity)) { if (!ObjectUtils.isEmpty(windowHallEntity)) {
item.setHallId(windowHallEntity.getHallId()); item.setHallId(windowHallEntity.getHallId());
item.setHallName(windowHallEntity.getHallName()); item.setHallName(windowHallEntity.getHallName());
}else {
log.info("windowhallEntity is null windowId:{}",item.getWindowId());
} }
} else { } else {
iterator.remove(); iterator.remove();
......
...@@ -16,6 +16,7 @@ import com.mortals.xhx.module.window.model.WindowEntity; ...@@ -16,6 +16,7 @@ import com.mortals.xhx.module.window.model.WindowEntity;
import com.mortals.xhx.module.window.service.WindowBusinessService; import com.mortals.xhx.module.window.service.WindowBusinessService;
import com.mortals.xhx.module.window.service.WindowService; import com.mortals.xhx.module.window.service.WindowService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -66,10 +67,10 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe ...@@ -66,10 +67,10 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
public String addBusinessToSite(@RequestBody Map<String, Object> map) { public String addBusinessToSite(@RequestBody Map<String, Object> map) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
String businessIds=(String)map.get("businessIds"); String businessIds = (String) map.get("businessIds");
Long windowId= DataUtil.converObj2Long(map.get("windowId")); Long windowId = DataUtil.converObj2Long(map.get("windowId"));
try { try {
this.service.addBusinessToWindow(businessIds,windowId,getContext()); this.service.addBusinessToWindow(businessIds, windowId, getContext());
jsonObject.put(KEY_RESULT_DATA, model); jsonObject.put(KEY_RESULT_DATA, model);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "添加业务到窗口成功!"); jsonObject.put(KEY_RESULT_MSG, "添加业务到窗口成功!");
...@@ -82,7 +83,6 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe ...@@ -82,7 +83,6 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
} }
@PostMapping(value = "subHalllist") @PostMapping(value = "subHalllist")
@UnAuth @UnAuth
public Rest<Object> subHalllist(@RequestBody WindowEntity query) { public Rest<Object> subHalllist(@RequestBody WindowEntity query) {
...@@ -90,7 +90,7 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe ...@@ -90,7 +90,7 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
Context context = this.getContext(); Context context = this.getContext();
String busiDesc = "查询差集" + this.getModuleDesc(); String busiDesc = "查询差集" + this.getModuleDesc();
int code=VALUE_RESULT_SUCCESS; int code = VALUE_RESULT_SUCCESS;
try { try {
PageInfo pageInfo = buildPageInfo(query); PageInfo pageInfo = buildPageInfo(query);
Result<WindowEntity> result = this.getService().findSubHallList(query, pageInfo, context); Result<WindowEntity> result = this.getService().findSubHallList(query, pageInfo, context);
...@@ -98,7 +98,9 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe ...@@ -98,7 +98,9 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
model.put(MESSAGE_INFO, busiDesc + "成功"); model.put(MESSAGE_INFO, busiDesc + "成功");
if (!ObjectUtils.isEmpty(getContext()) && !ObjectUtils.isEmpty(getContext().getUser())) {
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
}
} catch (Exception e) { } catch (Exception e) {
code = VALUE_RESULT_FAILURE; code = VALUE_RESULT_FAILURE;
this.doException(request, busiDesc, model, e); this.doException(request, busiDesc, model, e);
......
...@@ -3,14 +3,7 @@ ...@@ -3,14 +3,7 @@
POST {{baseUrl}}/dept/list POST {{baseUrl}}/dept/list
Content-Type: application/json Content-Type: application/json
{ {"isBkb":1,"siteId":1,"page":"1","size":"10","orderColList":[{"colName":"sort","sortKind":"desc"}]}
"siteId": 1,
"isWorkGuide":1 ,
"filter":1 ,
"page":1,
"source": 0,
"size":-1
}
###部门更新与保存 ###部门更新与保存
......
...@@ -108,4 +108,12 @@ Content-Type: application/json ...@@ -108,4 +108,12 @@ Content-Type: application/json
} }
###根据站点获取子站点列表
POST {{baseUrl}}/site/getFlatSitesBySiteId
Content-Type: application/json
{
"id":1
}
...@@ -5,8 +5,7 @@ Content-Type: application/json ...@@ -5,8 +5,7 @@ Content-Type: application/json
{ {
"page":1, "page":1,
"size":10, "size":10
"hallId": 11
} }
......
This diff is collapsed.
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
</keep-alive> --> </keep-alive> -->
</a-config-provider> </a-config-provider>
</a-spin> </a-spin>
<!-- 导出进度条 -->
<div class="export" v-if="progressFile.show">
<a-progress :percent="progressFile.percent" status="active" />
</div>
</div> </div>
</template> </template>
...@@ -22,6 +26,10 @@ export default { ...@@ -22,6 +26,10 @@ export default {
loadingProps: { loadingProps: {
spinning: false, spinning: false,
}, },
progressFile:{
show:false,
percent:1
}
}; };
}, },
beforeCreate() { beforeCreate() {
...@@ -62,4 +70,13 @@ export default { ...@@ -62,4 +70,13 @@ export default {
display: flex; display: flex;
// flex-direction: column; // flex-direction: column;
} }
.export{
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%);
z-index: 99;
width: 300px;
height: 150px;
}
</style> </style>
...@@ -2,11 +2,11 @@ import http from "../request/http"; ...@@ -2,11 +2,11 @@ import http from "../request/http";
let baseURL = process.env.VUE_APP_API_BASE_URL let baseURL = process.env.VUE_APP_API_BASE_URL
// 1.10.1. 查询应用服务列表 // 1.10.1. 查询应用服务列表
export function serviceList(params) { export function serviceList(params) {
return http.post(`${baseURL}/zwfw/system/service/list`, params); return http.post(`${baseURL}/zwfw/product/apps/list`, params);
} }
// 1.10.2. 查看应用服务 // 1.10.2. 查看应用服务
export function serviceInfo(params) { export function serviceInfo(params) {
return http.get(`${baseURL}/zwfw/system/service/info`, params); return http.get(`${baseURL}/zwfw/product/document/list`, params);
} }
// 1.10.3. 保存更新应用服务 // 1.10.3. 保存更新应用服务
export function serviceSave(params) { export function serviceSave(params) {
......
...@@ -70,6 +70,18 @@ export function getWLLZInfo(params) { ...@@ -70,6 +70,18 @@ export function getWLLZInfo(params) {
export function getSys12345(params) { export function getSys12345(params) {
return http.get(`${BASEURL}/wllz/complainapi/sys12345`, params); return http.get(`${BASEURL}/wllz/complainapi/sys12345`, params);
} }
// 12345查询受理类型
export function getType(params) {
return http.get(`${BASEURL}/inter/sys12345/getType`, params);
}
// 12345查询写信详情
export function letterInfo(params) {
return http.get(`${BASEURL}/inter/sys12345/letterInfo`, params);
}
// 12345写信报表
export function adminList(params) {
return http.post(`${BASEURL}/inter/sys12345/adminList`, params);
}
// 样表列表 // 样表列表
export function getBillList(params) { export function getBillList(params) {
...@@ -112,7 +124,10 @@ export function getOrderList(params) { ...@@ -112,7 +124,10 @@ export function getOrderList(params) {
export function getOrderinfo(params) { export function getOrderinfo(params) {
return http.get(`${BASEURL}/wechat/order_data/orderinfo`, params); return http.get(`${BASEURL}/wechat/order_data/orderinfo`, params);
} }
// 部门列表
export function getDeptList(params) {
return http.post(`${baseURL}/base/dept/list`, params);
}
/** /**
* 取件记录报表 * 取件记录报表
*/ */
...@@ -191,3 +206,11 @@ export function getImpossibleInfo(params) { ...@@ -191,3 +206,11 @@ export function getImpossibleInfo(params) {
export function getKqalert(params) { export function getKqalert(params) {
return http.get(`${BASEURL}/admin/kqalert/list`, params); return http.get(`${BASEURL}/admin/kqalert/list`, params);
} }
/**
* 查询设备告警日志列表
*/
// 查询设备告警日志列表
export function getInfoList(params) {
return http.post(`${baseURL}/m/device/alarm/info/list`, params);
}
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_PHP_URL;
//群众画像-整体情况
export function peopleQs(params) {
return http.get(`${baseURL}/inter/Personas/peopleQs`, params);
}
//注册区域分析
export function registerProvince(params) {
return http.get(`${baseURL}/inter/Personas/registerProvince`, params);
}
//本外地注册区域分析
export function registerBwd(params) {
return http.get(`${baseURL}/inter/Personas/registerBwd`, params);
}
//注册性别分析
export function registerSex(params) {
return http.get(`${baseURL}/inter/Personas/registerSex`, params);
}
//注册年龄分析
export function registerAge(params) {
return http.get(`${baseURL}/inter/Personas/registerAge`, params);
}
//注册民族分析
export function registerNation(params) {
return http.get(`${baseURL}/inter/Personas/registerNation`, params);
}
//办件用户地域分析
export function provinceCase(params) {
return http.get(`${baseURL}/inter/statistic/provinceCase`, params);
}
//办件省份下地域分析
export function provinceStatistic(params) {
return http.get(`${baseURL}/inter/statistic/provinceStatistic`, params);
}
//本外地分析
export function bwdStatistic(params) {
return http.get(`${baseURL}/inter/statistic/bwdStatistic`, params);
}
//性别办件分析
export function genderRateType(params) {
return http.get(`${baseURL}/inter/Personas/genderRateType`, params);
}
//办件年龄分析
export function ageRate(params) {
return http.get(`${baseURL}/inter/statistic/ageRate`, params);
}
//民族办件次数分析
export function TopNationStatistic(params) {
return http.get(`${baseURL}/inter/statistic/TopNationStatistic`, params);
}
//用户列表
export function peopelList(params) {
return http.get(`${baseURL}/inter/Personas/peopelList`, params);
}
//用户分析
export function userAnalysis(params) {
return http.get(`${baseURL}/inter/Personas/userAnalysis`, params);
}
/* 颜色 */
.primary {
color: #1890ff;
}
.delete {
color: #ff4d4f;
}
.green {
color: #1bbc9b;
}
.clofff {
color: #fff;
}
.orange {
color: orange;
}
.bgdel {
background-color: #ff4d4f;
}
.bgpr {
background-color: #1890ff;
}
.bgg {
background-color: #1bbc9b;
}
/* 版心 */
.container {
width: 1200px;
}
/* 弹性布局 */
.flex {
display: flex;
}
.flex1 {
flex: 1;
}
.flexc {
flex-direction: column;
}
.flexwrap {
flex-wrap: wrap;
}
.jcc {
justify-content: center;
}
.jca {
justify-content: space-around;
}
.jcb {
justify-content: space-between;
}
.jce {
justify-content: space-evenly;
}
.aic {
align-items: center;
}
.aca {
align-content: space-around;
}
.acb {
align-content: space-between;
}
.ace {
align-content: space-evenly;
}
/* margin */
.m10 {
margin: 10px;
}
.m15 {
margin: 15px;
}
.m20 {
margin: 20px;
}
.mt10 {
margin-top: 10px;
}
.mt15 {
margin-top: 15px;
}
.mt20 {
margin-top: 20px;
}
.mt50 {
margin-top: 50px;
}
.ml10 {
margin-left: 10px;
}
.ml15 {
margin-left: 15px;
}
.ml20 {
margin-left: 20px;
}
.ml25 {
margin-left: 25px;
}
.mr10 {
margin-right: 10px;
}
.mr15 {
margin-right: 15px;
}
.mr20 {
margin-right: 20px;
}
.mr25 {
margin-right: 25px;
}
.mr50 {
margin-right: 50px;
}
.mb10 {
margin-bottom: 10px;
}
.mb15 {
margin-bottom: 15px;
}
.mb20 {
margin-bottom: 20px;
}
.mb25 {
margin-bottom: 25px;
}
/* padding */
.pd10 {
padding: 10px;
}
.pd15 {
padding: 15px;
}
.pd20 {
padding: 20px;
}
.pdt10 {
padding-top: 10px;
}
.pdt15 {
padding-top: 15px;
}
.pdt20 {
padding-top: 20px;
}
.pdt30 {
padding-top: 30px;
}
.pdl8 {
padding-left: 8px;
}
.pdl10 {
padding-left: 10px;
}
.pdl15 {
padding-left: 15px;
}
.pdl20 {
padding-left: 20px;
}
.pdr10 {
padding-right: 10px;
}
.pdr15 {
padding-right: 15px;
}
.pdr20 {
padding-right: 20px;
}
.pdb10 {
padding-bottom: 10px;
}
.pdb15 {
padding-bottom: 15px;
}
.pdb20 {
padding-bottom: 20px;
}
/* 字体大小 */
.font16 {
font-size: 16px;
}
.font18 {
font-size: 18px;
}
.font20 {
font-size: 20px;
}
.font22 {
font-size: 22px;
}
.font24 {
font-size: 24px;
}
.font26 {
font-size: 26px;
}
.font28 {
font-size: 28px;
}
.font30 {
font-size: 30px;
}
/* 字体位置 */
.tac {
text-align: center;
}
.tal {
text-align: left;
}
.tar {
text-align: right;
}
/* 加粗 */
.fontw600 {
font-weight: 600;
}
.fontw700 {
font-weight: 700;
}
.fontw800 {
font-weight: 800;
}
/* 手型鼠标 */
.pointer {
cursor: pointer;
}
.pagination {
margin-top: 10px;
text-align: right;
}
.color_title {
margin-left: 15px;
position: relative;
margin-bottom: 15px;
color: #1890ff;
}
.color_title::before {
content: "";
width: 4px;
height: 20px;
position: absolute;
top: 0px;
left: -16px;
background-color: #0595fd;
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
overflow-y: auto;
}
::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(144, 147, 153, 0.5);
}
::-webkit-scrollbar-track {
border-radius: 6px;
background: #fff;
}
.ant-modal-close {
color: #188fff !important;
}
.ant-modal-close svg {
font-size: 26px !important;
}
.ant-modal-title {
color: #1890ff !important;
font-size: 18px;
font-weight: bold;
}
.header_box {
padding-bottom: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
}
.header_box > div {
display: flex;
justify-content: flex-start;
align-items: center;
}
.header_box > div b {
font-style: normal;
font-weight: unset;
font-size: 16px;
margin-left: 20px;
}
.header_box > div b i {
color: #0595fd;
font-style: normal;
}
.header_box > div sub {
font-size: 14px;
font-style: normal;
bottom: unset;
margin-left: 20px;
}
.header_box > div .export_btn {
outline: none;
cursor: pointer;
border: none;
padding: 0.8rem 1.2rem;
margin: 0;
font-family: inherit;
font-size: inherit;
position: relative;
display: inline-block;
font-size: 0.8rem;
border-radius: 6px;
overflow: hidden;
background: #42dac8;
color: ghostwhite;
}
.header_box > div .export_btn span {
position: relative;
z-index: 10;
transition: color 0.4s;
}
.header_box > div .export_btn:hover span {
color: #fef2f2;
}
.header_box > div .export_btn::before,
.header_box > div .export_btn::after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
.header_box > div .export_btn::before {
content: "";
background: #08cfb8;
width: 120%;
left: -10%;
transform: skew(30deg);
transition: transform 0.4s cubic-bezier(0.3, 1, 0.8, 1);
}
.header_box > div .export_btn:hover::before {
transform: translate3d(100%, 0, 0);
}
.header_box > span {
display: flex;
justify-content: space-between;
align-items: center;
}
.header_box > span /deep/ .ant-input-affix-wrapper {
width: 15rem !important;
margin-right: 1rem !important;
}
.header_box > span /deep/ .ant-input {
height: 2.3rem !important;
}
.header_box > span /deep/ .ant-select-selection {
width: 170px !important;
height: 2.3rem !important;
margin-right: 1rem !important;
}
.header_box > span /deep/ .ant-select-selection__rendered {
height: 100% !important;
}
.header_box > span /deep/ .ant-select-selection-selected-value {
height: 100% !important;
line-height: 2.3rem !important;
}
.header_box > span .search_btn {
padding: 0.8rem 1.2rem;
border: 0;
border-radius: 5px;
background: #1890ff;
box-shadow: rgba(0, 0, 0, 0.05) 0 0 8px;
letter-spacing: 1.5px;
text-transform: uppercase;
font-size: 0.8rem;
color: hsl(0, 0%, 100%);
transition: all 0.5s ease;
cursor: pointer;
}
.header_box > span .search_btn:hover {
letter-spacing: 3px;
background-color: #7d5cf9;
color: hsl(0, 0%, 100%);
box-shadow: #5d18dc 0px 2px 10px 0px;
}
.header_box > span .search_btn:active {
letter-spacing: 3px;
background-color: #7d5cf9;
color: hsl(0, 0%, 100%);
box-shadow: #5d18dc 0px 0px 0px 0px;
transform: translateY(2px);
transition: 100ms;
}
.main .type0 {
color: #888888;
}
.main .type1 {
color: #f94545;
}
.main .type2 {
color: #04ca8f;
}
.main .ant-btn-link {
padding: 0 !important;
}
.main .ant-btn-link + .ant-btn-link {
margin-left: 1rem !important;
}
.main .ant-table-pagination {
float: right !important;
}
.ant-btn-success {
background-color: #04ca8f;
border-color: #04ca8f;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
-webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.05);
}
.ant-btn-success:hover,
.ant-btn-success:focus {
color: #fff;
background-color: #42dac8;
border-color: #42dac8;
}
.ant-select {
min-width: 120px;
}
.ant-calendar-picker {
min-width: 270px;
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.addclass {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
}
...@@ -320,6 +320,7 @@ ...@@ -320,6 +320,7 @@
left: -16px; left: -16px;
background-color: rgba(5, 149, 253, 1); background-color: rgba(5, 149, 253, 1);
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 6px; width: 6px;
height: 6px; height: 6px;
...@@ -335,24 +336,29 @@ ...@@ -335,24 +336,29 @@
border-radius: 6px; border-radius: 6px;
background: #fff; background: #fff;
} }
.ant-modal-close { .ant-modal-close {
color: #188fff !important; color: #188fff !important;
} }
.ant-modal-close svg { .ant-modal-close svg {
font-size: 26px !important; font-size: 26px !important;
} }
.ant-modal-title { .ant-modal-title {
color: #1890ff !important; color: #1890ff !important;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
} }
.header_box { .header_box {
padding-bottom: 1rem; padding-bottom: 1rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
& > div {
&>div {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
...@@ -362,17 +368,20 @@ ...@@ -362,17 +368,20 @@
font-weight: unset; font-weight: unset;
font-size: 16px; font-size: 16px;
margin-left: 20px; margin-left: 20px;
i { i {
color: #0595fd; color: #0595fd;
font-style: normal; font-style: normal;
} }
} }
sub { sub {
font-size: 14px; font-size: 14px;
font-style: normal; font-style: normal;
bottom: unset; bottom: unset;
margin-left: 20px; margin-left: 20px;
} }
.export_btn { .export_btn {
outline: none; outline: none;
cursor: pointer; cursor: pointer;
...@@ -388,6 +397,7 @@ ...@@ -388,6 +397,7 @@
overflow: hidden; overflow: hidden;
background: #42dac8; background: #42dac8;
color: ghostwhite; color: ghostwhite;
& span { & span {
position: relative; position: relative;
z-index: 10; z-index: 10;
...@@ -423,29 +433,35 @@ ...@@ -423,29 +433,35 @@
} }
} }
& > span { &>span {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
/deep/.ant-input-affix-wrapper { /deep/.ant-input-affix-wrapper {
width: 15rem !important; width: 15rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-input { /deep/.ant-input {
height: 2.3rem !important; height: 2.3rem !important;
} }
/deep/.ant-select-selection { /deep/.ant-select-selection {
width: 170px !important; width: 170px !important;
height: 2.3rem !important; height: 2.3rem !important;
margin-right: 1rem !important; margin-right: 1rem !important;
} }
/deep/.ant-select-selection__rendered { /deep/.ant-select-selection__rendered {
height: 100% !important; height: 100% !important;
} }
/deep/.ant-select-selection-selected-value { /deep/.ant-select-selection-selected-value {
height: 100% !important; height: 100% !important;
line-height: 2.3rem !important; line-height: 2.3rem !important;
} }
.search_btn { .search_btn {
padding: 0.8rem 1.2rem; padding: 0.8rem 1.2rem;
border: 0; border: 0;
...@@ -477,26 +493,33 @@ ...@@ -477,26 +493,33 @@
} }
} }
} }
.main { .main {
.type0 { .type0 {
color: #888888; color: #888888;
} }
.type1 { .type1 {
color: #f94545; color: #f94545;
} }
.type2 { .type2 {
color: #04ca8f; color: #04ca8f;
} }
.ant-btn-link { .ant-btn-link {
padding: 0 !important; padding: 0 !important;
& + .ant-btn-link {
&+.ant-btn-link {
margin-left: 1rem !important; margin-left: 1rem !important;
} }
} }
.ant-table-pagination { .ant-table-pagination {
float: right !important; float: right !important;
} }
} }
.ant-btn-success { .ant-btn-success {
background-color: #04ca8f; background-color: #04ca8f;
border-color: #04ca8f; border-color: #04ca8f;
...@@ -505,18 +528,22 @@ ...@@ -505,18 +528,22 @@
-webkit-box-shadow: 0 2px 0 rgb(0 0 0 / 5%); -webkit-box-shadow: 0 2px 0 rgb(0 0 0 / 5%);
box-shadow: 0 2px 0 rgb(0 0 0 / 5%); box-shadow: 0 2px 0 rgb(0 0 0 / 5%);
} }
.ant-btn-success:hover, .ant-btn-success:hover,
.ant-btn-success:focus { .ant-btn-success:focus {
color: #fff; color: #fff;
background-color: #42dac8; background-color: #42dac8;
border-color: #42dac8; border-color: #42dac8;
} }
.ant-select { .ant-select {
min-width: 120px; min-width: 120px;
} }
.ant-calendar-picker { .ant-calendar-picker {
min-width: 270px; min-width: 270px;
} }
.ellipsis { .ellipsis {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
......
<template> <template>
<div class="myUploadFile"> <div class="myUploadFile">
<a-upload :name="defaultInfo.name" :action="defaultInfo.action" :listType="defaultInfo.listType" <a-upload
:name="defaultInfo.name"
:action="defaultInfo.action"
:listType="defaultInfo.listType"
:multiple="defaultInfo.multiple"
:showUploadList="defaultInfo.showUploadList"
:defaultFileList="defaultInfo.defaultFileList"
:file-list="defaultInfo.fileList"
:disabled="defaultInfo.disabled"
:directory="defaultInfo.directory"
:data="defaultInfo.objAttach"
:headers="headers"
:remove="uploadRemove"
@change="uploadChange"
@preview="handlePreview"
>
<slot></slot>
</a-upload>
<!-- <a-upload :name="defaultInfo.name" :action="defaultInfo.action" :listType="defaultInfo.listType"
:multiple="defaultInfo.multiple" :showUploadList="defaultInfo.showUploadList" :multiple="defaultInfo.multiple" :showUploadList="defaultInfo.showUploadList"
:defaultFileList="defaultInfo.defaultFileList" :file-list="defaultInfo.fileList" :disabled="defaultInfo.disabled" :defaultFileList="defaultInfo.defaultFileList" :file-list="defaultInfo.fileList" :disabled="defaultInfo.disabled"
:directory="defaultInfo.directory" :data="defaultInfo.objAttach" :headers="headers" :directory="defaultInfo.directory" :data="defaultInfo.objAttach" :headers="headers"
:beforeUpload="beforeImageUpload" :remove="uploadRemove" @change="uploadChange" @preview="handlePreview"> :beforeUpload="beforeImageUpload" :remove="uploadRemove" @change="uploadChange" @preview="handlePreview">
<slot></slot> <slot></slot>
</a-upload> </a-upload> -->
<a-modal :visible="defaultInfo.previewVisible" :footer="null" @cancel="defaultInfo.previewVisible = false"> <a-modal
:visible="defaultInfo.previewVisible"
:footer="null"
@cancel="defaultInfo.previewVisible = false"
>
<img alt="example" style="width: 100%" :src="defaultInfo.previewImage" /> <img alt="example" style="width: 100%" :src="defaultInfo.previewImage" />
</a-modal> </a-modal>
</div> </div>
...@@ -68,18 +90,15 @@ export default { ...@@ -68,18 +90,15 @@ export default {
"action" "action"
] = `${this.fileCommonupload}?prePath=${this.defaultInfo["prePath"]}`; ] = `${this.fileCommonupload}?prePath=${this.defaultInfo["prePath"]}`;
} else { } else {
this.defaultInfo[ this.defaultInfo["action"] = `${this.fileCommonupload}`;
"action"
] = `${this.fileCommonupload}`;
} }
console.log(this.defaultInfo);
}, },
deep: true, deep: true,
immediate: true, immediate: true,
}, },
}, },
created() { }, created() {},
methods: { methods: {
uploadRemove(file) { uploadRemove(file) {
if (file.id != undefined) { if (file.id != undefined) {
...@@ -88,8 +107,8 @@ export default { ...@@ -88,8 +107,8 @@ export default {
this.defaultInfo.fileList = this.defaultInfo.fileList.filter( this.defaultInfo.fileList = this.defaultInfo.fileList.filter(
(item) => item.uid != file.uid (item) => item.uid != file.uid
); );
console.log(this.defaultInfo.fileList.length,"=--------") console.log(this.defaultInfo.fileList.length, "=--------");
if(!this.defaultInfo.fileList.length){ if (!this.defaultInfo.fileList.length) {
this.$emit("input", ""); //相对地址 this.$emit("input", ""); //相对地址
} }
}, },
...@@ -117,7 +136,7 @@ export default { ...@@ -117,7 +136,7 @@ export default {
return result; return result;
}, },
uploadChange({ file, fileList }) { uploadChange({ file, fileList }) {
console.log(fileList) console.log(fileList);
if (file.status === "error") { if (file.status === "error") {
return; return;
this.$message.error(`${file.name} 上传失败.`); this.$message.error(`${file.name} 上传失败.`);
......
...@@ -414,6 +414,15 @@ const routes = [ ...@@ -414,6 +414,15 @@ const routes = [
), ),
meta: { title: "12345拨打记录报表" }, meta: { title: "12345拨打记录报表" },
}, },
{
path: "letterRecordForm",
name: "letterRecordForm",
component: () =>
import(
/* webpackChunkName: "letterRecordForm" */ "@/views/dataAdmin/components/networkGovernance/letterRecordForm.vue"
),
meta: { title: "12345写信记录报表" },
},
], ],
}, },
], ],
......
<template> <template>
<div> <div>
<div :id="id" :style="{height: this.height+'px', width: this.width+'px'}"></div> <div :id="id" :style="{ height: this.height + 'px', width: this.width + 'px' }"></div>
</div> </div>
</template> </template>
<script > <script >
import * as echarts from 'echarts' import * as echarts from 'echarts'
let myChart= null let myChart = null
export default { export default {
props: { props: {
id: { id: {
type: String type: String
}, },
height:{ height: {
type: String | Number, type: String | Number,
}, },
width:{ width: {
type: String | Number, type: String | Number,
}, },
datas: Object datas: Object
...@@ -23,27 +23,37 @@ export default { ...@@ -23,27 +23,37 @@ export default {
return { return {
} }
}, },
watch:{ watch: {
datas: function(obj){ datas: function (obj) {
if(obj){ if (obj) {
this.pieInit(obj.data) this.pieInit(obj.data, obj.nameArr)
} }
} }
}, },
methods: { methods: {
pieInit(data) { pieInit(data, nameArr) {
console.log(data)
let total = 0
data[0].value.forEach(i => {
total += parseInt(i)
})
console.log(total)
let arrType = {
yycount: '在线预约',
qhcount: '现场取号',
pjcount: '评价次数',
comcount: '意见建议',
imcount: '办不成事',
}
let arr = nameArr.map(i => {
return { name: arrType[i], max: total }
})
console.log(arr)
myChart = echarts.init(document.getElementById(this.id)) myChart = echarts.init(document.getElementById(this.id))
let option = { let option = {
radar: { radar: {
// shape: 'circle', // shape: 'circle',
indicator: [ indicator: arr
{ name: '在线预约', max: 100 },
{ name: '现场取号', max: 100 },
{ name: '个人申报', max: 100 },
{ name: '评价次数', max: 100 },
{ name: '意见建议', max: 100 },
{ name: '办不成事', max: 100 }
]
}, },
series: [ series: [
{ {
...@@ -61,5 +71,4 @@ export default { ...@@ -61,5 +71,4 @@ export default {
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped></style>
</style> \ No newline at end of file
\ No newline at end of file
...@@ -153,6 +153,7 @@ export default { ...@@ -153,6 +153,7 @@ export default {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
padding-bottom: 10px; padding-bottom: 10px;
text-align: center;
} }
.remark { .remark {
font-size: 14px; font-size: 14px;
......
...@@ -3,58 +3,88 @@ ...@@ -3,58 +3,88 @@
<div class="main"> <div class="main">
<div class="first_card"> <div class="first_card">
<div class="breadMenu"> <div class="breadMenu">
<Breadcrumb/> <Breadcrumb />
</div> </div>
<div class="searchBox"> <div class="searchBox">
<a-input v-model="peopleName" placeholder="请输入群众名称搜索" style="width: 35.625rem"></a-input> <a-select show-search placeholder="请输入群众名称搜索" style="width: 35.625rem"
<a-button type="primary" class="addclass" @click="startAnalysis()">开始分析</a-button> :default-active-first-option="false" :show-arrow="false" :filter-option="false" allowClear
<a-button type="primary" class="addclass" v-if="btnShow" @click="backBase()">返回</a-button> :not-found-content="null" :options="peopleArr" @search="peopelListFn"
@change="handleChange"></a-select>
<!-- <a-input v-model="peopleName" placeholder="请输入群众名称搜索" style="width: 35.625rem"></a-input> -->
<a-button type="primary" class="addclass" v-if="!btnShow" @click="startAnalysis()">开始分析</a-button>
<a-button type="primary" class="addclass" v-else @click="backBase()">返回</a-button>
</div> </div>
</div> </div>
<div class="content_view"> <div class="content_view">
<router-view /> <router-view keep-alive />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import Breadcrumb from "./breadcrumb/index.vue"; import Breadcrumb from "./breadcrumb/index.vue";
export default { import { peopelList } from '@/api/userPortrait'
components:{ export default {
components: {
Breadcrumb Breadcrumb
}, },
data() { data() {
return { return {
// 搜索框 // 搜索框
peopleName: '', peopleId: '',
peopleArr: [],
btnShow: false, btnShow: false,
} }
}, },
methods:{ methods: {
//输入框回显
peopelListFn(val) {
this.peopleArr = []
peopelList({ siteid: localStorage.getItem('siteId'), name: val }).then(res => {
if (res.code == 1) {
res.data.forEach(r => {
this.peopleArr.push({
value: r.id,
label: r.idcard_Name + '    ' + r.idcard_IDCardNo,
});
});
}
})
},
handleChange(val) {
this.peopleId = val;
},
startAnalysis() { startAnalysis() {
this.peopleName= '' if (this.peopleId) {
this.$router.push({ path: 'portrayalAnalysis'}) this.$router.push({ path: 'portrayalAnalysis', query: { peopleid: this.peopleId } })
this.btnShow= true this.btnShow = true
} else {
this.$message.warning('请选择群众后搜索')
}
}, },
backBase() { backBase() {
this.peopleName= '' this.peopleArr = []
this.$router.push({ path: 'portrayalBase'}) this.$router.push({ path: 'portrayalBase' })
this.btnShow= false this.btnShow = false
}, },
} }
} }
</script> </script>
<style lang="less" scoped>
@headerH: 4.5rem;
<style lang="less" scoped> .Container {
@headerH: 4.5rem;
.Container {
height: 100% !important; height: 100% !important;
// background: #fac; // background: #fac;
background: #f5f5f5; background: #f5f5f5;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.main { .main {
// background: #afc; // background: #afc;
border-radius: 6px; border-radius: 6px;
...@@ -62,28 +92,23 @@ ...@@ -62,28 +92,23 @@
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
} }
&::before { &::before {
content: ""; content: "";
display: block; display: block;
width: 100%; width: 100%;
height: @headerH; height: @headerH;
background: rgb(59, 135, 255); background: rgb(59, 135, 255);
background: -moz-linear-gradient( background: -moz-linear-gradient(174deg,
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85% rgba(108, 53, 247, 1) 85%);
); background: -webkit-linear-gradient(174deg,
background: -webkit-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85% rgba(108, 53, 247, 1) 85%);
); background: linear-gradient(174deg,
background: linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85% rgba(108, 53, 247, 1) 85%);
); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff", endColorstr="#6c35f7", GradientType=1);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff",endColorstr="#6c35f7",GradientType=1);
} }
/deep/.ant-tabs-nav { /deep/.ant-tabs-nav {
...@@ -91,36 +116,43 @@ ...@@ -91,36 +116,43 @@
margin: 0 !important; margin: 0 !important;
} }
} }
/deep/.ant-tabs-tab { /deep/.ant-tabs-tab {
font-size: 14px !important; font-size: 14px !important;
& + .ant-tabs-tab {
&+.ant-tabs-tab {
margin: 0 !important; margin: 0 !important;
margin-left: 0.7rem !important; margin-left: 0.7rem !important;
} }
} }
/deep/.ant-tabs-bar{
/deep/.ant-tabs-bar {
margin: 0; margin: 0;
} }
} }
.first_card{
.first_card {
background: #FFF; background: #FFF;
margin-bottom: .9375rem; margin-bottom: .9375rem;
} }
.breadMenu{
.breadMenu {
height: 2.8125rem; height: 2.8125rem;
line-height: 2.8125rem; line-height: 2.8125rem;
padding: 0 5rem; padding: 0 5rem;
border-bottom: 1px solid rgba(226, 226, 226, 1); border-bottom: 1px solid rgba(226, 226, 226, 1);
} }
.searchBox{
.searchBox {
height: 6.25rem; height: 6.25rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.content_view{
.content_view {
padding: 0 5rem; padding: 0 5rem;
} }
</style> </style>
\ No newline at end of file
...@@ -10,60 +10,64 @@ ...@@ -10,60 +10,64 @@
<a-col :span="8"> <a-col :span="8">
<div class="inside_card"> <div class="inside_card">
<div class="head_title mb_15">用户信息</div> <div class="head_title mb_15">用户信息</div>
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}"> <a-form layout="horizontal" :model="formState" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
<a-form-item label="openID:">{{ formState.openId }}</a-form-item> <a-form-item label="openID:">{{ formState.openid || '--' }}</a-form-item>
<a-form-item label="微信昵称:">{{ formState.name }}</a-form-item> <a-form-item label="姓名:">{{ formState.idcard_Name || '--' }}</a-form-item>
<a-form-item label="城市:">{{ formState.city }}</a-form-item> <a-form-item label="城市:">{{ formState.city || '--' }}</a-form-item>
<a-form-item label="联系电话:">{{ formState.phone }}</a-form-item> <a-form-item label="联系电话:">{{ formState.phone || '--' }}</a-form-item>
<a-form-item label="身份证号:">{{ formState.ID }}</a-form-item> <a-form-item label="身份证号:">{{ formState.idcard_IDCardNo || '--' }}</a-form-item>
<a-form-item label="注册时间:">{{ formState.registerTime }}</a-form-item> <a-form-item label="注册时间:">{{ formState.update_time || '--' }}</a-form-item>
<a-form-item label="注册来源:">{{ formState.source }}</a-form-item> <a-form-item label="注册来源:">{{ regType[formState.register_type] || '--' }}</a-form-item>
<a-form-item label="户籍地址:">{{ formState.address }}</a-form-item> <a-form-item label="户籍地址:">{{ formState.idcard_Address || '--' }}</a-form-item>
</a-form> </a-form>
</div> </div>
<div class="inside_card"> <div class="inside_card">
<div class="head_title mb_15">关键数据</div> <div class="head_title mb_15">关键数据</div>
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}"> <a-form layout="horizontal" :model="formState" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
<a-form-item label="预约最多:">{{ formState.appointment.name }}({{ formState.appointment.value }})</a-form-item> <a-form-item label="预约最多:" v-if="formState.yymax">{{ formState.yymax ? formState.yymax.name : ''
<a-form-item label="取号最多:">{{ formState.appointment.name }}({{ formState.appointment.value }})</a-form-item> }}<span style="color: #FF5F5F;">({{ formState.yymax ? formState.yymax.count :
<a-form-item label="申报最多:">{{ formState.appointment.name }}({{ formState.appointment.value }})</a-form-item> '' }})</span></a-form-item>
<a-form-item label="小程序最多:">{{ formState.appointment.name }}({{ formState.appointment.value }})</a-form-item> <a-form-item label="取号最多:" v-if="formState.qhmax">{{ formState.qhmax ? formState.qhmax.name : ''
}} <span style="color: #FF5F5F;">({{ formState.qhmax ? formState.qhmax.count : '' }})</span>
</a-form-item>
<!-- <a-form-item label="申报最多:">{{ formState.appointment.name }}({{ formState.appointment.value
}})</a-form-item>
<a-form-item label="小程序最多:">{{ formState.appointment.name }}({{ formState.appointment.value
}})</a-form-item> -->
</a-form> </a-form>
<div class="evaluate_box"> <div class="evaluate_box" v-if="formState.pjdata">
<div class="good_box"> <div class="good_box">
<div class="good_title">{{ formState.good.value }}({{ formState.good.percent }}%)</div> <div class="good_title">{{ formState.pjdata.good_count }}({{ formState.pjdata.good_lv }}%)
</div>
<div class="good_desc">好评次数</div> <div class="good_desc">好评次数</div>
</div> </div>
<div class="bad_box"> <div class="bad_box">
<div class="bad_title">{{ formState.bad.value }}({{ formState.bad.percent }}%)</div> <div class="bad_title">{{ formState.pjdata.bad_count }}({{ formState.pjdata.bad_lv }}%)
</div>
<div class="bad_desc">差评次数</div> <div class="bad_desc">差评次数</div>
</div> </div>
</div> </div>
</div> </div>
</a-col> </a-col>
<a-col :span="8" class="f_center"> <a-col :span="8" class="f_center">
<img src="http://sy.scsmile.cn/YX-4.0/03-02YHHXTP/images/%E7%BE%A4%E4%BC%97%E5%88%86%E6%9E%90/u1433.png" alt="" style="height: 31.25rem"> <img src="@/assets/images/man.png" alt="" style="height: 31.25rem" v-if="formState.idcard_Sex == '男'">
<img src="@/assets/images/woman.png" alt="" style="height: 31.25rem" v-else>
<div class="information"> <div class="information">
<div class="info_name"> <div class="info_name">
神奇小伙<a-tag color="green" class="info_tag">实名认证</a-tag> {{ formState.idcard_Name }}<a-tag color="green" class="info_tag">实名认证</a-tag>
</div> </div>
<a-row> <a-row>
<a-col :span="8">年龄:18</a-col> <a-col :span="8">年龄:{{ formState.idcard_Name }}</a-col>
<a-col :span="8">性别:未知</a-col> <a-col :span="8">性别:{{ formState.idcard_Sex || '--' }}</a-col>
<a-col :span="8">民族:氪族</a-col> <a-col :span="8">民族:{{ formState.idcard_Nation }}</a-col>
</a-row> </a-row>
<div>点击查看区块链信息</div> <div> </div>
</div> </div>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<div class="inside_card"> <div class="inside_card">
<Radar <Radar :id="`radar`" :height="350" :width="500" :datas="radarData" />
:id="`radar`"
:height="350"
:width="500"
:datas="radarData"
/>
</div> </div>
<div> <div>
...@@ -76,13 +80,14 @@ ...@@ -76,13 +80,14 @@
<script > <script >
import Radar from "../../business/Component/radar/index.vue"; import Radar from "../../business/Component/radar/index.vue";
export default { import { userAnalysis } from "@/api/userPortrait"
export default {
components: { components: {
Radar Radar
}, },
data(){ data() {
return{ return {
options:[ options: [
{ {
value: '0', value: '0',
label: '今天', label: '今天',
...@@ -115,129 +120,172 @@ import Radar from "../../business/Component/radar/index.vue"; ...@@ -115,129 +120,172 @@ import Radar from "../../business/Component/radar/index.vue";
registerTime: '2023-03-01 10:00:00', registerTime: '2023-03-01 10:00:00',
source: '排队叫号系统', source: '排队叫号系统',
address: '四川省宜宾市叙州区林南路23号', address: '四川省宜宾市叙州区林南路23号',
appointment: {name: '机动车违章业务办理', value: '25'}, appointment: { name: '机动车违章业务办理', value: '25' },
good: {value: '36', percent: '20'}, good: { value: '36', percent: '20' },
bad: {value: '2', percent: '10'} bad: { value: '2', percent: '10' }
},
regType: {
Applets: '小程序',
wechat: '公众号',
app: '自助服务终端'
} }
} }
}, },
mounted(){ mounted() {
this.getRadarData() this.getRadarData()
this.userAnalysisFn(this.$route.query.peopleid)
}, },
methods: { methods: {
handleChange() {}, async userAnalysisFn(peopleid) {
getRadarData() { let res = await userAnalysis({ siteid: localStorage.getItem('siteId'), peopleid })
this.radarData= { // console.log(res)
if (res.code == 1) {
this.formState = res.data
// console.log(this.formState.xwph)
let arr = Object.values(this.formState.xwph)
let nameArr = Object.keys(this.formState.xwph)
// console.log(arr, nameArr)
// console.log(arr)
this.radarData = {
nameArr,
data: [ data: [
{ {
value: [42, 30, 20, 35, 50, 18], value: arr,
name: '偏好', name: '偏好',
areaStyle: { areaStyle: {
color: '#a6c5fc' color: '#a6c5fc'
} }
}, },
] ],
} }
} else {
this.$message.error('查询失败')
this.$router.push({ path: 'portrayalBase' })
} }
}, },
handleChange() { },
getRadarData() {
} }
},
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/deep/ .ant-form-item{ /deep/ .ant-form-item {
margin-bottom: 0 margin-bottom: 0
} }
.head{
.head {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.head_title{
.head_title {
font-weight: 700; font-weight: 700;
font-style: normal; font-style: normal;
font-size: 1.125rem; font-size: 1.125rem;
color: #0595FD; color: #0595FD;
margin-right: 1.25rem; margin-right: 1.25rem;
} }
.head_desc{
.head_desc {
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
font-size: 14px; font-size: 14px;
color: #888888; color: #888888;
} }
.inside_card{
.inside_card {
background: #f3faff; background: #f3faff;
margin: .9375rem; margin: .9375rem;
padding: .9375rem; padding: .9375rem;
} }
.evaluate_box{
.evaluate_box {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center; align-items: center;
margin-top: 1.25rem; margin-top: 1.25rem;
} }
.good_box{
.good_box {
width: 10rem; width: 10rem;
background: #d0f3ee; background: #d0f3ee;
text-align: center; text-align: center;
padding: .9375rem; padding: .9375rem;
.good_title{
.good_title {
font-size: 1.25rem; font-size: 1.25rem;
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
color: #04CA8F; color: #04CA8F;
margin-bottom: .625rem; margin-bottom: .625rem;
} }
.good_desc{
.good_desc {
font-size: .875rem; font-size: .875rem;
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
color: #04CA8F; color: #04CA8F;
} }
} }
.bad_box{
.bad_box {
width: 10rem; width: 10rem;
background: #f5e3e7; background: #f5e3e7;
text-align: center; text-align: center;
padding: .9375rem; padding: .9375rem;
.bad_title{
.bad_title {
font-size: 1.25rem; font-size: 1.25rem;
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
color: #FF5F5F; color: #FF5F5F;
margin-bottom: .625rem; margin-bottom: .625rem;
} }
.bad_desc{
.bad_desc {
font-size: .875rem; font-size: .875rem;
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
color: #FF5F5F; color: #FF5F5F;
} }
} }
.information{
.information {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: space-around; justify-content: space-around;
height: 200px; height: 200px;
} }
.info_name{
.info_name {
position: relative; position: relative;
font-size: 2.5rem; font-size: 2.5rem;
} }
.info_tag{
.info_tag {
position: absolute; position: absolute;
top: .9375rem; top: .9375rem;
margin-left: .9375rem; margin-left: .9375rem;
} }
.mb_15{
.mb_15 {
margin-bottom: .9375rem; margin-bottom: .9375rem;
} }
.f_40{
.f_40 {
font-size: 2.5rem; font-size: 2.5rem;
} }
.f_center{
.f_center {
text-align: center; text-align: center;
} }
</style> </style>
\ No newline at end of file
...@@ -8,43 +8,48 @@ ...@@ -8,43 +8,48 @@
> >
<a-form-model <a-form-model
ref="ruleForm" ref="ruleForm"
:model="detailsForm" :model="msg"
:rules="detailsRules" :rules="detailsRules"
:label-col="{ span: 4 }" :label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }" :wrapper-col="{ span: 20 }"
> >
<a-form-model-item label="告警设备" prop="告警设备"> <a-form-model-item label="告警设备" prop="告警设备">
<a-input v-model="detailsForm.告警设备" placeholder="请输入" disabled /> <a-input v-model="msg.deviceName" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警时间" prop="告警时间"> <a-form-model-item label="告警时间" prop="告警时间">
<a-input v-model="detailsForm.告警时间" placeholder="请输入" disabled /> <a-input v-model="msg.alarmTime" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警内容" prop="告警内容"> <a-form-model-item label="告警内容" prop="告警内容">
<a-input v-model="detailsForm.告警内容" placeholder="请输入" disabled /> <a-input v-model="msg.alarmContent" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警程度" prop="告警程度"> <a-form-model-item label="告警程度" prop="告警程度">
<a-input v-model="detailsForm.告警程度" placeholder="请输入" disabled /> <a-input v-model="msg.alarmLevel" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警状态" prop="告警状态"> <a-form-model-item label="告警状态" prop="告警状态">
<a-input v-model="detailsForm.告警状态" placeholder="请输入" disabled /> <a-input v-model="msg.alarmStatus" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="接收人员" prop="接收人员"> <a-form-model-item label="接收人员" prop="接收人员">
<a-input v-model="detailsForm.接收人员" placeholder="请输入" disabled /> <a-input
v-model="msg.alarmReceivePersonnel"
placeholder="请输入"
disabled
/>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警详情" prop="告警详情"> <a-form-model-item label="告警详情" prop="告警详情">
<a-textarea <a-textarea
v-model="detailsForm.告警详情" v-model="msg.alarmContent"
placeholder="请输入" placeholder="请输入"
:rows="4" :rows="4"
disabled
/> />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="清楚时间" prop="清楚时间"> <!-- <a-form-model-item label="清楚时间" prop="清楚时间">
<a-input v-model="detailsForm.清楚时间" placeholder="请输入" disabled /> <a-input v-model="msg.updateTime" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="清楚人员" prop="清楚人员"> <a-form-model-item label="清楚人员" prop="清楚人员">
<a-input v-model="detailsForm.清楚人员" placeholder="请输入" disabled /> <a-input v-model="msg.updateUserId" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item> -->
</a-form-model> </a-form-model>
</a-drawer> </a-drawer>
</template> </template>
...@@ -54,7 +59,9 @@ import modal from "../mixins/modal"; ...@@ -54,7 +59,9 @@ import modal from "../mixins/modal";
export default { export default {
mixins: [modal], mixins: [modal],
name: "PortalAdminVuePicWorks", name: "PortalAdminVuePicWorks",
props: {
msg: Object,
},
data() { data() {
return { return {
detailsForm: { detailsForm: {
...@@ -84,5 +91,3 @@ export default { ...@@ -84,5 +91,3 @@ export default {
overflow-x: hidden !important; overflow-x: hidden !important;
} }
</style> </style>
...@@ -45,7 +45,8 @@ ...@@ -45,7 +45,8 @@
:columns="tableHeaders" :dataSource="tableSourceData"> :columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text"> <template slot="评价人照片" slot-scope="text">
<a-avatar v-if="!text || !baseurl" shape="square" :size="40" icon="user" /> <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" @click="$viewerApi({images:[baseurl + '/' + text]})"/> <img v-else :src="baseurl + '/' + text" style="max-width: 100px; max-height: 100px"
@click="$viewerApi({ images: [baseurl + '/' + text] })" />
</template> </template>
<template slot="操作" slot-scope="text, record"> <template slot="操作" slot-scope="text, record">
<a-button type="link" style="color: #ff7370" @click="handleDel(record.id)">删除</a-button> <a-button type="link" style="color: #ff7370" @click="handleDel(record.id)">删除</a-button>
...@@ -324,6 +325,7 @@ export default { ...@@ -324,6 +325,7 @@ export default {
}, },
//详情模块 //详情模块
openHandlingDetails(record) { openHandlingDetails(record) {
console.log(record)
// 判断为窗口屏或者其他状况,调用不同接口 // 判断为窗口屏或者其他状况,调用不同接口
if (record.pjxt == 1) { if (record.pjxt == 1) {
this.$refs.HandlingDetails.modalInfo.title = "办理明细"; this.$refs.HandlingDetails.modalInfo.title = "办理明细";
......
...@@ -28,10 +28,22 @@ ...@@ -28,10 +28,22 @@
v-model="searchForm.time" v-model="searchForm.time"
> >
</a-range-picker> </a-range-picker>
<a-select v-model="searchForm.sectionid" showSearch :option-filter-prop="'label'">
<a-select-option value="" label="全部"> 全部部门 </a-select-option>
<a-select-option
v-for="(v, key) in depList"
:key="key"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select v-model="searchForm.status"> <a-select v-model="searchForm.status">
<a-select-option value=""> 全部 </a-select-option> <a-select-option value=""> 全部 </a-select-option>
<a-select-option <a-select-option
v-for="(v, key) in statusItem" v-for="(v, key) in statusItem"
:key="key" :key="key"
:value="Number(key)" :value="Number(key)"
> >
...@@ -109,7 +121,7 @@ ...@@ -109,7 +121,7 @@
</template> </template>
<script> <script>
import { getOrderList } from "@/api/dataAdmin"; import { getOrderList,getDeptList } from "@/api/dataAdmin";
import { export2Excel } from "@/utils/js/exportExcel"; import { export2Excel } from "@/utils/js/exportExcel";
let tHeader = [ let tHeader = [
// 导出的表头名信息 // 导出的表头名信息
...@@ -227,6 +239,14 @@ export default { ...@@ -227,6 +239,14 @@ export default {
align: "center", align: "center",
dataIndex: "business_name", dataIndex: "business_name",
}, },
{
title: "部门名称",
align: "center",
dataIndex: "section_name",
customRender: (text) => {
return text || "--";
},
},
{ {
title: "创建时间", title: "创建时间",
align: "center", align: "center",
...@@ -251,6 +271,7 @@ export default { ...@@ -251,6 +271,7 @@ export default {
searchForm: { searchForm: {
status: "", status: "",
title: "", title: "",
sectionid:"",
time: [ time: [
this.$moment(new Date()).format("YYYY-MM-DD"), this.$moment(new Date()).format("YYYY-MM-DD"),
this.$moment(new Date()).format("YYYY-MM-DD"), this.$moment(new Date()).format("YYYY-MM-DD"),
...@@ -263,12 +284,23 @@ export default { ...@@ -263,12 +284,23 @@ export default {
tableSelectedKeys: [], tableSelectedKeys: [],
tableSelectedRows: [], tableSelectedRows: [],
tableSourceData: [], tableSourceData: [],
depList:[]//部门列表
}; };
}, },
created() { created() {
this.getOrderList(); this.getOrderList();
this.getDeptList()
}, },
methods: { methods: {
// 部门列表
getDeptList(){
getDeptList({page:1,size:-1}).then(res=>{
const {data} = res.data
if(res.code == 1){
this.depList = data
}
})
},
// 获取报表数据 // 获取报表数据
async getOrderList(search = {}) { async getOrderList(search = {}) {
let res = await getOrderList({ let res = await getOrderList({
......
...@@ -125,6 +125,8 @@ import { ...@@ -125,6 +125,8 @@ import {
getWorkmananalyse, getWorkmananalyse,
} from "@/api/dataAdmin"; } from "@/api/dataAdmin";
import { export2Excel } from "@/utils/js/exportExcel"; import { export2Excel } from "@/utils/js/exportExcel";
import { loading } from "@jiaminghi/data-view";
let ExcelDate = []
export default { export default {
name: "PortalAdminVueQueueRecord", name: "PortalAdminVueQueueRecord",
mixins: [table], mixins: [table],
...@@ -432,27 +434,76 @@ export default { ...@@ -432,27 +434,76 @@ export default {
} }
}); });
}); });
} else {
data = this.$_.cloneDeep( export2Excel(
await this.getQueueDataArr({ page: 1, size: -1 }) this.tHeader,
this.filterVal,
data,
"排队记录报表" + this.$moment().format("YYYYMMDDHHmmss")
); );
if (!data.length) return; this.btnLoading = false;
for (let item of data) { } else {
ExcelDate = []
await this.dataSection(1, 1000, () => {
if (!ExcelDate.length) return;
for (let item of ExcelDate) {
Object.keys(obj).forEach((key) => { Object.keys(obj).forEach((key) => {
if (item.style == key) { if (item.style == key) {
item.style = obj[key]; item.style = obj[key];
} }
}); });
} }
}
export2Excel( export2Excel(
this.tHeader, this.tHeader,
this.filterVal, this.filterVal,
data, ExcelDate,
"排队记录报表" + this.$moment().format("YYYYMMDDHHmmss") "排队记录报表" + this.$moment().format("YYYYMMDDHHmmss")
); );
this.btnLoading = false; this.btnLoading = false;
// alert(11)
})
// return
// data = this.$_.cloneDeep(
// await this.getQueueDataArr({ page: 1, size: -1 })
// );
// if (!data.length) return;
// for (let item of data) {
// Object.keys(obj).forEach((key) => {
// if (item.style == key) {
// item.style = obj[key];
// }
// });
// }
}
}, },
// 数据切片
async dataSection(page, size = 100, fn) {
let res = await getQueueData({
page: page || 1,
size: size,
...this.searchForm,
});
if (res.code == 1) {
let { data, total } = res.data;
ExcelDate = ExcelDate.concat(data || [])
// app.vue loading
this.$app.progressFile.show = true
this.$app.progressFile.percent = parseInt((ExcelDate.length / total) * 100)
if (ExcelDate.length >= total || data.length == 0) {
fn()
this.$app.progressFile.show = false
this.$app.progressFile.percent = 1
return
}
setTimeout(() => {
let index = parseInt(page || 1) + 1
this.dataSection(index, size, fn)
});
}
}
}, },
}; };
</script> </script>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<script> <script>
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
import lodash from "lodash"; import lodash from "lodash";
import{getStatisticAges} from '@/api/dataAdmin.js' import { getStatisticAges } from "@/api/dataAdmin.js";
export default { export default {
props: { props: {
info: { info: {
...@@ -12,7 +12,7 @@ export default { ...@@ -12,7 +12,7 @@ export default {
default: () => [ default: () => [
{ {
value: 200, value: 200,
name: "20", name: "20",
}, },
{ {
value: 400, value: 400,
...@@ -40,16 +40,30 @@ export default { ...@@ -40,16 +40,30 @@ export default {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
day: {
type: String,
default: () => "0",
},
},
watch: {
day(newval, oldval) {
newval ? this.getData() : "";
},
}, },
async mounted() { async mounted() {
let res = await getStatisticAges() this.getData();
if (res.code != 1) return
let label = res.data.map(item=> item.age_area)
let value = res.data.map(item=> item.nums)
this._initEcharts(label,value);
}, },
methods: { methods: {
_initEcharts(label,value) { async getData() {
let res = await getStatisticAges({
selected: this.day == 5 ? null : this.day,
});
if (res.code != 1) return;
let label = res.data.map((item) => item.age_area);
let value = res.data.map((item) => item.nums);
this._initEcharts(label, value);
},
_initEcharts(label, value) {
const myChart = this.$echarts.init(this.$el); const myChart = this.$echarts.init(this.$el);
const echarts = this.$echarts; const echarts = this.$echarts;
let option = { let option = {
...@@ -72,9 +86,9 @@ export default { ...@@ -72,9 +86,9 @@ export default {
xAxis: { xAxis: {
type: "category", type: "category",
data: label, data: label,
axisTick:{ axisTick: {
show:false show: false,
} },
}, },
yAxis: { yAxis: {
type: "value", type: "value",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<script> <script>
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
import lodash from "lodash"; import lodash from "lodash";
import{getStatisticSexual} from '@/api/dataAdmin.js' import { getStatisticSexual } from "@/api/dataAdmin.js";
export default { export default {
props: { props: {
info: { info: {
...@@ -24,14 +24,31 @@ export default { ...@@ -24,14 +24,31 @@ export default {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
day: {
type: String,
default: () => "0",
},
},
watch: {
day(newval, oldval) {
newval ? this.getData() : "";
}, },
async mounted() { },
let res = await getStatisticSexual() mounted() {
if (res.code != 1) return this.getData();
let value = res.data.map(({idcard_Sex,nums})=>({name:idcard_Sex,value:nums}))
this._initEcharts(value);
}, },
methods: { methods: {
async getData() {
let res = await getStatisticSexual({
selected: this.day == 5 ? null : this.day,
});
if (res.code != 1) return;
let value = res.data.map(({ idcard_Sex, nums }) => ({
name: idcard_Sex,
value: nums,
}));
this._initEcharts(value);
},
_initEcharts(value) { _initEcharts(value) {
const myChart = this.$echarts.init(this.$el); const myChart = this.$echarts.init(this.$el);
const echarts = this.$echarts; const echarts = this.$echarts;
...@@ -87,12 +104,12 @@ export default { ...@@ -87,12 +104,12 @@ export default {
rich_green: { rich_green: {
color: "#50CCCB", color: "#50CCCB",
}, },
} },
}, },
label: { label: {
normal: { normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比) formatter: "{d}%", //自定义显示格式(b:name, c:value, d:百分比)
} },
}, },
labelLine: { labelLine: {
length: 10, length: 10,
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
<a-select-option value="0"> 今天 </a-select-option> <a-select-option value="0"> 今天 </a-select-option>
<a-select-option value="1"> 近7天 </a-select-option> <a-select-option value="1"> 近7天 </a-select-option>
<a-select-option value="2"> 近30天 </a-select-option> <a-select-option value="2"> 近30天 </a-select-option>
<a-select-option value="3">90天 </a-select-option> <a-select-option value="3">3月 </a-select-option>
<a-select-option value="4"> 近180天 </a-select-option> <a-select-option value="4"> 本年度 </a-select-option>
<a-select-option value="5"> 自定义 </a-select-option> <!-- <a-select-option value="5"> 自定义 </a-select-option> -->
</a-select> </a-select>
<a-button type="primary" class="addclass" @click="getData">搜索</a-button> <a-button type="primary" class="addclass" @click="getData">搜索</a-button>
......
...@@ -15,16 +15,18 @@ ...@@ -15,16 +15,18 @@
<a-select-option value="0"> 今天 </a-select-option> <a-select-option value="0"> 今天 </a-select-option>
<a-select-option value="1"> 近7天 </a-select-option> <a-select-option value="1"> 近7天 </a-select-option>
<a-select-option value="2"> 近30天 </a-select-option> <a-select-option value="2"> 近30天 </a-select-option>
<a-select-option value="3"> 近90天 </a-select-option> <a-select-option value="3"> 近3月 </a-select-option>
<a-select-option value="4"> 近180天 </a-select-option> <a-select-option value="4"> 本年度 </a-select-option>
<a-select-option value="5"> 自定义 </a-select-option> <!-- <a-select-option value="5"> 自定义 </a-select-option> -->
</a-select> </a-select>
<a-button type="primary" class="addclass" @click="getData">搜索</a-button> <a-button type="primary" class="addclass" @click="getData"
>搜索</a-button
>
</template> </template>
</Head> </Head>
<div class="echarts"> <div class="echarts">
<Brokenline :info="chartsData" v-if="chartsData"/> <Brokenline :info="chartsData" v-if="chartsData" />
</div> </div>
</div> </div>
<div class="fx"> <div class="fx">
...@@ -40,7 +42,9 @@ ...@@ -40,7 +42,9 @@
> >
</a-table> </a-table>
<p class="updateTime"> <p class="updateTime">
<i class="fa fa-info-circle"></i>数据更新时间:{{date}},受数据波动影响,可能会有延迟。 <i class="fa fa-info-circle"></i>数据更新时间:{{
date
}},受数据波动影响,可能会有延迟。
</p> </p>
</div> </div>
</div> </div>
...@@ -50,16 +54,16 @@ ...@@ -50,16 +54,16 @@
<script> <script>
import Head from "./components/header.vue"; import Head from "./components/header.vue";
import Brokenline from "./components/line.vue"; import Brokenline from "./components/line.vue";
import {getTrend} from '@/api/dataAdmin.js' import { getTrend } from "@/api/dataAdmin.js";
import moment from 'moment' import moment from "moment";
export default { export default {
name: "PortalAdminVueMakeDataAnalyse", name: "PortalAdminVueMakeDataAnalyse",
data() { data() {
return { return {
day:'0', day: "0",
date:'', date: "",
BegindAndEndTime: [], BegindAndEndTime: [],
chartsData:null, chartsData: null,
tableSourceData: [], tableSourceData: [],
tableHeaders: [ tableHeaders: [
{ {
...@@ -99,23 +103,23 @@ export default { ...@@ -99,23 +103,23 @@ export default {
Head, Head,
Brokenline, Brokenline,
}, },
watch:{ watch: {
day(val){ day(val) {
if (val != 5) this.BegindAndEndTime = [] if (val != 5) this.BegindAndEndTime = [];
} },
}, },
mounted() { mounted() {
this.date = moment().format('yyyy-MM-DD hh:mm:ss') this.date = moment().format("yyyy-MM-DD hh:mm:ss");
this.getData() this.getData();
}, },
methods: { methods: {
getData(){ getData() {
getTrend({ getTrend({
selected:this.day == 5 ? null : this.day, selected: this.day == 5 ? null : this.day,
time:this.BegindAndEndTime time: this.BegindAndEndTime,
}).then(res=>{ }).then((res) => {
this.chartsData = res.data.list this.chartsData = res.data.list;
this.tableSourceData.push({ this.tableSourceData.push({
研究对象: `预约次数`, 研究对象: `预约次数`,
预约总量: res.data.orderAll, 预约总量: res.data.orderAll,
...@@ -124,7 +128,7 @@ export default { ...@@ -124,7 +128,7 @@ export default {
整体同比: res.data.tbi, 整体同比: res.data.tbi,
整体环比: res.data.hbi, 整体环比: res.data.hbi,
}); });
}) });
}, },
rangePickerChange(val) { rangePickerChange(val) {
console.log(val); console.log(val);
......
<template> <template>
<div class="Container"> <div class="Container">
<a-carousel
effect="fade"
autoplay
:autoplaySpeed="2400"
:dots="false"
style="width: 100%; overflow: hidden; position: absolute; left: 0"
>
<div class="img_box img1"></div>
<!-- style="
height: 100vh;
width: 100%;
background: url('@/assets/images/bg.jpg') center no-repeat;
overflow: hidden;
background-size: cover;
" -->
<div class="img_box img2"></div>
<div class="img_box img3"></div>
</a-carousel>
<div class="slogan-box"> <div class="slogan-box">
<div class="slogan-title">智慧政务一体化数据管理</div> <div class="slogan-title">智慧政务一体化数据管理</div>
<div class="slogan-text"> <div class="slogan-text">
...@@ -38,7 +56,16 @@ ...@@ -38,7 +56,16 @@
</li> </li>
</template> </template>
</ul> </ul>
<p class="bottom" @click="handleCkeck('/home/dataManagement/serviceDataAnalyse/makeTrendResearch')">服务类数据分析<a-icon type="swap-right" /></p> <p
class="bottom"
@click="
handleCkeck(
'/home/dataManagement/serviceDataAnalyse/makeTrendResearch'
)
"
>
服务类数据分析<a-icon type="swap-right" />
</p>
</li> </li>
</ul> </ul>
...@@ -183,12 +210,11 @@ export default { ...@@ -183,12 +210,11 @@ export default {
}, },
// 查看数据 // 查看数据
handleCkeck(path) { handleCkeck(path) {
if(path.indexOf('http')>-1){ if (path.indexOf("http") > -1) {
window.open(path) window.open(path);
}else{ } else {
this.$router.push(path); this.$router.push(path);
} }
}, },
// pushRouter1() { // pushRouter1() {
// // 易政秀报表 // // 易政秀报表
...@@ -280,17 +306,38 @@ export default { ...@@ -280,17 +306,38 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
.ant-carousel :deep(.slick-slide) {
width: 100%;
height: 100%;
overflow: hidden;
.img_box {
width: 100%;
height: 92.1vh;
overflow: hidden;
background-size: cover;
}
.img1 {
background: url("~@/assets/images/bg2.jpg") center no-repeat;
}
.img2 {
background: url("~@/assets/images/bgg3.jpg") center no-repeat;
}
.img3 {
background: url("~@/assets/images/bgg4.jpg") center no-repeat;
}
}
.Container { .Container {
height: 100%; height: 100%;
width: 100%; width: 100%;
// min-height: 960px; // min-height: 960px;
// background: url("~@/assets/images/zhandian.jpg") center no-repeat; // background: url("~@/assets/images/zhandian.jpg") center no-repeat;
background: url("../../assets/images/bg2.jpg") center no-repeat; // background: url("../../assets/images/bg2.jpg") center no-repeat;
background-size: cover; background-size: cover;
padding-top: @headerH; padding-top: @headerH;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
overflow: hidden;
.search_box { .search_box {
display: inline-block; display: inline-block;
margin-top: 12.1rem; margin-top: 12.1rem;
......
...@@ -114,4 +114,3 @@ export default { ...@@ -114,4 +114,3 @@ export default {
} }
} }
</style> </style>
...@@ -110,4 +110,3 @@ export default { ...@@ -110,4 +110,3 @@ export default {
} }
} }
</style> </style>
...@@ -110,4 +110,3 @@ export default { ...@@ -110,4 +110,3 @@ export default {
} }
} }
</style> </style>
...@@ -1608,7 +1608,7 @@ ...@@ -1608,7 +1608,7 @@
"@vue/vue-loader-v15@npm:vue-loader@^15.9.7": "@vue/vue-loader-v15@npm:vue-loader@^15.9.7":
version "15.10.1" version "15.10.1"
resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz" resolved "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz"
integrity sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA== integrity sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==
dependencies: dependencies:
"@vue/component-compiler-utils" "^3.1.0" "@vue/component-compiler-utils" "^3.1.0"
...@@ -6175,7 +6175,7 @@ vue-highlightjs@^1.3.3: ...@@ -6175,7 +6175,7 @@ vue-highlightjs@^1.3.3:
vue-hot-reload-api@^2.3.0: vue-hot-reload-api@^2.3.0:
version "2.3.4" version "2.3.4"
resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz" resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-loader@^17.0.0: vue-loader@^17.0.0:
......
This diff is collapsed.
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