Browse Source

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

wangqin
hui 1 year ago
parent
commit
77c7d6ac41
  1. 6
      ruoyi-ui/README.md
  2. 13
      ruoyi-ui/build/build.sh
  3. 3
      ruoyi-ui/package.json
  4. 1
      ruoyi-ui/public/index.html
  5. 8
      ruoyi-ui/src/api/MonthlyEquipment/index.js
  6. 2
      ruoyi-ui/src/views/JiHeExpressway/components/Video/videoStream.js
  7. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/AMapContainer/index.vue
  8. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/Descriptions.vue
  9. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue
  10. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/ControlCamera/index.vue
  11. 16
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue
  12. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue
  13. 27
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  14. 33
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
  15. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
  16. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue
  17. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js
  18. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/index.vue
  19. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js
  20. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue
  21. 110
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue
  22. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue
  23. 1
      ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss
  24. 3
      ruoyi-ui/src/views/JiHeExpressway/utils/axios/auth.js
  25. 11
      ruoyi-ui/vue.config.js

6
ruoyi-ui/README.md

@ -16,6 +16,10 @@
-->
## 开发
```
ruoyi版本号 3.7.0
```
```bash
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue
@ -45,7 +49,7 @@ npm install --save el-tree-transfer
npm run dev
```
浏览器访问 http://localhost:80
浏览器访问 <http://localhost:80>
## 发布

13
ruoyi-ui/build/build.sh

@ -0,0 +1,13 @@
#!/bin/bash
branchVersion=`cat package.json | sed 's/,/\n/g' | grep \"version\" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | grep -Eo '[0-9]*'`;
git checkout -b v$branchVersion &&
npm run build &&
git push -u origin $branchVersion &&
git checkout develop &&
npm version patch

3
ruoyi-ui/package.json

@ -1,12 +1,13 @@
{
"name": "ruoyi",
"version": "3.7.0",
"version": "0.0.1",
"description": "雅典娜",
"author": "若依",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:version": "./build/build.sh",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src"

1
ruoyi-ui/public/index.html

@ -5,6 +5,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="build" content="<%= process.env.Version %>">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>

8
ruoyi-ui/src/api/MonthlyEquipment/index.js

@ -43,9 +43,7 @@ export function getSystemStatusList(query) {
//设备状态列表按类型
export function getSystemStatusExport(query) {
//system/status/export
return download('/system/status/export',query,"file.xlsx");
// return request.post('/system/status/export',{
// ...query
// },{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
// responseType: 'blob'})
//return download('/system/status/export',query,"file.xlsx");
return request.post('/system/status/export?startTime='+query.startTime+"&time="+ query.time +"&type="+query.type,{},{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob'})
}

2
ruoyi-ui/src/views/JiHeExpressway/components/Video/videoStream.js

@ -130,7 +130,7 @@ export class HttpLivePlayer {
});
// 视频断流
this.player.on(flvJs.Events.STATISTICS_INFO, function (res) {
this.player.on(flvJs.Events.STATISTICS_INFO, (res) => {
if (this.lastDecodedFrames != res.decodedFrames) {
this.lastDecodedFrames = res.decodedFrames;
} else {

7
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/AMapContainer/index.vue

@ -46,8 +46,8 @@ export default {
this.aMapIns = new this.AMap.Map(this.$refs.mapContainerRef, {
resizeEnable: true, //
mapStyle: "amap://styles/blue",
zoom: 7,
center: [116.629514, 35.794168],
zoom: 9.5,
center: [116.629514, 35.805288],
});
this.aMapIns.on("complete", () => {
@ -198,7 +198,8 @@ export default {
};
},
},
unmounted() {
// unmounted() {
destroyed(){
if (!this.aMapIns) return;
this.aMapIns.destroyed();
},

3
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/Descriptions.vue

@ -47,6 +47,7 @@
<script>
import { CameraStatusEnum, CameraControlTypeEnum } from "@screen/utils/enum.js"
import { getRoadInfoByStakeMark } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"
import request from "@/utils/request";
export default {
name: 'Descriptions',
@ -80,7 +81,7 @@ export default {
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMarkId);
if (roadInfo) this.data.roadName = roadInfo.dc_road;
if (roadInfo) this.data.roadName = roadInfo.dcRoad;
},
}
</script>

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue

@ -6,7 +6,7 @@
<img src="@screen/images/dialog/icon-video.png" />
</div>
<Video class="video-stream" :camId="dialogData.camId" />
<Video class="video-stream" :camId="dialogData.iotDeviceId" />
<ElTabs v-model="activeName" @tab-click="handleClickTabs" class="tabs">
<ElTabPane label="详细设计" name="first">

6
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/ControlCamera/index.vue

@ -104,7 +104,7 @@ export default {
},
{
label: '设备状态',
key: "device_state",
key: "deviceState",
enum: "DeviceTypeEnum"
},
],
@ -133,11 +133,11 @@ export default {
async created() {
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMarkId);
if (roadInfo) this.dialogData.roadName = roadInfo.dc_road;
if (roadInfo) this.dialogData.roadName = roadInfo.dcRoad;
},
methods: {
controlClick: throttle(function (type) {
controlCamera(this.dialogData.camId, type)
controlCamera(this.dialogData.iotDeviceId, type)
}, 360)
}
}

16
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue

@ -22,9 +22,10 @@ import Form from '@screen/components/FormConfig';
import { cloneDeep } from "lodash"
import { delay } from "@screen/utils/common.js"
import request from "@/utils/request";
import { Message } from "element-ui";
import { axiosIns } from "@screen/utils/axios/auth.js";
// import { axiosIns } from "@screen/utils/axios/auth.js";
const workStatus = [
{
@ -142,7 +143,10 @@ export default {
handler(bool) {
if (!bool) return;
axiosIns.post(`business/device/functions/${this.deviceId}/${51}`)
request({
url: `business/device/functions/${this.deviceId}/${51}`,
method: "post",
})
.then(async (result) => {
if (result.code != 200) return;
@ -197,10 +201,14 @@ export default {
/**
* 接口 地址
*
* https://www.showdoc.com.cn/2450725213006196/10877717880262686
*/
axiosIns.post(`business/device/functions/${this.deviceId}/${functionId}`, result)
request({
url: `business/device/functions/${this.deviceId}/${functionId}`,
method: "post",
params: result,
})
.then((result) => {
if (result.code != 200) return Message.error(`设备操作失败!`);

8
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue

@ -50,7 +50,7 @@ export default {
deviceStation: "k094+079",
roadName: "G35济泽高速",
direction: "1",
device_state: "0",
deviceState: "0",
deviceVendors: "XXX厂家",
},
list: [
@ -73,7 +73,7 @@ export default {
},
{
label: '设备状态',
key: "device_state",
key: "deviceState",
enum: "DeviceTypeEnum"
},
{
@ -87,7 +87,7 @@ export default {
this.dialogData.roadName = "G35济泽高速";
request({
url: `/business/product/${this.dialogData.product_id}`,
url: `/business/product/${this.dialogData.productId}`,
method: "get",
})
.then(({ code, data }) => {
@ -101,7 +101,7 @@ export default {
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMarkId);
if (roadInfo) this.dialogData.roadName = roadInfo.dc_road;
if (roadInfo) this.dialogData.roadName = roadInfo.dcRoad;
},
methods: {
handleClickTabs() { }

27
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js

@ -34,6 +34,29 @@ export const eventMap = {
// };
const data = await getDeviceList(1);
// const data = [
// {
// longitude: 116.268564,
// latitude: 35.73115,
// },
// {
// longitude: 116.258178,
// latitude: 35.720996,
// },
// {
// longitude: 116.255542,
// latitude: 35.717335,
// },
// {
// longitude: 116.252883,
// latitude: 35.713114,
// },
// {
// longitude: 116.249416,
// latitude: 35.707627,
// ptzCtrl: 0,
// },
// ];
if (!data) return;
@ -44,11 +67,13 @@ export const eventMap = {
item,
data,
(extData) => {
try {
this.dialogConfig = {
// 0 有(球机) 1 ⽆(枪机)
component: cameraCtrlMap[extData.ptzCtrl],
component: cameraCtrlMap[JSON.parse(extData.otherConfig)?.ptzCtrl],
data: extData,
};
} catch (error) {}
}
);
},

33
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js

@ -1,5 +1,5 @@
import { Message } from "element-ui";
import { axiosIns } from "@screen/utils/axios/auth.js";
// import { axiosIns } from "@screen/utils/axios/auth.js";
import request from "@/utils/request";
@ -56,6 +56,7 @@ export function controlCamera(camId, cmdType) {
msgType: 3,
camId,
cmdType,
speed: 1,
},
})
.then((result) => {
@ -71,20 +72,32 @@ export function controlCamera(camId, cmdType) {
* @returns
*/
export async function getRoadInfoByStakeMark(stakeMarkId) {
const stakeMarkInfo = await axiosIns.get(
`/business/stakeMark/${stakeMarkId}`
);
const stakeMarkInfo = await request({
// url: `/business/stakeMark/${stakeMarkId}`,
url: `/business/stakeMark`,
method: "get",
params: {
id: stakeMarkId,
direction: 1,
},
});
if (!stakeMarkInfo.data?.section_id) return {};
if (!stakeMarkInfo.data?.sectionId) return {};
const roadSectionInfo = await axiosIns.get(
`/business/roadSection/${stakeMarkInfo.data.section_id}`
);
const roadSectionInfo = await request({
url: `/business/roadSection/${stakeMarkInfo.data.sectionId}`,
method: "get",
});
if (!roadSectionInfo.data?.road_id) return {};
if (!roadSectionInfo.data?.roadId) return {};
return (
(await axiosIns.get(`/business/road/${roadSectionInfo.road_id}`)).data || {}
(
await request({
url: `/business/road/${roadSectionInfo.roadId}`,
method: "get",
})
).data || {}
);
}

10
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js

@ -97,7 +97,7 @@ export async function setMarkerCluster(map, points, markerFun) {
* @param {*} _markerClick marker 点击
* @returns
*/
export async function setMarkToMap(item, data, _markerClick) {
export async function setMarkToMap(item, data, _markerClick, content) {
const { mapIns } = this.getMap();
if (!mapIns) return Message.error("地图加载失败!");
@ -132,7 +132,9 @@ export async function setMarkToMap(item, data, _markerClick) {
content:
content ||
`<div style="
background-image: url(${item.status !== "0" ? faultBg : normalBg});
background-image: url(${
item.deviceState !== "0" ? faultBg : normalBg
});
background-size: 100% 100%;
background-repeat: no-repeat;
width: 42px;
@ -146,14 +148,14 @@ export async function setMarkToMap(item, data, _markerClick) {
height: 18px;
margin-left: 3px;
margin-bottom: 6px;
" src='${item.status !== "0" ? fault : normal}'>
" src='${item.deviceState !== "0" ? fault : normal}'>
</div>`,
};
}),
markerClick
);
mapIns.setFitView([...markerCluster.U], false, [0, 0, 0, 0], 7);
mapIns.setFitView([...markerCluster.U], false, [0, 0, 0, 0], 10);
return () => markerCluster.setMap(null);
}

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue

@ -1,5 +1,5 @@
<template>
<div class="bg" id="content" ref="ThumbnailRef"></div>
<div class="bg" ref="ThumbnailRef"></div>
</template>
<script>

6
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js

@ -1,5 +1,5 @@
let data = [100, 0, 0, 0, 40, 40,40, 64,40, 64,40, 64]
let data = [0, 0, 0, 0, 0, 0,0, 0,0, 0,0, 0]
let indicator = [
{ name: '智能设备箱', max: 100 },
@ -25,7 +25,7 @@ let options = {
tooltip: {},
radar: {
center: ['50%', '50%'],
radius: '75%',
radius: '72%',
nameGap: 0,
indicator: indicator,
splitLine: {
@ -41,7 +41,7 @@ let options = {
name: {
textStyle: {
color: '#F2F3F5',
fontSize: '20',
fontSize: '14',
borderRadius: 3,
padding: [3, 5]
}

2
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/index.vue

@ -74,7 +74,7 @@
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;
opacity: 0.8;
opacity:1;
border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255,0.3), rgba(55, 231, 255, 0)) 1 1;
display: flex;

2
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/assets/charts.js

@ -41,7 +41,7 @@ let options = {
name: {
textStyle: {
color: '#F2F3F5',
fontSize: '20',
fontSize: '12',
borderRadius: 3,
padding: [3, 5]
}

10
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/monthlyEquipment/index.vue

@ -141,6 +141,12 @@
color:"#FFCE85",
top:430,
left:620,
},{
num:60,
text:"智能设备箱" ,
color:"#FFCE85",
top:430,
left:920,
}
]
}
@ -197,7 +203,7 @@
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;
opacity: 0.8;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255,0.3), rgba(55, 231, 255, 0)) 1 1;
display: flex;
@ -262,7 +268,7 @@
align-items: center;
width: 100%;
height: 21px;
font-size: 12px;
font-size: 14px;
font-family: Hiragino Sans GB, Hiragino Sans GB;
font-weight: normal;
color: #FFFFFF;

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

@ -6,14 +6,12 @@
<div class="topTabs" >
<div class="item" v-for=" item in equipments" >
<div class="title-tool" >
<span class="text" >设备数</span>
<div class="num" >{{ item.num }}</div>
<span class="unit"></span>
<span class="text" >{{ item.text }}</span>
</div>
<div class="item-body" >
<div class="left-body" >
<img src="./assets/shexiangtou.png" />
<span>{{ item.text }}</span>
<span class="num" >{{ item.num }} <span class="unit"></span></span>
</div>
<div class="line" ></div>
<div class="right-list" >
@ -23,8 +21,7 @@
{{ item.sucessRate }}
</div>
</div>
<div class="list-text" >
<span>离线</span>
<div class="list-text" ><span>离线</span>
<div class="show-text2" >
{{ item.failRate }}
</div>
@ -173,6 +170,7 @@ import * as echarts from "echarts";
import Pagination from '@screen/components/Pagination.vue';
import InputSearch from '@screen/components/InputSearch/index.vue';
import { searchFormList } from "./data";
import { Loading } from 'element-ui';
export default {
name: 'publicService',
@ -455,28 +453,25 @@ import * as echarts from "echarts";
},
//
SystemStatusExport(){
download(
"/fault/list/exportFaultReport",
{ faultId: row.id },
"file.xlsx");
// getSystemStatusExport({
// startTime:this.startTime,
// time:this.time,
// type:this.typeQuery,
// }).then((res)=>{
// console.log(res);
// const url = window.URL.createObjectURL(new Blob([res]))
// let link = document.createElement('a')
// link.style.display = 'none'
// link.href = url
// link.setAttribute('download', '.xlsx')
// document.body.appendChild(link)
// link.click()
// URL.revokeObjectURL(link.href) // URL
// document.body.removeChild(link)
// link = null
// })
let loadingInstance = Loading.service({fullscreen:true,background:"#00000052",text:"文件正在下载..."});
getSystemStatusExport({
startTime:this.startTime,
time:this.time,
type:this.typeQuery,
}).then((res)=>{
console.log(res);
const url = window.URL.createObjectURL(new Blob([res]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', '设备统计信息.xlsx')
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href) // URL
document.body.removeChild(link)
link = null
loadingInstance.close();
})
},
queryChartList(){
@ -525,6 +520,9 @@ import * as echarts from "echarts";
}
console.log(it,i);
i+= 1;
if ( it == "全部设备" ) {
allList.splice(0,0,item);
} else
allList.push(item);
}
console.log(allList);
@ -570,6 +568,7 @@ import * as echarts from "echarts";
<style lang='scss' scoped>
.bottomTabs {
position: relative;
display: inline-flex;
@ -589,6 +588,8 @@ import * as echarts from "echarts";
}
}
.topTabs {
display: inline-flex;
width: 100%;
@ -635,13 +636,25 @@ import * as echarts from "echarts";
align-items: center;
margin:0 10px;
> span {
.num {
display: inline-flex;
margin-top:10px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-size: 19px;
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 400;
color: #FFFFFFcc;
color: #00D1FF;
margin:0 10px;
margin-top:20px;
}
.unit {
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #FFFFFFF0;
position: relative;
top:5px;
left:5px;
}
}
@ -669,30 +682,38 @@ import * as echarts from "echarts";
position: relative;
width:100%;
height:40px;
font-size: 14px;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #FFFFFF;
justify-content: center;
align-items: center;
> span:first-child {
display: inline-flex;
width:40px;
}
.show-text1 {
width:100px;
color:#00EBC1ee;
font-size: 16px;
font-size: 14px;
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 800;
}
.show-text2 {
width:100px;
color:#FFFFFFee;
font-size: 16px;
font-size: 14px;
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 800;
}
.show-text3 {
width:100px;
color:#FFD15Cee;
font-size: 16px;
font-size: 14px;
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 800;
}
@ -720,20 +741,9 @@ import * as echarts from "echarts";
color: #FFFFFF;
}
.num {
font-size: 19px;
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 400;
color: #00D1FF;
margin:0 10px;
}
.unit {
font-size: 11px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #FFFFFF50;
}
}

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue

@ -15,7 +15,6 @@ import Card2 from "@screen/components/Card2/Card.vue";
import Pagination from '@screen/components/Pagination.vue';
import InputSearch from '@screen/components/InputSearch/index.vue';
import ListItem from "./ListItem.vue";
import { axiosIns } from "@screen/utils/axios/auth.js";
export default {
name: 'Auditlists',

1
ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss

@ -296,7 +296,6 @@ body {
div.el-input {
input.el-input__inner {
border: 0;
height: 100%;
min-height: fit-content;
line-height: unset;
font-size: 12px;

3
ruoyi-ui/src/views/JiHeExpressway/utils/axios/auth.js

@ -4,7 +4,8 @@ import axios from "axios";
// const RequestURL = `http://10.168.65.211:3000`;
// 后台
const RequestURL = `http://10.168.77.209:1024/dev-api`;
// const RequestURL = `http://10.168.77.209:1024/dev-api`;
const RequestURL = `http://10.166.147.60:9021`
const UN = "jhgskj",
PD = "jhgskj@2023",

11
ruoyi-ui/vue.config.js

@ -1,5 +1,8 @@
"use strict";
const path = require("path");
const webpack = require("webpack");
const packageJSON = require("./package.json");
function resolve(dir) {
return path.join(__dirname, dir);
@ -79,6 +82,14 @@ module.exports = {
chainWebpack(config) {
config.plugins.delete("preload"); // TODO: need test
config.plugins.delete("prefetch"); // TODO: need test
config.plugin("DefinePlugin").use(webpack.DefinePlugin, [
{
"process.env.Version": (() =>
JSON.stringify(
`${new Date().toLocaleString()}-V${packageJSON.version}`
))(),
},
]);
const rootModulesPath = path.resolve("node_modules");
if (config.resolve.modules.store.has(rootModulesPath)) {

Loading…
Cancel
Save