Commit 28b57868 by caojingji

Merge remote-tracking branch 'origin/master'

parents 0b52d13a d66ab0e6
......@@ -206,6 +206,12 @@
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<finalName>cqnt</finalName>
......
......@@ -8,9 +8,9 @@ import com.founder.interservice.util.EasyUIPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
......@@ -18,21 +18,40 @@ public class BkController {
@Autowired
BkService bkService;
/**
* 标识号布控 新增界面
* @return
*/
@RequestMapping(value = "/toBshbkInsertJsp")
public ModelAndView toBshbkInsertJsp(){
ModelAndView modelAndView = new ModelAndView("bkxx/bkxxInsert");
modelAndView.addObject("flag","bsh");
return modelAndView;
}
/**
* 损失设备布控 新增界面
* @return
*/
@RequestMapping(value = "/toSssbbkInsertJsp")
public ModelAndView toSssbbkInsertJsp(){
ModelAndView modelAndView = new ModelAndView("bkxx/bkxxInsert");
modelAndView.addObject("flag","sssb");
return modelAndView;
}
@RequestMapping(value = "/toBkxxListJsp")
public String toBkxxListJsp(){
return "/bkxx/bkxxlist";
}
@RequestMapping(value ="/saveBkxx",method = {RequestMethod.GET,RequestMethod.POST})
public void saveBkxx(Bkxx bkxx){
if(bkxx != null){
bkService.insertBkxx(bkxx);
}
@RequestMapping(value ="/saveBkxx",method = {RequestMethod.POST})
@ResponseBody
public String saveBkxx( Bkxx bkxx){
return bkService.saveBkxx(bkxx);
}
@RequestMapping(value = "/queryBkxxList")
@RequestMapping(value = "/queryBkxxList",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Map<String,Object> queryBkxxList(@RequestBody BkxxFilter bkxxFilter,
public Map<String,Object> queryBkxxList(BkxxFilter bkxxFilter,
@RequestParam(value = "page",defaultValue = "0") int page,
@RequestParam(value = "rows",defaultValue = "0") int rows){
Map<String,Object> objectMap = new HashMap<>();
......@@ -50,4 +69,15 @@ public class BkController {
}
return objectMap;
}
@RequestMapping("/updateBkztByXxzjbh")
@ResponseBody
public String updateBkztByXxzjbh(@RequestParam String xxzjbh,@RequestParam String bkzt) {
Bkxx bkxx =new Bkxx();
bkxx.setXxzjbh(xxzjbh);
bkxx.setBkzt(bkzt);
bkService.updateBkxx(bkxx);
return "success";
}
}
package com.founder.interservice.bkxx.model;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
......@@ -14,16 +14,39 @@ import java.util.Date;
public class Bkxx {
@Id
private String xxzjbh;//信息主键编号
private String bkbsh; //布控标识号
private String bkdxhm;
private String bkdxlx;
private String bkdxlxmc;
private String bklx;
private String bkyj;
private String bkyq;
private String asjbh ;//案事件编号
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private java.util.Date bksj_start ;
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private java.util.Date bksj_end;
private String sqr_sfzh;
private String sqr_xm;
private String sqr_jh;
private String sqr_lxdh;
private String bkzt;//布控状态(0正常;1停止)
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private java.util.Date djsj;//登记时间
private String bkqx;//布控期限
/* private String bkbsh; //布控标识号
private String bshlxdm; //布控号类型代码
private String bshlxmc;//布控号类型名称
private String asjbh ;//案事件编号
private String bkrSfzh; //布控人身份证号
private String bkrXm;//布控人姓名
private String bkrJh;//布控人警号
private String bkrLxdh;//布控人联系电话
private Date bkKssj;//布控开始时间
private String bkzt;//布控状态(0正常;1停止)
private Date djsj;//登记时间
private Date bkKssj;//布控开始时间*/
}
......@@ -5,13 +5,19 @@ import lombok.Data;
@Data
public class BkxxFilter {
private String xxzjbh;//信息主键编号
private String bkbsh; //布控标识号
private String bshlxdm; //布控号类型代码
private String bkdxhm; //布控标识号
private String bkdxlx; //布控号类型代码
private String asjbh ;//案事件编号
private String bkrSfzh; //布控人身份证号
private String bkrXm;//布控人姓名
private String bkrJh;//布控人警号
private String sqr_sfzh; //布控人身份证号
private String sqr_xm;//布控人姓名
private String sqr_jh;//布控人警号
private String bkzt;//布控状态(0正常;1停止)
private int startNum;
private int endNum;
private String bkdxlxmc;
private String bksj_start;
private String bksj_end;
private String bkztmc;
}
package com.founder.interservice.bkxx.repository;
import com.founder.interservice.bkxx.model.Bkxx;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BkxxRepository extends JpaRepository<Bkxx,String> {
}
......@@ -17,12 +17,7 @@ import java.util.Map;
*/
public interface BkService {
/**
* 保存布控信息
* @param bkxx
* @return
*/
public void insertBkxx(Bkxx bkxx);
public String saveBkxx(Bkxx bkxx) ;
/**
* 分页查询布控信息
......@@ -31,5 +26,5 @@ public interface BkService {
* @throws InterServiceException
*/
Map<String, Object> selectBkxxListPage(BkxxFilter bkxxFilter);
public int updateBkxx(Bkxx bkxx);
}
......@@ -2,35 +2,43 @@ package com.founder.interservice.bkxx.service.impl;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.model.BkxxFilter;
import com.founder.interservice.bkxx.repository.BkxxRepository;
import com.founder.interservice.bkxx.service.BkService;
import com.founder.interservice.exception.InterServiceException;
import com.founder.interservice.mapper.xzxt.BkxxMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
@Service
public class BkServiceImpl implements BkService{
@Autowired
private BkxxMapper bkxxMapper;
@Autowired
BkxxRepository bkxxRepository;
@Override
public void insertBkxx(Bkxx bkxx) {
public String saveBkxx(Bkxx bkxx) {
//先查询是否存在这条数据(案事件编号、布控人警号、布控标识号、布控类型)
List<Bkxx> bkxxList = bkxxMapper.selectBkxx(bkxx);
if(bkxxList != null && bkxxList.size() > 0){
String flag = "已存在";
//获取客户端查询条件
String flag="success";
int bkxxs = bkxxMapper.selectBkxx(bkxx);
if(bkxxs<1){
bkxx.setXxzjbh(get32UUID());
bkxx.setDjsj(new Date());
bkxxRepository.save(bkxx);
}else{
String uuid = UUID.randomUUID().toString().replaceAll("-","");
uuid = uuid.substring(0,uuid.length()-2);
bkxx.setXxzjbh(uuid);
bkxxMapper.insertBkxx(bkxx);
flag = "error";//已存在
}
return flag;
}
//32位UUID
public static String get32UUID(){
UUID id=UUID.randomUUID();
String[] idd=id.toString().split("-");
return idd[0]+idd[1]+idd[2]+idd[3]+idd[4];
}
/**
......@@ -41,11 +49,16 @@ public class BkServiceImpl implements BkService{
@Override
public Map<String, Object> selectBkxxListPage(BkxxFilter bkxxFilter) throws InterServiceException{
Map<String, Object> resultMap = new HashMap<>();
List<Bkxx> bkxxLists = bkxxMapper.selectBkxxListPage(bkxxFilter);
List<BkxxFilter> bkxxLists = bkxxMapper.selectBkxxListPage(bkxxFilter);
int total = bkxxMapper.selectBkxxListPageTotalCount(bkxxFilter);
resultMap.put("rows",bkxxLists);
resultMap.put("total",total);
return resultMap;
}
@Override
public int updateBkxx(Bkxx bkxx){
return bkxxMapper.updateBkxx(bkxx);
}
}
......@@ -16,6 +16,6 @@ public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//设定一个长度10的定时任务线程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(20));
}
}
......@@ -50,6 +50,11 @@ public class LogFilter implements Filter {
String projectName = httpServletRequest.getParameter("projectName");
String objTypeCode = httpServletRequest.getParameter("objType");
String reqUri = httpServletRequest.getRequestURI();
if(reqUri.equals("/saveBkxx")||reqUri.equals("/updateBkztByXxzjbh")){//这两个url不进行过滤。如果过滤的话就必须传yhCate=00&projectName=00这两个参数。
//往下执行
filterChain.doFilter(httpServletRequest, servletResponse);
}
else{
RequestLog requestLog = new RequestLog();
requestLog.setRzlsh(KeyUtil.getUniqueKey("L"));
requestLog.setFwsj(new Date());
......@@ -139,6 +144,8 @@ public class LogFilter implements Filter {
}
}
}
/**
* 过滤器销毁方法
*/
......@@ -146,4 +153,6 @@ public class LogFilter implements Filter {
public void destroy() {
System.out.println("过滤器销毁.............");
}
}
......@@ -3,13 +3,16 @@ package com.founder.interservice.mapper.xzxt;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.model.BkxxFilter;
import com.founder.interservice.exception.InterServiceException;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface BkxxMapper {
List<Bkxx> selectBkxx(Bkxx bkxx);
int selectBkxx(Bkxx bkxx);
void insertBkxx(Bkxx bkxx);
......@@ -19,7 +22,7 @@ public interface BkxxMapper {
* @return
* @throws InterServiceException
*/
List<Bkxx> selectBkxxListPage(BkxxFilter bkxxFilter);
List<BkxxFilter> selectBkxxListPage(BkxxFilter bkxxFilter);
/**
* 查询布控信息总数(和分页嵌套使用)
......@@ -28,4 +31,9 @@ public interface BkxxMapper {
* @throws InterServiceException
*/
int selectBkxxListPageTotalCount(BkxxFilter bkxxFilter);
@Update("update tb_st_bkxx set bkzt=#{bkzt} where xxzjbh=#{xxzjbh}")
public int updateBkxx(Bkxx bkxx);
}
......@@ -21,4 +21,7 @@ public interface RegionalTaskResultDetailMapper {
public int findRegionalTaskResultDetailListTotalCount(RegionalTaskResultDetail param) throws Exception;
public List<RegionalTaskResultDetail> getRegionalTaskResultDetailExcelList(RegionalTaskResultDetail param)throws Exception;
public List<RegionalTaskResultDetail> getTogetherResultDetailList(RegionalTaskResultDetail param) throws Exception;
public int getTogetherResultDetailListTotalCount(RegionalTaskResultDetail param) throws Exception;
}
......@@ -20,7 +20,11 @@ public interface RegionalTaskResultMapper {
public List<RegionalTaskResult> findRegionalTaskResultList(QueryRegionalTaskResult param) throws Exception;
public int findRegionalTaskResultListTotalCount(QueryRegionalTaskResult param) throws Exception;
public List<RegionalTaskResult> findRegionalTaskResultListById(String taskId) throws Exception;
Integer regionalTaskDetailIsExist(String taskId) throws Exception;
Integer regionalTaskDetailIsExist(RegionalTaskResultDetail detail) throws Exception;
public void saveRegionalTaskResultDetail(RegionalTaskResultDetail regionalTaskResultDetail) throws Exception;
public void updateRegionalTaskResultDetail(RegionalTaskResultDetail regionalTaskResultDetail) throws Exception;
Integer togetherDetailIsExist(RegionalTaskResultDetail detail) throws Exception;
public void saveTogetherDetail(RegionalTaskResultDetail detail) throws Exception;
public void updateTogetherDetail(RegionalTaskResultDetail detail) throws Exception;
}
......@@ -20,7 +20,6 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import sun.misc.BASE64Encoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.DecimalFormat;
......@@ -67,13 +66,13 @@ public class RegionalAnalysisController {
}else if("RUNNING".equals(task.getState())){
state = "执行中";
}else if("FINISHED".equals(task.getState())){
state = "数据处理中";
state = "标识号调取完成";
}else if("TIMEOUT".equals(task.getState())){
state = "计算超时";
}else if("ERROR".equals(task.getState())){
state = "执行错误";
}else if("HANDLE".equals(task.getState())){
state = "已完成";
}else if("END".equals(task.getState())){
state = "比对碰撞已完成";
}
String progress = "";
if("1".equals(task.getProgress())){
......@@ -240,13 +239,13 @@ public class RegionalAnalysisController {
taskVO.setState("运行中");
break;
case "FINISHED":
taskVO.setState("数据处理中");
taskVO.setState("标识号调取完成");
break;
case "TIMEOUT":
taskVO.setState("计算超时");
break;
case "HANDLE":
taskVO.setState("已完成");
case "END":
taskVO.setState("比对碰撞已完成");
break;
case "ERROR":
taskVO.setState("执行错误");
......@@ -501,7 +500,7 @@ public class RegionalAnalysisController {
ResultVO resultVO = null;
try{
//String taskId = "123123131231";
String taskId = HttpUtil.doPost(REGION_ALANALYSIS_URL,paramStr);
String taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,paramStr);
if( null != taskId && !taskId.isEmpty() && !taskId.startsWith("Rate")){
JSONObject jsonObject = JSONObject.parseObject(paramStr);
RegionalTask regionalTask = new RegionalTask();
......@@ -600,9 +599,7 @@ public class RegionalAnalysisController {
private String clzp(RegionalTaskResultDetail tsaf) {
String zp = null;
if(tsaf.getRyzp() != null){
// 对字节数组Base64编码 处理图片
BASE64Encoder encoder = new BASE64Encoder();
zp = encoder.encode(tsaf.getRyzp());// 返回Base64编码过的字节数组字符串
zp = new String(tsaf.getRyzp());// 返回Base64编码过的字节数组字符串
}
return zp;
}
......
package com.founder.interservice.regionalanalysis.model;
import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Data
@Entity
@DynamicUpdate
@Table(name = "REGIONALTASKRESULTDETAIL")
public class RegionalTaskResultDetail {
@Id
private String XXZJBH;
@Transient
private String taskId;
private String taskResultId;
private String objectType;
private String objectTypeName;
private String objectValue;
private int count; //伴随次数
private String birthday;
private String name;
private byte[] ryzp;
......@@ -33,14 +29,10 @@ public class RegionalTaskResultDetail {
private String sex;
private String zjlx;
private String zjlxCode;
@Transient
private Date djsj;
private int startNum;
@Transient
private int endNum;
@Transient
private String csrqStart;
@Transient
private String csrqEnd;
@Transient
private String ryzpStr;
}
package com.founder.interservice.regionalanalysis.repository;
import com.founder.interservice.regionalanalysis.model.RegionalTask;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResult;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* @ClassName: RegionalRepository
* @Auther: 曹鹏
......@@ -12,5 +15,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @Version: 1.0
*/
public interface RegionalTaskResultRepository extends JpaRepository<RegionalTaskResult,String>,JpaSpecificationExecutor<RegionalTaskResult> {
public List<RegionalTaskResult> findAllByTaskId(String taskId);
}
......@@ -41,7 +41,7 @@ public interface RegionalAnalysisService {
int findRegionalTaskResultListTotalCount(QueryRegionalTaskResult param) throws Exception;
List<RegionalTaskResult> findRegionalTaskResultListById(String taskId)throws Exception;
boolean regionalTaskDetailIsExist(String xxzjbh) throws Exception;
boolean regionalTaskDetailIsExist(RegionalTaskResultDetail detail) throws Exception;
public void saveRegionalTaskResultDetail(RegionalTaskResultDetail regionalTaskResultDetail) throws Exception;
public void updateRegionalTaskResultDetail(RegionalTaskResultDetail regionalTaskResultDetail) throws Exception;
......
......@@ -178,10 +178,10 @@ public class RegionalAnalysisServiceImpl implements RegionalAnalysisService {
}
@Override
public boolean regionalTaskDetailIsExist(String xxzjbh) {
public boolean regionalTaskDetailIsExist(RegionalTaskResultDetail detail) {
boolean flag = false;
try{
int count=regionalTaskResultMapper.regionalTaskDetailIsExist(xxzjbh);
int count=regionalTaskResultMapper.regionalTaskDetailIsExist(detail);
if(count>0){
flag=true;
}
......
......@@ -55,7 +55,7 @@ public class ScheduledService {
* @Author: cao peng
* @date: 2018/8/22 0022-16:35
*/
@Scheduled(initialDelay = 300000,fixedDelay = 180000) //项目启动后延迟两分钟执行,每次执行完后两分钟后再次执行
@Scheduled(initialDelay = 60000,fixedDelay = 180000) //项目启动后延迟两分钟执行,每次执行完后两分钟后再次执行
public void queryTaskResult(){
System.out.println("=============开始执行定时任务================");
System.out.println("线程名称========== " + Thread.currentThread().getName());
......@@ -72,33 +72,25 @@ public class ScheduledService {
}
});
if(taskList != null && !taskList.isEmpty()){
for (RegionalTask task:taskList) {
String status_url = REGIONAL_ANALYSIS_TASK_STATUS + "&taskId="+task.getTaskId();
String statusStr = HttpUtil.doGet(status_url);
//String statusStr = "{\"progress\":0.8,\"state\":\"TIMEOUT\"}";
while(statusStr == null || statusStr.isEmpty() || !statusStr.startsWith("{")){
statusStr = HttpUtil.doGet(status_url);
Thread.sleep(1000);
}
JSONObject jsonObject = JSONObject.parseObject(statusStr);
String progress = jsonObject.getString("progress"); //进度
String state = jsonObject.getString("state"); //状态
String taskId = null,progress=null,state=null,result=null;Map<String,String> taskMap=null;
for (RegionalTask task:taskList) {
taskId = task.getTaskId();
//查询比对结果状态
taskMap = queryTaskStates(taskId);
progress = taskMap.get("progress");
state = taskMap.get("state");
if("1".equals(progress) && "FINISHED".equals(state)){
String info_url = REGIONAL_ANALYSIS_TASK_INFO + "&taskId=" + task.getTaskId();
String taskInfoResult = HttpUtil.doGet(info_url);
String info_url = REGIONAL_ANALYSIS_TASK_INFO + "&taskId=" + taskId;
String taskInfoResult = HttpUtil.getWaData(info_url);
//String taskInfoResult = "{\"results\":[],\"status\":\"ok\"}";
while(taskInfoResult == null || taskInfoResult.isEmpty() || !taskInfoResult.startsWith("{")){
//如果查询失败 让线程睡眠一秒钟 再次查询
taskInfoResult = HttpUtil.doGet(info_url);
Thread.sleep(1000);
}
//调取结果成功 然后将结果保存入库
if(!taskInfoResult.startsWith("Rate")){
if(null != taskInfoResult && taskInfoResult.startsWith("{")){
getAndSaveInfo(taskInfoResult,task);
updateTaskStates(taskId,progress,state);
}
}
//判断当前任务状态和查询任务状态是否一致,如果不一致 进行更新
if(!state.equals(task.getState())){
updateTaskStates(task.getTaskId(), progress, state);
}
}
}
......@@ -108,251 +100,106 @@ public class ScheduledService {
}
/**
* 通过区域碰撞的结果调取与其关联的数据
* 项目启动后5分钟执行,每隔五分钟执行一次
* 第二步,调取标识号的关联信息
* 1.将比对碰撞首次调取标识号成功的任务过滤出来即状态位为FINISHED的
* 2.开启新线程调取标识号的关联数据
* 3.调取标识号关联数据完成,然后更新任务
*/
//@Scheduled(initialDelay = 300000, fixedDelay = 300000)
public void getAndSaveQyjgxs() throws Exception {
System.out.println("-------------------数据处理线程开始执行----------------");
//1 下去查询任务表中status = "FINISHED"的任务
@Scheduled(initialDelay = 120000,fixedDelay = 60000) //项目启动后延迟两分钟执行,每次执行完后两分钟后再次执行
public void queryFinishTaskResult(){
System.out.println("=============开始执行调取关联数据定时任务================");
System.out.println("线程名称========== " + Thread.currentThread().getName());
try{
//1 下去查询任务表中status = "QUEUEING","STARTING","RUNNING"的任务
List<RegionalTask> taskList = regionalTaskRepository.findAll(new Specification<RegionalTask>() {
@Override
public Predicate toPredicate(Root<RegionalTask> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> list = new ArrayList<>();
Expression<String> exp = root.<String>get("state");
list.add(exp.in(Arrays.asList("FINISHED")));
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
Predicate p1 = criteriaBuilder.like(root.get("taskCaseId").as(String.class), "A%");
Predicate p2 = criteriaBuilder.equal(root.get("state").as(String.class), "FINISHED");
criteriaQuery.where(criteriaBuilder.and(p1,p2));
return criteriaQuery.getRestriction();
}
});
if (taskList != null && !taskList.isEmpty()) {
for (RegionalTask task : taskList) {
List<RegionalTaskResult> resultsList = regionalAnalysisService.findRegionalTaskResultListById(task.getTaskId());
if (resultsList != null && !resultsList.isEmpty()) {
for (RegionalTaskResult result : resultsList) {
String objType = result.getObjectType();
String objValue = result.getObjectValue();
if (objValue != null && !"".equals(objValue)) {
//车牌
if (Arrays.asList("6424", "6422", "6423", "7888").contains(objType)) {
saveCpxx(result);
} else if (Arrays.asList("558", "4615").contains(objType)) {
//qq和微信需要再查一层
saveQqWechat(result);
} else if ("4314".equals(objType)) { //IMSI
saveRyxx(result);
}
}
}
}
//修改状态HANDLE:已完成
regionalAnalysisService.updateTaskStates(task.getTaskId(), "1", "HANDLE");
}
}
}
private void saveCpxx(RegionalTaskResult result) throws Exception {
RegionalTaskResultDetail regionalTaskResultDetail = new RegionalTaskResultDetail();
/*1 通过车牌号调取车辆所有人信息 */
if (!StringUtil.ckeckEmpty(result.getObjectValue())) {
regionalTaskResultDetail.setTaskResultId(result.getXXZJBH());
regionalTaskResultDetail.setObjectType(result.getObjectType());
regionalTaskResultDetail.setObjectTypeName(result.getObjectTypeName());
regionalTaskResultDetail.setObjectValue(result.getObjectValue());
regionalTaskResultDetail.setXXZJBH(KeyUtil.getUniqueKey("EDZ"));
//1、 通过车牌号码调取对应的拥有人信息
JSONObject jsonObject = iphoneTrackService.getObjectRelation(result.getObjectValue());
if (jsonObject != null) {
JSONArray jsonArray = jsonObject.getJSONArray("results");
if (jsonArray != null && jsonArray.size() > 0) {
for (int j = 0; j <= jsonArray.size() - 1; j++) {
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType");
if (relativeType != null && "4398".equals(relativeType)) { //关系类型为 所有人
String zjhm = resObj.getString("objectToValue"); //证件号码
String zjlxName = resObj.getString("objectToTypeName"); //证件类型名称
String zjlxCode = resObj.getString("objectToType"); //证件类型代码
if (StringUtil.ckeckEmpty(regionalTaskResultDetail.getZjhm())) {
regionalTaskResultDetail.setZjhm(zjhm);
regionalTaskResultDetail.setZjlx(zjlxName);
regionalTaskResultDetail.setZjlxCode(zjlxCode);
} else {
if (!regionalTaskResultDetail.getZjlx().equals("1")) { //如果已经存入不是身份证 则进行覆盖更新
if (zjlxCode.equals("1")) {
regionalTaskResultDetail.setZjhm(zjhm);
regionalTaskResultDetail.setZjlx(zjlxName);
regionalTaskResultDetail.setZjlxCode(zjlxCode);
}
}
}
System.out.println("开始查询ddddd============================================================");
System.out.println(taskList);
if(taskList != null && !taskList.isEmpty()){
for (RegionalTask task:taskList) {
List<RegionalTaskResult> taskResults = taskResultRepository.findAllByTaskId(task.getTaskId());
//保存区域碰撞结果翻译后的数据
getAndSaveRydetail(taskResults);
updateTaskStates(task.getTaskId(), "2", "END");
}
}
}catch (Exception e){
e.printStackTrace();
}
}
if ("1".equals(regionalTaskResultDetail.getZjlxCode()) && !StringUtil.ckeckEmpty(regionalTaskResultDetail.getZjhm())) { //类型为1 为身份证号
//3 通过身份证号调取二代证信息
regionalTaskResultDetail = getEdzxxForSfzh(regionalTaskResultDetail);
}
boolean isExist = regionalAnalysisService.regionalTaskDetailIsExist(result.getXXZJBH());
if (!isExist) {
regionalAnalysisService.saveRegionalTaskResultDetail(regionalTaskResultDetail);
} else {
regionalAnalysisService.updateRegionalTaskResultDetail(regionalTaskResultDetail);
}
}
}
private void saveQqWechat(RegionalTaskResult result) throws Exception {
RegionalTaskResultDetail regionalTaskResultDetail = new RegionalTaskResultDetail();
String IMSI = null;
if (!StringUtil.ckeckEmpty(result.getObjectValue())) {
regionalTaskResultDetail.setObjectType(result.getObjectType());
regionalTaskResultDetail.setObjectTypeName(result.getObjectTypeName());
regionalTaskResultDetail.setObjectValue(result.getObjectValue());
regionalTaskResultDetail.setTaskResultId(result.getXXZJBH());
regionalTaskResultDetail.setXXZJBH(KeyUtil.getUniqueKey("EDZ"));
//1.通过qq或者wechatid查询IMSI号
JSONObject jsonObject = iphoneTrackService.getObjectRelation(result.getObjectValue());
if (jsonObject != null) {
JSONArray jsonArray = jsonObject.getJSONArray("results");
if (jsonArray != null && jsonArray.size() > 0) {
for (int j = 0; j <= jsonArray.size() - 1; j++) {
JSONObject resObj = jsonArray.getJSONObject(j);
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 558(QQ) 4615(WECHAT_ID)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 4314(IMSI)
if (Arrays.asList("558", "4615").contains(objectFromType)
&& "4314".equals(objectToType) && result.getObjectValue().equals(objectFromValue)) {
IMSI = resObj.getString("objectToValue");
break;
}
}
}
}
if (IMSI != null && IMSI != "") {
//2、通过IMSI号调取对应的电话号码
regionalTaskResultDetail.setSjhm(getSjhmForImsi(result.getObjectValue()));
}
//3 通过手机号码调取身份证号
if (!StringUtil.ckeckEmpty(regionalTaskResultDetail.getSjhm())) {
String sfzh = getSfzhForSjhm(regionalTaskResultDetail.getSjhm());
regionalTaskResultDetail.setZjhm(sfzh);
}
//4 通过身份证号调取二代证信息
if (!StringUtil.ckeckEmpty(regionalTaskResultDetail.getZjhm())) {
regionalTaskResultDetail = getEdzxxForSfzh(regionalTaskResultDetail);
}
boolean isExist = regionalAnalysisService.regionalTaskDetailIsExist(result.getXXZJBH());
if (!isExist) {
regionalAnalysisService.saveRegionalTaskResultDetail(regionalTaskResultDetail);
} else {
regionalAnalysisService.updateRegionalTaskResultDetail(regionalTaskResultDetail);
}
}
}
private void saveRyxx(RegionalTaskResult result) throws Exception {
RegionalTaskResultDetail regionalTaskResultDetail = new RegionalTaskResultDetail();
regionalTaskResultDetail.setXXZJBH(KeyUtil.getUniqueKey("EDZ"));
if (!StringUtil.ckeckEmpty(result.getObjectValue())) {
regionalTaskResultDetail.setObjectType(result.getObjectType());
regionalTaskResultDetail.setObjectTypeName(result.getObjectTypeName());
regionalTaskResultDetail.setObjectValue(result.getObjectValue());
regionalTaskResultDetail.setTaskResultId(result.getXXZJBH());
//1、 通过IMSI号调取对应的电话号码
regionalTaskResultDetail.setSjhm(getSjhmForImsi(result.getObjectValue()));
//2 通过手机号码调取身份证号
if (!StringUtil.ckeckEmpty(regionalTaskResultDetail.getSjhm())) {
String sfzh = getSfzhForSjhm(regionalTaskResultDetail.getSjhm());
regionalTaskResultDetail.setZjhm(sfzh);
}
//3 通过身份证号调取二代证信息
if (!StringUtil.ckeckEmpty(regionalTaskResultDetail.getZjhm())) {
regionalTaskResultDetail = getEdzxxForSfzh(regionalTaskResultDetail);
}
boolean isExist = regionalAnalysisService.regionalTaskDetailIsExist(result.getXXZJBH());
if (!isExist) {
regionalAnalysisService.saveRegionalTaskResultDetail(regionalTaskResultDetail);
} else {
regionalAnalysisService.updateRegionalTaskResultDetail(regionalTaskResultDetail);
}
}
}
/**
* 通过手机号码获取身份证号
*
* @param sjhm
* @return
* 通过区域碰撞的结果 使用第四个接口调取关联数据
*/
private String getSfzhForSjhm(String sjhm) {
String sfzh = null;
JSONObject jsonObj = iphoneTrackService.getObjectRelationAll(sjhm);
if (jsonObj != null && "1".equals(jsonObj.getString("objType"))) {
String zjhm = jsonObj.getString("objValue");
if (StringUtil.ckeckEmpty(zjhm)) { //如果第四个接口获取的身份证号为空 则使用第一个接口进行获取
JSONObject jsonObject1 = iphoneTrackService.getObjectRelation(sjhm);
if (jsonObject1 != null) {
JSONArray jsonArray = jsonObject1.getJSONArray("results");
if (jsonArray != null && jsonArray.size() > 0) {
for (int j = 0; j <= jsonArray.size() - 1; j++) {
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString( "relativeType"); //关联类型 20(联系方式)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 1(身份证号码)
if ("20".equals(relativeType) && sjhm.equals(objectFromValue)
&& Arrays.asList("20", "4394", "3996").contains(objectFromType) && "1".equals(objectToType)) {
String zjhm1 = resObj.getString("objectToValue");
sfzh = zjhm1;
break;
}
}
}
}
public void getAndSaveRydetail(List<RegionalTaskResult> resultsList) throws Exception {
if (resultsList != null && !resultsList.isEmpty()) {
for (RegionalTaskResult result : resultsList) {
String objType = result.getObjectType();
String objValue = result.getObjectValue();
String objName = result.getObjectTypeName();
if (objValue != null && !"".equals(objValue)) {
//MAC地址、用户名、淘宝旺旺号不去调取关联数据,其它类型都使用第四个接口调取
if (!Arrays.asList("4329", "4342","45282").contains(objType)) {
JSONObject jsonObj = iphoneTrackService.getObjectRelationAll(objValue);//使用网安第三个接口调取关联数据
if (jsonObj != null && !jsonObj.isEmpty()) { //说明根节点是身份证号
RegionalTaskResultDetail detail = new RegionalTaskResultDetail();
detail.setTaskResultId(result.getXXZJBH());
detail.setXXZJBH(KeyUtil.getUniqueKey("EDZ"));
detail.setObjectType(objType);
detail.setObjectValue(objValue);
detail.setObjectTypeName(objName);
String objType2 = jsonObj.getString("objType");
String objValue2 = jsonObj.getString("objValue");
if("1".equals(objType2) && !objValue2.isEmpty()){
detail.setZjlxCode("004");
detail.setZjlx("身份证号");
detail.setZjhm(objValue2);
detail = getEdzxxForSfzh(detail); //获取二代证信息
//根据身份证判断是否存在 如果存在更新 不存在新增
RegionalTaskResultDetail param = new RegionalTaskResultDetail();
param.setObjectType(objType);
param.setObjectValue(objValue);
boolean isExist = regionalAnalysisService.regionalTaskDetailIsExist(param);
if (!isExist) {
regionalAnalysisService.saveRegionalTaskResultDetail(detail);
} else {
sfzh = zjhm; //如果第四个接口获取的身份证号码 不为空 则直接赋值
}
regionalAnalysisService.updateRegionalTaskResultDetail(detail);
}
}else if(Arrays.asList("20","4394","3996","6003").contains(objType2)){
//手机号码
detail.setSjhm(objValue2);
RegionalTaskResultDetail param = new RegionalTaskResultDetail();
param.setObjectType(objType);
param.setObjectValue(objValue);
boolean isExist = regionalAnalysisService.regionalTaskDetailIsExist(param);
if (!isExist) {
regionalAnalysisService.saveRegionalTaskResultDetail(detail);
} else {
regionalAnalysisService.updateRegionalTaskResultDetail(detail);
}
return sfzh;
}
/**
* 通过IMSI号码地球对应的手机号码
*
* @param
* @return
*/
private String getSjhmForImsi(String imsi) {
String sjhmRes = null;
JSONObject jsonObject = iphoneTrackService.getObjectRelation(imsi);
if (jsonObject != null) {
JSONArray jsonArray = jsonObject.getJSONArray("results");
if (jsonArray != null && jsonArray.size() > 0) {
for (int j = 0; j <= jsonArray.size() - 1; j++) {
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 4402(手机-IMSI)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 4314(IMSI)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
if ("4402".equals(relativeType) && "4314".equals(objectFromType)
&& Arrays.asList("20", "4394", "3996").contains(objectToType) && imsi.equals(objectFromValue)) {
String sjhm = resObj.getString("objectToValue");
if (null != sjhm && 11 == sjhm.length()) {
sjhmRes = sjhm; //将得到的手机号码赋值到对象中
break;
}
}
}
}
}
return sjhmRes;
}
/**
* 通过身份证号获取二代证信息
*
......@@ -368,6 +215,7 @@ public class ScheduledService {
regionalTaskResultDetail.setAge(String.valueOf(DateUtil.getAge(tbStRy.getCsrqRqgzxx()))); //age
}
regionalTaskResultDetail.setName(tbStRy.getXm());//姓名
regionalTaskResultDetail.setSex(tbStRy.getXbdm());//性别
if (tbStRy.getEdzzplj() != null) {
regionalTaskResultDetail.setRyzp(tbStRy.getEdzzplj().getBytes());//人员照片
}
......@@ -375,7 +223,7 @@ public class ScheduledService {
}
/**
* 保存任务结果数据
* 保存任务结果数据(调取标识号完成,即第一步完成)
*
* @param taskInfoResult
* @param task
......@@ -387,11 +235,12 @@ public class ScheduledService {
JSONArray jsonArray = o.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
List<RegionalTaskResult> taskResults = jsonArray.toJavaList(RegionalTaskResult.class);
taskResults = removeDuplicate(taskResults);
if(taskResults != null && !taskResults.isEmpty()){
Iterator<RegionalTaskResult> resultIterator = taskResults.iterator();
while (resultIterator.hasNext()){
RegionalTaskResult r = resultIterator.next();
//如果结果中ObjectValue为空值,则删除,不予保存
//如果结果中ObjectValue为空值,则删除,不予保存。这是数据结果不规范导致
if(StringUtil.ckeckEmpty(r.getObjectValue())){
resultIterator.remove();
}
......@@ -399,6 +248,7 @@ public class ScheduledService {
r.setXXZJBH(KeyUtil.getUniqueKey("TR"));
r.setDjsj(new Date());
}
//保存区域碰撞结果数据
taskResultRepository.save(taskResults);
}
}
......@@ -407,6 +257,49 @@ public class ScheduledService {
}
}
/**
* 查询任务状态
* @param taskId
* @return
*/
public Map<String,String> queryTaskStates(String taskId){
JSONObject jsonObject = null;
String progress=null ,state=null;
Map<String,String> map = new HashMap();
String status_url = REGIONAL_ANALYSIS_TASK_STATUS + "&taskId="+taskId;
String result = HttpUtil.getWaData(status_url);
//String statusStr = "{\"progress\":0.8,\"state\":\"TIMEOUT\"}";
if(null != result && result.startsWith("{")){
jsonObject = JSONObject.parseObject(result);
}
if(jsonObject!=null){
progress = jsonObject.getString("progress"); //进度
state = jsonObject.getString("state"); //状态
}
map.put("progress",progress);
map.put("state",state);
return map;
}
/**
* 去除重复数据
* @param list
* @return
*/
public static List<RegionalTaskResult> removeDuplicate(List<RegionalTaskResult> list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).getObjectValue().equals(list.get(i).getObjectValue())&&list.get(j).getObjectType().equals(list.get(i).getObjectType())) {
list.remove(j);
}
}
}
return list;
}
/**
* 修改任务状态
* @param taskId
......@@ -421,5 +314,4 @@ public class ScheduledService {
throw new RuntimeException(e);
}
}
}
package com.founder.interservice.regionalanalysis.service.impl;
import com.founder.interservice.util.HttpUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import static com.founder.interservice.util.PropertieUtil.writeProperties;
@Component
@Async
public class TestSendTask {
@Value(value = "${wabigdata.regionalAnalysisTask.url}")
private String REGION_ALANALYSIS_URL; //发送任务接口
@Value(value = "${wabigdata.trackTravelTogetherForPhoneTask.url}")
private String TOGETHER_TASK_URL;
/**
* 定时任务测试区域碰撞接口发送
* 定时线程 项目启动后两分钟后开始执行,每隔三分钟执行一次
*/
@Scheduled(initialDelay = 1000,fixedDelay = 300000) //项目启动后1秒开始执行 每个五分钟执行一次
public void doTestSendTask(){
System.out.println("测试线程开始执行");
long day1 = System.currentTimeMillis();
String param0 = "{\"taskName\":\"0308测试任务碰撞\",\"perform\":{\"expression\":\"A1∩A2\",\"regional\":[{\"startTime\":1552017600000,\"endTime\":1552028400000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.45365179918545,\"w\":29.72276345368788},{\"j\":106.451926590033,\"w\":29.715865237868453},{\"j\":106.4610922150265,\"w\":29.713692156324868},{\"j\":106.46306846181835,\"w\":29.721531105706845}]},{\"startTime\":1551999600000,\"endTime\":1552003200000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.47868907688176,\"w\":29.739880302076706},{\"j\":106.47495138004449,\"w\":29.73141713703786},{\"j\":106.4876030212831,\"w\":29.728832496999747},{\"j\":106.49098157454996,\"w\":29.73848800075083}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
String param1 = "{\"taskName\":\"0308测试数据2\",\"perform\":{\"expression\":\"A1∩A2∩A3\",\"regional\":[{\"startTime\":1551999600000,\"endTime\":1552006800000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.48005544068074,\"w\":29.740317929307647},{\"j\":106.47717991858055,\"w\":29.733483884898916},{\"j\":106.487602981047,\"w\":29.729836485935863},{\"j\":106.49098157194565,\"w\":29.738551000033393}]},{\"startTime\":1552024800000,\"endTime\":1552032000000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.45424901331486,\"w\":29.721526874468},{\"j\":106.45194961015589,\"w\":29.715507218808916},{\"j\":106.46251664004187,\"w\":29.71292474618398},{\"j\":106.46416978345204,\"w\":29.721141012674796}]},{\"startTime\":1552006800000,\"endTime\":1552014000000,\"name\":\"A3\",\"source\":[0],\"lc\":[{\"j\":106.58392451501742,\"w\":29.64318553331031},{\"j\":106.5831524663565,\"w\":29.636814327637232},{\"j\":106.59168777893633,\"w\":29.636053074748915},{\"j\":106.59156256674235,\"w\":29.64322514505666}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
String param2 = "{\"taskName\":\"0308测试数据4\",\"perform\":{\"expression\":\"A1∩A2∩A3∩A4\",\"regional\":[{\"startTime\":1551999600000,\"endTime\":1552006800000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.48027044321213,\"w\":29.741696698155923},{\"j\":106.47574257055277,\"w\":29.732168337439152},{\"j\":106.48975961496463,\"w\":29.72908133193557},{\"j\":106.49392941328695,\"w\":29.738171047468047}]},{\"startTime\":1552017600000,\"endTime\":1552032000000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.45439301623477,\"w\":29.722467721445025},{\"j\":106.45101436816898,\"w\":29.715069150192157},{\"j\":106.46266069910358,\"w\":29.712422607924626},{\"j\":106.46524813252731,\"w\":29.719884951342372}]},{\"startTime\":1552006800000,\"endTime\":1552014000000,\"name\":\"A3\",\"source\":[0],\"lc\":[{\"j\":106.58424758119362,\"w\":29.644001213955516},{\"j\":106.58291843613114,\"w\":29.63546456416532},{\"j\":106.59474361876339,\"w\":29.63510813983358},{\"j\":106.59467135759317,\"w\":29.644807140999305}]},{\"startTime\":1551931200000,\"endTime\":1551938400000,\"name\":\"A4\",\"source\":[0],\"lc\":[{\"j\":107.3790778161817,\"w\":30.309489039553455},{\"j\":107.37631263222399,\"w\":30.306961472257793},{\"j\":107.37931191647654,\"w\":30.304610307340198},{\"j\":107.38302982364938,\"w\":30.30771577718766}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
Random ra =new Random();
int i = ra.nextInt(2);
String taskId = null;
String name = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date());
int qycount = 0;
switch(i){
case 0:
qycount = 2;
break;
case 1:
qycount = 3;
break;
case 2:
qycount = 4;
break;
}
try{
switch(i){
case 0:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param0);
break;
case 1:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param1);
break;
case 2:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param2);
break;
}
String logValue = null;
if ("Rate Limit".equals(taskId) || "null".equals(taskId)) {
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:FAIL;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else if(taskId == null || "".equals(taskId)){
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:TIMEOUT;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else{
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:SUCCESS;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}
writeProperties("regionalTaskLogFile.properties", name, logValue);
}catch (Exception e){
try{
e.printStackTrace();
String logValue="区域碰撞日志:区域个数:"+ qycount + ";任务状态:TIMEOUT;任务编号:null;用时"+(System.currentTimeMillis()-day1+"毫秒");
writeProperties("regionalTaskLogFile.properties", name, logValue);
}catch (Exception e1){
e1.printStackTrace();
}
}
}
@Scheduled(initialDelay = 2000,fixedDelay = 300000) //项目启动后两秒开始执行一次 每个五分钟执行一次
public void doTestTogetherSendTask(){
System.out.println("测试伴随线程开始执行");
long day1 = System.currentTimeMillis();
String taskId = null;
String name = "T"+new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date());
try{
String url = TOGETHER_TASK_URL + "&objectType=" + "460029789430171"
+ "&objectValue=" + "4314"
+ "&taskName="+"测试伴随任务"
+ "&taskCaseId=" + "A5001231231234234"
+ "&startTime=" + System.currentTimeMillis()
+ "&endTime=" + System.currentTimeMillis();
taskId = HttpUtil.getWaData(url);
String logValue = null;
if("Rate Limit".equals(taskId) || "null".equals(taskId)){
logValue="伴随任务:任务状态:FAIL;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else if(taskId == null || "".equals(taskId)){
logValue="伴随任务:任务状态:TIMEOUT;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else{
logValue="伴随任务:任务状态:SUCCESS;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}
writeProperties("TogetherTaskLogFile.properties", name, logValue);
}catch (Exception e){
try{
e.printStackTrace();
String logValue="伴随任务:任务状态:TIMEOUT;任务编号:null;用时"+(System.currentTimeMillis()-day1+"毫秒");
writeProperties("TogetherTaskLogFile.properties", name, logValue);
}catch (Exception e1){
e1.printStackTrace();
}
}
}
}
package com.founder.interservice.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.interservice.VO.TrackVO;
......@@ -18,10 +19,13 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Example;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.founder.interservice.mapper.xzxt.ObjectRelationMapper;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 手机轨迹service类
......@@ -50,17 +54,10 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
JSONObject jsonObject = null;
try{
String url = relationGetAll_url + "&objectValue="+obj;
String result = HttpUtil.doGet(url);
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
}
String result = HttpUtil.getWaData(url);
if(null != result && result.startsWith("{")){
jsonObject = JSONObject.parseObject(result);
}
}
return jsonObject;
}catch (InterServiceException e){
throw new InterServiceException(ResultEnum.REQUEST_URL_ERROR);
......@@ -82,18 +79,11 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<String> cphmTypes = Arrays.asList("6424","6422","6423","7888"); //汽车蓝色号码、汽车黄色号码、汽车白色号码,摩托车黄色号码
List<String> sjhmTypes = Arrays.asList("20","4394","3996","6003"); //手机号码类别
String url = relationGetAll_url + "&objectValue="+obj;
String result = HttpUtil.doGet(url);
//String result = "{children:[{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068398\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068390\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460023869043189\"}],objType:20,objTypeName:\"联系方式\",objValue:\"15023614997\"},{children:[],objType:7888,objTypeName:\"摩托车黄色号牌\",objValue:\"渝B69914\"},{children:[],objType:7888,objTypeName:\"摩托车黄色号牌\",objValue:\"渝BY7803\"},{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068398\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068390\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460023869043189\"}],objType:3996,objTypeName:\"手机号码\",objValue:\"15023614997\"},{children:[],objType:4394,objTypeName:\"电话号码\",objValue:\"1106265\"},{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"861150031416796\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461690\"},{children:[],objType:4615,objTypeName:\"微信ID\",objValue:\"77545929\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461694\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460003714894770\"}],objType:4394,objTypeName:\"电话号码\",objValue:\"13883114146\"},{children:[],objType:437,objTypeName:\"号牌号码\",objValue:\"渝BY7803\"},{children:[],objType:7888,objTypeName:\"摩托车黄色号牌\",objValue:\"渝BEN020\"},{children:[],objType:20,objTypeName:\"联系方式\",objValue:\"1106265\"},{children:[],objType:20,objTypeName:\"联系方式\",objValue:\"1388311416\"},{children:[],objType:437,objTypeName:\"号牌号码\",objValue:\"渝BEN020\"},{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068398\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"865437021068390\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460023869043189\"}],objType:4394,objTypeName:\"电话号码\",objValue:\"15023614997\"},{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"861150031416796\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461690\"},{children:[],objType:4615,objTypeName:\"微信ID\",objValue:\"77545929\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461694\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460003714894770\"}],objType:3996,objTypeName:\"手机号码\",objValue:\"13883114146\"},{children:[],objType:437,objTypeName:\"号牌号码\",objValue:\"渝B69914\"}],objType:1,objTypeName:\"身份证号码\",objValue:\"510224197106221113\"}";
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
}
String result = HttpUtil.getWaData(url);
//String result = "{children:[{children:[{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"861150031416796\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461690\"},{children:[],objType:4615,objTypeName:\"微信ID\",objValue:\"77545929\"},{children:[],objType:4315,objTypeName:\"IMEI\",objValue:\"863093030461694\"}],objType:4314,objTypeName:\"IMSI\",objValue:\"460003714894770\"}],objType:4394,objTypeName:\"电话号码\",objValue:\"13883114146\"}";
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
}
}
if(jsonObejct != null){
resultObj = new ResultObj();
String objType= jsonObejct.getString("objType");
......@@ -162,6 +152,7 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<JSONObject> imeis = new ArrayList<JSONObject>();
List<JSONObject> imsis = new ArrayList<JSONObject>();
if(array != null && !array.isEmpty()){
//1.这里多线程处理 chent
for(int i = 0;i < array.size(); i++){
JSONObject o2 = array.getJSONObject(i);
if(o2 != null){
......@@ -205,18 +196,11 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
Map<String,Object> resultMap = null;
JSONObject jsonObejct = null;
String url = gettrack_url + "&objectValue="+obj+"&startTime="+kssj+"&endTime="+jssj;
String result = HttpUtil.doGet(url);
String result = HttpUtil.getWaData(url);
//String result = "{results:[{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1046,sourceName:\"4G认证\",source_md5:\"LN2tJMv88onmPiepM8jPHg==\",timestamp:1547332471000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1689,sourceName:\"全网-无线-4G认证\",source_md5:\"uGs6XAAAAAAZme4lAAAAAA==\",timestamp:1547332471000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1046,sourceName:\"4G认证\",source_md5:\"0avWgKvXYkCJwIe/1Pf+eA==\",timestamp:1547332440000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1689,sourceName:\"全网-无线-4G认证\",source_md5:\"nGs6XAAAAAA4p4sDAAAAAA==\",timestamp:1547332440000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1046,sourceName:\"4G认证\",source_md5:\"lIq5+W6prwop5/ZTZhaQtg==\",timestamp:1547332380000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1689,sourceName:\"全网-无线-4G认证\",source_md5:\"UGs6XAAAAAAmZvkCAAAAAA==\",timestamp:1547332380000,w:29.69584847146971},{address:\"重庆市渝北区龙兴镇白桥社区居委会7楼顶\",base:\"\",j:106.79175689943905,objectType:4314,objectTypeName:\"IMSI\",objectValue:\"\",source:1046,sourceName:\"4G认证\",source_md5:\"ZRK0RtDBYNeub30kSql+rw==\",timestamp:1547332259000,w:29.69584847146971}],status:\"ok\"}";
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
}
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
}
}
if(jsonObejct != null){
JSONArray jsonArray = jsonObejct.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
......@@ -224,11 +208,23 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Track> tracks = jsonArray.toJavaList(Track.class);
List<TrackVO> trackVOs = new ArrayList<TrackVO>();
if(tracks != null && tracks.size() > 0){
for (Track track : tracks ) {
if(track.getTimestamp() != 0){
track.setTimestr(DateUtil.getDateTime(new Date(track.getTimestamp())));
}
if(StringUtil.ckeckEmpty(track.getObjectvalue())){
track.setObjectvalue(obj);
}
//对象转换,将需要的字段返回给前台界面进行展示
TrackVO trackVO = new TrackVO();
BeanUtils.copyProperties(track,trackVO);
trackVOs.add(trackVO);
}
int limit = 120;//批处理量
int size = tracks.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThread thread = new HandleThread(tracks, i * limit, ((i + 1) * limit), trackVOs,obj);
HandleThread thread = new HandleThread(tracks, i * limit, ((i + 1) * limit),obj);
thread.start();
}
resultMap.put("objectfromtype","IMSI");
......@@ -253,14 +249,12 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
private List<Track> data;
private int start;
private int end;
private List<TrackVO> trackVOs;
private String obj;
public HandleThread(List<Track> data, int start, int end, List<TrackVO> trackVOs, String obj) {
public HandleThread(List<Track> data, int start, int end, String obj) {
this.data = data;
this.start = start;
this.end = end;
this.trackVOs = trackVOs;
this.obj=obj;
}
public void run() {
......@@ -273,17 +267,6 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Track> tracks = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
List<Track> paramTracks = new ArrayList<Track>();
for (Track track : tracks ) {
if(track.getTimestamp() != 0){
track.setTimestr(DateUtil.getDateTime(new Date(track.getTimestamp())));
}
if(StringUtil.ckeckEmpty(track.getObjectvalue())){
track.setObjectvalue(obj);
}
//对象转换,将需要的字段返回给前台界面进行展示
TrackVO trackVO = new TrackVO();
BeanUtils.copyProperties(track,trackVO);
trackVOs.add(trackVO);
Track pTrack = new Track();
pTrack.setAddress(track.getAddress());
pTrack.setObjectvalue(track.getObjectvalue());
......@@ -303,62 +286,138 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
}
}
//JSONArray 实现截取
private static JSONArray subArray(JSONArray array, int start, int end){
if (array == null || array.size()==0 || array.size() <= end) {
return null;
}
JSONArray result = new JSONArray();
for(int i= start; i<=end; i++) {
result.add(array.getJSONObject(i));
}
return result;
}
/**
* 多线程批处理(saveObjectRelationLocal)
* by changchao
*/
class HandleThreadCphms extends Thread {
private List<Map<String,Object>> data;
private int start;
private int end;
private IdcardPhoneCarRalation idRelation;
public HandleThreadCphms(List<Map<String,Object>> data, int start, int end, IdcardPhoneCarRalation idRelation) {
this.data = data;
this.start = start;
this.end = end;
this.idRelation=idRelation;
}
public void run() {
if (start > data.size()) {
return;
}
if (end > data.size()) {
end = data.size();
}
//begin
List<Map<String,Object>> cphms = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
try {
for (Map<String, Object> cphm : cphms) {
String car = cphm.get("objValue").toString();
idRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
idRelation.setCar(car);
idRelation.setPhone("");//只保存身份证号和车牌号关系,所以手机号置空
//根据案事件编号、查询人身份证号和警号,被查询人身份证号和车牌号查询是否已经入库
List<IdcardPhoneCarRalation> idRelations = objectRelationMapper.queryCardPhoneCarRelationLocal(idRelation);
if (idRelations.size() < 1) {
objectRelationMapper.saveIdRelation(idRelation);//--保存身份证号和车牌号--
}
}
}catch(Exception e){
e.printStackTrace();
}
// end
}
}
/**
* 多线程批处理(saveObjectRelationLocal)
* by changchao
*/
class HandleThreadSjhms extends Thread {
private List<Map<String,Object>> data;
private int start;
private int end;
private IdcardPhoneCarRalation idRelation;
@Override
public JSONObject getObjectRelatioNoSave(String obj) throws InterServiceException{
try{
JSONObject jsonObejct = null;
String url = objectrelation_url+"&objectValue="+obj;
String result = HttpUtil.doGet(url);
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
public HandleThreadSjhms(List<Map<String,Object>> data, int start, int end, IdcardPhoneCarRalation idRelation) {
this.data = data;
this.start = start;
this.end = end;
this.idRelation=idRelation;
}
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
public void run() {
if (start > data.size()) {
return;
}
if (end > data.size()) {
end = data.size();
}
return jsonObejct;
}catch (Exception e){
throw new InterServiceException(ResultEnum.REQUEST_URL_ERROR);
//begin
List<Map<String,Object>> sjhms = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
try {
for (Map<String, Object> sjhm : sjhms) {
//主表
String phone = sjhm.get("objValue").toString();
idRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
idRelation.setPhone(phone);
idRelation.setCar("");//只保存身份证号和手机号码关系,所以车牌号置空
//根据查询人身份证号和警号,被查询人身份证号和电话号码查询是否已经入库
List<IdcardPhoneCarRalation> idRelations = objectRelationMapper.queryCardPhoneCarRelationLocal(idRelation);
if (idRelations.size() < 1) {
objectRelationMapper.saveIdRelation(idRelation);//保存身份证号和电话号码
}
IphoneTrackServiceImpl service = new IphoneTrackServiceImpl();
service.savePhoneRelation(sjhm, idRelation.getAsjbh(), idRelation.getSfzh(), idRelation.getJh());//保存电话号码和QQ微信
}
}catch(Exception e){
e.printStackTrace();
}
// end
}
}
/**
* 通过某一对象调取与之有关系的另一对象
* @param obj 参数:可是手机号、身份证号、护照号等等...
* @return
* 多线程批处理(getobjectrelation)
* by changchao
*/
@Override
public JSONObject getObjectRelation(String obj) throws InterServiceException {
JSONObject jsonObejct = null;
String url = objectrelation_url+"&objectValue="+obj;
String result = HttpUtil.doGet(url);
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
class HandleThreadRelations extends Thread {
private List<Relation> data;
private int start;
private int end;
public HandleThreadRelations(List<Relation> data, int start, int end) {
this.data = data;
this.start = start;
this.end = end;
}
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
public void run() {
if (start > data.size()) {
return;
}
if (end > data.size()) {
end = data.size();
}
if(jsonObejct != null){
JSONArray jsonArray = jsonObejct.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
List<Relation> relations = jsonArray.toJavaList(Relation.class);
if(relations != null && !relations.isEmpty()){
List<Relation> relations = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
List<Relation> paramRelations = new ArrayList<Relation>();
relations = removeRelation(relations);
for (Relation r : relations) {
if(!StringUtil.ckeckEmpty(r.getFirst_timestamp())){
r.setFirst_timestamp(DateUtil.getDateTime(new Date(Long.valueOf(r.getFirst_timestamp()))));
......@@ -385,6 +444,54 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
if(paramRelations != null && paramRelations.size() > 0){
relationRepository.save(paramRelations);
}
}
}
@Override
public JSONObject getObjectRelatioNoSave(String obj) throws InterServiceException{
try{
JSONObject jsonObejct = null;
String url = objectrelation_url+"&objectValue="+obj;
String result = HttpUtil.getWaData(url);
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
}
return jsonObejct;
}catch (Exception e){
throw new InterServiceException(ResultEnum.REQUEST_URL_ERROR);
}
}
/**
* 通过某一对象调取与之有关系的另一对象
* @param obj 参数:可是手机号、身份证号、护照号等等...
* @return
*/
@Override
public JSONObject getObjectRelation(String obj) throws InterServiceException {
JSONObject jsonObejct = null;
String url = objectrelation_url+"&objectValue="+obj;
String result = HttpUtil.getWaData(url);
//String result = "{\"results\":[{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"指纹编号\",\"objectToValue\":\"5002316713060001\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"刑总-海鑫-人员基本信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-二代证办理信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-二代证办理信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-看守所人员信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"460010858605079\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"4G-联通-QQ\",\"timestamp\":1545627478000}],\"status\":\"ok\"}";
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
}
if(jsonObejct != null){
JSONArray jsonArray = jsonObejct.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
List<Relation> relations = jsonArray.toJavaList(Relation.class);
if(relations != null && !relations.isEmpty()){
relations = removeRelation(relations);
//多线程处理 chent
int limit = 120;//批处理量
int size = relations.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThreadRelations thread = new HandleThreadRelations(relations, i * limit, ((i + 1) * limit));
thread.start();
}
}
}
}
......@@ -412,32 +519,24 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
idRelation.setSfzh(sfzh);
idRelation.setJh(jh);
idRelation.setIdcard(idcard);
if (null != cphms || cphms.size() !=0){
for (Map<String,Object> cphm:cphms){
String car = cphm.get("objValue").toString();
idRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
idRelation.setCar(car);
idRelation.setPhone("");//只保存身份证号和车牌号关系,所以手机号置空
//根据案事件编号、查询人身份证号和警号,被查询人身份证号和车牌号查询是否已经入库
List<IdcardPhoneCarRalation> idRelations = objectRelationMapper.queryCardPhoneCarRelationLocal(idRelation);
if(idRelations.size() < 1){
objectRelationMapper.saveIdRelation(idRelation);//--保存身份证号和车牌号--
}
}
if (null != cphms && cphms.size() !=0){
//多线程处理 chent
int limit = 120;//批处理量
int size = cphms.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThreadCphms thread = new HandleThreadCphms(cphms, i * limit, ((i + 1) * limit),idRelation);
thread.start();
}
if(null != sjhms || sjhms.size() !=0){
for (Map<String,Object> sjhm:sjhms){
//主表
String phone = sjhm.get("objValue").toString();
idRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
idRelation.setPhone(phone);
idRelation.setCar("");//只保存身份证号和手机号码关系,所以车牌号置空
//根据查询人身份证号和警号,被查询人身份证号和电话号码查询是否已经入库
List<IdcardPhoneCarRalation> idRelations = objectRelationMapper.queryCardPhoneCarRelationLocal(idRelation);
if(idRelations.size() < 1) {
objectRelationMapper.saveIdRelation(idRelation);//保存身份证号和电话号码
}
this.savePhoneRelation(sjhm,asjbh,sfzh,jh);//保存电话号码和QQ微信
if(null != sjhms && sjhms.size() !=0){
//多线程处理 chent
int limit = 120;//批处理量
int size = cphms.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThreadSjhms thread = new HandleThreadSjhms(sjhms, i * limit, ((i + 1) * limit),idRelation);
thread.start();
}
}
}else if("4394".equals(objType)){
......@@ -470,9 +569,16 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
phoneRelation.setSfzh(sfzh);
phoneRelation.setJh(jh);
phoneRelation.setPhone(phone);
if (null != qqhms || qqhms.size() !=0){
for (Map<String,Object> qqhm:qqhms){
//begin
if (null != qqhms && qqhms.size() !=0) {
ExecutorService pool = Executors.newCachedThreadPool();//newCachedThreadPool可缓存线程池
for (Map<String, Object> qqhm : qqhms) {
//System.out.println(list.get(i));
String qq = qqhm.get("objValue").toString();
Runnable run = new Runnable() {
public void run() {
try {
phoneRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
phoneRelation.setQq(qq);
phoneRelation.setWechat("");
......@@ -481,12 +587,24 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
//根据查询人身份证号和警号,被查询人手机号码/QQ查询是否已经入库
List<PhoneQQWeChatRalation> phoneRelations = new ArrayList<PhoneQQWeChatRalation>();
phoneRelations = objectRelationMapper.queryPhoneQqWechatRelationLocal(phoneRelation);
if(phoneRelations.size() < 1) {
if (phoneRelations.size() < 1) {
objectRelationMapper.savePhoenRelation(phoneRelation);//--保存手机号与QQ关系--
}
} catch (Exception e) {
}
}
if (null != wxhms || wxhms.size() !=0){
};
pool.execute(run);
}
System.out.println("[1] done!");
pool.shutdown();
}
//end
//begin
if (null != wxhms && wxhms.size() !=0){
ExecutorService pool = Executors.newCachedThreadPool();//newCachedThreadPool可缓存线程池
for (Map<String,Object> wxhm:wxhms){
String wechat = wxhm.get("objValue").toString();
phoneRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
......@@ -501,8 +619,14 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
objectRelationMapper.savePhoenRelation(phoneRelation);//--保存手机号与微信关系--
}
}
System.out.println("[1] done!");
pool.shutdown();
}
if (null != imeis || imeis.size() !=0){
//end
//begin
if (null != imeis && imeis.size() !=0){
ExecutorService pool = Executors.newCachedThreadPool();//newCachedThreadPool可缓存线程池
for (Map<String,Object> imeihm:imeis){
String imei = imeihm.get("objValue").toString();
phoneRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
......@@ -517,8 +641,14 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
objectRelationMapper.savePhoenRelation(phoneRelation);//--保存手机号与IMEI关系--
}
}
System.out.println("[1] done!");
pool.shutdown();
}
if (null != imsis || imsis.size() !=0){
//end
//begin
if (null != imsis && imsis.size() !=0){
ExecutorService pool = Executors.newCachedThreadPool();//newCachedThreadPool可缓存线程池
for (Map<String,Object> imsihm:imsis){
String imsi = imsihm.get("objValue").toString();
phoneRelation.setXxzjbh(KeyUtil.getUniqueKey("GL"));
......@@ -533,7 +663,10 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
objectRelationMapper.savePhoenRelation(phoneRelation);//--保存手机号与IMEI关系--
}
}
System.out.println("[1] done!");
pool.shutdown();
}
//end
}catch (Exception e ){
e.printStackTrace();
}
......@@ -582,8 +715,10 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
/**
* 对List<JSONObject>中的根据JSONObject中的objValue进行去重
* @return
* 2.开启异步注解 chent
*/
private List<JSONObject> removeJSonObject(List<JSONObject> jsonObjects){
@Async
public List<JSONObject> removeJSonObject(List<JSONObject> jsonObjects){
Set<JSONObject> set = new TreeSet<JSONObject>(new Comparator<JSONObject>() {
@Override
public int compare(JSONObject o1, JSONObject o2) {
......
......@@ -9,6 +9,7 @@ import com.founder.interservice.model.AutoTbStRy;
import com.founder.interservice.regionalanalysis.VO.RegionalTaskResultVO;
import com.founder.interservice.regionalanalysis.model.RegionalTask;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResult;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail;
import com.founder.interservice.service.IphoneTrackService;
import com.founder.interservice.tracktraveltogether.model.TogetherTaskResult;
import com.founder.interservice.tracktraveltogether.model.TrackTogetherTask;
......@@ -204,69 +205,33 @@ public class TrackTogetherContoller {
try{
TrackTogetherTask trackParam = new TrackTogetherTask();
String taskName = new SimpleDateFormat("yyyyMMddHHmm").format(new Date())+"@"+taskCaseId+"@"+objectValue;
trackParam.setTaskName(taskName);
trackParam.setTaskCaseId(taskCaseId);
trackParam.setObjectValue(objectValue);
if(StringUtil.ckeckEmpty(trackParam.getObjectType())){
trackParam.setObjectType("4314");
}else{
trackParam.setObjectType(objectType);
}
if(!StringUtil.ckeckEmpty(startTime)){
trackParam.setTaskName(taskName);//设置任务名称
trackParam.setTaskCaseId(taskCaseId); //设置案件编号
trackParam.setObjectValue(objectValue); //设置需要伴随的标识号
if(!StringUtil.ckeckEmpty(objectType) && !StringUtil.ckeckEmpty(objectValue)
&& !StringUtil.ckeckEmpty(startTime) && !StringUtil.ckeckEmpty(endTime)){
trackParam.setObjectType(objectType);//设置标识号类型
trackParam.setObjectValue(objectValue); //设置需要伴随的标识号
Date kssj = startTime.contains(" ") ? DateUtil.convertStringToDateTime(startTime): DateUtil.convertStringToDate(startTime);
trackParam.setStartTime(kssj);
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
if(!StringUtil.ckeckEmpty(endTime)){
Date jssj = endTime.contains(" ") ? DateUtil.convertStringToDateTime(endTime) : DateUtil.convertStringToDate(endTime);
trackParam.setEndTime(jssj);
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
//1 现使用手机号码调出imsi
if(!StringUtil.ckeckEmpty(trackParam.getObjectValue())){
JSONObject jsonObject = iphoneTrackService.getObjectRelation(trackParam.getObjectValue());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 4402(手机-IMSI)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 4314(IMSI)
if ("4402".equals(relativeType) && "4314".equals(objectToType)
&& Arrays.asList("20","4394","3996").contains(objectFromType) && trackParam.getObjectValue().equals(objectFromValue)){
String imsi = resObj.getString("objectToValue");
if(!StringUtil.ckeckEmpty(imsi)){
trackParam.setImsi(imsi); //将得到IMSI赋值到对象
break;
}
}
}
}
}
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
//trackParam.setObjectValue("42151645456456");
if(!StringUtil.ckeckEmpty(trackParam.getObjectValue())){
//2 拿到imsi后 再去调用伴随接口
String taskId = trackTogetherService.sendTrackTogetherTask(trackParam); //发送任务 并且得到任务编号
//String taskId = "123123123";
if(!StringUtil.ckeckEmpty(taskId) && !taskId.startsWith("Rate")){
trackParam.setTaskId(taskId);
trackParam.setProgress("0");
trackParam.setState("QUEUEING");
trackTogetherService.saveTogetherTask(trackParam);
trackTogetherService.saveTogetherTask(trackParam);//任务保存入库
resultVO = ResultVOUtil.success(taskId);
}else{
resultVO = ResultVOUtil.error(ResultEnum.TASK_SEND_ERROR.getCode(),ResultEnum.TASK_SEND_ERROR.getMessage());
}
}else{
resultVO = ResultVOUtil.error(ResultEnum.TASK_SEND_ERROR.getCode(),ResultEnum.TASK_SEND_ERROR.getMessage());
}
}catch (InterServiceException e){
e.printStackTrace();
resultVO = ResultVOUtil.error(ResultEnum.TASK_SEND_ERROR.getCode(),ResultEnum.TASK_SEND_ERROR.getMessage());
......@@ -305,102 +270,6 @@ public class TrackTogetherContoller {
return jsonObject;
}
/**
*
* @Description: 通过任务编号查询任务结果
* @Param:
* @param taskId 任务编号
* @return: java.util.List<com.founder.interservice.tracktraveltogether.vo.TogetherTaskResultVO>
* @Author: cao peng
* @date: 2018/9/11 0011-21:31
*/
@RequestMapping(value = "/getTogetherTaskResults",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public List<TogetherTaskResultVO> getTaskResults(Integer page, Integer size,String taskId){
List<TogetherTaskResultVO> taskResultVOS = new ArrayList<>();
try {
Page<TogetherTaskResult> resultPage = trackTogetherService.findTogetherTaskResult( page, size,taskId);
List<TogetherTaskResult> taskResults = resultPage.getContent();
if(taskResults != null && !taskResults.isEmpty()){
for(int i = 0; i <= taskResults.size() - 1; i++){
TogetherTaskResultVO taskResultVO = new TogetherTaskResultVO();
BeanUtils.copyProperties(taskResults.get(i),taskResultVO);
if(!StringUtil.ckeckEmpty(taskResultVO.getObjectValue())){
JSONObject jsonObject = iphoneTrackService.getObjectRelation(taskResultVO.getObjectValue());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 4402(手机-IMSI)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 4314(IMSI)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
if ("4402".equals(relativeType) && "4314".equals(objectFromType)
&& Arrays.asList("20","4394","3996").contains(objectToType) && taskResultVO.getObjectValue().equals(objectFromValue)){
String sjhm = resObj.getString("objectToValue");
if(null != sjhm && 11 == sjhm.length()){
taskResultVO.setSjhm(sjhm); //将得到手机号码赋值到对象
break;
}
}
}
}
}
}
//2 通过手机号码调取身份证号
if(!StringUtil.ckeckEmpty(taskResultVO.getSjhm())){
JSONObject jsonObj = iphoneTrackService.getObjectRelationAll(taskResultVO.getSjhm());
if(jsonObj != null && "1".equals(jsonObj.getString("objType"))){
String zjhm = jsonObj.getString("objValue");
if(StringUtil.ckeckEmpty(zjhm)){ //如果第四个接口获取的身份证号为空 则使用第一个接口进行获取
JSONObject jsonObject = iphoneTrackService.getObjectRelation(taskResultVO.getSjhm());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 20(联系方式)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 1(身份证号码)
if ("20".equals(relativeType) && taskResultVO.getSjhm().equals(objectFromValue)
&& Arrays.asList("20","4394","3996").contains(objectFromType) && "1".equals(objectToType)){
String zjhm1 = resObj.getString("objectToValue");
taskResultVO.setZjhm(zjhm1);
break;
}
}
}
}
}else{
taskResultVO.setZjhm(zjhm); //如果第四个接口获取的身份证号码 不为空 则直接赋值
}
}
}
//3 通过身份证号调取二代证信息
if(!StringUtil.ckeckEmpty(taskResultVO.getZjhm())){
AutoTbStRy tbStRy = new Qgckzp().getQgckAllxxXml(taskResultVO.getZjhm());
taskResultVO.setXzzDzmc(tbStRy.getXzzDzmc());//现住址
taskResultVO.setCsdDzmc(tbStRy.getCsdDzmc());//出生地
if(tbStRy.getCsrqRqgzxx() != null){
taskResultVO.setCsrq(DateUtil.convertDateToChineseString(tbStRy.getCsrqRqgzxx()));//出生日期
taskResultVO.setAge(DateUtil.getAge(tbStRy.getCsrqRqgzxx())); //age
}
taskResultVO.setName(tbStRy.getXm());//姓名
taskResultVO.setRyzp(tbStRy.getEdzzplj());//人员照片
}
taskResultVOS.add(taskResultVO);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return taskResultVOS;
}
/**
*
* @Description: 发送伴随任务
......@@ -423,55 +292,14 @@ public class TrackTogetherContoller {
String startTime =request.getParameter("startTime");
String endTime =request.getParameter("endTime");
trackParam.setObjectValue(request.getParameter("objectValue"));
trackParam.setObjectType(request.getParameter("objectType"));
trackParam.setTaskName(request.getParameter("taskName"));
trackParam.setTaskCaseId(request.getParameter("taskCaseId"));
if(StringUtil.ckeckEmpty(trackParam.getObjectType())){
trackParam.setObjectType("4314");
}
if(!StringUtil.ckeckEmpty(startTime)){
Date kssj = startTime.contains(" ") ? DateUtil.convertStringToDateTime(startTime): DateUtil.convertStringToDate(startTime);
trackParam.setStartTime(kssj);
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
if(!StringUtil.ckeckEmpty(endTime)){
Date jssj = endTime.contains(" ") ? DateUtil.convertStringToDateTime(endTime) : DateUtil.convertStringToDate(endTime);
trackParam.setEndTime(jssj);
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
//1 现使用手机号码调出imsi
if(!StringUtil.ckeckEmpty(trackParam.getObjectValue())){
JSONObject jsonObject = iphoneTrackService.getObjectRelation(trackParam.getObjectValue());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 4402(手机-IMSI)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 4314(IMSI)
if ("4402".equals(relativeType) && "4314".equals(objectToType)
&& Arrays.asList("20","4394","3996").contains(objectFromType) && trackParam.getObjectValue().equals(objectFromValue)){
String imsi = resObj.getString("objectToValue");
if(!StringUtil.ckeckEmpty(imsi)){
trackParam.setObjectValue(imsi); //将得到手机号码赋值到对象
break;
}
}
}
}
}
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
//trackParam.setObjectValue("42151645456456");
if(!StringUtil.ckeckEmpty(trackParam.getObjectValue())){
//2 拿到imsi后 再去调用伴随接口
String taskId = trackTogetherService.sendTrackTogetherTask(trackParam); //发送任务 并且得到任务编号
//String taskId = "123123123";
if(!StringUtil.ckeckEmpty(taskId)){
trackParam.setTaskId(taskId);
}else{
......@@ -481,9 +309,6 @@ public class TrackTogetherContoller {
trackParam.setState("QUEUEING");
trackTogetherService.saveTogetherTask(trackParam);
resultVO = ResultVOUtil.success(taskId);
}else{
throw new InterServiceException(ResultEnum.PARAM_NOTNULL);
}
}catch (InterServiceException e){
e.printStackTrace();
resultVO = ResultVOUtil.error(e.getCode(),e.getMessage());
......@@ -492,17 +317,17 @@ public class TrackTogetherContoller {
}
/**
* 分页查询伴随任务结果
* 分页查询伴随任务结果的详情列表
* @param page
* @param rows
* @return
*/
@RequestMapping(value = "/getTogetherTaskResultList",method = {RequestMethod.GET,RequestMethod.POST})
@RequestMapping(value = "/getTogetherResultDetailList",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Map<String,Object> getTogetherTaskResultList(TogetherTaskResult taskParam,@RequestParam(value = "page",defaultValue = "0") int page,
public Map<String,Object> getTogetherResultDetailList(RegionalTaskResultDetail taskParam,@RequestParam(value = "page",defaultValue = "0") int page,
@RequestParam(value = "rows",defaultValue = "0") int rows){
Map<String,Object> resultMap = new HashMap<>();
List<TogetherTaskResult> taskResults = new ArrayList<>();
Map<String, Object> resultMap = new HashMap<>();
List<RegionalTaskResultDetail> detailList = new ArrayList<>();
int totalCount = 0;
try{
EasyUIPage easyUIPage = new EasyUIPage();
......@@ -512,108 +337,20 @@ public class TrackTogetherContoller {
int end = easyUIPage.getEnd();
taskParam.setStartNum(begin);
taskParam.setEndNum(end);
taskResults = trackTogetherService.getTogetherTaskResultList(taskParam);
totalCount = trackTogetherService.getTogetherTaskResultListTotalCount(taskParam);
} catch (Exception e) {
e.printStackTrace();
detailList = trackTogetherService.getTogetherResultDetailList(taskParam);
totalCount = trackTogetherService.getTogetherResultDetailListTotalCount(taskParam);
if (null != detailList && detailList.size() > 0) {
for (RegionalTaskResultDetail tsaf : detailList) {
if(tsaf.getRyzp() != null){
tsaf.setRyzpStr(new String(tsaf.getRyzp()));
}
resultMap.put("total",totalCount);
resultMap.put("rows",taskResults);
return resultMap;
}
@RequestMapping(value="queryTogetherTaskDetail",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public JSONObject queryTaskDetail (String imsi){
JSONObject jsonObject = new JSONObject();
TogetherTaskResultVO taskResultVO = new TogetherTaskResultVO();
try {
taskResultVO.setObjectValue(imsi);
taskResultVO = getResultData(taskResultVO);
if(taskResultVO != null){
jsonObject.put("code",ResultEnum.SUCCESS.getCode());
jsonObject.put("msg",ResultEnum.SUCCESS.getCode());
}else {
jsonObject.put("code", ResultEnum.SUCCESS.getCode());
jsonObject.put("msg","无数据");
}
jsonObject.put("data",taskResultVO);
} catch (Exception e) {
jsonObject.put("code", ResultEnum.RESULT_ERROR.getCode());
jsonObject.put("msg",ResultEnum.RESULT_ERROR.getMessage());
e.printStackTrace();
}
return jsonObject;
}
@Async("getAsyncExecutor")
public TogetherTaskResultVO getResultData(TogetherTaskResultVO taskResultVO) throws Exception{
if(!StringUtil.ckeckEmpty(taskResultVO.getObjectValue())){
JSONObject jsonObject = iphoneTrackService.getObjectRelation(taskResultVO.getObjectValue());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 4402(手机-IMSI)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 4314(IMSI)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
if ("4402".equals(relativeType) && "4314".equals(objectFromType)
&& Arrays.asList("20","4394","3996").contains(objectToType) && taskResultVO.getObjectValue().equals(objectFromValue)){
String sjhm = resObj.getString("objectToValue");
if(null != sjhm && 11 == sjhm.length()){
taskResultVO.setSjhm(sjhm); //将得到手机号码赋值到对象
break;
}
}
}
}
}
}
//2 通过手机号码调取身份证号
if(!StringUtil.ckeckEmpty(taskResultVO.getSjhm())){
JSONObject jsonObj = iphoneTrackService.getObjectRelationAll(taskResultVO.getSjhm());
if(jsonObj != null && "1".equals(jsonObj.getString("objType"))){
String zjhm = jsonObj.getString("objValue");
if(StringUtil.ckeckEmpty(zjhm)){ //如果第四个接口获取的身份证号为空 则使用第一个接口进行获取
JSONObject jsonObject = iphoneTrackService.getObjectRelation(taskResultVO.getSjhm());
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int j = 0; j <= jsonArray.size() - 1;j++){
JSONObject resObj = jsonArray.getJSONObject(j);
String relativeType = resObj.getString("relativeType"); //关联类型 20(联系方式)
String objectFromType = resObj.getString("objectFromType"); //数据来源值类型 20(联系方式) 4394(电话号码) 3996(手机号码)
String objectFromValue = resObj.getString("objectFromValue"); //数据来源值
String objectToType = resObj.getString("objectToType"); //所得对象值类型 1(身份证号码)
if ("20".equals(relativeType) && taskResultVO.getSjhm().equals(objectFromValue)
&& Arrays.asList("20","4394","3996").contains(objectFromType) && "1".equals(objectToType)){
String zjhm1 = resObj.getString("objectToValue");
taskResultVO.setZjhm(zjhm1);
break;
}
}
}
}
}else{
taskResultVO.setZjhm(zjhm); //如果第四个接口获取的身份证号码 不为空 则直接赋值
}
}
}
//3 通过身份证号调取二代证信息
if(!StringUtil.ckeckEmpty(taskResultVO.getZjhm())){
AutoTbStRy tbStRy = new Qgckzp().getQgckAllxxXml(taskResultVO.getZjhm());
taskResultVO.setXzzDzmc(tbStRy.getXzzDzmc());//现住址
taskResultVO.setCsdDzmc(tbStRy.getCsdDzmc());//出生地
if(tbStRy.getCsrqRqgzxx() != null){
taskResultVO.setCsrq(DateUtil.convertDateToChineseString(tbStRy.getCsrqRqgzxx()));//出生日期
taskResultVO.setAge(DateUtil.getAge(tbStRy.getCsrqRqgzxx())); //age
}
taskResultVO.setName(tbStRy.getXm());//姓名
taskResultVO.setRyzp(tbStRy.getEdzzplj());//人员照片
}
return taskResultVO;
resultMap.put("total",totalCount);
resultMap.put("rows",detailList);
return resultMap;
}
}
......@@ -2,6 +2,7 @@ package com.founder.interservice.tracktraveltogether.service;
import com.founder.interservice.exception.InterServiceException;
import com.founder.interservice.regionalanalysis.model.RegionalTask;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail;
import com.founder.interservice.tracktraveltogether.model.TogetherTaskResult;
import com.founder.interservice.tracktraveltogether.model.TrackTogetherTask;
import org.springframework.data.domain.Page;
......@@ -29,4 +30,12 @@ public interface TrackTogetherService {
public List<TogetherTaskResult> getTogetherTaskResultList(TogetherTaskResult taskParam);
int getTogetherTaskResultListTotalCount(TogetherTaskResult taskParam);
public boolean togetherDetailIsExist(RegionalTaskResultDetail param) throws Exception;
public void saveTogetherDetail(RegionalTaskResultDetail detail) throws Exception;
public void updateTogetherDetail(RegionalTaskResultDetail detail) throws Exception;
public List<RegionalTaskResultDetail> getTogetherResultDetailList(RegionalTaskResultDetail taskParam) throws Exception;
public int getTogetherResultDetailListTotalCount(RegionalTaskResultDetail taskParam) throws Exception;
}
......@@ -2,13 +2,16 @@ package com.founder.interservice.tracktraveltogether.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.interservice.model.AutoTbStRy;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResult;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail;
import com.founder.interservice.service.IphoneTrackService;
import com.founder.interservice.tracktraveltogether.model.TogetherTaskResult;
import com.founder.interservice.tracktraveltogether.model.TrackTogetherTask;
import com.founder.interservice.tracktraveltogether.repository.TogetherTaskResultRepository;
import com.founder.interservice.tracktraveltogether.repository.TrackTogetherTaskRepository;
import com.founder.interservice.util.HttpUtil;
import com.founder.interservice.util.KeyUtil;
import com.founder.interservice.util.StringUtil;
import com.founder.interservice.tracktraveltogether.service.TrackTogetherService;
import com.founder.interservice.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Example;
......@@ -41,6 +44,11 @@ public class TogetherScheduledService {
private TrackTogetherTaskRepository taskRepository;
@Autowired
private TogetherTaskResultRepository taskResultRepository;
@Autowired
private IphoneTrackService iphoneTrackService; //调取网安数据接口
@Autowired
private TrackTogetherService togetherService; //调取网安数据接口
/**
*
* @Description: 查取任务结果的定时方法
......@@ -52,8 +60,8 @@ public class TogetherScheduledService {
*/
@Scheduled(initialDelay = 180000,fixedDelay = 180000) //项目启动后延迟三分钟秒执行,每次执行完后三分钟后再次执行
public void queryTaskResult(){
System.out.println("=============伴随定时任务开始执行================");
System.out.println("线程名称:=======" + Thread.currentThread().getName());
System.out.println("=============TogetherTask Start Running================");
System.out.println("Thread Name:=======" + Thread.currentThread().getName());
try{
//1 下去查询任务表中status = "QUEUEING","STARTING","RUNNING"的任务
List<TrackTogetherTask> taskList = taskRepository.findAll(new Specification<TrackTogetherTask>() {
......@@ -69,25 +77,17 @@ public class TogetherScheduledService {
if(taskList != null && !taskList.isEmpty()){
for (TrackTogetherTask task:taskList) {
String status_url = TOGETHER_STATUS_URL + "&taskId="+task.getTaskId();
String statusStr = HttpUtil.doGet(status_url);
String statusStr = HttpUtil.getWaData(status_url);
//String statusStr = "{\"progress\":0.8,\"state\":\"TIMEOUT\"}";
System.out.println("statusStr ======================== " + statusStr);
while(statusStr == null || statusStr.isEmpty() || !statusStr.startsWith("{")){
statusStr = HttpUtil.doGet(status_url);
Thread.sleep(1000);
System.out.println("statusStr ======================== " + statusStr);
}
JSONObject jsonObject = JSONObject.parseObject(statusStr);
String progress = jsonObject.getString("progress");
String state = jsonObject.getString("state");
if("1".equals(progress) && "FINISHED".equals(state)){
String info_url = TOGETHER_INFO_URL + "&taskId=" + task.getTaskId();
String taskInfoResult = HttpUtil.doGet(info_url);
String taskInfoResult = HttpUtil.getWaData(info_url);
//String taskInfoResult = "{\"items\":[{\"count\":75,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460013088311061\"},{\"count\":70,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460029233464484\"},{\"count\":65,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460013022609934\"},{\"count\":63,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460013312607010\"},{\"count\":57,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460018669002987\"},{\"count\":53,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460008397079525\"},{\"count\":53,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460020523597601\"},{\"count\":53,\"objectType\":4394,\"objectTypeName\":\"电话号码\",\"objectValue\":\"460003164872839\"}],\"taskId\":\"98f6bcd4621d373cade4e832627b4f6-540-xzxt-api-3-1536231954767\"}";
while(StringUtil.ckeckEmpty(taskInfoResult) || !taskInfoResult.startsWith("{")){
taskInfoResult = HttpUtil.doGet(info_url);
Thread.sleep(1000);
}
taskInfoResult = HttpUtil.getWaData(info_url);
getAndSaveInfo(taskInfoResult,task);
}
if(!state.equals(task.getState())){
......@@ -106,6 +106,7 @@ public class TogetherScheduledService {
JSONArray jsonArray = o.getJSONArray("items");
if(jsonArray != null && jsonArray.size() > 0){
List<TogetherTaskResult> taskResults = jsonArray.toJavaList(TogetherTaskResult.class);
taskResults = removeDuplicate(taskResults);
if(taskResults != null && !taskResults.isEmpty()){
for (TogetherTaskResult r:taskResults) {
r.setTaskId(task.getTaskId());
......@@ -118,6 +119,7 @@ public class TogetherScheduledService {
List<TogetherTaskResult> results = taskResultRepository.findAll(example);
if(results == null || results.isEmpty()){
taskResultRepository.save(taskResults);
getAndSaveRydetail(taskResults);
}
}
}
......@@ -127,6 +129,85 @@ public class TogetherScheduledService {
}
/**
* 拿取到伴随的结果后 使用第四个接口调取关联数据
*/
public void getAndSaveRydetail(List<TogetherTaskResult> resultsList) throws Exception {
if (resultsList != null && !resultsList.isEmpty()) {
for (TogetherTaskResult result : resultsList) {
String objType = result.getObjectType();
String objValue = result.getObjectValue();
String objName = result.getObjectTypeName();
if (objValue != null && !"".equals(objValue)) {
//MAC地址、用户名、淘宝旺旺号不去调取关联数据,其它类型都使用第四个接口调取
if (!Arrays.asList("4329", "4342","45282").contains(objType)) {
JSONObject jsonObj = iphoneTrackService.getObjectRelationAll(objValue);//使用网安第三个接口调取关联数据
if (jsonObj != null && !jsonObj.isEmpty()) { //说明根节点是身份证号
RegionalTaskResultDetail detail = new RegionalTaskResultDetail();
detail.setTaskResultId(result.getXXZJBH());
detail.setXXZJBH(KeyUtil.getUniqueKey("EDZ"));
detail.setObjectType(objType);
detail.setObjectValue(objValue);
detail.setObjectTypeName(objName);
String objType2 = jsonObj.getString("objType");
String objValue2 = jsonObj.getString("objValue");
if("1".equals(objType2) && !objValue2.isEmpty()){
detail.setZjlxCode("004");
detail.setZjlx("身份证号");
detail.setZjhm(objValue2);
detail = getEdzxxForSfzh(detail); //获取二代证信息
//根据身份证判断是否存在 如果存在更新 不存在新增
RegionalTaskResultDetail param = new RegionalTaskResultDetail();
param.setObjectType(objType);
param.setObjectValue(objValue);
boolean isExist = togetherService.togetherDetailIsExist(param);
if (!isExist) {
togetherService.saveTogetherDetail(detail);
} else {
togetherService.updateTogetherDetail(detail);
}
}else if(Arrays.asList("20","4394","3996","6003").contains(objType2)){
//手机号码
detail.setSjhm(objValue2);
RegionalTaskResultDetail param = new RegionalTaskResultDetail();
param.setObjectType(objType);
param.setObjectValue(objValue);
boolean isExist = togetherService.togetherDetailIsExist(param);
if (!isExist) {
togetherService.saveTogetherDetail(detail);
} else {
togetherService.updateTogetherDetail(detail);
}
}
}
}
}
}
}
}
/**
* 通过身份证号获取二代证信息
*
* @param regionalTaskResultDetail
* @return
*/
private RegionalTaskResultDetail getEdzxxForSfzh(RegionalTaskResultDetail regionalTaskResultDetail) {
AutoTbStRy tbStRy = new Qgckzp().getQgckAllxxXml(regionalTaskResultDetail.getZjhm());
regionalTaskResultDetail.setXzzDzmc(tbStRy.getXzzDzmc());//现住址
regionalTaskResultDetail.setCsdDzmc(tbStRy.getCsdDzmc());//出生地
if (tbStRy.getCsrqRqgzxx() != null) {
regionalTaskResultDetail.setBirthday(DateUtil.convertDateToChineseString(tbStRy.getCsrqRqgzxx()));//出生日期
regionalTaskResultDetail.setAge(String.valueOf(DateUtil.getAge(tbStRy.getCsrqRqgzxx()))); //age
}
regionalTaskResultDetail.setName(tbStRy.getXm());//姓名
regionalTaskResultDetail.setSex(tbStRy.getXbdm());//性别
if (tbStRy.getEdzzplj() != null) {
regionalTaskResultDetail.setRyzp(tbStRy.getEdzzplj().getBytes());//人员照片
}
return regionalTaskResultDetail;
}
/**
* 修改任务状态
* @param taskId
* @param progress
......@@ -140,4 +221,20 @@ public class TogetherScheduledService {
throw new RuntimeException(e);
}
}
/**
* 去除重复数据
* @param list
* @return
*/
public static List<TogetherTaskResult> removeDuplicate(List<TogetherTaskResult> list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).getObjectValue().equals(list.get(i).getObjectValue())&&list.get(j).getObjectType().equals(list.get(i).getObjectType())) {
list.remove(j);
}
}
}
return list;
}
}
......@@ -2,8 +2,11 @@ package com.founder.interservice.tracktraveltogether.service.impl;
import com.founder.interservice.exception.InterServiceException;
import com.founder.interservice.enums.ResultEnum;
import com.founder.interservice.mapper.xzxt.RegionalTaskResultDetailMapper;
import com.founder.interservice.mapper.xzxt.RegionalTaskResultMapper;
import com.founder.interservice.mapper.xzxt.TogetherTaskResultMapper;
import com.founder.interservice.mapper.xzxt.TrackTogetherMapper;
import com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail;
import com.founder.interservice.tracktraveltogether.model.TogetherTaskResult;
import com.founder.interservice.tracktraveltogether.model.TrackTogetherTask;
import com.founder.interservice.tracktraveltogether.repository.TogetherTaskResultRepository;
......@@ -47,7 +50,10 @@ public class TrackTogetherServiceImpl implements TrackTogetherService {
private TrackTogetherMapper trackTogetherMapper;
@Autowired
private TogetherTaskResultMapper togetherTaskResultMapper;
@Autowired
private RegionalTaskResultMapper regionalTaskResultMapper;
@Autowired
private RegionalTaskResultDetailMapper regionalTaskResultDetailMapper;
/**
*
* @Description: 发送伴随任务 并且返回任务编号
......@@ -63,14 +69,12 @@ public class TrackTogetherServiceImpl implements TrackTogetherService {
String taskId = null;
if(trackParam != null){
String url = TOGETHER_TASK_URL + "&objectType=" + trackParam.getObjectType()
+ "&objectValue=" + trackParam.getImsi()
+ "&objectValue=" + trackParam.getObjectValue()
+ "&taskName="+trackParam.getTaskName()
+ "&taskCaseId=" + trackParam.getTaskCaseId()
+ "&startTime=" + trackParam.getStartTime().getTime()
+ "&endTime=" + trackParam.getEndTime().getTime();
System.out.println(" 伴随------发送任务URL =================" + url);
taskId = HttpUtil.doGet(url);
//taskId = "1231231231";
taskId = HttpUtil.getWaData(url);
System.out.println("taskId ===============" +taskId);
}
return taskId;
......@@ -166,4 +170,48 @@ public class TrackTogetherServiceImpl implements TrackTogetherService {
public int getTogetherTaskResultListTotalCount(TogetherTaskResult taskParam) {
return togetherTaskResultMapper.getTogetherTaskResultListTotalCount(taskParam);
}
@Override
public boolean togetherDetailIsExist(RegionalTaskResultDetail param) throws Exception{
boolean bol = false;
try{
int i = regionalTaskResultMapper.togetherDetailIsExist(param);
if(i > 0){
bol = true;
}
}catch (Exception e){
e.printStackTrace();
}
return bol;
}
@Override
public void saveTogetherDetail(RegionalTaskResultDetail detail) throws Exception {
regionalTaskResultMapper.saveTogetherDetail(detail);
}
@Override
public void updateTogetherDetail(RegionalTaskResultDetail detail) throws Exception {
regionalTaskResultMapper.updateTogetherDetail(detail);
}
/**
* 查询伴随任务结果的详情LIst
* @param taskParam
* @return
*/
@Override
public List<RegionalTaskResultDetail> getTogetherResultDetailList(RegionalTaskResultDetail taskParam) throws Exception {
return regionalTaskResultDetailMapper.getTogetherResultDetailList(taskParam);
}
/**
* 查询伴随任务结果的详情总数 用语分页
* @param taskParam
* @return
*/
@Override
public int getTogetherResultDetailListTotalCount(RegionalTaskResultDetail taskParam) throws Exception {
return regionalTaskResultDetailMapper.getTogetherResultDetailListTotalCount(taskParam);
}
}
package com.founder.interservice.util;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.*;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;
import java.util.Map.Entry;
public class HttpUtil {
public static String doGet(String uri) {
HttpClient httpclient = new DefaultHttpClient();
/**
* 获取网安数据
* @param url
* @return
*/
public static String getWaData(String url){
String result = HttpUtil.doGet(url);
int i = 0;
while(i < 3 && (!result.startsWith("{") || StringUtil.ckeckEmpty(result))){
result = HttpUtil.doGet(url);
i++;
}
return result;
}
public static String doGet(String url, Map<String, String> param) {
// Prepare a request object
HttpGet httpget = new HttpGet(uri);
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
// Execute the request
HttpResponse response = null;
String resultString = "";
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpget);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// 创建uri
url=url.trim();
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
StringBuffer sb = new StringBuffer();
// System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = null;
try {
instream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"UTF-8"));
String temp = null;
while((temp = reader.readLine())!=null){
sb.append(temp);
}
} catch (IllegalStateException e) {
URI uri = builder.build();
// 创建http GET请求
HttpGet httpGet = new HttpGet(uri);
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
} finally{
// httpget.abort();
// httpclient.getConnectionManager().shutdown();
}
}
httpclient.getConnectionManager().shutdown();
return sb.toString();
return resultString.trim();
}
public static String doPost(String uri,Map<String,String> params) {
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpPost httppost = new HttpPost(uri);
httppost.setHeader("connection", "Keep-Alive");
httppost.setHeader("accept", "*/*");
if(params!=null&&params.size() > 0){
// HttpParams hp = new BasicHttpParams();
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
Set<Entry<String, String>> set = params.entrySet();
Iterator<Entry<String, String>> iterator = set.iterator();
while(iterator.hasNext()){
Entry<String, String> entry = iterator.next();
NameValuePair nvp = new BasicNameValuePair(entry.getKey(), entry.getValue());
nvps.add(nvp);
}
try {
if(nvps.size() > 0)
httppost.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public static String doGet(String url) {
return doGet(url, null);
}
// Execute the request
HttpResponse response = null;
public static String doPost(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建参数列表
if (param != null) {
List<NameValuePair> paramList = new ArrayList<>();
for (String key : param.keySet()) {
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 模拟表单
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
httpPost.setEntity(entity);
}
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer();
// System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = null;
} finally {
try {
instream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"UTF-8"));
String temp = null;
while((temp = reader.readLine())!=null){
sb.append(temp);
}
} catch (IllegalStateException e) {
e.printStackTrace();
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
httpclient.getConnectionManager().shutdown();
return sb.toString();
}
public static String doPost(String uri,String params) {
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpPost httppost = new HttpPost(uri);
httppost.setHeader("connection", "Keep-Alive");
httppost.setHeader("accept", "*/*");
if(params!=null&&!params.equals("")){
// ContentType.create(ContentType.TEXT_XML, "utf-8");
// HttpEntity entity = new StringEntity(params,ContentType.APPLICATION_FORM_URLENCODED);
InputStream is = null;
try {
is = new ByteArrayInputStream(params.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return resultString.trim();
}
InputStreamEntity entity = new InputStreamEntity(is,-1);
entity.setContentEncoding("utf-8");
entity.setContentType("application/x-www-form-urlencoded");
httppost.setEntity(entity);
public static String doPost(String url) {
return doPost(url, null);
}
// HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 1000);
// HttpConnectionParams.setSoTimeout(httpclient.getParams(), 10000);
// Execute the request
HttpResponse response = null;
public static String doPostJson(String url, String json) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建请求内容
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer();
//System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = null;
} finally {
try {
instream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"UTF-8"));
String temp = null;
while((temp = reader.readLine())!=null){
sb.append(temp);
}
} catch (IllegalStateException e) {
e.printStackTrace();
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
httpclient.getConnectionManager().shutdown();
return sb.toString();
return resultString.trim();
}
public static void main(String[] args) {
......@@ -181,7 +161,7 @@ public class HttpUtil {
String xml="{\"user_name\":\"restful\",\"encrypt_flag\":1,\"notify_url\":\"notify89\",\"resource_id\":\"xxxx\",\"request_type\":\"type002\",\"service_code\":\"RestDataQueryRequestHandler\",\"service_name\":\"接口测试使用\",\"system_code\":\"DM\",\"user_password\":\"21218cca77804d2ba1922c33e0151105\",\"version\":\"1.0\",\"request_parameters\":{\"resourceList\":[{\"KSKFW\":0,\"timePlaceAnalysis\":\"\",\"resultColumns\":[\"CAR_PLATE\",\"NET_NO\",\"EDTIME\"],\"HDCS\":0,\"havingConditionList\":\"\",\"whereCondition\":{\"compareCons\":[{\"compare\":\"=\",\"columnName\":\"CAR_PLATE\",\"columnValue\":\"冀A6E667\"}],\"parentheseCons\":[],\"compare\":\"and\",\"conditionAlias\":\"\"},\"resourceCode\":\"130000348010104\",\"groupByNames\":[]}]}}";
//String xml="{\"user_name\":\"restful\",\"encrypt_flag\":1,\"notify_url\":\"notify89\",\"resource_id\":\"xxxx\",\"request_type\":\"type002\",\"service_code\":\"RestDataQueryRequestHandler\",\"service_name\":\"接口测试使用\",\"system_code\":\"DM\",\"user_password\":\"21218cca77804d2ba1922c33e0151105\",\"version\":\"1.0\",\"request_parameters\":{\"resourceList\":[{\"KSKFW\":0,\"timePlaceAnalysis\":\"\",\"resultColumns\":[\"NAME\",\"SEX\",\"ID\",\"BIRTHDAY\",\"M_CASE\",\"NATION\",\"CASECLASS\",\"NATIVE_PLACE\",\"RESIDADDR\",\"RESIDADDRALL\",\"ENDDATE\",\"DETAINDATE\",\"INDATE\",\"DETAINTYPE\",\"SENDER\",\"LINKMAN\",\"INLAWTEXT\",\"PZH\",\"CZDH\",\"M_DETAINTIME\",\"LOOKUPTYPE\",\"M_DBTIME\",\"M_COURTTIME\",\"M_JUDGETIME\",\"HANDLEDATE\",\"HANDLERSLT\",\"HANDLEBEGIN\",\"HANDLEEND\",\"RSLTTIME\",\"APPRSLT\",\"M_OUTWHERE\",\"OUTDATE\",\"M_OUTREASON\",\"ROOM_NO\",\"FREENUMBER\",\"M_OLDJAIL\",\"P_NO\",\"FINGER\",\"STAYREASON\",\"CONTROL\",\"M_PUNISH\",\"DANGERLEVEL\",\"M_CASEDEPT\",\"M_CASEMAN\",\"M_CASEPHONE\",\"M_DEPTTYPE\",\"M_CAREFUL\",\"FEEMONEY\",\"UNDERTAKER\",\"UNDERTAK_DATE\",\"REMARK\",\"RESUME\",\"OPERATOR\",\"OPTIME\",\"DRJSR\",\"DRJS_TIME\",\"HZ_NO\",\"HZ_OPER\",\"HZ_DATE\",\"VERSION\",\"YFH\",\"BED_NO\",\"WRITID\",\"AJBH\",\"RYBH1\",\"SYS_UNIT\",\"IDCHECK\",\"FWBH\",\"EXEC_DATE\",\"NAME_PY\",\"SLRY\",\"T_STATUS\",\"CERTTYPE\",\"P_KEY\",\"ADDRESSALL\",\"BYNAME\",\"ADDRESS\",\"NATIONALITY\",\"EDUCATION\",\"POLITICAL_AFF\",\"PROFESSION\",\"M_UNIT\",\"DUTY\",\"SPECIALTY\",\"PROSTYLE\",\"DIGNITY\",\"HEALTH\",\"HEIGHT\",\"WEIGHT\",\"FEATURE\",\"FOOTLEN\",\"SAMENUM\",\"SAMENO\",\"MEMBERTYPE\",\"PRECRIME\",\"M_HEAVY\",\"BQLX\",\"PICFILE\",\"DMQ1001\",\"DM_ADDRESSALL\",\"DM_ID\",\"GAY_GXSJ\",\"GAY_RKSJ\",\"IS_PROBLEM\",\"M_MARRIGE\",\"PY_BYNAME\",\"PY_NAME\",\"RYBH\"],\"HDCS\":0,\"havingConditionList\":\"\",\"whereCondition\":{\"compareCons\":[{\"compare\":\"=\",\"columnName\":\"ID\",\"columnValue\":\"130102197804172131\"}],\"parentheseCons\":[],\"compare\":\"and\",\"conditionAlias\":\"\"},\"resourceCode\":\"130000312130280\",\"groupByNames\":[]}]}}";
String res =HttpUtil.doPost("http://10.24.101.218:8090/dsp/rest/ResourceQueryService/request", xml);
String res =HttpUtil.doPostJson("http://10.24.101.218:8090/dsp/rest/ResourceQueryService/request", xml);
Date date2=new Date();
System.out.println(date2.getTime()-date1.getTime());
//String res = HttpUtil.doGet("http://172.18.70.80:7001/EzSearchService/SearchTheme?page=1&maxrow=10&theme=GA000&keyword="+URLEncoder.encode("��", "utf-8"));
......
package com.founder.interservice.util;
import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.log4j.Logger;
public class PropertieUtil {
private static Logger logger = Logger.getLogger(PropertieUtil.class);
private PropertieUtil() {
}
/**
* 读取配置文件某属性
*/
public static String readValue(String filePath, String key) {
Properties props = new Properties();
try {
// 注意路径以 / 开始,没有则处理
if (!filePath.startsWith("/"))
filePath = "/" + filePath;
InputStream in = PropertieUtil.class.getResourceAsStream(filePath);
props.load(in);
String value = props.getProperty(key);
return value;
} catch (Exception e) {
logger.error(e);
return null;
}
}
/**
* 打印配置文件全部内容(filePath,配置文件名,如果有路径,props/test.properties)
*/
public static void readProperties(String filePath) {
Properties props = new Properties();
try {
// 注意路径以 / 开始,没有则处理
if (!filePath.startsWith("/"))
filePath = "/" + filePath;
InputStream in = PropertieUtil.class.getResourceAsStream(filePath);
props.load(in);
Enumeration<?> en = props.propertyNames();
// 遍历打印
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String Property = props.getProperty(key);
logger.info(key + ":" + Property);
}
} catch (Exception e) {
logger.error(e);
}
}
/**
* 将值写入配置文件
*/
public static void writeProperties(String fileName, String parameterName, String parameterValue) throws Exception {
// 本地测试特别注意,如果是maven项目,请到\target目录下查看文件,而不是源代码下
// 注意路径不能加 / 了,加了则移除掉
if (fileName.startsWith("/")) fileName.substring(1);
String filePath = PropertieUtil.class.getResource("/").getPath()+fileName;
// 获取配置文件
Properties pps = new Properties();
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
pps.load(in);
in.close();
OutputStream out = new FileOutputStream(filePath,true);//true表示追加打开,false表示每次都是清空重写
// 设置配置名称和值
pps.setProperty(parameterName, parameterValue);
// comments 等于配置文件的注释
pps.store(new OutputStreamWriter(out,"UTF-8"), "Update " + parameterName + " name");
out.flush();
out.close();
}
public static void main(String[] args) throws Exception {
// readProperties("application.properties");
// logger.info(readValue("jdbc.properties", "JAVABLOG_WRITE_URL"));
writeProperties("regionalTaskLogFile.properties", "serviceid", "2");
//logger.info(readValue("application.properties", "serviceid"));
}
}
\ No newline at end of file
......@@ -3,23 +3,23 @@
<mapper namespace="com.founder.interservice.mapper.xzxt.BkxxMapper">
<sql id = "bkxx_where_sql">
<if test="bkbsh != null and bkbsh != ''">
and t.BKBSH like CONCAT('%',#{bkbsh},'%')
<if test="bkdxhm != null and bkdxhm != ''">
and t.bkdxhm like '%' || #{bkdxhm , jdbcType=VARCHAR } || '%'
</if>
<if test="bshlxdm != null and bshlxdm != '' ">
and t.BSH_LXDM like CONCAT('%',#{bshlxdm},'%')
<if test="bkdxlx != null and bkdxlx != '' ">
and t.bkdxlx = #{bkdxlx}
</if>
<if test="bkrJh != null and bkrJh != ''">
and t.BKR_JH like CONCAT('%',#{bkrJh},'%')
<if test="sqr_jh != null and sqr_jh != ''">
and t.sqr_jh like CONCAT(CONCAT('%',#{sqr_jh}),'%')
</if>
<if test="asjbh != null and asjbh != ''">
and t.ASJBH like CONCAT('%',#{asjbh},'%')
and t.ASJBH LIKE '%' || #{asjbh , jdbcType=VARCHAR } || '%'
</if>
<if test="bkrXm != null and bkrXm != ''">
and t.BKRXM like CONCAT('%',#{bkrXm},'%')
<if test="sqr_xm != null and sqr_xm != ''">
and t.sqr_xm like CONCAT(CONCAT('%',#{sqr_xm}),'%')
</if>
<if test="bkrSfzh != null and bkrSfzh != ''">
and t.BKRSFZH like CONCAT('%',#{bkrSfzh},'%')
<if test="sqr_sfzh != null and sqr_sfzh != ''">
and t.sqr_sfzh like CONCAT(CONCAT('%',#{sqr_sfzh}),'%')
</if>
<if test="bkzt != null and bkzt != ''">
and t.BKZT = #{bkzt}
......@@ -30,72 +30,103 @@
INSERT INTO TB_ST_BKXX
(
xxzjbh,
bkbsh,
bshlxdm,
bshlxmc,
bkdxhm,
bkdxlx,
bkdxlxmc,
bklx,
bkyj,
bkyq,
asjbh,
bkr_Sfzh,
bkr_Xm,
bkr_Jh,
bkr_Lxdh,
bk_Kssj,
bksj_start ,
bksj_end,
sqr_sfzh,
sqr_xm,
sqr_jh,
sqr_lxdh,
bkzt,
djsj
djsj,
bkqx
)
VALUES
(
#{xxzjbh},
#{bkbsh},
#{bshlxdm },
#{bshlxmc },
#{asjbh },
#{bkrSfzh },
#{bkrXm},
#{bkrJh},
#{bkrLxdh},
SYSDATE,
#{bkdxhm},
#{bkdxlx },
#{bkdxlxmc },
#{bklx },
#{bkyj },
#{bkyq},
#{asjbh},
#{bksj_start},
#{bksj_end},
#{sqr_sfzh},
#{sqr_xm},
#{sqr_jh},
#{sqr_lxdh},
#{bkzt},
SYSDATE)
SYSDATE,
bkqx)
</insert>
<select id="selectBkxx" parameterType="com.founder.interservice.bkxx.model.Bkxx" resultType="java.lang.Integer">
SELECT COUNT(*) FROM TB_ST_BKXX t
<where>
<include refid = "bkxx_where_sql" />
1=1
<if test="sqr_jh != null and sqr_jh != ''">
AND t.sqr_jh= #{sqr_jh, jdbcType=VARCHAR }
</if>
<if test="asjbh != null and asjbh != ''">
and t.ASJBH= #{ASJBH, jdbcType=VARCHAR }
</if>
<if test="bkdxhm != null and bkdxhm != ''">
and t.bkdxhm= #{bkdxhm, jdbcType=VARCHAR }
</if>
<if test="bkdxlx != null and bkdxlx != '' ">
and t.bkdxlx= #{bkdxlx, jdbcType=VARCHAR }
</if>
</where>
</select>
<!-- 布控信息列表查询界面 分页查询 -->
<select id = "selectBkxxListPage" parameterType="com.founder.interservice.bkxx.model.BkxxFilter" resultType="com.founder.interservice.bkxx.model.Bkxx">
select
t2.*
<select id="selectBkxxListPage" parameterType="com.founder.interservice.bkxx.model.BkxxFilter" resultType="com.founder.interservice.bkxx.model.BkxxFilter">
select *
from (
select t1.*,
t1.rownum as rn
select
t1.*,
rownum as rn
from (
SELECT
select
t.XXZJBH as xxzjbh,
t.BKBSH as bkbsh,
t.BSHLXDM as bshlxdm,
t.BSHLXMC as bshlxmc,
t.bkdxhm as bkdxhm,
t.bkdxlx,
t.bkdxlxmc,
t.ASJBH as asjbh,
t.BKR_SFZH as bkrSfzh,
t.BKR_XM as bkrXm,
t.BKR_JH as bkrJh,
t.BKR_LXDH as bkrLxdh,
t.BK_KSSJ as bkKssj,
t.BKZT as spzt,
t.sqr_sfzh,
t.sqr_xm,
t.sqr_jh,
t.sqr_lxdh,
to_char(t.bksj_start,'yyyy-mm-dd') as bksj_start,
to_char(t.bksj_end,'yyyy-mm-dd') as bksj_end,
case when t.bkzt = '0' then '布控中'
when t.bkzt = '1' then '已撤销'
else    ''
end
as bkztmc,
t.bkzt,
t.DJSJ as djsj
FROM TB_ST_BKXX t
<where>
<include refid = "bkxx_where_sql" />
<include refid="bkxx_where_sql"/>
</where>
) t1
order by t.DJSJ desc
)t1
<where>
t1.rownum <![CDATA[ <= ]]> #{endNum }
and rownum <![CDATA[ <= ]]> #{endNum }
</where>
) t2
<where>
t2.rn <![CDATA[ >= ]]> #{startNum }
rn <![CDATA[ > ]]> #{startNum }
</where>
</select>
<select id = "selectBkxxListPageTotalCount" parameterType="com.founder.interservice.bkxx.model.BkxxFilter" resultType="int">
......@@ -104,5 +135,5 @@
<where>
<include refid = "bkxx_where_sql" />
</where>
</select>
</select>
</mapper>
\ No newline at end of file
......@@ -5,7 +5,7 @@
<select id = "findRegionalTaskResultDetailListTotalCount" parameterType = "com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail" resultType="int" >
select count(*)
from TB_ST_REGIONALTASKRESULT t
left join REGIONALTASKRESULTDETAIL td on t.XXZJBH = td.TASK_RESULT_ID
left join REGIONALTASKRESULTDETAIL td on t.OBJECT_VALUE = td.OBJECT_VALUE AND t.OBJECT_TYPE = td.OBJECT_TYPE
where t.TASK_ID = #{taskId}
<if test="objectType!= null and objectType!= ''">
<choose>
......@@ -48,7 +48,7 @@
td.ZJHM as zjhm,
td.SJHM as sjhm
from TB_ST_REGIONALTASKRESULT t
left join REGIONALTASKRESULTDETAIL td on t.XXZJBH = td.TASK_RESULT_ID
left join REGIONALTASKRESULTDETAIL td on t.OBJECT_VALUE = td.OBJECT_VALUE AND t.OBJECT_TYPE = td.OBJECT_TYPE
where t.TASK_ID = #{taskId}
<if test="objectType!= null and objectType!= ''">
<choose>
......@@ -87,7 +87,7 @@
td.ZJHM as zjhm,
td.SJHM as sjhm
from TB_ST_REGIONALTASKRESULT t
left join REGIONALTASKRESULTDETAIL td on t.XXZJBH = td.TASK_RESULT_ID
left join REGIONALTASKRESULTDETAIL td on t.OBJECT_VALUE = td.OBJECT_VALUE AND t.OBJECT_TYPE = td.OBJECT_TYPE
where t.TASK_ID = #{taskId}
<if test="objectType!= null and objectType!= ''">
<choose>
......@@ -103,4 +103,74 @@
<if test="csrqStart!=null and csrqStart!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[>=]]> to_date(#{csrqStart},'yyyy-MM-dd') </if>
<if test="csrqEnd!=null and csrqEnd!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[<=]]> to_date(#{csrqEnd},'yyyy-MM-dd') </if>
</select>
<!-- 伴随 -->
<select id = "getTogetherResultDetailListTotalCount" parameterType = "com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail" resultType="int" >
select count(*)
from TB_ST_TOGETHERTASKRESULT t
left join TB_ST_TOGETHERRESULTDETAIL td on t.OBJECT_VALUE = td.OBJECT_VALUE AND t.OBJECT_TYPE = td.OBJECT_TYPE
where t.TASK_ID = #{taskId}
<if test="objectType!= null and objectType!= ''">
<choose>
<when test="objectType.indexOf(',') > 0">
and t.OBJECT_TYPE in (${objectType})
</when>
<otherwise>
and t.OBJECT_TYPE in (#{objectType})
</otherwise>
</choose>
</if>
<if test="objectValue!= null and objectValue!= ''">and t.OBJECT_VALUE LIKE '%'|| #{objectValue} || '%'</if>
<if test="csrqStart!=null and csrqStart!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[>=]]> to_date(#{csrqStart},'yyyy-MM-dd') </if>
<if test="csrqEnd!=null and csrqEnd!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[<=]]> to_date(#{csrqEnd},'yyyy-MM-dd') </if>
</select>
<select id="getTogetherResultDetailList" parameterType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail" resultType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail">
select t2.*
from (
select t1.*,
rownum as rn
from (
select
t.TASK_ID as taskId,
t.OBJECT_TYPE as objectType,
t.OBJECT_TYPE_NAME as objectTypeName,
t.OBJECT_VALUE as objectValue,
t.COUNT AS count,
t.DJSJ AS djsj,
td.TASK_RESULT_ID as taskResultId,
td.BIRTHDAY as birthday,
td.NAME as name,
td.RYZP as ryzp,
td.XZZDZMC as xzzDzmc,
td.CSDDZMC as csdDzmc,
td.ZJLX as zjlx,
td.ZJLX_CODE as zjlxCode,
td.AGE as age,
td.SEX as sex,
td.ZJHM as zjhm,
td.SJHM as sjhm
from TB_ST_TOGETHERTASKRESULT t
left join TB_ST_TOGETHERRESULTDETAIL td on t.OBJECT_VALUE = td.OBJECT_VALUE AND t.OBJECT_TYPE = td.OBJECT_TYPE
where t.TASK_ID = #{taskId}
<if test="objectType!= null and objectType!= ''">
<choose>
<when test="objectType.indexOf(',') > 0">
and t.OBJECT_TYPE in (${objectType})
</when>
<otherwise>
and t.OBJECT_TYPE in (#{objectType})
</otherwise>
</choose>
</if>
<if test="objectValue!= null and objectValue!= ''">and t.OBJECT_VALUE LIKE '%'|| #{objectValue} || '%'</if>
<if test="csrqStart!=null and csrqStart!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[>=]]> to_date(#{csrqStart},'yyyy-MM-dd') </if>
<if test="csrqEnd!=null and csrqEnd!=''"> and to_date(td.BIRTHDAY,'yyyy-MM-dd') <![CDATA[<=]]> to_date(#{csrqEnd},'yyyy-MM-dd') </if>
order by t.DJSJ desc
) t1
where rownum <![CDATA[ <= ]]> #{endNum}
) t2
where rn <![CDATA[ > ]]> #{startNum}
</select>
</mapper>
\ No newline at end of file
......@@ -68,11 +68,12 @@
from TB_ST_REGIONALTASKRESULT t
where t.TASK_ID = #{taskId}
</select>
<select id = "regionalTaskDetailIsExist" parameterType = "java.lang.String" resultType="int" >
<select id = "regionalTaskDetailIsExist" parameterType = "com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail" resultType="int" >
select count(*)
from REGIONALTASKRESULTDETAIL t
where
t.TASK_RESULT_ID = #{xxzjbh}
t.OBJECT_TYPE = #{objectType}
and t.OBJECT_VALUE = #{objectValue}
</select>
<insert id="saveRegionalTaskResultDetail" parameterType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail">
INSERT INTO REGIONALTASKRESULTDETAIL(
......@@ -91,7 +92,8 @@
AGE,
SEX,
ZJLX,
ZJLX_CODE
ZJLX_CODE,
DJSJ
)
VALUES(
<if test="XXZJBH != null and XXZJBH !=''">#{XXZJBH},</if>
......@@ -124,26 +126,119 @@
<if test="sex == null or sex ==''">NULL,</if>
<if test="zjlx != null and zjlx !=''">#{zjlx},</if>
<if test="zjlx == null or zjlx ==''">NULL,</if>
<if test="zjlxCode != null and zjlxCode !=''">#{zjlxCode}</if>
<if test="zjlxCode == null or zjlxCode ==''">NULL</if>
<if test="zjlxCode != null and zjlxCode !=''">#{zjlxCode},</if>
<if test="zjlxCode == null or zjlxCode ==''">NULL,</if>
SYSDATE
)
</insert>
<update id="updateRegionalTaskResultDetail" parameterType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail">
UPDATE REGIONALTASKRESULTDETAIL t SET
<if test="objectType != null and objectType !=''">t.OBJECT_TYPE = #{objectType}</if>
<if test="objectTypeName != null and objectTypeName !=''">,t.OBJECT_TYPE_NAME = #{objectTypeName}</if>
<if test="objectValue != null and objectValue !=''">,t.OBJECT_VALUE = #{objectValue}</if>
<if test="birthday != null and birthday !=''">,t.BIRTHDAY = #{birthday}</if>
<if test="name != null and name !=''">,t.NAME = #{name}</if>
<if test="ryzp != null and ryzp !=''">,t.RYZP = #{ryzp}</if>
<if test="xzzDzmc != null and xzzDzmc !=''">,t.XZZDZMC = #{xzzDzmc}</if>
<if test="csdDzmc != null and csdDzmc !=''">,t.CSDDZMC = #{csdDzmc}</if>
<if test="zjhm != null and zjhm !=''">,t.ZJHM = #{zjhm}</if>
<if test="sjhm != null and sjhm !=''">,t.SJHM = #{sjhm}</if>
<if test="age != null and age !=''">,t.AGE = #{age}</if>
<if test="sex != null and sex !=''">,t.SEX = #{sex}</if>
<if test="zjlx != null and zjlx !=''">,t.ZJLX = #{zjlx}</if>
<if test="zjlxCode != null and zjlxCode !=''">,t.ZJLX_CODE = #{zjlxCode}</if>
WHERE t.TASK_RESULT_ID=#{taskResultId}
UPDATE REGIONALTASKRESULTDETAIL t
<set>
<if test="objectType != null and objectType !=''">t.OBJECT_TYPE = #{objectType},</if>
<if test="objectTypeName != null and objectTypeName !=''">t.OBJECT_TYPE_NAME = #{objectTypeName},</if>
<if test="objectValue != null and objectValue !=''">t.OBJECT_VALUE = #{objectValue},</if>
<if test="birthday != null and birthday !=''">t.BIRTHDAY = #{birthday},</if>
<if test="name != null and name !=''">t.NAME = #{name},</if>
<if test="ryzp != null and ryzp !=''">t.RYZP = #{ryzp},</if>
<if test="xzzDzmc != null and xzzDzmc !=''">t.XZZDZMC = #{xzzDzmc},</if>
<if test="csdDzmc != null and csdDzmc !=''">t.CSDDZMC = #{csdDzmc},</if>
<if test="zjhm != null and zjhm !=''">t.ZJHM = #{zjhm},</if>
<if test="sjhm != null and sjhm !=''">t.SJHM = #{sjhm},</if>
<if test="age != null and age !=''">t.AGE = #{age},</if>
<if test="sex != null and sex !=''">t.SEX = #{sex},</if>
<if test="zjlx != null and zjlx !=''">t.ZJLX = #{zjlx},</if>
<if test="zjlxCode != null and zjlxCode !=''">t.ZJLX_CODE = #{zjlxCode},</if>
</set>
WHERE
t.OBJECT_TYPE = #{objectType}
and t.OBJECT_VALUE = #{objectValue}
</update>
<!--查看伴随表中任务翻译结果表 -->
<select id = "togetherDetailIsExist" parameterType = "com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail" resultType="int" >
select count(*)
from TB_ST_TOGETHERRESULTDETAIL t
where
t.OBJECT_TYPE = #{objectType}
and t.OBJECT_VALUE = #{objectValue}
</select>
<insert id="saveTogetherDetail" parameterType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail">
INSERT INTO TB_ST_TOGETHERRESULTDETAIL(
XXZJBH,
TASK_RESULT_ID,
OBJECT_TYPE,
OBJECT_TYPE_NAME,
OBJECT_VALUE,
BIRTHDAY,
NAME,
RYZP,
XZZDZMC,
CSDDZMC,
ZJHM,
SJHM,
AGE,
SEX,
ZJLX,
ZJLX_CODE,
DJSJ
)
VALUES(
<if test="XXZJBH != null and XXZJBH !=''">#{XXZJBH},</if>
<if test="XXZJBH == null or XXZJBH ==''">NULL,</if>
<if test="taskResultId != null and taskResultId !='' ">#{taskResultId},</if>
<if test="taskResultId == null or taskResultId ==''">NULL,</if>
<if test="objectType != null and objectType !=''">#{objectType},</if>
<if test="objectType == null or objectType ==''">NULL,</if>
<if test="objectTypeName != null and objectTypeName !=''">#{objectTypeName},</if>
<if test="objectTypeName == null or objectTypeName ==''">NULL,</if>
<if test="objectValue != null and objectValue !=''">#{objectValue},</if>
<if test="objectValue == null or objectValue ==''">NULL,</if>
<if test="birthday != null and birthday !=''">#{birthday},</if>
<if test="birthday == null or birthday ==''">NULL,</if>
<if test="name != null and name !=''">#{name},</if>
<if test="name == null or name ==''">NULL,</if>
<if test="ryzp != null and ryzp !=''">#{ryzp},</if>
<if test="ryzp == null or ryzp ==''">NULL,</if>
<if test="xzzDzmc != null and xzzDzmc !=''">#{xzzDzmc},</if>
<if test="xzzDzmc == null or xzzDzmc ==''">NULL,</if>
<if test="csdDzmc != null and csdDzmc !=''">#{csdDzmc},</if>
<if test="csdDzmc == null or csdDzmc ==''">NULL,</if>
<if test="zjhm != null and zjhm !=''">#{zjhm},</if>
<if test="zjhm == null or zjhm ==''">NULL,</if>
<if test="sjhm != null and sjhm !=''">#{sjhm},</if>
<if test="sjhm == null or sjhm ==''">NULL,</if>
<if test="age != null and age !=''">#{age},</if>
<if test="age == null or age ==''">NULL,</if>
<if test="sex != null and sex !=''">#{sex},</if>
<if test="sex == null or sex ==''">NULL,</if>
<if test="zjlx != null and zjlx !=''">#{zjlx},</if>
<if test="zjlx == null or zjlx ==''">NULL,</if>
<if test="zjlxCode != null and zjlxCode !=''">#{zjlxCode},</if>
<if test="zjlxCode == null or zjlxCode ==''">NULL,</if>
SYSDATE
)
</insert>
<update id="updateTogetherDetail" parameterType="com.founder.interservice.regionalanalysis.model.RegionalTaskResultDetail">
UPDATE TB_ST_TOGETHERRESULTDETAIL t
<set>
<if test="objectType != null and objectType !=''">t.OBJECT_TYPE = #{objectType},</if>
<if test="objectTypeName != null and objectTypeName !=''">t.OBJECT_TYPE_NAME = #{objectTypeName},</if>
<if test="objectValue != null and objectValue !=''">t.OBJECT_VALUE = #{objectValue},</if>
<if test="birthday != null and birthday !=''">t.BIRTHDAY = #{birthday},</if>
<if test="name != null and name !=''">t.NAME = #{name},</if>
<if test="ryzp != null and ryzp !=''">t.RYZP = #{ryzp},</if>
<if test="xzzDzmc != null and xzzDzmc !=''">t.XZZDZMC = #{xzzDzmc},</if>
<if test="csdDzmc != null and csdDzmc !=''">t.CSDDZMC = #{csdDzmc},</if>
<if test="zjhm != null and zjhm !=''">t.ZJHM = #{zjhm},</if>
<if test="sjhm != null and sjhm !=''">t.SJHM = #{sjhm},</if>
<if test="age != null and age !=''">t.AGE = #{age},</if>
<if test="sex != null and sex !=''">t.SEX = #{sex},</if>
<if test="zjlx != null and zjlx !=''">t.ZJLX = #{zjlx},</if>
<if test="zjlxCode != null and zjlxCode !=''">t.ZJLX_CODE = #{zjlxCode},</if>
t.DJSJ = SYSDATE
</set>
WHERE
t.OBJECT_TYPE = #{objectType}
and t.OBJECT_VALUE = #{objectValue}
</update>
</mapper>
\ No newline at end of file
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = '第';
$.fn.pagination.defaults.afterPageText = '共{pages}页';
$.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = '确定';
$.messager.defaults.cancel = '取消';
}
$.map(['validatebox','textbox','passwordbox','filebox','searchbox',
'combo','combobox','combogrid','combotree',
'datebox','datetimebox','numberbox',
'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){
if ($.fn[plugin]){
$.fn[plugin].defaults.missingMessage = '该输入项为必输项';
}
});
if ($.fn.validatebox){
$.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址';
$.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址';
$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间';
$.fn.validatebox.defaults.rules.remote.message = '请修正该字段';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六'];
$.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = '今天';
$.fn.datebox.defaults.closeText = '关闭';
$.fn.datebox.defaults.okText = '确定';
$.fn.datebox.defaults.formatter = function(date){
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
};
$.fn.datebox.defaults.parser = function(s){
if (!s) return new Date();
var ss = s.split('-');
var y = parseInt(ss[0],10);
var m = parseInt(ss[1],10);
var d = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
};
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText
});
}
if ($.fn.datetimespinner){
$.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]]
}
//跨域请求父页面(向父框架发送消息)
function crossRequestParent(_msg) {
var messenger = new Messenger('iframe', 'toParent');
sendToMain(_msg);
function sendToMain(msg) {
messenger.addTarget(window.top, 'parent');
messenger.targets['parent'].send(msg);
}
return true;
}
//
function pageJump() {
crossRequestParent('iframJump("' + current_tab_id + '")');
}
/*页面铺满加载中样式
* 1.type: open,打开;close,关闭
* 2.msg : 显示的文字,默认为加载中...
* */
function loading(type,msg){
var msg = msg || '加载中...';
//var staticPath = staticPath;
//if(!staticPath) alert('loading()方法无法获取静态资源路径');
var loading_img_url = staticPath +'/framework/default/images/loading.gif';
var loading_html='<div id="loadingMsk">'
+'<div class="loadingPage">'
+'<img src="'+loading_img_url+'" alt="loading">'
+'<span class="msg">'+msg+'</span>'
+'</div>'
+'</div>';
if($('#loadingMsk').length == 0){
$('body').append(loading_html);
}
if(type == 'open'){
$('#loadingMsk').fadeIn('fast');
}else if(type == 'close'){
$('#loadingMsk').fadeOut('fast').remove();
}else{
console.log('加载效果处理方式参数错误!');
return false;
}
}
//跨域添加Tab
function crossAddTab(tab_title, tab_url, tab_id) {
//将当前tabID作为下一个tab的返回ID
var return_tab_id = window.current_tab_id;
if (!tab_title || !tab_url || !tab_id) {
console.log('crossAddTab(tab_title,tab_url,tab_id) 缺少必要参数!');
return false;
}
//添加tab时,通过全局获取返回的tab_id,并存放在iframe的DOM属性中
crossRequestParent("addTab('" + tab_title + "','" + tab_url + "','" + tab_id + "','" + return_tab_id + "')");
}
//跨域关闭标签
function crossCloseTab(return_fn_name) {
//关闭标签时,直接获取上一级tabID(返回TabID);
//var return_tab_id = window.return_tab_id;
//console.log('切换回去tabID:',return_tab_id);
if (return_fn_name) {
crossRequestParent("closeTabRefreshOther('" + return_tab_id + "','" + return_fn_name + "')");
} else {
crossRequestParent("closeTabRefreshOther('" + return_tab_id + "')");
}
}
//改变按钮移入icon的样式
function changeLinkButtonIcon() {
var oldClass;
$(".l-btn").hover(
function () {
var tmp = $(this).find('.l-btn-icon').attr('class');
var disNum = $(this).attr('class').indexOf('l-btn-disabled');
if (tmp && disNum == -1) {
var pos = tmp.indexOf('icon-');
var str = tmp.substring(pos);
oldClass = str;
$(this).find('.l-btn-icon').removeClass(str).addClass(str + "-hover");
}
},
function () {
var tmp = $(this).find('.l-btn-icon').attr('class');
var disNum = $(this).attr('class').indexOf('l-btn-disabled');
if (tmp && disNum == -1) {
var str = tmp.substring(tmp.indexOf('icon-'));
$(this).find('.l-btn-icon').removeClass(str).addClass(oldClass);
}
}
)
}
//添加slider滑块两端圆圈方法
function sliderEndsCircle() {
var sliderItem = $(".easyui-slider");//所有的滑块组件
var slider = $('.slider');//获得滑块组件
for (var i = 0; i < sliderItem.length; i++) {
var mode = $(sliderItem[i]).slider('options').mode;//获取滑块的方向
if (mode == 'h') {//横向滑块
var strL = '<div class="ends-circle ends-circle-l"><span></span></div>';
var strR = '<div class="ends-circle ends-circle-r"><span></span></div>';
$(slider[i]).prepend(strL);
$(slider[i]).prepend(strR);
} else if (mode == 'v') {//垂直滑块
var strT = '<div class="ends-circle ends-circle-t"><span></span></div>';
var strB = '<div class="ends-circle ends-circle-b"><span></span></div>';
$(slider[i]).prepend(strT);
$(slider[i]).prepend(strB);
}
}
}
//格式化日期显示
function formatDate() {
$('.easyui-datebox').datebox({
formatter: function (date) {
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
},
parser: function (date) {
if (date == "" || date == "null" || date == null || date == undefined) {
return new Date();
}
return new Date(Date.parse(date.replace(/-/g, "/")));
}
})
}
/*combobox点击输入框是否直接弹出下拉框
* 1.box_id:组件Id
* 2.bool:是否执行点击就下拉
* 3.不传参数则执行整个页面所有组件,点击就下拉 2
* */
function clickShowPanel(box_id, bool) {
if (box_id) {
if (bool) {
$('#' + box_id).next().on('click.showPanel', function () {
if($(this).hasClass('inputReadonly') || $(this).hasClass('textbox-readonly')){
$(this).prev().combobox("hidePanel");
}else{
$(this).prev().combobox("showPanel");
}
});
} else {
$('#' + box_id).next().on('click.showPanel', function () {
$(this).prev().combobox("hidePanel");
});
}
} else {
$(".combo").on('click.showPanel', function () {
if($(this).hasClass('inputReadonly') || $(this).hasClass('textbox-readonly')){
$(this).prev().combobox("hidePanel");
}else{
$(this).prev().combobox("showPanel");
}
});
}
}
//判断两个数组中是否存在相同的值
function arrSame(arr1, arr2) {
for (var i = 0; i < arr1.length; i++) {
if ($.inArray(arr1[i], arr2) != -1) {
return true;
}
}
return false;
}
/*js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3
* 1.fileObj:file类型的input对象(使用原生JS方法获取)
* 2.imgPreviewId:img的id
* 3.divPreviewId:包装img的div的id
**/
function PreviewImage(fileObj, imgPreviewId, divPreviewId) {
//fileObj.value = ""; //清空选中文件
var allowExtention = ".jpg,.bmp,.gif,.png"; //允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;
var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase();
var browserVersion = window.navigator.userAgent.toUpperCase();
if (allowExtention.indexOf(extention) > -1) {
if (fileObj.files) {//HTML5实现预览,兼容chrome、火狐7+等
if (window.FileReader) {
var reader = new FileReader();
reader.onload = function (e) {
document.getElementById(imgPreviewId).setAttribute("src", e.target.result);
};
reader.readAsDataURL(fileObj.files[0]);
} else if (browserVersion.indexOf("SAFARI") > -1) {
alert("不支持Safari6.0以下浏览器的图片预览!");
}
} else if (browserVersion.indexOf("MSIE") > -1) {
if (browserVersion.indexOf("MSIE 6") > -1) {//ie6
document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
} else {//ie[7-9]
fileObj.select();
if (browserVersion.indexOf("MSIE 9") > -1)
fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问
var newPreview = document.getElementById(divPreviewId + "New");
if (newPreview == null) {
newPreview = document.createElement("div");
newPreview.setAttribute("id", divPreviewId + "New");
newPreview.style.width = document.getElementById(imgPreviewId).width + "px";
newPreview.style.height = document.getElementById(imgPreviewId).height + "px";
newPreview.style.border = "solid 1px #d2e2e2";
}
newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
var tempDivPreview = document.getElementById(divPreviewId);
tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);
tempDivPreview.style.display = "none";
}
} else if (browserVersion.indexOf("FIREFOX") > -1) {//firefox
var firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
if (firefoxVersion < 7) {//firefox7以下版本
document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());
} else {//firefox7.0+
document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));
}
} else {
document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
}
} else {
alert("仅支持" + allowExtention + "为后缀名的文件!");
fileObj.value = ""; //清空选中文件
if (browserVersion.indexOf("MSIE") > -1) {
fileObj.select();
document.selection.clear();
}
fileObj.outerHTML = fileObj.outerHTML;
}
return fileObj.value; //返回路径
};
/*日期起始时间小于结束日期,并且只能小于等于今天(开始时间框ID,结束时间框ID)
* 1.start_id : 开始时间的datebox ID
* 2.end_id : 结束时间的datebox ID
* */
function ltToday(start_id, end_id) {
$('#' + start_id).datebox({
onSelect: function () {
clickShowPanel(end_id, true);
var st = new Date($('#' + start_id).datebox('getValue'));
$('#' + end_id).datebox({
disabled: false
}).datebox('calendar').calendar({
validator: function (date) {
var _date = date.getTime() / 1000;
var _st = st.getTime() / 1000;
var _now = (new Date()).getTime() / 1000;
return (_date + 3600 * 24) >= _st && _date <= _now;
}
});
}
}).datebox('calendar').calendar({
validator: function (date) {
var now = new Date();
return date <= now;
}
});
}
/*form提交,依赖easyui [不带提示信息],
* 1.form_id : 表单ID
* 2.call_back : 提交成功后的回调函数处理
* 3.url : 提交表单地址,默认为form上的action属性
* 4.queryParams : 额外的参数
* */
function formSubmit(form_id, call_back, url,queryParams){
var $submit_form = $('#' + form_id);
var submit_url = url || $submit_form.action;
var params = {};
if(queryParams) params = queryParams;
$submit_form.form('submit', {
url: submit_url,
queryParams: params,
onSubmit: function () {
var isValid = $(this).form('validate');
if(isValid){
loading('open','数据提交中,请稍候...');
}
return isValid; // 返回false终止表单提交
},
success: function (data) {
try{
var json = eval('(' + data + ')');
}catch(e){
var json=data;
}
if(json.status == 'success'){
if(typeof call_back == 'function'){
call_back(data);
loading('close');//完成后关闭...转圈
}else{
alert(call_back+'is not a function');
}
}else{
alertDiv('提示',json.message);
loading('close');//完成后关闭...转圈
}
},
error: function () {
loading('close');
resetToken();
console.log('submitForm ajax err');
var errorMsg='数据提交服务失败!';
if(data && (data.status == 400 || data.status == 500) && data.responseText){
errorMsg=data.responseText;
try{
var messageJson = eval("("+errorMsg+")");
if(messageJson.message){
errorMsg = messageJson.message;
}else if(messageJson.errors){
errorMsg = messageJson.errors;
}
}catch(e){}
}
alertDiv({
title : '错误信息',
msg : errorMsg
});
}
});
}
/*普通form提交,依赖easyui
* 1.form_id : 表单ID
* 2.call_back : 提交成功后的回调函数处理
* 3.url : 提交表单地址,默认为form上的action属性
* */
function normalSubmit(form_id, call_back, url) {
var submit_form = $('#' + form_id);
var submit_url = url || submit_form.action;
submit_form.form('submit', {
url: submit_url,
onSubmit: function () {
var isValid = $(this).form('validate');
if(isValid){
loading('open','数据处理中,请稍候...');//验证通过提交后台,开始....转圈!
}
return isValid; // 返回false终止表单提交
},
success: function (data) {
loading('close');//完成后关闭...转圈
try{
var json = eval('(' + data + ')');
}catch(e){
var json = data;
}
formTips(json, call_back, 'tips');
},
error: function (data) {
loading('close');
resetToken();
console.log('submitForm ajax err');
var errorMsg='数据提交服务失败!';
if(data && (data.status == 400 || data.status == 500) && data.responseText){
errorMsg=data.responseText;
try{
var messageJson = eval("("+errorMsg+")");
if(messageJson.message){
errorMsg = messageJson.message;
}else if(messageJson.errors){
errorMsg = messageJson.errors;
}
}catch(e){}
}
alertDiv({
title : '错误信息',
msg : errorMsg
});
}
});
}
/*提交form时,对反馈信息的处理
* 1.json:为success中返回的json格式数据(非json格式请转换)
* 2.success_fn:成功后需要执行的函数名称,不传值则默认弹框显示json.message
* 3.type : 如何执行success_fn,不传参直接调用;传递tips,则提示信息后延迟1秒后执行
* 3.返回信息格式 {"message":"{\"xxzb.xbdm\":\"【性别】不能为空\",\"xxzb.zjhm\":\"【证件号码】不能为空\"}","status":"error"}
* */
function formTips(json, success_fn, type) {
//console.log('添加返回参数:',json);
//console.log('参数:',success_fn,type);
if (json.status == 'success') {
if (success_fn) {
try {
var fn = eval(success_fn);
if (type == 'tips' && json.message) {
$.messager.show({
title: '提示信息',
msg: json.message,
height:'auto'
});
setTimeout(function () {
fn(json);
}, 2000);
} else {
fn(json);
}
} catch (e) {
console.log('请确认函数success_fn,是否存在');
}
} else {
$.messager.show({
title: '提示信息',
msg: json.message
})
}
} else {
//if (json.status == 308) {
if (json){//有错误信息,不是重复提交,无错误信息,则是重复提交
resetToken();
}
if (json.message && json.message.indexOf('{') == -1) { //系统异常错误抛出
alertDiv('提示信息',json.message);
} else {
var message = eval("(" + json.message + ")");
var message_arr = [];
var field_arr = [];
var i = 0;
for (var k in message) {
message_arr[i] = message[k];
field_arr[i] = k;
i++;
}
if (message_arr[0]) {
//focus定位错误信息位置,并提示
$.messager.alert({
title: '提示信息',
msg: message_arr[0],
top: 200,
onClose: function () {
$('input[textboxname="' + field_arr[0] + '"] + span > input').focus();
$('textarea[name="' + field_arr[0] + '"]').focus();
}
});
}
}
}
}
/*图片通过form上传方法
* 1.form_id:提交的表单的id
* 2.callback_fn:提交成功之后的回调函数
**/
function submitImg(form_id, callback_fn) {
var img_input = $("#" + form_id + " input[type=file]");
if (img_input.val() == '') {
alertDiv('添加失败', '请添加图片!');
return false;
} else if (!/.(gif|jpg|jpeg|png|GIF|JPG|png|PNG)$/.test(img_input.val())) {
alertDiv('上传失败', '图片类型必须是.gif,jpeg,jpg,png中的一种');
return false;
} else {
$("#" + form_id).ajaxSubmit({
success: function (data) {
var json = eval('(' + data + ')');
if (json.status == 'success') {
if ((typeof callback_fn) == 'function') {
callback_fn();
} else {
$.messager.show({
title: '提示信息',
msg: '图片上传成功'
});
}
img_input.val('');
} else {
alertDiv('上传失败', data);
}
},
error: function () {
alertDiv('上传失败', 'submitImg ajaxsubmit err');
}
});
}
}
/*自定义的Url弹框方法
* 1.options : 对象参数(各项配置)
* 2.btn_diy : 数组参数(自定义按钮操作)
* */
function openUrlForm(options) {
//参数使用说明(子页面能够调用父页面的事件函数)
/*openUrlForm({
id: 'dlg_id', //自定义ID,防止重复添加DOM
url: '2.html', //需要放入弹框的页面URL,此页面中设置好form属性,自动提交第一个form
title: '表单提交', //模态框标题
width: 800, //模态框宽度
height: 600, //模态框高度
cache:true, //是否缓存
});*/
//只创建一次DIV
if($('#' + options.id).length > 0 && options.cache){
//缓存窗口
options.open_status = options.cache;
var dlg_div = $('#' + options.id);
}else{
var dlg_div = $('<div id="' + options.id + '"></div>').css({
overflow: 'hidden'
});
var iframe = $('<iframe src="" id="' + options.id + '_iframe" name="' + options.id + '_iframe" frameborder="0"></iframe>').css({
width: '100%',
height: '100%'
});
$('body').append(dlg_div);
dlg_div.append(iframe);
}
//var _buttons = btn_diy || default_btn;
var _width = options.width || '90%';
var _title = options.title || '弹框标题';
var _height = options.height || 'auto';
var _cache = options.open_status || false;
var _close = options.onClose;
var blank_height = _height;
if (blank_height == 'auto') {
blank_height = dlg_div.height();
if (blank_height > 0) {
setCookie(dlg_id + 'dialog_height', blank_height);
} else {
blank_height = parseInt(getCookie(dlg_id + 'dialog_height'));
}
blank_height = blank_height + 200;
}
var surplus_height_ = window.innerHeight - _height;
var self_top = 0;
if (surplus_height_ > 0) {
self_top = parseInt(surplus_height_ / 2);
}
//var _top = options.top || self_top; //如果需要强行定制高度,使用此项设置
var _top = self_top; //自适应高度
dlg_div.dialog({
//href:options.url,1
cache:_cache,
modal: true,
title: _title,
width: _width,
height: _height,
top: _top,
//buttons: _buttons, //打开url的弹框暂时不使用面板按钮
onBeforeOpen:function(){
//没有缓存,重新加载
if(options.open_status != true){
$('#' + options.id + '_iframe').prop('src', options.url);
}
},
onClose:function(){
if(options.open_status != true){
dlg_div.remove();
}
try{
_close();
}catch(e){}
}
});
//弹框高度自适应
dlg_div.dialog('move', {top: $(document).scrollTop() + _top});
dlg_div.dialog('open');
}
/*自定义的div弹框方法
* 1.options : 对象参数(各项配置)
* 2.btn_diy : 数组参数(自定义按钮操作)
* */
function openDivForm(options, btn_diy) {
//参数使用说明举例
//只弹窗的用法
/*openDivForm({
id: 'div_id', //页面上div的id,将div设置为display:none,在div中设置好form属性,自动提交第一个form
title: '表单提交',
width: 800,
height: 200,
}, []);*/
//提交表单的用法
/*openDivForm({
id: 'div_id', //页面上div的id,将div设置为display:none,在div中设置好form属性,自动提交第一个form
title: '表单提交',
width: 800,
height: 200,
top: 200,
beforeSubmit: function () {
}, //return false,阻止提交
afterSubmit: function (data) {
}, //提交成功,data为返回的数据
onClose: function () {
}, //关闭时提交的函数
}, [ //以下为按钮添加配置,不传值为默认,传递[]时,清除所有按钮
{
text: '确定',
handler: function () {
$('#div_id').dialog('close');
}
}, {
text: '关闭',
handler: function () {
$('#div_id').dialog('close');
}
},
]);*/
var dlg_id = options.id;
var dlg_div = $('#' + dlg_id);
var defualt_beforeSubmit = function () {
//验证表单
var isValid = $(this).form('validate');
return isValid; // 返回false终止表单提交
};
var default_afterSubmit = function (data) {
if (data) {
dlg_div.dialog('close');
}
};
var beforeSubmit = options.beforeSubmit || defualt_beforeSubmit;
var afterSubmit = options.afterSubmit || default_afterSubmit;
var default_btn = [{
text: '保存',
handler: function () {
var form = dlg_div.find('form');
var submitUrl = options.url || form.action;
if (form.length > 0) {
$(form[0]).form('submit', {
url: submitUrl,
onSubmit: beforeSubmit,
success: afterSubmit
});
} else {
alertDiv('提示', '无法获取表单元素,无法提交');
}
}
}, {
text: '重置',
handler: function () {
var form = dlg_div.find('form');
if (form.length > 0) {
$(form[0]).form('reset');
} else {
alertDiv('提示', '无法获取表单元素,无法提交');
}
}
}, {
text: '关闭',
handler: function () {
dlg_div.dialog('close');
}
}];
var _buttons = btn_diy || default_btn;
var _title = options.title || '弹框';
var _width = options.width || 800;
var _height = options.height || 'auto';
var _left = options.left || null;
var blank_height = _height;
if (blank_height == 'auto') {
blank_height = dlg_div.height();
if (blank_height > 0) {
setCookie(dlg_id + 'dialog_height', blank_height);
} else {
blank_height = parseInt(getCookie(dlg_id + 'dialog_height'));
}
blank_height = blank_height + 160;
}
var surplus_height_ = window.innerHeight - blank_height;
var self_top = 0;
if (surplus_height_ > 0) {
self_top = parseInt(surplus_height_ / 2);
}
var _top = options.top || self_top; //如果需要强行定制高度,使用此项设置,不输入自适应
//var _top = self_top; //自适应高度
dlg_div.dialog({
cache: true,
modal: true,
novalidate: true, //验证表单元素
title: _title,
width: _width,
height: _height,
top: _top,
left: _left,
buttons: _buttons,
onClose: options.onClose,
});
dlg_div.dialog('move', {top: $(document).scrollTop() + _top});
dlg_div.show().dialog('open');
}
/*去除input效果
* 1.bool:true启用编辑效果和样式,false禁用编辑效果并清除样式
* 2.border_class:禁用编辑时给输入框添加的样式class
* 3.box_class:给需要禁用或启用的组件添加样式,不传值则对整个页面有效
* 4.重新初始化组件会导致value变化,必须修改
* */
function editSwitch(bool, border_class, box_class) {
var _border_class = border_class || 'clear-border';
var box = $('.val');
if (box_class) {box = $('.' + box_class);}
//启用编辑
if (bool) {
box.each(function () {
var _this = $(this);
_this.prev().find('i').show();
_this.parent().prev().find('i').show();
if (_this.hasClass('easyui-combobox')) {
_this.combobox({readonly: false}).next().removeClass(_border_class);//移除样式还原边框
} else if (_this.hasClass('easyui-textbox')) {
_this.textbox({readonly: false}).next().removeClass(_border_class);
} else if (_this.hasClass('easyui-numberbox')) {
_this.numberbox({readonly: false}).next().removeClass(_border_class);
} else if (_this.hasClass('easyui-datebox')) {
_this.datebox({readonly: false}).next().removeClass(_border_class);
} else if (_this.hasClass('easyui-datetimebox')) {
_this.datetimebox({readonly: false}).next().removeClass(_border_class);
} else if (_this.hasClass('easyui-combotree')) {
_this.combotree({readonly: false}).next().removeClass(_border_class);
} else if (_this.hasClass('easyui-validatebox')) {
if(_this.hasClass('Wdate')){
_this.removeAttr('disabled');
_this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
}else{
_this.validatebox({readonly: false}).next().removeClass(_border_class);
}
}else if(_this.hasClass('Wdate')){
_this.removeAttr('disabled');
_this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
}
_this.next().find('span.textbox-addon').show();//显示按钮
});
} else {
box.each(function () {
var _this = $(this);
//清除“*”
_this.prev().find('i').hide();
_this.parent().prev().find('i').hide();
if (_this.hasClass('easyui-combobox') || _this.hasClass('easyuicombobox')) {
_this.combobox({readonly: true,required:false}).next().addClass(_border_class);//添加样式取消边框
} else if (_this.hasClass('easyui-textbox') || _this.hasClass('easyuitextbox')) {
_this.textbox({readonly: true,required:false}).next().addClass(_border_class);
} else if (_this.hasClass('easyui-numberbox') || _this.hasClass('easyuinumberbox')) {
_this.numberbox({readonly: true,required:false}).next().addClass(_border_class);
} else if (_this.hasClass('easyui-datebox') || _this.hasClass('easyuidatebox')) {
_this.datebox({readonly: true,required:false}).next().addClass(_border_class);
} else if (_this.hasClass('easyui-datetimebox') || _this.hasClass('easyuidatetimebox')) {
_this.datetimebox({readonly: true,required:false}).next().addClass(_border_class);
} else if (_this.hasClass('easyui-combotree') || _this.hasClass('easyuicombotree')) {
_this.combotree({readonly: true,required:false}).next().addClass(_border_class);
} else if (_this.hasClass('easyui-validatebox') || _this.hasClass('easyuivalidatebox')) {
if(_this.hasClass('Wdate')){
_this.attr('disabled','disabled');
_this.css({'border':'0','background':'#fff'})
}else{
_this.validatebox({readonly: true,required:false}).next().addClass(_border_class);
}
} else if(_this.hasClass('Wdate')){
_this.attr('disabled','disabled');
_this.css({'border':'0','background':'#fff'})
}
_this.next().find('span.textbox-addon').hide();//隐藏按钮
});
}
}
//input禁用编辑(easyui组件)
function editDisable(input_class){
var box = $('.'+input_class);
var border_class = 'clear-border';//确保此样式已经加载
box.each(function () {
var _this = $(this);
//隐藏“*”
_this.prev().find('i').hide();
if (_this.hasClass('easyui-combobox')) {
_this.combobox({readonly: true,required:false,prompt:''}).next().addClass(border_class);//添加样式取消边框
} else if (_this.hasClass('easyui-textbox')) {
_this.textbox({readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyui-datebox')) {
_this.datebox({readonly: true,required:false,prompt:''}).next().addClass(border_class);
}else if (_this.hasClass('easyui-numberbox')) {
_this.numberbox({readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyui-datetimebox')) {
_this.datetimebox({readonly: true,required:false}).next().addClass(border_class);
} else if (_this.hasClass('easyui-combotree')) {
_this.combotree({readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyui-validatebox')) {
if(_this.hasClass('Wdate')){
_this.attr('disabled','disabled');
_this.css({'border':'0','background':'#fff'})
}else{
_this.validatebox({readonly: true,required:false}).next().addClass(border_class);
}
} else if(_this.hasClass('Wdate')){
_this.attr('disabled','disabled');
_this.css({'border':'0','background':'#fff'})
}
_this.next().find('span.textbox-addon').hide();//隐藏按钮
});
}
//input启用编辑(easyui组件)
function editEnable(input_class){
var box = $('.'+input_class);
var border_class = 'clear-border';//确保此样式已经加载
box.each(function () {
var _this = $(this);
//显示"*"
_this.prev().find('i').show();
if (_this.hasClass('easyui-combobox')) {
_this.combobox({readonly: false}).next().removeClass(border_class);//移除样式还原边框
} else if (_this.hasClass('easyui-textbox')) {
_this.textbox({readonly: false}).next().removeClass(border_class);
}else if (_this.hasClass('easyui-numberbox')) {
_this.numberbox({readonly: false}).next().removeClass(border_class);
}else if (_this.hasClass('easyui-datebox')) {
_this.datebox({readonly: false}).next().removeClass(border_class);
} else if (_this.hasClass('easyui-datetimebox')) {
_this.datetimebox({readonly: false}).next().removeClass(border_class);
} else if (_this.hasClass('easyui-combotree')) {
_this.combotree({readonly: false}).next().removeClass(border_class);
} else if (_this.hasClass('easyui-validatebox')) {
if(_this.hasClass('Wdate')){
_this.removeAttr('disabled');
_this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
}else{
_this.validatebox({readonly: false}).next().removeClass(border_class);
}
} else if(_this.hasClass('Wdate')){
_this.removeAttr('disabled');
_this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
}
_this.next().find('span.textbox-addon').show();//显示按钮
});
}
//input禁用编辑(easyui组件)
function editDisableForAj(input_class){
var box = $('.'+input_class);
var border_class = 'clear-border';//确保此样式已经加载
box.each(function () {
var _this = $(this);
//隐藏“*”
_this.prev().find('i').hide();
if (_this.hasClass('easyuicombobox')) {
_this.combobox({value:'',readonly: true,required:false,prompt:''}).next().addClass(border_class);//添加样式取消边框
} else if (_this.hasClass('easyuitextbox')) {
_this.textbox({value:'',readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyuidatebox')) {
_this.datebox({value:'',readonly: true,required:false,prompt:''}).next().addClass(border_class);
}else if (_this.hasClass('easyuinumberbox')) {
_this.numberbox({value:'',readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyuidatetimebox')) {
_this.datetimebox({value:'',readonly: true,required:false}).next().addClass(border_class);
} else if (_this.hasClass('easyuicombotree')) {
_this.combotree({value:'',readonly: true,required:false,prompt:''}).next().addClass(border_class);
} else if (_this.hasClass('easyuivalidatebox')) {
if(_this.hasClass('Wdate')){
_this.val('').attr('disabled','disabled');
_this.css({'border':'0','background':'#fff'});
_this.validatebox({required:false});
}else if(_this.hasClass('TEXTAREA') || _this.hasClass('TEXTAREA_R') ||_this.hasClass('TEXTBOX')){
_this.val('').attr('readonly','readonly').css('border','0');
_this.validatebox({required:false});
}else{
_this.attr('disabled','disabled').css('background','#ffffff').addClass(border_class);
_this.validatebox({value:'',readonly: true,required:false}).attr('disabled','disabled').next().addClass(border_class);
}
}
_this.next().find('span.textbox-addon').hide();//隐藏按钮
});
}
//input启用编辑(easyui组件)
function editEnableForAj(input_class){
var box = $('.'+input_class);
var border_class = 'clear-border';//确保此样式已经加载
box.each(function () {
var _this = $(this);
//显示"*"
_this.prev().find('i').show();
if (_this.hasClass('easyuicombobox')) {
_this.combobox({readonly: false,required:true}).next().removeClass(border_class);//移除样式还原边框
} else if (_this.hasClass('easyuitextbox')) {
_this.textbox({readonly: false,required:true}).next().removeClass(border_class);
}else if (_this.hasClass('easyuinumberbox')) {
_this.numberbox({readonly: false,required:true}).next().removeClass(border_class);
}else if (_this.hasClass('easyuidatebox')) {
_this.datebox({readonly: false,required:true}).next().removeClass(border_class);
} else if (_this.hasClass('easyuidatetimebox')) {
_this.datetimebox({readonly: false,required:true}).next().removeClass(border_class);
} else if (_this.hasClass('easyuicombotree')) {
_this.combotree({readonly: false,required:true}).next().removeClass(border_class);
} else if (_this.hasClass('easyuivalidatebox')) {
if(_this.hasClass('Wdate')){
_this.removeAttr('disabled');
_this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
_this.validatebox({required:true});
}else if(_this.hasClass('TEXTAREA') || _this.hasClass('TEXTAREA_R') ||_this.hasClass('TEXTBOX')){
_this.removeAttr('readonly').css('border','1px solid #ccc');
_this.validatebox({required:true});
}else{
_this.removeAttr('disabled').removeClass(border_class);
_this.validatebox({readonly: false,required:true}).next().removeClass(border_class);
}
}
_this.next().find('span.textbox-addon').show();//显示按钮
});
}
//组件的边框和图标是否显示
function isBorder(bool,boxClass){
var $box = $('.'+boxClass);
var noBorderClass = 'clear-border';
//显示边框和图标
if(bool){
$box.each(function(){
var $this = $(this);
$this.next().removeClass(noBorderClass).find('span.textbox-addon').show();
$this.prev().find('i').show();
//My97日期处理
if($this.hasClass('Wdate')){
$this.removeAttr('disabled');
$this.css({'border':'1px solid #ccc','background':'url('+pathConfig.staticPath+'/common/datepicker/skin/christ/datePicker.png) no-repeat right'});
}
});
//隐藏边框和图标
}else{
$box.each(function(){
var $this = $(this);
$this.next().addClass(noBorderClass).find('span.textbox-addon').hide();
$this.prev().find('i').hide();
//My97日期处理
if($this.hasClass('Wdate')){
$this.attr('disabled','disabled');
$this.css({'border':'0','background':'#fff'})
}
});
}
}
/*表单修改,只提交点击过的input框(easyui组件)
* 1.页面加载完成时执行方法1(页面DOM记录点击状态)
* 2.在表单提交之前执行方法2(获取页面点击状态,将未点击的input设置disabled,并判断返回是否有修改)
* 3.必须提交的input,添加属性sb_status="1"
* */
//1.记录FORM中input的提交状态
function markInputStatus(form_id) {
$('#' + form_id + ' span.textbox input').off('focus.status').on({
'focus.status': function () {
var input_module = $(this).parent().prev(); //组件input
if(input_module.hasClass('readonly') == false){
input_module.attr('sb_status', 1);
}
},
'change': function () {
var input_module = $(this).parent().prev(); //组件input
if(input_module.hasClass('readonly') == false){
input_module.attr('sb_status', 1);
}
}
});
$('#' + form_id + ' textarea').off('focus.status').on({
'focus.status': function () {
var input_module = $(this);
if(input_module.hasClass('readonly') == false){
input_module.attr('sb_status', 1);
}
},
'change': function () {
var input_module = $(this);
if(input_module.hasClass('readonly') == false){
input_module.attr('sb_status', 1);
}
}
});
}
//2.提交之前更改input的disable状态,并判断返回是否有修改
function changeInputStatus(form_id) {
var i = 0;
$('#' + form_id + ' span.textbox').each(function () { //所有上传到后台的隐藏输入框
//处理组件下面的input
var input_module = $(this).prev(); //组件input
if (input_module.attr('sb_status') != 1) {
input_module.next().find('input').prop("disabled", true);
} else {
input_module.next().find('input').prop("disabled", false);
i++;
}
});
$('#' + form_id + ' textarea').each(function () {
var input_module = $(this);
if (input_module.attr('sb_status') != 1) {
input_module.prop("disabled", true);
} else {
input_module.prop("disabled", false);
i++;
}
});
if (i >= 1) {
return true;
} else {
console.log('未能获取一个修改项');
return false;
}
}
//3.未作任何修改还原input状态
function returnInputStatus(form_id){
$('#' + form_id + ' span.textbox').each(function () { //所有上传到后台的隐藏输入框
var input_module = $(this).prev(); //组件input
input_module.next().find('input').prop("disabled", false);
});
$('#' + form_id + ' textarea').each(function () {
var input_module = $(this) //组件input
input_module.prop("disabled", false);
});
}
/*combobox下拉菜单中,只显示中文描述,不显示代码
* 1.combox_id : combobox组件ID
* */
function setComboxOnlyText(combox_id) {
$('#' + combox_id).combobox({
formatter: function (row) {
var opts = $(this).combobox('options');
return row[opts.textField];
}
});
}
/*使用url弹框中的页面关闭方法
* 1.dialog_id:打开窗口的dialogDIV的id
* 2.msg:关闭后的提示信息
* 3.fn_name:关闭后执行父框架中函数名
* */
function closeWindow(dialog_id, msg, fn_name) {
if (msg) {
window.parent.$.messager.show({
title: '提示',
msg: msg
});
}
if (fn_name) {
window.parent.return_fn[fn_name]();
}
window.parent.$('#' + dialog_id, window.parent.document).dialog('close');
}
//获取对象实例属性的个数
function countObj(obj) {
var count = 0;
for (var property in obj) {
if (Object.prototype.hasOwnProperty.call(obj, property)) {
count++;
}
}
return count;
}
//更新照片src
function updatePicUrl(img_id, src, default_src) {
$('#' + img_id).prop('src', src).on('error', function () {
if (default_src) {
$(this).prop('src', default_src);
} else {
alert('请正确填写默认照片路径');
}
});
}
/***以下为巡逻盘查获取封面和最后上传图片的方法***/
/**
* 获取封面图片
*/
function getFmImage(lyid, lybm, add_btn, manage_btn) {
$.ajax({
url: basePath + '/zpfjFjxxb/queryList',
type: 'post',
dataType: 'json',
data: {
lyid: lyid,
lybm: lybm,
sffm: '1',
page: 1,
rows: 1
},
success: function (json) {
//console.log(json);
var data = json.rows;
if (data.length > 0) {
var src = 'data:image/jpeg;base64,' + data[0]['slt'];
updatePicUrl('info_pic', src, basePath + '/images/default.jpg');
if (add_btn) {
add_btn.css('display', 'none');
}
if (manage_btn) {
manage_btn.css('display', 'block');
}
} else {
getLastUploadImage(lyid, lybm, add_btn, manage_btn);
}
},
error: function () {
console.log('getSLTInfo ajax err');
}
});
}
/**
* 获取最后上传的图片
*/
function getLastUploadImage(lyid, lybm, add_btn, manage_btn) {
$.ajax({
url: basePath + '/zpfjFjxxb/queryList',
type: 'post',
dataType: 'json',
data: {
lyid: lyid,
lybm: lybm,
page: 1,
rows: 1
},
success: function (json) {
var data = json.rows;
if (data.length > 0) {
var src = 'data:image/jpeg;base64,' + data[0]['slt'];
updatePicUrl('info_pic', src, basePath + '/images/default.jpg');
if (add_btn) {
add_btn.css('display', 'none');
}
if (manage_btn) {
manage_btn.css('display', 'block');
}
}else {
updatePicUrl('info_pic',basePath + '/images/default.jpg', basePath + '/images/default.jpg');
}
},
error: function () {
console.log('getSLTInfo ajax err');
}
});
}
//刷新token,防止重复提交
function resetToken() {
$.ajax({
url: basePath + '/submitToken/new',
type: 'get',
dataType: 'json',
success: function (json) {
if (json.token) {
$("#token").val(json.token);
}
},
error: function () {
console.log('token reset error!');
}
});
}
//combobox下拉显示,只显示textValue
//页面直接引用,并在组件中添加show-text样式
function comboboxShowText(){
$('.show-text').combobox({
formatter: function(row){
var opts = $(this).combobox('options');
return row[opts.textField];
}
});
}
/*统一获取组件的值
* 1.input:组件对象
* 2.input_type:组件类型
* 3.multiple:是否获取去多选值数组结果
* */
function getInputValue(input,input_type,multiple){
if(input_type == 'textbox'){
return input.textbox('getValue');
}else if(input_type == 'datebox'){
return input.val();
//return input.datebox('getValue');
}else if(input_type == 'combobox'){
if(multiple){
return input.combobox('getValues');
}else{
return input.combobox('getValue');
}
}else if(input_type == 'combotree'){
if(multiple){
return input.combobox('getValues');
}else{
return input.combobox('getValue');
}
}else{
alert('请输入正确的组件类型');
}
}
//批量清除组件数据
function clearInput(input_class){
$('.Wdate').val('');
$('.'+input_class).each(function(){
var _this = $(this);
try{
_this.combobox('setValue','');
_this.combobox('select','');
}catch(e){
try{
_this.textbox('setValue','');
}catch(e){
try{
_this.datebox('setValue','');
}catch(e){
try{
_this.combotree('setValue','');
}catch(e){
try{
_this.validate('setValue','');
}catch(e){
_this.val('');
}
}
}
}
}
})
}
//设置组件的值
function setInputValue($input,val){
try{
$input.combotree('setValue',val);
}catch(e){
try{
$input.combobox('setValue',val);
}catch(e){
try{
$input.datebox('setValue',val);
}catch(e){
try{
$input.textbox('setValue',val);
}catch(e){
try{
$input.validatebox('setValue',val);
}catch(e){
$input.val(val);
}
}
}
}
}
if($input.hasClass('easyui-validatebox')){
$input.validatebox();
}
}
//combobox自动填值
function comboAutoComplete(combobox_id,dictUrl){
var $combobox = $('#'+combobox_id);
var domain = getThisLocationObj();
var hostname = domain.hostname;
var randomUrl = dictUrl;
if(dictUrl.indexOf('?') == -1){
randomUrl = dictUrl+'?domain='+hostname+'&v='+jwzhVersion;
}else{
randomUrl = dictUrl+'&domain='+hostname+'&v='+jwzhVersion;
}
$.ajax({
cache:true,
url : randomUrl,
type:'get',
dataType:'json',
xhrFields: {withCredentials:true},
crossDomain: true,
success : function(data){
if(data.length === 1){
$combobox.combobox('select',data[0]['id']);
}
}
});
}
//html页面参数获取
function getParamLinkUrl() {
var pathObj = {};
if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) {
var arrSource = decodeURI(this.location.search).substring(1, this.location.search.length).split("&");
for(var i=0;i<arrSource.length;i++){
var paramName = arrSource[i].split("=")[0];//参数名称
var paramVal = arrSource[i].split("=")[1];//参数值
pathObj[paramName] = paramVal;
}
}
return pathObj;
}
//获取当前location对象
function getThisLocationObj(){
var locaObj = location;
var locaTmp = {
hash:locaObj.hash,//锚点
host:locaObj.host,//主机
hostname:locaObj.hostname,//域名
href: locaObj.href,//url字符串
origin: locaObj.origin,//完整域名
pathname : locaObj.pathname,//参数(查询)部分,
port: locaObj.port,//端口
protocol: locaObj.protocol,//协议
proname: locaObj.pathname.substr(0,locaObj.pathname.substr(1).indexOf("/")+1)//项目名称
};
return locaTmp;
}
//获取当前时间并格式化为'yyyy-MM-dd HH:mm:ss'
function getCurrentTime(){
var myDate = new Date();
var yyyy = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
var dd = myDate.getDate(); //获取当前日(1-31)
var HH = myDate.getHours(); //获取当前小时数(0-23)
var mm = myDate.getMinutes(); //获取当前分钟数(0-59)
var ss = myDate.getSeconds(); //获取当前秒数(0-59)
if(MM < 10) MM = '0' + MM;
if(dd < 10) dd = '0' + dd;
if(HH < 10) HH = '0' + HH;
if(mm < 10) mm = '0' + mm;
if(ss < 10) ss = '0' + ss;
return yyyy+'-'+MM+'-'+dd+' '+HH+':'+mm+':'+ss;
}
//将时间格式转化为yyyy年MM月dd日 HH时mm分ss秒
function parseTimeToCN(time){
try{
var newTime = time.replace(/\-/, '年');
newTime = newTime.replace(/\-/, '月');
newTime = newTime.replace(/ /, '日');
newTime = newTime.replace(/:/, '时');
newTime = newTime.replace(/:/, '分');
if(newTime.indexOf('分') != -1){
newTime += '秒';
}else{
newTime += '日';
}
return newTime;
}catch(e){
return time;
}
}
//将时间格式转化为yyyy年MM月dd日
function parseTimeToDayCN(time){
var CN = parseTimeToCN(time);
return CN.substr(0,11);
}
//获取sessionbean
function getSessionBean(){
var sessionBean = null;
$.ajax({
url: pathConfig.managePath+'/api/userLogin/getSetuSession',
type: 'get',
dataType: 'json',
xhrFields: {withCredentials: true},
crossDomain: true,
async: false,
success: function(json){
sessionBean = json.sessionBean;
}
});
return sessionBean;
}
/**
* 打开帮助文档的页面
* @param tag_id 放置帮助链接的DIV的ID
* @param type 帮助文档类型
*/
function openHelpWindow(tag_id,type){
$.ajax({
url : managerPath+'/api/sysXtcsGlobal/queryPage',
type : 'post',
dataType : 'json',
xhrFields:{withCredentials:true},
crossDomain:true,
data :{
cslb : '13',
csmc :'helpUrlAry'
},
success : function(data){
if(data && data.length>0){
var csz=data[0].csz;
var json = eval('(' + csz + ')');
var fileUrl = json[type];
if(fileUrl)
$("#"+tag_id).html('<a href="'+fileUrl+'" target="_blank"><i class="fa fa-question-circle"></i><span>帮助</span></a>');
}
},
error:function(e){
}
});
}
//1.绑定storage事件函数
function onStorage(fn){
localStorage.setItem('storageStatus','true');
$(window).off('storage').on('storage',function(){
if(typeof fn == 'function'){
fn();
$(window).off('storage');
localStorage.setItem('storageStatus','true');
}else{
alert('onStorage的参数不合法,请传递回调函数.');
}
});
}
//2.改变storage的状态
function changeStorage(){
localStorage.setItem('storageStatus','false');
}
/**
* wdate时间控件内容校验
* @param obj:当前对象this
*/
function wdateValidate(obj){
var $this = $(obj);
$this.validatebox();
}
//自定义弹框,默认在屏幕正中间
function alertDiv(options){
var arguments = arguments;
var type = typeof options;
var fn = arguments[2];
if(typeof fn != 'undefined' && typeof fn != 'function'){
fn = arguments[3];
if(typeof fn !== 'function'){
fn = function(){console.log('alertDiv()传递的参数格式不正确')}
}
}
if(type == 'string'){
options = {
title: arguments[0],
msg: arguments[1],
fn: fn
}
}
var opts = $.extend({}, {
id: "alertDiv1956",
title: "提示",
msg: "提示信息为空!",
width: 350,
height: 150,
onClose: function(){
try{
var fn1 = opts.fn;
if(fn1){
fn1();
}
}catch(e){}
}
}, options);
var divHtml = '<div id="alertDiv1956" style="display:none;overflow:auto;padding:10px 10px 0 10px;"></div>';
var msgHtml = '<div>'+opts.msg+'</div>';
var $alertDiv = $('#alertDiv1956');
if(!$alertDiv.length){
$('body').append(divHtml);
}
$('#alertDiv1956').empty().append(msgHtml);
openDivForm(opts, [{
text: '确定',
handler: function () {
$('#alertDiv1956').dialog('close');
}
}]);
}
//批量实现页面所有combotree弹框
function openCombotrees(){
$('input.easyui-combotree').each(function(){
var $this = $(this);
var thisId = $this.attr('id');
openCombotree(thisId);
});
}
//combotree弹框方式选择 1
function openCombotree(ID) {
clickShowPanel(ID, false);
var $box = $('#' + ID);
var boxSourceValue = '';
//获取组件初始值
if (dictMultiple) {
//boxSourceValue = $box.combotree('getValues');
} else {
//boxSourceValue = $box.combotree('getValue');
}
//设置组件不可点
$box.combotree({
readonly: true
});
var options = $box.combotree('options');
var btnID = ID + '_select';
var dictPanelID = 'dictPanel_' + ID;
var dictSearchID = 'dictSearch_' + ID;
var dictTreeID = 'dictTree_' + ID;
var dictMultiple = options.multiple;
var dictUrl = options.url;
//按钮文字更改
window.setTimeout(function(){
$box.next().find('span').html('<a style="cursor:pointer;" id="' + btnID + '"><img src="/easyui-window/images/code.gif" style="margin-top:1px;"/></a>');
//初始化按钮
$('#' + btnID).off('click').on('click', function () {
if (!$('#' + dictPanelID).length) {
var panelDivHtml = '<div style="display:none;position:relative;" id="' + dictPanelID + '">' +
'<div class="dict-search" style="padding:5px 20px;margin-bottom:5px;border-bottom:1px #ccc dashed;"><input id="' + dictSearchID + '"><a onclick="$(\'#'+dictSearchID+'\').searchbox(\'clear\')" class="easyui-linkbutton c6 l-btn2 l-btn-small" style="width:50px;height:22px;line-height:22px;margin-left:20px;">清空</a></div>' +
'<div class="dict-tree" style="width:100%;height:350px;overflow:auto;"><ul id="' + dictTreeID + '"></ul></div>' +
'</div>';
$('body').append(panelDivHtml);
}
//打开弹框
openDivForm({
id: dictPanelID,
title: '字典选择',
width: 600,
onClose: function () {
//清除上次生成的tree
$('#' + dictTreeID).empty();
//取消固定弹框位置
//$('#' + dictPanelID).parent().css('position','absolute');
//$('#' + dictPanelID).parent().next().css('position','absolute');
}
}, [
{
text: '确定',
handler: function () {
var dictData = $('#' + dictTreeID).tree('getChecked');
//console.log('dictData:',dictData);
var dictLen = dictData.length;
if (dictMultiple) {
var values = [];
for (var i = 0; i < dictLen; i++) {
if (!dictData[i]['children']) {
values.push(dictData[i]['id']);
defaultValue(ID,dictData[i]['id'],dictData[i]['text']);
}
}
$box.combotree('setValues', values);
} else {
if (dictLen) {
//如果只有一个子节点,父节点也会选中,所以取最后节点
$box.combotree('setValue', dictData[dictLen-1]['id']);
defaultValue(ID,dictData[dictLen-1]['id'],dictData[dictLen-1]['text']);
} else {
$box.combotree('setValue', '');
}
}
$('#' + dictPanelID).dialog('close');
}
}, {
text: '取消',
handler: function () {
$('#' + dictPanelID).dialog('close');
}
}, {
text: '清空选择项',
handler: function () {
var node = $('#' + dictTreeID).tree('getChecked');
if(node){
$('#' + dictTreeID).find('.tree-checkbox1').removeClass('tree-checkbox1').addClass('tree-checkbox0');
$('#' + dictTreeID).find('.tree-checkbox2').removeClass('tree-checkbox2').addClass('tree-checkbox0');
$box.combotree('setValue', '');
}
}
}
]);
//固定弹框位置
//$('#' + dictPanelID).parent().css('position','fixed');
//$('#' + dictPanelID).parent().next().css('position','fixed');
//初始化搜索框
$('#' + dictSearchID).searchbox({
prompt: '输入关键字查询,输入空查询全部',
width: 300,
height: 25,
searcher: function (value, name) {
var searchKeyValue = value.replace(/(^\s*)|(\s*$)/g, "");
var options = $box.combotree('options');
var dictUrl = options.url;
if(searchKeyValue){
var index = dictUrl.indexOf("?");
dictUrl="/queryZTreeDataByName"+dictUrl.substring(index,dictUrl.length)+"&&name="+searchKeyValue;
}
//初始化字典树
$('#' + dictTreeID).tree({
method: 'get',
url: dictUrl,
checkbox: true,
lines: true,
onBeforeCheck: function (node, checked) {
if (checked && !dictMultiple) {
var roots = $(this).tree('getRoots');
$('#' + dictTreeID).tree('uncheck', roots[0].target);
if (node.children && node.children.length>0) {
return false;
}
}
},
onDblClick: function (node) {
//单选适用
if (!dictMultiple) {
if (!node.children) {
$box.combotree('setValue', node.id);
$('#' + dictPanelID).dialog('close');
}
}
},
formatter: function (node) {
return node.id + ' | ' + node.text;
}
});
}
});
//初始化字典树
$('#' + dictTreeID).tree({
method: 'get',
url: dictUrl+"&&isInit=0",
checkbox: true,
lines: true,
onBeforeCheck: function (node, checked) {
if (checked && !dictMultiple) {
var roots = $(this).tree('getRoots');
$('#' + dictTreeID).tree('uncheck', roots[0].target);
if (node.children && node.children.length>0) {
return false;
}
}
},
onDblClick: function (node) {
//单选适用
if (!dictMultiple) {
if (!node.children) {
$box.combotree('setValue', node.id);
$('#' + dictPanelID).dialog('close');
}
}
},
formatter: function (node) {
return node.id + ' | ' + node.text;
}
});
});
},300);
//初始化回填组件的值
if (dictMultiple) {
$box.combotree('setValues', boxSourceValue);
} else {
$box.combotree('setValue', boxSourceValue);
}
}
function defaultValue(cbtid,defVal,defText){
var combotree =$('#'+cbtid);
var tree = combotree.combotree('tree');
var defNode = tree.tree('find',defVal);
if(!defNode){
tree.tree('append', {
data: [{
id: defVal,
text: defText
}]
});
defNode = tree.tree('find',defVal);
//console.log(defNode);
//console.log(combotree);
combotree.combotree('setValue',defVal);
tree.tree('select',defNode.target);
defNode.target.style.display='none';
}else{
combotree.combotree('setValue',defVal);
}
}
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
//获取cookie值
function getCookie(name){
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
/*说明:
*该函数库为数据处理函数库
* */
//获取cookie值
function getCookie(name){
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
//写入到Cookie
//c_name:cookie名称,value:cookie值,expiredays:过期天数
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
// 去掉左右两边的空格(回车不替换)
function stringTrim(str) {
if (str != null && str != "") {
return str.replace(/(^[\s| ]*)|([\s| ]*$)/g, "");
}
else {
return "";
}
}
// 去掉左边的空格(回车不替换)
function stringLeftTrim(str) {
if (str != null && str != "") {
return str.replace(/(^[\s| ]*)/g, "");
}
else {
return "";
}
}
// 去掉右边的空格(回车不替换)
function stringRightTrim(str) {
if (str != null && str != "") {
return str.replace(/([\s| ]*$)/g, "");
}
else {
return "";
}
}
// 清空所有空格
function stringClearSpace(str) {
if (str != null && str != "") {
return str.replace(/ /g, "");
}
else {
return "";
}
}
// 取得一个字符串的长度(一个汉字为两个长度)
function getGBLength(str) {
if (str == null || str == "") {
return 0;
}
var cnstrCount = 0;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255) {
cnstrCount = cnstrCount + 1;
}
}
len = str.length + cnstrCount;
return len;
}
// 取得一个字符串左子串,长度为字节长度(一个汉字为两个长度)
// 不足长度时不补充
function getGBLeft(str, len) {
if (str == null || str == "" || len == 0) {
return "";
}
var cnstrCount = 0;
var curCharLen = 0;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255)
curCharLen = 2;
else
curCharLen = 1;
if (cnstrCount + curCharLen == len) {
cnstrCount = cnstrCount + curCharLen;
i ++;
break;
}
else {
if (cnstrCount + curCharLen > len) {
break;
}
else {
cnstrCount = cnstrCount + curCharLen;
}
}
}
return str.substr(0,i);
}
// 取得一个字符串等长子串,长度为字节长度(一个汉字为两个长度)
// 不足长度时用 padStr 补充
function getGBRpad(str, len, padStr) {
if (str == null || str == "") {
return getReapeatString(padStr, len);
}
if (len == 0) {
return "";
}
var cnstrCount = 0;
var curCharLen = 0;
var i = 0;
for (i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255)
curCharLen = 2;
else
curCharLen = 1;
if (cnstrCount + curCharLen == len) {
cnstrCount = cnstrCount + curCharLen;
i ++;
break;
}
else {
if (cnstrCount + curCharLen > len) {
break;
}
else {
cnstrCount = cnstrCount + curCharLen;
}
}
}
var rpadStr = str.substr(0, i);
if (cnstrCount < len) {
rpadStr = rpadStr + getReapeatString(padStr, len - cnstrCount);
}
return rpadStr;
}
// 取得一个字符的重复字符串
function getReapeatString(repChar, repTimes) {
var reapeatStr = "";
for (var i = 1; i <= repTimes; i++) {
reapeatStr = reapeatStr + repChar;
}
return reapeatStr;
}
// 全角转成半角
function charSet_fullToHalf(str) {
var result = "";
if (str != "") {
for (var i = 0; i < str.length; i++) {
var charCode = str.charCodeAt(i);
if (charCode == 12288) {
result += String.fromCharCode(charCode - 12256);
continue;
}
if (charCode > 65280 && charCode < 65375) {
result += String.fromCharCode(charCode - 65248);
}
else {
result += str.substr(i, 1);
}
}
}
return result;
}
// 全角转成半角小写
function charSet_fullToHalfLower(str) {
var result = "";
if (str != "") {
result = charSet_fullToHalf(str);
result = result.toLowerCase();
}
return result;
}
// 全角转成半角大写
function charSet_fullToHalfUpper(str) {
var result = "";
if (str != "") {
result = charSet_fullToHalf(str);
result = result.toUpperCase();
}
return result;
}
// 半角转成全角
function charSet_halfToFull(str) {
var result = "";
if (str != "") {
for (var i = 0; i < str.length; i++) {
var charCode = str.charCodeAt(i);
if (charCode == 13 || charCode == 10) {
result += str.substr(i, 1);
continue;
} else if (charCode == 32) {
result += String.fromCharCode(12288);
continue;
}
if (charCode < 127) {
result += String.fromCharCode(charCode + 65248);
}
else {
result += String.fromCharCode(charCode);
}
}
}
return result;
}
// 半角转成全角小写
function charSet_halfToFullLower(str) {
var result = "";
if (str != "") {
result = str.toLowerCase();
result = charSet_halfToFull(result);
}
return result;
}
// 半角转成全角大写
function charSet_halfToFullUpper(str) {
var result = "";
if (str != "") {
result = str.toUpperCase();
result = charSet_halfToFull(result);
}
return result;
}
// 转成小写
function charSet_lower(str) {
var result = "";
if (str != "") {
result = str.toLowerCase();
}
return result;
}
// 转成大写
function charSet_upper(str) {
var result = "";
if (str != "") {
result = str.toUpperCase();
}
return result;
}
// JS 实现 StringBuffer
function StringBuffer(str) {
this.append = function(str) {
if (str) {
this.stringArray.push(str);
}
}
this.clear = function() {
this.stringArray.length = 1;
}
this.toString = function() {
return this.stringArray.join("");
}
this.stringArray = new Array("");
this.append(str);
}
// 取得人民币大写金额
// money 金额数字字符串
function getChineseMoney(money) {
if (money == null || money == "") {
return "";
}
var moneyFloat = parseFloat(money);
if (isNaN(moneyFloat)) {
return "";
}
else {
if (moneyFloat == 0) {
return "零元整";
}
var chinaDigital = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
var chinaUnit = new Array("仟", "佰", "拾", "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "", "元", "角", "分");
var moneyStr = "" + moneyFloat;
var indexPoint = moneyStr.indexOf(".");
if (indexPoint != -1) {
moneyStr += "00";
moneyStr = moneyStr.substring(0, indexPoint + 3);
}
else {
moneyStr += ".00";
}
var moneyLength = moneyStr.length;
if (moneyLength > 18) { // 数字太大
return "";
}
var tempChar = "";
var tempInt = 0;
var tempAtArray = 0;
var zeroCount = 0;
var lastZero = false;
var returnValue = "";
for (var i = 0; i < moneyLength; i++) {
tempChar = moneyStr.substring(i, i + 1);
if (tempChar == ".") {
if (moneyFloat >= 1) {
returnValue += "元";
}
}
else {
tempInt = parseInt(tempChar);
tempAtArray = 19 - moneyLength + i;
if (tempInt == 0) { // 为零的处理
lastZero = true;
zeroCount++;
if (tempAtArray == 7 || (tempAtArray % 4 == 3 && zeroCount < 4)) { // 亿必需出现
returnValue += chinaUnit[tempAtArray];
zeroCount = 0;
}
}
else {
zeroCount = 0;
if (lastZero) {
if (moneyFloat >= 1) {
returnValue += chinaDigital[0];
}
}
returnValue += chinaDigital[tempInt];
returnValue += chinaUnit[tempAtArray];
lastZero = false;
}
}
}
if (moneyStr.lastIndexOf("0") == moneyLength - 1) {
returnValue += "整";
}
return returnValue;
}
}
// 取得用人民币大写金额表示的整数
// money 金额数字字符串
function getChineseNumberAsMoney(money) {
if (money == null || money == "") {
return "";
}
var moneyFloat = parseFloat(money);
if (isNaN(moneyFloat)) {
return "";
}
else {
if (moneyFloat == 0) {
return "";
}
var chinaDigital = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
var chinaUnit = new Array("仟", "佰", "拾", "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "", "", "", "");
var moneyStr = "" + moneyFloat;
var indexPoint = moneyStr.indexOf(".");
if (indexPoint != -1) {
moneyStr = moneyStr.substring(0, indexPoint) + ".00";
}
else {
moneyStr += ".00";
}
var moneyLength = moneyStr.length;
if (moneyLength > 18) { // 数字太大
return "";
}
var tempChar = "";
var tempInt = 0;
var tempAtArray = 0;
var zeroCount = 0;
var lastZero = false;
var returnValue = "";
for (var i = 0; i < moneyLength; i++) {
tempChar = moneyStr.substring(i, i + 1);
if (tempChar == ".") {
if (moneyFloat >= 1) {
//returnValue += "元";
}
}
else {
tempInt = parseInt(tempChar);
tempAtArray = 19 - moneyLength + i;
if (tempInt == 0) { // 为零的处理
lastZero = true;
zeroCount++;
if (tempAtArray == 7 || (tempAtArray % 4 == 3 && zeroCount < 4)) { // 亿必需出现
returnValue += chinaUnit[tempAtArray];
zeroCount = 0;
}
}
else {
zeroCount = 0;
if (lastZero) {
if (moneyFloat >= 1) {
returnValue += chinaDigital[0];
}
}
returnValue += chinaDigital[tempInt];
returnValue += chinaUnit[tempAtArray];
lastZero = false;
}
}
}
return returnValue;
}
}
// 取得数字中文字符串(如:法律文书条款)
// numberStr 整数字符串
function getChineseNumber(numberStr) {
if (numberStr == null || numberStr == "") {
return "";
}
var numberLong = parseFloat(numberStr);
if (isNaN(numberLong)) {
return "";
}
else {
numberLong = Math.floor(numberLong);
if (numberLong == 0) {
return "零";
}
var chinaDigital = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
var chinaUnit = new Array("亿", "千", "百", "十", "万", "千", "百", "十", "");
var tempStr = "" + numberLong;
var numberLength = tempStr.length;
if (numberLength > 9) { // 数字太大
return "";
}
var tempChar = "";
var tempInt = 0;
var tempAtArray = 0;
var zeroCount = 0;
var lastZero = false;
var returnValue = "";
for (var i = 0; i < numberLength; i++) {
tempChar = tempStr.substring(i, i + 1);
tempInt = parseInt(tempChar);
tempAtArray = 9 - numberLength + i;
if (tempInt == 0) { // 为零的处理
lastZero = true;
zeroCount++;
if (tempAtArray == 0 || (tempAtArray % 4 == 0 && zeroCount < 4)) { // 亿必需出现
returnValue += chinaUnit[tempAtArray];
zeroCount = 0;
}
}
else {
zeroCount = 0;
if (lastZero) {
if (numberLong >= 1) {
returnValue += chinaDigital[0];
}
}
returnValue += chinaDigital[tempInt];
returnValue += chinaUnit[tempAtArray];
lastZero = false;
}
}
return returnValue;
}
}
// 取得日期中文字符串
// dateString 日期字符串格式,如: (2008-05-12 14:28:36)
// resultFormat 返回结果的格式(字符型)
// resultFormat = 1 :2008年5月12日
// resultFormat = 2 :2008年5月12日14时
// resultFormat = 3 :2008年5月12日14时28分
// resultFormat = 4 :二○○八年五月十二日
function getChineseDate(dateString, resultFormat) {
if (dateString == null || dateString == "") {
return "";
}
if (resultFormat == null || resultFormat == "") {
resultFormat = "1";
}
var chineseDate = "";
try {
var tempYear = dateString.substring(0, 4);
var tempMonth = dateString.substring(5, 7);
var tempDay = dateString.substring(8, 10);
var tempHour = dateString.substring(11, 13);
var tempMinute = dateString.substring(14, 16);
var tempSecond = dateString.substring(17);
switch (resultFormat) {
case "1" :
chineseDate = tempYear + "年" + tempMonth.replace(/(^0*)/g, "") + "月" + tempDay.replace(/(^0*)/g, "") + "日";
break;
case "2" :
var hourString = tempHour.replace(/(^0*)/g, "");
if (hourString == "") {
hourString = "0";
}
chineseDate = tempYear + "年" + tempMonth.replace(/(^0*)/g, "") + "月" + tempDay.replace(/(^0*)/g, "") + "日" + hourString + "时";
break;
case "3" :
var hourString = tempHour.replace(/(^0*)/g, "");
if (hourString == "") {
hourString = "0";
}
var minuteString = tempMinute.replace(/(^0*)/g, "")
if (minuteString == "") {
minuteString = "0";
}
chineseDate = tempYear + "年" + tempMonth.replace(/(^0*)/g, "") + "月" + tempDay.replace(/(^0*)/g, "") + "日" + hourString + "时" + minuteString + "分";
break;
case "4" :
var chinaNumber = new Array(10);
chinaNumber[0] = "○"; // 0
chinaNumber[1] = "一";
chinaNumber[2] = "二";
chinaNumber[3] = "三";
chinaNumber[4] = "四";
chinaNumber[5] = "五";
chinaNumber[6] = "六";
chinaNumber[7] = "七";
chinaNumber[8] = "八";
chinaNumber[9] = "九";
for (var i = 0; i < tempYear.length; i++) {
var cn = parseInt(tempYear.substring(i, i + 1));
chineseDate += chinaNumber[cn];
}
chineseDate += "年";
for (var i = 0; i < tempMonth.length; i++) {
var cn = parseInt(tempMonth.substring(i, i + 1));
if (i == 0) {
if (cn == 1) {
chineseDate += "十";
}
}
else {
if (cn > 0) {
chineseDate += chinaNumber[cn];
}
}
}
chineseDate += "月";
for (var i = 0; i < tempDay.length; i++) {
var cn = parseInt(tempDay.substring(i, i + 1));
if (i == 0) {
switch (cn) {
case 0:
break;
case 1:
chineseDate += "十";
break;
default:
chineseDate += chinaNumber[cn] + "十";
break;
}
}
else {
if (cn > 0) {
chineseDate += chinaNumber[cn];
}
}
}
chineseDate += "日";
break;
}
}
catch (err) {
chineseDate = "";
}
return chineseDate;
}
// 15位身份证号码转成18位
function getSfzh18(sfzh15) {
var tempSfzh = sfzh15;
if (("undefined" != typeof sfzh15) && (sfzh15 != "")) {
if (sfzh15.length == 15) {
var tempStr = sfzh15.substring(0, 6) + "19" + sfzh15.substring(6);
var lastAt = 0;
for (var i = 0; i < 17; i++) {
var bitInt = parseInt(tempStr.substring(i, i + 1));
var bitIntTemp = 1;
for (var j = 0; j < 17 - i; j++) {
bitIntTemp = (bitIntTemp * 2) % 11;
}
lastAt += bitInt * bitIntTemp;
}
lastAt %= 11;
tempSfzh = tempStr + "10X98765432".substring(lastAt, lastAt + 1);
}
}
return tempSfzh;
}
// 判断是否为正确的身份证号码
// 验证通过返回true,否则返回false
function isCorrectSfzh(sfzh18) {
if(sfzh18 != "" && sfzh18.length == 15){
sfzh18 = getSfzh18(sfzh18);
}
if (sfzh18 != "" && sfzh18.length == 18) {
for (var i = 0; i < 17; i++) {
var bitChar = sfzh18.substring(i, i + 1);
if (bitChar < "0" || bitChar > "9") {
return false;
}
}
var birthday = sfzh18.substring(6, 14);
return (isValidDate(birthday, 0) && checkSfzh18Bit(sfzh18));
}
return false;
}
// 18位身份证号码校验位检查
// 验证通过返回true,否则返回false
function checkSfzh18Bit(sfzh18) {
try {
var tempStr = sfzh18;
var lastAt = 0;
for (var i = 0; i < 17; i++) {
var bitInt = parseInt(tempStr.substring(i, i + 1));
var bitIntTemp = 1;
for (var j = 0; j < 17 - i; j++) {
bitIntTemp = (bitIntTemp * 2) % 11;
}
lastAt += bitInt * bitIntTemp;
}
lastAt %= 11;
if ("10X98765432".substring(lastAt, lastAt + 1) == sfzh18.substring(17) || "10x98765432".substring(lastAt, lastAt + 1) == sfzh18.substring(17)) {
return true;
}
else {
return false;
}
}
catch (err) {
return false;
}
}
// 判断是否为一个有效的日期
// curDate 日期字符串,格式如:2008-05-12,也可以校验紧凑型日期格式:20080512
// splitLength 分隔符(日期时间分隔符长度,只能为 1)
// 验证通过返回true,否则返回false
function isValidDate(curDate, splitLength) {
var valid = false;
if (("undefined" != typeof splitLength) && (splitLength == 1)) {
if (curDate.length == 10) {
valid = checkDate(curDate.substring(0, 4), curDate.substring(5, 7), curDate.substring(8));
}
}
else {
if (curDate.length == 8) {
valid = checkDate(curDate.substring(0, 4), curDate.substring(4, 6), curDate.substring(6));
}
}
return valid;
}
// 日期检查
// year 年字符串,month 月字符串,day 日字符串
// 年月日可以有0的前缀
function checkDate(year, month, day) {
try {
year = year.replace(/(^0*)/g, "");
month = month.replace(/(^0*)/g, "");
day = day.replace(/(^0*)/g, "");
var regExp = new RegExp("^\\d+$");
if (!regExp.test(year) || !regExp.test(month) || !regExp.test(day)) {
return false;
}
var yearInt = parseInt(year);
var monthInt = parseInt(month);
var dayInt = parseInt(day);
if ((yearInt < 1900 || yearInt > 3000) || (monthInt < 1 || monthInt > 12) || (dayInt < 1 || dayInt > 31)) {
return false;
}
if (dayInt == 31 && (monthInt==4 || monthInt==6 || monthInt==9 || monthInt==11)) {
return false;
}
if (monthInt == 2) {
if ((yearInt % 4 == 0 && yearInt % 100 != 0) || yearInt % 400 == 0) {
if (dayInt > 29) {
return false;
}
}
else {
if (dayInt > 28) {
return false;
}
}
}
}
catch (err) {
return false;
}
return true;
}
// 判断是否为一个有效的日期时间
// curDate 日期时间字符串,格式如:2008-05-12 14:28:20 ,也可以校验紧凑型日期时间格式:20080512142820
// splitLength 分隔符(日期时间分隔符长度,只能为 1)
// 验证通过返回true,否则返回false
function isValidDateTime(curDate, splitLength) {
var valid = false;
if (("undefined" != typeof splitLength) && (splitLength == 1)) {
if (curDate.length == 19) {
valid = checkDateTime(curDate.substring(0, 4), curDate.substring(5, 7), curDate.substring(8, 10), curDate.substring(11, 13), curDate.substring(14, 16), curDate.substring(17));
}
}
else {
if (curDate.length == 14) {
valid = checkDateTime(curDate.substring(0, 4), curDate.substring(4, 6), curDate.substring(6, 8), curDate.substring(8, 10), curDate.substring(10, 12), curDate.substring(12));
}
}
return valid;
}
// 日期时间检查
// year 年字符串,month 月字符串,day 日字符串,hour 小时字符串,minute 分字符串,second 秒字符串
// 年月日时分秒可以有0的前缀
function checkDateTime(year, month, day, hour, minute, second) {
try {
year = year.replace(/(^0*)/g, "");
month = month.replace(/(^0*)/g, "");
day = day.replace(/(^0*)/g, "");
var regExp = new RegExp("^\\d+$");
if (!regExp.test(year) || !regExp.test(month) || !regExp.test(day)) {
return false;
}
var yearInt = parseInt(year);
var monthInt = parseInt(month);
var dayInt = parseInt(day);
if ((yearInt < 1900 || yearInt > 3000) || (monthInt < 1 || monthInt > 12) || (dayInt < 1 || dayInt > 31)) {
return false;
}
if (dayInt == 31 && (monthInt==4 || monthInt==6 || monthInt==9 || monthInt==11)) {
return false;
}
if (monthInt == 2) {
if ((yearInt % 4 == 0 && yearInt % 100 != 0) || yearInt % 400 == 0) {
if (dayInt > 29) {
return false;
}
}
else {
if (dayInt > 28) {
return false;
}
}
}
hour = hour.replace(/(^0{1})/g, "");
minute = minute.replace(/(^0{1})/g, "");
second = second.replace(/(^0{1})/g, "");
if (!regExp.test(hour) || !regExp.test(minute) || !regExp.test(second)) {
return false;
}
var hourInt = parseInt(hour);
var minuteInt = parseInt(minute);
var secondInt = parseInt(second);
if ((hourInt < 0 || hourInt > 23) || (minuteInt < 0 || minuteInt > 59) || (secondInt < 0 || secondInt > 59)) {
return false;
}
}
catch (err) {
return false;
}
return true;
}
// 兼容模式下取浏览器页面有效高度(去除上下菜单、边框等)
// 返回值中:
// width:页面可视宽度;
// height:页面可视高度;
// scrollWidth:页面内容宽度;
// scrollHeight:页面内容高度;
function getDocumentSize() {
var _pageWidth = window.innerWidth;
var _pageHeight = window.innerHeight;
var _scrollWidth = 0;
var _scrollHeight = 0;
if (typeof _pageWidth != "number"){
if(document.compatMode == "number"){
_pageWidth = document.documentElement.clientWidth;
_pageHeight = document.documentElement.clientHeight;
}
else{
_pageWidth = document.body.clientWidth;
_pageHeight = document.body.clientHeight;
}
}
if (document.documentElement && document.documentElement.scrollHeight) {
_scrollWidth = document.documentElement.scrollWidth;
_scrollHeight = document.documentElement.scrollHeight;
}
else {
_scrollWidth = document.body.scrollWidth;
_scrollHeight = document.body.scrollHeight;
}
return {width: _pageWidth, height: _pageHeight, scrollWidth: _scrollWidth, scrollHeight: _scrollHeight};
}
// iframe 重置大小,铺满当前页面
function iframeResize(iframeID) {
var iframeObject = document.getElementById(iframeID);
if (iframeObject != null) {
var documentSize = getDocumentSize();
document.getElementById(iframeID).style.width = documentSize.width;
document.getElementById(iframeID).style.height = documentSize.height;
}
}
// iframe 显示
function iframeShow(iframeID, iframeURL) {
var iframeObject = document.getElementById(iframeID);
if (iframeObject != null) {
document.getElementById(iframeID).style.display = "";
if (iframeURL) {
document.getElementById(iframeID).src = iframeURL;
}
}
}
// iframe 隐藏
function iframeHide(iframeID) {
var iframeObject = document.getElementById(iframeID);
if (iframeObject != null) {
document.getElementById(iframeID).style.display = "none";
document.getElementById(iframeID).src = "";
}
}
@charset "UTF-8";
.main-cen-box {
padding: 0px;
margin-left:0px;
}
.Wdate {
padding: 4px 0 4px 0px !important;
}
/*覆盖easyui*/
body .datagrid-cell{
white-space: inherit;
word-wrap: inherit;
overflow: inherit;
}
\ No newline at end of file
@charset "UTF-8";
.main-cen-box {
padding: 0px;
margin-left:0px;
}
.Wdate {
padding: 4px 0 4px 0px !important;
}
/*覆盖easyui*/
body .datagrid-cell{
white-space: inherit;
word-wrap: inherit;
overflow: inherit;
}
\ No newline at end of file
......@@ -28,7 +28,8 @@ img {
fieldset,
img,
input,
button {
button,
select{
border: none;
padding: 0;
margin: 0;
......
......@@ -20,8 +20,8 @@ li {
/*****header*****/
#header {
width: 100%;
height: 80px;
line-height: 80px;
height: 65px;
line-height: 65px;
background: url(../images/banner.jpg);
color: #fff;
position: relative;
......@@ -55,7 +55,7 @@ li {
float: left;
width:400px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/jzgjcs.png);
}
......@@ -63,7 +63,7 @@ li {
float: left;
width:400px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/jzgjzs.png);
}
......@@ -71,7 +71,7 @@ li {
float: left;
width:400px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/cxrz.png);
}
......@@ -79,17 +79,18 @@ li {
float: left;
width:400px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/jzgjzs2.png);
}
.h_title5,.h_title6 {
.h_title5,.h_title6,.h_title8 {
float: left;
width:400px;
width:328px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/cqsprz.png);
background-size: auto 65px !important;
}
.h_title6 {
background: url(../images/dlrz.png);
......@@ -98,10 +99,15 @@ li {
float: left;
width:400px;
display: inline-block;
height: 80px;
height: 65px;
margin-left: 24px;
background: url(../images/clkkgj.png);
}
.h_title8 {
width:360px;
height:65px;
background: url(../images/title_bkxxzs.png);
}
.color1{color:#ec704c;}
.datebox-h{width:228px;height:24px;line-height: 24px;}
/************menu*************/
......
@charset "UTF-8";
/**
* 获取颜色map方法
* @param $key 颜色的key值
*/
/**
* 获取字体map方法
* @param $key 颜色的key值
*/
/**
* 获取字体大小map方法
* @param $key 颜色的key值
*/
/**
* 获取行高map方法
* @param $key 颜色的key值
*/
/**
* 获取圆角map方法
* @param $key 颜色的key值
*/
/**
* 获取z-index map方法
* @param $key 颜色的key值
*/
/**!
* @author christ
* 本配置基于sass框架compass,在运用时请注意是否安装sass,compass
*/
body {
font-family: "Microsoft Yahei", "微软雅黑";
font-size: 12px; }
.panel-tool a:hover {
opacity: 1;
filter: alpha(opacity=100); }
.combo .combo-text {
margin: 0;
border: 0; }
.combo .combo-text {
margin: 0;
border: 0; }
/*按钮移入渐变*/
/*disabled btn*/
/*selected button*/
.tabs-icon {
position: absolute;
top: 50%; }
::-webkit-scrollbar {
background-color: #fff;
width: 5px;
height: 10px; }
::-webkit-scrollbar-track {
background-color: #fff; }
::-webkit-scrollbar-thumb {
background-color: rgba(128, 128, 128, 0.65); }
/*panel*/
.panel {
overflow: hidden;
margin: 0;
border: 0;
text-align: left;
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.panel-body {
background-color: #fff;
color: #000;
font-size: 14px;
border: 1px solid #ccc;
padding: 0;
border-top-width: 0;
overflow: auto; }
.panel-body-noheader {
border-top-width: 1px; }
.panel-body-noborder, .panel-header-noborder {
border: 0; }
.panel-body-nobottom {
border-bottom-width: 0; }
.panel-header {
background-color: #f5f5f5;
border: 1px solid #ccc;
padding: 5px;
position: relative; }
.panel-title {
font-size: 14px;
color: #000;
height: 20px;
line-height: 1.42857; }
.panel-with-icon {
padding-left: 18px; }
.panel-icon {
position: absolute;
top: 50%;
margin-top: -8px;
width: 16px;
height: 16px;
overflow: hidden;
left: 5px; }
.panel-tool {
position: absolute;
top: 50%;
margin-top: -8px;
width: auto;
height: 16px;
overflow: hidden;
right: 5px; }
.panel-tool a {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
width: 16px;
height: 16px;
opacity: 0.6;
filter: alpha(opacity=60);
margin: 0 0 0 2px; }
.panel-tool a:hover {
background-color: #fff;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.panel-loading {
background: url("images/loading.gif") no-repeat 10px 10px;
padding: 11px 0 10px 30px; }
.panel-tool-close {
background: url("images/panel_tools.png") no-repeat -16px 0px; }
.panel-tool-min {
background: url("images/panel_tools.png") no-repeat 0px 0px; }
.panel-tool-max {
background: url("images/panel_tools.png") no-repeat 0px -16px; }
.panel-tool-restore {
background: url("images/panel_tools.png") no-repeat -16px -16px; }
.panel-tool-collapse {
background: url("images/panel_tools.png") no-repeat -32px 0; }
.panel-tool-expand {
background: url("images/panel_tools.png") no-repeat -32px -16px; }
.panel-noscroll {
overflow: hidden; }
.panel-fit, .panel-fit body {
height: 100%;
margin: 0;
padding: 0;
border: 0;
overflow: hidden; }
.panel-footer {
border: 1px solid #ccc;
overflow: hidden;
background: #f4f4f4;
padding: 5px;
font-size: 12px; }
.panel-footer-noborder {
border-top-width: 1px; }
/*link button*/
.l-btn {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
text-align: center;
text-decoration: none;
overflow: hidden;
margin: 0;
padding: 0 5px;
cursor: pointer;
outline: none;
line-height: normal;
color: #0e6595;
background: #fff;
border: 1px solid #0e6595;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
background-repeat: repeat-x;
-webkit-animation-name: btnDefault;
-moz-animation-name: btnDefault;
-o-animation-name: btnDefault;
animation-name: btnDefault;
-webkit-animation-duration: 300ms;
-moz-animation-duration: 300ms;
-o-animation-duration: 300ms;
animation-duration: 300ms;
-webkit-animation-timing-function: ease-in-out;
-moz-animation-timing-function: ease-in-out;
-o-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out; }
@keyframes btnDefault {
from {
color: #fff;
background: #0e6595; }
to {
color: #0e6595;
background: #fff; } }
@-webkit-keyframes btnDefault {
from {
color: #fff;
background: #0e6595; }
to {
color: #0e6595;
background: #fff; } }
@-moz-keyframes btnDefault {
from {
color: #fff;
background: #0e6595; }
to {
color: #0e6595;
background: #fff; } }
@-o-keyframes btnDefault {
from {
color: #fff;
background: #0e6595; }
to {
color: #0e6595;
background: #fff; } }
.l-btn:hover {
background: #0e6595;
color: #fff;
filter: none;
-webkit-animation-name: btnHover;
-moz-animation-name: btnHover;
-o-animation-name: btnHover;
animation-name: btnHover;
-webkit-animation-duration: 300ms;
-moz-animation-duration: 300ms;
-o-animation-duration: 300ms;
animation-duration: 300ms;
-webkit-animation-timing-function: ease-in-out;
-moz-animation-timing-function: ease-in-out;
-o-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out; }
.l-btn span .l-btn-icon-left {
padding-left: 20px;
background-position: left center; }
.l-btn span .l-btn-icon-right {
padding-right: 20px;
background-position: right center; }
.l-btn span span .l-btn-empty {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
width: 16px;
height: 24px;
margin: 0;
font-size: 1px; }
.l-btn-plain {
background: transparent;
filter: none;
padding: 1px;
border: 0; }
.l-btn-plain:hover {
padding: 1px;
background: #0e6595;
color: #fff;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.l-btn-left {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
margin: 0;
padding: 0;
position: relative;
overflow: hidden; }
.l-btn-left .l-btn-empty {
margin: 0 4px;
width: 16px; }
.l-btn-text {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
padding: 0;
margin: 0 4px;
font-size: 12px;
line-height: 24px;
width: auto; }
.l-btn-text i {
margin: 0 4px;
font-size: 14px;
line-height: 24px; }
.l-btn-icon {
display: inline-block;
width: 16px;
height: 16px;
line-height: 16px;
position: absolute;
top: 50%;
margin-top: -8px;
font-size: 1px; }
.l-btn-icon-left .l-btn-text {
margin: 0 4px 0 24px; }
.l-btn-icon-left .l-btn-icon {
left: 4px; }
.l-btn-icon-right .l-btn-text {
margin: 0 24px 0 4px; }
.l-btn-icon-right .l-btn-icon {
right: 4px; }
.l-btn-icon-top .l-btn-text {
margin: 20px 4px 0 4px; }
.l-btn-icon-top .l-btn-icon {
top: 4px;
left: 50%;
margin: 0 0 0 -8px; }
.l-btn-icon-bottom .l-btn-text {
margin: 0 4px 20px 4px; }
.l-btn-icon-bottom .l-btn-icon {
bottom: 4px;
left: 50%;
margin: 0 0 0 -8px; }
.l-btn-left .l-btn-empty {
margin: 0 4px;
width: 16px; }
.l-btn-large .l-btn-text {
line-height: 40px; }
.l-btn-large .l-btn-icon {
width: 32px;
height: 32px;
line-height: 32px;
margin-top: -16px; }
.l-btn-large .l-btn-icon-left .l-btn-text {
margin-left: 40px;
padding-right: 10px; }
.l-btn-large .l-btn-icon-right .l-btn-text {
margin-right: 40px; }
.l-btn-large .l-btn-icon-top .l-btn-text {
margin-top: 36px;
line-height: 24px;
min-width: 32px; }
.l-btn-large .l-btn-icon-top .l-btn-icon {
margin: 0 0 0 -16px; }
.l-btn-large .l-btn-icon-bottom .l-btn-text {
margin-bottom: 36px;
line-height: 24px;
min-width: 32px; }
.l-btn-large .l-btn-icon-bottom .l-btn-icon {
margin: 0 0 0 -16px; }
.l-btn-large .l-btn-left .l-btn-empty {
margin: 0 4px;
width: 32px; }
.l-btn-outline {
border: 1px solid #ccc;
padding: 0; }
.l-btn-disabled, .l-btn-disabled:hover {
opacity: 0.8;
filter: alpha(opacity=80);
cursor: not-allowed;
background: #fff;
color: #5a5a5a;
border-color: #ccc;
background-repeat: repeat-x;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.l-btn-disabled .l-btn-text, .l-btn-disabled .l-btn-icon {
opacity: 0.8;
filter: alpha(opacity=80); }
.l-btn-plain-disabled, .l-btn-plain-disabled:hover, .searchbox .l-btn-plain-disabled:hover {
background: transparent;
opacity: 0.8;
filter: alpha(opacity=80); }
.l-btn-selected, .l-btn-selected:hover, .l-btn-plain-selected {
background: #0e6595;
color: #fff;
filter: none;
-webkit-animation-name: selectedBtn;
-moz-animation-name: selectedBtn;
-o-animation-name: selectedBtn;
animation-name: selectedBtn; }
@-webkit-keyframes selectedBtn {}
@-moz-keyframes selectedBtn {}
@-o-keyframes selectedBtn {}
/*textbox*/
.textbox {
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
border: 1px solid #ccc;
background-color: #fff;
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
white-space: nowrap;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.textbox .textbox-text {
font-size: 12px;
border: 0;
margin: 0;
padding: 4px;
white-space: normal;
outline-style: none;
resize: none;
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.textbox textarea.textbox-text {
white-space: pre-wrap; }
.textbox .textbox-prompt {
font-size: 12px;
color: #aaa; }
.textbox .textbox-button, .textbox .textbox-button:hover {
position: absolute;
background: #eee;
top: 0;
padding: 0;
vertical-align: top;
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.textbox .textbox-button:hover {
color: #0e6595;
background: #d5d5d5; }
.textbox-button-right, .textbox-button-right:hover {
border-width: 0 0 0 1px;
border-color: #ccc; }
.textbox-button-left, .textbox-button-left:hover {
border-width: 0 1px 0 0;
border-color: #ccc; }
.textbox-addon {
position: absolute;
top: 0;
height: 24px;
line-height: 24px;
background: #eee;
border-color: #ccc;
border-style: solid; }
.textbox-addon-right {
border-width: 0 0 0 1px; }
.textbox-addon-left {
border-width: 0 1px 0 0; }
.textbox-icon {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
width: 18px;
height: 20px;
opacity: 0.6;
filter: alpha(opacity=60);
overflow: hidden;
background-position: center center;
cursor: pointer;
text-decoration: none;
outline-style: none; }
.textbox-icon:hover {
opacity: 1;
filter: alpha(opacity=100); }
.textbox-icon-disabled, .textbox-icon-readonly {
cursor: default; }
.textbox-icon-disabled:hover {
opacity: 0.6;
filter: alpha(opacity=60); }
.textbox-focused {
border-color: #66afe9 !important;
-webkit-box-shadow: 0 0 3px 0 #66afe9;
-moz-box-shadow: 0 0 3px 0 #66afe9;
-o-box-shadow: 0 0 3px 0 #66afe9;
-ms-box-shadow: 0 0 3px 0 #66afe9;
box-shadow: 0 0 3px 0 #66afe9; }
.textbox-invalid {
border-color: #ed4848;
-webkit-box-shadow: 0 0 3px 0 #ed4848;
-moz-box-shadow: 0 0 3px 0 #ed4848;
-o-box-shadow: 0 0 3px 0 #ed4848;
-ms-box-shadow: 0 0 3px 0 #ed4848;
box-shadow: 0 0 3px 0 #ed4848;
background-color: #fff; }
.textbox-disabled:hover input {
cursor: not-allowed !important; }
/*combo*/
.combo {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
margin: 0;
padding: 0;
background: #fff;
white-space: nowrap;
overflow: hidden; }
.combo .combo-text {
font-size: 12px;
padding: 0 2px;
vertical-align: baseline; }
.combo .textbox-icon-disabled:hover {
cursor: default; }
.combo-arrow {
width: 18px;
height: 20px;
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
opacity: 0.6;
filter: alpha(opacity=60);
overflow: hidden;
cursor: pointer;
background: url("images/combo_arrow.png") no-repeat center center; }
.combo-arrow-hover {
opacity: 1;
filter: alpha(opacity=100); }
.combo-panel {
overflow: auto;
background: #fff; }
.textbox-invalid {
border-color: #ed4848;
background-color: #fff; }
/*combobox*/
.combobox-item, .combobox-group {
font-size: 12px;
padding: 3px;
padding-right: 0; }
.combobox-item-disabled {
opacity: 0.5;
filter: alpha(opacity=50); }
.combobox-gitem {
padding-left: 10px; }
.combobox-group {
font-weight: bold; }
.combobox-item-hover {
background-color: #0e6595;
color: #fff; }
.combobox-item-selected {
background-color: #0e6595;
color: #fff; }
/*tabs*/
.tabs-container {
overflow: hidden; }
.tabs-header {
border: 1px solid #ccc;
background-color: #edf3f5;
border-bottom-width: 0;
padding: 2px 0 0;
position: relative;
overflow: hidden; }
.tabs-header .tabs-pill li a.tabs-inner {
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.tabs-header .tabs-pill li.tabs-selected a.tabs-inner {
background: #9cd2e8;
color: #5a5a5a;
filter: none;
border-color: #ccc; }
.tabs-scroller-left, .tabs-scroller-right {
position: absolute;
top: auto;
bottom: 0;
width: 18px;
font-size: 1px;
display: none;
cursor: pointer;
border: 1px solid #ccc; }
.tabs-scroller-left {
left: -1px;
background: #fff url("images/tabs_icons.png") no-repeat 1px center; }
.tabs-scroller-right {
right: -1px;
background: #fff url("images/tabs_icons.png") no-repeat -15px center; }
.tabs-tool {
position: absolute;
overflow: hidden;
bottom: 0;
padding: 1px;
background-color: #fff;
border: 1px solid #ccc; }
.tabs-header-plain {
background: transparent;
border: 0; }
.tabs-header-plain .tabs-tool {
padding: 0 1px; }
.tabs-wrap {
position: relative;
overflow: hidden;
left: 0;
width: 100%;
margin: 0;
padding: 0; }
.tabs-scrolling {
margin-left: 18px;
margin-right: 18px; }
.tabs-disabled {
opacity: 0.3;
filter: alpha(opacity=30); }
.tabs {
list-style-type: none;
margin: 0;
padding: 0;
width: 50000px;
height: 26px;
padding-left: 4px;
border-style: solid;
border-width: 0 0 1px 0; }
.tabs li {
float: left;
_display: inline;
display: inline-block;
margin: 0 2px -1px 0;
padding: 0;
border: 0;
position: relative; }
.tabs li a.tabs-inner {
display: inline-block;
text-decoration: none;
margin: 0;
padding: 0 10px;
height: 25px;
line-height: 25px;
white-space: nowrap;
text-align: center;
border: 0;
border-radius: 3px 3px 0 0;
-webkit-border-radius: 3px 3px 0 0;
-moz-border-radius: 3px 3px 0 0;
-o-border-radius: 3px 3px 0 0;
-ms-border-radius: 3px 3px 0 0;
color: #5a5a5a;
background-color: #c9c9c9;
background-repeat: repeat-x; }
.tabs li a.tabs-inner:hover {
background: #9cd2e8;
filter: none; }
.tabs li a.tabs-close {
position: absolute;
overflow: hidden;
font-size: 1px;
display: block;
height: 12px;
padding: 0;
top: 50%;
margin-top: -6px;
width: 12px;
right: 5px;
opacity: 0.6;
filter: alpha(opacity=60);
background: url("images/tabs_icons.png") no-repeat -34px center; }
.tabs li.tabs-selected a:hover .tabs-inner {
cursor: default; }
.tabs li.tabs-selected a:hover .tabs-close {
opacity: 1;
filter: alpha(opacity=100);
cursor: pointer;
background-color: #fff; }
.tabs li.tabs-selected a.tabs-inner {
outline: none;
background-color: #9cd2e8;
color: #5a5a5a;
background-repeat: repeat-x; }
.tabs-p-tool {
position: absolute;
overflow: hidden;
font-size: 1px;
display: block;
height: 12px;
padding: 0;
top: 50%;
right: 16px;
margin-top: -6px; }
.tabs-p-tool a {
display: inline-block;
font-size: 1px;
width: 12px;
height: 12px;
margin: 0;
opacity: 0.6;
filter: alpha(opacity=60); }
.tabs-p-tool a:hover {
opacity: 1;
filter: alpha(opacity=100);
cursor: pointer;
background-color: #fff; }
.tabs-with-icon {
padding-left: 18px; }
.tabs-icon {
width: 16px;
height: 16px;
left: 10px;
margin-top: -8px; }
.tabs-title {
font-size: 12px; }
.tabs-closable {
padding-right: 8px; }
.tabs-panels {
margin: 0;
padding: 0;
border: 1px solid #ccc;
border-top-width: 0;
overflow: hidden; }
.tabs-panels-top {
border-width: 1px 1px 0 1px; }
.tabs-panels-right {
text-align: right;
border-width: 1px 1px 1px 0; }
.tabs-panels-left {
text-align: left;
border-width: 1px 0 1px 1px; }
.tabs-header-noborder, .tabs-panels-noborder {
border: 0; }
.tabs-header-bottom {
border-width: 0 1px 1px 1px;
padding: 0 0 2px 0; }
.tabs-header-bottom .tabs {
border-width: 1px 0 0 0; }
.tabs-header-bottom .tabs li {
margin: -1px 2px 0 0; }
.tabs-header-bottom .tabs li a.tabs-inner {
border-radius: 0 0 3px 3px;
-webkit-border-radius: 0 0 3px 3px;
-moz-border-radius: 0 0 3px 3px;
-o-border-radius: 0 0 3px 3px;
-ms-border-radius: 0 0 3px 3px; }
.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {
background-repeat: repeat-x;
background-color: #9cd2e8; }
.tabs-header-bottom .tabs-tool {
top: 0; }
.tabs-header-bottom .tabs-scroller-left, .tabs-header-bottom .tabs-scroller-right {
top: 0;
bottom: auto; }
.tabs-header-bottom .tabs-pill {
padding-top: 3px;
padding-bottom: 0; }
.tabs-header-bottom .tabs-narrow li {
margin-left: 0;
margin-right: -1px; }
.tabs-header-bottom .tabs-narrow li.tabs-last {
margin-right: 0; }
.tabs-header-left {
float: left;
border-width: 1px 0 1px 1px;
padding: 0; }
.tabs-header-left .tabs-wrap {
height: 100%; }
.tabs-header-left .tabs {
height: 100%;
padding: 4px 0 0 2px;
border-width: 0 1px 0 0; }
.tabs-header-left .tabs li {
display: block;
width: 100%;
position: relative;
left: auto;
right: 0;
margin: 0 -1px 2px 0;
float: right; }
.tabs-header-left .tabs li a.tabs-inner {
display: block;
text-align: left;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px 0 0 3px;
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
-o-border-radius: 3px 0 0 3px;
-ms-border-radius: 3px 0 0 3px; }
.tabs-header-left .tabs li.tabs-selected a.tabs-inner {
background-repeat: repeat-y;
background: #9cd2e8; }
.tabs-header-left .tabs-pill {
padding-right: 3px; }
.tabs-header-left .tabs-narrow {
padding-top: 0; }
.tabs-header-left .tabs-narrow li {
margin-bottom: -1px;
margin-right: -1px; }
.tabs-header-left .tabs-narrow li.tabs-last {
margin-bottom: 0; }
.tabs-header-right {
float: right;
border-width: 1px 1px 1px 0;
padding: 0; }
.tabs-header-right .tabs-wrap {
height: 100%; }
.tabs-header-right .tabs {
height: 100%;
padding: 4px 2px 0 0;
border-width: 0 0 0 1px; }
.tabs-header-right .tabs li {
display: block;
width: 100%;
position: relative;
left: 0;
right: auto;
margin: 0 0 2px -1px;
float: left; }
.tabs-header-right .tabs li a.tabs-inner {
display: block;
text-align: left;
padding-left: 10px;
padding-right: 10px;
border-radius: 0 3px 3px 0;
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
-o-border-radius: 0 3px 3px 0;
-ms-border-radius: 0 3px 3px 0; }
.tabs-header-right .tabs li.tabs-selected a.tabs-inner {
background-repeat: repeat-y;
background: #9cd2e8; }
.tabs-header-right .tabs-pill {
padding-left: 3px; }
.tabs-header-right .tabs-narrow {
padding-top: 0; }
.tabs-header-right .tabs-narrow li.tabs-last {
margin-bottom: 0; }
.tabs-header-right .tabs-narrow li {
margin-bottom: -1px;
margin-left: -1px; }
.tabs-justified li a.tabs-inner {
padding-left: 0;
padding-right: 0; }
.tabs-pill {
padding-bottom: 3px; }
.tabs-header-narrow, .tabs-header-narrow .tabs-narrow {
padding: 0; }
.tabs-narrow li {
margin-left: 0;
margin-right: -1px; }
.tabs-narrow li.tabs-last {
margin-right: 0; }
.tabs-header, .tabs-scroller-left, .tabs-scroller-right, .tabs-tool, .tabs, .tabs-panels,
.tabs li a.tabs-inner, .tabs li.tabs-selected a.tabs-inner, .tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,
.tabs-header-left .tabs li.tabs-selected a.tabs-inner, .tabs-header-right .tabs li.tabs-selected a.tabs-inner {
border-color: #ccc; }
.tabs-p-tool a:hover, .tabs-scroller-over {
background-color: #9cd2e8; }
.tabs li a:hover.tabs-close {
background-color: #fff; }
/*menu*/
.menu {
position: absolute;
overflow: hidden;
margin: 0;
color: #5a5a5a; }
.menu-inline {
position: relative; }
.menu-item {
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
white-space: nowrap;
cursor: pointer;
border: 1px solid #ccc;
border-color: transparent;
_border-color: #fff; }
.menu-text {
height: 20px;
line-height: 20px;
float: left;
_display: inline;
padding-left: 28px;
font-size: 12px; }
.menu-text span {
font-size: 12px; }
.menu-icon, .menu-rightarrow {
position: absolute;
top: 50%;
width: 16px;
height: 16px;
margin-top: -8px; }
.menu-icon {
left: 2px; }
.menu-rightarrow {
background: url("images/menu_arrows.png") no-repeat -32px center;
right: 0; }
.menu-line {
position: absolute;
left: 26px;
top: 0;
height: 2000px;
font-size: 1px;
border-left: 1px solid #ccc;
border-right: 1px solid #fff; }
.menu-sep {
margin: 3px 0 3px 25px;
font-size: 1px;
border-top: 1px solid #ccc;
border-bottom: 1px solid #fff; }
.menu-noline .menu-line {
display: none; }
.menu-noline .menu-sep {
margin-left: 0;
margin-right: 0; }
.menu-active {
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
color: #fff;
background: #ed4848; }
.menu-active-disabled {
border-color: transparent;
background: transparent;
color: #5a5a5a; }
.menu-item-disabled {
opacity: 0.5;
filter: alpha(opacity=50);
cursor: not-allowed; }
.menu-shadow {
position: absolute;
background: #fff;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
-webkit-box-shadow: 1px 5px 10px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 1px 5px 10px rgba(0, 0, 0, 0.5);
-o-box-shadow: 1px 5px 10px rgba(0, 0, 0, 0.5);
-ms-box-shadow: 1px 5px 10px rgba(0, 0, 0, 0.5);
box-shadow: 1px 5px 10px rgba(0, 0, 0, 0.5); }
.menu-content {
background: #fff; }
/*menu button*/
.m-btn-downarrow, .s-btn-downarrow {
display: inline-block;
position: absolute;
top: 50%;
width: 16px;
height: 16px;
font-size: 1px;
right: 0;
margin-top: -8px;
background: url("images/menu_arrows.png") no-repeat 0 center; }
.m-btn-active, .s-btn-active {
background: #fff;
color: #000;
border: 1px solid #ccc;
filter: none; }
.m-btn-plain-active, .s-btn-plain-active {
padding: 0;
border: 1px solid #ccc;
background-color: #fff;
color: #000;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.m-btn .l-btn-left .l-btn-text {
margin-right: 20px; }
.m-btn .l-btn-left .m-btn-line {
right: 0;
width: 16px;
height: 500px;
border-style: solid;
border-color: #ccc;
border-width: 0 0 0 1px; }
.m-btn .l-btn-icon-right .l-btn-text {
margin-right: 40px; }
.m-btn .l-btn-icon-right .l-btn-icon {
right: 20px; }
.m-btn .l-btn-icon-top .l-btn-text {
margin-right: 4px;
margin-bottom: 14px; }
.m-btn .l-btn-icon-top .m-btn-downarrow, .m-btn .l-btn-icon-top .s-btn-downarrow {
top: auto;
bottom: 0;
left: 50%;
margin-left: -8px; }
.m-btn .l-btn-icon-top .m-btn-line {
left: 0;
bottom: 0;
width: 500px;
height: 16px;
border-width: 1px 0 0 0; }
.m-btn .l-btn-icon-bottom .l-btn-text {
margin-right: 4px;
margin-bottom: 50px; }
.m-btn .l-btn-icon-bottom .l-btn-icon {
top: auto;
bottom: 20px; }
.m-btn .l-btn-icon-bottom .m-btn-downarrow, .m-btn .l-btn-icon-bottom .s-btn-downarrow {
top: auto;
bottom: 0;
left: 50%;
margin-left: -8px; }
.m-btn .l-btn-icon-bottom .m-btn-line {
left: 0;
bottom: 0;
width: 500px;
height: 16px;
border-width: 1px 0 0 0; }
.m-btn-line {
display: inline-block;
position: absolute;
font-size: 1px;
display: none; }
.m-btn-large .l-btn-icon-right .l-btn-text {
margin-right: 56px; }
.m-btn-large .l-btn-icon-bottom .l-btn-text {
margin-bottom: 50px; }
/*tooltip*/
.tooltip {
position: absolute;
display: none;
z-index: 1070;
outline: none;
padding: 5px 8px;
opacity: 1;
filter: alpha(opacity=100);
border: 1px solid #ccc;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
background-color: #fff;
color: #5a5a5a;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-o-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-ms-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); }
.tooltip-content {
font-size: 12px; }
.tooltip-arrow-outer, .tooltip-arrow {
position: absolute;
width: 0;
height: 0;
line-height: 0;
font-size: 0;
border: 6px solid transparent;
_border-color: tomato;
_filter: chroma(color=tomato); }
.tooltip-arrow {
display: none \9; }
.tooltip-right .tooltip-arrow-outer {
left: 0;
top: 50%;
margin: -6px 0 0 -13px; }
.tooltip-right .tooltip-arrow {
left: 0;
top: 50%;
margin: -6px 0 0 -12px; }
.tooltip-left .tooltip-arrow-outer {
right: 0;
top: 50%;
margin: -6px -13px 0 0; }
.tooltip-left .tooltip-arrow {
right: 0;
top: 50%;
margin: -6px -12px 0 0; }
.tooltip-top .tooltip-arrow-outer {
bottom: 0;
left: 50%;
margin: 0 0 -13px -6px; }
.tooltip-top .tooltip-arrow {
bottom: 0;
left: 50%;
margin: 0 0 -12px -6px; }
.tooltip-bottom .tooltip-arrow-outer {
top: 0;
left: 50%;
margin: -13px 0 0 -6px; }
.tooltip-bottom .tooltip-arrow {
top: 0;
left: 50%;
margin: -12px 0 0 -6px; }
/*validatebox*/
.validatebox-invalid {
border-color: #ed4848 !important;
background-color: #fff;
color: #5a5a5a; }
/*number box*/
.numberbox {
border: 1px solid #ccc;
margin: 0;
padding: 0 2px;
vertical-align: middle; }
.textbox {
padding: 0; }
/*calendar*/
.calendar {
border: 1px solid #e6e6e6;
padding: 4px;
overflow: hidden;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); }
.calendar table {
table-layout: fixed;
border-collapse: separate;
font-size: 12px;
width: 100%;
height: 100%; }
.calendar table th {
font-size: 12px; }
.calendar table td {
font-size: 12px; }
.calendar-noborder {
border: 0; }
.calendar-header {
position: relative;
height: 22px;
padding: 5px 0; }
.calendar-title {
text-align: center;
height: 22px; }
.calendar-title span {
position: relative;
display: inline-block;
top: 2px;
padding: 0 3px;
height: 18px;
line-height: 18px;
font-size: 14px;
font-weight: bold;
cursor: pointer;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.calendar-prevmonth, .calendar-nextmonth, .calendar-prevyear, .calendar-nextyear {
position: absolute;
top: 50%;
margin-top: -7px;
width: 14px;
height: 14px;
cursor: pointer;
font-size: 1px;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.calendar-prevmonth {
left: 20px;
background: url("images/calendar_arrows.png") no-repeat -18px -2px; }
.calendar-nextmonth {
right: 20px;
background: url("images/calendar_arrows.png") no-repeat -34px -2px; }
.calendar-prevyear {
left: 3px;
background: url("images/calendar_arrows.png") no-repeat -1px -2px; }
.calendar-nextyear {
right: 3px;
background: url("images/calendar_arrows.png") no-repeat -49px -2px; }
.calendar-body {
position: relative;
background: #fff; }
.calendar-body th {
text-align: center;
padding: 2px 0;
color: #5a5a5a; }
.calendar-body td {
text-align: center; }
.calendar-day {
border: 0;
padding: 1px;
cursor: pointer;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
color: #000; }
.calendar-other-month {
opacity: 0.3;
filter: alpha(opacity=30); }
.calendar-disabled {
opacity: 0.6;
filter: alpha(opacity=60);
cursor: not-allowed; }
.calendar-menu {
position: absolute;
top: 0;
left: 0;
width: 180px;
height: 150px;
padding: 5px;
font-size: 12px;
display: none;
overflow: hidden;
background: #fff; }
.calendar-menu-year-inner {
text-align: center;
padding-bottom: 5px;
border-color: #ccc; }
.calendar-menu-year {
width: 40px;
text-align: center;
border: 1px solid #e6e6e6;
margin: 0;
padding: 2px;
font-weight: bold;
font-size: 12px; }
.calendar-menu-prev, .calendar-menu-next {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
width: 21px;
height: 21px;
cursor: pointer;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.calendar-menu-prev {
margin-right: 10px;
background: url("images/calendar_arrows.png") no-repeat 2px 2px; }
.calendar-menu-next {
margin-left: 10px;
background: url("images/calendar_arrows.png") no-repeat -45px 2px; }
.calendar-menu-month {
text-align: center;
cursor: pointer;
font-weight: bold;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
color: #5a5a5a; }
.calendar-sunday {
color: #ed4848; }
.calendar-saturday {
color: #39980f; }
.calendar-today {
color: #000;
background-color: #9cd2e8; }
.calendar-hover, .calendar-nav-hover, .calendar-menu-hover {
background-color: #0e6595;
color: #fff; }
.calendar-hover {
border: 1px solid #0e6595;
padding: 0; }
.calendar-selected {
background-color: #0e6595;
color: #fff;
border: 1px solid #0e6595;
padding: 0; }
/*file box*/
.filebox .textbox-value {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
position: absolute;
top: 0;
left: -5000px; }
.filebox-label {
display: inline-block;
position: absolute;
width: 100%;
height: 100%;
cursor: pointer;
left: 0;
top: 0;
z-index: 1000; }
.l-btn-disabled .filebox-label {
cursor: not-allowed; }
/*window*/
.window {
position: absolute;
overflow: hidden;
border: 1px solid #e6e6e6;
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-o-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-ms-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
background: #fff; }
.window .window-header {
background: transparent;
border: 0;
padding: 10px;
border-bottom: 1px solid #ccc; }
.window .window-header .panel-icon {
top: 50%;
margin-top: -8px;
left: 10px; }
.window .window-header .panel-tool {
top: 50%;
margin-top: -8px;
right: 10px; }
.window .window-header .panel-with-icon {
padding-left: 18px; }
.window .window-header .panel-title {
color: #5a5a5a;
font-weight: bold; }
.window .window-body {
border-top-width: 0; }
.window .window-body-noheader {
border-top-width: 1px; }
.window .panel-body-nobottom {
border-bottom-width: 0; }
.window .panel-footer {
position: relative;
top: -1px;
padding: 5px 10px;
border: 0; }
.window-proxy {
position: absolute;
overflow: hidden;
border: 1px dashed #fff; }
.window-proxy-mask {
position: absolute;
opacity: 0.5;
filter: alpha(opacity=50);
background: #fff; }
.window-mask {
position: absolute;
overflow: hidden;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0.4;
filter: alpha(opacity=40);
font-size: 1px;
background: #000; }
.window-shadow {
position: absolute;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-o-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-ms-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); }
/*messager*/
.messager-body {
padding: 10px;
overflow: auto; }
.messager-body .messager-input {
width: 100%;
padding: 1px 0;
border: 1px solid #ccc; }
.messager-button {
text-align: center;
padding: 5px; }
.messager-button .l-btn {
width: 70px; }
.messager-icon {
float: left;
_display: inline;
width: 32px;
height: 32px;
margin: 0 10px 10px 0; }
.messager-error {
background: url("images/messager_icons.png") no-repeat scroll -64px 0; }
.messager-info {
background: url("images/messager_icons.png") no-repeat scroll 0 0; }
.messager-question {
background: url("images/messager_icons.png") no-repeat scroll -32px 0; }
.messager-warning {
background: url("images/messager_icons.png") no-repeat scroll -96px 0; }
.messager-progress {
padding: 10px; }
.messager-p-msg {
margin-bottom: 5px; }
/*dialog*/
.dialog-content {
overflow: auto; }
.dialog-toolbar {
padding: 2px 5px;
background: #fff;
border-bottom: 1px solid #ccc; }
.dialog-tool-separator {
float: left;
_display: inline;
height: 24px;
border-left: 1px solid #ccc;
border-right: 1px solid #fff;
margin: 2px 1px; }
.dialog-button {
padding: 5px;
text-align: center;
background: #fff; }
.dialog-button .l-btn {
margin-left: 5px; }
/*searchbox*/
.searchbox {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
background: #fff;
white-space: nowrap;
margin: 0;
padding: 0;
border: 1px solid #ccc;
overflow: hidden; }
.searchbox .searchbox-text {
font-size: 12px;
margin: 0;
border: 0;
padding: 0 2px;
vertical-align: top; }
.searchbox .searchbox-prompt {
font-size: 12px;
color: #5a5a5a; }
.searchbox .l-btn-plain {
background: #fff;
padding: 0;
border: 0;
vertical-align: top;
opacity: 0.6;
filter: alpha(opacity=60);
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.searchbox .l-btn-plain:hover {
opacity: 1;
filter: alpha(opacity=100); }
.searchbox a.m-btn-plain-active {
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.searchbox .m-btn-active, .searchbox .s-btn-active {
border-width: 0 1px 0 0;
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.searchbox .textbox-button-right {
border-width: 0 0 0 1px; }
.searchbox .textbox-button-left {
border-width: 0 1px 0 0; }
.searchbox .l-btn-plain-disabled, .searchbox .l-btn-plain-disabled:hover {
opacity: 0.6;
filter: alpha(opacity=60); }
.textbox-invalid {
border-color: #ed4848;
background-color: #fff; }
.searchbox-button {
width: 18px;
height: 20px;
overflow: hidden;
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
cursor: pointer;
opacity: 0.6;
filter: alpha(opacity=60);
background: url("images/searchbox_button.png") no-repeat center center; }
.searchbox-button-hover {
opacity: 1;
filter: alpha(opacity=100); }
/*datebox*/
.datebox-calendar-inner {
height: 180px; }
.datebox-button {
height: 18px;
padding: 2px 5px;
background-color: #fff;
text-align: center; }
.datebox-button a {
font-size: 12px;
color: #5a5a5a;
font-weight: bold;
text-decoration: none;
opacity: 0.6;
filter: alpha(opacity=60); }
.datebox-button a:hover {
opacity: 1;
filter: alpha(opacity=100); }
.datebox-current {
float: left;
_display: inline; }
.datebox-close {
float: right;
_display: inline; }
.datebox .combo-arrow {
background: url("images/datebox_arrow.png") center center no-repeat; }
/*numberspinner*/
.spinner {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
white-space: nowrap;
margin: 0;
padding: 0;
border: 1px solid #ccc;
overflow: hidden; }
.spinner .spinner-text {
font-size: 12px;
margin: 0;
border: 0;
padding: 0 2px;
display: inline-block;
vertical-align: baseline;
*vertical-align: auto;
zoom: 1;
*dispaly: inline; }
.spinner .textbox-icon-disabled {
opacity: 0.6;
filter: alpha(opacity=60); }
.spinner .textbox-icon-disabled .spinner-arrow-up:hover, .spinner .textbox-icon-disabled .spinner-arrow-down:hover, .spinner .textbox-icon-disabled .numberspinner-arrow-down:hover, .spinner .textbox-icon-disabled .spinner-arrow-down:hover {
opacity: 0.6;
filter: alpha(opacity=60);
background-color: #fff;
cursor: default; }
.spinner-arrow {
background-color: #eee;
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
overflow: hidden;
margin: 0;
padding: 0;
opacity: 1;
filter: alpha(opacity=100);
width: 18px; }
.spinner-arrow-up, .spinner-arrow-down, .numberspinner-arrow-down {
opacity: 0.6;
filter: alpha(opacity=60);
display: block;
font-size: 1px;
width: 100%;
height: 50%;
color: #5a5a5a;
outline-style: none;
background-color: #eee;
background: url("images/spinner_arrows.png") no-repeat 1px center; }
.spinner-arrow-up:hover, .spinner-arrow-down:hover, .numberspinner-arrow-down:hover {
opacity: 1;
filter: alpha(opacity=100); }
.spinner-arrow-down {
background: url("images/spinner_arrows.png") no-repeat -15px center; }
.spinner-arrow-hover {
background-color: #fff;
opacity: 1;
filter: alpha(opacity=100); }
/**/
.numberspinner-arrow-up {
opacity: 0.6;
filter: alpha(opacity=60);
display: block;
font-size: 1px;
width: 100%;
height: 50%;
color: #5a5a5a;
outline-style: none;
background-color: #eee;
background: url("images/spinner_arrows.png") no-repeat 1px center; }
.numberspinner-arrow-up:hover {
opacity: 1;
filter: alpha(opacity=100); }
.numberspinner-arrow-down {
background: url("images/spinner_arrows.png") no-repeat -15px center; }
.numberspinner-arrow-hover {
background-color: #fff;
opacity: 1;
filter: alpha(opacity=100); }
/*accordion*/
.accordion {
overflow: hidden;
border: 1px solid #ccc;
background: #fff; }
.accordion .accordion-header {
border-width: 0 0 1px;
border-color: #ccc;
cursor: pointer;
background: #f5f5f5;
filter: none; }
.accordion .accordion-header .panel-title {
color: #5a5a5a; }
.accordion .accordion-body {
border-width: 0 0 1px;
border-color: #f5f5f5; }
.accordion .accordion-header-selected {
background: #e8e8e8; }
.accordion .accordion-header-selected .panel-title {
color: #000; }
.accordion-noborder {
border-width: 0; }
.accordion-noborder .accordion-header {
border-width: 0 0 1px;
border-color: #ccc; }
.accordion-noborder .accordion-body {
border-width: 0 0 1px;
border-color: #ccc; }
.accordion-collapse {
background: url("images/accordion_arrows.png") no-repeat 0 0; }
.accordion-expand {
background: url("images/accordion_arrows.png") no-repeat -16px 0; }
/*dategrid*/
.datagrid .panel-header {
background-color: #9cd2e8;
border-color: #9cd2e8; }
.datagrid .panel-header .panel-title {
font-weight: bold; }
.datagrid .panel-body {
position: relative;
overflow: hidden;
border: 0; }
.datagrid .datagrid-pager {
display: block;
border-width: 1px 0 0 0;
border-style: solid;
border-color: #ccc; }
.datagrid .datagrid-pager-top {
border-width: 0 0 1px 0; }
.datagrid-view {
position: relative;
overflow: hidden; }
.datagrid-view .datagrid-editable-input {
margin: 0;
padding: 2px 4px;
border: 1px solid #ccc;
font-size: 12px;
outline-style: none;
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.datagrid-view1 {
position: absolute;
overflow: hidden;
top: 0;
left: 0; }
.datagrid-view1 .datagrid-body-inner {
padding-bottom: 20px; }
.datagrid-view1 .datagrid-body {
overflow: hidden; }
.datagrid-view2 {
position: absolute;
overflow: hidden;
top: 0;
right: 0; }
.datagrid-mask {
left: 0;
top: 0;
position: absolute;
display: none;
width: 100%;
height: 100%;
opacity: 0.3;
filter: alpha(opacity=30);
background: #ccc; }
.datagrid-mask-msg {
position: absolute;
display: none;
top: 50%;
margin-top: -20px;
padding: 10px 5px 10px 30px;
width: auto;
height: 16px;
border: 2px solid #ccc;
background: #fff url("images/loading.gif") no-repeat scroll 5px center; }
.datagrid-sort-icon {
padding: 0;
display: none; }
.datagrid-toolbar {
background: #F4F4F4;
height: auto;
padding: 1px 2px;
border-width: 0 0 1px 0;
border-style: solid;
border-color: #ccc; }
.datagrid-btn-separator {
float: left;
_display: inline;
height: 24px;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
margin: 2px 1px; }
.datagrid-header {
font-weight: bold;
overflow: hidden;
cursor: default;
border-width: 0 0 0 0;
background-color: #eef1f6; }
.datagrid-header td {
border-width: 0;
margin: 0;
padding: 0; }
.datagrid-header td.datagrid-header-over {
background: #fff;
color: #5a5a5a;
cursor: default; }
.datagrid-header .datagrid-cell {
height: auto; }
.datagrid-header .datagrid-cell span {
font-size: 12px; }
.datagrid-header-inner {
float: left;
_display: inline;
width: 10000px; }
.datagrid-header-row, .datagrid-row {
height: 30px; }
.datagrid-body {
margin: 0;
padding: 5px 0;
overflow: auto;
zoom: 1; }
.datagrid-body td {
border-width: 0 1px 0 0;
border-style: dotted;
border-color: #ccc;
margin: 0;
padding: 0; }
.datagrid-body td[field='id'] {
border: 0; }
.datagrid-body td:last-child {
border: 0; }
.datagrid-body .datagrid-editable {
margin: 0;
padding: 0; }
.datagrid-body .datagrid-editable table {
width: 100%;
height: 100%; }
.datagrid-body .datagrid-editable td {
margin: 0;
padding: 0;
border: 0; }
.datagrid-border-right .datagrid-body td {
border-bottom: 1px solid transparent; }
.datagrid-border-bottom .datagrid-body td {
border-right: 1px solid transparent; }
.datagrid-no-border .datagrid-body td {
border-right: 1px solid transparent;
border-bottom: 1px solid transparent; }
.datagrid-footer {
overflow: hidden; }
.datagrid-footer td {
border-width: 0 1px 1px 0;
border-style: solid;
border-color: #ccc;
background: #eef1f6;
margin: 0;
padding: 0; }
.datagrid-footer-inner {
border-width: 1px 0 0 0;
border-style: solid;
border-color: #ccc;
width: 10000px;
float: left;
_display: inline; }
.datagrid-cell i {
font-size: 14px;
cursor: pointer;
margin: 0 4px;
color: #0e6595 !important; }
.datagrid-cell i.details {
color: #5bc0de; }
.datagrid-cell i.remove {
color: #ed4848; }
.datagrid-cell i.add {
color: #f0ad4e; }
.datagrid-cell i.edit {
color: #39980f; }
.datagrid-cell, .datagrid-cell-group, .datagrid-header-rownumber, .datagrid-cell-rownumber {
margin: 0;
padding: 0 4px;
white-space: nowrap;
word-wrap: normal;
overflow: hidden;
height: 18px;
line-height: 18px;
font-size: 12px; }
.datagrid-cell-group {
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.datagrid-header-rownumber {
color: #000; }
.datagrid-header-rownumber, .datagrid-cell-rownumber {
width: 30px;
text-align: center;
margin: 0;
padding: 0; }
.datagrid-row-editing .datagrid-cell {
height: auto; }
.datagrid-row-editing .textbox-text, .datagrid-row-editing .textbox {
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-o-border-radius: 0;
-ms-border-radius: 0; }
.datagrid-header-check, .datagrid-cell-check {
padding: 0;
width: 27px;
height: 18px;
font-size: 1px;
text-align: center;
overflow: hidden; }
.datagrid-header-check input, .datagrid-cell-check input {
margin: 0;
padding: 0;
width: 15px;
height: 18px; }
.datagrid-resize-proxy {
position: absolute;
display: none;
width: 1px;
height: 10000px;
top: 0;
cursor: e-resize;
background: #aac5e7; }
.datagrid-sort .datagrid-sort-icon {
display: inline;
padding: 0 13px 0 0;
background: url("images/datagrid_icons.png") no-repeat -64px center; }
.datagrid-sort-desc .datagrid-sort-icon {
display: inline;
padding: 0 13px 0 0;
background: url("images/datagrid_icons.png") no-repeat -16px center; }
.datagrid-sort-asc .datagrid-sort-icon {
display: inline;
padding: 0 13px 0 0;
background: url("images/datagrid_icons.png") no-repeat 0 center; }
.datagrid-row-collapse {
background: url("images/datagrid_icons.png") no-repeat -48px center; }
.datagrid-row-expand {
background: url("images/datagrid_icons.png") no-repeat -32px center; }
.datagrid-mask-msg {
background: #fff url("images/loading.gif") no-repeat scroll 5px center; }
.datagrid-td-rownumber {
background-color: #fff; }
.datagrid-cell-rownumber {
color: #000; }
.datagrid-htable, .datagrid-btable, .datagrid-ftable {
color: #000;
border-collapse: separate; }
.datagrid-row-alt {
background: #fafafa; }
.datagrid-row-over, .datagrid-header td.datagrid-header-over {
background: #dce9f7;
color: #000;
cursor: default; }
.datagrid-row-selected {
background: #b7d6ed; }
/*datelist*/
.datalist .datagrid-header {
border-width: 0; }
.datalist .datagrid-group {
height: 25px;
line-height: 25px;
font-weight: bold;
overflow: hidden;
background-color: #fff;
border-style: solid;
border-width: 0 0 1px 0;
border-color: #ccc; }
.datalist .datagrid-group-expander {
display: none; }
.datalist .datagrid-group-title {
padding: 0 4px; }
.datalist .datagrid-btable {
width: 100%;
table-layout: fixed; }
.datalist .datagrid-row td {
border-style: solid;
border-left-color: transparent;
border-right-color: transparent;
border-bottom-width: 0; }
.datalist .datagrid-cell {
width: auto;
height: auto;
padding: 2px 4px;
line-height: 18px;
position: relative;
position: relative;
overflow: hidden;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.datalist-lines .datagrid-row td {
border-bottom-width: 1px; }
.m-list {
margin: 0;
padding: 0;
list-style: none; }
.m-list .m-list-group {
padding: 0 4px; }
.m-list li {
border-style: solid;
border-width: 0 0 1px 0;
border-color: #ccc;
width: auto;
height: auto;
padding: 2px 4px;
line-height: 18px;
position: relative;
position: relative;
overflow: hidden;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.m-list li > a {
position: relative;
overflow: hidden;
display: block;
cursor: pointer;
color: #000;
text-decoration: none;
margin: -2px -4px;
padding: 2px 16px 2px 4px;
line-height: 18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.m-list li > a::after {
position: absolute;
top: 50%;
display: block;
width: 8px;
height: 8px;
content: '';
right: 6px;
margin-top: -4px;
border-style: solid;
border-width: 1px 1px 0 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
-moz-transform: rotate(45deg);
transform: rotate(45deg); }
.m-list li > a:hover {
background: #eaf2ff;
color: #000000; }
.datalist-link {
position: relative;
overflow: hidden;
display: block;
cursor: pointer;
color: #000;
text-decoration: none;
margin: -2px -4px;
padding: 2px 16px 2px 4px;
line-height: 18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.datalist-link ::after {
position: absolute;
top: 50%;
display: block;
width: 8px;
height: 8px;
content: '';
right: 6px;
margin-top: -4px;
border-style: solid;
border-width: 1px 1px 0 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
-moz-transform: rotate(45deg);
transform: rotate(45deg); }
/*propertygrid*/
.propertygrid .datagrid-view1 .datagrid-body {
background: #fff; }
.propertygrid .datagrid-view1 .datagrid-body td {
padding-bottom: 1px;
border-width: 0 1px 0 0;
border-color: #ccc; }
.propertygrid .datagrid-view1 .datagrid-group {
border-color: #ccc; }
.propertygrid .datagrid-view1 .datagrid-row-over, .propertygrid .datagrid-view1 .datagrid-row-selected {
background: #fff; }
.propertygrid .datagrid-view2 .datagrid-group {
border-color: #ccc; }
.propertygrid .datagrid-group {
background: #dce9f7;
height: 21px;
overflow: hidden;
border-width: 0 0 1px 0;
border-style: solid; }
.propertygrid .datagrid-group span {
font-weight: bold; }
/*tree*/
.tree {
margin: 0;
padding: 0;
list-style-type: none; }
.tree li {
white-space: nowrap; }
.tree li ul {
list-style-type: none;
margin: 0;
padding: 0; }
.tree-node {
height: 18px;
white-space: nowrap;
cursor: pointer; }
.tree-hit {
cursor: pointer; }
.tree-expanded, .tree-collapsed, .tree-folder, .tree-file, .tree-checkbox, .tree-indent {
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
width: 16px;
height: 18px;
overflow: hidden; }
.tree-expanded {
background: url("images/tree_icons.png") no-repeat -18px 0; }
.tree-expanded-hover {
background: url("images/tree_icons.png") no-repeat -50px 0; }
.tree-collapsed {
background: url("images/tree_icons.png") no-repeat 0 0; }
.tree-collapsed-hover {
background: url("images/tree_icons.png") no-repeat -32px 0; }
.tree-lines .tree-expanded {
background: url("images/tree_icons.png") no-repeat -144px 0; }
.tree-lines .tree-collapsed {
background: url("images/tree_icons.png") no-repeat -128px 0; }
.tree-lines .tree-root-first .tree-expanded {
background: url("images/tree_icons.png") no-repeat -144px 0; }
.tree-lines .tree-root-first .tree-collapsed {
background: url("images/tree_icons.png") no-repeat -128px 0; }
.tree-lines .tree-node-last .tree-expanded {
background: url("images/tree_icons.png") no-repeat -80px 0; }
.tree-lines .tree-node-last .tree-collapsed {
background: url("images/tree_icons.png") no-repeat -64px 0; }
.tree-lines .tree-root-one .tree-expanded {
background: url("images/tree_icons_root.png") no-repeat -48px 0; }
.tree-lines .tree-root-one .tree-collapsed {
background: url("images/tree_icons_root.png") no-repeat -32px 0; }
.tree-line {
background: url("images/tree_icons.png") no-repeat -176px 0; }
.tree-join {
background: url("images/tree_icons.png") no-repeat -192px 0; }
.tree-joinbottom {
background: url("images/tree_icons.png") no-repeat -160px 0; }
.tree-folder {
background: url("images/tree_icons.png") no-repeat -208px 0; }
.tree-folder-open {
background: url("images/tree_icons.png") no-repeat -224px 0; }
.tree-file {
background: url("images/tree_icons.png") no-repeat -240px 0; }
.tree-loading {
background: url("images/loading.gif") no-repeat center center; }
.tree-checkbox0 {
background: url("images/tree_icons.png") no-repeat -208px -18px; }
.tree-checkbox1 {
background: url("images/tree_icons.png") no-repeat -224px -18px; }
.tree-checkbox2 {
background: url("images/tree_icons.png") no-repeat -240px -18px; }
.tree-title {
font-size: 12px;
display: inline-block;
vertical-align: top;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
text-decoration: none;
white-space: nowrap;
padding: 0 2px;
height: 18px;
line-height: 18px; }
.tree-node-proxy {
font-size: 12px;
line-height: 20px;
padding: 0 2px 0 20px;
border: 1px solid #ccc;
z-index: 9900000;
background-color: #fff;
color: #000; }
.tree-dnd-icon {
display: inline-block;
position: absolute;
width: 16px;
height: 18px;
left: 2px;
top: 50%;
margin-top: -9px; }
.tree-dnd-yes {
background: url("images/tree_icons.png") no-repeat -256px 0; }
.tree-dnd-no {
background: url("images/tree_icons.png") no-repeat -256px -18px; }
.tree-node-top {
border-top: 1px dashed #ed4848; }
.tree-node-bottom {
border-bottom: 1px dashed #ed4848; }
.tree-node-append .tree-title {
border: 1px dashed #ed4848; }
.tree-editor {
border: 1px solid #ccc;
font-size: 12px;
height: 14px !important;
line-height: 14px;
padding: 1px 2px;
width: 80px;
position: absolute;
top: 0; }
.tree-node-hover {
background: #9cd2e8;
color: #000; }
.tree-node-selected {
background: #0e6595;
color: #fff; }
.tree-node-hidden {
display: none; }
/*pagination*/
.pagination {
zoom: 1; }
.pagination table {
float: left;
height: 30px; }
.pagination td {
border: 0; }
.pagination .pagination-num {
border: 1px solid #ccc;
margin: 0 2px;
padding: 2px;
/*width: 2em;*/
/*页码显示数量增加到5位数*/
width:50px;
height: auto; }
.pagination span {
font-size: 12px; }
.pagination-btn-separator {
float: left;
_display: inline;
height: 24px;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
margin: 3px 1px; }
.pagination-page-list {
margin: 0 6px;
padding: 1px 2px;
width: auto;
height: auto;
border: 1px solid #ccc; }
.pagination-info {
float: right;
_display: inline;
margin: 0 6px 0 0;
padding: 0;
height: 30px;
line-height: 30px;
font-size: 12px; }
.pagination-link .l-btn-text {
width: 24px;
text-align: center;
margin: 0; }
.pagination-first {
background: url("images/pagination_icons.png") no-repeat 0 center; }
.pagination-first-hover {
background: url("images/paginationhover_icons.png") no-repeat 0 center; }
.pagination-prev {
background: url("images/pagination_icons.png") no-repeat -16px center; }
.pagination-prev-hover {
background: url("images/paginationhover_icons.png") no-repeat -16px center; }
.pagination-next {
background: url("images/pagination_icons.png") no-repeat -32px center; }
.pagination-next-hover {
background: url("images/paginationhover_icons.png") no-repeat -32px center; }
.pagination-last {
background: url("images/pagination_icons.png") no-repeat -48px center; }
.pagination-last-hover {
background: url("images/paginationhover_icons.png") no-repeat -48px center; }
.pagination-load {
background: url("images/pagination_icons.png") no-repeat -64px center; }
.pagination-load-hover {
background: url("images/paginationhover_icons.png") no-repeat -64px center; }
.pagination-loading {
background: url("images/loading.gif") no-repeat center center; }
/*progressbar*/
.progressbar {
border: 1px solid #ccc;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px;
position: relative;
overflow: hidden; }
.progressbar-text {
text-align: center;
position: absolute;
color: #000;
font-size: 12px; }
.progressbar-value {
position: relative;
overflow: hidden;
width: 0;
border-radius: 3px 0 0 3px;
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
-o-border-radius: 3px 0 0 3px;
-ms-border-radius: 3px 0 0 3px; }
.progressbar-value .progressbar-text {
background-color: #39980f;
color: #fff; }
/*slider*/
.slider-disabled {
opacity: 0.5;
filter: alpha(opacity=50); }
.slider-h {
height: 22px; }
.slider-v {
width: 22px; }
.slider-v .slider-inner {
width: 0;
left: 10.5px;
top: 0;
float: left; }
.slider-v .slider-handle {
left: 50%;
margin-top: -10px; }
.slider-v .slider-tip {
left: -10px;
margin-top: -6px; }
.slider-v .slider-rule {
float: left;
top: 0;
left: 20px; }
.slider-v .slider-rule span {
width: 5px;
height: 'auto';
border-width: 1px 0 0 0;
border-style: solid; }
.slider-v .slider-rulelabel {
float: left;
top: 0;
left: 27px; }
.slider-inner {
position: relative;
height: 0;
top: 10.5px;
background: #fff;
border: 1px solid #ccc;
border-bottom-width: 0;
border-left-width: 0;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.slider-handle {
position: absolute;
display: block;
outline: none;
width: 20px;
height: 20px;
top: 50%;
margin-top: -10px;
margin-left: -10px;
background: url("images/slider_handle.png") no-repeat; }
.slider-tip {
position: absolute;
display: inline-block;
line-height: 12px;
font-size: 12px;
white-space: nowrap;
top: -22px; }
.slider-rule {
position: relative;
top: 15px; }
.slider-rule span {
position: absolute;
display: inline-block;
font-size: 0;
height: 5px;
border-width: 0 0 0 1px;
border-style: solid;
border-color: #ccc; }
.slider-rulelabel {
position: relative;
top: 20px; }
.slider-rulelabel span {
position: absolute;
display: inline-block;
font-size: 12px;
color: #000; }
.slider {
position: relative;
z-index: 1; }
.ends-circle {
position: absolute;
z-index: 0;
width: 9px;
height: 9px;
border-radius: 100%;
border: 1px solid #ccc; }
.ends-circle span {
position: absolute;
z-index: 0;
display: block; }
.ends-circle-l {
top: 5.5px;
left: -20px; }
.ends-circle-l span {
right: -10px;
width: 10px;
top: 4px;
border-bottom: 1px solid #ccc; }
.ends-circle-r {
top: 5.5px;
right: -20px; }
.ends-circle-r span {
left: -10px;
width: 10px;
top: 4px;
border-bottom: 1px solid #ccc; }
.ends-circle-t {
top: -20px;
left: 5.5px; }
.ends-circle-t span {
bottom: -10px;
height: 10px;
left: 4px;
border-left: 1px solid #ccc; }
.ends-circle-b {
bottom: -20px;
left: 5.5px; }
.ends-circle-b span {
top: -10px;
height: 10px;
left: 4px;
border-left: 1px solid #ccc; }
/*split button*/
.s-btn:hover .m-btn-line, .s-btn-active .m-btn-line, .s-btn-plain-active .m-btn-line {
display: inline-block; }
.l-btn:hover .s-btn-downarrow, .s-btn-active .s-btn-downarrow, .s-btn-plain-active .s-btn-downarrow {
border-style: solid;
border-color: #ccc;
border-width: 0 0 0 1px; }
/*switch button*/
.switchbutton {
text-decoration: none;
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*dispaly: inline;
overflow: hidden;
margin: 0;
padding: 0;
cursor: pointer;
background: #bbb;
border: 1px solid #ccc;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.switchbutton-inner {
display: inline-block;
position: relative;
overflow: hidden;
top: -1px;
left: -1px; }
.switchbutton-on, .switchbutton-off, .switchbutton-handle {
display: inline-block;
text-align: center;
height: 100%;
float: left;
font-size: 12px;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
-ms-border-radius: 3px; }
.switchbutton-on {
background: #ed4848;
color: #fff; }
.switchbutton-off {
background-color: #fff;
color: #000; }
.switchbutton-on, .switchbutton-reversed .switchbutton-off {
border-radius: 3px 0 0 3px;
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
-o-border-radius: 3px 0 0 3px;
-ms-border-radius: 3px 0 0 3px; }
.switchbutton-off, .switchbutton-reversed .switchbutton-on {
border-radius: 0 3px 3px 0;
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
-o-border-radius: 0 3px 3px 0;
-ms-border-radius: 0 3px 3px 0; }
.switchbutton-handle {
position: absolute;
top: 0;
left: 50%;
background-color: #fff;
color: #000;
border: 1px solid #ccc;
-webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
-o-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
-ms-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); }
.switchbutton-value {
position: absolute;
top: 0;
left: -5000px; }
.switchbutton-disabled {
opacity: 0.5;
filter: alpha(opacity=50); }
.switchbutton-disabled, .switchbutton-readonly {
cursor: not-allowed; }
/*layout*/
.layout {
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
z-index: 0; }
.layout-panel {
position: absolute;
overflow: hidden; }
.layout-body {
min-width: 1px;
min-height: 1px; }
.layout-panel-east, .layout-panel-west {
z-index: 2; }
.layout-panel-north, .layout-panel-south {
z-index: 3; }
.layout-expand {
position: absolute;
padding: 0;
font-size: 1px;
cursor: pointer;
z-index: 1;
background-color: #fff; }
.layout-expand .panel-header {
background: transparent;
filter: none;
overflow: hidden;
border-bottom-width: 0; }
.layout-expand .panel-body {
position: relative;
overflow: hidden;
background: transparent;
filter: none; }
.layout-expand .panel-body .panel-icon {
margin-top: 0;
top: 0;
left: 50%;
margin-left: -8px; }
.layout-expand .panel-body-noheader .layout-expand-title, .layout-expand .panel-body-noheader .panel-icon {
top: 5px; }
.layout-expand .panel-body-noheader .layout-expand-with-icon {
top: 23px; }
.layout-expand-west .panel-header .panel-icon, .layout-expand-east .panel-header .panel-icon {
display: none; }
.layout-expand-title {
position: absolute;
top: 0;
left: 21px;
white-space: nowrap;
word-wrap: normal;
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
-moz-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0; }
.layout-expand-with-icon {
top: 18px; }
.layout-split-proxy-h, .layout-split-proxy-v {
position: absolute;
display: none;
font-size: 1px;
z-index: 5;
background-color: #0e6595; }
.layout-split-proxy-h {
width: 5px;
cursor: e-resize; }
.layout-split-proxy-v {
height: 5px;
cursor: n-resize; }
.layout-mask {
position: absolute;
background: #fff;
opacity: 0.1;
filter: alpha(opacity=10);
z-index: 4; }
.layout-button-up {
background: url("images/layout_arrows.png") no-repeat -16px -16px; }
.layout-button-down {
background: url("images/layout_arrows.png") no-repeat -16px 0; }
.layout-button-left {
background: url("images/layout_arrows.png") no-repeat 0 0; }
.layout-button-right {
background: url("images/layout_arrows.png") no-repeat 0 -16px; }
.layout-split-north {
border-bottom: 5px solid #ccc; }
.layout-split-south {
border-top: 5px solid #ccc; }
.layout-split-east {
border-left: 5px solid #ccc; }
.layout-split-west {
border-right: 5px solid #ccc; }
.layout-expand-over {
background-color: #9cd2e8; }
/*colors*/
.c1 {
color: #fff;
border-color: #39980f;
background: #39980f;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c1:hover {
background: #30810d;
filter: none; }
.c2 {
color: #fff;
border-color: #747474;
background: #747474;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c2:hover {
background: #676767;
filter: none; }
.c3 {
color: #fff;
border-color: #ffc0cb;
background: #ffc0cb;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c3:hover {
background: #ffa7b6;
filter: none; }
.c4 {
color: #fff;
border-color: #b8eecf;
background: #b8eecf;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c4:hover {
background: #a3e9c1;
filter: none; }
.c5 {
color: #fff;
border-color: #ed4848;
background: #ed4848;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c5:hover {
background: #eb3131;
filter: none; }
.c6 {
color: #fff;
border-color: #0e6595;
background: #0e6595;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c6:hover {
background: #0c557e;
filter: none; }
.c7 {
color: #fff;
border-color: #f0ad4e;
background: #f0ad4e;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c7:hover {
background: #eea236;
filter: none; }
.c8 {
color: #fff;
border-color: #698cba;
background: #698cba;
-webkit-animation-name: disNoneAnimation;
-moz-animation-name: disNoneAnimation;
-o-animation-name: disNoneAnimation;
animation-name: disNoneAnimation; }
@-webkit-keyframes disNoneAnimation {}
@-moz-keyframes disNoneAnimation {}
@-o-keyframes disNoneAnimation {}
.c8:hover {
background: #587fb2;
filter: none; }
/*# sourceMappingURL=easyui.css.map */
/****/
.l-btn2 {
color: #444;
background: #fafafa;
background-repeat: repeat-x;
border: 1px solid #bbb;
background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%);
background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%);
background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%);
background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0);
}
.l-btn2 {
text-decoration: none;
display: inline-block;
overflow: hidden;
margin: 0;
padding: 0;
cursor: pointer;
outline: none;
text-align: center;
vertical-align: middle;
}
.l-btn2:hover {
background: #eaf2ff;
color: #000000;
border: 1px solid #b7d2ff;
filter: none;
}
.icon-blank{
background:url('icons/blank.gif') no-repeat center center;
}
.icon-add{
background:url('icons/edit_add.png') no-repeat center center;
}
.icon-edit{
background:url('icons/pencil.png') no-repeat center center;
}
.icon-clear{
background:url('icons/clear.png') no-repeat center center;
}
.icon-remove{
background:url('icons/edit_remove.png') no-repeat center center;
}
.icon-save{
background:url('icons/filesave.png') no-repeat center center;
}
.icon-cut{
background:url('icons/cut.png') no-repeat center center;
}
.icon-ok{
background:url('icons/ok.png') no-repeat center center;
}
.icon-no{
background:url('icons/no.png') no-repeat center center;
}
.icon-cancel{
background:url('icons/cancel.png') no-repeat center center;
}
.icon-reload{
background:url('icons/reload.png') no-repeat center center;
}
.icon-search{
background:url('icons/search.png') no-repeat center center;
}
.icon-print{
background:url('icons/print.png') no-repeat center center;
}
.icon-help{
background:url('icons/help.png') no-repeat center center;
}
.icon-undo{
background:url('icons/undo.png') no-repeat center center;
}
.icon-redo{
background:url('icons/redo.png') no-repeat center center;
}
.icon-back{
background:url('icons/back.png') no-repeat center center;
}
.icon-sum{
background:url('icons/sum.png') no-repeat center center;
}
.icon-tip{
background:url('icons/tip.png') no-repeat center center;
}
.icon-filter{
background:url('icons/filter.png') no-repeat center center;
}
.icon-man{
background:url('icons/man.png') no-repeat center center;
}
.icon-lock{
background:url('icons/lock.png') no-repeat center center;
}
.icon-mini-add{
background:url('icons/mini_add.png') no-repeat center center;
}
.icon-mini-edit{
background:url('icons/mini_edit.png') no-repeat center center;
}
.icon-mini-refresh{
background:url('icons/mini_refresh.png') no-repeat center center;
}
.icon-large-picture{
background:url('icons/large_picture.png') no-repeat center center;
}
.icon-large-clipart{
background:url('icons/large_clipart.png') no-repeat center center;
}
.icon-large-shapes{
background:url('icons/large_shapes.png') no-repeat center center;
}
.icon-large-smartart{
background:url('icons/large_smartart.png') no-repeat center center;
}
.icon-large-chart{
background:url('icons/large_chart.png') no-repeat center center;
}
html,body{
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
}
a:hover{
color: #56AADC;
text-decoration: none;
cursor: pointer;
}
a:visited {
color: #56AADC;
text-decoration: none;
}
.red{color:red;font-weight: 600;}
.cxtj{
width: 100%;
margin: 0 auto;
box-shadow: 0px 5px 6px #898585;
}
/* 选中a标签 */
.xzA:hover{
text-decoration: underline;
}
.heade-box{
position: relative;
height: 65px;
background: url(../images/banner.jpg) no-repeat center;
z-index: 100;
}
.header-title-img{
position: absolute;
left: 42px;
top: 0;
}
.user-message{
position: absolute;
top: 38px;
right: 50px;
color: #f60;
}
.left-min-menu{
width: 60px;
background-color:#274776;
color: #1f1f1f;
height: 100%;
overflow: auto;
position: fixed;
top: 0;
left: 0;
padding-top: 70px;
}
.left-min-menu ul li:first-child{
margin-top: 30px;
}
.left-min-menu li{
text-align: center;
height: 50px;
line-height: 50px;
}
.left-min-menu li:hover{
background-color: rgba(153, 153, 153, 0.6);
}
.left-min-menu li i{
font-size: 26px;
}
.left-menu-box{
position: fixed;
width: 230px;
background-color:rgba(43,77,122,1);/* #E0ECFF*/
height: 100%;
overflow: auto;
top: 0;
left: -230px;
padding-top: 70px;
}
.main-cen-box{
padding: 0 10px;
margin-left: 50px;
background-color: #fff;
/* height: 100%; */
}
.left-list-ftitle{
display: block;
height: 36px;
line-height: 36px;
padding-left: 15px;
font-size: 16px;
background-color: #274776;
opacity: 0.8;
color: #fff;
font-weight: bold;
position: relative;
}
a.left-list-ftitle:hover{
color: #fff;
background-color: #1d3d6d;
}
.left-list-ftitle span{
position: absolute;
top: 3px;;
right: 1px;
font-size: 18px;
color: #fff;
}
.left-list ul{
margin-left: 40px;
}
.left-list-ttitle{
font-size: 12px;
height: 28px;
line-height: 28px;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}
.call{
margin-left: 25px;
margin-top: 15px;
width: 180px;
height: 100px;
background-color: #fff;
box-shadow: 5px 5px 5px #ccc;
border-radius: 4px;
padding: 5px 10px;
}
.call dt{
text-align: center;
height: 28px;
line-height: 28px;
color: #474dd6;
}
.call dd{
height: 20px;
line-height: 20px;
}
/* 右侧 */
.cxtj legend{
height: 36px;
line-height: 36px;
padding-left: 10px;
font-size: 14px;
background-color: #f1f1f1;
border: 1px solid #ccc;
border-bottom: 1px dashed #ccc;
color: #666;
font-weight: bold;
width: 100%;
}
.cxtj table{
border: 1px solid #ccc;
border-top: none;
width: 100%;
/* color:#0066CC; */
color:#333;
font-size: 14px;
}
.cxtj table tr{
border: 1px dashed #f2f2f2;
}
.cxtj table td{
/* border: 1px dashed #e5e5e5; */
margin-top: -1px;
height: 34px;
line-height: 34px;
}
.cxtj table td>.textbox ,.layout_table td>.textbox ,.layout_table_fp td>.textbox{
display: inline-block;
height: 28px;
line-height: 28px;
border: 1px solid #ccc;
border-radius: 4px;
width: 80%;
}
.textbox .textbox{top:-2px;}
.textbox .textbox-text{padding:0px !important;}
.cxtj table .textbox-3{
width:92.5%;
}
.cxtj table input,.layout_table input,.layout_table_fp input,.textbox select {
/*height: 26px;*/
line-height: 26px;
margin-top: -4px;
width:100%;
}
.cxtj table .panel-noscroll{
border:none;
}
.cxtj table input[type=file],.layout_table input[type=file],.layout_table_fp input[type=file]{
border: 1px solid #ccc;
}
.radil_td{
/* color:#2180df; */
color:#333;
font-size: 12px;
}
.cxtj table input.radio_inp{
width: 15px;
margin-left: 3px;
}
.cxtj table textarea{
resize: vertical;
border: 1px solid #ccc;
width: 95.5%;
}
.tr_hide{
display: none;
}
#arrow_span0{
display: inline-block;
width: 15px;
height: 15px;
background: url(../images/accordion_arrows.png) no-repeat -16px 0;
}
#arrow_span1{
display: none;
width: 15px;
height: 15px;
background: url(../images/accordion_arrows.png) no-repeat;
}
.btn_a{
padding: 5px 12px;
color: #fff;
border: 1px solid #ccc;
border-radius: 5px;
margin-right: 10px;
}
.btn_a:hover{
color: #fff;
}
.btn_search{
background-color: #3692C6;
border-color: #217cb1;
}
.btn_search:hover{
background-color: #217cb1;
}
.btn_empty{
background-color: #f60;
border-color: #d45602;
}
.btn_empty:hover{
background-color: #d45602;
}
.btn_add{
background-color: #3AB500;
border-color: #34B51E;
}
.btn_add:hover{
background-color: #3AB500;
}
.main-table-div{
margin-top: 10px;
}
.statistics{
background-color: #f1f1f1;
height: 36px;
line-height: 36px;
padding-left: 20px;
border: 1px solid #ccc;
border-bottom: none;
}
.st-span{
border-radius: 10px;
padding: 3px 5px;
background-color: #f60;
color: #fff;
}
/* 左侧菜单栏改版 */
.left-list>li{
margin-bottom: 10px;
}
.left-list ul{
position: relative;
background-color:#fff;
margin: 10px;
border-radius: 5px;
/*padding-left: 10px;*/
}
.left-list-ftitle{
margin:0 10px;
border-radius: 5px;
}
.bot{
font-size: 0;
width: 0px;
height: 0px;
line-height: 0;
border-width: 8px;
border-style: solid dashed dashed dashed;
border-color:transparent transparent #fff transparent;
position:absolute;
top:-16px;
right: 5px;
overflow: hidden;
}
.left-list-ttitle a{
color: #1a1a1a;
padding-left:10px;
}
.left-list-ftitle .fa{
font-size: 14px;
margin-right: 10px;
}
.necessary{
color: #f60;
}
.mask{
width: 100%;
height: 100%;
position: fixed;
background: rgba(0, 0, 0, 0.5);
top: 0;
left: 0;
display: none;
}
.mask_hb{
width: 100%;
height: 100%;
position: fixed;
background: rgba(0, 0, 0, 0.5);
top: 0;
left: 0;
display: none;
}
.mask_fp{
width: 100%;
height: 100%;
position: fixed;
background: rgba(0, 0, 0, 0.5);
top: 0;
left: 0;
display: none;
}
div.layout{
width: 800px;
position: fixed;
left: 50%;
top: 50%;
margin-left: -400px;
margin-top: -250px;
box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.4);
background: #fff;
border-radius: 8px;
display: none;
}
.layout_header{
height: 40px;
background: #274776;
line-height: 40px;
border-radius: 8px 8px 0 0;
}
.layout_content{
padding: 20px 5px 30px 5px;
}
.layout_header span{
font-size: 13px;
color: #f1f1f1;
margin-left: 15px;
}
.layout_table{
width: 100%;
}
.layout_table td{
height: 34px;
line-height: 34px;
}
.layout_table textarea{
resize: vertical;
border: 1px solid #ccc;
width: 92%;
}
.close_x{
margin-right: 20px;
margin-top:10px;
font-size: 16px;
color: #87a7bc;
}
.close_x:hover{
color: #9fdbf5;
}
div.layout_fp{
width: 800px;
position: fixed;
left: 50%;
top: 50%;
margin-left: -400px;
margin-top: -250px;
box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.4);
background: #fff;
border-radius: 8px;
display: none;
}
.layout_header_fp{
height: 40px;
background: #274776;
line-height: 40px;
border-radius: 8px 8px 0 0;
}
.layout_content_fp{
padding: 20px 5px 30px 5px;
}
.layout_header_fp span{
font-size: 13px;
color: #f1f1f1;
margin-left: 15px;
}
.layout_table_fp{
width: 100%;
}
.layout_table_fp td{
height: 34px;
line-height: 34px;
}
.layout_table_fp textarea{
resize: vertical;
border: 1px solid #ccc;
width: 92%;
}
/*回报签收标签*/
.re_hqzt{
border:1px solid #ccc;
border-radius:10px;
color:#fff;
padding:2px 3px;
}
a.re_hb{
background-color: #71a29e;
}
a.re_hb:hover{
background-color:#50a099;
color:#fff;
}
a.re_qs{
background-color: #b3896e;
}
a.re_qs:hover{
background-color: #b3734a;
color:#fff;
}
/*指令状态*/
.zt_span{
font-size: 12px;
border: 1px solid #ccc;
padding: 3px;
color: #fff;
}
.qszt_span{
border-radius:10px;
background-color: #bb8866;
}
.hbzt_span{
border-radius:6px;
background-color: #7ca2c6;
}
.xbzt_span{
border-radius:2px;
background-color: #77aa99;
}
/* 试验添加右侧弹出框 */
.re_qs {
position: relative;
/*width: fit-content;*/
}
.right_po{
width: fit-content;
border: 1px solid #ccc;
position: absolute;
display: none;
left: 42px;
top: 0px;
background:#d9f2ed;
box-shadow: 3px 3px 15px #666;
}
.right_po table{
width: 100%;
font-size: 12px;
}
.right_po table tr{
border-bottom: 1px dashed #ccc;
}
.right_po table tr:last-child{
border-bottom: none;
}
.right_po table th{
background:-webkit-gradient(linear, 0 0, 0 100%, from(#a3dfe6), to(#d9f2ed));
min-width: 100px;
}
.right_po table td,.right_po table th{
text-align: center;
height: 30px;
line-height: 30px;
padding: 3px 5px;
white-space: nowrap;
}
table.datagrid-btable td[field="zlwh"] .datagrid-cell{
overflow: visible;
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
$(function(){
$.extend($.fn.validatebox.defaults.rules, {
imei: {
validator: function (value) {
var re=/^([A-Za-z0-9]{15})$/;
return re.test(value);
},
message: "输入正确的(15位数字(英文字母))IMEI号!"
},
imsi: {
validator: function (value) {
var re=/^([0-9]{15})$/;
return re.test(value);
},
message: "输入正确的(15位数字)IMSI号!"
},
mobile: {
validator : function(value) {
return /(^[1][3|4|5|7|8]{1}\d{9}$)/.test(value);
},
message : "请输入正确的移动电话"
},
cphm: {
validator: function (value) {
var re=/^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/;
return re.test(value);
},
message: "请输入正确的车牌号码"
},
idCode:{
validator:function(value,param){
return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value);
},
message: '请输入正确的身份证号'
},
QQ: {
validator: function (value, param) {
return /^[1-9]\d{4,10}$/.test(value);
},
message: 'QQ号码不正确'
},
maxLength: {
validator: function (value, param) {
if (param) {
if (param[0] != undefined) {
var len = $.trim(value.replace(/[^\x00-\xff]/g,'aaa')).length;
if (len > param[0]) {
return false;
}
}
}
return true;
},
message: "输入最多输入 {0} 个字符,一个汉字等于三个字符"
}
})
$("#bkdxlx").combobox({
onChange: function (lx,o) {
var validStr="";
if(lx=="001"){//手机
validStr=['mobile'];
}else if(lx=="002"){//QQ号码
validStr=['QQ'];
}else if(lx=="003"){//微信号码
}else if(lx=="004"){//身份证号
validStr=['idCode'];
}else if(lx=="005"){//车牌号
validStr=['cphm'];
}else if(lx=="009"){//微信ID
}else if(lx=="006"){//IMSI
validStr=['imsi'];
}else if(lx=="007"){//IMEI
validStr=['imei'];
}
if(validStr!=""){
$("#bkdxhm").textbox({
required: true,
validType:validStr
});
}
}
});
});
function submit() {
var bkdxlxmc=$('#bkdxlx').combobox('getText');//获取下拉框的文本
$('#bkdxlxmc').val(bkdxlxmc);
var bkdxlx=$("#bkdxlx").combobox('getValue');
$("#bkdxlx").combobox({
required: true
});
$("#bkdxlx").combobox('setValue',bkdxlx);
console.info($('#form1').serialize())
console.info($('#form1').serializeArray())
if($('#form1').form('enableValidation').form('validate')){
$.ajax({
method : 'post',
url : 'saveBkxx',
dateType:'json',
data : $('#form1').serializeArray(),
success:function(data){
if(data=="success"){
$.messager.show({title:'提示',msg:'保存成功'});
}else{
$.messager.show({title:'提示',msg:'数据已存在,不可重复提交'});
}
},
error:function(e) {
$.messager.show({title:'提示',msg:"出错:"+e});
}
})
}
}
function checkfinish(){
var day1=new Date($("#bksj_start").val());
var day2=new Date($("#bksj_end").val());
if($("#bksj_start").val()&&$("#bksj_end").val()!=""){
var z=(day2-day1)/86400000+"天";
$("#bkqx").val(z);
}
}
function doClear(){
$("#bkdxlx").combobox('setValue',"");
$("#bkdxhm").textbox('setValue',"");
$("#bklx").combobox('setValue',"");
$("#bkyj").val("");
$("#bkyq").val("");
$("#sqr_xm").val('');
$("#sqr_jh").val('');
$("#djsj").val('');
$("#bksj_start").val('');
$("#bksj_end").val('');
$("#bkqx").val("");
}
\ No newline at end of file
......@@ -24,13 +24,13 @@ function doClear(){
this.checked = false;
});
}
//{title:"手机号码",field:"sjhm",align:'center',width:'20%'},手机号码暂时去掉
var table_title =[
{title:"标识号",field:"objectValue",align:'center',width:'20%'},
{title:"标识号",field:"objectValue",align:'center',width:'30%'},
{title:"标识号类型",field:"objectTypeName",align:'center',width:'10%'},
{title:"姓名",field:"name",align:'center',width:'10%'},
{title:"证件类型",field:"zjlx",align:'center',width:'15%'},
{title:"证件号码",field:"zjhm",align:'center',width:'15%'},
{title:"手机号码",field:"sjhm",align:'center',width:'20%'},
{title:"证件类型",field:"zjlx",align:'center',width:'20%'},
{title:"证件号码",field:"zjhm",align:'center',width:'20%'},
{title:"操作",field:"cz",align:'center',width:'10%',formatter:function(val,row,index){
return getCzColumn(row);
}},
......
......@@ -25,18 +25,20 @@ function doClear(){
});
}
var table_title =[
{title:"类别参数",field:"objectValue",align:'center',width:'25%'},
{title:"类别代码",field:"objectType",align:'center',width:'15%'},
{title:"类别名称",field:"objectTypeName",align:'center',width:'15%'},
{title:"数量",field:"count",align:'center',width:'10%'},
{title:"登记时间",field:"djsj",align:'center',width:'25%'},
{title:"操作",field:"cz",align:'center',width:'10%',formatter:function(val,row,index){
{title:"标识号",field:"objectValue",align:'center',width:'10%'},
{title:"标识号类型",field:"objectTypeName",align:'center',width:'10%'},
{title:"伴随次数",field:"count",align:'center',width:'10%'},
{title:"姓名",field:"name",align:'center',width:'10%'},
{title:"证件类型",field:"zjlx",align:'center',width:'15%'},
{title:"证件号码",field:"zjhm",align:'center',width:'15%'},
{title:"入库时间",field:"djsj",align:'center',width:'15%'},
{title:"操作",field:"cz",align:'center',width:'15%',formatter:function(val,row,index){
return getCzColumn(row);
}},
];
function doQuery(){
$('#skgjbsjgzsTable').datagrid({
url: "/getTogetherTaskResultList",
url: "/getTogetherResultDetailList",
columns : [table_title],
queryParams:serializeObject($("form[name='skgjbsjgzsForm']")),
striped: true,
......@@ -73,61 +75,46 @@ function serializeObject(form){
}
function getCzColumn(row){
var str="<a href=\"javascript:;\" onclick=\"toSkgjbsjgzsDetail('"+row.taskId+"','"+row.objectType+"','"+row.objectValue+"');\" class=\"cz\"><span>结果显示</span></a>";
var str="<a href=\"javascript:;\" onclick=\"toZstp('"+row.xzzDzmc+"','"+row.sjhm+"','"+row.age+"','"+row.objectValue+"','"+row.objectTypeName+"','"+row.objectType+"','"+row.ryzpStr+"','"+row.name+"','"+row.birthday+"','"+row.zjlx+"','"+row.zjhm+"');\" class=\"cz\"><span>结果显示</span></a>";
return str;
}
function toSkgjbsjgzsDetail(taskId,objType,objValue){
var param = {
"imsi":objValue,
"yhCate":"00",
"projectName":"刑专智慧侦查脑图"
}
var index = layer.load(1, {
content: '加载中',
shade: [0.35,'#fff'],
success: function(layero) {
layero.find('.layui-layer-content').css({
'padding-top': '40px',
'width': '70px',
'background-position-x': '2px'
});
}
});
$.ajax({
type:"POST",
data:param,
url:"/queryTogetherTaskDetail",
success:function(result) {
layer.close(index);
if(result){
var data = result.data;
function toZstp(xzzDzmc,sjhm,age,objectValue,objectTypeName,objectType,ryzpStrs,name,birthday,zjlx,zjhm){
var cllxArr = ["6424","6422","6423","7888"];
var ryzpStr = "";
if(data.ryzp){
ryzpStr = "<img src=\"data:image/gif;base64," + data.ryzp + "\"/>";
if(ryzpStrs != "null" && ryzpStrs !=''){
ryzpStr = "<img src=\"data:image/gif;base64," + ryzpStrs + "\"/>";
}else {
ryzpStr = "<img src=\"/images/timg.jpg\" style = \"height:121px;width:100px;\"/>";
}
var name = data.name==null?"":data.name;
var age = data.age==null?"":data.age;
var zjhm = data.zjhm==null?"":data.zjhm;
var csrq = data.csrq==null?"":data.csrq;
var sjhm = data.sjhm==null?"":data.sjhm;
var xzzDzmc = data.xzzDzmc==null?"":data.xzzDzmc;
var objValue = objectValue== "null"?"":objectValue;
var objTypeName = objectTypeName=="null"?"":objectTypeName;
var zjlxx = zjlx=="null"?"":zjlx;
var zjhmm = zjhm=="null"?"":zjhm;
var agee = age=="null"?"":age;
var namee = name=="null"?"":name;
var birth = birthday=="null"?"":birthday;
var sj = sjhm=="null"?"":sjhm;
var xzz = xzzDzmc=="null"?"":xzzDzmc;
if(cllxArr.indexOf(objectType) > -1){
//车辆
$("#clRyzp").html(ryzpStr);
$("#cph").text(objValue);
$("#cllx").text(objTypeName);
$("#clZjlx").text(zjlxx);
$("#clZjhm").text(zjhmm);
openClxx();
}else {
//人员
$("#ryzp").html(ryzpStr);
$("#ryName").text(name);
$("#ryAge").text(age);
$("#rySfzh").text(zjhm);
$("#ryCsrq").text(csrq);
$("#ryDhhm").text(sjhm);
$("#ryName").text(namee);
$("#ryAge").text(agee);
$("#rySfzh").text(zjhmm);
$("#ryCsrq").text(birth);
$("#ryDhhm").text(sj);
$("#imsi").text(objValue);
$("#ryAddress").text(xzzDzmc);
$("#ryAddress").text(xzz);
openRyxx();
}
},
error:function () {
}
});
}
function openRyxx(){
$('#ryjgzs').dialog({
......
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S023',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S023',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S023',0);
COMMIT;
-------------------------------------------------------------------------------------------
--如果表存在 则先删除
drop TABLE XZXT.TB_ST_BKXX;
--创建布控信息表
CREATE TABLE XZXT.TB_ST_BKXX
(
XXZJBH varchar2(30 BYTE),
BKBSH varchar2(20),
BSHLXDM varchar2(10 BYTE),
BSHLXMC varchar2(50 BYTE),
BKDXHM varchar2(20 BYTE),
BKDXLX varchar2(10 BYTE),
BKDXLXMC varchar2(50 BYTE),
BKLX varchar2(10 BYTE),
BKYJ varchar2(2000 BYTE),
BKYQ varchar2(2000 BYTE),
ASJBH varchar2(50 BYTE),
BKR_SFZH varchar2(20 BYTE),
BKR_XM varchar2(50 BYTE),
BKR_JH varchar2(50 BYTE),
BKR_LXDH varchar2(15 BYTE),
BK_KSSJ DATE DEFAULT sysdate,
BKSJ_START DATE ,
BKSJ_END DATE,
SQR_SFZH varchar2(20 BYTE),
SQR_XM varchar2(50 BYTE),
SQR_JH varchar2(50 BYTE),
SQR_LXDH varchar2(15 BYTE),
BKZT varchar2(2),
DJSJ DATE DEFAULT sysdate
)TABLESPACE TBS_BIGDATA
......@@ -39,23 +45,31 @@ CREATE TABLE XZXT.TB_ST_BKXX
COMMENT ON table XZXT.TB_ST_BKXX is '布控信息表';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.XXZJBH IS '信息主键编号,主键';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKBSH IS '布控标识号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKDXHM IS '布控对象号码';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BSHLXDM IS '标识号类型代码';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKDXLX IS '布控对象类型';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BSHLXMC IS '标识号类型名称';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKDXLXMC IS '布控对象类型名称';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKLX IS '布控类型 轨迹布控和关联关系布控';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKYJ IS '布控依据';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKYQ IS '布控要求';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.ASJBH IS '案事件编号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKR_SFZH IS '布控人身份证号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.SQR_SFZH IS '申请人身份证号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.SQR_XM IS '申请人姓名';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.CBKR_XM IS '布控人姓名';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.SQR_JH IS '声请人警号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKR_JH IS '布控人警号';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.SQR_LXDH IS '布控人联系电话';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKR_LXDH IS '布控人联系电话';
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKSJ_START IS '布控时间_开始时间',
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BK_KSSJ IS '布控_开始时间',
COMMENT ON COLUMN XZXT.TB_ST_BKXX.BKSJ_END IS '布控时间_结束时间',
COMMENT ON COLUMN XZXT.TB_ST_BKXX.SPZT IS '布控状态,0正常,1停止';
......
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S024',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S024',0);
COMMIT;
-------------------------------------------------------------------------------------------
ALTER TABLE XZXT.TB_ST_TOGETHERRESULTDETAIL
DROP PRIMARY KEY CASCADE;
DROP TABLE XZXT.TB_ST_TOGETHERRESULTDETAIL CASCADE CONSTRAINTS;
CREATE TABLE XZXT.TB_ST_TOGETHERRESULTDETAIL
(
XXZJBH VARCHAR2(23 BYTE),
TASK_RESULT_ID VARCHAR2(100 BYTE),
OBJECT_TYPE VARCHAR2(10 BYTE),
OBJECT_TYPE_NAME VARCHAR2(100 BYTE),
OBJECT_VALUE VARCHAR2(50 BYTE),
BIRTHDAY VARCHAR2(50 BYTE),
NAME VARCHAR2(50 BYTE),
RYZP BLOB,
XZZDZMC VARCHAR2(100 BYTE),
CSDDZMC VARCHAR2(100 BYTE),
ZJLX VARCHAR2(50 BYTE),
ZJLX_CODE VARCHAR2(50 BYTE),
ZJHM VARCHAR2(50 BYTE),
SJHM VARCHAR2(50 BYTE),
AGE VARCHAR2(10 BYTE),
SEX VARCHAR2(10 BYTE),
DJSJ DATE DEFAULT sysdate
)
TABLESPACE TBS_BIGDATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
LOB (RYZP) STORE AS SECUREFILE
( TABLESPACE TBS_BIGDATA
ENABLE STORAGE IN ROW
CHUNK 8192
NOCACHE
INDEX (
TABLESPACE TBS_BIGDATA
STORAGE (
INITIAL 64K
NEXT 1
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
))
STORAGE (
INITIAL 104K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
)
NOCACHE
NOPARALLEL
MONITORING;
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.XXZJBH IS '主键编号';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.TASK_RESULT_ID IS '所属任务结果主键';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.OBJECT_TYPE IS '对象类型';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.OBJECT_TYPE_NAME IS '对象类型名称';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.OBJECT_VALUE IS '对象值';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.BIRTHDAY IS '出生日期';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.NAME IS '姓名';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.RYZP IS '人员照片';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.XZZDZMC IS '现住址地点名称';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.CSDDZMC IS '出生地地点名称';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.ZJLX IS '证件类型';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.ZJLX_CODE IS '证件类型编码';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.ZJHM IS '证件号码';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.SJHM IS '手机号码';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.AGE IS '年龄';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.SEX IS '性别';
COMMENT ON COLUMN XZXT.TB_ST_TOGETHERRESULTDETAIL.DJSJ IS '登记时间';
CREATE UNIQUE INDEX XZXT.PK_TOGETHERDETAIL_XXZJBH ON XZXT.TB_ST_TOGETHERRESULTDETAIL
(XXZJBH)
LOGGING
TABLESPACE TBS_BIGDATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
ALTER TABLE XZXT.TB_ST_TOGETHERRESULTDETAIL ADD (
CONSTRAINT PK_TOGETHERDETAIL_XXZJBH
PRIMARY KEY
(XXZJBH)
USING INDEX
TABLESPACE TBS_BIGDATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
));
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S024';
COMMIT;
\ No newline at end of file
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S025',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S025',0);
COMMIT;
-------------------------------------------------------------------------------------------
ALTER TABLE XZXT.REGIONALTASKRESULTDETAIL
ADD (DJSJ DATE DEFAULT SYSDATE);
COMMENT ON COLUMN XZXT.REGIONALTASKRESULTDETAIL.DJSJ IS '登记时间';
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S025';
COMMIT;
\ No newline at end of file
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S026',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S026',0);
COMMIT;
-------------------------------------------------------------------------------------------
-- Add/modify columns
alter table TB_ST_BKXX add BKQX VARCHAR2(100);
-- Add comments to the columns
comment on column TB_ST_BKXX.BKQX
is '布控期限';
alter table TB_ST_BKXX modify(XXZJBH varchar2(32));
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S026';
COMMIT;
\ No newline at end of file
\u624B\u673A\u53F7\u7801=001
\u624B\u673A\u53F7\u7801=001
\u624B\u673A\u53F7\u7801=001
QQ\u53F7\u7801=002
\u5FAE\u4FE1ID=003
\u5FAE\u4FE1\u53F7\u7801=009
\u8EAB\u4EFD\u8BC1\u53F7=004
\u8F66\u724C\u53F7=005
IMSI=006
......
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.atg.com/taglibs/json" prefix="json" %>
<!doctype html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<c:if test="${flag == 'bsh'}">
<title>标识号布控</title>
</c:if>
<c:if test="${flag == 'sssb'}">
<title>损失设备布控</title>
</c:if>
<link rel="icon" href="/images/bkxxInsertFavicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/style_bkxx.css">
<link rel="stylesheet" href="/css/append_bkxx.css">
<!--- 时间插件-->
<link rel="stylesheet" href="/common/datepicker/skin/WdatePicker.css">
<link rel="stylesheet" href="/common/datepicker/skin/default/datepicker.css">
<!--- 代码框-->
<link rel="stylesheet" href="/css/easyui.css">
<link rel="stylesheet" href="/css/icon.css">
<link rel="stylesheet" href="/css/base_initialize.css">
<style>
.cxtj table input.zdy-wdate{padding:0 !important;height:26px;margin-top:-5px;}
</style>
</head>
<body style="overflow: auto">
<header class="heade-box">
<c:if test="${flag == 'bsh'}">
<img src="/images/bshbk_title.png" class="header-title-img" alt="">
</c:if>
<c:if test="${flag == 'sssb'}">
<img src="/images/sssbbk_title.png" class="header-title-img" alt="">
</c:if>
</header>
<article class="main-cen-box">
<div class="cxtj">
<form name="wfqdzczlForm" id="form1" class="easyui-form" data-options="novalidate:true">
<fieldset>
<c:if test="${flag == 'bsh'}">
<legend>新增标识号布控信息</legend>
</c:if>
<c:if test="${flag == 'sssb'}">
<legend>新增损失设备布控信息 </legend>
</c:if>
<table>
<tbody>
<tr>
<td class="ar" width="13.3%"><span class="red">*</span>布控对象类型:</td>
<td width="20%">
<span class="textbox" style="border:none;">
<select name = "bkdxlx" id = "bkdxlx" class="easyui-combobox" style="height:26px;">
<option value=""></option>
<c:if test="${flag == 'bsh'}">
<option value="001">手机号码</option>
<option value="002">QQ号码</option>
<option value="003">微信号码</option>
<option value="004">身份证号</option>
<option value="005">车牌号</option>
<option value="009">微信ID</option>
</c:if>
<c:if test="${flag == 'sssb'}">
<option value="006">IMSI</option>
<option value="007">IMEI</option>
</c:if>
</select>
</span>
</td>
<td class="ar" width="13.3%"><span class="red">*</span>布控对象号码:</td>
<td width="20%">
<span class="textbox" style="border:none">
<input type="text" id = "bkdxhm" name="bkdxhm" class="easyui-textbox" style="height:26px;" data-options="required:true"/>
</span>
</td>
<td class="ar" width="13.3%">布控类型:</td>
<td width="20%">
<span class="textbox" style="border:none;">
<select name = "bklx" id = "bklx" class="easyui-combobox" style="height:26px;">
<option value=""></option>
<c:if test="${flag == 'bsh'}">
<option value="qgj">强轨迹布控</option>
<option value="glgx">关联关系布控</option>
</c:if>
<c:if test="${flag == 'sssb'}">
<option value="glgx">关联关系布控</option>
</c:if>
</select>
</span>
</td>
</tr>
<tr>
<td class="ar" width="13.3%"><span class="red">*</span>布控要求:</td>
<td colspan="5">
<textarea rows="5" id="bkyq" name="bkyq" width="100%" style="margin:5px 0;line-height: 20px;" placeholder="最多输2000个字符" class="easyui-validatebox textareabox" data-options="required:true,validType:['maxLength[2000]']"></textarea>
</td>
</tr>
<tr>
<td class="ar" width="13.3%"><span class="red">*</span>布控依据:</td>
<td colspan="5">
<textarea rows="5" id="bkyj" name="bkyj" width="100%" style="margin:5px 0;line-height: 20px;" placeholder="最多输2000个字符" class="easyui-validatebox textareabox" data-options="required:true,validType:['maxLength[2000]']"></textarea>
</td>
</tr>
<tr>
<td class="ar" width="13.3%"><span class="red">*</span>申请人_姓名:</td>
<td width="20%">
<span class="textbox" style="border:none">
<input type="text" name="sqr_xm" id = "sqr_xm" class="easyui-textbox" style="height:26px;" data-options="required:true">
</span>
</td>
<td class="ar" width="13.3%">申请人_警号:</td>
<td width="20%">
<span class="textbox">
<input type="text" name="sqr_jh" id = "sqr_jh">
</span>
</td>
<%-- <td class="ar" width="13.3%">登记时间:</td>
<td width="20%">
<span class="textbox">
<input id="djsj" name="djsj" class="Wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd'})"/>
</span>
</td>--%>
</tr>
<tr>
<td class="ar" width="13.3%"><span class="red">*</span>布控时间:</td>
<td width="20%">
<span class="textbox">
<input id="bksj_start" name="bksj_start" class="val easyui-validatebox Wdate zdy-wdate " data-options="required: true" type="text" onkeypress="return checkDateFmt();"
onFocus="WdatePicker({onpicked:checkfinish,dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'bksj_end\')}'})" />
</span>
</td>
<td class="ar" width="13.3%"><span class="red">*</span>至:</td>
<td width="20%">
<span class="textbox">
<input id="bksj_end" name="bksj_end" class="val easyui-validatebox Wdate zdy-wdate " data-options="required: true" type="text" onkeypress="return checkDateFmt();"
onFocus="WdatePicker({onpicked:checkfinish,dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'bksj_start\')}'})"/>
</span>
</td>
<td class="ar" width="13.3%">布控期限:</td>
<td width="20%">
<span class="textbox" style="border:none">
<input id="bkqx" readonly name="bkqx" type="text" style="height:26px;" />
</span>
</td>
</tr>
<tr>
<td colspan="6" style="text-align: center;height:50px;">
<a class="btn_a btn_search easyui-linkbutton" onclick="submit()" >保存 </a>
<a class="btn_a btn_empty easyui-linkbutton" onclick="doClear()">重置</a>
<input type="hidden" id="bkdxlxmc" name="bkdxlxmc" />
<input type="hidden" id="asjbh" name="asjbh" />
<input type="hidden" id="sqr_sfzh" name="sqr_sfzh" />
<input type="hidden" id="sqr_lxdh" name="sqr_lxdh" />
<input type="hidden" id="bkzt" name="bkzt" value="0"/>
</td>
</tr>
</tbody>
</table>
</fieldset>
</form>
</div>
</article>
<script src="/js/jquery.min.js" type="text/javascript"></script>
<!--- 代码框-->
<script type="text/javascript" src="/common/easyui-window/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/jquery.easyui.min.js"></script>
<%--
<script type="text/javascript" src="/common/easyui-window/js/function.js"></script>
--%>
<script type="text/javascript" src="/common/easyui-window/js/easyui-lang-zh_CN.js"></script>
<!--- 日期时间-->
<script type="text/javascript" src="/common/datepicker/WdatePicker.js"></script>
<script type="text/javascript" src="/common/datepicker/calendar.js"></script>
<script type="text/javascript" src="/js/bkxxInsert.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -13,7 +13,7 @@
<body>
<div id="nipic_search">
<div id="header">
<h5 class="h_title6"></h5>
<h5 class="h_title8"></h5>
</div>
<!--内容-->
<div id="content_box0" class="content_box">
......@@ -24,24 +24,40 @@
<tr>
<td class="td_r" style="width:10%;"> 案事件编号:</td>
<td style="width:20%;"><input name="asjbh" id="asjbh"/></td>
<td class="td_r" style="width:10%;"> 布控标识号:</td>
<td style="width:20%;"><input name="bkbsh" id="bkbsh"/></td>
<td class="td_r" style="width:10%;"> 标识号类别:</td>
<td style="width:20%;"><input name="bshlbdm" id="bshlbdm"/></td>
<td class="td_r" style="width:10%;"> 布控对象号码:</td>
<td style="width:20%;"><input name="bkdxhm" id="bkdxhm"/></td>
<td class="td_r" style="width:10%;"> 布控对象类型:</td>
<td style="width:20%;">
<select name = "bkdxlx" id = "bkdxlx" style="height:26px;">
<option value="">--请选择--</option>
<option value="001">手机号码</option>
<option value="002">QQ号码</option>
<option value="003">微信号码</option>
<option value="004">身份证号</option>
<option value="005">车牌号</option>
<option value="009">微信ID</option>
<option value="006">IMSI</option>
<option value="007">IMEI</option>
</select>
</td>
</tr>
<tr>
<td class="td_r" style="width:10%;"> 布控人姓名:</td>
<td style="width:20%;"><input name="bkrXm" id="bkrXm"/></td>
<td style="width:20%;"><input name="sqr_xm" id="sqr_xm"/></td>
<td class="td_r" style="width:15%;"> 布控人身份证号:</td>
<td style="width:20%;"><input name="bkrSfzh" id="bkrSfzh"/></td>
<td style="width:20%;"><input name="sqr_sfzh" id="sqr_sfzh"/></td>
<td class="td_r" style="width:10%;"> 布控人警号:</td>
<td style="width:20%;"><input name="bkrJh" id="bkrJh"/></td>
<td style="width:20%;"><input name="sqr_jh" id="sqr_jh"/></td>
</tr>
<tr>
<td class="td_r" style="width:10%;"> 布控状态:</td>
<td colspan="5" class="radil_td">
<input type="radio" name="bkzt" value="0" class="radio_inp"/>布控中
<input type="radio" name="bkzt" value="1" class="radio_inp"/>停止
<input type="radio" name="bkzt" value="1" class="radio_inp"/>撤销
</td>
</tr>
<tr>
......@@ -74,39 +90,50 @@
function clear(){
$("#asjbh").val('');
$("#bkbsh").val('');
$("#bshlbdm").val('');
$("#bkrXm").val('');
$("#bkrSfzh").val('');
$("#bkrJh").val('');
$("#bkzt").datebox("setValue","");
$("#bkdxhm").val('');
$("#bkdxlx").val('');
$("#sqr_xm").val('');
$("#sqr_sfzh").val('');
$("#sqr_jh").val('');
$('input:radio[name="bkzt"]').removeAttr('checked');
}
function queryBkxxList(){
var param= {
"asjbh":$("#asjbh").val().trim(),
"bkbsh":$("#bkbsh").val().trim(),
"bshlbdm":$("#bshlbdm").val().trim(),
"bkrXm":$("#bkrXm").val().trim(),
"bkrSfzh":$("#bkrSfzh").val().trim(),
"bkrJh":$("#bkrJh").val().trim(),
"bkzt":$("#bkzt").datebox("getValue"),
"bkdxhm":$("#bkdxhm").val().trim(),
"bkdxlx":$("#bkdxlx").val().trim(),
"sqr_xm":$("#sqr_xm").val().trim(),
"sqr_sfzh":$("#sqr_sfzh").val().trim(),
"sqr_jh":$("#sqr_jh").val().trim(),
"bkzt":$("input[name='bkzt']:checked").val(),
"yhCate":"00",
"projectName":"刑专智慧侦查脑图"
};
var table_title = [
{title:"案事件编号",field:"asjbh",align:'center',width:'15%'},
{title:"布控标识号",field:"bkbsh",align:'center',width:'12%'},
{title:"标识号类别",field:"bshlbdm",align:'center',width:'12%'},
{title:"已布控时间",field:"ybksj",align:'center',width:'12%'},
{title:"布控人姓名",field:"bkrXm",align:'center',width:'10%'},
{title:"布控人身份证号",field:"bkrSfzh",align:'center',width:'15%'},
{title:"布控人警号",field:"bkrJh",align:'center',width:'8%'},
{title:"布控状态",field:"bkzt",align:'center',width:'8%'},
{title:"布控时间",field:"bksj",align:'center',width:'15%'},
{title:"案事件编号",field:"asjbh",align:'center',width:'12%'},
{title:"布控对象号码",field:"bkdxhm",align:'center',width:'10%'},
{title:"布控对象类型",field:"bkdxlxmc",align:'center',width:'8%'},
{title:"布控人姓名",field:"sqr_xm",align:'center',width:'10%'},
{title:"布控人身份证号",field:"sqr_sfzh",align:'center',width:'15%'},
{title:"布控人警号",field:"sqr_jh",align:'center',width:'7%'},
{title:"布控开始时间",field:"bksj_start",align:'center',width:'9%'},
{title:"布控结束时间",field:"bksj_end",align:'center',width:'9%'},
{title:"布控状态",field:"bkztmc",align:'center',width:'10%'},
{title : '操作', field : 'opt', align : 'center',width:'10%', formatter :
function(value, row, index) {
var str = "";
if(row.bkzt==0){
str += '<span class="icon_chakan"><a href="javascript:ck(\'' + row.xxzjbh +'\');" title="撤控">撤控</a></span>';
}
return str;
}
}
];
$("#recordLogTable").datagrid({
url: "/queryTrackList",
url: "/queryBkxxList",
columns : [table_title],
queryParams:param,
striped: true,
......@@ -123,6 +150,35 @@
}
});
}
function ck(xxzjbh){ //撤控操作
$.messager.confirm("操作提示", "您确定要撤控吗?", function (data) {
if (data) {
$.ajax({
url : "updateBkztByXxzjbh",
data:{xxzjbh:xxzjbh,bkzt:1},
success:function(data){
if(data=="success"){
$.messager.alert({
title:'提示信息' ,
msg:'撤控成功!',
fn:function(){
window.location.reload();
}
});
}
},
error:function(e) {
$.messager.show({title:'提示',msg:"出错:"+e});
}
})
}
});
}
</script>
</body>
</body>
</html>
\ No newline at end of file
......@@ -21,7 +21,10 @@
<style>
.float-div{float: left;margin: 15px 0 25px 0;width:100%;}
.xx-box{width:100%;height:240px;margin:0 auto;background: #fff;position: relative;}
.result{display: table;width:100%;}
.box-s {width: 99%;box-shadow: 3px 6px 6px #c7c4c4;}
.header-title-img {left: 19px;}
.heade-box {background-position: inherit;}
.result{width:99%;}
.lf-img{display: inline-block;width:36%;height:100%;float: left;}
.lf-img>img{width:135px;margin:0 10px;position: absolute;top:50%;margin-top:-83px;margin-left:25px;}
.rg-xx{display: inline-block;width:61%;position:relative;z-index:1000000;border: 1px solid #ececec;border-radius: 5px;padding-left:10px;}
......@@ -107,7 +110,7 @@
<legend class="cursor" onclick="show()" flag="false">
查询条件<i class="fa fa-angle-double-down down"></i><i class="fa fa-angle-double-up up" style="display: none"></i>
</legend>
<input type="hidden" id = "yhCate" name="yhCate" value="00" />2
<input type="hidden" id = "yhCate" name="yhCate" value="00" />
<input type="hidden" id = "projectName" name="projectName" value="刑专智慧侦查脑图" />
<table style="display: none" class="cxtj-table">
<tbody>
......@@ -116,7 +119,7 @@
<td colspan="6" style="height:20px;"></td>
</tr>
<tr>
<td class="ar" width="13.3%">类别参数</td>
<td class="ar" width="13.3%">标识号</td>
<td style="width:20%;">
<span class="textbox">
<input name="objectValue" type="text" id="objectValue"/>
......
......@@ -62,17 +62,17 @@ function queryTasks(type){
fwbsh = $("#fwbsh").val();
}
var table_title = [
{title:"任务编号",field:"taskId",align:'center',width:'15%',formatter : function(val,row,index){
{title:"任务编号",field:"taskId",align:'center',width:'20%',formatter : function(val,row,index){
return "<a onclick=\"showTaskResults('"+row.taskId+"')\" title='点击查看任务推荐结果'>"+row.taskId+"</a>";
}
},
{title:"案件编号",field:"taskCaseId",align:'center',width:'20%'},
{title:"服务标识号",field:"objectValue",align:'center',width:'15%'},
{title:"任务名称",field:"taskName",align:'center',width:'15%'},
{title:"案件编号",field:"taskCaseId",align:'center',width:'15%'},
{title:"服务标识号",field:"objectValue",align:'center',width:'10%'},
{title:"任务名称",field:"taskName",align:'center',width:'20%'},
{title:"伴随开始时间",field:"startTime",align:'center',width:'10%'},
{title:"伴随结束时间",field:"endTime",align:'center',width:'10%'},
{title:"任务状态",field:"state",align:'center',width:'5%'},
{title:"登记时间",field:"djsj",align:'center',width:'8%'}
{title:"任务状态",field:"state",align:'center',width:'6%'},
{title:"登记时间",field:"djsj",align:'center',width:'10%'}
];
var param= {
"asjbh":asjbh,
......@@ -99,7 +99,7 @@ function queryTasks(type){
});
}
function showTaskResults(taskId){
var url="/toShowSkgjbsjgJsp?taskId="+taskId;
var url="/toShowSkgjbsjgJsp?taskId="+taskId+"&yhCate=00&projectName=刑专智慧侦查脑图";
window.open(url);
}
</script>
......
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.atg.com/taglibs/json" prefix="json" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!doctype html>
<html>
<head>
......@@ -15,6 +16,8 @@
<!--内容-->
<div id="content_box0" class="content_box">
<form id="sendParamForm" action="/sendRegionalAnalysisTask" method="post">
<input type="hidden" id="yhCate" name="yhCate" value="00"/>
<input type="hidden" id="projectName" name="projectName" value="智慧侦查脑图"/>
<!--查询条件-->
<div class="condition">
<h6 class="cx_t">查询条件</h6>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment