Commit 817b8a0e authored by 张锡奇's avatar 张锡奇

upload

parent a881acb2
<template>
<div id="app">
<v-app>
<keep-alive>
<keep-alive >
<router-view v-wechat-title="$route.meta.title"/>
</keep-alive>
</v-app>
......
......@@ -31,8 +31,8 @@ function urlFun(name){
/**
* 健康打卡统计
*/
health:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/1225621052093239296`,
// health:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/1227787695263191040`, //测试地址
// health:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/1225621052093239296`,
health:`https://weixin.huansi.net/apiproxy/huansi/service/proxy/1227787695263191040`, //测试地址
// health:`http://xuxiaoming.vaiwan.com`
}
return url[name]
......
......@@ -25,7 +25,7 @@
<div class="vApp">
<div class="keepAlive">
<keep-alive>
<router-view></router-view>
<router-view ></router-view>
</keep-alive>
</div>
<div class="TABBAR" v-if="showTabbar">
......@@ -147,6 +147,7 @@ export default {
if(result && result.length > 0){
result[0].iEmploeeId = result[0].iIden;
result[0].openId = result[0].sCreateAppid;
result[0].bBackFromother = result[0].bBackFromother ? 'true' : 'false';
this.$store.dispatch('saveHealthBaseData',result[0]);
}
}
......
This diff is collapsed.
......@@ -149,7 +149,7 @@
</style>
<template>
<div id="healthCardReturnTrack">
<div class="editArea" v-if="showEditArea">
<div class="editArea" v-if="showEditArea && !readOnly">
<i class='iconfont icon-banben'></i>
<span>表单已填写</span>
<div class="editBtn">
......@@ -159,14 +159,14 @@
<div class="iCard" :style="{'margin-bottom':'10px','margin-top':showEditArea ? '0' : '8px'}">
<div class="list">
<div class="tip">1. 是否从其他城市返回<span style="color:red;">*</span></div>
<v-radio-group v-model="baseData.bBackFromother" :disabled="!!baseData.bBackFromother" @change="changeRadio">
<div style="margin-bottom:10px;"><v-radio value="1" label="从其他城市返回"/></div>
<div><v-radio value="0" label="一直在工作地,无需返程"/></div>
<v-radio-group v-model="baseData.bBackFromother" :disabled="baseData.bBackFromother == 'true' ? (showEditArea || submitForm.length > 0) : showEditArea" @change="changeRadio">
<div style="margin-bottom:10px;"><v-radio value="true" label="从其他城市返回"/></div>
<div><v-radio value="false" label="一直在工作地,无需返程"/></div>
</v-radio-group>
</div>
</div>
<div class="CONTENT" v-if="baseData.bBackFromother">
<div v-for="(item,index) in filterSubmitForm" :key="index" >
<div v-for="(item,index) in submitForm" :key="index" >
<div class="deleteArea">
<span style="color:#3399ff;">返回统计({{index + 1}}</span>
<span style="color:#ff6600;" @click="del(index)" v-if="!showEditArea">删除</span>
......@@ -242,7 +242,7 @@
</div>
</div>
</div>
<div class="addBtn" @click="add" v-if="!showEditArea">
<div class="addBtn" @click="add" v-if="!showEditArea && baseData.bBackFromother == 'true'">
<i class='iconfont icon-jia1'></i>
</div>
</div>
......@@ -279,33 +279,70 @@ export default {
submitForm:[],
isDisabled:false,
isOtherCityReturn:'',
list:list()
list:list(),
baseData:{},
readOnly:false
}
},
computed:{
...mapState({
baseData:state => state.healthStatistics.baseData,
}),
filterSubmitForm(){
return this.submitForm.filter(x=>x.iStatus != 3);
}
})
},
async activated(){
if (window.history && window.history.pushState) {
// 往历史记录里面添加一条新的当前页面的url
history.pushState(null, null, document.URL);
// 给 popstate 绑定一个方法 监听页面刷新
window.addEventListener('popstate', this.backChange, false);//false阻止默认事件
}
window.d = this;
this.$store.dispatch('saveHealthStatisticsOpen',this.$route.query.openId);
if(this.$route.query.hasOwnProperty('readOnly')){
this.readOnly = this.$route.query.readOnly;
}else{
this.readOnly = false;
}
await this.getHealthcompany();
await this.getHealthData();
},
methods:{
async getHealthcompany(){
let result = await this.request('getHealthcompany',{
data:[
{key: "url", value: "check_bhavecompany"},
{key: "openid", value: this.$route.query.openId}
]
})
if(result && result.length > 0){
result[0].iEmploeeId = result[0].iIden;
result[0].openId = result[0].sCreateAppid;
result[0].bBackFromother = result[0].bBackFromother ? 'true' : 'false';
this.baseData = result[0];
}
},
backChange() {
const that = this;
wx.miniProgram.switchTab({
url:'/pages/home'
})
},
changeRadio(e){
let data = util.deepClone(this.baseData);
this.request('saveHealthemploee',{
data:{
iIden:data.iIden,
iStatus:2,
bBackFromother:e == '1' ? true : false
bBackFromother:e == 'true' ? true : false
}
}).then(res=>{
data.bBackFromother = e;
if(e == 'true'){
let data = list();
data.iCompanyId = this.baseData.iCompanyId;
data.iEmploeeId = this.baseData.iEmploeeId;
this.submitForm.push(data);
}
this.$store.dispatch('saveHealthBaseData',data);
})
},
......@@ -313,7 +350,7 @@ export default {
let res = await this.request('getHealthbacklog',{
data:[
{key:'url',value:'HealthBackLog'},
{key:'iEmploeeId',value: this.$route.params.iEmploeeId},
{key:'iEmploeeId',value: this.baseData.iEmploeeId},
],
params:{},
},'加载中',{});
......@@ -327,17 +364,19 @@ export default {
this.isDisabled = true;
this.showEditArea = true;
}else{
if(this.baseData.bBackFromother == 'true'){
let data = list();
data.iCompanyId = this.$route.params.iCompanyId;
data.iEmploeeId = this.$route.params.iEmploeeId;
data.iCompanyId = this.baseData.iCompanyId;
data.iEmploeeId = this.baseData.iEmploeeId;
this.submitForm.push(data);
}
}
}
},
add(){
let data = list();
data.iCompanyId = this.$route.params.iCompanyId;
data.iEmploeeId = this.$route.params.iEmploeeId;
data.iCompanyId = this.baseData.iCompanyId;
data.iEmploeeId = this.baseData.iEmploeeId;
this.submitForm.push(data);
},
edit(){
......@@ -369,13 +408,19 @@ export default {
del(index){
this.$vux.confirm.show({
title:"提示",
content:'是否删除?',
content:'该数据将永久删除,是否删除?',
showCancelButton:true,
onConfirm :()=> {
onConfirm :async ()=> {
if(this.submitForm[index].iStatus == 1){
this.submitForm.splice(index,1);
}else if(this.submitForm[index].iStatus == 2){
this.submitForm[index].iStatus = 3;
let res = await this.request('saveHealthbacklog',{
data:[Object.assign(this.submitForm[index],{iStatus:3})],
params:{},
},'加载中',{});
if(res.iStatus == 1){
this.submitForm.splice(index,1);
}
}
},
onCancel () {}
......@@ -411,5 +456,8 @@ export default {
return true;
}
},
deactivated(){
window.removeEventListener('popstate', this.backChange, false);//false阻止默认事件
}
}
</script>
\ No newline at end of file
This diff is collapsed.
......@@ -5,70 +5,54 @@
height:100%;
display: flex;
flex-direction: column;
.items{
flex-grow:1;
height:1px;
overflow: auto;
-webkit-overflow-scrolling: touch;
.iCard{
margin:10px 15px;
padding:0 10px;
.HEAD{
height:40px;
line-height: 40px;
border-bottom: 1px solid #EDF4FF;
font-size: 18px;
font-weight: bold;
}
}
.statisics{
.CONTENT{
display: flex;
flex-wrap: wrap;
padding-top: 10px;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
.item{
margin:15px 15px 0 15px;
.HEAD{
border-top-left-radius: 6px;
border-top-right-radius: 6px;
background: #6b9bf7;
height:60px;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
margin-bottom:10px;
.DATE{
width:70%;
height:40px;
border-radius: 50%;
margin-bottom:5px;
border:4px solid #2d8cf0;
border-left-color: transparent;
display: flex;
justify-content: center;
align-items: center;
transform: rotate(45deg);
>div{
transform: rotate(-45deg);
font-size:12px;
}
padding:0 10px;
.left{
flex:1;
color:white;
font-size:18px;
font-weight: bold;
}
.DATE1{
.right{
flex:1;
text-align: right;
display:flex;
flex-wrap: wrap;
div{
width:100%;
text-align: center;
}
color:white;
}
.img{
width:100%;
display: flex;
justify-content: center;
img{
width:100%;
height:300px;
.month{
font-size:14px;
}
.day{
font-size:18px;
font-weight: bold;
}
}
}
.returnTrack{
.CONTENT{
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
border:2px solid #6b9bf7;
border-top:0;
padding:10px;
display: flex;
justify-content: center;
align-items: center;
margin:20px 0;
.left,.right,.center{
display: flex;
flex-wrap: wrap;
......@@ -89,11 +73,19 @@
}
}
}
.FOOTER{
text-align: center;
>button{
width:200px !important;
}
.item:last-child{
margin-bottom:15px;
}
}
.img{
width:100%;
display: flex;
justify-content: center;
img{
width:100%;
height:300px;
}
}
.btn{
......@@ -109,72 +101,48 @@
font-size:14px;
}
}
@media screen and (max-width:500px){
.item,.DATE1{
width:25%;
}
}
@media screen and (min-width:500px) and (max-width:2000px){
.item,.DATE1{
width:10%;
}
}
}
</style>
<template>
<div id="healthCardStatisticsIndex">
<div class="statisics">
<div class="iCard">
<div class="HEAD">
每日健康统计
</div>
<div class="CONTENT" :style="{'max-height':cardH + 'px'}">
<div class="item" v-for="(item,index) in list" :key="index" @click="routerToChart(item)" v-if="list.length > 0" ref="item" :style="{'height':itemH + 'px'}">
<div class="DATE" ref="date" :style="{'height':h+'px'}">
<div>
<span style="font-weight:bold;">{{item.iAll}}</span><span>/{{item.iAllJoin}}</span>
</div>
</div>
<div class="DATE1" style="height:18px;">{{item.dDate}}</div>
</div>
</div>
<div class="items" v-if="list.length > 0">
<div class="item" v-for="(item,index) in list" :key="index" @click="routerToChart(item)" >
<div class="HEAD" >
<div class="left">
<span>{{item.iAllJoin}}/{{item.iAll}}</span>
</div>
<div class="img" v-if="list.length <= 0">
<img src="@/assets/noData.jpg" class="_img" alt="">
<div class="right">
<div class="day">{{item.iDay}}</div>
<div class="month">{{item.sMonth}}</div>
</div>
</div>
<div class="btn" v-if="list.length > 0">
<!-- <span v-show="false" id="copyUrl">{{copyUrl}}</span> -->
<button @click="exportExcel" class="copy" :data-clipboard-text="copyUrl">导出excel</button>
</div>
<div class="returnTrack">
<div class="iCard">
<div class="HEAD">
员工返程统计
</div>
<div class="CONTENT">
<div class="left">
<div class="n">{{returnTrack.bBackFromotherAll || 0}}</div>
<div class="n">{{item.iAll}}</div>
<div class="t">应参与人员</div>
</div>
<div class="center">
<div class="n">{{returnTrack.bBackFromotherTrue || 0}}</div>
<div class="n">{{item.iAllJoin}}</div>
<div class="t">已参与人员</div>
</div>
<div class="right">
<div class="n">{{returnTrack.bBackFromotherFalse || 0}}</div>
<div class="n">{{item.iAllNotJoin}}</div>
<div class="t">未参与人员</div>
</div>
</div>
<div class="FOOTER btn">
<button @click="routerToReturnChart">查看详情</button>
</div>
</div>
<div class="img" v-if="list.length <= 0">
<img src="@/assets/noData.jpg" class="_img" alt="">
</div>
<div class="btn" v-if="list.length > 0">
<!-- <span v-show="false" id="copyUrl">{{copyUrl}}</span> -->
<button @click="exportExcel" class="copy" :data-clipboard-text="copyUrl">导出excel</button>
</div>
</div>
</template>
......@@ -190,11 +158,7 @@ export default {
return {
list:[],
openId:'',
copyUrl:'',
h:0,
cardH:0,
itemH:0,
returnTrack:{}
copyUrl:''
}
},
components:{
......@@ -208,30 +172,28 @@ export default {
async mounted(){
this.openId=this.$route.query.openId;
this.$store.dispatch('saveHealthStatisticsOpen',this.openId);
window.addEventListener("resize", this.renderResize, false)
},
async activated(){
window.d = this;
await this.getData();
await this.getReturnTrack();
this.renderResize();
},
beforeDestroy () {
// 移除监听
window.removeEventListener("resize", this.renderResize, false)
// axios({
// method: 'get',
// url:'https://weixin.huansi.net/apiproxy/huansi/service/proxy/1227787695263191040/sendmessage/excel/?iCompanyID=1382&t=0.34324224',
// responseType: 'blob'
// })
// .then(data => {
// let url = window.URL.createObjectURL(data.data)
// let link = document.createElement('a')
// link.style.display = 'none'
// link.href = url
// console.log(url)
// link.setAttribute('download', 'product.xls')
// document.body.appendChild(link)
// link.click()
// })
},
methods:{
renderResize() {
if(this.list.length > 0){
let ref = this.$refs['date'][0];
this.h = ref.offsetWidth;
this.$nextTick(()=>{
let item = this.$refs['item'][0];
this.itemH = this.h + 18 + 5;
this.cardH = this.itemH * 2 + 30;
})
}
},
async getData(){
let res = await this.request('getStatisticalDetails',{
data:[
......@@ -261,21 +223,6 @@ export default {
showCancelButton:false,
})
},1000)
},
async getReturnTrack(){
let res = await this.request('getHealthbacklog',{
data:[
{key:'url',value:'statistical_details_data'},
{key:'iCompanyId',value: '1382'}
],
params:{},
},'加载中',{});
if(Util.getType(res) == 'object') {
this.returnTrack = res.set1[0];
}
},
routerToReturnChart(){
this.$router.push({name:'healthCardReturnTrackChart'});
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment