您的位置:首页 > 其它

《天河区GIS慢性病系统》项目研发阶段性总结

2019-01-18 20:07 363 查看

《天河区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中的图层,我们制作地图就是底图,如果我们要在地图上操作就要给它添加一个图层,相对应操作图层实现功能。
在长期的积累后,无论是我们个人能力,还是我们的团队能力都会有很大的提高。在不久的将来,就要踏上人生的另一段旅程,以后的路上有时不免会感到有些茫然、无助,但生活的路谁都无法预测,只能一步步摸索,但只要方向正确,只要我们向着目标不断努力,相信在不远的将来我们一定会有一片属于我们自己的天空。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: