出现这个错误,H5能运行,APP编译出现:Invalid value "iife" for option "output.format" - UMD and IIFE output formats are not supported for code-splitting builds.增加了 vite.config.js 未解决。

添加了实时数据采集展示页面,工业库实时访问的连接错误未解决。
This commit is contained in:
ldeyun 2025-03-16 19:39:16 +08:00
parent 036b2ecb05
commit cff5f27692
20 changed files with 3463 additions and 949 deletions

View File

@ -18,8 +18,6 @@ export function queryJinriTrqShengchansj(params) { // 获取当前日期、今
})
}
export function queryYearShengchansj(params) { // 获取今年以来天然气的生产数据
return https({
url: '/scdt.CxcScdtChart/cxcScdtChart/getYearStatis',
@ -35,3 +33,21 @@ export function queryJinriYuanyouShengchansj(params) { // 获取今日原油 污
data: params
})
}
// 实时数据API
export function queryJldZcList(params) { // 获取计量点站场列表
return https({
url: '/sys/sysDepart/queryDepartsByzdjl',
method: 'get',
data: params
})
}
export function queryJldDataByZc(params) { // 获取站场计量点实时数据
return https({
url: 'http://10.75.166.6:9999/Gyk/sssj/GetJlByZc',
method: 'get',
data: params
})
}

1212
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,17 @@
{
"name": "your-project",
"version": "1.0.0",
"scripts": {
"build": "vite build --config vite.config.js --format esm"
},
"dependencies": {
"@dcloudio/uni-ui": "^1.5.6",
"base-64": "^1.0.0",
"dayjs": "^1.11.13",
"echarts": "^5.6.0"
"echarts": "^5.6.0",
"pinia": "^3.0.1"
},
"devDependencies": {
"vite": "^6.2.2"
}
}

View File

@ -185,6 +185,63 @@
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/index",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/trqSssj",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "天然气实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/gycsSssj",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "工艺参数实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/ysjSssj",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "压缩机实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/aqbjSssj",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "安全报警实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/views/shengchan/shishishuju/nyxhSssj",
"style": {
// "navigationStyle": "custom"
"navigationBarTitleText": "能耗实时数据",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/userlist/index",
"style": {

View File

@ -5,25 +5,81 @@
<view style="width: 100%; display: grid; place-items: center">
<uni-title :title="dateDate + ':生产经营情况'" type="h1" color="blue" />
</view>
<view style="margin: 0 10px;">
<uni-segmented-control style="margin-top: 10px;margin-bottom: 10px" :current="current" :values="items"
@clickItem="onClickItem" styleType="button" activeColor="#0055ff"></uni-segmented-control>
</view>
<view class="content">
<view v-show="current === 0">
<view style="padding: 0 10px">
<view class="progress-bartime">
<!-- 动态设置宽度和颜色 -->
<view class="progressTime" :style="{ width: `${timePercent}%`, 'background-color': '#0055ff' }">
</view>
<!-- 显示带符号的百分比 -->
<text class="progress-text">全年时间进度:{{ timePercent }}%</text>
</view>
</view>
<scroll-view scroll-y :style="{ height: scrollViewHeight + 'px' }">
<trq-data></trq-data>
<yy-data></yy-data>
</scroll-view>
</view>
<view v-show="current === 1">
<scroll-view scroll-y :style="{ height: scrollViewHeight + 'px' }">
<sssjForm></sssjForm>
</scroll-view>
</view>
<view v-show="current === 2">
<scroll-view scroll-y :style="{ height: scrollViewHeight + 'px' }">
选项卡2的内容
</scroll-view>
</view>
</view>
</view>
</template>
<script setup>
import { formatDate, getDateAfterDays } from '@/utils/dateTime.js';
import { ref, onMounted, computed, nextTick, watchEffect } from 'vue';
import {
formatDate,
getDateAfterDays
} from '@/utils/dateTime.js';
import {
getYearProgress
} from '@/utils/dateTime.js';
import {
ref,
onMounted,
computed,
nextTick,
watchEffect,
onUnmounted
} from 'vue';
const items = ref(['日报数据', '实时数据', '经营数据'])
const current = ref(0)
const res = wx.getSystemInfoSync();
const statusHeight = res.statusBarHeight; //
const cusnavbarheight = statusHeight + 44 + 'px';
const scrollViewHeight = ref(0); //
const timePercent = ref(0);
const dateDate = ref('');
import trqData from './ribaoshuju/trqRbsj.vue';
import yyData from './ribaoshuju/yyRbsj.vue';
import sssjForm from './shishishuju/index.vue';
function onClickItem(e) {
if (current.value != e.currentIndex) {
current.value = e.currentIndex;
}
}
const strDate = () => {
const now = new Date();
@ -35,7 +91,50 @@ const strDate = () => {
};
onMounted(() => {
dateDate.value = strDate();
timePercent.value = getYearProgress();
calculateScrollViewHeight();
//
window.addEventListener('resize', calculateScrollViewHeight);
});
onUnmounted(() => {
//
window.removeEventListener('resize', calculateScrollViewHeight);
});
const calculateScrollViewHeight = () => {
//
const screenHeight = uni.getSystemInfoSync().windowHeight;
//
const query = uni.createSelectorQuery();
//
query
.select('.nav')
.boundingClientRect();
query
.select('.placeholder')
.boundingClientRect();
query
.select('.uni-title')
.boundingClientRect();
query
.select('.uni-segmented-control')
.boundingClientRect();
query
.select('.progress-bartime')
.boundingClientRect();
//
query.exec((res) => {
let totalHeight = 0;
res.forEach((element) => {
if (element) {
totalHeight += element.height;
}
});
// scroll-view
scrollViewHeight.value = screenHeight - totalHeight - 80;
});
};
</script>
<style lang="scss" scoped>
@ -58,4 +157,37 @@ onMounted(() => {
.placeholder {
height: v-bind(cusnavbarheight);
}
.progress-bartime {
position: relative;
height: 25px;
background: #f0f0f0;
border-radius: 10px;
overflow: hidden;
margin-bottom: 20rpx;
}
.progress {
height: 100%;
transition: all 0.3s;
}
.progressTime {
height: 100%;
transition: all 0.3s;
padding: 0 20px;
}
.progress-text {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: red;
/* 保持红色 */
font-size: 16px;
font-weight: bold;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
/* 提升可读性 */
}
</style>

View File

@ -1,13 +1,6 @@
<template>
<view :class="{ gray: store.isgray == 1 }">
<view style="padding: 0 10px">
<view class="progress-bartime">
<!-- 动态设置宽度和颜色 -->
<view class="progressTime" :style="{ width: `${timePercent}%`, 'background-color': '#00aaff' }"></view>
<!-- 显示带符号的百分比 -->
<text class="progress-text">全年时间进度:{{ timePercent }}%</text>
</view>
</view>
<view class="content">
<!-- 标题行 -->
@ -17,7 +10,8 @@
</view>
</view>
<view class="container">
<view v-for="(item, index) in shishiArrSelect" :key="index" class="card-item" @click="handleCardClick(item.gas)">
<view v-for="(item, index) in shishiArrSelect" :key="index" class="card-item"
@click="handleCardClick(item.gas)">
<view class="card">
<text class="title">{{ item.gas }}</text>
<view class="content">
@ -30,9 +24,12 @@
</view>
<view class="progress-bar">
<!-- 动态设置宽度和颜色 -->
<view class="progress" :style="{ width: `${Math.abs(item.yearPerCent)}%`, 'background-color': item.yearPerCent < 0 ? '#ff4444' : '#007aff' }"></view>
<view class="progress"
:style="{ width: `${Math.abs(item.yearPerCent)}%`, 'background-color': item.yearPerCent < 0 ? '#ff4444' : '#007aff' }">
</view>
<!-- 显示带符号的百分比 -->
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')" class="progress-text">{{ item.yearPerCent }}%</text>
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')"
class="progress-text">{{ item.yearPerCent }}%</text>
</view>
</view>
</view>
@ -41,14 +38,16 @@
<uni-popup ref="popupSelect" type="top" background-color="#fff">
<view style="margin-top: 50px">
<view class="titlepopup">选择显示更多生产数据</view>
<uni-data-checkbox
style="font-size: 14px"
@change="onselectionchange"
:localdata="shishiArr"
v-model="shishiArrDisplay"
multiple
:map="{ value: 'gas', text: 'gas' }"
></uni-data-checkbox>
<view class="popupBtn">
<button size="mini" @click="selectDefault" style="padding: 8px 16px;">默认</button>
<button size="mini" @click="selectAll" style="padding: 8px 16px;">全选</button>
<button size="mini" @click="selectNo" style="padding: 8px 16px;">全不选</button>
</view>
<view class="popupcheckbox">
<uni-data-checkbox style="font-size: 14px" @change="onselectionchange" :localdata="shishiArr"
v-model="shishiArrDisplay" multiple :map="{ value: 'gas', text: 'gas' }"></uni-data-checkbox>
</view>
</view>
</uni-popup>
<!-- 数据弹窗 -->
@ -70,7 +69,8 @@
</view>
<scroll-view scroll-X="true" scroll-Y="true" class="table-container">
<!-- 表格内容 -->
<view class="tr" v-for="(item, index) in filteredData" :key="index" :class="{ even: index % 2 === 0 }">
<view class="tr" v-for="(item, index) in filteredData" :key="index"
:class="{ even: index % 2 === 0 }">
<view class="td1">{{ index + 1 }}</view>
<view class="td">{{ item.unit }}</view>
<view class="td" :class="{ negative: item.rq < 0 }">
@ -92,31 +92,56 @@
</template>
<script setup>
import { ref, onMounted, computed, nextTick, watchEffect } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { queryJinriShengchansj, queryYearShengchansj, queryJinriTrqShengchansj } from '@/api/shengchan.js';
import { formatDate, getDateAfterDays } from '@/utils/dateTime.js';
import { beforeJump } from '@/utils/index.js';
import { useStore } from '@/store';
import { getYearProgress } from '@/utils/dateTime.js';
import {
ref,
onMounted,
computed,
nextTick,
watchEffect
} from 'vue';
import {
onLoad
} from '@dcloudio/uni-app';
import {
queryJinriShengchansj,
queryYearShengchansj,
queryJinriTrqShengchansj
} from '@/api/shengchan.js';
import {
formatDate,
getDateAfterDays
} from '@/utils/dateTime.js';
import {
beforeJump
} from '@/utils/index.js';
import {
useStore
} from '@/store';
const store = useStore();
const shishiArr = ref([]);
const shishiArrSelect = ref([]);
const shishiArrDisplay = ref(['气井气', '站线综合输差']);
const shishiArrDisplay = ref(['气井气', '商品量', '站线综合输差']);
const dataJinriUnit = ref([]);
const selectedGas = ref('');
const filteredData = ref([]);
const popup = ref(null);
const popupSelect = ref(null);
const strDate = ref('');
const timePercent = ref(0);
const dataJinri = ref([]);
const dataJinriSum = ref([]);
const dataJinriSumUnit = ref([]);
const qjqNdjs = ref(7500);
const splNdjs = ref(7220);
const zhqNdjs = ref(300);
const zhscNdjs = ref(50);
//
// const handleCardClick = (gas) => {
// selectedGas.value = gas;
@ -135,9 +160,36 @@ const dataJinriSumUnit = ref([]);
// popup.value.open();
// };
function selectMore() {
popupSelect.value.open();
}
function selectAll() {
shishiArrDisplay.value = [];
// console.log(9, shishiArr.value)
shishiArr.value.forEach((item) => {
// console.log(10, item)
shishiArrDisplay.value.push(item.gas);
});
onselectionchange()
popup.value.close();
}
function selectNo() {
shishiArrDisplay.value = [];
onselectionchange()
popup.value.close();
}
function selectDefault() {
shishiArrDisplay.value = ['气井气', '商品量', '站线综合输差'];
onselectionchange()
popup.value.close();
}
const onselectionchange = () => {
shishiArrSelect.value = [];
shishiArrDisplay.value.forEach((item) => {
@ -157,7 +209,7 @@ const closePopup = () => {
};
onMounted(() => {
getJinriTrqShengchansj();
timePercent.value = getYearProgress();
getJinriShengchansj();
});
@ -202,7 +254,15 @@ function calcZhsc(tempArray) {
yearVolume: 0,
yearPlan: '100',
yearPerCent: 0
}; //
};
const trqSpl = {
gas: '商品量',
dailyVolume: 0,
yearVolume: 0,
yearPlan: '7220',
yearPerCent: 0
};
//
tempArray.forEach((item) => {
if (item.gas === '站输差' || item.gas === '线输差') {
compositeZx.dailyVolume += parseFloat(item.dailyVolume) || 0;
@ -216,16 +276,26 @@ function calcZhsc(tempArray) {
totalChuqi.dailyVolume += parseFloat(item.dailyVolume) || 0;
totalChuqi.yearVolume += parseFloat(item.yearVolume) || 0;
}
if (item.gas === '气井气' || item.gas === '站输差' || item.gas === '线输差') {
trqSpl.dailyVolume += parseFloat(item.dailyVolume) || 0;
trqSpl.yearVolume += parseFloat(item.yearVolume) || 0;
}
if (item.gas === '自耗气') {
trqSpl.dailyVolume -= parseFloat(item.dailyVolume) || 0;
trqSpl.yearVolume -= parseFloat(item.yearVolume) || 0;
}
});
compositeZx.yearPerCent = calcPercent(compositeZx.yearPlan, compositeZx.yearVolume);
trqSpl.yearPerCent = calcPercent(trqSpl.yearPlan, trqSpl.yearVolume);
compositeJc.dailyVolume = (-totalJinqi.dailyVolume + totalChuqi.dailyVolume).toFixed(4);
compositeJc.yearVolume = (-totalJinqi.yearVolume + totalChuqi.yearVolume).toFixed(4);
compositeJc.yearPerCent = calcPercent(compositeJc.yearPlan, compositeJc.yearVolume);
tempArray.push(compositeZx);
// tempArray.push(compositeJc);
tempArray.push(trqSpl);
return tempArray;
@ -421,6 +491,8 @@ function sumByUnit(records) {
align-items: center;
padding: 10 10rpx;
border-bottom: 1rpx solid #eee;
margin-left: 10px;
margin-right: 10px;
}
.title {
@ -428,13 +500,50 @@ function sumByUnit(records) {
font-weight: bold;
color: #333;
}
.titlepopup {
font-size: 30rpx;
font-size: 35rpx;
font-weight: bold;
color: #333;
text-align: center;
margin-top: 20px;
margin-top: 20px;
padding: 20px;
margin-top: 10px;
}
/* 给包裹按钮的容器设置样式 */
.popupBtn {
display: grid;
/* 创建三个等宽的列 */
grid-template-columns: repeat(3, 1fr);
/* 设置列与列之间的间距 */
gap: 2px;
margin-bottom: 20px;
}
/* 添加按钮按下效果 */
.popupBtn button:active {
opacity: 0.8;
transform: scale(0.98);
transition: all 0.1s ease;
}
/* 给按钮设置通用样式 */
.popupBtn button {
border: none;
padding: 0px 10px;
background-color: #007BFF;
color: white;
border-radius: 5px;
cursor: pointer;
}
/* 鼠标悬停在按钮上时的样式 */
.popupBtn button:hover {
background-color: #0056b3;
}
.more {
@ -458,6 +567,25 @@ function sumByUnit(records) {
.more:hover {
color: #007aff;
}
.popupcheckbox {
/* 使用 Flexbox 布局 */
display: flex;
flex-wrap: wrap;
/* 允许换行 */
gap: 2px;
/* 设置复选框之间的间距 */
margin-left: 20px;
margin-bottom: 10px;
}
.popupcheckbox .uni-data-checkbox__item {
flex-basis: calc((100% / var(4)) - 10px);
box-sizing: border-box;
}
.container {
display: flex;
flex-wrap: wrap;
@ -612,35 +740,4 @@ function sumByUnit(records) {
border-radius: 10px;
overflow: hidden;
}
.progress-bartime {
position: relative;
height: 20px;
background: #f0f0f0;
border-radius: 10px;
overflow: hidden;
margin-bottom: 30rpx;
}
.progress {
height: 100%;
transition: all 0.3s;
}
.progressTime {
height: 100%;
transition: all 0.3s;
padding: 0 20px;
}
.progress-text {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: red;
/* 保持红色 */
font-size: 12px;
font-weight: bold;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
/* 提升可读性 */
}
</style>

View File

@ -29,15 +29,13 @@
<view class="progress-bar">
<!-- 动态设置宽度和颜色 -->
<view
class="progress"
:style="{
<view class="progress" :style="{
width: `${Math.abs(item.yearPerCent)}%`,
'background-color': item.yearPerCent < 0 ? '#ff4444' : '#007aff'
}"
></view>
}"></view>
<!-- 显示带符号的百分比 -->
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')" class="progress-text">{{ item.yearPerCent }}%</text>
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')"
class="progress-text">{{ item.yearPerCent }}%</text>
</view>
</view>
</view>
@ -63,7 +61,8 @@
</view>
<!-- 表格内容 -->
<view class="tr" v-for="(item, index) in dataJinri" :key="index" :class="{ even: index % 2 === 0 }">
<view class="tr" v-for="(item, index) in dataJinri" :key="index"
:class="{ even: index % 2 === 0 }">
<view class="td1">{{ index }}</view>
<view class="td">{{ item.dw }}</view>
<view class="td">
@ -86,26 +85,41 @@
</template>
<script setup>
import { ref, onMounted, computed, nextTick, watchEffect } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { queryJinriYuanyouShengchansj } from '@/api/shengchan.js';
import { formatDate, getDateAfterDays } from '@/utils/dateTime.js';
import { beforeJump } from '@/utils/index.js';
import { useStore } from '@/store';
import {
ref,
onMounted,
computed,
nextTick,
watchEffect
} from 'vue';
import {
onLoad
} from '@dcloudio/uni-app';
import {
queryJinriYuanyouShengchansj
} from '@/api/shengchan.js';
import {
formatDate,
getDateAfterDays
} from '@/utils/dateTime.js';
import {
beforeJump
} from '@/utils/index.js';
import {
useStore
} from '@/store';
const store = useStore();
import dataCom from '@/bpm/dataCom.vue';
const shishiArr = ref([
{
const shishiArr = ref([{
gas: '原油产量',
rcwy: '',
yl: '',
nl: '',
yearPlan: '1500',
yearPerCent: ''
}
]);
}]);
const dataJinri = ref([]);
const dataJinriSum = ref([]);
@ -130,6 +144,7 @@ const formatNumber = (num) => {
if (typeof num !== 'number') return '-';
return num.toFixed(4).replace(/\.?0+$/, '');
};
function goHistory(val) {
uni.navigateTo({
url: '/pages/views/shengchan/ribaoshuju/rbsjLsxq?data=' + JSON.stringify(val) + '&type=yy'
@ -167,6 +182,7 @@ const getJinriYuanyouShengchansj = () => {
}
});
};
function calcPercent(yearJihua, yearShiji) {
// 0
// 100
@ -180,6 +196,7 @@ function calcPercent(yearJihua, yearShiji) {
}
return parseFloat(percent.toFixed(2)); //
}
function sumByOil(records) {
// console.log(records);
const summaryMap = {};
@ -214,6 +231,9 @@ function sumByOil(records) {
align-items: center;
padding: 15rpx 0;
border-bottom: 1rpx solid #eee;
margin-left: 10px;
margin-right: 10px;
}
.title {
@ -243,6 +263,7 @@ function sumByOil(records) {
.more:hover {
color: #007aff;
}
.container {
display: flex;
flex-wrap: wrap;
@ -305,6 +326,7 @@ function sumByOil(records) {
text-align: center;
white-space: nowrap;
}
.th1,
.td1 {
flex: 1;
@ -382,6 +404,7 @@ function sumByOil(records) {
}
}
}
.progress-item {
margin-bottom: 20px;
}
@ -404,9 +427,11 @@ function sumByOil(records) {
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: red; /* 保持红色 */
color: red;
/* 保持红色 */
font-size: 12px;
font-weight: bold;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); /* 提升可读性 */
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
/* 提升可读性 */
}
</style>

View File

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

View File

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

View File

@ -0,0 +1,44 @@
<template>
<view :class="{ gray: store.isgray == 1 }">
<trqSssjVue></trqSssjVue>
</view>
</template>
<script setup>
import {
ref,
onMounted,
computed,
nextTick,
watchEffect
} from 'vue';
import {
onLoad
} from '@dcloudio/uni-app';
import {
queryJinriShengchansj,
queryYearShengchansj,
queryJinriTrqShengchansj
} from '@/api/shengchan.js';
import {
formatDate,
getDateAfterDays
} from '@/utils/dateTime.js';
import {
beforeJump
} from '@/utils/index.js';
import {
useStore
} from '@/store';
import trqSssjVue from './trqSssj.vue';
const store = useStore();
</script>
<style scoped>
</style>

View File

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

View File

@ -0,0 +1,315 @@
<template>
<view :class="{ gray: store.isgray == 1 }">
<view>
<!-- 标题行 -->
<view class="header-row">
<view class="title">天然气实时数据</view>
<view style="min-width: 200px;"><cxc-szcx-stationJl-select v-model="stationID" returnCodeOrID="id"
@change="onChange"></cxc-szcx-stationJl-select></view>
</view>
</view>
<button size="mini" @click="getData">连接WebSocket</button>
<view class="container">
<view v-for="(item, index) in jlData" :key="index" class="card">
<view class="field-item">
<text class="titlejl">{{ stationName }}--{{ item.jldname }}</text>
<view class="status-circle"
:style="{ backgroundColor: item.yxzt==='运行' ? '#4CAF50' : '#F44336' }">
{{item.yxzt}}
</view>
</view>
<view class="field-list">
<!-- 压力 -->
<view class="field-item">
<text class="field-label">压力(MPa)</text>
<text class="field-value">{{ formatNumber(item.yl) || '-' }}</text>
</view>
<!-- 差压 -->
<view class="field-item">
<text class="field-label">差压(kPa)</text>
<text class="field-value">{{ formatNumber(item.yc) || '-' }}</text>
</view>
<!-- 温度 -->
<view class="field-item">
<text class="field-label">温度()</text>
<text class="field-value">{{ formatNumber(item.wd) || '-' }}</text>
</view>
<!-- 瞬时流量 -->
<view class="field-item">
<text class="field-label">瞬时流量(/d)</text>
<text class="field-value">{{ formatNumber(item.ssll) || '-' }}</text>
</view>
<!-- 今日流量 -->
<view class="field-item">
<text class="field-label">今日流量()</text>
<text class="field-value">{{ formatNumber(item.jrl) || '-' }}</text>
</view>
<!-- 昨日流量 -->
<view class="field-item">
<text class="field-label">昨日流量()</text>
<text class="field-value">{{ formatNumber(item.zrl) || '-' }}</text>
</view>
<!-- 昨日时间 -->
<view class="field-item">
<text class="field-label">昨日时间(min)</text>
<text class="field-value">{{ formatNumber(item.zrsj) || '-' }}</text>
</view>
<!-- 今日时间 -->
<view class="field-item">
<text class="field-label">今日时间(min)</text>
<text class="field-value">{{ formatNumber(item.jrsj) || '-' }}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
ref,
onMounted,
computed,
nextTick,
watchEffect
} from 'vue';
import {
onLoad
} from '@dcloudio/uni-app';
import {
queryJldZcList,
queryJldDataByZc
} from '@/api/shengchan.js';
import {
formatDate,
getDateAfterDays
} from '@/utils/dateTime.js';
import {
beforeJump
} from '@/utils/index.js';
import {
useStore
} from '@/store';
const store = useStore();
const stationList = ref([])
//
const popupSelect = ref(null);
const stationID = ref("")
const stationName = ref("")
const jlData = ref([])
const sssjUrl = ref('wss://10.75.166.6:9999/Gyk/websocket/')
const jlByzc = ref('http://10.75.166.6:9999/Gyk/sssj/GetJlByZc')
//websocket线
// websocket
function connectSocketInit() {
console.log(11, )
let userID = '1412198011559055361'
// this.socketTasksocket
uni.connectSocket({
// ,使ws://127.0.0.1:9099
// url: 'wss://'+this.$api.sellerWebsocket+'/'+this.userinfo.id,
url: sssjUrl.value + userID,
success(data) {
console.log(data);
console.log('websocket连接成功');
}
});
// ,
uni.onSocketOpen(function(res) {
console.log('WebSocket连接已打开');
});
uni.onSocketMessage(function(res) {
console.log('收到服务器内容:' + res.data);
// start
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://wzs1.oss-cn-beijing.aliyuncs.com/music.mp3';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError(res => {
console.log(res.errMsg);
console.log(res.errCode);
});
// end
});
// socket
uni.onSocketClose(function(res) {
console.log('WebSocket 已关闭!');
});
}
function getData() {
connectSocketInit()
}
function onChange(e, data) {
console.log(2, e, data.value);
stationID.value = e
stationName.value = data.value.title
uni.request({
url: jlByzc.value + '?zhanc=' + stationID.value + '&jldLx=0',
method: 'GET',
success: (res) => {
console.log(3, res, stationName.value)
jlData.value = JSON.parse(res.data.result).JlData;
console.log(4, jlData.value)
}
})
}
const websock = ref(null);
const timer2 = ref(null);
//
const websocketheart = () => {
timer2.value = setInterval(() => {
if (websock.value && websock.value.readyState === 1) {
//
connectSocketInit()
}
}, 1000);
};
onMounted(() => {
queryJldZcList({
pId: '1267633406031953921'
}).then((res) => {
if (res.success) {
stationList.value = res.result
console.log(1, stationList.value)
}
})
websocketheart()
})
//
const formatNumber = (num) => {
let temp = 0;
try {
temp = parseFloat(num);
} catch (error) {
//TODO handle the exception
}
return temp.toFixed(4).replace(/\.?0+$/, '');
};
</script>
<style scoped>
.header-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10 10rpx;
border-bottom: 1rpx solid #eee;
margin-left: 10px;
margin-right: 10px;
}
.title {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.titlejl {
font-size: 20rpx;
vertical-align: middle;
font-weight: bold;
color: #0055ff;
margin-bottom: 15px;
}
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 16px;
padding: 16px;
}
.card {
background: #fff;
border-radius: 8px;
padding: 5px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.field-list {
margin-top: 10px;
display: flex;
flex-wrap: wrap;
/* 允许子元素换行 */
gap: 3px;
}
.field-item {
display: flex;
height: 30px;
justify-content: space-between;
align-items: center;
padding: 5px 5px;
background: #f8f9fa;
border-radius: 4px;
flex-basis: calc(50%-10px);
/* 每个元素占据约一半宽度,减去间隙 */
box-sizing: border-box;
/* 包含内边距和边框 */
}
/* 当屏幕宽度较小时,每个元素占据整行 */
@media (max-width: 200px) {
.field-item {
flex-basis: 100%;
}
}
.field-label {
color: #666;
font-size: 8px;
flex: 1;
margin-right: 2px;
width: 80px;
font-weight: 500;
}
.field-value {
color: #1890ff;
font-weight: 500;
font-size: 12px;
text-align: right;
width: 60px;
overflow: hidden;
text-overflow: ellipsis;
}
.status-circle {
width: 70rpx;
height: 30rpx;
font-size: 12px;
vertical-align: middle;
}
</style>

View File

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

View File

@ -0,0 +1,112 @@
<template>
<view v-if="returnCodeOrID === 'orgCode'">
<uni-data-picker v-model="selectDepartID" ref="depart" :openSearch="true" :ellipsis="true" placeholder="请选择单位"
popup-title="请选择单位" :localdata="stationList" @nodeclick="onnodeclick" @popupclosed="onpopupclosed"
:map="{'text':'title','value':'orgCode'}" class="no-wrap-picker"></uni-data-picker>
</view>
<view v-else>
<uni-data-picker v-model="selectDepartID" ref="depart" :openSearch="true" :ellipsis="true" placeholder="请选择单位id"
popup-title="请选择单位" :localdata="stationList" @nodeclick="onnodeclick" @popupclosed="onpopupclosed"
:map="{'text':'title','value':'id'}" class="no-wrap-picker"></uni-data-picker>
</view>
</template>
<script setup>
import {
useStore
} from '@/store';
import {
queryJldZcList
} from '@/api/shengchan.js'
import {
queryMyDeptTreeListApi
} from '@/api/api.js'
import {
onReady,
onLoad
} from '@dcloudio/uni-app';
import {
reactive,
ref,
watch
} from 'vue';
const store = useStore()
const props = defineProps({
returnCodeOrID: {
type: String,
default: "orgCode"
}
})
let stationList = ref([])
let selectDepartID = ref("") //ID
let selectDepartIDS = ref([]) //ID
let tempSelectDepartID = ref("") //ID
let depart = ref(null);
let departInfo = ref({}) //""
let $emit = defineEmits(['change']);
watch(
tempSelectDepartID,
(newVal, oldVal) => { //change by
$emit('change', newVal, departInfo)
}, {
immediate: true,
deep: true
}
)
const getDepartList = () => {
queryJldZcList({
pId: '1267633406031953921'
}).then((res) => {
if (res.success) {
stationList.value = res.result
console.log(1, stationList.value)
}
})
}
const onnodeclick = ((e) => {
departInfo.value = e;
if (props.returnCodeOrID == "orgCode") {
tempSelectDepartID.value = e.orgCode
} else {
tempSelectDepartID.value = e.value
}
// if(!depart.value.isOpened){// change by
// $emit('change', selectDepartID.value, departInfo)
// }
})
const onchange = ((e) => {
selectDepartID.value = e.detail.value[e.detail.value.length - 1].value
// $emit('change', e.detail.value[e.detail.value.length - 1].value, {})
})
const onpopupclosed = ((e) => {
selectDepartID.value = tempSelectDepartID.value
// $emit('change', selectDepartID.value, departInfo)
})
onLoad((e) => {
getDepartList();
})
</script>
<style scoped>
/* 选择器根据实际情况调整 */
.no-wrap-picker::v-deep .uni-data-picker-item {
white-space: nowrap;
/* 强制不换行 */
overflow: hidden;
/* 超出部分隐藏 */
text-overflow: ellipsis;
/* 超出部分显示省略号 */
}
</style>

View File

@ -0,0 +1,83 @@
{
"id": "cxc-szcx-stationJl-select",
"displayName": "cxc-szcx-stationJl-select",
"version": "1.0.0",
"description": "cxc-szcx-stationJl-select",
"keywords": [
"cxc-szcx-stationJl-select"
],
"repository": "",
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"type": "component-vue",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "",
"data": "",
"permissions": ""
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "u",
"aliyun": "u",
"alipay": "u"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-vue": "u",
"app-nvue": "u",
"app-uvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}

View File

@ -0,0 +1 @@
# cxc-szcx-stationJl-select

View File

@ -1,9 +1,8 @@
<template>
<view v-if="returnCodeOrID === 'orgCode'">
<uni-data-picker v-model="selectDepartID" ref="depart" :openSearch="true" :ellipsis="true"
placeholder="请选择单位" popup-title="请选择单位" :localdata="departList" @nodeclick="onnodeclick"
@popupclosed="onpopupclosed" :map="{'text':'title','value':'orgCode'}"
class="no-wrap-picker"></uni-data-picker>
<uni-data-picker v-model="selectDepartID" ref="depart" :openSearch="true" :ellipsis="true" placeholder="请选择单位"
popup-title="请选择单位" :localdata="departList" @nodeclick="onnodeclick" @popupclosed="onpopupclosed"
:map="{'text':'title','value':'orgCode'}" class="no-wrap-picker"></uni-data-picker>
</view>
<view v-else>
<uni-data-picker v-model="selectDepartID" ref="depart" :openSearch="true" :ellipsis="true" placeholder="请选择单位id"
@ -30,9 +29,7 @@
import {
reactive,
ref,
watch,
defineEmits,
defineProps
watch
} from 'vue';
const store = useStore()

18
vite.config.js Normal file
View File

@ -0,0 +1,18 @@
// vite.config.js
import {
defineConfig
} from 'vite';
import uni from '@dcloudio/vite-plugin-uni';
export default defineConfig({
plugins: [uni()],
build: {
rollupOptions: {
output: {
format: 'esm' // 确保使用支持代码分割的格式
},
}
}
});

368
yarn.lock Normal file
View File

@ -0,0 +1,368 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/helper-string-parser@^7.25.9":
"integrity" "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="
"resolved" "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
"version" "7.25.9"
"@babel/helper-validator-identifier@^7.25.9":
"integrity" "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="
"resolved" "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
"version" "7.25.9"
"@babel/parser@^7.25.3":
"integrity" "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA=="
"resolved" "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.10.tgz"
"version" "7.26.10"
dependencies:
"@babel/types" "^7.26.10"
"@babel/types@^7.26.10":
"integrity" "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ=="
"resolved" "https://registry.npmmirror.com/@babel/types/-/types-7.26.10.tgz"
"version" "7.26.10"
dependencies:
"@babel/helper-string-parser" "^7.25.9"
"@babel/helper-validator-identifier" "^7.25.9"
"@dcloudio/uni-ui@^1.5.6":
"integrity" "sha512-jmb98PasFvZkrIDXGh94GbdWg2/jyhgs1HUG+bU8eyL7Ltias/5XBz4q8w9RXyWUfqepJRqapPA2IIQpLCuTIg=="
"resolved" "https://registry.npmjs.org/@dcloudio/uni-ui/-/uni-ui-1.5.6.tgz"
"version" "1.5.6"
"@jridgewell/sourcemap-codec@^1.5.0":
"integrity" "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
"resolved" "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
"version" "1.5.0"
"@rollup/rollup-win32-x64-msvc@4.35.0":
"integrity" "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw=="
"resolved" "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz"
"version" "4.35.0"
"@types/estree@1.0.6":
"integrity" "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
"resolved" "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz"
"version" "1.0.6"
"@vue/compiler-core@3.5.13":
"integrity" "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q=="
"resolved" "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@babel/parser" "^7.25.3"
"@vue/shared" "3.5.13"
"entities" "^4.5.0"
"estree-walker" "^2.0.2"
"source-map-js" "^1.2.0"
"@vue/compiler-dom@3.5.13":
"integrity" "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA=="
"resolved" "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/compiler-core" "3.5.13"
"@vue/shared" "3.5.13"
"@vue/compiler-sfc@3.5.13":
"integrity" "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ=="
"resolved" "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@babel/parser" "^7.25.3"
"@vue/compiler-core" "3.5.13"
"@vue/compiler-dom" "3.5.13"
"@vue/compiler-ssr" "3.5.13"
"@vue/shared" "3.5.13"
"estree-walker" "^2.0.2"
"magic-string" "^0.30.11"
"postcss" "^8.4.48"
"source-map-js" "^1.2.0"
"@vue/compiler-ssr@3.5.13":
"integrity" "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA=="
"resolved" "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/compiler-dom" "3.5.13"
"@vue/shared" "3.5.13"
"@vue/devtools-api@^7.7.2":
"integrity" "sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA=="
"resolved" "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-7.7.2.tgz"
"version" "7.7.2"
dependencies:
"@vue/devtools-kit" "^7.7.2"
"@vue/devtools-kit@^7.7.2":
"integrity" "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ=="
"resolved" "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz"
"version" "7.7.2"
dependencies:
"@vue/devtools-shared" "^7.7.2"
"birpc" "^0.2.19"
"hookable" "^5.5.3"
"mitt" "^3.0.1"
"perfect-debounce" "^1.0.0"
"speakingurl" "^14.0.1"
"superjson" "^2.2.1"
"@vue/devtools-shared@^7.7.2":
"integrity" "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA=="
"resolved" "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz"
"version" "7.7.2"
dependencies:
"rfdc" "^1.4.1"
"@vue/reactivity@3.5.13":
"integrity" "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg=="
"resolved" "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/shared" "3.5.13"
"@vue/runtime-core@3.5.13":
"integrity" "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw=="
"resolved" "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/reactivity" "3.5.13"
"@vue/shared" "3.5.13"
"@vue/runtime-dom@3.5.13":
"integrity" "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog=="
"resolved" "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/reactivity" "3.5.13"
"@vue/runtime-core" "3.5.13"
"@vue/shared" "3.5.13"
"csstype" "^3.1.3"
"@vue/server-renderer@3.5.13":
"integrity" "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA=="
"resolved" "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/compiler-ssr" "3.5.13"
"@vue/shared" "3.5.13"
"@vue/shared@3.5.13":
"integrity" "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
"resolved" "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz"
"version" "3.5.13"
"base-64@^1.0.0":
"integrity" "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
"resolved" "https://registry.npmmirror.com/base-64/-/base-64-1.0.0.tgz"
"version" "1.0.0"
"birpc@^0.2.19":
"integrity" "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ=="
"resolved" "https://registry.npmmirror.com/birpc/-/birpc-0.2.19.tgz"
"version" "0.2.19"
"copy-anything@^3.0.2":
"integrity" "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w=="
"resolved" "https://registry.npmmirror.com/copy-anything/-/copy-anything-3.0.5.tgz"
"version" "3.0.5"
dependencies:
"is-what" "^4.1.8"
"csstype@^3.1.3":
"integrity" "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
"resolved" "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz"
"version" "3.1.3"
"dayjs@^1.11.13":
"integrity" "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
"resolved" "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz"
"version" "1.11.13"
"echarts@^5.6.0":
"integrity" "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA=="
"resolved" "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz"
"version" "5.6.0"
dependencies:
"tslib" "2.3.0"
"zrender" "5.6.1"
"entities@^4.5.0":
"integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
"resolved" "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
"version" "4.5.0"
"esbuild@^0.25.0":
"integrity" "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ=="
"resolved" "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.1.tgz"
"version" "0.25.1"
optionalDependencies:
"@esbuild/aix-ppc64" "0.25.1"
"@esbuild/android-arm" "0.25.1"
"@esbuild/android-arm64" "0.25.1"
"@esbuild/android-x64" "0.25.1"
"@esbuild/darwin-arm64" "0.25.1"
"@esbuild/darwin-x64" "0.25.1"
"@esbuild/freebsd-arm64" "0.25.1"
"@esbuild/freebsd-x64" "0.25.1"
"@esbuild/linux-arm" "0.25.1"
"@esbuild/linux-arm64" "0.25.1"
"@esbuild/linux-ia32" "0.25.1"
"@esbuild/linux-loong64" "0.25.1"
"@esbuild/linux-mips64el" "0.25.1"
"@esbuild/linux-ppc64" "0.25.1"
"@esbuild/linux-riscv64" "0.25.1"
"@esbuild/linux-s390x" "0.25.1"
"@esbuild/linux-x64" "0.25.1"
"@esbuild/netbsd-arm64" "0.25.1"
"@esbuild/netbsd-x64" "0.25.1"
"@esbuild/openbsd-arm64" "0.25.1"
"@esbuild/openbsd-x64" "0.25.1"
"@esbuild/sunos-x64" "0.25.1"
"@esbuild/win32-arm64" "0.25.1"
"@esbuild/win32-ia32" "0.25.1"
"@esbuild/win32-x64" "0.25.1"
"estree-walker@^2.0.2":
"integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
"resolved" "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
"version" "2.0.2"
"hookable@^5.5.3":
"integrity" "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
"resolved" "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz"
"version" "5.5.3"
"is-what@^4.1.8":
"integrity" "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="
"resolved" "https://registry.npmmirror.com/is-what/-/is-what-4.1.16.tgz"
"version" "4.1.16"
"magic-string@^0.30.11":
"integrity" "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="
"resolved" "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz"
"version" "0.30.17"
dependencies:
"@jridgewell/sourcemap-codec" "^1.5.0"
"mitt@^3.0.1":
"integrity" "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
"resolved" "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz"
"version" "3.0.1"
"nanoid@^3.3.8":
"integrity" "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg=="
"resolved" "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.10.tgz"
"version" "3.3.10"
"perfect-debounce@^1.0.0":
"integrity" "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
"resolved" "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz"
"version" "1.0.0"
"picocolors@^1.1.1":
"integrity" "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
"resolved" "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz"
"version" "1.1.1"
"pinia@^3.0.1":
"integrity" "sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg=="
"resolved" "https://registry.npmmirror.com/pinia/-/pinia-3.0.1.tgz"
"version" "3.0.1"
dependencies:
"@vue/devtools-api" "^7.7.2"
"postcss@^8.4.48", "postcss@^8.5.3":
"integrity" "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="
"resolved" "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz"
"version" "8.5.3"
dependencies:
"nanoid" "^3.3.8"
"picocolors" "^1.1.1"
"source-map-js" "^1.2.1"
"rfdc@^1.4.1":
"integrity" "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
"resolved" "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz"
"version" "1.4.1"
"rollup@^4.30.1":
"integrity" "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg=="
"resolved" "https://registry.npmmirror.com/rollup/-/rollup-4.35.0.tgz"
"version" "4.35.0"
dependencies:
"@types/estree" "1.0.6"
optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.35.0"
"@rollup/rollup-android-arm64" "4.35.0"
"@rollup/rollup-darwin-arm64" "4.35.0"
"@rollup/rollup-darwin-x64" "4.35.0"
"@rollup/rollup-freebsd-arm64" "4.35.0"
"@rollup/rollup-freebsd-x64" "4.35.0"
"@rollup/rollup-linux-arm-gnueabihf" "4.35.0"
"@rollup/rollup-linux-arm-musleabihf" "4.35.0"
"@rollup/rollup-linux-arm64-gnu" "4.35.0"
"@rollup/rollup-linux-arm64-musl" "4.35.0"
"@rollup/rollup-linux-loongarch64-gnu" "4.35.0"
"@rollup/rollup-linux-powerpc64le-gnu" "4.35.0"
"@rollup/rollup-linux-riscv64-gnu" "4.35.0"
"@rollup/rollup-linux-s390x-gnu" "4.35.0"
"@rollup/rollup-linux-x64-gnu" "4.35.0"
"@rollup/rollup-linux-x64-musl" "4.35.0"
"@rollup/rollup-win32-arm64-msvc" "4.35.0"
"@rollup/rollup-win32-ia32-msvc" "4.35.0"
"@rollup/rollup-win32-x64-msvc" "4.35.0"
"fsevents" "~2.3.2"
"source-map-js@^1.2.0", "source-map-js@^1.2.1":
"integrity" "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
"resolved" "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz"
"version" "1.2.1"
"speakingurl@^14.0.1":
"integrity" "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="
"resolved" "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz"
"version" "14.0.1"
"superjson@^2.2.1":
"integrity" "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q=="
"resolved" "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz"
"version" "2.2.2"
dependencies:
"copy-anything" "^3.0.2"
"tslib@2.3.0":
"integrity" "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
"resolved" "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
"version" "2.3.0"
"vite@^6.2.2":
"integrity" "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ=="
"resolved" "https://registry.npmmirror.com/vite/-/vite-6.2.2.tgz"
"version" "6.2.2"
dependencies:
"esbuild" "^0.25.0"
"postcss" "^8.5.3"
"rollup" "^4.30.1"
optionalDependencies:
"fsevents" "~2.3.3"
"vue@^2.7.0 || ^3.5.11", "vue@3.5.13":
"integrity" "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ=="
"resolved" "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz"
"version" "3.5.13"
dependencies:
"@vue/compiler-dom" "3.5.13"
"@vue/compiler-sfc" "3.5.13"
"@vue/runtime-dom" "3.5.13"
"@vue/server-renderer" "3.5.13"
"@vue/shared" "3.5.13"
"zrender@5.6.1":
"integrity" "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag=="
"resolved" "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz"
"version" "5.6.1"
dependencies:
"tslib" "2.3.0"