pda首页身份证核销功能

main
han 7 months ago
parent df5fa91d17
commit 8dfda58152
  1. 4
      manifest.json
  2. 8
      pages.json
  3. 24
      pages/checkResult/checkResult.vue
  4. 773
      pages/index.vue
  5. 10
      pages/login.vue
  6. 8
      pages/ticketCheckingRecord.vue
  7. 106
      pages/ticketDataStatistics.vue
  8. 29
      pages/ticketDetail/ReservDetail.vue
  9. 29
      pages/ticketDetail/ticketDetail.vue
  10. 10
      pages/ticketReservingRecord.vue
  11. 2
      permission.js
  12. 1
      static/images/index/icon_appointment-record.svg
  13. 1
      static/images/index/icon_data-statistics.svg
  14. 1
      static/images/index/icon_record.svg
  15. 10
      utils/config.js

@ -2,8 +2,8 @@
"name" : "检票系统",
"appid" : "__UNI__C9580A3",
"description" : "检票系统",
"versionName" : "1.0.2",
"versionCode" : 102,
"versionName" : "1.0.3",
"versionCode" : 103,
"transformPx" : false,
"app-plus" : {
// "renderer": "native", //App

@ -118,6 +118,14 @@
"navigationStyle": "custom"
}
},
{
"path" : "pages/ticketDataStatistics",
"style" :
{
"navigationBarTitleText" : "数据统计",
"navigationStyle": "custom"
}
},
{
"path" : "pages/shoppingCar/shoppingCar",
"style" :

@ -37,9 +37,9 @@
<view class="m-err-tips">票据无效</view>
<view class="m-err-tip">{{errmsg}}</view>
</view>
<button class="m-btn-big" @click="back()">检票详情</button>
<button v-if="!isQuick" class="m-btn-big deep-blue" @click="back()">继续检票</button>
<button v-if="isQuick" class="m-btn-big" @click="checkTicket()">继续检票</button>
<button v-if="checkInfo != null" class="m-btn-border" @click="gotoDetail">检票详情</button>
<button v-if="isQuick" class="m-btn-big deep-blue" @click="back()">继续检票</button>
<button v-if="!isQuick" class="m-btn-big" @click="checkTicket()">继续检票</button>
</view>
</template>
@ -82,7 +82,6 @@
ticketChecker: uni.getStorageSync('sname')
};
}
console.log("obj",obj)
this.$Request.get(this.$config.requestForWriteOff, obj).then(res => {
uni.hideLoading();
this.load = false;
@ -100,6 +99,11 @@ console.log("obj",obj)
},
methods: {
gotoDetail(){
uni.reLaunch({
url: '/pages/ticketDetail/ticketDetail?checkId=' + this.checkInfo.id+'&page=check'
});
},
qucikCheckTicket() {
uni.reLaunch({
url: '/pages/index'
@ -340,7 +344,17 @@ console.log("obj",obj)
transform: translateX(-50%);
bottom: 50upx;
}
.m-btn-border {
border:1upx solid #5097fa ;
border-radius: 16upx;
color: #5097fa;
position: fixed;
width: 90%;
left: 50%;
transform: translateX(-50%);
bottom: 160upx;
}
.deep-blue {
background: linear-gradient(90deg, #4582dd 0%, #1a63ca 100%);
}

@ -23,7 +23,8 @@
</view>
</view>
<view class="uni-form-item uni-columns" style="opacity: 0.9">
<uni-easyinput ref="inputRef" :inputBorder="false" readonly v-model="quickScanData" class="uni-input" placeholder="请扫描或输入预约码" />
<uni-easyinput :inputBorder="false" readonly v-model="quickScanData" class="uni-input"
placeholder="请扫描或输入预约码" @focus="iconClick" @confirm="qucikScan"/>
<image @click="qucikScan" src="@/static/images/index/icon_quick-check.svg"></image>
</view>
<view class="btn-group">
@ -32,13 +33,17 @@
<view class="m-btn-text">扫码检票</view>
</view>
<view class="m-btn two" @click="btnClick('检票记录')">
<image class="btn-img" src="/static/images/index/icon_record.png" alt="" />
<image class="btn-img" src="/static/images/index/icon_record.svg" alt="" />
<view class="m-btn-text">检票记录</view>
</view>
<view class="m-btn three" @click="btnClick('预约记录')">
<image class="btn-img" src="/static/images/index/icon_appointment-record.png" alt="" />
<image class="btn-img" src="/static/images/index/icon_appointment-record.svg" alt="" />
<view class="m-btn-text">预约记录</view>
</view>
<view class="m-btn four" @click="btnClick('数据统计')">
<image class="btn-img" src="/static/images/index/icon_data-statistics.svg" alt="" />
<view class="m-btn-text">数据统计</view>
</view>
</view>
<!-- #ifdef APP-PLUS -->
@ -48,388 +53,488 @@
</template>
<script>
// // #ifdef APP-PLUS
// var DCSunmiScanModule = uni.requireNativePlugin('DC-SunmiScan-Module');
// var globalEvent = uni.requireNativePlugin('globalEvent');
// // #endif
import versionUpgrade from '@/components/luo-version-upgrade/luo-version-upgrade.vue';
import profile from '../components/m-user-head/profile.vue';
import { getIndexData } from '@/api/seal/seal.js';
export default {
components: {
profile,
versionUpgrade
},
data() {
return {
menus: null,
checkedNum: 0,
ticketNum: 0,
quickScanData: null,
isAutoFocus: false,
version: '',
downUrl: '',
describe: ''
};
},
watch: {
quickScanData: {
handler(val) {
console.log('自动填充的码', val);
if (val) {
this.qucikScan();
}
}
}
},
computed: {
windowHeight() {
return uni.getSystemInfoSync().windowHeight;
}
},
// onShow
onShow() {
// nextTick setTimeout DOM
this.getIndexData();
this.quickScanData = null;
this.isAutoFocus = true;
setTimeout(() => {
this.isAutoFocus = false;
}, 100); // 100ms
},
onLoad: function () {
// #ifdef APP-PLUS
// this.timer = setInterval(() => {
// uni.hideKeyboard();
// }, 50);
// #endif
//APP
// #ifdef APP-PLUS
const requestData = {
_api_key: '9fee20c506a9fe6e1ac5c1f7c9cecf98',
appKey: 'a3a343bcbd4a74673eb3be77c1828624'
};
uni.request({
url: 'https://api.pgyer.com/apiv2/app/check', //
method: 'POST',
data: requestData,
header: {
'content-type': 'application/x-www-form-urlencoded' //
},
success: (res) => {
console.log(res.data);
this.version = res.data.data.buildVersion;
this.downUrl = res.data.data.downloadURL;
this.describe = res.data.data.buildUpdateDescription;
console.log('object', this.version, this.downUrl);
}
});
// #endif
},
onUnload() {
// // #ifdef APP-PLUS
// globalEvent.removeEventListener('myScanEvent');
// // #endif
},
mounted() {},
methods: {
handleFocus() {
console.log('Input is focused');
// // #ifdef APP-PLUS
// var DCSunmiScanModule = uni.requireNativePlugin('DC-SunmiScan-Module');
// var globalEvent = uni.requireNativePlugin('globalEvent');
// // #endif
// #ifdef APP-PLUS
import * as Reader from '../uni_modules/yzwl-nfc-reader';
// #endif
import versionUpgrade from '@/components/luo-version-upgrade/luo-version-upgrade.vue';
import profile from '../components/m-user-head/profile.vue';
import {
getIndexData
} from '@/api/seal/seal.js';
export default {
components: {
profile,
versionUpgrade
},
//
qucikScan() {
let this_ = this;
if (!this.quickScanData) {
uni.showToast({
icon: 'none',
title: '请先扫描或输入票号',
duration: 2000
});
return;
data() {
return {
menus: null,
checkedNum: 0,
ticketNum: 0,
quickScanData: null,
isAutoFocus: false,
idCardNumber: null,
version: '',
downUrl: '',
describe: ''
};
},
watch: {
quickScanData: {
handler(val) {
console.log(val)
const reg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/
if (val&&val.includes("PDA")||reg.test(val.toString())) {
this.qucikScan();
}
}
}
uni.navigateTo({
url: '/pages/checkResult/checkResult?result=' + this.quickScanData + '&quick=1'
});
},
//
btnClick(val) {
switch (val) {
case '扫码检票':
this.scanCode();
break;
case '检票记录':
this.goCheckList();
break;
case '预约记录':
this.getReservList();
break;
computed: {
windowHeight() {
return uni.getSystemInfoSync().windowHeight;
}
},
//
getIndexData() {
let this_ = this;
this.$Request
.get(this.$config.getPeopleCounting)
.then((res) => {
if (res.data.totalTicketCapacity) {
this.checkedNum = res.data.totalTicketCapacity;
}
if (res.data.totalBookingCapacity) {
this.ticketNum = res.data.totalBookingCapacity;
}
})
.catch((err) => {
console.log(err, '错误信息');
});
// onShow
onShow() {
// nextTick setTimeout DOM
this.getIndexData();
this.quickScanData = null;
this.isAutoFocus = true;
setTimeout(() => {
this.isAutoFocus = false;
}, 100); // 100ms
},
//
goCheckList() {
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.navigateTo({
url: '/pages/ticketCheckingRecord'
onLoad: function() {
// #ifdef APP-PLUS
// this.timer = setInterval(() => {
// uni.hideKeyboard();
// }, 50);
// #endif
//APP
// #ifdef APP-PLUS
const requestData = {
_api_key: '9fee20c506a9fe6e1ac5c1f7c9cecf98',
appKey: 'a3a343bcbd4a74673eb3be77c1828624'
};
uni.request({
url: 'https://api.pgyer.com/apiv2/app/check', //
method: 'POST',
data: requestData,
header: {
'content-type': 'application/x-www-form-urlencoded' //
},
success: (res) => {
this.version = res.data.data.buildVersion;
this.downUrl = res.data.data.downloadURL;
this.describe = res.data.data.buildUpdateDescription;
}
});
// #endif
},
//
getReservList() {
uni.navigateTo({
url: '/pages/ticketReservingRecord'
});
onUnload() {
// // #ifdef APP-PLUS
// globalEvent.removeEventListener('myScanEvent');
// // #endif
},
//
scanCode() {
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.scanCode({
onlyFromCamera: true,
scanType: ['qrCode'],
autoDecodeCharset: true,
hideAlbum: true,
success: function (res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
uni.navigateTo({
url: '/pages/checkResult/checkResult?result=' + res.result + '&quick=0'
mounted() {},
onHide() {
plus.globalEvent.removeEventListener('newintent');
},
onUnload() {
plus.globalEvent.removeEventListener('newintent');
},
methods: {
handleFocus() {
console.log('Input is focused');
},
//
iconClick() {
let thisPage = this;
Reader.initReader({
data: {
appKey: 'E1E9C7DA92C413A58C8C7BE8D0E84F1D',
appSecret: 'MDY4M2ZlYmEyYWQ4NjRiNGMyYjlkNjUwODczMTkwYWE=',
userData: ''
},
success: (res) => {
res.photoBase64Png = 'data:image/png;base64,' + res.photoBase64Png;
res.photoBase64Bmp = 'data:image/png;base64,' + res.photoBase64Bmp;
// thisPage.info = res;
console.log('读卡结果:', res);
thisPage.quickScanData = res.no;
},
progress: (res) => {
thisPage.progress = res;
},
start: (res) => {
// thisPage.info = null;
uni.hideLoading()
uni.showLoading({
title: '开始读取:'
})
// console.log('', res);
},
end: (res) => {
uni.hideLoading()
uni.showToast({
title: '读取完毕',
icon: 'none'
});
console.log('结束读取:', res);
plus.globalEvent.removeEventListener('newintent');
},
fail: (res) => {
uni.hideLoading()
uni.showToast({
title: '读取错误',
icon: 'none'
});
// thisPage.errorMessage = '' + res.msg + ', ' + res.code;
console.log('错误信息:', res);
}
});
plus.globalEvent.addEventListener('newintent', function() {
// NFC
setTimeout(() => {
Reader.onNewIntent();
}, 500);
});
Reader.usbAutoReadConfig(false);
setTimeout(() => {
uni.hideLoading()
plus.globalEvent.removeEventListener('newintent');
}, 10000)
},
//
qucikScan() {
let this_ = this;
if (!this.quickScanData) {
uni.showToast({
icon: 'none',
title: '请先扫描或输入票号',
duration: 2000
});
return;
}
});
let query
if(this.quickScanData.includes("PDA")){
query=this.quickScanData.replace("PDA", "");
}else{
query=this.quickScanData
}
console.log(this.quickScanData.includes("PDA"))
uni.navigateTo({
url: '/pages/checkResult/checkResult?result=' + query + '&quick=1'
});
},
//
btnClick(val) {
console.log(val)
switch (val) {
case '扫码检票':
this.scanCode();
break;
case '检票记录':
this.goCheckList();
break;
case '预约记录':
this.getReservList();
break;
case '数据统计':
this.getDataList();
break;
}
},
//
getIndexData() {
let this_ = this;
this.$Request
.get(this.$config.getPeopleCounting)
.then((res) => {
if (res.data.totalTicketCapacity) {
this.checkedNum = res.data.totalTicketCapacity;
}
if (res.data.totalBookingCapacity) {
this.ticketNum = res.data.totalBookingCapacity;
}
})
.catch((err) => {
console.log(err, '错误信息');
});
},
//
goCheckList() {
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.navigateTo({
url: '/pages/ticketCheckingRecord'
});
},
//
getReservList() {
uni.navigateTo({
url: '/pages/ticketReservingRecord'
});
},
//
getDataList() {
console.log("数据统计")
uni.navigateTo({
url: '/pages/ticketDataStatistics'
});
},
//
scanCode() {
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.scanCode({
onlyFromCamera: true,
scanType: ['qrCode'],
autoDecodeCharset: true,
hideAlbum: true,
success: function(res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
uni.navigateTo({
url: '/pages/checkResult/checkResult?result=' + res.result + '&quick=0'
});
}
});
// // #ifdef APP-PLUS
// var main = plus.android.runtimeMainActivity();
// DCSunmiScanModule.openCameraByScan(main);
// // #endif
// // #ifdef APP-PLUS
// var main = plus.android.runtimeMainActivity();
// DCSunmiScanModule.openCameraByScan(main);
// // #endif
}
}
}
};
};
</script>
<style scoped lang="scss">
.content {
justify-content: center;
background-image: url('/static/images/index/bg.png');
background-repeat: no-repeat;
background-size: cover;
overflow: hidden;
.m-top-bg {
position: absolute;
top: 0;
width: 100%;
z-index: 0;
image {
width: 100%;
}
}
.m-head {
width: 90%;
background-image: url('/static/images/index/top-bg.png');
.content {
justify-content: center;
background-image: url('/static/images/index/bg.png');
background-repeat: no-repeat;
background-size: 100% 100%;
padding-top: 100upx;
position: relative;
left: 50%;
transform: translateX(-50%);
margin-top: 110upx;
display: flex;
background-size: cover;
overflow: hidden;
.m-tips {
.m-top-bg {
position: absolute;
left: 40upx;
top: 130upx;
background: #2277f0;
border-radius: 24upx;
border: 1upx solid #ffffff;
color: #fff;
padding: 5upx 15upx;
}
top: 0;
width: 100%;
z-index: 0;
.m-drived-colum {
width: 2%;
border-left: #fff 2upx dashed;
height: 90upx;
position: relative;
top: 140upx;
image {
width: 100%;
}
}
.m-head-content {
width: 49%;
height: 340upx;
.m-head {
width: 90%;
background-image: url('/static/images/index/top-bg.png');
background-repeat: no-repeat;
background-size: 100% 100%;
padding-top: 100upx;
position: relative;
left: 50%;
transform: translateX(-50%);
margin-top: 110upx;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 140upx;
.m-nums {
font-family: Source Han Sans SC;
font-weight: bold;
font-size: 60upx;
color: #ffffff;
line-height: 60upx;
font-style: italic;
position: relative;
}
.m-nums::after {
content: '';
width: 150%;
height: 18upx;
background-repeat: no-repeat;
.m-tips {
position: absolute;
bottom: 0;
left: -10upx;
background-size: cover;
z-index: -1;
left: 40upx;
top: 130upx;
background: #2277f0;
border-radius: 24upx;
border: 1upx solid #ffffff;
color: #fff;
padding: 5upx 15upx;
}
.people::after {
background-image: url('/static/images/index/green.png');
.m-drived-colum {
width: 2%;
border-left: #fff 2upx dashed;
height: 90upx;
position: relative;
top: 140upx;
}
.seal::after {
background-image: url('/static/images/index/orange.png');
.m-head-content {
width: 49%;
height: 340upx;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 140upx;
.m-nums {
font-family: Source Han Sans SC;
font-weight: bold;
font-size: 60upx;
color: #ffffff;
line-height: 60upx;
font-style: italic;
position: relative;
}
.m-nums::after {
content: '';
width: 150%;
height: 18upx;
background-repeat: no-repeat;
position: absolute;
bottom: 0;
left: -10upx;
background-size: cover;
z-index: -1;
}
.people::after {
background-image: url('/static/images/index/green.png');
}
.seal::after {
background-image: url('/static/images/index/orange.png');
}
.m-text {
margin-top: 10upx;
display: flex;
align-items: center;
font-family: Source Han Sans SC;
font-weight: 400;
font-size: 28upx;
color: #ffffff;
line-height: 60upx;
text-shadow: 0px 2upx 5upx rgba(34, 119, 240, 0.75);
image {
width: 28upx;
height: 28upx;
margin-right: 10upx;
}
}
}
}
.m-text {
margin-top: 10upx;
.btn-group {
margin: 0 3%;
display: flex;
flex-wrap: wrap;
.m-btn {
width: 45%;
background: rgba(255, 255, 255, 0.3);
box-shadow: 0px 6upx 14upx 0px rgba(0, 0, 0, 0.03);
border-radius: 36upx;
border: 2upx solid #ffffff;
margin: 0 2.5%;
margin-bottom: 25upx;
padding: 40upx 0 40upx 32upx;
display: flex;
align-items: center;
font-family: Source Han Sans SC;
font-weight: 400;
font-size: 28upx;
color: #ffffff;
line-height: 60upx;
text-shadow: 0px 2upx 5upx rgba(34, 119, 240, 0.75);
font-weight: 800;
font-size: 34upx;
color: #1b1b1b;
image {
width: 28upx;
height: 28upx;
margin-right: 10upx;
width: 100upx;
height: 100upx;
padding: 20upx;
margin-right: 30upx;
border-radius: 32upx;
}
}
}
}
.btn-group {
margin: 0 3%;
display: flex;
flex-wrap: wrap;
.m-btn {
width: 45%;
background: rgba(255, 255, 255, 0.3);
box-shadow: 0px 6upx 14upx 0px rgba(0, 0, 0, 0.03);
border-radius: 36upx;
border: 2upx solid #ffffff;
margin: 0 2.5%;
margin-bottom: 25upx;
padding: 40upx 0 40upx 32upx;
display: flex;
align-items: center;
font-family: Source Han Sans SC;
font-weight: 800;
font-size: 34upx;
color: #1b1b1b;
.m-btn-text {
position: relative;
}
image {
width: 100upx;
height: 100upx;
padding: 20upx;
margin-right: 30upx;
border-radius: 32upx;
.m-btn-text::after {
content: '';
width: 50%;
height: 8upx;
position: absolute;
bottom: -20upx;
left: 0;
}
}
.m-btn-text {
position: relative;
.m-btn.one image {
background: linear-gradient(90deg, #5097fa 0%, #2277f0 100%);
box-shadow: 0px 12upx 36upx 0px rgba(34, 119, 240, 0.5);
}
.m-btn-text::after {
content: '';
width: 50%;
height: 8upx;
position: absolute;
bottom: -20upx;
left: 0;
.one .m-btn-text::after {
background: linear-gradient(90deg, #2277f0 0%, #5097fa 100%);
box-shadow: 0px 3upx 7upx 0upx rgba(34, 119, 240, 0.5);
border-radius: 4upx;
}
}
.m-btn.one image {
background: linear-gradient(90deg, #5097fa 0%, #2277f0 100%);
box-shadow: 0px 12upx 36upx 0px rgba(34, 119, 240, 0.5);
}
.m-btn.two image {
background: linear-gradient(0deg, #fa9a50 0%, #f07b22 100%);
box-shadow: 0px 12upx 36upx 0px rgba(240, 123, 34, 0.5);
}
.one .m-btn-text::after {
background: linear-gradient(90deg, #2277f0 0%, #5097fa 100%);
box-shadow: 0px 3upx 7upx 0upx rgba(34, 119, 240, 0.5);
border-radius: 4upx;
}
.two .m-btn-text::after {
background: linear-gradient(90deg, #f07b22 0%, #fa9a50 100%);
box-shadow: 0px 3upx 7upx 0px rgba(240, 123, 34, 0.5);
border-radius: 4upx;
}
.m-btn.two image {
background: linear-gradient(0deg, #fa9a50 0%, #f07b22 100%);
box-shadow: 0px 12upx 36upx 0px rgba(240, 123, 34, 0.5);
}
.m-btn.three image {
background: linear-gradient(90deg, #41d9b3 0%, #09b388 100%);
box-shadow: 0px 12upx 36upx 0px rgba(9, 178, 136, 0.5);
}
.two .m-btn-text::after {
background: linear-gradient(90deg, #f07b22 0%, #fa9a50 100%);
box-shadow: 0px 3upx 7upx 0px rgba(240, 123, 34, 0.5);
border-radius: 4upx;
.three .m-btn-text::after {
background: linear-gradient(90deg, #09b288 0%, #41d9b3 100%);
box-shadow: 0px 3upx 7upx 0px rgba(9, 178, 136, 0.5);
border-radius: 4upx;
}
.m-btn.four image {
background: linear-gradient(90deg, #c750fa 0%, #b919ff 100%);
box-shadow: 0px 12upx 36upx 0px rgba(185,25,255, 0.5);
}
.four .m-btn-text::after {
background: linear-gradient(90deg, #c750fa 0%, #b919ff 100%);
box-shadow: 0px 3upx 7upx 0px rgba(185,25,255, 0.5);
border-radius: 4upx;
}
}
}
.m-btn.three image {
background: linear-gradient(90deg, #41d9b3 0%, #09b388 100%);
box-shadow: 0px 12upx 36upx 0px rgba(9, 178, 136, 0.5);
.uni-columns {
display: flex;
align-items: center;
width: 90%;
background-color: #fff;
margin: 0 auto;
justify-content: space-between;
margin-bottom: 20px;
border-radius: 10px;
.uni-input {
width: 70%;
padding-left: 10px;
}
.three .m-btn-text::after {
background: linear-gradient(90deg, #09b288 0%, #41d9b3 100%);
box-shadow: 0px 3upx 7upx 0px rgba(9, 178, 136, 0.5);
border-radius: 4upx;
image {
width: 15%;
height: 35px;
}
}
}
.uni-columns {
display: flex;
align-items: center;
width: 90%;
background-color: #fff;
margin: 0 auto;
justify-content: space-between;
margin-bottom: 20px;
border-radius: 10px;
.uni-input {
width: 70%;
padding-left: 10px;
}
image {
width: 15%;
height: 35px;
}
}
</style>
</style>

@ -3,6 +3,7 @@
<view class="logo-content align-center justify-center flex">
<image src="/static/images/login/logo_handset.png" mode="widthFix"></image>
<text class="title">欢迎来到手持机检票系统</text>
</view>
<view class="login-form-content">
<view class="input-item flex align-center">
@ -21,6 +22,7 @@
<button :disabled="btnDisabled" :loading="btnDisabled" @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
</view>
</view>
<view class="v-Version">V{{appVersion}}</view>
<!-- <view class="xieyi text-center">
<text class="text-grey1">登录即代表同意</text>
@ -54,7 +56,7 @@ export default {
},
tentId: null,
btnDisabled: false,
appVersion: '',
version: '',
downUrl: '',
describe: ''
@ -78,6 +80,10 @@ export default {
// })
// });
}
const $this=this
plus.runtime.getProperty(plus.runtime.appid,function(res){
$this.appVersion=res.version
})
},
onLoad() {
//APP
@ -156,7 +162,7 @@ page {
background-size: 100% auto;
position: relative;
}
.v-Version{position: fixed;width: 100%; text-align: center; height: 80rpx; line-height: 80rpx; bottom:30rpx;}
.normal-login-container {
width: 100%;

@ -26,11 +26,13 @@
<view class="m-ticket-name">{{ item.dicname }}</view><strong></strong>
<view class="m-ticket-content">
<view class="m-ticket-icon">
<image src="/static/images/icon-list-persong.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5701" src="/static/images/icon-list-persong.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5702" src="/static/images/icon-list-team.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5703" src="/static/images/icon-list-study.png" alt="" mode="widthFix" />
</view>
<view class="m-ticket-content-box">
<view class="m-ticket-name">
<!-- {{ item.ticketname }} -->个人预约
{{ item.ticketname }}
</view>
<view class="m-ticket-tips">
<view class="m-user-name">
@ -294,7 +296,7 @@
}
.m-ticket-name {
padding: 0;
padding-left:30rpx;
background-color: #fff;
font-weight: bold;
}

@ -0,0 +1,106 @@
<template>
<view class="m-content">
<uni-nav-bar dark :fixed="true" shadow background-color="#007AFF" status-bar left-icon="left" left-text=""
title="数据统计" @clickLeft="back" />
<view class="v-tabs row">
<text class="item" :class="item.type==activeTab?'active':''" v-for="(item,index) in tabsList"
@click="getTab(item.type)">{{item.name}}</text>
</view>
<view class="list-box">
<view class="v-table">
<uni-row class="th">
<uni-col :span="12" class="td">日期</uni-col>
<uni-col :span="12" class="td">{{activeTab==1?'预约人数':'检票人数'}}</uni-col>
</uni-row>
<uni-row class="tr" v-for="(item,index) in tableData" :key="index">
<uni-col :span="12" class="td">{{item.generated_date}}</uni-col>
<uni-col :span="12" class="td">{{item.total_data}}</uni-col>
</uni-row>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
activeTab: 1,
tabsList: [{
name: "未来七天",
type: 1
}, {
name: "过去七天",
type: 2
}],
tableData: []
}
},
onShow() {
this.initPages()
},
methods: {
initPages() {
let reqData = {
dateType: this.activeTab,
};
this.$Request.get(this.$config.selectScjCount, reqData).then(res => {
this.tableData = res.data.list
}).catch(err => {
console.log(err, '错误信息')
})
},
getTab(val) {
this.activeTab = val
this.initPages()
},
back() {
uni.navigateBack({
delta: 1
});
},
}
}
</script>
<style>
.v-tabs {
display: flex;
padding: 20upx 32upx;
}
.v-tabs .item {
border-radius: 10rpx;
padding: 8rpx 20rpx;
margin-right: 20rpx;
display: inline-block;
color: #aaa;
}
.v-tabs .item.active {
background-color: rgba(0, 122, 255, 1);
color: #fff;
}
.list-box {
padding: 10rpx 32rpx;
}
.v-table {
background-color: rgba(255, 255, 255, .2);
}
.v-table .td {
text-align: center;
padding: 20rpx !important;
}
.v-table .th .td {
font-weight: bold;
}
.v-table .tr:nth-child(2n) {
background-color: rgba(0, 122, 255, .1);
}
</style>

@ -9,11 +9,11 @@
</view>
</view>
<view class="m-ticket-out" v-if="ticketDetail">
<view class="m-ticket-inf" style="margin-top: 70upx;">
<view class="m-inf-row">
<view class="m-row-label">预约类型</view>
<view class="m-row-value"><!-- {{ ticketDetail.essentialInformation.AppointmentType || '--' }} -->个人预约</view>
<view class="m-row-value">{{ ticketDetail.essentialInformation.AppointmentType || '--' }}</view>
</view>
<view class="m-inf-row">
<view class="m-row-label">预约单号</view>
@ -30,13 +30,21 @@
<view class="m-inf-row">
<view class="m-row-label">预约码</view>
<view class="m-row-value">{{ ticketDetail.essentialInformation.reservation_code || '--' }}</view>
</view>
</view>
<view class="m-inf-row" v-if="ticketDetail.essentialInformation.appointmentTypeId==5703">
<view class="m-row-label">提交团员信息</view>
<view class="m-row-value">{{ticketDetail.essentialInformation.submissionType || '--' }}</view>
</view>
<view class="m-inf-row" v-if="ticketDetail.essentialInformation.appointmentTypeId==5703">
<view class="m-row-label">预约人数</view>
<view class="m-row-value">{{ ticketDetail.visitorListCount || '--' }}</view>
</view>
</view>
<view class="m-driver"></view>
<view class="m-ticket-inf" style="padding-top: 5upx;">
<view class="m-ticket-inf-title">
<view class="text">游客信息</view>
<view class="number"><text>{{ticketDetail.visitorListCount}}</text></view>
<view class="number"><text>{{ticketDetail.visitorList.length}}</text></view>
</view>
<view class="m-ticket-inf-box" v-for="(item,index) in ticketDetail.visitorList" :key="index">
<view class="m-inf-row">
@ -181,7 +189,13 @@
}
.number {
text{color: #007AFF;font-size: 32rpx;font-weight: bold; margin: 0 4upx;}}
text {
color: #007AFF;
font-size: 32rpx;
font-weight: bold;
margin: 0 4upx;
}
}
}
.m-ticket-inf {
@ -206,7 +220,10 @@
border: 1upx solid #ccc;
padding: 20upx;
border-radius: 20upx;
&:not(:last-child){margin-bottom: 20upx;}
&:not(:last-child) {
margin-bottom: 20upx;
}
}
.m-inf-row {

@ -12,7 +12,7 @@
<view class="m-ticket-inf" style="margin-top: 70upx;">
<view class="m-inf-row">
<view class="m-row-label">预约类型</view>
<view class="m-row-value"><!-- {{ ticketDetail.essentialInformation.AppointmentType || '--' }} -->个人预约</view>
<view class="m-row-value">{{ ticketDetail.essentialInformation.AppointmentType || '--' }}</view>
</view>
<view class="m-inf-row">
<view class="m-row-label">预约单号</view>
@ -38,12 +38,20 @@
<view class="m-row-label">检票时间</view>
<view class="m-row-value">{{ parseTime(ticketDetail.essentialInformation.write_off_date) || '--' }}</view>
</view>
<view class="m-inf-row" v-if="ticketDetail.essentialInformation.appointmentTypeId==5703">
<view class="m-row-label">提交团员信息</view>
<view class="m-row-value">{{ticketDetail.essentialInformation.submissionType || '--' }}</view>
</view>
<view class="m-inf-row" v-if="ticketDetail.essentialInformation.appointmentTypeId==5703">
<view class="m-row-label">预约人数</view>
<view class="m-row-value">{{ ticketDetail.visitorListCount || '--' }}</view>
</view>
</view>
<view class="m-driver"></view>
<view class="m-ticket-inf" style="padding-top: 5upx;">
<view class="m-ticket-inf-title">
<view class="text">游客信息</view>
<view class="number"><text>{{ticketDetail.visitorListCount}}</text></view>
<view class="number"><text>{{ticketDetail.visitorList.length}}</text></view>
</view>
<view class="m-ticket-inf-box" v-for="(item,index) in ticketDetail.visitorList" :key="index">
<view class="m-inf-row">
@ -79,11 +87,13 @@
export default {
data() {
return {
pageCome:"",
ticketDetail: null,
name: this.$store.state.user.name
};
},
onLoad(params) {
this.pageCome=params.page
if (params.checkId) {
let paramsQuery = {
scenicId: 167,
@ -95,15 +105,22 @@
console.log(err, '错误信息')
})
}
},
},
methods: {
parseTime(val) {
return parseTime(val);
},
back() {
uni.navigateBack({
delta: 1
});
console.log(this.pageCome)
if (this.pageCome == 'check') {
uni.reLaunch({
url: '/pages/index'
});
} else {
uni.navigateBack({
delta: 1
});
}
}
}
};

@ -28,13 +28,14 @@
</view>
<view class="m-ticket-name">{{ item.dicname }}</view><strong></strong>
<view class="m-ticket-content">
<view class="m-ticket-icon">
<image src="/static/images/icon-list-persong.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5701" src="/static/images/icon-list-persong.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5702" src="/static/images/icon-list-team.png" alt="" mode="widthFix" />
<image v-if="item.appointment_type_id==5703" src="/static/images/icon-list-study.png" alt="" mode="widthFix" />
</view>
<view class="m-ticket-content-box">
<view class="m-ticket-name">
<!-- {{ item.ticketname }} -->个人预约
{{ item.ticketname }}
</view>
<view class="m-ticket-tips">
<view class="m-user-name">
@ -153,6 +154,7 @@
let myThis = this;
this.$Request.get(this.$config.getAppointmentRecord, reqData).then(res => {
console.log("res.data.data")
myThis.projectList = myThis.projectList.concat(res.data.data);
//
myThis.total = res.data.count;
@ -310,7 +312,7 @@
}
.m-ticket-name {
padding:0;
padding-left:30rpx;
background-color: #fff;
font-weight: bold;
}

@ -9,7 +9,7 @@ const loginPage = "/pages/login"
// 页面白名单
const whiteList = [
'/pages/login','/pages/index', '/pages/common/webview/index','/pages/ticketCheckingRecord','/pages/ticketCheckingRecord','/pages/ticketReservingRecord','/pages/ticketDetail/ticketDetail','/pages/ticketDetail/ReservDetail','/pages/checkResult/checkResult'
'/pages/login','/pages/index', '/pages/common/webview/index','/pages/ticketCheckingRecord','/pages/ticketCheckingRecord','/pages/ticketReservingRecord','/pages/ticketDetail/ticketDetail','/pages/ticketDetail/ReservDetail','/pages/checkResult/checkResult','/pages/ticketDataStatistics'
]
// 检查地址白名单

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.1 KiB

@ -0,0 +1 @@
<svg id="3291192c-8c1d-44b0-9b7c-30fac5a8d3bf" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 60 60"><defs><linearGradient id="7504e872-e87f-4985-a88c-1dc021b46e76" x1="3.26" y1="26.24" x2="48.64" y2="26.24" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0"/><stop offset="1" stop-color="#fff" stop-opacity="0.5"/></linearGradient><linearGradient id="bcb70e83-df4d-4072-9ee5-f7fda97767be" x1="12.45" y1="16.46" x2="27.63" y2="16.46" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="0db2c4ca-49ff-4db6-a785-e116a09d1c88" x1="3.76" y1="26.24" x2="48.14" y2="26.24" xlink:href="#bcb70e83-df4d-4072-9ee5-f7fda97767be"/><linearGradient id="abed0e43-d859-4033-b1da-b130fc0e7602" x1="40.76" y1="60" x2="40.76" y2="27.04" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0.1"/></linearGradient><linearGradient id="3b45d0f4-5bc3-4c5e-aeaa-2b04e88d2088" x1="40.76" y1="29.01" x2="40.76" y2="58.03" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#b919ff"/></linearGradient><linearGradient id="350ffe9e-c4ac-4b68-b796-51637f25d437" x1="49.47" y1="43.52" x2="32.05" y2="43.52" xlink:href="#bcb70e83-df4d-4072-9ee5-f7fda97767be"/></defs><title>微商城图标</title><path d="M8,1H43.89q4.24,0,4.25,4.25v42q0,4.25-4.25,4.25H8q-4.24,0-4.25-4.25v-42Q3.76,1,8,1ZM8,1" style="fill:none;stroke-miterlimit:10;stroke:url(#7504e872-e87f-4985-a88c-1dc021b46e76)"/><path d="M21.23,8.89v8.76H12.45A7.64,7.64,0,0,0,27.63,16.4v-.13a7.63,7.63,0,0,0-6.4-7.38Z" style="fill:url(#bcb70e83-df4d-4072-9ee5-f7fda97767be)"/><path d="M43.89,1H8Q3.76,1,3.76,5.25v42q0,4.25,4.25,4.25H43.89q4.24,0,4.25-4.25v-42Q48.14,1,43.89,1ZM17.94,5.79v8.57l-8.55,0A9,9,0,0,1,17.94,5.79Zm-5.34,41a1.41,1.41,0,0,1-1.6,1.6,1.42,1.42,0,0,1-1.61-1.6V44.47A1.43,1.43,0,0,1,11,42.86a1.42,1.42,0,0,1,1.6,1.61Zm6.23,0a1.41,1.41,0,0,1-1.6,1.6,1.41,1.41,0,0,1-1.6-1.6V39.89a1.42,1.42,0,0,1,1.6-1.61,1.42,1.42,0,0,1,1.6,1.61Zm7,0a1.41,1.41,0,0,1-1.6,1.6,1.41,1.41,0,0,1-1.6-1.6V32.56A1.42,1.42,0,0,1,24.2,31a1.42,1.42,0,0,1,1.6,1.61ZM29.57,16.4a9.58,9.58,0,0,1-19.16,0v-.69h8.88V6.85H20a9.56,9.56,0,0,1,9.57,9.56ZM33,46.76a1.41,1.41,0,0,1-1.6,1.6,1.41,1.41,0,0,1-1.6-1.6V35.31a1.42,1.42,0,0,1,1.6-1.61A1.42,1.42,0,0,1,33,35.31Z" style="fill:url(#0db2c4ca-49ff-4db6-a785-e116a09d1c88)"/><rect x="25.28" y="28.04" width="30.96" height="30.96" rx="7" ry="7" style="fill:none;stroke-miterlimit:10;stroke-width:2px;stroke:url(#abed0e43-d859-4033-b1da-b130fc0e7602)"/><rect x="26.25" y="29.01" width="29.03" height="29.03" rx="6" ry="6" style="fill:url(#3b45d0f4-5bc3-4c5e-aeaa-2b04e88d2088)"/><path d="M48,36.8h0a.42.42,0,0,0-.18-.3.45.45,0,0,0-.34,0l-9.75,2.77a.39.39,0,0,0-.3.34.43.43,0,0,0,.18.41l3,2a.43.43,0,0,1,.12.59,28.54,28.54,0,0,1-2.38,3.2,8.84,8.84,0,0,1-6,3.3.44.44,0,0,0-.38.36.42.42,0,0,0,.26.44c6.52,2.85,12-2.93,13.22-4.29a.42.42,0,0,1,.54-.08l2.75,1.79a.41.41,0,0,0,.45,0,.42.42,0,0,0,.19-.41Z" style="fill:url(#350ffe9e-c4ac-4b68-b796-51637f25d437)"/></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@ -0,0 +1 @@
<svg id="582272e9-c015-48aa-b459-1e43509050c5" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 60 60"><defs><linearGradient id="63f5d7fa-d6fc-407b-97e4-009972b0e872" x1="3.92" y1="25.86" x2="47.8" y2="25.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="cc3bdd1a-3e8f-4047-a7b9-d4f81f1fa9e3" x1="3.92" y1="25.86" x2="47.8" y2="25.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0"/><stop offset="1" stop-color="#fff" stop-opacity="0.5"/></linearGradient><linearGradient id="6b0a3c71-6b29-4dac-863f-41ba43d1bdee" x1="40.34" y1="28.5" x2="40.34" y2="58.18" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#f07b22"/></linearGradient><linearGradient id="00fcd434-04fd-4ac3-a812-efb8228c7e8c" x1="31.47" y1="42.76" x2="48.05" y2="42.76" xlink:href="#63f5d7fa-d6fc-407b-97e4-009972b0e872"/><linearGradient id="c37c53f9-90a3-4dbd-a153-29fa341bf2ae" x1="40.34" y1="60" x2="40.34" y2="26.68" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0.1"/></linearGradient><linearGradient id="f9dea59b-3c06-4981-b13e-85ab3509db04" x1="3.94" y1="3.51" x2="47.71" y2="3.51" xlink:href="#63f5d7fa-d6fc-407b-97e4-009972b0e872"/></defs><title>微商城图标</title><path d="M47.77,18.44V3.49a2.49,2.49,0,0,0-.15-.73A2.42,2.42,0,0,0,45.27,1H6.44A2.4,2.4,0,0,0,4.1,2.76a2.87,2.87,0,0,0-.16.73v15l0,5.61a.31.31,0,0,0,0,.08V43.85a3.46,3.46,0,0,0,1.39,2.61l.34.34,3.7,3.28a2.4,2.4,0,0,0,1.65.63,2.36,2.36,0,0,0,1.64-.63l3.24-2.86,3.21,2.86a2.54,2.54,0,0,0,3.28,0l3.2-2.82,3.59,2.82a2.37,2.37,0,0,0,1.64.59,2.6,2.6,0,0,0,1.79-.59l3.2-2.86,3.24,2.86a2.38,2.38,0,0,0,1.65.63,2.36,2.36,0,0,0,1.64-.63l3.71-3.28.33-.34a3.43,3.43,0,0,0,1.39-2.61V24h0Zm-29,15H10.53a1.49,1.49,0,0,1,0-3h8.26a1.49,1.49,0,1,1,0,3Zm2.49-9.81H10.53a1.5,1.5,0,0,1,0-3H21.28a1.5,1.5,0,0,1,0,3Zm5-9.11H10.53a1.49,1.49,0,0,1,0-3H26.29a1.49,1.49,0,1,1,0,3Z" style="fill:url(#63f5d7fa-d6fc-407b-97e4-009972b0e872)"/><path d="M45.27,2a1.4,1.4,0,0,1,1.38,1V3.1a1.57,1.57,0,0,1,.1.42V18.45l0,4.09h0V43.81a2.46,2.46,0,0,1-1,1.85l-.05,0,0,0-.32.32-3.69,3.27a1.46,1.46,0,0,1-2,0l-3.25-2.86-.66-.59-.67.59L32,49.31a1.58,1.58,0,0,1-1,.37h-.17a1.41,1.41,0,0,1-.94-.34l0,0h0l-3.59-2.83L25.56,46l-.63.55-3.19,2.82a1.48,1.48,0,0,1-1,.35,1.63,1.63,0,0,1-1-.34l-3.2-2.87-.66-.59-.67.59L12,49.34a1.46,1.46,0,0,1-2,0L6.35,46.07,6,45.75l0,0-.06,0a2.47,2.47,0,0,1-1-1.81V24l0-.1,0-5.48V3.52A1.57,1.57,0,0,1,5,3.1V3A1.42,1.42,0,0,1,6.47,2h38.8m0-1H6.44A2.4,2.4,0,0,0,4.1,2.76a2.87,2.87,0,0,0-.16.73v15l0,5.61a.31.31,0,0,0,0,.08V43.85a3.46,3.46,0,0,0,1.39,2.61l.34.34,3.7,3.28a2.4,2.4,0,0,0,1.65.63,2.36,2.36,0,0,0,1.64-.63l3.24-2.86,3.21,2.86a2.59,2.59,0,0,0,1.66.6,2.46,2.46,0,0,0,1.62-.6l3.2-2.82,3.59,2.82a2.37,2.37,0,0,0,1.6.59H31a2.61,2.61,0,0,0,1.66-.6l3.2-2.86,3.24,2.86a2.38,2.38,0,0,0,1.65.63,2.36,2.36,0,0,0,1.64-.63l3.71-3.28.33-.34a3.43,3.43,0,0,0,1.39-2.61V24h0l0-5.61V3.49a2.49,2.49,0,0,0-.15-.73A2.42,2.42,0,0,0,45.27,1Z" style="fill:url(#cc3bdd1a-3e8f-4047-a7b9-d4f81f1fa9e3)"/><path d="M40.31,28.5A14.84,14.84,0,1,0,55.25,43.34,14.81,14.81,0,0,0,40.31,28.5Z" style="fill:url(#6b0a3c71-6b29-4dac-863f-41ba43d1bdee)"/><path d="M47.62,39.4,38.9,48.12a1.55,1.55,0,0,1-1,.43,1.32,1.32,0,0,1-1-.43l-5-5a1.41,1.41,0,0,1,2-2l4,4,7.72-7.72a1.38,1.38,0,0,1,2,0,1.32,1.32,0,0,1,.43,1A1.55,1.55,0,0,1,47.62,39.4Z" style="fill:url(#00fcd434-04fd-4ac3-a812-efb8228c7e8c)"/><path d="M24.6,43.34A15.74,15.74,0,1,0,40.31,27.68,15.68,15.68,0,0,0,24.6,43.34Zm0,0" style="fill:none;stroke-miterlimit:10;stroke-width:2px;stroke:url(#c37c53f9-90a3-4dbd-a153-29fa341bf2ae)"/><path d="M47.71,3.49A2.4,2.4,0,0,0,45.27,1H6.47A2.61,2.61,0,0,0,3.94,3.49V6H47.71Z" style="fill:url(#f9dea59b-3c06-4981-b13e-85ab3509db04)"/></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@ -1,7 +1,7 @@
const REAUEST_ROOTPATH = "https://www.lbgjtoa.com/";
const ROOTPATH = "https://www.lbgjtoa.com/";
// const REAUEST_ROOTPATH = "http://192.168.110.143:8084/";
// const ROOTPATH = "http://192.168.110.143:8084/";
// const REAUEST_ROOTPATH = "https://www.lbgjtoa.com/";
// const ROOTPATH = "https://www.lbgjtoa.com/";
const REAUEST_ROOTPATH = "http://192.168.110.143:8083/";
const ROOTPATH = "http://192.168.110.143:8083/";
//手绘图项目名称
const HANDDRAWNNAME = "";
module.exports = {
@ -18,5 +18,5 @@ module.exports = {
getAppointmentRecord:REAUEST_ROOTPATH +'/mobile/handset/getAppointmentRecord?scenicId=167',//预约记录
getAppointmentRecordDetails:REAUEST_ROOTPATH +'/mobile/handset/getAppointmentRecordDetails?scenicId=167',//预约记录详情
requestForWriteOff:REAUEST_ROOTPATH +'/mobile/handset/requestForWriteOff?scenicId=167',//核销
selectScjCount:REAUEST_ROOTPATH +'/mobile/handset/selectScjCount?scenicId=167',//首页统计
}

Loading…
Cancel
Save