22
CI/CD / build (push) Failing after 3m40s Details

This commit is contained in:
13121765685 2026-01-09 13:44:05 +08:00
parent dd23fde1c0
commit dc94341324
2 changed files with 412 additions and 1 deletions

4
package-lock.json generated
View File

@ -18,7 +18,9 @@
"prettier": "^3.0.0", "prettier": "^3.0.0",
"rimraf": "^5.0.0", "rimraf": "^5.0.0",
"turbo": "^1.10.0", "turbo": "^1.10.0",
"vite": "^7.2.2" "vite": "^7.2.2",
"@element-plus/icons-vue": "^2.3.2",
"element-plus": "^2.11.7"
}, },
"engines": { "engines": {
"node": ">=16.0.0", "node": ">=16.0.0",

View File

@ -0,0 +1,409 @@
const wx = window.wx || window.jWeixin
class WechatBus {
constructor() {
this.isReady = false
this.messageHandlers = new Map()
this.eventListeners = new Map()
this.init()
}
init() {
if (wx) {
this.isReady = true
console.log('WechatBus initialized successfully')
} else {
console.warn('Wechat JSSDK not loaded')
}
}
checkReady() {
if (!this.isReady) {
throw new Error('Wechat JSSDK is not ready')
}
}
config(config) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.config({
debug: config.debug || false,
appId: config.appId,
timestamp: config.timestamp,
nonceStr: config.nonceStr,
signature: config.signature,
jsApiList: config.jsApiList || []
})
wx.ready(() => {
this.isReady = true
console.log('Wechat JSSDK config ready')
resolve(true)
})
wx.error((res) => {
console.error('Wechat JSSDK config error:', res)
reject(res)
})
})
}
postMessage(data) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.postMessage({
data
})
resolve(true)
} catch (error) {
console.error('Post message error:', error)
reject(error)
}
})
}
navigateTo(url) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.navigateTo({
url,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
} catch (error) {
console.error('Navigate to error:', error)
reject(error)
}
})
}
navigateBack(delta = 1) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.navigateBack({
delta,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
} catch (error) {
console.error('Navigate back error:', error)
reject(error)
}
})
}
redirectTo(url) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.redirectTo({
url,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
} catch (error) {
console.error('Redirect to error:', error)
reject(error)
}
})
}
switchTab(url) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.switchTab({
url,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
} catch (error) {
console.error('Switch tab error:', error)
reject(error)
}
})
}
reLaunch(url) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.reLaunch({
url,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
} catch (error) {
console.error('ReLaunch error:', error)
reject(error)
}
})
}
getEnv() {
this.checkReady()
return wx.miniProgram.getEnv()
}
getAccountInfoSync() {
this.checkReady()
return wx.getAccountInfoSync()
}
on(event, handler) {
if (!this.eventListeners.has(event)) {
this.eventListeners.set(event, new Set())
}
this.eventListeners.get(event).add(handler)
}
off(event, handler) {
if (this.eventListeners.has(event)) {
if (handler) {
this.eventListeners.get(event).delete(handler)
} else {
this.eventListeners.delete(event)
}
}
}
emit(event, data) {
if (this.eventListeners.has(event)) {
this.eventListeners.get(event).forEach(handler => {
try {
handler(data)
} catch (error) {
console.error(`Event handler error for ${event}:`, error)
}
})
}
}
setStorageSync(key, data) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.setStorageSync({
key,
data
})
resolve(true)
} catch (error) {
console.error('Set storage error:', error)
reject(error)
}
})
}
getStorageSync(key) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
const data = wx.miniProgram.getStorageSync({
key
})
resolve(data)
} catch (error) {
console.error('Get storage error:', error)
reject(error)
}
})
}
removeStorageSync(key) {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.removeStorageSync({
key
})
resolve(true)
} catch (error) {
console.error('Remove storage error:', error)
reject(error)
}
})
}
clearStorageSync() {
this.checkReady()
return new Promise((resolve, reject) => {
try {
wx.miniProgram.clearStorageSync()
resolve(true)
} catch (error) {
console.error('Clear storage error:', error)
reject(error)
}
})
}
chooseImage(options = {}) {
this.checkReady()
return new Promise((resolve, reject) => {
const defaultOptions = {
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
...options
}
wx.chooseImage({
...defaultOptions,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
previewImage(options) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.previewImage({
...options,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
uploadImage(localId, isShowProgressTips = 1) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.uploadImage({
localId,
isShowProgressTips,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
getLocation(options = {}) {
this.checkReady()
return new Promise((resolve, reject) => {
const defaultOptions = {
type: 'wgs84',
...options
}
wx.getLocation({
...defaultOptions,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
openLocation(options) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.openLocation({
...options,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
scanQRCode(options = {}) {
this.checkReady()
return new Promise((resolve, reject) => {
const defaultOptions = {
needResult: 1,
scanType: ['qrCode', 'barCode'],
...options
}
wx.scanQRCode({
...defaultOptions,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
chooseWXPay(options) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.chooseWXPay({
...options,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
onMenuShareAppMessage(options) {
this.checkReady()
wx.onMenuShareAppMessage({
...options
})
}
onMenuShareTimeline(options) {
this.checkReady()
wx.onMenuShareTimeline({
...options
})
}
updateAppMessageShareData(options) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.updateAppMessageShareData({
...options,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
updateTimelineShareData(options) {
this.checkReady()
return new Promise((resolve, reject) => {
wx.updateTimelineShareData({
...options,
success: (res) => resolve(res),
fail: (error) => reject(error)
})
})
}
closeWindow() {
this.checkReady()
wx.closeWindow()
}
hideMenuItems(menuList = []) {
this.checkReady()
wx.hideMenuItems({
menuList
})
}
showMenuItems(menuList = []) {
this.checkReady()
wx.showMenuItems({
menuList
})
}
hideAllNonBaseMenuItem() {
this.checkReady()
wx.hideAllNonBaseMenuItem()
}
showAllNonBaseMenuItem() {
this.checkReady()
wx.showAllNonBaseMenuItem()
}
}
const wechatBus = new WechatBus()
export default wechatBus
export { WechatBus }