diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue index fe136d79..d8b9148d 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/components/Card1/index.vue @@ -1,6 +1,10 @@ <template> - <BorderRadiusImage class='Card' borderRadius="2px" - borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" borderWidth="2px"> + <BorderRadiusImage + class="Card" + borderRadius="2px" + borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" + borderWidth="2px" + > <div class="info" :style="{ gap }"> <p v-for="(item, index) in keyMap" :key="index"> <span>{{ item.label }}: </span> @@ -26,15 +30,15 @@ </template> <script> -import Button from '@screen/components/Buttons/Button.vue'; +import Button from "@screen/components/Buttons/Button.vue"; import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue"; import { get as pathGet } from "lodash"; export default { - name: 'Card', + name: "Card", components: { Button, - BorderRadiusImage + BorderRadiusImage, }, props: { cardData: { @@ -44,70 +48,70 @@ export default { location: "长清大学城收费站", direction: "117.123456", direction2: "37.12234", - state: 1 - }) + state: 1, + }), }, keyMap: { type: Array, - default: () => ([ + default: () => [ { key: "source", - label: "机构名称" + label: "机构名称", }, { key: "location", - label: "机构地址" + label: "机构地址", }, { key: "direction", - label: "经度" + label: "经度", }, { key: "direction2", - label: "纬度" + label: "纬度", }, { key: "direction3", - label: "救援外协单位" - } - ]) + label: "救援外协单位", + }, + ], }, buttonIcon: { type: String, - default: "images/insert.svg" + default: "images/insert.svg", }, buttonText: { type: String, - default: "修改" + default: "修改", }, gap: { type: String, - default: "6px" + default: "6px", }, hasBtn: { type: Boolean, - default: true - } + default: true, + }, }, data() { return { stateMap: { 1: "confirmed", - 2: 'comfortable', - 3: 'congestion', - 4: "normal" - } - } + 2: "comfortable", + 3: "congestion", + 4: "normal", + }, + }; }, methods: { getValue(key) { - return pathGet(this.cardData, key) ?? '-' - } - } -} + return pathGet(this.cardData, key) ?? "-"; + }, + }, +}; </script> -<style lang='scss' scoped> +<style lang="scss" scoped> .Card { color: #fff; display: flex; @@ -127,22 +131,22 @@ export default { // align-items: center; // justify-content: space-between; - >p { - height: 21px; + > p { + // height: 21px; font-size: 14px; // font-family: PingFang SC, PingFang SC; font-weight: 400; line-height: 21px; display: flex; - &>:first-child { + & > :first-child { margin-right: 6px; flex: 1; } - &>:last-child { + & > :last-child { flex: 2; - color: #FFFFFF; + color: #ffffff; } } } @@ -173,7 +177,13 @@ export default { &::after { content: ""; position: absolute; - background: linear-gradient(-147deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 0%, #FFFFFF 46%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient( + -147deg, + #ffffff 0%, + rgba(255, 255, 255, 0) 0%, + #ffffff 46%, + rgba(255, 255, 255, 0) 100% + ); height: 1px; width: 124%; transform: rotate(45deg); diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue index 04a31ad7..f4b4479b 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue @@ -8,6 +8,7 @@ <Descriptions :list="list" :data="data" style="gap: 18px" /> </ElTabPane> <ElTabPane label="设备参数" name="second">设备参数</ElTabPane> + <ElTabPane label="在线率统计" name="third">在线率统计</ElTabPane> </ElTabs> <div class="bottom"> @@ -16,40 +17,46 @@ </div> <!-- <DeviceControlDialog v-model="deviceControlVisible" :deviceId="dialogData.iotDeviceId || '8697-1'" /> --> - <DeviceControlDialog v-model="deviceControlVisible" :deviceId="dialogData.iotDeviceId" /> + <DeviceControlDialog + v-model="deviceControlVisible" + :deviceId="dialogData.iotDeviceId" + /> </Dialog> </template> <script> import Dialog from "@screen/components/Dialog/index.vue"; -import Button from "@screen/components/Buttons/Button.vue" -import Descriptions from '@screen/components/Descriptions.vue'; -import DeviceControlDialog from "./components/DeviceControlDialog.vue" -import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js" -import Video from "@screen/components/Video" +import Button from "@screen/components/Buttons/Button.vue"; +import Descriptions from "@screen/components/Descriptions.vue"; +import DeviceControlDialog from "./components/DeviceControlDialog.vue"; +import { + getRoadInfoByStakeMark, + getProduct, +} from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"; +import Video from "@screen/components/Video"; import request from "@/utils/request"; -import { dialogDelayVisible } from "./../mixin" +import { dialogDelayVisible } from "./../mixin"; // 行车诱导 export default { - name: 'DrivingGuidance', + name: "DrivingGuidance", mixins: [dialogDelayVisible], provide() { return { - requestURL: this.requestURL - } + requestURL: this.requestURL, + }; }, components: { Dialog, Button, Descriptions, DeviceControlDialog, - Video + Video, }, data() { return { - activeName: 'first', + activeName: "first", deviceControlVisible: false, data: { deviceType: "行车诱导", @@ -61,77 +68,85 @@ export default { }, list: [ { - label: '设备名称', + label: "设备名称", key: "deviceName", }, { - label: '设备桩号', + label: "设备桩号", key: "stakeMark", }, { - label: '道路名称', + label: "道路名称", key: "roadName", }, { - label: '设备方向', + label: "设备方向", key: "direction", - enum: "CameraDirectionEnum" + enum: "CameraDirectionEnum", }, { - label: '设备状态', + label: "设备状态", key: "deviceState", - enum: "DeviceTypeEnum" + enum: "DeviceTypeEnum", }, { - label: '设备厂商', + label: "设备厂商", key: "brand", }, { - label: '工作模式', + label: "工作模式", key: "workMode", }, { - label: '上行工作状态', + label: "上行工作状态", key: "onWorkStatus", }, { - label: '下行工作状态', + label: "下行工作状态", key: "inWorkStatus", }, - ] - } + ], + }; }, async created() { - console.log(333,this.dialogData,444) - this.data = { ...this.dialogData, roadName: null } + console.log(333, this.dialogData, 444); + this.data = { ...this.dialogData, roadName: null }; getProduct(this.dialogData.productId) - .then(data => { + .then((data) => { this.dialogData.brand = data.brand; }) - .catch((err) => { - - }); + .catch((err) => {}); this.requestURL(52) .then((result) => { - this.data.workMode = { "00": "手动控制", "01": "自动控制", "02": "万年历" }[result.mode]; - this.data.onWorkStatus = result.onWorkStatus - this.data.inWorkStatus = result.inWorkStatus + this.data.workMode = { + "00": "手动控制", + "01": "自动控制", + "02": "万年历", + }[result.mode]; + this.data.onWorkStatus = result.onWorkStatus; + this.data.inWorkStatus = result.inWorkStatus; }) - .catch((err) => { - - }); + .catch((err) => {}); const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark); - console.log("%c [ roadInfo ]-103-「index.vue」", "font-size:15px; background:#36347c; color:#7a78c0;", roadInfo.roadName); + console.log( + "%c [ roadInfo ]-103-「index.vue」", + "font-size:15px; background:#36347c; color:#7a78c0;", + roadInfo.roadName + ); if (roadInfo) this.data.roadName = roadInfo.roadName; }, methods: { requestURL(functionId = 52, options = {}) { return new Promise((resolve, reject) => { - request.post(`business/device/functions/${this.dialogData.iotDeviceId}/${functionId}`, options) + request + .post( + `business/device/functions/${this.dialogData.iotDeviceId}/${functionId}`, + options + ) .then((result) => { if (result.code != 200) return reject(); resolve(result.data[0]); @@ -139,13 +154,13 @@ export default { .catch((err) => { reject(); }); - }) - } - } -} + }); + }, + }, +}; </script> -<style lang='scss' scoped> +<style lang="scss" scoped> .DrivingGuidance { width: 600px; color: #fff; @@ -179,7 +194,7 @@ export default { align-items: center; justify-content: end; - >div { + > div { font-size: 16px; padding: 6px 12px; } diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue index 6f823813..98f6f6a5 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue @@ -1,5 +1,5 @@ <template> - <div class='EmergencyAgencies'> + <div class="EmergencyAgencies"> <div class="filter"> <div> <ButtonGradient @click.native="handleOpenDialogAddEdit()"> @@ -22,21 +22,39 @@ </ButtonGradient> </div> - <InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '90px' }" - @handleSearch="handleSearch" /> + <InputSearch + style="width: 402px" + :formList="searchFormList" + :formConfigOptions="{ labelWidth: '90px' }" + @handleSearch="handleSearch" + /> </div> - <div class='body'> + <div class="body"> <!-- <ElEmpty v-if="!data.length && !isFirst" description="暂无数据" style="width: 100%;height: 100%;position: absolute;" /> --> - <div v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</div> + <div + v-if="!dataList.length && !isFirst" + class="no-data" + style="position: absolute" + > + 暂无数据 + </div> <template v-else> - <Card v-for="(item, index) in data" :keyMap="keyMap" :cardData="item" :key="index"> + <Card + v-for="(item, index) in dataList" + :keyMap="keyMap" + :cardData="item" + :key="index" + > <template #button> <Button @click.native="() => handleOpenDialogAddEdit(item)"> 修改 </Button> - <Button style="background-color: #FF5F5F;" @click.native="handleDelete(item)"> + <Button + style="background-color: #ff5f5f" + @click.native="handleDelete(item)" + > 删除 </Button> </template> @@ -49,30 +67,30 @@ </template> <script> -import Card from "@screen/components/Card1/index.vue" -import InputSearch from '@screen/components/InputSearch/index.vue'; -import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue'; -import Button from '@screen/components/Buttons/Button.vue'; -import AddNEditDialog from "./components/AddNEditDialog.vue" +import Card from "@screen/components/Card1/index.vue"; +import InputSearch from "@screen/components/InputSearch/index.vue"; +import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue"; +import Button from "@screen/components/Buttons/Button.vue"; +import AddNEditDialog from "./components/AddNEditDialog.vue"; import { searchFormList } from "./data"; import request from "@/utils/request"; -import { setLoading } from "@screen/utils/index.js" +import { setLoading } from "@screen/utils/index.js"; import { delay, exportFile, confirm } from "@screen/utils/common"; import { Message } from "element-ui"; -let vehicleTypeList = []; +// let vehicleTypeList = []; // 应急机构 export default { - name: 'EmergencyAgencies', - inject: ['getPagination', 'setTotal', 'setCurrentPage'], + name: "EmergencyAgencies", + inject: ["getPagination", "setTotal", "setCurrentPage"], components: { Card, ButtonGradient, InputSearch, Button, - AddNEditDialog + AddNEditDialog, }, data() { return { @@ -85,15 +103,15 @@ export default { // direction: "117.123456", // direction2: "37.12234", // })), - data: [], + dataList: [], keyMap: [ { key: "dcOrganizations.organizationName", - label: "机构名称" + label: "机构名称", }, { key: "dcOrganizations.organizationAddress", - label: "机构地址" + label: "机构地址", }, // { // key: "coordinate.longitude", @@ -105,24 +123,25 @@ export default { // }, { key: "dcOrganizations.stakeMark", - label: "桩号" + label: "桩号", }, // { // key: "dcOrganizations.latitude", // label: "救援外协单位" // }, { - key: "car", + key: "cars", label: "驻点车辆", - value: "aaa" }, { key: "employeesNum", - label: "驻点人员" - } + label: "驻点人员", + suffix: "人", + }, ], - isFirst: true - } + isFirst: true, + vehicleTypeList: [], + }; }, created() { this.getData(); @@ -130,24 +149,19 @@ export default { }, methods: { getVehicleTypeList() { - if (vehicleTypeList.length) return; + if (this.vehicleTypeList.length) return; request({ url: `/system/dict/data/type/sys_vehicle_type`, method: "GET", - params: {} + params: {}, }) .then(({ data, code }) => { - if (code != 200) return ;//Message.error("详情获取失败"); - - // vehicleTypeList = this.formList[5].options.options = data.map(item => ({ - // key: item.dictValue, - // label: item.dictLabel - // })) + console.log("Success", data); + if (code != 200) return; //Message.error("详情获取失败"); + this.vehicleTypeList = data; }) - .catch((err) => { - - }); + .catch((err) => {}); }, async handleDelete(data) { await confirm({ message: "是否要删除该机构?" }); @@ -155,11 +169,11 @@ export default { request({ url: `/business/organization/${data.dcOrganizations.id}`, method: "DELETE", - data: {} + data: {}, }) .then((result) => { if (result.code != 200) return Message.error(`删除失败!`); - this.setCurrentPage(1) + this.setCurrentPage(1); Message.success(`删除成功!`); }) .catch((err) => { @@ -182,8 +196,8 @@ export default { filename: "应急机构", data: { ...this.searchData, - ...this.getPagination() - } + ...this.getPagination(), + }, }); }, async getData() { @@ -196,26 +210,47 @@ export default { method: "get", params: { ...this.searchData, - ...this.getPagination() - } - }).then(result => { - if (result.code != 200) return; - - this.data = result.rows; - this.setTotal(result.total) - }).finally(() => { - closeLoading(); - this.isFirst = false; + ...this.getPagination(), + }, }) - } - } + .then((result) => { + if (result.code != 200) return; -} + this.dataList = result.rows; + let data = []; + this.vehicleTypeList.forEach((items) => { + this.dataList.forEach((item) => { + if (item.car.length > 0) { + for (var i = 0; i < item.car.length; i++) { + if (item.car[i].vehicleType == items.dictValue) { + // let data = + data.push(items.dictLabel + "*" + item.car[i].carNum); + // item.cars = items.dictLabel + "*" + item.car[i].carNum; + } + } + } + }); + }); + console.log(999, this.dataList); + console.log(999, data); + this.dataList.forEach((item) => { + if (item.car.length > 0) { + item.cars = data.join("、"); + } + }); + this.setTotal(result.total); + }) + .finally(() => { + closeLoading(); + this.isFirst = false; + }); + }, + }, +}; </script> -<style lang='scss' scoped> +<style lang="scss" scoped> .EmergencyAgencies { - .body { display: grid; grid-template-columns: repeat(5, 1fr); @@ -227,15 +262,15 @@ export default { .endSpecial { font-size: 14px; font-weight: 400; - color: #00B3CC; + color: #00b3cc; line-height: 16px; span:first-child { - color: rgba(0, 179, 204, 1)#000; + color: rgba(0, 179, 204, 1) #000; } span:last-child { - color: rgba(217, 0, 27, 1) + color: rgba(217, 0, 27, 1); } } }