第五届北大青鸟杯全国IT精英挑战赛全国一等奖项目——智慧水务管理系统
关键代码说明书
作者:武汉宏鹏田超凡
版权所有,转载请注明原作者,仿冒侵权必究法律责任
1.文件上传和下载
2.短信验证码
3.数据导出Excel
4.基于arduino嵌入式开发
5.前端插件代码
//文档文件下载
@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;
}
- 短信验证码
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;
}
}
- 基于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);
}
- 前端插件部分代码
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);
}
});
}
}
});
}