Commit b9321d34 authored by caicaicai's avatar caicaicai

视频页面完善

parent 2d6affb6
//-----------------登录-------------------- //-----------------登录--------------------
export const login = 'auth/login'; //登录 export const login = 'auth/login'; //登录
export const code = 'auth/code'; export const code = 'auth/code';
\ No newline at end of file export const mainCamera = 'camera/mainCamera'; //视频监控分区表
export const mainCameraDetail = 'camera/list'; //视频监控分区摄像头详情表
\ No newline at end of file
...@@ -17,7 +17,7 @@ axios.interceptors.request.use( ...@@ -17,7 +17,7 @@ axios.interceptors.request.use(
let ticket = JSON.parse(localStorage.getItem(appConfig.USER_KEY)).ticket; let ticket = JSON.parse(localStorage.getItem(appConfig.USER_KEY)).ticket;
config.headers.ticket = ticket == null ? '' : ticket; config.headers.ticket = ticket == null ? '' : ticket;
} }
config.headers.token = token == null ? '' : token; config.headers.Authorization = token == null ? '' : token;
return config; return config;
}, },
......
...@@ -25,10 +25,13 @@ const mineMonitoring = { ...@@ -25,10 +25,13 @@ const mineMonitoring = {
productionAutomation:{ productionAutomation:{
name:"生产自动化", name:"生产自动化",
context:[{name:"发货车辆",num:"36辆"},{name:"发货量",num:"36辆"}], context:[{name:"发货车辆",num:"36辆"},{name:"发货量",num:"36辆"}],
} },
user:"",
}, },
mutations:{ mutations:{
changeUser(userName){
state.user = userName;
}
}, },
getters:{ getters:{
...@@ -65,12 +68,10 @@ export default new Vuex.Store({ ...@@ -65,12 +68,10 @@ export default new Vuex.Store({
state: { state: {
projectName:"鑫海数字矿山后台管理系统", projectName:"鑫海数字矿山后台管理系统",
platformName:"鑫海数字矿山后台管理平台", platformName:"鑫海数字矿山后台管理平台",
user:"",
}, },
mutations: { mutations: {
changeUser(userName){
state.user = userName;
}
}, },
actions: { actions: {
}, },
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<span>{{ $store.state.platformName }}</span> <span>{{ $store.state.platformName }}</span>
<div class="userInformationBar"> <div class="userInformationBar">
<div style="margin-right:10px;"> <div style="margin-right:10px;">
<span>{{$store.state.user}}</span> <span>{{userName}}</span>
<span class="iconfont icon-xiajiantou xiajiantou" style="font-size:18px;"></span> <span class="iconfont icon-xiajiantou xiajiantou" style="font-size:18px;"></span>
</div> </div>
<el-button type="primary" circle @click="handleFullScreen()" size="small" style="margin-right:10px;"><span :class="quanping"></span></el-button> <el-button type="primary" circle @click="handleFullScreen()" size="small" style="margin-right:10px;"><span :class="quanping"></span></el-button>
......
...@@ -26,6 +26,7 @@ import axios from "axios" ...@@ -26,6 +26,7 @@ import axios from "axios"
import {login,code} from "@/axios/api.js" import {login,code} from "@/axios/api.js"
import {encrypt} from "@/utils/rsaEncrypt.js" import {encrypt} from "@/utils/rsaEncrypt.js"
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { config as appConfig } from '../config.js'
export default { export default {
...@@ -45,7 +46,7 @@ export default { ...@@ -45,7 +46,7 @@ export default {
this.getCookie() this.getCookie()
}, },
methods:{ methods:{
getCode() { getCode() {
httpGet(code).then(res=> { httpGet(code).then(res=> {
this.loginForm.uuid = res.uuid; this.loginForm.uuid = res.uuid;
}); });
...@@ -62,6 +63,7 @@ export default { ...@@ -62,6 +63,7 @@ export default {
} }
}, },
LoginInitiation(){ LoginInitiation(){
let self = this
if(this.loginForm.userName == "" || this.loginForm.password == ""){ if(this.loginForm.userName == "" || this.loginForm.password == ""){
alert("请输入正确的用户名或密码!") alert("请输入正确的用户名或密码!")
}else{ }else{
...@@ -76,9 +78,17 @@ export default { ...@@ -76,9 +78,17 @@ export default {
} }
if(valid){ if(valid){
httpPostForJson(login, user).then( res =>{ httpPostForJson(login, user).then( res =>{
//console.log(res); console.log(res);
if(res.user.user.enabled){ if(res.user.user.enabled){
//this.$store.commit('changeUser',res.user.user.nickName); //self.$store.a.commit('changeUser',res.user.user.nickName);
localStorage.setItem(appConfig.TOKEN_KEY,res.token);
if (user.rememberMe) {
Cookies.set('username', user.username, { expires: Config.passCookieExpires })
Cookies.set('password', user.password, { expires: Config.passCookieExpires })
} else {
Cookies.remove('username')
Cookies.remove('password')
}
this.$router.push({path: 'homepage/mineMonitoring'}); this.$router.push({path: 'homepage/mineMonitoring'});
}else{ }else{
// console.log(res); // console.log(res);
...@@ -89,13 +99,7 @@ export default { ...@@ -89,13 +99,7 @@ export default {
} }
}) })
this.loading = true this.loading = true
if (user.rememberMe) {
Cookies.set('username', user.username, { expires: Config.passCookieExpires })
Cookies.set('password', user.password, { expires: Config.passCookieExpires })
} else {
Cookies.remove('username')
Cookies.remove('password')
}
} else { } else {
console.log('error submit!!') console.log('error submit!!')
return false return false
......
<template> <template>
<div class="iframeBody"> <div class="iframeBody">
<!-- 分区设置 -->
<div class="leftMenuBar"> <div class="leftMenuBar">
<div style="color:#071E4C;font-weight:600;font-size:20px;margin-bottom:20px;">监控设置</div> <div style="font-weight:600;font-size:20px;margin-bottom:20px;display:flex;justify-content: space-between;">
<div style="color:#071E4C;font-weight:600;font-size:17px;"> <div style="color:#071E4C;">监控设置</div>
<div v-for="(item,index) in videoAreaArray" :key="index" style="margin-bottom:10px;cursor: pointer;" :class="index == videoAreaIndex ? 'leftMenuSelected' : '' " @click="videoMenuIndex(index)"> <el-button type="primary" size="small" @click="zoneEdit('add')" >增加分区</el-button>
<span class="el-icon-camera-solid"> {{item}}</span>
</div>
</div> </div>
<template>
<el-table :data="main_camera" height="750" border style="width: 100%">
<el-table-column prop="name" label="分区名称" align="center"></el-table-column>
<el-table-column prop="cnt" label="分区数量" align="center"></el-table-column>
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<el-button type="text" @click="zonechecked(scope.row)">查看</el-button>
<el-button @click="zoneEdit('change',scope.row)" type="text">编辑</el-button>
<el-button type="text" @click="zoneDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</div> </div>
<el-dialog :title="zoneTitle" :visible.sync="zoneVisible" width="30%">
<el-form ref="form" :model="zoneData" label-width="80px">
<el-form-item label="分区名称">
<el-input v-model="zoneData.name"></el-input>
</el-form-item>
<el-form-item label="分区数量">
<el-input v-model="zoneData.cnt"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="zoneSave()">确 定</el-button>
<el-button @click="zoneCancel()">取 消</el-button>
</span>
</el-dialog>
<el-dialog title="你确定删除该分区吗?" :visible.sync="zoneDeleteVisible" width="30%">
<el-button type="danger" @click="agreeDeleteZone()">删除</el-button>
<el-button @click="cancelDeleteZone()">取消</el-button>
</el-dialog>
<!-- 详情设置 -->
<div class="rightVideoBox"> <div class="rightVideoBox">
<span style="margin-right:50px;font-size:20px;font-family: '微软雅黑';font-weight:600;">{{cameraDetailName}}</span>
<el-button type="primary" @click="cameraDetaileEdit('add')">增加摄像头</el-button>
<template>
<el-table :data="cameraDetail" height="750" border style="width: 100%;margin-top:12px">
<el-table-column prop="camera_id" label="摄像头ID" align="center"></el-table-column>
<el-table-column prop="camera_name" label="摄像头名称" align="center"></el-table-column>
<el-table-column prop="camera_ip" label="摄像头IP" align="center"></el-table-column>
<el-table-column prop="camera_port" label="摄像头端口" align="center"></el-table-column>
<el-table-column prop="video_url" label="视频URL" align="center"></el-table-column>
<el-table-column prop="camera_way" label="通道" align="center"></el-table-column>
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<el-button @click="cameraDetaileEdit('change',scope.row)" type="text">编辑</el-button>
<el-button type="text" @click="cameraDetaileDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</div> </div>
<el-dialog :title="cameraDetailTitle" :visible.sync="cameraDetailVisible" width="30%">
<el-form ref="form" :model="cameraDetailData" label-width="80px">
<el-form-item label="摄像头ID">
<el-input v-model="cameraDetailData.camera_id" :disabled="disabledInp"></el-input>
</el-form-item>
<el-form-item label="摄像头名称">
<el-input v-model="cameraDetailData.camera_name"></el-input>
</el-form-item>
<el-form-item label="摄像头IP">
<el-input v-model="cameraDetailData.camera_ip"></el-input>
</el-form-item>
<el-form-item label="摄像头端口">
<el-input v-model="cameraDetailData.camera_port"></el-input>
</el-form-item>
<el-form-item label="视频URL">
<el-input v-model="cameraDetailData.video_url"></el-input>
</el-form-item>
<el-form-item label="通道">
<el-input v-model="cameraDetailData.camera_way"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="cameraDetaileSave()">确 定</el-button>
<el-button @click="cameraDetaileCancel()">取 消</el-button>
</span>
</el-dialog>
<el-dialog title="你确定删除该摄像头吗?" :visible.sync="cameraDetaileDeleteVisible" width="30%">
<el-button type="danger" @click="agreeDeleteCameraDetaile()">删除</el-button>
<el-button @click="cancelDeleteCameraDetaile()">取消</el-button>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { httpGet, httpPost,httpPostForJson } from "@/common/httpBean.js"
import axios from "axios"
import {mainCamera,mainCameraDetail} from "@/axios/api.js"
export default { export default {
created(){
this.getCode()
},
data(){ data(){
return{ return{
videoAreaArray:["采区监控","厂区监控","办公室监控","办公室监控1","办公室监控2"], //分区部分
videoAreaIndex:0, main_camera:[{
id:1,
name:"采区监控",
cnt:4,
main_cameraDetail:[{
id:1,
camera_id:1,
camera_name:"采区1",
camera_ip:"192.102",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:1,
camera_name:"采区2",
camera_ip:"192.102",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:1,
camera_name:"采区3",
camera_ip:"192.102",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:1,
camera_name:"采区4",
camera_ip:"192.102",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}]
},{
id:2,
name:"厂区监控",
cnt:4,
main_cameraDetail:[{
id:1,
camera_id:2,
camera_name:"厂区监控1",
camera_ip:"192.230",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:2,
camera_name:"厂区监控2",
camera_ip:"192.230",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:2,
camera_name:"厂区监控3",
camera_ip:"192.230",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:2,
camera_name:"厂区监控4",
camera_ip:"192.230",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}]
},{
id:3,
name:"办公室监控",
cnt:4,
main_cameraDetail:[{
id:1,
camera_id:3,
camera_name:"办公室监控_1",
camera_ip:"192.523",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:3,
camera_name:"办公室监控_2",
camera_ip:"192.523",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:3,
camera_name:"办公室监控_3",
camera_ip:"192.523",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:3,
camera_name:"办公室监控_4",
camera_ip:"192.523",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}]
},{
id:4,
name:"办公室监控1",
cnt:4,
main_cameraDetail:[{
id:1,
camera_id:4,
camera_name:"办公室监控1_1",
camera_ip:"192.155",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:4,
camera_name:"办公室监控1_2",
camera_ip:"192.155",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:4,
camera_name:"办公室监控1_3",
camera_ip:"192.155",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:4,
camera_name:"办公室监控1_4",
camera_ip:"192.155",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}]
},{
id:5,
name:"办公室监控2",
cnt:4,
main_cameraDetail:[{
id:1,
camera_id:5,
camera_name:"办公室监控2_1",
camera_ip:"192.125",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:5,
camera_name:"办公室监控2_2",
camera_ip:"192.125",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:5,
camera_name:"办公室监控2_3",
camera_ip:"192.125",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:5,
camera_name:"办公室监控2_4",
camera_ip:"192.125",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}]
}],
zoneTitle:"",
zoneVisible:false,
zoneType:"",
zoneData:{ name:"",cnt:"",},
zoneDeleteVisible:false,
//详情部分
cameraDetail:[{
id:1,
camera_id:1,
camera_name:"采区1",
camera_ip:"192.102",
camera_port:1001,
video_url:"1221212",
camera_way:"通道1"
},{
id:2,
camera_id:1,
camera_name:"采区2",
camera_ip:"192.102",
camera_port:1002,
video_url:"1221212",
camera_way:"通道2"
},{
id:3,
camera_id:1,
camera_name:"采区3",
camera_ip:"192.102",
camera_port:1003,
video_url:"1221212",
camera_way:"通道3"
},{
id:4,
camera_id:1,
camera_name:"采区4",
camera_ip:"192.102",
camera_port:1003,
video_url:"1221212",
camera_way:"通道4"
}],
cameraDetailName:"采区监控分区详情表",
cameraDetailTitle:"",
cameraDetailVisible:false,
cameraDetailType:"",
cameraDetailData:{id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""},
cameraDetaileDeleteVisible:false,
disabledInp:false,
} }
}, },
methods:{ methods:{
videoMenuIndex(index){
this.videoAreaIndex = index; getCode() {
} httpGet(mainCameraDetail).then(res => {
console.log(res);
});
},
//分区部分
zonechecked(row){
let that = this;
console.log(row.id);
this.main_camera.forEach(function(item){
if(item.id == row.id){
that.cameraDetailName = item.name + "分区详情表";
that.cameraDetail = item.main_cameraDetail
}
})
},
zoneEdit(type,row){
this.zoneData = {id:'',name: '',cnt:''};
this.zoneVisible = true;
this.zoneType = type;
if(this.zoneType === "add"){
this.zoneTitle = "增加分区";
}else if(this.zoneType === "change"){
this.zoneTitle = "修改分区";
this.zoneData = {...row};
}
},
zoneSave(){
if(this.zoneType === "add"){
if(this.zoneData.name === ""){
alert("分区名不得为空!");
return;
}
this.main_camera.unshift(this.zoneData);
this.zoneVisible = false;
this.zoneData = {id:'',name: '',cnt:''};
}else if(this.zoneType === "change"){
let that = this;
let newData = [];
this.main_camera.forEach(function(item){
if(item.id === that.zoneData.id){
newData.push(that.zoneData);
}else{
newData.push(item);
}
})
this.main_camera = newData;
this.zoneVisible = false;
this.zoneData = {id:'',name: '',cnt:''};
}
},
zoneCancel(){
this.zoneVisible = false;
this.zoneData = {id:'',name: '',cnt:''};
},
zoneDelete(row){
//console.log(row);
this.zoneDeleteVisible = true;
this.zoneData = {...row};
},
agreeDeleteZone(){
let that = this;
let newData = [];
this.main_camera.forEach(function(item){
if(item.id === that.zoneData.id){
if(that.zoneData.id == that.cameraDetail[0].camera_id){
that.cameraDetail = [];
}
return;
}else{
newData.push(item);
}
})
this.main_camera = newData;
this.zoneDeleteVisible = false;
this.zoneData = {id:'',name: '',cnt:''};
},
cancelDeleteZone(){
this.zoneDeleteVisible = false;
this.zoneData = {id:'',name: '',cnt:''};
},
//详情部分
cameraDetaileEdit(type,row){
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
this.cameraDetailVisible = true;
this.cameraDetailType = type;
if(this.cameraDetailType === "add"){
this.cameraDetailTitle = "增加摄像头";
this.disabledInp = false;
}else if(this.cameraDetailType === "change"){
this.cameraDetailTitle = "修改摄像头";
this.cameraDetailData = {...row};
this.disabledInp = true;
}
},
cameraDetaileSave(){
if(this.cameraDetailType === "add"){
if(this.cameraDetailData.camera_id === ""){
alert("分区名不得为空!");
return;
}
this.cameraDetail.unshift(this.cameraDetailData);
this.cameraDetailVisible = false;
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
}else if(this.cameraDetailType === "change"){
let that = this;
let newData = [];
this.cameraDetail.forEach(function(item){
if(item.id === that.cameraDetailData.id){
newData.push(that.cameraDetailData);
}else{
newData.push(item);
}
})
this.cameraDetail = newData;
this.cameraDetailVisible = false;
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
}
},
cameraDetaileCancel(){
this.cameraDetailVisible = false;
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
},
cameraDetaileDelete(row){
//console.log(row);
this.cameraDetaileDeleteVisible = true;
this.cameraDetailData = {...row};
},
agreeDeleteCameraDetaile(){
let that = this;
let newData = [];
that.cameraDetail.forEach(function(item){
if(item.id === that.cameraDetailData.id){
return;
}else{
newData.push(item);
}
})
this.cameraDetail = newData;
this.cameraDetaileDeleteVisible = false;
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
},
cancelDeleteCameraDetaile(){
this.cameraDetaileDeleteVisible = false;
this.cameraDetailData = {id:"",camera_id:"",camera_name:"",camera_ip:"",camera_port:"",video_url:"",camera_way:""};
},
}, },
} }
...@@ -37,6 +497,7 @@ export default { ...@@ -37,6 +497,7 @@ export default {
<style scoped> <style scoped>
*{ *{
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
...@@ -46,19 +507,19 @@ export default { ...@@ -46,19 +507,19 @@ export default {
width: 100%; width: 100%;
} }
.leftMenuBar{ .leftMenuBar{
width: 10%; width: 25%;
height: 100%; height: 100%;
background-color: white; background-color: white;
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
} }
.rightVideoBox{ .rightVideoBox{
width: 90%; width: 75%;
height: 100%; height: 100%;
background-color: sandybrown; border-left: 1px solid rgb(245,246,251);
display: flex; background-color: white;
flex-wrap: wrap; padding: 20px;
justify-content: center; box-sizing: border-box;
} }
.leftMenuSelected{ .leftMenuSelected{
color: rgb(0,82,255); color: rgb(0,82,255);
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
<div class="leftMenuBar"> <div class="leftMenuBar">
<div style="color:#071E4C;font-weight:600;font-size:20px;margin-bottom:20px;">视频监控区域</div> <div style="color:#071E4C;font-weight:600;font-size:20px;margin-bottom:20px;">视频监控区域</div>
<div style="color:#071E4C;font-weight:600;font-size:17px;"> <div style="color:#071E4C;font-weight:600;font-size:17px;">
<div v-for="(item,index) in videoAreaArray" :key="index" style="margin-bottom:10px;cursor: pointer;" :class="index == videoAreaIndex ? 'leftMenuSelected' : '' " @click="videoMenuIndex(index)"> <div v-for="(item,index) in main_camera" :key="index" style="margin-bottom:10px;cursor: pointer;" :class="index == videoAreaIndex ? 'leftMenuSelected' : '' " @click="videoMenuIndex(index)">
<span class="el-icon-camera-solid"> {{item}}</span> <span class="el-icon-camera-solid"> {{item.name}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -23,7 +23,22 @@ ...@@ -23,7 +23,22 @@
export default { export default {
data(){ data(){
return{ return{
videoAreaArray:["采区监控","厂区监控","办公室监控","办公室监控1","办公室监控2"], main_camera:[{
name:"采区监控",
cnt:4,
},{
name:"厂区监控",
cnt:4
},{
name:"办公室监控",
cnt:4
},{
name:"办公室监控1",
cnt:4
},{
name:"办公室监控2",
cnt:4
}],
videoAreaIndex:0, videoAreaIndex:0,
rightVideoBoxArray:[4,4,4,4], rightVideoBoxArray:[4,4,4,4],
} }
......
...@@ -94,25 +94,26 @@ module.exports = { ...@@ -94,25 +94,26 @@ module.exports = {
// 所有 webpack-dev-server 的选项都支持 // 所有 webpack-dev-server 的选项都支持
devServer: { devServer: {
proxy: { // proxy: {
'/api': { // '/api': {
target: process.env.VUE_APP_URL, // // target: process.env.VUE_APP_URL,
changeOrigin: true, // target: 'http://192.168.0.108:8013/',
pathRewrite: { // changeOrigin: true,
'^/api' : '' // pathRewrite: {
} // '^/api' : ''
}, // }
'/mock': { // },
// target: "http://192.168.7.124:20000/mock/5cf77a56210725034419be41", // '/mock': {
// target: 'http://45.125.46.128:20000/mock/5cf77a56210725034419be41', // // target: "http://192.168.7.124:20000/mock/5cf77a56210725034419be41",
target: 'localhost:30003/hlkj/', // // target: 'http://45.125.46.128:20000/mock/5cf77a56210725034419be41',
// changeOrigin: true, // target: 'localhost:30003/hlkj/',
ws: true, // // changeOrigin: true,
pathRewrite: { // ws: true,
"^/mock": "" // pathRewrite: {
} // "^/mock": ""
}, // }
} // },
// }
}, },
// 是否为 Babel 或 TypeScript 使用 thread-loader // 是否为 Babel 或 TypeScript 使用 thread-loader
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment