提交 8ee31738 编写于 作者: hujun's avatar hujun

Merge branch 'dev-patients-20190513' into 'release-0612'

Dev patients 20190513



See merge request !28
文件已删除
......@@ -6,4 +6,5 @@ dist/
/yqy/
node_modules/
.DS_Store
.vscode
.vscode/
.idea/
{
"editor.fontSize": 15
}
\ No newline at end of file
......@@ -33,9 +33,13 @@ module.exports = {
// }
// },
context: [ //代理路径
'/test'
/*'/test'*/
'/registers',
'/mobiles',
'/login'
],
proxypath: 'http://localhost:9000',
//proxypath: 'http://localhost:9000',
proxypath: 'https://dev-saas.yunqueyi.com/web/',
cssSourceMap: true
}
}
\ No newline at end of file
}
......@@ -17,5 +17,6 @@
<router-view></router-view>
</div>
<script src="https://unpkg.com/qiniu-js@2.2.0/dist/qiniu.min.js"></script>
<script src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
</body>
</html>
此差异已折叠。
......@@ -11,6 +11,7 @@
"build": "node build/build.js",
"build:dev": "cross-env BUILD_ENV=dev node build/build.js",
"build:test": "cross-env BUILD_ENV=test node build/build.js",
"build:test2": "cross-env BUILD_ENV=test2 node build/build.js",
"build:uat": "cross-env BUILD_ENV=uat node build/build.js",
"build:pro": "cross-env BUILD_ENV=pro node build/build.js"
},
......@@ -23,8 +24,11 @@
"fastclick": "^1.0.6",
"iscroll": "^5.2.0",
"js-cookie": "^2.2.0",
"js-md5": "^0.7.3",
"qrcode": "^1.3.3",
"showdown": "^1.6.4",
"vue": "^2.1.0",
"vue-infinite-scroll": "^2.0.2",
"vue-router": "^2.1.1",
"vuex": "^2.0.0"
},
......@@ -52,6 +56,7 @@
"json-loader": "^0.5.4",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"lodash": "^4.17.11",
"node-gyp": "^3.4.0",
"node-sass": "^4.9.2",
"opn": "^4.0.2",
......
<template>
<div>
<div v-if="$route.name!='loginPage'">
<v-header :userName="userName" :portrait="portrait" :idType="idType"></v-header>
<v-slidebar :authList="authList" :tokenValue="token"></v-slidebar>
<v-slidebar :authList="authList" :tokenValue="token" :storageIdType="storageIdType" :notCompleteCount="redNum"></v-slidebar>
<el-container>
<div class="content" id="body-content">
<transition name="router-fade" mode="out-in">
......@@ -15,7 +15,12 @@
<v-footer></v-footer>
</div>
</el-container>
</div>
</div>
<div class="login-div" v-else>
<transition name="router-fade" mode="out-in">
<router-view v-if="!$route.meta.keepAlive"></router-view>
</transition>
</div>
</template>
<script>
......@@ -25,6 +30,7 @@ import VFooter from './views/layout/footer.vue'
import { base64decode, isNotEmptyUtils, getUrlParamsMap } from "./utils/utils.js"
import { mapActions, mapGetters } from 'vuex'
import { getLoginUrl } from './utils/index.js'
import { getRedNum } from './utils/patients/patientsapi'
let vm = null
export default {
components:{
......@@ -35,10 +41,12 @@ export default {
data() {
return {
idType: 0,
storageIdType: 0,
token: '',
userName: '',
portrait: '',
authList: {}
authList: {},
redNum: 0,
}
},
computed:{
......@@ -48,12 +56,26 @@ export default {
},
created() {
vm = this
vm.getToken()
if(vm.$route.name!='loginPage') {
vm.getToken()
}
},
mounted() {
vm.getRedData()
function checkIE(){
return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style
}
if (checkIE()) {
window.addEventListener('hashchange', () => {
let currentPath = window.location.hash.slice(1);
if (this.$route.path !== currentPath) {
this.$router.push(currentPath)
}
}, false)
}
},
methods: {
...mapActions('reservationManage',['getUserName']),
// 解密token
getToken() {
let href = window.location.href
......@@ -65,17 +87,36 @@ export default {
if (isNotEmptyUtils(paramMap["token"])) {
vm.token = paramMap["token"]
localStorage.setItem('storageToken', vm.token)
vm.$router.push({ path: 'home' })
vm.$router.push({ path: 'home' })
// if(href.indexOf("mypatients-manage/patients-list") > -1) {
// // vm.$router.push({ path: 'patients-manage/mypatients-manage/patients-list' })
// vm.$router.push({ path: 'patients-list' })
// }else {
// vm.$router.push({ path: 'home' })
// }
} else {
if(!localStorage.getItem('storageToken')) {
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面
return
}
console.log('域名',window.location.host)
if(window.location.host.indexOf("work.yunqueyi") != -1&&window.location.host.indexOf("test2-work.yunqueyi") == -1) {
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面
return;
} else {
this.$router.push('/login')
return;
}
}
}
}else {
if(!localStorage.getItem('storageToken')) {
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面
return
if(window.location.host.indexOf("work.yunqueyi") != -1&&window.location.host.indexOf("test2-work.yunqueyi") == -1) {
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面
return;
} else {
this.$router.push('/login');
return;
}
}
}
vm.changeToken(vm.token)
......@@ -100,15 +141,43 @@ export default {
localStorage.setItem('storageIdType', res.data.idType)
localStorage.setItem('storageMaster', res.data.masterAdministratorFlag)
vm.idType = res.data.idType
vm.storageIdType = res.data.idType
vm.userName = res.data.name
vm.portrait = res.data.imageUrl
vm.authList = res.data.auth
vm.getUserName(vm.userName);
} else {
vm.$message.info(res.message)
}
})
}
}
},
getRedData() {
getRedNum({
openTime: (new Date()).getTime()
}).then((data) => {
if(data.code == '000000') {
vm.redNum = data.data
}
}).catch(error => {
vm.$message.error(error)
})
}
},
watch: {
_token(val) {
if(val!=undefined&&val!=null) {
vm.getUserAuth(val)
}
},
$route:{
deep:true,
handler:function(newVal){
if(vm.$route.path == '/patients-manage/not-complete/uncompleted-list'){ //避免重复请求
vm.redNum = 0
}
}
}
}
}
</script>
......@@ -137,4 +206,7 @@ export default {
overflow-y: scroll;
}
}
.login-div {
height: 100%;
}
</style>
此差异已折叠。
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>手机</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-314.000000, -214.000000)" fill="#B3BEC5" fill-rule="nonzero">
<g id="手机" transform="translate(314.000000, 214.000000)">
<path d="M11.0209906,17.1295455 C11.0209906,17.6455895 11.4393269,18.0639258 11.9553709,18.0639258 C12.4714149,18.0639258 12.8897512,17.6455895 12.8897512,17.1295455 C12.8897512,16.6135015 12.4714149,16.1951652 11.9553709,16.1951652 C11.4393269,16.1951652 11.0209906,16.6135015 11.0209906,17.1295455 L11.0209906,17.1295455 Z" id="Shape"></path>
<path d="M13.1163284,5.7778511 C13.1163284,5.70988813 13.0755242,5.65481406 13.0251707,5.65481406 L10.7652715,5.65481406 C10.714918,5.65481406 10.6741138,5.70988813 10.6741138,5.7778511 L10.6741138,5.86511035 C10.6741138,5.93307333 10.714918,5.98814739 10.7652715,5.98814739 L13.0251707,5.98814739 C13.0755242,5.98814739 13.1163284,5.93307333 13.1163284,5.86511035 L13.1163284,5.7778511 Z" id="Shape"></path>
<path d="M15.4519362,6.45059185 L8.46080884,6.45059185 C8.27841109,6.45059185 8.09472362,6.60771679 8.09472362,6.76286604 L8.09472362,15.2372408 C8.09472362,15.39239 8.27841109,15.4785536 8.46080884,15.4785536 L15.4519362,15.4785536 C15.6343614,15.4785536 15.7506547,15.3923901 15.7506547,15.2372408 L15.7506547,6.76286601 C15.7506272,6.60771679 15.6343339,6.45059185 15.4519362,6.45059185 Z" id="Shape"></path>
<path d="M12.0033646,0.0266345564 C5.38765225,0.0266345564 0.0245765095,5.38973776 0.0245765095,12.0054226 C0.0245765095,18.6211075 5.38765225,23.9842107 12.0033646,23.9842107 C18.6190769,23.9842107 23.9821526,18.6211075 23.9821526,12.0054226 C23.9821526,5.38973776 18.6190769,0.0266345564 12.0033646,0.0266345564 Z M16.4366426,18.1704228 C16.4366426,18.5643054 16.170304,18.881217 15.8166768,18.881217 L8.1970771,18.881217 C7.84344992,18.881217 7.51844329,18.5643054 7.51844329,18.1704228 L7.51844332,5.83251947 C7.51844332,5.43863692 7.84344995,5.10602923 8.19707713,5.10602923 L15.8166768,5.10602923 C16.170304,5.10602923 16.4366426,5.43866435 16.4366426,5.83251947 L16.4366426,18.1704228 Z" id="Shape"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="20px" viewBox="0 0 18 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>分组 5</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-388.000000, -267.000000)">
<g id="分组-5" transform="translate(387.000000, 267.000000)">
<g id="验证码" transform="translate(1.000000, 0.000000)" fill="#BFBFBF" fill-rule="nonzero">
<path d="M17.2947053,3.1215984 C17.2947053,2.99072927 17.1772627,2.87998002 17.0363437,2.87666334 L16.5463936,2.86997003 C16.5296304,2.86997003 14.5699101,2.83308691 12.533027,2.03440559 C10.4692907,1.22569431 9.12367632,0.286093906 9.11024975,0.276043956 L8.81158841,0.067992008 C8.76799201,0.0344655345 8.71092907,0.0176623377 8.65384615,0.0176623377 C8.59676324,0.0176623377 8.54311688,0.0344255744 8.4961039,0.067992008 L8.2007992,0.272687313 C8.14711289,0.30957043 6.83506494,1.22569431 4.77802198,2.03104895 C2.74447552,2.82971029 0.784775225,2.86661339 0.767992008,2.86661339 L0.274705295,2.87330669 C0.13040959,2.87668332 0.0163436563,2.98741259 0.0163436563,3.11824176 L0.0163436563,11.295984 C0.0163436563,13.1885514 1.18073926,15.3496304 3.21090909,17.2221179 C5.03306693,18.9032767 7.17056943,19.9905495 8.65718282,19.9905495 C10.1470929,19.9905495 12.288012,18.9033367 14.1101499,17.2221179 C16.136963,15.3496703 17.3013986,13.1886114 17.3013986,11.2926474 L17.2947053,3.12157842 L17.2947053,3.1215984 Z M13.3517882,16.41003 C11.5095105,18.1113287 9.62697303,18.8831369 8.65722278,18.8831369 C8.04313686,18.8831369 7.26795205,18.6382018 6.40893107,18.1750849 C5.57672328,17.7254146 4.72777223,17.1046154 3.95256743,16.3798002 C3.13378621,15.6146853 2.44251748,14.7724276 1.95928072,13.9435964 C1.40897103,13.0073526 1.13040959,12.1147652 1.13040959,11.2993007 L1.13040959,3.96383616 L1.23778222,3.95714286 C2.01966034,3.89674326 3.57332667,3.70211788 5.18741259,3.06787213 C6.88203796,2.4033966 8.13366633,1.64505495 8.59338661,1.34977023 L8.65712288,1.30949051 L8.72085914,1.34977023 C9.17724276,1.64507493 10.4255345,2.4000999 12.1268332,3.06787213 C13.7442358,3.70545455 15.2945854,3.89674326 16.0764635,3.95714286 L16.1838362,3.96383616 L16.1872128,11.2993007 C16.1872128,12.8597003 15.1268332,14.7724076 13.3516484,16.40999 L13.3517882,16.41003 Z" id="形状"></path>
<path d="M11.8585015,7.26251748 C11.7108292,7.26251748 11.5699301,7.31956044 11.4625175,7.42693307 L7.47934066,11.4101099 L5.85182817,9.7825974 C5.74781219,9.67858142 5.60689311,9.61818182 5.45922078,9.61818182 C5.31154845,9.61818182 5.17064935,9.67522478 5.06323676,9.7825974 C4.84847153,9.99736264 4.84847153,10.353027 5.06323676,10.5678122 L7.08333666,12.5879121 C7.18735265,12.6919281 7.32827173,12.7523277 7.47594406,12.7523277 C7.62361638,12.7523277 7.76451548,12.6952847 7.86855145,12.5879121 L12.251049,8.21208791 C12.3584216,8.10471528 12.4154645,7.96715285 12.4154645,7.8161039 C12.4154645,7.66843157 12.3584216,7.52753247 12.251049,7.4234965 C12.147033,7.31948052 12.0061139,7.26243756 11.8584416,7.26243756 L11.8585015,7.26251748 Z" id="路径"></path>
</g>
<rect id="矩形-copy-2" fill="#D8D8D8" opacity="0" x="0" y="0" width="20" height="20"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
此差异已折叠。
此差异已折叠。
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>不显示</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-356.000000, -179.000000)" fill="#666666" fill-rule="nonzero">
<g id="不显示" transform="translate(356.000000, 183.000000)">
<path d="M2.98760777,4.47585816 C4.94765492,6.11926669 7.43127373,7.00805831 9.98980402,6.98167478 C13.9640444,7.0225326 17.6093887,4.78176931 19.3649668,1.21883894 C19.5521654,0.807512254 19.3988241,0.321333583 19.0094289,0.091583043 C18.8181252,-0.001978335 18.5972317,-0.0148501233 18.3963409,0.055857502 C18.19545,0.126565127 18.0313945,0.274927609 17.9410059,0.467636331 C16.5441006,3.58701642 13.4088477,5.56280617 9.98980402,5.4783656 C7.76037056,5.50874238 5.60065046,4.70229859 3.93751811,3.21842997 C3.09832069,2.48280435 2.41273474,1.58885528 1.92008948,0.58786491 C1.68997986,0.235586567 1.25173349,0.0817075981 0.851666507,0.212715594 C0.487789672,0.467392835 0.384104767,0.960502427 0.614641265,1.33997149 C1.22659788,2.50788576 2.0285062,3.56608405 2.98760777,4.47133829 L2.98760777,4.47585816 Z M9.9941569,7.63120872 C9.52265361,7.67647236 9.1570345,8.06269722 9.13799621,8.53562135 L9.13799621,11.0955874 C9.12205241,11.4115164 9.2816591,11.7105094 9.55312518,11.873253 C9.82459126,12.0359967 10.1637225,12.0359967 10.4351886,11.873253 C10.7066547,11.7105094 10.8662614,11.4115164 10.8503176,11.0955874 L10.8503176,8.53562135 C10.8308133,8.06289364 10.465438,7.6769264 9.9941569,7.63120872 L9.9941569,7.63120872 Z M19.1249887,8.44075636 L17.6987795,6.33190961 C17.5749658,6.11437082 17.366006,5.95824866 17.1221706,5.90110218 C16.8783351,5.84395571 16.6216962,5.89095785 16.4139945,6.03080108 C15.9765328,6.33703529 15.8514494,6.92965089 16.1278823,7.38633299 L17.5551794,9.49517974 C17.6792244,9.71246602 17.888172,9.86836726 18.1319051,9.92548974 C18.3756382,9.98261222 18.6321679,9.93580255 18.8399644,9.79628826 C19.2775285,9.49003737 19.4022102,8.89707016 19.1249887,8.44075636 L19.1249887,8.44075636 Z M3.57867083,6.18081183 C3.16908942,5.91883495 2.63140244,5.9820699 2.29388586,6.33190961 L0.867676644,8.44075636 C0.590455144,8.89707016 0.715136858,9.49003736 1.15270091,9.79628826 C1.36049738,9.93580255 1.61702715,9.98261223 1.86076023,9.92548975 C2.10449332,9.86836727 2.31344092,9.71246602 2.43748588,9.49517974 L3.8636951,7.38633299 C3.97786782,6.96217115 3.87074091,6.50907376 3.57867083,6.18081183 L3.57867083,6.18081183 Z" id="Shape"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>Shape</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-462.000000, -267.000000)" fill="#FB5B52">
<path d="M471,267 C466.028906,267 462,271.028906 462,276 C462,280.971094 466.028906,285 471,285 C475.971094,285 480,280.971094 480,276 C480,271.028906 475.971094,267 471,267 L471,267 Z M475.236328,279.362695 C475.457812,279.580664 475.461328,279.935742 475.245117,280.158984 L475.245117,280.158984 C475.027148,280.380469 474.67207,280.383984 474.448828,280.167773 L471,276.7875 L467.551172,280.166016 C467.329687,280.383984 466.972852,280.380469 466.754883,280.157227 L466.754883,280.157227 C466.536914,279.935742 466.54043,279.578906 466.763672,279.360937 L470.19668,276 L466.763672,272.637305 C466.542188,272.419336 466.538672,272.064258 466.754883,271.841016 L466.754883,271.841016 C466.972852,271.619531 467.32793,271.616016 467.551172,271.832227 L471,275.2125 L474.448828,271.833984 C474.670313,271.616016 475.027148,271.619531 475.245117,271.842773 L475.245117,271.842773 C475.463086,272.064258 475.45957,272.421094 475.236328,272.639063 L471.80332,276 L475.236328,279.362695 L475.236328,279.362695 Z" id="Shape"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>分组 6</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-421.000000, -267.000000)">
<g id="分组-6" transform="translate(421.000000, 267.000000)">
<g id="邀请-(2)" transform="translate(0.000000, -0.000000)" fill="#BFBFBF" fill-rule="nonzero">
<path d="M16.5254083,18.8113734 L3.23546192,18.8113734 C2.01561178,18.8113734 1.05257219,17.8483338 1.05257219,16.6284837 L1.05257219,9.56619329 L9.5273206,17.463118 C9.59152325,17.5273206 9.71992851,17.5915232 9.78413116,17.5915232 L9.91253644,17.5915232 C10.0409417,17.5915232 10.169347,17.5273206 10.2977523,17.463118 L18.7725007,9.43778803 L18.7725007,16.564281 C18.7725007,17.8483338 17.7452585,18.8113734 16.5254083,18.8113734 M2.20821969,6.93388507 L2.20821969,9.05257219 L1.2451801,8.15373522 C1.37358538,7.64011411 1.69459858,7.25489827 2.20821969,6.93388507 M5.73936488,1.15564752 L14.1499107,1.15564752 C15.4981661,1.15564752 16.589611,1.99028183 16.589611,3.08172671 L16.589611,10.0798144 L9.91253644,16.3716731 L3.29966457,10.144017 L3.29966457,3.08172671 C3.29966457,1.99028183 4.39110945,1.15564752 5.73936488,1.15564752 M18.5798928,8.08953259 L17.6168532,8.98836954 L17.6168532,6.93388507 C18.0662717,7.19069563 18.4514875,7.57591147 18.5798928,8.08953259 M17.6810558,5.71403493 L17.6810558,3.01752406 C17.6810558,1.34825543 16.0759899,-5.68434189e-14 14.1499107,-5.68434189e-14 L5.73936488,-5.68434189e-14 C3.81328569,-5.68434189e-14 2.20821971,1.34825543 2.20821969,3.01752406 L2.20821969,5.71403493 C1.18097745,6.09925077 0.410545773,6.86968245 0.153735219,7.89692466 C0.025329932,8.02532995 -0.0388726919,8.28214051 0.0253299514,8.41054579 L0.0253299514,16.564281 C0.0253299514,18.4261576 1.50199067,19.9028183 3.36386721,19.9028183 L16.6538136,19.9028183 C18.5156901,19.9028183 19.9923509,18.4261576 19.9923509,16.564281 L19.9923509,8.85996426 C19.8639456,7.44750618 18.9651086,6.22765603 17.6810558,5.71403493" id="形状"></path>
<path d="M7.47283613,7.126493 C7.47283613,6.6128719 7.92225462,6.16345341 8.43587572,6.16345339 C8.82109156,6.16345339 9.20630741,6.42026395 9.33471269,6.80547979 C9.39891534,6.9980877 9.59152325,7.12649298 9.78413116,7.126493 L10.1051444,7.126493 C10.2977523,7.126493 10.4903602,6.99808772 10.5545628,6.80547979 C10.6829681,6.42026395 11.0681839,6.16345339 11.4533998,6.16345339 C11.9670209,6.16345339 12.4164394,6.61287188 12.4164394,7.126493 L12.4164394,7.25489827 C12.4164394,8.53895106 10.3619549,9.75880121 9.97673909,9.82300385 C9.59152325,9.75880121 7.53703878,8.53895106 7.53703878,7.25489827 L7.53703878,7.19069563 C7.47283613,7.25489827 7.47283613,7.19069563 7.47283613,7.126493 M9.91253644,10.9144487 C10.7471707,10.9144487 13.4436816,9.2451801 13.4436816,7.31910091 L13.4436816,7.25489827 L13.4436816,7.19069563 C13.4436816,6.09925075 12.5448447,5.2004138 11.3891972,5.2004138 C10.8113734,5.2004138 10.2977523,5.45722435 9.91253644,5.84244019 C9.5273206,5.45722435 9.01369949,5.2004138 8.43587572,5.2004138 C7.34443085,5.2004138 6.38139125,6.09925075 6.38139127,7.19069563 L6.38139127,7.31910091 C6.38139127,9.2451801 9.07790214,10.9144487 9.91253644,10.9144487" id="形状"></path>
</g>
<rect id="矩形-copy-3" fill="#D8D8D8" opacity="0" x="0" y="0" width="20" height="20"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
此差异已折叠。
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>矩形</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-312.000000, -267.000000)">
<g id="分组" transform="translate(312.000000, 267.000000)">
<g id="手机-4" transform="translate(3.000000, 0.000000)" fill="#BFBFBF" fill-rule="nonzero">
<path d="M2.09150327,1.56163239e-16 C0.906318083,1.56163239e-16 0,0.914285714 0,2.10989011 L0,17.8637363 C0,18.989011 0.906318083,19.9736264 2.09150327,19.9736264 L6.97167756,19.9736264 C7.25054466,19.9736264 7.43016098,19.7734512 7.43016098,19.4921325 C7.43016098,19.2108138 7.32026144,18.9974518 6.97167756,18.9974518 L2.32011275,18.9974518 C1.62294499,18.9974518 0.860188802,18.2857143 0.860188802,17.5824176 L0.860188802,15.7538462 L12.3433801,15.7538462 L12.3433801,17.5824176 C12.3433801,18.2857143 11.6374421,18.9186813 10.9402743,18.9186813 C10.9402743,18.9186813 10.5979133,18.9363149 10.4588734,18.9974518 C10.3198335,19.0585887 10.2176551,19.1700867 10.2176551,19.4514054 C10.2176551,19.7327241 10.5180301,19.9032967 10.7968972,19.9032967 L11.2244009,19.9032967 C12.4095861,19.9032967 13.3159041,18.9186813 13.3159041,17.7934066 L13.3159041,2.10989011 C13.2461874,0.914285714 12.3398693,0 11.1546841,0 L2.09150327,1.56163239e-16 Z M0.862257778,14.9233433 L0.862257778,2.21072948 C0.862257778,1.4842944 1.51035182,0.830502831 2.2304563,0.830502831 L11.0157311,0.830502831 C11.7358355,0.830502831 12.3839296,1.4842944 12.3839296,2.21072948 L12.3839296,14.9233433 L0.862257778,14.9233433 Z" id="Shape"></path>
<path d="M8.22657952,2.12307692 L5.08932462,2.12307692 C4.81045752,2.12307692 4.53159041,2.33406593 4.53159041,2.68571429 C4.53159041,2.96703297 4.74074074,3.24835165 5.08932462,3.24835165 L8.22657952,3.24835165 C8.50544662,3.17802198 8.71459695,2.96703297 8.71459695,2.61538462 C8.71459695,2.33406593 8.50544662,2.12307692 8.22657952,2.12307692 L8.22657952,2.12307692 Z M7.45969499,16.8923077 L5.7167756,16.8923077 C5.4379085,16.8923077 5.22875817,17.0741259 5.22875817,17.3165501 C5.22875817,17.5589743 5.4379085,17.7407925 5.7167756,17.7407925 L7.45969499,17.7407925 C7.73856209,17.7407925 8.01742919,17.5589743 8.01742919,17.255944 C8.01742919,17.0741259 7.80827887,16.8923077 7.45969499,16.8923077 Z" id="Shape"></path>
</g>
<rect id="矩形" fill="#D8D8D8" opacity="0" x="0" y="0" width="20" height="20"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>Group 9</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-320.000000, -179.000000)" fill="#666666" fill-rule="nonzero">
<g id="Group-9" transform="translate(320.000000, 183.000000)">
<g id="Group-12">
<path d="M8.66701834,9.46570652 C7.30791394,8.87476767 6.42857143,7.51241956 6.42857143,5.99606099 C6.42857143,3.91861582 8.07394255,2.22857143 10.0963641,2.22857143 C12.118123,2.22857143 13.7628314,3.91861582 13.7628314,5.99606099 C13.7628314,7.48935192 12.9258988,8.84830772 11.6297466,9.457565 C11.2964314,9.61428931 10.9028146,9.46502805 10.7504041,9.12444103 C10.5979935,8.78453247 10.7437775,8.3815271 11.0764301,8.22480279 C11.9034229,7.83604508 12.4375224,6.96150987 12.4375224,5.99606099 C12.4375224,4.66695743 11.3872151,3.58549185 10.0963641,3.58549185 C8.80485046,3.58549185 7.75388043,4.66695743 7.75388043,5.99606099 C7.75388043,6.96693756 8.31581144,7.83875893 9.18587681,8.21733973 C9.52250529,8.36388714 9.67955441,8.76214328 9.53642104,9.10680106 C9.42907101,9.36461595 9.18388884,9.51998333 8.92611624,9.51998333 C8.83997116,9.51998333 8.7518381,9.50302183 8.66701834,9.46570652 Z" id="Shape"></path>
<path d="M9.99216722,12.0786272 C5.81147998,12.0786272 2.28417006,9.13546677 0.553316517,7.38096867 C0.196808387,7.01934937 0,6.5430703 0,6.03965282 C0,5.53555689 0.196808387,5.05927782 0.553316517,4.69765852 C2.28417006,2.94316041 5.81147998,0 9.99216722,0 C14.1728545,0 17.7001644,2.94316041 19.4303553,4.69765852 C19.7868634,5.05927782 19.9836718,5.53555689 19.9836718,6.03965282 C19.9836718,6.5430703 19.7868634,7.01934937 19.4303553,7.38096867 C19.1083052,7.70798649 18.8233638,7.9909044 18.339626,8.40747896 C18.0593231,8.64833234 17.6411881,8.61169549 17.4059458,8.32470682 C17.1707034,8.03771815 17.2064868,7.60960976 17.4867896,7.36875639 C17.9334188,6.98406945 18.1872154,6.73168224 18.4980004,6.4168767 C18.6013745,6.31171537 18.6583628,6.17805871 18.6583628,6.03965282 C18.6583628,5.90124694 18.6013745,5.76691182 18.4980004,5.66242894 C17.2210652,4.36792686 13.8368886,1.35692043 9.99216722,1.35692043 C6.14744581,1.35692043 2.76260662,4.36792686 1.48633405,5.66242894 C1.38295995,5.76691182 1.325309,5.90124694 1.325309,6.03965282 C1.325309,6.17805871 1.38295995,6.31171537 1.48633405,6.41619825 C2.76260662,7.71137878 6.14744581,10.7217068 9.99216722,10.7217068 C11.9701909,10.7217068 13.7003818,10.1321248 15.6015376,8.81048433 C15.9050333,8.59880475 16.3172044,8.68021998 16.5219647,8.99027629 C16.7280502,9.30033261 16.6491943,9.7216564 16.3463612,9.93265753 C14.2411079,11.3967747 12.221337,12.0786272 9.99216722,12.0786272" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>矩形 copy</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="切图" transform="translate(-348.000000, -267.000000)">
<g id="分组-4" transform="translate(348.000000, 267.000000)">
<g id="密码" transform="translate(2.000000, 1.000000)" fill="#BFBFBF" fill-rule="nonzero">
<path d="M14.3399249,7.05417601 L3.67617752,7.05417601 L3.67617752,5.35338327 C3.67617752,3.03430719 5.60720881,1.1465916 7.98159984,1.1465916 C10.3559909,1.1465916 12.2870222,3.0363613 12.2870222,5.35749147 C12.2870222,5.6717684 12.5454736,5.92647649 12.8690632,5.92647649 C13.1905515,5.92647649 13.4511042,5.67382249 13.4511042,5.35749147 C13.4490029,2.40780748 10.9947651,0.0106756959 7.98159984,0.0106756959 C6.5212443,0.0106756959 5.14703922,0.565282021 4.11533479,1.57589799 C3.08152914,2.58445986 2.51419676,3.92578552 2.51419676,5.35338327 L2.51419676,7.05417601 L1.2891791,7.05417601 C0.576861801,7.05417601 0.00532696109,7.61289053 0.00532694056,8.30717549 L0.00532694056,16.934385 C0.00532694056,17.630724 0.578963004,18.2079254 1.2891791,18.2079254 L14.3399249,18.2079254 C15.0522422,18.2079254 15.6384857,17.6327781 15.6384856,16.934385 L15.6384856,8.30717549 C15.6405869,7.61083644 15.0543434,7.05417601 14.3399249,7.05417601 L14.3399249,7.05417601 Z M14.4786061,16.9467096 C14.4786061,17.0165489 14.4197717,17.0740636 14.3483298,17.0740636 L1.29548279,17.0740636 C1.22404093,17.0740636 1.16520647,17.0165489 1.16520647,16.9467096 L1.16520647,8.31744598 C1.16520647,8.24760665 1.22404093,8.19009193 1.29548279,8.19009193 L14.3462286,8.19009193 C14.4176704,8.19009193 14.4765049,8.24760665 14.4765049,8.31744598 L14.4765049,16.9467096 L14.4786061,16.9467096 L14.4786061,16.9467096 Z M7.71684475,9.99769771 C7.05915944,9.99769771 6.52754801,10.5173844 6.52754799,11.1603169 C6.52754799,11.583461 6.76078463,11.9552526 7.10958898,12.1586083 L7.10958898,14.4119532 C7.10958898,14.7241761 7.37014163,14.9809383 7.69162996,14.9809382 C8.01311829,14.9809382 8.27367096,14.7262302 8.27367096,14.4119532 L8.27367096,12.1873657 C8.65189255,11.9942805 8.90824273,11.6060561 8.90824273,11.1603169 C8.90404026,10.5173844 8.37453005,9.99769773 7.71684475,9.99769771 L7.71684475,9.99769771 Z" id="Shape"></path>
</g>
<rect id="矩形-copy" fill="#D8D8D8" opacity="0" x="0" y="0" width="20" height="20"></rect>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="490px" height="101px" viewBox="0 0 490 101" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>矩形</title>
<desc>Created with Sketch.</desc>
<defs>
<filter x="-6.8%" y="-58.8%" width="113.6%" height="217.6%" filterUnits="objectBoundingBox" id="filter-1">
<feGaussianBlur stdDeviation="10" in="SourceGraphic"></feGaussianBlur>
</filter>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.4">
<g id="切图" transform="translate(-287.000000, -29.000000)" fill="#449284">
<rect id="矩形" filter="url(#filter-1)" x="312" y="54" width="440" height="51" rx="3"></rect>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="112px" height="6px" viewBox="0 0 112 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>矩形</title>
<desc>Created with Sketch.</desc>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.300000012">
<g id="切图" transform="translate(-123.000000, -66.000000)" fill="#449284">
<rect id="矩形" x="123" y="66" width="112" height="6"></rect>
</g>
</g>
</svg>
\ No newline at end of file
<template>
<div class="custom-textarea" :class="errTips ? 'err-border' : ''">
<textarea v-model="inputContent" :placeholder="placeholderTxt" @input="inputHandler" @blur="inputHandlerBlur" :maxlength="maxlength" :rows="rows"></textarea>
<div class="txt-wrap">{{computedNum}}/{{maxlength}}</div>
</div>
</template>
<script>
export default {
data(){
return{
inputContent: ''
}
},
props: {
maxlength: {
type: Number,
default: 30
},
rows: {
type: Number,
default: 3
},
placeholderTxt: String,
inputContentFrom: String,
errTips: {
type: Boolean,
default: false
}
},
computed: {
computedNum(){
return this.inputContent.length
}
},
mounted(){
console.log('外部内容',this.inputContentFrom)
if(this.inputContentFrom){
this.inputContent = this.inputContentFrom;
}
},
methods: {
inputHandler(){
this.$emit('inputHandler',this.inputContent)
},
inputHandlerBlur(){
this.$emit('inputHandlerBlur',this.inputContent)
}
}
}
</script>
<style scoped lang="scss">
.custom-textarea{
width: 60%;
border: 1px solid #DCDFE6;
padding: 5px 15px;
border-radius: 4px;
&.err-border{
border-color: #F56C6C;
}
textarea{
outline: none;
color: #606266;
resize: none;
width: 100%;
}
::-webkit-input-placeholder {
color: #999;
}
.txt-wrap{
line-height: 20px;
text-align: right;
color: #606266;
}
}
</style>
<template>
<el-dialog title="本次随访详情" :visible.sync="dialogFormVisible" center :close-on-click-modal="false" :close-on-press-escape="false" width="800px">
<!--<el-form ref="statusForm" :model="statusForm" :rules="rules" label-suffix=":" label-width="120px">-->
<!--<el-form-item label="居民" style="margin-bottom:0;">-->
<!--<span>{{statusForm.nickname}}</span>-->
<!--</el-form-item>-->
<!--<el-form-item label="变更状态">-->
<!--<span>{{statusForm.status==1 ? '未完成' : '已完成'}}</span>-->
<!--</el-form-item>-->
<!--<el-form-item label="*变更原因" prop="reason" class="required-item">-->
<!--<custom-textarea-->
<!--:placeholderTxt="placeholderTxt"-->
<!--:inputContentFrom="statusForm.reason"-->
<!--@inputHandler="inputHandler"-->
<!--@inputHandlerBlur="inputHandlerBlur"></custom-textarea>-->
<!--</el-form-item>-->
<!--</el-form>-->
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
data(){
return{
// dialogFormVisible: true
}
},
props: {
dialogFormVisible: {
type: Boolean,
default: false
}
},
computed: {
},
mounted(){
},
methods: {
save(){
this.dialogFormVisible = false;
},
}
}
</script>
<style scoped lang="scss">
</style>
<template>
<div class="form-box">
<el-row>
<el-col
v-for="(item, index) in dataSource"
:span="item.spanNum ? item.spanNum : spanNum"
:class="item.className"
:offset="item.offset"
:key="index" >
<el-form-item
v-if="isParent(item)"
:prop="item.prop"
:label="item.label"
:rules="item.rules"
:label-width="item.labelWidth"
:required="item.required"
:class="item.className"
:error="item.error">
<!-- div文本 -->
<div v-if="item.formType === 'div'" :class="item.className">{{ item.name }}</div>
<!--button-->
<el-button
v-if="item.formType === 'button'"
type="primary"
@click="item.clickFunc ? item.clickFunc($event) : defaultClick($event)"
:icon="item.icon">{{ item.btnText }}
</el-button>
<!-- input -->
<el-input
v-else-if="item.formType === 'input'"
v-model.trim="form[item.model]"
:refs="item.refs"
:type="item.type"
:class="item.className"
:disabled="item.disabled"
:maxlength="item.maxlength"
:minlength="item.minlength"
:placeholder="item.placeholder"
@blur="item.blurFunc ? item.blurFunc($event) : defaultBlur($event)"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<template
v-for="slot in item.slots || []"
:slot="slot.type">{{ slot.name }}</template>
</el-input>
<!-- label -->
<label
v-else-if="item.formType === 'label'"
:class="item.className"
:disabled="item.disabled">{{ form[item.model]==''?'-':form[item.model] }}{{ item.suffix }}
</label>
<!-- select -->
<el-select
v-else-if="item.formType === 'select'"
v-model="form[item.model]"
:multiple="item.multiple"
:placeholder="item.placeholder"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<el-option
v-for="(opt, index2) in item.options"
:key="index2"
:label="opt.label"
:value="opt.value"/>
</el-select>
<!-- checkbox -->
<el-checkbox-group
v-else-if="item.formType === 'checkbox'"
v-model="form[item.model]"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-checkbox
v-for="(opt, ck) in item.options"
:key="ck"
:label="opt.value"
>
{{ opt.label }}
</el-checkbox>
</el-checkbox-group>
<!-- radios -->
<el-radio-group
v-else-if="item.formType === 'radio'"
v-model="form[item.model]"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-radio
v-for="(opt, rad) in item.options"
:key="rad"
:label="opt.value">
{{ opt.label }}
</el-radio>
</el-radio-group>
<!-- switch-->
<el-switch
v-else-if="item.formType === 'switch'"
v-model="form[item.model]"/>
<!-- transfer-->
<el-transfer
v-else-if="item.formType === 'transfer'"
v-model="form[item.model]"
:data="item.data"/>
<!-- 时间 -->
<el-date-picker
v-else-if="item.formType === 'date-picker'"
v-model="form[item.model]"
:disabled="item.disabled"
:editable="false"
:type="item.dateType || dateType"
:placeholder="item.placeholder"
:format="item.format || format"
:value-format="item.valueFormat || valueFormat"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"/>
<!-- 图片 -->
<img v-else-if="item.formType === 'img'" :src="item.src||''" :alt="item.alt||''" :width="item.width">
<!--循环遍历-->
<el-row
v-else-if="item.formType === 'list'"
v-for="(itemChild, indexChild) in form[item.model]"
:key="indexChild"
style="width: 800px;margin-bottom: 15px;font-size:18px;color:#606266;">
<el-col :span="24">
<span>{{itemChild.medicinesName}}:</span>
<span>每日{{itemChild.dosageDay}}次,</span>
<span>每次{{itemChild.dosageNum}}</span>
<el-button
type="plain"
icon="el-icon-delete"
class="margin-left-20"
@click="clickDeleteFunc(form[item.model], indexChild)">删除</el-button>
</el-col>
</el-row>
</el-form-item>
</el-col>
</el-row>
</div>
</template>
<script>
import _ from 'lodash'
export default {
props: {
ruleNew: Boolean,//用于关联跨模块交互
dataSource: {
type: Array,
default: () => []
},
form: {
type: Object,
default: () => {}
}
},
watch: {
form(val){
this.form = val
this.$forceUpdate()
},
},
data() {
return {
spanNum: 6,
// valueFormat: 'timestamp',
// valueFormat: 'yyyy-MM-dd',
// format: 'yyyy',
// dateType: 'datetime'
}
},
methods: {
defaultClick(){},
defaultFun() {},
defaultBlur(){},
isParent(item) {
if (!item.linkageRule) {
return true
} else {
let num = 0
item.linkageRule.forEach(t => {
if (this.form[t.name] == null) {
return false
}
if (typeof this.form[t.name] === 'string') {
if (t.value.includes(this.form[t.name])) {
num += 1
}
} else {
const nameVal = this.form[t.name]
const valType = _.isArray(nameVal) ? nameVal : Array.of(nameVal)
const bool = _.intersection(valType, t.value)
if (_.isArray(bool) && bool.length > 0) {
num += 1
}
}
})
if (num !== item.linkageRule.length) {
delete this.form[item.model]
}
return num === item.linkageRule.length
}
},
clickDeleteFunc(list, index) {
list.splice(index, 1);
},
}
}
</script>
<style lang="scss" scoped>
</style>
<style lang="scss">
.form-template .screenSet{
margin: 88px 30px 0px;
overflow: visible !important;
}
.form-box {
padding: 20px 0px;
.sec-title{
font-size: 18px;
float: none;
font-weight: bold;
margin-left: 0;
overflow: hidden;
height: auto;
}
.color-gray{
color: #a7a7a7;
}
.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before {
content: '*';
color: #F56C6C;
margin-right: 10px;
}
.el-date-editor{
width: 100%;
}
.el-form-item__label,
.el-radio__label {
font-size: 18px;
}
.float-none{
float: none;
.el-form-item__label,
.el-form-item__content{
display: block;
float: none;
}
}
.obj-form-title{
.el-form-item__label,
.el-form-item__content{
display: block;
float: none;
}
.el-form-item__content{
margin-left: 15px;
.el-radio{
margin-top: 5px;
}
}
}
.title-obj{
font-size: 20px;
}
.el-form-item__label{
font-weight: bold;
}
.obj-form-title2{
margin-left: 15px;
.el-checkbox__label{
font-size: 18px;
}
}
.obj-form-title3{
margin-left: 25px;
}
.obj-form-title4{
margin-left: 35px;
}
.radio-block{
.el-radio-group{
.el-radio{
display: block;
}
}
}
.el-checkbox__input.is-checked+.el-checkbox__label {
color: #449284 !important;
}
.margin-left-20{
margin-left: 20px;
}
.margin-left-40{
margin-left: 40px;
}
.margin-left-60{
margin-left: 60px;
}
.margin-left-80{
margin-left: 80px;
}
}
</style>
此差异已折叠。
......@@ -10,7 +10,9 @@ import vueFilters from '@/utils/filter'
// 引入ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css';
//引入滚动加载分页
import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)
// 可调试
// Vue.config.devtools = true;
// Vue.use(Logger, { prefix: new Date(), isDev: process.env.NODE_ENV === 'development', cLevel: 'debug' })
......
const followUp = r => require.ensure([], () => r(require('../views/followup/layout.vue')), 'followUp');
/*计划*/
const planManage = r => require.ensure([], () => r(require('../views/followup/plan-manage/layout.vue')), 'planManage');
const planList = r => require.ensure([], () => r(require('../views/followup/plan-manage/plan-list.vue')), 'planList');
const planDetail = r => require.ensure([], () => r(require('../views/followup/plan-manage/plan-detail.vue')), 'planDetail');
const planModify = r => require.ensure([], () => r(require('../views/followup/plan-manage/plan-modify.vue')), 'planModify');
const residentList = r => require.ensure([], () => r(require('../views/followup/plan-manage/resident-list.vue')), 'residentList');
const residentDetail = r => require.ensure([], () => r(require('../views/followup/plan-manage/resident-detail.vue')), 'residentDetail');
const newPlan = r => require.ensure([], () => r(require('../views/followup/plan-manage/new-plan.vue')), 'newPlan');
/*预约*/
const reservationManage = r => require.ensure([], () => r(require('../views/followup/reservation-manage/layout.vue')), 'reservationManage');
const reservationList = r => require.ensure([], () => r(require('../views/followup/reservation-manage/reservation-list.vue')), 'reservationList');
/*录入*/
const recordManage = r => require.ensure([], () => r(require('../views/followup/record-manage/layout.vue')), 'recordManage');
const recordList = r => require.ensure([], () => r(require('../views/followup/record-manage/record-list.vue')), 'recordList');
const formTemplate = r => require.ensure([], () => r(require('../views/followup/record-manage/form-template.vue')), 'formTemplate');//量表模板
const followRouters = {
path: '/followup',
name: 'followUp',
component: followUp,
redirect: 'followup/plan-manage/planList',
children: [
{
path: 'plan-manage',
component: planManage,
name: 'planManage',
redirect: 'plan-manage/plan-list',
children: [
{
path: 'plan-modify',
component: planModify,
name: 'planModify',
meta: {
title: '修改计划',
keepAlive: false //页面不需要缓存
},
},
{
path: 'plan-detail',
component: planDetail,
name: 'planDetail',
meta: {
title: '查看计划',
keepAlive: false //页面不需要缓存
},
},
{
path: 'plan-list',
component: planList,
name: 'planList',
meta: {
title: '计划列表',
keepAlive: false //页面不需要缓存
},
},
{
path: 'resident-list',
component: residentList,
name: 'residentList',
meta: {
title: '居民列表',
keepAlive: false //页面不需要缓存
},
},
{
path: 'resident-detail',
component: residentDetail,
name: 'residentDetail',
meta: {
title: '居民详情',
keepAlive: false //页面不需要缓存
},
},
{
path: 'new-plan',
component: newPlan,
name: 'newPlan',
meta: {
title: '新建随访计划',
keepAlive: false //页面不需要缓存
},
},
],
meta: {
title: '计划管理',
},
},
{
path: 'reservation-manage',
component: reservationManage,
name: 'reservationManage',
redirect: 'reservation-manage/reservation-list',
children: [
{
path: 'reservation-list',
component: reservationList,
name: 'reservationList',
meta: {
title: '预约列表',
keepAlive: false
},
},
],
meta: {
title: '预约管理',
},
},
{
path: 'record-manage',
component: recordManage,
name: 'recordManage',
redirect: 'record-manage/record-list',
children: [
{
path: 'record-list',
component: recordList,
name: 'recordList',
meta: {
title: '录入列表',
keepAlive: false
},
},
{
path: 'form-template',
component: formTemplate,
name: 'formTemplate',
meta: {
title: '录入量表',
keepAlive: false
},
},
],
meta: {
title: '录入管理',
},
},
],
};
export default followRouters
const patientsManage = r => require.ensure([], () => r(require('../views/patients/layout.vue')), 'patientsManage');
/*我的居民*/
const myPatientsManage = r => require.ensure([], () => r(require('../views/patients/mypatients-manage/layout.vue')), 'myPatientsManage');
const patientsList = r => require.ensure([], () => r(require('../views/patients/mypatients-manage/patients-list.vue')), 'patientsList');
const patientDetail = r => require.ensure([], () => r(require('../views/patients/mypatients-manage/patient-detail.vue')), 'patientDetail');
const basicInfo = r => require.ensure([], () => r(require('../views/patients/mypatients-manage/basic-info.vue')), 'basicInfo');
/*新增居民*/
const newManage = r => require.ensure([], () => r(require('../views/patients/new-manage/layout.vue')), 'newManage');
const newPatient = r => require.ensure([], () => r(require('../views/patients/new-manage/new-patient.vue')), 'newPatient');
/*分组管理*/
const labelsManage = r => require.ensure([], () => r(require('../views/patients/labels-manage/layout.vue')), 'labelsManage');
const labelsList = r => require.ensure([], () => r(require('../views/patients/labels-manage/labels-list.vue')), 'labelsList');
const labelsDetail = r => require.ensure([], () => r(require('../views/patients/labels-manage/labels-detail.vue')), 'labelsDetail');
/*资料不全居民*/
const notCompleteManage = r => require.ensure([], () => r(require('../views/patients/not-complete/layout.vue')), 'halfDataManage');
const notCompleteList = r => require.ensure([], () => r(require('../views/patients/not-complete/not-complete-list.vue')), 'halfDataList');
const patientsRouters = {
path: '/patients-manage',
name: 'patientsManage',
component: patientsManage,
redirect: 'patients-manage/mypatients-manage/patients-list',
children: [
{
path: 'mypatients-manage',
component: myPatientsManage,
name: 'myPatientsManage',
redirect: 'mypatients-manage/patients-list',
children: [
{
path: 'patients-list',
component: patientsList,
name: 'patientsList',
meta: {
title: '我的居民列表',
keepAlive: false //页面不需要缓存
},
},
{
path: 'patient-detail',
component: patientDetail,
name: 'patientDetail',
meta: {
title: '居民详情',
keepAlive: false
},
},
{
path: 'basic-info',
component: basicInfo,
name: 'basicInfo',
meta: {
title: '居民详情',
keepAlive: false
},
},
],
meta: {
title: '我的居民',
},
},
{
path: 'new-manage',
component: newManage,
name: 'newManage',
redirect: 'new-manage/new-patient',
children: [
{
path: 'new-patient',
component: newPatient,
name: 'newPatient',
meta: {
title: '新增居民',
keepAlive: false
},
},
],
meta: {
title: '新增居民',
},
},
{
path: 'labels-manage',
component: labelsManage,
name: 'labelsManage',
redirect: 'labels-manage/labels-list',
children: [
{
path: 'labels-list',
component: labelsList,
name: 'labelsList',
meta: {
title: '分组管理',
keepAlive: false
},
},
{
path: 'labels-detail',
component: labelsDetail,
name: 'labelsDetail',
meta: {
title: '分组详情',
keepAlive: false
},
},
],
meta: {
title: '分组管理',
},
},
{
path: 'not-complete',
component: notCompleteManage,
name: 'notCompleteManage',
redirect: 'not-complete/uncompleted-list',
children: [
{
path: 'uncompleted-list',
component: notCompleteList,
name: 'notCompleteList',
meta: {
title: '资料不全居民',
keepAlive: false
},
},
],
meta: {
title: '资料不全居民',
},
},
],
};
export default patientsRouters
import App from '../App'
const login = r => require.ensure([], () => r(require('../views/login')), 'login')
const home = r => require.ensure([], () => r(require('../views/home')), 'home')
const blank = r => require.ensure([], () => r(require('../views/blank')), 'blank')
const itemManager = r => require.ensure([], () => r(require('../views/education/item-manager.vue')), 'item-manager')
......@@ -9,10 +11,19 @@ const roleManager = r => require.ensure([], () => r(require('../views/system/rol
const addManager = r => require.ensure([], () => r(require('../views/education/add-manager.vue')), 'add-manager')
const itemRole = r => require.ensure([], () => r(require('../views/system/item-role.vue')), 'item-role')
import patientsRouters from './patients'
import followRouters from './follow'
export default [{
path: '/',
component: App,
children: [
{
path: '/login',
component: login,
name: 'loginPage',
},
{
path: '',
redirect: '/home'
......@@ -44,5 +55,7 @@ export default [{
path: '/item-role',
component: itemRole
},
followRouters,
patientsRouters,
]
}]
\ No newline at end of file
}]
import planManage from './planManage'
import reservationManage from './reservationManage'
import workbench from './workbench'
import recordManage from './recordManage'
const followModules = {
planManage,
reservationManage,
workbench,
recordManage
}
export default followModules
import {getPlanList,
getPlanDetail,
getNodeTimeList,
getNodeTimeContent,
getResidentList,
getGroupList,
getResidentDetail,
getBasicData,
getFormOptions,
getFollowupTemplate,
createFollowPlan,
getFollowStartTimeList} from '../../utils/followup/followapis'
export default {
namespaced: true,
state: {
residentList: { //居民列表
pageNum: 1, //当前页码
pageSize: 10, //每页数据大小
total: null, //总数
},
groupList: [], //分组列表
residentDetail: {}, //居民详情,
planDetail: {}, // 计划详情页,
nodeTimeList: [], //随访时间节点列表,
nodeContent: {}, //时间节点详情
planOption: [], //随访计划select
timeNodeList: [],
setTimeNodeList: [], //新建计划设置时间节点
planList: {}, //随访计划列表
remarkOption: [], //随访计划备注常量
markOptions: [], //随访 随访时间节点单位 常量
followTypeList: [], //随访 随访方式 常量
remindOptions: [], //随访 提醒医生天数 常量
pushTimeOptions: [], //随访 推送患教提醒天数 常量
planStatusOption: [], //随访计划状态常量
formOptions: [],// 获取量表
templateOptions: [ // 获取随访计划模板
{
id: 0,
name: '自定义模板'
}
],
followStartTimeList: [], //随访时间
residentCrumb: [], //居民面包屑
planModifyCrumb: [], //修改计划面包屑
selectResidentList: [], //修改计划已选居民
},
mutations: {
GET_RESIDENT_LIST(state, payload) {
state.residentList = payload
},
GET_GROUP_LIST(state, payload) {
state.groupList = payload
},
GET_FOLLOW_START_TIME_LIST(state, payload) {
state.followStartTimeList = payload
},
GET_RESIDENT_DETAIL(state, payload) {
state.residentDetail = payload
state.timeNodeList = payload.fPlanDto.fPlanTimeReqList
},
GET_PLAN_DETAIL(state, payload) {
state.planDetail = payload
},
GET_REMARK_OPTION(state, payload) {
state.remarkOption = payload.P211
},
GET_DATE_UNIT(state, payload){
state.markOptions = payload.P017
},
GET_FOLLOW_TYPE_LIST(state, payload){
state.followTypeList = payload.P212
},
GET_REMIND_OPTIONS(state, payload){
state.remindOptions = payload.P213
},
GET_PUSH_TIME_OPTIONS(state, payload){
state.pushTimeOptions = payload.P214
},
GET_PLAN_STATUS_OPTION(state, payload) {
state.planStatusOption = payload.P216
},
GET_NODE_TIME_LIST(state, payload) {
state.nodeTimeList = payload
},
GET_NODE_CONTENT(state, payload) {
state.nodeContent = payload
},
GET_PLAN_OPTION(state, payload) {
state.planOption = payload.fPlanDtoList
},
SET_TIME_NODE_LIST(state, payload) {
state.setTimeNodeList = payload;
},
GET_PLAN_LIST(state, payload) {
state.planList = payload
},
GET_FORM_OPTIONS(state, payload){
state.formOptions = payload
},
GET_FOLLOW_TEMPLATE(state, payload){
state.templateOptions = [
{
id: 0,
name: '自定义模板'
}
]
state.templateOptions = state.templateOptions.concat(payload)
},
SET_RESIDENT_CRUMB(state, payload){
state.residentCrumb = payload
sessionStorage.setItem('residentCrumb', JSON.stringify(state.residentCrumb));
},
SET_PLAN_MODIFY_CRUMB(state, payload) {
state.planModifyCrumb = payload
sessionStorage.setItem('planModifyCrumb', JSON.stringify(state.planModifyCrumb));
},
GET_SELECT_RESIDENT(state, payload) {
state.selectResidentList = payload.fPlanPatientInfoDtoList
}
},
actions: {
setFollowPlan(context, payload) {
createFollowPlan({
...payload
}).then(({data})=> {
// console.log('成功',data)
})
},
getResidentList(context, payload) {
const { pageSize, pageNum } = context.state.residentList;
getResidentList({
pageSize,
pageNum,
...payload
}).then(({data}) => {
context.commit('GET_RESIDENT_LIST', data);
context.dispatch('getSelectResident',{
planId: payload.planId
})
});
},
getGroupList(context, payload) {
getGroupList({}).then(({data}) => {
context.commit('GET_GROUP_LIST', data);
});
},
getFollowStartTimeList(context, payload) {
getFollowStartTimeList(payload).then(({data}) => {
context.commit('GET_FOLLOW_START_TIME_LIST', data);
});
},
getResidentDetail(context, payload) {
getResidentDetail(
payload.planId,
payload.patientId,
payload.fuPlanPatientId
).then(({data}) => {
context.commit('GET_RESIDENT_DETAIL', data);
});
},
getPlanDetail(context, payload) {
getPlanDetail(payload).then(({data}) => {
context.commit('GET_PLAN_DETAIL', data);
context.dispatch('getSelectResident',{
planId: data.id
})
});
},
getRemarkOption(context, payload) {
getBasicData({
numList: 'P211'
}).then(({data}) => {
context.commit('GET_REMARK_OPTION', data);
});
},
getDateUnit(context, payload){
// 随访时间节点单位
getBasicData({
numList: 'P017'
}).then(({data})=>{
context.commit('GET_DATE_UNIT', data);
})
},
getFollowTypeList(context, payload){
// 随访方式
getBasicData({
numList: 'P212'
}).then(({data})=>{
context.commit('GET_FOLLOW_TYPE_LIST', data);
})
},
getRemindOptions(context, payload){
// 提醒医生天数
getBasicData({
numList: 'P213'
}).then(({data})=>{
context.commit('GET_REMIND_OPTIONS', data);
})
},
getPushTimeOptions(context, payload){
// 推送患教提醒天数
getBasicData({
numList: 'P214'
}).then(({data})=>{
context.commit('GET_PUSH_TIME_OPTIONS', data);
})
},
getFormOptions(context, payload){
// 获取量表
getFormOptions().then(({data})=>{
context.commit('GET_FORM_OPTIONS', data);
})
},
getFollowupTemplate(context, payload){
// 获取随访模板
getFollowupTemplate().then(({data})=>{
context.commit('GET_FOLLOW_TEMPLATE', data);
})
},
getPlanStatusOption(context, payload) {
getBasicData({
numList: 'P216'
}).then(({data}) => {
context.commit('GET_PLAN_STATUS_OPTION', data);
});
},
getNodeTimeList(context, payload) {
getNodeTimeList(payload).then(({data}) => {
context.commit('GET_NODE_TIME_LIST', data);
});
},
getNodeTimeContent(context, payload) {
getNodeTimeContent(payload).then(({data}) => {
context.commit('GET_NODE_CONTENT', data);
});
},
getPlanOptions(context, payload) {
getPlanList({
pageNo: -1
}).then(({data}) => {
context.commit('GET_PLAN_OPTION', data);
});
},
/*async changePlan(context, payload) {
changePlan({
...payload
}).then(({data}) => {
return data
});
},*/
getTimeNodeList(context, payload){
context.commit('SET_TIME_NODE_LIST', payload);
},
async getPlanList(context, payload) {
await getPlanList({
...payload
}).then(({data}) => {
context.commit('GET_PLAN_LIST', data);
});
},
setResidentCrumb(context, payload) {
context.commit('SET_RESIDENT_CRUMB', payload);
},
setPlanModifyCrumb(context, payload) {
context.commit('SET_PLAN_MODIFY_CRUMB', payload);
},
getSelectResident(context, payload) {
getResidentList({
needEnd: 1,
...payload
}).then(({data}) => {
context.commit('GET_SELECT_RESIDENT', data);
});
}
},
}
import {getEnteringList, getEnteringInfo, getFormList} from '../../utils/followup/followapis'
export default {
namespaced: true,
state: {
recordList: {}, //录入列表
enteringInfo: {}, //单条信息查看
constantsData: {},//获取常量
formList: {}, //获取量表列表
},
mutations: {
GET_RECORD_LIST(state, payload) {
state.recordList = payload
},
GET_ENTERING_INFO(state, payload) {
state.enteringInfo = payload
},
GET_CONSTANS_DATA(state, payload) {
state.constantsData = payload
},
GET_FORM_LIST(state, payload) {
state.formList = payload
},
},
actions: {
async getRecordList(context, payload) {
await getEnteringList({
...payload
}).then(({data}) => {
context.commit('GET_RECORD_LIST', data);
});
},
async getEnteringInfo(context, payload) {
await getEnteringInfo(payload.patientId, payload.fuPlanPatientTimesId).then(({data}) => {
context.commit('GET_ENTERING_INFO', data);
});
},
async getFormList(context, payload) {
await getFormList(payload).then(({data}) => {
context.commit('GET_FORM_LIST',data)
})
}
},
}
import {getReservationList,
getCheckReservation,
getReservationPatients,
getBasicData} from '../../utils/followup/followapis'
export default {
namespaced: true,
state: {
reservationList: { //居民列表
pageNo: 1, //当前页码
pageSize: 10, //每页数据大小
count: null, //总数
},
checkRevervationData: {},//发送预约校验
constantsData: {},//获取常量
getRevervationNum: null, //查看已预约人数
userName: '',
},
mutations: {
GET_RESERVATION_LIST(state, payload) {
state.reservationList = payload;
},
GET_CHECK_RESERVATION(state, payload) {
state.checkRevervationData = payload
},
GET_CONSTANS_DATA(state, payload) {
state.constantsData = payload
},
GET_REVERVATION_NUM(state, payload) {
state.getRevervationNum = payload
},
GET_USER_NAME(state, payload) {
state.userName = payload
}
},
actions: {
getReservationList(context, payload) {
const { pageNo, pageSize } = context.state.reservationList;
getReservationList({
pageNo,
pageSize,
...payload
}).then(({data}) => {
context.commit('GET_RESERVATION_LIST', data);
});
},
async getCheckReservation(context, payload) {
await getCheckReservation({
...payload
}).then(({data}) => {
context.commit('GET_CHECK_RESERVATION', data)
})
},
async getConstantsData(context, payload) {
await getBasicData({
...payload
}).then(({data}) => {
context.commit('GET_CONSTANS_DATA', data)
})
},
getReservationPatients(context, payload) {
getReservationPatients({
...payload
}).then(({data}) => {
context.commit('GET_REVERVATION_NUM', data)
})
},
getUserName(context, payload) {
context.commit('GET_USER_NAME', payload)
},
// getConstantsData({commit}) {
// return new Promise(async (resolve, reject)=>{
// const res = await followApi.getBasicData({
// ...payload
// });
// if (res === null) return;
// commit('GET_CONSTANS_DATA', res);
// resolve() // 接口请求完成
// })
// }
},
}
import {getTodayAppointsList, getTodayOverview, getTodayPlans} from '@/utils/followup/followapis'
export default {
namespaced: true,
state: {
todayPlansList: [], //今日随访列表
todayAppointsList: [], //今日预约列表
todayOverview: [], //查询今日随访、预约、随访人数count
},
mutations: {
GET_TODAY_PLAN_LIST(state, payload) {
// console.log('返回数据', payload)
state.todayPlansList = payload
},
GET_TODAY_APPOINTS_LIST(state, payload) {
state.todayAppointsList = payload
},
GET_TODAY_OVERVIEW(state, payload) {
state.todayOverview = payload
}
},
actions: {
getTodayPlansList(context, payload) {
getTodayPlans({
...payload
}).then(({data}) => {
context.commit('GET_TODAY_PLAN_LIST', data);
});
},
getTodayAppointsList(context, payload) {
getTodayAppointsList({
...payload
}).then(({data}) => {
context.commit('GET_TODAY_APPOINTS_LIST', data);
});
},
getTodayOverview(context, payload) {
getTodayOverview({
...payload
}).then(({data}) => {
context.commit('GET_TODAY_OVERVIEW', data);
});
}
},
}
import Vue from 'vue'
import Vuex from 'vuex'
import common from './education/common'
import common from './education/common';
//随访
import followModules from './followup/index';
import getters from './getters'
......@@ -8,7 +10,8 @@ Vue.use(Vuex)
export default new Vuex.Store({
modules: {
common
common,
...followModules
},
getters
})
......
......@@ -14,7 +14,8 @@ body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, l
border: none;
// color: #333;
font-weight: normal;
font-family: "PingFangSC", "Microsoft Yahei";
// font-family: "PingFangSC", "Microsoft Yahei";
font-family: "Helvetica Neue", "Helvetica", "PingFang SC", "Hiragino Sans GB","Microsoft YaHei", "SimSun", "sans-serif";
box-sizing: border-box;
-webkit-tap-highlight-color:transparent;
-webkit-font-smoothing: antialiased;
......@@ -26,44 +27,47 @@ body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, l
}
}
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar
{
width: 0px;
height: 0px;
background-color: #fff;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
border-radius: 10px;
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar
{
width: 0px;
height: 0px;
background-color: #fff;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #555;
}
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
border-radius: 10px;
background-color: #fff;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #555;
}
input[type="button"], input[type="submit"], input[type="search"], input[type="reset"] {
-webkit-appearance: none;
}
textarea { -webkit-appearance: none;}
textarea { -webkit-appearance: none;}
html,body{
height: 100%;
width: 100%;
background-color: #fff;
font-family: Arial, Helvetica, sans-serif;
// font-family: Arial, Helvetica, sans-serif;
font-family: "Helvetica Neue", "Helvetica", "PingFang SC", "Hiragino Sans GB","Microsoft YaHei", "SimSun", "sans-serif";
font-size: 16px;
}
#app {
height: 100%;
}
.clear:after{
content: '';
display: block;
......@@ -121,7 +125,7 @@ html,body{
animation: backOpacity 2s ease-in-out infinite;
}
// 屏幕适配
@media screen and (min-width:1240px) and (max-width:1900px){
@media screen and (max-width:1900px){
.screenSet{
// width: 163vh !important;
// height: 66vh !important;
......@@ -165,7 +169,7 @@ html,body{
background: #fafafa;
}
//下拉框
//下拉框
.el-dropdown-menu .el-popper {
top: 48px;
}
......@@ -226,4 +230,4 @@ html,body{
}
.el-breadcrumb__inner.is-link:hover {
color: #449284 !important;
}
\ No newline at end of file
}
/*重置单选按钮样式*/
.el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #449284;
border-color: #449284;
box-shadow: -1px 0 0 0 #449284;
}
.el-radio-button__inner:hover {
color: #449284;
}
/*重置输入框,选择框样式*/
.el-range-editor.is-active, .el-range-editor.is-active:hover, .el-select .el-input.is-focus .el-input__inner,.el-input__inner:focus{
border-color: #449284;
}
.el-select-dropdown__item.selected {
color: #449284;
}
.el-select .el-input__inner:focus {
border-color: #449284;
}
/*重置文字按钮样式*/
.el-button--text{
color: #606266;
}
.el-button--text:focus, .el-button--text:hover{
color: #449284;
}
/*重置朴素按钮样式——plain*/
.el-button.is-plain:focus, .el-button.is-plain:hover {
color: #449284;
border-color: #449284;
}
/*重置表格选择框*/
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
border-color: #449284;
background-color: #449284;
}
.el-checkbox__inner {
border-color: #DCDFE6!important;
}
.el-checkbox__input.is-focus,.el-checkbox__inner:hover,.el-checkbox__inner.is-focus {
border-color: #449284!important;
}
/*重置textarea聚焦样式*/
.el-textarea__inner:focus {
border-color: #449284!important;
}
/*.el-form-item .el-form-item__label{*/
/*font-size: 14px;*/
/*}*/
.el-message-box__content{
padding: 20px 15px;
}
$borderBottomStyle: 1px solid #efefef;
$picaGreen: #449284; //主色调
$searchDiv: 160px;
/*列表页布局*/
.f-main-content {
background: #ffffff;
padding: 30px;
.page-title {
font-size: 20px;
padding-bottom: 20px;
border-bottom: $borderBottomStyle;
}
.search-div { //查询模块
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 30px 0 10px 0;
border-bottom: $borderBottomStyle;
.search-btn {
min-width: $searchDiv; // 根据自己页面设置
}
}
/*表格*/
.table-content {
padding: 30px 0 30px 0;
}
.btn-right-class{
margin-right: 10px;
}
}
/*详情页布局*/
.f-detail-content {
background: #ffffff;
padding: 30px;
.header {
padding-bottom: 20px;
border-bottom: $borderBottomStyle;
display: flex;
justify-content: space-between;
}
}
/*提示文字*/
.reminding {
color: #9B9997;
font-size: 12px;
}
/*可点击的文字*/
.click-text {
cursor: pointer;
color: $picaGreen;
}
/*不能修改的类表单样式*/
.content-div {
display: flex;
flex-direction: row;
margin-bottom: 10px;
.c-title {
width: 150px;
text-align: right;
flex-shrink: 0;
margin-right: 20px;
}
.more-content {
flex-direction: column;
}
}
.label-detail-wrap{
.err-text{
height: 12px;
visibility: hidden;
}
.special-error-tips{
.el-textarea__inner{
border: 1px solid red;
outline: none;
}
.err-text{
color: red;
visibility: visible;
}
}
.remove-btn{
color: #449284;
}
}
\ No newline at end of file
.label-detail-wrap{
.screenSet{
background: #fff;
padding: 30px;
display: flex;
flex-direction: column;
}
.label-name{
width: 100%; height: 45px;
border-bottom: 1px solid #efefef;
font-size: 14px;
line-height: 32px;
color: #606266;
p{
display: inline-block;
&.name{
color: #93969c;
padding: 0 15px;
}
&.modify{
color: #449284;
cursor: pointer;
}
}
.delete-label{
float: right;
&:hover{
color: #fff;
background-color: #f56c6c;
border-color: #f56c6c;
}
}
}
.label-member{
width: 100%; height: 65px;
font-size: 14px;
color: #606266;
p{
display: inline-block;
line-height: 65px;
&.member-number{
padding: 0 15px;
color: #449284;
}
}
.right{
float: right;
padding-top: 16px;
}
}
.delete-tips{
text-align: center !important;
line-height: 29px;
padding: 0 20px;
}
.pagination-style{
text-align: right;
margin: 20px 0;
}
.table-empty{
width: 100%;
height: auto;
text-align: center;
margin-top: 20%;
.empty-pic{
width: 100px;
height: 100px;
display: block;
border: 0;
margin: 0 auto;
}
.tips{
font-size: 14px;
color: #909399;
line-height: 14px;
padding-bottom: 200px;
}
}
}
\ No newline at end of file
.label-list-wrap{
.el-form-item{
margin-bottom: 0;
.el-textarea{
position: relative;
}
.el-textarea__inner{
outline: none !important;
resize: none !important;
height: 80px;
}
&.special-error-tips{
.el-textarea__inner{
border: 1px solid #F56C6C !important;
outline: none;
resize: none;
}
.err-text{
display: block;
position: absolute;
left: 0;
top: 80px;
}
}
.err-text{
display: none;
color: #F56C6C;
font-size: 12px;
padding-top: 4px;
line-height: 12px;
}
}
}
\ No newline at end of file
.label-list-wrap{
.screenSet{
background: #fff;
padding: 30px;
display: flex;
flex-direction: column;
}
.top-title{
font-size: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #efefef;
}
.label-name-row{
margin-top: 10px;
.right{
float: right;
.create-new-label{
float: right;
}
}
}
.total-label{
font-size: 12px; padding: 30px 0 10px;
}
.label-list{
width: 100%;
height: 100%;
background: #fff;
border: 1px solid #efefef;
border-radius: 4px;
overflow: hidden;
overflow-y: scroll;
padding: 20px 10px;
.each-label{
margin: 0 10px 10px 0;
color: #449284;
background: rgba(68,146,132, .1);
border: 1px solid rgba(68,146,132, .2);
&:hover{
color: #fff;
background: #449284;
cursor: pointer;
}
}
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
&::-webkit-scrollbar
{
width: 5px;
height: 5px;
background-color: #fff;
}
/*定义滚动条轨道 内阴影+圆角*/
&::-webkit-scrollbar-track
{
// border-radius: 10px;
// background-color: rgb(241, 239, 239);
// background: #fff;
}
/*定义滑块 内阴影+圆角*/
&::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #bbb;
}
}
.table-empty{
width: 100%;
height: auto;
text-align: center;
.empty-pic{
width: 100px;
height: 100px;
display: block;
border: 0;
margin: 0 auto;
}
.tips{
font-size: 14px;
color: #909399;
}
}
}
.newly-increased-wrap{
.screenSet{
background: #fff;
padding: 30px;
display: flex;
flex-direction: column;
&.upload-history-wrap{
margin: 0;
padding: 0;
.septal-line{
width: 100%;
height: 1px;
background: #EBEEF5;
}
}
}
.top-title{
font-size: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #efefef;
}
.single-input{
background-color: #ffffff!important;
.save-and-add{
text-align: right;
}
}
.batch-import-wrap{
.el-upload-list{
display: none;
}
.upload-success-modal{
.el-dialog__body{
padding: 5px 25px 20px;
}
.tips{
text-align: center;
line-height: 25px;
i{
color: #449284;
}
}
}
.el-table__body-wrapper{
.el-table__row{
td:nth-child(1) .cell{
width: 100%;
text-overflow: ellipsis;
display: -webkit-box;
// -webkit-box-orient: vertical;
/*! autoprefixer: off */
-webkit-box-orient: vertical;
/* autoprefixer: on */
-webkit-line-clamp: 2;
overflow: hidden;
}
}
}
}
}
\ No newline at end of file
.newly-increased-wrap{
#msg{
width: 180px !important;
height: 180px !important;
padding: 10px;
}
.top-title{
border: 0 !important;
}
.screenSet{
background: #fff;
}
.upload-record{
width: 100%;
font-size: 20px;
line-height: 28px;
color: #1E2F3D;
background: #fff;
margin: 30px 0 24px;
}
.pagination-style{
text-align: right;
margin-top: 20px;
}
.tab-list{
flex: 1;
display: flex;
flex-direction: column;
.choose-label-wrap{
.el-dialog__body{
padding: 0 25px 30px;
}
.under-title-tips{
font-size: 12px;
color: #595959;
text-align: center;
}
.row-in-line{
overflow: hidden;
margin-top: 35px;
.el-button, .tips{
display: inline-block;
}
.clear-select{
color: #449284;
border: 1px solid #449284;
&.is-disabled{
color: #c0c4cc !important;
background: #fff !important;
border: 1px solid #dcdfe6 !important;
opacity: 1;
}
}
.tips, .right{
float: right;
}
.tips{
line-height: 32px;
}
}
.list-wrap{
width: 100%;
height: 300px;
border: 1px solid #E4E7ED;
margin-top: 10px;
padding: 10px;
border-radius: 4px;
overflow: hidden;
overflow-y: scroll;
&::-webkit-scrollbar
{
width: 5px;
height: 5px;
background-color: #fff;
}
&::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #bbb;
}
.el-checkbox{
margin-right: 10px;
margin-left: 0;
margin-bottom: 10px;
.el-checkbox__input{
&.is-focus{
.el-checkbox__inner{
border-color: #DCDFE6;
}
}
}
&.is-checked{
border-color: #449284;
.el-checkbox__inner{
background-color: #449284;
border-color: #449284;
}
.el-checkbox__label{
color: #449284;
}
}
}
}
}
.reload-label-modal{
text-align: center;
.el-dialog__body{
padding: 0 25px 8px;
.tips{
text-align: center;
}
}
}
.download-qr-modal{
.qr-pic{
width: 200px;
height: 200px;
background: pink;
margin: 0 auto;
}
.exp-date{
line-height: 36px;
text-align: center;
color: #606060;
padding-bottom: 10px;
}
.choose-group{
text-align: center;
padding-bottom: 10px;
.title{
display: inline-block;
}
.el-select{
width: 350px;
}
}
.under-tips{
color: #a3a5aa;
font-size: 12px;
line-height: 20px;
text-align: center;
}
}
.el-tabs__item{
color: #303133;
font-weight: 600;
letter-spacing: 1px;
}
.el-tabs__active-bar{
background-color: #449284;
}
.el-tabs__content{
flex: 1;
overflow: hidden;
.el-tab-pane{
width: 100%;
height: 100%;
background: #fff;
overflow: hidden;
display: flex;
flex-direction: column;
.step-guide{
width: 100%;
background: #fff;
.guide-list{
width: 100%;
height: 237px;
margin-top: 15px;
.first{
width: 250px;
// width: 30%;
height: 200px;
float: left;
.procedure{
width: 100%; height: 20px;
.icon{
width: 20px;
height: 20px;
display: inline-block;
background: #449284;
border-radius: 20px;
text-align: center; line-height: 20px;
font-size: 12px; color: #fff;
}
.text{
display: inline-block;
font-size: 14px;
color: #262626;
font-weight: 600;
}
.border{
display: inline-block;
// width: 200px;
width: 60%;
height: 0px;
border-bottom: 1px solid #449284;
vertical-align: middle;
}
&::after{
content: '';
height: 100%;
display: inline-block;
vertical-align: middle;
}
}
.under-info{
padding-left: 25px;
.step-tips{
width: 100%;
font-size: 12px;
color: #595959;
margin: 8px 0 20px;
}
}
}
.second{
width: 350px;
// width: 40%;
.procedure{
.border{
// width: 250px;
width: 63%;
}
}
.under-info{
.fill-tips{
li{
font-size: 12px;
width: 300px;
line-height: 18px;
.tips-title{
display: inline-block;
color: #262626;
font-weight: 600;
&.notice{
color: #449284;
}
}
p{
display: inline;
color: #595959;
}
}
}
}
}
.third{
width: 300px;
// width: 30%;
.el-upload{
width: 260px;
height: 150px;
}
.el-upload-dragger{
width: 260px;
// width: 100%;
height: 150px;
}
}
}
}
.upload-table{
}
.el-table__body-wrapper{
&::-webkit-scrollbar
{
width: 5px;
height: 5px;
background-color: #fff;
}
&::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #bbb;
}
}
}
}
.qr-code-wrap{
background: #fff;
.qr-group{
width: 100%; height:auto;
overflow: hidden;
margin: 30px 0 40px;
.label-name{
display: inline-block;
font-size: 12px;
color: #8C8C8C;
}
.el-tag{
color: #449284;
background:rgba(236,244,242,1);
border:1px solid rgba(150,195,193,1);
margin: 0 0 10px 10px;
&.choose-group{
color: #666666;
background:rgba(255,255,255,1);
border:1px dashed rgba(217,217,217,1);
cursor: pointer;
}
}
}
.qr-pic-wrap{
width: 100%; height: auto;
.qr-box{
width: 200px;
margin: 0 auto;
text-align: center;
.pic{
background:rgba(240,242,245,1);
width: 200px; height: auto;
border: 0;
.qr-code-img{
width: 200px;
height: 200px;
overflow: hidden;
border: 0;
display: block;
}
border: 0;
.qr-download-btn{
color: #fff;
background: #449284;
width: 200px;
border: 0;
margin-top: -3px;
}
}
.time-limit{
width: 100%;
text-align: center;
color: #8C8C8C;
font-size: 12px;
line-height: 41px;
}
.refresh-btn{
color: #449284;
background:rgba(236,244,242,1);
border:1px solid rgba(150,195,193,1);
}
}
}
.border-space{
width: 100%;
height: 1px;
background: #EBEEF5;
margin-top: 30px;
}
.increased-steps-wrap{
overflow: hidden;
.label-title{
font-size: 20px;
color: #1E2F3D;
line-height: 28px;
margin: 30px 0 24px;
}
.flow-path{
// width: 100%;
height: 395px;
display: block;
border: 0;
margin-left: -20px;
}
}
}
}
}
\ No newline at end of file
/*重置tabs样式*/
.el-tabs__active-bar{
background-color: #449284!important;
}
.el-tabs__item:hover{
color: #449284;
}
.el-tabs__item.is-active{
color: #449284;
}
/*重置朴素按钮样式——plain*/
.el-button.is-plain:focus, .el-button.is-plain:hover {
color: #449284;
border-color: #449284;
}
/*恢复messageBox默认样式*/
.el-message-box {
width: 360px;
height: 220px;
}
.el-message-box__status+.el-message-box__message{
padding-left: 20px;
padding-right: 20px;
}
/*重置单选按钮样式*/
.el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #449284;
border-color: #449284;
box-shadow: -1px 0 0 0 #449284;
}
.el-radio-button__inner:hover {
color: #449284;
}
/*重置输入框,选择框样式*/
.el-range-editor.is-active, .el-range-editor.is-active:hover, .el-select .el-input.is-focus .el-input__inner,.el-input__inner:focus{
border-color: #449284;
}
.el-select-dropdown__item.selected {
color: #449284;
}
.el-select .el-input__inner:focus {
border-color: #449284;
}
/*重置文字按钮样式*/
.el-button--text{
color: #606266;
}
.el-button--text:focus, .el-button--text:hover{
color: #449284;
}
/*重置表格选择框*/
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
border-color: #449284;
background-color: #449284;
}
.el-checkbox__inner {
border-color: #DCDFE6!important;
}
.el-checkbox__input.is-focus,.el-checkbox__inner:hover,.el-checkbox__inner.is-focus {
border-color: #449284!important;
}
/*重置textarea聚焦样式*/
.el-textarea__inner:focus {
border-color: #449284!important;
}
......@@ -6,51 +6,90 @@ export const envConfig = {
// baseUrl: 'https://dev-sc.yunqueyi.com/',
// // baseUrl: 'http://10.177.15.180:10202/',
// // baseUrl: 'http://192.168.140.14:10201/',
// baseUrl: 'https://test1-sc.yunqueyi.com/',
// baseUrl: 'https://test1-sc.yunqueyi.com/',
//baseUrl: 'https://uat-sc.yunqueyi.com/',
baseUrl: 'https://dev-sc.yunqueyi.com/',
apiUrl: 'https://dev-api.yunqueyi.com/',
qiniuFileUrl: "https://dev-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://dev-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'http://localhost:8090/PICA_SSO_FE/html/pica_index.html',
yuequeyiIndexUrl: 'https://dev-saas.yunqueyi.com/pica_index.html'
yuequeyiIndexUrl: 'https://dev-saas.yunqueyi.com/pica_index.html',
followUpSCSoSo: 'http://sosoapi.yunqueyi.com/sosoapi-web/pass/mock/73',
followUpSC: 'https://dev-sc.yunqueyi.com',
saasDomainUrl: 'https://dev-saas.yunqueyi.com/',
workApiUrl: 'https://dev-work.yunqueyi.com/web',
workApiSrc: 'https://dev-work.yunqueyi.com',
},
dev: {
baseUrl: 'https://dev-sc.yunqueyi.com/',
apiUrl: 'https://dev-api.yunqueyi.com/',
qiniuFileUrl: "https://dev-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://dev-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://dev-sso.yunqueyi.com/PICA_SSO_FE/html/pica_index.html',
yuequeyiIndexUrl: 'https://dev-saas.yunqueyi.com/pica_index.html'
yuequeyiIndexUrl: 'https://dev-saas.yunqueyi.com/pica_index.html',
followUpSC: 'https://dev-sc.yunqueyi.com',
saasDomainUrl: 'https://dev-saas.yunqueyi.com/',
workApiUrl: 'https://dev-work.yunqueyi.com/web',
workApiSrc: 'https://dev-work.yunqueyi.com',
},
test: {
baseUrl: 'https://test1-sc.yunqueyi.com/',
apiUrl: 'https://test1-api.yunqueyi.com/',
qiniuFileUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://test1.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://test1-sso.yunqueyi.com/PICA_SSO_FE/html/pica_index.html',
yuequeyiIndexUrl: 'https://test1.yunqueyi.com/pica_index.html'
followUpSC: 'https://test1-sc.yunqueyi.com',
yuequeyiIndexUrl: 'https://test1.yunqueyi.com/pica_index.html',
saasDomainUrl: 'https://test1.yunqueyi.com/',
workApiUrl: 'https://test1-work.yunqueyi.com/web',
workApiSrc: 'https://test1-work.yunqueyi.com',
},
test2: {
baseUrl: 'https://test2-work.yunqueyi.com/sc/',
qiniuFileUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://test1.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://test1-sso.yunqueyi.com/PICA_SSO_FE/html/pica_index.html',
followUpSC: 'https://test2-work.yunqueyi.com/sc',
yuequeyiIndexUrl: 'https://test1.yunqueyi.com/pica_index.html',
saasDomainUrl: 'https://test2-work.yunqueyi.com/web/',
workApiUrl: 'https://test2-work.yunqueyi.com/web',
workApiSrc: 'https://test2-work.yunqueyi.com',
},
uat: {
baseUrl: 'https://uat-sc.yunqueyi.com/',
apiUrl: 'https://uat-api.yunqueyi.com/',
qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://video.yunqueyi.com", // 视频
qiniuImgUrl: "https://files.yunqueyi.com",
loginUrl: 'https://uat.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://uat-sso.yunqueyi.com/PICA_SSO_FE/html/pica_index.html',
yuequeyiIndexUrl: 'https://uat.yunqueyi.com/pica_index.html'
followUpSC: 'https://uat-sc.yunqueyi.com',
yuequeyiIndexUrl: 'https://uat.yunqueyi.com/pica_index.html',
saasDomainUrl: 'https://uat.yunqueyi.com/',
workApiUrl: 'https://uat-work.yunqueyi.com/web',
workApiSrc: 'https://uat-work.yunqueyi.com',
},
pro: {
pro: {
baseUrl: 'https://sc.yunqueyi.com/',
apiUrl: 'https://api.yunqueyi.com/',
qiniuFileUrl: "https://sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://video.yunqueyi.com",
qiniuImgUrl: "https://files.yunqueyi.com",
loginUrl: 'https://yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://sso.yunqueyi.com/PICA_SSO_FE/html/pica_index.html',
yuequeyiIndexUrl: 'https://www.yunqueyi.com/pica_index.html'
followUpSC: 'https://sc.yunqueyi.com',
yuequeyiIndexUrl: 'https://www.yunqueyi.com/pica_index.html',
saasDomainUrl: 'https://www.yunqueyi.com/',
workApiUrl: 'https://work.yunqueyi.com/web',
workApiSrc: 'https://work.yunqueyi.com',
}
}
import axios from 'axios'
import { Loading } from 'element-ui';
import store from '../store'
// import { getHostnameAndPort } from '../utils'
// axios.defaults.withCredentials = true
......@@ -9,33 +10,83 @@ const service = axios.create({
withCredentials: false
})
let loadingInstance = () => {
return Loading.service({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
}
let loading;
let needLoadingRequestCount = 0;
let showFullScreenLoading = () => {
if (needLoadingRequestCount === 0) {
loadingInstance();
}
needLoadingRequestCount++;
};
let tryHideFullScreenLoading = () => {
if (needLoadingRequestCount > 0) {
needLoadingRequestCount--;
}
if (needLoadingRequestCount === 0) {
loadingInstance().close();
}
};
// request拦截器
service.interceptors.request.use(config => {
config.headers['sysCode'] = 12
config.headers['token'] = localStorage.getItem('storageToken')
config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
if (config.noLoading) {
}else{
showFullScreenLoading();
}
const noSysCode = config.headers.noSysCode;
if(noSysCode){
delete config.headers.sysCode;
delete config.headers.deviceInfo;
delete config.headers.noSysCode;
delete config.headers.token;
}else{
if( config.headers['sysCode']==undefined) {
config.headers['sysCode'] = 12
}
if( process.env.BUILD_ENV == "development" ){ // 本地开发环境
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
config.headers['token'] = '5E2F79D96DD144A0B23E7607E2169A68';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
}
// if (config.data && config.data.setEntry) {
// config.headers['sysCode'] = config.data.sysCode || 10
// if(config.data.token){
// config.headers['token'] = config.data.token || '63C3FA92AF8A45A48B31EB7FD97B95EB'
// }
// config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
// }
return config
}, error => {
// logger.debug('service.interceptors.request: ', error)
tryHideFullScreenLoading();
Promise.reject(error)
})
// respone拦截器
service.interceptors.response.use(
response => {
if (response.config.noLoading) {
}else{
tryHideFullScreenLoading()
}
const res = response.data
/*
/*
baseUrl时,返回000000为成功
apiUrl时,返回200为成功
*/
*/
// if (res.code !== '000000') {
// return Promise.reject('error')
// } else {
......@@ -44,6 +95,7 @@ service.interceptors.response.use(
},
error => {
// logger.error('err' + error)
tryHideFullScreenLoading();
return Promise.reject(error)
}
)
......
import fetch from '../fetch';
import { getFollowUpApi, getBasicDataApi, getFollowUpSC } from '@/utils/index'
import utils from './followupUtils';
const headers = {
sysCode: 45
} /**/
/*工作台*/
export const getTodayAppointsList = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/overView/todayAppoints`),
method: 'get',
params: params,
description: '获取今日预约列表',
})
};
export const getTodayOverview = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/overView/todayOverview`),
method: 'get',
params: params,
description: '获取今日随访、预约、随访人数',
})
};
export const getTodayPlans = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/overView/todayPlans`),
method: 'get',
params: params,
description: '查询今日随访计划',
})
};
/*计划管理*/
export const createFollowPlan = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans`),
method: 'post',
data: data,
description: '新增、修改随访计划',
},)
}
export const getPlanList = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans`),
method: 'get',
params: params,
description: '获取计划列表',
})
};
export const getPlanDetail = (planId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/${planId}`),
method: 'get',
description: '获取计划详情',
})
};
export const getNodeTimeList = (planId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/${planId}/time`),
method: 'get',
description: '获取随访时间节点列表',
})
};
export const getNodeTimeContent = (planTimeId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/time/${planTimeId}`),
method: 'get',
description: '获取节点详情',
})
};
export const getResidentList = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/`),
method: 'get',
params: params,
description: '获取居民列表',
})
};
export const getGroupList = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/group`),
method: 'get',
params: params,
description: '获取分组列表',
})
};
export const getFollowStartTimeList = (planId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/${planId}/times`),
method: 'get',
description: '获取随访开始时间列表(居民相关)',
})
};
export const getResidentDetail = (planId,patientId,fuPlanPatientId ) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/${planId}/detail/${patientId}?planPatientsId=${fuPlanPatientId}`),
method: 'get',
description: '获取居民详情',
})
};
export const changePlan = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/change`),
method: 'put',
data: data,
description: '变更计划',
})
};
export const finishPlan = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/planPatient/status`),
method: 'put',
data: data,
description: '变更计划',
})
};
export const deletePlan = (planId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/${planId}`),
method: 'delete',
description: '删除计划',
})
};
export const getVerifyStatus = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/validate/status`),
method: 'get',
params: params,
description: '认证校验',
})
};
/*预约管理*/
export const getReservationList = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/appoint/appointed/list`),
method: 'post',
data: data,
description: '获取预约列表',
})
};
export const getCheckReservation = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/healths/notice/fu/doctor/appoint/pushValid`),
method: 'post',
data: data,
description: '发送预约校验',
})
};
export const getReservationPatients = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/appoint/appointed/count`),
method: 'post',
data: data,
description: '查看预约人数',
})
};
export const changeReservationStatus = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/appoint/status/`),
method: 'post',
data: data,
description: '手动变更预约状态',
})
};
export const sendReservation = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/appoint/`),
method: 'post',
data: data,
description: '发送预约',
})
};
/*录入管理*/
export const getEnteringList = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/entering/list`),
method: 'post',
data: data,
description: '录入列表查看',
})
}
export const changeEnteringStatus = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/entering/status/change`),
method: 'post',
data: data,
description: '变更随访状态',
},)
}
export const getEnteringInfo = (patientId, fuPlanPatientTimesId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/entering/${patientId}/fuInfo/${fuPlanPatientTimesId}`),
method: 'get',
// params: params,
description: '随访单条信息查看',
},)
}
export const getFormList = (planTimesId) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/entering/scale/${planTimesId}/list`),
method: 'get',
// params: params,
description: '获取量表列表',
},)
}
//获取新建计划居民列表
export const getPlanPatientsList = (data) =>{
return fetch({
headers:{
sysCode: 9
},
url: getFollowUpSC(`/healths/patients/infolist`),
method: 'post',
data: data,
description: '获取新建计划居民列表',
},)
}
// 获取随访计划模板列表
export const getFollowupTemplate = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/templets`),
method: 'get',
data: data,
description: '获取随访计划模板列表',
})
}
// 获取随访量表固定模板
export const getFollowupTableTemplate = (id) => {
return fetch({
headers,
url: getFollowUpSC(`/followup/plans/templets/${id}`),
method: 'get',
data: {},
description: '获取随访量表固定模板',
})
}
// 获取量表列表
export const getFormOptions = (data)=>{
return fetch({
headers,
url: getFollowUpSC(`/followup/entering/scale/list`),
method: 'get',
data: data,
description: '获取量表列表',
})
}
/*常量*/
export const getBasicData = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/basic-data/constants/`),
method: 'get',
params: params,
description: '获取常量',
})
};
// 获取所有漫画列表
export const getAllEducationComtent = (data) => {
return fetch({
headers,
url: getFollowUpSC(`/healths/comtent/workstation/list`),
method: 'post',
data: data,
description: '获取所有漫画列表'
})
}
// 获取所有疾病
export const getAllDiseases = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/healths/patients/diseases/-1`),
method: 'get',
params: params,
description: '获取所有疾病',
})
}
// 获取所有分组
export const getAllLabels = (params) => {
return fetch({
headers,
url: getFollowUpSC(`/healths/labels/`),
method: 'get',
params: params,
description: '获取所有分组',
})
}
// 获取微信和短信病人数接口
export const getPatientNumber = (data) => {
return fetch({
headers: {
sysCode: 9
},
url: getFollowUpSC(`/healths/patientEducation/getSendPatientTypeNum`),
method: 'post',
data: data,
description: '获取微信和短信病人数接口',
})
}
/*
* 量表相关
*/
// 获取域名白名单
export const getDomain = (data) => {
return fetch({
url: getFollowUpSC(`/followup/route/domain?type=1`),
method: 'get',
data: {},
})
}
// 获取展示的模块
export const getScaleModels = (domain,scaleNo) => {
return fetch({
url: `${domain}/scale/${scaleNo}/models`,
method: 'get',
data: {},
})
}
// 获取量表详情
export const getScaleDetail = (domain,planPatientsTimesId,scaleNo) => {
return fetch({
url: `${domain}/scale/${planPatientsTimesId}/${scaleNo}/info?type=2&isLine=2`,
method: 'get',
data: {},
})
}
// 提交量表
export const postScale = ( domain,data ) => {
return fetch({
url: `${domain}/scale/save`,
method: 'post',
data: JSON.stringify(data),
})
}
// 更新量表状态
export const updateScalesStatus = ( data ) => {
return fetch({
url: getFollowUpSC(`/followup/entering/scale/updateScalesStatus`),
method: 'post',
data: data,
})
}
// 检查号码是否符合规范,包括长度,类型
function isCardNo(card){
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
var reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
if(reg.test(card) === false){
return false;
}
return true;
}
// 取身份证前两位,校验省份
function checkProvince(card,vcity){
var province = card.substr(0,2);
if(vcity[province] == undefined){
return false;
}
return true;
}
// 检查生日是否正确
function checkBirthday(card){
var len = card.length;
//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
if(len == '15'){
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
var arr_data = card.match(re_fifteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date('19'+year+'/'+month+'/'+day);
return verifyBirthday('19'+year,month,day,birthday);
}
//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
if(len == '18'){
var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X|x)$/;
var arr_data = card.match(re_eighteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date(year+'/'+month+'/'+day);
return verifyBirthday(year,month,day,birthday);
}
return false;
}
// 校验日期
function verifyBirthday(year,month,day,birthday) {
var now = new Date();
var now_year = now.getFullYear();
//年月日是否合理
if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)
{
//判断年份的范围(0岁到100岁之间)
var time = now_year - year;
if(time >= 0 && time <= 100)
{
return true;
}
return false;
}
return false;
}
// 校验位的检测
function checkParity(card){
//15位转18位
card = changeFivteenToEighteen(card);
var len = card.length;
if(len == '18'){
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var cardTemp = 0, i, valnum;
for(i = 0; i < 17; i ++) {
cardTemp += card.substr(i, 1) * arrInt[i];
}
valnum = arrCh[cardTemp % 11];
if (valnum == card.substr(17, 1).toLocaleUpperCase())
{
return true;
}
return false;
}
return false;
}
// 15位转18位身份证号
function changeFivteenToEighteen(card){
if(card.length == '15')
{
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var cardTemp = 0, i;
card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);
for(i = 0; i < 17; i ++)
{
cardTemp += card.substr(i, 1) * arrInt[i];
}
card += arrCh[cardTemp % 11];
return card;
}
return card;
}
//最新的身份证校验规则
function validateIdCard (num) {
num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
return false;
}
//验证前2位,城市符合
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
if(aCity[parseInt(num.substr(0,2))]==null){
return false;
}
//下面分别分析出生日期和校验位
var len, re; len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re); //检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) { // 身份证号的出生日期不对
return false;
} else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for(i = 0; i < 17; i ++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re); //检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) { // 身份证号的出生日期不对
return false;
}
else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) { // 18位身份证号的校验码不正确
return false;
}
return true;
}
}
return false;
}
export const checkCardNum = (rule, value, callback) => {
// var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
// 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
// 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",
// 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",
// 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
// 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
// };
// //是否为空
// if(value === ''){
// callback(new Error('请输入正确的身份证'))
// }
// //校验长度,类型
// if(isCardNo(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检查省份
// if(checkProvince(value,vcity) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //校验生日
// if(checkBirthday(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检验位的检测
// if(checkParity(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// callback()
if(value === ''){
callback(new Error('请输入正确的身份证'))
}else {
if(validateIdCard(value)) {
callback()
}else {
callback(new Error('请输入正确的身份证'))
}
}
}
import rangeJson from './rangConfig';
// 这个方法,是用户在选择随访轮次(6个月,12个月)后续操作
let checkNeedRule = (val) => {
const needRule = sessionStorage.getItem('needRule');
if( val!='0' && (!val||val=='') && (!needRule || needRule=='true') ){
return true;
}
return false;
}
// 校验范围通用方法
export const checkRange = (rule, value, callback) => {
let min,max;
let val = parseFloat(value);
let res;
// 处理 诸如 01 这种情况
if(value && value.length>1 && value.indexOf('.')<0){
res = (new RegExp(/^[1-9]\d*$/g)).test(value);
}else{
res = true;
}
rangeJson.forEach((item)=>{
if(item.field == rule.field){
min = item.min;
max = item.max;
}
})
const ruless = ( (val >= min) && (val <= max) && res )
// if(ruless || checkNeedRule(val)){
if( !value || ruless ){
callback()
}else{
callback(new Error(`输入范围${min}~${max}`))
}
}
// 校验手机号
export const checkMobile = (rule, value, callback) => {
const reg = /^1[3|4|5|7|8|9][0-9]{9}$/; //验证规则
const flag = reg.test(value);
if(flag){
callback()
}else{
callback(new Error(`请输入正确的手机号码`))
}
}
// 校验是否是整数
export const checkIsInteger = (rule, value, callback) => {
const val = parseFloat(value);
const num = Number.isInteger(val);
// const val = Number.parseInt(value);
// const num = /^[0-9]*[1-9][0-9]*$/.test(value);
// if(num || checkNeedRule(val)){
if( !value || num ){
callback()
}else{
callback(new Error(`输入整数`))
}
}
// 校验是否是一位小数
export const checkNumberIsToFixed = (rule, value, callback) => {
const isNum = /^(([1-9][0-9]*)|(([0]\.\d{1,1}|[1-9][0-9]*\.\d{1,1})))$/;
const val = Number(value);
// if(isNum.test(val) || checkNeedRule(val)){
if( !value || isNum.test(val) ){
callback()
}else{
callback(new Error(`最多输入1位小数`))
}
}
// 大于0的正整数
export const checkNormalInt = (rule, value, callback) => {
const val = parseFloat(value);
const isInteger = Number.isInteger(val);
// if((isInteger && val > 0) || checkNeedRule(val)){
if( !value || (isInteger && val > 0) ){
callback()
}else{
callback(new Error(`请输入大于0的正整数`))
}
}
// 校验是否是两位小数
export const checkNumberIsToFixedTwo = (rule, value, callback) => {
const isNum = /^(-)?(0|[1-9]\d*)(\s|$|\.\d{1,2}\b)/;
const val = Number(value);
// if(isNum.test(val) || checkNeedRule(val)){
if( !value || isNum.test(val) ){
callback()
}else{
callback(new Error(`最多输入2位小数`))
}
}
// 只获取指定的参数(浅复制);
function getParams(params, arr) {
const res = Object.create(null);
if (!params) return res;
if (Object.prototype.toString.call(params) === '[object FormData]') { // formData类型直接返回
return params;
}
if (arr && arr.length) { // 只对需要处理的处理下
arr.forEach(item => {
if (item) {
res[item] = params[item] || '';
}
});
return res;
} else {
return params;
}
}
export default {
getParams,
};
import dataConverter from './dataConverter';
export default {
DC: dataConverter,
};
import range from './range';
import rangeHype from './rangeHype';
import rangeDiabetes from './rangeDiabetes';
export default [
...range,
...rangeHype,
...rangeDiabetes
]
// 脑卒中字段校验的配置文件
export default [
{
field: 'fastingBloodGlucose',
name: '空腹血糖',
min: 1,
max: 33.3
},
{
field: 'triglyceride',
name: '甘油三酯',
min: 0,
max: 5
},
{
field: 'cholesterol',
name: '胆固醇',
min: 1,
max: 10
},
{
field: 'cLdl',
name: '低密度脂蛋白胆固醇',
min: 0,
max: 5
},
{
field: 'cHdl',
name: '高密度脂蛋白胆固醇',
min: 0,
max: 5
},
{
field: 'stature',
name: '身高',
min: 100,
max: 200
},
{
field: 'weight',
name: '体重',
min: 35,
max: 200
},
{
field: 'waistline',
name: '腰围',
min: 50,
max: 150
},
{
field: 'firstSystolicPressure',
name: '收缩压SBP',
min: 70,
max: 240
},
{
field: 'firstDiastolicPressure',
name: '舒张压DBP',
min: 50,
max: 130
},
{
field: 'firstPulse',
name: '脉搏',
min: 30,
max: 200
},
{
field: 'secondSystolicPressure',
name: '收缩压SBP',
min: 70,
max: 240
},
{
field: 'secondDiastolicPressure',
name: '舒张压DBP',
min: 50,
max: 130
},
{
field: 'secondPulse',
name: '脉搏',
min: 30,
max: 200
},
]
// 高血压字段校验的配置文件
export default [
{
field: 'systolicBloodPressure',
name: '收缩压SBP',
min: 70,
max: 240
},
{
field: 'diastolicBloodPressure',
name: '舒张压DBP',
min: 50,
max: 130
},
{
field: 'bodyHeight',
name: '身高',
min: 100,
max: 250
},
{
field: 'bodyWeight',
name: '体重',
min: 35,
max: 250
},
{
field: 'nextBodyWeight',
name: '体重',
min: 35,
max: 250
},
{
field: 'fastingBloodSugar',
name: '空腹血糖值',
min: 1,
max: 33.3
},
{
field: 'glycosylatedHemoglobinPercent',
name: '糖化血红蛋白值',
min: 3.00,
max: 20.00
},
{
field: 'smokingAmount',
name: '日吸烟量',
min: 0,
max: 99
},
{
field: 'nextSmokingAmount',
name: '日吸烟量',
min: 0,
max: 99
},
{
field: 'alcoholConsumption',
name: '日饮酒量',
min: 0,
max: 99
},
{
field: 'nextAlcoholConsumption',
name: '日饮酒量',
min: 0,
max: 99
},
{
field: 'workoutOfWeek',
name: '运动情况',
min: 0,
max: 99
},
{
field: 'workoutDuration',
name: '运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutOfWeek',
name: '运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutDuration',
name: '运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutDuration',
name: '运动情况',
min: 0,
max: 99
},
{
field: 'stapleFoodGram',
name: '主食摄入量',
min: 0,
max: 999
},
{
field: 'nextStapleFoodGram',
name: '主食摄入量',
min: 0,
max: 999
},
]
// 高血压字段校验的配置文件
export default [
{
field: 'systolicBloodPressure',
name: '收缩压SBP',
min: 70,
max: 240
},
{
field: 'diastolicBloodPressure',
name: '舒张压DBP',
min: 50,
max: 130
},
{
field: 'bodyHeight',
name: '身高',
min: 100,
max: 250
},
{
field: 'bodyWeight',
name: '体重',
min: 35,
max: 250
},
{
field: 'nextBodyWeight',
name: '下次随访体重',
min: 35,
max: 250
},
{
field: 'heartRate',
name: '心率',
min: 30,
max: 200
},
{
field: 'smokingAmount',
name: '本次日吸烟量',
min: 0,
max: 99
},
{
field: 'nextSmokingAmount',
name: '下次随访日吸烟量',
min: 0,
max: 99
},
{
field: 'alcoholConsumption',
name: '本次日饮酒量',
min: 0,
max: 99
},
{
field: 'nextAlcoholConsumption',
name: '下次随访日饮酒量',
min: 0,
max: 99
},
{
field: 'workoutOfWeek',
name: '本次运动情况',
min: 0,
max: 99
},
{
field: 'workoutDuration',
name: '本次运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutOfWeek',
name: '下次随访运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutDuration',
name: '下次随访运动情况',
min: 0,
max: 99
},
{
field: 'dosageDay',
name: '用法',
min: 0,
max: 5
},
]
......@@ -9,7 +9,7 @@ export function setEventByModuleCode(itemData){
if( modeCode === 'M001' || modeCode === 'M002' || modeCode === 'M003') {
paramList = ''
}else if( modeCode === 'M100' || modeCode === 'M300' ) {
let urlPara = getUrlParmByCode(paramList);
paramList[0] && (paramList[0].value += urlPara);
......@@ -43,7 +43,7 @@ function getUrlParmByCode(paramList) {
}
// 计算高度
export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'sidebarWrapperId',
export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'sidebarWrapperId',
containerHeightId = 'appContainerId', innerHeightId = 'elTableId'){
if (!p_getElm(refHeightId) || !p_getElm(containerHeightId) || !p_getElm(innerHeightId)) {
// window.onresize = null
......@@ -53,14 +53,14 @@ export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId
p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
p_getElm(innerHeightId).style.height = containerHeight - iMinuxHeight + 'px'
if(p_getElm('elTableIdInner')){
p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
}
window.onresize = function() {
containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 50
p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
p_getElm(innerHeightId).style.height = containerHeight - iMinuxHeight + 'px'
if (p_getElm('elTableIdInner')) {
p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
}
}
}
......@@ -87,7 +87,7 @@ export function deepCopy(obj) {
}
/**
*
*
* @param {Array} originData 初始数据
* @param {Boolean} isUp true: 升序 false: 降序
* @param {String} sortField 排序字段,如果没有,则直接排序
......@@ -109,7 +109,7 @@ export function arraySort(originData, isUp = true, sortedField, converFun) {
sourceB = 0
} else {
sourceA = converFun(sourceA[sortedField])
sourceB = converFun(sourceB[sortedField])
sourceB = converFun(sourceB[sortedField])
}
}
// if(!sourceA || !sourceB) {
......@@ -127,7 +127,7 @@ export function arraySort(originData, isUp = true, sortedField, converFun) {
swap = sortedData[j]
sortedData[j] = sortedData[j + 1]
sortedData[j + 1] = swap
}
}
}
}
}
......@@ -172,8 +172,38 @@ export function uploadImg() {
return getConfigByEnvType('qiniuImgUrl')
}
// 获取随访微服务服务器域名地址
export function getFollowUpSC(url) {
return getConfigByEnvType('followUpSC') + url
}
// 获取常量接口域名地址
export function getBasicDataApi(url) {
return getConfigByEnvType('basicDataUrl') + url
}
// 获取saas端域名地址
export function getSaasDomain(url) {
return getConfigByEnvType('saasDomainUrl') + url
}
// 获取saasApi端域名地址
export function getWorkApi(url) {
return getConfigByEnvType('workApiUrl') + url
}
// 获取saas端api域名地址
export function getSaasApiDomain(url) {
return getConfigByEnvType('apiUrl') + url
}
// 获取工作站的域名地址
export function getWorkDomain(url) {
return getConfigByEnvType('workApiSrc') + url
}
// 根据不同环境,生成URL
function getConfigByEnvType(urlType) {
return envConfig[process.env.BUILD_ENV][urlType]
}
import fetch from '@/utils/fetch'
import { getBaseUrl } from '@/utils/index'
import { getBaseUrl, getWorkApi } from '@/utils/index'
module.exports = {
data: function () {
......@@ -153,6 +153,18 @@ module.exports = {
data: para
})
},
// saas-GET请求
saasGET(api, para) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
return fetch({
headers: {
sysCode: 9,
},
url: getWorkApi(api),
method: 'get',
params: para
})
},
// 通用DELETE请求
DELETE(api, para, callback,str) {
......@@ -174,7 +186,34 @@ module.exports = {
data: para
})
},
// 通用saas-POST请求
saasPOST(api, para, cType) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let header = {}
if(cType) {
header['Content-Type'] = cType;
}
return fetch({
headers: {
sysCode: 9,
...header
},
url: getWorkApi(api),
method: 'post',
data: para
})
},
// 通用saas-PUT请求
saasPUT(api, para) {
return fetch({
headers: {
sysCode: 9,
},
url: getWorkApi(api),
method: 'put',
data: para
})
},
// 从html参数
getUrlKey(name) {
if (decodeURIComponent && location.href) {
......@@ -183,6 +222,7 @@ module.exports = {
return null
}
},
getUrlSearch(url, name) {
if (typeof name == 'undefined') {
name = url
......
// 检查号码是否符合规范,包括长度,类型
export const isCardNo = (card) =>{
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
// var reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if(reg.test(card) === false){
return false;
}
return true;
}
// 取身份证前两位,校验省份
export const checkProvince = (card,vcity) =>{
var province = card.substr(0,2);
if(vcity[province] == undefined){
return false;
}
return true;
}
// 检查生日是否正确
export const checkBirthday = (card) =>{
var len = card.length;
//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
if(len == '15'){
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
var arr_data = card.match(re_fifteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date('19'+year+'/'+month+'/'+day);
return verifyBirthday('19'+year,month,day,birthday);
}
//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
if(len == '18'){
var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X|x)$/;
var arr_data = card.match(re_eighteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date(year+'/'+month+'/'+day);
return verifyBirthday(year,month,day,birthday);
}
return false;
}
// 校验日期
function verifyBirthday(year,month,day,birthday) {
var now = new Date();
var now_year = now.getFullYear();
//年月日是否合理
if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)
{
//判断年份的范围(0岁到100岁之间)
var time = now_year - year;
if(time >= 0 && time <= 100)
{
return true;
}
return false;
}
return false;
}
// 校验位的检测
export const checkParity = (card)=>{
//15位转18位
card = changeFivteenToEighteen(card);
var len = card.length;
if(len == '18'){
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var cardTemp = 0, i, valnum;
for(i = 0; i < 17; i ++) {
cardTemp += card.substr(i, 1) * arrInt[i];
}
valnum = arrCh[cardTemp % 11];
if (valnum == card.substr(17, 1).toLocaleUpperCase())
{
return true;
}
return false;
}
return false;
}
// 15位转18位身份证号
function changeFivteenToEighteen(card){
if(card.length == '15')
{
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var cardTemp = 0, i;
card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);
for(i = 0; i < 17; i ++)
{
cardTemp += card.substr(i, 1) * arrInt[i];
}
card += arrCh[cardTemp % 11];
return card;
}
return card;
}
export const validateIdCard = (num)=> {
num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
return false;
}
//验证前2位,城市符合
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
if(aCity[parseInt(num.substr(0,2))]==null){
return false;
}
//下面分别分析出生日期和校验位
var len, re; len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re); //检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) { // 身份证号的出生日期不对
return false;
} else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for(i = 0; i < 17; i ++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re); //检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) { // 身份证号的出生日期不对
return false;
}
else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) { // 18位身份证号的校验码不正确
return false;
}
return true;
}
}
return false;
}
// export const checkCardNum = (rule, value, callback) => {
// var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
// 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
// 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",
// 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",
// 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
// 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
// };
// //是否为空
// // if(value === ''){
// // callback(new Error('请输入正确的身份证'))
// // }
// if(value) {
// //校验长度,类型
// if(isCardNo(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检查省份
// if(checkProvince(value,vcity) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //校验生日
// if(checkBirthday(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检验位的检测
// if(checkParity(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// }else {
// callback()
// }
// }
// 校验手机号
export const checkMobile = (rule, value, callback) => {
var reg = /^1[3|4|5|7|8][0-9]{9}$/; //验证规则
const flag = reg.test(value);
if(flag){
callback()
}else{
callback(new Error(`请输入正确的手机号码`))
}
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册