1.对接桌码

2.对接消息通知
3.对接扫码分配二维码
huipay-app-dev
杨杰 1 year ago
parent 704f9ec888
commit 0b7da8dfcf
  1. 3
      App.vue
  2. 21
      Utils/Api.js
  3. 166
      components/downloadUp.vue
  4. 170
      manifest.json
  5. 16
      pages/index/bindScan/bindScan.vue
  6. 18
      pages/index/merchant-details/merchant-details.vue
  7. 24
      pages/index/salesOrderList/salesOrderList.vue
  8. 18
      pages/index/scanCodeAllocation/scanCodeAllocation.vue
  9. 6
      pages/tabBar/home/home.vue

@ -60,8 +60,7 @@
const res = uni.getSystemInfoSync();
uni.setStorageSync('platform', res.platform);
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
uni.setStorageSync('version', inf.version); //
uni.setStorageSync('versionCode', inf.versionCode); //
uni.setStorageSync('version', inf.versionCode);
});
let uuid = plus.device.uuid;

@ -177,18 +177,6 @@ export const deviceRefund = params => {
// //门店添加设备
// export const bindStoreDevice = params => {
// return POST('POST', `${base}/device/bindStoreDevice`, params).then(res => res.data);
// }
// //业务员查询设备列表
// export const getSalesmanDeviceList = params => {
// return POST('GET', `${base}/device/getSalesmanDeviceList`, params).then(res => res.data);
// }
// //门店查询设备列表
// export const getStoreDeviceList = params => {
// return POST('GET', `${base}/device/getStoreDeviceList`, params).then(res => res.data);
// }
//业务员查询统计
export const moveHomeCount = params => {
@ -282,7 +270,16 @@ export const uniPush = params => {
export const connectStoreCid = params => {
return POST('POST', `${base}/storeCid/connectStoreCid`, params).then(res => res.data);
}
//解除绑定
export const unbindStore = params => {
return POST('POST', `${base}/payQrCode/unbindStore`, params).then(res => res.data);
}
//结束播报语音
export const voiceSucceed = params => {
return POST('GET', `${base}/storeCid/voiceSucceed`, params).then(res => res.data);
}
//查询版本号?termType=APP
export const queryVersion = params => {
return POST('GET', `${base}/sysVersion/queryVersion`, params).then(res => res.data);
}

@ -2,21 +2,24 @@
<view class="content" v-if="bannerShow">
<!-- 弹出层 -->
<view class="uni-banner">
<image src="/static/img/startUpHeader01.png" class="startUpHeaderLogo" />
<!-- <image src="../static/logo.png" class="startUpHeaderLogo" /> -->
<view class="banner_box">
<view class="startUpHeaderBox h6">发现新版本</view>
<view class="conter">{{ msg }}</view>
<view class="banner_foot"><button @click="goUpdate(updateApkObj)" class="banner_foot_button">前往升级</button></view>
<view class="banner_foot"><button @click="goUpdate()" class="banner_foot_button">前往升级</button></view>
</view>
</view>
<view class="uni-mask"></view>
</view>
</template>
<script>
import { comparisonVersionHandler } from '@/common/js/tools';
import { getUpgrade } from '@/common/js/apis';
export default {
// import {
// getUpgrade
// } from '@/common/js/apis';
import {
queryVersion
} from '../Utils/Api.js'
export default {
data() {
return {
bannerShow: false, // app
@ -28,42 +31,36 @@ export default {
created() {
const appUpdate = uni.getStorageSync('platform');
// #ifdef APP-PLUS
this.type = appUpdate == 'android' ? 2 : 1;
this.checkUpdate();
// #endif
},
methods: {
checkUpdate() {
const self = this,
localAppVersonName = uni.getStorageSync('version'),
localAppVerson = uni.getStorageSync('versionCode');
let that = this;
let localAppVersonName = uni.getStorageSync('version');
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
getUpgrade({
appType: self.type
}).then(res => {
const { data } = res.data;
if (res.data.code !== '200') return;
//
if (data.apkVersion && comparisonVersionHandler(localAppVersonName, data.apkVersion.appVersonName)) {
uni.hideTabBar()
self.updateApkObj = data.apkVersion;
self.msg = data.apkVersion.versonLog;
self.bannerShow = true;
return;
// app
} else if (data.wgtVersion && comparisonVersionHandler(localAppVerson, data.wgtVersion.appVerson)) {
self.downloadWgt(data.wgtVersion.downloadUrl);
let datas = {
termType: "app"
}
queryVersion(datas).then(res => {
if (res.return_code == '000000') {
if (res.return_data.versionType == 1 && that.comparisonVersionHandler(localAppVersonName,
res.return_data.version)) {
that.downloadWgt(res.return_data.fileUrl);
return;
} else {
}
if (res.return_data.versionType == 2 && that.comparisonVersionHandler(localAppVersonName,
res.return_data.version)) {
that.updateApkObj = res.return_data;
that.bannerShow = true; //
return;
}
});
});
}
})
// #endif
},
downloadWgt(updateWgtUrl) {
//
// wgt
@ -72,8 +69,7 @@ export default {
plus.nativeUI.showWaiting('正在更新...');
plus.downloader
.createDownload(
updateWgtUrl,
{
updateWgtUrl, {
filename: '_doc/update/'
},
function(d, status) {
@ -89,8 +85,9 @@ export default {
// wgt
plus.nativeUI.showWaiting('安装文件...');
plus.runtime.install(
path,
{ force: true },
path, {
force: true
},
function() {
plus.nativeUI.closeWaiting();
plus.nativeUI.alert('应用资源更新完成!', function() {
@ -102,14 +99,17 @@ export default {
}
);
},
goUpdate(updateApkObj) {
goUpdate() {
if (this.type == 2) {
//
var dtask = plus.downloader.createDownload(updateApkObj.downloadUrl, {}, function(d, status) {
var dtask = plus.downloader.createDownload(
this.updateApkObj.fileUrl, {},
function(d, status) {
this.bannerShow = false;
//
if (status == 200) {
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(error) {
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(
error) {
uni.showToast({
title: '安装失败',
mask: false,
@ -138,7 +138,8 @@ export default {
showLoading.setTitle('已连接到服务器');
break;
case 3:
prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100);
prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) *
100);
showLoading.setTitle(' 正在下载' + prg + '% ');
break;
case 4:
@ -158,26 +159,55 @@ export default {
} else if (this.type == 1) { // iosapp store
plus.runtime.openURL(updateApkObj.downloadUrl);
}
},
//
comparisonVersionHandler(reqV, curV) {
/*
curV string :当前最新
reqV string :之前
返回 true 表示需要升级
*/
if (curV && reqV) {
curV = String(curV);
reqV = String(reqV);
//
let arr1 = curV.split('.'), //
arr2 = reqV.split('.');
let minLength = Math.min(arr1.length, arr2.length),
position = 0,
diff = 0;
//
while (position < minLength && ((diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0)) {
position++;
}
diff = (diff != 0) ? diff : (arr1.length - arr2.length);
//curVreqVtrue
return diff > 0;
} else {
//
return false;
}
}
};
}
};
</script>
<style lang="scss" scoped>
.content,
#img {
.content,
#img {
width: 100%;
height: 100%;
}
}
.content .con {
.content .con {
font-size: 0;
display: flex;
align-items: center;
}
}
#info {
#info {
position: absolute;
top: 0;
left: 0;
@ -189,24 +219,24 @@ export default {
text-align: center;
color: #fff;
font-size: 24rpx;
}
}
.wrapper {
.wrapper {
width: 36rpx;
height: 72rpx;
position: absolute;
top: 0;
overflow: hidden;
}
}
.right {
.right {
right: 0;
}
}
.left {
.left {
left: 0;
}
}
@ -214,8 +244,8 @@ export default {
/* 弹出层形式的广告 */
.uni-banner {
/* 弹出层形式的广告 */
.uni-banner {
display: flex;
align-items: center;
flex-direction: column;
@ -240,33 +270,33 @@ export default {
.startUpHeaderBox {
width: 100%;
height: 96rpx;
background-image: url('/static/img/startUpHeader02.png');
background-image: url('/static/logo.png');
background-position: left top;
background-repeat: no-repeat;
background-size: cover;
}
}
}
.banner_box .h6 {
.banner_box .h6 {
text-align: center;
line-height: 96rpx;
font-size: 36rpx;
color: #fff;
font-weight: bold;
}
}
.banner_box .conter {
.banner_box .conter {
font-size: 28rpx;
color: #333;
margin: 48rpx;
}
}
.banner_foot {
.banner_foot {
width: 238rpx;
margin: 48rpx auto;
}
}
.banner_foot_button {
.banner_foot_button {
background-image: linear-gradient(to right, #3aaf7a, #41bf7f);
line-height: 72rpx;
height: 72rpx;
@ -276,13 +306,13 @@ export default {
border-radius: 40rpx;
border: none;
box-shadow: 0 8rpx 20rpx 0 rgba(46, 189, 88, 0.36);
}
}
.banner_foot_button:active {
.banner_foot_button:active {
background-image: linear-gradient(to right, #41bf7f, #3aaf7a);
}
}
.uni-mask {
.uni-mask {
background: rgba(0, 0, 0, 0.6);
position: fixed;
width: 100%;
@ -290,5 +320,5 @@ export default {
left: 0;
top: 0;
z-index: 2;
}
}
</style>

@ -1,30 +1,30 @@
{
"name" : "惠支付",
"appid" : "__UNI__190622D",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
"name": "惠支付",
"appid": "__UNI__190622D",
"description": "",
"versionName": "1.0.0",
"versionCode": 101,
"transformPx": false,
/* 5+App */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
"app-plus": {
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
/* */
"modules" : {
"Push" : {}
"modules": {
"Push": {}
},
/* */
"distribute" : {
"distribute": {
/* android */
"android" : {
"permissions" : [
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
@ -43,91 +43,91 @@
]
},
/* ios */
"ios" : {
"dSYMs" : false
"ios": {
"dSYMs": false
},
/* SDK */
"sdkConfigs" : {
"push" : {
"unipush" : {
"offline" : false,
"hms" : {}
"sdkConfigs": {
"push": {
"unipush": {
"offline": false,
"hms": {}
}
},
"ad" : {}
},
"icons" : {
"android" : {
"hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png",
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png"
},
"iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png"
"ad": {}
},
"icons": {
"android": {
"hdpi": "unpackage/res/icons/72x72.png",
"xhdpi": "unpackage/res/icons/96x96.png",
"xxhdpi": "unpackage/res/icons/144x144.png",
"xxxhdpi": "unpackage/res/icons/192x192.png"
},
"ios": {
"appstore": "unpackage/res/icons/1024x1024.png",
"ipad": {
"app": "unpackage/res/icons/76x76.png",
"app@2x": "unpackage/res/icons/152x152.png",
"notification": "unpackage/res/icons/20x20.png",
"notification@2x": "unpackage/res/icons/40x40.png",
"proapp@2x": "unpackage/res/icons/167x167.png",
"settings": "unpackage/res/icons/29x29.png",
"settings@2x": "unpackage/res/icons/58x58.png",
"spotlight": "unpackage/res/icons/40x40.png",
"spotlight@2x": "unpackage/res/icons/80x80.png"
},
"iphone": {
"app@2x": "unpackage/res/icons/120x120.png",
"app@3x": "unpackage/res/icons/180x180.png",
"notification@2x": "unpackage/res/icons/40x40.png",
"notification@3x": "unpackage/res/icons/60x60.png",
"settings@2x": "unpackage/res/icons/58x58.png",
"settings@3x": "unpackage/res/icons/87x87.png",
"spotlight@2x": "unpackage/res/icons/80x80.png",
"spotlight@3x": "unpackage/res/icons/120x120.png"
}
}
}
}
},
/* */
"quickapp" : {},
"quickapp": {},
/* */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
"mp-weixin": {
"appid": "",
"setting": {
"urlCheck": false
},
"usingComponents" : true
"usingComponents": true
},
"mp-alipay" : {
"usingComponents" : true
"mp-alipay": {
"usingComponents": true
},
"mp-baidu" : {
"usingComponents" : true
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao" : {
"usingComponents" : true
"mp-toutiao": {
"usingComponents": true
},
"uniStatistics" : {
"enable" : false
"uniStatistics": {
"enable": false
},
"vueVersion" : "2",
"h5" : {
"router" : {
"base" : "/cweb",
"mode" : "hash"
"vueVersion": "2",
"h5": {
"router": {
"base": "/cweb",
"mode": "hash"
},
"title" : "惠支付",
"devServer" : {
"https" : false
"title": "惠支付",
"devServer": {
"https": false
},
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "7UMBZ-HFEHX-HSD4Q-Z3QY6-OQKN7-2QBDB"
}
"sdkConfigs": {
"maps": {
"qqmap": {
"key": "7UMBZ-HFEHX-HSD4Q-Z3QY6-OQKN7-2QBDB"
}
}
},
}
}

@ -17,16 +17,16 @@
<view class="mart10 fcor666 padleft15 font14" v-else>创建: {{item.createTime | timeFormat('yyyy-mm-dd')}}
{{item.createTime | timeFormat('hh:mm')}}
</view>
<button class="btns" @click="bindStore(item.id)" v-if="typeId == 1">绑定二维码</button>
<button class="btns" @click="unbindStore(item.id)">解除绑定</button>
</view>
</view>
</template>
<script>
import {
bindStore,
getSalesmanQrCodeList,
getStoreQrCodeList
getStoreQrCodeList,
unbindStore
} from '../../../Utils/Api.js';
let app = getApp();
export default {
@ -135,12 +135,12 @@
}
});
},
//
bindStore(item) {
//
unbindStore(item) {
let that = this;
uni.showModal({
title: '绑二维码',
content: '是否绑当前二维码。',
title: '绑二维码',
content: '是否绑当前二维码。',
success: (res) => {
if (res.confirm) {
uni.showLoading({
@ -150,7 +150,7 @@
"qrCodeId": item,
"storeId": that.storeId
}
bindStore(params).then(res => {
unbindStore(params).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
uni.showToast({

@ -90,7 +90,7 @@
<view class="margle10 font14 fcor999 width90p">{{item.storeRegion.address}}</view>
</view>
<view class="height45 width100">
<button class="btns mart10 margle10" @click.stop="jumpBindScan(item.id,1)">绑定二维码</button>
<button class="btns mart10 margle10" @click.stop="jumpBindScan(item,1)">绑定二维码</button>
<button class="btns mart10 margle10" @click.stop="jumpBindScan(item.id,2)">二维码列表</button>
<!-- <button class="btns mart10 marRight10" @click.stop="jumpService(item.id,1)">绑定设备</button> -->
<!-- <button class="btns mart10 marRight10" @click.stop="jumpService(item.id,2)">设备列表</button> -->
@ -199,10 +199,26 @@
},
//
jumpBindScan(item, items) {
if (items == 1) {
//
uni.scanCode({
success: function(res) {
let scanCont = res.result.split('=');
let scanNo = scanCont[1];
uni.navigateTo({
url: '/pages/index/scanCodeAllocation/scanCodeAllocation?storename=' +
item.name + '&scanno=' + scanNo +
'&storeId=' + item.id
})
}
});
} else {
uni.navigateTo({
url: '../bindScan/bindScan?storeid=' + item + '&type=' + items
})
}
}
}
}
</script>

@ -29,17 +29,12 @@
<view class="margle10 font13 fcor999">申请数量: 1</view>
</view>
<view class="width90 paddbotm10 alijusstart">
<view class="otstatucs border-r marRight10" @click.stop="scanNo(item)"
v-if="item.status == 2 && item.deviceType == 2">
分配桌码
</view>
<view class="otstatucs border-r marRight10" @click.stop="orderRefund(item.orderNo)"
v-if="item.status == 2 && item.deviceType == 1">
v-if="item.status == 2">
订单退款
</view>
<view class="otstatucs border-r marRight10" @click.stop="replace(item.orderAssignList[0].id)"
v-if="item.status == 3 && item.deviceType == 1">
v-if="item.status == 3">
更换设备
</view>
</view>
@ -134,21 +129,6 @@
}
})
},
//
scanNo(item) {
//
uni.scanCode({
success: function(res) {
let scanCont = res.result.split('=');
let scanNo = scanCont[1];
uni.navigateTo({
url: '/pages/index/scanCodeAllocation/scanCodeAllocation?storename=' +
item.storeName + '&scanno=' + scanNo + '&orderno=' + item.orderNo
})
}
});
},
//
jumpService(item) {
if (this.goodtyid == 2) {

@ -11,30 +11,30 @@
<view class="font14 fcor333 text2 width75 fotrt">{{scanNo}}</view>
</view>
<view class="btn" @tap="assignOrder">提交绑定</view>
<view class="btn" @tap="bindStore">提交绑定</view>
</view>
</template>
<script>
import {
assignOrder
bindStore
} from '../../../Utils/Api.js';
export default {
data() {
return {
scanNo: '', //,
storeName: '', //
orderNo: '' //
storeId: '' //
}
},
onLoad(options) {
this.scanNo = options.scanno;
this.storeName = options.storename;
this.orderNo = options.orderno;
this.storeId = options.storeId;
},
methods: {
//
assignOrder() {
bindStore() {
uni.showModal({
title: '温馨提示',
content: '是否分配当前设备',
@ -43,13 +43,11 @@
uni.showLoading({
title: '加载中'
})
let serviceList = [];
serviceList.push(this.scanNo);
let datas = {
"orderNo": this.orderNo,
"deviceNoList": serviceList
"serialNumber": this.scanNo,
"storeId": this.storeId
}
assignOrder(datas).then(res => {
bindStore(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
uni.showToast({

@ -64,6 +64,8 @@
</view>
</view>
<view class="width100 height40p"></view>
<downloadup></downloadup>
</view>
</template>
@ -76,8 +78,12 @@
connectStoreCid,
voiceSucceed
} from '../../../Utils/Api.js'
import downloadup from '../../../components/downloadUp.vue'
let app = getApp();
export default {
components: {
downloadup
},
data() {
return {
funcList: [],

Loading…
Cancel
Save