@@ -10,6 +10,95 @@ | |||||
<div class="lr-layout-tool-item"> | <div class="lr-layout-tool-item"> | ||||
<div id="datesearch" style="min-width:150px"></div> | <div id="datesearch" style="min-width:150px"></div> | ||||
</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 class="lr-layout-tool-item"> | ||||
<div id="weeks" style="min-width:150px"></div> | <div id="weeks" style="min-width:150px"></div> | ||||
</div> | </div> | ||||
@@ -53,8 +53,11 @@ var bootstrap = function ($, learun) { | |||||
// 默认 | // 默认 | ||||
dfvalue: '0', | dfvalue: '0', | ||||
selectfn: function (begin, end) { | selectfn: function (begin, end) { | ||||
$('#datesearch').attr('starttime', begin) | |||||
$('#datesearch').attr('endtime', end) | |||||
startTime = begin; | startTime = begin; | ||||
endTime = end; | endTime = end; | ||||
window.datesearchChange() | |||||
} | } | ||||
}); | }); | ||||
// 查询 | // 查询 | ||||
@@ -166,6 +169,7 @@ var bootstrap = function ($, learun) { | |||||
param = param || {}; | param = param || {}; | ||||
param.StartTime = startTime; | param.StartTime = startTime; | ||||
param.EndTime = endTime; | param.EndTime = endTime; | ||||
param.noTime = $('#timeNoCludes').attr("timeNoCludes") | |||||
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); | $('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); | ||||
} | } | ||||
}; | }; | ||||
@@ -5,6 +5,13 @@ | |||||
// 考虑到用户刷新网页时会丢失全局数据、页面栈、页面数据等,因此直接跳回首页即可 | // 考虑到用户刷新网页时会丢失全局数据、页面栈、页面数据等,因此直接跳回首页即可 | ||||
async onLaunch(param) { | 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() | let ak = this.GET_AK() | ||||
var script = document.createElement('script'); | var script = document.createElement('script'); | ||||
@@ -31,6 +31,9 @@ | |||||
<view style="color: #666;"> | <view style="color: #666;"> | ||||
{{postData.ClockPlace}} | {{postData.ClockPlace}} | ||||
</view> | </view> | ||||
<view class="wifiCard" v-if="info.AttendanceType != 5&isInternalNet"> | |||||
定位不精准?<span @click="isInternalNetwork">WIFI信息打卡</span> | |||||
</view> | |||||
</view> | </view> | ||||
</view> | </view> | ||||
<view class="footer"> | <view class="footer"> | ||||
@@ -93,6 +96,8 @@ | |||||
postData: {}, | postData: {}, | ||||
isGetingLocal:false, | isGetingLocal:false, | ||||
// modal:false, | // modal:false, | ||||
isInternalNet:false, | |||||
} | } | ||||
}, | }, | ||||
@@ -103,6 +108,7 @@ | |||||
methods: { | methods: { | ||||
// 页面初始化 | // 页面初始化 | ||||
async init() { | async init() { | ||||
this.isInternalNetwork(false) | |||||
this.LOADING('加载数据中...') | this.LOADING('加载数据中...') | ||||
this.now = this.getCurrentTime() | this.now = this.getCurrentTime() | ||||
@@ -314,6 +320,26 @@ | |||||
toAttendanceCardTeacher() { | toAttendanceCardTeacher() { | ||||
this.JUMP_TO('/pages/AttendanceCardTeacher/list', {},true) | 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() { | destroyed() { | ||||
// let scirpt = document.getElementById('baiduScript') | // let scirpt = document.getElementById('baiduScript') | ||||
@@ -431,4 +457,13 @@ | |||||
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | ||||
filter: gray; | filter: gray; | ||||
} | } | ||||
.wifiCard{ | |||||
margin-top: 6px; | |||||
font-size: 14px; | |||||
text-align: center; | |||||
span{ | |||||
color: #0c86d8; | |||||
} | |||||
} | |||||
</style> | </style> |
@@ -40,6 +40,9 @@ | |||||
<view> | <view> | ||||
{{postData.ClockPlace}} | {{postData.ClockPlace}} | ||||
</view> | </view> | ||||
<view class="wifiCard" v-if="info.AttendanceType != 5&isInternalNet"> | |||||
定位不精准?<span @click="isInternalNetwork">WIFI信息打卡</span> | |||||
</view> | |||||
</view> | </view> | ||||
</view> | </view> | ||||
</view> | </view> | ||||
@@ -97,6 +100,8 @@ | |||||
map: null, | map: null, | ||||
postData: {}, | postData: {}, | ||||
isGetingLocal:false, | isGetingLocal:false, | ||||
isInternalNet:false, | |||||
} | } | ||||
}, | }, | ||||
@@ -107,6 +112,7 @@ | |||||
methods: { | methods: { | ||||
// 页面初始化 | // 页面初始化 | ||||
async init() { | async init() { | ||||
this.isInternalNetwork(false) | |||||
this.LOADING('加载数据中...') | this.LOADING('加载数据中...') | ||||
this.now = this.getCurrentTime() | 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() { | destroyed() { | ||||
let scirpt = document.getElementById('baiduScript') | let scirpt = document.getElementById('baiduScript') | ||||
@@ -430,4 +456,13 @@ | |||||
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); | ||||
filter: gray; | filter: gray; | ||||
} | } | ||||
.wifiCard{ | |||||
margin-top: 6px; | |||||
font-size: 14px; | |||||
text-align: center; | |||||
span{ | |||||
color: #0c86d8; | |||||
} | |||||
} | |||||
</style> | </style> |
@@ -14,7 +14,7 @@ module.exports = { | |||||
disableHostCheck: true | disableHostCheck: true | ||||
}, | }, | ||||
output: { // 输出重构 打包编译后的 文件目录 文件名称 【模块名称.时间戳】 | output: { // 输出重构 打包编译后的 文件目录 文件名称 【模块名称.时间戳】 | ||||
filename: `${filePath}[name]${Timestamp}.js`, | |||||
filename: `${filePath}[name]${Timestamp}.js?v=1.0.2`, | |||||
chunkFilename: `${filePath}[name]${Timestamp}.js` | chunkFilename: `${filePath}[name]${Timestamp}.js` | ||||
}, | }, | ||||
} | } | ||||