Commit ecb1bc0b authored by gengchunlei's avatar gengchunlei

提交

parent 114368d3
NODE_ENV=dev
VUE_APP_BASE_URL1 = http://192.168.1.132:8889
VUE_APP_BASE_URL1 = http://192.168.3.9:8889
VUE_APP_BASE_URL = https://beta-yjservice.yiboshi.com
VUE_APP_BASE_URL1 = https://yaoju-service.yiboshi.com
......@@ -14,7 +14,7 @@
src="https://webapi.amap.com/maps?v=1.4.15&key=e8a56e9582dbac15d801174310ea43d7"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
<!-- <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script>-->
<!--<script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script>-->
<title>云南省免费提供避孕药具服务平台</title>
<!-- <script>-->
<!-- //声明_czc对象:-->
......
......@@ -10,6 +10,7 @@ import ReceiveSuccess from '../views/receiveSuccess'
import ManualCollection from "../views/medicalCollection/manualCollection";
import ManualSuccess from "../views/medicalCollection/manualSuccess";
import ManualDistribution from '../views/manualDistribution/manualDistribution'
import ReClaim from '../views/reClaim'
Vue.use(VueRouter)
......@@ -24,6 +25,7 @@ const routes = [
{path: '/resident/manualDistribution', name: 'manualDistribution', component: ManualDistribution},
{path: '/manualCollection', name: 'manualCollection', component: ManualCollection},
{path: '/manualSuccess', name: 'manualSuccess', component: ManualSuccess},
{path: '/reClaim', name: 'reClaim', component: ReClaim},
]
......
......@@ -97,6 +97,11 @@ export const getManualNetworkMedical = params => {
return apiInstance.get(`/stock-info/v1/api/phone-h5/stock-basic-info/phone-network-stock-info`, {params})
}
//获取重新领取可申领列表
export const getReClaimList = params => {
return apiInstance.get(`/stock-info/v1/api/phone-h5/stock-provide-record/anew-page-by-provide-id`, {params})
}
//人工网点领取
export const addManualMedicalRecord = params => {
return apiInstance.post(`/stock-info/v1/api/phone-h5/admin/stock-provide-record/artificial-receive`, params)
......
......@@ -53,3 +53,81 @@ export function callMobile(handlerInterface, parameters) {
}
}
}
// 验证身份证号 带校验位
export const validateIdCard = (idCard) => {
let flag = false;
// 15位和18位身份证号码的正则表达式
const regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
// 如果通过该验证,说明身份证格式正确,但准确性还需计算
if (regIdCard.test(idCard)) {
if (idCard.length === 18) {
const idCardWi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 将前17位加权因子保存在数组里
const idCardY = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 这是除以11后,可能产生的11位余数、验证码,也保存成数组
let idCardWiSum = 0; // 用来保存前17位各自乖以加权因子后的总和
for (let i = 0; i < 17; i++) {
idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
}
const idCardMod = idCardWiSum % 11; // 计算出校验码所在数组的位置
const idCardLast = idCard.substring(17); // 得到最后一位身份证号码
// 如果等于2,则说明校验码是10,身份证号码最后一位应该是X
if (idCardMod === 2) {
flag = idCardLast === 'X' || idCardLast === 'x';
} else {
// 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
flag = idCardLast === ToString(idCardY[idCardMod]);
}
}
} else {
flag = false;
}
return flag;
};
/**
* 身份证带校验位验证
* @param type 0 不限男女 1 男 2 女
*/
// 身份证正则
export const idCardReg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;
// 男性身份证正则
export const menIdCardReg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[1|3|5|7|9][0-9Xx]$)/;
// 女性身份证正则
export const womenIdCardReg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0|2|4|6|8][0-9Xx]$)/;
export const idCardValidator = (value) => {
const reg = [idCardReg, menIdCardReg, womenIdCardReg][0];
const val = value.trim();
const flag = validateIdCard(value);
if ((!flag || !reg.test(value)) && val) {
return new Promise(resolve => {
resolve(false)
})
}
new Promise(resolve => {
resolve(true)
})
};
//身份证方法校验
export const idCardV = (value, type = 0)=> {
const reg = [idCardReg, menIdCardReg, womenIdCardReg][type];
const val = value.trim();
const flag = validateIdCard(value);
if ((!flag || !reg.test(value)) && val) {
return false
}
return true
}
// 转换字符串
export const ToString = str => {
if (str === 0) {
return "0";
}
str = str || "";
return str.toString();
};
......@@ -85,9 +85,9 @@
>
<div class="content" v-for="item in lossDetailInfo" :key="item.id">
<!--可重新申领列表-->
<div class="title" style="display:flex;justify-content: space-between;align-items: center">
<div><span>{{item.medicalName}}</span></div>
<div v-if="item.lossAuditStatus === 0" style="min-width: 42px">
<div class="title" style="display:flex;justify-content: space-between;align-items: flex-start">
<div style="word-break: break-all"><span>{{item.medicalName}}</span></div>
<!--<div v-if="item.lossAuditStatus === 0" style="min-width: 42px">
<div style="color: #FA8C16;">待审核</div>
</div>
<div v-if="item.lossAuditStatus === 1" style="min-width: 42px">
......@@ -95,6 +95,10 @@
</div>
<div v-if="item.lossAuditStatus === 2" style="min-width: 60px">
<div style="border: 1px solid #F5222D;color: #F5222D;padding: 0px 8px">已驳回</div>
</div>-->
<div style="min-width: 110px" v-if="item.isShow">
<div class="sub1" @click="toApply(item)" style="white-space: nowrap">领取其他药具</div>
</div>
</div>
<div class="flex_center" @click="getCheckLossInfo(item)">
......@@ -464,7 +468,6 @@
this.$notify({ type: 'success', message: '申请成功!' ,className: 'toastIndex',});
} else {
this.$notify({ type: 'danger', message: '申请失败!' , className: 'toastIndex',});
}
}).finally(() => {
this.btnLoad = false
......@@ -500,6 +503,12 @@
this.adverseReaction = [...this.adverseReaction]
}
},
toApply(record) {//领取该品类下的其他药具
let par = {
...record,
}
this.$router.push({path:`/reClaim`,query: par})
}
},
beforeDestroy() {
......@@ -683,6 +692,16 @@
margin: 15px auto;
/*margin-left: calc(50% - 100px) ;*/
}
.sub1 {
/*background: #1bd09f;*/
/*width: 70px;*/
color: #1890FF!important;
border: 1px solid #1890FF;
padding: 2px 3px;
border-radius: 2px;
text-align: center;
margin: 0px 0px 0px 0px;
}
</style>
<style lang="less">
......
<template>
<div>
<div class="success-img">
<img src="./../../assets/img/noHave.png"/>
<img style="width: 160px;height: 160px" src="./../../assets/img/empty-image-default.png"/>
<div class="tips">
<slot name="content">暂无数据...</slot>
</div>
</div>
<div class="backHome">
<!--<div class="backHome">
<slot name="btn">
<mt-button type="primary" @click="backHome">返回首页</mt-button>
</slot>
</div>
</div>-->
</div>
</template>
......
......@@ -46,7 +46,7 @@
<script>
import {Toast} from 'mint-ui'
import {getQueryVariable} from "../../utils/common";
import {getQueryVariable, idCardV} from "../../utils/common";
import {getCheckShortMessage, getShortMessage, getUserInfoByIdCard} from "../../utils/api";
import NoData from "../component/noData";
export default {
......@@ -119,7 +119,8 @@
var ckPhone = /^1(?:3[0-9]|4[5-9]|5[0-9]|6[12456]|7[0-8]|8[0-9]|9[0-9])[0-9]{8}$/;
var cktel = /^0[1-9][0-9]{1,2}-[2-8][0-9]{6,7}$/;
let idCardResult = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(this.formData.idCar)
if (!idCardResult) {
let idCardRes = idCardV(this.formData.idCar)
if (!idCardResult || !idCardRes) {
return Toast({
message: '请输入正确的身份证号!',
duration: 2000
......
......@@ -108,8 +108,8 @@
class="res_input"
placeholder="请输入领取人身份证号码(必填)"
:rules="[
{ required: true, message: '请填身份证号码' },
{ pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i, message: '请输入正确的身份证号' }
{ required: true, message: '请输入身份证号' },
{ validator: idCardValidator, message: '请输入正确的身份证号' }
]"
/>
<van-field
......@@ -139,6 +139,7 @@
import NoData from '../component/noData';
import { Toast,Indicator } from 'mint-ui';
import {receiveWay} from "../../utils/dictionaries";
import {idCardValidator} from '../../utils/common'
export default {
components: {NoData},
......@@ -198,6 +199,7 @@
// this.sessionInfo = JSON.parse(window.sessionStorage.getItem('mobileTokenIno'))
},
methods: {
idCardValidator,
//刷新
onRefresh() {
this.isLoading = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment