This commit is contained in:
cjb 2025-04-19 14:25:53 +08:00
parent f7a5c9e87d
commit 57f316dcac
12 changed files with 174 additions and 42 deletions

View File

@ -7,5 +7,6 @@ VITE_APP_ENV = 'development'
# 开发环境 # 开发环境
VITE_APP_BASE_API = 'http://192.168.5.213:9100/gateway' VITE_APP_BASE_API = 'http://192.168.5.213:9100/gateway'
#VITE_APP_BASE_API = 'http://192.168.5.14:9100/gateway' #VITE_APP_BASE_API = 'http://192.168.5.14:9100/gateway'
#VITE_APP_BASE_API = 'http://192.168.7.152:9100/gateway'
#VITE_APP_BASE_API = '/dev-api' #VITE_APP_BASE_API = '/dev-api'
#VITE_APP_BASE_API = 'https://api.evo-techina.com' #VITE_APP_BASE_API = 'https://api.evo-techina.com'

View File

@ -64,6 +64,16 @@ export function getjqrlist(params:Querydata) {
}) })
} }
//删除车辆前查看是否有未结算订单
export function hasorder(plateNum:string) {
return server.request({
url: `cloud/order/swap/checkList?pageSize=20&pageNo=1&plateNum=${plateNum}`,
method: 'get'
})
}
//删除 //删除
export function delhdz(id:string) { export function delhdz(id:string) {
return server.request({ return server.request({

View File

@ -60,15 +60,17 @@ router.beforeEach((to, from, next) => {
} else { } else {
const uStore = userStore(); const uStore = userStore();
//setInfor //setInfor
if(init){ if(appStore().isInit){
isRelogin.show = true; isRelogin.show = true;
const pStore = permissionStore(); const pStore = permissionStore();
pStore.GenerateRoutes().then(() => { pStore.GenerateRoutes().then(() => {
isRelogin.show = false; isRelogin.show = false;
init = false appStore().setInit(false)
//init = false
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
}).catch(err => { }).catch(err => {
init = true //init = true
appStore().setInit(true)
if(err == 'S0405'){ if(err == 'S0405'){
removeToken() removeToken()
next({ path: "/login" }) next({ path: "/login" })

View File

@ -16,7 +16,8 @@ const store = defineStore({
device: "desktop", device: "desktop",
size: Cookies.get("size") || "medium", size: Cookies.get("size") || "medium",
isEffecti:true, //登录状态是否有效 isEffecti:true, //登录状态是否有效
loginPage:false //是否是登录页面 loginPage:false, //是否是登录页面
isInit:true //是否是初始登录
}; };
}, },
getters: { getters: {
@ -30,6 +31,9 @@ const store = defineStore({
setloginPage(v:boolean) { setloginPage(v:boolean) {
this.loginPage = v this.loginPage = v
}, },
setInit(v:boolean) {
this.isInit = v
},
toggleSideBar() { toggleSideBar() {
if (this.sidebar.hide) { if (this.sidebar.hide) {
return false; return false;

View File

@ -67,7 +67,7 @@
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import userStore from "@/stores/user"; import userStore from "@/stores/user";
import appStore from "@/stores/app";
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
type?:string|number type?:string|number
@ -181,6 +181,7 @@
.Login(Object.assign({},loginForm.value,{code:`${ipcode.value}:${loginForm.value.code}`})) .Login(Object.assign({},loginForm.value,{code:`${ipcode.value}:${loginForm.value.code}`}))
.then(() => { .then(() => {
loading.value = false; loading.value = false;
appStore().setInit(true)
if(props.type == 1){ if(props.type == 1){
router.push({ path: redirect.value || "/" }); router.push({ path: redirect.value || "/" });
}else{ }else{

View File

@ -19,6 +19,13 @@
maxlength="50" maxlength="50"
/> />
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="phone">
<el-input
v-model="queryParams.phone"
placeholder="请输入联系电话"
maxlength="50"
/>
</el-form-item>
<el-form-item label="引入站点" prop="stationCode"> <el-form-item label="引入站点" prop="stationCode">
<el-select v-model="queryParams.stationCode" placeholder="请选择换电站" style="width: 200px;"> <el-select v-model="queryParams.stationCode" placeholder="请选择换电站" style="width: 200px;">
<el-option v-for="n in yunList" :label="n.name" :value="n.code" /> <el-option v-for="n in yunList" :label="n.name" :value="n.code" />
@ -53,6 +60,7 @@
<div @click="showpop(2,scope.row)" style="display: inline-block;color:#16599d;border-bottom: 1px solid #417ebb;cursor:pointer">{{scope.row.accName?scope.row.accName:'暂未设置'}}</div> <div @click="showpop(2,scope.row)" style="display: inline-block;color:#16599d;border-bottom: 1px solid #417ebb;cursor:pointer">{{scope.row.accName?scope.row.accName:'暂未设置'}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" min-width="120" align="center" prop="phone" :show-overflow-tooltip="true" />
<el-table-column label="户主类型" min-width="100" align="center" prop="ownerType" :show-overflow-tooltip="true"> <el-table-column label="户主类型" min-width="100" align="center" prop="ownerType" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.ownerType == 1">个人</div> <div v-if="scope.row.ownerType == 1">个人</div>
@ -453,8 +461,8 @@
ownerId:'', //ID ownerId:'', //ID
code:'', // code:'', //
stationCode:'', // stationCode:'', //
accName:'' // accName:'', //
phone:'' //
}) })
// //

View File

@ -100,6 +100,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="车牌号" min-width="120" align="center" prop="plateNum" :show-overflow-tooltip="true" /> <el-table-column label="车牌号" min-width="120" align="center" prop="plateNum" :show-overflow-tooltip="true" />
<el-table-column label="换电站" min-width="200" align="center" prop="stationName" :show-overflow-tooltip="true" />
<el-table-column label="预约人" min-width="120" align="center" prop="orderPreUname" :show-overflow-tooltip="true" /> <el-table-column label="预约人" min-width="120" align="center" prop="orderPreUname" :show-overflow-tooltip="true" />
<el-table-column label="预约人电话" min-width="120" align="center" prop="orderPrePhone" :show-overflow-tooltip="true" /> <el-table-column label="预约人电话" min-width="120" align="center" prop="orderPrePhone" :show-overflow-tooltip="true" />
<el-table-column label="订单时间" min-width="200" align="center" prop="orderTime" :show-overflow-tooltip="true" /> <el-table-column label="订单时间" min-width="200" align="center" prop="orderTime" :show-overflow-tooltip="true" />
@ -648,6 +649,12 @@
<el-col :span="12" style="color: #417ebb;">{{xqobj.changeLane == 1?'A车道':'B车道'}}</el-col> <el-col :span="12" style="color: #417ebb;">{{xqobj.changeLane == 1?'A车道':'B车道'}}</el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col :span="8">
<el-row>
<el-col :span="5">换电站</el-col>
<el-col :span="12" style="color: #417ebb;">{{xqobj.stationName}}</el-col>
</el-row>
</el-col>
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -121,7 +121,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="段服务费(元)" prop="timeServiceFee"> <el-form-item label="段服务费(元)" prop="timeServiceFee">
<el-input <el-input
v-model="addata.timeServiceFee" v-model="addata.timeServiceFee"
placeholder="请输入谷段服务费" placeholder="请输入谷段服务费"
@ -322,7 +322,7 @@
}) })
} }
//getyys() getyys()
</script> </script>
<style scoped> <style scoped>
.el-divider--horizontal{ .el-divider--horizontal{

View File

@ -44,12 +44,12 @@
</el-table-column> </el-table-column>
<el-table-column label="开始日期" min-width="100" align="center" prop="dayBegin" :show-overflow-tooltip="true"> <el-table-column label="开始日期" min-width="100" align="center" prop="dayBegin" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<div>{{scope.row.dayBegin.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3')}}</div> <div>{{scope.row.dayBegin.replace(/-+/g,'').replace(/^(\d{4})*(\d{2})(\d{2})$/, '$2-$3')}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结束日期" min-width="100" align="center" prop="dayEnd" :show-overflow-tooltip="true"> <el-table-column label="结束日期" min-width="100" align="center" prop="dayEnd" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<div>{{scope.row.dayEnd.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3')}}</div> <div>{{scope.row.dayEnd.replace(/-+/g,'').replace(/^(\d{4})*(\d{2})(\d{2})$/, '$2-$3')}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="换电站" min-width="250" align="center" prop="stationName" :show-overflow-tooltip="true" /> <el-table-column label="换电站" min-width="250" align="center" prop="stationName" :show-overflow-tooltip="true" />
@ -161,7 +161,8 @@
<el-form-item label="开始日期" prop="dayBegin"> <el-form-item label="开始日期" prop="dayBegin">
<el-date-picker <el-date-picker
v-model="addata.dayBegin" v-model="addata.dayBegin"
value-format="YYYYMMDD" format="MM-DD"
value-format="MMDD"
style="width: 100%;" style="width: 100%;"
type="date" type="date"
placeholder="请选择日期" placeholder="请选择日期"
@ -171,8 +172,9 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="结束日期" prop="dayEnd"> <el-form-item label="结束日期" prop="dayEnd">
<el-date-picker <el-date-picker
format="MM-DD"
v-model="addata.dayEnd" v-model="addata.dayEnd"
value-format="YYYYMMDD" value-format="MMDD"
style="width: 100%;" style="width: 100%;"
type="date" type="date"
placeholder="请选择日期" placeholder="请选择日期"
@ -316,7 +318,8 @@
<el-form-item label="开始日期" prop="dayBegin"> <el-form-item label="开始日期" prop="dayBegin">
<el-date-picker <el-date-picker
v-model="addata.dayBegin" v-model="addata.dayBegin"
value-format="YYYY-MM-DD" format="MM-DD"
value-format="MMDD"
style="width: 100%;" style="width: 100%;"
type="date" type="date"
placeholder="请选择日期" placeholder="请选择日期"
@ -327,7 +330,8 @@
<el-form-item label="结束日期" prop="dayEnd"> <el-form-item label="结束日期" prop="dayEnd">
<el-date-picker <el-date-picker
v-model="addata.dayEnd" v-model="addata.dayEnd"
value-format="YYYY-MM-DD" format="MM-DD"
value-format="MMDD"
style="width: 100%;" style="width: 100%;"
type="date" type="date"
placeholder="请选择日期" placeholder="请选择日期"
@ -442,17 +446,18 @@
</div> </div>
</template> </template>
<script setup lang="ts" name="UserPage"> <script setup lang="ts" name="UserPage">
import { import {
gethdzlist gethdzlist
} from '@/api/swapstation/hdz' } from '@/api/swapstation/hdz'
import { import {
getjqrlist, getjqrlist,
addhdz, addhdz,
update, update,
delhdz delhdz
} from '@/api/swapstation/swapstation' } from '@/api/swapstation/swapstation'
import { setNum } from '@/utils/validate'
import { setNum } from '@/utils/validate'
import { ref,reactive,watch } from 'vue' import { ref,reactive,watch } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
@ -607,8 +612,8 @@
addata.pkId = row.pkId addata.pkId = row.pkId
addata.stationCode = row.stationCode addata.stationCode = row.stationCode
addata.dayBegin = row.dayBegin.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3') addata.dayBegin = row.dayBegin.replace(/^(\d{4})*(\d{2})(\d{2})$/, '$2$3')
addata.dayEnd = row.dayEnd.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3') addata.dayEnd = row.dayEnd.replace(/^(\d{4})*(\d{2})(\d{2})$/, '$2$3')
addata.stationName = row.stationName addata.stationName = row.stationName
addata.name = row.name addata.name = row.name
addata.commonRemainFee = row.commonRemainFee?row.commonRemainFee/100:0 addata.commonRemainFee = row.commonRemainFee?row.commonRemainFee/100:0

View File

@ -95,10 +95,10 @@
<el-table-column label="联系人" min-width="200" align="center" prop="contacts" :show-overflow-tooltip="true" /> <el-table-column label="联系人" min-width="200" align="center" prop="contacts" :show-overflow-tooltip="true" />
<el-table-column label="联系电话" min-width="140" align="center" prop="phone" /> <el-table-column label="联系电话" min-width="140" align="center" prop="phone" />
<el-table-column label="激活日期" min-width="160" align="center" prop="activeDate" :show-overflow-tooltip="true" /> <el-table-column label="激活日期" min-width="160" align="center" prop="activeDate" :show-overflow-tooltip="true" />
<el-table-column label="全天营业" min-width="100" align="center" prop="openAllDay" :show-overflow-tooltip="true"> <el-table-column label="营业时间" min-width="120" align="center" prop="openAllDay" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.openAllDay == 1"></div> <div v-if="scope.row.openAllDay == 1">全天</div>
<div v-else></div> <div v-else>{{scope.row.runStartTime}} {{scope.row.runEndTime}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="通道数" min-width="100" align="center" prop="tdQuantity" /> <el-table-column label="通道数" min-width="100" align="center" prop="tdQuantity" />
@ -279,6 +279,34 @@
<el-radio value="1"></el-radio> <el-radio value="1"></el-radio>
<el-radio value="0"></el-radio> <el-radio value="0"></el-radio>
</el-radio-group> </el-radio-group>
<div v-if="addata.openAllDay == '0'" style="display: flex;">
<el-form-item label="" prop="runStartTime">
<el-time-select
v-model="addata.runStartTime"
style="width: 120px"
:max-time="addata.runEndTime"
class="mr-4"
placeholder="开始时间"
start="00:00"
step="00:30"
end="24:00"
/>
</el-form-item>
<div style="padding: 0 5px;"></div>
<el-form-item label="" prop="runEndTime">
<el-time-select
v-model="addata.runEndTime"
style="width: 120px"
:min-time="addata.runStartTime"
placeholder="结束时间"
start="00:00"
step="00:30"
end="24:00"
/>
</el-form-item>
</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -505,6 +533,34 @@
<el-radio :value="1"></el-radio> <el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio> <el-radio :value="0"></el-radio>
</el-radio-group> </el-radio-group>
<div v-if="addata.openAllDay == '0'" style="display: flex;padding-left: 20px;">
<el-form-item label="" prop="runStartTime">
<el-time-select
v-model="addata.runStartTime"
style="width: 120px"
:max-time="addata.runEndTime"
class="mr-4"
placeholder="开始时间"
start="00:00"
step="00:30"
end="24:00"
/>
</el-form-item>
<div style="padding: 0 5px;"></div>
<el-form-item label="" prop="runEndTime">
<el-time-select
v-model="addata.runEndTime"
style="width: 120px"
:min-time="addata.runStartTime"
placeholder="结束时间"
start="00:00"
step="00:30"
end="24:00"
/>
</el-form-item>
</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -757,6 +813,10 @@
let lat = ref('') let lat = ref('')
let lng = ref('') let lng = ref('')
let startTime = ref('')
let endTime = ref('')
let addata = reactive({ let addata = reactive({
pkId:'', pkId:'',
proxyId:'', //ID proxyId:'', //ID
@ -776,7 +836,9 @@
delFlag:'', //1-0- delFlag:'', //1-0-
activeDate:'', // activeDate:'', //
locationPoint:'', // locationPoint:'', //
openAllDay:'', //1-0- openAllDay:'1', //1-0-
runStartTime:'', //
runEndTime:'', //
tdQuantity:'', // tdQuantity:'', //
jqrQuantity:'', // jqrQuantity:'', //
cdjQuantity:'', // cdjQuantity:'', //
@ -802,6 +864,12 @@
], ],
carTypeCode:[ carTypeCode:[
{ required: true, message: "请选择支持的车辆类型", trigger: "blur" }, { required: true, message: "请选择支持的车辆类型", trigger: "blur" },
],
runStartTime:[
{ required: true, message: "请选择营业开始时间", trigger: "blur" },
],
runEndTime:[
{ required: true, message: "营业结束时间", trigger: "blur" }
] ]
}) })
@ -864,6 +932,8 @@
addata.openAllDay = row.openAllDay addata.openAllDay = row.openAllDay
addata.runStartTime = row.runStartTime?row.runStartTime:''
addata.runEndTime = row.runEndTime?row.runEndTime:''
addata.tdQuantity = row.tdQuantity+'' addata.tdQuantity = row.tdQuantity+''
addata.jqrQuantity = row.jqrQuantity+'' addata.jqrQuantity = row.jqrQuantity+''
addata.cdjQuantity = row.cdjQuantity+'' addata.cdjQuantity = row.cdjQuantity+''
@ -879,7 +949,7 @@
getqrcode({ getqrcode({
path:`pages/home/index?code=${addata.code}`, path:`pages/home/index?code=${addata.code}`,
width:'400', width:'400',
env_version:'trial' //"release""trial""develop" env_version:'release' //"release""trial""develop"
}).then((rps:any) => { }).then((rps:any) => {
let reader = new FileReader() let reader = new FileReader()
reader.readAsDataURL(rps) // base64 reader.readAsDataURL(rps) // base64
@ -909,7 +979,9 @@
addata.delFlag = '' addata.delFlag = ''
addata.activeDate = '' addata.activeDate = ''
addata.locationPoint = '' addata.locationPoint = ''
addata.openAllDay = '' addata.openAllDay = '1'
addata.runStartTime = ''
addata.runEndTime = ''
addata.tdQuantity = '' addata.tdQuantity = ''
addata.jqrQuantity = '' addata.jqrQuantity = ''
addata.cdjQuantity = '' addata.cdjQuantity = ''
@ -922,10 +994,13 @@
} }
} }
function savehand() { function savehand() {
let obj = Object.assign({},addata,{
carTypeCode:(addata.carTypeCode as any).join()
})
if(type.value == 1){ if(type.value == 1){
return addhdz(addata) return addhdz(obj)
} }
return update(addata) return update(obj)
} }
function handleClose() { function handleClose() {
@ -941,7 +1016,6 @@
yysRef.value?.validate((valid:Boolean) => { yysRef.value?.validate((valid:Boolean) => {
if (valid) { if (valid) {
addata.carTypeCode = (addata.carTypeCode as any).join()
savehand().then(() => { savehand().then(() => {
ElMessage({ ElMessage({
type: 'success', type: 'success',

View File

@ -58,7 +58,7 @@
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.type == 1">开发者</div> <div v-if="scope.row.type == 1">开发者</div>
<div v-else-if="scope.row.type == 2">运营方</div> <div v-else-if="scope.row.type == 2">运营方</div>
<div v-else="scope.row.type == 3"></div> <div v-else="scope.row.type == 3">企业用</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联方代码" align="center" width="140" prop="typeRelateCode" :show-overflow-tooltip="true" /> <el-table-column label="关联方代码" align="center" width="140" prop="typeRelateCode" :show-overflow-tooltip="true" />
@ -126,10 +126,19 @@
<el-form-item label="账号类型" prop="type"> <el-form-item label="账号类型" prop="type">
<el-radio-group v-model="userform.type"> <el-radio-group v-model="userform.type">
<el-radio value="1">开发者</el-radio> <el-radio value="1">开发者</el-radio>
<el-radio value="2">运营</el-radio> <el-radio value="2">运营</el-radio>
<el-radio value="3"></el-radio> <el-radio value="3">企业用</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- <el-form-item label="" prop="status">
<el-select v-model="userform.type" placeholder="请选择运营商" style="width: 160px;">
<el-option value="1" label="正常营业" />
<el-option value="2" label="正常停运" />
<el-option value="3" label="故障停运" />
<el-option value="4" label="指令停运" />
<el-option value="9" label="其他" />
</el-select>
</el-form-item> -->
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户密码" prop="password"> <el-form-item label="用户密码" prop="password">

View File

@ -630,8 +630,8 @@
</el-table> </el-table>
<div v-if="gstotal > 10" style="display: flex;justify-content: right;padding-top:20px;"> <div v-if="gstotal > 10" style="display: flex;justify-content: right;padding-top:20px;">
<el-pagination <el-pagination
v-model:current-page="gsqueryParams.pageNo" v-model:current-page="wxParams.pageNo"
v-model:page-size="gsqueryParams.pageSize" v-model:page-size="wxParams.pageSize"
:page-sizes="[10, 20, 30, 40]" :page-sizes="[10, 20, 30, 40]"
background background
size="small" size="small"
@ -661,7 +661,8 @@
Binggs, Binggs,
Bingwx, Bingwx,
getcarwxlist, getcarwxlist,
unbindwx unbindwx,
hasorder
} from '@/api/swapstation/vehicle' } from '@/api/swapstation/vehicle'
import { import {
getdicttype getdicttype
@ -1010,13 +1011,23 @@
type: 'warning', type: 'warning',
} }
).then(() => { ).then(() => {
delhdz(row.pkId).then(() => { hasorder(row.plateNum).then(() => {
delhdz(row.pkId).then(() => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
message: '删除成功' message: '删除成功'
}) })
getyys() getyys()
}) })
})
// delhdz(row.pkId).then(() => {
// ElMessage({
// type: 'success',
// message: ''
// })
// getyys()
// })
}) })
} }
@ -1117,7 +1128,7 @@
} }
function sizeChange(val:number) { function sizeChange(val:number) {
gsqueryParams.pageSize = val wxParams.pageSize = val
getsglist() getsglist()
} }