电动车
This commit is contained in:
parent
15b3a7d7f0
commit
0ff5c2f639
|
|
@ -1,7 +1,7 @@
|
||||||
const install = (Vue, vm) => {
|
const install = (Vue, vm) => {
|
||||||
uni.setStorageSync('deptId', 100);
|
uni.setStorageSync('deptId', 100);
|
||||||
Vue.prototype.$u.http.setConfig({
|
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: 'http://192.168.0.102:4101', //景森本地
|
||||||
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上
|
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上
|
||||||
loadingText: '努力加载中~',
|
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>
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uX29DoZzt2iTzWzASa8v" mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="shuru">
|
<view class="shuru">
|
||||||
<input type="text" v-model="sn" placeholder="请输入二维码下方的车辆编号"/>
|
<input type="number" v-model="sn" placeholder="请输入二维码下方的车辆编号"/>
|
||||||
</view>
|
</view>
|
||||||
<view class="anniu" @click="btnkaisuo">
|
<view class="anniu" @click="btnkaisuo">
|
||||||
确认开锁
|
确认开锁
|
||||||
|
|
|
||||||
|
|
@ -393,6 +393,8 @@
|
||||||
devicename: '',
|
devicename: '',
|
||||||
devicesarr: [],
|
devicesarr: [],
|
||||||
findDeviceTimer: null,
|
findDeviceTimer: null,
|
||||||
|
lat:'',
|
||||||
|
lon:''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
|
|
@ -536,11 +538,34 @@
|
||||||
},1500)
|
},1500)
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
|
xBlufi.notifyConnectBle({
|
||||||
|
isStart: false,
|
||||||
|
deviceId: this.deviceId,
|
||||||
|
name: this.name
|
||||||
|
})
|
||||||
xBlufi.notifyStartDiscoverBle({
|
xBlufi.notifyStartDiscoverBle({
|
||||||
'isStart': true
|
'isStart': true
|
||||||
})
|
})
|
||||||
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
|
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: {
|
methods: {
|
||||||
// 判断离线连接蓝牙
|
// 判断离线连接蓝牙
|
||||||
findDevice() {
|
findDevice() {
|
||||||
|
|
@ -575,6 +600,7 @@
|
||||||
console.log('断开');
|
console.log('断开');
|
||||||
this.ver_dataflag = 1
|
this.ver_dataflag = 1
|
||||||
console.log(this.ver_dataflag,'断开断开');
|
console.log(this.ver_dataflag,'断开断开');
|
||||||
|
this.findDevice()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
||||||
|
|
@ -599,9 +625,9 @@
|
||||||
this.findDevice()
|
this.findDevice()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
// case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||||||
console.log("1收到设备发来的自定义数据结果:", options.data)
|
// console.log("1收到设备发来的自定义数据结果:", options.data)
|
||||||
break;
|
// break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
||||||
if (!options.result) {
|
if (!options.result) {
|
||||||
console.log('蓝牙未开启')
|
console.log('蓝牙未开启')
|
||||||
|
|
@ -665,6 +691,26 @@
|
||||||
title: '车辆连接中...',
|
title: '车辆连接中...',
|
||||||
mask: true
|
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{
|
}else{
|
||||||
if (this.bikeobj.areaAuthentication == true) { //判断是否需要实名认证
|
if (this.bikeobj.areaAuthentication == true) { //判断是否需要实名认证
|
||||||
|
|
@ -941,6 +987,23 @@
|
||||||
},
|
},
|
||||||
// 蓝牙下单
|
// 蓝牙下单
|
||||||
getlyxd(){
|
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 = {
|
let data = {
|
||||||
deviceId: this.bikeobj.id,
|
deviceId: this.bikeobj.id,
|
||||||
suitId: this.suitId,
|
suitId: this.suitId,
|
||||||
|
|
@ -966,9 +1029,17 @@
|
||||||
customData: "11open@"
|
customData: "11open@"
|
||||||
})
|
})
|
||||||
console.log(respc, '支付成功')
|
console.log(respc, '支付成功')
|
||||||
// xBlufi.notifySendCustomData({
|
let data = {
|
||||||
// customData: "11open@"
|
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((
|
this.$u.put(`/app/pay/refreshPayResult?no=${resp.data.pay.no}`).then((
|
||||||
res) => {
|
res) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
@ -997,6 +1068,20 @@
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
})
|
})
|
||||||
|
}else{
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 下单
|
// 下单
|
||||||
getzf() {
|
getzf() {
|
||||||
|
|
@ -2012,4 +2097,4 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style></style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -751,26 +751,28 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
// this.status9.forEach(item => {
|
this.status9.forEach(item => {
|
||||||
// this.markers.push({
|
this.markers.push({
|
||||||
// id: parseFloat(item.sn),
|
id: parseFloat(item.sn),
|
||||||
// latitude: parseFloat(item.latitude),
|
latitude: parseFloat(item.latitude),
|
||||||
// longitude: parseFloat(item.longitude),
|
longitude: parseFloat(item.longitude),
|
||||||
// // title: item.deviceName,
|
// title: item.deviceName,
|
||||||
// width: 40,
|
width: 30,
|
||||||
// height: 40,
|
height: 34,
|
||||||
// iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u4UKmB47AxOj3YKIaajM',
|
iconPath: item.onlineStatus == 0 ?
|
||||||
// callout: {
|
'https://api.ccttiot.com/smartmeter/img/static/uQPc1AJSqJ6ZbOWrrLrf' :
|
||||||
// content: '离线', // 修改为你想要显示的文字内容
|
'https://api.ccttiot.com/smartmeter/img/static/u392YZI3qzhhi3pORotr',
|
||||||
// color: '#ffffff', // 修改为文字颜色
|
callout: {
|
||||||
// fontSize: 14, // 修改为文字大小
|
content:'' + parseInt(item.remainingPower) + '%', // 修改为你想要显示的文字内容
|
||||||
// borderRadius: 10, // 修改为气泡圆角大小
|
color: '#ffffff', // 修改为文字颜色
|
||||||
// bgColor: '#000000', // 修改为气泡背景颜色
|
fontSize: 10, // 修改为文字大小
|
||||||
// padding: 6, // 修改为气泡内边距
|
borderRadius: 10, // 修改为气泡圆角大小
|
||||||
// display: 'ALWAYS', // 修改为气泡的显示策略
|
bgColor: '#000000', // 修改为气泡背景颜色
|
||||||
// }
|
padding: 3, // 修改为气泡内边距
|
||||||
// })
|
display: 'ALWAYS', // 修改为气泡的显示策略
|
||||||
// })
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
getmarks() {
|
getmarks() {
|
||||||
this.markers = []
|
this.markers = []
|
||||||
|
|
@ -803,6 +805,8 @@
|
||||||
this.status6.push(item)
|
this.status6.push(item)
|
||||||
} else if (item.status == 8) {
|
} else if (item.status == 8) {
|
||||||
this.status8.push(item)
|
this.status8.push(item)
|
||||||
|
}else if (item.status == 9) {
|
||||||
|
this.status9.push(item)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.markstause()
|
this.markstause()
|
||||||
|
|
@ -828,6 +832,8 @@
|
||||||
this.status6.push(item)
|
this.status6.push(item)
|
||||||
} else if (item.status == 8) {
|
} else if (item.status == 8) {
|
||||||
this.status8.push(item)
|
this.status8.push(item)
|
||||||
|
}else if (item.status == 9) {
|
||||||
|
this.status9.push(item)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.markstause()
|
this.markstause()
|
||||||
|
|
@ -853,6 +859,8 @@
|
||||||
this.status6.push(item)
|
this.status6.push(item)
|
||||||
} else if (item.status == 8) {
|
} else if (item.status == 8) {
|
||||||
this.status8.push(item)
|
this.status8.push(item)
|
||||||
|
}else if (item.status == 9) {
|
||||||
|
this.status9.push(item)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.markstause()
|
this.markstause()
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
<view class="iconfont icon-xiangxia1"></view>
|
<view class="iconfont icon-xiangxia1"></view>
|
||||||
</view>
|
</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"
|
<view class="info_card" style="margin-top: 20rpx;" v-for="(item, index) in filteredList" :key="index"
|
||||||
@click.stop="todetail(item)">
|
@click.stop="todetail(item)">
|
||||||
<view class="info_tit" style="margin-left: 36rpx;">
|
<view class="info_tit" style="margin-left: 36rpx;">
|
||||||
|
|
@ -150,6 +150,7 @@ export default {
|
||||||
showdsc: false,
|
showdsc: false,
|
||||||
sctit: '从高到低',
|
sctit: '从高到低',
|
||||||
scidx: 'desc',
|
scidx: 'desc',
|
||||||
|
isRefreshing: false,
|
||||||
show: false,
|
show: false,
|
||||||
showtype: false,
|
showtype: false,
|
||||||
typeSort: 'remainingPower',
|
typeSort: 'remainingPower',
|
||||||
|
|
@ -220,7 +221,10 @@ export default {
|
||||||
filteredList: [],
|
filteredList: [],
|
||||||
areaId: 0,
|
areaId: 0,
|
||||||
pageNum:1,
|
pageNum:1,
|
||||||
total:''
|
total:'',
|
||||||
|
sousuoflag:true,
|
||||||
|
searchKeyword: '',
|
||||||
|
searchTimer: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad() {
|
onLoad() {
|
||||||
|
|
@ -273,19 +277,35 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 下拉刷新
|
||||||
// 搜索
|
onRefresh() {
|
||||||
|
this.isRefreshing = true
|
||||||
|
this.pageNum = 1
|
||||||
|
this.getDevice()
|
||||||
|
setTimeout(() => {
|
||||||
|
this.isRefreshing = false
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
search() {
|
search() {
|
||||||
// if (this.searchKeyword != '') {
|
// 清除之前的定时器
|
||||||
|
clearTimeout(this.searchTimer)
|
||||||
|
// 设置新的定时器(500ms后执行)
|
||||||
|
this.searchTimer = setTimeout(() => {
|
||||||
|
this.doSearch()
|
||||||
|
}, 500)
|
||||||
|
},
|
||||||
|
// 实际执行搜索的方法
|
||||||
|
doSearch() {
|
||||||
this.pageNum = 1
|
this.pageNum = 1
|
||||||
let data = {
|
let data = {
|
||||||
isAsc: this.scidx,
|
isAsc: this.scidx,
|
||||||
status: this.typeidx,
|
status: this.typeidx,
|
||||||
areaId: this.areaId,
|
areaId: this.areaId,
|
||||||
orderByColumn: this.typeSort,
|
orderByColumn: this.typeSort,
|
||||||
refresh:true,
|
refresh: true,
|
||||||
Keyword:this.searchKeyword
|
Keyword: this.searchKeyword
|
||||||
}
|
}
|
||||||
|
|
||||||
this.selectedItems = []
|
this.selectedItems = []
|
||||||
this.$u.get(`/bst/device/list?pageNum=${this.pageNum}&pageSize=999`, data).then((res) => {
|
this.$u.get(`/bst/device/list?pageNum=${this.pageNum}&pageSize=999`, data).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
|
@ -300,11 +320,34 @@ export default {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// } else {
|
|
||||||
// this.filteredList = this.deviceList;
|
|
||||||
// }
|
|
||||||
// console.log(this.filteredList)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// // 搜索
|
||||||
|
// 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) {
|
todetail(item) {
|
||||||
if (this.stepindex == 0) {
|
if (this.stepindex == 0) {
|
||||||
console.log(item.id,item);
|
console.log(item.id,item);
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
:default-time='pickertime'></u-picker>
|
:default-time='pickertime'></u-picker>
|
||||||
<u-picker mode="time" v-model="time2" :params="params" @confirm="confirm2"
|
<u-picker mode="time" v-model="time2" :params="params" @confirm="confirm2"
|
||||||
:default-time='pickertime'></u-picker>
|
: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="swiper-item ">
|
||||||
<view class="card" v-for="(item,index) in allList" :key="index" @click="toOrderDetail(item.deviceSn,item.id)">
|
<view class="card" v-for="(item,index) in allList" :key="index" @click="toOrderDetail(item.deviceSn,item.id)">
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
|
|
@ -112,7 +112,6 @@
|
||||||
开始时间:<span>无</span>
|
开始时间:<span>无</span>
|
||||||
</view>
|
</view>
|
||||||
<view class="half_info_li">
|
<view class="half_info_li">
|
||||||
<!-- 租赁时长:<span>{{computedList(item.duration)}}</span> -->
|
|
||||||
租赁时长:<span>{{formatDatess(item.startTime,item.endTime)}}</span>
|
租赁时长:<span>{{formatDatess(item.startTime,item.endTime)}}</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -168,6 +167,7 @@
|
||||||
showtk: false,
|
showtk: false,
|
||||||
orderInfo: {},
|
orderInfo: {},
|
||||||
initialValues: {},
|
initialValues: {},
|
||||||
|
isRefreshing: false,
|
||||||
areaId: false,
|
areaId: false,
|
||||||
tit: '车牌号',
|
tit: '车牌号',
|
||||||
shows: false,
|
shows: false,
|
||||||
|
|
@ -200,11 +200,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
// if (uni.getStorageSync('adminAreaid')) {
|
|
||||||
// this.areaId = uni.getStorageSync('adminAreaid')
|
|
||||||
// this.orderList()
|
|
||||||
// // this.getArea()
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
||||||
|
|
@ -231,6 +227,16 @@
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 下拉刷新
|
||||||
|
onRefresh() {
|
||||||
|
this.isRefreshing = true
|
||||||
|
this.pageNum = 1
|
||||||
|
this.orderList()
|
||||||
|
setTimeout(() => {
|
||||||
|
this.isRefreshing = false
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
|
||||||
formatPayedAmount(payedAmount, payRefunded, payRefunding) {
|
formatPayedAmount(payedAmount, payRefunded, payRefunding) {
|
||||||
if (!payedAmount) return '0.00元';
|
if (!payedAmount) return '0.00元';
|
||||||
|
|
||||||
|
|
@ -295,17 +301,6 @@
|
||||||
this.typeidx = e[0].value
|
this.typeidx = e[0].value
|
||||||
this.tit = e[0].label
|
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) {
|
toOrderDetail(id,orid) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/page_shanghu/guanli/order_detail?id=' + id + '&orid=' + orid
|
url: '/page_shanghu/guanli/order_detail?id=' + id + '&orid=' + orid
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,12 @@
|
||||||
客服设置
|
客服设置
|
||||||
</view>
|
</view>
|
||||||
</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">
|
<!-- <view class="cont" @click="btngggl">
|
||||||
<image src="https://api.ccttiot.com/smartmeter/img/static/ui8unTyOFXCkgier5F5P" mode=""></image>
|
<image src="https://api.ccttiot.com/smartmeter/img/static/ui8unTyOFXCkgier5F5P" mode=""></image>
|
||||||
<view class="text">
|
<view class="text">
|
||||||
|
|
@ -136,8 +142,8 @@
|
||||||
<view class="text">
|
<view class="text">
|
||||||
免责协议
|
免责协议
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
<view class="cont" @click="btnggsz">
|
<!-- <view class="cont" @click="btnggsz">
|
||||||
<image src="https://api.ccttiot.com/smartmeter/img/static/uov2297NuScFZayry0iH" mode=""></image>
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uov2297NuScFZayry0iH" mode=""></image>
|
||||||
<view class="text">
|
<view class="text">
|
||||||
广告设置
|
广告设置
|
||||||
|
|
@ -237,6 +243,12 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 点击进入视频教程
|
||||||
|
btnsp(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/page_user/shiping/index'
|
||||||
|
})
|
||||||
|
},
|
||||||
// 点击跳转到运维人员
|
// 点击跳转到运维人员
|
||||||
btnywry(){
|
btnywry(){
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
|
|
|
||||||
|
|
@ -1474,9 +1474,9 @@
|
||||||
|
|
||||||
.new_infocard{
|
.new_infocard{
|
||||||
width: 750rpx;
|
width: 750rpx;
|
||||||
height: 50vh;
|
height: 80vh;
|
||||||
overflow: scroll;
|
// overflow: scroll;
|
||||||
padding-bottom: 100rpx;
|
// padding-bottom: 100rpx;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
border-radius: 30rpx;
|
border-radius: 30rpx;
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
|
|
|
||||||
|
|
@ -125,8 +125,9 @@
|
||||||
车辆信息
|
车辆信息
|
||||||
</view>
|
</view>
|
||||||
<view class="card">
|
<view class="card">
|
||||||
<view class="pic_cont" v-for="(item,index) in processedOrderDeviceList" :key="index">
|
<view class="pic_cont" v-for="(item,index) in processedOrderDeviceList" :key="index" @click="btntz(item.deviceId)">
|
||||||
<view class="jilu">
|
<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 class="one" v-if="index == 0">
|
||||||
初始车辆
|
初始车辆
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -137,6 +138,8 @@
|
||||||
{{item.startTime == null ? '--' : item.startTime}}
|
{{item.startTime == null ? '--' : item.startTime}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<u-icon name="arrow-right" color="#4C97E7" size="28"></u-icon>
|
||||||
|
</view>
|
||||||
<view class="bianhao">
|
<view class="bianhao">
|
||||||
<view class="">
|
<view class="">
|
||||||
SN:<span>{{item.deviceSn == null ? '--' : item.deviceSn}}</span>
|
SN:<span>{{item.deviceSn == null ? '--' : item.deviceSn}}</span>
|
||||||
|
|
@ -334,6 +337,30 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="mask" v-if="tkflag"></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>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -346,7 +373,6 @@
|
||||||
return {
|
return {
|
||||||
devicesList: [],
|
devicesList: [],
|
||||||
searching: false,
|
searching: false,
|
||||||
texts: '正在扫描蓝牙设备...',
|
|
||||||
btnflag: true,
|
btnflag: true,
|
||||||
tishiflag: false,
|
tishiflag: false,
|
||||||
option: '',
|
option: '',
|
||||||
|
|
@ -417,7 +443,10 @@
|
||||||
|
|
||||||
currentPolyline:[],
|
currentPolyline:[],
|
||||||
trackPoints: [], // 存储轨迹点数据
|
trackPoints: [], // 存储轨迹点数据
|
||||||
tkje:true
|
tkje:true,
|
||||||
|
|
||||||
|
ddflag:false,
|
||||||
|
fuzhuobj:{}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(e) {
|
onLoad(e) {
|
||||||
|
|
@ -492,6 +521,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
btntz(id){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/page_shanghu/guanli/device_detail?id=' + id
|
||||||
|
})
|
||||||
|
},
|
||||||
formatSecondsToHMS(seconds) {
|
formatSecondsToHMS(seconds) {
|
||||||
const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
|
const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
|
||||||
const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
|
const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
|
||||||
|
|
@ -697,8 +731,54 @@
|
||||||
console.log(11);
|
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(){
|
btnfuzhu(){
|
||||||
|
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
|
let that = this
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
|
|
@ -716,8 +796,10 @@
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
duration: 2000
|
duration: 2000
|
||||||
})
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
that.deviceInfo()
|
that.deviceInfo()
|
||||||
that.getorderxq()
|
that.getorderxq()
|
||||||
|
},1500)
|
||||||
}else{
|
}else{
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: res.msg,
|
title: res.msg,
|
||||||
|
|
@ -731,6 +813,15 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg,
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 转换成时分秒
|
// 转换成时分秒
|
||||||
|
|
@ -1948,6 +2039,67 @@
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
background-color: #F3F3F3;
|
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{
|
.xingchengxx{
|
||||||
width: 750rpx;
|
width: 750rpx;
|
||||||
max-height: 99999rpx;
|
max-height: 99999rpx;
|
||||||
|
|
|
||||||
|
|
@ -150,13 +150,18 @@ export default {
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
uni.getLocation({
|
uni.getLocation({
|
||||||
type: 'wgs84',
|
type: 'gcj02', // 国内地图更兼容
|
||||||
|
isHighAccuracy: true,
|
||||||
|
accuracy:'best',
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
|
console.log('精确坐标:', res);
|
||||||
this.latitude = res.latitude
|
this.latitude = res.latitude
|
||||||
this.longitude = res.longitude
|
this.longitude = res.longitude
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
console.error('获取位置失败:', err)
|
console.error('获取位置失败:', err);
|
||||||
|
this.latitude = null
|
||||||
|
this.longitude = null
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
@ -236,6 +241,17 @@ export default {
|
||||||
xBlufi.notifySendCustomData({
|
xBlufi.notifySendCustomData({
|
||||||
customData: "11close@"
|
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(()=>{
|
setTimeout(()=>{
|
||||||
xBlufi.notifyConnectBle({
|
xBlufi.notifyConnectBle({
|
||||||
isStart: false,
|
isStart: false,
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@
|
||||||
<view class="name">
|
<view class="name">
|
||||||
身份证号 <input type="text" v-model="zfzh" placeholder="请填写身份证号" />
|
身份证号 <input type="text" v-model="zfzh" placeholder="请填写身份证号" />
|
||||||
</view>
|
</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 class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
|
||||||
您当前还未完成实名认证
|
您当前还未完成实名认证
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -31,9 +28,6 @@
|
||||||
<view class="name">
|
<view class="name">
|
||||||
身份证号 <input type="text" v-model="zfzh" :disabled="true" placeholder="请填写身份证号" />
|
身份证号 <input type="text" v-model="zfzh" :disabled="true" placeholder="请填写身份证号" />
|
||||||
</view>
|
</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 class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
|
||||||
您当前已完成实名认证
|
您当前已完成实名认证
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -52,7 +46,6 @@
|
||||||
bgc: {
|
bgc: {
|
||||||
backgroundColor: "",
|
backgroundColor: "",
|
||||||
},
|
},
|
||||||
tel:'',
|
|
||||||
name:'',
|
name:'',
|
||||||
zfzh:'',
|
zfzh:'',
|
||||||
isReal:false,
|
isReal:false,
|
||||||
|
|
@ -63,7 +56,6 @@
|
||||||
if(option.user){
|
if(option.user){
|
||||||
console.log(option);
|
console.log(option);
|
||||||
this.isReal = JSON.parse(option.user).isReal
|
this.isReal = JSON.parse(option.user).isReal
|
||||||
this.tel = JSON.parse(option.user).phonenumber
|
|
||||||
this.name = JSON.parse(option.user).realName
|
this.name = JSON.parse(option.user).realName
|
||||||
this.zfzh = JSON.parse(option.user).realIdCard
|
this.zfzh = JSON.parse(option.user).realIdCard
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +114,6 @@
|
||||||
let data = {
|
let data = {
|
||||||
userName:this.name,
|
userName:this.name,
|
||||||
idCard:this.zfzh,
|
idCard:this.zfzh,
|
||||||
// mobile:this.tel
|
|
||||||
}
|
}
|
||||||
this.$u.put(`/app/realName/twoElementRealName`,data).then(res =>{ //二要素
|
this.$u.put(`/app/realName/twoElementRealName`,data).then(res =>{ //二要素
|
||||||
if(res.code == 200){
|
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,
|
"enablePullDownRefresh": false,
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
"path": "shiping/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "上传",
|
||||||
|
"enablePullDownRefresh": false,
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
},{
|
},{
|
||||||
"path": "zhaoshang",
|
"path": "zhaoshang",
|
||||||
"style": {
|
"style": {
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,13 @@
|
||||||
车牌号:{{deivceobj.deviceVehicleNum == null ? '--' : deivceobj.deviceVehicleNum}}
|
车牌号:{{deivceobj.deviceVehicleNum == null ? '--' : deivceobj.deviceVehicleNum}}
|
||||||
<text>SN:{{deivceobj.deviceSn == null ? '--' : deivceobj.deviceSn}}</text>
|
<text>SN:{{deivceobj.deviceSn == null ? '--' : deivceobj.deviceSn}}</text>
|
||||||
</view>
|
</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"
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uFfCiqhjHpbTBXcZvKl6" class="ljimg"
|
||||||
mode=""></image>
|
mode=""></image> 已连接
|
||||||
</view>
|
</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"
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uO1TOFA1vdxQlz3NJenN" class="ljimg"
|
||||||
mode=""></image>
|
mode=""></image> 连接中...
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="dianliang">
|
<view class="dianliang">
|
||||||
|
|
@ -138,7 +138,7 @@
|
||||||
需支付<text>{{fajinobj.manageFee > 0 ? fajinobj.manageFee : fajinobj.dispatchFee > 0 ? fajinobj.dispatchFee : ''}}元</text>,你可查看<text
|
需支付<text>{{fajinobj.manageFee > 0 ? fajinobj.manageFee : fajinobj.dispatchFee > 0 ? fajinobj.dispatchFee : ''}}元</text>,你可查看<text
|
||||||
@click="btntcd">最近停车点</text>
|
@click="btntcd">最近停车点</text>
|
||||||
</view>
|
</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>
|
</image>
|
||||||
<view class="btnan">
|
<view class="btnan">
|
||||||
<view class="fj" @click="btnfajin">
|
<view class="fj" @click="btnfajin">
|
||||||
|
|
@ -217,7 +217,13 @@
|
||||||
name: '',
|
name: '',
|
||||||
kefuflag:false,
|
kefuflag:false,
|
||||||
kefulist:[],
|
kefulist:[],
|
||||||
ljflag:true
|
ljflag:true,
|
||||||
|
lslat:'',
|
||||||
|
lslon:'',
|
||||||
|
bluetoothData:{},
|
||||||
|
uploadTimer: null, // 定时器ID
|
||||||
|
lastUploadTime: 0, // 上次上传时间戳
|
||||||
|
isUploading: false // 上传状态锁
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
|
|
@ -252,7 +258,7 @@
|
||||||
// 启动每分钟(60秒)执行一次的定时器
|
// 启动每分钟(60秒)执行一次的定时器
|
||||||
this.timer = setInterval(() => {
|
this.timer = setInterval(() => {
|
||||||
this.executeTask();
|
this.executeTask();
|
||||||
}, 60000);
|
}, 30000);
|
||||||
xBlufi.notifyConnectBle({
|
xBlufi.notifyConnectBle({
|
||||||
isStart: false,
|
isStart: false,
|
||||||
deviceId: this.deviceId,
|
deviceId: this.deviceId,
|
||||||
|
|
@ -277,6 +283,10 @@
|
||||||
console.log('清除定时器2');
|
console.log('清除定时器2');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 组件销毁时清除定时器
|
||||||
|
beforeDestroy() {
|
||||||
|
clearTimeout(this.uploadTimer);
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 点击咨询客服
|
// 点击咨询客服
|
||||||
btnkefu(){
|
btnkefu(){
|
||||||
|
|
@ -322,6 +332,7 @@
|
||||||
if(this.ver_dataflag != 3){
|
if(this.ver_dataflag != 3){
|
||||||
console.log('离线离线');
|
console.log('离线离线');
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
|
console.log('11ly',this.ljflag);
|
||||||
if(this.ljflag == true){
|
if(this.ljflag == true){
|
||||||
this.ljflag = false
|
this.ljflag = false
|
||||||
this.findDevice()
|
this.findDevice()
|
||||||
|
|
@ -368,6 +379,8 @@
|
||||||
if (!options.result) {
|
if (!options.result) {
|
||||||
this.ver_dataflag = 1
|
this.ver_dataflag = 1
|
||||||
console.log(this.ver_dataflag,'断开断开');
|
console.log(this.ver_dataflag,'断开断开');
|
||||||
|
clearTimeout(this.uploadTimer) //清除每十秒传一次的定时
|
||||||
|
this.findDevice()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
||||||
|
|
@ -387,10 +400,14 @@
|
||||||
})
|
})
|
||||||
this.deviceid = options.data.deviceId
|
this.deviceid = options.data.deviceId
|
||||||
this.name = this.name
|
this.name = this.name
|
||||||
|
}else{
|
||||||
|
this.ver_dataflag = 1
|
||||||
|
this.ljflag = true
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||||||
console.log("1收到设备发来的自定义数据结果:", options.data)
|
console.log("1收到设备发来的自定义数据结果:", options.data)
|
||||||
|
this.getlysj(options.data)
|
||||||
break;
|
break;
|
||||||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
||||||
if (!options.result) {
|
if (!options.result) {
|
||||||
|
|
@ -402,9 +419,138 @@
|
||||||
break;
|
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关闭
|
// 点击启动and关闭
|
||||||
btnqd() {
|
btnqd() {
|
||||||
if (this.deivceobj.deviceLockStatus == 0) {
|
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
|
let that = this
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
|
|
@ -412,8 +558,60 @@
|
||||||
showCancel: true,
|
showCancel: true,
|
||||||
success: function(res) {
|
success: function(res) {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
that.$u.put(`/app/order/openDevice?orderId=${that.deivceobj.orderId}`).then((res) => {
|
let flag = ''
|
||||||
if (res.code == 200) {
|
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({
|
uni.showToast({
|
||||||
title: '解锁成功',
|
title: '解锁成功',
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
|
|
@ -421,20 +619,20 @@
|
||||||
})
|
})
|
||||||
that.deivceobj.deviceLockStatus = 1
|
that.deivceobj.deviceLockStatus = 1
|
||||||
that.getorderdevice()
|
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
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: '设备离线',
|
|
||||||
icon: 'none',
|
|
||||||
duration: 2000
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
} else if(res.code == 20001){
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: res.msg,
|
title: res.msg,
|
||||||
|
|
@ -450,25 +648,81 @@
|
||||||
})
|
})
|
||||||
} else if (this.deivceobj.deviceLockStatus == 1) {
|
} else if (this.deivceobj.deviceLockStatus == 1) {
|
||||||
uni.getLocation({
|
uni.getLocation({
|
||||||
type: 'wgs84',
|
type: 'gcj02', // 国内地图更兼容
|
||||||
|
isHighAccuracy: true,
|
||||||
|
accuracy:'best',
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
console.log(res);
|
console.log('精确坐标:', res);
|
||||||
this.lat = res.latitude
|
this.lat = res.latitude
|
||||||
this.lon = res.longitude
|
this.lon = res.longitude
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
console.error('获取位置失败:', err)
|
this.lat = null
|
||||||
|
this.lon = null
|
||||||
|
console.error('获取位置失败:', err);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
let that = this
|
let that = this
|
||||||
|
let flag = ''
|
||||||
|
if(that.ver_dataflag == 3){
|
||||||
|
flag = false
|
||||||
|
}else{
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
content: '您是否要临时锁车?',
|
content: '您是否要临时锁车?',
|
||||||
showCancel: true,
|
showCancel: true,
|
||||||
success: function(res) {
|
success: function(res) {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}&lat=${that.lat}&lon=${that.lon}`).then((res) => {
|
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}&lat=${that.lat}&lon=${that.lon}&requiredIot=${flag}`).then((res) => {
|
||||||
if (res.code == 200) {
|
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({
|
uni.showToast({
|
||||||
title: '临时锁车成功',
|
title: '临时锁车成功',
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
|
|
@ -476,20 +730,20 @@
|
||||||
})
|
})
|
||||||
that.deivceobj.deviceLockStatus = 0
|
that.deivceobj.deviceLockStatus = 0
|
||||||
that.getorderdevice()
|
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 {
|
|
||||||
uni.showToast({
|
|
||||||
title: '设备离线',
|
|
||||||
icon: 'none',
|
|
||||||
duration: 2000
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
} else if(res.code == 20001){
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: res.msg,
|
title: res.msg,
|
||||||
|
|
@ -520,10 +774,18 @@
|
||||||
customData: "11play1@"
|
customData: "11play1@"
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
let that = this
|
||||||
title: '设备离线',
|
uni.showModal({
|
||||||
icon: 'none',
|
title: '提示',
|
||||||
duration: 2000
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -543,10 +805,18 @@
|
||||||
url: '/page_user/huanbike?sn=' + this.deivceobj.deviceSn + '&orderid=' + this.deivceobj.orderId + '&deviceid=' + this.deviceid + '&devicename=' + this.devicename
|
url: '/page_user/huanbike?sn=' + this.deivceobj.deviceSn + '&orderid=' + this.deivceobj.orderId + '&deviceid=' + this.deviceid + '&devicename=' + this.devicename
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
uni.showToast({
|
let that = this
|
||||||
title: "设备离线,暂不支持换车",
|
uni.showModal({
|
||||||
icon: 'none',
|
title: '提示',
|
||||||
duration: 2000
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -557,16 +827,16 @@
|
||||||
},
|
},
|
||||||
// 每过一分钟去请求车辆最新状态
|
// 每过一分钟去请求车辆最新状态
|
||||||
executeTask() {
|
executeTask() {
|
||||||
this.counter++;
|
this.counter++
|
||||||
console.log(`定时执行第 ${this.counter} 次`, );
|
console.log(`定时执行第 ${this.counter} 次`, )
|
||||||
// 这里替换为你的实际业务逻辑
|
// 这里替换为你的实际业务逻辑
|
||||||
this.getorderdevice()
|
this.getorderdevice()
|
||||||
},
|
},
|
||||||
// 安全清除定时器
|
// 安全清除定时器
|
||||||
clearTimer() {
|
clearTimer() {
|
||||||
if (this.timer) {
|
if (this.timer) {
|
||||||
clearInterval(this.timer);
|
clearInterval(this.timer)
|
||||||
this.timer = null;
|
this.timer = null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 点击缴纳罚金继续还车
|
// 点击缴纳罚金继续还车
|
||||||
|
|
@ -587,6 +857,7 @@
|
||||||
uni.getLocation({
|
uni.getLocation({
|
||||||
type: 'gcj02', // 国内地图更兼容
|
type: 'gcj02', // 国内地图更兼容
|
||||||
isHighAccuracy: true,
|
isHighAccuracy: true,
|
||||||
|
accuracy:'best',
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
console.log('精确坐标:', res);
|
console.log('精确坐标:', res);
|
||||||
this.lat = res.latitude;
|
this.lat = res.latitude;
|
||||||
|
|
@ -595,8 +866,9 @@
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
console.error('获取位置失败:', err);
|
console.error('获取位置失败:', err);
|
||||||
uni.showToast({ title: '定位失败,请重试', icon: 'none' });
|
this.lat = null
|
||||||
this.getfeiyong(); // 降级处理
|
this.lon = null
|
||||||
|
this.getfeiyong() // 降级处理
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -661,10 +933,17 @@
|
||||||
gethuan() {
|
gethuan() {
|
||||||
if(this.deivceobj.deviceOnlineStatus == 0){
|
if(this.deivceobj.deviceOnlineStatus == 0){
|
||||||
if(this.ver_dataflag != 3){
|
if(this.ver_dataflag != 3){
|
||||||
uni.showToast({
|
uni.showModal({
|
||||||
title: '设备离线',
|
title: '提示',
|
||||||
icon: 'success',
|
content: '设备未连接,请靠近车辆等待连接',
|
||||||
duration: 2000
|
showCancel: false,
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
} else if (res.cancel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
let that = this
|
let that = this
|
||||||
|
|
@ -699,8 +978,24 @@
|
||||||
customData: "11close@"
|
customData: "11close@"
|
||||||
})
|
})
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
|
xBlufi.notifyConnectBle({
|
||||||
|
isStart: false,
|
||||||
|
deviceId: that.deviceId,
|
||||||
|
name: that.name
|
||||||
|
})
|
||||||
that.getorderdevice()
|
that.getorderdevice()
|
||||||
},1000)
|
},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) {
|
}else if(res.msg == null) {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
|
|
@ -751,10 +1046,15 @@
|
||||||
})
|
})
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
that.getorderdevice()
|
that.getorderdevice()
|
||||||
|
xBlufi.notifyConnectBle({
|
||||||
|
isStart: false,
|
||||||
|
deviceId: that.deviceId,
|
||||||
|
name: that.name
|
||||||
|
})
|
||||||
},1000)
|
},1000)
|
||||||
}else{
|
}else{
|
||||||
xBlufi.notifySendCustomData({
|
xBlufi.notifySendCustomData({
|
||||||
customData: "11close@"
|
customData: "11llose@"
|
||||||
})
|
})
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
that.getorderdevice()
|
that.getorderdevice()
|
||||||
|
|
@ -948,25 +1248,25 @@
|
||||||
width: 252rpx;
|
width: 252rpx;
|
||||||
height: 72rpx;
|
height: 72rpx;
|
||||||
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
||||||
border: 2rpx solid #808080;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #808080;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 72rpx;
|
line-height: 72rpx;
|
||||||
|
background: #4C97E7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.qx {
|
.qx {
|
||||||
width: 252rpx;
|
width: 252rpx;
|
||||||
height: 72rpx;
|
height: 72rpx;
|
||||||
background: #4C97E7;
|
|
||||||
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
border-radius: 45rpx 45rpx 45rpx 45rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 72rpx;
|
line-height: 72rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #FFFFFF;
|
color: #808080;
|
||||||
|
border: 2rpx solid #808080;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1277,6 +1577,7 @@
|
||||||
.ljimg {
|
.ljimg {
|
||||||
width: 60rpx;
|
width: 60rpx;
|
||||||
height: 60rpx;
|
height: 60rpx;
|
||||||
|
margin-right: 10rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user