Commit 6d01face authored by 罗成兵's avatar 罗成兵

1

parent 769182fb
/target/
*/target/
!.mvn/wrapper/maven-wrapper.jar
*.orig
*.xlsx
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
/node_modules/*
> 1%
last 2 versions
not dead
NODE_ENV = dev
VUE_APP_BASE_URL222 = https://beta-ysservice.yiboshi.com
VUE_APP_BASE_URL= http://127.0.0.1:8083
\ No newline at end of file
NODE_ENV = prod
VUE_APP_BASE_URL = https://ys-service.yiboshi.com
\ No newline at end of file
NODE_ENV = test
VUE_APP_BASE_URL = https://beta-ysservice.yiboshi.com
# folate-resident-app-vant
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
This diff is collapsed.
{
"name": "folate-resident-app",
"version": "0.1.0",
"private": true,
"scripts": {
"app-dev": "vue-cli-service serve --mode dev",
"build:test": "vue-cli-service build --mode test",
"build:prod": "vue-cli-service build --mode prod"
},
"dependencies": {
"axios": "^0.21.1",
"core-js": "^3.6.5",
"vant": "^2.12.23",
"vue": "^2.6.11",
"vue-esign": "^1.0.5",
"vue-qrcode-reader": "^3.1.0",
"vue-router": "^3.2.0",
"vue-uweb": "^0.2.2",
"vuex": "^3.4.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"vue-template-compiler": "^2.6.11"
}
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script> -->
<title>叶酸发放-居民app</title>
</head>
<body>
<div id="app"></div>
</body>
<!-- <script>
var vConsole = new VConsole();
console.log('Hello world');
</script> -->
</html>
<template>
<div id="app">
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
html, body, #app {
margin: 0;
padding: 0;
height: 100%;
}
body {
-webkit-overflow-scrolling: touch;
overflow-scrolling: touch;
}
/* 公共样式 */
.split {
height: 8px;
background-color: #F1F1F1;
}
.border_none {
border-bottom: none !important;
}
.border_dashed {
height: 0;
border-bottom: 1px dashed #8C8C8C;
margin: 6px 20px 24px 20px;
}
.height_44 {
height: 44px;
}
.title_info {
height: 48px;
border-bottom: 1px solid #D9D9D9;
display: flex;
align-items: center;
.line {
width: 2px;
height: 16px;
background-color: #FE4C40;
margin: 0 8px 0 16px;
}
.title {
font-size: 14px;
font-weight: bold;
color: #262626;
}
}
.submit_btn_block {
padding: 40px 32px 73px 32px;
.van-button {
height: 48px;
width: 100%;
}
.van-button--default {
border: none;
background: linear-gradient(180deg, #FF9D83 0%, #FE3129 100%);
border-radius: 27px;
color: #fff;
font-size: 16px;
}
}
/* 头部样式 */
.van-nav-bar__content {
height: 44px;
}
.van-nav-bar__title {
color: #262626;
font-size: 18px;
font-weight: 600;
}
.van-hairline--bottom::after {
border: none;
}
.van-nav-bar__left {
margin-left: 8px;
}
/* 搜索框样式 */
.van-search {
padding: 0 16px;
.van-search__content {
background-color: #fff;
border: 1px solid #BFBFBF;
border-radius: 46px;
}
}
/* 表单样式 */
.form_block {
.van-field__label {
font-size: 14px;
color: #262626;
width: 100px;
}
.van-cell {
height: 54px;
padding: 16px 0;
box-sizing: border-box;
}
// .van-cell::after {
// border-bottom: 2px solid #D9D9D9;
// }
// .border_none.van-cell::after {
// border: none;
// }
.van-field__control {
text-align: right;
}
}
/* tags标签样式 */
.van-tag {
font-size: 14px;
padding: 4px 8px;
margin-left: 8px;
border: 1px solid #BFBFBF;
border-radius: 4px;
}
.van-tag--plain::before {
border: none;
}
.van-tag--default.van-tag--plain {
color: #8C8C8C;
}
.active.van-tag {
border: 1px solid #FF9D83;
}
.active.van-tag--default.van-tag--plain {
color: #fff;
}
.active.van-tag--plain {
background: linear-gradient(180deg, #FF9D83 0%, #FE3129 100%);
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
import apiInstance from "./index";
// 选择叶酸发放单位
export const getProvideUnit = unitName => {
return apiInstance.get(`/v1/folacin-resident-app/resident/unit/${unitName}`);
};
export const getProvideUnitById = unitId => {
return apiInstance.get(`/v1/folacin-resident-app/resident/unit-id/${unitId}`);
};
// 叶酸领取申请
export const addReceiveApply = params => {
return apiInstance.post('/v1/folacin-resident-app/resident/apply', params);
};
// 申请记录
export const getApplyRecord = residentId => {
return apiInstance.get(`/v1/folacin-resident-app/resident/apply-record/${residentId}`);
};
// 发放详情
export const getProvideDetail = id => {
return apiInstance.get(`/v1/folacin-resident-app/resident/apply-details/${id}`);
};
// 签名图片上传
export const uploadEsignPng = file => {
return apiInstance.post('/v1/folacin-resident-app/resident/upload-image', file);
};
// 获取知情同意书内容
export const getInformedConsentForm = unitId => {
return apiInstance.get(`/v1/folacin-resident-app/resident/consent/${unitId}`);
};
// 查询最近的一次申请记录信息
export const getUserInfoLast = residentId => {
return apiInstance.get(`/v1/folacin-resident-app/resident/last-record/${residentId}`);
};
// 查询最近的一次申请记录信息
export const getChildAreaByParentCode = areaCode => {
return apiInstance.get(`/v1/folacin-resident-app/resident/area-child/${areaCode}`);
};
import axios from 'axios';
import {Dialog} from 'vant';
let apiInstance = axios.create({
baseURL: process.env.VUE_APP_BASE_URL,
timeout: 10000,
withCredentials: true,
});
/* 为请求添加请求头中的token */
apiInstance.interceptors.request.use(
config => {
const token = sessionStorage.getItem('token');
token && (config.headers.Authorization = token);
return config;
},
error => {
return Promise.error(error);
},
);
/* 响应拦截器 */
apiInstance.interceptors.response.use(response => {
if (response.data.code === 'BIZ.BUSSINESS_EXCEPTION') {
Dialog.alert({
title: '提示',
message: response.data.msg,
});
};
if (response.data.code === 'PARAM.EXCEPTION') {
Dialog.alert({
title: '提示',
message: '系统异常,请联系客服!',
});
};
if (response.data.code === 'SYS.UNKNOWN_EXCEPTION') {
Dialog.alert({
title: '提示',
message: '系统异常,请联系客服!',
});
};
return response.data;
}, error => {
Dialog.alert({
title: '提示',
message: error,
});
return Promise.reject(error);
});
export default apiInstance;
\ No newline at end of file
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 引入Vant组件
import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);
import {Lazyload} from 'vant';
Vue.use(Lazyload);
// 引入全局css样式
import './assets/css/global.less';
import {Loading} from './utils/Toast';
Vue.prototype.$toast = Loading;
// 引入vue-esign
import vueEsign from 'vue-esign';
Vue.use(vueEsign);
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{path: '/',redirect: '/provideUnit'},
{path: '/provideUnit',name: 'provideUnit',component: () => import('../views/provideUnit/provideUnit.vue'),meta: { keepAlive: true,}},
{path: '/receiveApply',name: 'receiveApply',component: () => import('../views/receiveApply/receiveApply.vue'),meta: { keepAlive: true, isBack: false,}},
{path: '/informedConsentForm',name: 'informedConsentForm',component: () => import('../views/informedConsentForm/informedConsentForm.vue'),},
{path: '/applyRecord',name: 'applyRecord',component: () => import('../views/applyRecord/applyRecord.vue'),meta: { keepAlive: true, isBack: false}},
{path: '/provideDetail',name: 'provideDetail',component: () => import('../views/provideDetail/provideDetail.vue')},
{path: '/receiveDetail',name: 'receiveDetail',component: () => import('../views/receiveDetail/receiveDetail.vue')},
{path: '/canvas',name: 'canvas',component: () => import('../views/canvas/canvas.vue')},
{path: '/questionAnswer',name: 'canvas',component: () => import('../views/questionAnswer/questionAnswer.vue')},
]
const router = new VueRouter({
routes
})
router.afterEach((to, from) => {
// 让页面回到顶部
(document.documentElement.scrollTop = 0) || (document.body.scrollTop = 0);
// 调用 next(),一定要调用 next 方法,否则钩子就不会被销毁
// next();
})
export default router
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules: {
}
})
import {Toast} from "vant";
export const Loading = {
open() {
Toast.loading({
message: '加载中...',
loadingType: 'spinner',
duration: 10000,
forbidClick: true,
});
},
close() {
Toast.clear();
},
success(val) {
Toast.success(val);
},
tips(val) {
Toast(val);
},
submit() {
Toast.loading({
message: '提交中...',
duration: 10000,
forbidClick: true,
});
}
};
\ No newline at end of file
// 判空
export function isEmpty(val) {
if (typeof val === 'undefined' || val == null || val === '') {
return true;
} else {
return false;
};
};
// 将base64转换为文件
export function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]);
var n = bstr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
};
return new File([u8arr], filename, {type: mime});
};
// 证件号校验
export function validateCard(type, val) {
if (type === 1) {
let reg = /^[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]$/g;
if (reg.test(val)) {
return false;
} else {
return true;
};
} else if (type === 2) {
let reg = /^([a-zA-z]|[0-9]){5,17}$/g;
if (reg.test(val)) {
return false;
} else {
return true;
};
};
};
// 手机号校验
export function validatePhone(val) {
let reg = /^1(?:3[0-9]|4[5-9]|5[0-9]|6[12456]|7[0-8]|8[0-9]|9[0-9])[0-9]{8}$/g;
if (reg.test(val)) {
return false;
} else {
return true;
};
};
// 判断ios还是安卓
export function isIOSWebKit() {
const aa = window.navigator.userAgent;
if (!!aa.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {// ios端
return true;
} else if (aa.indexOf('Android') !== -1 || aa.indexOf('Adr') !== -1) {// 安卓端
return false;
}
}
//当前方法传参数两种 字符串或者map
export function callMobile(handlerInterface, parameters) {
let classStr = Object.prototype.toString.call(parameters);
if (classStr === '[object String]' || classStr === '[object Object]') {
let param = parameters;
if (classStr === "[object Object]") { //判断传参是str ,还是object
//handlerInterface由iOS addScriptMessageHandler与andorid addJavascriptInterface 代码注入而来。
param = JSON.stringify(parameters);//参数必须转化成json格式
}
try {
if (isIOSWebKit()) {//ios
if (window.webkit !== undefined) {
if (param == '{}') {
window.webkit.messageHandlers[handlerInterface].postMessage(null);
} else {
window.webkit.messageHandlers[handlerInterface].postMessage(param);
}
}
} else if (isIOSWebKit() === false) {
//安卓传输不了js json对象,只能传输string
if (param == '{}') {
window.H5page[handlerInterface]();
} else {
window.H5page[handlerInterface](param);
}
}
} catch (e) {
}
}
}
export function getDateStr(date) {
let mouth = date.getMonth() + 1;
let day = date.getDate();
if (mouth < 10) {
mouth = "0" + mouth;
}
if (day < 10) {
day = "0" + day;
}
let resultDateStr = date.getFullYear() + "-" + mouth + "-" + day;//将日期转化为字符串格式
return resultDateStr;
}
\ No newline at end of file
// //获取url参数
// export function getQueryVariable(variable, urlInfo) {
// let url = decodeURI(decodeURI(urlInfo || window.location.href))
// console.log(url)
// let i = url.indexOf('?')
// let queryStr = url.substr(i + 1)
// let vars = queryStr.split("&");
// for (let i = 0; i < vars.length; i++) {
// let pair = vars[i].split("=");
// if (pair[0] == variable) {
// return pair[1];
// }
// }
// return '';
// }
//
// // 判断ios还是安卓
// export function isIOSWebKit() {
// const aa = window.navigator.userAgent;
// if (!!aa.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {// ios端
// return true;
// } else if (aa.indexOf('Android') !== -1 || aa.indexOf('Adr') !== -1) {// 安卓端
// return false;
// }
// }
//
// //当前方法传参数两种 字符串或者map
// export function callMobile2(handlerInterface, parameters) {
// let classStr = Object.prototype.toString.call(parameters);
// if (classStr === '[object String]' || classStr === '[object Object]') {
// let param = parameters;
// if (classStr === "[object Object]") { //判断传参是str ,还是object
// //handlerInterface由iOS addScriptMessageHandler与andorid addJavascriptInterface 代码注入而来。
// param = JSON.stringify(parameters);//参数必须转化成json格式
// }
// try {
// if (isIOSWebKit()) {//ios
// if (window.webkit == undefined) {
// if (param == '{}') {
// window.webkit.messageHandlers[handlerInterface].postMessage(null);
// } else {
// window.webkit.messageHandlers[handlerInterface].postMessage(param);
// }
// }
// } else if (isIOSWebKit() === false) {
// //安卓传输不了js json对象,只能传输string
// if (param == '{}') {
// window.H5page[handlerInterface]();
// } else {
// window.H5page[handlerInterface](param);
// }
// }
// } catch (e) {
//
// }
// }
// }
<template>
<div class="applyRecord">
<!-- 头部 -->
<van-nav-bar fixed title="申请记录">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="goBack" />
</template>
</van-nav-bar>
<!-- 领取记录 -->
<div class="height_44"></div>
<template v-if="detailList.length != 0">
<div class="apply_block" v-for="(item, index) in detailList" :key="item.id">
<div class="top">
<div :class="item.status === 1 ? 'orange' : (item.status === 2 ? 'green' : 'gray')">{{item.statusName}}</div>
<span>{{item.parentDate}}</span>
</div>
<div class="center">
<div class="content">
<span>女方姓名</span>
<span>{{item.womanName}}</span>
</div>
<div class="content margin_b8">
<span>证件号码</span>
<span>{{item.womenIdCard}}</span>
</div>
<div class="content margin_b8">
<span>联系电话</span>
<span>{{item.telephone}}</span>
</div>
</div>
<div class="bottom">
<span @click="handleClick(item)">查看详情</span>
</div>
<div class="bottom_back" v-if="index != detailList.length-1"></div>
</div>
</template>
<van-empty v-else description="暂无申请记录" />
</div>
</template>
<script>
import {getApplyRecord} from '@/axios/api'
export default {
data() {
return {
detailList: [],
scrollPosition: 0,
}
},
created() {
// this.getApplyRecordList();
},
activated() {
if (!this.$route.meta.isBack) {
this.getApplyRecordList();
} else {
window.scrollTo(0, this.scrollPosition);
};
},
methods: {
getApplyRecordList() {
let userInfo = JSON.parse(sessionStorage.getItem('userInfo'));
this.$toast.open();
getApplyRecord(userInfo.userId).then(res => {
if (res.code === 'SUCCESS') {
this.detailList = res.data;
};
}).finally(() => {
this.$toast.close();
});
},
// 查看详情
handleClick(val) {
this.$router.push({
path: 'provideDetail',
query: {
id: val.id,
},
});
},
// 返回
goBack() {
this.$router.push('provideUnit');
},
},
beforeRouteLeave(to, from, next) {
this.scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;
next();
},
beforeRouteEnter(to, from, next) {
if (from.name === 'provideDetail') {
to.meta.isBack = true;
} else {
to.meta.isBack = false;
};
next();
},
}
</script>
<style lang="less" scoped>
.applyRecord {
height: 100%;
// height: calc(100% - 50px);
background-color: #F1F1F1;
.apply_block {
margin-top: 8px;
height: 180px;
background-color: #fff;
padding: 0 16px;
box-sizing: border-box;
.top {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #F0F0F0;
margin-bottom: 8px;
height: 40px;
:first-child {
width: 49px;
height: 19px;
color: #fff;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
margin: 13px 0 8px 0;
}
.green {
background-color: #79BC7F;
}
.orange {
background-color: #FBC068;
}
.gray:first-child {
width: 62px;
color: #262626;
}
.gray {
background-color: #E5E5E5;
}
span {
font-size: 12px;
color: #BFBFBF;
}
}
.center {
font-size: 12px;
line-height: 22px;
border-bottom: 1px solid #F0F0F0;
.content {
height: 22px;
margin-bottom: 4px;
:first-child {
color: #8C8C8C;
}
:last-child {
color: #262626;
margin-left: 15px;
}
}
.margin_b8 {
margin-bottom: 8px;
}
}
.bottom {
display: flex;
justify-content: center;
align-items: center ;
height: 38px;
font-size: 14px;
letter-spacing: 1px;
color: #E35946;
}
.bottom_back {
margin: 0 -16px;
height: 8px;
background-color: #F1F1F1;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="canvas_content">
<van-nav-bar fixed title="签名">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="goBack" />
</template>
</van-nav-bar>
<div class="height_44"></div>
<vue-esign ref="esign" :isCrop="false"/>
<div class="btn">
<div class="btn_right" @click="handleReset">
<img src="../../assets/images/abrase.png" alt="">
<div>清除</div>
</div>
<div class="btn_left" @click="handleGenerate">
<img src="../../assets/images/save.png" alt="">
<div>保存</div>
</div>
</div>
</div>
</template>
<script>
import {dataURLtoFile} from '@/utils/common';
import {uploadEsignPng} from '@/axios/api';
import {Dialog} from 'vant'
export default {
data() {
return {
}
},
methods: {
handleGenerate() {
this.$refs.esign.generate().then(res => {
Dialog.confirm({
title: '提示',
message: '确定要保存该签名么?',
}).then(() => {
let file = dataURLtoFile(res, 'esign.png');
let fromData = new FormData();
fromData.append("file", file);
this.$toast.submit();
uploadEsignPng(fromData).then(res => {
this.$toast.close();
if (res.code === 'SUCCESS') {
this.$toast.success('保存成功');
this.$router.push('informedConsentForm');
window.sessionStorage.setItem('esignImg', res.data.trueDownloadUrl);
window.sessionStorage.setItem('esignImgId', res.data.id);
};
}).catch(() => {
this.$toast.close();
});
}).catch(() => {
return false;
});
}).catch(err => {
Dialog.alert({
title: '提示',
message: '请签名后再保存签名图片',
});
return err;
});
},
handleReset() {
this.$refs.esign.reset();
},
goBack() {
this.$router.go(-1);
},
},
}
</script>
<style lang="less" scoped>
.canvas_content {
height: 100%;
background: #000;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
canvas {
background: #fff !important;
width: 90% !important;
border-radius: 8px;
}
.btn {
color: #fff;
display: flex;
justify-content: center;
align-items: center;
height: 100px;
.btn_right {
margin-right: 50px;
transform: rotate(90deg);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.btn_left {
transform: rotate(90deg);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="informedConsentForm">
<!-- 头部 -->
<van-nav-bar fixed title="知情同意书">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="goBack" />
</template>
</van-nav-bar>
<div class="title">
<!-- <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经介绍,我已了解到云南省农村妇女增补叶酸项目是为降低神经管缺陷发生,提高出生人口素质的一项有益于个人、家庭、社会及国家的重要工作,是政府改善民生、构建社会主义和谐社会的一项举措。</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我知道孕妇体内叶酸缺乏,是造成神经管缺陷的重要原因。孕早期如果缺乏叶酸可导致胎儿严重畸形,此外,孕期缺乏叶酸还可导致流产、死产、未成熟儿、胎盘早剥等严重不良后果。</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同时,我也知道服用叶酸片可能存在的不良反应:偶见过敏反应,很少发生中毒现象。有些妇女长期服用叶酸后可出现厌食、恶心、腹胀等胃肠道症状。叶酸与维生素C同服,可能抑制叶酸在胃肠中的吸收。</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经咨询,我也知道服用叶酸片只能是预防和降低神经管缺陷的发生风险,接受该服务后仍有生育神经管缺陷儿(无脑儿、脑膨出及脊柱裂等)的可能。</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经认真考虑,我同意接受管理单位提供的孕前、孕早期服用叶酸片预防神经管缺陷服务,并自愿配合做好随访等相关服务。</span> -->
<div v-html="htmlContent"></div>
</div>
<div class="border_dashed"></div>
<div class="sign_block">
<div class="sign_block_title">
<div>申请人签名</div>
<div class="sign_block_reset" @click="handleRouter" v-if="!disable">
<img src="../../assets/images/fresh.png" alt="">
<span>重新签名</span>
</div>
</div>
<div class="sign_block_content">
<div v-if="disable" @click="handleRouter">点击在线签名</div>
<img v-else v-for="(img, index) in imageList" :key="index" v-lazy="img" />
</div>
</div>
<div class="submit_btn_block">
<van-button @click="handleClick" :disabled="disable">提 交</van-button>
</div>
</div>
</template>
<script>
import {isEmpty} from '@/utils/common'
import {getInformedConsentForm} from '@/axios/api'
export default {
data() {
return {
disable: true,
htmlContent: '',
imageList: [],
}
},
created() {
this.getEsignImg();
this.getHtmlContent();
},
methods: {
// 返回
goBack() {
this.$router.push('receiveApply');
},
handleClick() {
this.$router.push('receiveApply');
},
handleRouter() {
this.$router.push('canvas');
},
getEsignImg() {
let imgUrl = window.sessionStorage.getItem('esignImg');
if (isEmpty(imgUrl)) {
this.disable = true;
} else {
this.disable = false;
let str = imgUrl.replace('https', 'http');
this.imageList.push(str);
};
},
// 获取知情同意书内容
getHtmlContent() {
let unitId = JSON.parse(sessionStorage.getItem('applyUnitInfo')).unitId;
this.$toast.open();
getInformedConsentForm(unitId).then(res => {
if (res.code === 'SUCCESS') {
if (res.data) {
this.htmlContent = res.data.content;
};
};
}).finally(() => {
this.$toast.close();
});
},
},
}
</script>
<style lang="less" scoped>
.informedConsentForm {
padding-top: 52px;
.title {
color: #595959;
font-size: 14px;
line-height: 22px;
padding: 0 20px;
// display: flex;
// flex-direction: column;
// span {
// margin: 0 20px 10px 20px;
// }
}
.sign_block {
font-size: 16px;
color: #262626;
margin: 0 24px;
.sign_block_title {
display: flex;
justify-content: space-between;
.sign_block_reset {
display: flex;
align-items: center;
span {
font-size: 12px;
color: #595959;
margin-left: 4px;
}
}
}
.sign_block_content {
margin-top: 8px;
height: 102px;
background-image: url('../../assets/images/sign.png');
background-color: #EFF2F7;
display: flex;
justify-content: center;
align-items: center;
font-size: 18px;
color: #A5AEBE;
img {
max-width: 102px;
transform: rotate(-90deg);
}
}
}
}
</style>
\ No newline at end of file
<template>
<div class="provideDetail">
<!-- 头部 -->
<van-nav-bar fixed title="发放详情">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="goBack"/>
</template>
</van-nav-bar>
<div v-if="Object.keys(formData).length > 0">
<!-- 发放详情 -->
<div class="img_block bg1" v-if="formData.status === 1">
<img src="../../assets/images/shalou.png" alt="">
<span>叶酸待领取...</span>
</div>
<div class="img_block bg1" v-if="formData.status === 2">
<img src="../../assets/images/success.png" alt="">
<span>叶酸领取成功</span>
</div>
<div class="img_block bg2" v-if="formData.status === 3">
<img src="../../assets/images/error.png" alt="">
<span>叶酸申请无效</span>
</div>
<div class="item_info">
<span style="width: 100px">领取单位:</span>
<span>{{ formData.unitName }}</span>
</div>
<div class="title_info">
<div class="line"></div>
<div class="title">女方信息</div>
</div>
<div class="item_info">
<span>姓名</span>
<span>{{ formData.womanName }}</span>
</div>
<div class="item_info">
<span>证件类型</span>
<span>{{ formData.womenCertificateTypeName }}</span>
</div>
<div class="item_info" v-if="formData.womenCertificateType!=3">
<span>证件号码</span>
<span>{{ formData.womenIdCard }}</span>
</div>
<div class="item_info">
<span>出生日期</span>
<span>{{ formData.birthDate }}</span>
</div>
<div class="item_info">
<span>身高</span>
<span>{{ formData.height }}cm</span>
</div>
<div class="item_info">
<span>体重</span>
<span>{{ formData.weight }}kg</span>
</div>
<div class="item_info">
<span>BMI</span>
<span>{{ formData.bmi }}</span>
</div>
<div class="split"></div>
<div class="title_info">
<div class="line"></div>
<div class="title">其他信息</div>
</div>
<div class="item_info">
<span>联系电话</span>
<span>{{ formData.telephone }}</span>
</div>
<div class="item_info">
<span style="width: 200px">现住地址</span>
<span>{{ formData.presentCodeName }}</span>
</div>
<div class="item_info" style="height: auto;min-height: 54px">
<span style="width: 200px">详细地址</span>
<span>{{ formData.nowAddress }}</span>
</div>
<div class="item_info border_none">
<span>签名知情同意书</span>
<span>已签名</span>
</div>
<div v-if="formData.status === 2&&formData.provideInfo">
<div class="split"></div>
<div class="title_info">
<div class="line"></div>
<div class="title">发放登记</div>
</div>
<div class="item_info">
<span>发放日期</span>
<span>{{ formData.provideInfo.provideDate }}</span>
</div>
<div class="item_info">
<span>发放数量</span>
<span>{{ formData.provideInfo.provideNumber }}</span>
</div>
<div class="item_info">
<span>发放医生</span>
<span>{{ formData.provideInfo.provideDoctorName }}</span>
</div>
<div class="item_info">
<span>建议服用</span>
<span>{{ formData.provideInfo.recommendEat }}</span>
</div>
<div class="item_info" style="height: auto;min-height: 54px;">
<span style="width: 150px">备注</span>
<span style="margin-left: 20px;margin: 3px">{{ formData.provideInfo.remarks }}</span>
</div>
<br><br>
<br>
<br>
</div>
</div>
</div>
</template>
<script>
import {getProvideDetail} from '@/axios/api'
export default {
data() {
return {
formData: {},
}
},
created() {
this.getProvideDetailInfo();
},
methods: {
getProvideDetailInfo() {
let id = this.$route.query.id;
this.$toast.open();
getProvideDetail(id).then(res => {
if (res.code === 'SUCCESS') {
this.formData = res.data;
}
;
}).finally(() => {
this.$toast.close();
});
},
goBack() {
this.$router.push('applyRecord');
},
},
}
</script>
<style lang="less" scoped>
.provideDetail {
padding-top: 44px;
.img_block {
height: 64px;
display: flex;
align-items: center;
img {
margin-left: 42px;
}
span {
margin-left: 12px;
font-size: 14px;
color: #fff;
letter-spacing: 1px;
}
}
.bg1 {
background: linear-gradient(292.1deg, rgba(255, 121, 54, 0.65) 1.9%, rgba(253, 41, 34, 0.65) 94.3%), linear-gradient(180deg, #FF9B82 0%, #FD2922 100%);
}
.bg2 {
background: linear-gradient(0deg, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15));
}
.item_info {
height: 54px;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 16px;
border-bottom: 1px solid #D9D9D9;
font-size: 14px;
color: #262626;
}
}
</style>
\ No newline at end of file
<template>
<div class="provideUnit">
<!-- 头部 -->
<van-nav-bar fixed title="选择叶酸发放单位">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="handleBack"/>
</template>
<template #right>
<div @click="handleRecord">申请记录</div>
</template>
</van-nav-bar>
<!-- 搜索框 -->
<van-search @blur="handleInput" style="width: 88%;display: inline-block" @clear="handleCancel"
v-model="seachInfo.unitName" placeholder="请输入搜索关键词"/>
<van-icon size="33" style="float: right;margin-right: 8px;" name="scan" @click="openQrCode"/>
<!-- 申请部分 -->
<template v-if="unitList.length != 0">
<div class="flex_block" v-for="item in unitList" :key="item.id" @click="handleClick(item)">
<div class="flex_block_title">
<span class="top">{{ item.unitName }}</span>
<span class="bottom">地址:{{
(item.areaFullName ? item.areaFullName : "") + (item.unitAddress ? item.unitAddress : "")
}}</span>
</div>
<div class="flex_block_btn">申请</div>
</div>
</template>
<van-empty v-else description="暂无发放单位"/>
</div>
</template>
<script>
import {getProvideUnit, getProvideUnitById} from '@/axios/api';
import {callMobile, isIOSWebKit, isEmpty} from '@/utils/common';
import {Dialog} from 'vant';
export default {
components: {},
data() {
return {
seachInfo: {
unitName: '云南省',
},
unitList: [],
scrollPosition: 0,
}
},
created() {
Dialog.alert({
title: '温馨提示',
message: '备孕妇女从孕前3个月,坚持每天服用0.4mg叶酸或含叶酸的复合维生素至少到怀孕满3个月,可预防胎儿神经管缺陷的发生,还能减少唇腭裂、先心病、早产等风险。特殊情况妇女如肥胖、糖尿病等要加量。',
confirmButtonText: "好的,知道了"
}).then(() => {
});
let vm = this;
window['init'] = (result) => {
vm.initUserInfo(result);
};
window['qrcodeContent'] = (result) => {
vm.scanQRCallBack(result);
};
},
mounted() {
if (process.env.NODE_ENV == "dev") {
let userInfo = {
account: '18487125843',
token: '7de354fd8be1484cacbc41e96fe88d7e',
userId: '11133351501171512',
};
window.sessionStorage.setItem('userInfo', JSON.stringify(userInfo));
} else {
callMobile('init', {});
}
this.getProvideUnitList();
},
activated() {
window.scrollTo(0, this.scrollPosition);
},
methods: {
handleInput(val) {
this.getProvideUnitList();
},
handleCancel() {
this.getProvideUnitList();
},
openQrCode() {
callMobile("qrcode", {});
},
getProvideUnitList() {
this.$toast.open();
let unitName = this.seachInfo.unitName;
if (isEmpty(unitName)) {
unitName = undefined;
}
getProvideUnit(unitName).then(res => {
if (res.code === 'SUCCESS') {
if (res.data) {
this.unitList = res.data;
} else {
this.unitList = [];
}
}
}).finally(() => {
this.$toast.close();
});
},
// 申请
handleClick(val) {
let areaFullName = val.areaFullName ? val.areaFullName : "";
let address = val.unitAddress ? val.unitAddress : "";
let unitAddress = areaFullName + address;
let applyUnitInfo = {
unitId: val.id,
unitName: val.unitName,
unitAddress: unitAddress,
};
window.sessionStorage.setItem('applyUnitInfo', JSON.stringify(applyUnitInfo));
this.$router.push('questionAnswer');
},
// 申请记录
handleRecord() {
this.$router.push('applyRecord');
},
handleBack() {
callMobile('goIndex', {});
},
scanQRCallBack(unitId) {
if (!unitId) {
this.$toast.success('无效的二维码');
return;
}
getProvideUnitById(unitId).then(res => {
if (res.code === 'SUCCESS') {
if (res.data) {
let areaFullName = res.data.areaFullName ? res.data.areaFullName : "";
let unitAddress = res.data.unitAddress ? res.data.unitAddress : "";
let applyUnitInfo = {
unitId: res.data.id,
unitName: res.data.unitName,
unitAddress: areaFullName + unitAddress,
};
window.sessionStorage.setItem('applyUnitInfo', JSON.stringify(applyUnitInfo));
this.$router.push('questionAnswer');
} else {
this.$toast.success('无效的二维码');
}
}
})
},
initUserInfo(val) {
let ios = isIOSWebKit();
if (ios) {
window.sessionStorage.setItem('userInfo', val);
} else {
window.sessionStorage.setItem('userInfo', JSON.stringify(val));
}
},
},
beforeRouteLeave(to, from, next) {
this.scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;
next();
},
}
</script>
<style lang="less" scoped>
.provideUnit {
padding-top: 52px;
.flex_block {
display: flex;
justify-content: space-between;
align-items: center;
margin: 24px 24px 24px 16px;
.flex_block_title {
display: flex;
flex-direction: column;
width: 90%;
.top {
color: #262626;
font-size: 14px;
}
.bottom {
color: #595959;
font-size: 12px;
margin-top: 7px;
}
}
.flex_block_btn {
width: 48px;
height: 25px;
border: 1px solid #F5222D;
border-radius: 24px;
font-size: 12px;
color: #F5222D;
display: flex;
align-items: center;
justify-content: center;
margin-left: 8px;
}
}
}
</style>
\ No newline at end of file
<!--<template>-->
<!-- <div>-->
<!-- &lt;!&ndash; <qrcode-stream&ndash;&gt;-->
<!-- &lt;!&ndash; v-show="qrcode"&ndash;&gt;-->
<!-- &lt;!&ndash; :camera="camera"&ndash;&gt;-->
<!-- &lt;!&ndash; :torch="torchActive"&ndash;&gt;-->
<!-- &lt;!&ndash; @decode="onDecode"&ndash;&gt;-->
<!-- &lt;!&ndash; @init="onInit"&ndash;&gt;-->
<!-- &lt;!&ndash; >&ndash;&gt;-->
<!-- &lt;!&ndash; <div>&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="qr-scanner">&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="box">&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="line"></div>&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="angle"></div>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="txt">&ndash;&gt;-->
<!-- &lt;!&ndash; <van-button type="primary" @ style="width: 80%" @click="goBack">返回</van-button>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; </qrcode-stream>&ndash;&gt;-->
<!-- <p class="error">{{ error }}11</p>-->
<!-- </div>-->
<!--</template>-->
<!--<script>-->
<!--// 下载插件-->
<!--// cnpm install &#45;&#45;save vue-qrcode-reader-->
<!--import {getProvideUnitById} from '@/axios/api';-->
<!--import {callMobile} from '../../utils/scanUtils'-->
<!--// 引入-->
<!--import {QrcodeStream} from 'vue-qrcode-reader';-->
<!--export default {-->
<!-- // 注册-->
<!-- components: {QrcodeStream},-->
<!-- name: "qrCode",-->
<!-- data() {-->
<!-- return {-->
<!-- result: '', // 扫码结果信息-->
<!-- error: '', // 错误信息-->
<!-- show: true,-->
<!-- qrcode: true,-->
<!-- torchActive: false,-->
<!-- camera: 'rear',-->
<!-- };-->
<!-- },-->
<!-- mounted() {-->
<!-- this.scanCode()-->
<!-- let vm = this;-->
<!-- window['qrcodeContent'] = (result) => {-->
<!-- vm.subscanQRCallBack(result)-->
<!-- this.$nextTick(() => {-->
<!-- vm.$uweb.setCustomVar('医站到家扫码', '人数', 0)-->
<!-- })-->
<!-- }-->
<!-- },-->
<!-- methods: {-->
<!-- scanCode() {-->
<!-- // let info = JSON.parse(window.sessionStorage.getItem('mobileTokenIno'))-->
<!-- // const {phone = '', userId = ''} = info-->
<!-- // let par = {telephone: phone, residentId: userId}//居民id-->
<!-- // getUserReceiveNum(par).then(({data}) => {-->
<!-- // if (data.data == true) {//true 该用户非首次领取需要填写随访-->
<!-- // this.$router.push(`/returnVisit`);-->
<!-- // } else {-->
<!-- callMobile("qrcode", {});-->
<!-- // }-->
<!-- // })-->
<!-- // this.subscanQRCallBack(111)-->
<!-- },-->
<!-- onDecode(unitId) {-->
<!-- if (!unitId) {-->
<!-- this.$toast.success('无效的二维码');-->
<!-- return;-->
<!-- }-->
<!-- getProvideUnitById(unitId).then(res => {-->
<!-- if (res.code === 'SUCCESS') {-->
<!-- if (res.data) {-->
<!-- let applyUnitInfo = {-->
<!-- unitId: res.data.id,-->
<!-- unitName: res.data.unitName,-->
<!-- unitAddress: res.data.unitAddress,-->
<!-- };-->
<!-- window.sessionStorage.setItem('applyUnitInfo', JSON.stringify(applyUnitInfo));-->
<!-- this.$router.push({path: "receiveApply"});-->
<!-- } else {-->
<!-- this.$toast.success('无效的二维码');-->
<!-- }-->
<!-- }-->
<!-- ;-->
<!-- })-->
<!-- },-->
<!-- async onInit(promise) {-->
<!-- const {capabilities} = await promise;-->
<!-- const TORCH_IS_SUPPORTED = !!capabilities.torch;-->
<!-- try {-->
<!-- await promise;-->
<!-- } catch (error) {-->
<!-- if (error.name === 'NotAllowedError') {-->
<!-- this.error = '您需要授予相机访问权限';-->
<!-- } else if (error.name === 'NotFoundError') {-->
<!-- this.error = '这个设备上没有摄像头';-->
<!-- } else if (error.name === 'NotSupportedError') {-->
<!-- this.error = '所需的安全上下文(HTTPS、本地主机)';-->
<!-- } else if (error.name === 'NotReadableError') {-->
<!-- this.error = '相机被占用';-->
<!-- } else if (error.name === 'OverconstrainedError') {-->
<!-- this.error = '安装摄像头不合适';-->
<!-- } else if (error.name === 'StreamApiNotSupportedError') {-->
<!-- this.error = 'ERROR: 此浏览器不支持流API';-->
<!-- }-->
<!-- }-->
<!-- },-->
<!-- // 打开相机-->
<!-- openCamera() {-->
<!-- this.camera = 'rear'-->
<!-- this.qrcode = true-->
<!-- this.show = true-->
<!-- },-->
<!-- // 关闭相机-->
<!-- closeCamera() {-->
<!-- this.camera = 'off'-->
<!-- this.qrcode = false-->
<!-- this.show = false-->
<!-- },-->
<!-- // 打开手电筒-->
<!-- openFlash() {-->
<!-- this.torchActive = !this.torchActive;-->
<!-- },-->
<!-- // 相机反转-->
<!-- switchCamera() {-->
<!-- // console.log(this.camera);-->
<!-- switch (this.camera) {-->
<!-- case 'front':-->
<!-- this.camera = 'rear'-->
<!-- console.log(this.camera)-->
<!-- break-->
<!-- case 'rear':-->
<!-- this.camera = 'front'-->
<!-- console.log(this.camera)-->
<!-- break-->
<!-- }-->
<!-- },-->
<!-- goBack() {-->
<!-- this.$router.push({path: "provideUnit"});-->
<!-- }-->
<!-- },-->
<!--};-->
<!--</script>-->
<!--<style scoped>-->
<!--.error {-->
<!-- font-weight: bold;-->
<!-- color: red;-->
<!--}-->
<!--.cameraMessage {-->
<!-- width: 100%;-->
<!-- height: 60px;-->
<!--}-->
<!--.qr-scanner {-->
<!-- background-image: linear-gradient(-->
<!-- 0deg,-->
<!-- transparent 24%,-->
<!-- rgba(32, 255, 77, 0.1) 25%,-->
<!-- rgba(32, 255, 77, 0.1) 26%,-->
<!-- transparent 27%,-->
<!-- transparent 74%,-->
<!-- rgba(32, 255, 77, 0.1) 75%,-->
<!-- rgba(32, 255, 77, 0.1) 76%,-->
<!-- transparent 77%,-->
<!-- transparent-->
<!-- ),-->
<!-- linear-gradient(-->
<!-- 90deg,-->
<!-- transparent 24%,-->
<!-- rgba(32, 255, 77, 0.1) 25%,-->
<!-- rgba(32, 255, 77, 0.1) 26%,-->
<!-- transparent 27%,-->
<!-- transparent 74%,-->
<!-- rgba(32, 255, 77, 0.1) 75%,-->
<!-- rgba(32, 255, 77, 0.1) 76%,-->
<!-- transparent 77%,-->
<!-- transparent-->
<!-- );-->
<!-- background-size: 3rem 3rem;-->
<!-- background-position: -1rem -1rem;-->
<!-- width: 100%;-->
<!-- /* height: 100%; */-->
<!-- height: 100vh;-->
<!-- /* height: 288px; */-->
<!-- position: relative;-->
<!-- background-color: #1110;-->
<!-- /* background-color: #111; */-->
<!--}-->
<!--/* .qrcode-stream-wrapper {-->
<!-- display: flex;-->
<!-- justify-content: center;-->
<!-- align-items: center;-->
<!-- margin-top: 82px;-->
<!-- clear: both;-->
<!--} */-->
<!--/* .qrcode-stream-wrapper >>> .qrcode-stream-camera {-->
<!-- width: 213px;-->
<!-- height: 210px;-->
<!-- clear: both;-->
<!-- margin-top: 39px;-->
<!--} */-->
<!--.qr-scanner .box {-->
<!-- width: 213px;-->
<!-- height: 213px;-->
<!-- position: absolute;-->
<!-- left: 50%;-->
<!-- top: 50%;-->
<!-- transform: translate(-50%, -50%);-->
<!-- overflow: hidden;-->
<!-- border: 0.1rem solid rgba(0, 255, 51, 0.2);-->
<!-- /* background: url('http://resource.beige.world/imgs/gongconghao.png') no-repeat center center; */-->
<!--}-->
<!--.qr-scanner .txt {-->
<!-- width: 100%;-->
<!-- height: 35px;-->
<!-- line-height: 35px;-->
<!-- font-size: 14px;-->
<!-- text-align: center;-->
<!-- /* color: #f9f9f9; */-->
<!-- margin: 0 auto;-->
<!-- position: absolute;-->
<!-- top: 75%;-->
<!-- left: 0;-->
<!--}-->
<!--.qr-scanner .line {-->
<!-- height: calc(100% - 2px);-->
<!-- width: 100%;-->
<!-- background: linear-gradient(180deg, rgba(0, 255, 51, 0) 43%, #00ff33 211%);-->
<!-- border-bottom: 3px solid #00ff33;-->
<!-- transform: translateY(-100%);-->
<!-- animation: radar-beam 2s infinite alternate;-->
<!-- animation-timing-function: cubic-bezier(0.53, 0, 0.43, 0.99);-->
<!-- animation-delay: 1.4s;-->
<!--}-->
<!--.qr-scanner .box:after,-->
<!--.qr-scanner .box:before,-->
<!--.qr-scanner .angle:after,-->
<!--.qr-scanner .angle:before {-->
<!-- content: '';-->
<!-- display: block;-->
<!-- position: absolute;-->
<!-- width: 3vw;-->
<!-- height: 3vw;-->
<!-- border: 0.2rem solid transparent;-->
<!--}-->
<!--.qr-scanner .box:after,-->
<!--.qr-scanner .box:before {-->
<!-- top: 0;-->
<!-- border-top-color: #00ff33;-->
<!--}-->
<!--.qr-scanner .angle:after,-->
<!--.qr-scanner .angle:before {-->
<!-- bottom: 0;-->
<!-- border-bottom-color: #00ff33;-->
<!--}-->
<!--.qr-scanner .box:before,-->
<!--.qr-scanner .angle:before {-->
<!-- left: 0;-->
<!-- border-left-color: #00ff33;-->
<!--}-->
<!--.qr-scanner .box:after,-->
<!--.qr-scanner .angle:after {-->
<!-- right: 0;-->
<!-- border-right-color: #00ff33;-->
<!--}-->
<!--@keyframes radar-beam {-->
<!-- 0% {-->
<!-- transform: translateY(-100%);-->
<!-- }-->
<!-- 100% {-->
<!-- transform: translateY(0);-->
<!-- }-->
<!--}-->
<!--</style>-->
<template>
<div>
<!-- 头部 -->
<van-nav-bar fixed title="问卷">
<template #left>
<img src="../../assets/images/back.png" alt="" @click="goBack"/>
</template>
<template #right>
<div></div>
</template>
</van-nav-bar>
<br><br><br>
<div class="content">
<div>
根据您的实际情况进行选择(可多选):
</div>
<van-checkbox-group v-model="checkedList" checked-color="#F5222D">
<br>
<span v-for="(item,index) in questionList">
<van-checkbox shape="square" :name="item.value">{{ item.name }}</van-checkbox>
<van-divider/>
</span>
</van-checkbox-group>
<p style="margin-left: 15%;color:#F5222D ">建议服用:{{ formData.recommendEat }}</p>
<br>
<van-button style="margin-left: 40px;width: 120px" round color="#EC808D" plain @click="onSubmit(1)">忽略
</van-button>
<van-button style="margin-left: 20px;width: 160px" round type="danger" color="#EC808D" @click="onSubmit(2)">
提交问卷
</van-button>
</div>
</div>
</template>
<script>
import {getUserInfoLast} from '@/axios/api'
export default {
name: "questionAnswer",
data() {
return {
checkedList: [],
questionList: [{value: "1", name: "1、您是否患糖尿病?"}, {value: "2", name: "2、您是否患有癫痫?"},
{value: "3", name: "3、您或丈夫是否患有神经管缺陷或曾有神经管缺陷生育史?"},
{value: "4", name: "4、您是否患有同型半胱氨酸血症?"},
{value: "5", name: "5、您是否患有先天性脑积水、先天性心脏病、唇腭裂、肢体缺陷、泌尿系统缺陷?"},
{value: "6", name: "6、您的一二级直系女性亲属是否有神经管缺陷生育史?"},
{value: "7", name: "7、您是否正在服用以下药物:卡马西平、丙戊酸、苯妥英钠、二甲双胍、扑米酮、苯巴比妥、甲氨蝶呤、柳氮磺胺吡啶、甲氧咔啶、氨苯蝶啶、考来烯胺?"},
{value: "8", name: "8、你是否患有胃肠道吸收不良?"}],
formData: {recommendEat: "2颗/天(0.8mg/天)"},
}
},
watch: {
checkedList(checkedList) {
this.formData.recommendEat = '2颗/天(0.8mg/天)';
checkedList.forEach(x => {
if (x == '3') {
this.formData.recommendEat = "10颗/天(4mg/天)";
}
if (x == '4') {
this.formData.recommendEat = "13颗/天(5.2mg/天)";
}
})
}
},
mounted() {
this.getLastRecord();
},
methods: {
// 返回
goBack() {
this.$router.push('provideUnit');
},
getLastRecord() {
this.$toast.open();
let userInfo = JSON.parse(sessionStorage.getItem('userInfo'));
getUserInfoLast(userInfo.userId).then(res => {
if (res.code === 'SUCCESS') {
if (res.data) {
this.formData = res.data;
let {presentCode} = res.data;
this.formData.presentCode = presentCode;
if (this.formData.question) {
this.checkedList = this.formData.question.split(",");
}
if (!this.formData.recommendEat) {
this.formData.recommendEat = "2颗/天(0.8mg/天)";
}
}
}
}).finally(() => {
this.$toast.close();
});
},
onSubmit(type) {
if (type == 1) {
this.formData.question=null;
sessionStorage.setItem("lastRecord", JSON.stringify(this.formData));
this.$router.push('receiveApply');
return;
}
if (this.checkedList.length == 0) {
this.$toast.tips('请您选择答题后提交');
return;
}
let question = "";
this.checkedList.forEach(x => {
question += x + ",";
});
this.formData.question = question.substring(0, question.length - 1);
sessionStorage.setItem("lastRecord", JSON.stringify(this.formData));
this.$router.push({path: 'receiveApply'});
}
}
}
</script>
<style scoped>
.content {
margin-left: 15px;
}
/deep/ .content .van-checkbox__label {
font-size: 14px;
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<div class="receiveDetail">
<div class="header_block">
<div class="header_top">
<img src="../../assets/images/close.png" alt="" @click="goBack" />
<span>领取详情</span>
<div></div>
</div>
<div class="header_center">
<img src="../../assets/images/star.png" alt="" />
<div>叶酸领取<br>申请提交成功!</div>
</div>
<div class="header_bottom"></div>
</div>
<div class="body_block">
<div class="body_top"></div>
<div class="title">请前往单位领取叶酸</div>
<div class="body_bottom">
<div class="body_bottom_first">
<div>领取单位:</div>
<div>{{applyUnitInfo.unitName}}</div>
</div>
<div class="body_bottom_last">
<div>领取地址:</div>
<div>{{applyUnitInfo.unitAddress}}</div>
</div>
</div>
</div>
<div class="btn_block">
<van-button @click="goIndex">返回首页</van-button>
</div>
</div>
</template>
<script>
import {callMobile} from '@/utils/common'
export default {
data() {
return {
applyUnitInfo: {},
}
},
created() {
this.applyUnitInfo = JSON.parse(sessionStorage.getItem('applyUnitInfo'));
},
methods: {
goBack() {
this.$router.push('provideUnit');
//this.$router.go(-1);
},
goIndex() {
// this.$router.push('provideUnit');
callMobile('goIndex', {});
},
}
}
</script>
<style lang="less" scoped>
.header_block {
height: 195px;
background: linear-gradient(292.1deg, rgba(255, 121, 54, 0.65) 1.9%, rgba(253, 41, 34, 0.65) 94.3%), linear-gradient(180deg, #FF9B82 0%, #FD2922 100%);
.header_top {
height: 44px;
display: flex;
align-items: center;
justify-content: space-between;
img {
margin-left: 21px;
}
span {
margin-left: -35px;
color: #F8FAFC;
font-size: 18px;
font-weight: 600;
letter-spacing: 1px;
}
}
.header_center {
height: 130px;
display: flex;
align-items: center;
justify-content: center;
div {
margin-left: 7px;
color: #fff;
font-size: 18px;
font-weight: 600;
letter-spacing: 1px;
}
}
.header_bottom {
height: 10px;
background: rgba(218, 50, 27, 0.8);
border-radius: 18px;
margin: 0 10px;
}
}
.body_block {
height: 205px;
background: #fff;
box-shadow: 0px 4px 11px rgba(0, 0, 0, 0.06);
margin: -16px 16px 0 16px;
display: flex;
flex-direction: column;
.body_top {
height: 26px;
background: linear-gradient(180deg, rgba(234, 59, 35, 0.67) 0%, rgba(255, 255, 255, 0) 100%);
}
.title {
height: 48px;
color: #262626;
font-size: 18px;
font-weight: 600;
text-align: center;
border-bottom: 1px dashed #8C8C8C;
}
.body_bottom {
font-size: 14px;
padding: 0 16px;
box-sizing: border-box;
.body_bottom_first {
margin-top: 24px;
display: flex;
:first-child {
color: #595959;
}
:last-child {
flex: 1;
color: #262626;
}
}
.body_bottom_last {
margin-top: 13px;
display: flex;
:first-child {
color: #595959;
}
:last-child {
flex: 1;
color: #262626;
}
}
}
}
.btn_block {
padding: 64px 118px 0 118px;
.van-button {
height: 40px;
width: 100%;
}
.van-button--default {
border: none;
background: linear-gradient(180deg, #FF9D83 0%, #FE3129 100%);
border-radius: 27px;
color: #fff;
font-size: 16px;
}
}
</style>
\ No newline at end of file
const IsProd = process.env.NODE_ENV === 'prod';
const date = new Date();
const Version = '' + date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours();
module.exports = {
runtimeCompiler: true,
indexPath: "index.html",
publicPath: '/',
outputDir: 'dist',
configureWebpack: {
performance: {
hints: false,
},
output: {
filename: `js/[name].${Version}.js`,
chunkFilename: `js/[name].${Version}.js`,
},
},
productionSourceMap: IsProd ? false : true,
chainWebpack:(config)=>{
config.plugins.delete('preload');
config.plugins.delete('prefetch');
},
devServer: {
open: true,
overlay: {
warning: false,
errors: false
},
https:false,
},
}
This diff is collapsed.
> 1%
last 2 versions
not dead
NODE_ENV = dev
VUE_APP_BASE_URL111= https://beta-ysservice.yiboshi.com
VUE_APP_BASE_URL2 = https://ys-service.yiboshi.com
VUE_APP_BASE_URL4 = http://59.230.237.90:8115
VUE_APP_BASE_URL = http://127.0.0.1:8083
VUE_APP_BASE_PATH = https://beta-yac.yiboshi.com
VUE_APP_KEY_WORD = 'XwKsGlMcdPMEhR1B'
VUE_APP_LOCATION2 = https://beta-yesuan.yiboshi.com/#/
VUE_APP_LOCATION1 = https://yesuan.yiboshi.com/#/
VUE_APP_LOCATION = http://127.0.0.1:8080/#/
NODE_ENV = prod
VUE_APP_BASE_URL = https://ys-service.yiboshi.com
VUE_APP_BASE_PATH = https://lcgwypt-login.yiboshi.com
VUE_APP_KEY_WORD = 'XwKsGlMcdPMEhR1B'
VUE_APP_LOCATION = https://yesuan.yiboshi.com/#/
NODE_ENV = test
VUE_APP_BASE_URL1 = http://123.56.183.13:8083
VUE_APP_BASE_URL = https://beta-ysservice.yiboshi.com
VUE_APP_LOCATION = https://beta-yesuan.yiboshi.com/#/
VUE_APP_BASE_PATH = https://beta-yac.yiboshi.com
VUE_APP_KEY_WORD = 'XwKsGlMcdPMEhR1B'
NODE_ENV = yueyang
VUE_APP_BASE_URL1 = https://yyyesuan-service.yyjtzc.com
VUE_APP_BASE_URL = http://59.230.237.90:8115
VUE_APP_BASE_PATH = http://59.230.237.90:8110
VUE_APP_KEY_WORD = 'XwKsGlMcdPMEhR1B'
# folvite-distribution-front
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
"@vue/app"
],
plugins: [
[
"import",
{ libraryName: "ant-design-vue", libraryDirectory: "es", style: "true" }
]
]
}
This diff is collapsed.
{
"name": "folvite-distribution-front",
"version": "0.1.0",
"private": true,
"scripts": {
"pc-dev": "vue-cli-service serve --mode dev",
"serve-yy": "vue-cli-service serve --mode yueyang",
"build:test": "vue-cli-service build --mode test",
"build:prod": "vue-cli-service build --mode production --report",
"build:yueyang": "vue-cli-service build --mode yueyang"
},
"dependencies": {
"ant-design-vue": "^1.7.8",
"axios": "^0.19.2",
"compression-webpack-plugin": "5.0.0",
"core-js": "^3.6.5",
"crypto-js": "^4.1.1",
"http-parser-js": "^0.5.3",
"install": "^0.13.0",
"js-base64": "^3.7.2",
"js-md5": "^0.7.3",
"jsonp": "^0.2.1",
"moment": "^2.29.1",
"moment-locales-webpack-plugin": "^1.2.0",
"nprogress": "^0.2.0",
"print-js": "^1.6.0",
"qrcode": "^1.5.0",
"vue": "^2.6.11",
"vue-print-nb": "^1.7.5",
"vue-qr": "^2.3.0",
"vue-router": "^3.2.0",
"vue-ueditor-wrap": "^2.4.4",
"vuex": "^3.4.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"babel-plugin-import": "^1.13.3",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"vue-template-compiler": "^2.6.11"
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>云南省叶酸发放服务平台</title>
<!--<script src="https://webapi.amap.com/maps?v=1.4.4&key=a5a941c6dbae677e755a40f8e18a5ed1"></script>-->
<!--<script src="https://webapi.amap.com/maps?v=1.4.4&key=34bb7ed1b21bfcc5a3ed0b9a66a587ff"></script>-->
<!-- <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>-->
<!-- <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js"></script>-->
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>ueditor demo</title>
<!-- 加载编辑器的容器 -->
</head>
<body>
<div id="container" style="height: 500px;width: 800px" name="content">
</div>
<button onclick="aaaa()">
哈哈
</button>
</body>
<!-- 配置文件 -->
<script type="text/javascript" src="ueditor.config.js"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="ueditor.all.js"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
let ue = UE.getEditor('container');
//对编辑器的操作最好在编辑器ready之后再做
ue.ready(function () {
//设置编辑器的内容
//ue.setContent('hello');
//获取html内容,返回: <p>hello</p>
var html = ue.getContent();
//获取纯文本内容,返回: hello
var txt = ue.getContentTxt();
});
function aaaa() {
let html = ue.getContent();
alert(html)
}
</script>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
*{color: #838383;margin: 0;padding: 0}
html,body {font-size: 12px;overflow: hidden; }
.content{padding:5px 0 0 15px;}
input{width:210px;height:21px;line-height:21px;margin-left: 4px;}
</style>
</head>
<body>
<div class="content">
<span><var id="lang_input_anchorName"></var></span><input id="anchorName" value="" />
</div>
<script type="text/javascript" src="../internal.js"></script>
<script type="text/javascript">
var anchorInput = $G('anchorName'),
node = editor.selection.getRange().getClosedNode();
if(node && node.tagName == 'IMG' && (node = node.getAttribute('anchorname'))){
anchorInput.value = node;
}
anchorInput.onkeydown = function(evt){
evt = evt || window.event;
if(evt.keyCode == 13){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
domUtils.preventDefault(evt)
}
};
dialog.onok = function (){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
};
$focus(anchorInput);
</script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>ueditor图片对话框</title>
<script type="text/javascript" src="../internal.js"></script>
<!-- jquery -->
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
<!-- webuploader -->
<script src="../../third-party/webuploader/webuploader.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
<!-- attachment dialog -->
<link rel="stylesheet" href="attachment.css" type="text/css" />
</head>
<body>
<div class="wrapper">
<div id="tabhead" class="tabhead">
<span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
<span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
</div>
<div id="tabbody" class="tabbody">
<!-- 上传图片 -->
<div id="upload" class="panel focus">
<div id="queueList" class="queueList">
<div class="statusBar element-invisible">
<div class="progress">
<span class="text">0%</span>
<span class="percentage"></span>
</div><div class="info"></div>
<div class="btns">
<div id="filePickerBtn"></div>
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
</div>
</div>
<div id="dndArea" class="placeholder">
<div class="filePickerContainer">
<div id="filePickerReady"></div>
</div>
</div>
<ul class="filelist element-invisible">
<li id="filePickerBlock" class="filePickerBlock"></li>
</ul>
</div>
</div>
<!-- 在线图片 -->
<div id="online" class="panel">
<div id="fileList"><var id="lang_imgLoading"></var></div>
</div>
</div>
</div>
<script type="text/javascript" src="attachment.js"></script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
.wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}
.tabbody{height:225px;}
.tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;}
.tabbody .focus { display: block;}
body{font-size: 12px;color: #888;overflow: hidden;}
input,label{vertical-align:middle}
.clear{clear: both;}
.pl{padding-left: 18px;padding-left: 23px\9;}
#imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;}
#imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;}
#imageList img {cursor: pointer;border: 2px solid white;}
.bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;}
.content div{margin: 10px 0 10px 5px;}
.content .iptradio{margin: 0px 5px 5px 0px;}
.txt{width:280px;}
.wrapcolor{height: 19px;}
div.color{float: left;margin: 0;}
#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;}
div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;}
#custom input{height: 15px;min-height: 15px;width:20px;}
#repeatType{width:100px;}
/* 图片管理样式 */
#imgManager {
width: 100%;
height: 225px;
}
#imgManager #imageList{
width: 100%;
overflow-x: hidden;
overflow-y: auto;
}
#imgManager ul {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
#imgManager li {
float: left;
display: block;
list-style: none;
padding: 0;
width: 113px;
height: 113px;
margin: 9px 0 0 19px;
background-color: #eee;
overflow: hidden;
cursor: pointer;
position: relative;
}
#imgManager li.clearFloat {
float: none;
clear: both;
display: block;
width:0;
height:0;
margin: 0;
padding: 0;
}
#imgManager li img {
cursor: pointer;
}
#imgManager li .icon {
cursor: pointer;
width: 113px;
height: 113px;
position: absolute;
top: 0;
left: 0;
z-index: 2;
border: 0;
background-repeat: no-repeat;
}
#imgManager li .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
}
#imgManager li.selected .icon {
background-image: url(images/success.png);
background-position: 75px 75px;
}
#imgManager li.selected .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
background-position: 72px 72px;
}
\ No newline at end of file
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="../internal.js"></script>
<link rel="stylesheet" type="text/css" href="background.css">
</head>
<body>
<div id="bg_container" class="wrapper">
<div id="tabHeads" class="tabhead">
<span class="focus" data-content-id="normal"><var id="lang_background_normal"></var></span>
<span class="" data-content-id="imgManager"><var id="lang_background_local"></var></span>
</div>
<div id="tabBodys" class="tabbody">
<div id="normal" class="panel focus">
<fieldset class="bgarea">
<legend><var id="lang_background_set"></var></legend>
<div class="content">
<div>
<label><input id="nocolorRadio" class="iptradio" type="radio" name="t" value="none" checked="checked"><var id="lang_background_none"></var></label>
<label><input id="coloredRadio" class="iptradio" type="radio" name="t" value="color"><var id="lang_background_colored"></var></label>
</div>
<div class="wrapcolor pl">
<div class="color">
<var id="lang_background_color"></var>:
</div>
<div id="colorPicker"></div>
<div class="clear"></div>
</div>
<div class="wrapcolor pl">
<label><var id="lang_background_netimg"></var>:</label><input class="txt" type="text" id="url">
</div>
<div id="alignment" class="alignment">
<var id="lang_background_align"></var>:<select id="repeatType">
<option value="center"></option>
<option value="repeat-x"></option>
<option value="repeat-y"></option>
<option value="repeat"></option>
<option value="self"></option>
</select>
</div>
<div id="custom" >
<var id="lang_background_position"></var>:x:<input type="text" size="1" id="x" maxlength="4" value="0">px&nbsp;&nbsp;y:<input type="text" size="1" id="y" maxlength="4" value="0">px
</div>
</div>
</fieldset>
</div>
<div id="imgManager" class="panel">
<div id="imageList" style=""></div>
</div>
</div>
</div>
<script type="text/javascript" src="background.js"></script>
</body>
</html>
This diff is collapsed.
/*
* 图表配置文件
* */
//不同类型的配置
var typeConfig = [
{
chart: {
type: 'line'
},
plotOptions: {
line: {
dataLabels: {
enabled: false
},
enableMouseTracking: true
}
}
}, {
chart: {
type: 'line'
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: false
}
}
}, {
chart: {
type: 'area'
}
}, {
chart: {
type: 'bar'
}
}, {
chart: {
type: 'column'
}
}, {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
formatter: function() {
return '<b>'+ this.point.name +'</b>: '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %';
}
}
}
}
}
];
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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