《天河区GIS慢性病系统》项目研发阶段性总结
《天河区GIS慢性病系统》项目研发阶段性总结
作者:人家呢
本次任务完成时间:2018年03月13日~2018年04月13日
开发工具与关键技术:VS、SQL Server2014、supermap_iserver、SuperMap iDesktop 8C、C# .NET MVC
完成模块功能:全部已完成
一、系统概述
对慢性疾病患者信息的管理和监控,在地图中展现患者活动路径、以及患者分布、病原统计查询统计。地图位置的定位和查询。
二、模块概述
系统分为前台和后台:
前台模块
(1)区域定位:对街区进行定位操作。
(2)查询搜索:选择查询类型,点击查询按钮,查询出目标地址,点击定位。
(3)路径查询:主要就是查询病人活动的路径。
(4)周边查询:选择中心点,输出半径,可查询医院、社康、药店。
后台模块
(1)用户管理:对用户信息进行维护,新增、修改、删除等操作。
(2)角色权限:对平台中的用户进行角色权限的分配,指定用户可以访问那些模块。
(3)日志管理:对用户操作系统进行日志操作,记录系统操作信息。
(4)数据管理:针对数据的导入导出操作
(5)个人信息:对当前用户信息查看,以及密码修改。
三、模块展示
1、模块:前台
前台登录页面(用户名:gl001,密码:123)
主页面:
2、模块:区域定位
2.1、操作说明
点击左侧菜单栏,弹出天河区街区信息,点击某街区地图上就会相对应定位出当前街区信息,如下如所示。
2.2、表和关系
省略
2.3、核心代码
区域定位,定位不同的街区
@*区域定位*@ <script> var vectorLayer_WG; function ClickGetValue(k) { vectorLayer_WG.setVisibility(true); var webID = parseInt(k);//网格ID //声明字段 var queryParam = [], queryBySQLParams, queryBySQLService; //查询网格 queryParam.push(new SuperMap.REST.FilterParameter({ name: "街区@TianHe_Data",//查询数据集名称或者图层名称,根据实际的查询对象而定,必设属性 attributeFilter: "SmID=" + webID,//属性过滤条件 相当于 SQL 语句中的 WHERE 子句, })); //SQL 查询参数类。 该类用于设置 SQL 查询的相关参数。 queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({ queryParams: queryParam//查询过滤条件参数数组 }); //SQL 查询服务类。 在一个或多个指定的图层上查询符合 SQL 条件的空间地物信息。 queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {//url 服务的访问地址 eventListeners: { "processCompleted": processCompleted_PG, "processFailed": processFailed_PG } }); //传递到服务端 queryBySQLService.processAsync(queryBySQLParams); } var webTypeTree = 0; function processCompleted_PG(queryEventArgs) { //声明字段 var i, j, feature, bounds, N = [], S = [], W = [], E = [], result = queryEventArgs.result;//获取服务器传回来的数据 vectorLayer_WG.removeAllFeatures();//清除上一次查询 var features = []; //判断是否有数据 if (result && result.recordsets) {//判断查询的查询结果记录集数组是否为空 for (i = 0; i < result.recordsets.length; i++) {//循环记录集数组 //features===用于存放矢量要素 if (result.recordsets[i].features) {//判断记录集数组的矢量要素是否为空 //如果记录集数组的矢量要素不为空,则又循环 记录集数组的矢量要素 for (j = 0; j < result.recordsets[i].features.length; j++) { feature = result.recordsets[i].features[j];//获取记录集数组的矢量要素 //判断显示面或点 if (feature.geometry.CLASS_NAME == SuperMap.Geometry.Point.prototype.CLASS_NAME) {//判断返回的数据是不是这个数据 } else { var smID = parseInt(feature.data.SmID); feature.smID = smID; if (smID == 1) { //街道网格 feature.style = { strokeColor: '#0322ff',//边颜色 strokeWidth: 1,//边宽度 strokeDashstyle: 'dash',//边类型,虚线 fillColor: '#0322ff',//填充颜色 fillOpacity: 0.08,//透明度 //label: feature.data.Name, fontColor: '#0322ff', fontOpacity: "1", fontSize: '18px', fontWeight: 700 }; vectorLayer_default.addFeatures(feature); } else { //社区网格 feature.style = { strokeColor: 'Orange',//边颜色 strokeWidth: 1,//边宽度 strokeDashstyle: 'solid',//边类型,虚线 fillColor: 'Orange',//填充颜色 fillOpacity: 0.15,//透明度 label: feature.data.Name, fontColor: 'Orange', fontOpacity: "1", fontSize: '10px', fontWeight: 700 }; vectorLayer_WG.addFeatures(feature);//给这个图层添加features。也就是把查询结果显示出来 } bounds = feature.geometry.bounds; if (bounds != null) { if (bounds.top != null && Boolean(bounds.top) == true) { N.push(Number(bounds.top)); } if (bounds.bottom != null && Boolean(bounds.bottom) == true) { S.push(Number(bounds.bottom)); } if (bounds.left != null && Boolean(bounds.left) == true) { W.push(Number(bounds.left)); } if (bounds.right != null && Boolean(bounds.right) == true) { E.push(Number(bounds.right)); } } } } } } } if (W.length > 0 && S.length > 0 && E.length > 0 && N.length > 0) { var bounds = new SuperMap.Bounds( Math.min.apply(null, W),//最小的水平坐标系。 Math.min.apply(null, S),//最小的垂直坐标系。 Math.max.apply(null, E),//最大的水平坐标系。 Math.max.apply(null, N) //最大的垂直坐标系。 ); map.zoomToExtent(bounds);//缩放到指定范围,重新定位中心点。 } } function processFailed_PG(er) { } </script>
3、模块:查询搜索
3.1、操作说明
选择地址或公司名称、门诊号、卡片号、登记号,点击查询,查询出相关信息,选择信息点击定位按钮,在地图定位出相对应得地点并标注显示
3.2、表和关系
3.3、核心代码
查询定位,在地图上标出相对应得坐标点。
@*查询搜索、定位*@ var address1 = ""; var NumberDW = ""; function mapFixedPosition() { $("#tabAddress tr").remove(); setTimeout(function () { $('.toolLi').removeClass('active'); }, 100); // $('#QQlogin').css('top', '0px').css('left', '0px'); var addressName = $('#txtDZ').val(); var vl = $("#SelectFixedPosition").val(); var queryParams = [], queryBySQLParams, queryBySQLService; if (vl==1) { queryParams.push(new SuperMap.REST.FilterParameter({ name: "P19住宅小区_point_1@TianHe_Data#1", attributeFilter: "NAME like '%" + addressName + "%' or ADDRESS like '%" + addressName + "%'" }));//获取最新的楼栋ID queryParams.push(new SuperMap.REST.FilterParameter({ name: "P17公司企业_point_1@TianHe_Data#1", attributeFilter: "NAME like '%" + addressName + "%' or ADDRESS like '%" + addressName + "%'" }));//获取最新的楼栋ID } if (vl==2) { queryParams.push(new SuperMap.REST.FilterParameter({ name: "P17公司企业_point_1@TianHe_Data#1", attributeFilter: "NAME like '%" + addressName + "%' or ADDRESS like '%" + addressName + "%'" }));//获取最新的楼栋ID } if (vl==3) { queryParams.push(new SuperMap.REST.FilterParameter({ name: "P17公司企业_point_1@TianHe_Data#1", attributeFilter: "NAME =0" })); $("#Operate_titleid").text("门诊号"); $('#Operate_content').html(""); //PatientPathLayer.removeAllFeatures(); var Registration = addressName; $.post("/Main/SelectClinicNumber", { ClinicNumber: Registration }, function (data) { if (data != "") { var PaintConent = ""; var inti = 0; for (var i = 0; i < data.length; i++) { PaintConent += '<div class="col-sm-12 col-xs-12 col-md-12 Jingquechaxun" style="border: 1px solid #f9f9f9; cursor:pointer; border-radius: 5px;" onclick="ClinicNumberclick(' + data[i]["PatientID"] + ',' + data[i]["ClinicNumber"] + ')"><div style="padding: 0px; height: 33px; overflow:hidden;" class="col-sm-12 col-xs-12 col-md-12"><div class="col-sm-6 col-xs-6 col-md-6" style="margin-left:-15px"><span class="glyphicon glyphicon-user" style="text-align: center; height: 33px; line-height: 33px; float: left;></span></div><div class="col-sm-6 col-xs-6 col-md-6"><label style="height: 33px; line-height: 34px;margin-left:90px">' + data[i]["ClinicNumber"] + '</label></div></div></div>'; } $('#Operate_content').html(PaintConent); $("#aFloatTools_Show").click(); } }); } if (vl == 5) { queryParams.push(new SuperMap.REST.FilterParameter({ name: "P17公司企业_point_1@TianHe_Data#1", attributeFilter: "NAME =0" })); $("#Operate_titleid").text("登记号"); $('#Operate_content').html(""); //PatientPathLayer.removeAllFeatures(); var Registration = addressName; $.post("/Main/SelectRegistrationNumber", { Registration: Registration }, function (data) { if (data != "") { var PaintConent = ""; var inti = 0; for (var i = 0; i < data.length; i++) { PaintConent += '<div class="col-sm-12 col-xs-12 col-md-12 Jingquechaxun" style="border: 1px solid #f9f9f9; cursor:pointer; border-radius: 5px;" onclick="RegistrationNumberclick(' + data[i]["PatientID"] + ',' + data[i]["RegistrationNumber"] + ')"><div style="padding: 0px; height: 33px; overflow:hidden;" class="col-sm-12 col-xs-12 col-md-12"><div class="col-sm-6 col-xs-6 col-md-6" style="margin-left:-15px"><span class="glyphicon glyphicon-user" style="text-align: center; height: 33px; line-height: 33px; float: left;></span></div><div class="col-sm-6 col-xs-6 col-md-6"><label style="height: 33px; line-height: 34px;margin-left:90px">' + data[i]["RegistrationNumber"] + '</label></div></div></div>'; } $('#Operate_content').html(PaintConent); $("#aFloatTools_Show").click(); } }); } queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({ expectCount: 50, queryParams: queryParams//查询过滤条件参数数组 }); queryBySQLService = new SuperMap.REST.QueryBySQLService(url, { eventListeners: { "processCompleted": processCompleted_selectAddress, "processFailed": processFailed } }); queryBySQLService.processAsync(queryBySQLParams); };
4.4、路径查询
4.1、操作说明
选择查询条件进行查询操作,查询出相关患者信息,点击患者信息地图显示患者活动的路径
4.2、表和关系
4.3、核心代码
路径查询
@*路径*@ <script> //查询病例信息 function ActivityPathByDay() { $("#Operate_titleid").text("项目登记号"); $('#Operate_content').html(""); PatientPathLayer.removeAllFeatures(); var ActivityType; var Registration; var Sex; var HouseholdID; var CaseClassID; var DiseaseTypeID; var AgeID; if ($('#ActivityBingLi:checked').val() != null && $('#ActivityBingLi:checked').val() != "" && $('#ActivityBingLi:checked').val() != undefined) { ActivityType = $('#ActivityBingLi:checked').val(); } else if ($('#ActivityBingYuan:checked').val() != null && $('#ActivityBingYuan:checked').val() != "" && $('#ActivityBingYuan:checked').val() != undefined) { ActivityType = $('#ActivityBingYuan:checked').val(); } else { alert("请选择一个条件进行查询"); return false; } Registration = $('#RegistrationDay').val(); Sex = $('#SexDay').val(); CaseClassID = $('#CaseClassIDDay').val(); AgeID = $("#AgeIDDay").val(); $.post("/Main/SelectPatientByDay", { Registration: Registration, Sex: Sex, CaseClassID: CaseClassID, AgeID: AgeID }, function (data) { if (data != "") { var PaintConent = ""; var inti = 0; for (var i = 0; i < data.length; i++) { PaintConent += '<div class="col-sm-12 col-xs-12 col-md-12 Jingquechaxun" style="border: 1px solid #f9f9f9; cursor:pointer; border-radius: 5px;" onclick="DetailsPathPatient_Day_Onclick(' + data[i]["PatientID"] + ',' + data[i]["RegistrationID"] + ')"><div style="padding: 0px; height: 33px; overflow:hidden;" class="col-sm-12 col-xs-12 col-md-12"><div class="col-sm-6 col-xs-6 col-md-6" style="margin-left:-15px"><span class="glyphicon glyphicon-user" style="text-align: center; height: 33px; line-height: 33px; float: left;></span></div><div class="col-sm-6 col-xs-6 col-md-6"><label style="height: 33px; line-height: 34px;margin-left:90px">' + data[i]["RegistrationNumber"] + '</label></div></div></div>'; } $('#Operate_content').html(PaintConent); $("#aFloatTools_Show").click(); } }); } //登记号点击查询病例路径 function DetailsPathPatient_Day_Onclick(a,b) { PatientPathLayer.removeAllFeatures(); var Activity_X = ""; var Activity_Y = ""; $.post("/Main/SelectActivRoud", { PatientID: a, RegistrationID:b }, function (data) { if (data != "") { if (data.length > 0) { for (var i = 0; i < data.length; i++) { var dataSeeTheDoctorDate = data[i].ActivityTime; Activity_X += data[i]["SmX"] + "`"; Activity_Y += data[i]["SmY"] + "`"; //点对象 var point = new SuperMap.Geometry.Point(data[i]["SmX"], data[i]["SmY"]); var pointVector = new SuperMap.Feature.Vector(point); pointVector.style = { fillColor: "#DC143C", strokeColor: "#CAFF70", pointRadius: 9, label: dataSeeTheDoctorDate }; PatientPathLayer.addFeatures(pointVector); } var points2 = []; for (var i = 0; i < Activity_Y.split('`').length - 1; i++) { points2[i] = new SuperMap.Geometry.Point(Activity_X.split('`')[i], Activity_Y.split('`')[i]); } var line1 = new SuperMap.Geometry.LineString(points2); var linecVector = new SuperMap.Feature.Vector(line1); linecVector.style = { strokeColor: "#7B68EE", strokeWidth: 2 }; PatientPathLayer.addFeatures(linecVector); } } }); } //重置 function ResetActivity() { $('#RegistrationDay').val(""); $('#SexDay').val(-1); $('#CaseClassIDDay').val(""); $("#AgeIDDay").val(0); $('#Operate_content').html(""); $("#aFloatTools_Hide").click(); } </script> @*报告*@
5、周边查询
5. 1、操作说明
选择任意坐标作为中心的,输入半径、勾选查询目标,例如图中查询出一个半径为1000的圆,红色的标点为查询出的目标,绿色为中心点
5.2、表和关系
省略()
5.3、核心代码
function CheckboxNum() { //boolKi = true; var ArryId = []; ArryId.length = 0; var rou = $("#SelectOp").val() / 100000; ObjectA = []; var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/; var containSpecial = RegExp(/[(\ )(\~)(\!)(\#) (\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=) (\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/) (\<)(\>)(\ )(\)]+/); if (!reg.test($("#SelectOp").val()) && !containSpecial.test($("#SelectOp").val())) { var strCheckArry = new Array(); var i = 0; //找出所有选中的checked $("input[name='selectcheck']:checked").each(function () { //记录下它的this ArryId.push(this); }); if (ArryId.length > 0) { try { closeInfoWin(); } catch (e) { }//点击查询关闭所有弹出框 if (stata > 0) { chen_DangerousPoerMarkers.clearMarkers(); } chen_DangerousMarkers.clearMarkers(); //$("#loadMap").show(); //最后一步 根据设置的范围画圆圈 //strDiv += "<i style='display:block;font-style:normal;text-align: center;'>查询范围:<a style='color:red;'>" + $("#SelectOp").val() + "</a>米内 </i>"; DraCri(rou); idtime = setInterval(function () { if (ArryId.length > 0) { if (tagAddstrDiv) { tagAddstrDiv = false; } //boolKi = false; var GetID = ArryId[ArryNumber]; var LayerName = ScreeningConditions($(GetID).context.labels[0].innerText.trim()); if (LayerName != null) { var strType = $(GetID).parent().parent().parent().parent().parent().parent().parent().parent().parent().html(); CurdrawCompleted(LayerName, rou);//查询出圆圈里面的指定点 } i++; ArryNumber++; if (ArryId.length == ArryNumber) { ArryNumber = 0; window.clearTimeout(idtime);//清除时钟 $("#loadMap").hide(); } } }, 50); } } else { alert("不能输入中文和特殊符号!"); } }
6、其他
6.1、操作说明
测距离:可以在地图上测量两点之间的距离
测面积
矩形、圆形、多边形,主要实现了根据不同的形状查询医院、社康、药店信息。
矩形查询
圆形查询
多边形:定义任意形状查询信息。
疫情预警:在地图上闪烁的警灯为预警信息,点击警灯,弹出提示框,该提示框可以查看疫情信息。点击疫情详细,可查看详细信息如图下入右侧。
排除预警:对预警信息进行提交排除擦操作,如下图所示,填写信息提交即可。
专题图:统计每个街区发病率,生成专题图
图层:根据实际需要,选择不同的图层显示
6.2、表和关系
6.3、核心代码
疫情预警和排除预警
@*疫情预警*@ <script> function EpidemicWarning() { $.post("/Main/SelectEpidemicWarning", function (data) { if (data.length > 0) { for (var i = 0; i < data.length; i++) { size = new SuperMap.Size(20, 20), offset = new SuperMap.Pixel((size.w) - 37, (size.h) - 30); icon = new SuperMap.Icon("/Content/img/2cf11b3bb909db55bbd6360317fd7f15.gif", size, offset); marker = new SuperMap.Marker(new SuperMap.LonLat(data[i].SmX, data[i].SmY), icon); marker.sm_capital = "<div><span>疑似病例:" + data[i].DiseaseName + "</span></div><div><span>患者名称:" + data[i].Names + "</span></div><div><span>发病日期:" + data[i].DateOfOnset + "</span></div><div><span>诊断时间:" + data[i].DiagnosisTime + "</span></div><div style='margin-top:10px;'><button class='btn btn-info' type='button' onclick='Regionsmodal(" + data[i].PatientID + ")'>疫情详细</button><button class='btn btn-info' type='button'style='margin-left:10px;' onclick='EliminationAndEarlyWarning(" + data[i].PatientID + ")'>排除预警</button><div style='text-align:center; width:100%;margin:0px;'></div>"; marker.events.on({ "click": openInfoWinBingLis, "touchstart": openInfoWinBingLis, //假如要在移动端的浏览器也实现点击弹框,则在注册touch类事件 "scope": marker, }); EpidemicWarningLayer.addMarker(marker); } } }); } function openInfoWinBingLis() { infowinonMessagefun(); var marker = this; var lonlat = marker.getLonLat(); var contentHTML = "<div class='popwin_titleDiv'><span class='popwin_title'>疫情预警信息</span></div>"; contentHTML += "<div >" + marker.sm_capital + "</div></div>"; var size = new SuperMap.Size(0, 33); var offset = new SuperMap.Pixel(0, -size.h); var icon = new SuperMap.Icon("/Content/Map/DT/SuperMap/images/marker.png", size, offset); var popup = new SuperMap.Popup.FramedCloud("popwin", new SuperMap.LonLat(lonlat.lon, lonlat.lat), null, contentHTML, icon, true); infowinonMessage = popup; map.addPopup(popup); } //疫情详细 function Regionsmodal(a) { $.post("/Main/SelectEpidemicWarningById", { PatientID: a }, function (data) { var ReviewStatus = ""; if (data[0].ReviewStatus == "" || data[0].ReviewStatus==null) { ReviewStatus = "未确诊"; } $("#Names").val(data[0].Names); $("#Sex").val(data[0].Sex); $("#Age").val(data[0].Age); $("#IDNumber").val(data[0].IDNumber); $("#DateOfBirth").val(data[0].DateOfBirth); $("#NowDetailedAddress").val(data[0].NowDetailedAddress); $("#PatientSource").val(data[0].PatientSource); $("#ReviewStatus").val(ReviewStatus); $("#Regionsmodal").show(); }); } //关闭 function RegionsGuanBi() { $('#Regionsmodal').hide(); } //疫情预警 病人信息绑定 function EliminationAndEarlyWarning(id) { $.post("/Main/SelectEpidemicWarningById", { PatientID: id }, function (data) { $("#InNames").val(data[0].Names); $("#InSex").val(data[0].Sex); $("#PatientID").val(id); $('#Regionsmodal').hide(); $("#EliminationAndEarlyWarning").show(); }); } //关闭 function EliminationAndEarlyWarningGuanBi() { $("#EliminationAndEarlyWarning").hide(); } //预警排除 确认按钮 function EliminationConfirm() { var PatientID = $("#PatientID").val(); var ClinicNumber=$("#ClinicNumber").val(); var RegistrationNumber=$("#RegistrationNumber").val(); //var ReviewStatus = $("#ReviewStatus").val(); var RevisedFinalTime = $("#RevisedFinalTime").val(); var ReviewStatus = "确诊"; if (PatientID > 0 && ClinicNumber != "" && RegistrationNumber != "" && ReviewStatus != "" && RevisedFinalTime != "") { $.post("/Main/InsertElimination", { PatientID: PatientID, ClinicNumber: ClinicNumber, RegistrationNumber: RegistrationNumber, ReviewStatus: ReviewStatus, RevisedFinalTime: RevisedFinalTime }, function (data) { if (data == "success") { alert("确诊成功"); $("#EliminationAndEarlyWarning").hide(); $("#popwin_close").click(); EpidemicWarningLayer.clearMarkers(); //$("#popwin").css("display", "none"); //location.reload(); EpidemicWarning(); } else { alert("确诊失败"); } }); } else { alert("请填写完整信息"); } EpidemicWarning(); } </script>
7、后台
8、用户管理
8.1、操作说明
对用户信息进行维护,新增、修改、删除等操作。可进行不同条件组合查询相关用户信息。
新增页面:点击添加按钮,可打开新增页面,修改也是一样。其中邮箱和备注可为空,可输入也可不输入,其他则为必须输入不可为空,否则提交不成功。像姓名、身份证、手机号码等必须正确输入,否则提交改为不法输入,请重新输入。
8.2、表和关系
8.3、核心代码
var h = /^[\u4e00-\u9fa5]{0,}$/; //姓名 var d = /^1[3|4|5|8][0-9]\d{4,8}$/; //手机号码 var y = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;//邮箱 var a = /^\s*(\S+)\s*$/;//空格 //var s = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;//身份证 var re3 = /([1-9]\d{5}\d{2}(([0][1-9]{1})|([1][012]{1}))(([0]{1}[1-9]{1})|([12]{1}\d{1})|([3]{1}[01]{1}))\d{3})/;//十五位 var b = /(([1-9]{1}\d{5}[12][09]\d{2}(([0][1-9]{1})|([1][012]))(([0][1-9]{1})|([12]\d{1})|([3][01]))(\d{4}|(\d{3}[xX]{1}))))/;//十八位 //名称 function names(Id, strN) { RegularJudgment(Id, strN, h); }; //手机号码 function phoneNumber(Id, strN) { RegularJudgment(Id, strN,d); }; //登录名 function loginName(Id, strN) { RegularJudgment(Id, strN, a); }; //密码 function password(Id, strN) { RegularJudgment(Id, strN, a); }; //身份证 function iDNumber(Id, strN) { RegularJudgment(Id, strN, b); }; //邮箱 function mailbox(Id, strN) { RegularJudgmentNullable(Id, strN, y); }; //正则 判断 不可为空 function RegularJudgment(Id, strN, Regular) { var v = $("#" + Id).val();//获取值 if (v == '') {//当为空 $("#" + Id).next().html(strN + "不能为空!"); } else if (!v.match(Regular)) {//当验证不合法时 $("#" + Id).next().html(strN + "不合法!"); $("#" + Id).val(""); } else {// $("#" + Id).next().html(""); } }; //正则 判断 可为空 function RegularJudgmentNullable(Id, strN, Regular) { var v = $("#" + Id).val();//获取值 if (v == '') { $("#" + Id).next().html(""); } else if (!v.match(Regular)) { $("#" + Id).next().html(strN + "不合法!"); $("#" + Id).val(""); } else { $("#" + Id).next().html(""); } }; //判断密码强度 function chkpwd(obj) { var t = obj.value; var id = getResult(t); //定义对应的消息提示 var msg = new Array(4);; msg[0] = "密码过短。"; msg[1] = "密码强度差。"; msg[2] = "密码强度良好。"; msg[3] = "密码强度高。"; var sty = new Array(4); sty[0] = -45; sty[1] = -30;; sty[2] = -15; sty[3] = 0; //var col = new Array(4); //col[0] = "gray"; //col[1] = "#50AEDD"; //col[2] = "#FF8213"; //col[3] = "green"; var Bobj = document.getElementById("spid"); //Bobj.style.color = col[id]; Bobj.innerHTML = "检测提示:" + msg[id]; } //定义检测函数,返回0/1/2/3分别代表无效/差/一般/强 function getResult(s) { if (s.length < 4) { return 0; } var ls = 0; if (s.match(/[a-z]/ig)) { ls++; } if (s.match(/[0-9]/ig)) { ls++; } if (s.match(/(.[^a-z0-9])/ig)) { ls++; } if (s.length < 6 && ls > 0) { ls--; } return ls; }
9、角色管理
9.1、操作说明
对角色新增、修改、删除等操作。给用户进行权限的分配。其中的资源权限是根据功能权限勾选上生成的
9.2、表和关系
9.3、核心代码
根据功能权限生成资源权限树形
/// <summary> /// 系统角色树形 /// </summary> /// <returns></returns> public ActionResult TreeForm() { //查询前后台信息 var list = (from tb in myModel.S_FrontAndBackTable select new { pId = 0, id = tb.FrontAndBackID, text = tb.FrontAndBackName, }).ToList(); StringBuilder stringbuilder = new StringBuilder(); stringbuilder.Append("[");//拼接json格式字符串 for (int i = 0; i < list.Count; i++) { var id = list[i].id; //查询科室信息 var listD = (from tb in myModel.S_DepartmentCategoryTable where tb.FrontAndBackID == id select new { pId = 0, kId= tb.DepartmentCategoryID, id = tb.DepartmentCategoryID, text = tb.Departmentcategoryname, }).ToList(); if (listD.Count > 0) { stringbuilder.Append("{\"id\":\"" + list[i].id + "\",\"text\":\"" + list[i].text.ToString() + "\",\"pId\":\""+ list[i].pId+ "\",\"nodes\":["); for (int j = 0; j < listD.Count; j++) { var idJ = listD[j].id; var listJ = (from tb in myModel.S_SystemRoleTable join tbJ in myModel.S_RoleTypeTable on tb.RoleTypeID equals tbJ.RoleTypeID where tb.DepartmentCategoryID == idJ select new { pId = idJ, id = tbJ.RoleTypeID, text = tbJ.RoleTypeName }).Distinct().ToList(); if (listJ.Count > 0) { stringbuilder.Append("{\"id\":\"" + listD[j].id + "\",\"text\":\"" + listD[j].text.ToString() + "\",\"pId\":\"" + listD[j].pId + "\",\"kId\":\"" + listD[j].kId + "\",\"nodes\":["); for (int k = 0; k < listJ.Count; k++) { stringbuilder.Append("{\"id\":\"" + listJ[k].id + "\",\"text\":\"" + listJ[k].text.ToString() + "\",\"pId\":\"" + listJ[k].pId + "\"},"); } stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1); stringbuilder.Append("]},"); } else { stringbuilder.Append("{\"id\":\"" + listD[j].id + "\",\"text\":\"" + listD[j].text.ToString() + "\",\"pId\":\"" + listD[j].pId + "\",\"kId\":\"" + listD[j].kId + "\"},"); } } stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1); stringbuilder.Append("]},"); } else { stringbuilder.Append("{\"id\":\"" + list[i].id + "\",\"text\":\"" + list[i].text.ToString() + "\",\"pId\":\"" + list[i].pId + "\"},"); stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1); } } stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1); stringbuilder.Append("]"); return Content(stringbuilder.ToString()); }
10、个人信息
10.1、操作说明
对个人信息查看,只能修改手机号、邮箱,密码
10.2、表和关系
10.3、核心代码
略
四、开发总结(不少于500字)
这项目需要的知识有GIS地图制作和地图操作,结合.NET MVC展示系统,知识挺广的。我们先总结一下,取之长,补之短,对自己的这次的GIS项目进行一次总结,以便在下一次更好的完成自己的项目。
项目的开发,大多数都是团队开发的,不是一个人的事,必须学到了如何与人相处,如何和人跟好的交流,我们组成一个团队大家一起开发一个项目,大家的交流沟通显得尤为重要,如何将自己的想法清楚明白的告诉队友,如何提出自己想法的同时又不伤害其他的队友,这些在我们的项目中都是要的。其实在项目中,人际交往能力挺差的,不善于交流,往往会遇到不愉快的事情。在这突然想起鲁迅先生的一句话:世上本没有路,走的人多了,便成路。生活的路也是人走出来的,每个人一生总要去很多陌生的地方,然后熟悉,然后再走向另一个陌生的地方。从一个陌生的环境变到熟悉环境,人际交流能力是每个人不可缺失的,优秀交流能力往往可以决定你的项目的成败,假如你的项目再优秀不会说,别人也不知道你要表达的内容是什么。所以我们不但要会做也要会说,学校和老师也是经常强调。善于交流的能力我需要不断的加强。项目开发过程是取长补短的,让你意识到自己知识的不足,从而促进你的学习。在项目中会遇到未接触过的问题,当有了问题时要去解决,在你不断努力,寻找答案的过程中,自己的能力也在潜移默化的提升。有时遇到问题时可能有很多想法但却不知道那个正确,这就让我们不断地去探索,不断地尝试,问题总会解决的。
GIS项目过程中,首先是地图的制作和地图的发布,接着就是数据库分析,页面搭建,代码的实现。地图制作对于SuperMap iDesktop 8C软件和SuperMap iserver服务这两个是新接触的,用起来有一定的生疏和不适,地图的制作大概用了两天时间吧。而数据分析页面搭建、代码实现和我们之前做的MVC项目差不多,主要就是GIS中代码的实现,一开始是看不懂得,做着做着就慢慢理解了。其实它就相当于ps中的图层,我们制作地图就是底图,如果我们要在地图上操作就要给它添加一个图层,相对应操作图层实现功能。
在长期的积累后,无论是我们个人能力,还是我们的团队能力都会有很大的提高。在不久的将来,就要踏上人生的另一段旅程,以后的路上有时不免会感到有些茫然、无助,但生活的路谁都无法预测,只能一步步摸索,但只要方向正确,只要我们向着目标不断努力,相信在不远的将来我们一定会有一片属于我们自己的天空。
- GIS《花都区地区慢性病地理信息系统》项目研发阶段性总结
- 《深圳罗湖慢性病防治系统》—— 项目研发阶段性总结
- 《深圳宝安区GIS系统》项目研发阶段性总结
- 《广州市黄埔区县慢性病防治院地理信息系统——GIS、MVC》项目研发阶段性总结
- 《帝友 P2P 网络借贷系统——“我要投资”模块》项目研发阶段性总结
- 《GIS福田区地理信息系统》项目研发阶段性总结
- 《GIS系统——佛山市三水区》项目研发总结
- 《GIS ——“实现地点的分布图”》项目研发阶段性总结
- 初学GIS项目研发阶段性总结 仿《黄埔区慢病地理信息系統》
- 《驾驶证管理系统——“部分模块”》项目研发阶段性总结
- 《客运综合管理系统——“行包寄存”模块》项目研发阶段性总结
- 医院管理系统 项目研发阶段性总结
- 《GIS——“最佳路经查询”》项目研发阶段性总结
- GIS—项目研发阶段性总结
- 白云区运动服务系统 项目研发阶段性总结一
- 《汽车汽配管理系统——“汽车管理”模块》项目研发阶段性总结
- 《模拟南航官网系统——“售票,订座”模块》项目研发阶段性总结
- 三易通服装进销存ERP—项目研发阶段性总结
- 广州市从化区慢性病地理信息系统—项目研发阶段性总结
- 《客运售票管理系统——“安全检查管理”模块》项目练习阶段性总结