Commit a8788a3ea2f47089b8d6a52f37556710734f9583

Authored by wuxuehong
1 parent 044c5b1d22

儿童预约建档

Showing 12 changed files with 1276 additions and 100 deletions

littleApp_child/app.json View file @ a8788a3
... ... @@ -53,7 +53,8 @@
53 53 "pages/graph/graph",
54 54 "pages/editAddress/editAddress",
55 55 "pages/articleList/articleList",
56   - "pages/article/article"
  56 + "pages/article/article",
  57 + "pages/preDocumented/preDocumented"
57 58 ]
58 59 }
59 60 ],
littleApp_child/packageA/pages/preDocumented/preDocumented.js View file @ a8788a3
  1 +// packageA/pages/preDocumented/preDocumented.js
  2 +const networkUtil = require("../../../utils/network_util.js");
  3 +const api = require("../../../utils/apiFile.js");
  4 +const makePy = require("../../../utils/makepy.js");
  5 +const numberUtil = require("../../../utils/numberUtil.js");
  6 +import { AreaPicker } from "../../../utils/areaSelector/selector.js"
  7 +let liveType = "";
  8 +Page(Object.assign({}, AreaPicker,{
  9 + data: {
  10 + postObj: {},
  11 + queryData:{},
  12 + currentAddress: {},
  13 + sex:[
  14 + {
  15 + name:"男",
  16 + value:1,
  17 + checked:true
  18 + },
  19 + {
  20 + name:"女",
  21 + value:0,
  22 + checked:false
  23 + },
  24 + ],
  25 + childCardShow: false,
  26 + items: [
  27 + {value: 'wr', name: '未入', checked: 'true'},
  28 + {value: 'yr', name: '已入'},
  29 + ],
  30 + liveTypes: ['常住','流动','暂住','有居住证'],
  31 + liveTypestr: [
  32 + {
  33 + "id":"57624c440cf23d4631523ea1",
  34 + "code":"bd",
  35 + "enable":1,
  36 + "parentId":"57624c330cf23d4631523ea0",
  37 + "name":"常住",
  38 + "parentName":null,
  39 + "desc":null,
  40 + "level":null,
  41 + "weight":null,
  42 + "leastUse":null,
  43 + "basicConfigs":[
  44 + ],
  45 + "childConfigs":null
  46 + },
  47 + {
  48 + "id":"57624c5e0cf23d4631523ea2",
  49 + "code":"wd",
  50 + "enable":1,
  51 + "parentId":"57624c330cf23d4631523ea0",
  52 + "name":"流动",
  53 + "parentName":null,
  54 + "desc":null,
  55 + "level":null,
  56 + "weight":null,
  57 + "leastUse":null,
  58 + "basicConfigs":[
  59 + ],
  60 + "childConfigs":null
  61 + },
  62 + {
  63 + "id":"5a371bce0cf2ab082ac30433",
  64 + "code":"bdcz",
  65 + "enable":1,
  66 + "parentId":"57624c330cf23d4631523ea0",
  67 + "name":"暂住",
  68 + "parentName":null,
  69 + "desc":null,
  70 + "level":null,
  71 + "weight":null,
  72 + "leastUse":null,
  73 + "basicConfigs":[
  74 + ],
  75 + "childConfigs":null
  76 + },
  77 + {
  78 + "id":"62270e679932d29c07242e4f",
  79 + "code":"jzz",
  80 + "enable":1,
  81 + "parentId":"57624c330cf23d4631523ea0",
  82 + "name":"有居住证",
  83 + "parentName":null,
  84 + "desc":null,
  85 + "level":null,
  86 + "weight":null,
  87 + "leastUse":null,
  88 + "basicConfigs":[
  89 + ],
  90 + "childConfigs":null
  91 + }
  92 + ],
  93 + quality:[
  94 + {
  95 + name:"农业",
  96 + value:1,
  97 + checked:false
  98 + },
  99 + {
  100 + name:"非农业",
  101 + value:2,
  102 + checked:false
  103 + },
  104 + ],
  105 + selectedChild:{},
  106 + isChooseBox:true,
  107 + //页面显示 1 新增建档 2 查看建档
  108 + showViewType:0,
  109 + hospitals:[],
  110 + SearchHospitals:[],
  111 + pickerBoxModal:true,
  112 + endDate:'',
  113 + submiting:false
  114 + },
  115 + onLoad: function (options) {
  116 + var that = this;
  117 + networkUtil.showLoading()
  118 + networkUtil._get(api.getConfigHospitals,{}, function(res) {
  119 + if(0 == res.data.errorcode){
  120 + that.setData({
  121 + hospitals:res.data.data,
  122 + selectHospital: {}, //{'hospitalId':216,'hospitalName':'秦皇岛市妇幼保健院'},
  123 + 'queryData.hospital': {} //{'hospitalId':216,'hospitalName':'秦皇岛市妇幼保健院'}
  124 + })
  125 + }
  126 + }, function(res) {
  127 + networkUtil.showErrorToast(res.errormsg)
  128 + })
  129 +
  130 + var date = new Date();
  131 + var nowMonth = date.getMonth() + 1;
  132 + var strDate = date.getDate();
  133 + // 日期分割符号
  134 + var seperator = "-";
  135 + that.setData({
  136 + endDate:date.getFullYear() + seperator + nowMonth + seperator + strDate
  137 + })
  138 +
  139 + wx.onKeyboardHeightChange(res => {
  140 + console.log(res.height)
  141 + this.setData({
  142 + bottom:res.height
  143 + })
  144 + })
  145 + },
  146 + bindPickerChange: function(e) {
  147 + let type = this.data.liveTypes[e.detail.value];
  148 + for (var i in this.data.liveTypestr) {
  149 + if (type === this.data.liveTypestr[i].name) {
  150 + liveType = this.data.liveTypestr[i].id;
  151 + }
  152 + }
  153 + this.setData({
  154 + index: e.detail.value
  155 + })
  156 + },
  157 + bindDateChange(e){
  158 + let value = e.detail.value;
  159 + this.setData({
  160 + ['postObj.birth']: value
  161 + })
  162 + },
  163 + bindKeyInput(e) {
  164 + let key = e.currentTarget.id;
  165 + let value = e.detail.value;
  166 + this.setData({
  167 + ['postObj.' + key]: value
  168 + })
  169 + },
  170 + checkboxChange (e) {
  171 + const items = this.data.items
  172 + const values = e.detail.value
  173 + for (let i = 0, lenI = items.length; i < lenI; ++i) {
  174 + items[i].checked = false
  175 + for (let j = 0, lenJ = values.length; j < lenJ; ++j) {
  176 + if (items[i].value === values[j]) {
  177 + items[i].checked = true
  178 + break
  179 + }
  180 + }
  181 + }
  182 + this.setData({
  183 + items
  184 + })
  185 + },
  186 + radioChange(e) {
  187 + let value = e.detail.value;
  188 + this.setData({
  189 + ['postObj.sex']: value
  190 + })
  191 + },
  192 + radioChange1(e) {
  193 + let childCardShow = e.detail.value;
  194 + if (childCardShow==='yr') {
  195 + childCardShow = true;
  196 + } else {
  197 + childCardShow = false;
  198 + }
  199 + this.setData({
  200 + childCardShow: childCardShow
  201 + })
  202 + },
  203 + radioChange2(e) {
  204 + let value = e.detail.value;
  205 + this.setData({
  206 + ['postObj.babyAccountNature']: value
  207 + })
  208 + },
  209 + bindQueryInput(e) {
  210 + // console.log(e)
  211 + let key = e.currentTarget.id;
  212 + let value = e.detail.value;
  213 + this.setData({
  214 + ['queryData.' + key]: value
  215 + })
  216 + },
  217 + fouseSearchHospital(e){
  218 + let resultArr = this.data.SearchHospitals
  219 + if(this.data.SearchHospitals.length == 0){
  220 + resultArr = this.data.hospitals;
  221 + }
  222 + this.setData({
  223 + pickerBoxModal:false,
  224 + SearchHospitals:resultArr,
  225 + 'queryData.hospital':resultArr[0],
  226 + })
  227 + },
  228 + bindSearchHospital(e){
  229 + let value = e.detail.value;
  230 + let that = this;
  231 + let resultArr = [],arr = that.data.hospitals,col='hospitalName';
  232 + for(var i= 0, searchText, tmp; i<arr.length; i++) {
  233 + tmp = arr[i];
  234 + if("object" == typeof(tmp)) {
  235 + searchText = String(tmp[col]);
  236 + searchText += makePy._makePy(searchText);
  237 + searchText = searchText.toLowerCase();
  238 + value = value.toLowerCase();
  239 + if(-1 != searchText.indexOf(value)) {
  240 + resultArr.push(tmp);
  241 + }
  242 + }
  243 + }
  244 + if(resultArr.length == 0){
  245 + that.setData({
  246 + pickerBoxModal:false,
  247 + SearchHospitals:resultArr,
  248 + 'selectHospital.hospitalId': 0,
  249 + 'queryData.hospital':{},
  250 + })
  251 + }else{
  252 + that.setData({
  253 + pickerBoxModal:false,
  254 + SearchHospitals:resultArr,
  255 + 'selectHospital.hospitalId': 0,
  256 + 'queryData.hospital':resultArr[0],
  257 + })
  258 + }
  259 + },
  260 + bindHospitalChange(e){
  261 + let value = e.detail.value;
  262 + let that = this;
  263 + console.log(value)
  264 + this.setData({
  265 + selectHospital: that.data.SearchHospitals[value]
  266 + })
  267 + },
  268 + confirmSelect(){
  269 + if(this.data.selectHospital.hospitalId&&this.data.selectHospital.hospitalId!=0){
  270 + this.setData({
  271 + pickerBoxModal:true,
  272 + 'queryData.hospital': this.data.selectHospital
  273 + })
  274 + }else(
  275 + this.setData({
  276 + pickerBoxModal:true,
  277 + selectHospital: this.data.queryData.hospital
  278 + })
  279 + )
  280 + },
  281 + query(){
  282 + let value = this.data.queryData.phone;
  283 + let hospital = this.data.queryData.hospital;
  284 + var that = this;
  285 + if(!(value&&numberUtil.IsTelPhoneNumber(value))){
  286 + wx.showModal({
  287 + title: '提示',
  288 + content: '请输入正确的母亲手机号!',
  289 + showCancel: false,
  290 + })
  291 + return
  292 + }
  293 + if(!hospital.hospitalId){
  294 + wx.showModal({
  295 + title: '提示',
  296 + content: '请选择建档机构!',
  297 + showCancel: false,
  298 + })
  299 + return
  300 + }
  301 + this.setData({
  302 + pickerBoxModal:true,
  303 + postObj:{}
  304 + })
  305 + networkUtil.showLoading()
  306 + var query = {phone:value,hospitalId:0}
  307 + query.hospitalId = hospital.hospitalId;
  308 + networkUtil._get(api.getBabyAppBuildInfo,query, function(res) {
  309 + if(0 == res.data.errorcode){
  310 + if(res.data.data.length>1){
  311 + that.setData({
  312 + childList : res.data.data,
  313 + isChooseBox : false
  314 + })
  315 + }else{
  316 + let postObj = res.data.data[0];
  317 + if (postObj) {
  318 + postObj.liveType = "";
  319 + }
  320 + that.setData({
  321 + postObj : postObj,
  322 + showViewType:1
  323 + })
  324 + }
  325 + }
  326 + }, function(res) {
  327 + networkUtil.showErrorToast(res.errormsg)
  328 + })
  329 + },
  330 +
  331 + onAreaCommit(locationList, e) {//当用户更换地区
  332 + console.log('选择地址后', locationList)
  333 + var self = this;
  334 + self.addrInfo = {
  335 + province: locationList[0] || {},
  336 + city: locationList[1] || {},
  337 + area: locationList[2] || {},
  338 + street: locationList[3] || {},
  339 + }
  340 + var address = {}
  341 + address.details = ''
  342 + for (var i in locationList){
  343 + address.details += locationList[i].name
  344 + }
  345 + address.addEntry = locationList
  346 + if (e.target.dataset.name == 'currentAddress') {
  347 + self.setData({
  348 + isShow: 0,
  349 + currentAddress: address
  350 + });
  351 + } else if (e.target.dataset.name == 'currentAddress1') {
  352 + self.setData({
  353 + isShow: 0,
  354 + currentAddress1: address
  355 + });
  356 + }
  357 + },
  358 + checkForm(postData){
  359 + let flag = true;
  360 + var data = postData;
  361 + var value = "";
  362 + if(!data.mommyCardNo){
  363 + flag = false;
  364 + value += "母亲姓名 "
  365 + }
  366 + if(data.mommyCardNo&&!numberUtil.checkIdCard(data.mommyCardNo,'woman')){
  367 + flag = false;
  368 + value += "母亲身份证号码 "
  369 + }
  370 + if(!(data.phone&&numberUtil.IsTelPhoneNumber(data.phone))){
  371 + flag = false;
  372 + value += "母亲手机号 "
  373 + }
  374 + if(!data.liveType){
  375 + flag = false;
  376 + value += "居住属性 "
  377 + }
  378 + if(!data.babyName){
  379 + flag = false;
  380 + value += "儿童姓名 "
  381 + }
  382 + if (this.data.childCardShow) {
  383 + if(data.babyCard&&!numberUtil.validateIdCard(data.babyCard)){
  384 + flag = false;
  385 + value += "儿童身份证号码 "
  386 + }
  387 + }
  388 + if(!data.birth){
  389 + flag = false;
  390 + value += "出生日期 "
  391 + }
  392 + if(!data.sex){
  393 + flag = false;
  394 + value += "儿童性别 "
  395 + }
  396 + if(!data.height){
  397 + flag = false;
  398 + value += "儿童出生身长 "
  399 + }
  400 + if(!data.weight){
  401 + flag = false;
  402 + value += "儿童出生体重 "
  403 + }
  404 + if(!this.data.currentAddress.addEntry) {
  405 + flag = false;
  406 + value += "户籍地址 "
  407 + }
  408 + if(!data.babyAddress) {
  409 + flag = false;
  410 + value += "街道门牌 "
  411 + }
  412 + return {
  413 + flag:flag,
  414 + value:value
  415 + };
  416 + },
  417 + submitData () {
  418 + let hospital = this.data.queryData.hospital;
  419 + let postData = this.data.postObj;
  420 + postData.liveType = liveType;
  421 + postData.hospitalId = hospital.hospitalId;
  422 + if (this.data.currentAddress.addEntry) {
  423 + postData.babyProvinceId = this.data.currentAddress.addEntry[0].id;
  424 + postData.babyCityId = this.data.currentAddress.addEntry[1].id;
  425 + postData.babyAreaId = this.data.currentAddress.addEntry[2].id;
  426 + postData.babyStreetId = this.data.currentAddress.addEntry[3].id;
  427 + }
  428 + if (this.data.currentAddress1.addEntry) {
  429 + postData.provinceId = this.data.currentAddress1.addEntry[0].id;
  430 + postData.cityId = this.data.currentAddress1.addEntry[1].id;
  431 + postData.areaId = this.data.currentAddress1.addEntry[2].id;
  432 + postData.streetId = this.data.currentAddress1.addEntry[3].id;
  433 + }
  434 + if (postData.vcCardNo===null) {
  435 + delete postData.vcCardNo;
  436 + }
  437 + if (postData.sINCard===null) {
  438 + delete postData.sINCard;
  439 + }
  440 + var key = this.checkForm(postData);
  441 + var that = this;
  442 + if(key.flag){
  443 + this.setData({
  444 + submiting:true
  445 + })
  446 + console.log(postData)
  447 + networkUtil._post(api.addBuildArticle, postData , (res)=> {
  448 + wx.showModal({
  449 + title: '成功提交',
  450 + content: "您已成功预约建档",
  451 + showCancel: false,
  452 + submiting:false,
  453 + success: function (res){
  454 + that.setData({
  455 + babyInfo:postData,
  456 + 'babyInfo.hospitalName':that.data.queryData.hospital.hospitalName,
  457 + showViewType:2
  458 + })
  459 + }
  460 + })
  461 + }, function (res) {
  462 + wx.showModal({
  463 + title: '提交失败',
  464 + content: '错误信息:'+res.data.errormsg,
  465 + showCancel: false,
  466 + success: function (res) {
  467 + }
  468 + })
  469 + },'application/json')
  470 + }else{
  471 + wx.showModal({
  472 + title: '表单填写不规范',
  473 + content: "这些项目未正确填写:"+key.value,
  474 + showCancel: false,
  475 + success: function (res) {
  476 + }
  477 + })
  478 + }
  479 + }
  480 +}))
littleApp_child/packageA/pages/preDocumented/preDocumented.json View file @ a8788a3
  1 +{
  2 + "navigationBarTitleText": "儿童预约建档",
  3 + "navigationBarBackgroundColor": "#48C17B",
  4 + "navigationBarTextStyle": "white",
  5 + "backgroundColor": "#d8dbd4",
  6 + "pageOrientation": "auto",
  7 + "usingComponents": {}
  8 +}
littleApp_child/packageA/pages/preDocumented/preDocumented.wxml View file @ a8788a3
  1 +<!--packageA/pages/preDocumented/preDocumented.wxml-->
  2 +<view class="card">
  3 + <!--<view class="Warning" wx:if="{{showViewType == 2}}">请家长惠存儿童编码号,请截图保存此页面信息!</view>-->
  4 + <view class="query-cell" wx:if="{{showViewType != 2}}">
  5 + <view class="weui-cell">
  6 + <view class="weui-cell__hd">
  7 + <view class="weui-label line-tt">母亲手机号</view>
  8 + </view>
  9 + <view class="weui-cell__bd">
  10 + <input bindinput="bindQueryInput" id="phone" maxlength="11" type="number" placeholder="输入母亲手机号" />
  11 + </view>
  12 + </view>
  13 + <view class="weui-cell">
  14 + <view class="weui-cell__hd">
  15 + <view class="weui-label line-tt">建档医院</view>
  16 + </view>
  17 + <view class="weui-cell__bd">
  18 + <input bindinput="bindSearchHospital" type="text" bindfocus="fouseSearchHospital" value="{{selectHospital.hospitalName}}" placeholder="输入机构名称" />
  19 + </view>
  20 + </view>
  21 + <button class="query_button" bindtap="query">查询</button>
  22 + </view>
  23 + <view wx:if="{{showViewType == 1}}">
  24 + <view class="weui-cells">
  25 + <view class="weui-cell">
  26 + <view class="weui-cell__hd">
  27 + <view class="weui-label line-tt">
  28 + <text style="color:red">*</text>
  29 + 母亲姓名
  30 + </view>
  31 + </view>
  32 + <view class="weui-cell__bd">
  33 + <input bindinput="bindKeyInput" value="{{postObj.mommyName}}" id="mommyName" type="text" placeholder="输入母亲姓名" />
  34 + </view>
  35 + </view>
  36 + <view class="weui-cell">
  37 + <view class="weui-cell__hd">
  38 + <view class="weui-label line-tt">
  39 + <text style="color:red">*</text>
  40 + 母亲身份证号
  41 + </view>
  42 + </view>
  43 + <view class="weui-cell__bd">
  44 + <input bindinput="bindKeyInput" bindblur="getMomBirth" value="{{postObj.mommyCardNo}}" maxlength="18" id="mommyCardNo" type="idcard" placeholder="输入母亲证件号码" />
  45 + </view>
  46 + </view>
  47 + <view class="weui-cell">
  48 + <view class="weui-cell__hd">
  49 + <view class="weui-label line-tt">
  50 + <text style="color:red">*</text>
  51 + 母亲手机号
  52 + </view>
  53 + </view>
  54 + <view class="weui-cell__bd">
  55 + <input bindinput="bindKeyInput" maxlength="11" value="{{postObj.phone}}" id="phone" type="number" placeholder="输入母亲手机号" />
  56 + </view>
  57 + </view>
  58 + <view class="weui-cell">
  59 + <view class="weui-cell__hd">
  60 + <view class="weui-label line-tt">
  61 + <text style="color:red">*</text>
  62 + 居住属性
  63 + </view>
  64 + </view>
  65 + <view class="weui-cell__bd">
  66 + <picker bindchange="bindPickerChange" value="{{index}}" range="{{liveTypes}}">
  67 + <input disabled="true" value="{{liveTypes[index]}}" id="phone" type="number" placeholder="选择居住属性" />
  68 + </picker>
  69 + </view>
  70 + </view>
  71 + <view class="weui-cell">
  72 + <view class="weui-cell__hd">
  73 + <view class="weui-label line-tt">
  74 + 父亲姓名
  75 + </view>
  76 + </view>
  77 + <view class="weui-cell__bd">
  78 + <input bindinput="bindKeyInput" value="{{postObj.fname}}" id="fname" type="text" placeholder="输入父亲姓名" />
  79 + </view>
  80 + </view>
  81 + <view class="weui-cell">
  82 + <view class="weui-cell__hd">
  83 + <view class="weui-label line-tt">
  84 + 联系方式
  85 + </view>
  86 + </view>
  87 + <view class="weui-cell__bd">
  88 + <input bindinput="bindKeyInput" maxlength="11" value="{{postObj.fphone}}" id="fphone" type="number" placeholder="输入联系方式" />
  89 + </view>
  90 + </view>
  91 + <view class="weui-cell">
  92 + <view class="weui-cell__hd">
  93 + <view class="weui-label line-tt">
  94 + <text style="color:red">*</text>
  95 + 儿童姓名
  96 + </view>
  97 + </view>
  98 + <view class="weui-cell__bd">
  99 + <input bindinput="bindKeyInput" value="{{postObj.babyName}}" id="babyName" type="text" placeholder="输入儿童姓名" />
  100 + </view>
  101 + </view>
  102 + <view class="weui-cell">
  103 + <view class="weui-cell__hd">
  104 + <view class="weui-label line-tt">
  105 + 未入户口
  106 + </view>
  107 + </view>
  108 + <view class="weui-cell__bd">
  109 + <radio-group class="radio-group" bindchange="radioChange1">
  110 + <label class="radio" wx:for="{{items}}">
  111 + <radio value="{{item.value}}"/>
  112 + {{item.name}}
  113 + </label>
  114 + </radio-group>
  115 + </view>
  116 + </view>
  117 + <view class="weui-cell" wx:if="{{childCardShow}}">
  118 + <view class="weui-cell__hd">
  119 + <view class="weui-label line-tt">
  120 + <text style="color:red">*</text>
  121 + 儿童身份证号
  122 + </view>
  123 + </view>
  124 + <view class="weui-cell__bd">
  125 + <input bindinput="bindKeyInput" maxlength="18" value="{{postObj.babyCard}}" id="babyCard" type="number" placeholder="输入儿童身份证号" />
  126 + </view>
  127 + </view>
  128 + <view class="weui-cell">
  129 + <view class="weui-cell__hd">
  130 + <view class="weui-label line-tt">
  131 + <text style="color:red">*</text>
  132 + 儿童出生日期
  133 + </view>
  134 + </view>
  135 + <view class="weui-cell__bd">
  136 + <picker mode="date" value="{{postObj.birth}}" start="2000-01-01" end="{{endDate}}" bindchange="bindDateChange">
  137 + <view class="picker-view">
  138 + <text style="color:#909090" wx:if="{{!postObj.birth}}">请选择出生日期</text>
  139 + <text wx:if="{{postObj.birth}}">{{postObj.birth}}</text>
  140 + </view>
  141 + </picker>
  142 + </view>
  143 + </view>
  144 + <view class="weui-cell">
  145 + <view class="weui-cell__hd">
  146 + <view class="weui-label line-tt">
  147 + <text style="color:red">*</text>
  148 + 儿童性别
  149 + </view>
  150 + </view>
  151 + <view class="weui-cell__bd">
  152 + <radio-group class="radio-group" bindchange="radioChange">
  153 + <label class="radio" wx:for="{{sex}}">
  154 + <radio value="{{item.value}}" checked="{{postObj.sex == item.value}}"/>
  155 + {{item.name}}
  156 + </label>
  157 + </radio-group>
  158 + </view>
  159 + </view>
  160 + <view class="weui-cell">
  161 + <view class="weui-cell__hd">
  162 + <view class="weui-label line-tt"><text style="color:red">*</text>儿童出生身长cm</view>
  163 + </view>
  164 + <view class="weui-cell__bd">
  165 + <input bindinput="bindKeyInput" value="{{postObj.height}}" id="height" type="text" placeholder="输入儿童出生身长" />
  166 + </view>
  167 + </view>
  168 + <view class="weui-cell">
  169 + <view class="weui-cell__hd">
  170 + <view class="weui-label line-tt"><text style="color:red">*</text>儿童出生体重kg</view>
  171 + </view>
  172 + <view class="weui-cell__bd">
  173 + <input bindinput="bindKeyInput" value="{{postObj.weight}}" id="weight" type="text" placeholder="输入儿童出生体重" />
  174 + </view>
  175 + </view>
  176 + <view class="weui-cell">
  177 + <view class="weui-cell__hd">
  178 + <view class="weui-label line-tt">
  179 + 户口性质
  180 + </view>
  181 + </view>
  182 + <view class="weui-cell__bd">
  183 + <radio-group class="radio-group" bindchange="radioChange2">
  184 + <label class="radio" wx:for="{{quality}}">
  185 + <radio value="{{item.value}}" checked="{{postObj.babyAccountNature == item.value}}"/>
  186 + {{item.name}}
  187 + </label>
  188 + </radio-group>
  189 + </view>
  190 + </view>
  191 + <view class="weui-cell">
  192 + <view class="weui-cell__hd">
  193 + <view class="weui-label line-tt"><text style="color:red">*</text>户籍地址</view>
  194 + </view>
  195 + <view class="weui-cell__bd">
  196 + <view wx:if="{{!currentAddress.details}}" class="add_picker__text" style="font-size:14px;" bindtap="showAreaSelector" id="currentAddress"
  197 + data-name="currentAddress">请选择省市区(县)</view>
  198 + <view name="provinceCityArea" wx:if="{{currentAddress.details}}" style="font-size:14px;" class="add_picker__text" bindtap="showAreaSelector"
  199 + data-name="currentAddress">{{currentAddress.details}}</view>
  200 + </view>
  201 + </view>
  202 + <view class="weui-cell">
  203 + <view class="weui-cell__hd">
  204 + <view class="weui-label line-tt"><text style="color:red">*</text>街道门牌</view>
  205 + </view>
  206 + <view class="weui-cell__bd">
  207 + <input bindinput="bindKeyInput" value="{{postObj.babyAddress}}" id="babyAddress" type="text" placeholder="输入街道门牌" />
  208 + </view>
  209 + </view>
  210 +
  211 + <view class="weui-cell">
  212 + <view class="weui-cell__hd">
  213 + <view class="weui-label line-tt">家庭住址</view>
  214 + </view>
  215 + <view class="weui-cell__bd">
  216 + <view wx:if="{{!currentAddress1.details}}" class="add_picker__text" style="font-size:14px;" bindtap="showAreaSelector" id="currentAddress"
  217 + data-name="currentAddress1">请选择省市区(县)</view>
  218 + <view name="provinceCityArea" wx:if="{{currentAddress1.details}}" style="font-size:14px;" class="add_picker__text" bindtap="showAreaSelector"
  219 + data-name="currentAddress1">{{currentAddress1.details}}</view>
  220 + </view>
  221 + </view>
  222 + <view class="weui-cell">
  223 + <view class="weui-cell__hd">
  224 + <view class="weui-label line-tt">街道门牌</view>
  225 + </view>
  226 + <view class="weui-cell__bd">
  227 + <input bindinput="bindKeyInput" value="{{postObj.address}}" id="address" type="text" placeholder="输入街道门牌" />
  228 + </view>
  229 + </view>
  230 + </view>
  231 + <view>
  232 + <button class="we_button archives" disabled="{{submiting}}" bindtap="submitData">提交建档</button>
  233 + </view>
  234 + </view>
  235 + <view wx:if="{{showViewType == 2}}">
  236 + <view class="weui-cells">
  237 + <view class="weui-cell">
  238 + <view class="weui-cell__hd">
  239 + <view class="weui-label line-tt">
  240 + 母亲姓名
  241 + </view>
  242 + </view>
  243 + <view class="weui-cell__bd">
  244 + <text>{{babyInfo.mommyName}}</text>
  245 + </view>
  246 + </view>
  247 + <view class="weui-cell">
  248 + <view class="weui-cell__hd">
  249 + <view class="weui-label line-tt">
  250 + 母亲身份证号码
  251 + </view>
  252 + </view>
  253 + <view class="weui-cell__bd">
  254 + <text>{{babyInfo.mommyCardNo}}</text>
  255 + </view>
  256 + </view>
  257 + <view class="weui-cell">
  258 + <view class="weui-cell__hd">
  259 + <view class="weui-label line-tt">
  260 + 母亲手机号
  261 + </view>
  262 + </view>
  263 + <view class="weui-cell__bd">
  264 + <text>{{babyInfo.phone}}</text>
  265 + </view>
  266 + </view>
  267 + <view class="weui-cell">
  268 + <view class="weui-cell__hd">
  269 + <view class="weui-label line-tt">
  270 + 居住属性
  271 + </view>
  272 + </view>
  273 + <view class="weui-cell__bd">
  274 + <text wx:if="{{babyInfo.liveType==='57624c440cf23d4631523ea1'}}">常住</text>
  275 + <text wx:if="{{babyInfo.liveType==='57624c5e0cf23d4631523ea2'}}">流动</text>
  276 + <text wx:if="{{babyInfo.liveType==='5a371bce0cf2ab082ac30433'}}">暂住</text>
  277 + <text wx:if="{{babyInfo.liveType==='62270e679932d29c07242e4f'}}">有居住证</text>
  278 + </view>
  279 + </view>
  280 + <view class="weui-cell">
  281 + <view class="weui-cell__hd">
  282 + <view class="weui-label line-tt">
  283 + 父亲姓名
  284 + </view>
  285 + </view>
  286 + <view class="weui-cell__bd">
  287 + <text>{{babyInfo.fname}}</text>
  288 + </view>
  289 + </view>
  290 + <view class="weui-cell">
  291 + <view class="weui-cell__hd">
  292 + <view class="weui-label line-tt">
  293 + 联系方式
  294 + </view>
  295 + </view>
  296 + <view class="weui-cell__bd">
  297 + <text>{{babyInfo.fphone}}</text>
  298 + </view>
  299 + </view>
  300 + <view class="weui-cell">
  301 + <view class="weui-cell__hd">
  302 + <view class="weui-label line-tt">
  303 + 儿童姓名
  304 + </view>
  305 + </view>
  306 + <view class="weui-cell__bd">
  307 + <text>{{babyInfo.babyName}}</text>
  308 + </view>
  309 + </view>
  310 + <view class="weui-cell">
  311 + <view class="weui-cell__hd">
  312 + <view class="weui-label line-tt">
  313 + 身份证号
  314 + </view>
  315 + </view>
  316 + <view class="weui-cell__bd">
  317 + <text>{{babyInfo.babyCard}}</text>
  318 + </view>
  319 + </view>
  320 + <view class="weui-cell">
  321 + <view class="weui-cell__hd">
  322 + <view class="weui-label line-tt">
  323 + 儿童出生日期
  324 + </view>
  325 + </view>
  326 + <view class="weui-cell__bd">
  327 + <text>{{babyInfo.birth}}</text>
  328 + </view>
  329 + </view>
  330 + <view class="weui-cell">
  331 + <view class="weui-cell__hd">
  332 + <view class="weui-label line-tt">
  333 + 儿童性别
  334 + </view>
  335 + </view>
  336 + <view class="weui-cell__bd">
  337 + <text>{{babyInfo.sex=='1'?'男':'女'}}</text>
  338 + </view>
  339 + </view>
  340 + <view class="weui-cell">
  341 + <view class="weui-cell__hd">
  342 + <view class="weui-label line-tt">
  343 + 儿童出生身长cm
  344 + </view>
  345 + </view>
  346 + <view class="weui-cell__bd">
  347 + <text>{{babyInfo.height}}</text>
  348 + </view>
  349 + </view>
  350 + <view class="weui-cell">
  351 + <view class="weui-cell__hd">
  352 + <view class="weui-label line-tt">
  353 + 儿童出生体重kg
  354 + </view>
  355 + </view>
  356 + <view class="weui-cell__bd">
  357 + <text>{{babyInfo.weight}}</text>
  358 + </view>
  359 + </view>
  360 +
  361 + <view class="weui-cell">
  362 + <view class="weui-cell__hd">
  363 + <view class="weui-label line-tt">户口性质</view>
  364 + </view>
  365 + <view class="weui-cell__bd">
  366 + <text wx:if="{{babyInfo.babyAccountNature==='1'||babyInfo.babyAccountNature===1}}">农业</text>
  367 + <text wx:if="{{babyInfo.babyAccountNature==='2'||babyInfo.babyAccountNature===2}}">非农业</text>
  368 + </view>
  369 + </view>
  370 + <view class="weui-cell">
  371 + <view class="weui-cell__hd">
  372 + <view class="weui-label line-tt">户籍地址</view>
  373 + </view>
  374 + <view class="weui-cell__bd">
  375 + <text>
  376 + {{currentAddress.details?currentAddress.details:''}}
  377 + </text>
  378 + </view>
  379 + </view>
  380 + <view class="weui-cell">
  381 + <view class="weui-cell__hd">
  382 + <view class="weui-label line-tt">街道门牌</view>
  383 + </view>
  384 + <view class="weui-cell__bd">
  385 + <text>{{babyInfo.babyAddress?babyInfo.babyAddress:''}}</text>
  386 + </view>
  387 + </view>
  388 + <view class="weui-cell">
  389 + <view class="weui-cell__hd">
  390 + <view class="weui-label line-tt">家庭住址</view>
  391 + </view>
  392 + <view class="weui-cell__bd">
  393 + <text>{{currentAddress1.details?currentAddress1.details:''}}</text>
  394 + </view>
  395 + </view>
  396 + <view class="weui-cell">
  397 + <view class="weui-cell__hd">
  398 + <view class="weui-label line-tt">街道门牌</view>
  399 + </view>
  400 + <view class="weui-cell__bd">
  401 + <text>{{babyInfo.address?babyInfo.address:''}}</text>
  402 + </view>
  403 + </view>
  404 + <view class="weui-cell">
  405 + <view class="weui-cell__hd">
  406 + <view class="weui-label line-tt">建档医院</view>
  407 + </view>
  408 + <view class="weui-cell__bd">
  409 + <text>{{babyInfo.hospitalName}}</text>
  410 + </view>
  411 + </view>
  412 + </view>
  413 + <!-- <view>
  414 + <button class="we_button archives" bindtap="submitData">提交建档</button>
  415 + </view> -->
  416 + </view>
  417 +</view>
  418 + <!-- 选择儿童弹窗 -->
  419 +<modal hidden="{{isChooseBox}}" title="选择建档儿童" confirm-text="确认" cancel-text="取消" bindcancel="cancel" bindconfirm="submitSelect">
  420 + <radio-group bindchange="radioChildChange">
  421 + <label class="weui-cell weui-check__label" wx:for="{{childList}}" wx:key="{{item.id}}">
  422 + <view class="weui-cell__hd">
  423 + <radio value="{{item.id}}" />
  424 + </view>
  425 + <view class="weui-cell__bd">{{item.babyName}} {{item.birth}}</view>
  426 + </label>
  427 + </radio-group>
  428 +</modal>
  429 + <!-- 选择儿童弹窗 -->
  430 + <!-- 医院选择框 -->
  431 +<view hidden="{{pickerBoxModal}}" class="pickerBox" style="bottom:{{bottom}}px">
  432 + <view class="pickerButBox">
  433 + <text class="pickerButText pickerButCencle" bindtap="cancelSelect">取消</text>
  434 + <text class="pickerButText pickerButSub" bindtap="confirmSelect">确定</text>
  435 + </view>
  436 + <picker-view indicator-style="height: 38px;" style="width: 100%; height: 260px;" value="{{queryData.hospitalId}}" bindchange="bindHospitalChange">
  437 + <picker-view-column>
  438 + <view wx:for="{{SearchHospitals}}" wx:key="{{hospitalId}}" style="line-height: 38px; text-align: center;">{{item.hospitalName}}</view>
  439 + </picker-view-column>
  440 + </picker-view>
  441 +</view>
  442 + <!-- 医院选择框 -->
  443 +
  444 + <!--引入选择器布局-->
  445 +<include src="../../../utils/areaSelector/selector.wxml" />
littleApp_child/packageA/pages/preDocumented/preDocumented.wxss View file @ a8788a3
  1 +/* packageA/pages/preDocumented/preDocumented.wxss */
  2 +@import "../../../utils/areaSelector/selector.wxss";
  3 +.Warning{
  4 + font-size: 14px;
  5 + padding-left: 10px;
  6 + color: #fff;
  7 + background-color: #ffc862;
  8 +}
  9 +.weui-cells{
  10 + padding-right:15px;
  11 +}
  12 +.weui-cell{
  13 + padding: 10px 0 10px 10px;
  14 +}
  15 +.page-tt{
  16 + font-size: 18px;
  17 +}
  18 +.weui-cells{
  19 + margin-top:0;
  20 +}
  21 +.weui-cell__ft{
  22 + font-size: 14px;
  23 + color: #333;
  24 +}
  25 +.weui-label{
  26 + display: block;
  27 + width: 120px!important;
  28 +}
  29 +.line-tt{
  30 + padding-left: 5px;
  31 + color: #505050;
  32 + font-size: 14px;
  33 +}
  34 +.select-placeholder{
  35 + color: #c0c0c0;
  36 + font-size: 14px;
  37 +}
  38 +.query-cell{
  39 + background-color: #fff;
  40 + margin: 5px 0px 10px 0px;
  41 +}
  42 +.query_button {
  43 + margin-top:10px;
  44 + font: medium;
  45 + font-size: 16px;
  46 + color: #fff;
  47 + width: 30%;
  48 + height: 38px;
  49 + line-height: 38px;
  50 + border-radius: 9rpx;
  51 + background-color: #48C17B;
  52 + display: inline-block;
  53 + text-align: center;
  54 + margin-top: 3px;
  55 + align-items: center;
  56 + margin-left:3%;
  57 +}
  58 +.we_button {
  59 + margin-top:20px;
  60 + font: medium;
  61 + font-size: 16px;
  62 + color: white;
  63 + width: 60%;
  64 + margin-left:20%;
  65 + height: 38px;
  66 + line-height: 38px;
  67 + border-radius: 19px;
  68 + background-color: #48C17B;
  69 + display: inline-block;
  70 + text-align: center;
  71 + /* position: fixed; */
  72 +}
  73 +.picker-view{
  74 + font-size: 14px;
  75 +}
  76 +.radio-group{
  77 + font-size: 14px;
  78 +}
  79 +.radio{
  80 + width: 90px;
  81 + display: inline-block;
  82 +}
  83 +radio{
  84 + transform:scale(0.8);
  85 +}
  86 +.pickerBox{
  87 + position: fixed;
  88 + bottom: 0;
  89 + width: 100%;
  90 + z-index: 10;
  91 + background: #fff;
  92 +}
  93 +.pickerButBox{
  94 + height: 38px;
  95 + line-height: 38px;
  96 + border-bottom: 1px solid #e7e7e7;
  97 + width: 100%;
  98 + background-color: #fff;
  99 +}
  100 +.pickerButText{
  101 + font-size: 16px;
  102 + margin: 0 10px
  103 +}
  104 +.pickerButCencle{
  105 + float: left;
  106 + color: #333;
  107 +}
  108 +.pickerButSub{
  109 + float: right;
  110 + color: #48C17B;
  111 +}
littleApp_child/pages/home/home.js View file @ a8788a3
... ... @@ -184,6 +184,11 @@
184 184 }
185 185  
186 186 },
  187 + toPreDoc () {
  188 + wx.navigateTo({
  189 + url: '/packageA/pages/preDocumented/preDocumented'
  190 + })
  191 + },
187 192 getNameFocus: function() {
188 193 var self = this
189 194 var inputFocus = {
littleApp_child/pages/home/home.wxml View file @ a8788a3
... ... @@ -211,6 +211,7 @@
211 211 <button class="we_button checkinput" bindtap="toQuickArchives">儿童建档</button>
212 212 <button class="we_button ilnessArchives" bindtap="toIllnessArchives">儿童疾病建档</button>
213 213 <!-- <button class="we_button checkinput" bindtap="toCheckInput">问诊录入</button> -->
  214 + <button class="we_button ilnessArchives" style="margin-left: 5%;" bindtap="toPreDoc">儿童预约建档</button>
214 215 </view>
215 216  
216 217 <!-- <view style='height:108px;'></view> -->
littleApp_child/pages/hospitalList/hospitalList.js View file @ a8788a3
... ... @@ -40,7 +40,7 @@
40 40 // this.getUserLocation()
41 41 // this.requestData()
42 42 },
43   -
  43 +
44 44 onUnload:function(e){
45 45 page = 0
46 46 },
... ... @@ -48,25 +48,25 @@
48 48 // 获取地理位置
49 49 getUserLocation() {
50 50 var self = this
51   - wx.getLocation({
52   - type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
53   - success: function (res) {
54   - // success
55   - console.log(res)
56   - latitude = res.latitude
57   - longitude = res.longitude
58   - self.requestData()
59   - },
60   - fail: function (res) {
61   - // fail
62   - console.log(res)
63   - self.requestData()
64   - },
65   - complete: function (res) {
66   - // complete
67   - console.log(res)
68   - }
69   - })
  51 + // wx.getLocation({
  52 + // type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
  53 + // success: function (res) {
  54 + // // success
  55 + // console.log(res)
  56 + // latitude = res.latitude
  57 + // longitude = res.longitude
  58 + // self.requestData()
  59 + // },
  60 + // fail: function (res) {
  61 + // // fail
  62 + // console.log(res)
  63 + // self.requestData()
  64 + // },
  65 + // complete: function (res) {
  66 + // // complete
  67 + // console.log(res)
  68 + // }
  69 + // })
70 70 // latitude = 115.52
71 71 // longitude = 38.23
72 72 },
... ... @@ -75,7 +75,7 @@
75 75 var param = { page: page, limit: 15, lat: latitude, lng: longitude}
76 76 networkUtil._get(api.hospitals, param, function (res) {
77 77 console.log(res)
78   -
  78 +
79 79 var sumCount = self.paging(res.data.list)
80 80 if (sumCount < 15) {
81 81 hasMore = false
... ... @@ -91,7 +91,7 @@
91 91 } else {
92 92 arr = res.data.list
93 93 }
94   -
  94 +
95 95 self.setData({
96 96 hospitalList: arr,
97 97 hasMore: hasMore
littleApp_child/project.config.json View file @ a8788a3
... ... @@ -4,7 +4,7 @@
4 4 "ignore": []
5 5 },
6 6 "setting": {
7   - "urlCheck": true,
  7 + "urlCheck": false,
8 8 "es6": true,
9 9 "enhance": true,
10 10 "postcss": true,
littleApp_child/utils/apiFile.js View file @ a8788a3
... ... @@ -89,6 +89,8 @@
89 89 goodsbuy: 'goods/buy',
90 90 //儿童建档-提交建档信息
91 91 addBabyInfo:'baby/addBabyInfo',
  92 + // 儿童建档-预约建档
  93 + addBuildArticle: 'baby/babyBuildArticle',
92 94 //儿童建档-修改户籍地址
93 95 editAddress: '/baby/updateKosekiInfo',
94 96 //儿童疾病护理获取医生列表
littleApp_child/utils/network_util.js View file @ a8788a3
... ... @@ -17,7 +17,7 @@
17 17 case 3:
18 18 return 'https://weixin-bj.healthbaby.com.cn/';
19 19 case 4:
20   - return 'http://192.168.2.5:9090/member/'
  20 + return 'http://localhost:9090/mombaby/'
21 21 }
22 22 }
23 23  
littleApp_child/utils/numberUtil.js View file @ a8788a3
... ... @@ -2,10 +2,10 @@
2 2  
3 3 // 判断手机号
4 4 function IsTelPhoneNumber(Tel){
5   - if(!(/^1\d{10}$/.test(Tel))){
6   -
7   - return false;
8   - }
  5 + if(!(/^1\d{10}$/.test(Tel))){
  6 +
  7 + return false;
  8 + }
9 9 return true
10 10 }
11 11  
... ... @@ -29,7 +29,7 @@
29 29  
30 30 // 计算2天的时间间隔
31 31 function calculateTimeInterval(before,later){
32   -
  32 +
33 33 var laterDate = new Date(later)
34 34 var beforeDate = new Date(before)
35 35 // 去掉多余的时分秒
... ... @@ -71,7 +71,7 @@
71 71 color:'page3_-image_qingdu_y_n@3x.png'},{name:'严重风险',
72 72 color:'page3_-image_yanzhong_p_n@3x.png'},{name:'健康',
73 73 color:'page3_-image_jiankang_g_n@3x.png'}]
74   - // 健康 轻度 中度 重度 严重
  74 + // 健康 轻度 中度 重度 严重
75 75 if(level&8){
76 76 return highRiskLevel[3]
77 77 }
... ... @@ -92,7 +92,7 @@
92 92  
93 93 function home_getRiskInfo(level){
94 94 var color = [{image:'../../source/imageSource/page1_yunqi_green_Image@3x.png',color:'#43bf67'},{image:'../../source/imageSource/page1_yunqi_yellow_Image_n@3x.png',color:'#ffb42e'},{image:'../../source/imageSource/page1_yunqi_orange_Image_n@3x.png',color:'#ff7f29'},{image:'../../source/imageSource/page1_yunqi_red_Image_n@3x.png',color:'#ff6969'},{image:'../../source/imageSource/page1_yunqi_purple_Image_n@3x.png',color:'#c65dbc'}]
95   - // 健康 轻度 中度 重度 严重
  95 + // 健康 轻度 中度 重度 严重
96 96 if(level&8){
97 97 return color[4]
98 98 }
... ... @@ -111,67 +111,67 @@
111 111 return color[0]
112 112 }
113 113  
114   -function DateAdd(interval,number,date)
115   -{
116   -/*
117   - * 功能:实现Script的DateAdd功能.
118   - * 参数:interval,字符串表达式,表示要添加的时间间隔.
119   - * 参数:number,数值表达式,表示要添加的时间间隔的个数.
120   - * 参数:date,时间对象.
121   - * 返回:新的时间对象.
122   - * var now = new Date();
123   - * var newDate = DateAdd( "d ",5,now);
124   - *--------------- DateAdd(interval,number,date) -----------------
125   - */
126   - switch(interval)
127   - {
128   - case "y " : {
129   - date.setFullYear(date.getFullYear()+number);
130   - return date;
131   - break;
132   - }
133   - case "q " : {
134   - date.setMonth(date.getMonth()+number*3);
135   - return date;
136   - break;
137   - }
138   - case "m " : {
139   - date.setMonth(date.getMonth()+number);
140   - return date;
141   - break;
142   - }
143   - case "w " : {
144   - date.setDate(date.getDate()+number*7);
145   - return date;
146   - break;
147   - }
148   - case "d " : {
149   - date.setDate(date.getDate()+number);
150   - return date;
151   - break;
152   - }
153   - case "h " : {
154   - date.setHours(date.getHours()+number);
155   - return date;
156   - break;
157   - }
158   - case "m " : {
159   - date.setMinutes(date.getMinutes()+number);
160   - return date;
161   - break;
162   - }
163   - case "s " : {
164   - date.setSeconds(date.getSeconds()+number);
165   - return date;
166   - break;
167   - }
168   - default : {
169   - date.setDate(date.getDate()+number);
170   - return date;
171   - break;
172   - }
173   - }
174   -}
  114 +function DateAdd(interval,number,date)
  115 +{
  116 +/*
  117 + * 功能:实现Script的DateAdd功能.
  118 + * 参数:interval,字符串表达式,表示要添加的时间间隔.
  119 + * 参数:number,数值表达式,表示要添加的时间间隔的个数.
  120 + * 参数:date,时间对象.
  121 + * 返回:新的时间对象.
  122 + * var now = new Date();
  123 + * var newDate = DateAdd( "d ",5,now);
  124 + *--------------- DateAdd(interval,number,date) -----------------
  125 + */
  126 + switch(interval)
  127 + {
  128 + case "y " : {
  129 + date.setFullYear(date.getFullYear()+number);
  130 + return date;
  131 + break;
  132 + }
  133 + case "q " : {
  134 + date.setMonth(date.getMonth()+number*3);
  135 + return date;
  136 + break;
  137 + }
  138 + case "m " : {
  139 + date.setMonth(date.getMonth()+number);
  140 + return date;
  141 + break;
  142 + }
  143 + case "w " : {
  144 + date.setDate(date.getDate()+number*7);
  145 + return date;
  146 + break;
  147 + }
  148 + case "d " : {
  149 + date.setDate(date.getDate()+number);
  150 + return date;
  151 + break;
  152 + }
  153 + case "h " : {
  154 + date.setHours(date.getHours()+number);
  155 + return date;
  156 + break;
  157 + }
  158 + case "m " : {
  159 + date.setMinutes(date.getMinutes()+number);
  160 + return date;
  161 + break;
  162 + }
  163 + case "s " : {
  164 + date.setSeconds(date.getSeconds()+number);
  165 + return date;
  166 + break;
  167 + }
  168 + default : {
  169 + date.setDate(date.getDate()+number);
  170 + return date;
  171 + break;
  172 + }
  173 + }
  174 +}
175 175  
176 176 function getMonthAllDayWithDate(date){
177 177 //d.getMonth()+1代表下个月,月份索引从0开始,即当前月为6月时,getMonth()返回值为5,创建日期时同理
... ... @@ -192,7 +192,7 @@
192 192 }
193 193 f = Math.round(x * 100) / 100;
194 194 return f;
195   -}
  195 +}
196 196  
197 197 // 获取最近一周
198 198 function getLatestWeek() {
... ... @@ -215,7 +215,7 @@
215 215 }
216 216 }
217 217 return weekList;
218   -}
  218 +}
219 219  
220 220 function getLatestMonth() {
221 221 var list = []
... ... @@ -230,7 +230,7 @@
230 230 list.push(dayInfo)
231 231 }
232 232 return list;
233   -}
  233 +}
234 234  
235 235 /**
236 236 * 检查身份证合法
... ... @@ -421,6 +421,128 @@
421 421 return false;
422 422 }
423 423  
  424 +function validateIdCard(idCard){
  425 + var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
  426 + 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
  427 + 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",
  428 + 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",
  429 + 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
  430 + 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
  431 + };
  432 + //是否为空
  433 + if(idCard === ''){
  434 + return false;
  435 + }
  436 + //校验长度,类型
  437 + if(isCardNo(idCard) === false){
  438 + return false;
  439 + }
  440 + //检查省份
  441 + if(checkProvince(idCard,vcity) === false){
  442 + return false;
  443 + }
  444 + //校验生日
  445 + if(checkBirthday(idCard) === false){
  446 + return false;
  447 + }
  448 + //检验位的检测
  449 + if(checkParity(idCard) === false){
  450 + return false;
  451 + }
  452 + return true;
  453 +}
  454 +function isCardNo(card){
  455 + //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
  456 + var reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
  457 + if(reg.test(card) === false){
  458 + return false;
  459 + }
  460 + return true;
  461 +}
  462 +function checkProvince(card,vcity){
  463 + var province = card.substr(0,2);
  464 + if(vcity[province] == undefined){
  465 + return false;
  466 + }
  467 + return true;
  468 +};
  469 +function checkBirthday(card){
  470 + var len = card.length;
  471 + //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
  472 + if(len == '15'){
  473 + var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
  474 + var arr_data = card.match(re_fifteen);
  475 + var year = arr_data[2];
  476 + var month = arr_data[3];
  477 + var day = arr_data[4];
  478 + var birthday = new Date('19'+year+'/'+month+'/'+day);
  479 + return verifyBirthday('19'+year,month,day,birthday);
  480 + }
  481 + //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
  482 + if(len == '18'){
  483 + var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X|x)$/;
  484 + var arr_data = card.match(re_eighteen);
  485 + var year = arr_data[2];
  486 + var month = arr_data[3];
  487 + var day = arr_data[4];
  488 + var birthday = new Date(year+'/'+month+'/'+day);
  489 + return verifyBirthday(year,month,day,birthday);
  490 + }
  491 + return false;
  492 +};
  493 +function verifyBirthday(year,month,day,birthday)
  494 +{
  495 + var now = new Date();
  496 + var now_year = now.getFullYear();
  497 + //年月日是否合理
  498 + if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)
  499 + {
  500 + //判断年份的范围(0岁到100岁之间)
  501 + var time = now_year - year;
  502 + if(time >= 0 && time <= 100)
  503 + {
  504 + return true;
  505 + }
  506 + return false;
  507 + }
  508 + return false;
  509 +}
  510 +function checkParity(card){
  511 + //15位转18位
  512 + card = changeFivteenToEighteen(card);
  513 + var len = card.length;
  514 + if(len == '18'){
  515 + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  516 + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  517 + var cardTemp = 0, i, valnum;
  518 + for(i = 0; i < 17; i ++) {
  519 + cardTemp += card.substr(i, 1) * arrInt[i];
  520 + }
  521 + valnum = arrCh[cardTemp % 11];
  522 + if (valnum == card.substr(17, 1).toLocaleUpperCase())
  523 + {
  524 + return true;
  525 + }
  526 + return false;
  527 + }
  528 + return false;
  529 +}
  530 +function changeFivteenToEighteen(card){
  531 + if(card.length == '15')
  532 + {
  533 + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  534 + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  535 + var cardTemp = 0, i;
  536 + card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);
  537 + for(i = 0; i < 17; i ++)
  538 + {
  539 + cardTemp += card.substr(i, 1) * arrInt[i];
  540 + }
  541 + card += arrCh[cardTemp % 11];
  542 + return card;
  543 + }
  544 + return card;
  545 +}
424 546  
425 547 module.exports = {
426 548 // 判断是不是手机号
... ... @@ -434,7 +556,7 @@
434 556 // 计算孕周余天
435 557 calculateGestationalWeekDay : calculateGestationalWeekDay,
436 558 home_getRiskInfo : home_getRiskInfo,
437   -
  559 +
438 560 healthRating_getRiskInfo : healthRating_getRiskInfo,
439 561 DateAdd : DateAdd,
440 562 // 保留一位小数
... ... @@ -442,6 +564,7 @@
442 564 getMonthAllDayWithDate: getMonthAllDayWithDate,
443 565 getLatestWeek: getLatestWeek,
444 566 getLatestMonth: getLatestMonth,
445   - checkIdCard: checkIdCard
  567 + checkIdCard: checkIdCard,
  568 + validateIdCard: validateIdCard
446 569 }