Browse Source

ocr 和 消息通知

devlop
邓雄飞 4 years ago
parent
commit
99faebd297
11 changed files with 688 additions and 34 deletions
  1. 40
      App.vue
  2. 20
      apis/commonApi.js
  3. 12
      apis/enterpriseInfoApi.js
  4. 8
      pages.json
  5. 66
      pages/add-user/index.vue
  6. 522
      pages/enterprise-info-edit/index.vue
  7. 31
      pages/enterprise-info/index.vue
  8. 2
      pages/mine/index.vue
  9. 1
      unpackage/debug/.roid.ins
  10. BIN
      unpackage/debug/android_debug.apk
  11. 20
      utils/handlePushMsg.js

40
App.vue

@ -1,6 +1,8 @@
<script> <script>
import { go2 } from '@/utils/hook.js' import { go2 } from '@/utils/hook.js'
import { isObject } from '@/utils/is.js'
import store from '@/store/index.js' import store from '@/store/index.js'
import handlePushMsg from '@/utils/handlePushMsg.js'
export default { export default {
onLaunch: function () { onLaunch: function () {
const token = store.state.qnToken const token = store.state.qnToken
@ -11,13 +13,14 @@ export default {
if (flag && token) { if (flag && token) {
go2('client') go2('client')
} }
// #ifdef APP-PLUS
let client = uni.getSystemInfoSync().platform
setTimeout(() => { setTimeout(() => {
plus.push.addEventListener( plus.push.addEventListener(
'click', 'click',
function (msg) { function (msg) {
plus.ui.alert('click:' + JSON.stringify(msg))
plus.ui.alert(msg.payload)
// plus.ui.alert(JSON.stringify(msg));
handlePushMsg(msg)
}, },
false false
) )
@ -25,19 +28,34 @@ export default {
plus.push.addEventListener( plus.push.addEventListener(
'receive', 'receive',
function (msg) { function (msg) {
// plus.ui.alert(2);
// plus.ui.alert('receive:' + JSON.stringify(msg))
// console.log('receive:' + JSON.stringify(msg))
uni.showToast({
title: JSON.stringify(msg),
icon: 'none'
})
if (!isObject(msg.payload)) {
msg.payload = JSON.parse(msg.payload)
}
if (client === 'ios') {
if (msg.aps == null && msg.type == 'receive') {
let content = msg.payload.content
let title = msg.payload.title
let payload = JSON.stringify(msg.payload)
plus.push.createMessage(content, payload, {
title: title
})
}
}
if (client === 'android') {
let title = msg.payload.title
let content = msg.payload.content
plus.push.createMessage(content, msg.payload, { title: title })
}
}, },
false false
) )
}, 1000) }, 1000)
// #endif
},
onShow: function () {
//
plus.runtime.setBadgeNumber(0)
}, },
onShow: function () {},
onHide: function () {} onHide: function () {}
} }
</script> </script>

20
apis/commonApi.js

@ -128,3 +128,23 @@ export function pushCustomerBind(cid, platformType = 'android', appId = XAPPID)
data: { cid, appId, platformType } data: { cid, appId, platformType }
}) })
} }
/**
* 营业执照OCR识别 photoUrl
*/
export function getLicenseOcr(data = {}) {
return http.post({
url: '/base-paper-trading/ocr/business-license',
data: data
})
}
/**
* 身份证正面OCR识别 image
*/
export function getFrontIdCardOcr(data = {}) {
return http.post({
url: '/base-paper-trading/ocr/id-card/face',
data: data
})
}

12
apis/enterpriseInfoApi.js

@ -7,3 +7,15 @@ export function completeInfo(data) {
data data
}) })
} }
/**
* 根据id查询企业详细信息
* @param {*} data
* @returns
*/
export function getCompanyInfoById(data) {
return http.get({
url: '/yyt-uec/get/enterprise-detail',
data
})
}

8
pages.json

@ -74,6 +74,14 @@
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{
"path": "pages/enterprise-info-edit/index",
"style": {
"navigationBarTitleText": "修改企业信息",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{ {
"path": "pages/toggle-supplier/index", "path": "pages/toggle-supplier/index",
"style": { "style": {

66
pages/add-user/index.vue

@ -276,29 +276,27 @@
<script> <script>
import { back, uploadImage } from '@/utils/hook.js' import { back, uploadImage } from '@/utils/hook.js'
import { getArea } from '@/apis/commonApi.js'
import { getArea, getLicenseOcr, getFrontIdCardOcr } from '@/apis/commonApi.js'
import { getCompanyList, getCompanyInfoById, addCustomer, getCompanyLocationList } from '@/apis/addUserApi.js' import { getCompanyList, getCompanyInfoById, addCustomer, getCompanyLocationList } from '@/apis/addUserApi.js'
import qnEasyinput from '@/components/qn-easyinput/qn-easyinput.vue' import qnEasyinput from '@/components/qn-easyinput/qn-easyinput.vue'
import qnDataPicker from '@/components/qn-data-picker/qn-data-picker.vue' import qnDataPicker from '@/components/qn-data-picker/qn-data-picker.vue'
import qnDatetimePicker from '@/components/qn-datetime-picker/qn-datetime-picker.vue' import qnDatetimePicker from '@/components/qn-datetime-picker/qn-datetime-picker.vue'
import qnFooter from '@/components/qn-footer/qn-footer.vue' import qnFooter from '@/components/qn-footer/qn-footer.vue'
const validateFields = [ const validateFields = [
'name',
'uniformSocialCreditCode',
'legalPersonName',
'locProvinceId',
'locCityId',
'locDistrictId',
'locProvinceName',
'locCityName',
'locDistrictName',
'locDetail',
'legalPersonIdCardNo',
'legalPersonIdCardFrontImg',
'legalPersonIdCardBackImg',
'businessLicenseImg',
'registeredCapital',
'foundDate'
{ field: 'name', label: '企业名称' },
{ field: 'uniformSocialCreditCode', label: '信用代码' },
{ field: 'legalPersonName', label: '法人姓名' },
{ field: 'locProvinceId', label: '所在省' },
{ field: 'locCityId', label: '所在市' },
{ field: 'locDistrictId', label: '所在区' },
{ field: 'locDetail', label: '企业详细地址' },
{ field: 'legalPersonIdCardNo', label: '法人身份证号' },
{ field: 'legalPersonMobile', label: '法人手机号' },
{ field: 'legalPersonIdCardFrontImg', label: '法人正面照片' },
{ field: 'legalPersonIdCardBackImg', label: '法人反面照片' },
{ field: 'businessLicenseImg', label: '营业执照' },
{ field: 'registeredCapital', label: '注册资本' },
{ field: 'foundDate', label: '成立日期' }
] ]
export default { export default {
components: { qnEasyinput, qnDataPicker, qnDatetimePicker, qnFooter }, components: { qnEasyinput, qnDataPicker, qnDatetimePicker, qnFooter },
@ -367,7 +365,7 @@ export default {
return return
} }
getCompanyLocationList({ enterpriseName: this.form.name }).then((res) => { getCompanyLocationList({ enterpriseName: this.form.name }).then((res) => {
if (res) {
if (res && res.length > 0) {
this.locationList = res this.locationList = res
this.$refs.locationPopup.open('bottom') this.$refs.locationPopup.open('bottom')
} else { } else {
@ -447,6 +445,13 @@ export default {
.then((urls) => { .then((urls) => {
if (urls) { if (urls) {
this.form[type] = urls[0] this.form[type] = urls[0]
// OCR
if (type == 'businessLicenseImg') {
this.licenseOcr(urls[0])
}
if (type == 'legalPersonIdCardFrontImg') {
this.idCardFrontOcr(urls[0])
}
} }
}) })
.catch((e) => { .catch((e) => {
@ -456,6 +461,27 @@ export default {
}) })
}) })
}, },
// OCR
licenseOcr(url) {
getLicenseOcr({ photoUrl: url }).then((res) => {
if (res) {
this.form.uniformSocialCreditCode = res.regNum
this.form.name = res.company
this.form.legalPersonName = res.legalPerson
const foundDateArr = res.establishDate.split(/年|月|日/)
this.form.foundDate = foundDateArr[0] + '-' + foundDateArr[1] + '-' + foundDateArr[2]
this.form.registeredCapital = /\d+/.exec(res.capital)[0]
}
})
},
idCardFrontOcr(url) {
getFrontIdCardOcr({ image: url }).then((res) => {
if (res && res.success) {
this.form.legalPersonIdCardNo = res.num
this.form.legalPersonName = res.name
}
})
},
showImage() { showImage() {
uni.previewImage({ uni.previewImage({
urls: [this.form.businessLicenseImg] urls: [this.form.businessLicenseImg]
@ -464,9 +490,9 @@ export default {
addUser() { addUser() {
if (!this.form.id) { if (!this.form.id) {
for (let i = 0; i < validateFields.length; i++) { for (let i = 0; i < validateFields.length; i++) {
if (this.form[validateFields[i]] === null || this.form[validateFields[i]] === '') {
if (this.form[validateFields[i].field] === null || this.form[validateFields[i].field] === '') {
uni.showToast({ uni.showToast({
title: '请完善信息',
title: `${validateFields[i].label}不能为空`,
icon: 'none' icon: 'none'
}) })
return return

522
pages/enterprise-info-edit/index.vue

@ -0,0 +1,522 @@
<template>
<view>
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="完善信息"></uni-nav-bar>
<qn-form-item label="基础信息" type="title"></qn-form-item>
<qn-form-item label="企业名称" required>
<qn-easyinput :maxlength="20" v-model="form.name" :inputBorder="false" text="right" placeholder="请输入企业名称"></qn-easyinput>
</qn-form-item>
<qn-form-item label="企业简称">
<qn-easyinput :maxlength="20" v-model="form.shortName" :inputBorder="false" text="right" placeholder="请输入企业简称"></qn-easyinput>
</qn-form-item>
<qn-form-item label="所在地区" required>
<qn-data-picker
text="right"
:border="false"
class="qn-picker"
placeholder="区域"
popup-title="请选择城市"
:map="{ text: 'name', value: 'id' }"
@change="onAreaChange"
:clear-icon="true"
:localdata="items"
>
<text v-if="form.locDistrictName">
{{ `${form.locProvinceName || ''}/${form.locCityName || ''}/${form.locDistrictName || ''}/${form.locStreetName || ''}` }}
</text>
</qn-data-picker>
</qn-form-item>
<qn-form-item label="详细地址" required>
<qn-easyinput
:maxlength="20"
:styles="{ disableColor: '#fff' }"
v-model="form.locDetail"
:inputBorder="false"
text="right"
placeholder="请输入详细地址"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="工商信息" type="title"></qn-form-item>
<qn-form-item label="信用代码" required>
<qn-easyinput
:maxlength="18"
:styles="{ disableColor: '#fff' }"
v-model="form.uniformSocialCreditCode"
:inputBorder="false"
text="right"
placeholder="请输入企业信用代码"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="法人/实控人" required>
<qn-easyinput
:maxlength="20"
:styles="{ disableColor: '#fff' }"
v-model="form.legalPersonName"
:inputBorder="false"
text="right"
placeholder="请输入法人/实控人"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="法人/实控人手机" required>
<qn-easyinput
:maxlength="11"
type="number"
:styles="{ disableColor: '#fff' }"
v-model="form.legalPersonMobile"
:inputBorder="false"
text="right"
placeholder="请输入法人/实控人手机"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="法人/实控人身份证号" required>
<qn-easyinput
:maxlength="18"
:styles="{ disableColor: '#fff' }"
v-model="form.legalPersonIdCardNo"
:inputBorder="false"
text="right"
placeholder="请输入法人/实控人身份证号"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="身份证照片" size="large" required>
<view class="upload-area">
<image class="idCard" @click="selectedImage('legalPersonIdCardFrontImg')" :src="frontIDCard" />
<image class="idCard" @click="selectedImage('legalPersonIdCardBackImg')" :src="backIDCard" />
</view>
</qn-form-item>
<qn-form-item label="营业执照" required>
<text v-if="!form.businessLicenseImg" @click="selectedImage('businessLicenseImg')" style="font-size: 28rpx; color: #007aff">点击上传</text>
<text v-if="form.businessLicenseImg" @click="selectedImage('businessLicenseImg')" style="font-size: 28rpx; color: #f5222d; margin-right: 16rpx">
重新上传
</text>
<text v-if="form.businessLicenseImg" @click="showImage" style="font-size: 28rpx; color: #007aff">预览</text>
</qn-form-item>
<qn-form-item label="结算账户(公账)" type="title"></qn-form-item>
<qn-form-item label="账户名" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.bankAccountName"
:inputBorder="false"
text="right"
placeholder="请输入账户名"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="银行卡号" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.bankAccount"
:inputBorder="false"
text="right"
placeholder="请输入银行卡号"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="开户行" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.bankName"
:inputBorder="false"
text="right"
placeholder="请输入开户行"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="结算账户(私账)" type="title"></qn-form-item>
<qn-form-item label="账户名" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.cardholderName"
:inputBorder="false"
text="right"
placeholder="请输入账户名"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="银行卡号" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.bankCardNumber"
:inputBorder="false"
text="right"
placeholder="请输入银行卡号"
></qn-easyinput>
</qn-form-item>
<qn-form-item label="开户行" required>
<qn-easyinput
:maxlength="50"
:styles="{ disableColor: '#fff' }"
v-model="form.openingBank"
:inputBorder="false"
text="right"
placeholder="请输入开户行"
></qn-easyinput>
</qn-form-item>
<qn-footer fixed height="120rpx">
<view class="button-area">
<view class="button button__cancel" @click="cancel">
<text class="text">取消</text>
</view>
<view class="button button__submit" @click="saveInfo">
<text class="text" style="color: white">保存信息</text>
</view>
</view>
</qn-footer>
</view>
</template>
<script>
import qnForm from '@/components/qn-form/qn-form.vue'
import qnDataPicker from '@/components/qn-data-picker/qn-data-picker.vue'
import qnEasyinput from '@/components/qn-easyinput/qn-easyinput.vue'
import { back, go2, uploadImage } from '@/utils/hook.js'
import { getArea, getLicenseOcr, getFrontIdCardOcr } from '@/apis/commonApi.js'
import { completeInfo, getCompanyInfoById } from '@/apis/enterpriseInfoApi.js'
const columns = [
{
key: 1,
type: 'title',
label: '基础信息'
},
{
key: 'name',
type: 'item',
label: '企业名称',
required: true
},
{
key: 'shortName',
type: 'item',
label: '企业简称'
},
{
key: 'locDistrictName',
type: 'item',
label: '所在地区',
required: true
},
{
key: 'locDetail',
type: 'item',
label: '详细地址',
required: true
},
{
key: 2,
type: 'title',
label: '工商信息'
},
{
key: 'uniformSocialCreditCode',
type: 'item',
label: '信用代码',
required: true
},
{
key: 'legalPersonName',
type: 'item',
label: '法人/实控人',
required: true
},
{
key: 'legalPersonMobile',
type: 'item',
label: '法人/实控人手机',
required: true
},
{
key: 'legalPersonIdCardNo',
type: 'item',
label: '法人/实控人身份证号',
required: true
},
{
key: 'legalPersonIdCardFrontImg',
type: 'item',
label: '身份证照片',
required: true,
size: 'large'
},
{
key: 'businessLicenseImg',
type: 'item',
label: '营业执照',
required: true
},
{
key: 3,
type: 'title',
label: '结算账户(公账)'
},
{
key: 'bankAccountName',
type: 'item',
label: '账户名',
required: true
},
{
key: 'bankAccount',
type: 'item',
label: '银行卡号',
required: true
},
{
key: 'bankName',
type: 'item',
label: '开户行',
required: true
},
{
key: 4,
type: 'title',
label: '结算账户(私账)'
},
{
key: 'cardholderName',
type: 'item',
label: '账户名',
required: true
},
{
key: 'bankCardNumber',
type: 'item',
label: '银行卡号',
required: true
},
{
key: 'openingBank',
type: 'item',
label: '开户行',
required: true
}
]
export default {
components: {
qnForm,
qnDataPicker,
qnEasyinput
},
data() {
return {
columns: Object.freeze(columns),
form: {
name: '',
shortName: '',
locProvinceId: null,
locCityId: null,
locDistrictId: null,
locStreetId: null,
locProvinceName: null,
locCityName: null,
locDistrictName: null,
locStreetName: null,
locDetail: '',
uniformSocialCreditCode: '',
legalPersonName: '',
legalPersonMobile: '',
legalPersonIdCardNo: '',
legalPersonIdCardFrontImg: '',
legalPersonIdCardBackImg: '',
businessLicenseImg: '',
bankAccountName: '',
bankAccount: '',
bankName: '',
cardholderName: '',
bankCardNumber: ''
},
items: [],
canSubmit: false
}
},
created() {
const enterpriseId = this.$store.state.supplierInfo.id
if (enterpriseId) {
getCompanyInfoById(enterpriseId).then((res) => {
if (res) {
this.form = res
this.form.id = enterpriseId
}
})
}
},
methods: {
back,
jump() {
go2('client')
},
onAreaChange(e) {
if (e.detail.value && e.detail.value.length > 0) {
const [province, city, district, street] = e.detail.value
this.form.locProvinceId = province.value
this.form.locProvinceName = province.text
this.form.locCityId = city.value
this.form.locCityName = city.text
this.form.locDistrictId = district.value
this.form.locDistrictName = district.text
this.form.locStreetId = street.value
this.form.locStreetName = street.text
} else {
this.form.locProvinceId = null
this.form.locProvinceName = null
this.form.locCityId = null
this.form.locCityName = null
this.form.locDistrictId = null
this.form.locDistrictName = null
this.form.locStreetId = null
this.form.locStreetName = null
}
},
showImage() {
uni.previewImage({
urls: [this.form.businessLicenseImg]
})
},
selectedImage(type) {
uploadImage()
.then((urls) => {
if (urls) {
this.form[type] = urls[0]
// OCR
if (type == 'businessLicenseImg') {
this.licenseOcr(urls[0])
}
//
if (type == 'legalPersonIdCardFrontImg') {
this.idCardFrontOcr(urls[0])
}
}
})
.catch((e) => {
uni.showToast({
title: '上传失败',
icon: 'fail'
})
})
},
// OCR
licenseOcr(url) {
getLicenseOcr({ photoUrl: url }).then((res) => {
if (res) {
this.form.uniformSocialCreditCode = res.regNum
this.form.name = res.company
this.form.legalPersonName = res.legalPerson
this.form.locDetail = res.address
}
})
},
// OCR
idCardFrontOcr(url) {
getFrontIdCardOcr({ image: url }).then((res) => {
if (res && res.success) {
this.form.legalPersonIdCardNo = res.num
this.form.legalPersonName = res.name
}
})
},
cancel() {
back()
},
saveInfo() {
//
for (let i = 0; i < columns.length; i++) {
const item = columns[i]
if (item.required && !this.form[item.key]) {
uni.showToast({
title: `${item.label}不能为空`,
icon: 'none'
})
return
}
}
//
if (!this.form.legalPersonIdCardBackImg) {
uni.showToast({
title: `身份证反面不能为空`,
icon: 'none'
})
}
completeInfo(this.form).then((res) => {
if (res) {
uni.showToast({
title: '保存成功',
icon: 'success'
})
go2('client', true)
}
})
}
},
mounted() {
getArea().then((res) => {
if (res) {
this.items = res
}
})
},
computed: {
frontIDCard() {
let url = 'https://qncloud.oss-cn-shenzhen.aliyuncs.com/paper_shopkeeper/frontIDCard.png'
if (!this.form.legalPersonIdCardFrontImg) {
return url
}
return this.form.legalPersonIdCardFrontImg
},
backIDCard() {
let url = 'https://qncloud.oss-cn-shenzhen.aliyuncs.com/paper_shopkeeper/backDCard.png'
if (!this.form.legalPersonIdCardBackImg) {
return url
}
return this.form.legalPersonIdCardBackImg
}
}
}
</script>
<style lang="scss" scoped>
.upload-area {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-top: 10rpx;
margin-bottom: 24rpx;
.idCard {
width: 324rpx;
height: 280rpx;
flex-grow: 0;
flex-shrink: 0;
}
}
.button-area {
width: 750rpx;
padding: 0 32rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.button {
flex-grow: 0;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
.text {
font-size: 30rpx;
font-weight: 500;
text-align: center;
}
}
.button__cancel {
width: 270rpx;
height: 88rpx;
border: 2rpx solid #979797;
}
.button__submit {
width: 400rpx;
height: 88rpx;
background: #007aff;
}
}
</style>

31
pages/enterprise-info/index.vue

@ -172,7 +172,7 @@ import qnForm from '@/components/qn-form/qn-form.vue'
import qnDataPicker from '@/components/qn-data-picker/qn-data-picker.vue' import qnDataPicker from '@/components/qn-data-picker/qn-data-picker.vue'
import qnEasyinput from '@/components/qn-easyinput/qn-easyinput.vue' import qnEasyinput from '@/components/qn-easyinput/qn-easyinput.vue'
import { back, go2, uploadImage } from '@/utils/hook.js' import { back, go2, uploadImage } from '@/utils/hook.js'
import { getArea } from '@/apis/commonApi.js'
import { getArea, getLicenseOcr, getFrontIdCardOcr } from '@/apis/commonApi.js'
import { completeInfo } from '@/apis/enterpriseInfoApi.js' import { completeInfo } from '@/apis/enterpriseInfoApi.js'
const columns = [ const columns = [
@ -369,7 +369,14 @@ export default {
.then((urls) => { .then((urls) => {
if (urls) { if (urls) {
this.form[type] = urls[0] this.form[type] = urls[0]
console.log('urls', urls)
// OCR
if (type == 'businessLicenseImg') {
this.licenseOcr(urls[0])
}
//
if (type == 'legalPersonIdCardFrontImg') {
this.idCardFrontOcr(urls[0])
}
} }
}) })
.catch((e) => { .catch((e) => {
@ -379,6 +386,26 @@ export default {
}) })
}) })
}, },
// OCR
licenseOcr(url) {
getLicenseOcr({ photoUrl: url }).then((res) => {
if (res) {
this.form.uniformSocialCreditCode = res.regNum
this.form.name = res.company
this.form.legalPersonName = res.legalPerson
this.form.locDetail = res.address
}
})
},
// OCR
idCardFrontOcr(url) {
getFrontIdCardOcr({ image: url }).then((res) => {
if (res && res.success) {
this.form.legalPersonIdCardNo = res.num
this.form.legalPersonName = res.name
}
})
},
cancel() { cancel() {
// //
if (this.operation === 'add') { if (this.operation === 'add') {

2
pages/mine/index.vue

@ -23,7 +23,7 @@
<view style="margin-top: 10rpx"> <view style="margin-top: 10rpx">
<text <text
style="font-size: 26rpx; color: #fff; font-weight: 400; word-break: break-all" style="font-size: 26rpx; color: #fff; font-weight: 400; word-break: break-all"
@click="loginGo2('enterprise-info', { operation: 'edit' })"
@click="loginGo2(hasCompany ? 'enterprise-info-edit' : 'enterprise-info')"
> >
{{ hasCompany ? userInfo.supplierName : '点击完善企业信息' }} {{ hasCompany ? userInfo.supplierName : '点击完善企业信息' }}
</text> </text>

1
unpackage/debug/.roid.ins

@ -0,0 +1 @@
installed

BIN
unpackage/debug/android_debug.apk

20
utils/handlePushMsg.js

@ -0,0 +1,20 @@
/**
* 统一处理push消息
* @param {Object} msg 消息对象
* @value {string} msg.title 消息标题
* @value {string} msg.content 消息内容
* @value {object} msg.payload 消息参数
*/
export default function handlePushMsg(msg) {
uni.showModal({
title: '测试',
content: JSON.stringify(msg),
success: function (res) {
if (res.confirm) {
console.log('用户点击确定')
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
Loading…
Cancel
Save