From df9e1dd0d829708c2da9a966d40e830ebcf24608 Mon Sep 17 00:00:00 2001 From: cjb <646858191@qq.com> Date: Sat, 22 Mar 2025 17:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 21 + src/App.vue | 2 +- src/api/home.ts | 82 ++ src/api/operation/company.ts | 2 +- src/api/order/account.ts | 20 +- src/api/order/replabatt.ts | 102 ++- src/api/order/reservation.ts | 29 +- src/api/swapstation/cdcl.ts | 106 +++ src/api/swapstation/hdz.ts | 5 +- src/api/swapstation/mqtt.ts | 19 + src/api/swapstation/vehicle.ts | 20 + src/router/index.ts | 4 +- src/stores/app.ts | 4 +- src/utils/request.ts | 5 +- src/utils/ruoyi.ts | 8 + src/views/components/detailstit.vue | 51 +- src/views/index.vue | 804 +++++++++++++++--- src/views/order/account/index.vue | 14 +- src/views/order/replabatt/index.vue | 115 ++- src/views/order/replabatt/payment.vue | 479 +++++++++++ src/views/order/reservation/index.vue | 179 ++-- src/views/swapstation/battery/index.vue | 44 +- src/views/swapstation/cdcl/costdetails.vue | 227 +++++ src/views/swapstation/cdcl/index.vue | 465 ++++++++++ src/views/swapstation/dcc/index.vue | 29 +- src/views/swapstation/electmach/index.vue | 28 +- .../swapstation/expestand/costdetails.vue | 16 +- src/views/swapstation/expestand/index.vue | 90 +- src/views/swapstation/hdz/index.vue | 108 ++- src/views/swapstation/mqtt/index.vue | 189 ++++ src/views/swapstation/robot/index.vue | 30 +- src/views/system/dict/index.vue | 12 +- src/views/vehicle/car/index.vue | 488 ++++++++++- src/views/vehicle/company/account.vue | 495 +++++++++++ src/views/vehicle/company/index.vue | 286 ++++++- src/views/vehicle/wxuser/index.vue | 65 +- 36 files changed, 4214 insertions(+), 429 deletions(-) create mode 100644 .gitignore create mode 100644 src/api/home.ts create mode 100644 src/api/swapstation/cdcl.ts create mode 100644 src/api/swapstation/mqtt.ts create mode 100644 src/views/order/replabatt/payment.vue create mode 100644 src/views/swapstation/cdcl/costdetails.vue create mode 100644 src/views/swapstation/cdcl/index.vue create mode 100644 src/views/swapstation/mqtt/index.vue create mode 100644 src/views/vehicle/company/account.vue diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ce6e50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 5cb893f..759fecd 100644 --- a/src/App.vue +++ b/src/App.vue @@ -12,7 +12,7 @@ import Login from './views/components/login.vue' watch(() => appStore().isEffecti,(v) => { openpop.value = false - if(!v && getToken()){ + if(!v && getToken() && !appStore().loginPage){ openpop.value = true } }) diff --git a/src/api/home.ts b/src/api/home.ts new file mode 100644 index 0000000..a623833 --- /dev/null +++ b/src/api/home.ts @@ -0,0 +1,82 @@ +import server from '@/utils/request' + +//查询运营商 换电站 电池 机器人 +interface Querydata{ + poCode?:String //运营商编码 + stationCode?:String //换电站编码 + timeBegin?:String //开始时间,示例值(2024-10-01 00:00:00) + timeEnd?:String //结束时间,示例值(2025-04-01 23:59:59) +} + +export function gethdztotal(params?:Querydata) { + return server.request({ + url: '/cloud/home/data1', + method: 'get', + params + }) +} + +//查询 公司 用户 车辆 +export function getgyctotal() { + return server.request({ + url: '/cloud/home/data2', + method: 'get' + }) +} + +//订单-按换电站统计 +export function gethdztj(params?:Querydata) { + return server.request({ + url: '/cloud/home/data3', + method: 'get', + params + }) +} + +//交易-不安换电站统计 +export function getjytj(params?:Querydata) { + return server.request({ + url: '/cloud/home/data4', + method: 'get', + params + }) +} + +//近6个月订单统计 +export function getddtj(params?:Querydata) { + return server.request({ + url: '/cloud/home/data5', + method: 'get', + params + }) +} + +//近6个月交易统计 +export function get6jytj(params?:Querydata) { + return server.request({ + url: '/cloud/home/data6', + method: 'get', + params + }) +} + + + +//同比 环比 +export function gettbhb(type:number) { + return server.request({ + url: '/cloud/home/data7', + method: 'get', + params:{ + type + } + }) +} + +// export function addhdz(data:Addobj) { +// return server.request({ +// url: '/cloud/batterystation/fee/detail/add', +// method: 'post', +// data +// }) +// } diff --git a/src/api/operation/company.ts b/src/api/operation/company.ts index eb477eb..5270c7c 100644 --- a/src/api/operation/company.ts +++ b/src/api/operation/company.ts @@ -32,7 +32,7 @@ interface Addata{ status?:String|Number //状态:1-启用,0-禁用 logo?:String //logo地址 delFlag?:String //删除标识:1-已删除,0-未删除 - accountBalance?:String //账户余额 + accountBalance?:String|Number //账户余额 } export function addyunys(data:Addata) { return server.request({ diff --git a/src/api/order/account.ts b/src/api/order/account.ts index c329a27..8faca85 100644 --- a/src/api/order/account.ts +++ b/src/api/order/account.ts @@ -2,17 +2,17 @@ import server from '@/utils/request' //新增 interface Addobj{ - ownerType:String //户主类型:1-个人,2-企业 - ownerId:String //户主ID - stationCode:String //引入站点 + ownerType:String //户主类型:1-个人,2-企业 + ownerId:String //户主ID + stationCode:String //引入站点 pkId?:String - totalAmount?:String //账户总金额,分:总金额=充值金额+赠送金额 - rechargeAmount?:String //充值余额,分 - giftAmount?:String //赠送金额,分 - point?:String //积分余额 - deposit?:String //押金 - snCode?:String //SN码 - rent?:String //租金 + totalAmount?:String|Number //账户总金额,分:总金额=充值金额+赠送金额 + rechargeAmount?:String|Number //充值余额,分 + giftAmount?:String|Number //赠送金额,分 + point?:String|Number //积分余额 + deposit?:String|Number //押金 + snCode?:String //SN码 + rent?:String|Number //租金 } export function addhdz(data:Addobj) { diff --git a/src/api/order/replabatt.ts b/src/api/order/replabatt.ts index 78672bf..f641269 100644 --- a/src/api/order/replabatt.ts +++ b/src/api/order/replabatt.ts @@ -4,34 +4,34 @@ import server from '@/utils/request' interface Addobj{ orderType:String|Number //类型:1-换电,2-充电 plateNum:String //车牌号 - orderTime:String //订单时间,示例值(yyyy-MM-dd HH:mm:ss) + orderTime?:String //订单时间,示例值(yyyy-MM-dd HH:mm:ss) stationCode:String //换电站编码 stationName:String //换电站名称 - accountCode:String //金额账号 - amount:String|Number //订单金额 - status:String|Number //订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消 //1-等待受理,2-换电中,3-换电完成,4-出现异常,5-未结算,6-订单取消,7-已结算 - feeType:String //计算费用方式:1-ODO,2-SOC,3-按电量 - basicFee:String //基础费用 - serviceTimeBegin:String|Number //服务开始时间 - serviceTimeEnd:String //服务结束时间 - serviceFee:String|Number //服务费 - lastRentBatCarOdo:String //上次租赁电池时车辆里程 - nowReturnBatCarOdo:String //归还电池时车辆里程 - odoAmount:String|Number //按ODO换电费 - electAmount:String|Number //总充电量 - rentBatNo:String|Number //租借电池包仓位 - rentBatCode:String //租用电池包编码 - rentBatSoc:String //租用电池包SOC - returnBatCode:String //归还电池包编码 - returnBatNo:String|Number //归还电池包仓位 - returnBatSoc:String //归还电池包SOC - returnBatRentSoc:String //归还电池租出时soc - returnBatRentStationCode:String //归还电池租出的换电站编码 - returnBatRentStationName:String //归还电池租出的换电站 - changeMode:String|Number //换电模式:1-全自动,2-半自动,3-人工干预 - changeLane:String|Number //换电车道 1-A 车道;2-B 车道 - userId:String //换电车主ID - tradeNo:String //交易编码 + accountCode?:String //金额账号 + amount?:String|Number //订单金额 + status?:String|Number //订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消 //1-等待受理,2-换电中,3-换电完成,4-出现异常,5-未结算,6-订单取消,7-已结算 + feeType?:String //计算费用方式:1-ODO,2-SOC,3-按电量 + basicFee?:String //基础费用 + serviceTimeBegin?:String|Number //服务开始时间 + serviceTimeEnd?:String //服务结束时间 + serviceFee?:String|Number //服务费 + lastRentBatCarOdo?:String //上次租赁电池时车辆里程 + nowReturnBatCarOdo?:String //归还电池时车辆里程 + odoAmount?:String|Number //按ODO换电费 + electAmount?:String|Number //总充电量 + rentBatNo?:String|Number //租借电池包仓位 + rentBatCode?:String //租用电池包编码 + rentBatSoc?:String //租用电池包SOC + returnBatCode?:String //归还电池包编码 + returnBatNo?:String|Number //归还电池包仓位 + returnBatSoc?:String //归还电池包SOC + returnBatRentSoc?:String //归还电池租出时soc + returnBatRentStationCode?:String //归还电池租出的换电站编码 + returnBatRentStationName?:String //归还电池租出的换电站 + changeMode?:String|Number //换电模式:1-全自动,2-半自动,3-人工干预 + changeLane?:String|Number //换电车道 1-A 车道;2-B 车道 + userId?:String //换电车主ID + tradeNo?:String //交易编码 } export function addhdz(data:Addobj) { @@ -55,14 +55,16 @@ export function update(data:Addobj) { interface Querydata{ pageSize:String|Number //每页条数 pageNo:String|Number //页数 - orderNo:String //订单编码 - plateNum:String //车牌号 - orderTimeBegin:String //订单时间开始,示例值(yyyy-MM-dd HH:mm:ss) - orderTimeEnd:String //订单时间结束 - stationCode:String //换电站编码 - stationName:String //换电站名称 - userId:String //换电车主ID - tradeNo:String //交易编码 + orderNo?:String //订单编码 + plateNum?:String //车牌号 + orderTimeBegin?:String //订单时间开始,示例值(yyyy-MM-dd HH:mm:ss) + orderTimeEnd?:String //订单时间结束 + stationCode?:String //换电站编码 + stationName?:String //换电站名称 + userId?:String //换电车主ID + tradeNo?:String //交易编码 + status?:String //订单状态 + ccode?:String //公司编码 } export function getjqrlist(params:Querydata) { return server.request({ @@ -104,3 +106,35 @@ export function jsfeiy(orderNo:string) { } }) } + + +//批量支付 +export function batchpayment(data:string) { + return server.request({ + headers: { + 'Content-Type': 'application/json', + }, + url: '/cloud/order/swap/wechat/nativepay', + method: 'post', + data + }) +} + +//获取ip +export function getip() { + return server.request({ + url: '/resource/util/ip', + method: 'get' + }) +} + +//查询支付订单状态 +export function paystatus(outTradeNo:string) { + return server.request({ + url: '/cloud/order/swap/paystatus/query', + method: 'get', + params:{ + outTradeNo + } + },false) +} diff --git a/src/api/order/reservation.ts b/src/api/order/reservation.ts index fbba780..20cbeff 100644 --- a/src/api/order/reservation.ts +++ b/src/api/order/reservation.ts @@ -2,15 +2,26 @@ import server from '@/utils/request' //新增 interface Addobj{ - userId:String //预约人ID - uname:String //预约人姓名 - phone:String //手机号码 + userId:String //预约人ID + uname:String //预约人姓名 + phone:String //手机号码 plateNum:String //车牌号 stationCode:String //换电站编码 stationName:String //换电站名称 swapDay:String //预约换电日期,示例值(yyyyMMdd) swapDuration:String //预约换电时间段,示例值(8:00-10:00) - status:String|Number //状态:1-预约成功,2-到店使用,3-取消,4-过期 + status:String|Number //状态:1-预约成功,2-到店使用,3-取消,4-过期 + + // source:String //来源:1-小程序,2-云端,3-站端 + // ucode:String //预约人编码 + // uname:String //预约人姓名 + // phone:String //手机号码 + // plateNum:String //车牌号 + // stationCode:String //换电站编码 + // stationName:String //换电站名称 + // swapDay:String //预约换电日期,示例值(yyyyMMdd) + // reservationTime?:String //预约时间 + // swapDuration?:String //预约换电时间段,示例值(8:00-10:00) } export function addhdz(data:Addobj) { @@ -33,9 +44,13 @@ export function update(data:Addobj) { //查询 interface Querydata{ pageSize:String|Number //每页条数 - pageNo:String|Number //页数 - userId:String //车主id - status:String //状态 + pageNo:String|Number //页数 + ucode?:String //车主id + status?:String //状态 + plateNum?:String //车牌号 + swapDayBegin?:String //预约换电日期开始,示例值(yyyyMMdd) + swapDayEnd?:String //预约换电日期结束 + stationCode?:String //换电站编码 } export function getjqrlist(params:Querydata) { return server.request({ diff --git a/src/api/swapstation/cdcl.ts b/src/api/swapstation/cdcl.ts new file mode 100644 index 0000000..e5d0c8f --- /dev/null +++ b/src/api/swapstation/cdcl.ts @@ -0,0 +1,106 @@ +import server from '@/utils/request' + +//新增 +interface Addobj{ + pkId?:String + name:String //名称 + stationCode:String //换电站编码 + stationName:String //换电站名称 + miniLimit:String|Number //最低数量 + status?:String|Number //状态:0-未启用,1-启用 +} + +export function addhdz(data:Addobj) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/add', + method: 'post', + data + }) +} + +//修改 +export function update(data:Addobj) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/update', + method: 'post', + data + }) +} + +//查询 +interface Querydata{ + stationCode:String //换电站编码 + status:String|Number //状态 +} +export function getjqrlist(params:Querydata) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/list', + method: 'get', + params + }) +} + +//删除 +export function delhdz(id:string) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/del', + method: 'post', + data:{ + id + } + }) +} + + + +interface Addxq{ + pkId?:String + stationCode:String //换电站编码 + stationName:String //换电站名称 + strategyId:String //策略ID + beginTime:String //开始时间,示例值(20:01:32) + endTime:String //结束时间,示例值(23:05:41) + chargingPower?:String //充电功率 +} + +//新增详情 +export function addxq(data:Addxq) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/detail/add', + method: 'post', + data + }) +} + +//修改详情 +export function updatexq(data:Addxq) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/detail/update', + method: 'post', + data + }) +} + + +//删除详情 +export function delxq(id:string) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/detail/del', + method: 'post', + data:{ + id + } + }) +} + + +//查询详情 +export function getxql(strategyId:String) { + return server.request({ + url: '/cloud/batterystation/cd/strategy/detail/list', + method: 'get', + params:{ + strategyId + } + }) +} \ No newline at end of file diff --git a/src/api/swapstation/hdz.ts b/src/api/swapstation/hdz.ts index 2d71d51..ed2ee49 100644 --- a/src/api/swapstation/hdz.ts +++ b/src/api/swapstation/hdz.ts @@ -53,7 +53,7 @@ interface Querydata{ pkId?:String name?:String //站点名称 code?:String //站点编码 - status?:String //状态:1-正常营业,2-正常停运,3-故障停运,4-指令停运,9-其它 + status?:any //状态:1-正常营业,2-正常停运,3-故障停运,4-指令停运,9-其它 type?:String //站点类型ID } export function gethdzlist(params:Querydata) { @@ -87,6 +87,7 @@ export function getqrcode(params:Codeqs) { return server.request({ url: '/cloud/batterystation/xcx/qrcode/get', method: 'get', - params + params, + responseType:'blob' }) } \ No newline at end of file diff --git a/src/api/swapstation/mqtt.ts b/src/api/swapstation/mqtt.ts new file mode 100644 index 0000000..7ce0589 --- /dev/null +++ b/src/api/swapstation/mqtt.ts @@ -0,0 +1,19 @@ +import server from '@/utils/request' + +//新增 +interface Querydata{ + pageSize:String|Number //每页条数 + pageNo:String|Number //页数 + stationCode?:String //换电站 + direction?:String //传送方向 + type?:String //消息类型: 状态信息类、事件记录类、请求与响应类 query + messageFunction?:String //方法 stationInfo +} + +export function mqttlist(params:Querydata) { + return server.request({ + url: '/cloud/mqttmessage/list', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/api/swapstation/vehicle.ts b/src/api/swapstation/vehicle.ts index 6a75c08..51c5db1 100644 --- a/src/api/swapstation/vehicle.ts +++ b/src/api/swapstation/vehicle.ts @@ -107,4 +107,24 @@ export function Bingwx(params:Wxbin) { method: 'post', params }) +} + +//解绑微信用户 +export function unbindwx(id:String|Number) { + return server.request({ + url: '/cloud/vehicle/wechatuser/relation/del', + method: 'post', + params:{id} + }) +} + +//查询车辆绑关联微信用户 +export function getcarwxlist(PlantNo:any) { + return server.request({ + url: '/cloud/vehicle/relationuser/list', + method: 'get', + params:{ + PlantNo + } + }) } \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index c7efbca..856f8c1 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -48,7 +48,9 @@ let init = true router.beforeEach((to, from, next) => { NProgress.start(); if(to.path === "/login"){ - appStore().setloginPage() + appStore().setloginPage(true) + }else{ + appStore().setloginPage(false) } if (getToken()) { /* has token*/ diff --git a/src/stores/app.ts b/src/stores/app.ts index 0b85fb7..667729e 100644 --- a/src/stores/app.ts +++ b/src/stores/app.ts @@ -27,8 +27,8 @@ const store = defineStore({ seteff(v:boolean) { this.isEffecti = v }, - setloginPage() { - this.loginPage = true + setloginPage(v:boolean) { + this.loginPage = v }, toggleSideBar() { if (this.sidebar.hide) { diff --git a/src/utils/request.ts b/src/utils/request.ts index 0c01299..173f737 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -46,7 +46,7 @@ export class Service { //https://api.evo-techina.com' - baseConfig: AxiosRequestConfig = { baseURL:import.meta.env.VITE_APP_BASE_API, timeout: 30000 }; + baseConfig: AxiosRequestConfig = { baseURL:import.meta.env.VITE_APP_BASE_API, timeout: 60000 }; isloading:Boolean = true @@ -157,7 +157,8 @@ export class Service { return Promise.reject('S0405') //return Promise.reject() }else if(code == 'D0402'){ - return Promise.reject() + return [] + //return Promise.reject() }else if (code == 500) { ElMessage({ message: msg, type: "error" }); return Promise.reject(new Error(msg)); diff --git a/src/utils/ruoyi.ts b/src/utils/ruoyi.ts index 38d9b92..e4fc4ad 100644 --- a/src/utils/ruoyi.ts +++ b/src/utils/ruoyi.ts @@ -187,3 +187,11 @@ export async function blobValidate(data: Blob) { return true; } } + +//格式日期 +export function formatDate(s:any) { + if(s){ + return (s+'').replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3') + } + return '' +} \ No newline at end of file diff --git a/src/views/components/detailstit.vue b/src/views/components/detailstit.vue index 8c55750..8f0a819 100644 --- a/src/views/components/detailstit.vue +++ b/src/views/components/detailstit.vue @@ -7,18 +7,33 @@ {{name}}
- + +
+
查看小程序码
+ +
+
+ + + + \ No newline at end of file diff --git a/src/views/index.vue b/src/views/index.vue index 723b644..a51e38a 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -7,7 +7,99 @@ @click="testsx()">测试失效 --> - + + + +
+
+ + + +
+
+ {{ operatotal }} +
+
运营商
+
+
+
+
+ + + +
+
+ + + +
+
+ {{ hdztotal }} +
+
换电站
+
+
+
+ {{ kyhdz }} +
+
可用换电站
+
+
+
+
+ + + +
+
+ + + +
+
+ {{ rzcompany }} +
+
认证公司
+
+
+
+ {{ rzuser }} +
+
认证用户
+
+
+
+ {{ rzvehicle }} +
+
认证车辆
+
+
+
+
+ + + +
+
+ + + +
+
+ {{ robottotal }} +
+
机器人总数
+
+
+
+ {{ kyrobot }} +
+
可用机器人
+
+
+
+
+ +
-
-
-
认证公司
-
989
+
+
+
电池总量
+
{{ dctotal }}
-
-
认证用户
-
662
+
+
充电电池
+
{{cddctotal}}
-
-
认证车辆
-
599
+
+
可用电池
+
{{kydctotal}}
充电桩总数量
-
789
+
--
充电桩在用数量
-
489
+
--
充电桩可用数量
-
367
+
--
@@ -59,17 +152,32 @@
-
+
换电订单数
-
89
+
{{totalOrder}}
充电订单数
-
66
+
--
-
订单金额
-
599
+
收入金额{{totalmoney > 10000000?'(万元)':'(元)'}}
+
+ + {{ jyamount }} + +
+
支出金额{{totalRefund > 10000000?'(万元)':'(元)'}}
+
{{zcamount}}
+
@@ -77,26 +185,224 @@ - +
- +
- - -
+ + + +
+ + 日期 + 订单量 + 同比 + 同比增长 + 环比 + 环比增长 + + + {{tbhbdata.month}} + {{tbhbdata.quantity}} + {{tbhbdata.lastMonthQuantity}} + + + + + + + + + {{tbhbdata.lastYearQuantity}} + + + + + + + +
+
+ + 日期 + 交易金额 + 同比 + 同比增长 + 环比 + 环比增长 + + + {{tbhbdata.month}} + {{Math.trunc(tbhbdata.tradeAmount/100)}} + + {{Math.trunc(tbhbdata.lastMonthTradeAmount/100)}} + + + + + + + + + {{Math.trunc(tbhbdata.lastYearTradeAmount/100)}} + + + + + + + + +
+
+ +
\ No newline at end of file diff --git a/src/views/order/reservation/index.vue b/src/views/order/reservation/index.vue index b1337e5..94df2cf 100644 --- a/src/views/order/reservation/index.vue +++ b/src/views/order/reservation/index.vue @@ -1,24 +1,24 @@