Compare commits
10 Commits
master
...
base-onlin
Author | SHA1 | Date |
---|---|---|
|
8b1a9ef54f | |
|
22abef940b | |
|
d5d481b39a | |
|
a4b5d8b52f | |
|
e37b60f54f | |
|
c43c566091 | |
|
203a36085e | |
|
9453a799b7 | |
|
65a6780398 | |
|
7891ea5956 |
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
/unpackage/dist/build/.automator/h5
|
/unpackage/dist/build/.automator/h5
|
||||||
/unpackage
|
/unpackage
|
||||||
|
/node_modules
|
9
App.vue
9
App.vue
|
@ -221,12 +221,7 @@ export default {
|
||||||
this.$i18n.mergeLocaleMessage(name, enUS);
|
this.$i18n.mergeLocaleMessage(name, enUS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (name == "ru-RU") {
|
|
||||||
if (ruRU) {
|
|
||||||
const localruRU = this.getJS(ruRU, "ruRU");
|
|
||||||
this.$i18n.mergeLocaleMessage(name, ruRU);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name == "fr-FR") {
|
if (name == "fr-FR") {
|
||||||
if (frFR) {
|
if (frFR) {
|
||||||
const localruRU = this.getJS(frFR, "frFR");
|
const localruRU = this.getJS(frFR, "frFR");
|
||||||
|
@ -238,9 +233,7 @@ export default {
|
||||||
let self = this;
|
let self = this;
|
||||||
self.setLocale("en-US", "enUS", "en");
|
self.setLocale("en-US", "enUS", "en");
|
||||||
self.setLocale("zh-CN", "zhCN", "zh-CN");
|
self.setLocale("zh-CN", "zhCN", "zh-CN");
|
||||||
self.setLocale("ru-RU", "ruRU", "ru-RU");
|
|
||||||
self.setLocale("fr-FR", "frFR", "fr-FR");
|
self.setLocale("fr-FR", "frFR", "fr-FR");
|
||||||
// self.setLocale('pt-PT', 'ptPT', 'pt-PT');
|
|
||||||
},
|
},
|
||||||
isFirstEnter() {
|
isFirstEnter() {
|
||||||
var firstEnter = uni.getStorageSync("firstEnter"); //同步获取缓存中是否有首次进入字段
|
var firstEnter = uni.getStorageSync("firstEnter"); //同步获取缓存中是否有首次进入字段
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
},
|
},
|
||||||
getData() {
|
getData() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get("/member/api/member/get-member-annuity-time", {}, (res) => {
|
self._get("member/api/member/get-member-annuity-time", {}, (res) => {
|
||||||
self.annuityParams = res.data;
|
self.annuityParams = res.data;
|
||||||
if (
|
if (
|
||||||
self.annuityParams.expireDateNumber <= 60 &&
|
self.annuityParams.expireDateNumber <= 60 &&
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
},
|
},
|
||||||
getMemberRenewAmount() {
|
getMemberRenewAmount() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get("/member/api/member/get-member-renew-amount", {}, (res) => {
|
self._get("member/api/member/get-member-renew-amount", {}, (res) => {
|
||||||
this.qnnuityPrice = res.data;
|
this.qnnuityPrice = res.data;
|
||||||
this.isPopup = true;
|
this.isPopup = true;
|
||||||
});
|
});
|
||||||
|
|
|
@ -42,14 +42,6 @@
|
||||||
></image>
|
></image>
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<!-- <image
|
|
||||||
crossorigin="anonymous"
|
|
||||||
data-etype="image"
|
|
||||||
:data-enode="treeData.countryUrl2"
|
|
||||||
:src="'data:image/png;base64,' + treeData.countryUrl2Base64"
|
|
||||||
mode="aspectFit"
|
|
||||||
class="poster2"
|
|
||||||
></image> -->
|
|
||||||
<image
|
<image
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
data-etype="image"
|
data-etype="image"
|
||||||
|
@ -139,7 +131,6 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex_btn">
|
<view class="flex_btn">
|
||||||
<!-- <view @click.stop="downImage('Poster1')" class="goTop_btn" style="backgroundColor:#ee1e26">{{ $t('S_C_45') }}</view> -->
|
|
||||||
<view
|
<view
|
||||||
@click.stop="copyText(treeData)"
|
@click.stop="copyText(treeData)"
|
||||||
class="goTop_btn"
|
class="goTop_btn"
|
||||||
|
@ -164,8 +155,7 @@
|
||||||
v-if="
|
v-if="
|
||||||
Array.isArray(treeData.children) &&
|
Array.isArray(treeData.children) &&
|
||||||
treeData.children.length &&
|
treeData.children.length &&
|
||||||
treeData.extend &&
|
treeData.extend
|
||||||
!loading
|
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<view
|
<view
|
||||||
|
@ -175,7 +165,7 @@
|
||||||
class="childLevel v-td"
|
class="childLevel v-td"
|
||||||
>
|
>
|
||||||
<TreeChart
|
<TreeChart
|
||||||
:json="children"
|
:treeData="children"
|
||||||
:left="0"
|
:left="0"
|
||||||
:top="0"
|
:top="0"
|
||||||
@click-node="clickNode"
|
@click-node="clickNode"
|
||||||
|
@ -183,7 +173,6 @@
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <Eposter width="750" height="1334" :list="list" backgroundColor="rgb(255, 255, 255)" @on-success="onSuccess" ref="Eposter"></Eposter> -->
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -195,59 +184,14 @@ export default {
|
||||||
// Eposter
|
// Eposter
|
||||||
},
|
},
|
||||||
name: "TreeChart",
|
name: "TreeChart",
|
||||||
props: ["json", "size"],
|
props: ["treeData", "size"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
treeData: {},
|
|
||||||
list: [],
|
list: [],
|
||||||
languages: "",
|
languages: "",
|
||||||
loading: true,
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
|
||||||
json: {
|
|
||||||
handler: function (Props) {
|
|
||||||
let extendKey = function (jsonData) {
|
|
||||||
if (Object.prototype.toString.call(jsonData) !== "[object Object]") {
|
|
||||||
jsonData = {};
|
|
||||||
}
|
|
||||||
jsonData.extend =
|
|
||||||
jsonData.extend === void 0 ? true : !!jsonData.extend;
|
|
||||||
if (Array.isArray(jsonData.children)) {
|
|
||||||
jsonData.children.forEach((c) => {
|
|
||||||
extendKey(c);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return jsonData;
|
|
||||||
};
|
|
||||||
if (Props) {
|
|
||||||
let self = this;
|
|
||||||
// self._post(
|
|
||||||
// 'member/manage/member-structure/get-url-base64',
|
|
||||||
// {
|
|
||||||
// countryUrl2: extendKey(Props).countryUrl2,
|
|
||||||
// settleCountryUrl2: extendKey(Props).settleCountryUrl2,
|
|
||||||
// avatarUrl: extendKey(Props).avatarUrl
|
|
||||||
// },
|
|
||||||
// res => {
|
|
||||||
// extendKey(Props).countryUrl2Base64 = res.countryUrl2Base64;
|
|
||||||
// extendKey(Props).settleCountryUrl2Base64 = res.settleCountryUrl2Base64;
|
|
||||||
// extendKey(Props).avatarUrlBase64 = res.avatarUrlBase64;
|
|
||||||
// this.treeData = extendKey(Props);
|
|
||||||
// self.loading = false;
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
extendKey(Props).countryUrl2Base64 = extendKey(Props).countryUrl2;
|
|
||||||
extendKey(Props).settleCountryUrl2Base64 =
|
|
||||||
extendKey(Props).settleCountryUrl2;
|
|
||||||
extendKey(Props).avatarUrlBase64 = extendKey(Props).avatarUrl;
|
|
||||||
this.treeData = extendKey(Props);
|
|
||||||
self.loading = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
immediate: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
onload() {
|
onload() {
|
||||||
this.languages = uni.getLocale();
|
this.languages = uni.getLocale();
|
||||||
},
|
},
|
||||||
|
@ -291,44 +235,6 @@ export default {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//下载图片
|
|
||||||
downImage(elClass) {
|
|
||||||
this.$refs.Eposter.createForElRect(elClass, false);
|
|
||||||
},
|
|
||||||
downloadImg() {
|
|
||||||
let self = this;
|
|
||||||
let element = document.querySelector(".Poster1");
|
|
||||||
uni.showLoading({
|
|
||||||
title: self.$t("w_0413"),
|
|
||||||
});
|
|
||||||
html2canvas(element)
|
|
||||||
.then(function (canvas) {
|
|
||||||
let dataURL = canvas.toDataURL("image/jpeg");
|
|
||||||
let link = document.createElement("a");
|
|
||||||
link.style.display = "none";
|
|
||||||
link.href = dataURL;
|
|
||||||
link.download = "image.jpg";
|
|
||||||
document.body.appendChild(link);
|
|
||||||
link.click();
|
|
||||||
document.body.removeChild(link);
|
|
||||||
uni.showToast({
|
|
||||||
icon: "none",
|
|
||||||
title: self.$t("fn_056"),
|
|
||||||
duration: 2000,
|
|
||||||
});
|
|
||||||
uni.hideLoading();
|
|
||||||
})
|
|
||||||
.catch(function (error) {
|
|
||||||
uni.hideLoading();
|
|
||||||
uni.showModal({
|
|
||||||
title: self.$t("w_0406"),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onSuccess(val) {
|
|
||||||
this.posterImg = val;
|
|
||||||
this.downloadImg(this.posterImg);
|
|
||||||
},
|
|
||||||
toggleExtend: function (treeData) {
|
toggleExtend: function (treeData) {
|
||||||
treeData.extend = !treeData.extend;
|
treeData.extend = !treeData.extend;
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
|
10
config.js
10
config.js
|
@ -1,14 +1,12 @@
|
||||||
var app_url = 'http://f.hzs413.com';
|
var app_url = '/prod-api/';
|
||||||
var yxyapi = 'https://yxy.hzs413.com';
|
var yxyapi = 'https://yxy.hzs413.com';
|
||||||
var ossapi = 'https://dny-test.s3.ap-southeast-1.amazonaws.com';
|
var ossapi = 'https://agl413-test.s3.af-south-1.amazonaws.com';
|
||||||
var ossurl = '/online/language/';
|
var ossurl = '/test/';
|
||||||
// 如果是本地测试环境
|
// 如果是本地测试环境
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
//#ifdef H5
|
//#ifdef H5
|
||||||
app_url = '/api';
|
app_url = 'http://192.168.0.86:8080/';
|
||||||
yxyapi = '/dev-api';
|
yxyapi = '/dev-api';
|
||||||
ossapi = '/oss-api';
|
|
||||||
ossurl = '/online/language/';
|
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
// 如果是生产环境,h5环境下直接读取url
|
// 如果是生产环境,h5环境下直接读取url
|
||||||
|
|
|
@ -2,14 +2,12 @@ import enUS from './en-US.json'
|
||||||
import zhCN from './zh-CN';
|
import zhCN from './zh-CN';
|
||||||
// import zhHant from './zh-Hant.json'
|
// import zhHant from './zh-Hant.json'
|
||||||
import frFR from './fr-FR.json'
|
import frFR from './fr-FR.json'
|
||||||
import ruRU from './ru-RU.json'
|
|
||||||
import ptPT from './pt-PT.json'
|
import ptPT from './pt-PT.json'
|
||||||
export default {
|
export default {
|
||||||
'en-US': enUS,
|
'en-US': enUS,
|
||||||
'zh-CN': zhCN,
|
'zh-CN': zhCN,
|
||||||
// 'zh-Hant': zhHant,
|
// 'zh-Hant': zhHant,
|
||||||
'fr-FR': frFR,
|
'fr-FR': frFR,
|
||||||
'ru-RU': ruRU,
|
|
||||||
'pt-PT':ptPT
|
'pt-PT':ptPT
|
||||||
}
|
}
|
||||||
|
|
2863
locale/ru-RU.json
2863
locale/ru-RU.json
File diff suppressed because it is too large
Load Diff
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
"common": {
|
|
||||||
"uni.app.quit": "Нажмите еще раз, чтобы выйти из приложения",
|
|
||||||
"uni.async.error": "Время ожидания подключения к серверу, нажмите на экран, чтобы повторить попытку",
|
|
||||||
"uni.showActionSheet.cancel": "Отменить",
|
|
||||||
"uni.showToast.unpaired": "Обратите внимание, что ShowToast и HideToast должны работать вместе.",
|
|
||||||
"uni.showLoading.unpaired": "Обратите внимание, что showLoading и hideLoading должны быть совместимы.",
|
|
||||||
"uni.showModal.cancel": "Отменить",
|
|
||||||
"uni.showModal.confirm": "Определение",
|
|
||||||
"uni.chooseImage.cancel": "Отменить",
|
|
||||||
"uni.chooseImage.sourceType.album": "Выбрать из альбома",
|
|
||||||
"uni.chooseImage.sourceType.camera": "Съемки",
|
|
||||||
"uni.chooseVideo.cancel": "Отменить",
|
|
||||||
"uni.chooseVideo.sourceType.album": "Выбрать из альбома",
|
|
||||||
"uni.chooseVideo.sourceType.camera": "Съемки",
|
|
||||||
"uni.previewImage.cancel": "Отменить",
|
|
||||||
"uni.previewImage.button.save": "Сохранить изображение",
|
|
||||||
"uni.previewImage.save.success": "Сохранить изображение в альбом",
|
|
||||||
"uni.previewImage.save.fail": "Ошибка сохранения изображения в альбоме",
|
|
||||||
"uni.setClipboardData.success": "Содержание скопировано",
|
|
||||||
"uni.scanCode.title": "Код сканирования",
|
|
||||||
"uni.scanCode.album": "Фотоальбом",
|
|
||||||
"uni.scanCode.fail": "Ошибка идентификации",
|
|
||||||
"uni.scanCode.flash.on": "Подсветка",
|
|
||||||
"uni.scanCode.flash.off": "Приключения закрываются",
|
|
||||||
"uni.startSoterAuthentication.authContent": "Отпечатки пальцев....",
|
|
||||||
"uni.picker.done": "Завершено",
|
|
||||||
"uni.picker.cancel": "Отменить",
|
|
||||||
"uni.video.danmu": "Снаряд",
|
|
||||||
"uni.video.volume": "Громкость",
|
|
||||||
"uni.button.feedback.title": "Обратная связь ",
|
|
||||||
"uni.button.feedback.send": "Отправить"
|
|
||||||
}
|
|
||||||
}
|
|
36
main.js
36
main.js
|
@ -17,14 +17,9 @@ let i18nConfig = {
|
||||||
'en-US': messages['en-US'],
|
'en-US': messages['en-US'],
|
||||||
'zh-CN': messages['zh-CN'],
|
'zh-CN': messages['zh-CN'],
|
||||||
// 'zh-Hant': messages['zh-Hant'],
|
// 'zh-Hant': messages['zh-Hant'],
|
||||||
'ru-RU': messages['ru-RU'],
|
|
||||||
'fr-FR': messages['fr-FR'],
|
'fr-FR': messages['fr-FR'],
|
||||||
'pt-PT': messages['pt-PT'],
|
'pt-PT': messages['pt-PT'],
|
||||||
// 'en': '',
|
|
||||||
// 'zh-CN': '',
|
|
||||||
// 'zh-Hant': '',
|
|
||||||
// 'ru-RU': '',
|
|
||||||
// 'fr-FR': '',
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
import VueI18n from 'vue-i18n'
|
import VueI18n from 'vue-i18n'
|
||||||
|
@ -85,9 +80,9 @@ app.$router.afterEach((to, from) => {
|
||||||
}
|
}
|
||||||
const u = navigator.userAgent.toLowerCase()
|
const u = navigator.userAgent.toLowerCase()
|
||||||
if (u.indexOf("like mac os x") < 0 || u.match(/MicroMessenger/i) != 'micromessenger') return
|
if (u.indexOf("like mac os x") < 0 || u.match(/MicroMessenger/i) != 'micromessenger') return
|
||||||
if (to.path !== global.location.pathname) {
|
// if (to.path !== global.location.pathname) {
|
||||||
location.assign(config.h5_addr + to.fullPath);
|
// location.assign(config.h5_addr + to.fullPath);
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
@ -114,10 +109,12 @@ Vue.prototype._get = function(path, data, success, fail, complete) {
|
||||||
let host = self.websiteUrl();
|
let host = self.websiteUrl();
|
||||||
// #ifndef APP-PLUS
|
// #ifndef APP-PLUS
|
||||||
host = config.app_url
|
host = config.app_url
|
||||||
|
console.log(host, '...host')
|
||||||
// #endif
|
// #endif
|
||||||
let callback = function() {
|
let callback = function() {
|
||||||
|
|
||||||
uni.request({
|
uni.request({
|
||||||
url: host + '/inter-api/' + path,
|
url: host + path,
|
||||||
data: data,
|
data: data,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
header: {
|
header: {
|
||||||
|
@ -195,7 +192,7 @@ Vue.prototype._post = function(path, data, success, fail, complete) {
|
||||||
Source = '3'
|
Source = '3'
|
||||||
// #endif
|
// #endif
|
||||||
uni.request({
|
uni.request({
|
||||||
url: host + '/inter-api/' + path,
|
url: host + path,
|
||||||
data: data,
|
data: data,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
@ -241,7 +238,7 @@ Vue.prototype._put = function(path, data, success, fail, complete) {
|
||||||
host = config.app_url
|
host = config.app_url
|
||||||
// #endif
|
// #endif
|
||||||
uni.request({
|
uni.request({
|
||||||
url: host + '/inter-api/' + path + '/' + data,
|
url: host + path + '/' + data,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
header: {
|
header: {
|
||||||
|
@ -281,7 +278,7 @@ Vue.prototype._putjson = function(path, data, success, fail, complete) {
|
||||||
host = config.app_url
|
host = config.app_url
|
||||||
// #endif
|
// #endif
|
||||||
uni.request({
|
uni.request({
|
||||||
url: host + '/inter-api/' + path,
|
url: host + path,
|
||||||
data: data,
|
data: data,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
|
@ -321,7 +318,7 @@ Vue.prototype._delete = function(path, data, success, fail, complete) {
|
||||||
host = config.app_url
|
host = config.app_url
|
||||||
// #endif
|
// #endif
|
||||||
uni.request({
|
uni.request({
|
||||||
url: host + '/inter-api/' + path,
|
url: host + path,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
header: {
|
header: {
|
||||||
|
@ -603,18 +600,11 @@ Vue.prototype.topBarTop = function() {
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
return uni.getMenuButtonBoundingClientRect().top;
|
return uni.getMenuButtonBoundingClientRect().top;
|
||||||
// #endif
|
// #endif
|
||||||
// #ifndef MP-WEIXIN
|
|
||||||
const SystemInfo = uni.getSystemInfoSync();
|
|
||||||
return SystemInfo.statusBarHeight;
|
|
||||||
// #endif
|
|
||||||
};
|
};
|
||||||
Vue.prototype.topBarHeight = function() {
|
Vue.prototype.topBarHeight = function() {
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
return uni.getMenuButtonBoundingClientRect().height;
|
return uni.getMenuButtonBoundingClientRect().height;
|
||||||
// #endif
|
// #endif
|
||||||
// #ifndef MP-WEIXIN
|
|
||||||
return 0
|
|
||||||
// #endif
|
|
||||||
};
|
};
|
||||||
Vue.prototype.callPhone = function(n) {
|
Vue.prototype.callPhone = function(n) {
|
||||||
if (n == '') {
|
if (n == '') {
|
||||||
|
@ -705,8 +695,6 @@ Vue.prototype.getLocale = function() {
|
||||||
return 'zh-TC'
|
return 'zh-TC'
|
||||||
} else if (l == 'fr-FR') {
|
} else if (l == 'fr-FR') {
|
||||||
return 'fr-FR'
|
return 'fr-FR'
|
||||||
} else if (l == 'ru-RU') {
|
|
||||||
return 'ru-RU'
|
|
||||||
} else if (l == 'pt-PT') {
|
} else if (l == 'pt-PT') {
|
||||||
return 'pt-PT'
|
return 'pt-PT'
|
||||||
} else {
|
} else {
|
||||||
|
@ -721,8 +709,6 @@ Vue.prototype.getLanguage = function() {
|
||||||
return 'zh-TC'
|
return 'zh-TC'
|
||||||
} else if (l == 'fr-FR') {
|
} else if (l == 'fr-FR') {
|
||||||
return 'fr-FR'
|
return 'fr-FR'
|
||||||
} else if (l == 'ru-RU') {
|
|
||||||
return 'ru-RU'
|
|
||||||
} else if (l == 'pt-PT') {
|
} else if (l == 'pt-PT') {
|
||||||
return 'pt-PT'
|
return 'pt-PT'
|
||||||
} else {
|
} else {
|
||||||
|
|
269
manifest.json
269
manifest.json
|
@ -1,35 +1,35 @@
|
||||||
{
|
{
|
||||||
"name" : "海之圣",
|
"name": "af-app",
|
||||||
"appid" : "__UNI__A4B56F3",
|
"appid": "__UNI__31B4587",
|
||||||
"description" : "海之圣",
|
"description": "af-app",
|
||||||
"versionName" : "1.6.4",
|
"versionName": "1.6.4",
|
||||||
"versionCode" : 164,
|
"versionCode": 164,
|
||||||
"transformPx" : false,
|
"transformPx": false,
|
||||||
"app-plus" : {
|
"app-plus": {
|
||||||
"compatible" : {
|
"compatible": {
|
||||||
"ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
|
"ignoreVersion": true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
|
||||||
},
|
},
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"splashscreen" : {
|
"splashscreen": {
|
||||||
"alwaysShowBeforeRender" : true,
|
"alwaysShowBeforeRender": true,
|
||||||
"waiting" : true,
|
"waiting": true,
|
||||||
"autoclose" : true,
|
"autoclose": true,
|
||||||
"delay" : 0
|
"delay": 0
|
||||||
},
|
},
|
||||||
"modules" : {
|
"modules": {
|
||||||
"Share" : {},
|
"Share": {},
|
||||||
"VideoPlayer" : {},
|
"VideoPlayer": {},
|
||||||
"Payment" : {},
|
"Payment": {},
|
||||||
"Geolocation" : {},
|
"Geolocation": {},
|
||||||
"Barcode" : {},
|
"Barcode": {},
|
||||||
"Camera" : {}
|
"Camera": {}
|
||||||
},
|
},
|
||||||
/* 模块配置 */
|
/* 模块配置 */
|
||||||
"distribute" : {
|
"distribute": {
|
||||||
/* 应用发布信息 */
|
/* 应用发布信息 */
|
||||||
"android" : {
|
"android": {
|
||||||
/* android打包配置 */
|
/* android打包配置 */
|
||||||
"permissions" : [
|
"permissions": [
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
@ -49,146 +49,153 @@
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
|
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
],
|
],
|
||||||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
|
"abiFilters": [
|
||||||
|
"armeabi-v7a",
|
||||||
|
"arm64-v8a",
|
||||||
|
"x86"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"ios" : {
|
"ios": {
|
||||||
"idfa" : false,
|
"idfa": false,
|
||||||
"privacyDescription" : {
|
"privacyDescription": {
|
||||||
"NSPhotoLibraryUsageDescription" : "评论时需要上传评论图片",
|
"NSPhotoLibraryUsageDescription": "评论时需要上传评论图片",
|
||||||
"NSCameraUsageDescription" : "评论时需要上传评论图片",
|
"NSCameraUsageDescription": "评论时需要上传评论图片",
|
||||||
"NSLocationWhenInUseUsageDescription" : "需要获取您的地理位置,为您推荐最近门店"
|
"NSLocationWhenInUseUsageDescription": "需要获取您的地理位置,为您推荐最近门店"
|
||||||
},
|
},
|
||||||
"dSYMs" : false
|
"dSYMs": false
|
||||||
},
|
},
|
||||||
/* ios打包配置 */
|
/* ios打包配置 */
|
||||||
"sdkConfigs" : {
|
"sdkConfigs": {
|
||||||
"oauth" : {},
|
"oauth": {},
|
||||||
"ad" : {},
|
"ad": {},
|
||||||
"share" : {
|
"share": {
|
||||||
"weixin" : {
|
"weixin": {
|
||||||
"appid" : "wx6996eec3fdcc8482",
|
"appid": "wx6996eec3fdcc8482",
|
||||||
"UniversalLinks" : "https://hzs.hzs413.com/"
|
"UniversalLinks": "https://hzs.hzs413.com/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"payment" : {
|
"payment": {
|
||||||
"weixin" : {
|
"weixin": {
|
||||||
"__platform__" : [ "ios", "android" ],
|
"__platform__": [
|
||||||
"appid" : "wx6996eec3fdcc8482",
|
"ios",
|
||||||
"UniversalLinks" : "https://hzs.hzs413.com/"
|
"android"
|
||||||
|
],
|
||||||
|
"appid": "wx6996eec3fdcc8482",
|
||||||
|
"UniversalLinks": "https://hzs.hzs413.com/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"geolocation" : {
|
"geolocation": {
|
||||||
"amap" : {
|
"amap": {
|
||||||
"__platform__" : [ "ios", "android" ],
|
"__platform__": [
|
||||||
"appkey_ios" : "6f95a1f244b11c5948c4f76bdef74044",
|
"ios",
|
||||||
"appkey_android" : "87dd4017ae554f18176812ddc4ae4c13"
|
"android"
|
||||||
|
],
|
||||||
|
"appkey_ios": "6f95a1f244b11c5948c4f76bdef74044",
|
||||||
|
"appkey_android": "87dd4017ae554f18176812ddc4ae4c13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"icons" : {
|
"icons": {
|
||||||
"android" : {
|
"android": {
|
||||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
"hdpi": "unpackage/res/icons/72x72.png",
|
||||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
"xhdpi": "unpackage/res/icons/96x96.png",
|
||||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
"xxhdpi": "unpackage/res/icons/144x144.png",
|
||||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
"xxxhdpi": "unpackage/res/icons/192x192.png"
|
||||||
},
|
},
|
||||||
"ios" : {
|
"ios": {
|
||||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
"appstore": "unpackage/res/icons/1024x1024.png",
|
||||||
"ipad" : {
|
"ipad": {
|
||||||
"app" : "unpackage/res/icons/76x76.png",
|
"app": "unpackage/res/icons/76x76.png",
|
||||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
"app@2x": "unpackage/res/icons/152x152.png",
|
||||||
"notification" : "unpackage/res/icons/20x20.png",
|
"notification": "unpackage/res/icons/20x20.png",
|
||||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
"proapp@2x": "unpackage/res/icons/167x167.png",
|
||||||
"settings" : "unpackage/res/icons/29x29.png",
|
"settings": "unpackage/res/icons/29x29.png",
|
||||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
"spotlight": "unpackage/res/icons/40x40.png",
|
||||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
"spotlight@2x": "unpackage/res/icons/80x80.png"
|
||||||
},
|
},
|
||||||
"iphone" : {
|
"iphone": {
|
||||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
"app@2x": "unpackage/res/icons/120x120.png",
|
||||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
"app@3x": "unpackage/res/icons/180x180.png",
|
||||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
"notification@3x": "unpackage/res/icons/60x60.png",
|
||||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
"settings@3x": "unpackage/res/icons/87x87.png",
|
||||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
"spotlight@2x": "unpackage/res/icons/80x80.png",
|
||||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
"spotlight@3x": "unpackage/res/icons/120x120.png"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"splashscreen" : {
|
"splashscreen": {
|
||||||
"androidStyle" : "default",
|
"androidStyle": "default",
|
||||||
"iosStyle" : "storyboard",
|
"iosStyle": "storyboard",
|
||||||
"android" : {
|
"android": {
|
||||||
"hdpi" : "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/480.9.png",
|
"hdpi": "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/480.9.png",
|
||||||
"xhdpi" : "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/720.9.png",
|
"xhdpi": "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/720.9.png",
|
||||||
"xxhdpi" : "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/1080.9.png"
|
"xxhdpi": "E:/工作/项目/2023客户/一体化/一体化上传20230717/.9/1080.9.png"
|
||||||
},
|
},
|
||||||
"ios" : {
|
"ios": {
|
||||||
"storyboard" : "E:/工作/项目/2023客户/一体化/一体化上传20230717/CustomStoryboard.zip"
|
"storyboard": "E:/工作/项目/2023客户/一体化/一体化上传20230717/CustomStoryboard.zip"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* SDK配置 */
|
/* SDK配置 */
|
||||||
"quickapp" : {},
|
"quickapp": {},
|
||||||
/* 快应用特有相关 */
|
/* 快应用特有相关 */
|
||||||
"mp-weixin" : {
|
"mp-weixin": {
|
||||||
/* 小程序特有相关 */
|
/* 小程序特有相关 */
|
||||||
"appid" : "wx6996eec3fdcc8482",
|
"appid": "wx6996eec3fdcc8482",
|
||||||
"setting" : {
|
"setting": {
|
||||||
"urlCheck" : false,
|
"urlCheck": false,
|
||||||
"es6" : true,
|
"es6": true,
|
||||||
"postcss" : true,
|
"postcss": true,
|
||||||
"minified" : true
|
"minified": true
|
||||||
},
|
},
|
||||||
"usingComponents" : true,
|
"usingComponents": true,
|
||||||
"permission" : {
|
"permission": {
|
||||||
"scope.userLocation" : {
|
"scope.userLocation": {
|
||||||
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
|
"desc": "你的位置信息将用于小程序位置接口的效果展示"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"h5" : {
|
"h5": {
|
||||||
"router" : {
|
"router": {
|
||||||
"mode" : "hash",
|
"mode": "hash",
|
||||||
"base" : ""
|
"base": ""
|
||||||
},
|
},
|
||||||
"devServer" : {
|
"devServer": {
|
||||||
"https" : false,
|
"https": false,
|
||||||
"proxy" : {
|
"proxy": {
|
||||||
"/api" : {
|
"/prod-api": {
|
||||||
"ws" : false,
|
"ws": false,
|
||||||
"target" : "http://f.hzs413.com",
|
"target": "http://af-app.beida413.com/",
|
||||||
"changeOrigin" : true,
|
"changeOrigin": true,
|
||||||
"secure" : false,
|
"secure": false
|
||||||
"pathRewrite" : {
|
},
|
||||||
"^/api" : "/"
|
"/dev-api": {
|
||||||
|
"ws": false,
|
||||||
|
"target": "https://yxy.hzs413.com",
|
||||||
|
"changeOrigin": true,
|
||||||
|
"secure": false,
|
||||||
|
"pathRewrite": {
|
||||||
|
"^/dev-api": "/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/dev-api" : {
|
"/oss-api": {
|
||||||
"ws" : false,
|
"ws": false,
|
||||||
"target" : "https://yxy.hzs413.com",
|
"target": "https://dny-test.s3.ap-southeast-1.amazonaws.com",
|
||||||
"changeOrigin" : true,
|
"changeOrigin": true,
|
||||||
"secure" : false,
|
"secure": false,
|
||||||
"pathRewrite" : {
|
"pathRewrite": {
|
||||||
"^/dev-api" : "/"
|
"^/oss-api": "/"
|
||||||
}
|
|
||||||
},
|
|
||||||
"/oss-api" : {
|
|
||||||
"ws" : false,
|
|
||||||
"target" : "https://dny-test.s3.ap-southeast-1.amazonaws.com",
|
|
||||||
"changeOrigin" : true,
|
|
||||||
"secure" : false,
|
|
||||||
"pathRewrite" : {
|
|
||||||
"^/oss-api" : "/"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title" : "店铺管理系统"
|
"title": "店铺管理系统"
|
||||||
},
|
},
|
||||||
"fallbackLocale" : "en-US",
|
"fallbackLocale": "en-US",
|
||||||
"locale" : "en-US"
|
"locale": "en-US"
|
||||||
}
|
}
|
|
@ -12,6 +12,52 @@
|
||||||
"vue-i18n": "^9.2.2"
|
"vue-i18n": "^9.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@babel/helper-string-parser": {
|
||||||
|
"version": "7.27.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
||||||
|
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
||||||
|
"peer": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/helper-validator-identifier": {
|
||||||
|
"version": "7.27.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
||||||
|
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
||||||
|
"peer": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/parser": {
|
||||||
|
"version": "7.28.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
|
||||||
|
"integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/types": "^7.28.2"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"parser": "bin/babel-parser.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/types": {
|
||||||
|
"version": "7.28.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
|
||||||
|
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/helper-string-parser": "^7.27.1",
|
||||||
|
"@babel/helper-validator-identifier": "^7.27.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@intlify/core-base": {
|
"node_modules/@intlify/core-base": {
|
||||||
"version": "9.2.2",
|
"version": "9.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
|
||||||
|
@ -69,11 +115,117 @@
|
||||||
"node": ">= 14"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"node_modules/@vue/compiler-core": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/parser": "^7.28.0",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"entities": "^4.5.0",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/compiler-dom": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/compiler-core": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/compiler-sfc": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/parser": "^7.28.0",
|
||||||
|
"@vue/compiler-core": "3.5.18",
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/compiler-ssr": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"magic-string": "^0.30.17",
|
||||||
|
"postcss": "^8.5.6",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/compiler-ssr": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@vue/devtools-api": {
|
"node_modules/@vue/devtools-api": {
|
||||||
"version": "6.5.0",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
||||||
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@vue/reactivity": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/runtime-core": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/reactivity": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/runtime-dom": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/reactivity": "3.5.18",
|
||||||
|
"@vue/runtime-core": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"csstype": "^3.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/server-renderer": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/compiler-ssr": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vue/shared": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
"node_modules/base64-arraybuffer": {
|
"node_modules/base64-arraybuffer": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||||
|
@ -90,6 +242,30 @@
|
||||||
"utrie": "^1.0.2"
|
"utrie": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/csstype": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"node_modules/entities": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||||
|
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||||
|
"peer": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/estree-walker": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
"node_modules/html2canvas": {
|
"node_modules/html2canvas": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
||||||
|
@ -102,6 +278,67 @@
|
||||||
"node": ">=8.0.0"
|
"node": ">=8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/magic-string": {
|
||||||
|
"version": "0.30.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
|
||||||
|
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||||
|
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"peer": true,
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.5.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
||||||
|
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.11",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/source-map": {
|
"node_modules/source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
@ -110,6 +347,15 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"peer": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/text-segmentation": {
|
"node_modules/text-segmentation": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
||||||
|
@ -126,6 +372,27 @@
|
||||||
"base64-arraybuffer": "^1.0.2"
|
"base64-arraybuffer": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/compiler-sfc": "3.5.18",
|
||||||
|
"@vue/runtime-dom": "3.5.18",
|
||||||
|
"@vue/server-renderer": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"typescript": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"typescript": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vue-i18n": {
|
"node_modules/vue-i18n": {
|
||||||
"version": "9.2.2",
|
"version": "9.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
||||||
|
@ -145,6 +412,37 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@babel/helper-string-parser": {
|
||||||
|
"version": "7.27.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
||||||
|
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"@babel/helper-validator-identifier": {
|
||||||
|
"version": "7.27.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
||||||
|
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"@babel/parser": {
|
||||||
|
"version": "7.28.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
|
||||||
|
"integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/types": "^7.28.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@babel/types": {
|
||||||
|
"version": "7.28.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
|
||||||
|
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/helper-string-parser": "^7.27.1",
|
||||||
|
"@babel/helper-validator-identifier": "^7.27.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@intlify/core-base": {
|
"@intlify/core-base": {
|
||||||
"version": "9.2.2",
|
"version": "9.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
|
||||||
|
@ -187,11 +485,114 @@
|
||||||
"@intlify/shared": "9.2.2"
|
"@intlify/shared": "9.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"@vue/compiler-core": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/parser": "^7.28.0",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"entities": "^4.5.0",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/compiler-dom": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/compiler-core": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/compiler-sfc": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/parser": "^7.28.0",
|
||||||
|
"@vue/compiler-core": "3.5.18",
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/compiler-ssr": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"magic-string": "^0.30.17",
|
||||||
|
"postcss": "^8.5.6",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/compiler-ssr": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@vue/devtools-api": {
|
"@vue/devtools-api": {
|
||||||
"version": "6.5.0",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
||||||
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
||||||
},
|
},
|
||||||
|
"@vue/reactivity": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/runtime-core": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/reactivity": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/runtime-dom": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/reactivity": "3.5.18",
|
||||||
|
"@vue/runtime-core": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18",
|
||||||
|
"csstype": "^3.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/server-renderer": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/compiler-ssr": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@vue/shared": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
"base64-arraybuffer": {
|
"base64-arraybuffer": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||||
|
@ -205,6 +606,24 @@
|
||||||
"utrie": "^1.0.2"
|
"utrie": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"csstype": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"entities": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||||
|
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"estree-walker": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
"html2canvas": {
|
"html2canvas": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
||||||
|
@ -214,11 +633,49 @@
|
||||||
"text-segmentation": "^1.0.3"
|
"text-segmentation": "^1.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"magic-string": {
|
||||||
|
"version": "0.30.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
|
||||||
|
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nanoid": {
|
||||||
|
"version": "3.3.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||||
|
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
|
"postcss": {
|
||||||
|
"version": "8.5.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
||||||
|
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"nanoid": "^3.3.11",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"source-map": {
|
"source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||||
},
|
},
|
||||||
|
"source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"peer": true
|
||||||
|
},
|
||||||
"text-segmentation": {
|
"text-segmentation": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
||||||
|
@ -235,6 +692,19 @@
|
||||||
"base64-arraybuffer": "^1.0.2"
|
"base64-arraybuffer": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue": {
|
||||||
|
"version": "3.5.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.18.tgz",
|
||||||
|
"integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==",
|
||||||
|
"peer": true,
|
||||||
|
"requires": {
|
||||||
|
"@vue/compiler-dom": "3.5.18",
|
||||||
|
"@vue/compiler-sfc": "3.5.18",
|
||||||
|
"@vue/runtime-dom": "3.5.18",
|
||||||
|
"@vue/server-renderer": "3.5.18",
|
||||||
|
"@vue/shared": "3.5.18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vue-i18n": {
|
"vue-i18n": {
|
||||||
"version": "9.2.2",
|
"version": "9.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
||||||
|
|
|
@ -162,7 +162,7 @@ export default {
|
||||||
getDataList() {
|
getDataList() {
|
||||||
let self = this;
|
let self = this;
|
||||||
let params = this.queryParams;
|
let params = this.queryParams;
|
||||||
self._get("/member/api/member-structure/tj-framework", params, (res) => {
|
self._get("member/api/member-structure/tj-framework", params, (res) => {
|
||||||
self.treeData = res.data;
|
self.treeData = res.data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
archTreeData: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
archDataFormat(archTreeData) {
|
||||||
|
const forkData = JSON.parse(JSON.stringify(archTreeData))
|
||||||
|
const addExtendKey = (forkData) => {
|
||||||
|
if (!forkData) {
|
||||||
|
forkData = {}
|
||||||
|
}
|
||||||
|
forkData.extend = forkData.extend === void 0 ? true : !!forkData.extend
|
||||||
|
if (Array.isArray(forkData.children)) {
|
||||||
|
forkData.children.forEach((c) => {
|
||||||
|
addExtendKey(c)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
forkData.countryUrl2Base64 = forkData.countryUrl2
|
||||||
|
forkData.settleCountryUrl2Base64 = forkData.settleCountryUrl2
|
||||||
|
forkData.avatarUrlBase64 = forkData.avatarUrl
|
||||||
|
}
|
||||||
|
return forkData
|
||||||
|
}
|
||||||
|
addExtendKey(forkData)
|
||||||
|
return forkData
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
|
@ -0,0 +1,425 @@
|
||||||
|
// 兼容性处理:requestAnimationFrame polyfill
|
||||||
|
const getRequestAnimationFrame = () => {
|
||||||
|
// 检查全局对象是否存在(uni-app 中可能是 uni 而不是 window)
|
||||||
|
const global = typeof window !== 'undefined' ? window :
|
||||||
|
typeof uni !== 'undefined' ? uni :
|
||||||
|
typeof global !== 'undefined' ? global : {};
|
||||||
|
|
||||||
|
return global.requestAnimationFrame ||
|
||||||
|
global.webkitRequestAnimationFrame ||
|
||||||
|
global.mozRequestAnimationFrame ||
|
||||||
|
global.oRequestAnimationFrame ||
|
||||||
|
global.msRequestAnimationFrame ||
|
||||||
|
function(callback) {
|
||||||
|
return setTimeout(callback, 1000 / 60); // 60 FPS fallback
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const getCancelAnimationFrame = () => {
|
||||||
|
const global = typeof window !== 'undefined' ? window :
|
||||||
|
typeof uni !== 'undefined' ? uni :
|
||||||
|
typeof global !== 'undefined' ? global : {};
|
||||||
|
|
||||||
|
return global.cancelAnimationFrame ||
|
||||||
|
global.webkitCancelAnimationFrame ||
|
||||||
|
global.mozCancelAnimationFrame ||
|
||||||
|
global.oCancelAnimationFrame ||
|
||||||
|
global.msCancelAnimationFrame ||
|
||||||
|
function(id) {
|
||||||
|
return clearTimeout(id);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const requestAnimationFrame = getRequestAnimationFrame();
|
||||||
|
const cancelAnimationFrame = getCancelAnimationFrame();
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 触摸缩放相关状态
|
||||||
|
touchStartPosition1: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
},
|
||||||
|
touchStartPosition2: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
},
|
||||||
|
initialDistance: 0,
|
||||||
|
x: 0, // 元素的x坐标
|
||||||
|
y: 0, // 元素的y坐标
|
||||||
|
scale: 1, // 元素的缩放比例
|
||||||
|
initialX: 0, // 元素的初始x坐标
|
||||||
|
initialY: 0, // 元素的初始y坐标
|
||||||
|
minScale: 0.5, // 最小缩放比例
|
||||||
|
maxScale: 3, // 最大缩放比例
|
||||||
|
isScaling: false, // 是否正在缩放
|
||||||
|
lastTouchTime: 0, // 上次触摸时间
|
||||||
|
|
||||||
|
// 拖拽优化相关
|
||||||
|
isDragging: false, // 是否正在拖拽
|
||||||
|
dragStartTime: 0, // 拖拽开始时间
|
||||||
|
lastMoveTime: 0, // 上次移动时间
|
||||||
|
velocity: { x: 0, y: 0 }, // 移动速度
|
||||||
|
animationId: null, // 动画帧ID
|
||||||
|
pendingUpdate: false, // 是否有待处理的更新
|
||||||
|
|
||||||
|
// 边界控制
|
||||||
|
enableBoundary: false, // 是否启用边界控制
|
||||||
|
boundary: {
|
||||||
|
minX: -500,
|
||||||
|
maxX: 500,
|
||||||
|
minY: -500,
|
||||||
|
maxY: 500,
|
||||||
|
}, // 移动边界
|
||||||
|
|
||||||
|
// 兼容性相关
|
||||||
|
useTimer: false, // 是否使用定时器代替 RAF(兼容性降级)
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 触摸开始事件处理
|
||||||
|
* @param {TouchEvent} event 触摸事件
|
||||||
|
*/
|
||||||
|
handleTouchStart(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// 取消之前的动画
|
||||||
|
if (this.animationId) {
|
||||||
|
this.safeCancelAnimationFrame(this.animationId);
|
||||||
|
this.animationId = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentTime = Date.now();
|
||||||
|
this.lastTouchTime = currentTime;
|
||||||
|
|
||||||
|
if (event.touches.length === 1) {
|
||||||
|
// 单指拖拽初始化
|
||||||
|
this.isScaling = false;
|
||||||
|
this.isDragging = true;
|
||||||
|
this.dragStartTime = currentTime;
|
||||||
|
this.lastMoveTime = currentTime;
|
||||||
|
this.initialX = event.touches[0].clientX;
|
||||||
|
this.initialY = event.touches[0].clientY;
|
||||||
|
this.velocity = { x: 0, y: 0 };
|
||||||
|
this.pendingUpdate = false;
|
||||||
|
} else if (event.touches.length === 2) {
|
||||||
|
// 双指缩放初始化
|
||||||
|
this.isScaling = true;
|
||||||
|
this.isDragging = false;
|
||||||
|
this.touchStartPosition1.x = event.touches[0].clientX;
|
||||||
|
this.touchStartPosition1.y = event.touches[0].clientY;
|
||||||
|
this.touchStartPosition2.x = event.touches[1].clientX;
|
||||||
|
this.touchStartPosition2.y = event.touches[1].clientY;
|
||||||
|
|
||||||
|
// 计算初始两指间距离
|
||||||
|
this.initialDistance = this.getDistance(
|
||||||
|
this.touchStartPosition1,
|
||||||
|
this.touchStartPosition2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 触摸移动事件处理
|
||||||
|
* @param {TouchEvent} event 触摸事件
|
||||||
|
*/
|
||||||
|
handleTouchMove(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (event.touches.length === 2 && this.isScaling) {
|
||||||
|
// 双指缩放逻辑
|
||||||
|
const currentDistance = this.getDistance(
|
||||||
|
{ x: event.touches[0].clientX, y: event.touches[0].clientY },
|
||||||
|
{ x: event.touches[1].clientX, y: event.touches[1].clientY }
|
||||||
|
);
|
||||||
|
|
||||||
|
if (this.initialDistance > 0) {
|
||||||
|
// 计算缩放比例变化
|
||||||
|
const scaleChange = currentDistance / this.initialDistance;
|
||||||
|
let newScale = this.scale * scaleChange;
|
||||||
|
|
||||||
|
// 限制缩放范围
|
||||||
|
newScale = Math.max(this.minScale, Math.min(this.maxScale, newScale));
|
||||||
|
this.scale = newScale;
|
||||||
|
|
||||||
|
// 更新初始距离为当前距离,用于下次计算
|
||||||
|
this.initialDistance = currentDistance;
|
||||||
|
}
|
||||||
|
} else if (event.touches.length === 1 && this.isDragging) {
|
||||||
|
// 单指拖拽逻辑优化
|
||||||
|
const currentTime = Date.now();
|
||||||
|
const currentX = event.touches[0].clientX;
|
||||||
|
const currentY = event.touches[0].clientY;
|
||||||
|
|
||||||
|
// 计算移动距离
|
||||||
|
const deltaX = currentX - this.initialX;
|
||||||
|
const deltaY = currentY - this.initialY;
|
||||||
|
|
||||||
|
// 计算移动速度(用于惯性效果)
|
||||||
|
const timeDelta = currentTime - this.lastMoveTime;
|
||||||
|
if (timeDelta > 0) {
|
||||||
|
this.velocity.x = deltaX / timeDelta * 16; // 标准化到16ms(60fps)
|
||||||
|
this.velocity.y = deltaY / timeDelta * 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用节流机制更新位置
|
||||||
|
this.schedulePositionUpdate(deltaX, deltaY);
|
||||||
|
|
||||||
|
// 更新初始位置和时间
|
||||||
|
this.initialX = currentX;
|
||||||
|
this.initialY = currentY;
|
||||||
|
this.lastMoveTime = currentTime;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 触摸结束事件处理
|
||||||
|
* @param {TouchEvent} event 触摸事件
|
||||||
|
*/
|
||||||
|
handleTouchEnd(event) {
|
||||||
|
if (event.touches.length === 0) {
|
||||||
|
// 所有手指都离开屏幕,重置状态
|
||||||
|
this.isScaling = false;
|
||||||
|
this.initialDistance = 0;
|
||||||
|
|
||||||
|
// 如果是拖拽结束,启动惯性效果
|
||||||
|
if (this.isDragging) {
|
||||||
|
this.isDragging = false;
|
||||||
|
this.startInertiaAnimation();
|
||||||
|
}
|
||||||
|
} else if (event.touches.length === 1 && this.isScaling) {
|
||||||
|
// 从双指变为单指,切换到拖拽模式
|
||||||
|
this.isScaling = false;
|
||||||
|
this.isDragging = true;
|
||||||
|
this.initialX = event.touches[0].clientX;
|
||||||
|
this.initialY = event.touches[0].clientY;
|
||||||
|
this.lastMoveTime = Date.now();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算两点间距离的辅助方法
|
||||||
|
* @param {Object} point1 第一个点 {x, y}
|
||||||
|
* @param {Object} point2 第二个点 {x, y}
|
||||||
|
* @return {Number} 两点间距离
|
||||||
|
*/
|
||||||
|
getDistance(point1, point2) {
|
||||||
|
const dx = point1.x - point2.x;
|
||||||
|
const dy = point1.y - point2.y;
|
||||||
|
return Math.sqrt(dx * dx + dy * dy);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置缩放和位置
|
||||||
|
*/
|
||||||
|
resetTransform() {
|
||||||
|
this.x = 0;
|
||||||
|
this.y = 0;
|
||||||
|
this.scale = 1;
|
||||||
|
this.isScaling = false;
|
||||||
|
this.initialDistance = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全的 requestAnimationFrame 调用
|
||||||
|
* @param {Function} callback 回调函数
|
||||||
|
* @return {Number} 动画ID
|
||||||
|
*/
|
||||||
|
safeRequestAnimationFrame(callback) {
|
||||||
|
try {
|
||||||
|
if (this.useTimer) {
|
||||||
|
return setTimeout(callback, 16); // 约 60 FPS
|
||||||
|
}
|
||||||
|
return requestAnimationFrame(callback);
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('requestAnimationFrame failed, fallback to setTimeout:', error);
|
||||||
|
this.useTimer = true;
|
||||||
|
return setTimeout(callback, 16);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全的 cancelAnimationFrame 调用
|
||||||
|
* @param {Number} id 动画ID
|
||||||
|
*/
|
||||||
|
safeCancelAnimationFrame(id) {
|
||||||
|
try {
|
||||||
|
if (this.useTimer || typeof id === 'number') {
|
||||||
|
clearTimeout(id);
|
||||||
|
} else {
|
||||||
|
cancelAnimationFrame(id);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('cancelAnimationFrame failed, fallback to clearTimeout:', error);
|
||||||
|
clearTimeout(id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 节流位置更新机制
|
||||||
|
* @param {Number} deltaX x轴位移
|
||||||
|
* @param {Number} deltaY y轴位移
|
||||||
|
*/
|
||||||
|
schedulePositionUpdate(deltaX, deltaY) {
|
||||||
|
// 计算新位置
|
||||||
|
let newX = this.x + deltaX;
|
||||||
|
let newY = this.y + deltaY;
|
||||||
|
|
||||||
|
// 应用边界限制
|
||||||
|
if (this.enableBoundary) {
|
||||||
|
const pos = this.applyBoundaryConstraints(newX, newY);
|
||||||
|
newX = pos.x;
|
||||||
|
newY = pos.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新位置
|
||||||
|
this.x = newX;
|
||||||
|
this.y = newY;
|
||||||
|
|
||||||
|
if (!this.pendingUpdate) {
|
||||||
|
this.pendingUpdate = true;
|
||||||
|
this.safeRequestAnimationFrame(() => {
|
||||||
|
this.pendingUpdate = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启动惯性动画
|
||||||
|
*/
|
||||||
|
startInertiaAnimation() {
|
||||||
|
const minVelocity = 0.1; // 最小速度阈值
|
||||||
|
const friction = 0.95; // 摩擦系数
|
||||||
|
|
||||||
|
// 如果速度太小,直接停止
|
||||||
|
if (Math.abs(this.velocity.x) < minVelocity && Math.abs(this.velocity.y) < minVelocity) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const animate = () => {
|
||||||
|
// 应用摩擦力
|
||||||
|
this.velocity.x *= friction;
|
||||||
|
this.velocity.y *= friction;
|
||||||
|
|
||||||
|
// 更新位置
|
||||||
|
let newX = this.x + this.velocity.x;
|
||||||
|
let newY = this.y + this.velocity.y;
|
||||||
|
|
||||||
|
// 应用边界限制
|
||||||
|
if (this.enableBoundary) {
|
||||||
|
const pos = this.applyBoundaryConstraints(newX, newY);
|
||||||
|
newX = pos.x;
|
||||||
|
newY = pos.y;
|
||||||
|
|
||||||
|
// 如果到达边界,减慢对应方向的速度
|
||||||
|
if (newX !== this.x + this.velocity.x) {
|
||||||
|
this.velocity.x *= 0.3;
|
||||||
|
}
|
||||||
|
if (newY !== this.y + this.velocity.y) {
|
||||||
|
this.velocity.y *= 0.3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.x = newX;
|
||||||
|
this.y = newY;
|
||||||
|
|
||||||
|
// 检查是否继续动画
|
||||||
|
if (Math.abs(this.velocity.x) > minVelocity || Math.abs(this.velocity.y) > minVelocity) {
|
||||||
|
this.animationId = this.safeRequestAnimationFrame(animate);
|
||||||
|
} else {
|
||||||
|
this.animationId = null;
|
||||||
|
this.velocity = { x: 0, y: 0 };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.animationId = this.safeRequestAnimationFrame(animate);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用边界约束
|
||||||
|
* @param {Number} x x坐标
|
||||||
|
* @param {Number} y y坐标
|
||||||
|
* @return {Object} 约束后的坐标 {x, y}
|
||||||
|
*/
|
||||||
|
applyBoundaryConstraints(x, y) {
|
||||||
|
return {
|
||||||
|
x: Math.max(this.boundary.minX, Math.min(this.boundary.maxX, x)),
|
||||||
|
y: Math.max(this.boundary.minY, Math.min(this.boundary.maxY, y)),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置缩放范围
|
||||||
|
* @param {Number} minScale 最小缩放比例
|
||||||
|
* @param {Number} maxScale 最大缩放比例
|
||||||
|
*/
|
||||||
|
setScaleRange(minScale, maxScale) {
|
||||||
|
this.minScale = minScale || 0.5;
|
||||||
|
this.maxScale = maxScale || 3;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置移动边界
|
||||||
|
* @param {Object} boundary 边界配置 {minX, maxX, minY, maxY}
|
||||||
|
* @param {Boolean} enable 是否启用边界控制
|
||||||
|
*/
|
||||||
|
setBoundary(boundary, enable = true) {
|
||||||
|
this.boundary = { ...this.boundary, ...boundary };
|
||||||
|
this.enableBoundary = enable;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测并设置兼容性模式
|
||||||
|
*/
|
||||||
|
detectCompatibility() {
|
||||||
|
try {
|
||||||
|
// 尝试调用 requestAnimationFrame
|
||||||
|
const testId = requestAnimationFrame(() => {});
|
||||||
|
cancelAnimationFrame(testId);
|
||||||
|
this.useTimer = false;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('requestAnimationFrame not supported, using timer fallback');
|
||||||
|
this.useTimer = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 强制使用定时器模式(用于调试或特殊需求)
|
||||||
|
* @param {Boolean} useTimer 是否使用定时器
|
||||||
|
*/
|
||||||
|
setTimerMode(useTimer = true) {
|
||||||
|
this.useTimer = useTimer;
|
||||||
|
if (useTimer) {
|
||||||
|
console.info('TouchScale: 已切换到定时器模式');
|
||||||
|
} else {
|
||||||
|
console.info('TouchScale: 已切换到 requestAnimationFrame 模式');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理动画和状态
|
||||||
|
*/
|
||||||
|
cleanupTouchScale() {
|
||||||
|
if (this.animationId) {
|
||||||
|
this.safeCancelAnimationFrame(this.animationId);
|
||||||
|
this.animationId = null;
|
||||||
|
}
|
||||||
|
this.isDragging = false;
|
||||||
|
this.isScaling = false;
|
||||||
|
this.velocity = { x: 0, y: 0 };
|
||||||
|
this.pendingUpdate = false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// 组件创建时检测兼容性
|
||||||
|
mounted() {
|
||||||
|
this.detectCompatibility();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 组件销毁时清理
|
||||||
|
beforeDestroy() {
|
||||||
|
this.cleanupTouchScale();
|
||||||
|
},
|
||||||
|
};
|
|
@ -45,7 +45,7 @@
|
||||||
transform: `scale(${scale})`,
|
transform: `scale(${scale})`,
|
||||||
}"
|
}"
|
||||||
:size="size"
|
:size="size"
|
||||||
:json="data"
|
:treeData="archTreeData"
|
||||||
:class="{ landscape: landscape.length }"
|
:class="{ landscape: landscape.length }"
|
||||||
@click-node="clickNode"
|
@click-node="clickNode"
|
||||||
@click-top="clickTop"
|
@click-top="clickTop"
|
||||||
|
@ -146,11 +146,14 @@
|
||||||
import html2canvas from "html2canvas";
|
import html2canvas from "html2canvas";
|
||||||
import TreeChart3 from "@/components/architectures/resettleSO1.vue";
|
import TreeChart3 from "@/components/architectures/resettleSO1.vue";
|
||||||
import Eposter from "@/components/architectures/Poster.vue";
|
import Eposter from "@/components/architectures/Poster.vue";
|
||||||
|
import archDataMixin from "./mixin/archDataMixin";
|
||||||
|
import touchScaleMixin from "./mixin/touchScaleMixin";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
TreeChart3,
|
TreeChart3,
|
||||||
Eposter,
|
Eposter,
|
||||||
},
|
},
|
||||||
|
mixins: [archDataMixin, touchScaleMixin],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
avaerInfoList: [],
|
avaerInfoList: [],
|
||||||
|
@ -158,35 +161,21 @@ export default {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
memberSettlePeriodId: "", //期数
|
memberSettlePeriodId: "", //期数
|
||||||
memberCode: "", //会员编号
|
memberCode: "", //会员编号
|
||||||
level: 3, //代数
|
level: 7, //代数
|
||||||
type: 1,
|
type: 1,
|
||||||
},
|
},
|
||||||
memberSettlePeriodList: [], //期数
|
memberSettlePeriodList: [], //期数
|
||||||
popShow: false,
|
popShow: false,
|
||||||
listShow: false,
|
listShow: false,
|
||||||
settleName: "",
|
settleName: "",
|
||||||
data: {},
|
archTreeData: {},
|
||||||
size: 0.8,
|
size: 0.8,
|
||||||
landscape: [],
|
landscape: [],
|
||||||
popMould: {},
|
popMould: {},
|
||||||
isPop: false,
|
isPop: false,
|
||||||
touchStartPosition1: {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
},
|
|
||||||
touchStartPosition2: {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
},
|
|
||||||
initialDistance: 0,
|
|
||||||
list: [],
|
list: [],
|
||||||
startX: 0,
|
startX: 0,
|
||||||
startY: 0,
|
startY: 0
|
||||||
x: 0, // 元素的x坐标
|
|
||||||
y: 0, // 元素的y坐标
|
|
||||||
scale: 1, // 元素的缩放比例
|
|
||||||
initialX: 0, // 元素的初始x坐标
|
|
||||||
initialY: 0, // 元素的初始y坐标
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad() {
|
onLoad() {
|
||||||
|
@ -198,41 +187,8 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
onpenPop() {
|
onpenPop() {
|
||||||
this.popShow = true;
|
this.popShow = true;
|
||||||
console.log(this.popShow);
|
|
||||||
},
|
},
|
||||||
handleTouchStart(event) {
|
|
||||||
// 记录元素的初始位置
|
|
||||||
this.initialX = event.changedTouches[0].clientX;
|
|
||||||
this.initialY = event.changedTouches[0].clientY;
|
|
||||||
},
|
|
||||||
handleTouchMove(event) {
|
|
||||||
if (event.touches.length === 2) {
|
|
||||||
// 计算拖动的距离
|
|
||||||
const deltaX = event.touches[0].clientX - event.touches[1].clientX;
|
|
||||||
const deltaY = event.touches[0].clientY - event.touches[1].clientY;
|
|
||||||
// 更新元素的位置和缩放比例
|
|
||||||
this.x += deltaX;
|
|
||||||
this.y += deltaY;
|
|
||||||
// 根据滑动距离控制缩放比例
|
|
||||||
this.scale += deltaY / 100;
|
|
||||||
} else {
|
|
||||||
// 计算拖动的距离
|
|
||||||
const deltaX = event.changedTouches[0].clientX - this.initialX;
|
|
||||||
const deltaY = event.changedTouches[0].clientY - this.initialY;
|
|
||||||
// 更新元素的位置和缩放比例
|
|
||||||
this.x += deltaX;
|
|
||||||
this.y += deltaY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新元素的初始位置为最后一次拖动的结束位置
|
|
||||||
this.initialX = event.touches[0].clientX;
|
|
||||||
this.initialY = event.touches[0].clientY;
|
|
||||||
},
|
|
||||||
handleTouchEnd(event) {
|
|
||||||
// 在这里记录第一次拖动的结束位置,以便第二次拖动时使用
|
|
||||||
this.initialX = event.changedTouches[0].clientX;
|
|
||||||
this.initialY = event.changedTouches[0].clientY;
|
|
||||||
},
|
|
||||||
clickNode(e) {},
|
clickNode(e) {},
|
||||||
clickTop(e) {
|
clickTop(e) {
|
||||||
let that = this;
|
let that = this;
|
||||||
|
@ -260,10 +216,9 @@ export default {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
getDataList() {
|
getDataList() {
|
||||||
let self = this;
|
|
||||||
let params = this.queryParams;
|
let params = this.queryParams;
|
||||||
self._get("/member/api/member-structure/az-framework-first", params, (res) => {
|
this._get("/member/api/member-structure/az-framework-first", params, (res) => {
|
||||||
self.data = res.data[0];
|
this.archTreeData = this.archDataFormat(res.data[0] || {});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
clearAll() {
|
clearAll() {
|
||||||
|
|
|
@ -318,7 +318,7 @@ export default {
|
||||||
console.log(self.typeIndex);
|
console.log(self.typeIndex);
|
||||||
let specialArea = self.typeList[self.typeIndex].specialArea;
|
let specialArea = self.typeList[self.typeIndex].specialArea;
|
||||||
self._get(
|
self._get(
|
||||||
"/sale/api/shopping/getShopping",
|
"sale/api/shopping/getShopping",
|
||||||
{
|
{
|
||||||
specialArea: specialArea,
|
specialArea: specialArea,
|
||||||
},
|
},
|
||||||
|
@ -339,7 +339,7 @@ export default {
|
||||||
getType() {
|
getType() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self.isInit = false;
|
self.isInit = false;
|
||||||
self._get("/sale/api/shopping/getShopping", {}, (res) => {
|
self._get("sale/api/shopping/getShopping", {}, (res) => {
|
||||||
self.typeList = res.data;
|
self.typeList = res.data;
|
||||||
if (self.typeList && self.typeList.length > 0) {
|
if (self.typeList && self.typeList.length > 0) {
|
||||||
self.listData = self.typeList[0].shoppingCartList;
|
self.listData = self.typeList[0].shoppingCartList;
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
v-for="(item, index) in advertBannerList" :key="index"></view>
|
v-for="(item, index) in advertBannerList" :key="index"></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="time-box f26">{{$t('fn_313')+': '}}<text class="domation">{{nowDate}}</text></view>
|
<!-- <view class="time-box f26">{{$t('fn_313')+': '}}<text class="domation">{{nowDate}}</text></view> -->
|
||||||
<annuity :userInfo="userInfo"></annuity>
|
<annuity :userInfo="userInfo"></annuity>
|
||||||
<view class="nav-list">
|
<view class="nav-list">
|
||||||
<view class="nav-item" v-for="(item, index) in recommendSpecialAreaList" :key="index" v-if="
|
<view class="nav-item" v-for="(item, index) in recommendSpecialAreaList" :key="index" v-if="
|
||||||
|
|
|
@ -222,20 +222,7 @@
|
||||||
<view class="p-40-0">
|
<view class="p-40-0">
|
||||||
<button class="normal-sub-btn" @click="payFunc">{{ $t('w_0248') }}</button>
|
<button class="normal-sub-btn" @click="payFunc">{{ $t('w_0248') }}</button>
|
||||||
</view>
|
</view>
|
||||||
<template v-if="showUp">
|
|
||||||
<view class="pop-bg"></view>
|
|
||||||
<view class="upgrade-pop">
|
|
||||||
<view class="d-e-c" @click="showUp = false"><u-icon name="close" size="32rpx" color="#fff"></u-icon></view>
|
|
||||||
<view class="fb white tc f48">升级成功</view>
|
|
||||||
<image style="width:100%;margin: 0 auto;" src="/static/cashier-up.png" mode="widthFix"></image>
|
|
||||||
<view class="progress-box"><view class="progress-box-item"></view></view>
|
|
||||||
<view class="d-c d-c-c white f28">
|
|
||||||
<view class="mb20">32100/49800</view>
|
|
||||||
<view class="mb20">您的最新等级为:VIP</view>
|
|
||||||
<view class="mb20">您的最新奖衔为:资深经理</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
<Popup :show="isPopup" :width="665" :padding="0" @hidePopup="hidePopupFunc">
|
<Popup :show="isPopup" :width="665" :padding="0" @hidePopup="hidePopupFunc">
|
||||||
<view class="d-e-c ww100">
|
<view class="d-e-c ww100">
|
||||||
<view class="p20" @click="hidePopupFunc(true)"><text class="icon iconfont icon-guanbi" style="color: #999;font-size: 28rpx;"></text></view>
|
<view class="p20" @click="hidePopupFunc(true)"><text class="icon iconfont icon-guanbi" style="color: #999;font-size: 28rpx;"></text></view>
|
||||||
|
|
|
@ -342,7 +342,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
getOrderStatus() {
|
getOrderStatus() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get("/system/pub/enums/order-status-api", {}, (res) => {
|
self._get("system/pub/enums/order-status-api", {}, (res) => {
|
||||||
self.orderStatus = res.data;
|
self.orderStatus = res.data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
<text class="domation mr10">*</text>
|
<text class="domation mr10">*</text>
|
||||||
{{ $t("PER_DA_3") }}
|
{{ $t("PER_DA_3") }}
|
||||||
</view>
|
</view>
|
||||||
<view class="flex-1 d-s-c">
|
<view class="flex-1 d-s-c" style="width: 100%; justify-content: flex-end;">
|
||||||
<image
|
<image
|
||||||
class="queryimg mr10"
|
class="queryimg mr10"
|
||||||
mode="heightFix"
|
mode="heightFix"
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
: ''
|
: ''
|
||||||
"
|
"
|
||||||
></image>
|
></image>
|
||||||
<view class="flex-1">{{
|
<view >{{
|
||||||
pkCountry >= 0 && countryList[pkCountry]
|
pkCountry >= 0 && countryList[pkCountry]
|
||||||
? countryList[pkCountry].shortName
|
? countryList[pkCountry].shortName
|
||||||
: ""
|
: ""
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<text class="domation mr10">*</text>
|
<text class="domation mr10">*</text>
|
||||||
{{ $t("PER_DA_4") }}
|
{{ $t("PER_DA_4") }}
|
||||||
</view>
|
</view>
|
||||||
<view class="flex-1 d-s-c">
|
<view class="flex-1 d-s-c" style="width: 100%; justify-content: flex-end;">
|
||||||
<image
|
<image
|
||||||
class="queryimg mr10"
|
class="queryimg mr10"
|
||||||
mode="heightFix"
|
mode="heightFix"
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
: ''
|
: ''
|
||||||
"
|
"
|
||||||
></image>
|
></image>
|
||||||
<view class="flex-1">{{
|
<view style="padding-right: 30rpx;">{{
|
||||||
pkSettleCountry >= 0 && countryList[pkSettleCountry]
|
pkSettleCountry >= 0 && countryList[pkSettleCountry]
|
||||||
? countryList[pkSettleCountry].shortName
|
? countryList[pkSettleCountry].shortName
|
||||||
: ""
|
: ""
|
||||||
|
@ -600,7 +600,8 @@ export default {
|
||||||
|
|
||||||
.queryimg {
|
.queryimg {
|
||||||
height: 60rpx;
|
height: 60rpx;
|
||||||
flex-shrink: 0;
|
width: 60rpx;
|
||||||
|
// flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-top-nav {
|
.form-top-nav {
|
||||||
|
|
|
@ -305,7 +305,8 @@
|
||||||
}
|
}
|
||||||
.queryimg {
|
.queryimg {
|
||||||
height: 60rpx;
|
height: 60rpx;
|
||||||
flex-shrink: 0;
|
width: 60rpx;
|
||||||
|
// flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-title {
|
.form-title {
|
||||||
|
|
|
@ -674,13 +674,13 @@
|
||||||
methods: {
|
methods: {
|
||||||
getMemberAnnuity() {
|
getMemberAnnuity() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get("/member/api/member/get-member-annuity-time", {}, (res) => {
|
self._get("member/api/member/get-member-annuity-time", {}, (res) => {
|
||||||
self.resaleIncomeBonus = res.data.resaleIncomeBonus;
|
self.resaleIncomeBonus = res.data.resaleIncomeBonus;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getNextLevelPv() {
|
getNextLevelPv() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get("/member/api/member/next-level-pv", {}, (res) => {
|
self._get("member/api/member/next-level-pv", {}, (res) => {
|
||||||
self.nextText = res.data.gradeValue;
|
self.nextText = res.data.gradeValue;
|
||||||
self.isMaxGrade = res.data.isMaxGrade;
|
self.isMaxGrade = res.data.isMaxGrade;
|
||||||
});
|
});
|
||||||
|
@ -2029,7 +2029,8 @@
|
||||||
|
|
||||||
.queryimg {
|
.queryimg {
|
||||||
height: 40rpx;
|
height: 40rpx;
|
||||||
flex-shrink: 0;
|
width: 40rpx;
|
||||||
|
// flex-shrink: 0;
|
||||||
margin: 0 10rpx;
|
margin: 0 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -317,7 +317,7 @@
|
||||||
},
|
},
|
||||||
getOrderStatus() {
|
getOrderStatus() {
|
||||||
let self = this;
|
let self = this;
|
||||||
self._get('/system/pub/enums/order-status-api', {}, res => {
|
self._get('system/pub/enums/order-status-api', {}, res => {
|
||||||
self.orderStatus = res.data;
|
self.orderStatus = res.data;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="set-group" style="padding-top: 18rpx;">
|
<!-- <view class="set-group" style="padding-top: 18rpx;">
|
||||||
<view class="d-b-c set-group-item "
|
<view class="d-b-c set-group-item "
|
||||||
@click="gotoPage('pages/user/set/bind/email?email='+encodeURIComponent(userInfo.email || ''))">
|
@click="gotoPage('pages/user/set/bind/email?email='+encodeURIComponent(userInfo.email || ''))">
|
||||||
<view>{{$t('PER_DA_33')}}</view>
|
<view>{{$t('PER_DA_33')}}</view>
|
||||||
|
@ -23,20 +23,9 @@
|
||||||
<text class="icon iconfont icon-jiantou"></text>
|
<text class="icon iconfont icon-jiantou"></text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="d-b-c set-group-item" @click="gotoPage('pages/user/set/bind/mobiless')">
|
|
||||||
<view>{{$t('w_0417')}}</view>
|
|
||||||
<view class="d-e-c gray9">
|
</view> -->
|
||||||
<text class="">{{ mobileHidden(userInfo.phone) || $t('w_0418') }}</text>
|
|
||||||
</view>
|
|
||||||
</view> -->
|
|
||||||
<view class="d-b-c set-group-item">
|
|
||||||
<view>{{$t('w_0417')}}</view>
|
|
||||||
<view class="d-e-c gray9">
|
|
||||||
<text class="">{{ mobileHidden(userInfo.phone) || $t('w_0418') }}</text>
|
|
||||||
<!-- <text class="icon iconfont icon-jiantou"></text> -->
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue