Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-hs into develop

wangqin
qingzhengli 9 months ago
parent
commit
fc3696566c
  1. 2
      ruoyi-ui/src/assets/styles/JiHeExpressway.scss
  2. 278
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue
  3. 64
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue
  4. 123
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/AddNEditDialog.vue
  5. 23
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
  6. 27
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/eventPlanDialog/index.vue
  7. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  8. 12
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  9. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  10. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue
  11. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue
  12. 62
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/assets/charts.js
  13. 39
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue
  14. 3
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/assets/styles/JiHeExpressway.scss

@ -98,7 +98,7 @@
color: #fff; color: #fff;
&.is-disabled { &.is-disabled {
color: #096d8c; color: #fff;
} }
} }

278
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue

@ -5,22 +5,30 @@
<Form v-if="!data" :formList="formList" column="2" ref="FormRef" /> <Form v-if="!data" :formList="formList" column="2" ref="FormRef" />
<div v-if="peopleList.length" class="people"> <div v-if="peopleList.length" class="people">
<div v-for=" item in peopleList" :class="{ active: getActive(item) }" :key="item.id" <div
@click="chooseDutyPerson(item)"> v-for="item in peopleList"
<span>{{ item.name || '-' }}</span> :class="{ active: getActive(item) }"
<span>{{ item.contactNumber || '-' }}</span> :key="item.id"
@click="chooseDutyPerson(item)"
>
<span>{{ item.name || "-" }}</span>
<span>{{ item.contactNumber || "-" }}</span>
</div> </div>
</div> </div>
<div v-else class="people no-data">暂无人员</div> <div v-else class="people no-data">暂无人员</div>
<img src="./../images/Line.svg"> <img src="./../images/Line.svg" />
<div class="dutyPeople"> <div class="dutyPeople">
<div :class="['line', { active: active == 'dayShift' }]"> <div :class="['line', { active: active == 'dayShift' }]">
<p @click="active = 'dayShift'">白天值班:</p> <p @click="active = 'dayShift'">白天值班:</p>
<div> <div>
<p v-for="(item, index) in dayShift" :key="`${item.id}_${index}`" @click="removeDutyPerson(item)"> <p
v-for="(item, index) in dayShift"
:key="`${item.id}_${index}`"
@click="removeDutyPerson(item)"
>
{{ item.name }} {{ item.name }}
</p> </p>
<div class="no-data" v-if="!dayShift.length">未添加人员</div> <div class="no-data" v-if="!dayShift.length">未添加人员</div>
@ -30,17 +38,28 @@
<div :class="['line', { active: active == 'graveyardShift' }]"> <div :class="['line', { active: active == 'graveyardShift' }]">
<p @click="active = 'graveyardShift'">晚上值班:</p> <p @click="active = 'graveyardShift'">晚上值班:</p>
<div> <div>
<p v-for="(item, index) in graveyardShift" :key="`${index}_${item.id}`" @click="removeDutyPerson(item)"> <p
v-for="(item, index) in graveyardShift"
:key="`${index}_${item.id}`"
@click="removeDutyPerson(item)"
>
{{ item.name }} {{ item.name }}
</p> </p>
<div class="no-data" v-if="!graveyardShift.length">未添加人员</div> <div class="no-data" v-if="!graveyardShift.length">
未添加人员
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<template #footer> <template #footer>
<Button :style="{ backgroundColor: '#C9C9C9' }" @click.native="$emit('close')"> 取消</Button> <Button
:style="{ backgroundColor: '#0E708B' }"
@click.native="$emit('close')"
>
取消</Button
>
<Button @click.native="submit">确认</Button> <Button @click.native="submit">确认</Button>
</template> </template>
</Dialog> </Dialog>
@ -48,34 +67,34 @@
<script> <script>
import Dialog from "@screen/components/Dialog/index.vue"; import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue" import Button from "@screen/components/Buttons/Button.vue";
import InputSearch from '@screen/components/InputSearch/index.vue'; import InputSearch from "@screen/components/InputSearch/index.vue";
import Form from '@screen/components/FormConfig'; import Form from "@screen/components/FormConfig";
import { loadingMessage } from '@screen/utils/common'; import { loadingMessage } from "@screen/utils/common";
import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js"; import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js";
import request from "@/utils/request"; import request from "@/utils/request";
import { Message } from "element-ui"; import { Message } from "element-ui";
export default { export default {
name: 'ModifyDutyInformationTable', name: "ModifyDutyInformationTable",
components: { components: {
Dialog, Dialog,
Button, Button,
InputSearch, InputSearch,
Form Form,
}, },
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
data: { data: {
type: Object, type: Object,
default: null default: null,
} },
}, },
emit: ['close'], emit: ["close"],
data() { data() {
return { return {
formList: [ formList: [
@ -85,11 +104,11 @@ export default {
type: "select", type: "select",
required: true, required: true,
options: { options: {
options: [] options: [],
}, },
ons: { ons: {
change: (id) => this.getPeopleList(id) change: (id) => this.getPeopleList(id),
} },
}, },
{ {
label: "日期:", label: "日期:",
@ -97,29 +116,30 @@ export default {
required: true, required: true,
type: "datePicker", type: "datePicker",
options: { options: {
valueFormat: "yyyy-MM-dd" valueFormat: "yyyy-MM-dd",
} },
}, },
], ],
value2: null, value2: null,
dayShift: [], dayShift: [],
graveyardShift: [], graveyardShift: [],
peopleList: [], peopleList: [],
active: 'dayShift' active: "dayShift",
} };
}, },
computed: { computed: {
visibleModel: { visibleModel: {
get() { get() {
return this.visible return this.visible;
}, },
set(bool) { set(bool) {
this.$emit('close', bool); this.$emit("close", bool);
} },
}, },
getActive() { getActive() {
return data => this[this.active].findIndex(item => item.id === data.id) != -1; return (data) =>
} this[this.active].findIndex((item) => item.id === data.id) != -1;
},
}, },
watch: { watch: {
visible: { visible: {
@ -127,33 +147,36 @@ export default {
async handler(bool) { async handler(bool) {
if (!bool) return; if (!bool) return;
this.dayShift = [...this.data?.dayShift || []]; this.dayShift = [...(this.data?.dayShift || [])];
this.graveyardShift = [...this.data?.graveyardShift || []]; this.graveyardShift = [...(this.data?.graveyardShift || [])];
if (!this.data) { if (!this.data) {
const result = await getSelectOptionsStation(2); const result = await getSelectOptionsStation(2);
this.formList[0].options.options = (result || []); this.formList[0].options.options = result || [];
return; return;
} }
this.getPeopleList(this.data.station); this.getPeopleList(this.data.station);
} },
} },
}, },
methods: { methods: {
chooseDutyPerson(item) { chooseDutyPerson(item) {
const hasInserted = this[this.active].find(
const hasInserted = this[this.active].find(_item => _item.employeesId === item.id || _item.id === item.id); (_item) => _item.employeesId === item.id || _item.id === item.id
);
if (hasInserted) return Message.warning("人员已存在"); if (hasInserted) return Message.warning("人员已存在");
this[this.active].push(item) this[this.active].push(item);
}, },
removeDutyPerson(item) { removeDutyPerson(item) {
const index = this[this.active].findIndex(_item => _item.id === item.id); const index = this[this.active].findIndex(
(_item) => _item.id === item.id
);
if (index === -1) return;//Message.warning(""); if (index === -1) return; //Message.warning("");
this[this.active].splice(index, 1); this[this.active].splice(index, 1);
}, },
@ -169,20 +192,23 @@ export default {
url: `/business/employees/list`, url: `/business/employees/list`,
method: "GET", method: "GET",
params: { params: {
organizationId: stationId organizationId: stationId,
} },
}).then((result) => { })
.then((result) => {
if (result.code != 200) return Message.error("人员获取失败"); if (result.code != 200) return Message.error("人员获取失败");
if (!result.rows?.length) return Message.warning("该驻点下暂无人员"); if (!result.rows?.length) return Message.warning("该驻点下暂无人员");
// Message.success("") // Message.success("")
this.peopleList = result.rows; this.peopleList = result.rows;
}).catch((err) => {
Message.error("人员获取失败")
}).finally(() => {
closeMessage();
}) })
.catch((err) => {
Message.error("人员获取失败");
})
.finally(() => {
closeMessage();
});
//, //,
if (this.data) { if (this.data) {
@ -192,17 +218,24 @@ export default {
data: { data: {
station: this.data.station, station: this.data.station,
date: this.data.date, date: this.data.date,
} },
}).then((result) => { })
.then((result) => {
console.log("result.data:", result.data); console.log("result.data:", result.data);
this.dayShift = result.data.filter(item => item.scheduling === "1"); this.dayShift = result.data.filter(
(item) => item.scheduling === "1"
);
console.log("this.dayShift11:", this.dayShift); console.log("this.dayShift11:", this.dayShift);
this.graveyardShift = result.data.filter(item => item.scheduling === "2"); this.graveyardShift = result.data.filter(
}).catch((err) => { (item) => item.scheduling === "2"
Message.error("人员获取失败") );
}).finally(() => { })
closeMessage(); .catch((err) => {
Message.error("人员获取失败");
}) })
.finally(() => {
closeMessage();
});
} }
}, },
updateData(data) { updateData(data) {
@ -216,16 +249,16 @@ export default {
//,id //,id
employeesId: item.employeesId ? item.employeesId : item.id, employeesId: item.employeesId ? item.employeesId : item.id,
scheduling: 1, scheduling: 1,
station: data.station station: data.station,
})), })),
...this.graveyardShift.map((item) => ({ ...this.graveyardShift.map((item) => ({
employeesId: item.employeesId ? item.employeesId : item.id, employeesId: item.employeesId ? item.employeesId : item.id,
scheduling: 2, scheduling: 2,
station: data.station station: data.station,
})), })),
] ],
} },
}) });
}, },
async submit() { async submit() {
let data = this.data; let data = this.data;
@ -235,38 +268,44 @@ export default {
} }
// console.log("%c [ data ]-202-ModifyDutyInformationTable.vue", "font-size:15px; background:#9afce6; color:#deffff;", data, this.value2); // console.log("%c [ data ]-202-ModifyDutyInformationTable.vue", "font-size:15px; background:#9afce6; color:#deffff;", data, this.value2);
const closeMessage = loadingMessage({ message: "正在保存值班信息111..." }); const closeMessage = loadingMessage({
message: "正在保存值班信息111...",
});
if (!this.data) { if (!this.data) {
this.updateData(data).then((result) => { this.updateData(data)
.then((result) => {
// console.log("%c [ result ]-217-ModifyDutyInformationTable.vue", "font-size:15px; background:#335cf6; color:#77a0ff;", result); // console.log("%c [ result ]-217-ModifyDutyInformationTable.vue", "font-size:15px; background:#335cf6; color:#77a0ff;", result);
if (result.code != 200) return Message.error("保存失败"); if (result.code != 200) return Message.error("保存失败");
Message.success("保存成功"); Message.success("保存成功");
this.$emit('close') this.$emit("close");
}).catch((err) => { })
Message.error("保存失败") .catch((err) => {
}).finally(() => { Message.error("保存失败");
closeMessage();
}) })
.finally(() => {
closeMessage();
});
return; return;
} else { } else {
const deleteIds = []; const deleteIds = [];
(this.data.dayShift || []).forEach(item => { (this.data.dayShift || []).forEach((item) => {
const findIndex = this.dayShift.findIndex(_item => _item.id === item.id); const findIndex = this.dayShift.findIndex(
(_item) => _item.id === item.id
);
if (findIndex === -1) deleteIds.push(item.id) if (findIndex === -1) deleteIds.push(item.id);
}); });
(this.data.graveyardShift || []).forEach(item => { (this.data.graveyardShift || []).forEach((item) => {
const findIndex = this.graveyardShift.findIndex(_item => _item.id === item.id); const findIndex = this.graveyardShift.findIndex(
(_item) => _item.id === item.id
);
if (findIndex === -1) deleteIds.push(item.id)
})
if (findIndex === -1) deleteIds.push(item.id);
});
// Promise.allSettled([ // Promise.allSettled([
// deleteIds?.length ? request({ // deleteIds?.length ? request({
@ -285,51 +324,59 @@ export default {
// }) // })
//,, //,,
if(deleteIds?.length){ if (deleteIds?.length) {
request({ request({
url: `/business/shifts/${deleteIds.join()}`, url: `/business/shifts/${deleteIds.join()}`,
method: "DELETE", method: "DELETE",
data: {} data: {},
}).then((result) => { })
.then((result) => {
if (result.code != 200) return Message.error("修改失败"); if (result.code != 200) return Message.error("修改失败");
this.updateData(this.data).then((result) => { this.updateData(this.data)
.then((result) => {
if (result.code != 200) return Message.error("修改失败"); if (result.code != 200) return Message.error("修改失败");
Message.success("修改成功"); Message.success("修改成功");
this.$emit('close') this.$emit("close");
}).catch((err) => { })
Message.error("修改失败") .catch((err) => {
}).finally(() => { Message.error("修改失败");
closeMessage();
}) })
}).catch((err) => { .finally(() => {
Message.error("删除失败")
}).finally(() => {
closeMessage(); closeMessage();
});
})
.catch((err) => {
Message.error("删除失败");
}) })
}else{ .finally(() => {
this.updateData(this.data).then((result) => { closeMessage();
});
} else {
this.updateData(this.data)
.then((result) => {
if (result.code != 200) return Message.error("修改失败"); if (result.code != 200) return Message.error("修改失败");
Message.success("修改成功"); Message.success("修改成功");
this.$emit('close') this.$emit("close");
}).catch((err) => {
Message.error("修改失败")
}).finally(() => {
closeMessage();
}) })
} .catch((err) => {
Message.error("修改失败");
} })
.finally(() => {
closeMessage();
});
} }
} }
} },
},
};
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.ModifyDutyInformationTable { .ModifyDutyInformationTable {
width: 947px; width: 947px;
height: 658px; height: 658px;
@ -343,7 +390,6 @@ export default {
gap: 24px; gap: 24px;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.body { .body {
@ -363,14 +409,14 @@ export default {
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
>div { > div {
background: #0D5F79; background: #0d5f79;
height: 65px; height: 65px;
border-radius: 2px; border-radius: 2px;
font-size: 16px; font-size: 16px;
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #ffffff;
letter-spacing: 1px; letter-spacing: 1px;
display: flex; display: flex;
@ -382,7 +428,7 @@ export default {
} }
.active { .active {
background: linear-gradient(180deg, #00AEE5 0%, #0086B1 100%); background: linear-gradient(180deg, #00aee5 0%, #0086b1 100%);
} }
} }
@ -393,11 +439,15 @@ export default {
.active { .active {
p { p {
background: linear-gradient(180deg, rgba(1, 167, 220, 0) 0%, #01A7DC 100%); background: linear-gradient(
180deg,
rgba(1, 167, 220, 0) 0%,
#01a7dc 100%
);
} }
} }
>div { > div {
display: flex; display: flex;
gap: 9px; gap: 9px;
border-radius: 2px; border-radius: 2px;
@ -405,7 +455,11 @@ export default {
overflow: hidden; overflow: hidden;
p { p {
background: linear-gradient(180deg, rgba(0, 148, 255, 0) 0%, rgba(37, 124, 255, .15) 100%); background: linear-gradient(
180deg,
rgba(0, 148, 255, 0) 0%,
rgba(37, 124, 255, 0.15) 100%
);
height: 42px; height: 42px;
display: flex; display: flex;
align-items: center; align-items: center;
@ -414,14 +468,14 @@ export default {
font-size: 16px; font-size: 16px;
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #ffffff;
border-radius: 2px; border-radius: 2px;
cursor: pointer; cursor: pointer;
} }
>div { > div {
flex: 1; flex: 1;
display: flex; display: flex;
gap: 9px; gap: 9px;

64
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue

@ -1,13 +1,21 @@
<template> <template>
<Dialog v-model="visibleModel" title="操作记录"> <Dialog v-model="visibleModel" title="操作记录">
<div class="OperateRecord"> <div class="OperateRecord">
<TimeLine v-if="timeLine2List.length" :data="timeLine2List" direction="right" /> <TimeLine
v-if="timeLine2List.length"
:data="timeLine2List"
direction="right"
/>
<div class="no-data" v-else>暂无操作记录</div> <div class="no-data" v-else>暂无操作记录</div>
<div class="bottom"> <div class="bottom">
<Button @click.native="$emit('close')">确认</Button> <Button
<Button :style="{ backgroundColor: '#C9C9C9' }" @click.native="$emit('close')"> 取消</Button> :style="{ backgroundColor: '#0E708B' }"
@click.native="$emit('close')"
>
取消</Button
><Button @click.native="$emit('close')">确认</Button>
</div> </div>
</div> </div>
</Dialog> </Dialog>
@ -16,28 +24,28 @@
<script> <script>
import Dialog from "@screen/components/Dialog/index.vue"; import Dialog from "@screen/components/Dialog/index.vue";
import TimeLine from "@screen/components/TimeLine/TimeLine2/index.vue"; import TimeLine from "@screen/components/TimeLine/TimeLine2/index.vue";
import Button from "@screen/components/Buttons/Button.vue" import Button from "@screen/components/Buttons/Button.vue";
import request from "@/utils/request"; import request from "@/utils/request";
export default { export default {
name: 'OperateRecord', name: "OperateRecord",
components: { components: {
Dialog, Dialog,
Button, Button,
TimeLine TimeLine,
}, },
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
data: { data: {
type: Object, type: Object,
default: null default: null,
} },
}, },
emit: ['close'], emit: ["close"],
data() { data() {
return { return {
// timeLine2List: Array.from({ length: 6 }).map(() => ({ // timeLine2List: Array.from({ length: 6 }).map(() => ({
@ -47,19 +55,19 @@ export default {
// desc: "", // desc: "",
// posts: '' // posts: ''
// })), // })),
timeLine2List: [] timeLine2List: [],
} };
}, },
computed: { computed: {
visibleModel: { visibleModel: {
get() { get() {
if (this.visible) this.getData(); if (this.visible) this.getData();
return this.visible return this.visible;
}, },
set(bool) { set(bool) {
this.$emit('close', bool); this.$emit("close", bool);
} },
} },
}, },
methods: { methods: {
getData() { getData() {
@ -69,26 +77,26 @@ export default {
data: { data: {
date: this.data.date, date: this.data.date,
station: this.data.station, station: this.data.station,
} },
}) })
.then(result => { .then((result) => {
if (result.code != 200) return Message.error("获取失败"); if (result.code != 200) return Message.error("获取失败");
this.timeLine2List = result.rows.map(item => ({ this.timeLine2List = result.rows.map((item) => ({
time: item.operationTime, time: item.operationTime,
name: item.nickName, name: item.nickName,
desc: item.modifyContent, desc: item.modifyContent,
posts: "操作员" posts: "操作员",
})) }));
}) })
.catch(() => { .catch(() => {
Message.error("获取失败") Message.error("获取失败");
}) });
} },
} },
} };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.OperateRecord { .OperateRecord {
width: 540px; width: 540px;
height: 518px; height: 518px;
@ -102,7 +110,7 @@ export default {
gap: 15px; gap: 15px;
justify-content: end; justify-content: end;
>div { > div {
width: 96px; width: 96px;
} }
} }

123
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/AddNEditDialog.vue

@ -1,62 +1,70 @@
<template> <template>
<Dialog v-model="modelVisible" :title="data ? '修改' : '新增'"> <Dialog v-model="modelVisible" :title="data ? '修改' : '新增11'">
<div class='AddNEditDialog'> <div class="AddNEditDialog">
<Form :value="formData" class="form" ref="FormConfigRef" :formList="formList" column="1" labelWidth="120px" /> <Form
:value="formData"
class="form"
ref="FormConfigRef"
:formList="formList"
column="1"
labelWidth="120px"
/>
</div> </div>
<template #footer> <template #footer>
<Button style="background-color: rgba(0, 179, 204, .3);" @click.native="modelVisible = false, submitting = false"> <Button
style="background-color: rgba(0, 179, 204, 0.3)"
@click.native="(modelVisible = false), (submitting = false)"
>
取消 取消
</Button> </Button>
<Button @click.native="handleSubmit" :loading="submitting"> <Button @click.native="handleSubmit" :loading="submitting"> 确定 </Button>
确定
</Button>
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script> <script>
import Dialog from "@screen/components/Dialog/index.vue"; import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue" import Button from "@screen/components/Buttons/Button.vue";
import Form from '@screen/components/FormConfig'; import Form from "@screen/components/FormConfig";
import request from "@/utils/request"; import request from "@/utils/request";
import { Message } from "element-ui"; import { Message } from "element-ui";
import { addEditFormList } from "./../data" import { addEditFormList } from "./../data";
import { stakeMarkToArray, findPathIdByTreeId } from "@screen/utils/index.js" import { stakeMarkToArray, findPathIdByTreeId } from "@screen/utils/index.js";
export default { export default {
name: 'AddNEditDialog', name: "AddNEditDialog",
components: { components: {
Dialog, Dialog,
Button, Button,
Form Form,
}, },
model: { model: {
prop: 'visible', prop: "visible",
event: "update:value" event: "update:value",
}, },
props: { props: {
visible: Boolean, visible: Boolean,
data: Object data: Object,
}, },
inject: ['setCurrentPage'], inject: ["setCurrentPage"],
data() { data() {
return { return {
submitting: false, submitting: false,
formData: {}, formData: {},
formList: addEditFormList formList: addEditFormList,
} };
}, },
computed: { computed: {
modelVisible: { modelVisible: {
get() { get() {
return this.visible return this.visible;
}, },
set(val) { set(val) {
this.$emit('update:value', val) this.$emit("update:value", val);
} },
} },
}, },
watch: { watch: {
modelVisible: { modelVisible: {
@ -64,16 +72,18 @@ export default {
handler(bool) { handler(bool) {
if (!bool) return; if (!bool) return;
this.formData = !this.data ? {} : { this.formData = !this.data
? {}
: {
...this.data, ...this.data,
deptId: [], deptId: [],
endStakeMark: stakeMarkToArray(this.data.endStakeMark), endStakeMark: stakeMarkToArray(this.data.endStakeMark),
startStakeMark: stakeMarkToArray(this.data.startStakeMark), startStakeMark: stakeMarkToArray(this.data.startStakeMark),
} };
this.getSelectOptions(); this.getSelectOptions();
} },
} },
}, },
methods: { methods: {
getSelectOptions() { getSelectOptions() {
@ -85,62 +95,73 @@ export default {
request({ request({
url: `/business/roadSection/roadList`, url: `/business/roadSection/roadList`,
method: "POST", method: "POST",
data: {} data: {},
}), }),
]) ]).then(([departmentData, roadData]) => {
.then(([departmentData, roadData]) => { if (
departmentData.status != "rejected" &&
if (departmentData.status != 'rejected' && departmentData.value.code == 200) { departmentData.value.code == 200
) {
this.formList[0].options.options = departmentData.value.data; this.formList[0].options.options = departmentData.value.data;
if (this.data?.deptId) this.formData.deptId = findPathIdByTreeId(departmentData.value.data, this.data.deptId); if (this.data?.deptId)
this.formData.deptId = findPathIdByTreeId(
departmentData.value.data,
this.data.deptId
);
this.$refs.FormConfigRef.reset(true) this.$refs.FormConfigRef.reset(true);
} }
if (roadData.status != 'rejected' && roadData.value.code == 200) { if (roadData.status != "rejected" && roadData.value.code == 200) {
this.formList[1].options.options = roadData.value.data.map(item => ({ key: item.id, label: item.roadName })); this.formList[1].options.options = roadData.value.data.map(
(item) => ({ key: item.id, label: item.roadName })
);
} }
}); });
}, },
handleSubmit() { handleSubmit() {
this.$refs.FormConfigRef.validate() this.$refs.FormConfigRef.validate().then((data) => {
.then((data) => {
this.submitting = true; this.submitting = true;
if (data.startStakeMark?.[0]) data.startStakeMark = `K${data.startStakeMark[0]}+${data.startStakeMark[1]}`; if (data.startStakeMark?.[0])
if (data.endStakeMark?.[0]) data.endStakeMark = `K${data.endStakeMark[0]}+${data.endStakeMark[1]}`; data.startStakeMark = `K${data.startStakeMark[0]}+${data.startStakeMark[1]}`;
if (data.endStakeMark?.[0])
data.endStakeMark = `K${data.endStakeMark[0]}+${data.endStakeMark[1]}`;
if (data.deptId) data.deptId = data.deptId.slice(-1)[0]; if (data.deptId) data.deptId = data.deptId.slice(-1)[0];
if (this.data) data.id = this.data.id; if (this.data) data.id = this.data.id;
request({ request({
url: `/business/roadSection`, url: `/business/roadSection`,
method: this.data ? 'PUT' : 'POST', method: this.data ? "PUT" : "POST",
data data,
}) })
.then(result => { .then((result) => {
if (result.code != 200) return Message.error(`提交失败!`); if (result.code != 200) return Message.error(`提交失败!`);
Message.success(`提交成功!`); Message.success(`提交成功!`);
this.modelVisible = false; this.modelVisible = false;
this.setCurrentPage(1) this.setCurrentPage(1);
}) })
.catch((err) => { .catch((err) => {
console.log("%c [ err ]-110-「DeviceControlDialog.vue」", "font-size:15px; background:#547bf2; color:#98bfff;", err); console.log(
"%c [ err ]-110-「DeviceControlDialog.vue」",
"font-size:15px; background:#547bf2; color:#98bfff;",
err
);
Message.error(`提交失败!`); Message.error(`提交失败!`);
}) })
.finally(() => { .finally(() => {
this.submitting = false; this.submitting = false;
}) });
}) });
}
}, },
} },
};
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.AddNEditDialog { .AddNEditDialog {
width: 450px; width: 450px;
display: flex; display: flex;

23
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js

@ -4,7 +4,7 @@ import { formList } from "../../../dispatch/EventDetailDialog/data";
export const searchFormList = [ export const searchFormList = [
PresetFormItems.startStation, PresetFormItems.startStation,
PresetFormItems.endStation PresetFormItems.endStation,
]; ];
//里程计算 //里程计算
@ -13,7 +13,7 @@ const mileCal = (data) => {
const start = startStakeMark[0] + "." + Number(startStakeMark[1]); const start = startStakeMark[0] + "." + Number(startStakeMark[1]);
const end = endStakeMark[0] + "." + Number(endStakeMark[1]); const end = endStakeMark[0] + "." + Number(endStakeMark[1]);
data.mileage = (Number(end) - Number(start)).toFixed(3); data.mileage = (Number(end) - Number(start)).toFixed(3);
} };
export const addEditFormList = [ export const addEditFormList = [
{ {
@ -54,7 +54,7 @@ export const addEditFormList = [
input(value, ...args) { input(value, ...args) {
const { data, formList } = args.slice(-1)[0]; const { data, formList } = args.slice(-1)[0];
mileCal(data); mileCal(data);
} },
}, },
}, },
{ {
@ -62,11 +62,11 @@ export const addEditFormList = [
input(value, ...args) { input(value, ...args) {
const { data, formList } = args.slice(-1)[0]; const { data, formList } = args.slice(-1)[0];
mileCal(data); mileCal(data);
}
}, },
}, },
] },
} ],
},
}), }),
merge(cloneDeep(PresetFormItems.endStation), { merge(cloneDeep(PresetFormItems.endStation), {
required: true, required: true,
@ -77,7 +77,7 @@ export const addEditFormList = [
input(value, ...args) { input(value, ...args) {
const { data, formList } = args.slice(-1)[0]; const { data, formList } = args.slice(-1)[0];
mileCal(data); mileCal(data);
} },
}, },
}, },
{ {
@ -85,11 +85,11 @@ export const addEditFormList = [
input(value, ...args) { input(value, ...args) {
const { data, formList } = args.slice(-1)[0]; const { data, formList } = args.slice(-1)[0];
mileCal(data); mileCal(data);
}
}, },
}, },
] },
} ],
},
}), }),
{ {
@ -110,6 +110,9 @@ export const addEditFormList = [
}, },
type: "InputNumber", type: "InputNumber",
key: "mileage", key: "mileage",
options: {
min: 0,
},
}, },
], ],
}, },

27
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/eventPlanDialog/index.vue

@ -4,8 +4,7 @@
<ElForm :model="formData" inline :rules="rules" ref="ruleForm"> <ElForm :model="formData" inline :rules="rules" ref="ruleForm">
<div class="first"> <div class="first">
<el-radio-group v-model="planName"> <el-radio-group v-model="planName">
<el-radio-button label="名称1"></el-radio-button> <el-radio-button v-for="item in info" :key="item.id" :label="item.planName"></el-radio-button>
<el-radio-button label="名称2"></el-radio-button>
</el-radio-group> </el-radio-group>
</div> </div>
@ -68,9 +67,9 @@ export default {
}, },
props: { props: {
visible: Boolean, visible: Boolean,
detail: { info: {
type: Object, type: Array,
default: () => { } default: () => []
} }
}, },
data() { data() {
@ -95,6 +94,7 @@ export default {
qbb: '' qbb: ''
}], }],
planName: '', planName: '',
dcExecuteAction: [],
deviceData: [], deviceData: [],
eventOptions: [ eventOptions: [
{ {
@ -198,6 +198,8 @@ export default {
modelVisible: { modelVisible: {
get() { get() {
if (this.visible) { if (this.visible) {
this.planName = this.info[0]?.planName || '';
this.dcExecuteAction = this.info[0]?.dcExecuteAction || [];
} }
return this.visible; return this.visible;
}, },
@ -207,15 +209,7 @@ export default {
}, },
}, },
methods: { methods: {
initData(id = 1) { initData(data) {
request({
url: `/business/plans/list/${id}`,
method: "get",
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
let data = result.data;
let dcExecuteAction = result.data.dcExecuteAction;
this.planId = data.id; this.planId = data.id;
this.formData = { this.formData = {
eventCategory: data.eventCategory, eventCategory: data.eventCategory,
@ -236,11 +230,6 @@ export default {
} }
}) })
}).catch((err) => {
console.log(err)
Message.error("查询事件预案列表失败", err);
})
}, },
async loadData() { async loadData() {
if (this.deviceData.length <= 0) { if (this.deviceData.length <= 0) {

6
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue

@ -18,7 +18,7 @@
</div> </div>
<!-- 确认弹窗 --> <!-- 确认弹窗 -->
<EventPlanDialog :visible="isShowDialog" @close="onCloseAddNew" /> <EventPlanDialog :visible="isShowDialog" :info="info" @close="onCloseAddNew" />
<template #footer> <template #footer>
<Button style="padding: 0 24px;" @click.native="onDelete">误报</Button> <Button style="padding: 0 24px;" @click.native="onDelete">误报</Button>
@ -73,6 +73,7 @@ export default {
return { return {
formList, formList,
isShowDialog: false, isShowDialog: false,
info: [],
timeLine1List: [{ timeLine1List: [{
time: "", time: "",
label: "", label: "",
@ -188,7 +189,6 @@ export default {
onSubmit() { onSubmit() {
this.isShowDialog = true; this.isShowDialog = true;
let url = '/business/plans/list/warning/type' let url = '/business/plans/list/warning/type'
let data = {}
if (this.activeName == '-1') { if (this.activeName == '-1') {
url = '/business/plans/list/warning/type' url = '/business/plans/list/warning/type'
} else { } else {
@ -200,7 +200,7 @@ export default {
data: this.formData data: this.formData
}).then(result => { }).then(result => {
if (result.code != 200) return Message.error(result?.msg); if (result.code != 200) return Message.error(result?.msg);
console.log('result', result) this.info = result.data;
}) })
} }

12
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue

@ -66,18 +66,6 @@ import { Message } from "element-ui";
import { Loading } from 'element-ui'; import { Loading } from 'element-ui';
import { WarningType as warningTypeMapping, WarningSubclass as warningSubclassTypeMapping } from "@screen/utils/enum.js" import { WarningType as warningTypeMapping, WarningSubclass as warningSubclassTypeMapping } from "@screen/utils/enum.js"
function getRandomData(min = 1, max = 15) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getMockData() {
return Array.from({ length: getRandomData(9, 24) }).map(() => ({
time: "2023.12.22 13:00:00",
source: "视频智能识别",
location: "k100+000",
direction: "济南方向",
}));
}
const warningSourceMapping = { const warningSourceMapping = {
1: '视频AI', 1: '视频AI',

40
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue

@ -412,6 +412,29 @@ const typeMap = {
] ]
} }
const gzztMap = {
"01": '常亮',
"02": '流水',
"03": '闪烁',
"04": '关闭',
}
const gzmsMap = {
"SETMD0": "激光关闭",
"SETMD1": "常亮模式",
"SETMD2": "间隔100ms闪烁模式",
"SETMD3": "间隔200ms闪烁模式",
"SETMD4": "间隔500ms闪烁模式",
"SETMD5": "2次闪烁模式",
"SETMD6": "SOS模式",
"SETMD7": "自定义模式1",
"SETMD8": "自定义模式2",
"SETMD9": "自定义模式3",
}
const controlModelMap = {
"00": '手动模式',
"01": '自动模式',
"02": '万年历',
}
export default { export default {
name: 'addAndEditDialog', name: 'addAndEditDialog',
components: { components: {
@ -599,7 +622,15 @@ export default {
let action = {}; let action = {};
if (it.otherConfig) { if (it.otherConfig) {
let config = JSON.parse(it.otherConfig); let config = JSON.parse(it.otherConfig);
action = { ...it, ...config, qbb: (config?.dcInfoBoardTemplate?.content || '') }; let qbb = ''
if (config.id) {
qbb = config.content;
config = { dcInfoBoardTemplate: config };
}
// if (config.state) {
// config.gzms = config.state
// }
action = { ...it, ...config, qbb: qbb };
} }
if (it.deviceList) { if (it.deviceList) {
action.deviceList = it.deviceList.split(',').map(str => Number(str)); action.deviceList = it.deviceList.split(',').map(str => Number(str));
@ -653,12 +684,16 @@ export default {
if (it.controlModel) { if (it.controlModel) {
let other = { let other = {
controlModel: it.controlModel, controlModel: it.controlModel,
controlModelName: controlModelMap[it.controlModel],
state: it.state, state: it.state,
name: gzztMap[it.state]
} }
if (it.time && it?.time[0]) { if (it.time && it?.time[0]) {
other = { other = {
controlModel: it.controlModel, controlModel: it.controlModel,
controlModelName: controlModelMap[it.controlModel],
state: it.state, state: it.state,
name: gzztMap[it.state],
startTime: it.time[0], startTime: it.time[0],
endTime: it.time[1] endTime: it.time[1]
} }
@ -668,6 +703,7 @@ export default {
if (it.gzms) { if (it.gzms) {
data.otherConfig = JSON.stringify({ data.otherConfig = JSON.stringify({
state: it.gzms, state: it.gzms,
name: gzmsMap[it.gzms],
operationDuration: it.operationDuration, operationDuration: it.operationDuration,
}) })
} }
@ -678,8 +714,8 @@ export default {
if (valid) { if (valid) {
// this.submitting = false; // this.submitting = false;
let secondFormTable = this.$refs['secondFormTable'].tableData || []; let secondFormTable = this.$refs['secondFormTable'].tableData || [];
// console.log('12', secondFormTable);
let thirdFormTable = this.$refs['thirdFormTable'].tableData || []; let thirdFormTable = this.$refs['thirdFormTable'].tableData || [];
console.log('12', thirdFormTable);
let dcArr = []; let dcArr = [];
let id = ''; let id = '';
if (this.dialogType == 2) id = this.planId; if (this.dialogType == 2) id = this.planId;

10
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue

@ -55,11 +55,11 @@
<div v-if="scope.row.deviceType == 12" class="mjs"> <div v-if="scope.row.deviceType == 12" class="mjs">
<el-select v-model="scope.row.controlModel" placeholder="请选择控制模式"> <el-select v-model="scope.row.controlModel" placeholder="请选择控制模式">
<el-option label="手动模式" :value="1"></el-option> <el-option label="手动模式" value="00"></el-option>
<el-option label="自动模式" :value="2"></el-option> <el-option label="自动模式" value="01"></el-option>
<el-option label="万年历" :value="3"></el-option> <el-option label="万年历" value="02"></el-option>
</el-select> </el-select>
<el-time-picker v-if="scope.row.controlModel == 2" v-model="scope.row.time" is-range <el-time-picker v-if="scope.row.controlModel == '01'" v-model="scope.row.time" is-range
style="" range-separator="-" placeholder="选择时间" value-format="HH:mm" format="HH:mm"> style="" range-separator="-" placeholder="选择时间" value-format="HH:mm" format="HH:mm">
</el-time-picker> </el-time-picker>
<el-select v-model="scope.row.state" placeholder="工作状态"> <el-select v-model="scope.row.state" placeholder="工作状态">
@ -329,7 +329,7 @@ export default {
}, },
dialogSubmit(data) { dialogSubmit(data) {
this.tableData[this.index].qbb = data.content; this.tableData[this.index].qbb = data.content;
this.tableData[this.index].otherConfig = JSON.stringify({ dcInfoBoardTemplate: data }); this.tableData[this.index].otherConfig = JSON.stringify(data);
} }
} }
} }

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue

@ -28,7 +28,7 @@
<ElTableColumn prop="strEventType" label="事件类型" width="100" align="center" /> <ElTableColumn prop="strEventType" label="事件类型" width="100" align="center" />
<ElTableColumn prop="planName" label="预案名称" width="140" align="center" /> <ElTableColumn prop="planName" label="预案名称" width="140" align="center" />
<ElTableColumn prop="triggeringCondition" label="检索条件" width="140" /> <ElTableColumn prop="triggeringCondition" label="检索条件" width="140" />
<ElTableColumn prop="strDeviceType" label="设备类型" width="140" /> <ElTableColumn prop="deviceType" label="设备类型" />
<ElTableColumn prop="controllableDeviceName" label="可控设备"/> <ElTableColumn prop="controllableDeviceName" label="可控设备"/>
<ElTableColumn prop="controlCommand" label="控制指令" /> <ElTableColumn prop="controlCommand" label="控制指令" />
<ElTableColumn label="操作" width="210" align="center"> <ElTableColumn label="操作" width="210" align="center">
@ -146,7 +146,7 @@ export default {
result.rows.forEach(it => { result.rows.forEach(it => {
it.strEventCategory = it.eventCategory == 1 ? '交通事件' : '感知事件'; it.strEventCategory = it.eventCategory == 1 ? '交通事件' : '感知事件';
it.strEventType = eventTypeMap[it.eventCategory || 0][it.eventType]; it.strEventType = eventTypeMap[it.eventCategory || 0][it.eventType];
it.strDeviceType = deviceMap[it.deviceType]; // it.strDeviceType = deviceMap[it.deviceType];
}) })
this.tableData = result.rows; this.tableData = result.rows;
this.total = result.total; this.total = result.total;

62
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/assets/charts.js

@ -6,15 +6,6 @@ let options = {
valueFormatter: (value) => { valueFormatter: (value) => {
return value + "%"; return value + "%";
}, },
// backgroundColor: "rgba(17,95,182,0.5)",
// textStyle: {
// color: "#fff",
// },
// formatter: function (params) {
// return (
// params[0].name + params[0].seriesName + ": " + params[0].value + "%"
// );
// },
}, },
grid: { grid: {
left: "2%", left: "2%",
@ -36,12 +27,8 @@ let options = {
opacity: 1, opacity: 1,
}, },
}, },
// lineStyle: {
// show: true,
// type: 'solid'
// },
axisLabel: { axisLabel: {
interval: 0, interval: "auto",
textStyle: { textStyle: {
color: "rgba(255,255,255,0.8)", color: "rgba(255,255,255,0.8)",
fontSize: 14, fontSize: 14,
@ -51,9 +38,7 @@ let options = {
}, },
yAxis: [ yAxis: [
{ {
type: "category", // type: "category",
minInterval: 20,
maxInterval: 20,
name: "", name: "",
nameTextStyle: { nameTextStyle: {
align: "left", align: "left",
@ -84,59 +69,23 @@ let options = {
fontSize: 14, fontSize: 14,
}, },
}, },
data: ["0", "3", "6", "9", "12", "15", "18"],
}, },
], ],
legend: { legend: {
top: "5%", top: "5%",
right: "5%", right: "0",
icon: "rect",
itemWidth: 25,
itemHeight: 10,
textStyle: { textStyle: {
color: "#fff", color: "#fff",
fontSize: 14, fontSize: 14,
}, },
lineStyle: {
show: false,
color: "#00E4BB",
},
data: [
{
name: "高清网络球型摄像机",
itemStyle: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00E4BB", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
),
},
},
{
name: "增涨率",
itemStyle: { itemStyle: {
color: "#755400", color: "#00D6B2",
}, },
}, },
],
itemGap: 12, // 设置间距
},
series: [ series: [
// 下半截柱状图 // 下半截柱状图
{ {
name: "在线率", name: "高清网络枪型固定摄像机",
type: "bar", type: "bar",
barWidth: 12, barWidth: 12,
barGap: "-100%", barGap: "-100%",
@ -165,7 +114,6 @@ let options = {
); );
}, },
}, },
data: [], data: [],
}, },
{ {

39
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue

@ -75,10 +75,10 @@
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ <span>{{
scope.row.direction == "1" scope.row.direction == "1"
? "上行" ? "菏泽"
: scope.row.direction == "2" : scope.row.direction == "2"
? "中间" ? "双向"
: "下行" : "济南"
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -347,18 +347,25 @@ export default {
}, },
initQueryChart() { initQueryChart() {
this.setStatus("01", "doing"); this.setStatus("01", "doing");
let data = this.searchFormList[1].options.options;
let typeLabel = "";
console.log("data", data);
data.forEach((item) => {
if (item.value == this.typeQuery) {
typeLabel = item.label;
}
});
getSystemStatusList({ getSystemStatusList({
startTime: this.startTime, startTime: this.startTime,
time: this.time, time: this.time,
type: this.typeQuery, type: this.typeQuery,
}).then((res) => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data && Object.keys(res.data).length > 0) { console.log("res.data", res.data);
// if (res.data && Object.keys(res.data).length > 0) {
console.log("res.data", res.data);
this.setStatus("01", "finish"); this.setStatus("01", "finish");
let origin = res.data; let origin = res.data;
let startStamp = +moment(this.startTime).startOf("day").format("x"); let startStamp = +moment(this.startTime).startOf("day").format("x");
let endStamp = +moment(this.time).endOf("day").format("x"); let endStamp = +moment(this.time).endOf("day").format("x");
let oneDay = 86400000; let oneDay = 86400000;
@ -377,15 +384,19 @@ export default {
} }
chartsStatistics.xAxis.data = dataX; chartsStatistics.xAxis.data = dataX;
chartsStatistics.series[0].data = data0; chartsStatistics.series[0].data = data0;
chartsStatistics.series[0].name = typeLabel;
chartsStatistics.series[1].data = data1; chartsStatistics.series[1].data = data1;
chartsStatistics.yAxis[0].name = "在线率(%)"; chartsStatistics.yAxis[0].name = "在线率(%)";
chartsStatistics.legend = {
show: true,
};
this.$nextTick(() => { this.$nextTick(() => {
this.queryChart.setOption(chartsStatistics); this.queryChart.setOption(chartsStatistics);
}); });
} else { // } else {
this.setStatus("01", "empty"); // this.setStatus("01", "empty");
} // }
} }
}); });
}, },
@ -400,7 +411,7 @@ export default {
pageSize: pageSize, pageSize: pageSize,
}).then((res) => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.rows && res.rows.length > 0) { // if (res.rows && res.rows.length > 0) {
this.setStatus("02", "finish"); this.setStatus("02", "finish");
this.pageIndex = pageIndex; this.pageIndex = pageIndex;
this.pageSize = pageSize; this.pageSize = pageSize;
@ -409,9 +420,9 @@ export default {
this.tableData.forEach((it, index) => { this.tableData.forEach((it, index) => {
it.order = (pageIndex - 1) * pageSize + index + 1; it.order = (pageIndex - 1) * pageSize + index + 1;
}); });
} else { // } else {
this.setStatus("02", "empty"); // this.setStatus("02", "empty");
} // }
} }
}); });
}, },

3
ruoyi-ui/vue.config.js

@ -53,9 +53,10 @@ module.exports = {
// target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁 // target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
// target: `http://10.168.78.135:8087`, //王钦 // target: `http://10.168.78.135:8087`, //王钦
// target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2 // target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
target: `http://10.168.68.42:8087`, //王思祥 // target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.65.194:8087`, //赵祥龙 // target: `http://10.168.65.194:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟 // target: `http://10.168.65.156:8097`, //孟
target: `http://10.168.65.103:8097`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "", ["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save