• 卡口扩展信息


      1 <%@ page language="java" contentType="text/html; charset=UTF-8"
      2     pageEncoding="UTF-8"%>
      3 <%@ taglib prefix="sec"
      4     uri="http://www.springframework.org/security/tags"%>
      5 
      6 <!DOCTYPE html>
      7 <%
      8     String path = request.getContextPath();
      9     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
     10             + path + "/";
     11 %>
     12 <html>
     13 <head>
     14 <meta charset="utf-8">
     15 <meta name="viewport" content="width=device-width, initial-scale=1.0">
     16 
     17 <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
     18 <link href="<%=basePath%>css/bootstrap.min14ed.css?v=3.3.6"
     19     rel="stylesheet" />
     20 <link href="<%=basePath%>css/font-awesome.min93e3.css?v=4.4.0"
     21     rel="stylesheet" />
     22 <link
     23     href="<%=basePath%>css/plugins/bootstrap-table/bootstrap-table.min.css"
     24     rel="stylesheet" />
     25 <link href="<%=basePath%>css/animate.min.css" rel="stylesheet" />
     26 <link href="<%=basePath%>css/style.min863f.css?v=4.1.0" rel="stylesheet" />
     27 <link
     28     href="<%=basePath%>vendors/ion.rangeSlider/css/ion.rangeSlider.css"
     29     rel="stylesheet">
     30 <link
     31     href="<%=basePath%>vendors/ion.rangeSlider/css/ion.rangeSlider.skinFlat.css"
     32     rel="stylesheet">
     33 <link
     34     href="<%=basePath%>css/layer/lay/layui.css"
     35     rel="stylesheet">
     36 <link href="<%=basePath%>css/layer/lay/picviewer_mode.css" rel="stylesheet">
     37 
     38 
     39 <!--这里是多图片放大list效果结束-->
     40 </head>
     41 <body class="gray-bg">
     42     <div class="wrapper wrapper-content" id="contentQueryId"
     43         style="padding: 10px; over-fllow: hidden;">
     44         <div class="row">
     45             <div class="col-xs-12">
     46                 <div class="ibox float-e-margins">
     47                     <div class="ibox-title">
     48                         <h5>扩展信息检索</h5>
     49                     </div>
     50                     <div class="ibox-content">
     51                         <form id="uploadData">
     52                             <div class="col-xs-10">
     53                                 <div class="col-xs-12 form-horizontal">
     54                                     <div class="row">
     55                                         <div class="col-xs-4">
     56                                             <div class="form-group form-group_i">
     57                                                 <label class="col-xs-4 control-label">设备:</label>
     58 
     59                                                 <div class="col-xs-8">
     60                                                     <input type="text" readonly="readonly" class="form-control"
     61                                                         style="background-color: #FFFFFF; cursor: pointer;  200px"
     62                                                         name="facilityName" id="facilityName"
     63                                                         ondblclick="openFacilityWin()">
     64                                                     <input type="hidden" class="form-control" name="facilityID"
     65                                                         style="visibility: hidden;" id="facilityID">
     66                                                 </div>
     67                                             </div>
     68                                             <div class="hr-line-dashed"></div>
     69                                         </div>
     70                                         <div class="col-xs-4">
     71                                             <div class="form-group form-group_i">
     72                                                 <label class="col-xs-4 control-label">开始时间:</label>
     73                                                 <div class="col-xs-8">
     74                                                     <input class="laydate-icon" required
     75                                                         readonly="readonly" name="beginTime" id="beginTime">
     76                                                 </div>
     77                                             </div>
     78                                             <div class="hr-line-dashed"></div>
     79                                         </div>
     80                                         <div class="col-xs-4">
     81                                             <div class="form-group form-group_i">
     82                                                 <label class="col-xs-4 control-label">结束时间:</label>
     83 
     84                                                 <div class="col-xs-8">
     85                                                     <input class="laydate-icon" required
     86                                                         readonly="readonly" name="endTime" id="endTime">
     87                                                 </div>
     88                                             </div>
     89                                             <div class="hr-line-dashed"></div>
     90                                         </div>
     91                                     </div>
     92                                     <div class="row">
     93                                         <div class="col-xs-4 form-horizontal">
     94                                             <div class="form-group form-group_i">
     95                                                 <label class="col-xs-4 control-label">检索类型:</label>
     96                                                 <div class="col-xs-8">
     97                                                     <select class="form-control" style=" 200px"
     98                                                         name="svacinfoRetrieveType" id="svacinfoRetrieveType"
     99                                                         zx-type="select" zx-dd="svacinfoRetrieveType" zx-dv="-1"
    100                                                         zx-nt="请选择" zx-nn="true" onchange="retrieveType()">
    101                                                     </select>
    102                                                 </div>
    103                                             </div>
    104                                             <div class="hr-line-dashed"></div>
    105                                         </div>
    106                                         <div class="col-xs-4 form-horizontal">
    107                                             <div class="form-group form-group_i">
    108                                                 <label class="col-xs-4 control-label"></label>
    109 
    110                                                 <div class="col-xs-8">
    111                                                     <input type="text" class="form-control" name="m3u8UrlStop" id="m3u8UrlStop"
    112                                                         style="visibility: hidden;">
    113                                                 </div>
    114                                             </div>
    115                                             <div class="hr-line-dashed"></div>
    116                                         </div>
    117                                         <div class="col-xs-4 form-horizontal">
    118                                             <div class="form-group form-group_i">
    119                                                 <label class="col-xs-4 control-label"></label>
    120 
    121                                                 <div class="col-xs-8">
    122                                                     <input type="text" class="form-control" id="treeID" name="treeID"
    123                                                         style="visibility: hidden;">
    124                                                 </div>
    125                                             </div>
    126                                             <div class="hr-line-dashed"></div>
    127                                         </div>
    128                                     </div>
    129                                     <div class="row">
    130                                         <div class="col-xs-4" id="RetrieveContent_div">
    131                                             <div class="form-group form-group_i">
    132                                                 <label class="col-xs-4 control-label">检索内容:</label>
    133                                                 <div class="col-xs-8">
    134                                                     <input type="text" class="form-control"
    135                                                         style=" 200px" name="RetrieveContent"
    136                                                         id="RetrieveContent">
    137                                                 </div>
    138                                             </div>
    139                                             <div class="hr-line-dashed"></div>
    140                                         </div>
    141 
    142                                         <div class="col-xs-4" id="BankCardNumber_div"
    143                                             style="display: none;">
    144                                             <div class="form-group form-group_i">
    145                                                 <label class="col-xs-4 control-label">银行卡号:</label>
    146                                                 <div class="col-xs-8">
    147                                                     <input type="text" class="form-control"
    148                                                         style=" 200px" name="BankCardNumber"
    149                                                         id="BankCardNumber">
    150                                                 </div>
    151                                             </div>
    152                                             <div class="hr-line-dashed"></div>
    153                                         </div>
    154                                         <div class="col-xs-4" id="IdNumber_div">
    155                                             <div class="form-group form-group_i">
    156                                                 <label class="col-xs-4 control-label">身份证号:</label>
    157                                                 <div class="col-xs-8">
    158                                                     <input type="text" class="form-control"
    159                                                         style=" 200px" name="IdNumber" id="IdNumber">
    160                                                 </div>
    161                                             </div>
    162                                             <div class="hr-line-dashed"></div>
    163                                         </div>
    164 
    165                                         <div class="col-xs-4" id="MobileEquipmentNumber_div"
    166                                             style="display: none;">
    167                                             <div class="form-group form-group_i">
    168                                                 <label class="col-xs-4 control-label">设备ID:</label>
    169                                                 <div class="col-xs-8">
    170                                                     <input type="text" class="form-control"
    171                                                         style=" 200px" name="MobileEquipmentNumber"
    172                                                         id="MobileEquipmentNumber">
    173                                                 </div>
    174                                             </div>
    175                                             <div class="hr-line-dashed"></div>
    176                                         </div>
    177                                         <div class="col-xs-4" id="MobileIMSINumber_div"
    178                                             style="display: none;">
    179                                             <div class="form-group form-group_i">
    180                                                 <label class="col-xs-4 control-label">IMSI号:</label>
    181                                                 <div class="col-xs-8">
    182                                                     <input type="text" class="form-control"
    183                                                         style=" 200px" name="MobileIMSINumber"
    184                                                         id="MobileIMSINumber">
    185                                                 </div>
    186                                             </div>
    187                                             <div class="hr-line-dashed"></div>
    188                                         </div>
    189                                         <div class="col-xs-4" id="IMEINumber_div"
    190                                             style="display: none;">
    191                                             <div class="form-group form-group_i">
    192                                                 <label class="col-xs-4 control-label">IMEI号:</label>
    193                                                 <div class="col-xs-8">
    194                                                     <input type="text" class="form-control"
    195                                                         style=" 200px" name="IMEINumber" id="IMEINumber">
    196                                                 </div>
    197                                             </div>
    198                                             <div class="hr-line-dashed"></div>
    199                                         </div>
    200                                     </div>
    201                                     <div class="row">
    202                                         <div class="col-xs-4" id="MobilePhoneNumber_div"
    203                                             style="display: none;">
    204                                             <div class="form-group form-group_i">
    205                                                 <label class="col-xs-4 control-label">手机号:</label>
    206                                                 <div class="col-xs-8">
    207                                                     <input type="text" class="form-control"
    208                                                         style=" 200px" name="MobilePhoneNumber"
    209                                                         id="MobilePhoneNumber">
    210                                                 </div>
    211                                             </div>
    212                                             <div class="hr-line-dashed"></div>
    213                                         </div>
    214                                         <div class="col-xs-4" id="MACAddress_div"
    215                                             style="display: none;">
    216                                             <div class="form-group form-group_i">
    217                                                 <label class="col-xs-4 control-label">MAC地址:</label>
    218                                                 <div class="col-xs-8">
    219                                                     <input type="text" class="form-control"
    220                                                         style=" 200px" name="MACAddress" id="MACAddress">
    221                                                 </div>
    222                                             </div>
    223                                             <div class="hr-line-dashed"></div>
    224                                         </div>
    225                                         <div class="col-xs-4" id="OtherInformation_div"
    226                                             style="display: none;">
    227                                             <div class="form-group form-group_i">
    228                                                 <label class="col-xs-4 control-label">其他信息:</label>
    229                                                 <div class="col-xs-8">
    230                                                     <input type="text" class="form-control"
    231                                                         style=" 200px" name="OtherInformation"
    232                                                         id="OtherInformation">
    233                                                 </div>
    234                                             </div>
    235                                             <div class="hr-line-dashed"></div>
    236                                         </div>
    237 
    238                                         <div class="col-xs-4" id="alarmTypes_div"
    239                                             style="display: none;">
    240                                             <div class="form-group form-group_i">
    241                                                 <label class="col-xs-4 control-label">检索内容:</label>
    242                                                 <div class="col-xs-8">
    243                                                     <select class="form-control" style=" 200px"
    244                                                         name="alarmTypes" id="alarmTypes" zx-type="select"
    245                                                         zx-dd="alarmTypes" zx-dv="-1" zx-nt="-" zx-nn="true">
    246                                                     </select>
    247                                                 </div>
    248                                             </div>
    249                                             <div class="hr-line-dashed"></div>
    250                                         </div>
    251                                     </div>
    252                                 </div>
    253                             </div>
    254                         </form>
    255                         <div class="col-xs-2">
    256                             <form method="get" class="form-horizontal">
    257                                 <div class="form-group">
    258                                     <div class="col-xs-4 col-xs-offset-2"
    259                                         style="top: 62px; float: right; margin-right: 105px;">
    260                                         <div class="user-button">
    261                                             <div class="row">
    262                                                 <div class="col-xs-12"
    263                                                     style=" 120px; height: 100px; display: block;">
    264                                                     <button id="btnQuery" type="button" onclick="btnQueryClick()"
    265                                                         class="btn btn-primary btn-xs btn-block">
    266                                                         <i></i> 查&nbsp;&nbsp;询
    267                                                     </button>
    268                                                 </div>
    269                                             </div>
    270                                         </div>
    271                                     </div>
    272                                 </div>
    273                             </form>
    274                         </div>
    275                         <div style="clear: both"></div>
    276                     </div>
    277                 </div>
    278             </div>
    279         </div>
    280 
    281 
    282         <div class="row">
    283             <div class="col-xs-12" id="contestId">
    284                 <div class="ibox float-e-margins">
    285                     <div class="ibox-title">
    286                         <h5>查询结果</h5>
    287                     </div>
    288                     <div>
    289                         <div class="ibox-content" style="height: 100%;">
    290                             <div class="example-wrap" id="videoTable">
    291                                 <div id="pictureArea">
    292                                     <!-- 流式展现 -->
    293                                     <ul class="flow-default" id="pictureFlow"></ul>
    294                                     <!-- End Example Events -->
    295                                 </div>
    296                             </div>
    297                         </div>
    298                     </div>
    299                 </div>
    300             </div>
    301         </div>
    302     </div>
    303 </body>
    304 <script src="<%=basePath%>js/jquery.min.js?v=2.1.4"></script>
    305     <script src="<%=basePath%>js/jquery-ui-1.10.4.min.js"></script>
    306     <script src="<%=basePath%>js/jquery.form.js"></script>
    307     <script src="<%=basePath%>js/bootstrap.min.js?v=3.3.6"></script>
    308     <script
    309         src="<%=basePath%>js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
    310     <script
    311         src="<%=basePath%>js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
    312     <script
    313         src="<%=basePath%>js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
    314     <script src="<%=basePath%>js/plugins/layer/layer.js"></script>
    315     <script src="<%=basePath%>js/plugins/layer/laydate/laydate.js"></script>
    316     <script
    317         src="<%=basePath%>vendors/ion.rangeSlider/js/ion.rangeSlider.min.js"></script>
    318     <script
    319         src="<%=basePath%>vendors/zx-ui-framework/zx-component.js"></script>
    320     <script src="<%=basePath%>vendors/cloud-zoom/cloud-zoom.1.0.2.js"></script>
    321     <script src="<%=basePath%>js/TimeObjectUtil.js"></script>
    322     <script src="<%=basePath%>js/common.js"></script>
    323     <script src="<%=basePath%>js/dd.js"></script>
    324     <script src="<%=basePath%>js/plugins/ztree/jquery.ztree.core.js"
    325         type="text/javascript"></script>
    326     <script
    327         src="<%=basePath%>js/plugins/ztree/jquery.ztree.excheck.js"
    328         type="text/javascript"></script>
    329     <script src="<%=basePath%>modules/svacinfo/js/svacinfo_query.js"></script>
    330     <script src="<%=basePath%>js/plugins/layer/layui.js"></script>
    331     <script src="<%=basePath%>js/plugins/layer/lay/modules/flow.js"></script>
    332     <script type="text/javascript"> 
    333         var basePath = "<%=basePath%>"; 
    334     </script> 
    335 </html>


      1 var limit = 12;//每页显示多少条数据
      2 
      3 $(document).ready(function() {
      4     zx.parse();
      5     initDate();
      6     initLayout();
      7 });
      8 var facilityWinName;
      9 var facilityWinID;
     10 
     11 /**
     12  * 日期初始化
     13  */
     14 function initDate(){
     15     var start = {
     16         elem : "#beginTime",
     17         format : "YYYY-MM-DD hh:mm:ss",
     18         min : "1900-01-01 23:59:59",
     19         max : "2099-12-30 23:59:59",
     20         istime : true,
     21         istoday : true,
     22         choose : function(datas) {
     23             end.min = datas;
     24             end.start = datas
     25         }
     26     };
     27     
     28     var end = {
     29         elem : "#endTime",
     30         format : "YYYY-MM-DD hh:mm:ss",
     31         min : laydate.now() ,
     32         max : "2099-12-30 23:59:59",
     33         istime : true,
     34         istoday : false,
     35         choose : function(datas) {
     36             start.max = datas
     37         }
     38     };
     39     laydate(start);
     40     laydate(end);
     41     $('#beginTime').val(laydate.now(0, 'YYYY-MM-DD')+" 00:00:00");
     42     $('#endTime').val(laydate.now(0, 'YYYY-MM-DD')+" 23:59:59");
     43 }
     44 
     45 /**
     46  * 初始化页面
     47  * */
     48 function initLayout() {
     49     facilityWinName = $('#facilityName');
     50     facilityWinID = $('#facilityID');
     51     treeWinID = $('#treeID');
     52 }
     53 
     54 
     55 
     56 function openFacilityWin(){
     57         var tl = facilityWinName.val();
     58         if(tl!='' && tl!=null){
     59             if(tl.substr(tl.length-1,1)!=';'){
     60                 facilityWinName.val(tl+';');
     61             }
     62         }
     63         var t2 = facilityWinID.val();
     64         if(t2!='' && t2!=null){
     65             if(t2.substr(t2.length-1,1)!=';'){
     66                 facilityWinID.val(t2+';');
     67             }
     68         }
     69         var t3 = treeWinID.val();
     70         if(t3!='' && t3!=null){
     71             if(t3.substr(t3.length-1,1)!=';'){
     72                 treeWinID.val(t3+';');
     73             }
     74         }
     75         layer.open({
     76             type : 2,
     77             area : [ '45%', '99%' ],
     78             fixed : true, //不固定
     79             maxmin : false,
     80             title:'请选择设备',
     81             content : [ 'svacinfoDeviceTree.do', 'yes' ] //iframe的url,no代表不显示滚动条
     82         });
     83 }
     84 
     85 function retrieveType(){
     86     clean();
     87     var svacinfoRetrieveType = $("#svacinfoRetrieveType").val();
     88     
     89     if(svacinfoRetrieveType == 0){
     90         $("#RetrieveContent_div,#IdNumber_div").attr("style","display:block;");
     91     }
     92     if(svacinfoRetrieveType == 2){
     93         $("#RetrieveContent_div").attr("style","display:block;");
     94     }
     95     if(svacinfoRetrieveType == 16){
     96         $("#BankCardNumber_div,#IdNumber_div").attr("style","display:block;");
     97     }
     98     if(svacinfoRetrieveType == 17){
     99         $("#MobileEquipmentNumber_div,#MobileIMSINumber_div,#IMEINumber_div,#MobilePhoneNumber_div,#MACAddress_div,#OtherInformation_div").attr("style","display:block;");
    100     }
    101     if(svacinfoRetrieveType == 4){
    102         //
    103     }
    104     if(svacinfoRetrieveType == 6){
    105         $("#alarmTypes_div option:first").prop("selected", 'selected'); 
    106         $("#alarmTypes_div").attr("style","display:block;");
    107     }
    108     if(svacinfoRetrieveType == 7){
    109         $("#RetrieveContent_div").attr("style","display:block;");
    110     }
    111 }
    112 function clean(){
    113     $("#RetrieveContent_div,#BankCardNumber_div,#IdNumber_div,#MobileEquipmentNumber_div,#MobileIMSINumber_div,#IMEINumber_div,#MobilePhoneNumber_div,#MACAddress_div,#OtherInformation_div,#alarmTypes_div").attr("style","display:none;");
    114     $("#RetrieveContent_div input,#BankCardNumber_div input,#IdNumber_div input,#MobileEquipmentNumber_div input,#MobileIMSINumber_div input,#IMEINumber_div input,#MobilePhoneNumber_div input,#MACAddress_div input,#OtherInformation_div input,#alarmTypes_div input").val("");
    115 }
    116 
    117 //点击查询
    118 function btnQueryClick(){
    119     var beginTime = $("#beginTime").val();
    120     var endTime = $("#endTime").val();
    121     var facilityName = $("#facilityName").val();
    122     if(facilityName==""||facilityName==null){
    123         layer.alert("设备不能为空!");
    124         return;
    125     }
    126     if(beginTime==""||beginTime==null){
    127         layer.alert("开始时间不能为空!");
    128         return;
    129     }else if(endTime==""||endTime==null){
    130         layer.alert("结束时间不能为空!");
    131         return;
    132     }else{
    133         var begintime_ms = Date.parse(new Date(beginTime.replace(/-/g, "/")));//begintime 为开始时间
    134         var endtime_ms = Date.parse(new Date(endTime.replace(/-/g, "/")));   // endtime 为结束时间
    135         var time_ms=endtime_ms-begintime_ms;  //时间差的毫秒数
    136         var days=Math.floor(time_ms/(24*3600*1000));
    137         if(days>30){
    138             layer.alert("时间间隔不能超过30天!");
    139             return;
    140         }
    141     }
    142     searchList();
    143 }
    144 
    145 //打开视频回放弹窗
    146 function openVideoPlaybackWin(obj){
    147     var m3u8UrlStop;
    148     var cameraId = obj.cameraId;
    149     var videotapeStartTime = obj.videotapeStartTime;
    150     var videotapeEndTime = obj.videotapeEndTime;
    151     var url = "videoPlaybackIndex.do?cameraId="+cameraId+"&videotapeStartTime="+videotapeStartTime+"&videotapeEndTime="+videotapeEndTime;
    152     var urlEn = encodeURI(url);
    153     var VideoPlayId=layer.open({
    154         type : 2,
    155         area : [ '85%', '98%' ],
    156         fixed : true, //不固定
    157         maxmin : false,
    158         title:'视频回放',
    159         content : [ urlEn, 'yes' ]
    160         ,end: function () {
    161              m3u8UrlStop = $("#m3u8UrlStop").val();
    162              $.ajax({
    163                  url : m3u8UrlStop,
    164                  dataType : "json",
    165                  success : function(data){
    166                      if(data.ResponseStatus.StatusCode == "0"){
    167                          console.log("视频停止成功!");
    168                      }
    169                  }
    170              });
    171         }
    172     });
    173 }
    174 //查询功能
    175 function searchList(){
    176       var msg = layer.msg('努力中加载中...', {icon: 16,shade: [0.5, '#f5f5f5'],scrollbar: false,offset: '0px',time: 0});
    177       $('#videoTable').empty();
    178       var beginTime = $('#beginTime').val();
    179       var endTime = $('#endTime').val();
    180       var cameraId= $('#facilityID').val();
    181       var type = $('#svacinfoRetrieveType').val()
    182       
    183       layui.use('flow', function(){
    184       var $ = layui.jquery;  
    185       var flow = layui.flow;
    186       flow.load({
    187         elem: '#videoTable',  
    188         done: function(page, next){  
    189             var offset = (page - 1) * limit;
    190               var lis = [];
    191         var svacExtReq = {};
    192         if(type == 17){
    193             svacExtReq.param1 = $('#MobileEquipmentNumber').val();
    194             svacExtReq.param2 = $('#MobileIMSINumber').val();
    195             svacExtReq.param4 = $('#IMEINumber').val();
    196             svacExtReq.param5 = $('#MobilePhoneNumber').val();
    197             svacExtReq.param8 = $('#MACAddress').val();
    198             svacExtReq.param9 = $('#OtherInformation').val();
    199         }else if(type == 16){
    200             svacExtReq.param2 = $('#BankCardNumber').val();
    201             svacExtReq.param4 = $('#IdNumber').val();
    202         }else if(type == 0){//人员
    203             svacExtReq.param2 = $('#RetrieveContent').val();
    204             svacExtReq.param1 = $('#IdNumber').val();
    205         }else if(type == 2){//车辆
    206             svacExtReq.param2 = $('#RetrieveContent').val();
    207         }
    208         
    209         svacExtReq.startTime = beginTime;
    210         svacExtReq.endTime = endTime;
    211         svacExtReq.cameraId = cameraId;
    212         svacExtReq.type = type;
    213         svacExtReq.limit = limit;
    214         svacExtReq.offset = offset;
    215         svacExtReq.isPicUrl = 1;
    216         $.ajax({
    217                 url : "querySvac",
    218                 contentType : "application/json",
    219                 type : "post",
    220                 data :JSON.stringify(svacExtReq),
    221                 dataType : 'json',
    222                 success : function(result) {
    223                     var lis = [];
    224                     var htmlText = '';
    225                     
    226                     if (result.result.code != '0') {
    227                         layer.alert(result.result.msg);
    228                         next(lis.join(''), false);
    229                         return;
    230                     }
    231                     if (result.rows.length == 0){
    232                         next(lis.join(''), false);
    233                         return;
    234                     }
    235                     var c = 0;
    236                     var imgerror = "this.src='img/thumbnail.jpg'";
    237                     var datas = result.rows;
    238                     var evt = "";
    239                     var en = "";
    240                     for(var i = 0; i < datas.length; i++){
    241                         c = c + 1;
    242                         if (c == 1) {
    243                             htmlText = htmlText + '<div class="row">';
    244                         }
    245                         en = datas[i];
    246                         obj = JSON.stringify(en).replace(/"/g,"'");
    247                         htmlText += '    <!--图片展示组-->';
    248                         htmlText += '    <div class="col-xs-3" id="container">';
    249                         htmlText += '        <div class="file-box" style="float: none; 100%;margin: 0px auto;">';
    250                         htmlText += '            <div class="file">';
    251                         htmlText += '                <span class="corner"></span>';
    252                         htmlText += '                    <a href="javascript:openVideoPlaybackWin('+obj+')">';
    253                         htmlText += '                        <div class="image" align="center">';
    254                         htmlText += '                             <img onerror="'+imgerror+'" src="'+datas[i].picUrl+'">';
    255                         htmlText += '                         </div>';
    256                         htmlText += '                     </a>';
    257                         htmlText += '                     <div class="file-name" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis">';
    258                         if(type == 17){//手机
    259                             htmlText += '                         <small style="margin-left:30px" title='+datas[i].time+'>'+datas[i].time+'<br /></small>';
    260                             htmlText += '                         <small title=设备ID:'+datas[i].param1+'>设备ID:'+datas[i].param1+'<br /></small>';
    261                             htmlText += '                         <small title=IMSI号:'+datas[i].param2+'>IMSI号:'+datas[i].param2+'<br /></small>';
    262                             htmlText += '                         <small title=IMEI号:'+datas[i].param4+'>IMEI号:'+datas[i].param4+'<br /></small>';
    263                             htmlText += '                         <small title=IMEI号:'+datas[i].param5+'>手机号:'+datas[i].param5+'<br /></small>';
    264                             htmlText += '                         <small title=MAC:'+datas[i].param8+'>MAC:'+datas[i].param8+'<br /></small>';
    265                             htmlText += '                         <small title=其他:'+datas[i].param9+'>其他:'+datas[i].param9+'<br /></small>';
    266                             htmlText += '                        <button style="margin-left:160px" onclick="showDetails('+obj+')" id="btnQuery" type="button">';
    267                             htmlText += '                            查询详情';
    268                             htmlText += '                        </button>';
    269                         }else if(type == 0){//人员
    270                             htmlText += '                         <small style="margin-left:30px" title='+datas[i].time+'>'+datas[i].time+'<br /></small>';
    271                             htmlText += '                         <small title=身份证号:'+datas[i].param1+'>身份证号:'+datas[i].param1+'<br /></small>';
    272                             htmlText += '                         <small title=姓名:'+datas[i].param2+'>姓名:'+datas[i].param2+'<br /></small>';
    273                             htmlText += '                        <button style="margin-left:160px" onclick="showDetails('+obj+')" id="btnQuery" type="button">';
    274                             htmlText += '                            查询详情';
    275                             htmlText += '                        </button>';
    276                         }else if(type == 4){//人脸
    277                             htmlText += '                         <small style="margin-left:30px" title='+datas[i].time+'>'+datas[i].time+'<br /></small>';
    278                             htmlText += '                         <small title=人脸ID:'+datas[i].param1+'>人脸ID:'+datas[i].param1+'<br /></small>';
    279                         }else if(type == 2){//车辆
    280                             htmlText += '                         <small style="margin-left:30px" title='+datas[i].time+'>'+datas[i].time+'<br /></small>';
    281                             htmlText += '                         <small title=车道号:'+datas[i].param1+'>车道号:'+datas[i].param1+'<br /></small>';
    282                             htmlText += '                         <small title=车牌号:'+datas[i].param2+'>车牌号:'+datas[i].param2+'<br /></small>';
    283                             htmlText += '                        <button style="margin-left:160px" onclick="showDetails('+obj+')" id="btnQuery" type="button">';
    284                             htmlText += '                            查询详情';
    285                             htmlText += '                        </button>';
    286                         }else if(type == 16){//交易
    287                             htmlText += '                         <small style="margin-left:30px" title='+datas[i].time+'>'+datas[i].time+'<br /></small>';
    288                             htmlText += '                         <small title=点钞信息:'+datas[i].param1+'>点钞信息:'+datas[i].param1+'<br /></small>';
    289                             htmlText += '                         <small title=银行卡号:'+datas[i].param2+'>银行卡号:'+datas[i].param2+'<br /></small>';
    290                             htmlText += '                         <small title=身份证号:'+datas[i].param4+'>身份证号:'+datas[i].param4+'<br /></small>';
    291                             htmlText += '                        <button style="margin-left:160px" onclick="showDetails('+obj+')" id="btnQuery" type="button">';
    292                             htmlText += '                            查询详情';
    293                             htmlText += '                        </button>';
    294                         }
    295                         htmlText += '                    </div>';
    296                         htmlText += '             </div>';
    297                         htmlText += '        </div>';
    298                         htmlText += '    </div>';
    299                         if(c == 4 || i == datas.length - 1){
    300                             htmlText = htmlText + '</div>';
    301                             c = 0;
    302                         }
    303                         lis.push(htmlText);
    304                         htmlText = "";
    305                     }
    306                     if (datas.length < limit) {
    307                         next(lis.join(''), false); 
    308                     } else {
    309                         next(lis.join(''), true);
    310                     }
    311                 },
    312                 complete:function(XMLHttpRequest,textStatus){
    313                     layer.close(msg);
    314                 },
    315                 error:function(XMLHttpRequest, textStatus, errorThrown){
    316 //                    window.location.href = 'logout';
    317                     layer.alert('未知异常:'+textStatus);
    318                 }
    319             });
    320         }
    321       });
    322     });
    323 }
    324 
    325 function showDetails(obj){
    326     var type = obj.type;
    327     var time = obj.time;
    328     var cameraName = obj.cameraName;
    329     var param1 = obj.param1;
    330     var param2 = obj.param2;
    331     var param4 = obj.param4;
    332     var param5 = obj.param5;
    333     var param6 = obj.param6;
    334     var param7 = obj.param7;
    335     var param8 = obj.param8;
    336     var param9 = obj.param9;
    337     if(!cameraName||cameraName==""||cameraName=="undefined"){
    338         cameraName="";
    339     }
    340     
    341     var url = "showDetails.do?type="+type+"&time="+time+"&cameraName="+cameraName+"&param1="+param1+"&param2="+param2+"&param4="+param4+"&param5="+param5+"&param6="+param6+"&param7="+param7+"&param8="+param8+"&param9="+param9;
    342     var urlEn = encodeURI(url);
    343     layer.open({
    344         type : 2,
    345         area : [ '45%', '80%' ],
    346         fixed : true,  
    347         maxmin : false,
    348         title:'详细信息',
    349         content : [ urlEn, 'yes' ]
    350     });
    351 }
      1 $(document).ready(function() {
      2     initTreeDevice();
      3 });
      4 /**************************init***************************/
      5 /**************************start树********************************/
      6 var zTree_Menu = null;
      7 var Maximum = 5;//最多选中设备数量
      8 function initTreeDevice(){
      9     var loadingDate = [{id:"loading",pId:"0", name:"数据加载中。。。", "nocheck":true,icon:""}];
     10     $.fn.zTree.init($("#treeDemo"), batch_cam_setting, loadingDate);
     11     
     12     $.ajax({
     13         type : "POST",
     14         url:"getAreaTreeList",
     15         dataType : "json",
     16         async : true,
     17         success : function(data) {
     18             data = sortByKey(data,'name');
     19             $.fn.zTree.destroy("treeDemo");
     20             $.fn.zTree.init($("#treeDemo"), batch_cam_setting, data);
     21             
     22             var tree_e = $.fn.zTree.getZTreeObj("treeDemo");
     23             var tollId = parent.treeWinID.val();
     24             var arrayId = tollId.split (";");
     25             for(var i = 0;i<data.length;i++){
     26                 if(arrayId.indexOf(data[i].id)>-1){
     27                     node = tree_e.getNodeByParam("id", data[i].id);
     28                     tree_e.checkNode(node);
     29                 }
     30             }
     31         },
     32         error : function(jqXHR, textStatus, errorThrown) {
     33             alert(jqXHR.responseText);
     34         }
     35     });
     36     
     37 }
     38 
     39 
     40 var batch_cam_setting = {
     41         check: {
     42             enable: true,
     43             chkStyle: "checkbox",
     44             chkboxType: { "Y":"p", "N":"ps"}
     45 //            chkboxType: { "Y":"", "N":""}
     46         },
     47         data: {
     48             simpleData: {
     49                 enable: true
     50             }
     51         },
     52         callback: {
     53             onExpand: beforeExpand,
     54 //            onClick: zTreeOnClick,
     55             onCheck: onCheck
     56         },
     57         view:{
     58             expandSpeed: ""
     59         }
     60     };
     61 
     62 
     63 function query(){
     64     var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
     65     var selectedNodes = zTreeObj.getSelectedNodes();
     66     
     67     var svacName = $("#svacName").val();
     68     if(svacName==null || svacName == ''){
     69         initTreeDevice();
     70         return;
     71     }
     72     var reqJson = {};
     73     reqJson.name = svacName;
     74     if(selectedNodes!=null&&selectedNodes!=''&&selectedNodes[0].id!="<ROOT>"){
     75         reqJson.nodeId = selectedNodes[0].id;
     76     }
     77     $.ajax({
     78         type:"POST",
     79         contentType : "application/json",
     80         url:"nextNodeTree",
     81         data:JSON.stringify(reqJson),
     82         dataType : "json",
     83         success: function(data) {
     84             try{
     85                 for(var j = 0; j < data.length; j ++){
     86                     data[j].hasLoad = true;
     87                 }
     88                 data = sortByKey(data,'name');
     89                 $.fn.zTree.destroy("treeDemo");
     90                 $.fn.zTree.init($("#treeDemo"), batch_cam_setting, data);
     91             }catch(e){
     92                 alert(e);
     93             }
     94         }
     95     });
     96 }
     97 
     98 
     99 
    100 function beforeExpand(event,treeId, treeNode) {
    101     var svacName = $("#svacName").val();
    102     if(treeNode.hasLoad){
    103         return;
    104     }
    105     if(treeNode.id!='<ROOT>' && !(treeNode.hasLoad)){
    106         if(treeNode.type=="AREA" || treeNode.type=="DISTRICT"){
    107             var reqJson = {};
    108             reqJson.nodeId = treeNode.id;
    109             $.ajax({
    110                 type:"POST",
    111                 contentType : "application/json",
    112                 url:"nextNodeTree",
    113                 data:JSON.stringify(reqJson),
    114                 dataType : "json",
    115                 success: function(data) {
    116                     var node;
    117                     var parentNode;
    118                     try{
    119                         sortByKey(data,'name');
    120                         var tree_e = $.fn.zTree.getZTreeObj(treeId);
    121                         tree_e.addNodes(treeNode, data);
    122                         
    123                         var tollId = parent.treeWinID.val();
    124                         var arrayId = tollId.split (";");
    125                         for(var i = 0;i<data.length;i++){
    126                             if(arrayId.indexOf(data[i].id)>-1){
    127                                 node = tree_e.getNodeByParam("id", data[i].id);
    128                                 tree_e.checkNode(node);
    129                             }
    130                         }
    131                         
    132                         
    133                         treeNode.hasLoad = true;
    134                     }catch(e){
    135                         alert(e);
    136                     }
    137                 }
    138             });
    139         }    
    140     }
    141 }
    142 
    143 
    144 //function zTreeOnClick(event, treeId, treeNode){
    145 //      chooseNode = treeNode;
    146 //}
    147 
    148 /**
    149  * 选中
    150  * @param treeNode
    151  * @returns
    152  */
    153 //function customOnCheckedCheck(treeNode){
    154 //    if(parent.facilityWinName){
    155 //          var name = parent.facilityWinName.val();
    156 //          var arrayName = name.split(";")
    157 //          arrayName.push(treeNode.name);
    158 //          var nArrayName = $.grep(arrayName,function(n){return $.trim(n).length>0;});
    159 //            parent.facilityWinName.val(nArrayName.join(";"));
    160 //     }
    161 //     var tollId = parent.facilityWinID.val();
    162 //     var arrayId = tollId.split (";");
    163 //     arrayId.push(treeNode.id);
    164 //     var nArrayId = $.grep(arrayId,function(n){return $.trim(n).length>0;});
    165 //     parent.facilityWinID.val(nArrayId.join(";"));
    166 //}
    167 /**
    168  * 取消选中
    169  * @param treeNode
    170  * @returns
    171  */
    172 //function customCheckedCheck(treeNode){
    173 //    if(parent.facilityWinName){
    174 //       var name = parent.facilityWinName.val();
    175 //       var arrayName = name.split(";")
    176 //       arrayName.splice($.inArray(treeNode.name,arrayId),1);
    177 //       var nArrayName = $.grep(arrayName,function(n){return $.trim(n).length>0;});
    178 //         parent.facilityWinName.val(nArrayName.join(";"));
    179 //    }
    180 //    
    181 //    var tollId = parent.facilityWinID.val();
    182 //    var arrayId = tollId.split (";");
    183 //    arrayId.splice($.inArray(treeNode.id,arrayId),1);
    184 //    var nArrayId = $.grep(arrayId,function(n){return $.trim(n).length>0;});
    185 //    parent.facilityWinID.val(nArrayId.join(";"));
    186 //    
    187 //}
    188 function onCheck(event, treeId, treeNode) {
    189     var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    190     var nodes=treeObj.getCheckedNodes(true);
    191 //    if(treeNode!=null&&treeNode.id=="<ROOT>"){
    192 //        if(treeNode.checked){
    193 //            treeObj.checkNode(treeNode, false, true);
    194 //        }else{
    195 //            treeObj.checkNode(treeNode, true, true);
    196 //        }
    197 //        alert("根节点不允许选择!");
    198 //        return;
    199 //    }
    200     
    201     var node;
    202     var a=0;
    203     for(var i = 0;i<nodes.length;i++){
    204         node = nodes[i];
    205         if(!node.isParent){
    206             a=a+1;
    207             if(a>Maximum){
    208                 if(treeNode.checked){
    209                     treeObj.checkNode(treeNode, false, true);
    210                 }else{
    211                     treeObj.checkNode(treeNode, true, true);
    212                 }
    213                 alert("最多选择5个设备!");
    214                 return;
    215             }
    216         }
    217     }
    218     
    219     var childrenTreeNode;
    220     
    221     if(!treeNode.hasLoad){
    222         if(treeNode.checked){
    223             treeObj.checkNode(treeNode, false, true);
    224         }else{
    225             treeObj.checkNode(treeNode, false, true);
    226         }
    227         alert("请展开后再选择!");
    228         return;
    229     }
    230     
    231     if (treeNode.checked) {
    232         if(treeNode.isParent){
    233             var childrenNodes = treeNode.children;
    234             if (childrenNodes) {
    235                 for (var i = 0; i < childrenNodes.length; i++) {
    236                     childrenTreeNode = childrenNodes[i];
    237                     if(!childrenTreeNode.isParent){
    238 //                        treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    239 //                        nodes=treeObj.getCheckedNodes(true);
    240 //                        for(var i = 0;i<nodes.length;i++){
    241 //                            node = nodes[i];
    242 //                            if(!node.isParent){
    243 //                                a=a+1;
    244 //                                if(a>Maximum){
    245 //                                    if(treeNode.checked){
    246 //                                        treeObj.checkNode(treeNode, false, true);
    247 //                                    }else{
    248 //                                        treeObj.checkNode(treeNode, true, true);
    249 //                                    }
    250 //                                    alert("最多选择5个设备!");
    251 //                                    return;
    252 //                                }
    253 //                            }
    254 //                        }
    255                         treeObj.checkNode(childrenTreeNode, true, true);
    256                     }
    257                 }
    258             }
    259             
    260         }else{
    261             treeObj.checkNode(treeNode, true, true);
    262         }
    263     } else {
    264         if(treeNode.isParent){
    265             var childrenNodes = treeNode.children;
    266             if (childrenNodes) {
    267                 for (var i = 0; i < childrenNodes.length; i++) {
    268                     childrenTreeNode = childrenNodes[i];
    269                     if(!childrenTreeNode.isParent){
    270                         treeObj.checkNode(childrenTreeNode, false, true);
    271                     }
    272                 }
    273             }
    274             
    275         }else{
    276             treeObj.checkNode(treeNode, false, true);
    277         }
    278     }
    279 }
    280 /** ************************end树********************************* */
    281 /**
    282  * 确定
    283  */
    284 function layerColse(){
    285     parent.facilityWinName.val('');
    286     parent.facilityWinID.val('');
    287     parent.treeWinID.val('');
    288     var treeObj=$.fn.zTree.getZTreeObj("treeDemo");
    289     var nodes=treeObj.getCheckedNodes(true);
    290     var fnameId = parent.facilityWinName.val();
    291     var fidId = parent.facilityWinID.val();
    292     var treeId = parent.treeWinID.val();
    293     
    294     var fnameArray = fnameId.split (";");
    295     var fidArray = fidId.split (";");
    296     var treeArrayId = treeId.split (";");
    297     
    298     var node;
    299     for(var i = 0;i<nodes.length;i++){
    300         node = nodes[i];
    301         if(!node.isParent){
    302             fnameArray.push(nodes[i].name);
    303             fidArray.push(nodes[i].id);
    304         }
    305         treeArrayId.push(nodes[i].id);
    306     }
    307     
    308     var fnames = $.grep(fnameArray,function(n){return $.trim(n).length>0;});
    309     parent.facilityWinName.val(fnames.join(";"));
    310     
    311     var fids = $.grep(fidArray,function(n){return $.trim(n).length>0;});
    312     if(fids.length>5){
    313         alert("最多选择5个设备!");
    314         return;
    315     }
    316     parent.facilityWinID.val(fids.join(";"));
    317     
    318     var tids = $.grep(treeArrayId,function(n){return $.trim(n).length>0;});
    319     parent.treeWinID.val(tids.join(";"));
    320     
    321     var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
    322     parent.layer.close(index); //再执行关闭
    323 }
    324 /**
    325  * 取消数据
    326  */
    327 function colseData(){
    328     parent.facilityWinID.val('');//清空数据
    329     parent.treeWinID.val('');//清空数据
    330     if(parent.facilityWinName){
    331         parent.facilityWinName.val('')
    332     }
    333     var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
    334     parent.layer.close(index); //再执行关闭        
    335 }
    336 
    337 
    338 
    339 /** 地区排序
    340  * array json对象数组排序    数字,字母,符号,汉字顺序排序
    341  * @param array  json对象数组
    342  * @param key  比较字段
    343  * @returns
    344  */
    345 function sortByKey(array, key) {
    346     //未做是否为Array类型判断
    347     if(!array){
    348         return;
    349     }
    350     return array.sort(function(a, b) {
    351         var aType = a.type;
    352         var bType = b.type;
    353         if(aType=='district' && bType=='district'){
    354             if(a.sortId!=null&&b.sortId==null){
    355                 return -1;
    356             }else if(a.sortId==null&&b.sortId!=null){
    357                 return 1;
    358             }else if(a.sortId!=null&&b.sortId!=null){
    359                 return a.sortId-b.sortId;
    360             }
    361         }
    362         if((aType=='district'||aType=='area')&&!(bType=='district'||bType=='area')){
    363             return -1;
    364         }else if(!(aType=='district'||aType=='area')&&(bType=='district'||bType=='area')){
    365             return 1;
    366         }
    367         
    368         var x = a[key]; var y = b[key];
    369         
    370         var re=/^[0-9a-zA-Z]+/;
    371         if(re.test(x)&&!re.test(y)){
    372             return -1;
    373         }
    374         if(!re.test(x)&&re.test(y)){
    375             return 1;
    376         }
    377         return x.localeCompare(y);
    378     });
    379 }
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
    <link href="<%=basePath%>css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet" />
    <link href="<%=basePath%>css/font-awesome.min93e3.css?v=4.4.0" rel="stylesheet" />
    <link href="<%=basePath%>css/plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
    <link href="<%=basePath%>css/animate.min.css" rel="stylesheet" />
    <link href="<%=basePath%>css/style.min862f.css?v=4.1.0" rel="stylesheet" />
    <link href="<%=basePath%>vendors/ion.rangeSlider/css/ion.rangeSlider.css" rel="stylesheet">
    <link href="<%=basePath%>vendors/ion.rangeSlider/css/ion.rangeSlider.skinFlat.css" rel="stylesheet">
    <!-- 添加树css -->
    <link rel="stylesheet" href="<%=basePath%>css/plugins/zTree/zTreeStyle/zTreeStyle.css" type="text/css">
    <link rel="stylesheet" href="<%=basePath%>/css/ztree-common.css">
    <style type="text/css">
        .divcss5-b{ margin-left:5px;overflow-y:scroll; overflow-x:scroll;}
        .divcss5-b{ 99%; height:332px; float:left; border:1px solid #AAAAAA} 
    </style>
    <link href="<%=basePath%>vendors/cloud-zoom/cloud-zoom.css" rel="stylesheet">
    </head>
    <body class="white-bg">
        <div class="wrapper wrapper-content">
            <div class="row">
                <form id="tollgateFormId">
                    <div class="col-xs-6">
                        <div class="form-group ">
                            <input type="text" class="form-control" placeholder="设备名称/国标编号" name="svacName" id="svacName">
                        </div>
                        <div class="hr-line-dashed"></div>
                    </div>
                </form>
                <div class="col-xs-6">
                    <div class="form-group">
                        <button id="btnQuery" name="btnQuery" class="btn btn-primary" type="submit" onclick="query()">查&nbsp;询</button>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
            </div>
            <div class="row">
                <div class="col-xs-12">
                    <div class="form-group divcss5-b">
                        <ul id="treeDemo" class="ztree"></ul>
                    </div>
                </div>
            </div>
            <div class="row">
                <div style="text-align: center;">
                        <div class="hr-line-dashed"></div>
                      <div class="col-xs-12">
                        <div class="form-group" >
                           <p>
                                   <button class="btn btn-primary " type="button" onclick="layerColse()"><i class="fa fa-check"></i>&nbsp;确定</button>
                                <button class="btn btn-primary" type="button" onclick="colseData()"><i class="fa fa-times"></i>&nbsp;取消</button>
                           </p>
                        </div>
                    </div>
                   </div>
            </div>
            
        </div>
        <script src="<%=basePath%>js/jquery.min.js?v=2.1.4"></script>
        <script src="<%=basePath%>js/jquery-ui-1.10.4.min.js"></script>
        <script src="<%=basePath%>js/bootstrap.min.js?v=3.3.6"></script>
        <script src="<%=basePath%>js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
        <script src="<%=basePath%>js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
        <script src="<%=basePath%>js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
        <script src="<%=basePath%>js/plugins/layer/layer.js"></script>
        <script src="<%=basePath%>js/plugins/layer/laydate/laydate.js"></script>
        <script src="<%=basePath%>vendors/ion.rangeSlider/js/ion.rangeSlider.min.js"></script>
        <script src="<%=basePath%>vendors/zx-ui-framework/zx-component.js"></script>
        <script type="text/javascript" src="<%=basePath%>js/plugins/ztree/jquery.ztree.core.js"></script>
        <script type="text/javascript" src="<%=basePath%>js/plugins/ztree/jquery.ztree.excheck.js"></script>
        <script src="<%=basePath%>modules/svacinfo/js/svacinfoDeviceTree.js" type="text/javascript"></script>
    </body>
    </html>
  • 相关阅读:
    《人件》读书笔记3
    《人件》读书笔记2
    《人件》读书笔记1
    《编程珠玑》读书笔记3
    《编程珠玑》读书笔记2
    学习进度报告2021/4/10
    《编程珠玑》读书笔记1
    学习进度报告2021/4/9
    学习进度报告2021/4/8
    关于软件体系架构质量属性的科技小论文
  • 原文地址:https://www.cnblogs.com/acme6/p/10511379.html
Copyright © 2020-2023  润新知