This commit is contained in:
Lemon
2023-08-25 17:11:33 +08:00

View File

@@ -2,24 +2,28 @@
<div class="app-container"> <div class="app-container">
<el-tabs type="border-card" v-model="activeName" @tab-click="handleClick"> <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="订单" name="order"> <el-tab-pane label="订单" name="order">
<stationOrderList ref="order" :stationId="stationId"/> <stationOrderList ref="order" :stationId="stationId" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="设备" name="pile"> <el-tab-pane label="设备" name="pile">
<pileList ref="pile" :stationId="stationId"/> <pileList ref="pile" :stationId="stationId" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="充电接口" name="connector"> <el-tab-pane label="充电接口" name="connector">
<connectorList ref="connector" :stationId="stationId"/> <connectorList ref="connector" :stationId="stationId" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="基本资料" name="stationInfo"> <el-tab-pane label="基本资料" name="stationInfo">
<div class="over"> <div class="over">
<div id="map_wrap"> <div id="map_wrap">
<MapContainer ref="map" :stationLat="stationLat" :stationLng="stationLng"/> <MapContainer
ref="map"
:stationLat="stationLat"
:stationLng="stationLng"
/>
</div> </div>
<div class="menu"> <div class="menu">
<site-info ref="stationInfo"/> <site-info ref="stationInfo" />
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
@@ -28,7 +32,7 @@
<el-tab-pane label="计费模块" name="billing"> <el-tab-pane label="计费模块" name="billing">
<!-- billing 文件到时引入 --> <!-- billing 文件到时引入 -->
<billing ref="billing" :stationId="stationId"/> <billing ref="billing" :stationId="stationId" />
</el-tab-pane> </el-tab-pane>
<!-- <el-tab-pane label="客户管理" name="member">--> <!-- <el-tab-pane label="客户管理" name="member">-->
@@ -36,19 +40,31 @@
<!-- </el-tab-pane>--> <!-- </el-tab-pane>-->
<el-tab-pane label="运营管理" name="operation"> <el-tab-pane label="运营管理" name="operation">
<el-card style="margin-bottom:10px"> <el-card style="margin-bottom: 10px">
<h2>二维码配置</h2> <h2>二维码配置</h2>
<el-form label-position="right" label-width="200px" style="margin-top:10px"> <el-form
label-position="right"
label-width="200px"
style="margin-top: 10px"
>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="当前配置二维码规则:"> <el-form-item label="当前配置二维码规则:">
<el-input v-model="stationDetail.qrcodePrefix" maxlength="100px" :disabled="true"/> <el-input
v-model="stationDetail.qrcodePrefix"
maxlength="100px"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item>
<el-button icon="el-icon-setting" size="big" @click="handleCreate" <el-button
v-has-permi="['pile:station:edit']">配置参数 icon="el-icon-setting"
size="big"
@click="handleCreate"
v-has-permi="['pile:station:edit']"
>配置参数
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -58,11 +74,20 @@
<el-card> <el-card>
<h2>互联互通配置</h2> <h2>互联互通配置</h2>
<el-button icon="el-icon-edit" size="big" @click="openEdit" v-has-permi="['pile:station:edit']">编辑参数 <el-button
icon="el-icon-edit"
size="big"
@click="openEdit"
v-has-permi="['pile:station:edit']"
>编辑参数
</el-button> </el-button>
<el-form ref="stationSettingForm" :model="stationSettingInfo" label-position="right" <el-form
ref="stationSettingForm"
:model="stationSettingInfo"
label-position="right"
label-width="200px" label-width="200px"
style="margin-top:10px"> style="margin-top: 10px"
>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="对接平台名称:" prop="type"> <el-form-item label="对接平台名称:" prop="type">
@@ -89,47 +114,78 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="对接平台url地址:" prop="urlAddress"> <el-form-item label="对接平台url地址:" prop="urlAddress">
<el-input placeholder="请输入" v-model="stationSettingInfo.urlAddress" <el-input
:disabled="true"/> placeholder="请输入"
v-model="stationSettingInfo.urlAddress"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="运营商ID(OperatorID):" prop="operatorId"> <el-form-item label="运营商ID(OperatorID):" prop="operatorId">
<el-input placeholder="请输入" v-model="stationSettingInfo.operatorId" <el-input
:disabled="true"/> placeholder="请输入"
v-model="stationSettingInfo.operatorId"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="运营商密钥(OperatorSecret):" prop="operatorSecret"> <el-form-item
<el-input placeholder="请输入" v-model="stationSettingInfo.operatorSecret" label="运营商密钥(OperatorSecret):"
:disabled="true"/> prop="operatorSecret"
>
<el-input
placeholder="请输入"
v-model="stationSettingInfo.operatorSecret"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="消息Data密钥(DataSecret):" prop="dataSecret"> <el-form-item
<el-input placeholder="请输入" v-model="stationSettingInfo.dataSecret" label="消息Data密钥(DataSecret):"
:disabled="true"/> prop="dataSecret"
>
<el-input
placeholder="请输入"
v-model="stationSettingInfo.dataSecret"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="签名密钥(SigSecret):" prop="signSecret"> <el-form-item label="签名密钥(SigSecret):" prop="signSecret">
<el-input placeholder="请输入" v-model="stationSettingInfo.signSecret" <el-input
:disabled="true"/> placeholder="请输入"
v-model="stationSettingInfo.signSecret"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="消息Data密钥初始化向量(DataSecretIV):" prop="dataSecretIv"> <el-form-item
<el-input placeholder="请输入" v-model="stationSettingInfo.dataSecretIv" label="消息Data密钥初始化向量(DataSecretIV):"
:disabled="true"/> prop="dataSecretIv"
>
<el-input
placeholder="请输入"
v-model="stationSettingInfo.dataSecretIv"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item>
<el-button size="big" @click="pushStation" v-has-permi="['pile:station:edit']"> <el-button
size="big"
@click="pushStation"
v-has-permi="['pile:station:edit']"
>
推送站点信息 推送站点信息
</el-button> </el-button>
</el-form-item> </el-form-item>
@@ -140,13 +196,22 @@
<el-card> <el-card>
<h2>绑定停车平台(配置完成后订单完成将自动下发优惠券)</h2> <h2>绑定停车平台(配置完成后订单完成将自动下发优惠券)</h2>
<el-button icon="el-icon-edit" size="big" @click="parkingOpenEdit" v-has-permi="['pile:station:edit']">编辑参数 <el-button
icon="el-icon-edit"
size="big"
@click="parkingOpenEdit"
v-has-permi="['pile:station:edit']"
>编辑参数
</el-button> </el-button>
<el-form ref="parkingForm" :model="parkingInfo" label-position="right" <el-form
ref="parkingForm"
:model="parkingInfo"
label-position="right"
label-width="200px" label-width="200px"
style="margin-top:10px"> style="margin-top: 10px"
>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="5">
<el-form-item label="停车平台名称:" prop="type"> <el-form-item label="停车平台名称:" prop="type">
<el-select <el-select
v-model="parkingInfo.parkingName" v-model="parkingInfo.parkingName"
@@ -167,55 +232,70 @@
<!-- <el-input placeholder="请输入" v-model="stationSettingInfo.type" :disabled="disableFlag"/>--> <!-- <el-input placeholder="请输入" v-model="stationSettingInfo.type" :disabled="disableFlag"/>-->
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="停车场库商户id:" prop="parkingMerchantId"> <el-form-item>
<el-input placeholder="请输入" v-model="parkingInfo.parkingMerchantId" <el-button
:disabled="true"/> size="big"
@click="saveParkingSetting(parkingInfo.id)"
v-has-permi="['pile:station:edit']"
>
保存
</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="停车场库secretKey:" prop="secretKey"> <el-form-item label="停车场库secretKey:" prop="secretKey">
<el-input placeholder="请输入" v-model="parkingInfo.secretKey" <el-input
:disabled="true"/> placeholder="请输入"
v-model="parkingInfo.secretKey"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="停车场库appId:" prop="appId"> <el-form-item label="停车场库appId:" prop="appId">
<el-input placeholder="请输入" v-model="parkingInfo.appId" <el-input
:disabled="true"/> placeholder="请输入"
v-model="parkingInfo.appId"
:disabled="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="票券id:" prop="couponId"> <el-form-item label="票券id:" prop="couponId">
<el-input placeholder="请输入" v-model="parkingInfo.couponId" <el-input
:disabled="true"/> placeholder="请输入"
v-model="parkingInfo.couponId"
:disabled="false"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item label="停车场库商户id:" prop="parkingMerchantId">
<el-button size="big" @click="saveParkingSetting(parkingInfo.id)" v-has-permi="['pile:station:edit']"> <el-input
保存 placeholder="请输入"
</el-button> v-model="parkingInfo.parkingMerchantId"
:disabled="false"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-card> </el-card>
<el-card style="margin-top: 10px">
<el-card style="margin-top:10px">
<h2>地锁二维码</h2> <h2>地锁二维码</h2>
<el-form label-position="right" label-width="200px" style="margin-top:10px"> <el-form
label-position="right"
label-width="200px"
style="margin-top: 10px"
>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="查询地锁列表二维码:"/> <el-form-item label="查询地锁列表二维码:" />
<div> <div>
<vue-qr <vue-qr
ref="Qrcode" ref="Qrcode"
@@ -226,15 +306,13 @@
/> />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-card> </el-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="站点白名单" name="whitelist"> <el-tab-pane label="站点白名单" name="whitelist">
<whitelist ref="whitelist" :stationId="stationId"/> <whitelist ref="whitelist" :stationId="stationId" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="订单日报" name="orderReport"> <el-tab-pane label="订单日报" name="orderReport">
@@ -245,7 +323,11 @@
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible"> <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible">
<el-form ref="form" :model="form" @submit.native.prevent> <el-form ref="form" :model="form" @submit.native.prevent>
<el-form-item label="二维码前缀:" prop="prefix" label-width="100px"> <el-form-item label="二维码前缀:" prop="prefix" label-width="100px">
<el-input v-model="form.prefix" placeholder="请输入二维码前缀" style="width: 300px"/> <el-input
v-model="form.prefix"
placeholder="请输入二维码前缀"
style="width: 300px"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer" align="center"> <div slot="footer" class="dialog-footer" align="center">
@@ -271,10 +353,12 @@ import {
getSettingByStationId, getSettingByStationId,
updateSettingByStationId, updateSettingByStationId,
pushStationInfo, pushStationInfo,
getSettingInfo, getParkingInfoList, bindParkingPlatform, getSettingInfo,
getParkingInfoList,
bindParkingPlatform,
} from "@/api/pile/station"; } from "@/api/pile/station";
import Whitelist from "@/views/pile/station/stationWhiteList"; import Whitelist from "@/views/pile/station/stationWhiteList";
import OrderReport from './orderReport.vue'; import OrderReport from "./orderReport.vue";
export default { export default {
dicts: ["third_party_type"], dicts: ["third_party_type"],
@@ -288,19 +372,19 @@ export default {
MapContainer, MapContainer,
stationOrderList, stationOrderList,
stationWhiteList, stationWhiteList,
OrderReport OrderReport,
}, },
data() { data() {
return { return {
activeName: 'pile', activeName: "pile",
form: { form: {
prefix: '', prefix: "",
}, },
parkingInfo: {}, parkingInfo: {},
parkingInfoList: [], parkingInfoList: [],
queryGroundLockQrCode: '', queryGroundLockQrCode: "",
dialogTitle: '', dialogTitle: "",
qrcodePrefix: '', qrcodePrefix: "",
dialogFormVisible: false, dialogFormVisible: false,
stationId: this.$route.params.id, stationId: this.$route.params.id,
stationName: this.$route.params.stationName, stationName: this.$route.params.stationName,
@@ -315,11 +399,13 @@ export default {
created() { created() {
// console.log(this.stationId, "充电桩详情 create"); // console.log(this.stationId, "充电桩详情 create");
// const stationId = this.stationId; // const stationId = this.stationId;
this.queryGroundLockQrCode = 'https://api.jsowellcloud.com/app-xcx-h5/getGroundLockInfo/' + this.stationId; this.queryGroundLockQrCode =
"https://api.jsowellcloud.com/app-xcx-h5/getGroundLockInfo/" +
this.stationId;
const stationName = this.stationName; const stationName = this.stationName;
const title = "【" + stationName + "】站点详情"; const title = "【" + stationName + "】站点详情";
const route = Object.assign({}, this.$route, {title: `${title}`}) const route = Object.assign({}, this.$route, { title: `${title}` });
this.$store.dispatch('tagsView/updateVisitedView', route); this.$store.dispatch("tagsView/updateVisitedView", route);
this.getParkingList(); this.getParkingList();
this.queryStationInfo(); this.queryStationInfo();
this.getStationSettingInfo(); this.getStationSettingInfo();
@@ -334,7 +420,7 @@ export default {
}, },
// 执行对应页面的查询数据方法 // 执行对应页面的查询数据方法
initializeData(name) { initializeData(name) {
console.log("执行对应页面的查询数据方法", name) console.log("执行对应页面的查询数据方法", name);
if (name === "pile") { if (name === "pile") {
this.$refs.pile.getPileList(); this.$refs.pile.getPileList();
} else if (name === "connector") { } else if (name === "connector") {
@@ -346,7 +432,7 @@ export default {
this.$refs.stationInfo.queryStationInfo(); this.$refs.stationInfo.queryStationInfo();
} else if (name === "order") { } else if (name === "order") {
this.$refs.order.dataLoading(); this.$refs.order.dataLoading();
} else if (name === 'orderReport') { } else if (name === "orderReport") {
this.$refs.orderReport.getList(); this.$refs.orderReport.getList();
} }
}, },
@@ -355,12 +441,12 @@ export default {
getStationInfo(this.stationId).then((res) => { getStationInfo(this.stationId).then((res) => {
// console.log(res); // console.log(res);
this.stationDetail = res.data; this.stationDetail = res.data;
this.stationLat = res.data.stationLat this.stationLat = res.data.stationLat;
this.stationLng = res.data.stationLng this.stationLng = res.data.stationLng;
console.log(this.stationLat, this.stationLng, "父组件里面的经纬度") console.log(this.stationLat, this.stationLng, "父组件里面的经纬度");
console.log("res.data", res.data) console.log("res.data", res.data);
if (res.data.parkingId != null) { if (res.data.parkingId != null) {
this.getParkingInfo(parseInt(res.data.parkingId)) this.getParkingInfo(parseInt(res.data.parkingId));
} }
}); });
console.log("queryStationInfo==", this.stationDetail); console.log("queryStationInfo==", this.stationDetail);
@@ -368,49 +454,49 @@ export default {
// 查询站点互联互通配置信息 // 查询站点互联互通配置信息
getStationSettingInfo() { getStationSettingInfo() {
getSettingByStationId(this.stationId).then((res) => { getSettingByStationId(this.stationId).then((res) => {
console.log("stationId:", this.stationId) console.log("stationId:", this.stationId);
console.log("getSettingByStationId==", res.data === undefined) console.log("getSettingByStationId==", res.data === undefined);
if (res.data === undefined) { if (res.data === undefined) {
this.stationSettingInfo.thirdPartyType = "0"; this.stationSettingInfo.thirdPartyType = "0";
} else { } else {
this.stationSettingInfo = res.data; this.stationSettingInfo = res.data;
} }
}) });
}, },
// 根据对接平台类型查询配置信息 // 根据对接平台类型查询配置信息
getSettingParams() { getSettingParams() {
const param = { const param = {
// stationId: this.stationId, // stationId: this.stationId,
thirdPartyType: this.stationSettingInfo.type, thirdPartyType: this.stationSettingInfo.type,
} };
console.log("param", param); console.log("param", param);
getSettingInfo(param).then((res) => { getSettingInfo(param).then((res) => {
console.log("getSettingInfo", res) console.log("getSettingInfo", res);
if (res.data === undefined) { if (res.data === undefined) {
this.stationSettingInfo = []; this.stationSettingInfo = [];
} else { } else {
this.stationSettingInfo = res.data; this.stationSettingInfo = res.data;
} }
}) });
}, },
// 获取停车平台列表 // 获取停车平台列表
getParkingList() { getParkingList() {
getParkingInfoList().then((response) => { getParkingInfoList().then((response) => {
console.info("response", response) console.info("response", response);
this.parkingInfoList = response.obj; this.parkingInfoList = response.obj;
}) });
}, },
// 通过id获取停车平台信息 // 通过id获取停车平台信息
getParkingInfo(parkingId) { getParkingInfo(parkingId) {
console.log("parkingId", parkingId) console.log("parkingId", parkingId);
this.parkingInfoList.forEach(item => { this.parkingInfoList.forEach((item) => {
if (parkingId === item.id) { if (parkingId === item.id) {
console.log("item", item) console.log("item", item);
this.parkingInfo = item; this.parkingInfo = item;
// console.log("this.parkingInfo", this.parkingInfo) console.log("this.parkingInfo", this.parkingInfo)
} }
}) });
}, },
// 开放编辑按钮 // 开放编辑按钮
@@ -418,7 +504,7 @@ export default {
this.disableFlag = this.disableFlag === false; this.disableFlag = this.disableFlag === false;
}, },
parkingOpenEdit() { parkingOpenEdit() {
this.parkingDisableFlag = this.parkingDisableFlag === false; this.parkingDisableFlag = !this.parkingDisableFlag;
}, },
// 提交配置设置 // 提交配置设置
@@ -431,48 +517,48 @@ export default {
dataSecret: this.stationSettingInfo.dataSecret, dataSecret: this.stationSettingInfo.dataSecret,
signSecret: this.stationSettingInfo.signSecret, signSecret: this.stationSettingInfo.signSecret,
dataSecretIv: this.stationSettingInfo.dataSecretIv, dataSecretIv: this.stationSettingInfo.dataSecretIv,
} };
console.log("param:", param); console.log("param:", param);
this.$refs.stationSettingForm.validate((valid) => { this.$refs.stationSettingForm.validate((valid) => {
if (valid) { if (valid) {
updateSettingByStationId(param).then((response) => { updateSettingByStationId(param).then((response) => {
this.$modal.msgSuccess('修改成功') this.$modal.msgSuccess("修改成功");
this.disableFlag = true; this.disableFlag = true;
}) });
} else { } else {
return false return false;
} }
}) });
}, },
// 推送站点 // 推送站点
pushStation() { pushStation() {
const param = { const param = {
stationId: this.stationId, stationId: this.stationId,
thirdPartyType: this.stationSettingInfo.type, thirdPartyType: this.stationSettingInfo.type,
} };
pushStationInfo(param).then((response) => { pushStationInfo(param).then((response) => {
console.log("response", response) console.log("response", response);
this.$modal.msg(response.obj) this.$modal.msg(response.obj);
this.disableFlag = true; this.disableFlag = true;
}) });
}, },
// 绑定站点与停车平台配置 // 绑定站点与停车平台配置
saveParkingSetting(parkingId) { saveParkingSetting(parkingId) {
console.log("parkingId", parkingId) console.log("parkingId", parkingId, this.stationId);
const params = { const params = {
stationId: this.stationId, stationId: this.stationId,
parkingId: parkingId, parkingId: parkingId,
} };
bindParkingPlatform(params).then(response => { bindParkingPlatform(params).then((response) => {
console.log("绑定站点与停车平台配置 response", response) console.log("绑定站点与停车平台配置 response", response);
}) });
}, },
// 配置参数按钮 // 配置参数按钮
handleCreate() { handleCreate() {
this.dialogTitle = '配置参数'; this.dialogTitle = "配置参数";
this.form = { this.form = {
prefix: '', prefix: "",
}; };
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
@@ -480,26 +566,26 @@ export default {
submitForm(form) { submitForm(form) {
const param = { const param = {
stationId: this.stationId, stationId: this.stationId,
qrcodePrefix: this.form.prefix qrcodePrefix: this.form.prefix,
} };
console.log("form:", this.form); console.log("form:", this.form);
console.log("param:", param); console.log("param:", param);
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
updateStationQRCodePrefix(param).then((response) => { updateStationQRCodePrefix(param).then((response) => {
this.$modal.msgSuccess('修改成功') this.$modal.msgSuccess("修改成功");
this.dialogFormVisible = false this.dialogFormVisible = false;
}) });
} else { } else {
return false return false;
} }
}) });
}, },
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.dialogFormVisible = false this.dialogFormVisible = false;
} },
} },
}; };
</script> </script>
@@ -509,4 +595,7 @@ export default {
height: 400px; height: 400px;
// margin-left: 50%; transform: translate(-50%,0); // margin-left: 50%; transform: translate(-50%,0);
} }
::v-deep .el-input--medium {
width: 400px;
}
</style> </style>