电动车
This commit is contained in:
parent
15b3a7d7f0
commit
0ff5c2f639
|
@ -1,7 +1,7 @@
|
|||
const install = (Vue, vm) => {
|
||||
uni.setStorageSync('deptId', 100);
|
||||
Vue.prototype.$u.http.setConfig({
|
||||
// baseUrl: 'http://192.168.2.139:4101', //键辉本地
|
||||
// baseUrl: 'http://192.168.2.14:4101', //键辉本地
|
||||
// baseUrl: 'http://192.168.0.102:4101', //景森本地
|
||||
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上
|
||||
loadingText: '努力加载中~',
|
||||
|
|
53
components/network-status/network-status.vue
Normal file
53
components/network-status/network-status.vue
Normal file
|
@ -0,0 +1,53 @@
|
|||
<template>
|
||||
<view class="network-status" v-if="!isConnected">
|
||||
<view class="network-tip">
|
||||
<text>当前无网络连接</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'network-status',
|
||||
data() {
|
||||
return {
|
||||
isConnected: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 监听网络状态变化
|
||||
uni.onNetworkStatusChange((res) => {
|
||||
this.isConnected = res.isConnected
|
||||
})
|
||||
// 初始检查网络状态
|
||||
this.checkNetwork()
|
||||
},
|
||||
methods: {
|
||||
checkNetwork() {
|
||||
uni.getNetworkType({
|
||||
success: (res) => {
|
||||
this.isConnected = res.networkType !== 'none'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.network-status {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 9999;
|
||||
|
||||
.network-tip {
|
||||
background-color: #ff4d4f;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 10rpx 0;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
641
novel/万神之主.txt
641
novel/万神之主.txt
|
@ -1,641 +0,0 @@
|
|||
《万神之主》
|
||||
|
||||
【故事大纲】
|
||||
|
||||
第一章:平凡少年
|
||||
- 主角林玄,一个普通山村少年
|
||||
- 意外获得上古神物"轮回珠"
|
||||
- 觉醒特殊体质"混沌神体"
|
||||
- 开始踏上修炼之路
|
||||
|
||||
第二章:初入江湖
|
||||
- 进入青云宗修炼
|
||||
- 结识红颜知己苏清月
|
||||
- 获得第一件神器"天玄剑"
|
||||
- 突破筑基期
|
||||
|
||||
第三章:秘境奇遇
|
||||
- 进入上古秘境"神魔战场"
|
||||
- 获得上古神兽"九尾天狐"认主
|
||||
- 习得绝世功法"混沌神诀"
|
||||
- 突破金丹期
|
||||
|
||||
第四章:宗门大比
|
||||
- 在宗门大比中一鸣惊人
|
||||
- 击败宗门天才
|
||||
- 获得进入核心弟子资格
|
||||
- 结识神秘老者
|
||||
|
||||
第五章:神魔之战
|
||||
- 卷入神魔两界大战
|
||||
- 获得神界传承
|
||||
- 突破元婴期
|
||||
- 建立自己的势力
|
||||
|
||||
第六章:万界争霸
|
||||
- 统一下界
|
||||
- 飞升上界
|
||||
- 建立神国
|
||||
- 突破化神期
|
||||
|
||||
第七章:轮回之谜
|
||||
- 探索轮回奥秘
|
||||
- 领悟时间法则
|
||||
- 突破渡劫期
|
||||
- 成就真神之位
|
||||
|
||||
第八章:隐居世俗
|
||||
- 厌倦神界纷争
|
||||
- 隐居人间
|
||||
- 感悟人生百态
|
||||
- 寻找新的突破
|
||||
|
||||
第九章:再造巅峰
|
||||
- 领悟大道真谛
|
||||
- 突破神王境
|
||||
- 创造新的神话
|
||||
- 成为万神之主
|
||||
|
||||
【开篇章节】
|
||||
|
||||
第一章:轮回珠现
|
||||
|
||||
"轰!"
|
||||
|
||||
一声巨响,打破了山村的宁静。
|
||||
|
||||
林玄从睡梦中惊醒,揉了揉惺忪的睡眼。窗外,一道金光划破夜空,坠落在村后的山林中。
|
||||
|
||||
"那是什么?"林玄心中一动,披上外衣,悄悄溜出家门。
|
||||
|
||||
月光如水,洒在山间小路上。林玄循着金光坠落的方向,来到一处幽深的山谷。
|
||||
|
||||
山谷中央,一颗散发着淡淡金光的珠子静静躺在那里。珠子通体晶莹,内部似有星辰流转,神秘莫测。
|
||||
|
||||
"这是..."林玄小心翼翼地捡起珠子。
|
||||
|
||||
就在他触碰到珠子的瞬间,一股浩瀚的信息涌入脑海。
|
||||
|
||||
"轮回珠,上古神物,可助人领悟轮回真谛..."
|
||||
|
||||
林玄只觉得体内一股暖流涌动,全身经脉仿佛被重新塑造,一股前所未有的力量在体内流转。
|
||||
|
||||
"这是...混沌神体?"林玄震惊地感受着身体的变化。
|
||||
|
||||
就在这时,远处传来一阵脚步声。
|
||||
|
||||
"有人来了!"林玄连忙将轮回珠藏入怀中,转身就要离开。
|
||||
|
||||
"站住!"一个阴冷的声音响起。
|
||||
|
||||
林玄回头,只见三个黑衣人站在不远处,目光阴鸷地盯着他。
|
||||
|
||||
"小子,把轮回珠交出来,饶你不死!"为首的黑衣人冷冷道。
|
||||
|
||||
林玄心中一紧,但很快镇定下来。他感受到体内新生的力量,嘴角露出一丝冷笑。
|
||||
|
||||
"想要轮回珠?那就看你们有没有这个本事了!"
|
||||
|
||||
话音未落,林玄身形一闪,主动向黑衣人冲去。
|
||||
|
||||
这一夜,注定是一个不平凡的夜晚。一个普通少年的命运,就此改变。
|
||||
|
||||
第二章:初入江湖
|
||||
|
||||
林玄与三个黑衣人的战斗,在山谷中掀起一阵狂风。
|
||||
|
||||
"这小子有古怪!"为首的黑衣人惊呼。
|
||||
|
||||
林玄只觉体内力量源源不断,每一拳都带着混沌之力。三个黑衣人虽然修为不弱,但在混沌神体的压制下,渐渐落入下风。
|
||||
|
||||
"撤!"黑衣人见势不妙,转身就要逃走。
|
||||
|
||||
"想走?"林玄冷笑一声,体内轮回珠微微震动,一道金光射出,直接将三个黑衣人定在原地。
|
||||
|
||||
"这是...轮回之力?"黑衣人惊恐万分。
|
||||
|
||||
林玄没有理会他们的求饶,直接了结了三人。他知道,从获得轮回珠的那一刻起,自己就已经卷入了一个巨大的漩涡。
|
||||
|
||||
回到家中,林玄开始研究轮回珠的奥秘。珠子中蕴含的信息告诉他,想要真正掌握轮回珠的力量,需要进入修炼宗门。
|
||||
|
||||
"青云宗..."林玄喃喃自语。
|
||||
|
||||
三日后,林玄告别父母,踏上了前往青云宗的路。
|
||||
|
||||
青云宗位于青云山脉之巅,是方圆千里内最大的修炼宗门。林玄跋山涉水,终于来到山门前。
|
||||
|
||||
"来者何人?"守门弟子拦住林玄。
|
||||
|
||||
"在下林玄,特来拜师学艺。"林玄恭敬道。
|
||||
|
||||
"就凭你?"守门弟子不屑地打量着他,"青云宗可不是什么人都能进的。"
|
||||
|
||||
林玄微微一笑,体内混沌之力微微释放。守门弟子顿时脸色大变,连忙去通报。
|
||||
|
||||
不多时,一位白发老者飘然而至。
|
||||
|
||||
"混沌神体?"老者眼中精光一闪,"有意思,随我来吧。"
|
||||
|
||||
老者是青云宗大长老,名为苏青云。他看出林玄的不凡,直接收为亲传弟子。
|
||||
|
||||
在青云宗的日子,林玄刻苦修炼。有轮回珠相助,他的修为一日千里。
|
||||
|
||||
这一日,林玄正在后山修炼,忽然听到一阵琴声。循声而去,只见一位白衣女子正在抚琴。
|
||||
|
||||
"好美的琴声。"林玄赞叹道。
|
||||
|
||||
女子抬头,露出一张倾国倾城的容颜。
|
||||
|
||||
"在下苏清月,不知公子如何称呼?"
|
||||
|
||||
"林玄。"
|
||||
|
||||
两人相谈甚欢,苏清月是青云宗宗主的女儿,琴棋书画样样精通,修为也不弱。
|
||||
|
||||
"林师弟,听说你获得了天玄剑的认可?"苏清月问道。
|
||||
|
||||
林玄点头。天玄剑是青云宗镇宗之宝,只有得到剑灵认可的人才能使用。
|
||||
|
||||
"那真是太好了,有了天玄剑,你的实力会更上一层楼。"
|
||||
|
||||
就在两人交谈时,远处传来一阵骚动。
|
||||
|
||||
"不好,是魔教的人!"苏清月脸色一变。
|
||||
|
||||
林玄握紧天玄剑,眼中战意盎然。
|
||||
|
||||
"清月师姐,我们一起上!"
|
||||
|
||||
这一战,林玄展现出惊人的实力。天玄剑在手,配合混沌神体,所向披靡。
|
||||
|
||||
战后,林玄成功突破筑基期,成为青云宗年轻一代的翘楚。
|
||||
|
||||
"林师弟,你的天赋真是惊人。"苏清月赞叹道。
|
||||
|
||||
林玄微微一笑,心中却明白,这只是开始。轮回珠的秘密,还有更多等待他去探索。
|
||||
|
||||
第三章:秘境奇遇
|
||||
|
||||
青云宗后山,一处隐秘的山洞中。
|
||||
|
||||
"林师弟,你真的要进入神魔战场?"苏清月担忧地看着林玄。
|
||||
|
||||
"嗯,轮回珠指引我,那里有我需要的东西。"林玄坚定地说。
|
||||
|
||||
神魔战场是上古时期神魔大战的遗迹,危险重重,但机缘也很多。林玄在轮回珠的指引下,发现了一处通往战场的入口。
|
||||
|
||||
"我陪你一起去。"苏清月说道。
|
||||
|
||||
林玄摇头:"太危险了,我一个人去就好。"
|
||||
|
||||
告别苏清月,林玄踏入山洞。洞内幽深,空气中弥漫着古老的气息。轮回珠在胸前微微发光,指引着方向。
|
||||
|
||||
不知走了多久,眼前豁然开朗。一片荒芜的战场出现在眼前,残破的兵器散落一地,空气中还残留着当年大战的余威。
|
||||
|
||||
"这就是神魔战场..."林玄感叹道。
|
||||
|
||||
突然,轮回珠剧烈震动,指向战场深处。林玄循着指引,来到一座残破的神殿前。
|
||||
|
||||
神殿中央,一尊九尾天狐的雕像栩栩如生。
|
||||
|
||||
"人类,你终于来了。"一个空灵的声音响起。
|
||||
|
||||
林玄一惊,只见雕像竟然活了过来,化作一只通体雪白的九尾天狐。
|
||||
|
||||
"我是上古神兽九尾天狐,等待有缘人已经千年。"天狐说道,"轮回珠选择了你,说明你就是我要等的人。"
|
||||
|
||||
"前辈..."林玄恭敬行礼。
|
||||
|
||||
"不必多礼,从今以后,你就是我的主人。"天狐说着,化作一道白光没入林玄体内。
|
||||
|
||||
林玄只觉体内多了一股强大的力量,与混沌神体完美融合。
|
||||
|
||||
"这是混沌神诀,上古最强功法。"天狐的声音在脑海中响起。
|
||||
|
||||
林玄盘膝而坐,开始修炼混沌神诀。功法运转,体内力量不断攀升。
|
||||
|
||||
不知过了多久,林玄睁开眼,眼中精光闪烁。
|
||||
|
||||
"金丹期!"他惊喜地发现,自己竟然直接突破到了金丹期。
|
||||
|
||||
就在这时,神殿深处传来一阵异动。
|
||||
|
||||
"不好,是魔气!"天狐提醒道。
|
||||
|
||||
林玄握紧天玄剑,警惕地看着前方。一个浑身笼罩在黑雾中的身影缓缓走出。
|
||||
|
||||
"桀桀,终于等到你了,轮回珠的持有者。"黑影阴笑道。
|
||||
|
||||
"你是谁?"林玄冷声问道。
|
||||
|
||||
"我是魔界使者,奉命来取轮回珠。"黑影说着,突然出手。
|
||||
|
||||
林玄早有准备,天玄剑一挥,混沌之力爆发。两人战在一起,打得天昏地暗。
|
||||
|
||||
"混沌神诀,第一式!"林玄大喝一声,体内力量爆发,直接将黑影击退。
|
||||
|
||||
"不可能!你怎么会混沌神诀?"黑影惊恐万分。
|
||||
|
||||
林玄没有给他喘息的机会,又是一剑斩出。黑影惨叫一声,化作黑雾消散。
|
||||
|
||||
"这只是开始,魔界不会善罢甘休的。"天狐提醒道。
|
||||
|
||||
林玄点头,他知道,更大的挑战还在后面。但有了九尾天狐和混沌神诀,他更有信心面对未来的挑战。
|
||||
|
||||
离开神魔战场,林玄回到青云宗。苏清月见到他平安归来,欣喜不已。
|
||||
|
||||
"林师弟,你突破了?"她惊讶地发现林玄的气息更加强大。
|
||||
|
||||
林玄点头,将秘境中的经历简单说了一遍。
|
||||
|
||||
"太好了,有了这些机缘,你在宗门大比中一定能大放异彩。"苏清月笑道。
|
||||
|
||||
林玄看着远方,眼中闪烁着坚定的光芒。他知道,自己的修炼之路才刚刚开始。
|
||||
|
||||
第四章:宗门大比
|
||||
|
||||
青云宗演武场,人声鼎沸。
|
||||
|
||||
三年一度的宗门大比如期而至,所有弟子都摩拳擦掌,准备一展身手。
|
||||
|
||||
"林师弟,这次大比,你可要小心。"苏清月叮嘱道,"听说这次有不少天才弟子参加。"
|
||||
|
||||
林玄点头:"放心,我不会大意的。"
|
||||
|
||||
大比开始,林玄一路过关斩将,轻松晋级。他的表现引起了宗门高层的注意。
|
||||
|
||||
"此子不简单啊。"宗主苏青云看着场中的林玄,眼中闪过一丝赞赏。
|
||||
|
||||
半决赛,林玄的对手是宗门第一天才,号称"青云剑"的赵无极。
|
||||
|
||||
"林玄,听说你获得了天玄剑的认可?"赵无极冷笑道,"可惜,在我面前,你什么都不是。"
|
||||
|
||||
林玄淡然一笑:"是吗?那就让我见识见识你的实力。"
|
||||
|
||||
两人交手,剑气纵横。赵无极的剑法确实了得,但林玄有混沌神体加持,丝毫不落下风。
|
||||
|
||||
"混沌神诀,第二式!"林玄突然变招,体内力量爆发。
|
||||
|
||||
赵无极大惊,连忙后退,但还是被剑气所伤。
|
||||
|
||||
"不可能!"他难以置信地看着林玄,"你怎么会这么强?"
|
||||
|
||||
林玄没有回答,又是一剑斩出。赵无极败退,林玄晋级决赛。
|
||||
|
||||
决赛对手是宗门大长老的亲传弟子,号称"青云第一人"的李天阳。
|
||||
|
||||
"林玄,你的表现让我很意外。"李天阳说道,"不过,到此为止了。"
|
||||
|
||||
林玄感受到对方强大的气息,知道这是一场硬仗。
|
||||
|
||||
两人交手,打得天昏地暗。李天阳的修为确实深厚,但林玄有九尾天狐相助,渐渐占据上风。
|
||||
|
||||
"混沌神诀,第三式!"林玄大喝一声,体内力量爆发到极致。
|
||||
|
||||
李天阳被这一击震退,脸色苍白。
|
||||
|
||||
"我认输。"他苦笑道,"林师弟,你赢了。"
|
||||
|
||||
全场哗然,谁也没想到,一个刚入门不久的弟子,竟然能夺得大比第一。
|
||||
|
||||
"林玄,你很不错。"宗主苏青云亲自为林玄颁奖,"从今天起,你就是核心弟子了。"
|
||||
|
||||
林玄恭敬行礼:"多谢宗主。"
|
||||
|
||||
就在这时,一位神秘老者突然出现在场中。
|
||||
|
||||
"好一个天才少年。"老者笑道,"老夫观你天赋异禀,可愿随我修行?"
|
||||
|
||||
林玄感受到老者深不可测的气息,知道这是一位高人。
|
||||
|
||||
"前辈是?"他问道。
|
||||
|
||||
"老夫乃天机老人,专门寻找有缘人。"老者说道,"你的轮回珠,与我有缘。"
|
||||
|
||||
林玄心中一动,看来这位老者知道轮回珠的秘密。
|
||||
|
||||
"弟子愿意。"他恭敬道。
|
||||
|
||||
"好,三日后,我在后山等你。"老者说完,飘然而去。
|
||||
|
||||
大比结束,林玄成为宗门最耀眼的新星。但他知道,更大的机缘在等着他。
|
||||
|
||||
"林师弟,恭喜你。"苏清月笑道。
|
||||
|
||||
林玄点头:"清月师姐,我要离开一段时间。"
|
||||
|
||||
"我知道,去吧,我等你回来。"苏清月眼中闪过一丝不舍。
|
||||
|
||||
林玄看着远方,心中充满期待。天机老人的出现,或许会给他带来新的机遇。
|
||||
|
||||
第五章:神魔之战
|
||||
|
||||
三日后,林玄如约来到后山。
|
||||
|
||||
天机老人早已等候多时,见到林玄,满意地点点头。
|
||||
|
||||
"很好,你来了。"老人说道,"随我来吧。"
|
||||
|
||||
两人来到一处隐秘的山洞,洞内别有洞天。
|
||||
|
||||
"这里是天机阁,我的修炼之地。"老人介绍道,"从今天起,你就在这里修炼。"
|
||||
|
||||
林玄点头,开始跟随天机老人学习。老人传授他许多上古秘术,让他的实力更上一层楼。
|
||||
|
||||
这一日,天机老人突然神色凝重。
|
||||
|
||||
"林玄,大事不好了。"老人说道,"魔界大军已经攻入神界,神魔之战即将爆发。"
|
||||
|
||||
林玄一惊:"前辈,我们该怎么办?"
|
||||
|
||||
"轮回珠是上古神物,与神界有莫大关联。"老人说道,"你必须前往神界,助神族一臂之力。"
|
||||
|
||||
林玄点头:"弟子明白。"
|
||||
|
||||
告别天机老人,林玄回到青云宗,向宗主说明情况。
|
||||
|
||||
"去吧,这是你的使命。"苏青云说道,"青云宗永远是你的后盾。"
|
||||
|
||||
林玄又找到苏清月,两人依依惜别。
|
||||
|
||||
"清月师姐,等我回来。"林玄说道。
|
||||
|
||||
"一定要平安回来。"苏清月眼中含泪。
|
||||
|
||||
林玄点头,转身离去。他来到一处古老的传送阵,这是通往神界的通道。
|
||||
|
||||
传送阵启动,林玄只觉眼前一花,已经来到神界。
|
||||
|
||||
神界一片混乱,到处都是战斗的痕迹。林玄循着轮回珠的指引,来到神界中心。
|
||||
|
||||
"来者何人?"一位神将拦住林玄。
|
||||
|
||||
"在下林玄,特来助神界一臂之力。"林玄说道。
|
||||
|
||||
神将感受到林玄体内强大的气息,知道他不是普通人。
|
||||
|
||||
"随我来。"神将说道。
|
||||
|
||||
林玄被带到神王面前。神王是一位威严的中年人,看到林玄,眼中闪过一丝惊讶。
|
||||
|
||||
"轮回珠的持有者?"神王问道。
|
||||
|
||||
林玄点头:"正是。"
|
||||
|
||||
"很好,有了轮回珠,我们就有希望了。"神王说道,"魔界大军即将攻来,你做好准备。"
|
||||
|
||||
林玄点头,开始准备战斗。他感受到体内轮回珠的力量,知道这是自己的使命。
|
||||
|
||||
不久,魔界大军果然攻来。林玄站在城墙上,看着黑压压的魔军,心中毫无畏惧。
|
||||
|
||||
"混沌神诀,第四式!"林玄大喝一声,体内力量爆发。
|
||||
|
||||
他冲入魔军之中,所向披靡。天玄剑在手,配合混沌神体,无人能挡。
|
||||
|
||||
"那是谁?"魔界统帅惊讶地看着林玄。
|
||||
|
||||
"是轮回珠的持有者!"有魔将惊呼。
|
||||
|
||||
林玄一路杀到魔界统帅面前,两人展开激战。
|
||||
|
||||
"混沌神诀,第五式!"林玄再次爆发,直接将魔界统帅击退。
|
||||
|
||||
魔界大军见统帅败退,士气大减。神界趁机反攻,终于击退了魔界大军。
|
||||
|
||||
战后,神王亲自接见林玄。
|
||||
|
||||
"林玄,你立下大功,我代表神界感谢你。"神王说道。
|
||||
|
||||
林玄摇头:"这是我应该做的。"
|
||||
|
||||
"从今以后,你就是神界的守护者。"神王说道,"这是神界传承,希望你能好好利用。"
|
||||
|
||||
林玄接过传承,感受到一股强大的力量涌入体内。
|
||||
|
||||
"元婴期!"他惊喜地发现,自己竟然突破到了元婴期。
|
||||
|
||||
神王满意地点头:"你的潜力无限,未来或许能成为神界之主。"
|
||||
|
||||
林玄心中一动,他知道,自己的使命才刚刚开始。
|
||||
|
||||
第六章:万界争霸
|
||||
|
||||
神界之战后,林玄的名声传遍万界。
|
||||
|
||||
"林玄,你现在的实力,已经可以统一下界了。"神王说道。
|
||||
|
||||
林玄点头,他知道这是自己的使命。他回到下界,开始统一之路。
|
||||
|
||||
青云宗成为他的第一个目标。宗主苏青云见到林玄归来,欣喜不已。
|
||||
|
||||
"林玄,你回来了。"苏青云说道。
|
||||
|
||||
林玄点头:"宗主,我这次回来,是要统一下界。"
|
||||
|
||||
苏青云一愣,随即笑道:"好,青云宗全力支持你。"
|
||||
|
||||
有了青云宗的支持,林玄开始征战四方。他凭借强大的实力,很快统一了下界各大宗门。
|
||||
|
||||
"林玄,你的实力已经达到化神期,可以飞升上界了。"九尾天狐提醒道。
|
||||
|
||||
林玄点头,开始准备飞升。他来到一处古老的祭坛,这是飞升的通道。
|
||||
|
||||
"清月师姐,我要飞升了。"林玄找到苏清月,说道。
|
||||
|
||||
苏清月眼中含泪:"去吧,我等你回来。"
|
||||
|
||||
林玄点头,转身踏上祭坛。祭坛启动,一道金光冲天而起。
|
||||
|
||||
林玄只觉眼前一花,已经来到上界。
|
||||
|
||||
上界比下界更加广阔,强者如云。林玄开始在上界建立自己的势力。
|
||||
|
||||
"混沌神国,从今天起,正式成立。"林玄站在新建的宫殿前,宣布道。
|
||||
|
||||
混沌神国很快成为上界最强大的势力之一。林玄的实力也在不断提升,终于突破到化神期。
|
||||
|
||||
"林玄,你的实力已经达到化神期巅峰,可以尝试突破到渡劫期了。"神王的声音在脑海中响起。
|
||||
|
||||
林玄点头,开始准备突破。他来到一处隐秘的山洞,开始闭关。
|
||||
|
||||
闭关期间,林玄不断参悟轮回珠的奥秘。他感受到,轮回珠中蕴含着更加强大的力量。
|
||||
|
||||
"混沌神诀,第六式!"林玄大喝一声,体内力量爆发到极致。
|
||||
|
||||
一股强大的力量从体内涌出,林玄成功突破到渡劫期。
|
||||
|
||||
"太好了!"九尾天狐欣喜道,"你现在已经是上界最强者之一了。"
|
||||
|
||||
林玄点头,但他知道,自己的目标不止于此。他要成为万界之主,创造新的神话。
|
||||
|
||||
"混沌神国,从今天起,正式向其他势力宣战。"林玄站在宫殿前,宣布道。
|
||||
|
||||
混沌神国的军队开始征战四方,所向披靡。林玄亲自出手,击败了一个又一个强大的对手。
|
||||
|
||||
"林玄,你的实力已经达到渡劫期巅峰,可以尝试突破到真神之位了。"神王的声音再次响起。
|
||||
|
||||
林玄点头,开始准备最后的突破。他知道,这将是他修炼之路上的最大挑战。
|
||||
|
||||
第七章:轮回之谜
|
||||
|
||||
林玄站在混沌神国的最高处,仰望星空。
|
||||
|
||||
"轮回珠,你到底隐藏着什么秘密?"他喃喃自语。
|
||||
|
||||
自从突破到渡劫期后,林玄就感受到轮回珠中有一股神秘的力量在召唤他。
|
||||
|
||||
"主人,我感受到轮回珠中有时间法则的气息。"九尾天狐说道。
|
||||
|
||||
林玄点头,开始参悟轮回珠中的奥秘。他盘膝而坐,心神沉入轮回珠中。
|
||||
|
||||
轮回珠中,仿佛有一个无尽的世界。林玄看到无数画面在眼前闪过,那是过去、现在、未来的片段。
|
||||
|
||||
"这就是轮回的奥秘吗?"林玄心中一动。
|
||||
|
||||
他开始尝试掌控这些画面,领悟时间法则。这是一个漫长的过程,需要极大的耐心和悟性。
|
||||
|
||||
不知过了多久,林玄终于有所领悟。
|
||||
|
||||
"时间法则,原来如此。"他睁开眼睛,眼中闪烁着智慧的光芒。
|
||||
|
||||
就在这时,轮回珠突然剧烈震动,一道金光冲天而起。
|
||||
|
||||
"这是...真神之位的召唤?"林玄惊讶道。
|
||||
|
||||
他感受到一股强大的力量在召唤他,那是真神之位的考验。
|
||||
|
||||
"主人,你要小心。"九尾天狐提醒道。
|
||||
|
||||
林玄点头,开始准备接受考验。他来到一处古老的祭坛,这是真神之位的考验之地。
|
||||
|
||||
祭坛上,一位神秘的老者出现。
|
||||
|
||||
"林玄,你终于来了。"老者说道。
|
||||
|
||||
"前辈是?"林玄问道。
|
||||
|
||||
"我是轮回之主,掌管轮回法则。"老者说道,"你的表现让我很满意,现在,接受最后的考验吧。"
|
||||
|
||||
林玄点头,开始接受考验。考验分为三关:过去、现在、未来。
|
||||
|
||||
第一关,林玄回到过去,重新经历自己的人生。他看到了自己的成长,也看到了自己的不足。
|
||||
|
||||
第二关,林玄面对现在的自己,需要战胜内心的恐惧和欲望。
|
||||
|
||||
第三关,林玄看到未来的自己,那是一个站在万界之巅的强者。
|
||||
|
||||
"很好,你通过了考验。"轮回之主满意地点头,"从今天起,你就是新的轮回之主。"
|
||||
|
||||
林玄感受到一股强大的力量涌入体内,那是真神之位的力量。
|
||||
|
||||
"真神之位!"他惊喜地发现,自己终于突破到了真神之位。
|
||||
|
||||
"林玄,你的使命才刚刚开始。"轮回之主说道,"轮回的奥秘,还有更多等待你去探索。"
|
||||
|
||||
林玄点头,他知道,自己的修炼之路还很长。但他有信心,能够走得更远。
|
||||
|
||||
第八章:隐居世俗
|
||||
|
||||
成就真神之位后,林玄站在万界之巅,俯瞰众生。
|
||||
|
||||
"主人,你现在已经是万界最强者了。"九尾天狐说道。
|
||||
|
||||
林玄点头,但他心中却有一丝疲惫。多年的征战,让他感到厌倦。
|
||||
|
||||
"我想休息一段时间。"林玄说道。
|
||||
|
||||
他决定隐居世俗,体验平凡的生活。他来到一个普通的小镇,化名"林先生",开了一家小茶馆。
|
||||
|
||||
"林先生,您的茶真好喝。"镇上的居民称赞道。
|
||||
|
||||
林玄微笑点头,享受着这种平静的生活。他开始观察普通人的生活,感受他们的喜怒哀乐。
|
||||
|
||||
"原来,平凡的生活也有它的美好。"林玄感叹道。
|
||||
|
||||
他结识了许多朋友,听他们讲述生活中的故事。这些故事让他对人生有了新的感悟。
|
||||
|
||||
"林先生,您看起来不像普通人。"一位老者说道。
|
||||
|
||||
林玄笑而不语,继续泡茶。他知道,自己的身份迟早会暴露,但他并不在意。
|
||||
|
||||
这一日,小镇上来了一群不速之客。
|
||||
|
||||
"听说这里有一位高人,我们特来拜访。"为首的人说道。
|
||||
|
||||
林玄抬头,看到对方身上散发着强大的气息,知道他们是修炼者。
|
||||
|
||||
"我就是你们要找的人。"林玄说道。
|
||||
|
||||
对方一愣,随即恭敬行礼:"前辈,我们是来请教修炼之道的。"
|
||||
|
||||
林玄点头,开始指点他们。他发现自己虽然隐居,但修炼之心从未改变。
|
||||
|
||||
"修炼之道,重在修心。"林玄说道,"只有心静,才能看清自己的路。"
|
||||
|
||||
对方若有所思,感激地离开。
|
||||
|
||||
林玄继续过着平静的生活,但他知道,自己的使命还未完成。他开始思考,如何将修炼之道与平凡生活结合。
|
||||
|
||||
"或许,这就是新的突破。"他喃喃自语。
|
||||
|
||||
第九章:再造巅峰
|
||||
|
||||
隐居的日子一天天过去,林玄的心境越来越平和。
|
||||
|
||||
"主人,你似乎找到了新的方向。"九尾天狐说道。
|
||||
|
||||
林玄点头:"是的,我明白了修炼的真谛。"
|
||||
|
||||
他开始尝试将修炼之道与平凡生活结合,创造出一种新的修炼方式。
|
||||
|
||||
"修炼不在高处,而在心中。"林玄说道。
|
||||
|
||||
这一日,他来到一处山顶,仰望星空。
|
||||
|
||||
"轮回珠,是时候了。"他喃喃自语。
|
||||
|
||||
轮回珠在胸前微微发光,似乎在回应他。林玄开始最后的突破。
|
||||
|
||||
"混沌神诀,第七式!"他大喝一声,体内力量爆发到极致。
|
||||
|
||||
一股强大的力量从体内涌出,林玄成功突破到神王境。
|
||||
|
||||
"神王境!"他惊喜地发现,自己终于达到了修炼的巅峰。
|
||||
|
||||
就在这时,天空中出现一道金光,一位神秘的老者出现。
|
||||
|
||||
"林玄,你终于领悟了大道真谛。"老者说道。
|
||||
|
||||
"前辈是?"林玄问道。
|
||||
|
||||
"我是大道之主,掌管万界法则。"老者说道,"你的表现让我很满意,现在,接受最后的考验吧。"
|
||||
|
||||
林玄点头,开始接受考验。考验很简单,只需要回答一个问题。
|
||||
|
||||
"什么是修炼的真谛?"老者问道。
|
||||
|
||||
林玄沉思片刻,说道:"修炼的真谛,在于修心。心静则明,心明则通。修炼不在高处,而在心中。"
|
||||
|
||||
老者满意地点头:"很好,你通过了考验。从今天起,你就是新的万神之主。"
|
||||
|
||||
林玄感受到一股强大的力量涌入体内,那是万神之主的力量。
|
||||
|
||||
"万神之主!"他惊喜地发现,自己终于成为了万界最强者。
|
||||
|
||||
"林玄,你的使命才刚刚开始。"大道之主说道,"万界的未来,就交给你了。"
|
||||
|
||||
林玄点头,他知道,自己的责任重大。但他有信心,能够带领万界走向更美好的未来。
|
||||
|
||||
回到小镇,林玄继续开着他的小茶馆。但他知道,自己已经不再是普通人。
|
||||
|
||||
"林先生,您的茶真好喝。"镇上的居民称赞道。
|
||||
|
||||
林玄微笑点头,享受着这种平静的生活。他知道,这就是他想要的。
|
||||
|
||||
"修炼之道,重在修心。"他说道,"只有心静,才能看清自己的路。"
|
||||
|
||||
从此,林玄成为了万界的传说。他的故事被传颂千古,激励着无数修炼者。
|
||||
|
||||
而他,依然在那座小镇上,开着他的小茶馆,过着平凡而充实的生活。
|
||||
|
||||
【全文完】
|
|
@ -13,7 +13,7 @@
|
|||
<image src="https://api.ccttiot.com/smartmeter/img/static/uX29DoZzt2iTzWzASa8v" mode=""></image>
|
||||
</view>
|
||||
<view class="shuru">
|
||||
<input type="text" v-model="sn" placeholder="请输入二维码下方的车辆编号"/>
|
||||
<input type="number" v-model="sn" placeholder="请输入二维码下方的车辆编号"/>
|
||||
</view>
|
||||
<view class="anniu" @click="btnkaisuo">
|
||||
确认开锁
|
||||
|
|
|
@ -393,6 +393,8 @@
|
|||
devicename: '',
|
||||
devicesarr: [],
|
||||
findDeviceTimer: null,
|
||||
lat:'',
|
||||
lon:''
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
|
@ -536,11 +538,34 @@
|
|||
},1500)
|
||||
},
|
||||
onShow() {
|
||||
xBlufi.notifyConnectBle({
|
||||
isStart: false,
|
||||
deviceId: this.deviceId,
|
||||
name: this.name
|
||||
})
|
||||
xBlufi.notifyStartDiscoverBle({
|
||||
'isStart': true
|
||||
})
|
||||
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
|
||||
},
|
||||
// onHide() {
|
||||
// xBlufi.notifyConnectBle({
|
||||
// isStart: false,
|
||||
// deviceId: this.deviceId,
|
||||
// name: this.name
|
||||
// })
|
||||
// xBlufi.notifyStartDiscoverBle({
|
||||
// 'isStart': true
|
||||
// })
|
||||
// xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
|
||||
// },
|
||||
// onUnload() {
|
||||
|
||||
// xBlufi.notifyStartDiscoverBle({
|
||||
// 'isStart': false
|
||||
// })
|
||||
// xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent)
|
||||
// },
|
||||
methods: {
|
||||
// 判断离线连接蓝牙
|
||||
findDevice() {
|
||||
|
@ -575,6 +600,7 @@
|
|||
console.log('断开');
|
||||
this.ver_dataflag = 1
|
||||
console.log(this.ver_dataflag,'断开断开');
|
||||
this.findDevice()
|
||||
}
|
||||
break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
||||
|
@ -599,9 +625,9 @@
|
|||
this.findDevice()
|
||||
}
|
||||
break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||||
console.log("1收到设备发来的自定义数据结果:", options.data)
|
||||
break;
|
||||
// case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||||
// console.log("1收到设备发来的自定义数据结果:", options.data)
|
||||
// break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
||||
if (!options.result) {
|
||||
console.log('蓝牙未开启')
|
||||
|
@ -665,6 +691,26 @@
|
|||
title: '车辆连接中...',
|
||||
mask: true
|
||||
})
|
||||
setTimeout(()=>{
|
||||
if(this.ver_dataflag == 3){
|
||||
uni.hideLoading()
|
||||
}else{
|
||||
uni.hideLoading()
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '连接失败,是否重新连接?',
|
||||
showCancel: true,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.btnzhifu()
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},10000)
|
||||
}
|
||||
}else{
|
||||
if (this.bikeobj.areaAuthentication == true) { //判断是否需要实名认证
|
||||
|
@ -941,6 +987,23 @@
|
|||
},
|
||||
// 蓝牙下单
|
||||
getlyxd(){
|
||||
uni.getLocation({
|
||||
type: 'gcj02', // 国内地图更兼容
|
||||
isHighAccuracy: true,
|
||||
accuracy:'best',
|
||||
success: (res) => {
|
||||
console.log('精确坐标:', res);
|
||||
this.lat = res.latitude;
|
||||
this.lon = res.longitude;
|
||||
this.getfeiyong();
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err);
|
||||
this.lat = null
|
||||
this.lon = null
|
||||
}
|
||||
});
|
||||
if(this.ver_dataflag == 3){
|
||||
let data = {
|
||||
deviceId: this.bikeobj.id,
|
||||
suitId: this.suitId,
|
||||
|
@ -966,9 +1029,17 @@
|
|||
customData: "11open@"
|
||||
})
|
||||
console.log(respc, '支付成功')
|
||||
// xBlufi.notifySendCustomData({
|
||||
// customData: "11open@"
|
||||
// })
|
||||
let data = {
|
||||
mac:this.mac,
|
||||
reason:'还车',
|
||||
command:'open',
|
||||
longitude:this.lon,
|
||||
latitude:this.lat,
|
||||
result:'成功'
|
||||
}
|
||||
this.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
console.log(res,'蓝牙');
|
||||
})
|
||||
this.$u.put(`/app/pay/refreshPayResult?no=${resp.data.pay.no}`).then((
|
||||
res) => {
|
||||
setTimeout(() => {
|
||||
|
@ -997,6 +1068,20 @@
|
|||
}).catch(e => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
}else{
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 下单
|
||||
getzf() {
|
||||
|
@ -2012,4 +2097,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
</style></style>
|
||||
</style>
|
||||
|
|
|
@ -751,26 +751,28 @@
|
|||
}
|
||||
})
|
||||
})
|
||||
// this.status9.forEach(item => {
|
||||
// this.markers.push({
|
||||
// id: parseFloat(item.sn),
|
||||
// latitude: parseFloat(item.latitude),
|
||||
// longitude: parseFloat(item.longitude),
|
||||
// // title: item.deviceName,
|
||||
// width: 40,
|
||||
// height: 40,
|
||||
// iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u4UKmB47AxOj3YKIaajM',
|
||||
// callout: {
|
||||
// content: '离线', // 修改为你想要显示的文字内容
|
||||
// color: '#ffffff', // 修改为文字颜色
|
||||
// fontSize: 14, // 修改为文字大小
|
||||
// borderRadius: 10, // 修改为气泡圆角大小
|
||||
// bgColor: '#000000', // 修改为气泡背景颜色
|
||||
// padding: 6, // 修改为气泡内边距
|
||||
// display: 'ALWAYS', // 修改为气泡的显示策略
|
||||
// }
|
||||
// })
|
||||
// })
|
||||
this.status9.forEach(item => {
|
||||
this.markers.push({
|
||||
id: parseFloat(item.sn),
|
||||
latitude: parseFloat(item.latitude),
|
||||
longitude: parseFloat(item.longitude),
|
||||
// title: item.deviceName,
|
||||
width: 30,
|
||||
height: 34,
|
||||
iconPath: item.onlineStatus == 0 ?
|
||||
'https://api.ccttiot.com/smartmeter/img/static/uQPc1AJSqJ6ZbOWrrLrf' :
|
||||
'https://api.ccttiot.com/smartmeter/img/static/u392YZI3qzhhi3pORotr',
|
||||
callout: {
|
||||
content:'' + parseInt(item.remainingPower) + '%', // 修改为你想要显示的文字内容
|
||||
color: '#ffffff', // 修改为文字颜色
|
||||
fontSize: 10, // 修改为文字大小
|
||||
borderRadius: 10, // 修改为气泡圆角大小
|
||||
bgColor: '#000000', // 修改为气泡背景颜色
|
||||
padding: 3, // 修改为气泡内边距
|
||||
display: 'ALWAYS', // 修改为气泡的显示策略
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getmarks() {
|
||||
this.markers = []
|
||||
|
@ -803,6 +805,8 @@
|
|||
this.status6.push(item)
|
||||
} else if (item.status == 8) {
|
||||
this.status8.push(item)
|
||||
}else if (item.status == 9) {
|
||||
this.status9.push(item)
|
||||
}
|
||||
})
|
||||
this.markstause()
|
||||
|
@ -828,6 +832,8 @@
|
|||
this.status6.push(item)
|
||||
} else if (item.status == 8) {
|
||||
this.status8.push(item)
|
||||
}else if (item.status == 9) {
|
||||
this.status9.push(item)
|
||||
}
|
||||
})
|
||||
this.markstause()
|
||||
|
@ -853,6 +859,8 @@
|
|||
this.status6.push(item)
|
||||
} else if (item.status == 8) {
|
||||
this.status8.push(item)
|
||||
}else if (item.status == 9) {
|
||||
this.status9.push(item)
|
||||
}
|
||||
})
|
||||
this.markstause()
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<view class="iconfont icon-xiangxia1"></view>
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view @scrolltolower="handqixing" scroll-y style="height: 66vh;">
|
||||
<scroll-view @scrolltolower="handqixing" scroll-y refresher-enabled @refresherrefresh="onRefresh" :refresher-triggered="isRefreshing" refresher-default-style="black" style="height: 66vh;">
|
||||
<view class="info_card" style="margin-top: 20rpx;" v-for="(item, index) in filteredList" :key="index"
|
||||
@click.stop="todetail(item)">
|
||||
<view class="info_tit" style="margin-left: 36rpx;">
|
||||
|
@ -150,6 +150,7 @@ export default {
|
|||
showdsc: false,
|
||||
sctit: '从高到低',
|
||||
scidx: 'desc',
|
||||
isRefreshing: false,
|
||||
show: false,
|
||||
showtype: false,
|
||||
typeSort: 'remainingPower',
|
||||
|
@ -220,7 +221,10 @@ export default {
|
|||
filteredList: [],
|
||||
areaId: 0,
|
||||
pageNum:1,
|
||||
total:''
|
||||
total:'',
|
||||
sousuoflag:true,
|
||||
searchKeyword: '',
|
||||
searchTimer: null,
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
@ -273,38 +277,77 @@ export default {
|
|||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 搜索
|
||||
search() {
|
||||
// if (this.searchKeyword != '') {
|
||||
this.pageNum = 1
|
||||
let data = {
|
||||
isAsc: this.scidx,
|
||||
status: this.typeidx,
|
||||
areaId: this.areaId,
|
||||
orderByColumn: this.typeSort,
|
||||
refresh:true,
|
||||
Keyword:this.searchKeyword
|
||||
}
|
||||
this.selectedItems = []
|
||||
this.$u.get(`/bst/device/list?pageNum=${this.pageNum}&pageSize=999`, data).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.total
|
||||
this.deviceList = res.rows
|
||||
this.filteredList = res.rows
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
// } else {
|
||||
// this.filteredList = this.deviceList;
|
||||
// }
|
||||
// console.log(this.filteredList)
|
||||
// 下拉刷新
|
||||
onRefresh() {
|
||||
this.isRefreshing = true
|
||||
this.pageNum = 1
|
||||
this.getDevice()
|
||||
setTimeout(() => {
|
||||
this.isRefreshing = false
|
||||
}, 1000)
|
||||
},
|
||||
search() {
|
||||
// 清除之前的定时器
|
||||
clearTimeout(this.searchTimer)
|
||||
// 设置新的定时器(500ms后执行)
|
||||
this.searchTimer = setTimeout(() => {
|
||||
this.doSearch()
|
||||
}, 500)
|
||||
},
|
||||
// 实际执行搜索的方法
|
||||
doSearch() {
|
||||
this.pageNum = 1
|
||||
let data = {
|
||||
isAsc: this.scidx,
|
||||
status: this.typeidx,
|
||||
areaId: this.areaId,
|
||||
orderByColumn: this.typeSort,
|
||||
refresh: true,
|
||||
Keyword: this.searchKeyword
|
||||
}
|
||||
|
||||
this.selectedItems = []
|
||||
this.$u.get(`/bst/device/list?pageNum=${this.pageNum}&pageSize=999`, data).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.total = res.total
|
||||
this.deviceList = res.rows
|
||||
this.filteredList = res.rows
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// // 搜索
|
||||
// search() {
|
||||
// this.pageNum = 1
|
||||
// let data = {
|
||||
// isAsc: this.scidx,
|
||||
// status: this.typeidx,
|
||||
// areaId: this.areaId,
|
||||
// orderByColumn: this.typeSort,
|
||||
// refresh:true,
|
||||
// Keyword:this.searchKeyword
|
||||
// }
|
||||
// this.selectedItems = []
|
||||
// this.$u.get(`/bst/device/list?pageNum=${this.pageNum}&pageSize=999`, data).then((res) => {
|
||||
// if (res.code == 200) {
|
||||
// this.total = res.total
|
||||
// this.deviceList = res.rows
|
||||
// this.filteredList = res.rows
|
||||
// } else {
|
||||
// uni.showToast({
|
||||
// title: res.msg,
|
||||
// icon: 'none',
|
||||
// duration: 2000
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
todetail(item) {
|
||||
if (this.stepindex == 0) {
|
||||
console.log(item.id,item);
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
:default-time='pickertime'></u-picker>
|
||||
<u-picker mode="time" v-model="time2" :params="params" @confirm="confirm2"
|
||||
:default-time='pickertime'></u-picker>
|
||||
<scroll-view class="warp_box" @scrolltolower="handqixing" scroll-y>
|
||||
<scroll-view class="warp_box" @scrolltolower="handqixing" scroll-y refresher-enabled @refresherrefresh="onRefresh" :refresher-triggered="isRefreshing" refresher-default-style="black">
|
||||
<view class="swiper-item ">
|
||||
<view class="card" v-for="(item,index) in allList" :key="index" @click="toOrderDetail(item.deviceSn,item.id)">
|
||||
<view class="line"></view>
|
||||
|
@ -112,7 +112,6 @@
|
|||
开始时间:<span>无</span>
|
||||
</view>
|
||||
<view class="half_info_li">
|
||||
<!-- 租赁时长:<span>{{computedList(item.duration)}}</span> -->
|
||||
租赁时长:<span>{{formatDatess(item.startTime,item.endTime)}}</span>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -168,6 +167,7 @@
|
|||
showtk: false,
|
||||
orderInfo: {},
|
||||
initialValues: {},
|
||||
isRefreshing: false,
|
||||
areaId: false,
|
||||
tit: '车牌号',
|
||||
shows: false,
|
||||
|
@ -200,11 +200,7 @@
|
|||
}
|
||||
},
|
||||
onShow() {
|
||||
// if (uni.getStorageSync('adminAreaid')) {
|
||||
// this.areaId = uni.getStorageSync('adminAreaid')
|
||||
// this.orderList()
|
||||
// // this.getArea()
|
||||
// }
|
||||
|
||||
},
|
||||
watch: {
|
||||
|
||||
|
@ -231,6 +227,16 @@
|
|||
|
||||
},
|
||||
methods: {
|
||||
// 下拉刷新
|
||||
onRefresh() {
|
||||
this.isRefreshing = true
|
||||
this.pageNum = 1
|
||||
this.orderList()
|
||||
setTimeout(() => {
|
||||
this.isRefreshing = false
|
||||
}, 1000)
|
||||
},
|
||||
|
||||
formatPayedAmount(payedAmount, payRefunded, payRefunding) {
|
||||
if (!payedAmount) return '0.00元';
|
||||
|
||||
|
@ -295,17 +301,6 @@
|
|||
this.typeidx = e[0].value
|
||||
this.tit = e[0].label
|
||||
},
|
||||
computedList(seconds, showSeconds = true) {
|
||||
if (isNaN(seconds)) return "--";
|
||||
const h = Math.floor(seconds / 3600);
|
||||
const m = Math.floor((seconds % 3600) / 60);
|
||||
const s = seconds % 60;
|
||||
const parts = [];
|
||||
if (h > 0) parts.push(`${h}时`);
|
||||
if (m > 0 || h > 0) parts.push(`${m}分`); // 如果有小时则始终显示分钟
|
||||
if (showSeconds) parts.push(`${s}秒`);
|
||||
return parts.join("") || "0钟";
|
||||
},
|
||||
toOrderDetail(id,orid) {
|
||||
uni.navigateTo({
|
||||
url: '/page_shanghu/guanli/order_detail?id=' + id + '&orid=' + orid
|
||||
|
|
|
@ -125,6 +125,12 @@
|
|||
客服设置
|
||||
</view>
|
||||
</view>
|
||||
<view class="cont" @click="btnsp">
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/ur7n7u3LdDMLKQdzTtD7" mode=""></image>
|
||||
<view class="text">
|
||||
视频教程
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="cont" @click="btngggl">
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/ui8unTyOFXCkgier5F5P" mode=""></image>
|
||||
<view class="text">
|
||||
|
@ -136,8 +142,8 @@
|
|||
<view class="text">
|
||||
免责协议
|
||||
</view>
|
||||
</view>
|
||||
<view class="cont" @click="btnggsz">
|
||||
</view> -->
|
||||
<!-- <view class="cont" @click="btnggsz">
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/uov2297NuScFZayry0iH" mode=""></image>
|
||||
<view class="text">
|
||||
广告设置
|
||||
|
@ -237,6 +243,12 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击进入视频教程
|
||||
btnsp(){
|
||||
uni.navigateTo({
|
||||
url:'/page_user/shiping/index'
|
||||
})
|
||||
},
|
||||
// 点击跳转到运维人员
|
||||
btnywry(){
|
||||
uni.navigateTo({
|
||||
|
|
|
@ -1474,9 +1474,9 @@
|
|||
|
||||
.new_infocard{
|
||||
width: 750rpx;
|
||||
height: 50vh;
|
||||
overflow: scroll;
|
||||
padding-bottom: 100rpx;
|
||||
height: 80vh;
|
||||
// overflow: scroll;
|
||||
// padding-bottom: 100rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 30rpx;
|
||||
padding: 30rpx;
|
||||
|
|
|
@ -125,17 +125,20 @@
|
|||
车辆信息
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="pic_cont" v-for="(item,index) in processedOrderDeviceList" :key="index">
|
||||
<view class="jilu">
|
||||
<view class="one" v-if="index == 0">
|
||||
初始车辆
|
||||
</view>
|
||||
<view class="one" v-else>
|
||||
更换车辆
|
||||
</view>
|
||||
<view class="two">
|
||||
{{item.startTime == null ? '--' : item.startTime}}
|
||||
<view class="pic_cont" v-for="(item,index) in processedOrderDeviceList" :key="index" @click="btntz(item.deviceId)">
|
||||
<view class="jilu" style="display: flex;justify-content: space-between;width: 100%;align-items: center;">
|
||||
<view class="" style="display: flex;align-items: center;">
|
||||
<view class="one" v-if="index == 0">
|
||||
初始车辆
|
||||
</view>
|
||||
<view class="one" v-else>
|
||||
更换车辆
|
||||
</view>
|
||||
<view class="two">
|
||||
{{item.startTime == null ? '--' : item.startTime}}
|
||||
</view>
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#4C97E7" size="28"></u-icon>
|
||||
</view>
|
||||
<view class="bianhao">
|
||||
<view class="">
|
||||
|
@ -334,6 +337,30 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="mask" v-if="tkflag"></view>
|
||||
|
||||
|
||||
<!-- 辅助还车是否收取调度费 -->
|
||||
<view class="diaodu" v-if="ddflag">
|
||||
<view class="top" @click="btncha">
|
||||
×
|
||||
</view>
|
||||
<view class="cen">
|
||||
该车辆未在停车区还车,是否收取调度费{{fuzhuobj.manageFee > 0 ? fuzhuobj.manageFee : fuzhuobj.dispatchFee > 0 ? fuzhuobj.dispatchFee : ''}}元?
|
||||
</view>
|
||||
<view class="anniu">
|
||||
<view class="bu" @click="btnfuzhus(false)">
|
||||
不收取
|
||||
</view>
|
||||
<view class="shou" @click="btnfuzhus(true)">
|
||||
收取
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mask" v-if="ddflag">
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
@ -346,7 +373,6 @@
|
|||
return {
|
||||
devicesList: [],
|
||||
searching: false,
|
||||
texts: '正在扫描蓝牙设备...',
|
||||
btnflag: true,
|
||||
tishiflag: false,
|
||||
option: '',
|
||||
|
@ -417,7 +443,10 @@
|
|||
|
||||
currentPolyline:[],
|
||||
trackPoints: [], // 存储轨迹点数据
|
||||
tkje:true
|
||||
tkje:true,
|
||||
|
||||
ddflag:false,
|
||||
fuzhuobj:{}
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
|
@ -492,6 +521,11 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
btntz(id){
|
||||
uni.navigateTo({
|
||||
url:'/page_shanghu/guanli/device_detail?id=' + id
|
||||
})
|
||||
},
|
||||
formatSecondsToHMS(seconds) {
|
||||
const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
|
||||
const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
|
||||
|
@ -697,38 +731,95 @@
|
|||
console.log(11);
|
||||
}
|
||||
},
|
||||
btncha(){
|
||||
this.ddflag = false
|
||||
},
|
||||
// 是否收取调度费
|
||||
btnfuzhus(flag){
|
||||
uni.showLoading({
|
||||
title: '还车中...',
|
||||
mask: true
|
||||
})
|
||||
let data = {
|
||||
orderId:this.orid,
|
||||
needDispatchFee:flag
|
||||
}
|
||||
this.$u.put(`/bst/order/end`,data).then(res =>{
|
||||
if(res.code == 200){
|
||||
uni.showToast({
|
||||
title: '辅助还车成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
uni.hideLoading()
|
||||
this.ddflag = false
|
||||
setTimeout(()=>{
|
||||
this.deviceInfo()
|
||||
this.getorderxq()
|
||||
},1500)
|
||||
}else{
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击辅助还车
|
||||
btnfuzhu(){
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您确定要进行辅助还车吗?',
|
||||
showCancel: true,
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
let data = {
|
||||
orderId:that.orid
|
||||
}
|
||||
that.$u.put(`/bst/order/end`,data).then(res =>{
|
||||
if(res.code == 200){
|
||||
uni.showToast({
|
||||
title: '辅助还车成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.deviceInfo()
|
||||
that.getorderxq()
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
let data = {
|
||||
orderId: this.orid,
|
||||
checkLocation:false
|
||||
}
|
||||
this.$u.post(`/app/order/calcFee`, data).then(res => {
|
||||
if (res.code == 200) {
|
||||
this.fuzhuobj = res.data
|
||||
if (res.data.manageFee > 0 || res.data.dispatchFee > 0) {
|
||||
this.ddflag = true
|
||||
} else {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您确定要进行辅助还车吗?',
|
||||
showCancel: true,
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
let data = {
|
||||
orderId:that.orid
|
||||
}
|
||||
that.$u.put(`/bst/order/end`,data).then(res =>{
|
||||
if(res.code == 200){
|
||||
uni.showToast({
|
||||
title: '辅助还车成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
setTimeout(()=>{
|
||||
that.deviceInfo()
|
||||
that.getorderxq()
|
||||
},1500)
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
@ -1948,6 +2039,67 @@
|
|||
overflow-x: hidden;
|
||||
background-color: #F3F3F3;
|
||||
}
|
||||
.diaodu{
|
||||
position: fixed;
|
||||
width: 560rpx;
|
||||
background-color: #fff;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
border-radius: 24rpx;
|
||||
overflow: hidden;
|
||||
z-index: 999;
|
||||
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
|
||||
.top{
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-size: 40rpx;
|
||||
color: #999;
|
||||
}
|
||||
.cen{
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
padding: 0 40rpx 40rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.anniu{
|
||||
display: flex;
|
||||
height: 100rpx;
|
||||
border-top: 1px solid #f5f5f5;
|
||||
view{
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
.bu{
|
||||
color: #666;
|
||||
background: #f8f8f8;
|
||||
}
|
||||
.shou{
|
||||
color: #fff;
|
||||
background: #4C97E7;
|
||||
}
|
||||
}
|
||||
}
|
||||
.mask{
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 998;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
.xingchengxx{
|
||||
width: 750rpx;
|
||||
max-height: 99999rpx;
|
||||
|
|
|
@ -150,14 +150,19 @@ export default {
|
|||
},
|
||||
onShow() {
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: (res) => {
|
||||
this.latitude = res.latitude
|
||||
this.longitude = res.longitude
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err)
|
||||
}
|
||||
type: 'gcj02', // 国内地图更兼容
|
||||
isHighAccuracy: true,
|
||||
accuracy:'best',
|
||||
success: (res) => {
|
||||
console.log('精确坐标:', res);
|
||||
this.latitude = res.latitude
|
||||
this.longitude = res.longitude
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err);
|
||||
this.latitude = null
|
||||
this.longitude = null
|
||||
}
|
||||
})
|
||||
},
|
||||
computed: {
|
||||
|
@ -236,6 +241,17 @@ export default {
|
|||
xBlufi.notifySendCustomData({
|
||||
customData: "11close@"
|
||||
})
|
||||
// let data = {
|
||||
// mac:that.mac,
|
||||
// reason:'换车',
|
||||
// command:'close',
|
||||
// longitude:that.lon,
|
||||
// latitude:that.lat,
|
||||
// result:'成功'
|
||||
// }
|
||||
// that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
// console.log(res,'蓝牙');
|
||||
// })
|
||||
setTimeout(()=>{
|
||||
xBlufi.notifyConnectBle({
|
||||
isStart: false,
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
<view class="name">
|
||||
身份证号 <input type="text" v-model="zfzh" placeholder="请填写身份证号" />
|
||||
</view>
|
||||
<!-- <view class="name">
|
||||
手机号 <input type="text" v-model="tel" placeholder="请填写手机号" />
|
||||
</view> -->
|
||||
<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
|
||||
您当前还未完成实名认证
|
||||
</view>
|
||||
|
@ -31,9 +28,6 @@
|
|||
<view class="name">
|
||||
身份证号 <input type="text" v-model="zfzh" :disabled="true" placeholder="请填写身份证号" />
|
||||
</view>
|
||||
<!-- <view class="name">
|
||||
手机号 <input type="text" v-model="tel" :disabled="true" placeholder="请填写手机号" />
|
||||
</view> -->
|
||||
<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
|
||||
您当前已完成实名认证
|
||||
</view>
|
||||
|
@ -52,7 +46,6 @@
|
|||
bgc: {
|
||||
backgroundColor: "",
|
||||
},
|
||||
tel:'',
|
||||
name:'',
|
||||
zfzh:'',
|
||||
isReal:false,
|
||||
|
@ -63,7 +56,6 @@
|
|||
if(option.user){
|
||||
console.log(option);
|
||||
this.isReal = JSON.parse(option.user).isReal
|
||||
this.tel = JSON.parse(option.user).phonenumber
|
||||
this.name = JSON.parse(option.user).realName
|
||||
this.zfzh = JSON.parse(option.user).realIdCard
|
||||
}
|
||||
|
@ -122,7 +114,6 @@
|
|||
let data = {
|
||||
userName:this.name,
|
||||
idCard:this.zfzh,
|
||||
// mobile:this.tel
|
||||
}
|
||||
this.$u.put(`/app/realName/twoElementRealName`,data).then(res =>{ //二要素
|
||||
if(res.code == 200){
|
||||
|
|
50
page_user/shiping/index.vue
Normal file
50
page_user/shiping/index.vue
Normal file
|
@ -0,0 +1,50 @@
|
|||
<template>
|
||||
<view class="page">
|
||||
<u-navbar title="视频教程" :border-bottom="false" :background="bgc" back-icon-color="#262B37" title-color='#262B37'
|
||||
title-size='36' height='36' id="navbar">
|
||||
</u-navbar>
|
||||
<view class="list">
|
||||
<view class="list_item">
|
||||
<web-view :src="http" @load="onWebViewLoad" @error="onWebViewError"></web-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
bgc: {
|
||||
backgroundColor: "#fff",
|
||||
},
|
||||
http:''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.http = 'https://ele.ccttiot.com/ext?url=' + encodeURIComponent('https://player.bilibili.com/player.html?isOutside=true&aid=114369123849636&bvid=BV1CuLczFEe2&cid=29515777844&p=1')
|
||||
console.log(this.http);
|
||||
},
|
||||
methods: {
|
||||
onWebViewLoad(e) {
|
||||
console.log('网页加载完成', e)
|
||||
uni.showToast({ title: '页面加载完成', icon: 'none' })
|
||||
},
|
||||
|
||||
// 网页加载失败时触发
|
||||
onWebViewError(e) {
|
||||
console.error('加载失败', e)
|
||||
uni.showToast({ title: '加载失败', icon: 'none' })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
</style>
|
|
@ -82,6 +82,13 @@
|
|||
"enablePullDownRefresh": false,
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},{
|
||||
"path": "shiping/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "上传",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},{
|
||||
"path": "zhaoshang",
|
||||
"style": {
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
车牌号:{{deivceobj.deviceVehicleNum == null ? '--' : deivceobj.deviceVehicleNum}}
|
||||
<text>SN:{{deivceobj.deviceSn == null ? '--' : deivceobj.deviceSn}}</text>
|
||||
</view>
|
||||
<view class="lanya" v-if="ver_dataflag == 3">
|
||||
<view class="lanya" v-if="ver_dataflag == 3" style="display: flex;align-items: center;color: #1890ff;">
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/uFfCiqhjHpbTBXcZvKl6" class="ljimg"
|
||||
mode=""></image>
|
||||
mode=""></image> 已连接
|
||||
</view>
|
||||
<view class="lanya" v-else>
|
||||
<view class="lanya" v-else style="display: flex;align-items: center;color: rgb(245, 108, 108);">
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/uO1TOFA1vdxQlz3NJenN" class="ljimg"
|
||||
mode=""></image>
|
||||
mode=""></image> 连接中...
|
||||
</view>
|
||||
</view>
|
||||
<view class="dianliang">
|
||||
|
@ -138,7 +138,7 @@
|
|||
需支付<text>{{fajinobj.manageFee > 0 ? fajinobj.manageFee : fajinobj.dispatchFee > 0 ? fajinobj.dispatchFee : ''}}元</text>,你可查看<text
|
||||
@click="btntcd">最近停车点</text>
|
||||
</view>
|
||||
<image src="https://api.ccttiot.com/smartmeter/img/static/uzRrRFiToK3bb3IurIHU" class="tcimg" mode="">
|
||||
<image @click="btntcd" src="https://api.ccttiot.com/smartmeter/img/static/uzRrRFiToK3bb3IurIHU" class="tcimg" mode="">
|
||||
</image>
|
||||
<view class="btnan">
|
||||
<view class="fj" @click="btnfajin">
|
||||
|
@ -217,7 +217,13 @@
|
|||
name: '',
|
||||
kefuflag:false,
|
||||
kefulist:[],
|
||||
ljflag:true
|
||||
ljflag:true,
|
||||
lslat:'',
|
||||
lslon:'',
|
||||
bluetoothData:{},
|
||||
uploadTimer: null, // 定时器ID
|
||||
lastUploadTime: 0, // 上次上传时间戳
|
||||
isUploading: false // 上传状态锁
|
||||
};
|
||||
},
|
||||
onLoad(option) {
|
||||
|
@ -252,7 +258,7 @@
|
|||
// 启动每分钟(60秒)执行一次的定时器
|
||||
this.timer = setInterval(() => {
|
||||
this.executeTask();
|
||||
}, 60000);
|
||||
}, 30000);
|
||||
xBlufi.notifyConnectBle({
|
||||
isStart: false,
|
||||
deviceId: this.deviceId,
|
||||
|
@ -277,6 +283,10 @@
|
|||
console.log('清除定时器2');
|
||||
}
|
||||
},
|
||||
// 组件销毁时清除定时器
|
||||
beforeDestroy() {
|
||||
clearTimeout(this.uploadTimer);
|
||||
},
|
||||
methods: {
|
||||
// 点击咨询客服
|
||||
btnkefu(){
|
||||
|
@ -322,6 +332,7 @@
|
|||
if(this.ver_dataflag != 3){
|
||||
console.log('离线离线');
|
||||
setTimeout(()=>{
|
||||
console.log('11ly',this.ljflag);
|
||||
if(this.ljflag == true){
|
||||
this.ljflag = false
|
||||
this.findDevice()
|
||||
|
@ -368,6 +379,8 @@
|
|||
if (!options.result) {
|
||||
this.ver_dataflag = 1
|
||||
console.log(this.ver_dataflag,'断开断开');
|
||||
clearTimeout(this.uploadTimer) //清除每十秒传一次的定时
|
||||
this.findDevice()
|
||||
}
|
||||
break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
||||
|
@ -387,10 +400,14 @@
|
|||
})
|
||||
this.deviceid = options.data.deviceId
|
||||
this.name = this.name
|
||||
}else{
|
||||
this.ver_dataflag = 1
|
||||
this.ljflag = true
|
||||
}
|
||||
break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||||
console.log("1收到设备发来的自定义数据结果:", options.data)
|
||||
this.getlysj(options.data)
|
||||
break;
|
||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
||||
if (!options.result) {
|
||||
|
@ -402,9 +419,138 @@
|
|||
break;
|
||||
}
|
||||
},
|
||||
getlysj(data) {
|
||||
if (!data) return;
|
||||
// 1. 更健壮的数据解析
|
||||
const dataStr = data.toString();
|
||||
// console.log('原始数据:', dataStr);
|
||||
const dataObj = {};
|
||||
dataStr.split(',').forEach(part => {
|
||||
const [key, value] = part.split(':').map(item => item.trim());
|
||||
if (!key || value === undefined) return;
|
||||
|
||||
switch (key) {
|
||||
case 'status': dataObj.status = value; break;
|
||||
case 'bat': dataObj.bat = parseFloat(value); break;
|
||||
case 'csq': dataObj.csq = parseInt(value); break;
|
||||
case 'lat': dataObj.lat = parseFloat(value); break;
|
||||
case 'lon': dataObj.lon = parseFloat(value); break;
|
||||
case 'q': dataObj.q = parseInt(value); break;
|
||||
case 's': dataObj.s = parseInt(value); break;
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 获取定位
|
||||
uni.getLocation({
|
||||
type: 'gcj02',
|
||||
isHighAccuracy: true,
|
||||
success: (res) => {
|
||||
this.submitData({
|
||||
...dataObj,
|
||||
lon: res.longitude,
|
||||
lat: res.latitude
|
||||
});
|
||||
},
|
||||
fail: () => {
|
||||
this.submitData({
|
||||
...dataObj,
|
||||
lon: 0,
|
||||
lat: 0
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 3. 单独封装数据提交
|
||||
submitData(data) {
|
||||
const payload = {
|
||||
mac: this.mac,
|
||||
sys: {
|
||||
bat: Number(data.bat) || 0,
|
||||
csq: Number(data.csq) || 0,
|
||||
s: Number(data.s) ?? null,
|
||||
q: Number(data.q) ?? null,
|
||||
status: String(data.status || '0'),
|
||||
lon: Number(data.lon) || 0,
|
||||
lat: Number(data.lat) || 0
|
||||
}
|
||||
};
|
||||
this.bluetoothData = payload
|
||||
// console.log('提交数据:', payload);
|
||||
this.throttledUpload()
|
||||
// 4. 带错误处理的上传
|
||||
// this.$u.put('/app/device/iot/bltUpload', payload)
|
||||
// .then(res => {
|
||||
// if (res.code !== 200) throw new Error(res.msg);
|
||||
// console.log('上传成功');
|
||||
// })
|
||||
// .catch(err => {
|
||||
// console.error('上传失败:', err);
|
||||
// // uni.showToast({ title: err.message, icon: 'none' });
|
||||
// });
|
||||
},
|
||||
|
||||
// 节流上传控制
|
||||
throttledUpload() {
|
||||
const now = Date.now();
|
||||
const throttleInterval = 10000; // 10秒
|
||||
|
||||
// 清除之前的定时器
|
||||
clearTimeout(this.uploadTimer);
|
||||
|
||||
// 如果距离上次上传超过10秒且没有正在上传的请求
|
||||
if (now - this.lastUploadTime >= throttleInterval && !this.isUploading) {
|
||||
this.doUpload();
|
||||
} else {
|
||||
// 否则设置定时器,在剩余时间后执行
|
||||
const remainingTime = throttleInterval - (now - this.lastUploadTime);
|
||||
this.uploadTimer = setTimeout(() => {
|
||||
this.doUpload();
|
||||
}, remainingTime);
|
||||
}
|
||||
},
|
||||
|
||||
// 实际执行上传
|
||||
doUpload() {
|
||||
if (!this.bluetoothData || this.isUploading) return;
|
||||
|
||||
this.isUploading = true;
|
||||
this.lastUploadTime = Date.now();
|
||||
console.log(this.bluetoothData,'this.bluetoothDatathis.bluetoothData');
|
||||
this.$u.put(`/app/device/iot/bltUpload`, this.bluetoothData)
|
||||
.then(res => {
|
||||
if(res.code == 200) {
|
||||
console.log('上传蓝牙数据成功',this.bluetoothData, new Date().toLocaleTimeString());
|
||||
} else {
|
||||
console.log('上传蓝牙数据失败', res.msg);
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('上传异常:', err);
|
||||
})
|
||||
.finally(() => {
|
||||
this.isUploading = false;
|
||||
});
|
||||
},
|
||||
|
||||
// 点击启动and关闭
|
||||
btnqd() {
|
||||
if (this.deivceobj.deviceLockStatus == 0) {
|
||||
uni.getLocation({
|
||||
type: 'gcj02', // 国内地图更兼容
|
||||
isHighAccuracy: true,
|
||||
accuracy:'best',
|
||||
success: (res) => {
|
||||
console.log('精确坐标:', res);
|
||||
this.lslat = res.latitude;
|
||||
this.lslon = res.longitude;
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err);
|
||||
this.lat = null
|
||||
this.lon = null
|
||||
}
|
||||
})
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
|
@ -412,29 +558,81 @@
|
|||
showCancel: true,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$u.put(`/app/order/openDevice?orderId=${that.deivceobj.orderId}`).then((res) => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: '解锁成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 1
|
||||
that.getorderdevice()
|
||||
} else if (res.code == 20001) {
|
||||
console.log(that.ver_dataflag,'thatthat');
|
||||
if (that.ver_dataflag == 3) {
|
||||
xBlufi.notifySendCustomData({
|
||||
customData: "11open@"
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 1
|
||||
let flag = ''
|
||||
if(that.ver_dataflag == 3){
|
||||
flag = false
|
||||
}else{
|
||||
flag = true
|
||||
}
|
||||
that.$u.put(`/app/order/openDevice?orderId=${that.deivceobj.orderId}&lat=${that.lslat}&lon=${that.lslon}&requiredIot=${flag}`).then((res) => {
|
||||
console.log(res,'0202020202');
|
||||
if (res.code == 200 && res.data.db >= 1) {
|
||||
if (res.data.iot == false) {
|
||||
console.log(that.lslat,that.lslon,'临时解锁');
|
||||
console.log(that.ver_dataflag,'thatthat');
|
||||
if (that.ver_dataflag == 3) {
|
||||
xBlufi.notifySendCustomData({
|
||||
customData: "11open@"
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 1
|
||||
|
||||
let data = {
|
||||
mac:that.mac,
|
||||
reason:'解锁',
|
||||
command:'close',
|
||||
longitude:that.lslon,
|
||||
latitude:that.lslat,
|
||||
result:'成功'
|
||||
}
|
||||
that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {})
|
||||
} else {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
let data = {
|
||||
mac:that.mac,
|
||||
reason:'解锁',
|
||||
command:'close',
|
||||
longitude:that.lslon,
|
||||
latitude:that.lslat,
|
||||
result:'蓝牙未连接'
|
||||
}
|
||||
that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
|
||||
})
|
||||
}
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '设备离线',
|
||||
icon: 'none',
|
||||
title: '解锁成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 1
|
||||
that.getorderdevice()
|
||||
}
|
||||
} else if(res.code == 20001){
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
|
@ -450,46 +648,102 @@
|
|||
})
|
||||
} else if (this.deivceobj.deviceLockStatus == 1) {
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: (res) => {
|
||||
console.log(res);
|
||||
this.lat = res.latitude
|
||||
this.lon = res.longitude
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err)
|
||||
}
|
||||
type: 'gcj02', // 国内地图更兼容
|
||||
isHighAccuracy: true,
|
||||
accuracy:'best',
|
||||
success: (res) => {
|
||||
console.log('精确坐标:', res);
|
||||
this.lat = res.latitude
|
||||
this.lon = res.longitude
|
||||
},
|
||||
fail: (err) => {
|
||||
this.lat = null
|
||||
this.lon = null
|
||||
console.error('获取位置失败:', err);
|
||||
}
|
||||
})
|
||||
let that = this
|
||||
let flag = ''
|
||||
if(that.ver_dataflag == 3){
|
||||
flag = false
|
||||
}else{
|
||||
flag = true
|
||||
}
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您是否要临时锁车?',
|
||||
showCancel: true,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}&lat=${that.lat}&lon=${that.lon}`).then((res) => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: '临时锁车成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 0
|
||||
that.getorderdevice()
|
||||
} else if (res.code == 20001) {
|
||||
console.log(that.ver_dataflag,'thatthat');
|
||||
if (that.ver_dataflag == 3) {
|
||||
xBlufi.notifySendCustomData({
|
||||
customData: "11close@"
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 0
|
||||
} else {
|
||||
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}&lat=${that.lat}&lon=${that.lon}&requiredIot=${flag}`).then((res) => {
|
||||
if (res.code == 200 && res.data.db >= 1) {
|
||||
if(res.data.iot == false){
|
||||
console.log(that.ver_dataflag,'thatthat');
|
||||
if (that.ver_dataflag == 3) {
|
||||
xBlufi.notifySendCustomData({
|
||||
customData: "11llose@",
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 0
|
||||
|
||||
let data = {
|
||||
mac:that.mac,
|
||||
reason:'临时锁车',
|
||||
command:'close',
|
||||
longitude:that.lon,
|
||||
latitude:that.lat,
|
||||
result:'成功'
|
||||
}
|
||||
that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
console.log(res,'蓝牙');
|
||||
})
|
||||
} else {
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
let data = {
|
||||
mac:that.mac,
|
||||
reason:'临时锁车',
|
||||
command:'close',
|
||||
longitude:that.lon,
|
||||
latitude:that.lat,
|
||||
result:'蓝牙未连接'
|
||||
}
|
||||
that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
console.log(res,'蓝牙');
|
||||
})
|
||||
}
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: '设备离线',
|
||||
icon: 'none',
|
||||
title: '临时锁车成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.deivceobj.deviceLockStatus = 0
|
||||
that.getorderdevice()
|
||||
}
|
||||
} else if(res.code == 20001){
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
|
@ -520,10 +774,18 @@
|
|||
customData: "11play1@"
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '设备离线',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
|
@ -543,10 +805,18 @@
|
|||
url: '/page_user/huanbike?sn=' + this.deivceobj.deviceSn + '&orderid=' + this.deivceobj.orderId + '&deviceid=' + this.deviceid + '&devicename=' + this.devicename
|
||||
})
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: "设备离线,暂不支持换车",
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}else{
|
||||
|
@ -557,16 +827,16 @@
|
|||
},
|
||||
// 每过一分钟去请求车辆最新状态
|
||||
executeTask() {
|
||||
this.counter++;
|
||||
console.log(`定时执行第 ${this.counter} 次`, );
|
||||
this.counter++
|
||||
console.log(`定时执行第 ${this.counter} 次`, )
|
||||
// 这里替换为你的实际业务逻辑
|
||||
this.getorderdevice()
|
||||
},
|
||||
// 安全清除定时器
|
||||
clearTimer() {
|
||||
if (this.timer) {
|
||||
clearInterval(this.timer);
|
||||
this.timer = null;
|
||||
clearInterval(this.timer)
|
||||
this.timer = null
|
||||
}
|
||||
},
|
||||
// 点击缴纳罚金继续还车
|
||||
|
@ -587,6 +857,7 @@
|
|||
uni.getLocation({
|
||||
type: 'gcj02', // 国内地图更兼容
|
||||
isHighAccuracy: true,
|
||||
accuracy:'best',
|
||||
success: (res) => {
|
||||
console.log('精确坐标:', res);
|
||||
this.lat = res.latitude;
|
||||
|
@ -595,8 +866,9 @@
|
|||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err);
|
||||
uni.showToast({ title: '定位失败,请重试', icon: 'none' });
|
||||
this.getfeiyong(); // 降级处理
|
||||
this.lat = null
|
||||
this.lon = null
|
||||
this.getfeiyong() // 降级处理
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -661,10 +933,17 @@
|
|||
gethuan() {
|
||||
if(this.deivceobj.deviceOnlineStatus == 0){
|
||||
if(this.ver_dataflag != 3){
|
||||
uni.showToast({
|
||||
title: '设备离线',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '设备未连接,请靠近车辆等待连接',
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}else{
|
||||
let that = this
|
||||
|
@ -699,8 +978,24 @@
|
|||
customData: "11close@"
|
||||
})
|
||||
setTimeout(()=>{
|
||||
xBlufi.notifyConnectBle({
|
||||
isStart: false,
|
||||
deviceId: that.deviceId,
|
||||
name: that.name
|
||||
})
|
||||
that.getorderdevice()
|
||||
},1000)
|
||||
let data = {
|
||||
mac:that.mac,
|
||||
reason:'还车',
|
||||
command:'close',
|
||||
longitude:that.lon,
|
||||
latitude:that.lat,
|
||||
result:'成功'
|
||||
}
|
||||
that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {
|
||||
console.log(res,'蓝牙')
|
||||
})
|
||||
}
|
||||
}else if(res.msg == null) {
|
||||
uni.hideLoading()
|
||||
|
@ -751,10 +1046,15 @@
|
|||
})
|
||||
setTimeout(()=>{
|
||||
that.getorderdevice()
|
||||
xBlufi.notifyConnectBle({
|
||||
isStart: false,
|
||||
deviceId: that.deviceId,
|
||||
name: that.name
|
||||
})
|
||||
},1000)
|
||||
}else{
|
||||
xBlufi.notifySendCustomData({
|
||||
customData: "11close@"
|
||||
customData: "11llose@"
|
||||
})
|
||||
setTimeout(()=>{
|
||||
that.getorderdevice()
|
||||
|
@ -948,25 +1248,25 @@
|
|||
width: 252rpx;
|
||||
height: 72rpx;
|
||||
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
||||
border: 2rpx solid #808080;
|
||||
font-weight: 600;
|
||||
font-size: 32rpx;
|
||||
color: #808080;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
line-height: 72rpx;
|
||||
background: #4C97E7;
|
||||
}
|
||||
|
||||
.qx {
|
||||
width: 252rpx;
|
||||
height: 72rpx;
|
||||
background: #4C97E7;
|
||||
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
||||
text-align: center;
|
||||
line-height: 72rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 32rpx;
|
||||
color: #FFFFFF;
|
||||
color: #808080;
|
||||
border: 2rpx solid #808080;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1277,6 +1577,7 @@
|
|||
.ljimg {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user