@ -0,0 +1,3 @@
|
||||
/target/
|
||||
/.idea/
|
||||
*.iml
|
||||
@ -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,338 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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.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){
|
||||
ExceptionPrintUtil.printException(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 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){
|
||||
ExceptionPrintUtil.printException(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 powerDept = powerDeptService.selectByPrimaryKey(deptId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerDept;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(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) throws Exception{
|
||||
List<Power_Dept> powerDept = powerDeptService.checkDeptName(deptName,dictId);
|
||||
if(powerDept != null && !powerDept.isEmpty()){
|
||||
return Msg.fail("科室名已存在");
|
||||
}else{
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @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 (Power_DeptVo powerDeptVo : list) {
|
||||
hospitalMap.put(powerDeptVo.getDictId(), powerDeptVo.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 (Power_DeptVo powerDeptVo : list) {
|
||||
if (entry.getKey().equals(powerDeptVo.getDictId())) {
|
||||
PowerTree tree2 = new PowerTree();
|
||||
tree2.setId(id);
|
||||
tree2.setSelfId(powerDeptVo.getDeptId());
|
||||
tree2.setName(powerDeptVo.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){
|
||||
ExceptionPrintUtil.printException(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) throws Exception{
|
||||
List<Power_Dept> powerDeptList = powerDeptService.checkDeptName(powerDept.getDeptName(),powerDept.getDictId());
|
||||
if(null == powerDeptList || powerDeptList.isEmpty()){
|
||||
powerDeptService.insertSelective(powerDept);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}else{
|
||||
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) throws Exception{
|
||||
List<Power_Dept> powerDeptList = powerDeptService.checkDeptName(powerDept.getDeptName(),powerDept.getDictId());
|
||||
if(null != powerDeptList && !powerDeptList.isEmpty() && !powerDeptList.get(0).getDeptId().equals(powerDept.getDeptId())){
|
||||
return Msg.fail("科室名已存在!");
|
||||
}else{
|
||||
powerDeptService.updateByPrimaryKeySelective(powerDept,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @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) throws Exception{
|
||||
CacheManager.addExcCount("noExc");
|
||||
powerDeptService.deleteByPrimaryKey(deptId);
|
||||
return Msg.success();
|
||||
}
|
||||
/**
|
||||
* @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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Date 2019-08-06
|
||||
* @Author zengwenhe
|
||||
* @Description 根据医院查询科室
|
||||
* */
|
||||
@RequestMapping("/selectDeptByDictId")
|
||||
@ResponseBody
|
||||
public Msg selectDeptByDictId(Integer dictId) throws Exception{
|
||||
List<Power_DeptVo> depts = powerDeptService.selectDeptByDictId(dictId,null);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("depts",depts);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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){
|
||||
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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
//抛异常
|
||||
return new ResponseEntity<String>(e.getMessage(), responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
/**
|
||||
* @ProjectName:
|
||||
* @Description:
|
||||
* @Param 传输参数
|
||||
* @Return
|
||||
* @Author: 曾文和
|
||||
* @CreateDate: 2020/6/10 10:59
|
||||
* @UpdateUser: 曾文和
|
||||
* @UpdateDate: 2020/6/10 10:59
|
||||
* @UpdateRemark: 更新说明
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class ExceptionUtils {
|
||||
public static String getExceptionStr(Exception e){
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
e.printStackTrace(new PrintStream(baos));
|
||||
return baos.toString();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.service.cache.CacheManager;
|
||||
import com.manage.service.ImportExcel.ImportExcelUtil;
|
||||
import com.manage.util.ExceptionPrintUtil;
|
||||
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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if(os != null){
|
||||
try {
|
||||
os.close();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,590 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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.util.CollectionUtils;
|
||||
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.GET)
|
||||
@ResponseBody
|
||||
public Msg getMenusByUserIdAndSysFlag(String userName,String sysFlag,Integer userId,Integer roleId,Integer sysId,Integer hospitalId) throws Exception{
|
||||
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> powerUsers = userMapper.checkUserName(userName);
|
||||
if(null != powerUsers && !powerUsers.isEmpty()){
|
||||
if(powerUsers.get(0).getRoleId().equals(0) || powerUsers.get(0).getRoleId().equals(-100)){
|
||||
roleId = powerUsers.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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
List<Power_Notice> list = powerNoticeMapper.selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(userId, roleId, sysId, sysFlag);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("list",list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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){
|
||||
ExceptionPrintUtil.printException(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){
|
||||
ExceptionPrintUtil.printException(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) throws Exception{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
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已过期或不存在");
|
||||
}
|
||||
//更新过期时间
|
||||
Power_UserVo user = (Power_UserVo) cache.getValue();
|
||||
String date = String.valueOf(DateUtils.getDate());
|
||||
CacheManager.putCache(token,new Cache(date,user,TOKEN_EXPIRE_TIME));
|
||||
}else{
|
||||
return Msg.fail("token不能为空");
|
||||
}
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
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已失效");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
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 (Power_Menu powerMenu : list) {
|
||||
User_Dept_Menu deptMenu = new User_Dept_Menu();
|
||||
String menuUrl = powerMenu.getMenuUrl();
|
||||
if (StringUtils.isNotBlank(menuUrl)) {
|
||||
BeanUtils.copyProperties(powerMenu, deptMenu);
|
||||
deptMenu.setMethodParent(powerMenu.getParentId());
|
||||
menuList.add(deptMenu);
|
||||
}
|
||||
if (StringUtils.isNotBlank(powerMenu.getMethod())) {
|
||||
menus.add(powerMenu.getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
userVo.setMenuList(menuList);
|
||||
userVo.setMenus(menus);
|
||||
|
||||
//设置科室
|
||||
StringBuilder powerDepts = new StringBuilder();
|
||||
List<Power_Dept> powerDeptList = power_deptService.selectByPrimaryKeys(userVo.getDeptId());
|
||||
for(int j = 0;j < powerDeptList.size();j++){
|
||||
if(j<powerDeptList.size()-1){
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName()).append(",");
|
||||
}else{
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName());
|
||||
}
|
||||
}
|
||||
userVo.setRemark(powerDepts.toString());
|
||||
//移除缓存
|
||||
CacheManager.removeCacheByObject(userVo);
|
||||
CacheManager.putCache(date,new Cache(date,userVo,TOKEN_EXPIRE_TIME));
|
||||
return Msg.success().add("token",token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 不需密码
|
||||
* @param userName
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "getToken1",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg getToken1(String userName) throws Exception{
|
||||
if(StringUtils.isBlank(userName)){
|
||||
return Msg.fail("用户名不能为空");
|
||||
}
|
||||
List<Power_User> powerUsers = userService.checkUserName(userName);
|
||||
if(CollectionUtils.isEmpty(powerUsers)){
|
||||
return Msg.fail("用户名不正确");
|
||||
}
|
||||
String date = String.valueOf(DateUtils.getDate());
|
||||
String token = Base64.encode(MD5.KL(date));
|
||||
Power_UserVo userVo = new Power_UserVo();
|
||||
BeanUtils.copyProperties(powerUsers.get(0),userVo);
|
||||
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 (Power_Menu powerMenu : list) {
|
||||
User_Dept_Menu deptMenu = new User_Dept_Menu();
|
||||
String menuUrl = powerMenu.getMenuUrl();
|
||||
if (StringUtils.isNotBlank(menuUrl)) {
|
||||
BeanUtils.copyProperties(powerMenu, deptMenu);
|
||||
deptMenu.setMethodParent(powerMenu.getParentId());
|
||||
menuList.add(deptMenu);
|
||||
}
|
||||
if (StringUtils.isNotBlank(powerMenu.getMethod())) {
|
||||
menus.add(powerMenu.getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
userVo.setMenuList(menuList);
|
||||
userVo.setMenus(menus);
|
||||
|
||||
//设置科室
|
||||
StringBuilder powerDepts = new StringBuilder();
|
||||
if(StringUtils.isNotBlank(userVo.getDeptId())) {
|
||||
List<Power_Dept> powerDeptList = power_deptService.selectByPrimaryKeys(userVo.getDeptId());
|
||||
for (int j = 0; j < powerDeptList.size(); j++) {
|
||||
if (j < powerDeptList.size() - 1) {
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName()).append(",");
|
||||
} else {
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName());
|
||||
}
|
||||
}
|
||||
userVo.setRemark(powerDepts.toString());
|
||||
}
|
||||
//移除缓存
|
||||
CacheManager.removeCacheByObject(userVo);
|
||||
CacheManager.putCache(date,new Cache(date,userVo,TOKEN_EXPIRE_TIME));
|
||||
return Msg.success().add("token",token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) throws Exception{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) throws Exception{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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){
|
||||
ExceptionPrintUtil.printException(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,171 @@
|
||||
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 (Power_Menu powerMenu : list) {
|
||||
User_Dept_Menu deptMenu = new User_Dept_Menu();
|
||||
String menuUrl = powerMenu.getMenuUrl();
|
||||
if (StringUtils.isNotBlank(menuUrl)) {
|
||||
BeanUtils.copyProperties(powerMenu, deptMenu);
|
||||
deptMenu.setMethodParent(powerMenu.getParentId());
|
||||
menuList.add(deptMenu);
|
||||
}
|
||||
if (StringUtils.isNotBlank(powerMenu.getMethod())) {
|
||||
menus.add(powerMenu.getMenuUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
user.setMenuList(menuList);
|
||||
user.setMenus(menus);
|
||||
|
||||
//设置科室
|
||||
StringBuilder powerDepts = new StringBuilder();
|
||||
List<Power_Dept> powerDeptList = power_deptService.selectByPrimaryKeys(user.getDeptId());
|
||||
for(int j=0;j<powerDeptList.size();j++){
|
||||
if(j<powerDeptList.size()-1){
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName()).append(",");
|
||||
}else{
|
||||
powerDepts.append(powerDeptList.get(j).getDeptName());
|
||||
}
|
||||
}
|
||||
user.setRemark(powerDepts.toString());
|
||||
|
||||
//设置进缓存
|
||||
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){
|
||||
ExceptionPrintUtil.printException(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,343 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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;
|
||||
@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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
return "redirect:login";
|
||||
}
|
||||
@RequestMapping(value = "index")
|
||||
public String index(Model model,HttpServletRequest request){
|
||||
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());
|
||||
//查询系统权限
|
||||
List<Power_Sys_Dict> sysList = new ArrayList<>();
|
||||
try {
|
||||
logService.insert(log);
|
||||
//修改该通知为已读
|
||||
if(null != noticeId && noticeId != -1){
|
||||
powerNoticeService.updateNoticeReadFlag(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
}
|
||||
//查询当前用户
|
||||
Power_UserVo user = (Power_UserVo)request.getSession().getAttribute("CURRENT_USER");
|
||||
if(user.getRoleId() == 0){
|
||||
sysList = sysDictMapper.selectSysFlagsByUserId(null,null);
|
||||
}else{
|
||||
sysList = sysDictMapper.selectSysFlagsByUserId(user.getUserId(),user.getRoleId());
|
||||
}
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
e.printStackTrace();
|
||||
CacheManager.addExcCount("exc");
|
||||
}
|
||||
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 (Power_Sys_Dict powerSysDict : sysList) {
|
||||
String sysFlag = powerSysDict.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");
|
||||
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,213 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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.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(){
|
||||
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()){
|
||||
int 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){
|
||||
ExceptionPrintUtil.printException(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) throws Exception{
|
||||
logService.deleteLogById(logId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) throws Exception{
|
||||
String[] idList = ids.split(",");
|
||||
StringBuilder str = new StringBuilder();
|
||||
for (int i = 0; i < idList.length; i++) {
|
||||
if(StringUtils.isNoneBlank(idList[i])){
|
||||
if(i != idList.length - 1){
|
||||
str.append(idList[i]).append(",");
|
||||
}else{
|
||||
str.append(idList[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
logService.deleteLogByIds(str.toString());
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* @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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package com.manage.controller;
|
||||
|
||||
import com.manage.entity.Power_Menu;
|
||||
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 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.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() throws Exception{
|
||||
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);
|
||||
|
||||
/*
|
||||
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,239 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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){
|
||||
ExceptionPrintUtil.printException(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(){
|
||||
List<Power_Menu> menus = new ArrayList<>();
|
||||
Power_Menu menu = new Power_Menu();
|
||||
menu.setMenuId(0);
|
||||
menu.setMenuName("菜单列表");
|
||||
menus.add(menu);
|
||||
List<Power_Menu> menus1 = null;
|
||||
try {
|
||||
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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkMenuName")
|
||||
@ResponseBody
|
||||
public Msg checkMenuName(String sysFlag,String menuName) throws Exception{
|
||||
List<Power_Menu> menus = menuService.checkMenuNameBySysId(sysFlag,menuName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != menus && !menus.isEmpty()){
|
||||
return Msg.fail();
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkMethodName")
|
||||
@ResponseBody
|
||||
public Msg checkMethodName(Integer parentId,String methodName,String method) throws Exception{
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequiresPermissions(value="/menu/update")
|
||||
@RequestMapping(value="update",method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Msg addMenu(Power_Menu menu,String sysName) throws Exception{
|
||||
if(StringUtils.isNotBlank(menu.getMenuUrl())){
|
||||
if(!menu.getMenuUrl().contains("/") && !"#".equals(menu.getMenuUrl())){
|
||||
return Msg.fail("菜单地址必须包含斜杠/,建目录必须为单个字符#");
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
@RequiresPermissions(value="/menu/delete")
|
||||
@RequestMapping("delete/{menuId}")
|
||||
@ResponseBody
|
||||
public Msg delMenu(@PathVariable("menuId")Integer menuId) throws Exception{
|
||||
menuService.deleteMenuByMenuId(menuId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,221 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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){
|
||||
try {
|
||||
noticeService.loadSys(request,model);
|
||||
} catch (Exception e) {
|
||||
ExceptionPrintUtil.printException(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
model.addAttribute("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> powerNotices = 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);
|
||||
powerNotices = this.noticeMapper.selectALlByPower(null,null,notice);
|
||||
}else{
|
||||
getTatal = this.noticeMapper.getTotal(user.getRoleId(),user.getUserId(),notice);
|
||||
powerNotices = this.noticeMapper.selectALlByPower(user.getRoleId(),user.getUserId(),notice);
|
||||
}
|
||||
pageHelper.setTotal(getTatal.size());
|
||||
//查询当前页实体对象
|
||||
pageHelper.setRows(powerNotices);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return pageHelper;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "checkTypeSysFlagOrTypeSysName")
|
||||
@ResponseBody
|
||||
public Msg checkTypeSysFlag(String noticeTypeFlag,String noticeTypeName) throws Exception{
|
||||
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("查询出错,请联系系统管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "update")
|
||||
@ResponseBody
|
||||
public Msg udpate(Power_Notice powerNotice,HttpServletRequest request) throws Exception{
|
||||
//保存类别
|
||||
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();
|
||||
}
|
||||
|
||||
@OptionalLog(module = "删除",methods = "通知管理",fieldName = "noticeContent",fieldName1="noticeTypeName",tableName = "power_notice")
|
||||
@RequestMapping(value = "delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer noticeId) throws Exception{
|
||||
noticeService.delete(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
|
||||
/************************************************通知操作***************************************************/
|
||||
@RequestMapping(value = "getUserNameListByNoticeTypeId")
|
||||
@ResponseBody
|
||||
public Msg getUserNameListByNoticeTypeId(Integer noticeTypeId, HttpServletRequest request) throws Exception{
|
||||
List<Power_UserVo> userList = noticeService.getUserNameListByNoticeTypeId(noticeTypeId, request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("userList",userList);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "selectNoticeByNoticeId")
|
||||
@ResponseBody
|
||||
public Msg selectNoticeByNoticeId(Integer noticeId) throws Exception{
|
||||
Power_Notice powerNotice = noticeMapper.selectByPrimaryKey(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("powerNotice",powerNotice);
|
||||
}
|
||||
|
||||
@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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "updateNoticeReadFlag")
|
||||
@ResponseBody
|
||||
public Msg updateNoticeReadFlag(Integer noticeId) throws Exception{
|
||||
noticeService.updateNoticeReadFlag(noticeId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) throws Exception{
|
||||
//获取登录者信息
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,350 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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> powerSysDicts = powerSysDictService.selectHosList(request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerSysDicts;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/selectList")
|
||||
@ResponseBody
|
||||
public List<Power_Sys_Dict> selectList(){
|
||||
try {
|
||||
List<Power_Sys_Dict> powerSysDicts = powerSysDictService.selectList();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerSysDicts;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/selectDict")
|
||||
@ResponseBody
|
||||
public Power_Sys_Dict selectDict(Integer dictId){
|
||||
try {
|
||||
Power_Sys_Dict powerSysDict = powerSysDictService.selectByPrimaryKey(dictId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerSysDict;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@RequestMapping("/checkHospitalName")
|
||||
@ResponseBody
|
||||
public Msg checkHospitalName(String hospitalName) throws Exception{
|
||||
Power_Sys_DictVo dictVo = powerSysDictService.checkHospitalName(hospitalName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(dictVo != null){
|
||||
return Msg.fail("医院名称已存在");
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresPermissions(value="/dict/add")
|
||||
@RequestMapping("/add")
|
||||
@ResponseBody
|
||||
public Msg add(Power_Sys_DictVo powerSysDict, HttpServletRequest request) throws Exception{
|
||||
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 (Power_Sys_Dict flagExist1 : flagExists) {
|
||||
if (!flagExist1.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 (Power_Sys_Dict sysNameExist1 : sysNameExists) {
|
||||
if (!sysNameExist1.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());
|
||||
}
|
||||
}
|
||||
@RequiresPermissions(value="/dict/update")
|
||||
@RequestMapping("/update")
|
||||
@ResponseBody
|
||||
public Msg update(@RequestBody Power_Sys_Dict powerSysDict, HttpServletRequest request) throws Exception{
|
||||
powerSysDictService.updateByPrimaryKeySelective(powerSysDict,request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
@RequiresPermissions(value="/dict/delete")
|
||||
@RequestMapping("/delete")
|
||||
@ResponseBody
|
||||
public Msg delete(Integer dictId) throws Exception{
|
||||
powerSysDictService.deleteByPrimaryKey(dictId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
@RequestMapping("/selectType")
|
||||
@ResponseBody
|
||||
public List<Power_Sys_DictVo> selectType(){
|
||||
try {
|
||||
List<Power_Sys_DictVo> powerSysDictVos = powerSysDictService.selectSysType();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerSysDictVos;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/getHospitalByParentId")
|
||||
@ResponseBody
|
||||
public Msg getHospitalByParentId(Integer dictId) throws Exception{
|
||||
Power_Sys_DictVo powerSysExsit = powerSysDictService.getHospitalByParentId(dictId, "权限系统");
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != powerSysExsit){
|
||||
return Msg.fail();
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
|
||||
@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(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);
|
||||
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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "dictDir/dictManageIframe";
|
||||
}
|
||||
|
||||
@RequestMapping("/checkSysFlagOrSysNameByDeptId")
|
||||
@ResponseBody
|
||||
public Msg checkSysFlagOrSysNameByDeptId(String sysFlag,String sysName,String deptIds) throws Exception{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,288 @@
|
||||
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.ExceptionPrintUtil;
|
||||
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){
|
||||
ExceptionPrintUtil.printException(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-08-02
|
||||
* @Author zengwenhe
|
||||
* @Description 验证角色名是否重复
|
||||
* */
|
||||
@RequestMapping("/checkRoleName")
|
||||
@ResponseBody
|
||||
public Msg checkRoleName(String roleName) throws Exception{
|
||||
Power_Role role = powerRoleService.checkRoleName(roleName);
|
||||
CacheManager.addExcCount("noExc");
|
||||
if(null != role){
|
||||
return Msg.fail("角色名已存在!");
|
||||
}else{
|
||||
return Msg.success();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @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) throws Exception{
|
||||
Power_Role role = powerRoleService.checkRoleName(powerRole.getRoleName());
|
||||
if(null != role){
|
||||
return Msg.fail("角色名不能重复!");
|
||||
}else{
|
||||
powerRoleService.insertSelective(powerRole);
|
||||
}
|
||||
CacheManager.addExcCount("noExc");
|
||||
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) throws Exception{
|
||||
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");
|
||||
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) throws Exception{
|
||||
powerRoleService.deleteByPrimaryKey(roleId);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success();
|
||||
}
|
||||
/**
|
||||
* @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){
|
||||
ExceptionPrintUtil.printException(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){
|
||||
ExceptionPrintUtil.printException(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> powerRoles = powerRoleService.selectListByPower(request);
|
||||
CacheManager.addExcCount("noExc");
|
||||
return powerRoles;
|
||||
}catch (Exception e){
|
||||
ExceptionPrintUtil.printException(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){
|
||||
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){
|
||||
ExceptionPrintUtil.printException(e);
|
||||
CacheManager.addExcCount("exc");
|
||||
//抛异常
|
||||
return new ResponseEntity<String>(e.getMessage(), responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
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() throws Exception{
|
||||
T_Menu obj = t_menuService.getRole();
|
||||
CacheManager.addExcCount("noExc");
|
||||
return Msg.success().add("obj", obj);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
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 com.manage.util.DateUtils;
|
||||
import com.manage.vo.Power_UserVo;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
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 {
|
||||
@Value("${TOKEN_EXPIRE_TIME}")
|
||||
private long TOKEN_EXPIRE_TIME;
|
||||
@Autowired
|
||||
Power_UserService powerUserService;
|
||||
|
||||
@Override
|
||||
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)) {
|
||||
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) {
|
||||
if(!"/getSessionRemainingTime".equals(parentUrl)) {
|
||||
//更新过期时间
|
||||
Power_UserVo user = (Power_UserVo) cache.getValue();
|
||||
String date = String.valueOf(DateUtils.getDate());
|
||||
CacheManager.putCache(token, new Cache(date, user, TOKEN_EXPIRE_TIME));
|
||||
}
|
||||
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){
|
||||
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,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,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 @@
|
||||
#2.0.1版本
|
||||
@ -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 = 3600000
|
||||
|
||||
##################################################\u670D\u52A1\u5668ip##########################################################
|
||||
#\u901A\u7528\u670D\u52A1\u5668IP\u4E0E\u901A\u7528\u670D\u52A1\u5668\u7AEF\u53E3
|
||||
SERVER_IP = localhost
|
||||
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,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>
|
||||
@ -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,154 @@
|
||||
<%@ 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%;
|
||||
}
|
||||
|
||||
/**查询按钮组*/
|
||||
.btns{
|
||||
text-align: right;
|
||||
margin-top: 5px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
/**表格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" maxlength="50">
|
||||
</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" maxlength="500">
|
||||
</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" maxlength="8">
|
||||
</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="开始时间" maxlength="10" autocomplete="off">
|
||||
</div>
|
||||
<div class="dateSearchInput left">
|
||||
<input type="text" class="form-control input-sm" id="endTime1" placeholder="结束时间" maxlength="10" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="left">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="refreshTable()">查询</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<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>
|
||||
@ -0,0 +1,14 @@
|
||||
CREATE VIEW power_user_dict AS
|
||||
SELECT
|
||||
`power_user`.`user_id` AS `user_id`,
|
||||
`power_dept`.`dict_id` AS `dict_id`
|
||||
FROM
|
||||
((
|
||||
`power_user`
|
||||
JOIN `mysql`.`help_topic` `b` ON ((
|
||||
`b`.`help_topic_id` < (( length( `power_user`.`dept_id` ) - length( REPLACE ( `power_user`.`dept_id`, _latin1 ',', _latin1 '' ))) + 1 ))))
|
||||
LEFT JOIN `power_dept` ON ((
|
||||
`power_dept`.`dept_id` = `power_user`.`dept_id`
|
||||
)))
|
||||
GROUP BY
|
||||
`power_user`.`user_id`
|
||||
|
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);
|
||||
@ -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"
|
||||
}
|
||||
@ -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."
|
||||
}
|
||||
|
After Width: | Height: | Size: 326 KiB |
@ -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;
|
||||
}
|
||||
@ -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";
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 766 B |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 240 B |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |