第五届北大青鸟杯全国IT精英挑战赛全国一等奖项目——智慧水务管理系统_关键代码说明书

   第五届北大青鸟杯全国IT精英挑战赛全国一等奖项目——智慧水务管理系统

                                                 关键代码说明书

                                                                                                                作者:武汉宏鹏田超凡

版权所有,转载请注明原作者,仿冒侵权必究法律责任

智慧水务管理系统关键代码说明 1

1.文件上传和下载

2.短信验证码

3.数据导出Excel

4.基于arduino嵌入式开发

5.前端插件代码

1.文件上传和下载的代码:

//文档文件下载

@RequestMapping("/download.do")

@ResponseBody

//下载版本apk文件

public void download(HttpServletRequest request,

            @RequestParam("id")Integer id,

            Model model,HttpServletResponse response)throws Exception {

//设置浏览器显示的内容类型为Zip  (很重要,欺骗浏览器下载的是zip文件,就不会自己打开了)  

    response.setContentType("application/zip");  

    

    String fileName=machineBiz.getMachineFile(id).getFileName();

    String path=machineBiz.getMachineFile(id).getPath();

    

    //设置内容作为附件下载  fileName有后缀,比如1.jpg  

    response.setHeader("Content-Disposition", "attachment; filename="+fileName);  

    ServletOutputStream out = null;  

    try {  

        // 通过文件路径获得File对象(假如此路径中有一个download.pdf文件)  

        InputStream inputStream = new FileInputStream(new File(path));

        // 3.通过response获取ServletOutputStream对象(out)  

        out = response.getOutputStream();  

        int b = 0;  

        byte[] buffer = new byte[1024];  

        while (b != -1) {  

            b = inputStream.read(buffer);  

 

            //4.写到输出流(out)中  

            out.write(buffer, 0, b);

        }  

        inputStream.close();  

    } catch (Exception e) {  

        e.printStackTrace();  

    } finally {  

        try {  

            if (out != null)  

            out.close();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

        try {  

            if (out != null)  

            out.flush();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

    }  

}

 

//文件上传

@RequestMapping("/uploadFile")

@ResponseBody

public Object uploadFile(@RequestParam(value="id")Integer id,

                 @RequestParam(value="fileType",required=false)String fileType,

                 @RequestParam(value="water",required=false)MultipartFile water,

                 HttpServletRequest request)

{

Map<String,Object> maps=new HashMap<String,Object>();

 

if(fileType!=null)

{

if(water!=null && !water.isEmpty())

{

String type="";

 

//获取上传文件名

String oldFileName=water.getOriginalFilename();

 

//后缀

String ext=FilenameUtils.getExtension(oldFileName);

 

//目标上传路径

String destinePath="";

 

//新文件名

String newFileName="";

 

//目标上传文件

File file=null;

if(fileType.equals("doc"))

{

if(ext.equalsIgnoreCase("doc") || ext.equalsIgnoreCase("txt") || ext.equalsIgnoreCase("docx"))

{

//上传文档文件

type="doc";

destinePath=request.getServletContext().getRealPath("/statics/uploadDoc");

 

//生成新的上传文件名

newFileName=System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"_machine."+ext;

    

file=new File(destinePath,newFileName);

}

else

{

//文件格式错误

maps.put("success",false);

maps.put("message","上传文档文件格式只能是doc/docx/txt!");

return maps;

}

}

else

{

//上传图片文件

type="img";

 

if(ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg") || ext.equalsIgnoreCase("png") || ext.equalsIgnoreCase("pneg"))

{

//上传文件

    //目标上传路径

destinePath=request.getServletContext().getRealPath("/statics/uploadImg");

 

//生成新文件名

newFileName=System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"_machine."+ext;

 

    file=new File(destinePath,newFileName);

}

else

{

//文件格式错误

maps.put("success",false);

maps.put("message","上传图片文件格式只能是jpg/jpeg/png/pneg!");

return maps;

}

}

 

//上传文件

try

        {

          //文件上传

    FileUtils.copyInputStreamToFile(water.getInputStream(),file);

    

    //添加文件信息

    MachineFile machineFile=new MachineFile();

    machineFile.setFileName(newFileName);

    machineFile.setPath(destinePath+File.separator+newFileName);

    machineFile.setDevId(id);

    machineFile.setType(type);

    

    int result=machineBiz.addMachineFile(machineFile);

    

    if(result>0)

    {

     //文件上传成功

    maps.put("success",true);

    maps.put("message","文件上传成功");

    }

    else

    {

     //文件上传失败

     maps.put("success",false);

         maps.put("message","文件上传失败!");

    }

        }

        catch(Exception e)

        {

         e.printStackTrace();

         maps.put("success",false);

         maps.put("message","文件上传失败!");

        }

}

}

 

return maps;

}

  1. 短信验证码

package tools;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;

 

import org.json.JSONObject;

 

 

/**

 *

 * @Title:GetMessageCode

 * @Description:发送验证码

 * @Date 2017年12月10日 下午10:03:04

 */

public class GetMessageCode {

private static final String QUERY_PATH="https://api.miaodiyun.com/20150822/industrySMS/sendSMS";

private static final String ACCOUNT_SID="a9c07995abc648c98edb12d5f15bd651";

private static final String AUTH_TOKEN="94da4ab341c94ebd9f0c213677510e0b";

 

 

//根据相应的手机号发送验证码

public static String getCode(String phone){

String rod=smsCode();

String timestamp=getTimestamp();

String sig=getMD5(ACCOUNT_SID,AUTH_TOKEN,timestamp);

String tamp="【智慧水务管理系统】您的短信验证码为{1},请及时登录系统采购设备。";

OutputStreamWriter out=null;

BufferedReader br=null;

StringBuilder result=new StringBuilder();

try {

URL url=new URL(QUERY_PATH);

HttpURLConnection connection=(HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");

connection.setDoInput(true);//设置是否允许数据写入

connection.setDoOutput(true);//设置是否允许参数数据输出

connection.setConnectTimeout(5000);//设置链接响应时间

connection.setReadTimeout(10000);//设置参数读取时间

connection.setRequestProperty("Content-type","application/x-www-form-urlencoded");

//提交请求

out=new OutputStreamWriter(connection.getOutputStream(),"UTF-8");

String args=getQueryArgs(ACCOUNT_SID, tamp, phone, timestamp, sig, "JSON");

out.write(args);

out.flush();

//读取返回参数

 

br=new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

String temp="";

while((temp=br.readLine())!=null){

result.append(temp);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

JSONObject json=new JSONObject(result.toString());

String respCode=json.getString("respCode");

String defaultRespCode="00000";

if(defaultRespCode.equals(respCode)){

 return rod;

}else{

return defaultRespCode;

}

}

//定义一个请求参数拼接方法

public static String getQueryArgs(String accountSid,String smsContent,String to,String timestamp,String sig,String respDataType){

return "accountSid="+accountSid+"&smsContent="+smsContent+"&to="+to+"×tamp="+timestamp+"&sig="+sig+"&respDataType="+respDataType;

}

//获取时间戳

public static String getTimestamp(){

return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());

}

//sing签名

public static String getMD5(String sid,String token,String timestamp){

 

StringBuilder result=new StringBuilder();

String source=sid+token+timestamp;

//获取某个类的实例

try {

   MessageDigest digest=MessageDigest.getInstance("MD5");

   //要进行加密的东西

   byte[] bytes=digest.digest(source.getBytes());

   for(byte b:bytes){

   String hex=Integer.toHexString(b&0xff);

   if(hex.length()==1){

   result.append("0"+hex);

   }else{

   result.append(hex);

   }

   }

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

 

return result.toString();

}

//创建验证码

public static String smsCode(){

String random=(int)((Math.random()*9+1)*100000)+"";

return random;

}

}

3.数据导出Excel

package tools;

 

import java.text.SimpleDateFormat;

import java.util.List;

 

import oracle.net.aso.r;

import oracle.net.aso.s;

 

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.util.HSSFColor;

import org.apache.poi.ss.usermodel.BorderStyle;

import org.apache.poi.ss.usermodel.FillPatternType;

import org.apache.poi.ss.usermodel.HorizontalAlignment;

import org.apache.poi.ss.usermodel.VerticalAlignment;

 

import entity.Machine;

import entity.Order;

import entity.Task;

 

public class ExportDataToExcel {

 

private List<Task> tasks;

private List<Machine> machines;

private List<Order> orders;

    private static ExportDataToExcel exportDataToExcel;

 

//单例模式,私有构造函数

private ExportDataToExcel()

{

 

}

 

//静态内部类,单例模式

private static final class Single

{

private static final ExportDataToExcel INSTANCE=new ExportDataToExcel();

}

 

//获取唯一实例

public static ExportDataToExcel getExportDataToExcel()

{

if(exportDataToExcel==null)

{

exportDataToExcel=Single.INSTANCE;

}

 

return exportDataToExcel;

}

 

//getter/setter方法

 

public List<Task> getTasks() {

return tasks;

}

 

public void setTasks(List<Task> tasks) {

this.tasks = tasks;

}

 

public List<Machine> getMachines() {

return machines;

}

 

public void setMachines(List<Machine> machines) {

this.machines = machines;

}

 

public List<Order> getOrders() {

return orders;

}

 

public void setOrders(List<Order> orders) {

this.orders = orders;

}  

 

public HSSFWorkbook exportData(String type) {  

        // 创建工作空间  

        HSSFWorkbook wb = new HSSFWorkbook();  

        // 创建表  

        HSSFSheet sheet = wb.createSheet("mySheet");  

        sheet.setDefaultColumnWidth(20);  

        sheet.setDefaultRowHeightInPoints(20);  

  

        // 创建行  

        HSSFRow row = sheet.createRow((int) 0);  

  

        // 生成一个样式  

        HSSFCellStyle style = wb.createCellStyle();  

        style.setAlignment(HorizontalAlignment.CENTER);// 水平居中  

        style.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中  

  

        // 背景色  

        style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex());  

        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);  

        style.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex());  

  

        // 设置边框  

        style.setBorderBottom(BorderStyle.THIN);  

        style.setBorderLeft(BorderStyle.THIN);  

        style.setBorderRight(BorderStyle.THIN);  

        style.setBorderTop(BorderStyle.THIN);  

  

        // 生成一个字体  

        HSSFFont font = wb.createFont();  

        font.setFontHeightInPoints((short) 10);  

        font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());  

        font.setBold(true);  

        font.setFontName("宋体");  

  

        // 把字体 应用到当前样式  

        style.setFont(font);  

          

        // 添加表头数据  

        String[] excelHeader = null;

       

          

        if(type.equals("task"))

        {

         //设置列标题

         excelHeader=new String[]{"编号","任务编号","任务名称","任务类型","任务状态","执行人","开始日期","截止日期","创建时间","创建人","任务内容","计划编号","备注"};  

         for (int i = 0; i < excelHeader.length; i++) {  

                 HSSFCell cell = row.createCell(i);  

                 cell.setCellValue(excelHeader[i]);  

                 cell.setCellStyle(style);  

            }  

        

         //导出巡检任务数据

         // 添加单元格数据  

            for (int i=0;i<tasks.size();i++) {  

                row = sheet.createRow(i + 1);  

                

                Task task=tasks.get(i);

                row.createCell(0).setCellValue(task.getId());

                row.createCell(1).setCellValue(task.getTaskNo());

                row.createCell(2).setCellValue(task.getTaskName());

                

                if(task.getTaskType().equals("plan"))

                {

                 row.createCell(3).setCellValue("计划任务");

                }

                else

                {

                 row.createCell(3).setCellValue("临时任务");

                }

                

                String statu="";

                if(task.getTaskStatu()==0)

                {

                 statu="新任务";

                }

                else if(task.getTaskStatu()==1)

                {

                 statu="执行中";

                }

                else if(task.getTaskStatu()==2)

                {

                 statu="等待审核";

                }

                else if(task.getTaskStatu()==3)

                {

                 statu="已完成";

                }

                else if(task.getTaskStatu()==4)

                {

                 statu="审核通过";

                }

                else if(task.getTaskStatu()==5)

                {

                 statu="审核不通过";

                }

 

                row.createCell(4).setCellValue(statu);

                row.createCell(5).setCellValue(task.getExecutor());

                row.createCell(6).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(task.getStartDate()));

                row.createCell(7).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(task.getEndDate()));

                row.createCell(8).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(task.getDispatchTime()));

                row.createCell(9).setCellValue(task.getDispatcher());

                

                if(task.getContent()==null || task.getContent().equals("null"))

                {

                 row.createCell(10).setCellValue("");

                }

                else

                {

                 row.createCell(10).setCellValue(task.getContent());

                }

                

                if(task.getPlanId()==null || task.getPlanId().equals("null"))

                {

                 row.createCell(11).setCellValue("");

                }

                else

                {

                 row.createCell(11).setCellValue(task.getPlanId());

                }

                

                if(task.getRemark()==null || task.getRemark().equals("null"))

                {

                 row.createCell(12).setCellValue("");

                }

                else

                {

                 row.createCell(12).setCellValue(task.getRemark());

                }

            }  

        }

        else if(type.equals("machine"))

        {

         //设置列标题

         excelHeader=new String[]{"编号","设备编号","设备名称","启用日期","采购审核状态","设备描述","备注","可用数量","采购日期"};  

         for (int i = 0; i < excelHeader.length; i++) {  

                 HSSFCell cell = row.createCell(i);  

                 cell.setCellValue(excelHeader[i]);  

                 cell.setCellStyle(style);  

            }

        

         //导出设备数据

         for(int i=0;i<machines.size();i++)

         {

         Machine machine=machines.get(i);

        

         row=sheet.createRow(i+1);

        

         row.createCell(0).setCellValue(machine.getId());

         row.createCell(1).setCellValue(machine.getMachineNo());

         row.createCell(2).setCellValue(machine.getName());

         row.createCell(3).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(machine.getStartDate()));

        

         String statu="";

         if(machine.getStatus()==0)

         {

         statu="报废";

         }

         else

         {

         statu="可用";

         }

        

         row.createCell(4).setCellValue(statu);

        

         if(machine.getDescription()==null || machine.getDescription().equals(""))

         {

         row.createCell(5).setCellValue("");

         }

         else

         {

         row.createCell(5).setCellValue(machine.getDescription());

         }

        

         if(machine.getRemark()==null || machine.getRemark().equals(""))

         {

         row.createCell(6).setCellValue("");

         }

         else

         {

         row.createCell(6).setCellValue(machine.getRemark());

         }

        

         if(machine.getUseCount()==null || machine.getUseCount()==0)

         {

         row.createCell(7).setCellValue("0");

         }

         else

         {

         row.createCell(7).setCellValue(machine.getUseCount());

         }

        

         if(machine.getBuyDate()==null)

         {

         row.createCell(8).setCellValue("");

         }

         else

         {

         row.createCell(8).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(machine.getBuyDate()));

         }

         }

        }

        else if(type.equals("order"))

        {

         //设置表头

         //设置列标题

         excelHeader=new String[]{"信息来源","反映形式","反映人","联系电话","电子邮件","反映单位","反映区域","反映类别","发生日期","发生地点","事件等级","处理部门","处理时间","截止时间","需反馈","状态"};  

         for (int i = 0; i < excelHeader.length; i++) {  

                 HSSFCell cell = row.createCell(i);  

                 cell.setCellValue(excelHeader[i]);  

                 cell.setCellStyle(style);  

            }

        

         for(int i=0;i<orders.size();i++)

         {

         Order order=orders.get(i);

        

         row=sheet.createRow(i+1);

        

         if(order.getInformationFrom()==null || order.getInformationFrom().equals(""))

         {

         row.createCell(0).setCellValue("");

         }

         else

         {

         row.createCell(0).setCellValue(order.getInformationFrom());

         }

        

         if(order.getReflectForm()==null || order.getReflectForm().equals(""))

         {

         row.createCell(1).setCellValue("");

         }

         else

         {

         row.createCell(1).setCellValue(order.getReflectForm());

         }

        

         if(order.getReflectPeople()==null || order.getReflectPeople().equals(""))

         {

         row.createCell(2).setCellValue("");

         }

         else

         {

         row.createCell(2).setCellValue(order.getReflectPeople());

         }

        

         if(order.getTelephone()==null || order.getTelephone().equals(""))

         {

         row.createCell(3).setCellValue("");

         }

         else

         {

         row.createCell(3).setCellValue(order.getTelephone());

         }

        

         if(order.getEmail()==null || order.getEmail().equals(""))

         {

         row.createCell(4).setCellValue("");

         }

         else

         {

         row.createCell(4).setCellValue(order.getEmail());

         }

        

         if(order.getReflectUnit()==null || order.getReflectUnit().equals(""))

         {

         row.createCell(5).setCellValue("");

         }

         else

         {

         row.createCell(5).setCellValue(order.getReflectUnit());

         }

        

         if(order.getReflectArea()==null || order.getReflectArea().equals(""))

         {

         row.createCell(6).setCellValue("");

         }

         else

         {

         row.createCell(6).setCellValue(order.getReflectArea());

         }

        

         if(order.getReflectClass()==null || order.getReflectClass().equals(""))

         {

         row.createCell(7).setCellValue("");

         }

         else

         {

         row.createCell(7).setCellValue(order.getReflectClass());

         }

        

         if(order.getHappenTime()==null || order.getHappenTime().equals(""))

         {

         row.createCell(8).setCellValue("");

         }

         else

         {

         row.createCell(8).setCellValue(order.getHappenTime());

         }

        

         if(order.getHappenAddr()==null || order.getHappenAddr().equals(""))

         {

         row.createCell(9).setCellValue("");

         }

         else

         {

         row.createCell(9).setCellValue(order.getHappenAddr());

         }

        

         if(order.getEventLevel()==null || order.getEventLevel().equals(""))

         {

         row.createCell(10).setCellValue("");

         }

         else

         {

         row.createCell(10).setCellValue(order.getEventLevel());

         }

        

         if(order.getProcessingDepartment()==null || order.getProcessingDepartment().equals(""))

         {

         row.createCell(11).setCellValue("");

         }

         else

         {

         row.createCell(11).setCellValue(order.getProcessingDepartment());

         }

        

         if(order.getLimitTime()==null || order.getLimitTime().equals(""))

         {

         row.createCell(12).setCellValue("");

         }

         else

         {

         row.createCell(12).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(order.getLimitTime()));

         }

        

         if(order.getClosingTime()==null || order.getClosingTime().equals(""))

         {

         row.createCell(13).setCellValue("");

         }

         else

         {

         row.createCell(13).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(order.getClosingTime()));

         }

        

         if(order.getFeedback()==null || order.getFeedback()==0)

         {

         row.createCell(14).setCellValue("是");

         }

         else

         {

         row.createCell(14).setCellValue("需反馈");

         }

        

         if(order.getNodeName()==null || order.getNodeName().equals(""))

         {

         row.createCell(15).setCellValue("");

         }

         else

         {

         row.createCell(15).setCellValue(order.getNodeName());

         }

         }

        }

        return wb;  

    }

}

 

  1. 基于arduino嵌入式开发

double temp,data;

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

}

 

void loop() {

  // put your main code here, to run repeatedly:

  temp=(long)analogRead(0);

  data=(temp/650)*4;

  Serial.print("the depth is:");

  Serial.print(data);

  Serial.println("cm");

  delay(1000);

}

  1. 前端插件部分代码

var pid;

var clickId;

var rootFlag=false;

var selectedDevName="";

var selectedId="";

var selectedDeviceId="";

var selectedCid="";

var selectedDevId="";

var selectTabId=1;

var className = "dark";

var selectedNode;

var newCount = 1;

var zNodes;

 

var path;

 

$(function() {

//项目根目录

path=$("#path").val();

 

// $("#dev_tree_desc_id").hide();

//获取设备树

getTree();

 

//文件上传

fileUpload();

//图片上传

imgUpload();

//删除文件

delFile();

//删除图片

delImage();

//初始“保存按钮”无效

$("#attrSaveBtn").attr("disabled",true);

$("#desc").attr("readonly",true);

    //根据设备图片状态给出默认效果

    initImgEffect(".imgList>li")

    //点击图片区域切换选中状态

    ImgClickEffect("#devImages")

   

 

 

//启动编辑

$("#attrEditBtn").click(function(){

//属性配置框可编辑

$("#attrList >li> input").attr("readonly",false);

//设备描述可编辑

$("#desc").attr("readonly",false);

//“保存”按钮有效

$("#attrSaveBtn").attr("disabled",false);

});

 

//保存,提交属性配置

addAttribute();

 

//初始化页面默认显示

$("#tree_3_a").click();

});

 

var setting = {

    view: {

     addHoverDom: addHoverDom,

        removeHoverDom: removeHoverDom,

        selectedMulti: false,

        showLine:true

    },

    check:{

      enable:true

    },

    edit: {

        enable: true,

        editNameSelectAll: true,

        showRemoveBtn: true,

        showRenameBtn: true,

        removeTitle: "删除设备",

        renameTitle: "编辑设备名称"

    },

//     data: {

//      key:{

// children:"children",

// name:"devName"

//

// },

//         simpleData: {

//          enable : true,

// idkey : "id",

// pIdKey : "parentId",

// rootPId : "1"

//         }

//     },

    callback: {

       onClick : onClick,

       onRename : onRename,

       beforeDrag: beforeDrag,

          beforeEditName: beforeEditName,

          beforeRemove: beforeRemove,

          beforeRename: beforeRename

    }

};

 

function getTree() {

 

$.ajax({

url:path+"/machine/queryAll.do",

type:"POST",

data:null,

dataType:"json",

success:function(data){

zNodes = data;

     zNodes.open = true;

    

     $.fn.zTree.init($("#tree"), setting, zNodes);

    

     treeObj.expandAll(true);

}

});

}

 

//如果是实体,即具有devId,则加载罗列其属性值

function onClick(event, treeId, treeNode) {

selectedNode = treeNode;

clearAllInfo();

// if(treeNode.devId!=null&&treeNode.devId!=""){

// selectedCid=treeNode.cid;

// selectedDeviceId=treeNode.deviceId;

// selectedDevId=treeNode.devId;

//

// }

 

//选中节点的设备id

selectedDeviceId=treeNode.id;

 

//设置设备id

$(".fileId").val(selectedDeviceId);

 

//根据设备id加载属性列表

initDeviceAttr(selectedNode.id);

}

 

//清空所有信息

function clearAllInfo(){

$("#attrList").empty();

$("#desc").val("");

$("#devFiles").empty();

$("#devImages").empty();

}

 

//根据设备id加载属性列表和设备描述

function initDeviceAttr(devId){

//ajax加载属性列表

$.ajax({

url:path+"/machine/findAttrList.do",

type:"POST",

data:"devId="+devId,

dataType:"json",

success:function(data){

     $("#attrList").empty();

     var html = '';

     $.each(data,function(chname,value){

     html += "<li><span><b>"+chname+" : </b></span>  " ;

     html += "<input type='text' class='form-control' readonly='true' value='"+value.name+"' /></li>";

    

     //隐藏域,存放属性id

     html += "<input type='hidden' name='attrIds' value='"+value.id+"'/>";

     })

$("#attrList").append(html);

}

});

 

//ajax加载设备描述

$.ajax({

url:path+"/machine/getDescription.do",

type:"POST",

data:"devId="+devId,

dataType:"json",

success:function(data){

$("#desc").val(data.description);

$("#desc").attr("readonly",true);

}

});

 

 

 

//加载图片和文件

initFilesAndImages(devId);

}

 

 

//加载图片和文件列表

function initFilesAndImages(devId){

if(devId != null || devId != ""){

//ajax异步根据设备id加载文档文件

$.ajax({

url:path+"/machine/loadDocFile",

type:"POST",

data:"id="+devId+"&type=doc",

dataType:"json",

success:function(data){

     $("#devFiles").empty();

     var files = data;

     var sli ="";

     for(var i=0;i<files.length;i++){

     var file=files[i];

     sli += '<li><input type="checkbox" id="'+file.id+'"/><label><a target="_blank" οnclick="toDownLoadFile('+file.id+');">'+file.fileName+'"</a></label></li>';

     }

     $("#devFiles").append(sli);

}

});

 

//ajax异步根据设备id加载图片

$.ajax({

url:path+"/machine/loadDocFile",

    type:"POST",

    data:"id="+devId+"&type=img",

    dataType:"json",

    success:function(data){

     $("#devImages").empty();

     var images = data;

     var sli ="";

     for(var i=0;i<images.length;i++){

     var img=images[i];

     var fullPath=path+"/statics/uploadImg/"+img.fileName;

     sli += '<li><input type="checkbox" id="'+img.id+'"/><span></span><img src="'+fullPath+'" οnclick="toDownLoadFile('+img.id+')"/></li>';

     }

     $("#devImages").append(sli);

    }

});

 

}

}

 

 

//下载文件

function toDownLoadFile(id)

{

window.location.href=path+"/machine/download.do?id="+id;

}

 

function beforeDrag(treeId, treeNodes) {

    return false;

}

function beforeEditName(treeId, treeNode) {

    className = (className === "dark" ? "":"dark");

    var zTree = $.fn.zTree.getZTreeObj("tree");

    zTree.selectNode(treeNode);

 

}

function beforeRemove(treeId, treeNode) {

className = (className === "dark" ? "":"dark");

    var zTree = $.fn.zTree.getZTreeObj("tree");

    zTree.selectNode(treeNode);

 

    if(window.confirm("确定要删除该设备吗?")){

     var devId = treeNode.id;

    

     $.ajax({

     url:path+"/machine/delete",

     type:"POST",

     data:"ids="+devId,

     dataType:"json",

     success:function(data){

        if(data.cn)

        {

        //删除成功

        top.layer.alert("删除成功!");

        }

        else

        {

        //删除失败

        top.layer.alert("删除失败!");

        }

        

        //清空列表数据

        clearAllInfo();

     }

     });

//     executeAjaxUrlForResult("server/devmng/deleteTreeNode",{

// type:"post",

// async:false,

// data:{"id":$parentId}

//      },function(result){

//      if(!result.success){

//      //删除失败

//      top.layer.alert(result.message);

//      //重新加载设备树

//      getTree();

//      }

//      });

     return true;

    }

    return false;

}

 

function beforeRename(treeId, treeNode, newName, isCancel) {

    className = (className === "dark" ? "":"dark");

    if (newName.length == 0) {

        alert("节点名称不能为空.");

        var zTree = $.fn.zTree.getZTreeObj("tree");

        setTimeout(function(){zTree.editName(treeNode)}, 10);

        return false;

    }

    return true;

}

//添加节点

function addHoverDom(treeId, treeNode) {

    var sObj = $("#" + treeNode.tId + "_span");

    if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;

    var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' name='"+treeNode.id+"' title='添加子节点' οnfοcus='this.blur();'></span>";

    sObj.after(addStr);

    

    //“添加节点事件”

    var btn = $("#addBtn_"+treeNode.tId);

    var content = 'server/devmng/addNode';

    btn.click(function () {

     var $parentId = $(this).attr("name");

            FrameAlert("添加节点", content+"?parentId="+$parentId, "550px", "400px");

            

        })

}

function removeHoverDom(treeId, treeNode) {

    $("#addBtn_"+treeNode.tId).unbind().remove();

}

function selectAll() {

    var zTree = $.fn.zTree.getZTreeObj("tree");

    zTree.setting.edit.editNameSelectAll =  $("#selectAll").attr("checked");

}

 

 

 

//文件上传

function fileUpload(){

 

$("#fileUp").click(function(){

if(selectedDeviceId == ""){

top.layer.alert("请先选择设备!", {icon: 5, shade: 0.1});

return ;

}

$("#fileUpload").click();

});

}

function imgUpload(){

$("#imgUp").click(function(){

if(selectedDeviceId == ""){

top.layer.alert("请先选择设备!", {icon: 5, shade: 0.1});

return ;

}

$("#imgUpload").click();

});

}

 

 

function fileSelected(isImg){

var $formId;

var $inputName;

var $fileId;

if(isImg){

//图片文件

$formId = "imgForm";

$inputName = "#imgUpload";

$fileId="#devImages";

}else{

//文档文件

$formId = "docForm";

$inputName = "#fileUpload";

$fileId="#devFiles";

}

 

//alert($inputName);

var $form =  document.getElementById($formId);

var p = $($inputName).val();

 

var formData = new FormData($form);

if(p != ""){

$("#mask").css("display","inline");

 

//文件上传

 

$.ajax({

url:path+"/machine/uploadFile",

type:"POST",

data:formData,

dataType:"json",

processData:false,

                contentType:false,

                cache:false,

                success:function(data){

             $("#mask").css("display","none");

     if(data.success){

     top.layer.alert("上传成功!");

    

     //重新加载图片和文件

     initFilesAndImages(selectedDeviceId);

     }else{

     top.layer.alert(data.message);

     }

                }

});

}else{

top.layer.alert("请选择文件或图片!", {icon: 5, shade: 0.1});

}

return false;

}

 

//删除文件或图片

function delFilesOrImages(inputs,ids,isFile){

 

if(ids.length == 0){

top.layer.alert("未选中任何文件或图片!", {icon: 5, shade: 0.1});

}else{

top.layer.confirm("确定要删除"+ids.length+"项文件吗?",function(index){

                var idList="";

                

                for(var i=0;i<ids.length;i++)

                {

                 idList=idList+"ids="+ids[i];

                

                 if(i<ids.length-1)

                 {

                 idList=idList+"&";

                 }

                }

 

//ajax异步删除文件信息和文件

$.ajax({

url:path+"/machine/deleteFile",

type:"POST",

data:idList,

dataType:"json",

success:function(data){

    if(data.status=="1")

    {

     top.layer.alert("删除文件成功!");

    

    }

    else

    {

     top.layer.alert("删除文件失败!");

    }

    

    //重新加载文件列表

     initFilesAndImages(selectedDeviceId);

}

});

top.layer.close(index);

});

}

}

function delFile(){

$("#delFiles").click(function(){

var inputs =$("#devFiles input[type='checkbox']:checked");

var ids = [];

for(var i=0;i<inputs.length;i++){

ids.push($(inputs[i]).attr("id"));

}

delFilesOrImages(inputs,ids,true);

});

}

function delImage(){

$("#delImages").on('click',function(){

var inputs = $("#devImages").children().children('input[type=checkbox]');

 

var ids = [];

for(var i=0;i<inputs.length;i++){

if($(inputs[i]).attr("checked") == "checked"){

ids.push($(inputs[i]).attr("id"));

}

}

delFilesOrImages(inputs,ids,false);

})

}

 

//点击图片区域切换选中状态

function ImgClickEffect(target){

    $(target).on("click",'img', function () {

        var that = this

        SwichImageEffect(that)

    })

}

 

//根据设备图片状态给出默认效果

function initImgEffect(target){

    $(target).each(function(){

        if($(this).children('input[type=checkbox]').attr("checked") == "checked"){

            $(this).addClass('imgCur').children('span').addClass('fa fa-check')

        }

    })

}

 

function SwichImageEffect(t) {

    if ($(t).siblings('input[type=checkbox]').attr("checked") == "checked") {

        $(t).removeClass('imgCur').siblings('input[type=checkbox]').attr("checked", false)

        $(t).siblings('span').removeClass('fa fa-check')

    }

    else {

        $(t).addClass('imgCur').siblings('input[type=checkbox]').attr("checked", true)

        $(t).siblings('span').addClass('fa fa-check')

    }

}

function onRename(event,treeId, treeNode){

var updateNodeId = treeNode.id;

var devName = treeNode.name;

 

//ajax异步修改设备名

$.ajax({

url:path+"/machine/changeName",

    type:"POST",

    data:"id="+updateNodeId+"&changeName="+devName,

    dataType:"json",

    success:function(data){

        if(data.status=="1")

        {

         //修改成功

         top.layer.alert("修改成功");

        

         //直接刷新zTree

         getTree();

        }

    }

});

}

 

//保存设备属性和描述

function addAttribute(){

$("#attrSaveBtn").click(function(){

 

//var enname = [];

var value = [];

var ids=[];

$("#attrList >li> input" ).each(function(i,Ele){

var temp_value = $(Ele).val().trim();

if(null != temp_value && temp_value != ''){

//enname.push($(Ele).attr("name"));

value.push(temp_value);

}

});

//enname.push("desc");

value.push($("#desc").val());

 

$("[name='attrIds']").each(function(i,dom){

    ids.push($(dom).val());

});

 

var valueList="";

for(var i=0;i<value.length;i++)

{

valueList=valueList+"value="+value[i];

 

if(i<value.length-1)

{

valueList=valueList+"&";

}

}

 

var idList="";

for(var i=0;i<ids.length;i++)

{

idList=idList+"ids="+ids[i];

 

if(i<ids.length-1)

{

idList=idList+"&";

}

}

 

// executeAjaxUrlForResult("server/devmng/updateDeviceAttributeDataValues",{

// data :{"enname":enname,"value":value,"devId":selectedDevId},

// async:false

//         },function(result){

//         if(result.success){

//         top.layer.alert("保存成功!");

// }

//         });

 

//ajax异步更新属性信息和设备描述信息

$.ajax({

    url:path+"/machine/editMachine.do",

    type:"POST",

    data:idList+"&"+valueList+"&devId="+selectedNode.id,

    dataType:"json",

    success:function(data){

     if(data.status=="1")

     {

     //更新成功

     top.layer.alert("更新成功!");

     }

     else

     {

     //更新失败

     top.layer.alert("更新失败!");

     }

    

     //保存按钮无效

$("#attrSaveBtn").attr("disabled",true);

$("#attrList >li> input").attr("readonly",true);

$("#desc").attr("readonly",true);

    }

});

 

 

});

}

 

 

//添加节点专用

function FrameAlert(title, url, w, h) {

    top.layer.open({

        title: title,

        type: 2,

        skin: "layui-layer-molv",

        content: url,

        maxmin: false,

        shade: false,

        area: [w, h],

        zIndex: layer.zIndex,

        end: function () {

     var state_temp = $.cookie("add_node_temp_state");

     var oldNode = selectedNode;

     if(state_temp == 1){

     var id_temp = $.cookie("add_node_temp_id");

     executeAjaxUrlForResult("server/devmng/getTreeNodeBranch",{

     data:{"id":id_temp},

async:false

         },function(result){

         if(result.success){

         var newNode = result.data;

         var treeObj = $.fn.zTree.getZTreeObj("tree");

          treeObj.addNodes(oldNode, newNode);

           $.cookie("add_node_temp_state",null);

           $.cookie("add_node_temp_id",null);

}

         });

     }

        }

    });

}

 

 

 

发布了119 篇原创文章 · 获赞 14 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_30056341/article/details/105638083