@@ -10,6 +10,95 @@ | |||
<div class="lr-layout-tool-item"> | |||
<div id="datesearch" style="min-width:150px"></div> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<div class=" btn-group btn-group-sm"> | |||
<script src="~/Content/vue/vue.js"></script> | |||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> | |||
<script src="https://unpkg.com/element-ui/lib/index.js"></script> | |||
<div id="app"> | |||
<a id="timeNoCludes" class="btn btn-default" v-on:click="nocludesVisible = true">时间段排除</a> | |||
<el-dialog title="时间段排除" | |||
:visible.sync="nocludesVisible" | |||
width="500px" | |||
append-to-body | |||
:before-close="handleClose"> | |||
<div v-for="(item,index) in searchNoIncludes" style="padding-bottom:18px;"> | |||
<el-date-picker v-model="item.value" | |||
size="small" | |||
type="datetimerange" | |||
value-format="yyyy-MM-dd HH:mm:ss" | |||
:picker-options="pickerOptions" | |||
range-separator="至" | |||
start-placeholder="开始日期" | |||
end-placeholder="结束日期" | |||
align="right"> | |||
</el-date-picker> | |||
<el-button size="small" | |||
type="warning" | |||
plain | |||
class="el-icon-delete" | |||
v-on:click="delNoIcludes(index)"> | |||
</el-button> | |||
</div> | |||
<div> | |||
<el-button size="small" type="primary" plain v-on:click="addNoCludes">新 增</el-button> | |||
</div> | |||
<span slot="footer" class="dialog-footer"> | |||
<el-button size="small" type="primary" v-on:click="handleClose">确 定</el-button> | |||
</span> | |||
</el-dialog> | |||
</div> | |||
<script> | |||
new Vue({ | |||
el: "#app", | |||
data: { | |||
searchNoIncludes: [{ value: null }], | |||
nocludesVisible: false, | |||
pickerOptions: {}, | |||
begin: '', | |||
end: '', | |||
}, | |||
mounted() { | |||
window.datesearchChange = this.datesearchChange | |||
}, | |||
methods: { | |||
datesearchChange() { | |||
this.begin = $('#datesearch').attr('starttime') | |||
this.end = $('#datesearch').attr('endtime') | |||
this.pickerOptions = { | |||
disabledDate: (e)=> { | |||
let datetime = e.valueOf() | |||
if (datetime >= new Date(this.begin).valueOf() && datetime < new Date(this.end).valueOf()+1000) { | |||
return false | |||
} | |||
return true | |||
} | |||
} | |||
this.searchNoIncludes = [{ value: null }] | |||
this.setDataNoIncludes() | |||
}, | |||
handleClose() { | |||
this.setDataNoIncludes() | |||
this.nocludesVisible = false | |||
}, | |||
addNoCludes() { | |||
this.searchNoIncludes.push({ value: null }) | |||
}, | |||
delNoIcludes(index) { | |||
this.searchNoIncludes.splice(index, 1) | |||
}, | |||
setDataNoIncludes() { | |||
let arr = this.searchNoIncludes.filter(e => { | |||
return e.value && e.value.length | |||
}) | |||
let data = arr.map(e => e.value.toString()) | |||
$('#timeNoCludes').attr("timeNoCludes", data.join("&")) | |||
} | |||
} | |||
}) | |||
</script> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<div id="weeks" style="min-width:150px"></div> | |||
</div> | |||
@@ -53,8 +53,11 @@ var bootstrap = function ($, learun) { | |||
// 默认 | |||
dfvalue: '0', | |||
selectfn: function (begin, end) { | |||
$('#datesearch').attr('starttime', begin) | |||
$('#datesearch').attr('endtime', end) | |||
startTime = begin; | |||
endTime = end; | |||
window.datesearchChange() | |||
} | |||
}); | |||
// 查询 | |||
@@ -166,6 +169,7 @@ var bootstrap = function ($, learun) { | |||
param = param || {}; | |||
param.StartTime = startTime; | |||
param.EndTime = endTime; | |||
param.noTime = $('#timeNoCludes').attr("timeNoCludes") | |||
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); | |||
} | |||
}; | |||
@@ -5,6 +5,13 @@ | |||
// 考虑到用户刷新网页时会丢失全局数据、页面栈、页面数据等,因此直接跳回首页即可 | |||
async onLaunch(param) { | |||
// 版本更新 | |||
var newVer = '1.0.2'; | |||
var oldVer = localStorage.getItem('version'); | |||
if (newVer != oldVer) { | |||
localStorage.setItem('version', newVer); | |||
this.JUMP_TO("/") | |||
} | |||
// 加载百度地图资源 | |||
let ak = this.GET_AK() | |||
var script = document.createElement('script'); | |||
@@ -31,6 +31,9 @@ | |||
<view style="color: #666;"> | |||
{{postData.ClockPlace}} | |||
</view> | |||
<view class="wifiCard" v-if="info.AttendanceType != 5&isInternalNet"> | |||
定位不精准?<span @click="isInternalNetwork">WIFI信息打卡</span> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="footer"> | |||
@@ -93,6 +96,8 @@ | |||
postData: {}, | |||
isGetingLocal:false, | |||
// modal:false, | |||
isInternalNet:false, | |||
} | |||
}, | |||
@@ -103,6 +108,7 @@ | |||
methods: { | |||
// 页面初始化 | |||
async init() { | |||
this.isInternalNetwork(false) | |||
this.LOADING('加载数据中...') | |||
this.now = this.getCurrentTime() | |||
@@ -314,6 +320,26 @@ | |||
toAttendanceCardTeacher() { | |||
this.JUMP_TO('/pages/AttendanceCardTeacher/list', {},true) | |||
}, | |||
// 判断是否学校网络 | |||
isInternalNetwork(TOAST=true){ | |||
this.LOADING() | |||
this.requestBase("https://mp.weixin.qq.com/intp/getuserclientip").then(res=>{ | |||
this.HIDE_LOADING() | |||
let res_ = res[1] | |||
let client_ip_start = '1.190.222.' | |||
let arr = [] | |||
for(let i=34;i<47;i++){ | |||
arr.push(client_ip_start+i) | |||
} | |||
if(res_.data&&arr.includes(res_.data.client_ip)){ | |||
this.isInternalNet = true | |||
let postData = {AIsOut:0,ClockPlace:'已连接校园网'} | |||
TOAST&&this.NAV_TO(`./single_zc`,postData,true) | |||
}else{ | |||
TOAST&&this.TOAST('未检测到校园网连接') | |||
} | |||
}) | |||
}, | |||
}, | |||
destroyed() { | |||
// let scirpt = document.getElementById('baiduScript') | |||
@@ -431,4 +457,13 @@ | |||
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | |||
filter: gray; | |||
} | |||
.wifiCard{ | |||
margin-top: 6px; | |||
font-size: 14px; | |||
text-align: center; | |||
span{ | |||
color: #0c86d8; | |||
} | |||
} | |||
</style> |
@@ -40,6 +40,9 @@ | |||
<view> | |||
{{postData.ClockPlace}} | |||
</view> | |||
<view class="wifiCard" v-if="info.AttendanceType != 5&isInternalNet"> | |||
定位不精准?<span @click="isInternalNetwork">WIFI信息打卡</span> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -97,6 +100,8 @@ | |||
map: null, | |||
postData: {}, | |||
isGetingLocal:false, | |||
isInternalNet:false, | |||
} | |||
}, | |||
@@ -107,6 +112,7 @@ | |||
methods: { | |||
// 页面初始化 | |||
async init() { | |||
this.isInternalNetwork(false) | |||
this.LOADING('加载数据中...') | |||
this.now = this.getCurrentTime() | |||
@@ -312,7 +318,27 @@ | |||
}) | |||
}); | |||
} | |||
}, | |||
// 判断是否学校网络 | |||
isInternalNetwork(TOAST=true){ | |||
this.LOADING() | |||
this.requestBase("https://mp.weixin.qq.com/intp/getuserclientip").then(res=>{ | |||
this.HIDE_LOADING() | |||
let res_ = res[1] | |||
let client_ip_start = '1.190.222.' | |||
let arr = [] | |||
for(let i=34;i<47;i++){ | |||
arr.push(client_ip_start+i) | |||
} | |||
if(res_.data&&arr.includes(res_.data.client_ip)){ | |||
this.isInternalNet = true | |||
let postData = {AIsOut:0,ClockPlace:'已连接校园网'} | |||
TOAST&&this.NAV_TO(`./single_zc`,postData,true) | |||
}else{ | |||
TOAST&&this.TOAST('未检测到校园网连接') | |||
} | |||
}) | |||
}, | |||
}, | |||
destroyed() { | |||
let scirpt = document.getElementById('baiduScript') | |||
@@ -430,4 +456,13 @@ | |||
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | |||
filter: gray; | |||
} | |||
.wifiCard{ | |||
margin-top: 6px; | |||
font-size: 14px; | |||
text-align: center; | |||
span{ | |||
color: #0c86d8; | |||
} | |||
} | |||
</style> |
@@ -14,7 +14,7 @@ module.exports = { | |||
disableHostCheck: true | |||
}, | |||
output: { // 输出重构 打包编译后的 文件目录 文件名称 【模块名称.时间戳】 | |||
filename: `${filePath}[name]${Timestamp}.js`, | |||
filename: `${filePath}[name]${Timestamp}.js?v=1.0.2`, | |||
chunkFilename: `${filePath}[name]${Timestamp}.js` | |||
}, | |||
} | |||