This commit is contained in:
邱贞招 2024-06-13 16:21:53 +08:00
parent ad691563b7
commit 3206bc349f
6 changed files with 153 additions and 52 deletions

View File

@ -72,8 +72,8 @@ export default {
return { return {
codeUrl: "", codeUrl: "",
loginForm: { loginForm: {
username: "admin", username: "",
password: "admin123", password: "",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: ""

View File

@ -126,6 +126,18 @@
<el-input v-model="form.author" placeholder="请输入作者" /> <el-input v-model="form.author" placeholder="请输入作者" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24">
<el-form-item label="运营区" prop="areaId" >
<el-select v-model="form.areaId" placeholder="请选择运营区">
<el-option
v-for="item in areaOptions"
:key="item.areaId"
:label="item.areaName"
:value="item.areaId"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input v-model="form.title" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.title" type="textarea" placeholder="请输入内容" />
@ -171,14 +183,18 @@
import { listArticle, getArticle, delArticle, addArticle, updateArticle,classifyTreeSelect } from "@/api/system/article"; import { listArticle, getArticle, delArticle, addArticle, updateArticle,classifyTreeSelect } from "@/api/system/article";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { listArea } from '@/api/system/area'
export default { export default {
name: "Article", name: "Article",
components: { Treeselect }, components: { Treeselect },
data() { data() {
return { return {
// userName: undefined,
// //
loading: true, loading: true,
//
areaOptions: [],
// //
ids: [], ids: [],
// //
@ -218,6 +234,8 @@ export default {
}; };
}, },
created() { created() {
// console.log("",this.$store.state.user.name)
// this.userName = this.$store.state.user.name;
this.getList(); this.getList();
this.getClassifyTree(); this.getClassifyTree();
}, },
@ -282,8 +300,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; listArea(this.queryParams).then(response => {
this.title = "添加文章"; this.areaOptions = response.rows;
this.open = true;
this.title = "添加文章";
});
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {

View File

@ -33,7 +33,7 @@
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['system:dept:add']" v-hasPermi="['system:articleClassify:add']"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
@ -75,14 +75,14 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:dept:edit']" v-hasPermi="['system:articleClassify:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAdd(scope.row)" @click="handleAdd(scope.row)"
v-hasPermi="['system:dept:add']" v-hasPermi="['system:articleClassify:add']"
>新增</el-button> >新增</el-button>
<el-button <el-button
v-if="scope.row.parentId != 0" v-if="scope.row.parentId != 0"
@ -90,7 +90,7 @@
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['system:dept:remove']" v-hasPermi="['system:articleClassify:remove']"
>删除</el-button> >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -164,29 +164,48 @@
</el-row> </el-row>
<div v-if="form.parentId != 0"> <div v-if="form.parentId != 0">
<el-row> <el-row>
<el-col :span="12" v-show="form.isProfitSharing == true">
<el-form-item label="平台服务费(%)" label-width="90" prop="platformServiceFee">
<el-input style="width: 65%" v-model="form.platformServiceFee" placeholder="请输入平台服务费" />
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否开启分账" label-width="120" prop="isProfitSharing"> <el-form-item label="是否开启分账" label-width="120" prop="isProfitSharing">
<el-switch v-model="form.isProfitSharing" class="drawer-switch" /> <el-switch v-model="form.isProfitSharing" class="drawer-switch" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-show="form.isProfitSharing == true">
<el-form-item label="平台服务费(%)" label-width="90" prop="platformServiceFee">
<el-input style="width: 65%" v-model="form.platformServiceFee" placeholder="请输入平台服务费" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否使用创享电动车小程序" label-width="160" prop="isUsePlatformApp">
<el-switch v-model="form.isUsePlatformApp" class="drawer-switch" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="域名" prop="domain">
<el-input style="width: 93%" v-model="form.domain" placeholder="请输入域名" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" v-show="form.isUsePlatformApp != true">
<el-form-item label="appid" prop="appid"> <el-form-item label="appid" prop="appid">
<el-input style="width: 93%" v-model="form.appid" placeholder="请输入appid" /> <el-input style="width: 93%" v-model="form.appid" placeholder="请输入appid" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-show="form.isUsePlatformApp != true">
<el-form-item label="appSecret" prop="appSecret"> <el-form-item label="appSecret" prop="appSecret">
<el-input v-model="form.appSecret" placeholder="请输入appSecret" /> <el-input v-model="form.appSecret" placeholder="请输入appSecret" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="12" v-show="form.isUsePlatformApp != true">
<el-form-item label="小程序名称" prop="appName">
<el-input style="width: 93%" v-model="form.appName" placeholder="请输入小程序名称" />
</el-form-item>
</el-col>
</el-row>
<h2 style="font-weight: 700;font-size: 18px">支付相关</h2> <h2 style="font-weight: 700;font-size: 18px">支付相关</h2>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -381,6 +400,7 @@ export default {
this.open = true; this.open = true;
this.title = "修改运营商"; this.title = "修改运营商";
this.form.isProfitSharing = this.form.isProfitSharing === 'true'; this.form.isProfitSharing = this.form.isProfitSharing === 'true';
this.form.isUsePlatformApp = this.form.isUsePlatformApp === 'true';
listArea().then(response => { listArea().then(response => {
this.areaOptions = response.rows; this.areaOptions = response.rows;
}); });

View File

@ -97,8 +97,8 @@
<el-table-column label="型号" align="center" prop="model" /> <el-table-column label="型号" align="center" prop="model" />
<el-table-column label="车牌号" align="center" prop="vehicleNum" /> <el-table-column label="车牌号" align="center" prop="vehicleNum" />
<el-table-column label="分区" align="center" prop="areaName" /> <el-table-column label="分区" align="center" prop="areaName" />
<el-table-column label="定位" align="center" prop="location" /> <el-table-column label="定位" align="center" prop="location" :show-overflow-tooltip="true"/>
<el-table-column label="剩余电量" align="center" prop="remainingPower" /> <el-table-column label="剩余电量(%)" align="center" prop="remainingPower" />
<el-table-column label="车辆状态" align="center" prop="status"> <el-table-column label="车辆状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.as_device_status" :value="scope.row.status"/> <dict-tag :options="dict.type.as_device_status" :value="scope.row.status"/>
@ -116,7 +116,7 @@
width="180" width="180"
trigger="hover"> trigger="hover">
<div class="qr-code-box"> <div class="qr-code-box">
<qr-code :text="qrCodeText(d.row.sn)" :width="150" :height="150" /> <qr-code :text="d.row.qrText" :width="150" :height="150" />
</div> </div>
<el-button slot="reference" type="text" icon="el-icon-picture">查看</el-button> <el-button slot="reference" type="text" icon="el-icon-picture">查看</el-button>
</el-popover> </el-popover>
@ -126,10 +126,10 @@
<el-table-column label="纬度" align="center" prop="latitude" /> <el-table-column label="纬度" align="center" prop="latitude" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -145,6 +145,13 @@
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:device:edit']" v-hasPermi="['system:device:edit']"
>修改</el-button> >修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleListing(scope.row)"
v-hasPermi="['system:fault:query']"
>{{ scope.row.status === '0' ? '上架' : '下架' }}</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -177,9 +184,14 @@
<el-input v-model="form.sn" placeholder="请输入设备SN" /> <el-input v-model="form.sn" placeholder="请输入设备SN" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="MAC" prop="mac">
<el-input v-model="form.mac" placeholder="请输入设备MAC" />
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="型号" prop="modelId" > <el-form-item label="型号" prop="modelId" >
<el-select v-model="form.modelId" placeholder="请选择运营区"> <el-select v-model="form.modelId" placeholder="请选择型号">
<el-option <el-option
v-for="item in modelOptions" v-for="item in modelOptions"
:key="item.modelId" :key="item.modelId"
@ -194,6 +206,18 @@
<el-input v-model="form.vehicleNum" placeholder="请输入车牌号" /> <el-input v-model="form.vehicleNum" placeholder="请输入车牌号" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="运营区" prop="areaId" >
<el-select v-model="form.areaId" placeholder="请选择运营区">
<el-option
v-for="item in areaOptions"
:key="item.areaId"
:label="item.areaName"
:value="item.areaId"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="title=='修改设备'"> <el-col :span="12" v-if="title=='修改设备'">
<el-form-item label="剩余电量" prop="remainingPower"> <el-form-item label="剩余电量" prop="remainingPower">
<el-input v-model="form.remainingPower" placeholder="请输入剩余电量" disabled/> <el-input v-model="form.remainingPower" placeholder="请输入剩余电量" disabled/>
@ -226,7 +250,8 @@
<el-form ref="form" :model="form" label-width="100px" size="mini"> <el-form ref="form" :model="form" label-width="100px" size="mini">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="设备编号:">{{ form.mac }}</el-form-item> <el-form-item label="设备mac">{{ form.mac }}</el-form-item>
<el-form-item label="设备sn">{{ form.sn }}</el-form-item>
<el-form-item label="车辆状态:" style="color: #12d2ac;font-weight: 700">{{ form.statusStr }}</el-form-item> <el-form-item label="车辆状态:" style="color: #12d2ac;font-weight: 700">{{ form.statusStr }}</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -299,6 +324,7 @@ import { parseTime } from '../../../utils/ruoyi';
import LocationMap from '@/components/Map/location/LocationMap.vue'; import LocationMap from '@/components/Map/location/LocationMap.vue';
import { listModel} from "@/api/system/model"; import { listModel} from "@/api/system/model";
import QrCode from "@/components/QrCode/index.vue"; import QrCode from "@/components/QrCode/index.vue";
import { listArea } from '@/api/system/area'
export default { export default {
name: "Device", name: "Device",
@ -339,6 +365,8 @@ export default {
open2: false, open2: false,
// //
modelOptions: [], modelOptions: [],
//
areaOptions: [],
// keyarea-map // keyarea-map
// key: 0, // key: 0,
// //
@ -363,19 +391,15 @@ export default {
sn: [ sn: [
{ required: true, message: "SN不能为空", trigger: "blur" } { required: true, message: "SN不能为空", trigger: "blur" }
], ],
mac: [
{ required: true, message: "MAC不能为空", trigger: "blur" }
],
areaId: [
{ required: true, message: "运营区不能为空", trigger: "blur" }
],
} }
}; };
}, },
computed: {
//
qrCodeText() {
return (sn) => {
let text = `https://dianche.chuantewulian.cn?sn=`+ sn;
console.log("qrCodeText===============", text)
return text;
}
},
},
created() { created() {
this.getList(); this.getList();
console.log("------"+this.activeIndex) console.log("------"+this.activeIndex)
@ -428,6 +452,13 @@ export default {
this.deviceList = response.rows; this.deviceList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
listModel(this.queryParams).then(response => {
this.modelOptions = response.rows;
listArea(this.queryParams).then(response => {
this.areaOptions = response.rows;
});
});
}); });
}, },
// //
@ -478,11 +509,8 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
listModel(this.queryParams).then(response => { this.open = true;
this.modelOptions = response.rows; this.title = "添加设备";
this.open = true;
this.title = "添加设备";
});
}, },
/** 详情按钮 */ /** 详情按钮 */
handleView(row) { handleView(row) {
@ -500,6 +528,22 @@ export default {
this.title = "修改设备"; this.title = "修改设备";
}); });
}, },
handleListing(row) {
this.reset();
const deviceId = row.deviceId || this.ids
getDevice(deviceId).then(response => {
let form1 = response.data;
let text = form1.status === '0'? '上架': '下架';
form1.status = form1.status === '0'? '1': '0';
this.$modal.confirm('是否确认'+text+'设备MAC为"' + form1.mac + '"的设备吗?').then(function() {
return updateDevice(form1);
}).then(() => {
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {
});
});
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {

View File

@ -77,6 +77,16 @@
<el-form-item label="套餐名称" prop="name"> <el-form-item label="套餐名称" prop="name">
<el-input v-model="form.name" placeholder="请输入套餐名称" /> <el-input v-model="form.name" placeholder="请输入套餐名称" />
</el-form-item> </el-form-item>
<el-form-item label="运营区" prop="areaId" v-if="userName == 'admin'">
<el-select v-model="form.areaId" placeholder="请选择运营区">
<el-option
v-for="item in areaOptions"
:key="item.areaId"
:label="item.areaName"
:value="item.areaId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="说明" prop="instructions" :show-overflow-tooltip="true"> <el-form-item label="说明" prop="instructions" :show-overflow-tooltip="true">
<editor v-model="form.instructions" :min-height="192"/> <editor v-model="form.instructions" :min-height="192"/>
<!-- <el-input v-model="form.explain" type="textarea" placeholder="请输入内容" /> --> <!-- <el-input v-model="form.explain" type="textarea" placeholder="请输入内容" /> -->
@ -258,19 +268,19 @@
</div> </div>
<el-form-item v-if="form.rentalUnit != 'day'" label="计费周期" prop="chargingCycle"> <el-form-item v-if="form.rentalUnit != 'day'" label="计费周期" prop="chargingCycle">
<el-radio-group v-model="form.chargingCycle"> <el-radio-group v-model="form.chargingCycle">
<el-radio label="1"> <el-radio label="1">
订单生成后 订单生成后
<el-input v-model="time1" <el-input v-model="time1"
style="width: 80px; display: inline-block; margin-left: 10px;" /> style="width: 80px; display: inline-block; margin-left: 10px;" />
小时 小时
</el-radio> </el-radio>
<el-radio label="2"> <el-radio label="2">
自定义时刻 自定义时刻
<el-time-picker v-model="time2" value-format="HH:mm:ss" placeholder="选择时间" style="margin-left: 10px;" /> <el-time-picker v-model="time2" value-format="HH:mm:ss" placeholder="选择时间" style="margin-left: 10px;" />
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="form.rentalUnit != 'day'"> <el-form-item v-if="form.rentalUnit != 'day'">
<div> <div>
@ -301,7 +311,7 @@
<script> <script>
import { listFee, getFee, delFee, addFee, updateFee } from "@/api/system/fee"; import { listFee, getFee, delFee, addFee, updateFee } from "@/api/system/fee";
import { time } from 'echarts'; import { listArea } from '@/api/system/area'
export default { export default {
name: "Fee", name: "Fee",
@ -312,6 +322,8 @@ export default {
loading: true, loading: true,
ids: [], ids: [],
single: true, single: true,
//
areaOptions: [],
multiple: true, multiple: true,
showSearch: true, showSearch: true,
total: 0, total: 0,
@ -480,8 +492,11 @@ export default {
}, },
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; listArea(this.queryParams).then(response => {
this.title = "添加收费方式"; this.areaOptions = response.rows;
this.open = true;
this.title = "添加收费方式";
});
}, },
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();