2020-07-09备份
commit
e2426316d3
@ -0,0 +1,3 @@
|
||||
/target/
|
||||
/.idea/
|
||||
*.iml
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
package com.manage.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface RequiresPermissions {
|
||||
String value() default "";
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
|
||||
package com.manage.config;
|
||||
|
||||
import com.manage.entity.Power_Menu;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.web.bind.support.WebArgumentResolver;
|
||||
import org.springframework.web.context.request.NativeWebRequest;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @Author: ljx
|
||||
* @Date: 2019/4/22 19:10
|
||||
* @Version 1.0
|
||||
* 获取当前保存在session里的对象 可通过在方法参数直接获取Power_User
|
||||
*/
|
||||
public class CurrentUserResolver implements WebArgumentResolver {
|
||||
|
||||
@Override
|
||||
public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest nativeWebRequest) throws Exception {
|
||||
if(methodParameter.getParameterType() != null && methodParameter.getParameterType().equals(Power_Menu.class)){
|
||||
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
|
||||
Object currentUser = request.getSession().getAttribute("CURRENT_USER");
|
||||
return currentUser;
|
||||
}
|
||||
return UNRESOLVED;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.manage.config;
|
||||
|
||||
import com.manage.interfaces.webservice.PowerWebService;
|
||||
import com.manage.interfaces.webservice.impl.PowerWebServiceImpl;
|
||||
import org.apache.cxf.Bus;
|
||||
import org.apache.cxf.bus.spring.SpringBus;
|
||||
import org.apache.cxf.jaxws.EndpointImpl;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.xml.ws.Endpoint;
|
||||
|
||||
|
||||
@Configuration
|
||||
public class WebServiceConfig {
|
||||
|
||||
@Bean(name = Bus.DEFAULT_BUS_ID)
|
||||
public SpringBus springBus() {
|
||||
return new SpringBus();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PowerWebService powerWebService() {
|
||||
return new PowerWebServiceImpl();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Endpoint endpoint(){
|
||||
EndpointImpl endpoint = new EndpointImpl(springBus(),powerWebService());
|
||||
endpoint.publish("PowerWebService");
|
||||
return endpoint;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,425 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.manage.annotation.OptionalLog;
|
||||
import com.manage.annotation.RequiresPermissions;
|
||||
import com.manage.entity.Power_Dept;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ImportExcel.ImportExcelUtil;
|
||||
import com.manage.service.Power_DeptService;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.util.PageHelper;
|
||||
import com.manage.vo.ImportExcelEntity;
|
||||
import com.manage.vo.PowerTree;
|
||||
import com.manage.vo.Power_DeptVo;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.multipart.MultipartResolver;
|
||||
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Author ly
|
||||
* Date 2019/4/20
|
||||
* Time 16:39
|
||||
* Description No Description
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/dept")
|
||||
public class DeptController {
|
||||
|
||||
@Autowired
|
||||
private Power_DeptService powerDeptService;
|
||||
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 分页
|
||||
* */
|
||||
@RequestMapping("/pageList")
|
||||
@ResponseBody
|
||||
public PageHelper<Power_DeptVo> list(Power_DeptVo powerDept, HttpServletRequest request){
|
||||
PageHelper<Power_DeptVo>pageHelper = new PageHelper<Power_DeptVo>();
|
||||
try {
|
||||
//统计总记录数
|
||||
int total = powerDeptService.getTotal(powerDept);
|
||||
pageHelper.setTotal(total);
|
||||
//查询当前页实体对象
|
||||
List<Power_DeptVo> list = powerDeptService.findSomeByMore(powerDept,request);
|
||||
pageHelper.setRows(list);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
return pageHelper;
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 返回页面
|
||||
* */
|
||||
@OptionalLog(module = "查看",methods = "科室管理页面")
|
||||
@RequiresPermissions(value="/dept/pageUI")
|
||||
@RequestMapping("/pageUI")
|
||||
public String pageUI(HttpServletRequest request, Model model){
|
||||
Power_User powerUser1 =(Power_User) request.getSession().getAttribute("CURRENT_USER");
|
||||
model.addAttribute("user",powerUser1);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "deptDir/dept";
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2020-01-02
|
||||
* @Author zwh
|
||||
* @Description 查看部门返回页面
|
||||
* */
|
||||
@OptionalLog(module = "查看",methods = "部门管理页面")
|
||||
@RequiresPermissions(value="/dept/bloodUI")
|
||||
@RequestMapping("/bloodUI")
|
||||
public String bloodUI(HttpServletRequest request, Model model){
|
||||
Power_User powerUser1 =(Power_User) request.getSession().getAttribute("CURRENT_USER");
|
||||
model.addAttribute("user",powerUser1);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "deptDir/blood";
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-4-22
|
||||
* @Author ly
|
||||
* @Description 查询科室列表
|
||||
* */
|
||||
@RequestMapping("/selectList")
|
||||
@ResponseBody
|
||||
public Msg selectList(HttpServletRequest request) {
|
||||
try {
|
||||
List<Power_DeptVo> deptList = powerDeptService.selectDeptByUserId(request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",deptList);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-30
|
||||
* @Author ly
|
||||
* @Description 查询科室
|
||||
* */
|
||||
@RequestMapping("/selectDept")
|
||||
@ResponseBody
|
||||
public Power_Dept selectDept(Integer deptId) {
|
||||
try {
|
||||
Power_Dept power_dept = powerDeptService.selectByPrimaryKey(deptId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_dept;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-08-02
|
||||
* @Author zengwenhe
|
||||
* @Description 验证科室名不能重复
|
||||
* */
|
||||
@RequestMapping("/checkDeptName")
|
||||
@ResponseBody
|
||||
public Msg checkDeptName(String deptName,Integer dictId) {
|
||||
try {
|
||||
List<Power_Dept> power_dept = powerDeptService.checkDeptName(deptName,dictId);
|
||||
if(power_dept != null && !power_dept.isEmpty()){
|
||||
return Msg.fail("科室名已存在");
|
||||
}else{
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("验证失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-07-31
|
||||
* @Author zengwenhe
|
||||
* @Description 查询科室树
|
||||
* */
|
||||
@RequestMapping(value = "/selectDeptTreeByUserId",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String selectDeptTreeByUserId(HttpServletRequest request) {
|
||||
try {
|
||||
List<Power_DeptVo> list = powerDeptService.selectDeptByUserId(request);
|
||||
List<PowerTree> treeList = new ArrayList<>();
|
||||
Map<Integer,String> hospitalMap = new HashMap<>();
|
||||
Integer id = 1;
|
||||
Integer parentId = null;
|
||||
if(null != list && !list.isEmpty()){
|
||||
for (int i = 0;i < list.size();i++){
|
||||
hospitalMap.put(list.get(i).getDictId(),list.get(i).getHospitalName());
|
||||
}
|
||||
for (Map.Entry<Integer, String> entry : hospitalMap.entrySet()) {
|
||||
//医院层
|
||||
PowerTree tree1 = new PowerTree();
|
||||
tree1.setId(id);
|
||||
tree1.setSelfId(entry.getKey());
|
||||
tree1.setName(entry.getValue());
|
||||
tree1.setParentId(0);
|
||||
treeList.add(tree1);
|
||||
parentId = id;
|
||||
id++;
|
||||
//科室层
|
||||
for (int i = 0;i < list.size();i++){
|
||||
if(entry.getKey().equals(list.get(i).getDictId())){
|
||||
PowerTree tree2 = new PowerTree();
|
||||
tree2.setId(id);
|
||||
tree2.setSelfId(list.get(i).getDeptId());
|
||||
tree2.setName(list.get(i).getDeptName());
|
||||
tree2.setParentId(parentId);
|
||||
treeList.add(tree2);
|
||||
id++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json = mapper.writeValueAsString(treeList);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return json;
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 新增科室
|
||||
* */
|
||||
@OptionalLog(module = "新增",methods = "科室管理",fieldName = "deptName")
|
||||
@RequiresPermissions(value="/dept/add")
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public Msg add(Power_Dept powerDept){
|
||||
try {
|
||||
List<Power_Dept> power_dept = powerDeptService.checkDeptName(powerDept.getDeptName(),powerDept.getDictId());
|
||||
if(null == power_dept || power_dept.isEmpty()){
|
||||
powerDeptService.insertSelective(powerDept);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}else{
|
||||
return Msg.fail("科室名已存在!");
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("添加出错了,请联系系统管理员!");
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 更新科室
|
||||
* */
|
||||
@OptionalLog(module = "修改",methods = "科室管理",fieldName = "deptName")
|
||||
@RequiresPermissions(value="/dept/update")
|
||||
@RequestMapping("/update")
|
||||
@ResponseBody
|
||||
public Msg update(Power_Dept powerDept,HttpServletRequest request){
|
||||
try {
|
||||
List<Power_Dept> power_dept = powerDeptService.checkDeptName(powerDept.getDeptName(),powerDept.getDictId());
|
||||
if(null != power_dept && !power_dept.isEmpty() && !power_dept.get(0).getDeptId().equals(powerDept.getDeptId())){
|
||||
return Msg.fail("科室名已存在!");
|
||||
}else{
|
||||
powerDeptService.updateByPrimaryKeySelective(powerDept,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("修改出错了,请联系系统管理员!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 删除科室
|
||||
* */
|
||||
@OptionalLog(module = "删除",methods = "科室管理",fieldName = "deptName",tableName = "power_dept")
|
||||
@RequiresPermissions(value="/dept/delete")
|
||||
@RequestMapping("/delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer deptId){
|
||||
try {
|
||||
CacheManager.addExcCount("noExc");
|
||||
powerDeptService.deleteByPrimaryKey(deptId);
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-29
|
||||
* @Author ly
|
||||
* @Description 导出Excel
|
||||
* */
|
||||
@OptionalLog(module = "导出excel",methods = "科室管理")
|
||||
@RequiresPermissions(value="/dept/export")
|
||||
@RequestMapping("/export")
|
||||
public void export(Power_DeptVo powerDept,HttpServletRequest request,HttpServletResponse response){
|
||||
try {
|
||||
powerDeptService.export(powerDept,request,response);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-29
|
||||
* @Author ly
|
||||
* @Description 导出Excel
|
||||
* */
|
||||
@OptionalLog(module = "导出excel",methods = "部门管理")
|
||||
@RequiresPermissions(value="/dept/exportBlood")
|
||||
@RequestMapping("/exportBlood")
|
||||
public void exportBlood(Power_DeptVo powerDept,HttpServletRequest request,HttpServletResponse response){
|
||||
try {
|
||||
powerDeptService.exportBlood(powerDept,request,response);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-22
|
||||
* @Author ly
|
||||
* @Description 根据一组科室id查询科室
|
||||
* */
|
||||
@RequestMapping("/findById")
|
||||
@ResponseBody
|
||||
public List<Power_Dept>findById(String dept_ids){
|
||||
try {
|
||||
List<Power_Dept>deptList = powerDeptService.selectByPrimaryKeys(dept_ids);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return deptList;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Date 2019-08-06
|
||||
* @Author zengwenhe
|
||||
* @Description 根据医院查询科室
|
||||
* */
|
||||
@RequestMapping("/selectDeptByDictId")
|
||||
@ResponseBody
|
||||
public Msg selectDeptByDictId(Integer dictId){
|
||||
try {
|
||||
List<Power_DeptVo> depts = powerDeptService.selectDeptByDictId(dictId,null);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("depts",depts);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("查询失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-10-11
|
||||
* @Author zengwh
|
||||
* @Description 导入excel
|
||||
* */
|
||||
@OptionalLog(module = "导入excel",methods = "科室管理")
|
||||
@RequiresPermissions(value="/dept/importExcel")
|
||||
@RequestMapping(value="/importExcel",method = {RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public ResponseEntity<String> importExcel(HttpServletRequest request){
|
||||
OutputStream os = null;
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentType(new MediaType("text","html", Charset.forName("UTF-8")));
|
||||
try {
|
||||
//读取文件
|
||||
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
|
||||
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
|
||||
MultipartFile multipartFile = multipartRequest.getFile("upfile");
|
||||
//属性名
|
||||
String[] fieldNames = {"deptName","dictId","effective","remark",};
|
||||
//判断集中类中的方法名
|
||||
String[] judgeMethods = {"judgeDeptName","judgeDictId","convertEffective","judgeRemark"};
|
||||
Power_Dept power_dept = new Power_Dept();
|
||||
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
power_dept.setCreater(user.getUserName());
|
||||
power_dept.setUpdater(user.getUserName());
|
||||
power_dept.setCreateDate(fmt.format(new Date()));
|
||||
power_dept.setUpdateDate(fmt.format(new Date()));
|
||||
power_dept.setDeptCode("");
|
||||
//实例化
|
||||
ImportExcelUtil.newInstance("power_DeptMapper",power_dept, Power_Dept.class);
|
||||
//导入excel的操作
|
||||
ImportExcelEntity excelEntity = ImportExcelUtil.fileImport(multipartFile,fieldNames,judgeMethods);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(excelEntity.getSuccessCount() == 0 && excelEntity.getWrongCount() == 0){
|
||||
//无数据
|
||||
return new ResponseEntity<String>("无数据!", responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
if(excelEntity.getWrongCount() == 0){
|
||||
//成功
|
||||
return new ResponseEntity<String>(null, responseHeaders, HttpStatus.OK);
|
||||
}else{
|
||||
//有出错数据
|
||||
String msgStr = excelEntity.getWorkBookKey()+"@已成功导入"+excelEntity.getSuccessCount()+"条,失败"+excelEntity.getWrongCount()+"条,随后将导出错误记录!";
|
||||
return new ResponseEntity<String>(msgStr, responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
//抛异常
|
||||
return new ResponseEntity<String>(e.getMessage(), responseHeaders, HttpStatus.OK);
|
||||
}finally {
|
||||
if(os != null){
|
||||
try {
|
||||
os.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ImportExcel.ImportExcelUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.OutputStream;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/10/12 12:20
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/10/12 12:20
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Controller
|
||||
public class ExportExcelController {
|
||||
@RequestMapping(value="exportWrongExcel")
|
||||
public void exportWrongExcel(String workBookKey,String fileName, HttpServletResponse response){
|
||||
OutputStream os = null;
|
||||
if(StringUtils.isNoneBlank(fileName)){
|
||||
//文件名
|
||||
fileName = "导入"+fileName+"时出错数据列表.xls";
|
||||
try {
|
||||
//导出excel的操作
|
||||
Workbook workbook = ImportExcelUtil.getWorkBookMapByKey(workBookKey);
|
||||
os = response.getOutputStream();
|
||||
response.reset();
|
||||
response.setContentType("application/OCTET-STREAM;charset=gbk");
|
||||
response.setHeader("pragma", "no-cache");
|
||||
fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");
|
||||
response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\"");
|
||||
workbook.write(os);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if(os != null){
|
||||
try {
|
||||
os.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,569 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.manage.dao.Power_NoticeMapper;
|
||||
import com.manage.dao.Power_UserMapper;
|
||||
import com.manage.encrypt.Base64;
|
||||
import com.manage.encrypt.MD5;
|
||||
import com.manage.entity.*;
|
||||
import com.manage.service.*;
|
||||
import com.manage.service.cache.Cache;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ipml.Power_NoticeServiceImpl;
|
||||
import com.manage.service.webSocket.WsPool;
|
||||
import com.manage.util.DateUtils;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.vo.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/9 15:07
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/7/9 15:07
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("font/")
|
||||
public class FontController {
|
||||
@Value("${STR_SPLIT}")
|
||||
private String STR_SPLIT;
|
||||
@Autowired
|
||||
private PowerService powerService;
|
||||
@Autowired
|
||||
private User_Dept_MenuService userDeptMenuService;
|
||||
@Autowired
|
||||
private Power_NoticeMapper powerNoticeMapper;
|
||||
@Autowired
|
||||
private Power_UserMapper userMapper;
|
||||
@Autowired
|
||||
private Power_NoticeServiceImpl noticeService;
|
||||
@Autowired
|
||||
private Power_UserService userService;
|
||||
@Value("${TOKEN_EXPIRE_TIME}")
|
||||
private long TOKEN_EXPIRE_TIME;
|
||||
@Autowired
|
||||
private Power_MenuService powerMenuService;
|
||||
@Autowired
|
||||
private Power_DeptService power_deptService;
|
||||
|
||||
/**
|
||||
* 2.1
|
||||
* @ProjectName: getRolePowerTreeBySysFlag
|
||||
* @Description: 获取菜单通过系统标识
|
||||
* @Param 无
|
||||
* @Return getMenusByUserIdAndSysFlag
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/9 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/7/9 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getMenusByUserIdAndSysFlag",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg getMenusByUserIdAndSysFlag(String userName,String sysFlag,Integer userId,Integer roleId,Integer sysId,Integer hospitalId){
|
||||
try {
|
||||
if(StringUtils.isNotBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
|
||||
&& sysId == null && hospitalId == null){
|
||||
return Msg.fail("查询复杂,数据大,暂不支持只带sysFlag参数查询");
|
||||
}
|
||||
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
|
||||
&& sysId != null && hospitalId == null){
|
||||
return Msg.fail("查询复杂,数据大,暂不支持只带sysId参数查询");
|
||||
}
|
||||
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
|
||||
&& sysId == null && hospitalId != null){
|
||||
return Msg.fail("查询复杂,数据大,暂不支持只带hospitalId参数查询");
|
||||
}
|
||||
if(StringUtils.isNotBlank(userName)){
|
||||
List<Power_User> power_users = userMapper.checkUserName(userName);
|
||||
if(null != power_users && !power_users.isEmpty()){
|
||||
if(power_users.get(0).getRoleId().equals(0) || power_users.get(0).getRoleId().equals(-100)){
|
||||
roleId = power_users.get(0).getRoleId();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<User_Dept_Menu> list = userDeptMenuService.selectAll(userName, sysFlag, userId, roleId, sysId, hospitalId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",list);
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.2
|
||||
* @ProjectName: selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
|
||||
* @Description: 根据用户id或角色id和系统id或系统标识查询通知记录
|
||||
* @Param 无
|
||||
* @Return selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/29 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/7/29 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "selectAllByUserIdOrRoleIdAndSysIdOrSysFlag")
|
||||
@ResponseBody
|
||||
public Msg selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(Integer userId,Integer roleId,Integer sysId,String sysFlag){
|
||||
try {
|
||||
List<Power_Notice> list = powerNoticeMapper.selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(userId, roleId, sysId, sysFlag);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",list);
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.4
|
||||
* @ProjectName: getUserPowerTreeBySysFlag
|
||||
* @Description: 获取系统用户树通过系统标识
|
||||
* @Param 无
|
||||
* @Return PowerTree
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/9 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/7/9 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getUserPowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String getUserPowerTreeBySysFlag(String sysFlag,Integer userId){
|
||||
try {
|
||||
if(null != userId){
|
||||
//查询该用户
|
||||
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
|
||||
List<PowerTree> dicts = powerService.getUserPowerTreeBySysFlag(sysFlag,user);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json = mapper.writeValueAsString(dicts);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return json;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.5
|
||||
* @ProjectName: getRolePowerTreeBySysFlag
|
||||
* @Description: 获取系统角色树通过系统标识
|
||||
* @Param 无
|
||||
* @Return PowerTree
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/9 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/7/9 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getRolePowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String getRolePowerTreeBySysFlag(String sysFlag,Integer userId){
|
||||
try {
|
||||
if(null != userId){
|
||||
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
|
||||
List<PowerTree> dicts = powerService.getRolePowerTreeBySysFlag(sysFlag,user);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json = mapper.writeValueAsString(dicts);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return json;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.6
|
||||
* @ProjectName: getUserList
|
||||
* @Description: 获取用户id和用户名
|
||||
* @Param 无
|
||||
* @Return userList
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/9/6 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/9/6 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getUserList")
|
||||
@ResponseBody
|
||||
public Msg getUserList(String userName){
|
||||
try {
|
||||
List<User> list = new ArrayList<>();
|
||||
if(StringUtils.isNoneBlank(userName)){
|
||||
List<Power_User> users = userMapper.checkUserName(userName);
|
||||
if(null != users && !users.isEmpty()){
|
||||
Integer roleId = users.get(0).getRoleId();
|
||||
if(roleId == 0){
|
||||
list = userMapper.selectUserIdAndUserNameList(null);
|
||||
}else{
|
||||
list = userMapper.selectUserIdAndUserNameList(users.get(0).getUserId());
|
||||
}
|
||||
}
|
||||
}else{
|
||||
return Msg.fail("用户名不能为空");
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("userList",list);
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.7
|
||||
* @ProjectName: checkToken
|
||||
* @Description: 验证token是否有效
|
||||
* @Param 无
|
||||
* @Return Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/9/24 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/9/24 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "checkToken",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg checkToken(String token){
|
||||
try {
|
||||
if(StringUtils.isNotBlank(token) && StringUtils.isNotBlank(token) ) {
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cache = CacheManager.getCacheInfo(token);
|
||||
if (cache == null) {
|
||||
return Msg.fail("token已过期或不存在");
|
||||
}
|
||||
}else{
|
||||
return Msg.fail("token不能为空");
|
||||
}
|
||||
return Msg.success();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.8
|
||||
* @ProjectName: getUserByToken
|
||||
* @Description: 根据token获取用户
|
||||
* @Param 无
|
||||
* @Return getMenuListByToken
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/10/31 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/10/31 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getUserByToken",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg getMenuListByToken(String token,String sysFlag){
|
||||
try {
|
||||
if(StringUtils.isBlank(token)){
|
||||
return Msg.fail("token不能为空!");
|
||||
}
|
||||
if(StringUtils.isBlank(sysFlag)){
|
||||
return Msg.fail("sysFlag不能为空!");
|
||||
}
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cacheInfo = CacheManager.getCacheInfo(token);
|
||||
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
|
||||
if(null != user){
|
||||
List<User_Dept_Menu> menuList = user.getMenuList();
|
||||
List<User_Dept_Menu> list = new ArrayList<>();
|
||||
Set<String> menus = new TreeSet<>();
|
||||
if(null != menuList && !menuList.isEmpty()){
|
||||
for (int i = 0; i < menuList.size(); i++) {
|
||||
String menuSysFlag = menuList.get(i).getSysFlag();
|
||||
if(StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)){
|
||||
list.add(menuList.get(i));
|
||||
if(StringUtils.isNotBlank(menuList.get(i).getMethod())){
|
||||
menus.add(menuList.get(i).getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
user.setMenuList(list);
|
||||
user.setMenus(menus);
|
||||
UserVo userVo = new UserVo();
|
||||
BeanUtils.copyProperties(user,userVo);
|
||||
//查询用户集合
|
||||
List<User> userList = new ArrayList<>();
|
||||
Integer roleId = userVo.getRoleId();
|
||||
if(roleId == 0){
|
||||
userList = userMapper.selectUserIdAndUserNameList(null);
|
||||
}else{
|
||||
userList = userMapper.selectUserIdAndUserNameList(userVo.getUserId());
|
||||
}
|
||||
//设置用户集合
|
||||
userVo.setUserList(userList);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("user",userVo);
|
||||
}else{
|
||||
return Msg.fail("token已失效");
|
||||
}
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.9
|
||||
* @ProjectName: getMenuByToken
|
||||
* @Description: 根据token获取菜单
|
||||
* @Param 无
|
||||
* @Return getMenuListByToken
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/10/31 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/10/31 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getMenuByToken",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg getMenuByToken(String token,String sysFlag){
|
||||
try {
|
||||
if(StringUtils.isBlank(token)){
|
||||
return Msg.fail("token不能为空!");
|
||||
}
|
||||
if(StringUtils.isBlank(sysFlag)){
|
||||
return Msg.fail("sysFlag不能为空!");
|
||||
}
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cacheInfo = CacheManager.getCacheInfo(token);
|
||||
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
|
||||
List<User_Dept_Menu> menuList = user.getMenuList();
|
||||
List<User_Dept_Menu> list = new ArrayList<>();
|
||||
if(null != menuList && !menuList.isEmpty()){
|
||||
for (int i = 0; i < menuList.size(); i++) {
|
||||
String menuSysFlag = menuList.get(i).getSysFlag();
|
||||
if(StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)){
|
||||
list.add(menuList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",list);
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.10
|
||||
* @ProjectName: getToken
|
||||
* @Description: 获取token
|
||||
* @Param 无
|
||||
* @Return Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/11/06 10:00
|
||||
* @UpdateUser: 更新者
|
||||
* @UpdateDate: 2019/11/06 10:00
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value = "getToken",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg getToken(String userName,String password){
|
||||
try {
|
||||
if(StringUtils.isBlank(userName)){
|
||||
return Msg.fail("用户名不能为空");
|
||||
}
|
||||
if(StringUtils.isBlank(password)){
|
||||
return Msg.fail("密码不能为空");
|
||||
}
|
||||
Power_User user = new Power_User();
|
||||
user.setUserName(userName);
|
||||
user.setRemark(password);
|
||||
Power_UserVo userVo = userService.findPowerUserByUserNameAndRemark(user);
|
||||
if(null == userVo){
|
||||
return Msg.fail("用户名或密码不正确");
|
||||
}
|
||||
String date = String.valueOf(DateUtils.getDate());
|
||||
String token = Base64.encode(MD5.KL(date));
|
||||
|
||||
List<Power_Menu> list = null;
|
||||
List<User_Dept_Menu> menuList = new ArrayList<>();
|
||||
Set<String> menus = new TreeSet<>();
|
||||
if (userVo.getRoleId().equals(0) || userVo.getRoleId().equals(-100)) {
|
||||
list = powerMenuService.queryAllPowerMenu(null,userVo.getRoleId());
|
||||
} else {
|
||||
list = powerMenuService.selectUserAndRoleMenuListPower(userVo.getUserId(),null);
|
||||
}
|
||||
if(null != list && !list.isEmpty()){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
User_Dept_Menu deptMenu = new User_Dept_Menu();
|
||||
String menuUrl = list.get(i).getMenuUrl();
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
BeanUtils.copyProperties(list.get(i),deptMenu);
|
||||
deptMenu.setMethodParent(list.get(i).getParentId());
|
||||
menuList.add(deptMenu);
|
||||
}
|
||||
if(StringUtils.isNotBlank(list.get(i).getMethod())){
|
||||
menus.add(list.get(i).getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
userVo.setMenuList(menuList);
|
||||
userVo.setMenus(menus);
|
||||
|
||||
//设置科室
|
||||
String power_depts = "";
|
||||
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(userVo.getDeptId());
|
||||
for(int j=0;j<power_depts1.size();j++){
|
||||
if(j<power_depts1.size()-1){
|
||||
power_depts += power_depts1.get(j).getDeptName()+",";
|
||||
}else{
|
||||
power_depts += power_depts1.get(j).getDeptName();
|
||||
}
|
||||
}
|
||||
userVo.setRemark(power_depts);
|
||||
//移除缓存
|
||||
CacheManager.removeCacheByObject(userVo);
|
||||
CacheManager.putCache(date,new Cache(date,userVo,TOKEN_EXPIRE_TIME));
|
||||
return Msg.success().add("token",token);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.11
|
||||
* @MethodName getUnReadCount
|
||||
* @Description: 根据用户获取未读通知数量
|
||||
* @Param 无
|
||||
* @Returnt Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-10-17
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-10-17
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.2.2
|
||||
*/
|
||||
@RequestMapping("notice/getUnReadCount")
|
||||
@ResponseBody
|
||||
public Msg getUnReadCount(Integer userId){
|
||||
try {
|
||||
if(null == userId){
|
||||
return Msg.fail("用户id不能为空");
|
||||
}
|
||||
Power_UserVo userVo = userMapper.selectByPrimaryKey(userId);
|
||||
if(null == userVo){
|
||||
return Msg.fail("用户id不存在");
|
||||
}
|
||||
int unReadCount = noticeService.getUnReadCount(userId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("unReadCount",unReadCount);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName checkUserName
|
||||
* @Description: 根据用户名判断用户是否存在
|
||||
* @Param 无
|
||||
* @Returnt Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2020-04-22
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2020-04-22
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.2.2
|
||||
*/
|
||||
@RequestMapping("checkUserName")
|
||||
@ResponseBody
|
||||
public Msg checkUserName(String userName){
|
||||
try {
|
||||
if(StringUtils.isBlank(userName)){
|
||||
return Msg.fail("工号不能为空!");
|
||||
}
|
||||
//查询用户
|
||||
List<Power_User> user = userMapper.checkUserName(userName);
|
||||
if(null == user || user.isEmpty()){
|
||||
return Msg.fail("该工号不存在!");
|
||||
}
|
||||
return Msg.success().add("user",user);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName sendEmrRecordApproveNotice
|
||||
* @Description: 给病案管理系统发送审批通知
|
||||
* @Param applyType 申请类型
|
||||
* @Param count 新的待审批份数
|
||||
* @Returnt Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2020-04-24
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2020-04-24
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version:
|
||||
*/
|
||||
@RequestMapping("sendEmrRecordApproveNotice")
|
||||
@ResponseBody
|
||||
public void sendEmrRecordApproveNotice(String applyType,Integer count){
|
||||
try {
|
||||
String title = "待审批通知";
|
||||
String content = "您有"+count+"份"+applyType+"待审批!";
|
||||
//查询有借阅审批权限的id集合
|
||||
String menuUrl = "/approve/updateApprove";
|
||||
List<Power_User> users = userMapper.selectUserIdsWithApprove(menuUrl);
|
||||
for(Power_User user : users){
|
||||
if(null != user) {
|
||||
WsPool.sendMessageToAll("emr_record_" + user.getUserId(), title + STR_SPLIT + content + STR_SPLIT + "emr_record");
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import com.manage.vo.User_Dept_Menu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import javax.servlet.jsp.JspException;
|
||||
import javax.servlet.jsp.tagext.TagSupport;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/8/14 11:15
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/8/14 11:15
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class HasAnyPermission extends TagSupport {
|
||||
private String permissions;
|
||||
|
||||
public String getPermissions() {
|
||||
return permissions;
|
||||
}
|
||||
|
||||
public void setPermissions(String permissions) {
|
||||
this.permissions = permissions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int doStartTag() throws JspException {
|
||||
HttpSession session = pageContext.getSession();
|
||||
String[] arrPermissions = permissions.split(",");
|
||||
//用户是否分配了权限
|
||||
Power_UserVo user = (Power_UserVo)session.getAttribute("CURRENT_USER");
|
||||
//系统管理员全部放过
|
||||
if(user.getRoleId() == 0){
|
||||
return TagSupport.EVAL_BODY_INCLUDE;
|
||||
}
|
||||
List<User_Dept_Menu> hasPermissions = user.getMenuList();
|
||||
if(null != hasPermissions && !hasPermissions.isEmpty()){
|
||||
for (User_Dept_Menu pm : hasPermissions){
|
||||
if(StringUtils.isNoneBlank(pm.getMenuUrl())){
|
||||
for (String psermission : arrPermissions){
|
||||
//用户分配的权限中,是否包含该权限
|
||||
if (pm.getMenuUrl().equals(psermission)){
|
||||
return TagSupport.EVAL_BODY_INCLUDE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return TagSupport.SKIP_BODY;
|
||||
}
|
||||
}
|
@ -0,0 +1,170 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.manage.dao.Power_Login_SetMapper;
|
||||
import com.manage.encrypt.Base64;
|
||||
import com.manage.encrypt.MD5;
|
||||
import com.manage.entity.*;
|
||||
import com.manage.service.*;
|
||||
import com.manage.service.cache.Cache;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.util.*;
|
||||
import com.manage.vo.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
@Controller
|
||||
public class LoginController {
|
||||
@Value("${TOKEN_EXPIRE_TIME}")
|
||||
private long TOKEN_EXPIRE_TIME;
|
||||
@Autowired
|
||||
private Power_UserService powerUserService;
|
||||
@Autowired
|
||||
private Power_MenuService powerMenuService;
|
||||
@Autowired
|
||||
private LogService logService;
|
||||
@Autowired
|
||||
private Power_DeptService power_deptService;
|
||||
@Autowired
|
||||
private Power_Login_SetMapper powerLoginSetMapper;
|
||||
|
||||
@RequestMapping(value = "login",method = RequestMethod.GET)
|
||||
public String toLogin(Model model){
|
||||
Power_Login_Set loginSet = powerLoginSetMapper.selectByPrimaryKey(1);
|
||||
model.addAttribute("loginSet",loginSet);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "loginDir/login";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "login",method = RequestMethod.POST)
|
||||
public String login(Power_User powerUser,HttpServletResponse response, HttpServletRequest request,Model model){
|
||||
try {
|
||||
Power_UserVo user = powerUserService.findPowerUserByUserNameAndUserPwd(powerUser);
|
||||
//添加进操作日志
|
||||
Power_Log log = new Power_Log();
|
||||
if( user != null){
|
||||
//如处于登录状态,先清除缓存
|
||||
//CacheManager.removeCacheByObject(user);
|
||||
//记住
|
||||
MyCookieUtil.remember(request, response);
|
||||
|
||||
//清除用户登录错误次数缓存
|
||||
CacheManager.clearOnly(powerUser.getUserName());
|
||||
//存session密码置空
|
||||
//是否记住密码功能
|
||||
MyCookieUtil.remember(request, response);
|
||||
//设置token缓存
|
||||
String date = String.valueOf(DateUtils.getDate());
|
||||
String token = Base64.encode(MD5.KL(date));
|
||||
|
||||
|
||||
//查询归属医院
|
||||
/* long start5 = System.currentTimeMillis();
|
||||
Power_User_Dict powerUserDict = powerUserDictMapper.selectDictIdByUserId(user.getUserId());
|
||||
long end5 = System.currentTimeMillis();
|
||||
System.out.println("查询医院时间="+(end5-start5)/1000.0+"s");
|
||||
user.setDictId(powerUserDict.getDictId());*/
|
||||
//科室id科室名
|
||||
ActionScopeUtils.setSessionAttribute("token",token,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))/1000);
|
||||
|
||||
//设置用户登录次数缓存
|
||||
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
CacheManager.addloginUserCount(fmt.format(new Date()),user.getUserName());
|
||||
CacheManager.addExcCount("noExc");
|
||||
List<Power_Menu> list = null;
|
||||
List<User_Dept_Menu> menuList = new ArrayList<>();
|
||||
Set<String> menus = new LinkedHashSet<>();
|
||||
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
|
||||
list = powerMenuService.queryAllPowerMenu(null,user.getRoleId());
|
||||
} else {
|
||||
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),null);
|
||||
}
|
||||
if(null != list && !list.isEmpty()){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
User_Dept_Menu deptMenu = new User_Dept_Menu();
|
||||
String menuUrl = list.get(i).getMenuUrl();
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
BeanUtils.copyProperties(list.get(i),deptMenu);
|
||||
deptMenu.setMethodParent(list.get(i).getParentId());
|
||||
menuList.add(deptMenu);
|
||||
}
|
||||
if(StringUtils.isNotBlank(list.get(i).getMethod())){
|
||||
menus.add(list.get(i).getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
user.setMenuList(menuList);
|
||||
user.setMenus(menus);
|
||||
|
||||
//设置科室
|
||||
String power_depts = "";
|
||||
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(user.getDeptId());
|
||||
for(int j=0;j<power_depts1.size();j++){
|
||||
if(j<power_depts1.size()-1){
|
||||
power_depts += power_depts1.get(j).getDeptName()+",";
|
||||
}else{
|
||||
power_depts += power_depts1.get(j).getDeptName();
|
||||
}
|
||||
}
|
||||
user.setRemark(power_depts);
|
||||
|
||||
//设置进缓存
|
||||
CacheManager.putCache(date,new Cache(date,user,TOKEN_EXPIRE_TIME));
|
||||
ActionScopeUtils.setSessionAttribute("CURRENT_USER",user,Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME))/1000);
|
||||
return "redirect:gatewayPage";
|
||||
}else{
|
||||
//登录失败
|
||||
Integer wrongNum = 1;
|
||||
Cache cache = CacheManager.getCacheInfo(powerUser.getUserName());
|
||||
if(cache != null){
|
||||
//缓存中错误次数
|
||||
Integer currentNum = (Integer)cache.getValue();
|
||||
//叠加1
|
||||
wrongNum += currentNum;
|
||||
}
|
||||
//先清除后添加缓存
|
||||
CacheManager.clearOnly(powerUser.getUserName());
|
||||
CacheManager.putCache(powerUser.getUserName(),new Cache(powerUser.getUserName(),wrongNum));
|
||||
log.setCreater(powerUser.getUserName());
|
||||
log.setLogTitle("登录");
|
||||
log.setLogContent("用户密码错误");
|
||||
log.setRemark("已错误【"+wrongNum+"】次");
|
||||
logService.insert(log);
|
||||
request.setAttribute("msg", "用户名或密码不正确");
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
Power_Login_Set loginSet = powerLoginSetMapper.selectByPrimaryKey(1);
|
||||
model.addAttribute("loginSet",loginSet);
|
||||
return "loginDir/login";
|
||||
}
|
||||
@RequestMapping("refuse")
|
||||
public String refuse(){
|
||||
return "refuse";
|
||||
}
|
||||
|
||||
|
||||
//获取session所剩时间
|
||||
@RequestMapping(value = "getSessionRemainingTime",method = RequestMethod.GET,produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String getSessionRemainingTime(HttpServletRequest request)throws Exception{
|
||||
long lastAccessTime = 0L;
|
||||
String sessionId = request.getSession().getId();
|
||||
lastAccessTime = (long)request.getSession().getAttribute(sessionId);
|
||||
return JSON.toJSONString(TOKEN_EXPIRE_TIME-(System.currentTimeMillis()-lastAccessTime));
|
||||
}
|
||||
}
|
@ -0,0 +1,346 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.dao.Power_Sys_DictMapper;
|
||||
import com.manage.encrypt.Base64;
|
||||
import com.manage.encrypt.MD5;
|
||||
import com.manage.entity.Power_Log;
|
||||
import com.manage.entity.Power_Menu;
|
||||
import com.manage.entity.Power_Sys_Dict;
|
||||
import com.manage.service.LogService;
|
||||
import com.manage.service.Power_MenuService;
|
||||
import com.manage.service.cache.Cache;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ipml.PageServiceImpl;
|
||||
import com.manage.service.ipml.Power_NoticeServiceImpl;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.vo.Echarts;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import com.manage.vo.User_Dept_Menu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 跳转页面 不做业务处理
|
||||
* @Author: ljx
|
||||
* @Date: 2019/4/16 9:26
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Controller
|
||||
public class PageController {
|
||||
@Value("${EMRMEDICALRECORD_URLHEAD}")
|
||||
private String EMRMEDICALRECORD_URLHEAD;
|
||||
@Value("${EMRRECORD_URLHEAD}")
|
||||
private String EMRRECORD_URLHEAD;
|
||||
@Value("${EMRAPPLYCOPY_URLHEAD}")
|
||||
private String EMRAPPLYCOPY_URLHEAD;
|
||||
@Value("${EMRFILES_URLHEAD}")
|
||||
private String EMRFILES_URLHEAD;
|
||||
|
||||
@Value("${WEBSOCKET_URLHEAD}")
|
||||
private String WEBSOCKET_URLHEAD;
|
||||
@Value("${STR_SPLIT}")
|
||||
private String STR_SPLIT;
|
||||
@Autowired
|
||||
private Power_NoticeServiceImpl powerNoticeService;
|
||||
@Autowired
|
||||
private PageServiceImpl pageService;
|
||||
@Autowired
|
||||
private Power_Sys_DictMapper sysDictMapper;
|
||||
@Autowired
|
||||
private LogService logService;
|
||||
@Value("${TOKEN_EXPIRE_TIME}")
|
||||
private long TOKEN_EXPIRE_TIME;
|
||||
@Autowired
|
||||
private Power_MenuService powerMenuService;
|
||||
@RequestMapping(value = "logout")
|
||||
public String logout(HttpSession session,String token){
|
||||
try {
|
||||
session.invalidate();
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cache = CacheManager.getCacheInfo(token);
|
||||
if(cache != null){
|
||||
//CacheManager.removeCacheByObject((Power_UserVo)cache.getValue());
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
return "redirect:login";
|
||||
}
|
||||
@RequestMapping(value = "index")
|
||||
public String index(Model model,HttpServletRequest request){
|
||||
Power_UserVo user =(Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
model.addAttribute("WEBSOCKET_URLHEAD",WEBSOCKET_URLHEAD);
|
||||
model.addAttribute("STR_SPLIT",STR_SPLIT);
|
||||
CacheManager.addExcCount("noExc");
|
||||
/*Set<String> menus = new TreeSet<>();
|
||||
List<Power_Menu> list = null;
|
||||
if (user.getRoleId().equals(0) || user.getRoleId().equals(-100)) {
|
||||
list = powerMenuService.queryAllPowerMenu(null,user.getRoleId());
|
||||
} else {
|
||||
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),null);
|
||||
}
|
||||
if(null != list && !list.isEmpty()){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if(StringUtils.isNotBlank(list.get(i).getMethod())){
|
||||
menus.add(list.get(i).getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
user.setMenus(menus);*/
|
||||
return "/loginDir/index";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "gatewayPage")
|
||||
public String register(Model model, HttpServletRequest request,Integer noticeId){
|
||||
model.addAttribute("EMRMEDICALRECORD_URLHEAD",EMRMEDICALRECORD_URLHEAD);
|
||||
|
||||
model.addAttribute("EMRRECORD_URLHEAD",EMRRECORD_URLHEAD);
|
||||
|
||||
model.addAttribute("EMRAPPLYCOPY_URLHEAD",EMRAPPLYCOPY_URLHEAD);
|
||||
|
||||
model.addAttribute("EMRFILES_URLHEAD",EMRFILES_URLHEAD);
|
||||
|
||||
model.addAttribute("WEBSOCKET_URLHEAD",WEBSOCKET_URLHEAD);
|
||||
model.addAttribute("STR_SPLIT",STR_SPLIT);
|
||||
model.addAttribute("flag",noticeId);
|
||||
//登录成功
|
||||
//插入成功日志
|
||||
Power_UserVo powerUser = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
Power_Log log = new Power_Log();
|
||||
log.setLogTitle("登录");
|
||||
log.setLogContent("用户登录成功");
|
||||
log.setCreater(powerUser.getUserName());
|
||||
logService.insert(log);
|
||||
//修改该通知为已读
|
||||
if(null != noticeId && noticeId != -1){
|
||||
try {
|
||||
powerNoticeService.updateNoticeReadFlag(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
}
|
||||
//查询当前用户
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
//查询系统权限
|
||||
List<Power_Sys_Dict> sysList = new ArrayList<>();
|
||||
if(user.getRoleId() == 0){
|
||||
sysList = sysDictMapper.selectSysFlagsByUserId(null,null);
|
||||
}else{
|
||||
sysList = sysDictMapper.selectSysFlagsByUserId(user.getUserId(),user.getRoleId());
|
||||
}
|
||||
int power = 0;
|
||||
int emr_medical_record = 0;
|
||||
int emr_record = 0;
|
||||
int emr_apply_copy = 0;
|
||||
int emr_files = 0;
|
||||
int power1 = 0;
|
||||
int emr_medical_record1 = 0;
|
||||
int emr_record1 = 0;
|
||||
int emr_apply_copy1 = 0;
|
||||
int emr_files1 = 0;
|
||||
if(null != sysList && !sysList.isEmpty()){
|
||||
//获取权限菜单
|
||||
List<User_Dept_Menu> menuList = powerUser.getMenuList();
|
||||
if(null != menuList && !menuList.isEmpty()) {
|
||||
for (User_Dept_Menu menu : menuList) {
|
||||
String sysFlag = menu.getSysFlag();
|
||||
if (StringUtils.isNotBlank(sysFlag)) {
|
||||
if ("power".equals(sysFlag)) {
|
||||
power1 = 1;
|
||||
continue;
|
||||
}
|
||||
if ("emr_medical_record".equals(sysFlag)) {
|
||||
emr_medical_record1 = 1;
|
||||
continue;
|
||||
}
|
||||
if ("emr_record".equals(sysFlag)) {
|
||||
emr_record1 = 1;
|
||||
continue;
|
||||
}
|
||||
if ("emr_apply_copy".equals(sysFlag)) {
|
||||
emr_apply_copy1 = 1;
|
||||
continue;
|
||||
}
|
||||
if ("emr_files".equals(sysFlag)) {
|
||||
emr_files1 = 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < sysList.size(); i++) {
|
||||
String sysFlag = sysList.get(i).getSysFlag();
|
||||
if(StringUtils.isNotBlank(sysFlag)){
|
||||
if("power".equals(sysFlag)){
|
||||
power = 1;
|
||||
continue;
|
||||
}
|
||||
if("emr_medical_record".equals(sysFlag)){
|
||||
emr_medical_record = 1;
|
||||
continue;
|
||||
}
|
||||
if("emr_record".equals(sysFlag)){
|
||||
emr_record = 1;
|
||||
continue;
|
||||
}
|
||||
if("emr_apply_copy".equals(sysFlag)){
|
||||
emr_apply_copy = 1;
|
||||
continue;
|
||||
}
|
||||
if("emr_files".equals(sysFlag)){
|
||||
emr_files = 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(power == 1 && power1 == 1){
|
||||
power = 1;
|
||||
}else{
|
||||
power = 0;
|
||||
}
|
||||
if(emr_medical_record == 1 && emr_medical_record1 == 1){
|
||||
emr_medical_record = 1;
|
||||
}else{
|
||||
emr_medical_record = 0;
|
||||
}
|
||||
if(emr_record == 1 && emr_record1 == 1){
|
||||
emr_record = 1;
|
||||
}else{
|
||||
emr_record = 0;
|
||||
}
|
||||
if(emr_apply_copy == 1 && emr_apply_copy1 == 1){
|
||||
emr_apply_copy = 1;
|
||||
}else{
|
||||
emr_apply_copy = 0;
|
||||
}
|
||||
if(emr_files == 1 && emr_files1 == 1){
|
||||
emr_files = 1;
|
||||
}else{
|
||||
emr_files = 0;
|
||||
}
|
||||
model.addAttribute("power",power);
|
||||
model.addAttribute("emr_medical_record",emr_medical_record);
|
||||
model.addAttribute("emr_record",emr_record);
|
||||
model.addAttribute("emr_apply_copy",emr_apply_copy);
|
||||
model.addAttribute("emr_files",emr_files);
|
||||
return "/gatewayDir/gatewayIndex";
|
||||
}
|
||||
@RequestMapping(value = "main")
|
||||
public String main(){
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "main";
|
||||
}
|
||||
|
||||
@RequestMapping("getEcharts1")
|
||||
@ResponseBody
|
||||
public Msg getEcharts1(){
|
||||
List<Echarts> list = new ArrayList<>();
|
||||
try {
|
||||
//无异常
|
||||
Integer noExc = CacheManager.getExcCount("noExc");
|
||||
String valueArr1[] = {noExc.toString()};
|
||||
Echarts echarts1 = new Echarts("无异常",null,valueArr1);
|
||||
|
||||
//异常
|
||||
Integer exc = CacheManager.getExcCount("exc");
|
||||
if(null == exc){
|
||||
exc = 0;
|
||||
}
|
||||
String valueArr2[] = {exc.toString()};
|
||||
Echarts echarts2 = new Echarts("异常",null,valueArr2);
|
||||
|
||||
//锁定
|
||||
Integer effectiveCount = pageService.selectEffectiveCount();
|
||||
if(null == effectiveCount){
|
||||
effectiveCount = 0;
|
||||
}
|
||||
String valueArr3[] = {effectiveCount.toString()};
|
||||
Echarts echarts3 = new Echarts("锁定",null,valueArr3);
|
||||
|
||||
list.add(echarts1);
|
||||
list.add(echarts2);
|
||||
list.add(echarts3);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
return Msg.success().add("list",list);
|
||||
}
|
||||
|
||||
@RequestMapping("getEcharts2")
|
||||
@ResponseBody
|
||||
public Msg getEcharts2(){
|
||||
try {
|
||||
Map<String, List> map = pageService.getEcharts2();
|
||||
return Msg.success().add("list",map);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("getEcharts3")
|
||||
@ResponseBody
|
||||
public Msg getEcharts3(){
|
||||
try {
|
||||
Map<String, List> map = pageService.getEcharts3();
|
||||
return Msg.success().add("list",map);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("getEcharts4")
|
||||
@ResponseBody
|
||||
public Msg getEcharts4(){
|
||||
try {
|
||||
int cpuCount = pageService.getEcharts4();
|
||||
return Msg.success().add("list",cpuCount);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
//返回40
|
||||
@RequestMapping("getEcharts5")
|
||||
@ResponseBody
|
||||
public Msg getEcharts5(){
|
||||
long temperature = 0;
|
||||
try {
|
||||
temperature = pageService.getEcharts5();
|
||||
return Msg.success().add("temperature",temperature);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.success().add("temperature",temperature);
|
||||
}
|
||||
}
|
||||
|
||||
//返回[8,7.8,5.3]
|
||||
@RequestMapping("getEcharts6")
|
||||
@ResponseBody
|
||||
public Msg getEcharts6(){
|
||||
try {
|
||||
List<String> list = pageService.getEcharts6();
|
||||
return Msg.success().add("list",list);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.manage.controller;
|
||||
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/8/13 17:23
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/8/13 17:23
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class PermissionsException extends RuntimeException {
|
||||
public PermissionsException(){
|
||||
}
|
||||
}
|
@ -0,0 +1,223 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.annotation.OptionalLog;
|
||||
import com.manage.annotation.RequiresPermissions;
|
||||
import com.manage.dao.Power_LogMapper;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.LogService;
|
||||
import com.manage.util.ExportExcelUtil;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.util.PageHelper;
|
||||
import com.manage.vo.Power_LogVo;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/7/10 14:35
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/7/10 14:35
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("otherManage/")
|
||||
public class Power_LogController {
|
||||
@Autowired
|
||||
private Power_LogMapper logMapper;
|
||||
@Autowired
|
||||
private LogService logService;
|
||||
|
||||
/**
|
||||
* @MethodName backupDatabase
|
||||
* @Description: 跳转到备份数据库页面
|
||||
* @Param 无
|
||||
* @Returnt otherManage/backupDatabase
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-07-10
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-07-10
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@OptionalLog(module = "查看",methods = "日志管理页面")
|
||||
@RequiresPermissions("/otherManage/backupDatabase")
|
||||
@RequestMapping("backupDatabase")
|
||||
public String backupDatabase(Model model){
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "otherManage/backupDatabase";
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName getLogList
|
||||
* @Description: 获取日志数据表
|
||||
* @Param 无
|
||||
* @Returnt
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-07-10
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-07-10
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@RequestMapping(value="getLogList")
|
||||
@ResponseBody
|
||||
public PageHelper<Power_LogVo> getLogList(Power_LogVo log, String startTime, String endTime, HttpServletRequest request){
|
||||
PageHelper<Power_LogVo> pageHelper = new PageHelper<Power_LogVo>();
|
||||
try{
|
||||
List<Power_LogVo> logs = logMapper.selectAll(log, startTime, endTime);
|
||||
int total = logMapper.getTotal(log, startTime, endTime);
|
||||
pageHelper.setTotal(total);
|
||||
//匹配权限
|
||||
Power_UserVo user = (Power_UserVo) request.getSession().getAttribute("CURRENT_USER");
|
||||
if(null != logs && !logs.isEmpty()){
|
||||
Set<String> menus = user.getMenus();
|
||||
if(null != menus && !menus.isEmpty()){
|
||||
Integer deleteOper = 0;
|
||||
for(String menu : menus){
|
||||
if(StringUtils.isNotBlank(menu)){
|
||||
if("/otherManage/deleteLogById".equals(menu)){
|
||||
deleteOper = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Power_LogVo obj : logs){
|
||||
obj.setDeleteOper(deleteOper);
|
||||
}
|
||||
}
|
||||
}
|
||||
pageHelper.setRows(logs);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return pageHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName deleteLogById
|
||||
* @Description: 根据id删除日志
|
||||
* @Param 无
|
||||
* @Returnt
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-07-10
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-07-10
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@OptionalLog(module = "删除",methods = "日志管理",fieldName = "logContent",fieldName1="noticeTypeName",tableName = "Power_Log")
|
||||
@RequiresPermissions("/otherManage/deleteLogById")
|
||||
@RequestMapping("deleteLogById/{logId}")
|
||||
@ResponseBody
|
||||
public Msg deleteLogById(@PathVariable("logId")Integer logId){
|
||||
try{
|
||||
logService.deleteLogById(logId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("删除失败,请联系超管!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName deleteLogByIds
|
||||
* @Description: 根据id集合批量删除日志
|
||||
* @Param 无
|
||||
* @Returnt
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-07-10
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-07-10
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@OptionalLog(module = "批量删除",methods = "日志管理")
|
||||
@RequestMapping("deleteLogByIds/{ids}")
|
||||
@RequiresPermissions("/otherManage/deleteLogByIds")
|
||||
@ResponseBody
|
||||
public Msg deleteLogByIds(@PathVariable("ids")String ids){
|
||||
try{
|
||||
String[] idList = ids.split(",");
|
||||
String str = "";
|
||||
for (int i = 0; i < idList.length; i++) {
|
||||
if(StringUtils.isNoneBlank(idList[i])){
|
||||
if(i != idList.length - 1){
|
||||
str += idList[i] + ",";
|
||||
}else{
|
||||
str += idList[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
logService.deleteLogByIds(str);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("删除失败,请联系超管!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName: exportExcel
|
||||
* @Description: 根据搜索条件导出excel
|
||||
* @Param
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-06-27
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-06-27
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@OptionalLog(module = "导出excel",methods = "日志管理")
|
||||
@RequiresPermissions("/otherManage/exportExcel")
|
||||
@RequestMapping(value="exportExcel",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public void exportExcel(HttpServletResponse response, Power_LogVo log, String startTime, String endTime,String checks){
|
||||
String tableThNames = "操作人,日志主题,日志内容,备注,操作时间,ip地址";
|
||||
String fieldCns = "creater,logTitle,logContent,remark,createDate,ip";
|
||||
List<Power_LogVo> logs = new ArrayList<>();
|
||||
try {
|
||||
if(StringUtils.isNotBlank(checks)){
|
||||
logs = logMapper.selectAllByIds(checks);
|
||||
}else{
|
||||
//构造excel的数据
|
||||
logs = logMapper.selectAll(log, startTime, endTime);
|
||||
}
|
||||
//文件名
|
||||
String fileName = "操作日志导出数据(" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ").xls";
|
||||
//ExportExcelUtil
|
||||
ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
|
||||
//导出excel的操作
|
||||
exportExcelUtil.expordExcel(tableThNames,fieldCns,logs,fileName,response);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.entity.Power_Menu;
|
||||
import com.manage.entity.Power_Menu_User;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.Power_MenuService;
|
||||
import com.manage.util.ActionScopeUtils;
|
||||
import com.manage.util.Constant;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import com.manage.vo.User_Dept_Menu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author:hjl
|
||||
* @Date:Creatid in 1:28 2019/4/17
|
||||
* @Description:菜單管理
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("menuPower/")
|
||||
public class Power_MenuController {
|
||||
@Autowired
|
||||
private Power_MenuService powerMenuService;
|
||||
|
||||
/*@RequestMapping("powerMenuList")
|
||||
@ResponseBody
|
||||
public Msg list() {
|
||||
try {
|
||||
List<Power_Menu> list = powerMenuService.queryAllPowerMenu("power");
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",list);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}*/
|
||||
|
||||
@RequestMapping("indexMenu")
|
||||
@ResponseBody
|
||||
public Msg indexMenu() {
|
||||
try {
|
||||
Power_UserVo user = (Power_UserVo) ActionScopeUtils.getSessionAttribute( Constant.CURRENT_USER);
|
||||
List<Power_Menu> list = null;
|
||||
if(user.getRoleId().equals(0) || user.getRoleId().equals(-100)){
|
||||
list = powerMenuService.queryAllPowerMenu("power",user.getRoleId());
|
||||
} else{
|
||||
list = powerMenuService.selectUserAndRoleMenuListPower(user.getUserId(),"power");
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("listPower", list);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
|
||||
/*
|
||||
Power_User user = (Power_User) ActionScopeUtils.getSessionAttribute( Constant.CURRENT_USER);
|
||||
List<Power_Menu> list = null;
|
||||
List<Power_Menu_User> listPower = null;
|
||||
if (user.getRoleId().equals(0)) {
|
||||
list = powerMenuService.queryAllPowerMenu();
|
||||
return Msg.success().add("listRole", list);
|
||||
} else if(user.getRoleId().equals(-100)){
|
||||
listPower = powerMenuService.queryPoswerMenuByUserId(user.getUserId());
|
||||
List<Power_Menu_User> indexList = new ArrayList<>();
|
||||
if(null != listPower && !listPower.isEmpty()){
|
||||
for (int i = 0; i < listPower.size(); i++) {
|
||||
if(StringUtils.isBlank(listPower.get(i).getMenuName()) || "菜单管理".equals(listPower.get(i).getMenuName())){
|
||||
indexList.add(listPower.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(null != indexList && !indexList.isEmpty()){
|
||||
for (int i = 0; i < indexList.size(); i++) {
|
||||
for (int j = 0; j < listPower.size(); j++) {
|
||||
if(listPower.get(j).getMenuId() == indexList.get(i).getMenuId()){
|
||||
listPower.remove(indexList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Msg.success().add("listPower", listPower);
|
||||
} else{
|
||||
List<Power_Detailed_Menu> menuList = powerMenuService.queryMenuViewByUserId(user.getUserId());
|
||||
List<Power_Detailed_Menu> indexList = new ArrayList<>();
|
||||
if(null != menuList && !menuList.isEmpty()){
|
||||
for (int i = 0; i < menuList.size(); i++) {
|
||||
if(StringUtils.isBlank(menuList.get(i).getMenuName())){
|
||||
indexList.add(menuList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(null != indexList && !indexList.isEmpty()){
|
||||
for (int i = 0; i < indexList.size(); i++) {
|
||||
for (int j = 0; j < menuList.size(); j++) {
|
||||
if(menuList.get(j).getMenuId() == indexList.get(i).getMenuId()){
|
||||
menuList.remove(indexList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Msg.success().add("listUser", menuList);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,259 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.manage.annotation.RequiresPermissions;
|
||||
import com.manage.dao.Power_MenuMapper;
|
||||
import com.manage.entity.Power_Menu;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.PowerService;
|
||||
import com.manage.service.Power_MenuService;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.vo.Power_Sys_DictVo;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("menu/")
|
||||
public class Power_MenuManageController {
|
||||
@Autowired
|
||||
Power_MenuService menuService;
|
||||
@Autowired
|
||||
PowerService powerService;
|
||||
@Autowired
|
||||
Power_MenuMapper powerMenuMapper;
|
||||
|
||||
@RequiresPermissions(value="/menu/pageUI")
|
||||
@RequestMapping("pageUI")
|
||||
public String getinmenuListfoById(Model model){
|
||||
return "menu/menuList";
|
||||
}
|
||||
@RequestMapping(value="loadSys",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String loadSys(){
|
||||
try {
|
||||
List<Power_Sys_DictVo> dicts = powerService.selectAllSys();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return JSON.toJSONString(dicts);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresPermissions(value="/menu/pageUI")
|
||||
@RequestMapping(value = "getMenuList",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String getMenuList(){
|
||||
try {
|
||||
List<Power_Menu> menus = new ArrayList<>();
|
||||
Power_Menu menu = new Power_Menu();
|
||||
menu.setMenuId(0);
|
||||
menu.setMenuName("菜单列表");
|
||||
menus.add(menu);
|
||||
List<Power_Menu> menus1 = menuService.selectAll(null,null,null);
|
||||
menus.addAll(menus1);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json = mapper.writeValueAsString(menus);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return json;
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkMenuName")
|
||||
@ResponseBody
|
||||
public Msg checkMenuName(String sysFlag,String menuName){
|
||||
try {
|
||||
List<Power_Menu> menus = menuService.checkMenuNameBySysId(sysFlag,menuName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != menus && !menus.isEmpty()){
|
||||
return Msg.fail();
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkMethodName")
|
||||
@ResponseBody
|
||||
public Msg checkMethodName(Integer parentId,String methodName,String method){
|
||||
try {
|
||||
List<Power_Menu> menus = new ArrayList<>();
|
||||
if(StringUtils.isNotBlank(method)){
|
||||
menus = menuService.checkMethodByParentId(parentId, null,method);
|
||||
}else{
|
||||
menus = menuService.checkMethodByParentId(parentId, methodName,null);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != menus && !menus.isEmpty()){
|
||||
return Msg.fail();
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch(Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequiresPermissions(value="/menu/update")
|
||||
@RequestMapping(value="update",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg addMenu(Power_Menu menu,String sysName){
|
||||
if(StringUtils.isNotBlank(menu.getMenuUrl())){
|
||||
if(!menu.getMenuUrl().contains("/") && !"#".equals(menu.getMenuUrl())){
|
||||
return Msg.fail("菜单地址必须包含斜杠/,建目录必须为单个字符#");
|
||||
}
|
||||
}
|
||||
try {
|
||||
List<Power_Menu> menus = new ArrayList<>();
|
||||
if(StringUtils.isNotBlank(menu.getSysFlag())){
|
||||
menus = menuService.checkMenuNameBySysId(menu.getSysFlag(), menu.getMenuName());
|
||||
}
|
||||
if(menu.getMenuId() == null){
|
||||
if(StringUtils.isNoneBlank(menu.getMethod())) {
|
||||
Integer parentId = menu.getParentId();
|
||||
Power_Menu parentMenu = powerMenuMapper.selectByPrimaryKey(parentId);
|
||||
String menuUrl = parentMenu.getMenuUrl();
|
||||
if (StringUtils.isNoneBlank(menuUrl) && menuUrl.contains("/")) {
|
||||
String methodUrl = "";
|
||||
// /user /user/pageUI user/pageUI ../user/pageUI
|
||||
String str1 = "";
|
||||
String str = menuUrl.substring(0, 1);
|
||||
if(menuUrl.length() >= 3){
|
||||
str1 = menuUrl.substring(0, 3);
|
||||
}
|
||||
if("/".equals(str)){
|
||||
menuUrl = menuUrl.substring(1,menuUrl.length());
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = "/" + menuss[0] + "/" + menu.getMethod();
|
||||
}else{
|
||||
methodUrl = "/" + menu.getMethod();
|
||||
}
|
||||
}else if(StringUtils.isNotBlank(str1) && "../".equals(str1)){
|
||||
menuUrl = menuUrl.substring(3,menuUrl.length());
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = "../" + menuss[0] + "/" + menu.getMethod();
|
||||
}else{
|
||||
methodUrl = "../" + menu.getMethod();
|
||||
}
|
||||
}else{
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = menuss[0] + "/" + menu.getMethod();
|
||||
}
|
||||
menu.setMenuUrl(methodUrl);
|
||||
}else{
|
||||
return Msg.fail("父级菜单url地址格式不正确,正确示例:/user或/user/pageUI!");
|
||||
}
|
||||
List<Power_Menu> checkMethodNames = menuService.checkMethodByParentId(menu.getParentId(), menu.getMenuName(),null);
|
||||
List<Power_Menu> checkMethods = menuService.checkMethodByParentId(menu.getParentId(),null,menu.getMethod());
|
||||
if(null != checkMethodNames && !checkMethodNames.isEmpty()){
|
||||
return Msg.fail("功能名称不能重复!");
|
||||
}
|
||||
if(null != checkMethods && !checkMethods.isEmpty()){
|
||||
return Msg.fail("功能方法已存在!");
|
||||
}
|
||||
}else{
|
||||
if(null != menus && !menus.isEmpty()){
|
||||
return Msg.fail("菜单名不能重复!");
|
||||
}
|
||||
}
|
||||
menuService.addMenu(menu,sysName);
|
||||
}else{
|
||||
if(StringUtils.isNoneBlank(menu.getMethod())) {
|
||||
Integer parentId = menu.getParentId();
|
||||
Power_Menu parentMenu = powerMenuMapper.selectByPrimaryKey(parentId);
|
||||
String menuUrl = parentMenu.getMenuUrl();
|
||||
if (StringUtils.isNoneBlank(menuUrl) && menuUrl.contains("/")) {
|
||||
String methodUrl = "";
|
||||
// /user /user/pageUI user/pageUI ../user/pageUI
|
||||
String str1 = "";
|
||||
String str = menuUrl.substring(0, 1);
|
||||
if(menuUrl.length() >= 3){
|
||||
str1 = menuUrl.substring(0, 3);
|
||||
}
|
||||
if("/".equals(str)){
|
||||
menuUrl = menuUrl.substring(1,menuUrl.length());
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = "/" + menuss[0] + "/" + menu.getMethod();
|
||||
}else{
|
||||
methodUrl = "/" + menu.getMethod();
|
||||
}
|
||||
}else if(StringUtils.isNotBlank(str1) && "../".equals(str1)){
|
||||
menuUrl = menuUrl.substring(3,menuUrl.length());
|
||||
if(StringUtils.isNotBlank(menuUrl)){
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = "../" + menuss[0] + "/" + menu.getMethod();
|
||||
}else{
|
||||
methodUrl = "../" + menu.getMethod();
|
||||
}
|
||||
}else{
|
||||
String[] menuss = menuUrl.split("/");
|
||||
methodUrl = menuss[0] + "/" + menu.getMethod();
|
||||
}
|
||||
menu.setMenuUrl(methodUrl);
|
||||
}else{
|
||||
return Msg.fail("父级菜单url地址格式不正确,正确示例:/user或/user/pageUI!");
|
||||
}
|
||||
List<Power_Menu> checkMethodNames = menuService.checkMethodByParentId(menu.getParentId(), menu.getMenuName(),null);
|
||||
List<Power_Menu> checkMethods = menuService.checkMethodByParentId(menu.getParentId(),null,menu.getMethod());
|
||||
if(null != checkMethodNames && !checkMethodNames.isEmpty() && !checkMethodNames.get(0).getMenuId().equals(menu.getMenuId())){
|
||||
return Msg.fail("方法名不能重复!");
|
||||
}
|
||||
if(null != checkMethods && !checkMethods.isEmpty() && !checkMethods.get(0).getMenuId().equals(menu.getMenuId())){
|
||||
return Msg.fail("功能方法已存在!");
|
||||
}
|
||||
}else{
|
||||
if(null != menus && !menus.isEmpty() && !menus.get(0).getMenuId().equals(menu.getMenuId())){
|
||||
return Msg.fail("菜单名不能重复!");
|
||||
}
|
||||
}
|
||||
menuService.updateMenu(menu,sysName);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("保存失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresPermissions(value="/menu/delete")
|
||||
@RequestMapping("delete/{menuId}")
|
||||
@ResponseBody
|
||||
public Msg delMenu(@PathVariable("menuId")Integer menuId){
|
||||
try {
|
||||
menuService.deleteMenuByMenuId(menuId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,276 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.manage.annotation.OptionalLog;
|
||||
import com.manage.dao.Power_NoticeMapper;
|
||||
import com.manage.entity.Power_Notice;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ipml.Power_NoticeServiceImpl;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.util.PageHelper;
|
||||
import com.manage.vo.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.*;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("notice/")
|
||||
public class Power_NoticeController {
|
||||
@Autowired
|
||||
private Power_NoticeServiceImpl noticeService;
|
||||
@Autowired
|
||||
private Power_NoticeMapper noticeMapper;
|
||||
@OptionalLog(module = "查看",methods = "通知管理页面")
|
||||
@RequestMapping(value = "pageUI")
|
||||
public String notice(HttpServletRequest request, Model model){
|
||||
noticeService.loadSys(request,model);
|
||||
model.addAttribute("user",(Power_User)request.getSession().getAttribute("CURRENT_USER"));
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "/noticeDir/noticePage";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "selectAll",produces = "application/json; charset=utf-8")
|
||||
@ResponseBody
|
||||
public PageHelper<Power_NoticeVo> selectAll(Power_NoticeVo notice, HttpServletRequest request) {
|
||||
PageHelper<Power_NoticeVo>pageHelper = new PageHelper<Power_NoticeVo>();
|
||||
Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER");
|
||||
List<Power_NoticeVo>power_notices = new ArrayList<Power_NoticeVo>();
|
||||
List<Power_NoticeVo> getTatal = new ArrayList<Power_NoticeVo>();
|
||||
try {
|
||||
/*if(user.getRoleId() == 0){
|
||||
power_notices = this.noticeMapper.selectSysByAdmin(null,null,notice);
|
||||
}else{
|
||||
power_notices = this.noticeMapper.selectSysByAdmin(user.getRoleId(),user.getUserId(),notice);
|
||||
}*/
|
||||
if(user.getRoleId() == 0){
|
||||
getTatal = this.noticeMapper.getTotal(null,null,notice);
|
||||
power_notices = this.noticeMapper.selectALlByPower(null,null,notice);
|
||||
}else{
|
||||
getTatal = this.noticeMapper.getTotal(user.getRoleId(),user.getUserId(),notice);
|
||||
power_notices = this.noticeMapper.selectALlByPower(user.getRoleId(),user.getUserId(),notice);
|
||||
}
|
||||
pageHelper.setTotal(getTatal.size());
|
||||
//查询当前页实体对象
|
||||
pageHelper.setRows(power_notices);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return pageHelper;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<Power_Notice> putChildren(List<Power_Notice> moduleList, Power_NoticeVo notice,Power_User user) {
|
||||
if (moduleList.size() > 0) {
|
||||
for (Power_Notice mod2 : moduleList) {
|
||||
HashMap param = new HashMap();
|
||||
notice.setParentId(mod2.getNoticeId());
|
||||
List<Power_Notice> res2 = new ArrayList<>();
|
||||
if(user.getRoleId() == -100 || user.getRoleId() == 0){
|
||||
res2 = this.noticeMapper.selectNoticeListByParentId(notice,null);
|
||||
}else{
|
||||
res2 = this.noticeMapper.selectNoticeListByParentId(notice,user.getUserId());
|
||||
}
|
||||
if (res2.size() > 0) {
|
||||
res2 = putChildren(res2,notice,user);
|
||||
}
|
||||
mod2.setChildren(res2);
|
||||
}
|
||||
}
|
||||
return moduleList;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "getNoticeTypeTree",produces = {"text/json;charset=UTF-8"})
|
||||
@ResponseBody
|
||||
public String getNoticeTypeTree(){
|
||||
try {
|
||||
List<PowerTree> treeList = noticeService.getNoticeTypeTree();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return JSON.toJSONString(treeList);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkTypeSysFlagOrTypeSysName")
|
||||
@ResponseBody
|
||||
public Msg checkTypeSysFlag(String noticeTypeFlag,String noticeTypeName){
|
||||
try {
|
||||
if(StringUtils.isNoneBlank(noticeTypeFlag) || StringUtils.isNotBlank(noticeTypeName)) {
|
||||
Power_Notice powerNotice = noticeService.checkTypeSysFlagOrTypeSysName(noticeTypeFlag, noticeTypeName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if (null != powerNotice) {
|
||||
return Msg.fail();
|
||||
} else {
|
||||
return Msg.success();
|
||||
}
|
||||
}else{
|
||||
return Msg.fail("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "update")
|
||||
@ResponseBody
|
||||
public Msg udpate(Power_Notice powerNotice,HttpServletRequest request){
|
||||
try {
|
||||
//保存类别
|
||||
if(StringUtils.isNotBlank(powerNotice.getNoticeTypeFlag())){
|
||||
//验证用户名
|
||||
Power_Notice typeNotice = noticeService.checkTypeSysFlagOrTypeSysName(powerNotice.getNoticeTypeFlag(), null);
|
||||
Power_Notice nameNotice = noticeService.checkTypeSysFlagOrTypeSysName(null,powerNotice.getNoticeTypeName());
|
||||
//添加类别
|
||||
if (null == powerNotice.getNoticeId()) {
|
||||
if(null != typeNotice){
|
||||
return Msg.fail("类别标志已存在!");
|
||||
}
|
||||
if(null != nameNotice){
|
||||
return Msg.fail("类别名称已存在!");
|
||||
}
|
||||
noticeService.update(powerNotice,request);
|
||||
} else {
|
||||
//修改类别
|
||||
if(null != typeNotice && !typeNotice.getNoticeId().equals(powerNotice.getNoticeId())){
|
||||
return Msg.fail("类别标志已存在!");
|
||||
}
|
||||
if(null != nameNotice && !nameNotice.getNoticeId().equals(powerNotice.getNoticeId())){
|
||||
return Msg.fail("类别名称已存在!");
|
||||
}
|
||||
noticeService.update(powerNotice,request);
|
||||
}
|
||||
}else{
|
||||
//保存通知
|
||||
noticeService.update(powerNotice,request);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
return Msg.fail("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@OptionalLog(module = "删除",methods = "通知管理",fieldName = "noticeContent",fieldName1="noticeTypeName",tableName = "power_notice")
|
||||
@RequestMapping(value = "delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer noticeId){
|
||||
try {
|
||||
noticeService.delete(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/************************************************通知操作***************************************************/
|
||||
@RequestMapping(value = "getUserNameListByNoticeTypeId")
|
||||
@ResponseBody
|
||||
public Msg getUserNameListByNoticeTypeId(Integer noticeTypeId, HttpServletRequest request){
|
||||
try {
|
||||
List<Power_UserVo> userList = noticeService.getUserNameListByNoticeTypeId(noticeTypeId, request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("userList",userList);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "selectNoticeByNoticeId")
|
||||
@ResponseBody
|
||||
public Msg selectNoticeByNoticeId(Integer noticeId){
|
||||
try {
|
||||
Power_Notice powerNotice = noticeMapper.selectByPrimaryKey(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("powerNotice",powerNotice);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@OptionalLog(module = "导出excel",methods = "通知管理")
|
||||
@RequestMapping(value = "export")
|
||||
@ResponseBody
|
||||
public void export(Power_NoticeVo powerNoticeVo,String noticeIds, HttpServletResponse response, HttpServletRequest request){
|
||||
try {
|
||||
noticeService.export(powerNoticeVo,noticeIds,response,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "updateNoticeReadFlag")
|
||||
@ResponseBody
|
||||
public Msg updateNoticeReadFlag(Integer noticeId){
|
||||
try {
|
||||
noticeService.updateNoticeReadFlag(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("修改出错了,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @MethodName getUnReadCount
|
||||
* @Description: 根据用户获取未读通知数量
|
||||
* @Param 无
|
||||
* @Returnt Msg
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019-10-17
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019-10-17
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.2.2
|
||||
*/
|
||||
@RequestMapping("getUnReadCount")
|
||||
@ResponseBody
|
||||
public Msg getUnReadCount(HttpServletRequest request){
|
||||
try {
|
||||
//获取登录者信息
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
Integer userId = null;
|
||||
//系统管理员userId为null,非系统管理员传入userId
|
||||
if(user.getRoleId() != 0){
|
||||
userId = user.getRoleId();
|
||||
}
|
||||
int unReadCount = noticeService.getUnReadCount(userId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("unReadCount",unReadCount);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,392 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.annotation.RequiresPermissions;
|
||||
import com.manage.dao.Power_Sys_DictMapper;
|
||||
import com.manage.entity.Power_Sys_Dict;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.Power_DeptService;
|
||||
import com.manage.service.Power_Sys_DictService;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.util.PageHelper;
|
||||
import com.manage.vo.Power_DeptVo;
|
||||
import com.manage.vo.Power_Sys_DictVo;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/8/29 13:45
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/8/29 13:45
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/dict")
|
||||
public class Power_Sys_DictController {
|
||||
@Autowired
|
||||
Power_Sys_DictService powerSysDictService;
|
||||
@Autowired
|
||||
Power_DeptService deptService;
|
||||
@Autowired
|
||||
Power_Sys_DictMapper sysDictMapper;
|
||||
/**
|
||||
* @Date 2019-5-5
|
||||
* @Author ly
|
||||
* @Description 返回页面
|
||||
* */
|
||||
@RequiresPermissions(value="/dict/pageUI")
|
||||
@RequestMapping("/pageUI")
|
||||
public String pageUI(){
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "dictDir/dict";
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/selectHosList")
|
||||
@ResponseBody
|
||||
public List<Power_Sys_Dict> selectHosList(HttpServletRequest request){
|
||||
try {
|
||||
List<Power_Sys_Dict> power_sys_dicts = powerSysDictService.selectHosList(request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_sys_dicts;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/selectList")
|
||||
@ResponseBody
|
||||
public List<Power_Sys_Dict> selectList(){
|
||||
try {
|
||||
List<Power_Sys_Dict> power_sys_dicts = powerSysDictService.selectList();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_sys_dicts;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/selectDict")
|
||||
@ResponseBody
|
||||
public Power_Sys_Dict selectDict(Integer dictId){
|
||||
try {
|
||||
Power_Sys_Dict power_sys_dict = powerSysDictService.selectByPrimaryKey(dictId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_sys_dict;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@RequestMapping("/checkHospitalName")
|
||||
@ResponseBody
|
||||
public Msg checkHospitalName(String hospitalName){
|
||||
try {
|
||||
Power_Sys_DictVo dictVo = powerSysDictService.checkHospitalName(hospitalName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(dictVo != null){
|
||||
return Msg.fail("医院名称已存在");
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("验证失败,请联系系统管理员");
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresPermissions(value="/dict/add")
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public Msg add(Power_Sys_DictVo powerSysDict, HttpServletRequest request){
|
||||
try {
|
||||
if(powerSysDict.getDictId() == null){
|
||||
//添加医院
|
||||
if(StringUtils.isNoneBlank(powerSysDict.getHospitalName())){
|
||||
Power_Sys_DictVo dictVo = powerSysDictService.checkHospitalName(powerSysDict.getHospitalName());
|
||||
if(dictVo != null){
|
||||
return Msg.fail("医院名称不能重复!");
|
||||
}
|
||||
powerSysDictService.insertSelective(powerSysDict,request);
|
||||
Integer dictId = powerSysDict.getDictId();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("dictId",dictId);
|
||||
}else{
|
||||
//添加系统
|
||||
String deptIds = powerSysDict.getDeptIds();
|
||||
if(StringUtils.isBlank(deptIds)){
|
||||
deptIds = "-999";
|
||||
}
|
||||
if(!deptIds.contains(",")){
|
||||
List<Power_Sys_Dict> deptBySysFlagList = sysDictMapper.selectDeptIdByParentIdAndSysFlag(powerSysDict.getParentId(), powerSysDict.getSysFlag(),deptIds);
|
||||
if(null != deptBySysFlagList && !deptBySysFlagList.isEmpty()){
|
||||
return Msg.fail("系统标识已存在!");
|
||||
}
|
||||
}
|
||||
/*List<Power_Sys_Dict> dicts = powerSysDictService.checkSysFlagOrSysNameByDeptIds(powerSysDict.getSysFlag(), powerSysDict.getSysName(), deptIds);
|
||||
if(null != dicts && !dicts.isEmpty()) {
|
||||
if (StringUtils.isNoneBlank(powerSysDict.getSysFlag())) {
|
||||
return Msg.fail("系统标识已存在!");
|
||||
} else {
|
||||
return Msg.fail("系统名称已存在!");
|
||||
}
|
||||
}*/
|
||||
if(StringUtils.isNoneBlank(deptIds) && deptIds.contains(",")){
|
||||
int count = powerSysDictService.simpleInsertDict(powerSysDict, deptIds, request);
|
||||
if(count == 0){
|
||||
return Msg.fail("系统已存在!");
|
||||
}else{
|
||||
int dictLastId = sysDictMapper.selectLastDict();
|
||||
powerSysDict.setDictId(dictLastId);
|
||||
}
|
||||
}else{
|
||||
powerSysDict.setDeptId(Integer.valueOf(deptIds));
|
||||
powerSysDictService.insertSelective(powerSysDict,request);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("dictId",powerSysDict.getDictId());
|
||||
}
|
||||
}else{
|
||||
//修改
|
||||
if(StringUtils.isNoneBlank(powerSysDict.getHospitalName())){
|
||||
//修改医院信息
|
||||
Power_Sys_DictVo dictVo = powerSysDictService.checkHospitalName(powerSysDict.getHospitalName());
|
||||
if(dictVo != null && !dictVo.getDictId().equals(powerSysDict.getDictId())){
|
||||
return Msg.fail("医院名称已存在!");
|
||||
}else{
|
||||
powerSysDictService.updateByPrimaryKeySelective(powerSysDict,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("dictId",powerSysDict.getDictId());
|
||||
}
|
||||
}else{
|
||||
//修改系统信息
|
||||
Integer deptId = powerSysDict.getDeptId();
|
||||
if(null == deptId){
|
||||
deptId = -999;
|
||||
}
|
||||
List<Power_Sys_Dict> flagExists = powerSysDictService.checkSysFlagOrSysNameByDeptId(powerSysDict.getSysFlag(), null, deptId.toString());
|
||||
if(null != flagExists && !flagExists.isEmpty()) {
|
||||
//判断是否包含在这个集合里
|
||||
Boolean flagExist = false;
|
||||
for (int i = 0; i < flagExists.size(); i++) {
|
||||
if(!flagExists.get(i).getDictId().equals(powerSysDict.getDictId())){
|
||||
flagExist = true;
|
||||
}
|
||||
}
|
||||
if(flagExist){
|
||||
return Msg.fail("系统标识已存在!");
|
||||
}
|
||||
}
|
||||
//修改系统信息
|
||||
List<Power_Sys_Dict> sysNameExists = powerSysDictService.checkSysFlagOrSysNameByDeptId(null, powerSysDict.getSysName(), deptId.toString());
|
||||
if(null != sysNameExists && !sysNameExists.isEmpty()) {
|
||||
//判断是否包含在这个集合里
|
||||
Boolean sysNameExist = false;
|
||||
for (int i = 0; i < sysNameExists.size(); i++) {
|
||||
if(!sysNameExists.get(i).getDictId().equals(powerSysDict.getDictId())){
|
||||
sysNameExist = true;
|
||||
}
|
||||
}
|
||||
if(sysNameExist){
|
||||
return Msg.fail("系统名称已存在!");
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNoneBlank(powerSysDict.getSysType()) && "权限系统".equals(powerSysDict.getSysType())){
|
||||
powerSysDict.setDeptId(null);
|
||||
|
||||
}else{
|
||||
//计算出科室减少部分批量删除,增加部分批量增加,重叠部分批量修改
|
||||
}
|
||||
powerSysDictService.updateByPrimaryKeySelective(powerSysDict,request);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("dictId",powerSysDict.getDictId());
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("添加失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
@RequiresPermissions(value="/dict/update")
|
||||
@RequestMapping("/update")
|
||||
@ResponseBody
|
||||
public Msg update(@RequestBody Power_Sys_Dict powerSysDict, HttpServletRequest request){
|
||||
try {
|
||||
powerSysDictService.updateByPrimaryKeySelective(powerSysDict,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("更新失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
@RequiresPermissions(value="/dict/delete")
|
||||
@RequestMapping("/delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer dictId){
|
||||
try {
|
||||
powerSysDictService.deleteByPrimaryKey(dictId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("更新失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
@RequestMapping("/selectType")
|
||||
@ResponseBody
|
||||
public List<Power_Sys_DictVo> selectType(){
|
||||
try {
|
||||
List<Power_Sys_DictVo> power_sys_dictVos = powerSysDictService.selectSysType();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_sys_dictVos;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@RequestMapping("/export")
|
||||
public void download(HttpServletResponse response){
|
||||
try {
|
||||
powerSysDictService.export(response);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/getHospitalByParentId")
|
||||
@ResponseBody
|
||||
public Msg getHospitalByParentId(Integer dictId){
|
||||
try {
|
||||
Power_Sys_DictVo powerSysExsit = powerSysDictService.getHospitalByParentId(dictId, "权限系统");
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != powerSysExsit){
|
||||
return Msg.fail();
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("查询失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/dictManagePage")
|
||||
public String dictManagePage(Integer level, String operFlag, Integer selfId, Integer deptId, Model model, HttpServletRequest request){
|
||||
try {
|
||||
Power_Sys_DictVo hospital = new Power_Sys_DictVo();
|
||||
if(null != selfId && level != 0){
|
||||
hospital = powerSysDictService.selectByPrimaryKey(selfId);
|
||||
//加载节点信息
|
||||
}
|
||||
//按医院查询科室集合
|
||||
if(StringUtils.isNoneBlank(operFlag) && "edit".equals(operFlag)){
|
||||
if(level != null && level > 0){
|
||||
level -= 1;
|
||||
}
|
||||
}
|
||||
model.addAttribute("hospital",hospital);
|
||||
if(selfId != null && level != 0){
|
||||
//加载系统分类
|
||||
List<String> sysTypes = new ArrayList();
|
||||
|
||||
Power_Sys_DictVo dict = new Power_Sys_DictVo();
|
||||
if(!hospital.getDictId().equals(hospital.getParentId()) && StringUtils.isNoneBlank(operFlag) && "edit".equals(operFlag)){
|
||||
dict = hospital;
|
||||
model.addAttribute("dict",dict);
|
||||
}
|
||||
if(level != 0 && selfId >= 0 || selfId == -100){
|
||||
//权限系统是否存在,不存在才加载
|
||||
Power_Sys_DictVo powerSysExsit = powerSysDictService.getHospitalByParentId(selfId, "权限系统");
|
||||
if(null == powerSysExsit && level != 2 || "权限系统".equals(hospital.getSysType())){
|
||||
sysTypes.add("权限系统");
|
||||
}
|
||||
}
|
||||
//权限系统、病案管理系统、病案归档系统、复印预约系统、科研系统、其它
|
||||
sysTypes.add("档案管理系统");
|
||||
sysTypes.add("档案归档系统");
|
||||
sysTypes.add("复印预约系统");
|
||||
sysTypes.add("科研系统");
|
||||
sysTypes.add("其它");
|
||||
model.addAttribute("sysTypes",sysTypes);
|
||||
if(hospital != null){
|
||||
selfId = hospital.getHospitalId();
|
||||
}
|
||||
List<Power_DeptVo> depts = deptService.selectDeptByDictId(selfId,dict.getSysFlag());
|
||||
model.addAttribute("depts",depts);
|
||||
}
|
||||
//加载医院列表
|
||||
List<Power_Sys_Dict> hospitals = powerSysDictService.selectHosList(request);
|
||||
model.addAttribute("hospitals",hospitals);
|
||||
//节点层级
|
||||
model.addAttribute("level",level);
|
||||
//加载角色id,系统管理员可编辑
|
||||
Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER");
|
||||
model.addAttribute("user",user);
|
||||
model.addAttribute("operFlag",operFlag);
|
||||
if(null != deptId){
|
||||
deptId -= deptId*2;
|
||||
}
|
||||
model.addAttribute("deptId",deptId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "dictDir/dictManageIframe";
|
||||
}
|
||||
|
||||
@RequestMapping("/checkSysFlagOrSysNameByDeptId")
|
||||
@ResponseBody
|
||||
public Msg checkSysFlagOrSysNameByDeptId(String sysFlag,String sysName,String deptIds){
|
||||
try {
|
||||
if(StringUtils.isBlank(deptIds)){
|
||||
deptIds = "-999";
|
||||
}
|
||||
List<Power_Sys_Dict> dicts = powerSysDictService.checkSysFlagOrSysNameByDeptId(sysFlag, sysName, deptIds);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != dicts && !dicts.isEmpty()){
|
||||
if(StringUtils.isNoneBlank(sysFlag)){
|
||||
return Msg.fail("系统标识已存在!");
|
||||
}else{
|
||||
return Msg.fail("系统名称已存在!");
|
||||
}
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("验证失败,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,405 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.annotation.OptionalLog;
|
||||
import com.manage.annotation.RequiresPermissions;
|
||||
import com.manage.entity.Power_Role;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.Power_RoleService;
|
||||
import com.manage.service.ImportExcel.ImportExcelUtil;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.util.PageHelper;
|
||||
import com.manage.vo.ImportExcelEntity;
|
||||
import com.manage.vo.Power_RoleVo;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.multipart.MultipartResolver;
|
||||
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @Author:ly
|
||||
* @Date:Creatid in 10:10 2019/4/28
|
||||
* @Description:
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/role")
|
||||
public class RoleController {
|
||||
@Autowired
|
||||
Power_RoleService powerRoleService;
|
||||
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 分页
|
||||
* */
|
||||
@RequiresPermissions(value="/role/pageUI")
|
||||
@RequestMapping("/pageList")
|
||||
@ResponseBody
|
||||
public PageHelper<Power_RoleVo> list(Power_RoleVo powerRole,HttpServletRequest request){
|
||||
PageHelper<Power_RoleVo>pageHelper = new PageHelper<Power_RoleVo>();
|
||||
try {
|
||||
//统计总记录数
|
||||
int total = powerRoleService.getTotal(powerRole,request);
|
||||
pageHelper.setTotal(total);
|
||||
//查询当前页实体对象
|
||||
List<Power_RoleVo> list = powerRoleService.findSomeByMore(powerRole,request);
|
||||
pageHelper.setRows(list);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return pageHelper;
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 返回页面
|
||||
* */
|
||||
@OptionalLog(module = "查看",methods = "角色管理页面")
|
||||
@RequiresPermissions(value="/role/pageUI")
|
||||
@RequestMapping("/pageUI")
|
||||
public String pageUI(){
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "roleDir/role";
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 返回页面
|
||||
* */
|
||||
@OptionalLog(module = "查看",methods = "角色管理页面")
|
||||
@RequiresPermissions(value="/role/pageUINotDown")
|
||||
@RequestMapping("/pageUINotDown")
|
||||
public String pageUINotDown(){
|
||||
CacheManager.addExcCount("noExc");
|
||||
return "roleDir/roleNotDown";
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-08-02
|
||||
* @Author zengwenhe
|
||||
* @Description 验证角色名是否重复
|
||||
* */
|
||||
@RequestMapping("/checkRoleName")
|
||||
@ResponseBody
|
||||
public Msg checkRoleName(String roleName){
|
||||
try {
|
||||
Power_Role role = powerRoleService.checkRoleName(roleName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != role){
|
||||
return Msg.fail("角色名已存在!");
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("验证角色名出错了,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 新增角色
|
||||
* */
|
||||
@OptionalLog(module = "新增",methods = "角色管理",fieldName = "roleName")
|
||||
@RequiresPermissions(value="/role/add")
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public Msg add(Power_Role powerRole){
|
||||
try {
|
||||
Power_Role role = powerRoleService.checkRoleName(powerRole.getRoleName());
|
||||
if(null != role){
|
||||
return Msg.fail("角色名不能重复!");
|
||||
}else{
|
||||
powerRoleService.insertSelective(powerRole);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();;
|
||||
return Msg.fail("新增失败,请联系系统管理员!");
|
||||
}
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 更新角色
|
||||
* */
|
||||
@OptionalLog(module = "修改",methods = "角色管理",fieldName = "roleName")
|
||||
@RequiresPermissions(value="/role/update")
|
||||
@RequestMapping("/update")
|
||||
@ResponseBody
|
||||
public Msg update(Power_Role powerRole,HttpServletRequest request){
|
||||
try {
|
||||
Power_Role role = powerRoleService.checkRoleName(powerRole.getRoleName());
|
||||
if(null != role && !role.getRoleId().equals(powerRole.getRoleId())){
|
||||
return Msg.fail("角色名不能重复!");
|
||||
}else{
|
||||
powerRoleService.updateByPrimaryKeySelective(powerRole,request);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail("更新失败,请联系系统管理员!");
|
||||
}
|
||||
return Msg.success();
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 删除角色
|
||||
* */
|
||||
@OptionalLog(module = "删除",methods = "角色管理",fieldName = "roleName",tableName = "power_role")
|
||||
@RequiresPermissions(value="/role/delete")
|
||||
@RequestMapping("/delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer roleId){
|
||||
try {
|
||||
powerRoleService.deleteByPrimaryKey(roleId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return Msg.fail();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 查询角色
|
||||
* */
|
||||
@RequestMapping("/selectRole")
|
||||
@ResponseBody
|
||||
public Power_Role selectRole(Integer roleId){
|
||||
try {
|
||||
Power_Role powerRole = powerRoleService.selectByPrimaryKey(roleId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerRole;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 导出Excel
|
||||
* */
|
||||
@OptionalLog(module = "导出excel",methods = "角色管理")
|
||||
@RequiresPermissions(value="/role/export")
|
||||
@RequestMapping("/export")
|
||||
public void export(Power_RoleVo powerRole, HttpServletResponse response, HttpServletRequest request){
|
||||
try {
|
||||
powerRoleService.export(powerRole,response,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-25
|
||||
* @Author ly
|
||||
* @Description 导出Excel
|
||||
* */
|
||||
@OptionalLog(module = "导出excel",methods = "角色管理")
|
||||
@RequiresPermissions(value="/role/export")
|
||||
@RequestMapping("/exportNotDown")
|
||||
public void exportNotDown(Power_RoleVo powerRole, HttpServletResponse response, HttpServletRequest request){
|
||||
try {
|
||||
powerRoleService.exportNotDown(powerRole,response,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @Date 2019-4-30
|
||||
* @Author ly
|
||||
* @Description 查询角色列表
|
||||
* */
|
||||
@RequestMapping("/selectList")
|
||||
@ResponseBody
|
||||
public List<Power_RoleVo> selectList(HttpServletRequest request){
|
||||
try {
|
||||
List<Power_RoleVo> power_roles = powerRoleService.selectListByPower(request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return power_roles;
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-10-11
|
||||
* @Author zengwh
|
||||
* @Description 导入excel
|
||||
* */
|
||||
@OptionalLog(module = "导入excel",methods = "角色管理")
|
||||
@RequiresPermissions(value="/role/importExcel")
|
||||
@RequestMapping(value="/importExcel",method = {RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public ResponseEntity<String> importExcel(HttpServletRequest request){
|
||||
OutputStream os = null;
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentType(new MediaType("text","html",Charset.forName("UTF-8")));
|
||||
try {
|
||||
//读取文件
|
||||
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
|
||||
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
|
||||
MultipartFile multipartFile = multipartRequest.getFile("upfile");
|
||||
//属性名
|
||||
String[] fieldNames = {"roleName","remark","showRecord","downloadRecord","effective"};
|
||||
//判断集中类中的方法名
|
||||
String[] judgeMethods = {"judgeRoleName","judgeRemark","judgeShowRecord","judgeDownloadRecord","convertEffective"};
|
||||
//导入excel的操作
|
||||
Power_Role role = new Power_Role();
|
||||
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
role.setCreater(user.getUserName());
|
||||
role.setUpdater(user.getUserName());
|
||||
role.setCreateDate(fmt.format(new Date()));
|
||||
role.setUpdateDate(fmt.format(new Date()));
|
||||
//实例化
|
||||
ImportExcelUtil.newInstance("power_RoleMapper",role, Power_Role.class);
|
||||
//导入excel的操作
|
||||
ImportExcelEntity excelEntity = ImportExcelUtil.fileImport(multipartFile,fieldNames, judgeMethods);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(excelEntity.getSuccessCount() == 0 && excelEntity.getWrongCount() == 0){
|
||||
//无数据
|
||||
return new ResponseEntity<String>("无数据!", responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
if(excelEntity.getWrongCount() == 0){
|
||||
//成功
|
||||
return new ResponseEntity<String>(null, responseHeaders, HttpStatus.OK);
|
||||
}else{
|
||||
//有出错数据
|
||||
String msgStr = excelEntity.getWorkBookKey()+"@已成功导入"+excelEntity.getSuccessCount()+"条,失败"+excelEntity.getWrongCount()+"条,随后将导出错误记录!";
|
||||
return new ResponseEntity<String>(msgStr, responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
//抛异常
|
||||
return new ResponseEntity<String>(e.getMessage(), responseHeaders, HttpStatus.OK);
|
||||
}finally {
|
||||
if(os != null){
|
||||
try {
|
||||
os.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-10-11
|
||||
* @Author zengwh
|
||||
* @Description 导入excel
|
||||
* */
|
||||
@OptionalLog(module = "导入excel",methods = "角色管理")
|
||||
@RequiresPermissions(value="/role/importExcel")
|
||||
@RequestMapping(value="/importExcelNotDown",method = {RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public ResponseEntity<String> importExcelNotDown(HttpServletRequest request){
|
||||
OutputStream os = null;
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentType(new MediaType("text","html",Charset.forName("UTF-8")));
|
||||
try {
|
||||
//读取文件
|
||||
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
|
||||
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
|
||||
MultipartFile multipartFile = multipartRequest.getFile("upfile");
|
||||
//属性名
|
||||
String[] fieldNames = {"roleName","remark","effective"};
|
||||
//判断集中类中的方法名
|
||||
String[] judgeMethods = {"judgeRoleName","judgeRemark","convertEffective"};
|
||||
//导入excel的操作
|
||||
Power_Role role = new Power_Role();
|
||||
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
role.setCreater(user.getUserName());
|
||||
role.setUpdater(user.getUserName());
|
||||
role.setCreateDate(fmt.format(new Date()));
|
||||
role.setUpdateDate(fmt.format(new Date()));
|
||||
//实例化
|
||||
ImportExcelUtil.newInstance("power_RoleMapper",role, Power_Role.class);
|
||||
//导入excel的操作
|
||||
ImportExcelEntity excelEntity = ImportExcelUtil.fileImport(multipartFile,fieldNames, judgeMethods);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(excelEntity.getSuccessCount() == 0 && excelEntity.getWrongCount() == 0){
|
||||
//无数据
|
||||
return new ResponseEntity<String>("无数据!", responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
if(excelEntity.getWrongCount() == 0){
|
||||
//成功
|
||||
return new ResponseEntity<String>(null, responseHeaders, HttpStatus.OK);
|
||||
}else{
|
||||
//有出错数据
|
||||
String msgStr = excelEntity.getWorkBookKey()+"@已成功导入"+excelEntity.getSuccessCount()+"条,失败"+excelEntity.getWrongCount()+"条,随后将导出错误记录!";
|
||||
return new ResponseEntity<String>(msgStr, responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
//抛异常
|
||||
return new ResponseEntity<String>(e.getMessage(), responseHeaders, HttpStatus.OK);
|
||||
}finally {
|
||||
if(os != null){
|
||||
try {
|
||||
os.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,44 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.util.Msg;
|
||||
import com.manage.entity.T_Menu;
|
||||
import com.manage.service.T_MenuService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
/**
|
||||
* <p>Title:T_UserController </p>
|
||||
* <p>Description:处理用户请求 </p>
|
||||
* <p>Company: </p>
|
||||
* @author hu
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/menu")
|
||||
public class T_MenuController {
|
||||
|
||||
@Autowired
|
||||
T_MenuService t_menuService;
|
||||
|
||||
/**
|
||||
* 根据id获取用户信息
|
||||
*/
|
||||
@RequestMapping(value="/infoById/{id}",method=RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public Msg getinfoById(@PathVariable("id")Integer id){
|
||||
try {
|
||||
T_Menu obj=new T_Menu();
|
||||
obj=t_menuService.getRole();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("obj", obj);
|
||||
}catch (Exception e){
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
package com.manage.interceptor;
|
||||
|
||||
import com.manage.encrypt.Base64;
|
||||
import com.manage.encrypt.MD5;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.Cache;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.Power_UserService;
|
||||
import com.manage.util.Constant;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.AntPathMatcher;
|
||||
import org.springframework.util.PathMatcher;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Properties;
|
||||
|
||||
public class LoginInterceptor implements HandlerInterceptor {
|
||||
@Autowired
|
||||
Power_UserService powerUserService;
|
||||
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
|
||||
String ctx = request.getServletContext().getContextPath();
|
||||
String url = request.getRequestURI();
|
||||
if("/power/".equals(url)|| "/".equals(url)){
|
||||
request.getRequestDispatcher("/login").forward(request, response);
|
||||
}
|
||||
url = url.replace(ctx,"");
|
||||
String[] s = url.split("/");
|
||||
String parentUrl = "";
|
||||
if(!"/".equals(url)){
|
||||
parentUrl = "/"+s[1];
|
||||
}
|
||||
if(!"/getSessionRemainingTime".equals(parentUrl)){
|
||||
request.getSession().setAttribute(request.getSession().getId(),System.currentTimeMillis());
|
||||
}
|
||||
if (excludes(parentUrl, Constant.RELEASE_REQUEST,request)) {
|
||||
response.setHeader("Access-Control-Allow-Origin","*");
|
||||
return true;
|
||||
}else{
|
||||
String token = (String)request.getSession().getAttribute("token");
|
||||
if(StringUtils.isNoneBlank(token)){
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cache = CacheManager.getCacheInfo(token);
|
||||
if (cache != null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
request.getRequestDispatcher("/login").forward(request, response);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
private boolean excludes(String url,String key,HttpServletRequest request){
|
||||
Properties props = new Properties();
|
||||
ClassLoader loader = Thread.currentThread().getContextClassLoader();
|
||||
try {
|
||||
props.load(loader.getResourceAsStream("config/config.properties"));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
String value = props.getProperty(key);
|
||||
if(value != null && !"/".equals(value) && value.indexOf(",") != -1){
|
||||
String[] values = value.split(",");
|
||||
PathMatcher matcher = new AntPathMatcher();
|
||||
for(String v : values){
|
||||
if(matcher.match(v,url))
|
||||
return true;
|
||||
}
|
||||
}else if(value.equals(url)){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isHasAuthority(String url,Power_User power_user){
|
||||
if(!powerUserService.validUserRoleMenu(url,power_user.getUserId())){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package com.manage.interfaces.cache;
|
||||
|
||||
/**
|
||||
* @Description 缓存DTO
|
||||
* @Date 2019/7/2 11:41
|
||||
* @Created by ljx
|
||||
*/
|
||||
public class Cache {
|
||||
private String key;//缓存ID
|
||||
private Object value;//缓存数据
|
||||
private long timeOut;//更新时间
|
||||
private boolean expired; //是否终止
|
||||
public Cache() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Cache(String key, Object value, long timeOut, boolean expired) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
this.timeOut = timeOut;
|
||||
this.expired = expired;
|
||||
}
|
||||
|
||||
public Cache(String key, Object value, long timeOut) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
this.timeOut = timeOut;
|
||||
}
|
||||
public Cache(String key, Object value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public long getTimeOut() {
|
||||
return timeOut;
|
||||
}
|
||||
|
||||
public Object getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setKey(String string) {
|
||||
key = string;
|
||||
}
|
||||
|
||||
public void setTimeOut(long l) {
|
||||
timeOut = l;
|
||||
}
|
||||
|
||||
public void setValue(Object object) {
|
||||
value = object;
|
||||
}
|
||||
|
||||
public boolean isExpired() {
|
||||
return expired;
|
||||
}
|
||||
|
||||
public void setExpired(boolean b) {
|
||||
expired = b;
|
||||
}
|
||||
}
|
@ -0,0 +1,205 @@
|
||||
package com.manage.interfaces.cache;
|
||||
|
||||
import com.manage.vo.Power_UserVo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class CacheManager {
|
||||
private static HashMap cacheMap = new HashMap();
|
||||
|
||||
private CacheManager() {
|
||||
super();
|
||||
}
|
||||
public static boolean getSimpleFlag(String key){
|
||||
try{
|
||||
return (Boolean) cacheMap.get(key);
|
||||
}catch(NullPointerException e){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static long getServerStartdt(String key){
|
||||
try {
|
||||
return (Long)cacheMap.get(key);
|
||||
} catch (Exception ex) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public synchronized static boolean setSimpleFlag(String key,boolean flag){
|
||||
if (flag && getSimpleFlag(key)) {
|
||||
return false;
|
||||
}else{
|
||||
cacheMap.put(key, flag);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public synchronized static boolean setSimpleFlag(String key,long serverbegrundt){
|
||||
if (cacheMap.get(key) == null) {
|
||||
cacheMap.put(key,serverbegrundt);
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private synchronized static Cache getCache(String key) {
|
||||
return (Cache) cacheMap.get(key);
|
||||
}
|
||||
|
||||
private synchronized static boolean hasCache(String key) {
|
||||
return cacheMap.containsKey(key);
|
||||
}
|
||||
|
||||
public synchronized static void clearAll() {
|
||||
cacheMap.clear();
|
||||
}
|
||||
|
||||
public synchronized static void clearAll(String type) {
|
||||
Iterator i = cacheMap.entrySet().iterator();
|
||||
String key;
|
||||
ArrayList<String> arr = new ArrayList<String>();
|
||||
try {
|
||||
while (i.hasNext()) {
|
||||
java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
|
||||
key = (String) entry.getKey();
|
||||
if (key.startsWith(type)) {
|
||||
arr.add(key);
|
||||
}
|
||||
}
|
||||
for (int k = 0; k < arr.size(); k++) {
|
||||
clearOnly(arr.get(k));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized static void clearOnly(String key) {
|
||||
cacheMap.remove(key);
|
||||
}
|
||||
|
||||
public synchronized static void putCache(String key, Cache obj) {
|
||||
cacheMap.put(key, obj);
|
||||
}
|
||||
|
||||
public static Cache getCacheInfo(String key) {
|
||||
|
||||
if (hasCache(key)) {
|
||||
Cache cache = getCache(key);
|
||||
if (cacheExpired(cache)) {
|
||||
cache.setExpired(true);
|
||||
}
|
||||
return cache;
|
||||
}else
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void putCacheInfo(String key, Cache obj, long dt,boolean expired) {
|
||||
Cache cache = new Cache();
|
||||
cache.setKey(key);
|
||||
cache.setTimeOut(dt + System.currentTimeMillis());
|
||||
cache.setValue(obj);
|
||||
cache.setExpired(expired);
|
||||
cacheMap.put(key, cache);
|
||||
}
|
||||
public static void putCacheInfo(String key,Cache obj,long dt){
|
||||
Cache cache = new Cache();
|
||||
cache.setKey(key);
|
||||
cache.setTimeOut(dt+System.currentTimeMillis());
|
||||
cache.setValue(obj);
|
||||
cache.setExpired(false);
|
||||
cacheMap.put(key,cache);
|
||||
}
|
||||
|
||||
public static boolean cacheExpired(Cache cache) {
|
||||
if (null == cache) {
|
||||
return false;
|
||||
}
|
||||
long nowDt = System.currentTimeMillis();
|
||||
long cacheDt = cache.getTimeOut();
|
||||
if (cacheDt <= 0||cacheDt>nowDt) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static int getCacheSize() {
|
||||
return cacheMap.size();
|
||||
}
|
||||
|
||||
public static int getCacheSize(String type) {
|
||||
int k = 0;
|
||||
Iterator i = cacheMap.entrySet().iterator();
|
||||
String key;
|
||||
try {
|
||||
while (i.hasNext()) {
|
||||
java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
|
||||
key = (String) entry.getKey();
|
||||
if (key.indexOf(type) != -1) {
|
||||
k++;
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
public static ArrayList<String> getCacheAllkey() {
|
||||
ArrayList a = new ArrayList();
|
||||
try {
|
||||
Iterator i = cacheMap.entrySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
|
||||
a.add((String) entry.getKey());
|
||||
}
|
||||
} catch (Exception ex) {} finally {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
public static ArrayList<String> getCacheListkey(String type) {
|
||||
ArrayList a = new ArrayList();
|
||||
String key;
|
||||
try {
|
||||
Iterator i = cacheMap.entrySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
|
||||
key = (String) entry.getKey();
|
||||
if (key.indexOf(type) != -1) {
|
||||
a.add(key);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {} finally {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized static void removeCacheByObject(Power_UserVo obj) {
|
||||
ArrayList a = new ArrayList();
|
||||
Object key;
|
||||
ArrayList<String> arr = new ArrayList<String>();
|
||||
try {
|
||||
Iterator i = cacheMap.entrySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) i.next();
|
||||
Cache cache = CacheManager.getCacheInfo((String)entry.getKey());
|
||||
Power_UserVo o = (Power_UserVo)cache.getValue();
|
||||
if (obj.getUserName().equals(o.getUserName())) {
|
||||
arr.add((String)entry.getKey());
|
||||
}
|
||||
}
|
||||
if(null != arr && !arr.isEmpty()){
|
||||
for (int k = 0; k < arr.size(); k++) {
|
||||
clearOnly(arr.get(k));
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.manage.interfaces.webservice;
|
||||
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebService;
|
||||
|
||||
@WebService
|
||||
public interface PowerWebService {
|
||||
|
||||
@WebMethod()
|
||||
String getInfosByUserId(@WebParam(name = "token") String token,String sysId);
|
||||
|
||||
@WebMethod
|
||||
String tempTest();
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.manage.interfaces.webservice;
|
||||
|
||||
|
||||
import com.manage.vo.PowerTree;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebService;
|
||||
import java.util.List;
|
||||
|
||||
@WebService
|
||||
public interface RoleAndUserTreeWebService {
|
||||
@WebMethod()
|
||||
List<PowerTree> getRolePowerTree();
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
package com.manage.interfaces.webservice.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.manage.dao.Power_MenuMapper;
|
||||
import com.manage.encrypt.Base64;
|
||||
import com.manage.encrypt.MD5;
|
||||
import com.manage.entity.Power_Menu;
|
||||
import com.manage.entity.Power_User;
|
||||
import com.manage.service.cache.Cache;
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.interfaces.webservice.PowerWebService;
|
||||
import com.manage.service.User_Dept_MenuService;
|
||||
import com.manage.util.Constant;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import com.manage.vo.Power_UserWebServiceVo;
|
||||
import com.manage.vo.User_Dept_Menu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jws.WebService;
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@WebService(serviceName = "PowerWebService",
|
||||
targetNamespace = "http://webservice.interfaces.manage.com/",
|
||||
endpointInterface = "com.manage.interfaces.webservice.PowerWebService"
|
||||
)
|
||||
public class PowerWebServiceImpl implements PowerWebService {
|
||||
@Autowired
|
||||
Power_MenuMapper powerMenuMapper;
|
||||
@Autowired
|
||||
User_Dept_MenuService userDeptMenuService;
|
||||
|
||||
@Override
|
||||
public String getInfosByUserId(String token,String sysFlag) {
|
||||
Power_UserWebServiceVo userWebServiceVo = new Power_UserWebServiceVo();
|
||||
if(StringUtils.isNotBlank(token) && StringUtils.isNotBlank(token) ){
|
||||
token = MD5.JM(Base64.decode(token));
|
||||
Cache cache = CacheManager.getCacheInfo(token);
|
||||
if(cache != null){
|
||||
Power_UserVo user = (Power_UserVo) cache.getValue();
|
||||
//设置名字
|
||||
user.setUserPosition(user.getName());
|
||||
List<User_Dept_Menu> menuList = user.getMenuList();
|
||||
Set<String> menus = new TreeSet();
|
||||
try {
|
||||
for(User_Dept_Menu menu : menuList){
|
||||
if(StringUtils.isNotBlank(menu.getMenuUrl()) && StringUtils.isNotBlank(menu.getSysFlag()) && sysFlag.equals(menu.getSysFlag()) && StringUtils.isNotBlank(menu.getMethod())){
|
||||
menus.add(menu.getMenuUrl());
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
BeanUtils.copyProperties(user,userWebServiceVo);
|
||||
//可预览信息设置在手机号字段
|
||||
userWebServiceVo.setUserTel(user.getShowRecord()+"");
|
||||
//可下载信息设置在邮箱字段
|
||||
userWebServiceVo.setUserEmail(user.getDownloadRecord()+"");
|
||||
//查看打印简要设置在职位字段
|
||||
userWebServiceVo.setUserAge(user.getShowPrint());
|
||||
userWebServiceVo.setMenus(menus);
|
||||
}
|
||||
}
|
||||
return JSON.toJSONString(userWebServiceVo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String tempTest() {
|
||||
return "aaaa~~~~~~~~~~~~~~~~~~~~~~~";
|
||||
}
|
||||
|
||||
private List<Power_Menu> getPowerMenuMethods(Power_User powerUser, String sysId){
|
||||
// 根据用户ID以及系统Id查出所有的用户菜单
|
||||
List<Power_Menu> powerUserMenus = powerMenuMapper.selectUserMenuByUserIdAndDictId(powerUser.getUserId(), Integer.parseInt(sysId));
|
||||
// 根据用户ID以及系统Id查出所有的角色菜单
|
||||
List<Power_Menu> powerRoleMenus = powerMenuMapper.selectRoleMenuByUserIdAndDictId(powerUser.getUserId(), Integer.parseInt(sysId));
|
||||
// 当前用户的所有菜单集合
|
||||
List<Power_Menu> tempPowerMenus = new ArrayList<>(powerRoleMenus);
|
||||
for (Power_Menu powerMenu:powerUserMenus) {
|
||||
if(powerMenu.getFlag().equals(Constant.EFFECTIVE_YES)){
|
||||
tempPowerMenus.add(powerMenu);
|
||||
}else if(powerMenu.getFlag().equals(Constant.EFFECTIVE_NO)){
|
||||
tempPowerMenus.remove(powerMenu);
|
||||
}
|
||||
}
|
||||
|
||||
List<Power_Menu> powerMenus = new ArrayList<>(tempPowerMenus);
|
||||
for (Power_Menu powerMenu:tempPowerMenus) {
|
||||
for (int i = 0;i<tempPowerMenus.size();i++) {
|
||||
if(powerMenu.getParentId().equals(tempPowerMenus.get(i).getMenuId()) && powerMenu.getMethod() != null){
|
||||
powerMenus.get(i).getMethods().add(powerMenu);
|
||||
powerMenus.remove(powerMenu);
|
||||
}
|
||||
}
|
||||
}
|
||||
return powerMenus;
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package com.manage;
|
||||
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2019/11/28 11:42
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2019/11/28 11:42
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class test {
|
||||
public static void main(String[] args) throws Exception{
|
||||
System.out.println();
|
||||
}
|
||||
public static String readfile(String filePath){
|
||||
File file = new File(filePath);
|
||||
InputStream input = null;
|
||||
try {
|
||||
input = new FileInputStream(file);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
byte[] bytes = new byte[1024];
|
||||
try {
|
||||
for(int n ; (n = input.read(bytes))!=-1 ; ){
|
||||
buffer.append(new String(bytes,0,n,"GBK"));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
int i = buffer.toString().lastIndexOf("</TD>");
|
||||
String substring = buffer.substring(0, i);
|
||||
String substring1 = substring.substring(substring.length() - 4, substring.length());
|
||||
Float f = Float.valueOf(substring1);
|
||||
Math.round(f);
|
||||
System.out.println(substring1);
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
public String getBody(String val) {
|
||||
String start = "<body>";
|
||||
String end = "</body>";
|
||||
int s = val.indexOf(start) + start.length();
|
||||
int e = val.indexOf(end);
|
||||
return val.substring(s, e);
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
# \u62E6\u622A\u83DC\u5355\u914D\u7F6E\u6587\u4EF6 ljx 2019-4-27
|
||||
#interceptRequest \u672A\u767B\u5F55\u4E4B\u524D\u653E\u884C\u3002\u9ED8\u8BA4\u4E3Anone
|
||||
#ajaxRequest ajax\u8BF7\u6C42\u6CA1\u6709\u5BF9\u5E94\u6A21\u5757\uFF0C\u9700\u8981\u653E\u884C\u3002 \u9ED8\u8BA4\u4E3Anone
|
||||
releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2
|
||||
ajaxRequest = none
|
||||
|
||||
#session\u8FC7\u671F\u65F6\u95F4
|
||||
TOKEN_EXPIRE_TIME = 1200000
|
||||
|
||||
##################################################\u670D\u52A1\u5668ip##########################################################
|
||||
#\u901A\u7528\u670D\u52A1\u5668IP\u4E0E\u901A\u7528\u670D\u52A1\u5668\u7AEF\u53E3
|
||||
SERVER_IP = 192.168.1.3
|
||||
SERVER_PORT = 8081
|
||||
|
||||
#power\u6743\u9650\u7CFB\u7EDFip
|
||||
POWER_IP = ${SERVER_IP}
|
||||
#\u6743\u9650\u7CFB\u7EDF\u7AEF\u53E3
|
||||
POWER_PORT = ${SERVER_PORT}
|
||||
|
||||
#\u75C5\u6848\u5F52\u6863\u7CFB\u7EDFip
|
||||
EMRMEDICALRECORD_IP = ${SERVER_IP}
|
||||
#\u75C5\u6848\u5F52\u6863\u7CFB\u7EDF\u7AEF\u53E3
|
||||
EMRMEDICALRECORD_PORT = 8082
|
||||
|
||||
#\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDFip
|
||||
EMRRECORD_IP = ${SERVER_IP}
|
||||
#\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7AEF\u53E3
|
||||
EMRRECORD_PORT = 8083
|
||||
|
||||
#\u75C5\u6848\u590D\u5370\u9884\u7EA6ip
|
||||
EMRAPPLYCOPY_IP = ${SERVER_IP}
|
||||
#\u75C5\u6848\u590D\u5370\u9884\u7EA6\u7AEF\u53E3
|
||||
EMRAPPLYCOPY_PORT = ${SERVER_PORT}
|
||||
|
||||
#\u75C5\u6848\u7B7E\u6536ip
|
||||
EMRFILES_IP = ${SERVER_IP}
|
||||
#\u75C5\u6848\u7B7E\u6536\u7AEF\u53E3
|
||||
EMRFILES_PORT = ${SERVER_PORT}
|
||||
|
||||
#emr_medical_record\u5F52\u6863\u7CFB\u7EDF\u7684\u7CFB\u7EDF\u6807\u8BC6
|
||||
EMRMEDICALRECORD_SYSFLAG = emr_medical_record
|
||||
#emr_medical_record\u5F52\u6863\u7CFB\u7EDF\u7684\u670D\u52A1\u5668\u5730\u5740\u5934
|
||||
EMRMEDICALRECORD_URLHEAD = http://${EMRMEDICALRECORD_IP}:${EMRMEDICALRECORD_PORT}/${EMRMEDICALRECORD_SYSFLAG}
|
||||
|
||||
#emr_record\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7684\u7CFB\u7EDF\u6807\u8BC6
|
||||
EMRRECORD_SYSFLAG = emr_record
|
||||
#emr_record\u75C5\u6848\u7BA1\u7406\u7CFB\u7EDF\u7684\u670D\u52A1\u5668\u5730\u5740\u5934
|
||||
EMRRECORD_URLHEAD = http://${EMRRECORD_IP}:${EMRRECORD_PORT}/${EMRRECORD_SYSFLAG}
|
||||
|
||||
#emr_apply_copy\u75C5\u6848\u590D\u5370\u9884\u7EA6\u7684\u7CFB\u7EDF\u6807\u8BC6
|
||||
EMRAPPLYCOPY_SYSFLAG = emr_apply_copy
|
||||
#emr_apply_copy\u75C5\u6848\u590D\u5370\u9884\u7EA6\u7684\u670D\u52A1\u5668\u5730\u5740\u5934
|
||||
EMRAPPLYCOPY_URLHEAD = http://${EMRAPPLYCOPY_IP}:${EMRAPPLYCOPY_PORT}/${EMRAPPLYCOPY_SYSFLAG}
|
||||
|
||||
#emr_files\u75C5\u6848\u7B7E\u6536\u7684\u7CFB\u7EDF\u6807\u8BC6
|
||||
EMRFILES__SYSFLAG = emr_files
|
||||
#emr_files\u75C5\u6848\u7B7E\u6536\u7684\u670D\u52A1\u5668\u5730\u5740\u5934
|
||||
EMRFILES_URLHEAD = http://${EMRFILES_IP}:${EMRFILES_PORT}/${EMRFILES__SYSFLAG}
|
||||
#####################################################\u5176\u4ED6##############################################
|
||||
#webSocket\u670D\u52A1\u5668\u5730\u5740
|
||||
WEBSOCKET_URLHEAD = ${POWER_IP}:8088
|
||||
#\u901A\u77E5\u5B57\u7B26\u4E32\u95F4\u9694\u7B26
|
||||
STR_SPLIT = *^:|,.
|
||||
|
||||
#\u65E5\u5FD7\u4FDD\u7559\u5929\u6570
|
||||
log.days = 90
|
||||
|
||||
#\u5B9A\u4E49\u662F\u5426\u4E3A\u957F\u671F\u767B\u5F55\u7528\u6237\u6B21\u6570
|
||||
login.times = 3
|
@ -0,0 +1,26 @@
|
||||
jdbc.driver=com.mysql.jdbc.Driver
|
||||
jdbc.url=jdbc\:mysql\://localhost\:3306/qfpower?useUnicode\=true&characterEncoding\=utf-8
|
||||
jdbc.username=root
|
||||
jdbc.password=docus702
|
||||
|
||||
#hibernate config
|
||||
hibernate.dialect = org.hibernate.dialect.MySQLDialect
|
||||
hibernate.show_sql = true
|
||||
hibernate.format_sql = true
|
||||
hibernate.hbm2ddl.auto =update
|
||||
#hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
|
||||
hibernate.current_session_context_class=thread
|
||||
|
||||
hibernate.jdbc.batch_size=50
|
||||
hibernate.enable_lazy_load_no_trans=true
|
||||
|
||||
#\u05B4\uFFFD\uFFFD:\uFFFD\u04BC\uFFFD Run As ---->Maven build ---->Goals:mybatis-generator:generate
|
||||
#\uFFFD\uFFFD\uFFFD\u013F\u00BC
|
||||
targetProject=src/main/java
|
||||
#modelPackage,sqlMapperPackage,daoMapperPackage \u0368\uFFFD\uFFFD\u04BB\uFFFD\uFFFD??
|
||||
modelPackage=com.manage.entity
|
||||
daoMapperPackage=com.manage.dao
|
||||
#\uFFFD\uFFFD\uFFFD\u013F\u00BC
|
||||
targetProject2=src/main/resources
|
||||
sqlMapperPackage=mapper
|
||||
|
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
<settings>
|
||||
<!-- 列自动映射 -->
|
||||
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
||||
<!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
|
||||
</settings>
|
||||
|
||||
<typeAliases>
|
||||
<package name="com.manage.entity"/>
|
||||
</typeAliases>
|
||||
|
||||
<plugins>
|
||||
<!-- com.github.pagehelper为PageHelper类所在包名 -->
|
||||
<plugin interceptor="com.github.pagehelper.PageInterceptor">
|
||||
<!--分页参数合理化-->
|
||||
<property name="reasonable" value="true"/>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</configuration>
|
@ -0,0 +1,4 @@
|
||||
##获取cpu温度cvs文件路径
|
||||
TEMPERATURECVSFILEDIR = D:\\tools\\temperature_stat.htm
|
||||
##cpu温度cvs文件显示温度数据的行数
|
||||
TEMPERATUREROWNUM = 9
|
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This is the JRebel configuration file. It maps the running application to your IDE workspace, enabling JRebel reloading for this project.
|
||||
Refer to https://manuals.jrebel.com/jrebel/standalone/config.html for more information.
|
||||
-->
|
||||
<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd">
|
||||
|
||||
<classpath>
|
||||
<dir name="E:/ideaProject/power/power-admin/target/classes">
|
||||
</dir>
|
||||
</classpath>
|
||||
|
||||
<web>
|
||||
<link target="/">
|
||||
<dir name="E:/ideaProject/power/power-admin/src/main/webapp">
|
||||
</dir>
|
||||
</link>
|
||||
</web>
|
||||
|
||||
</application>
|
@ -0,0 +1,48 @@
|
||||
package com.manage;
|
||||
|
||||
import com.manage.dao.Power_MenuMapper;
|
||||
import com.manage.dao.T_MenuMapper;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.FileSystemXmlApplicationContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
|
||||
public class MapperTest {
|
||||
/**
|
||||
* 测试角色mapper
|
||||
*/
|
||||
public static void main(String[] arg){
|
||||
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
|
||||
Client client = dcf.createClient("http://192.168.1.3:8081/WebService/PowerWebService?wsdl");
|
||||
Object[] objects = new Object[0];
|
||||
String error = null;
|
||||
try {
|
||||
// invoke("方法名",参数1,参数2,参数3....);
|
||||
objects = client.invoke("getInfosByUserId",token,"0");
|
||||
Result result = JSON.parseObject(objects[0].toString()
|
||||
, new TypeReference<Result>() {});
|
||||
String permStrs = "";
|
||||
if(null != result.getPowerMenuList() && !result.getPowerMenuList().isEmpty()){
|
||||
for (Power_Menu p: result.getPowerMenuList()) {
|
||||
if(StringUtils.isNoneBlank(p.getMenuName())){
|
||||
permStrs+=p.getMenuName() + ",";
|
||||
}
|
||||
}
|
||||
}
|
||||
Power_User powerUser = result.getPowerUser();
|
||||
if(powerUser != null){
|
||||
Power_User admin = (Power_User)SecurityUtils.getSubject().getPrincipal();
|
||||
UserToken userToken = new UserToken(powerUser.getUserName(),powerUser.getUserPwd(),true,powerUser.getRoleId(),permStrs);
|
||||
Subject subject = SecurityUtils.getSubject();
|
||||
subject.login(userToken);
|
||||
}
|
||||
String msg = "";
|
||||
if (error != null) {//出错了,返回登录页面
|
||||
return "redirect://http:192.168.1.3:8080/login";
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<c:set var="path" value="${pageContext.request.contextPath}"/>
|
||||
<%@taglib prefix="pm" uri="/WEB-INF/taglib/guardtag.tld"%>
|
||||
|
||||
<link rel="stylesheet" href="${path}/static/css/comm.css"/>
|
||||
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap/dist/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/font-awesome/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/Ionicons/css/ionicons.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/dist/css/AdminLTE.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/dist/css/skins/_all-skins.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css"/>
|
||||
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/bootstrap-table.min.css">
|
||||
<link rel="stylesheet" href="${path}/static/css/bootstrap-select.min.css">
|
||||
<link rel="stylesheet" href="${path}/static/js/toastr.min.css" type="text/css">
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
|
||||
|
||||
|
||||
<!-- 引入Jquery -->
|
||||
<script type="text/javascript" src="${path}/static/js/jquery-3.3.1.js"></script>
|
||||
<!-- jQuery UI 1.11.4 -->
|
||||
<script src="${path}/static/js/jquery-ui.min.js"></script>
|
||||
<!-- Bootstrap 3.3.7 -->
|
||||
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<!-- datepicker -->
|
||||
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- AdminLTE App -->
|
||||
<script src="${path}/static/bootstrap-3.3.7/dist/js/adminlte.min.js"></script>
|
||||
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/bootstrap-table.js"></script>
|
||||
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
|
||||
<script src="${path}/static/js/bootstrap-select.min.js"></script>
|
||||
<script src="${path}/static/js/toastr.min.js"></script>
|
||||
<script src="${path}/static/js/jquery.form.js"></script>
|
||||
<script>
|
||||
toastr.options.positionClass = 'toast-top-right';
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
var path = "${path}";
|
||||
//回跳表格页码
|
||||
function backToPage(){
|
||||
refresh();
|
||||
setTimeout(function(){
|
||||
var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize;
|
||||
var rows=$('#bootstrapTable').bootstrapTable("getOptions").totalRows;
|
||||
if((pageSize*(pageNumber-1)) == rows && pageNumber != 1){
|
||||
pageNumber -= 1;
|
||||
}
|
||||
$('#bootstrapTable').bootstrapTable('selectPage', pageNumber);
|
||||
},100)
|
||||
}
|
||||
function toPage() {
|
||||
var pageNum = $("#pageNum").val();
|
||||
if (pageNum) {
|
||||
$('#bootstrapTable').bootstrapTable('selectPage', parseInt(pageNum));
|
||||
}
|
||||
setTimeout(function(){
|
||||
$("#pageNum").val(pageNum)
|
||||
},500)
|
||||
}
|
||||
</script>
|
||||
<%@ include file="/WEB-INF/jspf/confirmJsp.jspf"%>
|
@ -0,0 +1,45 @@
|
||||
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<c:set var="path" value="${pageContext.request.contextPath}"/>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<link rel="stylesheet" href="${path}/static/js/jquery-confirm.min.css">
|
||||
<script src="${path}/static/js/jquery-confirm.min.js"></script>
|
||||
<input type="hidden" id="common_confirm_btn" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#common_confirm_model">
|
||||
<div id="common_confirm_model" class="modal" style="z-index: 99999">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<h5 class="modal-title"><i class="fa fa-exclamation-circle"></i> <span class="title"></span></h5>
|
||||
</div>
|
||||
<div class="modal-body small">
|
||||
<p ><span class="message"></span></p>
|
||||
</div>
|
||||
<div class="modal-footer" >
|
||||
<button type="button" class="btn btn-primary ok" data-dismiss="modal">确认</button>
|
||||
<button type="button" class="btn btn-default cancel" data-dismiss="modal">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var Common = {
|
||||
confirm:function(params){
|
||||
var model = $("#common_confirm_model");
|
||||
model.find(".title").html(params.title)
|
||||
model.find(".message").html(params.message)
|
||||
|
||||
$("#common_confirm_btn").click()
|
||||
//每次都将监听先关闭,防止多次监听发生,确保只有一次监听
|
||||
model.find(".cancel").off("click")
|
||||
model.find(".ok").off("click")
|
||||
|
||||
model.find(".ok").on("click",function(){
|
||||
params.operate(true)
|
||||
})
|
||||
|
||||
model.find(".cancel").on("click",function(){
|
||||
params.operate(false)
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
@ -0,0 +1,33 @@
|
||||
<c:set var="path" value="${pageContext.request.contextPath}"/>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<style>
|
||||
.loading {
|
||||
width: 160px;
|
||||
height: 56px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
line-height: 56px;
|
||||
color: #fff;
|
||||
padding-left: 60px;
|
||||
font-size: 15px;
|
||||
background: #000;
|
||||
opacity: 0.7;
|
||||
z-index: 9999;
|
||||
-moz-border-radius: 20px;
|
||||
-webkit-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
|
||||
}
|
||||
</style>
|
||||
<div id="loadingModal" class="modal fade" data-keyboard="false"
|
||||
data-backdrop="static" data-role="dialog"
|
||||
aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div id="loading" class="loading">加载中。。。</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
$("#loading").css("background","url("+path+"/static/img/load.gif) no-repeat 10px 50%");
|
||||
$('#loadingModal').modal('show');
|
||||
})
|
||||
</script>
|
@ -0,0 +1,87 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<link rel="stylesheet" href="${path}/static/naranja/css/naranja.min.css"/>
|
||||
<script type="text/javascript" src="${path}/static/naranja/js/naranja.js"></script>
|
||||
<script type="text/javascript" src="${path}/static/naranja/sockjs.js"></script>
|
||||
<script>
|
||||
var powerUrlHead = path;
|
||||
/*********通知操作**********************************************/
|
||||
$(function(){
|
||||
getNoticeCount();
|
||||
})
|
||||
//赋值未通知数量
|
||||
function getNoticeCount(){
|
||||
//赋值未通知数量
|
||||
$.ajax({
|
||||
type:'get',
|
||||
url:powerUrlHead+'/notice/getUnReadCount',
|
||||
dataType:'json',
|
||||
success:function(data){
|
||||
if(data.code == 100){
|
||||
$("#noticeCount").text(data.extend.unReadCount);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
//每隔1分钟轮询一次未通知数量
|
||||
setInterval(function () {
|
||||
getNoticeCount();
|
||||
}, 60*1000);
|
||||
//每隔1秒钟轮询一次session所剩时间
|
||||
var r = setInterval(function () {
|
||||
$.get(path+'/getSessionRemainingTime',function(data){
|
||||
if(data != null){
|
||||
data /= 1000
|
||||
if(data < 11 && data > 10){
|
||||
toastr.warning("还有10秒将登录超时,将退出登录!")
|
||||
}else if(data < 6 && data > 5){
|
||||
toastr.warning("还有5秒将登录超时,将退出登录!")
|
||||
}else if(data < 0){
|
||||
window.location.href = path + '/login'
|
||||
}
|
||||
}
|
||||
},'json');
|
||||
}, 1000);
|
||||
//跳转到通知
|
||||
function noticeManage1(noticeId){
|
||||
var url = powerUrlHead+"/gatewayPage?noticeId="+noticeId;
|
||||
window.location.href = url;
|
||||
}
|
||||
/*********webSocket**********************************************/
|
||||
var userId = $("#userId").val();
|
||||
var strSplit = $("#strSplit").val();
|
||||
var webSocketUrl = $("#webSocketUrl").val();
|
||||
var ws = new WebSocket("ws://"+webSocketUrl);
|
||||
ws.onopen = function(){
|
||||
ws.send("power_"+userId);
|
||||
console.log("连接...")
|
||||
}
|
||||
|
||||
//处理服务器发送来的数据
|
||||
ws.onmessage = function(e){
|
||||
var msg = e.data.split(strSplit);
|
||||
narn('warn',msg[0],msg[1],msg[2]);
|
||||
}
|
||||
|
||||
ws.onclose = function(){
|
||||
console.log("连接关闭");
|
||||
}
|
||||
|
||||
ws.onerror = function(){
|
||||
console.log('连接失败');
|
||||
}
|
||||
|
||||
function narn (type,title,text,noticeId) {
|
||||
debugger
|
||||
naranja()[type]({
|
||||
title: title,
|
||||
text: text,
|
||||
timeout: 1000*60,
|
||||
buttons: [{
|
||||
text: '查看详情',
|
||||
click: function (e) {
|
||||
noticeManage1(noticeId);
|
||||
}
|
||||
}]
|
||||
})
|
||||
}
|
||||
</script>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,158 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<%@ include file="/WEB-INF/jspf/confirmJsp.jspf" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>归属管理</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<link rel="stylesheet" href="${path}/static/css/comm.css">
|
||||
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.all.js"></script>
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.exhide.js"></script>
|
||||
<script>
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.widget-header{
|
||||
height:26px;
|
||||
background-color: #1D9ED7;
|
||||
font-size: 16px!important;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
/*页头*/
|
||||
.panel-heading{
|
||||
padding: 0 16px;
|
||||
|
||||
}
|
||||
hr{
|
||||
margin:0;
|
||||
}
|
||||
/*左边树div*/
|
||||
.treeDiv{
|
||||
float:left;
|
||||
width:30%;
|
||||
height:100%;
|
||||
background-color: #fff;
|
||||
}
|
||||
.searcDiv{
|
||||
padding-left: 60px;
|
||||
padding-right: 60px;
|
||||
padding-top: 2%;
|
||||
}
|
||||
.ztree{
|
||||
border: 0px!important;
|
||||
background-color: #fff!important;
|
||||
overflow: auto!important;
|
||||
font-size: 14rem!important;
|
||||
height:75%!important;
|
||||
width: 100%!important;
|
||||
}
|
||||
.zTreeDemo{
|
||||
margin-left:10%;
|
||||
}
|
||||
.treeBtn{
|
||||
margin-top:-3%;
|
||||
padding-left:19%;
|
||||
}
|
||||
.treeOperBtn{
|
||||
margin-left:20px;
|
||||
}
|
||||
div#rMenu {
|
||||
width: 60px;
|
||||
height:67px;
|
||||
position:absolute;
|
||||
visibility:hidden; top:0;
|
||||
background-color: #555;
|
||||
text-align:left;
|
||||
padding: 2px;
|
||||
}
|
||||
div#rMenu ul{
|
||||
margin-left: -40px;
|
||||
}
|
||||
div#rMenu ul li{
|
||||
margin: 1px 0;
|
||||
padding: 0 5px;
|
||||
cursor: pointer;
|
||||
background-color: #fff;
|
||||
list-style: none outside none;
|
||||
text-align: center;
|
||||
}
|
||||
/*右边内容div*/
|
||||
.contentDiv{
|
||||
float:left;
|
||||
width:69%;
|
||||
margin-left: 1%;
|
||||
background-color: #fff;
|
||||
overflow: auto;
|
||||
}
|
||||
.content_wrap{
|
||||
width: 320px;
|
||||
height: 380px;
|
||||
}
|
||||
#iframe{
|
||||
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style="background-color: #ECF0F5">
|
||||
<div style="width:100%;">
|
||||
<div class="treeDiv">
|
||||
<div class="widget-header">
|
||||
<%--<h2> </h2>--%>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="searcDiv">
|
||||
<input type="text" id="key" value="" class="form-control input-sm"
|
||||
placeholder="医院名/部门名/系统名" maxlength="15"/><br/>
|
||||
</div>
|
||||
<div class="treeBtn">
|
||||
<button type="button" class="btn btn-primary btn-sm treeOperBtn" onclick="expandAll();">全部展开</button>
|
||||
<button type="button" class="btn btn-primary btn-sm treeOperBtn" onclick="collapseAll();">全部折叠</button>
|
||||
</div>
|
||||
<div id="zTreeDemo" class="zTreeDemo">
|
||||
<ul id="treeDemo" class="ztree"></ul>
|
||||
</div>
|
||||
<div id="rMenu">
|
||||
<ul>
|
||||
<pm:myPermissions permissions="/dict/add">
|
||||
<li id="m_add" onclick="addTreeNode();">增加</li>
|
||||
</pm:myPermissions>
|
||||
<pm:myPermissions permissions="/dict/delete">
|
||||
<li id="m_del" onclick="removeTreeNode();">删除</li>
|
||||
</pm:myPermissions>
|
||||
<pm:myPermissions permissions="/dict/update">
|
||||
<li id="m_reset" onclick="updateTree();">修改</li>
|
||||
</pm:myPermissions>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /span -->
|
||||
<!--子节点的名称-->
|
||||
<input type="hidden" id="childrenNodeNames">
|
||||
<!--相邻节点的名称-->
|
||||
<input type="hidden" id="nearNodeNames">
|
||||
<!--子节点的功能方法-->
|
||||
<input type="hidden" id="childrenNodeMethods">
|
||||
<!--相邻节点的功能方法-->
|
||||
<input type="hidden" id="nearNodeMethods">
|
||||
<div class="contentDiv">
|
||||
<div class="widget-header">
|
||||
<%--<h2> </h2>--%>
|
||||
</div>
|
||||
<div class="contentHead">
|
||||
<div class="panel-heading"><h4>归属信息</h4></div>
|
||||
<hr>
|
||||
</div>
|
||||
<!--存储当前树节点-->
|
||||
<input type="hidden" id="currentTreeId">
|
||||
<iframe src="${path}/dict/dictManagePage" id="iframe" name="iframe" style="width:100%;height: calc(100vh - 57px);" frameborder="0" scrolling="yes"></iframe>
|
||||
</div>
|
||||
</div><!-- /span -->
|
||||
<script src="${path}/static/js/dict.js"></script>
|
||||
<script src="${path}/static/js/menu/fuzzysearch.js"></script>
|
||||
<%@ include file="/WEB-INF/jspf/loading.jspf" %>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,242 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>归属管理</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
|
||||
<link href="${path}/static/css/bootstrap-select.min.css" rel="stylesheet" />
|
||||
<script src="${path}/static/js/bootstrap-select.min.js" ></script>
|
||||
<script>
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
hr{
|
||||
margin:0;
|
||||
}
|
||||
/*右边内容div*/
|
||||
.formDiv{
|
||||
width:80%;
|
||||
height:100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.btns{
|
||||
text-align: center;
|
||||
}
|
||||
.btn{
|
||||
margin-left:23px;
|
||||
}
|
||||
/*多选下拉框*/
|
||||
.dropdown{
|
||||
margin-left: -23px!important;
|
||||
}
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 103%;
|
||||
left: 0;
|
||||
z-index: 10000;
|
||||
display: none;
|
||||
float: left;
|
||||
list-style: none;
|
||||
text-shadow: none;
|
||||
/*max-height: 400px;*/
|
||||
margin: 0px;
|
||||
-webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 1px 8px rgba(120, 234, 61, 0.55);
|
||||
font-size: 14px;
|
||||
font-family: "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.dropdown-menu{
|
||||
margin-left: 23px!important;
|
||||
}
|
||||
/*短input*/
|
||||
.shortInput{
|
||||
width:100px;
|
||||
}
|
||||
.form-group{
|
||||
margin-bottom: 10px!important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="container">
|
||||
<div class="formDiv">
|
||||
<c:if test="${level == 0}">
|
||||
<!--医院信息-->
|
||||
<div id="hospitalDiv">
|
||||
<div class=""><h4>医院信息</h4></div>
|
||||
<hr>
|
||||
<div>
|
||||
<div class="box-body">
|
||||
<form class="form-horizontal" name="form1" id="form1">
|
||||
<input type="hidden" name="parentId" value="0">
|
||||
<input type="hidden" name="dictId" id="hospitalId" value="${hospital.dictId}">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">医院名称:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" id="hospitalName" name="hospitalName" value="${hospital.hospitalName}" maxlength="16">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">医院地区:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" id="dictArea" name="dictArea" value="${hospital.dictArea}" maxlength="25">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">医院电话:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" id="hospitalTel" name="hospitalTel" value="${hospital.hospitalTel}" maxlength="20">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="btns">
|
||||
<pm:myPermissions permissions="/dict/update">
|
||||
<button type="button" class="btn btn-primary input-sm" onclick="addHospital()">保存</button>
|
||||
</pm:myPermissions>
|
||||
<button type="button" class="btn btn-default input-sm" onclick="clearForm('form1')">清空</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${level > 0}">
|
||||
<!--系统信息-->
|
||||
<div id="systemDiv">
|
||||
<!--系统医院信息-->
|
||||
<div class=""><h4>医院信息</h4></div>
|
||||
<hr>
|
||||
<div>
|
||||
<form class="form-horizontal">
|
||||
<div class="box-body">
|
||||
<div class="form-group" >
|
||||
<label class="col-sm-2 control-label left">医院名称:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" readonly id="hospitalName1" value="${hospital.hospitalName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">医院地区:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" readonly id="dictArea1" value="${hospital.dictArea}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">医院电话:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" readonly id="hospitalTel1" value="${hospital.hospitalTel}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class=""><h4>系统信息</h4></div>
|
||||
<hr>
|
||||
<div>
|
||||
<form class="form-horizontal" id="form2" name="form2">
|
||||
<div class="box-body">
|
||||
<input type="hidden" name="dictId" id="dictId" value="${dict.dictId}">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">系统标识:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" name="sysFlag" id="sysFlag" value="${dict.sysFlag}" maxlength="26">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">系统名称:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="text" class="form-control input-sm" name="sysName" id="sysName" value="${dict.sysName}" maxlength="16">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">系统分类:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<select class="form-control input-sm " id="sysType" name="sysType">
|
||||
<c:forEach items="${sysTypes}" var="types">
|
||||
<option value="${types}" <c:if test="${types == dict.sysType}">selected</c:if>>${types}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">所属医院:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<select class="form-control input-sm" id="parentId" name="parentId">
|
||||
<c:forEach items="${hospitals}" var="h">
|
||||
<option value="${h.dictId}" <c:if test="${h.dictId == hospital.hospitalId}">selected</c:if>>${h.hospitalName}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="deptDiv" <c:if test="${sysTypes[0]== '权限系统'}">style="display:none"</c:if>>
|
||||
<label class="col-sm-2 control-label left">所属部门:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<c:if test="${operFlag != '' && operFlag == 'add'}">
|
||||
<select class="selectpicker" multiple id="deptId" name="deptIds" style="max-height:400px!important;overflow:scroll;" data-live-search="true" data-actions-box="true">
|
||||
<c:forEach items="${depts}" var="dept">
|
||||
<option value="${dept.deptId}" <c:if test="${deptId == dept.deptId}">selected</c:if>>${dept.deptName}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</c:if>
|
||||
<c:if test="${operFlag != '' && operFlag == 'edit'}">
|
||||
<select class="form-control input-sm" id="deptId" name="deptId">
|
||||
<c:forEach items="${depts}" var="dept">
|
||||
<option value="${dept.deptId}" <c:if test="${dict.deptId == dept.deptId}">selected</c:if>>${dept.deptName}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<%--<select class="selectpicker" multiple id="deptId" name="deptIds" style="max-height:400px!important;overflow:scroll;" data-live-search="true" data-actions-box="true">
|
||||
<c:forEach items="${depts}" var="dept">
|
||||
<option value="${dept.deptId}" <c:if test="${dept.checks != '' && dept.checks != null}">selected</c:if>>${dept.deptName}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<input type="hidden" name="deptId" value="${dict.deptId}">--%>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left"> 排序:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<input type="number" class="form-control input-sm shortInput" id="sort" name="sort" value="${dict.sort}" oninput="if(value.length>9)value=value.slice(0,9)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left"> 状态:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<select class="form-control input-sm shortInput" name="dictStatus">
|
||||
<option value="1" <c:if test="${dict.dictStatus == 1}">selected</c:if>>启用</option>
|
||||
<option value="0" <c:if test="${dict.dictStatus == 0}">selected</c:if>>不启用</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left">可编辑否:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<select class="form-control input-sm shortInput" name="dictEdit">
|
||||
<option value="1" <c:if test="${dict.dictEdit == 1}">selected</c:if>>是</option>
|
||||
<option value="0" <c:if test="${dict.dictEdit == 0}">selected</c:if>>否</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label left"> 备注:</label>
|
||||
<div class="col-sm-5 left">
|
||||
<textarea type="text" class="form-control input-sm" name="remark" value="${dict.remark}" maxlength="50">${dict.remark}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<c:if test="${hospital.dictEdit == 1 || user.roleId == 0}">
|
||||
<div class="btns">
|
||||
<pm:myPermissions permissions="/dict/update">
|
||||
<button type="button" class="btn btn-primary input-sm" onclick="addSys()">保存</button>
|
||||
</pm:myPermissions>
|
||||
<button type="button" class="btn btn-default input-sm" onclick="clearForm2()">清空</button>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<script src="${path}/static/js/dictIframe.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,16 @@
|
||||
<label for="re_parentId" class="control-label">父节点:</label>
|
||||
<div class=" form-group form-inline">
|
||||
<div>
|
||||
<input id="txtTreeSelect1" type="text" onclick="showMenu1(); return false;"
|
||||
class="form-control" placeholder="父节点"
|
||||
id="re_parentId" name="re_parentId"
|
||||
data-id=""
|
||||
readonly="readonly"
|
||||
/>
|
||||
</div>
|
||||
<div id="menuContent1" class="menuContent" style="display: none;background: #f9f9f9;
|
||||
position: absolute;z-index: 10">
|
||||
<ul id="treeDemo1" class="ztree" style="margin-top: 0; width: 178px;">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,558 @@
|
||||
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>嘉时软件</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<link rel="stylesheet" href="${path}/static/css/gatewayPageStyles.css"/>
|
||||
<script src="${path}/static/js/echarts/echarts.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.logo{
|
||||
height: 59px!important;
|
||||
}
|
||||
.navbar-custom-menu{
|
||||
padding-right:17px;
|
||||
}
|
||||
/**
|
||||
* 内容背景颜色
|
||||
*/
|
||||
.content-wrapper{
|
||||
background-color: #fff!important;
|
||||
}
|
||||
/**
|
||||
* 上图标div
|
||||
*/
|
||||
.header{
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
margin-top: 0!important;
|
||||
}
|
||||
.headerLeft{
|
||||
width:70px;
|
||||
height:100%;
|
||||
}
|
||||
.iconContext{
|
||||
width:104px;
|
||||
height:100%;
|
||||
margin-left: 35px;
|
||||
}
|
||||
/**
|
||||
* 字内容div背景颜色
|
||||
*/
|
||||
.content-header{
|
||||
background-color: #ecf0f5!important;
|
||||
padding: 0!important;
|
||||
}
|
||||
/**
|
||||
* echartDiv
|
||||
*/
|
||||
.echartsSection{
|
||||
background-color: #ecf0f5!important;
|
||||
margin-top: 10px;
|
||||
width:100%;
|
||||
height: 566px;
|
||||
}
|
||||
/**
|
||||
* 上组图div
|
||||
*/
|
||||
.topEchartsDiv{
|
||||
padding:0!important;
|
||||
width:100%;
|
||||
height:50%;
|
||||
}
|
||||
/**
|
||||
* 下组图div
|
||||
*/
|
||||
.bottomEchartsDiv{
|
||||
padding:0!important;
|
||||
width:100%;
|
||||
height:50%;
|
||||
}
|
||||
/**
|
||||
* 系统操作div
|
||||
*/
|
||||
.systemOperDiv{
|
||||
width:33%;
|
||||
height: 100%;
|
||||
}
|
||||
/**
|
||||
* 在线用户统计div
|
||||
*/
|
||||
.alineDiv{
|
||||
margin-left: 1%;
|
||||
width:66%;
|
||||
height: 100%;
|
||||
}
|
||||
/**
|
||||
* 在线用户里内容div
|
||||
*/
|
||||
.topEchartsRightDiv{
|
||||
width:48%;
|
||||
height: 88%;
|
||||
}
|
||||
/**
|
||||
* 在线用户里内容右div
|
||||
*/
|
||||
.topEchartsRightDiv2{
|
||||
margin-left:15px;
|
||||
}
|
||||
/**
|
||||
* 下组图内容div
|
||||
*/
|
||||
.bottomEchartsContentDiv{
|
||||
width:31%;
|
||||
height: 88%;
|
||||
}
|
||||
/**
|
||||
* 下组图内容div非左div
|
||||
*/
|
||||
.bottomEchartsContentNotLeftDiv{
|
||||
margin-left: 25px;
|
||||
}
|
||||
/**
|
||||
* echart头标题div
|
||||
*/
|
||||
.echartsHeader{
|
||||
background-color: #3C8DBC;
|
||||
width: 100%;
|
||||
height:12%;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
padding-top:3px;
|
||||
}
|
||||
hr{
|
||||
margin: 0!important;
|
||||
}
|
||||
#alineLineDivMain canvas{
|
||||
heigth:120%;
|
||||
}
|
||||
#alineBarDivMain canvas{
|
||||
heigth:120%;
|
||||
}
|
||||
/*#serverListenGaugeDiv1 canvas{*/
|
||||
/*width:120%!important;*/
|
||||
/*height:120%!important;*/
|
||||
/*}*/
|
||||
.hidden-xs{
|
||||
max-width: 200px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="hold-transition skin-blue sidebar-mini">
|
||||
<%--<a href="http://192.168.1.3:8080/emr_record/login?token=IxEQVDobAlREQlRFQk5HTE5BRFQ3JyBURkRFTQ==&userName=1137">hhhhhhhhhhhhhhhh</a>--%>
|
||||
<input type="hidden" id="userId" value="${CURRENT_USER.userId}">
|
||||
<input type="hidden" id="webSocketUrl" value="${WEBSOCKET_URLHEAD}">
|
||||
<input type="hidden" id="strSplit" value="${STR_SPLIT}">
|
||||
<input type="hidden" id="flag" value="${flag}">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<!--logo-->
|
||||
<div class=" logo">
|
||||
<%--<div class="pull-left image" style="align-content: baseline;">
|
||||
<img src="${path}/static/bootstrap-3.3.7/dist/img/credit/paypal.png"
|
||||
style=":height:70%;width: 70%;margin-top:0.25rem;"
|
||||
class="user-image" alt="User Image">
|
||||
</div>--%>
|
||||
<div class="pull-left info" style="width: 100%">
|
||||
<p>嘉时软件</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="navbar navbar-static-top">
|
||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
</a>
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="user user-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="noticeManage()">
|
||||
<span class="label label-warning" id="noticeCount">0</span>
|
||||
<i class="fa fa-envelope-o" style="font-size: 25px;"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="user user-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<img src="${path}/static/bootstrap-3.3.7/dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.powerDepts == '' || CURRENT_USER.powerDepts == null || CURRENT_USER.powerDepts == 'null'}">
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.name != null && CURRENT_USER.name != '' && CURRENT_USER.name != 'null'}">
|
||||
<p class="hidden-xs" title="${CURRENT_USER.name}">${CURRENT_USER.name}</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="hidden-xs" title="${CURRENT_USER.userName}">${CURRENT_USER.userName}</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.name != null && CURRENT_USER.name != '' && CURRENT_USER.name != 'null'}">
|
||||
<p class="hidden-xs" title="${CURRENT_USER.name}(${CURRENT_USER.powerDepts})">${CURRENT_USER.name}(${CURRENT_USER.powerDepts})</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="hidden-xs" title="${CURRENT_USER.userName}(${CURRENT_USER.powerDepts})">${CURRENT_USER.userName}(${CURRENT_USER.powerDepts})</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="margin">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default">操作</button>
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
|
||||
aria-expanded="false" style="height:34px">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<%--<li><a href="#">帮助</a></li>
|
||||
<li><a href="#">联系我们</a></li>
|
||||
<li><a href="${path}/gatewayPage">返回首页</a></li>
|
||||
<li class="divider"></li>--%>
|
||||
<li><a href="${path}/logout?token=${token}">退出登录</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
<aside class="main-sidebar">
|
||||
<div onclick="mainManage()" style="cursor:pointer">
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u86" class="ax_default icon">
|
||||
<img id="u86_img" class="img " src="${path}/static/images/门户页面/u86.png"/>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u158" class="ax_default _三级标题">
|
||||
<div id="u158_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u159" class="text" style="visibility: visible;">
|
||||
<p><span>主页</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Unnamed (组合) -->
|
||||
<div onclick="noticeManage()" style="cursor:pointer">
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u161" class="ax_default icon">
|
||||
<img id="u161_img" class="img " src="${path}/static/images/门户页面/u161.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u162" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u163" class="ax_default _三级标题">
|
||||
<div id="u163_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u164" class="text" style="visibility: visible;">
|
||||
<p><span>通知信息</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div onclick="helpDocumentManage()" style="cursor:pointer">
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u152" class="ax_default icon">
|
||||
<img id="u152_img" class="img " src="${path}/static/images/门户页面/u152.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u153" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u165" class="ax_default _三级标题">
|
||||
<div id="u165_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u166" class="text" style="visibility: visible;">
|
||||
<p><span>帮助文档</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div onclick="updatePassword()" style="cursor:pointer">
|
||||
<!-- Unnamed (形状)/user/toUpdatePassword -->
|
||||
<div id="u154" class="ax_default icon">
|
||||
<img id="u154_img" class="img " src="${path}/static/images/门户页面/u154.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u155" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u167" class="ax_default _三级标题">
|
||||
<div id="u167_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u168" class="text" style="visibility: visible;">
|
||||
<p><span>修改密码</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div onclick="callMeManage()" style="cursor:pointer">
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u156" class="ax_default icon">
|
||||
<img id="u156_img" class="img " src="${path}/static/images/门户页面/u156.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u157" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u169" class=" _三级标题">
|
||||
<div id="u169_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u170" class="text" style="visibility: visible;">
|
||||
<p><span>联系我们</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
<div id="iframeDiv" style="display: none">
|
||||
<iframe class="row-fluid" style="margin-left:230px;height:100%;width:85%;"
|
||||
id="iframe" name="iframe" scrolling="no" frameborder="0"></iframe>
|
||||
</div>
|
||||
<div class="content-wrapper" id="sectionDiv">
|
||||
<section class="content-header">
|
||||
<div class="header">
|
||||
<div class="headerLeft left">
|
||||
<a href="#">
|
||||
<div id="u191" class="ax_default box_1">
|
||||
<div id="u191_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u192" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="u187" class="ax_default icon">
|
||||
<img id="u187_img" class="img " src="${path}/static/images/门户页面/u187.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u188" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<c:if test="${power == 1}">
|
||||
<div class="iconContext left">
|
||||
<a href="${path}/index">
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u128" class="ax_default sticky_2">
|
||||
<div id="u128_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u129" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u130" class="ax_default icon">
|
||||
<img id="u130_img" class="img " src="${path}/static/images/门户页面/u130.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u131" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u132" class="ax_default _二级标题">
|
||||
<div id="u132_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u133" class="text" style="visibility: visible;">
|
||||
<p><span>权限系统</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${emr_medical_record == 1}">
|
||||
<div class="iconContext left">
|
||||
<a href="${EMRMEDICALRECORD_URLHEAD}/login?token=${token}&userName=${CURRENT_USER.userName}">
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u134" class="ax_default sticky_2">
|
||||
<div id="u134_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u135" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u136" class="ax_default icon">
|
||||
<img id="u136_img" class="img " src="${path}/static/images/门户页面/u136.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u137" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u138" class="ax_default _二级标题">
|
||||
<div id="u138_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u139" class="text" style="visibility: visible;text-align: center">
|
||||
<p><span>病案归档系统</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${emr_record == 1}">
|
||||
<div class="iconContext left">
|
||||
<a href="${EMRRECORD_URLHEAD}/login?token=${token}&userName=${CURRENT_USER.userName}">
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u140" class="ax_default sticky_3">
|
||||
<div id="u140_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u141" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u142" class="ax_default icon">
|
||||
<img id="u142_img" class="img " src="${path}/static/images/门户页面/u138.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u143" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u144" class="ax_default _二级标题">
|
||||
<div id="u144_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u145" class="text" style="visibility: visible;text-align: center">
|
||||
<p><span>档案管理系统</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>
|
||||
<%--<c:if test="${emr_apply_copy == 1}">
|
||||
<div class="iconContext left">
|
||||
<a href="${EMRAPPLYCOPY_URLHEAD}/auth/login?token=${token}&userName=${CURRENT_USER.userName}">
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u146" class="ax_default sticky_3">
|
||||
<div id="u146_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u147" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u148" class="ax_default icon">
|
||||
<img id="u148_img" class="img " src="${path}/static/images/门户页面/u149.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u149" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u150" class="ax_default _二级标题">
|
||||
<div id="u150_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u151" class="text" style="visibility: visible;text-align: center">
|
||||
<p><span>病案复印预约</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${emr_files == 1}">
|
||||
<div class="iconContext left">
|
||||
<a href="${EMRFILES_URLHEAD}/login?token=${token}&userName=${CURRENT_USER.userName}">
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u1461" class="ax_default sticky_3">
|
||||
<div id="u1461_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u1471" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (形状) -->
|
||||
<div id="u1481" class="ax_default icon">
|
||||
<img id="u1481_img" class="img " src="${path}/static/images/门户页面/u148.png"/>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u1491" class="text" style="display: none; visibility: hidden">
|
||||
<p><span></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Unnamed (矩形) -->
|
||||
<div id="u1501" class="ax_default _二级标题">
|
||||
<div id="u1501_div" class=""></div>
|
||||
<!-- Unnamed () -->
|
||||
<div id="u1511" class="text" style="visibility: visible;text-align: center">
|
||||
<p><span>病案签收</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>--%>
|
||||
</div>
|
||||
</section>
|
||||
<%--<section class="content-bottom echartsSection">
|
||||
<!--上echarts-->
|
||||
<div class="topEchartsDiv" style="background-color: #fff">
|
||||
<!--系统操作div-->
|
||||
<div class="systemOperDiv left">
|
||||
<div class="echartsHeader">
|
||||
<span>权限系统操作</span>
|
||||
</div>
|
||||
<div id="systemOperDivMain" style="width:100%;height:100%;"></div>
|
||||
</div>
|
||||
<!--统计用户在线div-->
|
||||
<div class="alineDiv left" style="background-color: #fff">
|
||||
<div class="echartsHeader">
|
||||
<span>在线人数统计</span>
|
||||
</div>
|
||||
<div class="topEchartsRightDiv left">
|
||||
<div style="width:100%;height: 11%;"><span style="font-size: 16px">本月客户阶段统计(客户总量:<span id="maxCountList"></span>)</span><hr style="color: grey"></div>
|
||||
<div id="alineLineDivMain" style="width:100%;height:89%;"></div>
|
||||
</div>
|
||||
<div class="topEchartsRightDiv topEchartsRightDiv2 left">
|
||||
<div style="width:100%;height: 11%;text-align: right"><span style="font-size: 16px;padding-right: 35px">总拜访量:<span id="loginCount"></span></span></div>
|
||||
<div id="alineBarDivMain" style="width:100%;height:89%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomEchartsDiv">
|
||||
<div class="echartsHeader">
|
||||
<span>服务器监控</span>
|
||||
</div>
|
||||
<div class="bottomEchartsContentDiv left">
|
||||
<div id="serverListenGaugeDiv1" style="width:100%;height:100%;"></div>
|
||||
</div>
|
||||
<div class="bottomEchartsContentDiv left bottomEchartsContentNotLeftDiv">
|
||||
<div id="serverListenGaugeDiv2" style="width:100%;height:100%;"></div>
|
||||
</div>
|
||||
<div class="bottomEchartsContentDiv left bottomEchartsContentNotLeftDiv">
|
||||
<div id="serverListenGaugeDiv3" style="width:100%;height:100%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>--%>
|
||||
</div>
|
||||
<!-- 底部版权-->
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right hidden-xs">
|
||||
<b>Version</b> 20200211
|
||||
</div>
|
||||
<strong>Copyright © 2019-2090 厦门嘉时软件.</strong> All rights
|
||||
reserved.
|
||||
</footer>
|
||||
</div>
|
||||
<script type="text/javascript" src="${path}/static/js/getewayIndex.js?time=2019-12-15"></script>
|
||||
<%@ include file="/WEB-INF/jspf/webSocket.jspf" %>
|
||||
<%--<script src="${path}/static/js/gatewayIndexEcharts.js"></script>--%>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,292 @@
|
||||
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>嘉时软件</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
</head>
|
||||
<script type="text/javascript">
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style>
|
||||
.indexSelected{
|
||||
background-color: #42515F;
|
||||
}
|
||||
.navbar-custom-menu{
|
||||
padding-right:17px;
|
||||
}
|
||||
.hidden-xs{
|
||||
max-width: 200px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.logo{
|
||||
height: 59px!important;
|
||||
}
|
||||
.row-fluid{
|
||||
overflow-y: hidden;
|
||||
}
|
||||
</style>
|
||||
<body class="hold-transition skin-blue sidebar-mini" scroll="no">
|
||||
<input type="hidden" id="userId" value="${CURRENT_USER.userId}">
|
||||
<input type="hidden" id="webSocketUrl" value="${WEBSOCKET_URLHEAD}">
|
||||
<input type="hidden" id="strSplit" value="${STR_SPLIT}">
|
||||
<div class="wrapper">
|
||||
|
||||
<header class="main-header">
|
||||
<!--logo-->
|
||||
<div class="logo">
|
||||
<div class="pull-left info" style="width: 100%">
|
||||
<p>嘉时软件</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="navbar navbar-static-top">
|
||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
</a>
|
||||
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="user user-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="noticeManage1(-1)">
|
||||
<span class="label label-warning" id="noticeCount">0</span>
|
||||
<i class="fa fa-envelope-o" style="font-size: 25px;"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="user user-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<img src="${path}/static/bootstrap-3.3.7/dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.powerDepts == '' || CURRENT_USER.powerDepts == null || CURRENT_USER.powerDepts == 'null'}">
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.name != null && CURRENT_USER.name != '' && CURRENT_USER.name != 'null'}">
|
||||
<p class="hidden-xs" title="${CURRENT_USER.name}">${CURRENT_USER.name}</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="hidden-xs" title="${CURRENT_USER.userName}">${CURRENT_USER.userName}</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${CURRENT_USER.name != null && CURRENT_USER.name != '' && CURRENT_USER.name != 'null'}">
|
||||
<p class="hidden-xs" title="${CURRENT_USER.name}(${CURRENT_USER.powerDepts})">${CURRENT_USER.name}(${CURRENT_USER.powerDepts})</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="hidden-xs" title="${CURRENT_USER.userName}(${CURRENT_USER.powerDepts})">${CURRENT_USER.userName}(${CURRENT_USER.powerDepts})</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="margin">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default">操作</button>
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
|
||||
aria-expanded="false" style="height:34px">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<%--<li><a href="#">帮助</a></li>
|
||||
<li><a href="#">联系我们</a></li>--%>
|
||||
<li><a href="${path}/gatewayPage">返回主页</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="${path}/logout?token=${token}">退出登录</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<aside class="main-sidebar">
|
||||
<section class="sidebar">
|
||||
<!-- 查询菜单列表 -->
|
||||
<!--<form action="#" method="get" class="sidebar-form">
|
||||
<div class="input-group">
|
||||
<input type="text" name="q" class="form-control" placeholder="Search...">
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</form>-->
|
||||
<!-- 菜单列表-->
|
||||
<ul id="indexTreeMenu" class="sidebar-menu" data-widget="tree">
|
||||
<%--<li class="header">菜单列表</li>--%>
|
||||
<%--<li class="active treeview">
|
||||
<a href="#">
|
||||
<i class="fa fa-dashboard"></i> <span>基本功能</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li class="active"><a href="${path}/paper/allPaper" target="iFrame1"><i class="icon-user"></i>测试管理</a>
|
||||
</li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>用户管理</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>角色管理</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>科室管理</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>归属管理</a></li>
|
||||
>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="treeview">
|
||||
<a href="#">
|
||||
<i class="fa fa-circle-o"></i> <span>配置管理</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li class="active"><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>用户分配菜单</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>角色分配菜单</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="treeview">
|
||||
<a href="#">
|
||||
<i class="fa fa-dashboard"></i> <span>维护管理</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li class="active"><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>维护管理</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>使用说明</a></li>
|
||||
<li><a href="${path}/index1.jsp"><i class="fa fa-circle-o"></i>联系我们</a></li>
|
||||
</ul>
|
||||
</li>--%>
|
||||
<!--测试-->
|
||||
<%--<li class="treeview menu-open">
|
||||
<a href="#">
|
||||
<i class="fa fa-share"></i> <span>医院名称</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu" style="display: block;">
|
||||
<li class="treeview">
|
||||
<a href="#"><i class="fa fa-circle-o"></i>基本功能
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="treeview-menu" style="display: block;">
|
||||
<li class="treeview">
|
||||
<a href="#"><i class="fa fa-circle-o"></i>基本功能
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
<li class="treeview menu-open">
|
||||
<a href="#">
|
||||
<i class="fa fa-share"></i> <span>Multilevel</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu" style="display: block;">
|
||||
<li class="treeview menu-open">
|
||||
<a href="#"><i class="fa fa-circle-o"></i> Level One
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu" style="display: block;">
|
||||
<li class="treeview">
|
||||
<a href="#"><i class="fa fa-circle-o"></i> Level Two
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="treeview menu-open">
|
||||
<a href="#"><i class="fa fa-circle-o"></i> Level One
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu" style="display: block;">
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Two</a></li>
|
||||
<li class="treeview">
|
||||
<a href="#"><i class="fa fa-circle-o"></i> Level Two
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
<li><a href="#"><i class="fa fa-circle-o"></i> Level Three</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>--%>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="content-wrapper">
|
||||
<section class="content">
|
||||
<!-- 内容 src="${path}/user/pageUI"-->
|
||||
<div class="page-content-wrapper">
|
||||
<div class="page-content">
|
||||
<div class="container-fluid">
|
||||
<iframe class="row-fluid" style="height:78%;width:100%;" id="iFrame1" name="iFrame1" scrolling="no" frameborder="0"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<!-- 底部版权-->
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right hidden-xs">
|
||||
<b>Version</b> 20200211
|
||||
</div>
|
||||
<strong>Copyright © 2019-2090 厦门嘉时软件.</strong> All rights
|
||||
reserved.
|
||||
</footer>
|
||||
</div>
|
||||
<%@ include file="/WEB-INF/jspf/webSocket.jspf" %>
|
||||
<script type="text/javascript" src="${path}/static/js/menu.js?time=2019-12-15"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>My JSP 'index.jsp' starting page</title>
|
||||
<meta http-equiv="pragma" content="no-cache">
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
<meta http-equiv="expires" content="0">
|
||||
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
|
||||
<meta http-equiv="description" content="This is my page">
|
||||
<link rel="stylesheet" href="${path }/static/css/layui.css" media="all" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- 代码 开始 -->
|
||||
<div >
|
||||
<blockquote class="layui-elem-quote">待开发!</blockquote>
|
||||
</div>
|
||||
<!-- 代码 结束 -->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,151 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>角色菜单权限</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/demo.css" type="text/css">
|
||||
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.all.js"></script>
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.exhide.js"></script>
|
||||
<script>
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.widget-header{
|
||||
height:26px;
|
||||
background-color: #1D9ED7;
|
||||
}
|
||||
.searcDiv{
|
||||
margin-top: 5px;
|
||||
height: 30px;
|
||||
}
|
||||
.form-group{
|
||||
margin-bottom: 0!important;
|
||||
}
|
||||
.form-control{
|
||||
margin: 0 auto;
|
||||
}
|
||||
.treeBtn{
|
||||
margin-top:10px;
|
||||
padding-left:19%;
|
||||
}
|
||||
.btn{
|
||||
margin-left:8%;
|
||||
}
|
||||
.ztree{
|
||||
border: 0px!important;
|
||||
background-color: #fff!important;
|
||||
overflow: auto!important;
|
||||
font-size: 14rem!important;
|
||||
height:75%!important;
|
||||
width: 100%!important;
|
||||
}
|
||||
.zTreeDemo{
|
||||
margin-left:10%;
|
||||
}
|
||||
.buttonDiv{
|
||||
width: 10%;
|
||||
height: 10%;
|
||||
position: fixed;
|
||||
right: 3%;
|
||||
bottom: 10%;
|
||||
}
|
||||
.restore{
|
||||
width:100px!important;
|
||||
}
|
||||
/*h1{
|
||||
margin-left:-80%;
|
||||
}*/
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<%--<div class="row">
|
||||
<h1>
|
||||
授权管理/角色分配菜单
|
||||
</h1>
|
||||
</div>--%>
|
||||
<div class="row">
|
||||
<input type="hidden" id="roleId" name="roleId">
|
||||
<input type="hidden" id="sysFlag" name="sysFlag">
|
||||
<input type="hidden" id="menus" name="menus">
|
||||
<input type="hidden" id="methods">
|
||||
<%--<div class="row">
|
||||
<h1 style="text-align:left">
|
||||
基本管理/用户管理
|
||||
</h1>
|
||||
</div>--%>
|
||||
<!--节点menuId-->
|
||||
<input type="hidden" id="divIndex">
|
||||
<!--角色树-->
|
||||
<div class="col-sm-3">
|
||||
<div class="">
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="searcDiv">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-9 control-label"><input type="text" class="form-control input-sm" id="key" maxlength="16" placeholder="角色名"></label>
|
||||
<div class="col-sm-3">
|
||||
<button type="button" class="btn btn-sm btn-primary left" onclick="reloadTree()">搜索</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="treeBtn">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll();">全部展开</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll();">全部折叠</button>
|
||||
</div>
|
||||
<div class="zTreeDemo">
|
||||
<ul id="ztree" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--菜单树-->
|
||||
<div class="col-sm-3">
|
||||
<div class="">
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="searcDiv">
|
||||
<input type="text" id="key1" value="" class="form-control input-sm"
|
||||
placeholder="菜单名称" maxlength="16" style="width:80%"/><br/>
|
||||
</div>
|
||||
<div class="treeBtn">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll1();">全部展开</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll1();">全部折叠</button>
|
||||
</div>
|
||||
<div class="zTreeDemo">
|
||||
<ul id="ztree1" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--方法区-->
|
||||
<div class="col-sm-6" >
|
||||
<div class="">
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="widget-body">
|
||||
<div class="widget-main">
|
||||
<div id="block">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonDiv">
|
||||
<pm:myPermissions permissions="/menuPower/addRoleMenu">
|
||||
<button type="button" class="btn btn-primary btn-sm restore" onclick="addMenu()">保存</button>
|
||||
</pm:myPermissions>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.main-container -->
|
||||
<script src="${path}/static/js/menu/rolePowerList.js"></script>
|
||||
<script src="${path}/static/js/menu/userAndRoleComment.js"></script>
|
||||
<script src="${path}/static/js/menu/fuzzysearch.js"></script>
|
||||
<%@ include file="/WEB-INF/jspf/loading.jspf" %>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,138 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>用户菜单菜单</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/demo.css" type="text/css">
|
||||
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.all.js"></script>
|
||||
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.exhide.js"></script>
|
||||
<script>
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.widget-header{
|
||||
height:26px;
|
||||
background-color: #1D9ED7;
|
||||
}
|
||||
.searcDiv{
|
||||
margin-top: 5px;
|
||||
height: 30px;
|
||||
}
|
||||
.form-group{
|
||||
margin-bottom: 0!important;
|
||||
}
|
||||
.form-control{
|
||||
margin: 0 auto;
|
||||
}
|
||||
.treeBtn{
|
||||
margin-top:10px;
|
||||
padding-left:19%;
|
||||
}
|
||||
.btn{
|
||||
margin-left:8%;
|
||||
}
|
||||
.ztree{
|
||||
border: 0px!important;
|
||||
background-color: #fff!important;
|
||||
overflow: auto!important;
|
||||
font-size: 14rem!important;
|
||||
height:75%!important;
|
||||
width: 100%!important;
|
||||
}
|
||||
.zTreeDemo{
|
||||
margin-left:10%;
|
||||
}
|
||||
.buttonDiv{
|
||||
width: 10%;
|
||||
height: 10%;
|
||||
position: fixed;
|
||||
right: 3%;
|
||||
bottom: 10%;
|
||||
}
|
||||
.restore{
|
||||
width:100px!important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<input type="hidden" id="userId" name="userId">
|
||||
<input type="hidden" id="sysFlag" name="sysFlag">
|
||||
<input type="hidden" id="menus" name="menus">
|
||||
<input type="hidden" id="methods">
|
||||
<!--节点menuId-->
|
||||
<input type="hidden" id="divIndex">
|
||||
<div class="row">
|
||||
<!--用户树-->
|
||||
<div class="col-sm-3">
|
||||
<div>
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="searcDiv">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-9 control-label"><input type="text" class="form-control input-sm" id="key" maxlength="11" placeholder="工号-姓名"></label>
|
||||
<div class="col-sm-3">
|
||||
<button type="button" class="btn btn-sm btn-primary left" onclick="reloadTree()">搜索</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="treeBtn">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll();">全部展开</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll();">全部折叠</button>
|
||||
</div>
|
||||
<div id="zTreeDemo" class="zTreeDemo">
|
||||
<ul id="ztree" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--菜单树-->
|
||||
<div class="col-sm-3">
|
||||
<div class="">
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="searcDiv">
|
||||
<input type="text" id="key1" value="" class="form-control input-sm"
|
||||
placeholder="菜单名称" maxlength="16" style="width:80%"/>
|
||||
</div>
|
||||
<div class="treeBtn">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll1();">全部展开</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll1();">全部折叠</button>
|
||||
</div>
|
||||
<div class="zTreeDemo">
|
||||
<ul id="ztree1" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--方法区-->
|
||||
<div class="col-sm-6">
|
||||
<div class="">
|
||||
<div class="widget-header">
|
||||
<h2> </h2>
|
||||
</div>
|
||||
<div class="widget-body">
|
||||
<div class="widget-main">
|
||||
<div id="block"></div>
|
||||
</div>
|
||||
<div class="buttonDiv">
|
||||
<pm:myPermissions permissions="/menuPower/addUserMenu">
|
||||
<button type="button" class="btn btn-primary btn-sm restore" onclick="addUserMenu()">保存</button>
|
||||
</pm:myPermissions>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.main-container -->
|
||||
<script src="${path}/static/js/menu/userPowerList.js"></script>
|
||||
<script src="${path}/static/js/menu/userAndRoleComment.js"></script>
|
||||
<script src="${path}/static/js/menu/fuzzysearch.js"></script>
|
||||
<%@ include file="/WEB-INF/jspf/loading.jspf" %>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,155 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<c:set var="path" value="${pageContext.request.contextPath}"/>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>其他管理</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv=X-UA-Compatible IE=EmulateIE7>
|
||||
<!--[if lt IE 9]>
|
||||
<script type="text/javascript" src="${path}/static/js/html5shiv.min.js"></script>
|
||||
<script type="text/javascript" src="${path}/static/js/jquery-1.11.3.min.js"></script>
|
||||
<script type="text/javascript" src="${path}/static/js/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<script>
|
||||
var path = "${path}";
|
||||
</script>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin-right: -15px;
|
||||
margin-bottom: -15px;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
padding: 0 16px;
|
||||
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**搜索区*/
|
||||
.searchDiv {
|
||||
margin-top: 5px;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.dateSearchDiv {
|
||||
width: 29%;
|
||||
}
|
||||
|
||||
.dateSearchInput {
|
||||
width: 30%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.dateLabelDiv {
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.searchInput {
|
||||
width: 19%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.searchElement {
|
||||
width: 42%;
|
||||
}
|
||||
|
||||
.searchInputElement {
|
||||
width: 58%;
|
||||
}
|
||||
|
||||
.labelDiv {
|
||||
padding-top: 3px;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
/**查询按钮组*/
|
||||
.btnsDiv {
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
text-align: right;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
/**表格div*/
|
||||
.tableDiv {
|
||||
margin-left: 14px;
|
||||
margin-top: -9px !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="">
|
||||
<div class="panel-heading"><h4>其他管理/日志管理</h4></div>
|
||||
<hr>
|
||||
<div class="searchDiv">
|
||||
<div class="searchInput left" style="margin-left: 14px">
|
||||
<div class="searchElement left">
|
||||
<label class="labelDiv">日志主题:</label>
|
||||
</div>
|
||||
<div class="searchInputElement left">
|
||||
<input type="text" class="form-control input-sm" id="logTitle">
|
||||
</div>
|
||||
</div>
|
||||
<div class="searchInput left">
|
||||
<div class="searchElement left">
|
||||
<label class="labelDiv">日志内容:</label>
|
||||
</div>
|
||||
<div class="searchInputElement left">
|
||||
<input type="text" class="form-control input-sm" id="logContent">
|
||||
</div>
|
||||
</div>
|
||||
<div class="searchInput left">
|
||||
<div class="searchElement left">
|
||||
<label class="labelDiv">操作人:</label>
|
||||
</div>
|
||||
<div class="searchInputElement left">
|
||||
<input type="text" class="form-control input-sm" id="creater">
|
||||
</div>
|
||||
</div>
|
||||
<div class="dateSearchDiv left">
|
||||
<div class="dateLabelDiv left">
|
||||
<label class="labelDiv">操作时间:</label>
|
||||
</div>
|
||||
<div class="dateSearchInput left">
|
||||
<input type="text" class="form-control input-sm" id="startTime1" placeholder="开始时间">
|
||||
</div>
|
||||
<div class="dateSearchInput left">
|
||||
<input type="text" class="form-control input-sm" id="endTime1" placeholder="结束时间">
|
||||
</div>
|
||||
</div>
|
||||
<div class="left">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="refreshTable()">查询</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnsDiv">
|
||||
<pm:myPermissions permissions="/otherManage/exportExcel">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="exportExcel()"><i class="fa fa-reply"></i>导出
|
||||
</button>
|
||||
</pm:myPermissions>
|
||||
<pm:myPermissions permissions="/otherManage/deleteLogByIds">
|
||||
<button type="button" class="btn btn-sm btn-danger" onclick="deleteLogByIds()">批量删除</button>
|
||||
</pm:myPermissions>
|
||||
</div>
|
||||
<!--数据表格-->
|
||||
<div class="tableDiv">
|
||||
<input type="hidden" id="checks">
|
||||
<table id="bootstrapTable" class="table text-nowrap table-bordered"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="${path}/static/js/otherManage/backupDatabase.js?t=2222"></script>
|
||||
<script type="text/javascript" src="${path}/static/js/dateUtil.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>My JSP 'index.jsp' starting page</title>
|
||||
<meta http-equiv="pragma" content="no-cache">
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
<meta http-equiv="expires" content="0">
|
||||
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
|
||||
<meta http-equiv="description" content="This is my page">
|
||||
<link rel="stylesheet" href="${path }/static/css/layui.css" media="all" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- 代码 开始 -->
|
||||
<div >
|
||||
<blockquote class="layui-elem-quote">您无权访问此位置!</blockquote>
|
||||
</div>
|
||||
<!-- 代码 结束 -->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,59 @@
|
||||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: ljx
|
||||
Date: 2019/5/13
|
||||
Time: 17:02
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>修改密码</title>
|
||||
<%@ include file="/WEB-INF/jspf/common.jspf" %>
|
||||
</head>
|
||||
<body>
|
||||
<form class="form-horizontal" role="form">
|
||||
<fieldset>
|
||||
<legend style="text-align: center;font-weight: bold;font-size: 25px">修改密码</legend>
|
||||
</fieldset>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="userPwd" class="col-sm-2 control-label">旧密码</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" class="form-control" readonly value="${user.userPwd}" id="userPwd"
|
||||
placeholder="请输入旧密码">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="newUserPwd" class="col-sm-2 control-label">密码</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" class="form-control" id="newUserPwd" name="newUserPwd" onblur="AnalyzePasswordSecurityLevel('newUserPwd')"
|
||||
placeholder="请输入新密码" maxlength="16">
|
||||
</div>
|
||||
<div id="newUserPwdText" class="col-sm-2" style="color: red">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="newReUserPwd" class="col-sm-2 control-label">重复密码</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" class="form-control" id="newReUserPwd" onblur="AnalyzePasswordSecurityLevel('newReUserPwd')"
|
||||
placeholder="请输入重复密码" maxlength="16">
|
||||
</div>
|
||||
<div id="newReUserPwdText" class="col-sm-2" style="color: red">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="button" class="btn btn-primary" id="btn_submit">提交更改</button>
|
||||
<button type="button" class="btn btn-default" id="btn_clear">清空</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
</body>
|
||||
<script src="${path}/static/js/updatePassword.js?t=1"></script>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
@ -0,0 +1,95 @@
|
||||
/**
|
||||
* @author: YL
|
||||
* @version: v1.0.0
|
||||
*/
|
||||
!function ($) {
|
||||
'use strict';
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
treeShowField: null,
|
||||
idField: 'id',
|
||||
parentIdField: 'pid',
|
||||
onGetNodes: function (row, data) {
|
||||
var that = this;
|
||||
var nodes = [];
|
||||
$.each(data, function (i, item) {
|
||||
if (row[that.options.idField] === item[that.options.parentIdField]) {
|
||||
nodes.push(item);
|
||||
}
|
||||
});
|
||||
return nodes;
|
||||
},
|
||||
onCheckRoot: function (row, data) {
|
||||
var that = this;
|
||||
return !row[that.options.parentIdField];
|
||||
}
|
||||
});
|
||||
|
||||
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
||||
_initRow = BootstrapTable.prototype.initRow,
|
||||
_initHeader = BootstrapTable.prototype.initHeader;
|
||||
|
||||
// td
|
||||
BootstrapTable.prototype.initHeader = function () {
|
||||
var that = this;
|
||||
_initHeader.apply(that, Array.prototype.slice.apply(arguments));
|
||||
var treeShowField = that.options.treeShowField;
|
||||
if (treeShowField) {
|
||||
$.each(this.header.fields, function (i, field) {
|
||||
if (treeShowField === field) {
|
||||
that.treeEnable = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var initTr = function (item, idx, data, parentDom) {
|
||||
var that = this;
|
||||
var nodes = that.options.onGetNodes.apply(that, [item, data]);
|
||||
item._nodes = nodes;
|
||||
parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]));
|
||||
|
||||
// init sub node
|
||||
var len = nodes.length - 1;
|
||||
for (var i = 0; i <= len; i++) {
|
||||
var node = nodes[i];
|
||||
node._level = item._level + 1;
|
||||
node._parent = item;
|
||||
if (i === len)
|
||||
node._last = 1;
|
||||
// jquery.treegrid.js
|
||||
that.options.rowStyle = function (item, idx) {
|
||||
var id = item[that.options.idField] ? item[that.options.idField] : 0;
|
||||
var pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0;
|
||||
return {
|
||||
classes: 'treegrid-' + id + ' treegrid-parent-' + pid
|
||||
};
|
||||
};
|
||||
initTr.apply(that, [node, $.inArray(node, data), data, parentDom]);
|
||||
}
|
||||
};
|
||||
|
||||
// tr
|
||||
BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
|
||||
var that = this;
|
||||
if (that.treeEnable) {
|
||||
// init root node
|
||||
if (that.options.onCheckRoot.apply(that, [item, data])) {
|
||||
if (item._level === undefined) {
|
||||
item._level = 0;
|
||||
}
|
||||
// jquery.treegrid.js
|
||||
that.options.rowStyle = function (item, idx) {
|
||||
var x = item[that.options.idField] ? item[that.options.idField] : 0;
|
||||
return {
|
||||
classes: 'treegrid-' + x
|
||||
};
|
||||
};
|
||||
initTr.apply(that, [item, idx, data, parentDom]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return _initRow.apply(that, Array.prototype.slice.apply(arguments));
|
||||
};
|
||||
}(jQuery);
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,40 @@
|
||||
{
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"builder",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"version": "2.0.1",
|
||||
"name": "Ionicons",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
"Ben Sperry <ben@drifty.com>",
|
||||
"Adam Bradley <adam@drifty.com>",
|
||||
"Max Lynch <max@drifty.com>"
|
||||
],
|
||||
"keywords": [
|
||||
"fonts",
|
||||
"icon font",
|
||||
"icons",
|
||||
"ionic",
|
||||
"web font"
|
||||
],
|
||||
"main": [
|
||||
"css/ionicons.css",
|
||||
"fonts/*"
|
||||
],
|
||||
"homepage": "https://github.com/driftyco/ionicons",
|
||||
"description": "Ionicons - free and beautiful icons from the creators of Ionic Framework",
|
||||
"_release": "2.0.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v2.0.1",
|
||||
"commit": "ecb4b806831005c25b97ed9089fbb1d7dcc0879c"
|
||||
},
|
||||
"_source": "https://github.com/driftyco/ionicons.git",
|
||||
"_target": "^2.0.1",
|
||||
"_originalSource": "ionicons"
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Drifty (http://drifty.com/)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -0,0 +1,31 @@
|
||||
{
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"builder",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"version": "2.0.0",
|
||||
"name": "Ionicons",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
"Ben Sperry <ben@drifty.com>",
|
||||
"Adam Bradley <adam@drifty.com>",
|
||||
"Max Lynch <max@drifty.com>"
|
||||
],
|
||||
"keywords": [
|
||||
"fonts",
|
||||
"icon font",
|
||||
"icons",
|
||||
"ionic",
|
||||
"web font"
|
||||
],
|
||||
"main": [
|
||||
"css/ionicons.css",
|
||||
"fonts/*"
|
||||
],
|
||||
"homepage": "https://github.com/driftyco/ionicons",
|
||||
"description": "Ionicons - free and beautiful icons from the creators of Ionic Framework"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,19 @@
|
||||
{
|
||||
"repo": "driftyco/ionicons",
|
||||
"development": {},
|
||||
"version": "2.0.0",
|
||||
"styles": [
|
||||
"css/ionicons.css"
|
||||
],
|
||||
"name": "Ionicons",
|
||||
"dependencies": {},
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"fonts": [
|
||||
"fonts/ionicons.eot",
|
||||
"fonts/ionicons.svg",
|
||||
"fonts/ionicons.ttf",
|
||||
"fonts/ionicons.woff"
|
||||
],
|
||||
"description": "The premium icon font for Ionic Framework."
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "driftyco/ionicons",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"extra": {},
|
||||
"authors": [
|
||||
{
|
||||
"homepage": "https://twitter.com/benjsperry",
|
||||
"role": "Designer",
|
||||
"name": "Ben Sperry",
|
||||
"email": "ben@drifty.com"
|
||||
},
|
||||
{
|
||||
"homepage": "https://twitter.com/adamdbradley",
|
||||
"role": "Developer",
|
||||
"name": "Adam Bradley",
|
||||
"email": "adam@drifty.com"
|
||||
},
|
||||
{
|
||||
"homepage": "https://twitter.com/maxlynch",
|
||||
"role": "Developer",
|
||||
"name": "Max Lynch",
|
||||
"email": "max@drifty.com"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"fonts",
|
||||
"icon font",
|
||||
"icons",
|
||||
"ionic",
|
||||
"web font"
|
||||
],
|
||||
"homepage": "http://ionicons.com/",
|
||||
"description": "The premium icon font for Ionic Framework."
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 326 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,27 @@
|
||||
// Ionicons Font Path
|
||||
// --------------------------
|
||||
|
||||
@font-face {
|
||||
font-family: @ionicons-font-family;
|
||||
src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}");
|
||||
src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}#iefix") format("embedded-opentype"),
|
||||
url("@{ionicons-font-path}/ionicons.ttf?v=@{ionicons-version}") format("truetype"),
|
||||
url("@{ionicons-font-path}/ionicons.woff?v=@{ionicons-version}") format("woff"),
|
||||
url("@{ionicons-font-path}/ionicons.svg?v=@{ionicons-version}#Ionicons") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.ion {
|
||||
display: inline-block;
|
||||
font-family: @ionicons-font-family;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,747 @@
|
||||
/*!
|
||||
Ionicons, v2.0.0
|
||||
Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
|
||||
https://twitter.com/benjsperry https://twitter.com/ionicframework
|
||||
MIT License: https://github.com/driftyco/ionicons
|
||||
*/
|
||||
// Ionicons Variables
|
||||
// --------------------------
|
||||
|
||||
@ionicons-font-path: "../fonts";
|
||||
@ionicons-font-family: "Ionicons";
|
||||
@ionicons-version: "2.0.0";
|
||||
@ionicons-prefix: ion-;
|
||||
|
||||
@ionicon-var-alert: "\f101";
|
||||
@ionicon-var-alert-circled: "\f100";
|
||||
@ionicon-var-android-add: "\f2c7";
|
||||
@ionicon-var-android-add-circle: "\f359";
|
||||
@ionicon-var-android-alarm-clock: "\f35a";
|
||||
@ionicon-var-android-alert: "\f35b";
|
||||
@ionicon-var-android-apps: "\f35c";
|
||||
@ionicon-var-android-archive: "\f2c9";
|
||||
@ionicon-var-android-arrow-back: "\f2ca";
|
||||
@ionicon-var-android-arrow-down: "\f35d";
|
||||
@ionicon-var-android-arrow-dropdown: "\f35f";
|
||||
@ionicon-var-android-arrow-dropdown-circle: "\f35e";
|
||||
@ionicon-var-android-arrow-dropleft: "\f361";
|
||||
@ionicon-var-android-arrow-dropleft-circle: "\f360";
|
||||
@ionicon-var-android-arrow-dropright: "\f363";
|
||||
@ionicon-var-android-arrow-dropright-circle: "\f362";
|
||||
@ionicon-var-android-arrow-dropup: "\f365";
|
||||
@ionicon-var-android-arrow-dropup-circle: "\f364";
|
||||
@ionicon-var-android-arrow-forward: "\f30f";
|
||||
@ionicon-var-android-arrow-up: "\f366";
|
||||
@ionicon-var-android-attach: "\f367";
|
||||
@ionicon-var-android-bar: "\f368";
|
||||
@ionicon-var-android-bicycle: "\f369";
|
||||
@ionicon-var-android-boat: "\f36a";
|
||||
@ionicon-var-android-bookmark: "\f36b";
|
||||
@ionicon-var-android-bulb: "\f36c";
|
||||
@ionicon-var-android-bus: "\f36d";
|
||||
@ionicon-var-android-calendar: "\f2d1";
|
||||
@ionicon-var-android-call: "\f2d2";
|
||||
@ionicon-var-android-camera: "\f2d3";
|
||||
@ionicon-var-android-cancel: "\f36e";
|
||||
@ionicon-var-android-car: "\f36f";
|
||||
@ionicon-var-android-cart: "\f370";
|
||||
@ionicon-var-android-chat: "\f2d4";
|
||||
@ionicon-var-android-checkbox: "\f374";
|
||||
@ionicon-var-android-checkbox-blank: "\f371";
|
||||
@ionicon-var-android-checkbox-outline: "\f373";
|
||||
@ionicon-var-android-checkbox-outline-blank: "\f372";
|
||||
@ionicon-var-android-checkmark-circle: "\f375";
|
||||
@ionicon-var-android-clipboard: "\f376";
|
||||
@ionicon-var-android-close: "\f2d7";
|
||||
@ionicon-var-android-cloud: "\f37a";
|
||||
@ionicon-var-android-cloud-circle: "\f377";
|
||||
@ionicon-var-android-cloud-done: "\f378";
|
||||
@ionicon-var-android-cloud-outline: "\f379";
|
||||
@ionicon-var-android-color-palette: "\f37b";
|
||||
@ionicon-var-android-compass: "\f37c";
|
||||
@ionicon-var-android-contact: "\f2d8";
|
||||
@ionicon-var-android-contacts: "\f2d9";
|
||||
@ionicon-var-android-contract: "\f37d";
|
||||
@ionicon-var-android-create: "\f37e";
|
||||
@ionicon-var-android-delete: "\f37f";
|
||||
@ionicon-var-android-desktop: "\f380";
|
||||
@ionicon-var-android-document: "\f381";
|
||||
@ionicon-var-android-done: "\f383";
|
||||
@ionicon-var-android-done-all: "\f382";
|
||||
@ionicon-var-android-download: "\f2dd";
|
||||
@ionicon-var-android-drafts: "\f384";
|
||||
@ionicon-var-android-exit: "\f385";
|
||||
@ionicon-var-android-expand: "\f386";
|
||||
@ionicon-var-android-favorite: "\f388";
|
||||
@ionicon-var-android-favorite-outline: "\f387";
|
||||
@ionicon-var-android-film: "\f389";
|
||||
@ionicon-var-android-folder: "\f2e0";
|
||||
@ionicon-var-android-folder-open: "\f38a";
|
||||
@ionicon-var-android-funnel: "\f38b";
|
||||
@ionicon-var-android-globe: "\f38c";
|
||||
@ionicon-var-android-hand: "\f2e3";
|
||||
@ionicon-var-android-hangout: "\f38d";
|
||||
@ionicon-var-android-happy: "\f38e";
|
||||
@ionicon-var-android-home: "\f38f";
|
||||
@ionicon-var-android-image: "\f2e4";
|
||||
@ionicon-var-android-laptop: "\f390";
|
||||
@ionicon-var-android-list: "\f391";
|
||||
@ionicon-var-android-locate: "\f2e9";
|
||||
@ionicon-var-android-lock: "\f392";
|
||||
@ionicon-var-android-mail: "\f2eb";
|
||||
@ionicon-var-android-map: "\f393";
|
||||
@ionicon-var-android-menu: "\f394";
|
||||
@ionicon-var-android-microphone: "\f2ec";
|
||||
@ionicon-var-android-microphone-off: "\f395";
|
||||
@ionicon-var-android-more-horizontal: "\f396";
|
||||
@ionicon-var-android-more-vertical: "\f397";
|
||||
@ionicon-var-android-navigate: "\f398";
|
||||
@ionicon-var-android-notifications: "\f39b";
|
||||
@ionicon-var-android-notifications-none: "\f399";
|
||||
@ionicon-var-android-notifications-off: "\f39a";
|
||||
@ionicon-var-android-open: "\f39c";
|
||||
@ionicon-var-android-options: "\f39d";
|
||||
@ionicon-var-android-people: "\f39e";
|
||||
@ionicon-var-android-person: "\f3a0";
|
||||
@ionicon-var-android-person-add: "\f39f";
|
||||
@ionicon-var-android-phone-landscape: "\f3a1";
|
||||
@ionicon-var-android-phone-portrait: "\f3a2";
|
||||
@ionicon-var-android-pin: "\f3a3";
|
||||
@ionicon-var-android-plane: "\f3a4";
|
||||
@ionicon-var-android-playstore: "\f2f0";
|
||||
@ionicon-var-android-print: "\f3a5";
|
||||
@ionicon-var-android-radio-button-off: "\f3a6";
|
||||
@ionicon-var-android-radio-button-on: "\f3a7";
|
||||
@ionicon-var-android-refresh: "\f3a8";
|
||||
@ionicon-var-android-remove: "\f2f4";
|
||||
@ionicon-var-android-remove-circle: "\f3a9";
|
||||
@ionicon-var-android-restaurant: "\f3aa";
|
||||
@ionicon-var-android-sad: "\f3ab";
|
||||
@ionicon-var-android-search: "\f2f5";
|
||||
@ionicon-var-android-send: "\f2f6";
|
||||
@ionicon-var-android-settings: "\f2f7";
|
||||
@ionicon-var-android-share: "\f2f8";
|
||||
@ionicon-var-android-share-alt: "\f3ac";
|
||||
@ionicon-var-android-star: "\f2fc";
|
||||
@ionicon-var-android-star-half: "\f3ad";
|
||||
@ionicon-var-android-star-outline: "\f3ae";
|
||||
@ionicon-var-android-stopwatch: "\f2fd";
|
||||
@ionicon-var-android-subway: "\f3af";
|
||||
@ionicon-var-android-sunny: "\f3b0";
|
||||
@ionicon-var-android-sync: "\f3b1";
|
||||
@ionicon-var-android-textsms: "\f3b2";
|
||||
@ionicon-var-android-time: "\f3b3";
|
||||
@ionicon-var-android-train: "\f3b4";
|
||||
@ionicon-var-android-unlock: "\f3b5";
|
||||
@ionicon-var-android-upload: "\f3b6";
|
||||
@ionicon-var-android-volume-down: "\f3b7";
|
||||
@ionicon-var-android-volume-mute: "\f3b8";
|
||||
@ionicon-var-android-volume-off: "\f3b9";
|
||||
@ionicon-var-android-volume-up: "\f3ba";
|
||||
@ionicon-var-android-walk: "\f3bb";
|
||||
@ionicon-var-android-warning: "\f3bc";
|
||||
@ionicon-var-android-watch: "\f3bd";
|
||||
@ionicon-var-android-wifi: "\f305";
|
||||
@ionicon-var-aperture: "\f313";
|
||||
@ionicon-var-archive: "\f102";
|
||||
@ionicon-var-arrow-down-a: "\f103";
|
||||
@ionicon-var-arrow-down-b: "\f104";
|
||||
@ionicon-var-arrow-down-c: "\f105";
|
||||
@ionicon-var-arrow-expand: "\f25e";
|
||||
@ionicon-var-arrow-graph-down-left: "\f25f";
|
||||
@ionicon-var-arrow-graph-down-right: "\f260";
|
||||
@ionicon-var-arrow-graph-up-left: "\f261";
|
||||
@ionicon-var-arrow-graph-up-right: "\f262";
|
||||
@ionicon-var-arrow-left-a: "\f106";
|
||||
@ionicon-var-arrow-left-b: "\f107";
|
||||
@ionicon-var-arrow-left-c: "\f108";
|
||||
@ionicon-var-arrow-move: "\f263";
|
||||
@ionicon-var-arrow-resize: "\f264";
|
||||
@ionicon-var-arrow-return-left: "\f265";
|
||||
@ionicon-var-arrow-return-right: "\f266";
|
||||
@ionicon-var-arrow-right-a: "\f109";
|
||||
@ionicon-var-arrow-right-b: "\f10a";
|
||||
@ionicon-var-arrow-right-c: "\f10b";
|
||||
@ionicon-var-arrow-shrink: "\f267";
|
||||
@ionicon-var-arrow-swap: "\f268";
|
||||
@ionicon-var-arrow-up-a: "\f10c";
|
||||
@ionicon-var-arrow-up-b: "\f10d";
|
||||
@ionicon-var-arrow-up-c: "\f10e";
|
||||
@ionicon-var-asterisk: "\f314";
|
||||
@ionicon-var-at: "\f10f";
|
||||
@ionicon-var-backspace: "\f3bf";
|
||||
@ionicon-var-backspace-outline: "\f3be";
|
||||
@ionicon-var-bag: "\f110";
|
||||
@ionicon-var-battery-charging: "\f111";
|
||||
@ionicon-var-battery-empty: "\f112";
|
||||
@ionicon-var-battery-full: "\f113";
|
||||
@ionicon-var-battery-half: "\f114";
|
||||
@ionicon-var-battery-low: "\f115";
|
||||
@ionicon-var-beaker: "\f269";
|
||||
@ionicon-var-beer: "\f26a";
|
||||
@ionicon-var-bluetooth: "\f116";
|
||||
@ionicon-var-bonfire: "\f315";
|
||||
@ionicon-var-bookmark: "\f26b";
|
||||
@ionicon-var-bowtie: "\f3c0";
|
||||
@ionicon-var-briefcase: "\f26c";
|
||||
@ionicon-var-bug: "\f2be";
|
||||
@ionicon-var-calculator: "\f26d";
|
||||
@ionicon-var-calendar: "\f117";
|
||||
@ionicon-var-camera: "\f118";
|
||||
@ionicon-var-card: "\f119";
|
||||
@ionicon-var-cash: "\f316";
|
||||
@ionicon-var-chatbox: "\f11b";
|
||||
@ionicon-var-chatbox-working: "\f11a";
|
||||
@ionicon-var-chatboxes: "\f11c";
|
||||
@ionicon-var-chatbubble: "\f11e";
|
||||
@ionicon-var-chatbubble-working: "\f11d";
|
||||
@ionicon-var-chatbubbles: "\f11f";
|
||||
@ionicon-var-checkmark: "\f122";
|
||||
@ionicon-var-checkmark-circled: "\f120";
|
||||
@ionicon-var-checkmark-round: "\f121";
|
||||
@ionicon-var-chevron-down: "\f123";
|
||||
@ionicon-var-chevron-left: "\f124";
|
||||
@ionicon-var-chevron-right: "\f125";
|
||||
@ionicon-var-chevron-up: "\f126";
|
||||
@ionicon-var-clipboard: "\f127";
|
||||
@ionicon-var-clock: "\f26e";
|
||||
@ionicon-var-close: "\f12a";
|
||||
@ionicon-var-close-circled: "\f128";
|
||||
@ionicon-var-close-round: "\f129";
|
||||
@ionicon-var-closed-captioning: "\f317";
|
||||
@ionicon-var-cloud: "\f12b";
|
||||
@ionicon-var-code: "\f271";
|
||||
@ionicon-var-code-download: "\f26f";
|
||||
@ionicon-var-code-working: "\f270";
|
||||
@ionicon-var-coffee: "\f272";
|
||||
@ionicon-var-compass: "\f273";
|
||||
@ionicon-var-compose: "\f12c";
|
||||
@ionicon-var-connection-bars: "\f274";
|
||||
@ionicon-var-contrast: "\f275";
|
||||
@ionicon-var-crop: "\f3c1";
|
||||
@ionicon-var-cube: "\f318";
|
||||
@ionicon-var-disc: "\f12d";
|
||||
@ionicon-var-document: "\f12f";
|
||||
@ionicon-var-document-text: "\f12e";
|
||||
@ionicon-var-drag: "\f130";
|
||||
@ionicon-var-earth: "\f276";
|
||||
@ionicon-var-easel: "\f3c2";
|
||||
@ionicon-var-edit: "\f2bf";
|
||||
@ionicon-var-egg: "\f277";
|
||||
@ionicon-var-eject: "\f131";
|
||||
@ionicon-var-email: "\f132";
|
||||
@ionicon-var-email-unread: "\f3c3";
|
||||
@ionicon-var-erlenmeyer-flask: "\f3c5";
|
||||
@ionicon-var-erlenmeyer-flask-bubbles: "\f3c4";
|
||||
@ionicon-var-eye: "\f133";
|
||||
@ionicon-var-eye-disabled: "\f306";
|
||||
@ionicon-var-female: "\f278";
|
||||
@ionicon-var-filing: "\f134";
|
||||
@ionicon-var-film-marker: "\f135";
|
||||
@ionicon-var-fireball: "\f319";
|
||||
@ionicon-var-flag: "\f279";
|
||||
@ionicon-var-flame: "\f31a";
|
||||
@ionicon-var-flash: "\f137";
|
||||
@ionicon-var-flash-off: "\f136";
|
||||
@ionicon-var-folder: "\f139";
|
||||
@ionicon-var-fork: "\f27a";
|
||||
@ionicon-var-fork-repo: "\f2c0";
|
||||
@ionicon-var-forward: "\f13a";
|
||||
@ionicon-var-funnel: "\f31b";
|
||||
@ionicon-var-gear-a: "\f13d";
|
||||
@ionicon-var-gear-b: "\f13e";
|
||||
@ionicon-var-grid: "\f13f";
|
||||
@ionicon-var-hammer: "\f27b";
|
||||
@ionicon-var-happy: "\f31c";
|
||||
@ionicon-var-happy-outline: "\f3c6";
|
||||
@ionicon-var-headphone: "\f140";
|
||||
@ionicon-var-heart: "\f141";
|
||||
@ionicon-var-heart-broken: "\f31d";
|
||||
@ionicon-var-help: "\f143";
|
||||
@ionicon-var-help-buoy: "\f27c";
|
||||
@ionicon-var-help-circled: "\f142";
|
||||
@ionicon-var-home: "\f144";
|
||||
@ionicon-var-icecream: "\f27d";
|
||||
@ionicon-var-image: "\f147";
|
||||
@ionicon-var-images: "\f148";
|
||||
@ionicon-var-information: "\f14a";
|
||||
@ionicon-var-information-circled: "\f149";
|
||||
@ionicon-var-ionic: "\f14b";
|
||||
@ionicon-var-ios-alarm: "\f3c8";
|
||||
@ionicon-var-ios-alarm-outline: "\f3c7";
|
||||
@ionicon-var-ios-albums: "\f3ca";
|
||||
@ionicon-var-ios-albums-outline: "\f3c9";
|
||||
@ionicon-var-ios-americanfootball: "\f3cc";
|
||||
@ionicon-var-ios-americanfootball-outline: "\f3cb";
|
||||
@ionicon-var-ios-analytics: "\f3ce";
|
||||
@ionicon-var-ios-analytics-outline: "\f3cd";
|
||||
@ionicon-var-ios-arrow-back: "\f3cf";
|
||||
@ionicon-var-ios-arrow-down: "\f3d0";
|
||||
@ionicon-var-ios-arrow-forward: "\f3d1";
|
||||
@ionicon-var-ios-arrow-left: "\f3d2";
|
||||
@ionicon-var-ios-arrow-right: "\f3d3";
|
||||
@ionicon-var-ios-arrow-thin-down: "\f3d4";
|
||||
@ionicon-var-ios-arrow-thin-left: "\f3d5";
|
||||
@ionicon-var-ios-arrow-thin-right: "\f3d6";
|
||||
@ionicon-var-ios-arrow-thin-up: "\f3d7";
|
||||
@ionicon-var-ios-arrow-up: "\f3d8";
|
||||
@ionicon-var-ios-at: "\f3da";
|
||||
@ionicon-var-ios-at-outline: "\f3d9";
|
||||
@ionicon-var-ios-barcode: "\f3dc";
|
||||
@ionicon-var-ios-barcode-outline: "\f3db";
|
||||
@ionicon-var-ios-baseball: "\f3de";
|
||||
@ionicon-var-ios-baseball-outline: "\f3dd";
|
||||
@ionicon-var-ios-basketball: "\f3e0";
|
||||
@ionicon-var-ios-basketball-outline: "\f3df";
|
||||
@ionicon-var-ios-bell: "\f3e2";
|
||||
@ionicon-var-ios-bell-outline: "\f3e1";
|
||||
@ionicon-var-ios-body: "\f3e4";
|
||||
@ionicon-var-ios-body-outline: "\f3e3";
|
||||
@ionicon-var-ios-bolt: "\f3e6";
|
||||
@ionicon-var-ios-bolt-outline: "\f3e5";
|
||||
@ionicon-var-ios-book: "\f3e8";
|
||||
@ionicon-var-ios-book-outline: "\f3e7";
|
||||
@ionicon-var-ios-bookmarks: "\f3ea";
|
||||
@ionicon-var-ios-bookmarks-outline: "\f3e9";
|
||||
@ionicon-var-ios-box: "\f3ec";
|
||||
@ionicon-var-ios-box-outline: "\f3eb";
|
||||
@ionicon-var-ios-briefcase: "\f3ee";
|
||||
@ionicon-var-ios-briefcase-outline: "\f3ed";
|
||||
@ionicon-var-ios-browsers: "\f3f0";
|
||||
@ionicon-var-ios-browsers-outline: "\f3ef";
|
||||
@ionicon-var-ios-calculator: "\f3f2";
|
||||
@ionicon-var-ios-calculator-outline: "\f3f1";
|
||||
@ionicon-var-ios-calendar: "\f3f4";
|
||||
@ionicon-var-ios-calendar-outline: "\f3f3";
|
||||
@ionicon-var-ios-camera: "\f3f6";
|
||||
@ionicon-var-ios-camera-outline: "\f3f5";
|
||||
@ionicon-var-ios-cart: "\f3f8";
|
||||
@ionicon-var-ios-cart-outline: "\f3f7";
|
||||
@ionicon-var-ios-chatboxes: "\f3fa";
|
||||
@ionicon-var-ios-chatboxes-outline: "\f3f9";
|
||||
@ionicon-var-ios-chatbubble: "\f3fc";
|
||||
@ionicon-var-ios-chatbubble-outline: "\f3fb";
|
||||
@ionicon-var-ios-checkmark: "\f3ff";
|
||||
@ionicon-var-ios-checkmark-empty: "\f3fd";
|
||||
@ionicon-var-ios-checkmark-outline: "\f3fe";
|
||||
@ionicon-var-ios-circle-filled: "\f400";
|
||||
@ionicon-var-ios-circle-outline: "\f401";
|
||||
@ionicon-var-ios-clock: "\f403";
|
||||
@ionicon-var-ios-clock-outline: "\f402";
|
||||
@ionicon-var-ios-close: "\f406";
|
||||
@ionicon-var-ios-close-empty: "\f404";
|
||||
@ionicon-var-ios-close-outline: "\f405";
|
||||
@ionicon-var-ios-cloud: "\f40c";
|
||||
@ionicon-var-ios-cloud-download: "\f408";
|
||||
@ionicon-var-ios-cloud-download-outline: "\f407";
|
||||
@ionicon-var-ios-cloud-outline: "\f409";
|
||||
@ionicon-var-ios-cloud-upload: "\f40b";
|
||||
@ionicon-var-ios-cloud-upload-outline: "\f40a";
|
||||
@ionicon-var-ios-cloudy: "\f410";
|
||||
@ionicon-var-ios-cloudy-night: "\f40e";
|
||||
@ionicon-var-ios-cloudy-night-outline: "\f40d";
|
||||
@ionicon-var-ios-cloudy-outline: "\f40f";
|
||||
@ionicon-var-ios-cog: "\f412";
|
||||
@ionicon-var-ios-cog-outline: "\f411";
|
||||
@ionicon-var-ios-color-filter: "\f414";
|
||||
@ionicon-var-ios-color-filter-outline: "\f413";
|
||||
@ionicon-var-ios-color-wand: "\f416";
|
||||
@ionicon-var-ios-color-wand-outline: "\f415";
|
||||
@ionicon-var-ios-compose: "\f418";
|
||||
@ionicon-var-ios-compose-outline: "\f417";
|
||||
@ionicon-var-ios-contact: "\f41a";
|
||||
@ionicon-var-ios-contact-outline: "\f419";
|
||||
@ionicon-var-ios-copy: "\f41c";
|
||||
@ionicon-var-ios-copy-outline: "\f41b";
|
||||
@ionicon-var-ios-crop: "\f41e";
|
||||
@ionicon-var-ios-crop-strong: "\f41d";
|
||||
@ionicon-var-ios-download: "\f420";
|
||||
@ionicon-var-ios-download-outline: "\f41f";
|
||||
@ionicon-var-ios-drag: "\f421";
|
||||
@ionicon-var-ios-email: "\f423";
|
||||
@ionicon-var-ios-email-outline: "\f422";
|
||||
@ionicon-var-ios-eye: "\f425";
|
||||
@ionicon-var-ios-eye-outline: "\f424";
|
||||
@ionicon-var-ios-fastforward: "\f427";
|
||||
@ionicon-var-ios-fastforward-outline: "\f426";
|
||||
@ionicon-var-ios-filing: "\f429";
|
||||
@ionicon-var-ios-filing-outline: "\f428";
|
||||
@ionicon-var-ios-film: "\f42b";
|
||||
@ionicon-var-ios-film-outline: "\f42a";
|
||||
@ionicon-var-ios-flag: "\f42d";
|
||||
@ionicon-var-ios-flag-outline: "\f42c";
|
||||
@ionicon-var-ios-flame: "\f42f";
|
||||
@ionicon-var-ios-flame-outline: "\f42e";
|
||||
@ionicon-var-ios-flask: "\f431";
|
||||
@ionicon-var-ios-flask-outline: "\f430";
|
||||
@ionicon-var-ios-flower: "\f433";
|
||||
@ionicon-var-ios-flower-outline: "\f432";
|
||||
@ionicon-var-ios-folder: "\f435";
|
||||
@ionicon-var-ios-folder-outline: "\f434";
|
||||
@ionicon-var-ios-football: "\f437";
|
||||
@ionicon-var-ios-football-outline: "\f436";
|
||||
@ionicon-var-ios-game-controller-a: "\f439";
|
||||
@ionicon-var-ios-game-controller-a-outline: "\f438";
|
||||
@ionicon-var-ios-game-controller-b: "\f43b";
|
||||
@ionicon-var-ios-game-controller-b-outline: "\f43a";
|
||||
@ionicon-var-ios-gear: "\f43d";
|
||||
@ionicon-var-ios-gear-outline: "\f43c";
|
||||
@ionicon-var-ios-glasses: "\f43f";
|
||||
@ionicon-var-ios-glasses-outline: "\f43e";
|
||||
@ionicon-var-ios-grid-view: "\f441";
|
||||
@ionicon-var-ios-grid-view-outline: "\f440";
|
||||
@ionicon-var-ios-heart: "\f443";
|
||||
@ionicon-var-ios-heart-outline: "\f442";
|
||||
@ionicon-var-ios-help: "\f446";
|
||||
@ionicon-var-ios-help-empty: "\f444";
|
||||
@ionicon-var-ios-help-outline: "\f445";
|
||||
@ionicon-var-ios-home: "\f448";
|
||||
@ionicon-var-ios-home-outline: "\f447";
|
||||
@ionicon-var-ios-infinite: "\f44a";
|
||||
@ionicon-var-ios-infinite-outline: "\f449";
|
||||
@ionicon-var-ios-information: "\f44d";
|
||||
@ionicon-var-ios-information-empty: "\f44b";
|
||||
@ionicon-var-ios-information-outline: "\f44c";
|
||||
@ionicon-var-ios-ionic-outline: "\f44e";
|
||||
@ionicon-var-ios-keypad: "\f450";
|
||||
@ionicon-var-ios-keypad-outline: "\f44f";
|
||||
@ionicon-var-ios-lightbulb: "\f452";
|
||||
@ionicon-var-ios-lightbulb-outline: "\f451";
|
||||
@ionicon-var-ios-list: "\f454";
|
||||
@ionicon-var-ios-list-outline: "\f453";
|
||||
@ionicon-var-ios-location: "\f456";
|
||||
@ionicon-var-ios-location-outline: "\f455";
|
||||
@ionicon-var-ios-locked: "\f458";
|
||||
@ionicon-var-ios-locked-outline: "\f457";
|
||||
@ionicon-var-ios-loop: "\f45a";
|
||||
@ionicon-var-ios-loop-strong: "\f459";
|
||||
@ionicon-var-ios-medical: "\f45c";
|
||||
@ionicon-var-ios-medical-outline: "\f45b";
|
||||
@ionicon-var-ios-medkit: "\f45e";
|
||||
@ionicon-var-ios-medkit-outline: "\f45d";
|
||||
@ionicon-var-ios-mic: "\f461";
|
||||
@ionicon-var-ios-mic-off: "\f45f";
|
||||
@ionicon-var-ios-mic-outline: "\f460";
|
||||
@ionicon-var-ios-minus: "\f464";
|
||||
@ionicon-var-ios-minus-empty: "\f462";
|
||||
@ionicon-var-ios-minus-outline: "\f463";
|
||||
@ionicon-var-ios-monitor: "\f466";
|
||||
@ionicon-var-ios-monitor-outline: "\f465";
|
||||
@ionicon-var-ios-moon: "\f468";
|
||||
@ionicon-var-ios-moon-outline: "\f467";
|
||||
@ionicon-var-ios-more: "\f46a";
|
||||
@ionicon-var-ios-more-outline: "\f469";
|
||||
@ionicon-var-ios-musical-note: "\f46b";
|
||||
@ionicon-var-ios-musical-notes: "\f46c";
|
||||
@ionicon-var-ios-navigate: "\f46e";
|
||||
@ionicon-var-ios-navigate-outline: "\f46d";
|
||||
@ionicon-var-ios-nutrition: "\f470";
|
||||
@ionicon-var-ios-nutrition-outline: "\f46f";
|
||||
@ionicon-var-ios-paper: "\f472";
|
||||
@ionicon-var-ios-paper-outline: "\f471";
|
||||
@ionicon-var-ios-paperplane: "\f474";
|
||||
@ionicon-var-ios-paperplane-outline: "\f473";
|
||||
@ionicon-var-ios-partlysunny: "\f476";
|
||||
@ionicon-var-ios-partlysunny-outline: "\f475";
|
||||
@ionicon-var-ios-pause: "\f478";
|
||||
@ionicon-var-ios-pause-outline: "\f477";
|
||||
@ionicon-var-ios-paw: "\f47a";
|
||||
@ionicon-var-ios-paw-outline: "\f479";
|
||||
@ionicon-var-ios-people: "\f47c";
|
||||
@ionicon-var-ios-people-outline: "\f47b";
|
||||
@ionicon-var-ios-person: "\f47e";
|
||||
@ionicon-var-ios-person-outline: "\f47d";
|
||||
@ionicon-var-ios-personadd: "\f480";
|
||||
@ionicon-var-ios-personadd-outline: "\f47f";
|
||||
@ionicon-var-ios-photos: "\f482";
|
||||
@ionicon-var-ios-photos-outline: "\f481";
|
||||
@ionicon-var-ios-pie: "\f484";
|
||||
@ionicon-var-ios-pie-outline: "\f483";
|
||||
@ionicon-var-ios-pint: "\f486";
|
||||
@ionicon-var-ios-pint-outline: "\f485";
|
||||
@ionicon-var-ios-play: "\f488";
|
||||
@ionicon-var-ios-play-outline: "\f487";
|
||||
@ionicon-var-ios-plus: "\f48b";
|
||||
@ionicon-var-ios-plus-empty: "\f489";
|
||||
@ionicon-var-ios-plus-outline: "\f48a";
|
||||
@ionicon-var-ios-pricetag: "\f48d";
|
||||
@ionicon-var-ios-pricetag-outline: "\f48c";
|
||||
@ionicon-var-ios-pricetags: "\f48f";
|
||||
@ionicon-var-ios-pricetags-outline: "\f48e";
|
||||
@ionicon-var-ios-printer: "\f491";
|
||||
@ionicon-var-ios-printer-outline: "\f490";
|
||||
@ionicon-var-ios-pulse: "\f493";
|
||||
@ionicon-var-ios-pulse-strong: "\f492";
|
||||
@ionicon-var-ios-rainy: "\f495";
|
||||
@ionicon-var-ios-rainy-outline: "\f494";
|
||||
@ionicon-var-ios-recording: "\f497";
|
||||
@ionicon-var-ios-recording-outline: "\f496";
|
||||
@ionicon-var-ios-redo: "\f499";
|
||||
@ionicon-var-ios-redo-outline: "\f498";
|
||||
@ionicon-var-ios-refresh: "\f49c";
|
||||
@ionicon-var-ios-refresh-empty: "\f49a";
|
||||
@ionicon-var-ios-refresh-outline: "\f49b";
|
||||
@ionicon-var-ios-reload: "\f49d";
|
||||
@ionicon-var-ios-reverse-camera: "\f49f";
|
||||
@ionicon-var-ios-reverse-camera-outline: "\f49e";
|
||||
@ionicon-var-ios-rewind: "\f4a1";
|
||||
@ionicon-var-ios-rewind-outline: "\f4a0";
|
||||
@ionicon-var-ios-rose: "\f4a3";
|
||||
@ionicon-var-ios-rose-outline: "\f4a2";
|
||||
@ionicon-var-ios-search: "\f4a5";
|
||||
@ionicon-var-ios-search-strong: "\f4a4";
|
||||
@ionicon-var-ios-settings: "\f4a7";
|
||||
@ionicon-var-ios-settings-strong: "\f4a6";
|
||||
@ionicon-var-ios-shuffle: "\f4a9";
|
||||
@ionicon-var-ios-shuffle-strong: "\f4a8";
|
||||
@ionicon-var-ios-skipbackward: "\f4ab";
|
||||
@ionicon-var-ios-skipbackward-outline: "\f4aa";
|
||||
@ionicon-var-ios-skipforward: "\f4ad";
|
||||
@ionicon-var-ios-skipforward-outline: "\f4ac";
|
||||
@ionicon-var-ios-snowy: "\f4ae";
|
||||
@ionicon-var-ios-speedometer: "\f4b0";
|
||||
@ionicon-var-ios-speedometer-outline: "\f4af";
|
||||
@ionicon-var-ios-star: "\f4b3";
|
||||
@ionicon-var-ios-star-half: "\f4b1";
|
||||
@ionicon-var-ios-star-outline: "\f4b2";
|
||||
@ionicon-var-ios-stopwatch: "\f4b5";
|
||||
@ionicon-var-ios-stopwatch-outline: "\f4b4";
|
||||
@ionicon-var-ios-sunny: "\f4b7";
|
||||
@ionicon-var-ios-sunny-outline: "\f4b6";
|
||||
@ionicon-var-ios-telephone: "\f4b9";
|
||||
@ionicon-var-ios-telephone-outline: "\f4b8";
|
||||
@ionicon-var-ios-tennisball: "\f4bb";
|
||||
@ionicon-var-ios-tennisball-outline: "\f4ba";
|
||||
@ionicon-var-ios-thunderstorm: "\f4bd";
|
||||
@ionicon-var-ios-thunderstorm-outline: "\f4bc";
|
||||
@ionicon-var-ios-time: "\f4bf";
|
||||
@ionicon-var-ios-time-outline: "\f4be";
|
||||
@ionicon-var-ios-timer: "\f4c1";
|
||||
@ionicon-var-ios-timer-outline: "\f4c0";
|
||||
@ionicon-var-ios-toggle: "\f4c3";
|
||||
@ionicon-var-ios-toggle-outline: "\f4c2";
|
||||
@ionicon-var-ios-trash: "\f4c5";
|
||||
@ionicon-var-ios-trash-outline: "\f4c4";
|
||||
@ionicon-var-ios-undo: "\f4c7";
|
||||
@ionicon-var-ios-undo-outline: "\f4c6";
|
||||
@ionicon-var-ios-unlocked: "\f4c9";
|
||||
@ionicon-var-ios-unlocked-outline: "\f4c8";
|
||||
@ionicon-var-ios-upload: "\f4cb";
|
||||
@ionicon-var-ios-upload-outline: "\f4ca";
|
||||
@ionicon-var-ios-videocam: "\f4cd";
|
||||
@ionicon-var-ios-videocam-outline: "\f4cc";
|
||||
@ionicon-var-ios-volume-high: "\f4ce";
|
||||
@ionicon-var-ios-volume-low: "\f4cf";
|
||||
@ionicon-var-ios-wineglass: "\f4d1";
|
||||
@ionicon-var-ios-wineglass-outline: "\f4d0";
|
||||
@ionicon-var-ios-world: "\f4d3";
|
||||
@ionicon-var-ios-world-outline: "\f4d2";
|
||||
@ionicon-var-ipad: "\f1f9";
|
||||
@ionicon-var-iphone: "\f1fa";
|
||||
@ionicon-var-ipod: "\f1fb";
|
||||
@ionicon-var-jet: "\f295";
|
||||
@ionicon-var-key: "\f296";
|
||||
@ionicon-var-knife: "\f297";
|
||||
@ionicon-var-laptop: "\f1fc";
|
||||
@ionicon-var-leaf: "\f1fd";
|
||||
@ionicon-var-levels: "\f298";
|
||||
@ionicon-var-lightbulb: "\f299";
|
||||
@ionicon-var-link: "\f1fe";
|
||||
@ionicon-var-load-a: "\f29a";
|
||||
@ionicon-var-load-b: "\f29b";
|
||||
@ionicon-var-load-c: "\f29c";
|
||||
@ionicon-var-load-d: "\f29d";
|
||||
@ionicon-var-location: "\f1ff";
|
||||
@ionicon-var-lock-combination: "\f4d4";
|
||||
@ionicon-var-locked: "\f200";
|
||||
@ionicon-var-log-in: "\f29e";
|
||||
@ionicon-var-log-out: "\f29f";
|
||||
@ionicon-var-loop: "\f201";
|
||||
@ionicon-var-magnet: "\f2a0";
|
||||
@ionicon-var-male: "\f2a1";
|
||||
@ionicon-var-man: "\f202";
|
||||
@ionicon-var-map: "\f203";
|
||||
@ionicon-var-medkit: "\f2a2";
|
||||
@ionicon-var-merge: "\f33f";
|
||||
@ionicon-var-mic-a: "\f204";
|
||||
@ionicon-var-mic-b: "\f205";
|
||||
@ionicon-var-mic-c: "\f206";
|
||||
@ionicon-var-minus: "\f209";
|
||||
@ionicon-var-minus-circled: "\f207";
|
||||
@ionicon-var-minus-round: "\f208";
|
||||
@ionicon-var-model-s: "\f2c1";
|
||||
@ionicon-var-monitor: "\f20a";
|
||||
@ionicon-var-more: "\f20b";
|
||||
@ionicon-var-mouse: "\f340";
|
||||
@ionicon-var-music-note: "\f20c";
|
||||
@ionicon-var-navicon: "\f20e";
|
||||
@ionicon-var-navicon-round: "\f20d";
|
||||
@ionicon-var-navigate: "\f2a3";
|
||||
@ionicon-var-network: "\f341";
|
||||
@ionicon-var-no-smoking: "\f2c2";
|
||||
@ionicon-var-nuclear: "\f2a4";
|
||||
@ionicon-var-outlet: "\f342";
|
||||
@ionicon-var-paintbrush: "\f4d5";
|
||||
@ionicon-var-paintbucket: "\f4d6";
|
||||
@ionicon-var-paper-airplane: "\f2c3";
|
||||
@ionicon-var-paperclip: "\f20f";
|
||||
@ionicon-var-pause: "\f210";
|
||||
@ionicon-var-person: "\f213";
|
||||
@ionicon-var-person-add: "\f211";
|
||||
@ionicon-var-person-stalker: "\f212";
|
||||
@ionicon-var-pie-graph: "\f2a5";
|
||||
@ionicon-var-pin: "\f2a6";
|
||||
@ionicon-var-pinpoint: "\f2a7";
|
||||
@ionicon-var-pizza: "\f2a8";
|
||||
@ionicon-var-plane: "\f214";
|
||||
@ionicon-var-planet: "\f343";
|
||||
@ionicon-var-play: "\f215";
|
||||
@ionicon-var-playstation: "\f30a";
|
||||
@ionicon-var-plus: "\f218";
|
||||
@ionicon-var-plus-circled: "\f216";
|
||||
@ionicon-var-plus-round: "\f217";
|
||||
@ionicon-var-podium: "\f344";
|
||||
@ionicon-var-pound: "\f219";
|
||||
@ionicon-var-power: "\f2a9";
|
||||
@ionicon-var-pricetag: "\f2aa";
|
||||
@ionicon-var-pricetags: "\f2ab";
|
||||
@ionicon-var-printer: "\f21a";
|
||||
@ionicon-var-pull-request: "\f345";
|
||||
@ionicon-var-qr-scanner: "\f346";
|
||||
@ionicon-var-quote: "\f347";
|
||||
@ionicon-var-radio-waves: "\f2ac";
|
||||
@ionicon-var-record: "\f21b";
|
||||
@ionicon-var-refresh: "\f21c";
|
||||
@ionicon-var-reply: "\f21e";
|
||||
@ionicon-var-reply-all: "\f21d";
|
||||
@ionicon-var-ribbon-a: "\f348";
|
||||
@ionicon-var-ribbon-b: "\f349";
|
||||
@ionicon-var-sad: "\f34a";
|
||||
@ionicon-var-sad-outline: "\f4d7";
|
||||
@ionicon-var-scissors: "\f34b";
|
||||
@ionicon-var-search: "\f21f";
|
||||
@ionicon-var-settings: "\f2ad";
|
||||
@ionicon-var-share: "\f220";
|
||||
@ionicon-var-shuffle: "\f221";
|
||||
@ionicon-var-skip-backward: "\f222";
|
||||
@ionicon-var-skip-forward: "\f223";
|
||||
@ionicon-var-social-android: "\f225";
|
||||
@ionicon-var-social-android-outline: "\f224";
|
||||
@ionicon-var-social-angular: "\f4d9";
|
||||
@ionicon-var-social-angular-outline: "\f4d8";
|
||||
@ionicon-var-social-apple: "\f227";
|
||||
@ionicon-var-social-apple-outline: "\f226";
|
||||
@ionicon-var-social-bitcoin: "\f2af";
|
||||
@ionicon-var-social-bitcoin-outline: "\f2ae";
|
||||
@ionicon-var-social-buffer: "\f229";
|
||||
@ionicon-var-social-buffer-outline: "\f228";
|
||||
@ionicon-var-social-chrome: "\f4db";
|
||||
@ionicon-var-social-chrome-outline: "\f4da";
|
||||
@ionicon-var-social-codepen: "\f4dd";
|
||||
@ionicon-var-social-codepen-outline: "\f4dc";
|
||||
@ionicon-var-social-css3: "\f4df";
|
||||
@ionicon-var-social-css3-outline: "\f4de";
|
||||
@ionicon-var-social-designernews: "\f22b";
|
||||
@ionicon-var-social-designernews-outline: "\f22a";
|
||||
@ionicon-var-social-dribbble: "\f22d";
|
||||
@ionicon-var-social-dribbble-outline: "\f22c";
|
||||
@ionicon-var-social-dropbox: "\f22f";
|
||||
@ionicon-var-social-dropbox-outline: "\f22e";
|
||||
@ionicon-var-social-euro: "\f4e1";
|
||||
@ionicon-var-social-euro-outline: "\f4e0";
|
||||
@ionicon-var-social-facebook: "\f231";
|
||||
@ionicon-var-social-facebook-outline: "\f230";
|
||||
@ionicon-var-social-foursquare: "\f34d";
|
||||
@ionicon-var-social-foursquare-outline: "\f34c";
|
||||
@ionicon-var-social-freebsd-devil: "\f2c4";
|
||||
@ionicon-var-social-github: "\f233";
|
||||
@ionicon-var-social-github-outline: "\f232";
|
||||
@ionicon-var-social-google: "\f34f";
|
||||
@ionicon-var-social-google-outline: "\f34e";
|
||||
@ionicon-var-social-googleplus: "\f235";
|
||||
@ionicon-var-social-googleplus-outline: "\f234";
|
||||
@ionicon-var-social-hackernews: "\f237";
|
||||
@ionicon-var-social-hackernews-outline: "\f236";
|
||||
@ionicon-var-social-html5: "\f4e3";
|
||||
@ionicon-var-social-html5-outline: "\f4e2";
|
||||
@ionicon-var-social-instagram: "\f351";
|
||||
@ionicon-var-social-instagram-outline: "\f350";
|
||||
@ionicon-var-social-javascript: "\f4e5";
|
||||
@ionicon-var-social-javascript-outline: "\f4e4";
|
||||
@ionicon-var-social-linkedin: "\f239";
|
||||
@ionicon-var-social-linkedin-outline: "\f238";
|
||||
@ionicon-var-social-markdown: "\f4e6";
|
||||
@ionicon-var-social-nodejs: "\f4e7";
|
||||
@ionicon-var-social-octocat: "\f4e8";
|
||||
@ionicon-var-social-pinterest: "\f2b1";
|
||||
@ionicon-var-social-pinterest-outline: "\f2b0";
|
||||
@ionicon-var-social-python: "\f4e9";
|
||||
@ionicon-var-social-reddit: "\f23b";
|
||||
@ionicon-var-social-reddit-outline: "\f23a";
|
||||
@ionicon-var-social-rss: "\f23d";
|
||||
@ionicon-var-social-rss-outline: "\f23c";
|
||||
@ionicon-var-social-sass: "\f4ea";
|
||||
@ionicon-var-social-skype: "\f23f";
|
||||
@ionicon-var-social-skype-outline: "\f23e";
|
||||
@ionicon-var-social-snapchat: "\f4ec";
|
||||
@ionicon-var-social-snapchat-outline: "\f4eb";
|
||||
@ionicon-var-social-tumblr: "\f241";
|
||||
@ionicon-var-social-tumblr-outline: "\f240";
|
||||
@ionicon-var-social-tux: "\f2c5";
|
||||
@ionicon-var-social-twitch: "\f4ee";
|
||||
@ionicon-var-social-twitch-outline: "\f4ed";
|
||||
@ionicon-var-social-twitter: "\f243";
|
||||
@ionicon-var-social-twitter-outline: "\f242";
|
||||
@ionicon-var-social-usd: "\f353";
|
||||
@ionicon-var-social-usd-outline: "\f352";
|
||||
@ionicon-var-social-vimeo: "\f245";
|
||||
@ionicon-var-social-vimeo-outline: "\f244";
|
||||
@ionicon-var-social-whatsapp: "\f4f0";
|
||||
@ionicon-var-social-whatsapp-outline: "\f4ef";
|
||||
@ionicon-var-social-windows: "\f247";
|
||||
@ionicon-var-social-windows-outline: "\f246";
|
||||
@ionicon-var-social-wordpress: "\f249";
|
||||
@ionicon-var-social-wordpress-outline: "\f248";
|
||||
@ionicon-var-social-yahoo: "\f24b";
|
||||
@ionicon-var-social-yahoo-outline: "\f24a";
|
||||
@ionicon-var-social-yen: "\f4f2";
|
||||
@ionicon-var-social-yen-outline: "\f4f1";
|
||||
@ionicon-var-social-youtube: "\f24d";
|
||||
@ionicon-var-social-youtube-outline: "\f24c";
|
||||
@ionicon-var-soup-can: "\f4f4";
|
||||
@ionicon-var-soup-can-outline: "\f4f3";
|
||||
@ionicon-var-speakerphone: "\f2b2";
|
||||
@ionicon-var-speedometer: "\f2b3";
|
||||
@ionicon-var-spoon: "\f2b4";
|
||||
@ionicon-var-star: "\f24e";
|
||||
@ionicon-var-stats-bars: "\f2b5";
|
||||
@ionicon-var-steam: "\f30b";
|
||||
@ionicon-var-stop: "\f24f";
|
||||
@ionicon-var-thermometer: "\f2b6";
|
||||
@ionicon-var-thumbsdown: "\f250";
|
||||
@ionicon-var-thumbsup: "\f251";
|
||||
@ionicon-var-toggle: "\f355";
|
||||
@ionicon-var-toggle-filled: "\f354";
|
||||
@ionicon-var-transgender: "\f4f5";
|
||||
@ionicon-var-trash-a: "\f252";
|
||||
@ionicon-var-trash-b: "\f253";
|
||||
@ionicon-var-trophy: "\f356";
|
||||
@ionicon-var-tshirt: "\f4f7";
|
||||
@ionicon-var-tshirt-outline: "\f4f6";
|
||||
@ionicon-var-umbrella: "\f2b7";
|
||||
@ionicon-var-university: "\f357";
|
||||
@ionicon-var-unlocked: "\f254";
|
||||
@ionicon-var-upload: "\f255";
|
||||
@ionicon-var-usb: "\f2b8";
|
||||
@ionicon-var-videocamera: "\f256";
|
||||
@ionicon-var-volume-high: "\f257";
|
||||
@ionicon-var-volume-low: "\f258";
|
||||
@ionicon-var-volume-medium: "\f259";
|
||||
@ionicon-var-volume-mute: "\f25a";
|
||||
@ionicon-var-wand: "\f358";
|
||||
@ionicon-var-waterdrop: "\f25b";
|
||||
@ionicon-var-wifi: "\f25c";
|
||||
@ionicon-var-wineglass: "\f2b9";
|
||||
@ionicon-var-woman: "\f25d";
|
||||
@ionicon-var-wrench: "\f2ba";
|
||||
@ionicon-var-xbox: "\f30c";
|
@ -0,0 +1,3 @@
|
||||
@import "_ionicons-variables";
|
||||
@import "_ionicons-font";
|
||||
@import "_ionicons-icons";
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 766 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue