|
|
@ -1,53 +1,103 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div class="project-handle"> |
|
|
<div class="project-handle" |
|
|
|
|
|
style="background: #ffffff;"> |
|
|
<div class="project-detail"> |
|
|
<div class="project-detail"> |
|
|
<div class="project-detail-tip">处理操作 :</div> |
|
|
<div class="project-detail-tip">处理操作 :</div> |
|
|
<el-form ref="dataForm" label-width="120px" label-position="right" style="width: 720px;" :model="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"> |
|
|
<el-form ref="dataForm" |
|
|
<el-form-item label="是否加积分 :" prop="status"> |
|
|
:model="dataForm" |
|
|
<el-radio v-model="dataForm.status" :disabled="isAble" label="5">确认加积分</el-radio> |
|
|
:rules="dataRule" |
|
|
<el-radio v-model="dataForm.status" :disabled="isAble" label="6">拒绝加积分</el-radio> |
|
|
@keyup.enter.native="dataFormSubmitHandle()"> |
|
|
|
|
|
<el-form-item label="是否加积分 :" |
|
|
|
|
|
prop="status"> |
|
|
|
|
|
<el-radio v-model="dataForm.status" |
|
|
|
|
|
:disabled="isAble" |
|
|
|
|
|
label="5">确认加积分</el-radio> |
|
|
|
|
|
<el-radio v-model="dataForm.status" |
|
|
|
|
|
:disabled="isAble" |
|
|
|
|
|
label="6">拒绝加积分</el-radio> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="处理意见 :" prop="failureReason"> |
|
|
<el-form-item label="处理意见 :" |
|
|
<el-input :rows="4" v-model="dataForm.failureReason" :disabled="isAble" type="textarea" placeholder="请写明理由,100字以内"></el-input> |
|
|
prop="failureReason"> |
|
|
|
|
|
<el-input :rows="4" |
|
|
|
|
|
v-model="dataForm.failureReason" |
|
|
|
|
|
:disabled="isAble" |
|
|
|
|
|
type="textarea" |
|
|
|
|
|
placeholder="请写明理由,100字以内"></el-input> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item style="float: right;"> |
|
|
<el-form-item style="float: right;"> |
|
|
<el-button size="small" style="width: 95px" type="primary" :disabled="isAble" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|
|
<el-button size="small" |
|
|
<el-button size="small" style="width: 95px" @click="backToActClockList">{{ '返回' }}</el-button> |
|
|
style="width: 95px" |
|
|
|
|
|
type="primary" |
|
|
|
|
|
:disabled="isAble" |
|
|
|
|
|
@click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|
|
|
|
|
<el-button size="small" |
|
|
|
|
|
style="width: 95px" |
|
|
|
|
|
@click="backToActClockList">{{ '返回' }}</el-button> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
<div class="container"> |
|
|
<div class="container"> |
|
|
<div class="location"><span style="font-weight: bold;color: #606266">打卡位置 :</span> {{dataForm.address}}</div> |
|
|
<div class="location"><span style="font-weight: bold;color: #606266">打卡位置 :</span> {{dataForm.address}}</div> |
|
|
<div id="mapContainer" style="width:450px;height:220px;"></div> |
|
|
<div id="mapContainer" |
|
|
</div> |
|
|
style="width:450px;height:220px;"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="handle-operation"> |
|
|
<div class="handle-operation"> |
|
|
<div class="handle-operation-tip">打卡详情</div> |
|
|
<div class="handle-operation-tip">打卡详情</div> |
|
|
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|
|
<el-table v-loading="dataListLoading" |
|
|
<el-table-column label="序号" type="index" show-overflow-tooltip align="center" width="50"></el-table-column> |
|
|
:data="dataList" |
|
|
<el-table-column prop="realName" label="报名人" header-align="center" align="center"></el-table-column> |
|
|
border |
|
|
<el-table-column prop="sex" label="性别" :formatter="formatSex" header-align="center" align="center"></el-table-column> |
|
|
@selection-change="dataListSelectionChangeHandle" |
|
|
<el-table-column prop="age" label="年龄" header-align="center" align="center"></el-table-column> |
|
|
style="width: 100%;"> |
|
|
<el-table-column prop="mobile" label="联系电话" header-align="center" align="center"></el-table-column> |
|
|
<el-table-column label="序号" |
|
|
<el-table-column prop="clockAddress" label="打卡地点" header-align="center" align="center"></el-table-column> |
|
|
type="index" |
|
|
<el-table-column prop="clockDesc" label="打卡描述" header-align="center" align="center"></el-table-column> |
|
|
show-overflow-tooltip |
|
|
<el-table-column label="图片" fixed="right" header-align="center" align="center" width="400"> |
|
|
align="center" |
|
|
|
|
|
width="50"></el-table-column> |
|
|
|
|
|
<el-table-column prop="realName" |
|
|
|
|
|
label="报名人" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column prop="sex" |
|
|
|
|
|
label="性别" |
|
|
|
|
|
:formatter="formatSex" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column prop="age" |
|
|
|
|
|
label="年龄" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column prop="mobile" |
|
|
|
|
|
label="联系电话" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column prop="clockAddress" |
|
|
|
|
|
label="打卡地点" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column prop="clockDesc" |
|
|
|
|
|
label="打卡描述" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
<el-table-column label="图片" |
|
|
|
|
|
fixed="right" |
|
|
|
|
|
header-align="center" |
|
|
|
|
|
align="center" |
|
|
|
|
|
width="400"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-image |
|
|
<el-image class="avatar1" |
|
|
class="avatar1" |
|
|
|
|
|
v-if="scope.row.clockPic[0]" |
|
|
v-if="scope.row.clockPic[0]" |
|
|
:src="scope.row.clockPic[0]" |
|
|
:src="scope.row.clockPic[0]" |
|
|
:key="scope.row.clockPic[0]" |
|
|
:key="scope.row.clockPic[0]" |
|
|
:preview-src-list="previewImgList" |
|
|
:preview-src-list="previewImgList" |
|
|
@click="clickImg(scope.row.clockPic[0])"></el-image> |
|
|
@click="clickImg(scope.row.clockPic[0])"></el-image> |
|
|
<el-image |
|
|
<el-image class="avatar1" |
|
|
class="avatar1" |
|
|
|
|
|
v-if="scope.row.clockPic[1]" |
|
|
v-if="scope.row.clockPic[1]" |
|
|
:src="scope.row.clockPic[1]" |
|
|
:src="scope.row.clockPic[1]" |
|
|
:key="scope.row.clockPic[1]" |
|
|
:key="scope.row.clockPic[1]" |
|
|
:preview-src-list="previewImgList" |
|
|
:preview-src-list="previewImgList" |
|
|
@click="clickImg(scope.row.clockPic[1])"></el-image> |
|
|
@click="clickImg(scope.row.clockPic[1])"></el-image> |
|
|
<el-image |
|
|
<el-image class="avatar1" |
|
|
class="avatar1" |
|
|
|
|
|
v-if="scope.row.clockPic[2]" |
|
|
v-if="scope.row.clockPic[2]" |
|
|
:src="scope.row.clockPic[2]" |
|
|
:src="scope.row.clockPic[2]" |
|
|
:key="scope.row.clockPic[2]" |
|
|
:key="scope.row.clockPic[2]" |
|
|
@ -56,14 +106,22 @@ |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
|
|
|
<el-pagination :current-page="page" |
|
|
|
|
|
:page-sizes="[10, 20, 50, 100]" |
|
|
|
|
|
:page-size="limit" |
|
|
|
|
|
:total="total" |
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper" |
|
|
|
|
|
@size-change="pageSizeChangeHandle" |
|
|
|
|
|
@current-change="pageCurrentChangeHandle"> |
|
|
|
|
|
</el-pagination> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
<script> |
|
|
<script> |
|
|
var map; |
|
|
var map; |
|
|
var markerList =[]; |
|
|
var markerList = []; |
|
|
var radiusList =[]; |
|
|
var radiusList = []; |
|
|
var clockList =[]; |
|
|
var clockList = []; |
|
|
import mixinViewModule from '@/mixins/view-module' |
|
|
import mixinViewModule from '@/mixins/view-module' |
|
|
import debounce from 'lodash/debounce' |
|
|
import debounce from 'lodash/debounce' |
|
|
import 'element-ui/lib/theme-chalk/timeline.css' |
|
|
import 'element-ui/lib/theme-chalk/timeline.css' |
|
|
@ -115,12 +173,12 @@ export default { |
|
|
backToActClockList () { |
|
|
backToActClockList () { |
|
|
this.$emit('refreshDataList') |
|
|
this.$emit('refreshDataList') |
|
|
this.$parent.selectComponent = 'ActUserClockLog' |
|
|
this.$parent.selectComponent = 'ActUserClockLog' |
|
|
this.$router.push({ path: '/heart-actinfo', query: { id: this.dataForm.actId}}) |
|
|
this.$router.push({ path: '/heart-actinfo', query: { id: this.dataForm.actId } }) |
|
|
}, |
|
|
}, |
|
|
setMap(data) { |
|
|
setMap (data) { |
|
|
//步骤:定义map变量 调用 qq.maps.Map() 构造函数 获取地图显示容器 |
|
|
//步骤:定义map变量 调用 qq.maps.Map() 构造函数 获取地图显示容器 |
|
|
//设置地图中心点 |
|
|
//设置地图中心点 |
|
|
var myLatlng = new qq.maps.LatLng(data.latitude,data.longitude); |
|
|
var myLatlng = new qq.maps.LatLng(data.latitude, data.longitude); |
|
|
//定义工厂模式函数 |
|
|
//定义工厂模式函数 |
|
|
var zoom = this.capacity(data); |
|
|
var zoom = this.capacity(data); |
|
|
var myOptions = { |
|
|
var myOptions = { |
|
|
@ -132,15 +190,15 @@ export default { |
|
|
map = new qq.maps.Map(document.getElementById("mapContainer"), myOptions); |
|
|
map = new qq.maps.Map(document.getElementById("mapContainer"), myOptions); |
|
|
//设置圆形 |
|
|
//设置圆形 |
|
|
var radius = new qq.maps.Circle({ |
|
|
var radius = new qq.maps.Circle({ |
|
|
center:new qq.maps.LatLng(data.latitude,data.longitude), |
|
|
center: new qq.maps.LatLng(data.latitude, data.longitude), |
|
|
radius: this.dataForm.radius, |
|
|
radius: this.dataForm.radius, |
|
|
map: map |
|
|
map: map |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
radiusList.push(radius); |
|
|
radiusList.push(radius); |
|
|
var marker = new qq.maps.Marker({ |
|
|
var marker = new qq.maps.Marker({ |
|
|
position:myLatlng, |
|
|
position: myLatlng, |
|
|
map:map |
|
|
map: map |
|
|
}); |
|
|
}); |
|
|
markerList.push(marker) |
|
|
markerList.push(marker) |
|
|
}, |
|
|
}, |
|
|
@ -180,10 +238,10 @@ export default { |
|
|
this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data |
|
|
this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data |
|
|
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0 |
|
|
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0 |
|
|
this.dataList.forEach((item) => { |
|
|
this.dataList.forEach((item) => { |
|
|
var LogLatlng = new qq.maps.LatLng(item.clockLatitude,item.clockLongitude); |
|
|
var LogLatlng = new qq.maps.LatLng(item.clockLatitude, item.clockLongitude); |
|
|
var LogMarker = new qq.maps.Marker({ |
|
|
var LogMarker = new qq.maps.Marker({ |
|
|
position:LogLatlng, |
|
|
position: LogLatlng, |
|
|
map:map |
|
|
map: map |
|
|
}); |
|
|
}); |
|
|
markerList.push(LogMarker) |
|
|
markerList.push(LogMarker) |
|
|
}); |
|
|
}); |
|
|
@ -212,25 +270,25 @@ export default { |
|
|
this.setMap(res.data) |
|
|
this.setMap(res.data) |
|
|
|
|
|
|
|
|
this.getDataList(); |
|
|
this.getDataList(); |
|
|
}).catch(() => {}) |
|
|
}).catch(() => { }) |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
capacity(data) { |
|
|
capacity (data) { |
|
|
if(0 < data.radius && data.radius <= 25){ |
|
|
if (0 < data.radius && data.radius <= 25) { |
|
|
return 18 |
|
|
return 18 |
|
|
} else if (25 < data.radius && data.radius <= 50){ |
|
|
} else if (25 < data.radius && data.radius <= 50) { |
|
|
return 17 |
|
|
return 17 |
|
|
} else if (50 < data.radius && data.radius <= 100){ |
|
|
} else if (50 < data.radius && data.radius <= 100) { |
|
|
return 16 |
|
|
return 16 |
|
|
} else if (100 < data.radius && data.radius <= 200){ |
|
|
} else if (100 < data.radius && data.radius <= 200) { |
|
|
return 15 |
|
|
return 15 |
|
|
} else if (200 < data.radius && data.radius <= 500){ |
|
|
} else if (200 < data.radius && data.radius <= 500) { |
|
|
return 14 |
|
|
return 14 |
|
|
} else if (500 < data.radius && data.radius <= 1000){ |
|
|
} else if (500 < data.radius && data.radius <= 1000) { |
|
|
return 13 |
|
|
return 13 |
|
|
} else if (1000 < data.radius && data.radius <= 2000){ |
|
|
} else if (1000 < data.radius && data.radius <= 2000) { |
|
|
return 12 |
|
|
return 12 |
|
|
} else if (2000 < data.radius && data.radius <= 5000){ |
|
|
} else if (2000 < data.radius && data.radius <= 5000) { |
|
|
return 11 |
|
|
return 11 |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
@ -264,79 +322,63 @@ export default { |
|
|
onClose: () => { |
|
|
onClose: () => { |
|
|
this.$emit('refreshDataList') |
|
|
this.$emit('refreshDataList') |
|
|
this.$parent.selectComponent = 'ActUserClockLog' |
|
|
this.$parent.selectComponent = 'ActUserClockLog' |
|
|
this.$router.push({ path: '/heart-actinfo', query: { id: this.dataForm.actId}}) |
|
|
this.$router.push({ path: '/heart-actinfo', query: { id: this.dataForm.actId } }) |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}).catch(() => {}) |
|
|
}).catch(() => { }) |
|
|
}) |
|
|
}) |
|
|
}, 1000, { 'leading': true, 'trailing': false }) |
|
|
}, 1000, { 'leading': true, 'trailing': false }) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
<style lang="scss"> |
|
|
<style lang="scss"> |
|
|
.avatar1 { |
|
|
.avatar1 { |
|
|
width: 120px; |
|
|
width: 120px; |
|
|
height: 120px; |
|
|
height: 120px; |
|
|
} |
|
|
} |
|
|
.el-image-viewer__close { |
|
|
.el-image-viewer__close { |
|
|
top: 16%; |
|
|
top: 16%; |
|
|
} |
|
|
} |
|
|
.el-table__fixed-right::before, .el-table__fixed::before { |
|
|
.el-table__fixed-right::before, |
|
|
|
|
|
.el-table__fixed::before { |
|
|
background: transparent !important; |
|
|
background: transparent !important; |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</style> |
|
|
|
|
|
|
|
|
<style lang="scss"> |
|
|
|
|
|
.project-handle { |
|
|
|
|
|
.el-timeline { |
|
|
|
|
|
padding-left: 9px; |
|
|
|
|
|
font-size: 13px; |
|
|
|
|
|
} |
|
|
|
|
|
.el-textarea { |
|
|
|
|
|
width: 600px !important; |
|
|
|
|
|
} |
|
|
|
|
|
.el-input { |
|
|
|
|
|
width: 600px !important; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
.el-form-item__label { |
|
|
|
|
|
font-weight: bold; |
|
|
|
|
|
} |
|
|
|
|
|
</style> |
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
<style lang="scss" scoped> |
|
|
.project-handle { |
|
|
.project-handle { |
|
|
width: 100%; |
|
|
width: 100%; |
|
|
height: calc(100vh - 120px); |
|
|
height: 49%; |
|
|
background: #ffffff; |
|
|
background: #ffffff; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
|
padding: 10px; |
|
|
padding: 10px; |
|
|
.project-detail { |
|
|
.project-detail { |
|
|
width: 100%; |
|
|
background: #ffffff; |
|
|
|
|
|
width: 60%; |
|
|
height: 49%; |
|
|
height: 49%; |
|
|
border: 2px solid #ccc; |
|
|
border: 2px solid #ccc; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
|
padding: 10px; |
|
|
|
|
|
padding-top: 20px; |
|
|
padding-top: 20px; |
|
|
float:left; |
|
|
float: left; |
|
|
margin-bottom: 1%; |
|
|
margin-bottom: 1%; |
|
|
position:relative; |
|
|
position: relative; |
|
|
.project-detail-tip { |
|
|
.project-detail-tip { |
|
|
position: absolute; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
top: 0; |
|
|
left:0; |
|
|
left: 0; |
|
|
width: 80px; |
|
|
width: 80px; |
|
|
height: 30px; |
|
|
height: 30px; |
|
|
line-height: 30px; |
|
|
line-height: 30px; |
|
|
color: #ffffff; |
|
|
color: #ffffff; |
|
|
background: #4ac38b; |
|
|
background: #4ac38b; |
|
|
text-align:center; |
|
|
text-align: center; |
|
|
} |
|
|
} |
|
|
.el-form { |
|
|
.el-form { |
|
|
width: 58%; |
|
|
|
|
|
height: 100%; |
|
|
height: 100%; |
|
|
float:left; |
|
|
float: left; |
|
|
overflow-y:auto; |
|
|
overflow-y: auto; |
|
|
&::-webkit-scrollbar { |
|
|
&::-webkit-scrollbar { |
|
|
width: 5px; |
|
|
width: 5px; |
|
|
height: 1px; |
|
|
height: 1px; |
|
|
@ -350,9 +392,11 @@ export default { |
|
|
background: #fff; |
|
|
background: #fff; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
.container { |
|
|
.container { |
|
|
|
|
|
background: #ffffff; |
|
|
width: 40%; |
|
|
width: 40%; |
|
|
height: 100%; |
|
|
height: 49%; |
|
|
float: right; |
|
|
float: right; |
|
|
.location { |
|
|
.location { |
|
|
height: 30px; |
|
|
height: 30px; |
|
|
@ -363,7 +407,6 @@ export default { |
|
|
height: calc(100% - 30px); |
|
|
height: calc(100% - 30px); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
.project-progress { |
|
|
.project-progress { |
|
|
width: 20%; |
|
|
width: 20%; |
|
|
height: 100%; |
|
|
height: 100%; |
|
|
@ -372,7 +415,7 @@ export default { |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
|
margin-left: 1%; |
|
|
margin-left: 1%; |
|
|
padding-top: 20px; |
|
|
padding-top: 20px; |
|
|
overflow-y:auto; |
|
|
overflow-y: auto; |
|
|
&::-webkit-scrollbar { |
|
|
&::-webkit-scrollbar { |
|
|
width: 5px; |
|
|
width: 5px; |
|
|
height: 1px; |
|
|
height: 1px; |
|
|
@ -393,9 +436,9 @@ export default { |
|
|
height: 49%; |
|
|
height: 49%; |
|
|
box-sizing: border-box; |
|
|
box-sizing: border-box; |
|
|
border: 2px solid #ccc; |
|
|
border: 2px solid #ccc; |
|
|
float:left; |
|
|
float: left; |
|
|
position: relative; |
|
|
position: relative; |
|
|
overflow-y:auto; |
|
|
overflow-y: auto; |
|
|
&::-webkit-scrollbar { |
|
|
&::-webkit-scrollbar { |
|
|
width: 5px; |
|
|
width: 5px; |
|
|
height: 1px; |
|
|
height: 1px; |
|
|
@ -411,14 +454,14 @@ export default { |
|
|
.handle-operation-tip { |
|
|
.handle-operation-tip { |
|
|
position: absolute; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
top: 0; |
|
|
left:0; |
|
|
left: 0; |
|
|
width: 80px; |
|
|
width: 80px; |
|
|
height: 30px; |
|
|
height: 30px; |
|
|
line-height: 30px; |
|
|
line-height: 30px; |
|
|
color: #ffffff; |
|
|
color: #ffffff; |
|
|
background: #ff7600; |
|
|
background: #ff7600; |
|
|
text-align:center; |
|
|
text-align: center; |
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
</style> |
|
|
</style> |
|
|
|