This commit is contained in:
ylj20011123 2025-11-07 18:33:55 +08:00
parent bb54ac4858
commit 18959b7500
85 changed files with 1402 additions and 1194 deletions

View File

@ -219,7 +219,7 @@ var QR = (function () {
break;
case 2:
for (y = 0; y < width; y++)
for (r3x = 0, x = 0; x < width; x++ , r3x++) {
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x == 3)
r3x = 0;
if (!r3x && !ismasked(x, y))
@ -227,10 +227,10 @@ var QR = (function () {
}
break;
case 3:
for (r3y = 0, y = 0; y < width; y++ , r3y++) {
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y == 3)
r3y = 0;
for (r3x = r3y, x = 0; x < width; x++ , r3x++) {
for (r3x = r3y, x = 0; x < width; x++, r3x++) {
if (r3x == 3)
r3x = 0;
if (!r3x && !ismasked(x, y))
@ -240,7 +240,7 @@ var QR = (function () {
break;
case 4:
for (y = 0; y < width; y++)
for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++ , r3x++) {
for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++, r3x++) {
if (r3x == 3) {
r3x = 0;
r3y = !r3y;
@ -250,10 +250,10 @@ var QR = (function () {
}
break;
case 5:
for (r3y = 0, y = 0; y < width; y++ , r3y++) {
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y == 3)
r3y = 0;
for (r3x = 0, x = 0; x < width; x++ , r3x++) {
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x == 3)
r3x = 0;
if (!((x & y & 1) + !(!r3x | !r3y)) && !ismasked(x, y))
@ -262,10 +262,10 @@ var QR = (function () {
}
break;
case 6:
for (r3y = 0, y = 0; y < width; y++ , r3y++) {
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y == 3)
r3y = 0;
for (r3x = 0, x = 0; x < width; x++ , r3x++) {
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x == 3)
r3x = 0;
if (!(((x & y & 1) + (r3x && (r3x == r3y))) & 1) && !ismasked(x, y))
@ -274,10 +274,10 @@ var QR = (function () {
}
break;
case 7:
for (r3y = 0, y = 0; y < width; y++ , r3y++) {
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y == 3)
r3y = 0;
for (r3x = 0, x = 0; x < width; x++ , r3x++) {
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x == 3)
r3x = 0;
if (!(((r3x && (r3x == r3y)) + ((x + y) & 1)) & 1) && !ismasked(x, y))
@ -494,7 +494,7 @@ var QR = (function () {
t = vpat[version - 7];
k = 17;
for (x = 0; x < 6; x++)
for (y = 0; y < 3; y++ , k--)
for (y = 0; y < 3; y++, k--)
if (1 & (k > 11 ? version >> (k - 12) : t >> k)) {
qrframe[(5 - x) + width * (2 - y + width - 11)] = 1;
qrframe[(2 - y + width - 11) + width * (5 - x)] = 1;
@ -610,7 +610,7 @@ var QR = (function () {
m = (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2;
for (i = 0; i < m; i++) {
t = strinbuf[i];
for (j = 0; j < 8; j++ , t <<= 1) {
for (j = 0; j < 8; j++, t <<= 1) {
if (0x80 & t)
qrframe[x + width * y] = 1;
do { // find next fill position
@ -672,7 +672,7 @@ var QR = (function () {
// add in final mask/ecclevel bytes
y = fmtword[t + ((ecclevel - 1) << 3)];
// low byte
for (k = 0; k < 8; k++ , y >>= 1)
for (k = 0; k < 8; k++, y >>= 1)
if (y & 1) {
qrframe[(width - 1 - k) + width * 8] = 1;
if (k < 6)
@ -681,7 +681,7 @@ var QR = (function () {
qrframe[8 + width * (k + 1)] = 1;
}
// high byte
for (k = 0; k < 7; k++ , y >>= 1)
for (k = 0; k < 7; k++, y >>= 1)
if (y & 1) {
qrframe[8 + width * (width - 7 + k)] = 1;
if (k)
@ -693,8 +693,14 @@ var QR = (function () {
}
var drawImg = function (src, width, ctx) {
var imgSize = width / 10;
var imgheight = width / 9;
// 检查 src 参数是否有效
if (!src || src === "" || typeof src !== 'string') {
// 如果 src 无效,直接返回,不执行绘制操作
return;
}
var imgSize = width / 10;
var imgheight = width / 9;
var imgPos = width / 20 * 9;
var imgPosFix = width / 120;
ctx.strokeStyle = '#fff';
@ -704,7 +710,7 @@ var QR = (function () {
ctx.lineJoin = "round";
ctx.beginPath();
ctx.moveTo(imgPos - imgPosFix, imgPos - imgPosFix);
// 绘制layer
@ -776,7 +782,7 @@ var QR = (function () {
///绘制二维码
draw: function (str, canvas, cavW, cavH, ecc, src) {
ecclevel = ecc || ecclevel;
canvas = canvas || _canvas;
if (!canvas) {
@ -787,7 +793,7 @@ var QR = (function () {
str = this.utf16to8(str);//增加中文显示
//console.log(str)
var frame = this.getFrame(str),
ctx = wx.createCanvasContext(canvas),
ctx = uni.createCanvasContext(canvas),
px = Math.round(size / (width + 8));
var roundedSize = px * (width + 8),
offset = Math.floor((size - roundedSize) / 2);

View File

@ -88,7 +88,8 @@
{
"path": "index",
"style": {
"navigationBarTitleText": "共享休息站"
"navigationBarTitleText": "共享休息站",
"navigationStyle": "custom"
}
},
{

View File

@ -491,7 +491,7 @@ export default {
mask: true
})
uni.uploadFile({
url: 'https://eshangtech.com:18998/Coop.Merchant/Handler/handler_ajax.ashx?action_type=UploadFile&folder=suggestion',
url: 'https://eshangtech.com:18998/Coop.Merchant/Handler/handler_ajax.ashx?action_type=UploadFile&folder=suggestion',
// filePath: res.tempFilePath,
filePath: imgInfo.path,
name: 'data',

View File

@ -1,33 +1,37 @@
<template>
<div class="event-detail-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="event-detail-page">
<!-- 活动封面 -->
<div class="event-cover">
<image class="cover-image" :src="eventDetail.coverImage || defaultCover" mode="aspectFill" />
<div class="event-status" :class="[
eventDetail.status === 'active' ? 'status-active' :
(eventDetail.status === 'ended' ? 'status-ended' : 'status-draft')
]">
{{ getStatusText(eventDetail.status) }}
<swiper>
<swiper-item v-for="(item, imgIndex) in eventDetail.ImageList" :key="imgIndex">
<image class="cover-image" :src="item.ImageUrl" mode="aspectFill" />
</swiper-item>
</swiper>
<div class="event-status"
:class="new Date(eventDetail.ACTIVITY_ENDDATE).getTime() < new Date().getTime() ? 'status-ended' : new Date(eventDetail.ACTIVITY_STARTDATE).getTime() < new Date().getTime() ? 'status-draft' : 'status-active'">
{{ getStatusText(eventDetail) }}
</div>
</div>
<!-- 活动基本信息 -->
<div class="event-header">
<div class="event-title">{{ eventDetail.eventName }}</div>
<div class="event-title">{{ eventDetail.ACTIVITY_NAME }}</div>
<div class="event-meta">
<div class="meta-item">
<span class="meta-icon">📅</span>
<span class="meta-text">{{ formatFullDateTime(eventDetail.eventTime) }}</span>
<span class="meta-text">{{ eventDetail.ACTIVITY_STARTDATE ? eventDetail.ACTIVITY_STARTDATE : ""
}}{{ eventDetail.ACTIVITY_ENDDATE ? `-` + eventDetail.ACTIVITY_ENDDATE : "" }}</span>
</div>
<div class="meta-item">
<span class="meta-icon">📍</span>
<span class="meta-text">{{ eventDetail.eventLocation }}</span>
<span class="meta-text">{{ eventDetail.ACTIVITY_LOCATION }}</span>
</div>
<div class="meta-item">
<span class="meta-icon">👥</span>
<span class="meta-text">
{{ eventDetail.currentParticipants || 0 }} / {{ eventDetail.maxParticipants || '不限' }}
{{ eventDetail.MAXIMUM_CAPACITY || '不限' }}
</span>
</div>
</div>
@ -36,216 +40,243 @@
<!-- 活动内容 -->
<div class="content-section">
<div class="section-title">活动介绍</div>
<text class="content-text">{{ eventDetail.eventContent }}</text>
</div>
<!-- 活动要求 -->
<div class="requirements-section" v-if="eventDetail.requirements">
<div class="section-title">参与要求</div>
<text class="content-text">{{ eventDetail.requirements }}</text>
</div>
<!-- 注意事项 -->
<div class="notice-section" v-if="eventDetail.notice">
<div class="section-title">注意事项</div>
<text class="content-text">{{ eventDetail.notice }}</text>
<text class="content-text">{{ eventDetail.ACTIVITY_INFO }}</text>
</div>
<!-- 报名按钮 -->
<div class="action-section">
<div class="action-btn" :class="[
eventDetail.status === 'ended' ? 'action-disabled' :
(isEventFull() ? 'action-full' :
(hasRegistered ? 'action-registered' : 'action-normal'))
]" @click="handleAction">
<span class="btn-text">{{ getActionText() }}</span>
<div class="action-section" v-if="errorType > 0">
<div
:class="errorType === 1 || errorType === 2 || errorType === 3 || errorType === 5 ? 'action-btn action-registered' : 'action-btn action-normal'"
@click="handleAction">
<span class="btn-text">{{ errorType === 0 ? '' : errorType === 1 ? '活动已结束' : errorType === 2 ? '活动已经开始' :
errorType === 3 ? '已报名' : errorType === 4 ? '重新报名' : errorType === 5 ? '未参加' : errorType === 6 ? '立即报名' : ''
}}</span>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
export default {
data() {
return {
safeHeight: "",
eventId: "",
eventDetail: {},
hasRegistered: false, //
defaultCover: 'https://picsum.photos/seed/event-detail/400/300.jpg'
errorType: 0, // 0 1 2 3 4 5 6
statusDetail: {},//
};
},
computed: {
...mapGetters({
user: "user",
}),
},
onLoad(query) {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
if (query.id) {
this.eventId = query.id;
}
if (query.hasRegistered) {
this.hasRegistered = query.hasRegistered === 'true';
}
//
this.loadEventDetail();
},
onShareAppMessage() {
return {
title: `${this.eventDetail.eventName}`,
path: `/pages/eventRegistration/detail?id=${this.eventId}`,
};
},
onShareTimeline() {
return {
title: `${this.eventDetail.eventName}`,
path: `/pages/eventRegistration/detail?id=${this.eventId}`,
};
onShow() {
this.loadEventDetail();
},
methods: {
//
async loadEventDetail() {
try {
uni.showLoading({
title: '加载中...',
mask: true
});
//
// const res = await this.$api.getEventDetail({
// eventId: this.eventId
// });
//
const mockData = {
id: this.eventId,
eventName: "春季音乐节",
eventContent: "春暖花开,音乐与美好相遇。本次音乐节邀请了多位知名音乐人,为大家带来一场视听盛宴。活动包含民谣、流行、摇滚等多种音乐风格,适合各个年龄段的观众参与。",
eventLocation: "昆明市中心广场露天舞台",
eventTime: "2024-03-15 19:00:00",
maxParticipants: 500,
currentParticipants: 280,
status: "active",
coverImage: "https://picsum.photos/seed/music-festival-detail/400/300.jpg",
requirements: "1. 活动免费参与,无需门票\n2. 请提前15分钟到场\n3. 建议携带防寒衣物\n4. 禁止携带危险物品入场\n5. 活动期间请保持现场秩序",
notice: "1. 如遇恶劣天气,活动可能延期或取消\n2. 请保管好个人财物\n3. 活动现场禁止吸烟\n4. 请遵守现场工作人员指引\n5. 建议绿色出行,避免交通拥堵"
};
this.eventDetail = mockData;
this.checkRegistrationStatus();
uni.hideLoading();
} catch (error) {
console.error('加载活动详情失败:', error);
uni.hideLoading();
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
});
const req = {
ACTIVITYId: this.eventId,
type: 'encryption'
}
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/Member/GetACTIVITYDetail", req)
uni.hideLoading();
let detail = data.Result_Data
console.log('详情djaksjda', detail);
//
let nowTime = new Date().getTime()
if (new Date(detail.ACTIVITY_ENDDATE).getTime() < nowTime) {
// 1
this.errorType = 1
} else if (new Date(detail.ACTIVITY_STARTDATE).getTime() < nowTime) {
// 2
this.errorType = 2
}
this.eventDetail = detail;
if (this.errorType > 0) {
} else {
}
//
this.checkRegistrationStatus()
},
//
async checkRegistrationStatus() {
try {
//
// const res = await this.$api.checkRegistrationStatus({
// eventId: this.eventId,
// userId: getUserId()
// });
// this.hasRegistered = res.hasRegistered;
// - URL
// this.hasRegistered = false;
} catch (error) {
console.error('检查报名状态失败:', error);
const req = {
SearchParameter: {
ACTIVITY_IDS: this.eventId,
MEMBERSHIP_IDS: this.user.MEMBERSHIP_ID,
},
PageIndex: 1,
PageSize: 999999,
type: 'encryption'
}
const data = await this.$api.$posMemberPost("/Member/GetACTIVITYDETAILList", req)
let list = data.Result_Data.List
// list
console.log('这个用户这个活动的报名详细', list);
if (list && list.length > 0) {
let detail = list[0]
if (detail.ACTIVITYDETAIL_STATE === 1) {
// 1
this.hasRegistered = true;
// 3
this.errorType = 3
} else if (detail.ACTIVITYDETAIL_STATE === 0) {
// 0
// 4
this.errorType = 4
} else if (detail.ACTIVITYDETAIL_STATE === 2) {
// 2
// 5
this.errorType = 5
}
this.statusDetail = detail
} else {
this.hasRegistered = false;
// 6
this.errorType = 6
//
}
},
//
handleAction() {
if (this.eventDetail.status === 'ended') {
if (this.errorType === 1) {
uni.showToast({
title: '活动已结束',
title: "活动已结束",
icon: 'none'
})
} else if (this.errorType === 2) {
uni.showToast({
title: "活动已开始",
icon: 'none'
})
} else if (this.errorType === 3) {
let _this = this
uni.showModal({
title: "注意",
content: "您已报名成功,确认要取消报名?",
success: async (res) => {
if (res.confirm) {
let req = {
..._this.statusDetail,
ACTIVITYDETAIL_STATE: 0,
type: 'encryption'
}
const data = await _this.$api.$posMemberPost("/Member/SynchroACTIVITYDETAIL", req)
if (data.Result_Code === 100) {
uni.showToast({
title: '取消成功!',
icon: 'none'
})
_this.errorType = 0
_this.eventDetail = {}
_this.hasRegistered = false
_this.statusDetail = {}
_this.loadEventDetail();
} else {
uni.showToast({
title: data.Result_Desc,
icon: 'none'
})
}
}
},
});
} else if (this.errorType === 4) {
let _this = this
uni.showModal({
title: "注意",
content: "您有报名记录,是否重新报名",
success: async (res) => {
if (res.confirm) {
let req = {
..._this.statusDetail,
ACTIVITYDETAIL_STATE: 1,
type: 'encryption'
}
const data = await _this.$api.$posMemberPost("/Member/SynchroACTIVITYDETAIL", req)
if (data.Result_Code === 100) {
uni.showToast({
title: '重新报名成功!',
icon: 'none'
})
_this.errorType = 0
_this.eventDetail = {}
_this.hasRegistered = false
_this.statusDetail = {}
_this.loadEventDetail();
} else {
uni.showToast({
title: data.Result_Desc,
icon: 'none'
})
}
}
},
});
} else if (this.errorType === 5) {
} else if (this.errorType === 6) {
//
uni.navigateTo({
url: `/pages/eventRegistration/registration?eventId=${this.eventId}`
});
return;
}
if (this.isEventFull()) {
uni.showToast({
title: '报名人数已满',
icon: 'none'
});
return;
}
if (this.hasRegistered) {
uni.showToast({
title: '您已报名过该活动',
icon: 'none'
});
return;
}
//
uni.navigateTo({
url: `/pages/eventRegistration/registration?eventId=${this.eventId}`
});
// if (this.hasRegistered === true) {
// uni.showToast({
// title: "",
// icon: 'none'
// })
// } else {
// //
// uni.navigateTo({
// url: `/pages/eventRegistration/registration?eventId=${this.eventId}`
// });
// }
},
//
goToRegistrationInfo() {
uni.navigateTo({
url: `/pages/eventRegistration/registration?eventId=${this.eventId}&mode=view&hasRegistered=true`
url: `/pages/eventRegistration/registration?eventId=${this.eventId}`
});
},
//
formatFullDateTime(dateTime) {
if (!dateTime) return '';
try {
const date = new Date(dateTime);
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
const weekDay = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'][date.getDay()];
const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
return `${year}${month}${day}${weekDay} ${hours}:${minutes}`;
} catch (error) {
return dateTime;
}
},
//
getStatusText(status) {
const statusMap = {
'active': '报名中',
'ended': '已结束',
'draft': '筹备中'
};
return statusMap[status] || '报名中';
if (new Date(status.ACTIVITY_ENDDATE).getTime() < new Date().getTime()) {
return '已结束'
} else if (new Date(status.ACTIVITY_STARTDATE).getTime() < new Date().getTime()) {
return '已开始'
} else {
return '报名中'
}
},
//
isEventFull() {
if (!this.eventDetail.maxParticipants) return false;
return this.eventDetail.currentParticipants >= this.eventDetail.maxParticipants;
},
//
getActionText() {
if (this.eventDetail.status === 'ended') return '活动已结束';
if (this.isEventFull()) return '报名已满员';
if (this.hasRegistered) return '已报名';
return '立即报名';
}
}
};
</script>

View File

@ -1,30 +1,38 @@
<template>
<div class="event-list-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="event-list-page">
<!-- 活动列表 -->
<div class="events-section">
<div class="events-list" v-if="eventsList.length > 0">
<div class="event-item" v-for="(event, index) in eventsList" :key="index" @click="goToDetail(event)">
<div class="event-cover">
<image class="cover-image" :src="event.coverImage || defaultCover" mode="aspectFill" />
<div class="event-status" :class="[
event.status === 'active' ? 'status-active' :
(event.status === 'ended' ? 'status-ended' : 'status-draft')
]">
{{ getStatusText(event.status) }}
<swiper>
<swiper-item v-for="(item, imgIndex) in event.ImageList" :key="imgIndex">
<image class="cover-image" :src="item.ImageUrl" mode="aspectFill" />
</swiper-item>
</swiper>
<div class="event-status"
:class="new Date(event.ACTIVITY_ENDDATE).getTime() < new Date().getTime() ? 'status-ended' : new Date(event.ACTIVITY_STARTDATE).getTime() < new Date().getTime() ? 'status-draft' : 'status-active'">
<!-- :class="[
event.ACTIVITY_STATE === 'active' ? 'status-active' :
(event.ACTIVITY_STATE === 'ended' ? 'status-ended' : 'status-draft')
]" -->
{{ getStatusText(event) }}
</div>
</div>
<div class="event-content">
<div class="event-title">{{ event.eventName }}</div>
<div class="event-title">{{ event.ACTIVITY_NAME }}</div>
<div class="event-info">
<div class="info-item">
<span class="info-icon">📅</span>
<span class="info-text">{{ formatDateTime(event.eventTime) }}</span>
<span class="info-text">{{ event.ACTIVITY_STARTDATE ? event.ACTIVITY_STARTDATE : ""
}}{{ event.ACTIVITY_ENDDATE ? `-` + event.ACTIVITY_ENDDATE : "" }}</span>
</div>
<div class="info-item">
<span class="info-icon">📍</span>
<span class="info-text">{{ event.eventLocation }}</span>
<span class="info-text">{{ event.ACTIVITY_LOCATION }}</span>
</div>
</div>
@ -34,16 +42,10 @@
已报名{{ event.currentParticipants || 0 }}
</div>
<div class="max-participants">
{{ event.maxParticipants || '不限' }}
{{ event.MAXIMUM_CAPACITY || '不限' }}
</div>
</div>
<div class="action-btn" :class="[
event.status === 'ended' ? 'action-disabled' :
(isEventFull(event) ? 'action-full' :
(hasUserRegistered(event) ? 'action-registered' : 'action-normal'))
]">
{{ getActionText(event) }}
</div>
<div class="action-btn action-normal">立即报名</div>
</div>
</div>
</div>
@ -63,143 +65,60 @@
export default {
data() {
return {
safeHeight: "",
eventsList: [],
defaultCover: 'https://picsum.photos/seed/event-default/400/300.jpg'
};
},
onLoad() {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
this.loadEventsList();
},
onPullDownRefresh() {
this.loadEventsList();
},
onReachBottom() {
this.loadMoreEvents();
},
methods: {
//
async loadEventsList() {
try {
//
// const res = await this.$api.getEventsList({
// page: 1,
// pageSize: 10,
// status: 'active' //
// });
//
const mockData = [
{
id: 1,
eventName: "春季音乐节",
eventContent: "春暖花开,音乐与美好相遇",
eventLocation: "昆明市中心广场",
eventTime: "2024-03-15 19:00:00",
maxParticipants: 500,
currentParticipants: 280,
status: "active", // active, ended, draft
coverImage: "https://picsum.photos/seed/music-festival/400/300.jpg"
},
{
id: 2,
eventName: "亲子手工DIY活动",
eventContent: "和孩子一起创造美好回忆",
eventLocation: "青少年活动中心",
eventTime: "2024-03-20 14:00:00",
maxParticipants: 100,
currentParticipants: 65,
status: "active",
coverImage: "https://picsum.photos/seed/diy-activity/400/300.jpg"
},
{
id: 3,
eventName: "健康讲座",
eventContent: "专家分享健康养生知识",
eventLocation: "社区文化中心",
eventTime: "2024-02-28 09:00:00",
maxParticipants: 200,
currentParticipants: 200,
status: "ended",
coverImage: "https://picsum.photos/seed/health-lecture/400/300.jpg"
}
];
this.eventsList = mockData;
uni.stopPullDownRefresh();
} catch (error) {
console.error('加载活动列表失败:', error);
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
});
uni.stopPullDownRefresh();
const req = {
SearchParameter: {
// ACTIVITY_ENDDATE_Start: params.ACTIVITY_ENDDATE_Start,
// ACTIVITY_STARTDATE_End: params.ACTIVITY_STARTDATE_End,
// SERVERPART_IDS: params?.SERVERPART_IDS,
PROVINCE_CODE: "530000",
ACTIVITY_STATES: 1
},
PageIndex: 1,
PageSize: 999999,
type: 'encryption'
}
},
//
loadMoreEvents() {
//
console.log('加载更多活动');
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/Member/GetACTIVITYList", req)
uni.hideLoading();
let list = data.Result_Data.List
this.eventsList = list;
console.log('活动列表sda', list);
},
//
goToDetail(event) {
uni.navigateTo({
url: `/pages/eventRegistration/detail?id=${event.id}`
url: `/pages/eventRegistration/detail?id=${event.ACTIVITY_ID}`
});
},
//
formatDateTime(dateTime) {
if (!dateTime) return '';
try {
const date = new Date(dateTime);
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
return `${month}${day}${hours}:${minutes}`;
} catch (error) {
return dateTime;
}
},
//
getStatusText(status) {
const statusMap = {
'active': '报名中',
'ended': '已结束',
'draft': '筹备中'
};
return statusMap[status] || '报名中';
},
//
getActionText(event) {
if (event.status === 'ended') return '已结束';
if (this.isEventFull(event)) return '已满员';
if (this.hasUserRegistered(event)) return '已报名';
return '立即报名';
},
//
isEventFull(event) {
if (!event.maxParticipants) return false;
return event.currentParticipants >= event.maxParticipants;
},
//
hasUserRegistered(event) {
//
return false;
if (new Date(status.ACTIVITY_ENDDATE).getTime() < new Date().getTime()) {
return '已结束'
} else if (new Date(status.ACTIVITY_STARTDATE).getTime() < new Date().getTime()) {
return '已开始'
} else {
return '报名中'
}
}
}
};
@ -210,10 +129,12 @@ export default {
width: 100vw;
min-height: 100vh;
background: #f8f8f8;
overflow-y: scroll;
overflow-y: auto;
.events-section {
padding: 60rpx 32rpx 40rpx;
width: 100%;
box-sizing: border-box;
padding: 32rpx;
.events-list {
.event-item {

View File

@ -1,5 +1,5 @@
<template>
<div class="registration-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="registration-page">
<!-- 页面标题 -->
<div class="page-header">
<div class="header-title">活动报名</div>
@ -7,24 +7,29 @@
</div>
<!-- 活动信息卡片 -->
<div class="event-info-card" v-if="eventInfo.id">
<div class="event-info-card" v-if="eventInfo.ACTIVITY_ID">
<div class="event-cover">
<image class="cover-image" :src="eventInfo.coverImage || defaultCover" mode="aspectFill" />
<swiper>
<swiper-item v-for="(item, imgIndex) in eventInfo.ImageList" :key="imgIndex">
<image class="cover-image" :src="item.ImageUrl" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<div class="event-summary">
<div class="event-name">{{ eventInfo.eventName }}</div>
<div class="event-name">{{ eventInfo.ACTIVITY_NAME }}</div>
<div class="event-meta">
<div class="meta-item">
<span class="meta-icon">📅</span>
<span class="meta-text">{{ formatDateTime(eventInfo.eventTime) }}</span>
<span class="meta-text">{{ eventInfo.ACTIVITY_STARTDATE ? eventInfo.ACTIVITY_STARTDATE : ""
}}{{ eventInfo.ACTIVITY_ENDDATE ? `-` + eventInfo.ACTIVITY_ENDDATE : "" }}</span>
</div>
<div class="meta-item">
<span class="meta-icon">📍</span>
<span class="meta-text">{{ eventInfo.eventLocation }}</span>
<span class="meta-text">{{ eventInfo.ACTIVITY_LOCATION }}</span>
</div>
<div class="meta-item">
<span class="meta-icon">👥</span>
<span class="meta-text">{{ eventInfo.maxParticipants }}</span>
<span class="meta-text">{{ eventInfo.MAXIMUM_CAPACITY }}</span>
</div>
</div>
</div>
@ -50,30 +55,6 @@
<input class="item-input" v-model="formData.phoneNumber" type="number" placeholder="请输入手机号码" maxlength="11" />
</div>
<!-- 邮箱地址 -->
<div class="form-item">
<div class="item-label">邮箱地址</div>
<input class="item-input" v-model="formData.email" placeholder="请输入邮箱地址" />
</div>
<!-- 身份证号 -->
<div class="form-item">
<div class="item-label">
<span class="required">*</span>
身份证号
</div>
<input class="item-input" v-model="formData.idCard" placeholder="请输入身份证号码" maxlength="18" />
</div>
<!-- 联系地址 -->
<div class="form-item">
<div class="item-label">
<span class="required">*</span>
联系地址
</div>
<input class="item-input" v-model="formData.address" placeholder="请输入详细联系地址" />
</div>
<!-- 备注信息 -->
<div class="form-item">
<div class="item-label">备注信息</div>
@ -152,19 +133,16 @@
</template>
<script>
import { mapGetters } from "vuex";
export default {
data() {
return {
safeHeight: "",
eventId: "",
mode: "register", // register: , view:
eventInfo: {},
formData: {
participantName: "", //
phoneNumber: "", //
email: "", //
idCard: "", //
address: "", //
remarks: "", //
agreement: false //
},
@ -172,11 +150,12 @@ export default {
defaultCover: 'https://picsum.photos/seed/event-registration/400/300.jpg'
};
},
computed: {
...mapGetters({
user: "user",
}),
},
onLoad(query) {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
if (query.eventId) {
this.eventId = query.eventId;
}
@ -190,36 +169,21 @@ export default {
methods: {
//
async loadEventInfo() {
try {
//
// const res = await this.$api.getEventInfo({
// eventId: this.eventId
// });
//
const mockData = {
id: this.eventId,
eventName: "春季音乐节",
eventLocation: "昆明市中心广场露天舞台",
eventTime: "2024-03-15 19:00:00",
maxParticipants: 500,
coverImage: "https://picsum.photos/seed/music-festival-registration/400/300.jpg"
};
this.eventInfo = mockData;
//
if (this.mode === 'view') {
this.loadRegistrationInfo();
}
} catch (error) {
console.error('加载活动信息失败:', error);
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
});
const req = {
ACTIVITYId: this.eventId,
type: 'encryption'
}
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/Member/GetACTIVITYDetail", req)
uni.hideLoading();
let detail = data.Result_Data
console.log('详情djaksjda', detail);
this.eventInfo = detail;
},
//
@ -302,30 +266,6 @@ export default {
return false;
}
if (!this.formData.idCard.trim()) {
uni.showToast({
title: "请输入身份证号",
icon: "none",
});
return false;
}
if (!/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))\d{3}[0-9Xx]$/.test(this.formData.idCard)) {
uni.showToast({
title: "请输入正确的身份证号",
icon: "none",
});
return false;
}
if (!this.formData.address.trim()) {
uni.showToast({
title: "请输入联系地址",
icon: "none",
});
return false;
}
if (!this.formData.agreement) {
uni.showToast({
title: "请阅读并同意活动参与条款",
@ -338,7 +278,7 @@ export default {
},
//
handleSubmit() {
async handleSubmit() {
if (!this.validateForm()) {
return;
}
@ -351,10 +291,6 @@ export default {
return;
}
uni.showLoading({
title: "提交中...",
mask: true,
});
//
const submitData = {
@ -362,33 +298,33 @@ export default {
...this.formData
};
//
// this.$api.submitRegistration(submitData)
// .then(res => {
// uni.hideLoading();
// uni.showModal({
// title: "",
// content: "",
// showCancel: false,
// success: () => {
// uni.navigateBack();
// }
// });
// })
// .catch(error => {
// uni.hideLoading();
// uni.showToast({
// title: "",
// icon: "none"
// });
// });
console.log('submitData', submitData);
//
setTimeout(() => {
uni.hideLoading();
const req = {
ACTIVITY_ID: this.eventId,
MEMBERSHIP_ID: this.user.MEMBERSHIP_ID,
MEMBERSHIP_NAME: submitData.participantName,
MEMBERSHIP_MOBILEPHONE: submitData.phoneNumber,
ACTIVITYDETAIL_DESC: submitData.remarks,
ACTIVITYDETAIL_STATE: 1,
STAFF_ID: this.user.MEMBERSHIP_ID,
STAFF_NAME: this.user.MEMBERSHIP_NAME,
OPERATE_DATE: this.$moment.now().format("YYYY-MM-DD HH:mm:ss"),
type: 'encryption'
}
uni.showLoading({
title: "提交中...",
mask: true,
});
const data = await this.$api.$posMemberPost("/Member/SynchroACTIVITYDETAIL", req)
uni.hideLoading();
console.log('报名结果', data);
if (data.Result_Code === 100) {
uni.showModal({
title: "报名成功",
content: "您已成功报名该活动,请按时参加!\n\n活动信息将发送到您的手机。",
content: "您已成功报名该活动,请按时参加!",
showCancel: false,
success: (res) => {
if (res.confirm) {
@ -396,7 +332,12 @@ export default {
}
},
});
}, 2000);
} else {
uni.showToast({
title: data.Result_Desc,
icon: 'none'
})
}
}
}
};
@ -483,11 +424,13 @@ export default {
}
.form-section {
padding: 40rpx 32rpx 0;
padding: 40rpx 32rpx 24rpx;
background: white;
margin: 0 32rpx 180rpx;
margin: 0 32rpx 0;
border-radius: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
margin-bottom: calc(160rpx + env(safe-area-inset-bottom));
box-sizing: border-box;
.form-item {
margin-bottom: 24rpx;
@ -606,7 +549,7 @@ export default {
left: 0;
right: 0;
bottom: 0;
background: white;
background: #fff;
border-top: 1rpx solid #f0f0f0;
padding: 24rpx 32rpx calc(24rpx + env(safe-area-inset-bottom));
z-index: 100;
@ -621,6 +564,7 @@ export default {
font-weight: 600;
transition: all 0.3s ease;
border: 2rpx solid #e5e7eb;
height: 40rpx;
&.primary-btn {
background: linear-gradient(135deg, #22c55e, #16a34a);
@ -724,12 +668,13 @@ export default {
.modal-btn {
width: 100%;
padding: 24rpx;
background: #3b82f6;
background: linear-gradient(135deg, #22c55e, #16a34a);
color: white;
border-radius: 16rpx;
font-size: 28rpx;
font-weight: 500;
text-align: center;
box-sizing: border-box;
}
}
}

View File

@ -50,7 +50,7 @@ export default {
this.hanldeGetDetail(query.id);
this.showType = 1
} else {
this.handleGetNewDetail(query.id);
// this.handleGetNewDetail(query.id);
this.showType = 2
}
}
@ -163,11 +163,7 @@ export default {
if (this.detailObj.START_DATE) {
this.detailObj.START_DATE = this.detailObj.START_DATE.split(' ')[0];
}
console.log("this.detailObj", this.detailObj);
//
await this.checkApplyStatus();
},
//
handleApply() {
@ -181,7 +177,7 @@ export default {
}
uni.navigateTo({
url: '/pages/highwayHeadlines/investmentApplication'
url: `/pages/highwayHeadlines/investmentApplication?NOTICEINFO_ID=${this.detailObj.NOTICEINFO_ID}`
});
},
},
@ -265,7 +261,7 @@ export default {
display: flex;
align-items: center;
justify-content: center;
padding: 28rpx;
padding: 14rpx 28rpx;
border-radius: 40rpx;
font-size: 32rpx;
font-weight: 600;
@ -283,10 +279,11 @@ export default {
.btn-text {
margin-right: 12rpx;
font-size: 26rpx;
}
.btn-icon {
font-size: 28rpx;
font-size: 24rpx;
}
}
@ -301,6 +298,7 @@ export default {
.btn-text {
margin-right: 12rpx;
font-size: 26rpx;
}
.applied-icon {

View File

@ -120,64 +120,65 @@ export default {
newReq
);
let uselist = newData.Result_Data.List;
let start = `${this.$moment
.now()
.set("month", -1)
.format("YYYY-MM-DD")} 00:00:00`;
let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
let params = {
startQueryTime: start, //
endQueryTime: end, //
};
let time = Math.ceil(new Date().getTime() / 1000);
let req = {
app_id: "530000301",
biz_content: JSON.stringify(params),
charset: "UTF-8",
pid: "530000301",
service: "trawe.eats.etc",
utc_timestamp: time,
version: "1.0",
sign_type: "RSA2",
};
let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
// let start = `${this.$moment
// .now()
// .set("month", -1)
// .format("YYYY-MM-DD")} 00:00:00`;
// let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
// let params = {
// startQueryTime: start, //
// endQueryTime: end, //
// };
// let time = Math.ceil(new Date().getTime() / 1000);
// let req = {
// app_id: "530000301",
// biz_content: JSON.stringify(params),
// charset: "UTF-8",
// pid: "530000301",
// service: "trawe.eats.etc",
// utc_timestamp: time,
// version: "1.0",
// sign_type: "RSA2",
// };
// let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
//
const sign = await new Promise((resolve, reject) => {
uni.request({
url: "https://admin.es.eshangtech.com/platform/RSA/sign",
method: "POST",
data: {
originalText: signText,
privateKey:
"MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCPXwG/nb3FcwBGftuxm0mS3BjZorB5YEKnNpQLjpsOWEO+AMi6lWe6zXYNuAEjgFxjsMJf7e57KBtwIu+mbw4PzXN1SYHvodi+XaiOI2HTdJQgjQgW/1ss3pdkEmuAu9YnudNW6IKYUn1HKUqvzWWJIDrgT65TNeAA/6uVMvxO89TxDtxhCDjZeH6UyuorC4smQAU+gU+UYEj4CL3CUAnOQiQW74KVLJXlbRbBaTRroA/2XFJ6OsHetABVKb/KjpChcW9Knb3YWyirEbZL7sP7hdbcSeXI3EOWT+TlnbRzWXYPKSvchH/t5Z97jLW+0tIwVEFc3PbLNoallZ5JtYR5AgMBAAECggEAJHPchvK9aHGH9WSVyT+ZYkyxyMwToJi3+bnnxFR62hfZCXs7ji0klZtd07kgGP2u/+3WTfu58fhNmaJYWnHMGnp7S6vn7Jyy9hvsGk+mtNPkQa56CxbcALmLtnb0fGPF3I3jzSoK4l2+2pQGGFLZ6RaXwaagxSlijf5zitjOy+fTmV86P2+cW4QffD/Uum4/5EoIm5GEg0SJbLQLf4nbHtAzP4ppxlm/+lLjouEQVqYy0/QwtV7ZBDaOrdB2PsGd9nJw6ZdiNIsVkqzENjn3YUil94evH4GqGjUZuV2n/aPLQCZQZZgk1Q99qMQQDQuggvbtI9mTwRVJNVU2hRCbgQKBgQDFr8SzTLcqq/fK8PGl0AV7AmQd4ka6PtknULMCqBUgaxEUlTyloU5pOQ+Tve3gzrJc4OqMwDLFdXiPLO8sCRUR5nNVOmJnbS+LKwsyKGig7WzOUTxieA70rt90wjzJ8+QXRw4+91+2Xq/L2TE6WyaMvuLwMHL6TxNPjaGl4V800QKBgQC5qaAEUekcJB+qpZCFka/aqs/kI9vSHWuHN57bgp5s7w4P1U+35lcMbKfHajilbWqsXhzpBerxeK3PBY0vZhhnHa5EpnNLS/KRuFem5A4b4GQr+9c5XmbfB6cxtamv1gDyv0sUx6NAi6/kn0YJm0M5KKD88IQ7piPyu31eCDTfKQKBgQCurWpcmHv9G6k/zHlp7474K5u1gDzI00HkaH1U6pqIY7LbAidtn0P+3Cm0fY3VKC8YvLDkH+x86BjYQncv7PKON5hPheBvzV3GVgl1j5ksIb8T61o1FCr68A6JSByYwoYYP3QKFWGgbrhdopPKIcLFeOJkJBtkrDy+/cIJJkSPEQKBgAeG8f7a10mVyVbgyYAwzOFfpXgJYCMfoDlmLuGVZRjjhD1uF4JMK2FMkmzKSKukSPveAOwNml3Z16oZ/oRabkjX8jXETc5SsO3pfFw+yLemnEkQN8SSqDcIl2WziMKhOX6d9MxN37eBMkthjbRcABi0Jfq7QZEthi2UHlwOlx4pAn9C9zkkAmanv6zrsiw5ymcRkEZj+AnMN7m79XQ4fAmDcg4gAYWhJWlM8/g2ww596Qpkl+AkXrJVxFCjMOc2odPKtLhmfgLVvPrRXgQl/+Dj3op54sTS1xHYyKc3/JBHuSE40K/TgB+sMQb1plSa9v6hw6MrleEo24jU82ZVLs8v"
},
header: {
"content-type": "application/json",
},
success(res) {
console.log("resresresresresresres", res);
resolve(res.data.Result_Desc);
},
});
});
req.sign = sign;
//
const tweetsData = await new Promise((resolve, reject) => {
uni.request({
url: `https://tuozhan.yns-etc.com/gzh/api/v1/gzh/point/tweets`,
method: "POST",
data: req,
header: {
"content-type": "application/x-www-form-urlencoded",
},
success(res) {
resolve(res.data.response.data.data.tweets);
},
});
});
console.log('tweetsDatatweetsData', tweetsData);
let all = uselist.concat(tweetsData)
console.log("allallallall", all);
// const sign = await new Promise((resolve, reject) => {
// uni.request({
// url: "https://admin.es.eshangtech.com/platform/RSA/sign",
// method: "POST",
// data: {
// originalText: signText,
// privateKey:
// "MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCPXwG/nb3FcwBGftuxm0mS3BjZorB5YEKnNpQLjpsOWEO+AMi6lWe6zXYNuAEjgFxjsMJf7e57KBtwIu+mbw4PzXN1SYHvodi+XaiOI2HTdJQgjQgW/1ss3pdkEmuAu9YnudNW6IKYUn1HKUqvzWWJIDrgT65TNeAA/6uVMvxO89TxDtxhCDjZeH6UyuorC4smQAU+gU+UYEj4CL3CUAnOQiQW74KVLJXlbRbBaTRroA/2XFJ6OsHetABVKb/KjpChcW9Knb3YWyirEbZL7sP7hdbcSeXI3EOWT+TlnbRzWXYPKSvchH/t5Z97jLW+0tIwVEFc3PbLNoallZ5JtYR5AgMBAAECggEAJHPchvK9aHGH9WSVyT+ZYkyxyMwToJi3+bnnxFR62hfZCXs7ji0klZtd07kgGP2u/+3WTfu58fhNmaJYWnHMGnp7S6vn7Jyy9hvsGk+mtNPkQa56CxbcALmLtnb0fGPF3I3jzSoK4l2+2pQGGFLZ6RaXwaagxSlijf5zitjOy+fTmV86P2+cW4QffD/Uum4/5EoIm5GEg0SJbLQLf4nbHtAzP4ppxlm/+lLjouEQVqYy0/QwtV7ZBDaOrdB2PsGd9nJw6ZdiNIsVkqzENjn3YUil94evH4GqGjUZuV2n/aPLQCZQZZgk1Q99qMQQDQuggvbtI9mTwRVJNVU2hRCbgQKBgQDFr8SzTLcqq/fK8PGl0AV7AmQd4ka6PtknULMCqBUgaxEUlTyloU5pOQ+Tve3gzrJc4OqMwDLFdXiPLO8sCRUR5nNVOmJnbS+LKwsyKGig7WzOUTxieA70rt90wjzJ8+QXRw4+91+2Xq/L2TE6WyaMvuLwMHL6TxNPjaGl4V800QKBgQC5qaAEUekcJB+qpZCFka/aqs/kI9vSHWuHN57bgp5s7w4P1U+35lcMbKfHajilbWqsXhzpBerxeK3PBY0vZhhnHa5EpnNLS/KRuFem5A4b4GQr+9c5XmbfB6cxtamv1gDyv0sUx6NAi6/kn0YJm0M5KKD88IQ7piPyu31eCDTfKQKBgQCurWpcmHv9G6k/zHlp7474K5u1gDzI00HkaH1U6pqIY7LbAidtn0P+3Cm0fY3VKC8YvLDkH+x86BjYQncv7PKON5hPheBvzV3GVgl1j5ksIb8T61o1FCr68A6JSByYwoYYP3QKFWGgbrhdopPKIcLFeOJkJBtkrDy+/cIJJkSPEQKBgAeG8f7a10mVyVbgyYAwzOFfpXgJYCMfoDlmLuGVZRjjhD1uF4JMK2FMkmzKSKukSPveAOwNml3Z16oZ/oRabkjX8jXETc5SsO3pfFw+yLemnEkQN8SSqDcIl2WziMKhOX6d9MxN37eBMkthjbRcABi0Jfq7QZEthi2UHlwOlx4pAn9C9zkkAmanv6zrsiw5ymcRkEZj+AnMN7m79XQ4fAmDcg4gAYWhJWlM8/g2ww596Qpkl+AkXrJVxFCjMOc2odPKtLhmfgLVvPrRXgQl/+Dj3op54sTS1xHYyKc3/JBHuSE40K/TgB+sMQb1plSa9v6hw6MrleEo24jU82ZVLs8v"
// },
// header: {
// "content-type": "application/json",
// },
// success(res) {
// console.log("resresresresresresres", res);
// resolve(res.data.Result_Desc);
// },
// });
// });
// req.sign = sign;
// //
// const tweetsData = await new Promise((resolve, reject) => {
// uni.request({
// url: `https://tuozhan.yns-etc.com/gzh/api/v1/gzh/point/tweets`,
// method: "POST",
// data: req,
// header: {
// "content-type": "application/x-www-form-urlencoded",
// },
// success(res) {
// resolve(res.data.response.data.data.tweets);
// },
// });
// });
// console.log('tweetsDatatweetsData', tweetsData);
let all = uselist
// console.log("allallallall", all);
if (all && all.length > 0) {
let typeList = []
let allRes = {}

View File

@ -1,5 +1,5 @@
<template>
<div class="application-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="application-page">
<!-- 页面标题 -->
<div class="page-header">
<div class="header-title">报名申请</div>
@ -43,13 +43,6 @@
</div>
<input class="item-input" v-model="formData.contactPerson" placeholder="请输入联系人姓名" />
</div>
<!-- 邮箱 -->
<div class="form-item">
<div class="item-label">邮箱地址</div>
<input class="item-input" v-model="formData.email" placeholder="请输入邮箱地址" />
</div>
<!-- 经营业态 -->
<div class="form-item">
<div class="item-label">
@ -66,10 +59,10 @@
</div>
</div>
<!-- 备注说明 -->
<!-- 商家简介 -->
<div class="form-item">
<div class="item-label">备注说明</div>
<textarea class="item-textarea" v-model="formData.remarks" placeholder="请输入其他需要说明的信息" :maxlength="200" />
<div class="item-label">商家简介</div>
<textarea class="item-textarea" v-model="formData.remarks" placeholder="请输入商家简介" :maxlength="200" />
</div>
<!-- 证照上传 -->
@ -80,11 +73,11 @@
</div>
<div class="upload-section">
<div class="upload-grid">
<div class="upload-item" v-for="(file, index) in uploadedFiles" :key="index">
<image class="upload-image" :src="file.url" @click="previewImage(index)" />
<div class="upload-item" v-for="(file, index) in imgsList" :key="index">
<image class="upload-image" :src="file" @click="previewImage(index)" />
<div class="delete-btn" @click="deleteFile(index)">×</div>
</div>
<div class="upload-btn" v-if="uploadedFiles.length < 5" @click="chooseImage">
<div class="upload-btn" v-if="imgsList.length < 5" @click="chooseImage">
<div class="upload-icon">+</div>
<div class="upload-text">上传证照</div>
</div>
@ -107,24 +100,25 @@
export default {
data() {
return {
safeHeight: "",
formData: {
merchantName: "", //
creditCode: "", //
phone: "", //
contactPerson: "", //
email: "", //
businessType: "", //
remarks: "", //
},
uploadedFiles: [], //
NOTICEINFO_ID: "",// id
businessTypes: [],
imgsList: [],//
saveMsg: [],//
};
},
onLoad() {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
onLoad(query) {
console.log('dadas', query);
if (query.NOTICEINFO_ID) {
this.NOTICEINFO_ID = query.NOTICEINFO_ID
}
this.getBusinessTypes();
},
methods: {
@ -163,11 +157,86 @@ export default {
chooseImage() {
const _this = this;
uni.chooseImage({
count: 5 - this.uploadedFiles.length,
count: 5 - this.imgsList.length,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success(res) {
_this.uploadFiles(res.tempFilePaths);
success(rs) {
let tempFilePath = rs.tempFiles
if (tempFilePath && tempFilePath.length > 0) {
for (let i = 0; i < tempFilePath.length; i++) {
uni.getImageInfo({
src: tempFilePath[i].path,
success(imgInfo) {
let quality = 100
if (imgInfo.size > 1024 * 200) {
quality = 1024 * 200 / imgInfo.size * 100
}
if (quality < 100 && tempFilePath.indexOf('.jpg') > -1) {
uni.compressImage({
// src: tempFilePath,
src: imgInfo.path,
quality: quality,
success(res) {
uni.showLoading({
title: '图片上传中...',
mask: true
})
uni.uploadFile({
url: 'https://eshangtech.com:18998/Coop.Merchant/Handler/handler_ajax.ashx?action_type=UploadFile&folder=suggestion',
// filePath: res.tempFilePath,
filePath: imgInfo.path,
name: 'data',
success(res) {
let _data = JSON.parse(res.data)
_this.imgsList.push(_data.Data.IMAGE_URL)
uni.hideLoading()
_this.noPost = true
},
fail(res) {
console.log(res)
_this.noPost = true
}
})
},
fail(error) {
console.log(error)
_this.noPost = true
}
})
} else {
uni.showLoading({
title: '图片上传中...',
mask: true
})
uni.uploadFile({
url: 'https://eshangtech.com:18998/Coop.Merchant/Handler/handler_ajax.ashx?action_type=UploadFile&folder=suggestion',
// filePath: tempFilePath,
filePath: imgInfo.path,
name: 'data',
success(res) {
let _data = JSON.parse(res.data)
_this.imgsList.push(_data.Data.IMAGE_URL)
uni.hideLoading()
_this.noPost = true
},
fail(res) {
console.log(res)
_this.noPost = true
}
})
}
},
fail(error) {
}
})
}
}
},
});
},
@ -176,7 +245,7 @@ export default {
uploadFiles(filePaths) {
//
filePaths.forEach((path) => {
this.uploadedFiles.push({
this.imgsList.push({
url: path,
name: "证照材料",
});
@ -185,12 +254,12 @@ export default {
//
deleteFile(index) {
this.uploadedFiles.splice(index, 1);
this.imgsList.splice(index, 1);
},
//
previewImage(index) {
const urls = this.uploadedFiles.map(file => file.url);
const urls = this.imgsList.map(file => file);
uni.previewImage({
current: index,
urls: urls,
@ -255,7 +324,7 @@ export default {
return false;
}
if (this.uploadedFiles.length === 0) {
if (this.imgsList.length === 0) {
uni.showToast({
title: "请上传证照材料",
icon: "none",
@ -267,22 +336,45 @@ export default {
},
//
handleSubmit() {
async handleSubmit() {
if (!this.validateForm()) {
return;
}
uni.showLoading({
title: "提交中...",
mask: true,
});
console.log('this.formDatathis.formDatathis.formData', this.formData);
console.log('this.imgsList', this.imgsList);
//
setTimeout(() => {
uni.hideLoading();
if (!this.NOTICEINFO_ID) {
return
}
const req = {
NOTICEINFO_ID: this.NOTICEINFO_ID,//
BUSINESSMAN_NAME: this.formData.merchantName,
TAXPAYER_IDENTIFYCODE: this.formData.creditCode,
LINK_PERSON: this.formData.contactPerson,
LINK_MOBILEPHONE: this.formData.phone,
BUSINESS_PROFILE: this.formData.remarks,
MEMBERSHIP_TYPE: this.formData.businessType,//
RTNOTICEINFO_STATE: 1,
RTNOTICEINFO_URL: this.imgsList && this.imgsList.length > 0 ? this.imgsList.toString() : "",// string
OPERATE_DATE: this.$moment.now().format("YYYY-MM-DD HH:mm:ss"),
type: 'encryption'
}
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/MemberMessage/SynchroRTNOTICEINFO", req)
uni.hideLoading();
console.log('datadasdasdasda', data);
if (data.Result_Code === 100) {
uni.showModal({
title: "提交成功",
content: "您的投资报名申请已提交,我们会尽快与您联系!",
content: "您的报名申请已提交,我们会尽快与您联系!",
showCancel: false,
success: (res) => {
if (res.confirm) {
@ -290,7 +382,33 @@ export default {
}
},
});
}, 2000);
} else {
uni.showToast({
title: data.Result_Desc,
icon: 'none'
})
}
// uni.showLoading({
// title: "...",
// mask: true,
// });
// //
// setTimeout(() => {
// uni.hideLoading();
// uni.showModal({
// title: "",
// content: "",
// showCancel: false,
// success: (res) => {
// if (res.confirm) {
// uni.navigateBack();
// }
// },
// });
// }, 2000);
},
},
};
@ -322,12 +440,13 @@ export default {
}
.form-section {
padding: 40rpx 32rpx 160rpx;
padding: 40rpx 32rpx 24rpx;
background: white;
margin: -20rpx 32rpx 0;
border-radius: 24rpx 24rpx 0 0;
border-radius: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
border-bottom: 1rpx solid #f5f5f5;
margin-bottom: calc(24rpx + env(safe-area-inset-bottom) + 120rpx);
.form-item {
margin-bottom: 40rpx;
@ -534,7 +653,7 @@ export default {
display: flex;
align-items: center;
justify-content: center;
padding: 28rpx;
padding: 18rpx 28rpx;
border-radius: 40rpx;
font-size: 32rpx;
font-weight: 600;
@ -552,10 +671,11 @@ export default {
.btn-text {
margin-right: 12rpx;
font-size: 26rpx;
}
.btn-icon {
font-size: 28rpx;
font-size: 24rpx;
}
}
}

View File

@ -6,7 +6,7 @@
: `url(https://eshangtech.com/minTestImg/pageBg.png)`,
}">
<view class="topBox" :style="{
height: menu.bottom + 14 + 'px',
height: menu.bottom + 14 + 'px',
backgroundImage:
pageType === 'spring'
? `url(https://eshangtech.com/minTestImg/springPageBg.png)`
@ -1891,49 +1891,49 @@ export default {
},
//
async handleGetHighwayHeadlines() {
let start = `${this.$moment
.now()
.set("month", -1)
.format("YYYY-MM-DD")} 00:00:00`;
let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
let params = {
startQueryTime: start, //
endQueryTime: end, //
};
let time = Math.ceil(new Date().getTime() / 1000);
// let start = `${this.$moment
// .now()
// .set("month", -1)
// .format("YYYY-MM-DD")} 00:00:00`;
// let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
// let params = {
// startQueryTime: start, //
// endQueryTime: end, //
// };
// let time = Math.ceil(new Date().getTime() / 1000);
let req = {
app_id: "530000301",
biz_content: JSON.stringify(params),
charset: "UTF-8",
pid: "530000301",
service: "trawe.eats.etc",
utc_timestamp: time,
version: "1.0",
sign_type: "RSA2",
};
let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
// let req = {
// app_id: "530000301",
// biz_content: JSON.stringify(params),
// charset: "UTF-8",
// pid: "530000301",
// service: "trawe.eats.etc",
// utc_timestamp: time,
// version: "1.0",
// sign_type: "RSA2",
// };
// let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
//
const sign = await new Promise((resolve, reject) => {
uni.request({
url: "https://admin.es.eshangtech.com/prod-api/RSA/sign",
method: "POST",
data: {
originalText: signText,
privateKey:
"MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtIkIJLbZYI9NvTRkRbqtjJ73gkAUJZBJw88Z+O8prX2HXMTIedmZZxTwbfM5kGpl9VmS0CY8QL0DnDsgHO8QnSDpN1jiqTD9lk1evycuF7ujmlOk/cJ5x2cLPn9rPIrQn1lxp9mBiO1m9vsrNOze/kx7wRyif/+hvn5Q9KtNEMy0K8oOE5vktnjkk1AhhXrTii9eIjOrO3pRgh9cFA9kqQpvD14CImD7tdCgyntKcYAB7rlin6a2N0yH9JJINjOyOiyHufP8sR7pb9VYXVYXukOCItdC9QQluQhSdyC/3BfZD5zV1A+X7pUle7dDLGG6aSZyCibg16siFIEX94KYfAgMBAAECggEAcP5uwrbGzvdywq06sxnbWTdSwQC9iMd7EaTH4xL6pOD3Zg6Be0givGvxMq9dtA94JUkBKE8kw5dTcHlBKxdiiZCmHK63BM4GgjCLhfrZjWvDLNn68KB7iCpq7j6R+6XWljlczvsxJGs/woqGqTMAy1MlWgPXC7Vk6ZTolpMglt0IJOzPtgJ66qU2CtNRjowkXSCHDO2RCjkmYcjU6W+eCvi9cXIXhLv5yra1PE0KOxn3NiEFwgGUXpu8LKqxuUfGLuHljoLxWV8EEfwZaWB6Wy1DHMMgxhKrO3xEmdMEqtvJmF98LRSYiJerkExY8Gdx8bkLPjlCLYKW4JVuPmyYgQKBgQD8l0lLtB94MQMib0t8RzqlbKcczTAkicjSms3/P4kwh50GC8OqwjJB75n4yQyDPgsjms/SnRMq1zjgm+MHSC4snpLCcvKFYLnvrslWGu/2lyUTwEwdUdQe1ILG4Y9NXKWg4zXpKfJ2Rz/cqw6bHGYhQWZ62AXQgiz+W7cIPrsHsQKBgQCveHGHF0WqtYAmrW7nf04PKmcJ5U2briYCWOtWJE5Mo5BYxsGLX6vI53DMNQ42hFk0ye61VNfcazAoGI3mM4+j6R9k3ek8EtkBYBro5eeoBtB7TMTJagQqzBLz316mJBsFmw3TiC9BzYhs3tKJnVxpfqXoqsyu2ZA6VG5Y/gXOzwKBgCbejPvmUvVm7WmOINqWB3NPXgPzm1X0EgA+rDZ8K3tZUxOMGeccDSnSWipLne5QTNyExThOzZVJG0qNEombVOeu2zyq/aECunoktnzWllim96CrdcsJPZAk+Z7rNOcdu6sfa7teph4HZs9pT00VOK4jZ0a+GV71uUDHEkplhNhxAoGAMDOi5BxFe/595KIR7C/xboMUaQh/iDuPn2dzxmcUx0LLPUfkFPhEBV1mhAIzFFDI/JJYK6HR5m/fe7Q7DritRbaddCTtlB4NVK5k1gOJ3oN4s9ZD3Jxt5p/GuQ1sP7F9Zs3QP4KSkL34MwgGx9zdbPFofACnV4TWdN+KrJGjYMsCgYAE0CMM7rYHGY3Vt3/WZZJ+DPlKE6Q+uvFDomtsB1IavCeEJyjBP9+GhBHat86aA3mCFjf4emj1or7OEgPc0gCMtKBG6m10CrzLjzdWnOTveqWVUW/FS2gf17cIO5/FK/4KmAjH/QN24KXm395Qu8C0UFfgA66yysakJFkvXVBiPg==",
},
header: {
"content-type": "application/json",
},
success(res) {
resolve(res.data.data);
},
});
});
// //
// const sign = await new Promise((resolve, reject) => {
// uni.request({
// url: "https://admin.es.eshangtech.com/prod-api/RSA/sign",
// method: "POST",
// data: {
// originalText: signText,
// privateKey:
// "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtIkIJLbZYI9NvTRkRbqtjJ73gkAUJZBJw88Z+O8prX2HXMTIedmZZxTwbfM5kGpl9VmS0CY8QL0DnDsgHO8QnSDpN1jiqTD9lk1evycuF7ujmlOk/cJ5x2cLPn9rPIrQn1lxp9mBiO1m9vsrNOze/kx7wRyif/+hvn5Q9KtNEMy0K8oOE5vktnjkk1AhhXrTii9eIjOrO3pRgh9cFA9kqQpvD14CImD7tdCgyntKcYAB7rlin6a2N0yH9JJINjOyOiyHufP8sR7pb9VYXVYXukOCItdC9QQluQhSdyC/3BfZD5zV1A+X7pUle7dDLGG6aSZyCibg16siFIEX94KYfAgMBAAECggEAcP5uwrbGzvdywq06sxnbWTdSwQC9iMd7EaTH4xL6pOD3Zg6Be0givGvxMq9dtA94JUkBKE8kw5dTcHlBKxdiiZCmHK63BM4GgjCLhfrZjWvDLNn68KB7iCpq7j6R+6XWljlczvsxJGs/woqGqTMAy1MlWgPXC7Vk6ZTolpMglt0IJOzPtgJ66qU2CtNRjowkXSCHDO2RCjkmYcjU6W+eCvi9cXIXhLv5yra1PE0KOxn3NiEFwgGUXpu8LKqxuUfGLuHljoLxWV8EEfwZaWB6Wy1DHMMgxhKrO3xEmdMEqtvJmF98LRSYiJerkExY8Gdx8bkLPjlCLYKW4JVuPmyYgQKBgQD8l0lLtB94MQMib0t8RzqlbKcczTAkicjSms3/P4kwh50GC8OqwjJB75n4yQyDPgsjms/SnRMq1zjgm+MHSC4snpLCcvKFYLnvrslWGu/2lyUTwEwdUdQe1ILG4Y9NXKWg4zXpKfJ2Rz/cqw6bHGYhQWZ62AXQgiz+W7cIPrsHsQKBgQCveHGHF0WqtYAmrW7nf04PKmcJ5U2briYCWOtWJE5Mo5BYxsGLX6vI53DMNQ42hFk0ye61VNfcazAoGI3mM4+j6R9k3ek8EtkBYBro5eeoBtB7TMTJagQqzBLz316mJBsFmw3TiC9BzYhs3tKJnVxpfqXoqsyu2ZA6VG5Y/gXOzwKBgCbejPvmUvVm7WmOINqWB3NPXgPzm1X0EgA+rDZ8K3tZUxOMGeccDSnSWipLne5QTNyExThOzZVJG0qNEombVOeu2zyq/aECunoktnzWllim96CrdcsJPZAk+Z7rNOcdu6sfa7teph4HZs9pT00VOK4jZ0a+GV71uUDHEkplhNhxAoGAMDOi5BxFe/595KIR7C/xboMUaQh/iDuPn2dzxmcUx0LLPUfkFPhEBV1mhAIzFFDI/JJYK6HR5m/fe7Q7DritRbaddCTtlB4NVK5k1gOJ3oN4s9ZD3Jxt5p/GuQ1sP7F9Zs3QP4KSkL34MwgGx9zdbPFofACnV4TWdN+KrJGjYMsCgYAE0CMM7rYHGY3Vt3/WZZJ+DPlKE6Q+uvFDomtsB1IavCeEJyjBP9+GhBHat86aA3mCFjf4emj1or7OEgPc0gCMtKBG6m10CrzLjzdWnOTveqWVUW/FS2gf17cIO5/FK/4KmAjH/QN24KXm395Qu8C0UFfgA66yysakJFkvXVBiPg==",
// },
// header: {
// "content-type": "application/json",
// },
// success(res) {
// resolve(res.data.data);
// },
// });
// });
req.sign = sign;
// req.sign = sign;
//
// const tweetsData = await new Promise((resolve, reject) => {

View File

@ -94,8 +94,9 @@
去付款</view>
<view class="orderItemBottomRightBuyAgain" v-if="item.SALEBILL_STATE === 2010"
@click.stop="handleConfirmReceipt(item)">确认收货</view>
<!-- v-if="item.SALEBILL_STATE === 3000" -->
<view class="orderItemBottomRightBuyAgain" @click.stop="handleInvoiceApplication(item)">开票申请</view>
<!-- -->
<view class="orderItemBottomRightBuyAgain" v-if="item.SALEBILL_STATE === 3000"
@click.stop=" handleInvoiceApplication(item)">开票申请</view>
<!-- <view class="orderItemBottomRightBuyAgain" @click.stop="handleGoStore">再次购买</view> -->
</view>
</view>
@ -113,12 +114,13 @@
<canvas v-if="!qrcodeImg" canvas-id="qrcode" style="height: 80vw; width: 80vw" />
<image v-if="qrcodeImg" style="height: 80vw; width: 80vw" :src="qrcodeImg" />
<!-- @click="handlePreviewImg" -->
</view>
<view class="notice">
请先将二维码保存至手机相册然后使用微信扫一扫识别该二维码完成当前订单的发票开具
由于微信小程序安全策略限制请先将截图当前悬浮框存储到手机再使用微信扫一扫识别完成当前订单的发票开具
</view>
<view class="errorNotice">
*此二维码仅限本订单使用仅能开具本次交易的发票请勿用于其他订单
*此二维码仅限本订单使用仅能开具本次交易的发票无法用于其他订单
</view>
</view>
</uni-popup>
@ -314,13 +316,36 @@ export default {
}
},
methods: {
parseQuery(url) {
if (!url) return {};
const queryString = url.split('?')[1];
if (!queryString) return {};
const pairs = queryString.split('&');
const params = {};
for (let i = 0; i < pairs.length; i++) {
const [key, value] = pairs[i].split('=');
if (key) {
params[decodeURIComponent(key)] = decodeURIComponent(value || '');
}
}
return params;
},
//
handlePreviewImg() {
const url = this.qrcodeImg;
if (!url) return;
wx.previewImage({
current: url, //
urls: [url], //
showmenu: true
});
},
//
handleInvoiceApplication(obj) {
this.$refs.billPopup.open('center')
async handleInvoiceApplication(obj) {
let systemInfo = uni.getSystemInfoSync();
console.log('systemInfosystemInfosystemInfo', systemInfo);
// 20250304160228
const date = new Date(obj.ORDER_DATE)
let y = date.getFullYear()
@ -346,34 +371,33 @@ export default {
}
let time = `${y}${m}${d}${h}${minutes}${second}`
this.$utils.qrc(
"qrcode",
`https://eshangtech.com/JumpDocument/PlatformModuleManage/Modules/InfoSearch/JumpToHXQcode.aspx?content=535001|019051||${time}|${obj.orderAmount}|4|${obj.SALEBILL_ID}`,
systemInfo.screenWidth * 0.8,
systemInfo.screenWidth * 0.8,
null,
""
);
// let _this = this
// setTimeout(() => {
// wx.canvasToTempFilePath({
// canvasId: "qrcode",
// success: (res) => {
// console.log("barcode", res);
// _this.qrcodeImg = res.tempFilePath;
// _this.$forceUpdate();
// },
// });
// }, 300)
return
uni.navigateTo({
url: `/pages/thirdPartyInvoice/index?time=${time}&orderAmount=${obj.ORDER_AMOUNT}&id=${obj.SALEBILL_ID}`
const req = {
Content: `535001|019051||${time}|${obj.ORDER_AMOUNT}|4|${obj.SALEBILL_ID}`,
Detail: "",
type: 'encryption'
}
uni.showLoading({
title: "开票申请中..."
})
const data = await this.$api.$zzyLocalPost(
"/ThirdInterface/GetJDPJScanUrl",
req
);
uni.hideLoading()
if (data.Result_Code === 100) {
let h5Url = data.Result_Data.h5Url
const params = this.parseQuery(h5Url)
wx.navigateToMiniProgram({
appId: 'wx107ec23662f360a7',
path: `/pages/index/index?amount=${params.amount}&billNo=${params.billNo}&md5=${params.md5}&qrKey=${params.qrKey}&timestamp=${params.timestamp}`,
});
} else {
uni.showToast({
title: data.Result_Desc,
duration: 2000
})
}
},
//
handleGoOrderSearch() {

View File

@ -307,6 +307,7 @@ export default {
_this.barcodeWidth,
_this.barcodeHeight
);
console.log('codecodecode', code);
// _this.$utils.barc('barcode2', code, _this.qrcodeHeight2, 160, 90)
_this.$utils.qrc(

View File

@ -1,56 +1,39 @@
<template>
<div class="reststop-detail-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="reststop-detail-page">
<!-- 休息站基本信息 -->
<div class="reststop-header">
<div class="reststop-title">{{ reststopInfo.reststopName }}</div>
<div class="reststop-location">{{ reststopInfo.location }}</div>
<div class="reststop-title">{{ reststopInfo.RESTSTATION_NAME }}</div>
<div class="reststop-location" style="display: inline-block;">{{ reststopInfo.RESTSTATION_LOCATION }}</div>
<div class="status-badges">
<div class="status-badge" :class="[
reststopInfo.doorLockStatus === 'unlocked' ? 'badge-available' : 'badge-occupied'
]">
{{ getDoorLockStatusText(reststopInfo.doorLockStatus) }}
</div>
<div class="status-badge" :class="[
getCleaningBadgeClass(reststopInfo.cleaningStatus)
]">
{{ getCleaningStatusText(reststopInfo.cleaningStatus) }}
<div class="status-badges" style="display: inline-block;">
<div class="status-badge">
{{ getDoorLockStatusText(reststopInfo.LOCK_STATUS) }}
</div>
</div>
</div>
<!-- 订单信息 -->
<div class="order-section" v-if="reststopInfo.orderStatus && reststopInfo.orderStatus !== 'cancelled'">
<div class="order-section" v-if="orderDetail">
<div class="section-title">订单信息</div>
<div class="order-card">
<div class="order-item">
<div class="order-label">订单状态</div>
<div class="order-value" :class="[
reststopInfo.orderStatus === 'active' ? 'order-active' :
(reststopInfo.orderStatus === 'completed' ? 'order-completed' : 'order-cancelled')
]">
{{ getOrderStatusText(reststopInfo.orderStatus) }}
<div class="order-value" :class="orderDetail.RESTSTATIONBILL_STATE === 2 ? 'order-active' :
(orderDetail.RESTSTATIONBILL_STATE === 2 ? 'order-completed' : 'order-cancelled')
">
{{ getOrderStatusText(orderDetail.RESTSTATIONBILL_STATE) }}
</div>
</div>
<div class="order-item">
<div class="order-label">下单时间</div>
<div class="order-value">{{ formatDateTime(reststopInfo.orderTime) }}</div>
<div class="order-value">{{ orderDetail.OPERATE_DATE }}</div>
</div>
<div class="order-item">
<div class="order-label">剩余时间</div>
<div class="order-value remaining-time">
{{ reststopInfo.remainingTime || '已结束' }}
</div>
</div>
<div class="order-item" v-if="reststopInfo.orderStatus === 'active'">
<div class="order-label">续费状态</div>
<div class="order-value" :class="[
reststopInfo.renewalStatus === 'available' ? 'renewal-available' : 'renewal-unavailable'
]">
{{ getRenewalStatusText(reststopInfo.renewalStatus) }}
{{ orderDetail.REMAIN_SECONDS || '已结束' }}
</div>
</div>
</div>
@ -65,9 +48,9 @@
<div class="device-info">
<div class="device-name">门锁</div>
<div class="device-status" :class="[
reststopInfo.doorLockStatus === 'unlocked' ? 'status-unlocked' : 'status-locked'
reststopInfo.LOCK_STATUS === 1 ? 'status-unlocked' : 'status-locked'
]">
{{ reststopInfo.doorLockStatus === 'unlocked' ? '未锁定' : '已锁定' }}
{{ reststopInfo.LOCK_STATUS === 1 ? '未锁定' : '已锁定' }}
</div>
</div>
</div>
@ -76,11 +59,9 @@
<div class="device-icon">🧹</div>
<div class="device-info">
<div class="device-name">保洁</div>
<div class="device-status" :class="[
reststopInfo.cleaningStatus === 'clean' ? 'device-clean' :
(reststopInfo.cleaningStatus === 'cleaning' ? 'device-cleaning' : 'device-dirty')
]">
{{ getCleaningStatusText(reststopInfo.cleaningStatus) }}
<div class="device-status"
:class="reststopInfo.CLEANING_STATUS === 1 ? 'device-dirty' : reststopInfo.CLEANING_STATUS === 2 ? 'status-locked' : reststopInfo.CLEANING_STATUS === 3 ? 'status-unlocked' : ''">
{{ getCleaningStatusText(reststopInfo.CLEANING_STATUS) }}
</div>
</div>
</div>
@ -88,14 +69,13 @@
</div>
<!-- 评价信息 -->
<div class="rating-section" v-if="reststopInfo.rating">
<div class="rating-section" v-if="reststopInfo.RESTSTATIONBILL_SCORE">
<div class="section-title">用户评价</div>
<div class="rating-card">
<div class="rating-score">
<div class="score-number">{{ reststopInfo.rating }}</div>
<div class="score-number">{{ reststopInfo.RESTSTATIONBILL_SCORE }}</div>
<div class="score-stars">
<span class="star" v-for="i in 5" :key="i"
:class="[i <= reststopInfo.rating ? 'star-filled' : 'star-empty']"></span>
<span class="star star-filled" v-for="i in reststopInfo.RESTSTATIONBILL_SCORE" :key="i"></span>
</div>
</div>
<div class="rating-desc">用户综合评分</div>
@ -110,14 +90,14 @@
<div class="contact-icon">📞</div>
<div class="contact-info">
<div class="contact-label">应急联系</div>
<div class="contact-value">{{ reststopInfo.emergencyContact }}</div>
<div class="contact-value">{{ reststopInfo.EMERGENCY_CONTACT }}</div>
</div>
</div>
</div>
</div>
<!-- 操作按钮 -->
<div class="action-section">
<!-- <div class="action-section">
<div class="action-btn" :class="[
reststopInfo.orderStatus === 'active' ? 'action-active' :
(reststopInfo.doorLockStatus === 'locked' ? 'action-occupied' :
@ -128,7 +108,7 @@
<div class="secondary-btn" v-if="reststopInfo.orderStatus === 'active'" @click="handleRenewal">
续费使用
</div>
</div>
</div> -->
</div>
</template>
@ -136,72 +116,71 @@
export default {
data() {
return {
menu: {},
safeHeight: "",
reststopId: "",
reststopInfo: {},
defaultCover: 'https://picsum.photos/seed/reststop-detail/400/300.jpg'
orderDetail: {}
};
},
onLoad(query) {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
this.menu = uni.getMenuButtonBoundingClientRect();
if (query.id) {
this.reststopId = query.id;
this.loadReststopDetail();
}
},
methods: {
//
async loadReststopDetail() {
try {
uni.showLoading({
title: '加载中...',
mask: true
});
//
// const res = await this.$api.getReststopDetail({
// reststopId: this.reststopId
// });
//
const mockData = {
id: this.reststopId,
reststopName: "昆明服务区A区-01号休息站",
location: "昆明服务区A区东侧靠近便利店",
doorLockStatus: "unlocked",
orderStatus: "active",
orderTime: "2024-03-20 14:30:00",
remainingTime: "45分钟",
renewalStatus: "available",
cleaningStatus: "clean",
emergencyContact: "13800138000",
rating: 4.8,
facilities: [
"空调", "WiFi", "充电插座", "饮水机", "独立卫浴"
],
description: "舒适便捷的共享休息空间,配备完善的基础设施,为您提供安静的休息环境。"
};
this.reststopInfo = mockData;
uni.hideLoading();
} catch (error) {
console.error('加载休息站详情失败:', error);
uni.hideLoading();
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
});
const req = {
RESTSTATIONId: this.reststopId,
type: 'encryption'
}
},
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/Member/GetRESTSTATIONDetail", req)
uni.hideLoading();
let detail = data.Result_Data
this.reststopInfo = detail;
console.log('this.reststopInfothis.reststopInfothis.reststopInfo', this.reststopInfo);
this.handleGetOrderList()
},
//
async handleGetOrderList() {
const req = {
SearchParameter: {
RESTSTATION_IDS: this.reststopInfo.RESTSTATION_ID,
RESTSTATIONBILL_STATES: "1,2,3"
},
PageIndex: 1,
PageSize: 1,
sortStr: "OPERATE_DATE desc",
type: 'encryption'
}
const data = await this.$api.$posMemberPost("/Member/GetRESTSTATIONBILLList", req)
let list = data.Result_Data.List
if (list && list.length > 0) {
let result = list[0].OPERATE_DATE.replace('T', ' ');
this.orderDetail = {
...list[0],
OPERATE_DATE: result,
}
} else {
this.orderDetail = {}
}
console.log(' this.orderDetail', this.orderDetail);
},
//
makePhoneCall() {
uni.makePhoneCall({
phoneNumber: this.reststopInfo.emergencyContact
phoneNumber: this.reststopInfo.EMERGENCY_CONTACT
});
},
@ -322,30 +301,30 @@ export default {
//
getDoorLockStatusText(status) {
const statusMap = {
'unlocked': '可使用',
'locked': '使用中'
1: '可使用',
2: '使用中'
};
return statusMap[status] || '未知';
return statusMap[status] || '';
},
//
getCleaningStatusText(status) {
const statusMap = {
'clean': '已清洁',
'cleaning': '清洁中',
'dirty': '待清洁'
1: '待清洁',
2: '清洁中',
3: '已清洁'
};
return statusMap[status] || '未知';
return statusMap[status] || '';
},
//
getOrderStatusText(status) {
const statusMap = {
'active': '进行中',
'completed': '已完成',
'cancelled': '已取消'
1: '待付款',
2: '使用中',
3: '已完成'
};
return statusMap[status] || '无订单';
return statusMap[status] || '';
},
//
@ -354,23 +333,9 @@ export default {
'available': '可续费',
'unavailable': '不可续费'
};
return statusMap[status] || '未知';
return statusMap[status] || '';
},
//
getCleaningBadgeClass(status) {
const classMap = {
'clean': 'badge-clean',
'cleaning': 'badge-cleaning',
'dirty': 'badge-dirty'
};
return classMap[status] || 'badge-default';
},
//
getMainActionText() {
if (this.reststopInfo.orderStatus === 'active') return '使用中';
@ -392,7 +357,7 @@ export default {
.reststop-header {
background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
padding: 32rpx;
padding: 24rpx;
color: white;
.reststop-title {
@ -403,7 +368,6 @@ export default {
.reststop-location {
font-size: 24rpx;
margin-bottom: 16rpx;
}
.status-badges {
@ -411,35 +375,13 @@ export default {
gap: 16rpx;
.status-badge {
padding: 12rpx 12rpx 0;
padding: 6rpx 12rpx;
border-radius: 20rpx;
font-size: 24rpx;
font-weight: 500;
margin-left: 16rpx;
&.badge-available {
background: rgba(34, 197, 94, 0.2);
color: white;
}
&.badge-occupied {
background: rgba(245, 158, 11, 0.2);
color: white;
}
&.badge-clean {
background: rgba(16, 185, 129, 0.2);
color: white;
}
&.badge-cleaning {
background: rgba(59, 130, 246, 0.2);
color: white;
}
&.badge-dirty {
background: rgba(239, 68, 68, 0.2);
color: white;
}
}
}
}

View File

@ -1,43 +1,58 @@
<template>
<div class="reststop-list-page" :style="{ paddingBottom: `${safeHeight}px` }">
<div class="reststop-list-page">
<view class="topBox" :style="{ height: menu.bottom + 14 + 'px' }">
<view class="topContent" :style="{ paddingTop: menu.top + 'px', height: menu.height + 'px' }">
<view class="backIconBox" @click="handleBack">
<image class="backIcon" src="/static/images/home/brankBlackArrow.svg" />
</view>
<view class="currentServiceBox" @click="goSelectServer">
<image class="servicePosition" src="/static/images/home/servicePosition.svg" />
<text class="currentService">{{ detailInfo.SERVERPART_NAME }}</text>
<image class="rightArrow" src="/static/images/home/rightArrow.svg" />
</view>
</view>
</view>
<!-- 共享休息站列表 -->
<div class="reststops-section">
<div class="reststops-section" :style="{ marginTop: menu.bottom + 14 + 'px' }">
<div class="reststops-list" v-if="reststopList.length > 0">
<div class="reststop-item" v-for="(item, index) in reststopList" :key="index" @click="goToDetail(item)">
<div class="reststop-header">
<div class="reststop-name">{{ item.reststopName }}</div>
<div class="reststop-name">{{ item.RESTSTATION_NAME }}</div>
<div class="reststop-status" :class="[
item.doorLockStatus === 'unlocked' ? 'status-available' : 'status-occupied'
item.LOCK_STATUS === 1 ? 'status-available' : 'status-occupied'
]">
{{ getDoorLockStatusText(item.doorLockStatus) }}
{{ getDoorLockStatusText(item.LOCK_STATUS) }}
</div>
</div>
<div class="reststop-info">
<div class="info-row">
<div class="info-item">
<!-- <div class="info-item">
<span class="info-icon">🕒</span>
<span class="info-text">剩余时间{{ item.remainingTime || '0分钟' }}</span>
</div> -->
<div class="info-item">
<span class="info-icon">🧹</span>
<span class="info-text">保洁状态{{ getCleaningStatusText(item.CLEANING_STATUS) }}</span>
</div>
<div class="info-item">
<span class="info-icon"></span>
<span class="info-text">评分{{ item.rating || '暂无' }}</span>
<span class="info-text">评分{{ item.RESTSTATIONBILL_SCORE || '暂无' }}</span>
</div>
</div>
<div class="info-row">
<div class="info-item">
<span class="info-icon">🧹</span>
<span class="info-text">保洁状态{{ getCleaningStatusText(item.cleaningStatus) }}</span>
</div>
<!-- <div class="info-row">
<div class="info-item">
<span class="info-icon">📋</span>
<span class="info-text">订单{{ getOrderStatusText(item.orderStatus) }}</span>
</div>
</div>
</div> -->
</div>
<div class="reststop-footer">
<!-- <div class="reststop-footer">
<div class="action-btn" :class="[
item.orderStatus === 'active' ? 'action-active' :
(item.orderStatus === 'completed' || item.orderStatus === 'cancelled' ? 'action-normal' : 'action-disabled')
@ -47,7 +62,7 @@
(item.orderStatus === 'completed' || item.orderStatus === 'cancelled' ? '查看详情' : '不可用')
}}
</div>
</div>
</div> -->
</div>
</div>
@ -55,7 +70,7 @@
<div class="empty-state" v-else>
<div class="empty-icon">🏠</div>
<div class="empty-title">暂无休息站</div>
<div class="empty-desc">附近暂无可用的共享休息站</div>
<div class="empty-desc">当前服务区暂无可用的共享休息站</div>
</div>
</div>
</div>
@ -65,99 +80,65 @@
export default {
data() {
return {
safeHeight: "",
menu: {},
reststopList: [],
defaultCover: 'https://picsum.photos/seed/reststop-default/400/300.jpg'
detailInfo: {}
};
},
onLoad() {
let systemInfo = uni.getSystemInfoSync();
let height = systemInfo.safeAreaInsets.bottom;
this.safeHeight = Number(height);
this.menu = uni.getMenuButtonBoundingClientRect();
},
onShow() {
let currentService = uni.getStorageSync("currentService");
this.detailInfo = currentService
console.log('this.detailInfo', this.detailInfo);
this.loadReststopList();
},
onPullDownRefresh() {
this.loadReststopList();
},
onReachBottom() {
this.loadMoreReststops();
if (this.detailInfo.SERVERPART_ID) {
this.loadReststopList();
} else {
this.goSelectServer()
}
},
methods: {
//
goSelectServer() {
uni.navigateTo({ url: "/pages/newMap/index/index?comeForm=sharedRestStop" });
},
//
handleBack() {
uni.navigateBack({
delta: 1,
});
},
//
async loadReststopList() {
try {
//
// const res = await this.$api.getReststopList({
// page: 1,
// pageSize: 10
// });
//
const mockData = [
{
id: 1,
reststopName: "昆明服务区A区-01号休息站",
doorLockStatus: "unlocked", // unlocked: , locked:
orderStatus: "active", // active: , completed: , cancelled:
orderTime: "2024-03-20 14:30:00",
remainingTime: "45分钟",
renewalStatus: "available", // available: , unavailable:
cleaningStatus: "clean", // clean: , cleaning: , dirty:
emergencyContact: "13800138000",
rating: 4.8,
location: "昆明服务区A区东侧"
},
{
id: 2,
reststopName: "昆明服务区B区-02号休息站",
doorLockStatus: "locked",
orderStatus: "active",
orderTime: "2024-03-20 13:45:00",
remainingTime: "120分钟",
renewalStatus: "available",
cleaningStatus: "clean",
emergencyContact: "13900139000",
rating: 4.5,
location: "昆明服务区B区西侧"
},
{
id: 3,
reststopName: "曲靖服务区-03号休息站",
doorLockStatus: "locked",
orderStatus: "completed",
orderTime: "2024-03-20 10:00:00",
remainingTime: "已结束",
renewalStatus: "unavailable",
cleaningStatus: "cleaning",
emergencyContact: "13700137000",
rating: 4.9,
location: "曲靖服务区南区"
}
];
this.reststopList = mockData;
uni.stopPullDownRefresh();
} catch (error) {
console.error('加载休息站列表失败:', error);
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
});
uni.stopPullDownRefresh();
const req = {
SearchParameter: {
SERVERPART_IDS: this.detailInfo.SERVERPART_ID,
RESTSTATION_STATE: 1
},
PageIndex: 1,
PageSize: 999999,
type: 'encryption'
}
},
//
loadMoreReststops() {
console.log('加载更多休息站');
uni.showLoading({
title: '加载中...',
mask: true
});
const data = await this.$api.$posMemberPost("/Member/GetRESTSTATIONList", req)
uni.hideLoading();
let list = data.Result_Data.List
console.log('dadjasodjasopdjaspod', list);
this.reststopList = list
},
//
goToDetail(item) {
uni.navigateTo({
url: `/pages/sharedRestStop/detail?id=${item.id}`
url: `/pages/sharedRestStop/detail?id=${item.RESTSTATION_ID}`
});
},
@ -178,32 +159,21 @@ export default {
//
getDoorLockStatusText(status) {
const statusMap = {
'unlocked': '可使用',
'locked': '使用中'
1: '可使用',
2: '使用中'
};
return statusMap[status] || '未知';
return statusMap[status] || '';
},
//
getCleaningStatusText(status) {
const statusMap = {
'clean': '已清洁',
'cleaning': '清洁中',
'dirty': '待清洁'
1: '待清洁',
2: '清洁中',
3: '已清洁'
};
return statusMap[status] || '未知';
return statusMap[status] || '';
},
//
getOrderStatusText(status) {
const statusMap = {
'active': '进行中',
'completed': '已完成',
'cancelled': '已取消'
};
return statusMap[status] || '无订单';
},
}
};
</script>
@ -213,7 +183,65 @@ export default {
width: 100vw;
min-height: 100vh;
background: #f8fafc;
overflow-y: scroll;
overflow-y: auto;
.topBox {
width: 100%;
box-sizing: border-box;
padding: 0 32rpx;
position: fixed;
background: #f5f5f5;
top: 0;
left: 0;
z-index: 99;
.topContent {
display: flex;
align-items: center;
.backIconBox {
width: 48rpx;
height: 48rpx;
.backIcon {
width: 100%;
height: 100%;
}
}
.currentServiceBox {
display: flex;
align-items: center;
padding: 12rpx 16rpx;
background: #fff;
border-radius: 32rpx;
border: 1rpx solid #e7e7e6;
margin-left: 8rpx;
.servicePosition {
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.currentService {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #090c1a;
line-height: 40rpx;
text-align: justify;
font-style: normal;
}
.rightArrow {
width: 24rpx;
height: 24rpx;
margin-left: 8rpx;
}
}
}
}
.reststops-section {
padding: 40rpx 32rpx;

View File

@ -2,20 +2,15 @@
<div class="settlement" :style="{ overflow: isShow ? 'hidden' : 'auto' }">
<OrderStatus :status="1" v-if="isSubmit" :reservationDate="currentDate" />
<div class="topBox">
<!-- <div class="tabBox">
<div
@click="handleChangeTab(1)"
:class="selectTab === 1 ? 'tabItem seleTabItem' : 'tabItem'"
>
<div class="tabBox">
<div @click="handleChangeTab(1)" :class="selectTab === 1 ? 'tabItem seleTabItem' : 'tabItem'"
v-if="!noDelivery">
配送
</div>
<div
@click="handleChangeTab(2)"
:class="selectTab === 2 ? 'tabItem seleTabItem' : 'tabItem'"
>
<div @click="handleChangeTab(2)" :class="selectTab === 2 ? 'tabItem seleTabItem' : 'tabItem'">
自提
</div>
</div> -->
</div>
<div class="address" v-if="selectTab === 1" :class="isSubmit ? 'address_submit' : ''">
<div class="address_info">
<div class="title">
@ -44,6 +39,10 @@
<Input class="value" v-model="phoneNumber" :maxlength="11" type="number" />
</div>
</div>
<div v-if="selectTab === 2">
<div class="pageDesc">*自提商品的提货地址凌云大厦一楼彩云驿购</div>
</div>
</div>
<div class="commodity margin_auto">
@ -213,6 +212,7 @@ export default {
],
recommendCode: "", //
currentOrderDetial: "",//
noDelivery: false,//
};
},
computed: {
@ -289,6 +289,26 @@ export default {
this.pageType = option.pageType;
}
console.log("this.shopOrder", this.shopOrder);
//
if (this.shopOrder && this.shopOrder.length > 0) {
//
let haveDelivery = false
this.shopOrder.forEach((item) => {
if (Number(item.SEND_MODE) === 2000) {
haveDelivery = true
}
})
//
if (haveDelivery) {
} else {
// tab
this.noDelivery = true
}
}
//
await this.handleGetAddressList();
console.log("1");
@ -1157,9 +1177,11 @@ export default {
}
.seleTabItem {
background-image: url("https://eshangtech.com/minTestImg/leftTabSelect.png");
background-repeat: no-repeat;
background-size: 100% 100%;
// background-image: url("https://eshangtech.com/minTestImg/leftTabSelect.png");
// background-repeat: no-repeat;
// background-size: 100% 100%;
background: linear-gradient(0deg, #fff 0%, #a3f0c2 100%);
border-radius: 32rpx;
}
}
@ -1295,6 +1317,16 @@ export default {
}
}
}
.pageDesc {
width: 100%;
text-align: left;
font-size: 28rpx;
color: red;
box-sizing: border-box;
padding-left: 32rpx;
margin: 16rpx 0;
}
}
.address_submit {

View File

@ -9,18 +9,27 @@ export default {
data() {
return {
url: "",
}
}
},
onLoad(query) {
console.log('queryqueryquery', query);
let obj = {
time: query.time,
orderAmount: query.orderAmount,
id: query.id
id: query.id,
url: query.url,
shortUrl: query.shortUrl
}
this.url = `https://eshangtech.com/JumpDocument/PlatformModuleManage/Modules/InfoSearch/JumpToHXQcode.aspx?content=535001|019051||${obj.time}|${obj.orderAmount}|4|${obj.id}`
// this.url = `https://eshangtech.com/JumpDocument/PlatformModuleManage/Modules/InfoSearch/JumpToHXQcode.aspx?content=535001|019051||${obj.time}|${obj.orderAmount}|4|${obj.id}`
this.url = `${obj.url}?url=${obj.shortUrl}`
console.log('this.url', this.url);
}
}
</script>

View File

@ -135,6 +135,12 @@
<image class="rightArrow" src="https://eshangtech.com/caiyunyiImg/rightArrow.png" />
</view>
</view>
<view class="userInfoItem" @click="handleDeleteAccount">
<view class="userInfoItemLabel" style="color:red">注销账号</view>
<view class="userInfoItemRight">
<image class="rightArrow" src="https://eshangtech.com/caiyunyiImg/rightArrow.png" />
</view>
</view>
</view>
<view class="btnBox">
@ -283,6 +289,39 @@ export default {
"/pages/useConfig/FavoriteStore"
});
},
//
handleDeleteAccount() {
let _this = this
uni.showModal({
title: "警告",
content: '确定退出注销账号?注销后将无法恢复!',
success: function (res) {
if (res.confirm) {
uni.clearStorageSync();
_this.$store.commit('RESET_ALL_STATE')
// 3.
if (uni.getStorageSync('hasRequestUserInfo')) {
uni.removeStorageSync('hasRequestUserInfo');
}
setTimeout(() => {
try {
// 使reLaunch
uni.reLaunch({
url: '/pages/index/index'
})
} catch (e) {
// reLaunch使switchTab
uni.switchTab({
url: '/pages/index/index'
})
}
}, 100);
}
}
});
},
// 退
handleGoLoginOut() {
let _this = this

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12300,6 +12300,8 @@ var staticImagePath = 'https://eshangtech.com/ShopICO';
// let nodeUrl = 'https://es.robot-z.cn'
var nodeUrl = 'https://es.eshangtech.com';
// let posMember = 'https://pos.eshangtech.com/MemberApi'
var posMember = 'https://eshangtech.com:18900/MemberApi';
// let javaUrl = `https://admin.es.eshangtech.com/platform`
// let javaUrl = `http://111.229.213.193:18071`
@ -12447,6 +12449,14 @@ var api = {
$zzyLocalGet: function $zzyLocalGet(control, data) {
this.url = zzyLocal;
return this.request('GET', data, control, true);
},
$posMemberPost: function $posMemberPost(control, data) {
this.url = posMember;
return this.request('POST', data, control, true);
},
$posMemberGet: function $posMemberGet(control, data) {
this.url = posMember;
return this.request('GET', data, control, true);
}
};
var _default = api; // 暴露出来供其他文件引用
@ -14043,7 +14053,7 @@ var PATTERNS = [[2, 1, 2, 2, 2, 2, 0, 0],
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(wx) {var QR = function () {
/* WEBPACK VAR INJECTION */(function(uni) {var QR = function () {
// alignment pattern
var adelta = [0, 11, 15, 19, 23, 27, 31, 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28];
@ -14631,6 +14641,11 @@ var PATTERNS = [[2, 1, 2, 2, 2, 2, 0, 0],
return qrframe;
}
var drawImg = function drawImg(src, width, ctx) {
// 检查 src 参数是否有效
if (!src || src === "" || typeof src !== 'string') {
// 如果 src 无效,直接返回,不执行绘制操作
return;
}
var imgSize = width / 10;
var imgheight = width / 9;
var imgPos = width / 20 * 9;
@ -14709,7 +14724,7 @@ var PATTERNS = [[2, 1, 2, 2, 2, 2, 0, 0],
str = this.utf16to8(str); //增加中文显示
//console.log(str)
var frame = this.getFrame(str),
ctx = wx.createCanvasContext(canvas),
ctx = uni.createCanvasContext(canvas),
px = Math.round(size / (width + 8));
var roundedSize = px * (width + 8),
offset = Math.floor((size - roundedSize) / 2);
@ -14731,7 +14746,7 @@ var PATTERNS = [[2, 1, 2, 2, 2, 2, 0, 0],
qrApi: api
};
}();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"]))
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),

View File

@ -1,4 +1,4 @@
{
"component": true,
"usingComponents": {}
"usingComponents": {},
"component": true
}

View File

@ -256,7 +256,7 @@ var _default = {
handleGetHighwayHeadlines: function handleGetHighwayHeadlines() {
var _this2 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
var newReq, newData, uselist, start, end, params, time, req, signText, sign, tweetsData, all, typeList, allRes;
var newReq, newData, uselist, all, typeList, allRes;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
@ -275,67 +275,63 @@ var _default = {
return _this2.$api.$post("/EShangApiMain/Notice/GetNOTICEINFOList", newReq);
case 3:
newData = _context2.sent;
uselist = newData.Result_Data.List;
start = "".concat(_this2.$moment.now().set("month", -1).format("YYYY-MM-DD"), " 00:00:00");
end = "".concat(_this2.$moment.now().format("YYYY-MM-DD"), " 23:59:59");
params = {
startQueryTime: start,
// 开始时间
endQueryTime: end // 结束时间
};
time = Math.ceil(new Date().getTime() / 1000);
req = {
app_id: "530000301",
biz_content: JSON.stringify(params),
charset: "UTF-8",
pid: "530000301",
service: "trawe.eats.etc",
utc_timestamp: time,
version: "1.0",
sign_type: "RSA2"
};
signText = "app_id=".concat(req.app_id, "&biz_content=").concat(req.biz_content, "&charset=UTF-8&pid=").concat(req.app_id, "&service=trawe.eats.etc&utc_timestamp=").concat(req.utc_timestamp, "&version=1.0"); // 签名
_context2.next = 13;
return new Promise(function (resolve, reject) {
uni.request({
url: "https://admin.es.eshangtech.com/platform/RSA/sign",
method: "POST",
data: {
originalText: signText,
privateKey: "MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCPXwG/nb3FcwBGftuxm0mS3BjZorB5YEKnNpQLjpsOWEO+AMi6lWe6zXYNuAEjgFxjsMJf7e57KBtwIu+mbw4PzXN1SYHvodi+XaiOI2HTdJQgjQgW/1ss3pdkEmuAu9YnudNW6IKYUn1HKUqvzWWJIDrgT65TNeAA/6uVMvxO89TxDtxhCDjZeH6UyuorC4smQAU+gU+UYEj4CL3CUAnOQiQW74KVLJXlbRbBaTRroA/2XFJ6OsHetABVKb/KjpChcW9Knb3YWyirEbZL7sP7hdbcSeXI3EOWT+TlnbRzWXYPKSvchH/t5Z97jLW+0tIwVEFc3PbLNoallZ5JtYR5AgMBAAECggEAJHPchvK9aHGH9WSVyT+ZYkyxyMwToJi3+bnnxFR62hfZCXs7ji0klZtd07kgGP2u/+3WTfu58fhNmaJYWnHMGnp7S6vn7Jyy9hvsGk+mtNPkQa56CxbcALmLtnb0fGPF3I3jzSoK4l2+2pQGGFLZ6RaXwaagxSlijf5zitjOy+fTmV86P2+cW4QffD/Uum4/5EoIm5GEg0SJbLQLf4nbHtAzP4ppxlm/+lLjouEQVqYy0/QwtV7ZBDaOrdB2PsGd9nJw6ZdiNIsVkqzENjn3YUil94evH4GqGjUZuV2n/aPLQCZQZZgk1Q99qMQQDQuggvbtI9mTwRVJNVU2hRCbgQKBgQDFr8SzTLcqq/fK8PGl0AV7AmQd4ka6PtknULMCqBUgaxEUlTyloU5pOQ+Tve3gzrJc4OqMwDLFdXiPLO8sCRUR5nNVOmJnbS+LKwsyKGig7WzOUTxieA70rt90wjzJ8+QXRw4+91+2Xq/L2TE6WyaMvuLwMHL6TxNPjaGl4V800QKBgQC5qaAEUekcJB+qpZCFka/aqs/kI9vSHWuHN57bgp5s7w4P1U+35lcMbKfHajilbWqsXhzpBerxeK3PBY0vZhhnHa5EpnNLS/KRuFem5A4b4GQr+9c5XmbfB6cxtamv1gDyv0sUx6NAi6/kn0YJm0M5KKD88IQ7piPyu31eCDTfKQKBgQCurWpcmHv9G6k/zHlp7474K5u1gDzI00HkaH1U6pqIY7LbAidtn0P+3Cm0fY3VKC8YvLDkH+x86BjYQncv7PKON5hPheBvzV3GVgl1j5ksIb8T61o1FCr68A6JSByYwoYYP3QKFWGgbrhdopPKIcLFeOJkJBtkrDy+/cIJJkSPEQKBgAeG8f7a10mVyVbgyYAwzOFfpXgJYCMfoDlmLuGVZRjjhD1uF4JMK2FMkmzKSKukSPveAOwNml3Z16oZ/oRabkjX8jXETc5SsO3pfFw+yLemnEkQN8SSqDcIl2WziMKhOX6d9MxN37eBMkthjbRcABi0Jfq7QZEthi2UHlwOlx4pAn9C9zkkAmanv6zrsiw5ymcRkEZj+AnMN7m79XQ4fAmDcg4gAYWhJWlM8/g2ww596Qpkl+AkXrJVxFCjMOc2odPKtLhmfgLVvPrRXgQl/+Dj3op54sTS1xHYyKc3/JBHuSE40K/TgB+sMQb1plSa9v6hw6MrleEo24jU82ZVLs8v"
},
header: {
"content-type": "application/json"
},
success: function success(res) {
console.log("resresresresresresres", res);
resolve(res.data.Result_Desc);
}
});
});
case 13:
sign = _context2.sent;
req.sign = sign;
// 推文数据
_context2.next = 17;
return new Promise(function (resolve, reject) {
uni.request({
url: "https://tuozhan.yns-etc.com/gzh/api/v1/gzh/point/tweets",
method: "POST",
data: req,
header: {
"content-type": "application/x-www-form-urlencoded"
},
success: function success(res) {
resolve(res.data.response.data.data.tweets);
}
});
});
case 17:
tweetsData = _context2.sent;
console.log('tweetsDatatweetsData', tweetsData);
all = uselist.concat(tweetsData);
console.log("allallallall", all);
uselist = newData.Result_Data.List; // let start = `${this.$moment
// .now()
// .set("month", -1)
// .format("YYYY-MM-DD")} 00:00:00`;
// let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
// let params = {
// startQueryTime: start, // 开始时间
// endQueryTime: end, // 结束时间
// };
// let time = Math.ceil(new Date().getTime() / 1000);
// let req = {
// app_id: "530000301",
// biz_content: JSON.stringify(params),
// charset: "UTF-8",
// pid: "530000301",
// service: "trawe.eats.etc",
// utc_timestamp: time,
// version: "1.0",
// sign_type: "RSA2",
// };
// let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
// 签名
// const sign = await new Promise((resolve, reject) => {
// uni.request({
// url: "https://admin.es.eshangtech.com/platform/RSA/sign",
// method: "POST",
// data: {
// originalText: signText,
// privateKey:
// "MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCPXwG/nb3FcwBGftuxm0mS3BjZorB5YEKnNpQLjpsOWEO+AMi6lWe6zXYNuAEjgFxjsMJf7e57KBtwIu+mbw4PzXN1SYHvodi+XaiOI2HTdJQgjQgW/1ss3pdkEmuAu9YnudNW6IKYUn1HKUqvzWWJIDrgT65TNeAA/6uVMvxO89TxDtxhCDjZeH6UyuorC4smQAU+gU+UYEj4CL3CUAnOQiQW74KVLJXlbRbBaTRroA/2XFJ6OsHetABVKb/KjpChcW9Knb3YWyirEbZL7sP7hdbcSeXI3EOWT+TlnbRzWXYPKSvchH/t5Z97jLW+0tIwVEFc3PbLNoallZ5JtYR5AgMBAAECggEAJHPchvK9aHGH9WSVyT+ZYkyxyMwToJi3+bnnxFR62hfZCXs7ji0klZtd07kgGP2u/+3WTfu58fhNmaJYWnHMGnp7S6vn7Jyy9hvsGk+mtNPkQa56CxbcALmLtnb0fGPF3I3jzSoK4l2+2pQGGFLZ6RaXwaagxSlijf5zitjOy+fTmV86P2+cW4QffD/Uum4/5EoIm5GEg0SJbLQLf4nbHtAzP4ppxlm/+lLjouEQVqYy0/QwtV7ZBDaOrdB2PsGd9nJw6ZdiNIsVkqzENjn3YUil94evH4GqGjUZuV2n/aPLQCZQZZgk1Q99qMQQDQuggvbtI9mTwRVJNVU2hRCbgQKBgQDFr8SzTLcqq/fK8PGl0AV7AmQd4ka6PtknULMCqBUgaxEUlTyloU5pOQ+Tve3gzrJc4OqMwDLFdXiPLO8sCRUR5nNVOmJnbS+LKwsyKGig7WzOUTxieA70rt90wjzJ8+QXRw4+91+2Xq/L2TE6WyaMvuLwMHL6TxNPjaGl4V800QKBgQC5qaAEUekcJB+qpZCFka/aqs/kI9vSHWuHN57bgp5s7w4P1U+35lcMbKfHajilbWqsXhzpBerxeK3PBY0vZhhnHa5EpnNLS/KRuFem5A4b4GQr+9c5XmbfB6cxtamv1gDyv0sUx6NAi6/kn0YJm0M5KKD88IQ7piPyu31eCDTfKQKBgQCurWpcmHv9G6k/zHlp7474K5u1gDzI00HkaH1U6pqIY7LbAidtn0P+3Cm0fY3VKC8YvLDkH+x86BjYQncv7PKON5hPheBvzV3GVgl1j5ksIb8T61o1FCr68A6JSByYwoYYP3QKFWGgbrhdopPKIcLFeOJkJBtkrDy+/cIJJkSPEQKBgAeG8f7a10mVyVbgyYAwzOFfpXgJYCMfoDlmLuGVZRjjhD1uF4JMK2FMkmzKSKukSPveAOwNml3Z16oZ/oRabkjX8jXETc5SsO3pfFw+yLemnEkQN8SSqDcIl2WziMKhOX6d9MxN37eBMkthjbRcABi0Jfq7QZEthi2UHlwOlx4pAn9C9zkkAmanv6zrsiw5ymcRkEZj+AnMN7m79XQ4fAmDcg4gAYWhJWlM8/g2ww596Qpkl+AkXrJVxFCjMOc2odPKtLhmfgLVvPrRXgQl/+Dj3op54sTS1xHYyKc3/JBHuSE40K/TgB+sMQb1plSa9v6hw6MrleEo24jU82ZVLs8v"
// },
// header: {
// "content-type": "application/json",
// },
// success(res) {
// console.log("resresresresresresres", res);
// resolve(res.data.Result_Desc);
// },
// });
// });
// req.sign = sign;
// // 推文数据
// const tweetsData = await new Promise((resolve, reject) => {
// uni.request({
// url: `https://tuozhan.yns-etc.com/gzh/api/v1/gzh/point/tweets`,
// method: "POST",
// data: req,
// header: {
// "content-type": "application/x-www-form-urlencoded",
// },
// success(res) {
// resolve(res.data.response.data.data.tweets);
// },
// });
// });
// console.log('tweetsDatatweetsData', tweetsData);
all = uselist; // console.log("allallallall", all);
if (all && all.length > 0) {
typeList = [];
allRes = {};
@ -374,7 +370,7 @@ var _default = {
// });
console.log("this.messageList", _this2.messageList);
case 23:
case 8:
case "end":
return _context2.stop();
}

View File

@ -1873,51 +1873,51 @@ var _default = {
handleGetHighwayHeadlines: function handleGetHighwayHeadlines() {
var _this18 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
var start, end, params, time, req, signText, sign, newReq, newData, list;
var newReq, newData, list;
return _regenerator.default.wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
start = "".concat(_this18.$moment.now().set("month", -1).format("YYYY-MM-DD"), " 00:00:00");
end = "".concat(_this18.$moment.now().format("YYYY-MM-DD"), " 23:59:59");
params = {
startQueryTime: start,
// 开始时间
endQueryTime: end // 结束时间
};
time = Math.ceil(new Date().getTime() / 1000);
req = {
app_id: "530000301",
biz_content: JSON.stringify(params),
charset: "UTF-8",
pid: "530000301",
service: "trawe.eats.etc",
utc_timestamp: time,
version: "1.0",
sign_type: "RSA2"
};
signText = "app_id=".concat(req.app_id, "&biz_content=").concat(req.biz_content, "&charset=UTF-8&pid=").concat(req.app_id, "&service=trawe.eats.etc&utc_timestamp=").concat(req.utc_timestamp, "&version=1.0"); // 签名
_context11.next = 8;
return new Promise(function (resolve, reject) {
uni.request({
url: "https://admin.es.eshangtech.com/prod-api/RSA/sign",
method: "POST",
data: {
originalText: signText,
privateKey: "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtIkIJLbZYI9NvTRkRbqtjJ73gkAUJZBJw88Z+O8prX2HXMTIedmZZxTwbfM5kGpl9VmS0CY8QL0DnDsgHO8QnSDpN1jiqTD9lk1evycuF7ujmlOk/cJ5x2cLPn9rPIrQn1lxp9mBiO1m9vsrNOze/kx7wRyif/+hvn5Q9KtNEMy0K8oOE5vktnjkk1AhhXrTii9eIjOrO3pRgh9cFA9kqQpvD14CImD7tdCgyntKcYAB7rlin6a2N0yH9JJINjOyOiyHufP8sR7pb9VYXVYXukOCItdC9QQluQhSdyC/3BfZD5zV1A+X7pUle7dDLGG6aSZyCibg16siFIEX94KYfAgMBAAECggEAcP5uwrbGzvdywq06sxnbWTdSwQC9iMd7EaTH4xL6pOD3Zg6Be0givGvxMq9dtA94JUkBKE8kw5dTcHlBKxdiiZCmHK63BM4GgjCLhfrZjWvDLNn68KB7iCpq7j6R+6XWljlczvsxJGs/woqGqTMAy1MlWgPXC7Vk6ZTolpMglt0IJOzPtgJ66qU2CtNRjowkXSCHDO2RCjkmYcjU6W+eCvi9cXIXhLv5yra1PE0KOxn3NiEFwgGUXpu8LKqxuUfGLuHljoLxWV8EEfwZaWB6Wy1DHMMgxhKrO3xEmdMEqtvJmF98LRSYiJerkExY8Gdx8bkLPjlCLYKW4JVuPmyYgQKBgQD8l0lLtB94MQMib0t8RzqlbKcczTAkicjSms3/P4kwh50GC8OqwjJB75n4yQyDPgsjms/SnRMq1zjgm+MHSC4snpLCcvKFYLnvrslWGu/2lyUTwEwdUdQe1ILG4Y9NXKWg4zXpKfJ2Rz/cqw6bHGYhQWZ62AXQgiz+W7cIPrsHsQKBgQCveHGHF0WqtYAmrW7nf04PKmcJ5U2briYCWOtWJE5Mo5BYxsGLX6vI53DMNQ42hFk0ye61VNfcazAoGI3mM4+j6R9k3ek8EtkBYBro5eeoBtB7TMTJagQqzBLz316mJBsFmw3TiC9BzYhs3tKJnVxpfqXoqsyu2ZA6VG5Y/gXOzwKBgCbejPvmUvVm7WmOINqWB3NPXgPzm1X0EgA+rDZ8K3tZUxOMGeccDSnSWipLne5QTNyExThOzZVJG0qNEombVOeu2zyq/aECunoktnzWllim96CrdcsJPZAk+Z7rNOcdu6sfa7teph4HZs9pT00VOK4jZ0a+GV71uUDHEkplhNhxAoGAMDOi5BxFe/595KIR7C/xboMUaQh/iDuPn2dzxmcUx0LLPUfkFPhEBV1mhAIzFFDI/JJYK6HR5m/fe7Q7DritRbaddCTtlB4NVK5k1gOJ3oN4s9ZD3Jxt5p/GuQ1sP7F9Zs3QP4KSkL34MwgGx9zdbPFofACnV4TWdN+KrJGjYMsCgYAE0CMM7rYHGY3Vt3/WZZJ+DPlKE6Q+uvFDomtsB1IavCeEJyjBP9+GhBHat86aA3mCFjf4emj1or7OEgPc0gCMtKBG6m10CrzLjzdWnOTveqWVUW/FS2gf17cIO5/FK/4KmAjH/QN24KXm395Qu8C0UFfgA66yysakJFkvXVBiPg=="
},
header: {
"content-type": "application/json"
},
success: function success(res) {
resolve(res.data.data);
}
});
});
case 8:
sign = _context11.sent;
req.sign = sign;
// let start = `${this.$moment
// .now()
// .set("month", -1)
// .format("YYYY-MM-DD")} 00:00:00`;
// let end = `${this.$moment.now().format("YYYY-MM-DD")} 23:59:59`;
// let params = {
// startQueryTime: start, // 开始时间
// endQueryTime: end, // 结束时间
// };
// let time = Math.ceil(new Date().getTime() / 1000);
// let req = {
// app_id: "530000301",
// biz_content: JSON.stringify(params),
// charset: "UTF-8",
// pid: "530000301",
// service: "trawe.eats.etc",
// utc_timestamp: time,
// version: "1.0",
// sign_type: "RSA2",
// };
// let signText = `app_id=${req.app_id}&biz_content=${req.biz_content}&charset=UTF-8&pid=${req.app_id}&service=trawe.eats.etc&utc_timestamp=${req.utc_timestamp}&version=1.0`;
// // 签名
// const sign = await new Promise((resolve, reject) => {
// uni.request({
// url: "https://admin.es.eshangtech.com/prod-api/RSA/sign",
// method: "POST",
// data: {
// originalText: signText,
// privateKey:
// "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtIkIJLbZYI9NvTRkRbqtjJ73gkAUJZBJw88Z+O8prX2HXMTIedmZZxTwbfM5kGpl9VmS0CY8QL0DnDsgHO8QnSDpN1jiqTD9lk1evycuF7ujmlOk/cJ5x2cLPn9rPIrQn1lxp9mBiO1m9vsrNOze/kx7wRyif/+hvn5Q9KtNEMy0K8oOE5vktnjkk1AhhXrTii9eIjOrO3pRgh9cFA9kqQpvD14CImD7tdCgyntKcYAB7rlin6a2N0yH9JJINjOyOiyHufP8sR7pb9VYXVYXukOCItdC9QQluQhSdyC/3BfZD5zV1A+X7pUle7dDLGG6aSZyCibg16siFIEX94KYfAgMBAAECggEAcP5uwrbGzvdywq06sxnbWTdSwQC9iMd7EaTH4xL6pOD3Zg6Be0givGvxMq9dtA94JUkBKE8kw5dTcHlBKxdiiZCmHK63BM4GgjCLhfrZjWvDLNn68KB7iCpq7j6R+6XWljlczvsxJGs/woqGqTMAy1MlWgPXC7Vk6ZTolpMglt0IJOzPtgJ66qU2CtNRjowkXSCHDO2RCjkmYcjU6W+eCvi9cXIXhLv5yra1PE0KOxn3NiEFwgGUXpu8LKqxuUfGLuHljoLxWV8EEfwZaWB6Wy1DHMMgxhKrO3xEmdMEqtvJmF98LRSYiJerkExY8Gdx8bkLPjlCLYKW4JVuPmyYgQKBgQD8l0lLtB94MQMib0t8RzqlbKcczTAkicjSms3/P4kwh50GC8OqwjJB75n4yQyDPgsjms/SnRMq1zjgm+MHSC4snpLCcvKFYLnvrslWGu/2lyUTwEwdUdQe1ILG4Y9NXKWg4zXpKfJ2Rz/cqw6bHGYhQWZ62AXQgiz+W7cIPrsHsQKBgQCveHGHF0WqtYAmrW7nf04PKmcJ5U2briYCWOtWJE5Mo5BYxsGLX6vI53DMNQ42hFk0ye61VNfcazAoGI3mM4+j6R9k3ek8EtkBYBro5eeoBtB7TMTJagQqzBLz316mJBsFmw3TiC9BzYhs3tKJnVxpfqXoqsyu2ZA6VG5Y/gXOzwKBgCbejPvmUvVm7WmOINqWB3NPXgPzm1X0EgA+rDZ8K3tZUxOMGeccDSnSWipLne5QTNyExThOzZVJG0qNEombVOeu2zyq/aECunoktnzWllim96CrdcsJPZAk+Z7rNOcdu6sfa7teph4HZs9pT00VOK4jZ0a+GV71uUDHEkplhNhxAoGAMDOi5BxFe/595KIR7C/xboMUaQh/iDuPn2dzxmcUx0LLPUfkFPhEBV1mhAIzFFDI/JJYK6HR5m/fe7Q7DritRbaddCTtlB4NVK5k1gOJ3oN4s9ZD3Jxt5p/GuQ1sP7F9Zs3QP4KSkL34MwgGx9zdbPFofACnV4TWdN+KrJGjYMsCgYAE0CMM7rYHGY3Vt3/WZZJ+DPlKE6Q+uvFDomtsB1IavCeEJyjBP9+GhBHat86aA3mCFjf4emj1or7OEgPc0gCMtKBG6m10CrzLjzdWnOTveqWVUW/FS2gf17cIO5/FK/4KmAjH/QN24KXm395Qu8C0UFfgA66yysakJFkvXVBiPg==",
// },
// header: {
// "content-type": "application/json",
// },
// success(res) {
// resolve(res.data.data);
// },
// });
// });
// req.sign = sign;
// 推文数据
// const tweetsData = await new Promise((resolve, reject) => {
// uni.request({
@ -1942,7 +1942,6 @@ var _default = {
// },
// });
// });
// if (tweetsData && tweetsData.length > 0) {
// this.roadStatusList = tweetsData;
// } else {
@ -1958,9 +1957,9 @@ var _default = {
PageSize: 10,
appId: "wxee018fb96955552a"
};
_context11.next = 13;
_context11.next = 3;
return _this18.$api.$post("/EShangApiMain/Notice/GetNOTICEINFOList", newReq);
case 13:
case 3:
newData = _context11.sent;
list = newData.Result_Data.List; // if (list && list.length > 0) {
// } else {
@ -1972,7 +1971,7 @@ var _default = {
// this.roadStatusList.unshift({
// NOTICEINFO_TITLE: "最新放假通知调休2天免费8天",
// });
case 16:
case 6:
case "end":
return _context11.stop();
}

View File

@ -188,7 +188,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
/* WEBPACK VAR INJECTION */(function(uni, wx) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
@ -197,6 +197,7 @@ Object.defineProperty(exports, "__esModule", {
exports.default = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 30));
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 32));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
var _vuex = __webpack_require__(/*! vuex */ 33);
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@ -334,53 +335,104 @@ var _default = {
}
},
methods: {
parseQuery: function parseQuery(url) {
if (!url) return {};
var queryString = url.split('?')[1];
if (!queryString) return {};
var pairs = queryString.split('&');
var params = {};
for (var i = 0; i < pairs.length; i++) {
var _pairs$i$split = pairs[i].split('='),
_pairs$i$split2 = (0, _slicedToArray2.default)(_pairs$i$split, 2),
key = _pairs$i$split2[0],
value = _pairs$i$split2[1];
if (key) {
params[decodeURIComponent(key)] = decodeURIComponent(value || '');
}
}
return params;
},
// 预览图片
handlePreviewImg: function handlePreviewImg() {
var url = this.qrcodeImg;
if (!url) return;
wx.previewImage({
current: url,
// 当前显示的图片
urls: [url],
// 需要预览的图片列表(可以是多张)
showmenu: true
});
},
// 开票申请
handleInvoiceApplication: function handleInvoiceApplication(obj) {
this.$refs.billPopup.open('center');
var systemInfo = uni.getSystemInfoSync();
console.log('systemInfosystemInfosystemInfo', systemInfo);
var _this3 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var systemInfo, date, y, m, d, h, minutes, second, time, req, data, h5Url, params;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
systemInfo = uni.getSystemInfoSync();
console.log('systemInfosystemInfosystemInfo', systemInfo);
// 处理一下 要传入订单的时间 且格式为 20250304160228 这种的
var date = new Date(obj.ORDER_DATE);
var y = date.getFullYear();
var m = date.getMonth() + 1;
if (m < 10) {
m = '0' + m;
}
var d = date.getDate();
if (d < 10) {
d = '0' + d;
}
var h = date.getHours();
if (h < 10) {
h = '0' + h;
}
var minutes = date.getMinutes();
if (minutes < 10) {
minutes = '0' + minutes;
}
var second = date.getSeconds();
if (second < 10) {
second = '0' + second;
}
var time = "".concat(y).concat(m).concat(d).concat(h).concat(minutes).concat(second);
this.$utils.qrc("qrcode", "https://eshangtech.com/JumpDocument/PlatformModuleManage/Modules/InfoSearch/JumpToHXQcode.aspx?content=535001|019051||".concat(time, "|").concat(obj.orderAmount, "|4|").concat(obj.SALEBILL_ID), systemInfo.screenWidth * 0.8, systemInfo.screenWidth * 0.8, null, "");
// let _this = this
// setTimeout(() => {
// wx.canvasToTempFilePath({
// canvasId: "qrcode",
// success: (res) => {
// console.log("barcode", res);
// _this.qrcodeImg = res.tempFilePath;
// _this.$forceUpdate();
// },
// });
// }, 300)
return;
uni.navigateTo({
url: "/pages/thirdPartyInvoice/index?time=".concat(time, "&orderAmount=").concat(obj.ORDER_AMOUNT, "&id=").concat(obj.SALEBILL_ID)
});
// 处理一下 要传入订单的时间 且格式为 20250304160228 这种的
date = new Date(obj.ORDER_DATE);
y = date.getFullYear();
m = date.getMonth() + 1;
if (m < 10) {
m = '0' + m;
}
d = date.getDate();
if (d < 10) {
d = '0' + d;
}
h = date.getHours();
if (h < 10) {
h = '0' + h;
}
minutes = date.getMinutes();
if (minutes < 10) {
minutes = '0' + minutes;
}
second = date.getSeconds();
if (second < 10) {
second = '0' + second;
}
time = "".concat(y).concat(m).concat(d).concat(h).concat(minutes).concat(second);
req = {
Content: "535001|019051||".concat(time, "|").concat(obj.ORDER_AMOUNT, "|4|").concat(obj.SALEBILL_ID),
Detail: "",
type: 'encryption'
};
uni.showLoading({
title: "开票申请中..."
});
_context.next = 19;
return _this3.$api.$zzyLocalPost("/ThirdInterface/GetJDPJScanUrl", req);
case 19:
data = _context.sent;
uni.hideLoading();
if (data.Result_Code === 100) {
h5Url = data.Result_Data.h5Url;
params = _this3.parseQuery(h5Url);
wx.navigateToMiniProgram({
appId: 'wx107ec23662f360a7',
path: "/pages/index/index?amount=".concat(params.amount, "&billNo=").concat(params.billNo, "&md5=").concat(params.md5, "&qrKey=").concat(params.qrKey, "&timestamp=").concat(params.timestamp)
});
} else {
uni.showToast({
title: data.Result_Desc,
duration: 2000
});
}
case 22:
case "end":
return _context.stop();
}
}
}, _callee);
}))();
},
// 跳转订单搜索页面
handleGoOrderSearch: function handleGoOrderSearch() {
@ -396,14 +448,14 @@ var _default = {
title: '提示',
content: '确认已收货?',
success: function () {
var _success = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(res) {
var _success = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(res) {
var req, data, type;
return _regenerator.default.wrap(function _callee$(_context) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context.prev = _context.next) {
switch (_context2.prev = _context2.next) {
case 0:
if (!res.confirm) {
_context.next = 9;
_context2.next = 9;
break;
}
req = {
@ -412,10 +464,10 @@ var _default = {
saleBillChildId: obj.SALEBILL_CHILD_ID || "",
SALEBILL_STATE: 3000
};
_context.next = 4;
_context2.next = 4;
return _this.$api.getCoop(req);
case 4:
data = _context.sent;
data = _context2.sent;
console.log('data', data);
if (data.error !== 1) {
uni.showToast({
@ -430,16 +482,16 @@ var _default = {
type = this.currentTab === 1 ? "1005,1010,2010,3000,8000,8010,8020,8900,8999,9000,9999" : this.currentTab === 2 ? "1005" : this.currentTab === 3 ? "1010,2000" : this.currentTab === 4 ? "2010" : this.currentTab === 5 ? "3000" : this.currentTab === 7 ? "8000,8010,8020,8900" : "";
_this.handleGetOrderList(type);
}
_context.next = 10;
_context2.next = 10;
break;
case 9:
if (res.cancel) {}
case 10:
case "end":
return _context.stop();
return _context2.stop();
}
}
}, _callee, this);
}, _callee2, this);
}));
function success(_x) {
return _success.apply(this, arguments);
@ -506,35 +558,6 @@ var _default = {
},
// 下拉刷新的方法
handleRefresherrefresh: function handleRefresherrefresh() {
var _this3 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
var type;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_this3.orderList = [];
_this3.pageMsg = {
pageIndex: 1,
pageSize: 10,
isOver: false
};
_this3.triggered = true;
type = _this3.currentTab === 1 ? "1005,1010,2010,3000,8000,8010,8020,8900,8999,9000,9999" : _this3.currentTab === 2 ? "1005" : _this3.currentTab === 3 ? "1010,2000" : _this3.currentTab === 4 ? "2010" : _this3.currentTab === 5 ? "3000" : _this3.currentTab === 7 ? "8000,8010,8020,8900" : "";
_context2.next = 6;
return _this3.handleGetOrderList(type);
case 6:
_this3.triggered = false;
case 7:
case "end":
return _context2.stop();
}
}
}, _callee2);
}))();
},
// 没传类型的方法
handleGetTypeOrderList: function handleGetTypeOrderList() {
var _this4 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
var type;
@ -542,10 +565,19 @@ var _default = {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_this4.orderList = [];
_this4.pageMsg = {
pageIndex: 1,
pageSize: 10,
isOver: false
};
_this4.triggered = true;
type = _this4.currentTab === 1 ? "1005,1010,2010,3000,8000,8010,8020,8900,8999,9000,9999" : _this4.currentTab === 2 ? "1005" : _this4.currentTab === 3 ? "1010,2000" : _this4.currentTab === 4 ? "2010" : _this4.currentTab === 5 ? "3000" : _this4.currentTab === 7 ? "8000,8010,8020,8900" : "";
_context3.next = 3;
_context3.next = 6;
return _this4.handleGetOrderList(type);
case 3:
case 6:
_this4.triggered = false;
case 7:
case "end":
return _context3.stop();
}
@ -553,20 +585,40 @@ var _default = {
}, _callee3);
}))();
},
// 获取订单数据
handleGetOrderList: function handleGetOrderList(status) {
// 没传类型的方法
handleGetTypeOrderList: function handleGetTypeOrderList() {
var _this5 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
var req, data, oldOrderList, list, resList;
var type;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
if (!_this5.pageMsg.isOver) {
_context4.next = 2;
type = _this5.currentTab === 1 ? "1005,1010,2010,3000,8000,8010,8020,8900,8999,9000,9999" : _this5.currentTab === 2 ? "1005" : _this5.currentTab === 3 ? "1010,2000" : _this5.currentTab === 4 ? "2010" : _this5.currentTab === 5 ? "3000" : _this5.currentTab === 7 ? "8000,8010,8020,8900" : "";
_context4.next = 3;
return _this5.handleGetOrderList(type);
case 3:
case "end":
return _context4.stop();
}
}
}, _callee4);
}))();
},
// 获取订单数据
handleGetOrderList: function handleGetOrderList(status) {
var _this6 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
var req, data, oldOrderList, list, resList;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
if (!_this6.pageMsg.isOver) {
_context5.next = 2;
break;
}
return _context4.abrupt("return");
return _context5.abrupt("return");
case 2:
uni.showLoading({
title: "正在加载...",
@ -574,7 +626,7 @@ var _default = {
});
req = {
action_type: "GetOrderList",
salebillType: _this5.searchType === "6" ? _this5.selectBigTab === 1 ? '3001,3999' : _this5.selectBigTab === 2 ? '3999' : _this5.selectBigTab === 3 ? '3001' : '' : _this5.selectBigTab === 1 ? '3000,3001,3002' : _this5.selectBigTab === 2 ? '3000,3002' : _this5.selectBigTab === 3 ? '3001' : '',
salebillType: _this6.searchType === "6" ? _this6.selectBigTab === 1 ? '3001,3999' : _this6.selectBigTab === 2 ? '3999' : _this6.selectBigTab === 3 ? '3001' : '' : _this6.selectBigTab === 1 ? '3000,3001,3002' : _this6.selectBigTab === 2 ? '3000,3002' : _this6.selectBigTab === 3 ? '3001' : '',
salebillState: status || "",
// salebillType:
// this.searchType === "6"
@ -585,26 +637,26 @@ var _default = {
// ? 3001
// : "3000,3002",
// salebillState: this.searchType === "6" ? "" : status || "",
PageIndex: _this5.pageMsg.pageIndex,
pageSize: _this5.pageMsg.pageSize,
PageIndex: _this6.pageMsg.pageIndex,
pageSize: _this6.pageMsg.pageSize,
ownerUnitId: 911,
requestType: "application/x-www-form-urlencoded"
};
_context4.next = 6;
return _this5.$api.postCoop(req);
_context5.next = 6;
return _this6.$api.postCoop(req);
case 6:
data = _context4.sent;
data = _context5.sent;
console.log("data", data);
oldOrderList = [];
if (_this5.orderList && _this5.orderList.length > 0) {
oldOrderList = JSON.parse(JSON.stringify(_this5.orderList));
if (_this6.orderList && _this6.orderList.length > 0) {
oldOrderList = JSON.parse(JSON.stringify(_this6.orderList));
}
console.log("oldOrderList", oldOrderList);
// 手动添加待付款、待发货、待收货
list = data.Data ? data.Data.List : [];
resList = [];
if (list && list.length > 0) {
if (_this5.currentTab === 5) {
if (_this6.currentTab === 5) {
list.forEach(function (item) {
if (item.SALEBILL_STATE >= 3000 && item.SALEBILL_STATE !== 8999 && item.SALEBILL_STATE !== 9000 && item.SALEBILL_STATE !== 9999) {
resList.push(item);
@ -617,19 +669,19 @@ var _default = {
}
}
if (resList && resList.length < 10) {
_this5.pageMsg.isOver = true;
_this5.$forceUpdate();
_this6.pageMsg.isOver = true;
_this6.$forceUpdate();
}
_this5.orderList = oldOrderList.concat(resList);
_this5.currentListJSON = JSON.stringify(_this5.orderList);
console.log("获取订单数据2", _this5.orderList);
_this6.orderList = oldOrderList.concat(resList);
_this6.currentListJSON = JSON.stringify(_this6.orderList);
console.log("获取订单数据2", _this6.orderList);
uni.hideLoading();
case 19:
case "end":
return _context4.stop();
return _context5.stop();
}
}
}, _callee4);
}, _callee5);
}))();
},
goEvaluate: function goEvaluate(item) {
@ -647,7 +699,7 @@ var _default = {
}
};
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"]))
/***/ }),

File diff suppressed because one or more lines are too long

View File

@ -476,6 +476,7 @@ var _default = {
this.timer = null;
}
_this.$utils.barc("barcode", code, _this.barcodeWidth, _this.barcodeHeight);
console.log('codecodecode', code);
// _this.$utils.barc('barcode2', code, _this.qrcodeHeight2, 160, 90)
_this.$utils.qrc("qrcode", code, _this.qrcodeHeight, _this.qrcodeHeight, null, "../../static/images/home/caiyunLogo.png");

View File

@ -275,7 +275,9 @@ var _default = {
}],
recommendCode: "",
// 营销工号
currentOrderDetial: "" // 如果订单创建成功了 就会有值的
currentOrderDetial: "",
// 如果订单创建成功了 就会有值的
noDelivery: false // 判断是否隐藏配送
};
},
@ -319,7 +321,7 @@ var _default = {
onLoad: function onLoad(option) {
var _this2 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var app, shopList, sum, newList;
var app, shopList, sum, newList, haveDelivery;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
@ -353,14 +355,32 @@ var _default = {
_this2.pageType = option.pageType;
}
console.log("this.shopOrder", _this2.shopOrder);
// 根据这笔订单的商品来判断 是显示 配送 还是自提
if (_this2.shopOrder && _this2.shopOrder.length > 0) {
// 如果全是自提的话 就不显示配送了
haveDelivery = false;
_this2.shopOrder.forEach(function (item) {
if (Number(item.SEND_MODE) === 2000) {
haveDelivery = true;
}
});
// 有配送 就不做操作了
if (haveDelivery) {} else {
// 没有配送 那就隐藏掉顶部tab的配送
_this2.noDelivery = true;
}
}
// 请求用户的地址
_context.next = 9;
_context.next = 10;
return _this2.handleGetAddressList();
case 9:
case 10:
console.log("1");
_this2.isFirst = false;
_this2.$utils.addUserBehaviorNew();
case 12:
case 13:
case "end":
return _context.stop();
}

File diff suppressed because one or more lines are too long

View File

@ -66,9 +66,8 @@
justify-content: center;
}
.settlement .topBox .tabBox .seleTabItem.data-v-43036aa6 {
background-image: url("https://eshangtech.com/minTestImg/leftTabSelect.png");
background-repeat: no-repeat;
background-size: 100% 100%;
background: linear-gradient(0deg, #fff 0%, #a3f0c2 100%);
border-radius: 32rpx;
}
.settlement .topBox .address.data-v-43036aa6 {
width: 100%;
@ -182,6 +181,15 @@
font-weight: 600;
text-align: right;
}
.settlement .topBox .pageDesc.data-v-43036aa6 {
width: 100%;
text-align: left;
font-size: 28rpx;
color: red;
box-sizing: border-box;
padding-left: 32rpx;
margin: 16rpx 0;
}
.settlement .address_submit.data-v-43036aa6 {
margin-top: -80rpx;
}

View File

@ -3,17 +3,31 @@
"projectname": "caiyunyi",
"setting": {
"compileHotReLoad": true,
"urlCheck": true
"urlCheck": false
},
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/highwayHeadlines/attractInvestmentDetail",
"pathName": "pages/highwayHeadlines/attractInvestmentDetail",
"query": "id=61&type=true",
"scene": null,
"launchMode": "default"
},
{
"name": "pages/highwayHeadlines/investmentApplication",
"pathName": "pages/highwayHeadlines/investmentApplication",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/sharedRestStop/index",
"pathName": "pages/sharedRestStop/index",
"query": "",
"scene": null,
"launchMode": "default"
"launchMode": "default",
"scene": null
},
{
"name": "pages/eventRegistration/index",
@ -35,13 +49,6 @@
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/couponDetail/index",
"pathName": "pages/complaints/addComplaints",
"query": "",
"launchMode": "default",
"scene": null
}
]
}

View File

@ -13,6 +13,8 @@ let staticImagePath = 'https://eshangtech.com/ShopICO'
// let nodeUrl = 'https://es.robot-z.cn'
let nodeUrl = 'https://es.eshangtech.com'
// let posMember = 'https://pos.eshangtech.com/MemberApi'
let posMember = 'https://eshangtech.com:18900/MemberApi'
// let javaUrl = `https://admin.es.eshangtech.com/platform`
// let javaUrl = `http://111.229.213.193:18071`
@ -178,5 +180,15 @@ const api = {
return this.request('GET', data, control, true)
},
$posMemberPost(control, data) {
this.url = posMember
return this.request('POST', data, control, true)
},
$posMemberGet(control, data) {
this.url = posMember
return this.request('GET', data, control, true)
},
}
export default api // 暴露出来供其他文件引用