You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
377 lines
8.4 KiB
377 lines
8.4 KiB
<script>
|
|
import {
|
|
mapState,
|
|
mapActions,
|
|
mapMutations
|
|
} from "vuex"
|
|
import $api from "@/api/index.js"
|
|
import $store from "@/store/index.js"
|
|
export default {
|
|
data() {
|
|
return {
|
|
timer: null
|
|
}
|
|
},
|
|
async mounted() {
|
|
// #ifdef H5
|
|
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
|
|
window.entryUrl = window.location.href.split('#')[0]
|
|
}
|
|
if (window.location.href.indexOf('?#') < 0) {
|
|
window.location.href = window.location.href.replace("#", "?#");
|
|
}
|
|
// #endif
|
|
console.log('App mounted')
|
|
},
|
|
async onLaunch() {
|
|
let configInfo = uni.getStorageSync('configInfo') || ''
|
|
if (configInfo) {
|
|
$store.commit('updateConfigItem', {
|
|
key: 'configInfo',
|
|
val: configInfo
|
|
})
|
|
}
|
|
let isGzhLogin = uni.getStorageSync('isGzhLogin') || false
|
|
$store.commit('updateUserItem', {
|
|
key: 'isGzhLogin',
|
|
val: isGzhLogin
|
|
})
|
|
let arr = ['autograph', 'userInfo', 'location', 'appLogin', 'loginType']
|
|
arr.map(key => {
|
|
let val = uni.getStorageSync(key) || ''
|
|
// #ifdef H5
|
|
val = isGzhLogin ? val : ''
|
|
// #endif
|
|
$store.commit('updateUserItem', {
|
|
key,
|
|
val
|
|
})
|
|
// #ifdef APP-PLUS
|
|
if (key == 'userInfo') {
|
|
$store.commit('updateUserItem', {
|
|
key: 'isShowLogin',
|
|
val: val && val.id ? false : true
|
|
})
|
|
}
|
|
// #endif
|
|
})
|
|
let {
|
|
commonOptions
|
|
} = this
|
|
let {
|
|
coach_id = 0
|
|
} = commonOptions
|
|
if (coach_id) {
|
|
commonOptions.coach_id = 0
|
|
$store.commit('updateUserItem', {
|
|
key: 'commonOptions',
|
|
val: commonOptions
|
|
})
|
|
}
|
|
this.initIndex()
|
|
console.log('App onLaunch')
|
|
},
|
|
async onShow() {
|
|
if (this.timer) {
|
|
clearInterval(this.timer)
|
|
}
|
|
let {
|
|
coach_position = 0
|
|
} = this.userInfo
|
|
let {
|
|
id: coachId = 0,
|
|
status = 0
|
|
} = this.coachInfo
|
|
if (coach_position == 1) {
|
|
if (!coachId) {
|
|
await this.getCoachInfo()
|
|
}
|
|
$store.commit('updateUserItem', {
|
|
key: 'locationChange',
|
|
val: true
|
|
})
|
|
}
|
|
uni.onNetworkStatusChange((res) => {
|
|
let {
|
|
isConnected
|
|
} = res
|
|
if (isConnected) return
|
|
let methodArr = ['updateServiceItem', 'updateTechnicianItem']
|
|
methodArr.map(item => {
|
|
$store.commit(item, {
|
|
key: 'pageActive',
|
|
val: false
|
|
})
|
|
})
|
|
})
|
|
},
|
|
async onHide() {
|
|
console.log('App Hide')
|
|
let {
|
|
coach_position = 0
|
|
} = this.userInfo
|
|
let {
|
|
status = 0
|
|
} = this.coachInfo
|
|
if (!coach_position || status != 2) return
|
|
$store.commit('updateUserItem', {
|
|
key: 'locationChange',
|
|
val: false
|
|
})
|
|
// #ifdef H5
|
|
if (this.$jweixin.isWechat()) {
|
|
await this.$jweixin.wxReady2();
|
|
this.toHidePage()
|
|
this.timer = setInterval(() => {
|
|
this.toHidePage()
|
|
}, 60000)
|
|
}
|
|
// #endif
|
|
},
|
|
onUnload() {
|
|
uni.offLocationChange((res) => {
|
|
console.log("====offLocationChange onUnload", res)
|
|
})
|
|
},
|
|
watch: {
|
|
locationChange(newVal, oldVal) {
|
|
if (newVal) {
|
|
uni.startLocationUpdate({
|
|
complete: msg => console.log(`startLocationUpdate API complete`, msg)
|
|
})
|
|
} else {
|
|
uni.stopLocationUpdate({
|
|
complete: msg => console.log(`stopLocationUpdate API complete`, msg)
|
|
})
|
|
}
|
|
},
|
|
'configInfo.attendant_name'(newVal, oldVal) {
|
|
if (newVal) {
|
|
this.mergeLocaleMessage()
|
|
}
|
|
}
|
|
},
|
|
computed: mapState({
|
|
configInfo: state => state.config.configInfo,
|
|
old_attendant_name: state => state.config.old_attendant_name,
|
|
commonOptions: state => state.user.commonOptions,
|
|
locationChange: state => state.user.locationChange,
|
|
locationChangeUnix: state => state.user.locationChangeUnix,
|
|
userInfo: state => state.user.userInfo,
|
|
coachInfo: state => state.user.coachInfo,
|
|
}),
|
|
methods: {
|
|
...mapActions(['getConfigInfo', 'getUserInfo', 'getCoachInfo']),
|
|
async initIndex() {
|
|
let that = this
|
|
let {
|
|
coach_position = 0
|
|
} = that.userInfo
|
|
uni.onLocationChange((res) => {
|
|
console.log("====onLocationChange", res)
|
|
let {
|
|
latitude: lat,
|
|
longitude: lng
|
|
} = res
|
|
that.toChangeLocation({
|
|
lat,
|
|
lng
|
|
})
|
|
})
|
|
if (coach_position == 1) {
|
|
let {
|
|
id: coachId = 0
|
|
} = that.coachInfo
|
|
if (!coachId) {
|
|
await that.getCoachInfo()
|
|
}
|
|
$store.commit('updateUserItem', {
|
|
key: 'locationChange',
|
|
val: true
|
|
})
|
|
}
|
|
let {
|
|
primaryColor = '',
|
|
plugAuth = {},
|
|
tabBar = []
|
|
} = that.configInfo
|
|
let mineInd = tabBar.findIndex(item => {
|
|
return item.id == 5
|
|
})
|
|
console.log(mineInd, "======mineInd")
|
|
// if ((primaryColor && plugAuth.length > 0) || mineInd != -1) return
|
|
await that.getConfigInfo()
|
|
},
|
|
async mergeLocaleMessage() {
|
|
let zh = JSON.parse(JSON.stringify(this.$i18n.messages.zh))
|
|
let {
|
|
attendant_name: name,
|
|
} = this.configInfo
|
|
let oldName = this.old_attendant_name
|
|
let reg = new RegExp(oldName, 'g')
|
|
for (let i in zh.action) {
|
|
if (zh.action[i].includes(oldName)) {
|
|
zh.action[i] = zh.action[i].replace(reg, name)
|
|
}
|
|
}
|
|
this.$i18n.mergeLocaleMessage('zh', zh)
|
|
$store.commit('updateConfigItem', {
|
|
key: 'old_attendant_name',
|
|
val: name
|
|
})
|
|
// console.log(this.$t('action.attendantName'), this.$i18n.messages.zh, "=====");
|
|
},
|
|
async toHidePage() {
|
|
let {
|
|
latitude: lat,
|
|
longitude: lng
|
|
} = await this.$jweixin.getWxLocation()
|
|
if (lat && lng) {
|
|
let val = this.$util.DateToUnix(this.$util.formatTime(new Date(), 'YY-M-D h:m:s'))
|
|
$store.commit('updateUserItem', {
|
|
key: 'locationChangeUnix',
|
|
val
|
|
})
|
|
this.toChangeLocation({
|
|
lat,
|
|
lng
|
|
})
|
|
}
|
|
},
|
|
async toChangeLocation(param) {
|
|
let {
|
|
lat,
|
|
lng
|
|
} = param
|
|
let {
|
|
id = 0,
|
|
coach_position = 0
|
|
} = this.userInfo
|
|
let {
|
|
lat: coach_lat,
|
|
lng: coach_lng,
|
|
status = 0
|
|
} = this.coachInfo
|
|
let {
|
|
locationChangeUnix
|
|
} = this
|
|
let curUnix = this.$util.DateToUnix(this.$util.formatTime(new Date(), 'YY-M-D h:m:s'))
|
|
let second = 3
|
|
// #ifdef APP-PLUS
|
|
second = 1
|
|
// #endif
|
|
// console.log(curUnix, locationChangeUnix, curUnix - locationChangeUnix,
|
|
// "=====curUnix - locationChangeUnix")
|
|
let isMin = curUnix - locationChangeUnix <= second || curUnix - locationChangeUnix >= 60
|
|
let isSame = coach_lat * 1 == lat && coach_lng * 1 == lng
|
|
// console.log(lat, lng, coach_position, isMin, isSame, "=====lat, lng, coach_position, isMin")
|
|
if (!coach_position || status != 2 || !isMin || isSame) return
|
|
|
|
let val = this.$util.DateToUnix(this.$util.formatTime(new Date(), 'YY-M-D h:m:s'))
|
|
$store.commit('updateUserItem', {
|
|
key: 'locationChangeUnix',
|
|
val
|
|
})
|
|
|
|
let key = `${lat},${lng}`
|
|
try {
|
|
let data = await this.$api.base.getMapInfo({
|
|
location: key
|
|
})
|
|
let {
|
|
status,
|
|
result
|
|
} = JSON.parse(data)
|
|
if (status == 0) {
|
|
let {
|
|
address
|
|
} = result
|
|
console.log("toChangeLocation==>", `${lat}-${lng}-${address}`)
|
|
await this.$api.technician.coachUpdate({
|
|
lat,
|
|
lng,
|
|
address
|
|
})
|
|
await this.getCoachInfo()
|
|
}
|
|
} catch (e) {
|
|
console.log('=====getMapInfo catch')
|
|
uni.stopLocationUpdate({
|
|
complete: msg => console.log(`stopLocationUpdate API complete`, msg)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import "/styles/index.wxss";
|
|
|
|
/* #ifdef H5 */
|
|
uni-page-head {
|
|
display: none;
|
|
}
|
|
|
|
/* #endif */
|
|
|
|
page {
|
|
font-size: 28rpx;
|
|
color: #222;
|
|
line-height: 1.5;
|
|
background: #F6F6F6;
|
|
font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif;
|
|
}
|
|
|
|
input {
|
|
// font-family: PingFangSC-Medium, PingFang SC, -apple-system-font, Helvetica Neue, Helvetica, sans-serif;
|
|
}
|
|
|
|
input::-webkit-input-placeholder {
|
|
/* WebKit browsers */
|
|
color: #A9A9A9;
|
|
}
|
|
|
|
input:-moz-placeholder {
|
|
/* Mozilla Firefox 4 to 18 */
|
|
color: #A9A9A9;
|
|
}
|
|
|
|
input::-moz-placeholder {
|
|
/* Mozilla Firefox 19+ */
|
|
color: #A9A9A9;
|
|
}
|
|
|
|
input:-ms-input-placeholder {
|
|
/* Internet Explorer 10+ */
|
|
color: #A9A9A9;
|
|
}
|
|
|
|
view {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
image {
|
|
display: block;
|
|
}
|
|
|
|
.h5-image {
|
|
background-position: center center;
|
|
background-size: cover;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
/*隐藏滚动条*/
|
|
::-webkit-scrollbar {
|
|
width: 0;
|
|
height: 0;
|
|
color: transparent;
|
|
}
|
|
|
|
/* #ifdef MP-BAIDU */
|
|
.swan-button.swan-button-radius-ios {
|
|
border-radius: 0;
|
|
}
|
|
|
|
/* #endif */
|
|
</style> |