This commit is contained in:
173
node_modules/@dcloudio/uni-components/lib-x/ad/ad.mixin.web.js
generated
vendored
Normal file
173
node_modules/@dcloudio/uni-components/lib-x/ad/ad.mixin.web.js
generated
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
const AD_SERVER_URL = 'https://hac1.dcloud.net.cn/h5/gs'
|
||||
|
||||
const EventType = {
|
||||
Load: 'load',
|
||||
Close: 'close',
|
||||
Error: 'error'
|
||||
}
|
||||
|
||||
const ProviderType = 'wm'
|
||||
|
||||
class Process {
|
||||
static Start (cmd, args) {
|
||||
return new Process().openScheme(cmd)
|
||||
}
|
||||
|
||||
constructor () {
|
||||
this._a = null
|
||||
}
|
||||
|
||||
openScheme (url) {
|
||||
if (this._a == null) {
|
||||
this._a = document.createElement('a')
|
||||
}
|
||||
this._a.href = url
|
||||
this._a.click()
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
props: {
|
||||
options: {
|
||||
type: [Object, Array],
|
||||
default () {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
adpid: {
|
||||
type: [Number, String],
|
||||
default: ''
|
||||
},
|
||||
preload: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
loadnext: {
|
||||
type: [Boolean, String],
|
||||
default: false
|
||||
},
|
||||
urlCallback: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
adData: null,
|
||||
loading: false,
|
||||
showModel: false,
|
||||
errorMessage: null
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this._loading = false
|
||||
this.adConfigData = null
|
||||
},
|
||||
methods: {
|
||||
load () {
|
||||
setTimeout(() => {
|
||||
this._onmpload()
|
||||
}, 200)
|
||||
},
|
||||
|
||||
show (options) {
|
||||
if (!this._isMobile()) {
|
||||
this._dispatchEvent(EventType.Error, {
|
||||
errCode: -1,
|
||||
errMsg: '当前设备环境无效'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
this.errorMessage = null
|
||||
if (this._loading) {
|
||||
return
|
||||
}
|
||||
this._loading = true
|
||||
|
||||
this._requestScheme(options)
|
||||
},
|
||||
|
||||
getProvider () {
|
||||
return ProviderType
|
||||
},
|
||||
|
||||
_onclick () {
|
||||
if (this.disabled) {
|
||||
return
|
||||
}
|
||||
|
||||
this.show()
|
||||
},
|
||||
|
||||
_requestScheme (options = {}) {
|
||||
const urlCallback = options.urlCallback || this.urlCallback
|
||||
uni.request({
|
||||
url: AD_SERVER_URL,
|
||||
method: 'POST',
|
||||
data: {
|
||||
adpid: this.adpid,
|
||||
userId: urlCallback.userId,
|
||||
extra: urlCallback.extra
|
||||
},
|
||||
timeout: 5000,
|
||||
dataType: 'json',
|
||||
success: (res) => {
|
||||
if (res.statusCode !== 200) {
|
||||
this._dispatchEvent(EventType.Error, {
|
||||
errCode: res.statusCode,
|
||||
errMsg: res.statusCode
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
const responseData = res.data
|
||||
if (responseData.ret === 0) {
|
||||
Process.Start(responseData.data.openlink)
|
||||
} else {
|
||||
this._dispatchEvent(EventType.Error, {
|
||||
errCode: responseData.ret,
|
||||
errMsg: responseData.msg
|
||||
})
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
this.$emit(EventType.Error, {
|
||||
errCode: '',
|
||||
errMsg: err.errMsg
|
||||
})
|
||||
},
|
||||
complete: () => {
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
_isMobile () {
|
||||
return /android|iphone/i.test(navigator.userAgent.toLowerCase())
|
||||
},
|
||||
|
||||
_onmpload (e) {
|
||||
this.loading = false
|
||||
this._dispatchEvent(EventType.Load, {})
|
||||
},
|
||||
|
||||
_onmpclose (e) {
|
||||
this._dispatchEvent(EventType.Close, e.detail)
|
||||
},
|
||||
|
||||
_onmperror (e) {
|
||||
this.loading = false
|
||||
this.errorMessage = JSON.stringify(e.detail)
|
||||
this._dispatchEvent(EventType.Error, e.detail)
|
||||
},
|
||||
|
||||
_dispatchEvent (type, data) {
|
||||
this.$emit(type, {
|
||||
detail: data
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user