From 0ff5c2f63953dffa2e070a37c280f42bc3158adb Mon Sep 17 00:00:00 2001
From: "3321822538@qq.com" <3321822538@qq.com>
Date: Fri, 16 May 2025 17:52:35 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=8A=A8=E8=BD=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/http.interceptor.js | 2 +-
components/network-status/network-status.vue | 53 ++
novel/万神之主.txt | 641 -------------------
page_fenbao/index.vue | 2 +-
page_fenbao/storedlist/trueorder.vue | 99 ++-
page_shanghu/admin_index.vue | 48 +-
page_shanghu/gongzuotai/woke_deviceMgmt.vue | 109 +++-
page_shanghu/guanli/admin_order.vue | 31 +-
page_shanghu/guanli/admin_worke.vue | 16 +-
page_shanghu/guanli/device_detail.vue | 6 +-
page_shanghu/guanli/order_detail.vue | 230 +++++--
page_user/huanbike.vue | 32 +-
page_user/shiming.vue | 9 -
page_user/shiping/index.vue | 50 ++
pages.json | 7 +
pages/myorder/returned/index.vue | 453 ++++++++++---
16 files changed, 930 insertions(+), 858 deletions(-)
create mode 100644 components/network-status/network-status.vue
delete mode 100644 novel/万神之主.txt
create mode 100644 page_user/shiping/index.vue
diff --git a/common/http.interceptor.js b/common/http.interceptor.js
index 5bb7f9b..5754c98 100644
--- a/common/http.interceptor.js
+++ b/common/http.interceptor.js
@@ -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: '努力加载中~',
diff --git a/components/network-status/network-status.vue b/components/network-status/network-status.vue
new file mode 100644
index 0000000..1f38150
--- /dev/null
+++ b/components/network-status/network-status.vue
@@ -0,0 +1,53 @@
+
+
+
+ 当前无网络连接
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/novel/万神之主.txt b/novel/万神之主.txt
deleted file mode 100644
index e74cb90..0000000
--- a/novel/万神之主.txt
+++ /dev/null
@@ -1,641 +0,0 @@
-《万神之主》
-
-【故事大纲】
-
-第一章:平凡少年
-- 主角林玄,一个普通山村少年
-- 意外获得上古神物"轮回珠"
-- 觉醒特殊体质"混沌神体"
-- 开始踏上修炼之路
-
-第二章:初入江湖
-- 进入青云宗修炼
-- 结识红颜知己苏清月
-- 获得第一件神器"天玄剑"
-- 突破筑基期
-
-第三章:秘境奇遇
-- 进入上古秘境"神魔战场"
-- 获得上古神兽"九尾天狐"认主
-- 习得绝世功法"混沌神诀"
-- 突破金丹期
-
-第四章:宗门大比
-- 在宗门大比中一鸣惊人
-- 击败宗门天才
-- 获得进入核心弟子资格
-- 结识神秘老者
-
-第五章:神魔之战
-- 卷入神魔两界大战
-- 获得神界传承
-- 突破元婴期
-- 建立自己的势力
-
-第六章:万界争霸
-- 统一下界
-- 飞升上界
-- 建立神国
-- 突破化神期
-
-第七章:轮回之谜
-- 探索轮回奥秘
-- 领悟时间法则
-- 突破渡劫期
-- 成就真神之位
-
-第八章:隐居世俗
-- 厌倦神界纷争
-- 隐居人间
-- 感悟人生百态
-- 寻找新的突破
-
-第九章:再造巅峰
-- 领悟大道真谛
-- 突破神王境
-- 创造新的神话
-- 成为万神之主
-
-【开篇章节】
-
-第一章:轮回珠现
-
-"轰!"
-
-一声巨响,打破了山村的宁静。
-
-林玄从睡梦中惊醒,揉了揉惺忪的睡眼。窗外,一道金光划破夜空,坠落在村后的山林中。
-
-"那是什么?"林玄心中一动,披上外衣,悄悄溜出家门。
-
-月光如水,洒在山间小路上。林玄循着金光坠落的方向,来到一处幽深的山谷。
-
-山谷中央,一颗散发着淡淡金光的珠子静静躺在那里。珠子通体晶莹,内部似有星辰流转,神秘莫测。
-
-"这是..."林玄小心翼翼地捡起珠子。
-
-就在他触碰到珠子的瞬间,一股浩瀚的信息涌入脑海。
-
-"轮回珠,上古神物,可助人领悟轮回真谛..."
-
-林玄只觉得体内一股暖流涌动,全身经脉仿佛被重新塑造,一股前所未有的力量在体内流转。
-
-"这是...混沌神体?"林玄震惊地感受着身体的变化。
-
-就在这时,远处传来一阵脚步声。
-
-"有人来了!"林玄连忙将轮回珠藏入怀中,转身就要离开。
-
-"站住!"一个阴冷的声音响起。
-
-林玄回头,只见三个黑衣人站在不远处,目光阴鸷地盯着他。
-
-"小子,把轮回珠交出来,饶你不死!"为首的黑衣人冷冷道。
-
-林玄心中一紧,但很快镇定下来。他感受到体内新生的力量,嘴角露出一丝冷笑。
-
-"想要轮回珠?那就看你们有没有这个本事了!"
-
-话音未落,林玄身形一闪,主动向黑衣人冲去。
-
-这一夜,注定是一个不平凡的夜晚。一个普通少年的命运,就此改变。
-
-第二章:初入江湖
-
-林玄与三个黑衣人的战斗,在山谷中掀起一阵狂风。
-
-"这小子有古怪!"为首的黑衣人惊呼。
-
-林玄只觉体内力量源源不断,每一拳都带着混沌之力。三个黑衣人虽然修为不弱,但在混沌神体的压制下,渐渐落入下风。
-
-"撤!"黑衣人见势不妙,转身就要逃走。
-
-"想走?"林玄冷笑一声,体内轮回珠微微震动,一道金光射出,直接将三个黑衣人定在原地。
-
-"这是...轮回之力?"黑衣人惊恐万分。
-
-林玄没有理会他们的求饶,直接了结了三人。他知道,从获得轮回珠的那一刻起,自己就已经卷入了一个巨大的漩涡。
-
-回到家中,林玄开始研究轮回珠的奥秘。珠子中蕴含的信息告诉他,想要真正掌握轮回珠的力量,需要进入修炼宗门。
-
-"青云宗..."林玄喃喃自语。
-
-三日后,林玄告别父母,踏上了前往青云宗的路。
-
-青云宗位于青云山脉之巅,是方圆千里内最大的修炼宗门。林玄跋山涉水,终于来到山门前。
-
-"来者何人?"守门弟子拦住林玄。
-
-"在下林玄,特来拜师学艺。"林玄恭敬道。
-
-"就凭你?"守门弟子不屑地打量着他,"青云宗可不是什么人都能进的。"
-
-林玄微微一笑,体内混沌之力微微释放。守门弟子顿时脸色大变,连忙去通报。
-
-不多时,一位白发老者飘然而至。
-
-"混沌神体?"老者眼中精光一闪,"有意思,随我来吧。"
-
-老者是青云宗大长老,名为苏青云。他看出林玄的不凡,直接收为亲传弟子。
-
-在青云宗的日子,林玄刻苦修炼。有轮回珠相助,他的修为一日千里。
-
-这一日,林玄正在后山修炼,忽然听到一阵琴声。循声而去,只见一位白衣女子正在抚琴。
-
-"好美的琴声。"林玄赞叹道。
-
-女子抬头,露出一张倾国倾城的容颜。
-
-"在下苏清月,不知公子如何称呼?"
-
-"林玄。"
-
-两人相谈甚欢,苏清月是青云宗宗主的女儿,琴棋书画样样精通,修为也不弱。
-
-"林师弟,听说你获得了天玄剑的认可?"苏清月问道。
-
-林玄点头。天玄剑是青云宗镇宗之宝,只有得到剑灵认可的人才能使用。
-
-"那真是太好了,有了天玄剑,你的实力会更上一层楼。"
-
-就在两人交谈时,远处传来一阵骚动。
-
-"不好,是魔教的人!"苏清月脸色一变。
-
-林玄握紧天玄剑,眼中战意盎然。
-
-"清月师姐,我们一起上!"
-
-这一战,林玄展现出惊人的实力。天玄剑在手,配合混沌神体,所向披靡。
-
-战后,林玄成功突破筑基期,成为青云宗年轻一代的翘楚。
-
-"林师弟,你的天赋真是惊人。"苏清月赞叹道。
-
-林玄微微一笑,心中却明白,这只是开始。轮回珠的秘密,还有更多等待他去探索。
-
-第三章:秘境奇遇
-
-青云宗后山,一处隐秘的山洞中。
-
-"林师弟,你真的要进入神魔战场?"苏清月担忧地看着林玄。
-
-"嗯,轮回珠指引我,那里有我需要的东西。"林玄坚定地说。
-
-神魔战场是上古时期神魔大战的遗迹,危险重重,但机缘也很多。林玄在轮回珠的指引下,发现了一处通往战场的入口。
-
-"我陪你一起去。"苏清月说道。
-
-林玄摇头:"太危险了,我一个人去就好。"
-
-告别苏清月,林玄踏入山洞。洞内幽深,空气中弥漫着古老的气息。轮回珠在胸前微微发光,指引着方向。
-
-不知走了多久,眼前豁然开朗。一片荒芜的战场出现在眼前,残破的兵器散落一地,空气中还残留着当年大战的余威。
-
-"这就是神魔战场..."林玄感叹道。
-
-突然,轮回珠剧烈震动,指向战场深处。林玄循着指引,来到一座残破的神殿前。
-
-神殿中央,一尊九尾天狐的雕像栩栩如生。
-
-"人类,你终于来了。"一个空灵的声音响起。
-
-林玄一惊,只见雕像竟然活了过来,化作一只通体雪白的九尾天狐。
-
-"我是上古神兽九尾天狐,等待有缘人已经千年。"天狐说道,"轮回珠选择了你,说明你就是我要等的人。"
-
-"前辈..."林玄恭敬行礼。
-
-"不必多礼,从今以后,你就是我的主人。"天狐说着,化作一道白光没入林玄体内。
-
-林玄只觉体内多了一股强大的力量,与混沌神体完美融合。
-
-"这是混沌神诀,上古最强功法。"天狐的声音在脑海中响起。
-
-林玄盘膝而坐,开始修炼混沌神诀。功法运转,体内力量不断攀升。
-
-不知过了多久,林玄睁开眼,眼中精光闪烁。
-
-"金丹期!"他惊喜地发现,自己竟然直接突破到了金丹期。
-
-就在这时,神殿深处传来一阵异动。
-
-"不好,是魔气!"天狐提醒道。
-
-林玄握紧天玄剑,警惕地看着前方。一个浑身笼罩在黑雾中的身影缓缓走出。
-
-"桀桀,终于等到你了,轮回珠的持有者。"黑影阴笑道。
-
-"你是谁?"林玄冷声问道。
-
-"我是魔界使者,奉命来取轮回珠。"黑影说着,突然出手。
-
-林玄早有准备,天玄剑一挥,混沌之力爆发。两人战在一起,打得天昏地暗。
-
-"混沌神诀,第一式!"林玄大喝一声,体内力量爆发,直接将黑影击退。
-
-"不可能!你怎么会混沌神诀?"黑影惊恐万分。
-
-林玄没有给他喘息的机会,又是一剑斩出。黑影惨叫一声,化作黑雾消散。
-
-"这只是开始,魔界不会善罢甘休的。"天狐提醒道。
-
-林玄点头,他知道,更大的挑战还在后面。但有了九尾天狐和混沌神诀,他更有信心面对未来的挑战。
-
-离开神魔战场,林玄回到青云宗。苏清月见到他平安归来,欣喜不已。
-
-"林师弟,你突破了?"她惊讶地发现林玄的气息更加强大。
-
-林玄点头,将秘境中的经历简单说了一遍。
-
-"太好了,有了这些机缘,你在宗门大比中一定能大放异彩。"苏清月笑道。
-
-林玄看着远方,眼中闪烁着坚定的光芒。他知道,自己的修炼之路才刚刚开始。
-
-第四章:宗门大比
-
-青云宗演武场,人声鼎沸。
-
-三年一度的宗门大比如期而至,所有弟子都摩拳擦掌,准备一展身手。
-
-"林师弟,这次大比,你可要小心。"苏清月叮嘱道,"听说这次有不少天才弟子参加。"
-
-林玄点头:"放心,我不会大意的。"
-
-大比开始,林玄一路过关斩将,轻松晋级。他的表现引起了宗门高层的注意。
-
-"此子不简单啊。"宗主苏青云看着场中的林玄,眼中闪过一丝赞赏。
-
-半决赛,林玄的对手是宗门第一天才,号称"青云剑"的赵无极。
-
-"林玄,听说你获得了天玄剑的认可?"赵无极冷笑道,"可惜,在我面前,你什么都不是。"
-
-林玄淡然一笑:"是吗?那就让我见识见识你的实力。"
-
-两人交手,剑气纵横。赵无极的剑法确实了得,但林玄有混沌神体加持,丝毫不落下风。
-
-"混沌神诀,第二式!"林玄突然变招,体内力量爆发。
-
-赵无极大惊,连忙后退,但还是被剑气所伤。
-
-"不可能!"他难以置信地看着林玄,"你怎么会这么强?"
-
-林玄没有回答,又是一剑斩出。赵无极败退,林玄晋级决赛。
-
-决赛对手是宗门大长老的亲传弟子,号称"青云第一人"的李天阳。
-
-"林玄,你的表现让我很意外。"李天阳说道,"不过,到此为止了。"
-
-林玄感受到对方强大的气息,知道这是一场硬仗。
-
-两人交手,打得天昏地暗。李天阳的修为确实深厚,但林玄有九尾天狐相助,渐渐占据上风。
-
-"混沌神诀,第三式!"林玄大喝一声,体内力量爆发到极致。
-
-李天阳被这一击震退,脸色苍白。
-
-"我认输。"他苦笑道,"林师弟,你赢了。"
-
-全场哗然,谁也没想到,一个刚入门不久的弟子,竟然能夺得大比第一。
-
-"林玄,你很不错。"宗主苏青云亲自为林玄颁奖,"从今天起,你就是核心弟子了。"
-
-林玄恭敬行礼:"多谢宗主。"
-
-就在这时,一位神秘老者突然出现在场中。
-
-"好一个天才少年。"老者笑道,"老夫观你天赋异禀,可愿随我修行?"
-
-林玄感受到老者深不可测的气息,知道这是一位高人。
-
-"前辈是?"他问道。
-
-"老夫乃天机老人,专门寻找有缘人。"老者说道,"你的轮回珠,与我有缘。"
-
-林玄心中一动,看来这位老者知道轮回珠的秘密。
-
-"弟子愿意。"他恭敬道。
-
-"好,三日后,我在后山等你。"老者说完,飘然而去。
-
-大比结束,林玄成为宗门最耀眼的新星。但他知道,更大的机缘在等着他。
-
-"林师弟,恭喜你。"苏清月笑道。
-
-林玄点头:"清月师姐,我要离开一段时间。"
-
-"我知道,去吧,我等你回来。"苏清月眼中闪过一丝不舍。
-
-林玄看着远方,心中充满期待。天机老人的出现,或许会给他带来新的机遇。
-
-第五章:神魔之战
-
-三日后,林玄如约来到后山。
-
-天机老人早已等候多时,见到林玄,满意地点点头。
-
-"很好,你来了。"老人说道,"随我来吧。"
-
-两人来到一处隐秘的山洞,洞内别有洞天。
-
-"这里是天机阁,我的修炼之地。"老人介绍道,"从今天起,你就在这里修炼。"
-
-林玄点头,开始跟随天机老人学习。老人传授他许多上古秘术,让他的实力更上一层楼。
-
-这一日,天机老人突然神色凝重。
-
-"林玄,大事不好了。"老人说道,"魔界大军已经攻入神界,神魔之战即将爆发。"
-
-林玄一惊:"前辈,我们该怎么办?"
-
-"轮回珠是上古神物,与神界有莫大关联。"老人说道,"你必须前往神界,助神族一臂之力。"
-
-林玄点头:"弟子明白。"
-
-告别天机老人,林玄回到青云宗,向宗主说明情况。
-
-"去吧,这是你的使命。"苏青云说道,"青云宗永远是你的后盾。"
-
-林玄又找到苏清月,两人依依惜别。
-
-"清月师姐,等我回来。"林玄说道。
-
-"一定要平安回来。"苏清月眼中含泪。
-
-林玄点头,转身离去。他来到一处古老的传送阵,这是通往神界的通道。
-
-传送阵启动,林玄只觉眼前一花,已经来到神界。
-
-神界一片混乱,到处都是战斗的痕迹。林玄循着轮回珠的指引,来到神界中心。
-
-"来者何人?"一位神将拦住林玄。
-
-"在下林玄,特来助神界一臂之力。"林玄说道。
-
-神将感受到林玄体内强大的气息,知道他不是普通人。
-
-"随我来。"神将说道。
-
-林玄被带到神王面前。神王是一位威严的中年人,看到林玄,眼中闪过一丝惊讶。
-
-"轮回珠的持有者?"神王问道。
-
-林玄点头:"正是。"
-
-"很好,有了轮回珠,我们就有希望了。"神王说道,"魔界大军即将攻来,你做好准备。"
-
-林玄点头,开始准备战斗。他感受到体内轮回珠的力量,知道这是自己的使命。
-
-不久,魔界大军果然攻来。林玄站在城墙上,看着黑压压的魔军,心中毫无畏惧。
-
-"混沌神诀,第四式!"林玄大喝一声,体内力量爆发。
-
-他冲入魔军之中,所向披靡。天玄剑在手,配合混沌神体,无人能挡。
-
-"那是谁?"魔界统帅惊讶地看着林玄。
-
-"是轮回珠的持有者!"有魔将惊呼。
-
-林玄一路杀到魔界统帅面前,两人展开激战。
-
-"混沌神诀,第五式!"林玄再次爆发,直接将魔界统帅击退。
-
-魔界大军见统帅败退,士气大减。神界趁机反攻,终于击退了魔界大军。
-
-战后,神王亲自接见林玄。
-
-"林玄,你立下大功,我代表神界感谢你。"神王说道。
-
-林玄摇头:"这是我应该做的。"
-
-"从今以后,你就是神界的守护者。"神王说道,"这是神界传承,希望你能好好利用。"
-
-林玄接过传承,感受到一股强大的力量涌入体内。
-
-"元婴期!"他惊喜地发现,自己竟然突破到了元婴期。
-
-神王满意地点头:"你的潜力无限,未来或许能成为神界之主。"
-
-林玄心中一动,他知道,自己的使命才刚刚开始。
-
-第六章:万界争霸
-
-神界之战后,林玄的名声传遍万界。
-
-"林玄,你现在的实力,已经可以统一下界了。"神王说道。
-
-林玄点头,他知道这是自己的使命。他回到下界,开始统一之路。
-
-青云宗成为他的第一个目标。宗主苏青云见到林玄归来,欣喜不已。
-
-"林玄,你回来了。"苏青云说道。
-
-林玄点头:"宗主,我这次回来,是要统一下界。"
-
-苏青云一愣,随即笑道:"好,青云宗全力支持你。"
-
-有了青云宗的支持,林玄开始征战四方。他凭借强大的实力,很快统一了下界各大宗门。
-
-"林玄,你的实力已经达到化神期,可以飞升上界了。"九尾天狐提醒道。
-
-林玄点头,开始准备飞升。他来到一处古老的祭坛,这是飞升的通道。
-
-"清月师姐,我要飞升了。"林玄找到苏清月,说道。
-
-苏清月眼中含泪:"去吧,我等你回来。"
-
-林玄点头,转身踏上祭坛。祭坛启动,一道金光冲天而起。
-
-林玄只觉眼前一花,已经来到上界。
-
-上界比下界更加广阔,强者如云。林玄开始在上界建立自己的势力。
-
-"混沌神国,从今天起,正式成立。"林玄站在新建的宫殿前,宣布道。
-
-混沌神国很快成为上界最强大的势力之一。林玄的实力也在不断提升,终于突破到化神期。
-
-"林玄,你的实力已经达到化神期巅峰,可以尝试突破到渡劫期了。"神王的声音在脑海中响起。
-
-林玄点头,开始准备突破。他来到一处隐秘的山洞,开始闭关。
-
-闭关期间,林玄不断参悟轮回珠的奥秘。他感受到,轮回珠中蕴含着更加强大的力量。
-
-"混沌神诀,第六式!"林玄大喝一声,体内力量爆发到极致。
-
-一股强大的力量从体内涌出,林玄成功突破到渡劫期。
-
-"太好了!"九尾天狐欣喜道,"你现在已经是上界最强者之一了。"
-
-林玄点头,但他知道,自己的目标不止于此。他要成为万界之主,创造新的神话。
-
-"混沌神国,从今天起,正式向其他势力宣战。"林玄站在宫殿前,宣布道。
-
-混沌神国的军队开始征战四方,所向披靡。林玄亲自出手,击败了一个又一个强大的对手。
-
-"林玄,你的实力已经达到渡劫期巅峰,可以尝试突破到真神之位了。"神王的声音再次响起。
-
-林玄点头,开始准备最后的突破。他知道,这将是他修炼之路上的最大挑战。
-
-第七章:轮回之谜
-
-林玄站在混沌神国的最高处,仰望星空。
-
-"轮回珠,你到底隐藏着什么秘密?"他喃喃自语。
-
-自从突破到渡劫期后,林玄就感受到轮回珠中有一股神秘的力量在召唤他。
-
-"主人,我感受到轮回珠中有时间法则的气息。"九尾天狐说道。
-
-林玄点头,开始参悟轮回珠中的奥秘。他盘膝而坐,心神沉入轮回珠中。
-
-轮回珠中,仿佛有一个无尽的世界。林玄看到无数画面在眼前闪过,那是过去、现在、未来的片段。
-
-"这就是轮回的奥秘吗?"林玄心中一动。
-
-他开始尝试掌控这些画面,领悟时间法则。这是一个漫长的过程,需要极大的耐心和悟性。
-
-不知过了多久,林玄终于有所领悟。
-
-"时间法则,原来如此。"他睁开眼睛,眼中闪烁着智慧的光芒。
-
-就在这时,轮回珠突然剧烈震动,一道金光冲天而起。
-
-"这是...真神之位的召唤?"林玄惊讶道。
-
-他感受到一股强大的力量在召唤他,那是真神之位的考验。
-
-"主人,你要小心。"九尾天狐提醒道。
-
-林玄点头,开始准备接受考验。他来到一处古老的祭坛,这是真神之位的考验之地。
-
-祭坛上,一位神秘的老者出现。
-
-"林玄,你终于来了。"老者说道。
-
-"前辈是?"林玄问道。
-
-"我是轮回之主,掌管轮回法则。"老者说道,"你的表现让我很满意,现在,接受最后的考验吧。"
-
-林玄点头,开始接受考验。考验分为三关:过去、现在、未来。
-
-第一关,林玄回到过去,重新经历自己的人生。他看到了自己的成长,也看到了自己的不足。
-
-第二关,林玄面对现在的自己,需要战胜内心的恐惧和欲望。
-
-第三关,林玄看到未来的自己,那是一个站在万界之巅的强者。
-
-"很好,你通过了考验。"轮回之主满意地点头,"从今天起,你就是新的轮回之主。"
-
-林玄感受到一股强大的力量涌入体内,那是真神之位的力量。
-
-"真神之位!"他惊喜地发现,自己终于突破到了真神之位。
-
-"林玄,你的使命才刚刚开始。"轮回之主说道,"轮回的奥秘,还有更多等待你去探索。"
-
-林玄点头,他知道,自己的修炼之路还很长。但他有信心,能够走得更远。
-
-第八章:隐居世俗
-
-成就真神之位后,林玄站在万界之巅,俯瞰众生。
-
-"主人,你现在已经是万界最强者了。"九尾天狐说道。
-
-林玄点头,但他心中却有一丝疲惫。多年的征战,让他感到厌倦。
-
-"我想休息一段时间。"林玄说道。
-
-他决定隐居世俗,体验平凡的生活。他来到一个普通的小镇,化名"林先生",开了一家小茶馆。
-
-"林先生,您的茶真好喝。"镇上的居民称赞道。
-
-林玄微笑点头,享受着这种平静的生活。他开始观察普通人的生活,感受他们的喜怒哀乐。
-
-"原来,平凡的生活也有它的美好。"林玄感叹道。
-
-他结识了许多朋友,听他们讲述生活中的故事。这些故事让他对人生有了新的感悟。
-
-"林先生,您看起来不像普通人。"一位老者说道。
-
-林玄笑而不语,继续泡茶。他知道,自己的身份迟早会暴露,但他并不在意。
-
-这一日,小镇上来了一群不速之客。
-
-"听说这里有一位高人,我们特来拜访。"为首的人说道。
-
-林玄抬头,看到对方身上散发着强大的气息,知道他们是修炼者。
-
-"我就是你们要找的人。"林玄说道。
-
-对方一愣,随即恭敬行礼:"前辈,我们是来请教修炼之道的。"
-
-林玄点头,开始指点他们。他发现自己虽然隐居,但修炼之心从未改变。
-
-"修炼之道,重在修心。"林玄说道,"只有心静,才能看清自己的路。"
-
-对方若有所思,感激地离开。
-
-林玄继续过着平静的生活,但他知道,自己的使命还未完成。他开始思考,如何将修炼之道与平凡生活结合。
-
-"或许,这就是新的突破。"他喃喃自语。
-
-第九章:再造巅峰
-
-隐居的日子一天天过去,林玄的心境越来越平和。
-
-"主人,你似乎找到了新的方向。"九尾天狐说道。
-
-林玄点头:"是的,我明白了修炼的真谛。"
-
-他开始尝试将修炼之道与平凡生活结合,创造出一种新的修炼方式。
-
-"修炼不在高处,而在心中。"林玄说道。
-
-这一日,他来到一处山顶,仰望星空。
-
-"轮回珠,是时候了。"他喃喃自语。
-
-轮回珠在胸前微微发光,似乎在回应他。林玄开始最后的突破。
-
-"混沌神诀,第七式!"他大喝一声,体内力量爆发到极致。
-
-一股强大的力量从体内涌出,林玄成功突破到神王境。
-
-"神王境!"他惊喜地发现,自己终于达到了修炼的巅峰。
-
-就在这时,天空中出现一道金光,一位神秘的老者出现。
-
-"林玄,你终于领悟了大道真谛。"老者说道。
-
-"前辈是?"林玄问道。
-
-"我是大道之主,掌管万界法则。"老者说道,"你的表现让我很满意,现在,接受最后的考验吧。"
-
-林玄点头,开始接受考验。考验很简单,只需要回答一个问题。
-
-"什么是修炼的真谛?"老者问道。
-
-林玄沉思片刻,说道:"修炼的真谛,在于修心。心静则明,心明则通。修炼不在高处,而在心中。"
-
-老者满意地点头:"很好,你通过了考验。从今天起,你就是新的万神之主。"
-
-林玄感受到一股强大的力量涌入体内,那是万神之主的力量。
-
-"万神之主!"他惊喜地发现,自己终于成为了万界最强者。
-
-"林玄,你的使命才刚刚开始。"大道之主说道,"万界的未来,就交给你了。"
-
-林玄点头,他知道,自己的责任重大。但他有信心,能够带领万界走向更美好的未来。
-
-回到小镇,林玄继续开着他的小茶馆。但他知道,自己已经不再是普通人。
-
-"林先生,您的茶真好喝。"镇上的居民称赞道。
-
-林玄微笑点头,享受着这种平静的生活。他知道,这就是他想要的。
-
-"修炼之道,重在修心。"他说道,"只有心静,才能看清自己的路。"
-
-从此,林玄成为了万界的传说。他的故事被传颂千古,激励着无数修炼者。
-
-而他,依然在那座小镇上,开着他的小茶馆,过着平凡而充实的生活。
-
-【全文完】
\ No newline at end of file
diff --git a/page_fenbao/index.vue b/page_fenbao/index.vue
index e56fbc4..1f2da35 100644
--- a/page_fenbao/index.vue
+++ b/page_fenbao/index.vue
@@ -13,7 +13,7 @@
-
+
确认开锁
diff --git a/page_fenbao/storedlist/trueorder.vue b/page_fenbao/storedlist/trueorder.vue
index b789d79..87b6ae9 100644
--- a/page_fenbao/storedlist/trueorder.vue
+++ b/page_fenbao/storedlist/trueorder.vue
@@ -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 @@
}
}
}
-
+
diff --git a/page_shanghu/admin_index.vue b/page_shanghu/admin_index.vue
index d31471c..207ea72 100644
--- a/page_shanghu/admin_index.vue
+++ b/page_shanghu/admin_index.vue
@@ -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()
diff --git a/page_shanghu/gongzuotai/woke_deviceMgmt.vue b/page_shanghu/gongzuotai/woke_deviceMgmt.vue
index 20a8bef..cda3483 100644
--- a/page_shanghu/gongzuotai/woke_deviceMgmt.vue
+++ b/page_shanghu/gongzuotai/woke_deviceMgmt.vue
@@ -28,7 +28,7 @@
-
+
@@ -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);
diff --git a/page_shanghu/guanli/admin_order.vue b/page_shanghu/guanli/admin_order.vue
index e010470..563c8c4 100644
--- a/page_shanghu/guanli/admin_order.vue
+++ b/page_shanghu/guanli/admin_order.vue
@@ -45,7 +45,7 @@
:default-time='pickertime'>
-
+
@@ -112,7 +112,6 @@
开始时间:无
-
租赁时长:{{formatDatess(item.startTime,item.endTime)}}
@@ -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
diff --git a/page_shanghu/guanli/admin_worke.vue b/page_shanghu/guanli/admin_worke.vue
index 540d985..55eda3d 100644
--- a/page_shanghu/guanli/admin_worke.vue
+++ b/page_shanghu/guanli/admin_worke.vue
@@ -125,6 +125,12 @@
客服设置
+
+
+
+ 视频教程
+
+
+
+
+
+ ×
+
+
+ 该车辆未在停车区还车,是否收取调度费{{fuzhuobj.manageFee > 0 ? fuzhuobj.manageFee : fuzhuobj.dispatchFee > 0 ? fuzhuobj.dispatchFee : ''}}元?
+
+
+
+ 不收取
+
+
+ 收取
+
+
+
+
+
+
+
+
@@ -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;
diff --git a/page_user/huanbike.vue b/page_user/huanbike.vue
index dd7ed3e..42d37c6 100644
--- a/page_user/huanbike.vue
+++ b/page_user/huanbike.vue
@@ -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,
diff --git a/page_user/shiming.vue b/page_user/shiming.vue
index 00c421e..4342448 100644
--- a/page_user/shiming.vue
+++ b/page_user/shiming.vue
@@ -14,9 +14,6 @@
身份证号
-
您当前还未完成实名认证
@@ -31,9 +28,6 @@
身份证号
-
您当前已完成实名认证
@@ -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){
diff --git a/page_user/shiping/index.vue b/page_user/shiping/index.vue
new file mode 100644
index 0000000..3dcea6c
--- /dev/null
+++ b/page_user/shiping/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 605e7fc..aa21676 100644
--- a/pages.json
+++ b/pages.json
@@ -82,6 +82,13 @@
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
+ },{
+ "path": "shiping/index",
+ "style": {
+ "navigationBarTitleText": "上传",
+ "enablePullDownRefresh": false,
+ "navigationStyle": "custom"
+ }
},{
"path": "zhaoshang",
"style": {
diff --git a/pages/myorder/returned/index.vue b/pages/myorder/returned/index.vue
index 9991731..e9e1ca2 100644
--- a/pages/myorder/returned/index.vue
+++ b/pages/myorder/returned/index.vue
@@ -18,13 +18,13 @@
车牌号:{{deivceobj.deviceVehicleNum == null ? '--' : deivceobj.deviceVehicleNum}}
SN:{{deivceobj.deviceSn == null ? '--' : deivceobj.deviceSn}}
-
+
+ mode=""> 已连接
-
+
+ mode=""> 连接中...
@@ -138,7 +138,7 @@
需支付{{fajinobj.manageFee > 0 ? fajinobj.manageFee : fajinobj.dispatchFee > 0 ? fajinobj.dispatchFee : ''}}元,你可查看最近停车点
-
+
@@ -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;
}
}
}