添加语音调度页面通讯录和语音调度平台模块逻辑

main
jinna 2 years ago
parent 5363f1b484
commit 8485163d5b
  1. 25
      src/api/dispatch/dispatch.js
  2. 254
      src/router/views/index.js
  3. 573
      src/views/dispatch/index.vue
  4. 61
      vue.config.js

@ -0,0 +1,25 @@
import request from "@/router/axios";
export const getGroupList = (query) => {
return request({
url: "http://172.19.2.195:8081/GetGroupPage",
method: "get",
params: query,
});
};
export const deleteUser = (query) => {
return request({
url: "http://172.19.2.195:8081/api/userManage/doDelUserByEID",
method: "get",
params: query,
});
};
export const addUser = (data) => {
return request({
url: "http://172.19.0.11:8081/api/userManage/batchAddEmployeeInfo",
method: "post",
data,
});
};

@ -1,114 +1,148 @@
import Layout from '@/page/index/' import Layout from "@/page/index/";
export default [{ export default [
path: '/wel', {
component: Layout, path: "/wel",
redirect: '/wel/index', component: Layout,
children: [{ redirect: "/wel/index",
path: 'index', children: [
name: '首页', {
meta: { path: "index",
i18n: 'dashboard' name: "首页",
}, meta: {
component: () => i18n: "dashboard",
import( /* webpackChunkName: "views" */ '@/views/wel/index') },
}, { component: () =>
path: 'dashboard', import(/* webpackChunkName: "views" */ "@/views/wel/index"),
name: '控制台', },
meta: { {
i18n: 'dashboard', path: "dashboard",
menu: false, name: "控制台",
}, meta: {
component: () => i18n: "dashboard",
import( /* webpackChunkName: "views" */ '@/views/wel/dashboard') menu: false,
}] },
}, { component: () =>
path: '/test', import(/* webpackChunkName: "views" */ "@/views/wel/dashboard"),
component: Layout, },
redirect: '/test/index', ],
children: [{ },
path: 'index', {
name: '测试页', path: "/test",
meta: { component: Layout,
i18n: 'test' redirect: "/test/index",
}, children: [
component: () => {
import( /* webpackChunkName: "views" */ '@/views/util/test') path: "index",
}] name: "测试页",
}, { meta: {
path: '/dict-horizontal', i18n: "test",
component: Layout, },
redirect: '/dict-horizontal/index', component: () =>
children: [{ import(/* webpackChunkName: "views" */ "@/views/util/test"),
path: 'index', },
name: '字典管理', ],
meta: { },
i18n: 'dict' {
}, path: "/dict-horizontal",
component: () => component: Layout,
import( /* webpackChunkName: "views" */ '@/views/util/demo/dict-horizontal') redirect: "/dict-horizontal/index",
}] children: [
}, { {
path: '/dict-vertical', path: "index",
component: Layout, name: "字典管理",
redirect: '/dict-vertical/index', meta: {
children: [{ i18n: "dict",
path: 'index', },
name: '字典管理', component: () =>
meta: { import(
i18n: 'dict' /* webpackChunkName: "views" */ "@/views/util/demo/dict-horizontal"
}, ),
component: () => },
import( /* webpackChunkName: "views" */ '@/views/util/demo/dict-vertical') ],
}] },
}, { {
path: '/info', path: "/dict-vertical",
component: Layout, component: Layout,
redirect: '/info/index', redirect: "/dict-vertical/index",
children: [{ children: [
path: 'index', {
name: '个人信息', path: "index",
meta: { name: "字典管理",
i18n: 'info' meta: {
}, i18n: "dict",
component: () => },
import( /* webpackChunkName: "views" */ '@/views/system/userinfo') component: () =>
}] import(
}, { /* webpackChunkName: "views" */ "@/views/util/demo/dict-vertical"
path: '/work/process/leave', ),
component: Layout, },
redirect: '/work/process/leave/form', ],
children: [{ },
path: 'form/:processDefinitionId', {
name: '请假流程', path: "/info",
meta: { component: Layout,
i18n: 'work' redirect: "/info/index",
}, children: [
component: () => {
import( /* webpackChunkName: "views" */ '@/views/work/process/leave/form') path: "index",
}, { name: "个人信息",
path: 'handle/:taskId/:processInstanceId/:businessId', meta: {
name: '处理请假流程', i18n: "info",
meta: { },
i18n: 'work' component: () =>
}, import(/* webpackChunkName: "views" */ "@/views/system/userinfo"),
},
],
},
{
path: "/work/process/leave",
component: Layout,
redirect: "/work/process/leave/form",
children: [
{
path: "form/:processDefinitionId",
name: "请假流程",
meta: {
i18n: "work",
},
component: () =>
import(
/* webpackChunkName: "views" */ "@/views/work/process/leave/form"
),
},
{
path: "handle/:taskId/:processInstanceId/:businessId",
name: "处理请假流程",
meta: {
i18n: "work",
},
component: () =>
import(
/* webpackChunkName: "views" */ "@/views/work/process/leave/handle"
),
},
{
path: "detail/:processInstanceId/:businessId",
name: "请假流程详情",
meta: {
i18n: "work",
},
component: () =>
import(
/* webpackChunkName: "views" */ "@/views/work/process/leave/detail"
),
},
],
},
{
path: "/dispatch",
name: "语音调度",
component: () => component: () =>
import( /* webpackChunkName: "views" */ '@/views/work/process/leave/handle') import(/* webpackChunkName: "views" */ "@/views/dispatch/index"),
}, {
path: 'detail/:processInstanceId/:businessId',
name: '请假流程详情',
meta: { meta: {
i18n: 'work' isTab: false,
isAuth: false,
}, },
component: () => },
import( /* webpackChunkName: "views" */ '@/views/work/process/leave/detail') ];
}]
},{
path: '/dispatch',
name: '语音调度',
component: () =>
import( /* webpackChunkName: "views" */ '@/views/dispatch/index'),
meta: {
isTab: false
}
}]

@ -48,19 +48,23 @@
@clear="searchHandle(1)" @clear="searchHandle(1)"
></el-input> ></el-input>
</div> </div>
<div class="list_box" v-show="activeTit == 1"> <div class="list_box" v-show="activeTit == 1" v-infinite-scroll="load" :infinite-scroll-immediate="isSroll">
<div class="list_item" :class="activeDevice == item.id ? 'dev_act' : item.isSelect == 1 ? 'sele_devi' : ''" <div class="list_item" :class="activeDevice == item.id ? 'dev_act' : item.isSelect == 1 ? 'sele_devi' : ''"
v-for="item in deviceData" :key="item.id" @mouseenter="enterDevice(item)" @mouseleave="leaveDevice"> v-for="item in deviceData" :key="item.id" @mouseenter="enterDevice(item)" @mouseleave="leaveDevice">
<div class="left_bor" v-show="activeDevice == item.id"></div> <div class="left_bor" v-show="activeDevice == item.id"></div>
<div class="dev_img"> <div class="dev_img">
<img v-show="activeDevice !== item.id" src="~@/assets/image/device.png" alt=""> <img v-show="activeDevice !== item.id" src="~@/assets/image/device.png" alt="">
<img v-show="activeDevice == item.id" src="~@/assets/image/device_act.png" alt=""> <img v-show="activeDevice == item.id" src="~@/assets/image/device_act.png" alt="">
</div> </div>
<div class="device_name">{{item.name}}</div> <div class="device_name" :class="activeDevice == item.id ? 'act_dev_name' : ''">{{item.name}}</div>
<div class="dev_btn" v-show="activeDevice == item.id">邀请</div> <div class="dev_btn_box">
<div class="dev_btn" @click="inviteUser(item)" v-show="activeDevice == item.id">邀请</div>
<div class="dev_btn del_btn" v-show="activeDevice == item.id" @click="deleteUser(item)">删除</div>
</div>
</div> </div>
</div> </div>
<div class="btn_box" v-show="activeTit == 1"> <div class="btn_box" v-show="activeTit == 1" @click="addUser">
<img src="~@/assets/image/add_btn.png" alt="">添加用户 <img src="~@/assets/image/add_btn.png" alt="">添加用户
</div> </div>
<div class="tree_box" v-show="activeTit == 2"> <div class="tree_box" v-show="activeTit == 2">
@ -84,42 +88,45 @@
<div class="cen_tit"> <div class="cen_tit">
<img src="~@/assets/image/voice_tit.png" alt=""> <img src="~@/assets/image/voice_tit.png" alt="">
</div> </div>
<div class="bottom_cen" v-show="activeTit == 1"> <div class="bottom_cen" v-show="inviteList.length > 1">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8" v-for="item in inviteList" :key="item.id">
<div class="bottom_item"> <video class="bottom_item" id="item.id">
<div class="item_tit">终端设备名称调度组1</div> <!-- <div class="item_tit">终端设备名称调度组1</div>
<div class="voice_con"> <div class="voice_con">
<img src="~@/assets/image/voice_bag.png" alt=""> <img src="~@/assets/image/voice_bag.png" alt="">
</div> </div>
<div class="voice_btn"> <div class="voice_btn">
<img src="~@/assets/image/mute.png" alt=""> <img src="~@/assets/image/mute.png" alt="">
<img class="hang_btn" src="~@/assets/image/hang.png" alt=""> <img class="hang_btn" src="~@/assets/image/hang.png" alt="">
</div> </div> -->
</div> </video>
</el-col> </el-col>
<!-- <el-col :span="8"><div class="bottom_item"></div></el-col>
<el-col :span="8"><div class="bottom_item"></div></el-col> <el-col :span="8"><div class="bottom_item"></div></el-col>
<el-col :span="8"><div class="bottom_item"></div></el-col> <el-col :span="8"><div class="bottom_item"></div></el-col>
<el-col :span="8"><div class="bottom_item"></div></el-col> <el-col :span="8"><div class="bottom_item"></div></el-col>
<el-col :span="8"><div class="bottom_item"></div></el-col> <el-col :span="8"><div class="bottom_item"></div></el-col> -->
<el-col :span="8"><div class="bottom_item"></div></el-col>
</el-row> </el-row>
</div> </div>
<div class="group_cen" v-show="activeTit == 2"> <div class="group_cen" v-show="inviteList.length == 1">
<div class="group_tit">终端设备名称调度组1</div> <video class="group_video" src="" id="video">
<div class="group_voice"> <!-- <div class="group_tit">{{inviteList.length == 1 ? inviteList[0].name : ''}}</div>
<img src="~@/assets/image/voice_bag.png" alt=""> <div class="group_voice">
</div> <img src="~@/assets/image/voice_bag.png" alt="">
<div class="voice_btn"> </div>
<img src="~@/assets/image/mute.png" alt=""> <div class="voice_btn">
<img class="hang_btn" src="~@/assets/image/hang.png" alt=""> <img src="~@/assets/image/mute.png" alt="">
</div> <img class="hang_btn" src="~@/assets/image/hang.png" alt="">
</div> -->
</video>
</div> </div>
<div class="bot_cen"> <div class="bot_cen">
<img v-show="activeTit == 1" src="~@/assets/image/over.png" alt=""> <img v-show="inviteList.length > 1" src="~@/assets/image/over.png" alt="">
<img v-show="activeTit == 1" class="exit" src="~@/assets/image/exit_voice.png" alt=""> <img v-show="inviteList.length > 1" class="exit" src="~@/assets/image/exit_voice.png" alt="">
<img v-show="activeTit == 2" src="~@/assets/image/finish.png" alt=""> <img v-show="inviteList.length == 1" src="~@/assets/image/finish.png" alt="">
<img v-show="activeTit == 2" class="exit" src="~@/assets/image/exit_speak.png" alt=""> <img v-show="inviteList.length == 1" class="exit" src="~@/assets/image/exit_speak.png" alt="">
</div> </div>
</div> </div>
<div class="right_con"> <div class="right_con">
@ -153,10 +160,204 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog
title="添加用户"
:visible.sync="dialogVisible"
width="80%"
custom-class="user_dialog"
:before-close="handleClose">
<el-table
:data="userData"
:key="index"
border
max-height="424"
style="
margin:0 auto;
margin-bottom: 0.3rem;
width: 100%;
"
header-cell-style="background-color:#fafafa;font-size:12px;color:black"
>
<el-table-column width="63px" fixed>
<template slot="header">
<el-button
circle
size="small"
type="primary"
icon="el-icon-plus"
@click="addPeople()"
/>
</template>
<template slot-scope="scope">
<el-button
circle
size="small"
type="danger"
icon="el-icon-delete"
@click="removePeople(scope.$index, scope.row,scope)"
/>
</template>
</el-table-column>
<el-table-column fixed prop="" label="账号" width="286" align="center">
<template slot-scope="scope">
<el-input
v-model="scope.row.employeeId"
clearable
placeholder="账号"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="密码">
<template slot-scope="scope">
<el-input
v-model="scope.row.password"
clearable
placeholder="密码"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="120" align="center" prop="" label="等级">
<template slot-scope="scope">
<el-select
style="width: 90%"
v-model="scope.row.employeeLevel"
clearable
filterable
placeholder="请选择等级"
size="medium"
>
<el-option
v-for="(item, index) in levelList"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="调度组">
<template slot-scope="scope">
<el-select
style="width: 90%"
v-model="scope.row.groupNum"
clearable
filterable
placeholder="请选择调度组"
size="medium"
>
<el-option
v-for="(item, index) in groupList"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="名称">
<template slot-scope="scope">
<el-input
v-model="scope.row.name"
clearable
placeholder="名称"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="类型">
<template slot-scope="scope">
<el-input
v-model="scope.row.type"
clearable
readonly
placeholder="类型"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="是否录音">
<template slot-scope="scope">
<el-select
style="width: 90%"
v-model="scope.row.isRecord"
clearable
filterable
placeholder="请选择是否录音"
size="medium"
>
<el-option label="是" :value="1" />
<el-option label="否" :value="0" />
</el-select>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="是否录像">
<template slot-scope="scope">
<el-select
style="width: 90%"
v-model="scope.row.isVideo"
clearable
filterable
placeholder="请选择是否录像"
size="medium"
>
<el-option label="是" :value="1" />
<el-option label="否" :value="0" />
</el-select>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="经度">
<template slot-scope="scope">
<el-input
v-model="scope.row.longitude"
clearable
readonly
placeholder="经度"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="纬度">
<template slot-scope="scope">
<el-input
v-model="scope.row.latitude"
clearable
readonly
placeholder="纬度"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
<el-table-column width="286" align="center" prop="" label="备注">
<template slot-scope="scope">
<el-input
v-model="scope.row.remark"
clearable
readonly
placeholder="备注"
size="medium"
style="width: 90%; margin-left: 5%"
/>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="userSubmit"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {getGroupList,deleteUser,addUser} from "@/api/dispatch/dispatch"
export default { export default {
name: "alarmCenter", name: "alarmCenter",
data() { data() {
@ -167,23 +368,9 @@ export default {
activeNode:'', activeNode:'',
selectTreeNode:['002','009'], selectTreeNode:['002','009'],
activePhone:'', activePhone:'',
deviceData:[ dialogVisible:false,
{id:'001',name:'终端设备名称1(1001)',isSelect:0}, deviceData:[],
{id:'002',name:'终端设备名称2(1002)',isSelect:1}, isSroll:false,
{id:'003',name:'终端设备名称3(1003)',isSelect:0},
{id:'004',name:'终端设备名称4(1004)',isSelect:0},
{id:'005',name:'终端设备名称5(1005)',isSelect:1},
{id:'006',name:'终端设备名称6(1006)',isSelect:0},
{id:'007',name:'终端设备名称7(1007)',isSelect:0},
{id:'008',name:'终端设备名称8(1008)',isSelect:1},
{id:'009',name:'终端设备名称9(1009)',isSelect:0},
{id:'010',name:'终端设备名称10(1010)',isSelect:0},
{id:'011',name:'终端设备名称11(1011)',isSelect:1},
{id:'012',name:'终端设备名称12(1012)',isSelect:0},
{id:'013',name:'终端设备名称13(1013)',isSelect:0},
{id:'014',name:'终端设备名称14(1014)',isSelect:0},
{id:'015',name:'终端设备名称15(1015)',isSelect:0},
],
treeData: [{ treeData: [{
id:'001', id:'001',
label: '调度组名称1', label: '调度组名称1',
@ -248,15 +435,64 @@ export default {
}, },
] ]
}], }],
inviteList:[
// {id:'001',name:'11001',isSelect:1},
],
phoneList:[ phoneList:[
{id:1,time:'00:12:23',name:'终端设备名称——调度组1'}, // {id:1,time:'00:12:23',name:'1'},
{id:2,time:'00:16:23',name:'终端设备名称——调度组2'}, // {id:2,time:'00:16:23',name:'2'},
{id:3,time:'00:01:23',name:'终端设备名称——调度组2'}, // {id:3,time:'00:01:23',name:'2'},
{id:4,time:'00:11:23',name:'终端设备名称——调度组2'}, // {id:4,time:'00:11:23',name:'2'},
], ],
timer:null, timer:null,
time:'', time:'',
date:'' date:'',
userData:[
{employeeId:'',password:'123456',employeeLevel:10,groupNum:null,name:'',type:'智能终端',isRecord:0,
isVideo:0,longitude:null,latitude:null,remark:''},
],
levelList:[
{label:'1级',value:1},
{label:'2级',value:2},
{label:'3级',value:3},
{label:'4级',value:4},
{label:'5级',value:5},
{label:'6级',value:6},
{label:'7级',value:7},
{label:'8级',value:8},
{label:'9级',value:9},
{label:'10级',value:10},
],
groupList:[],
listData:[
{id:'001',name:'终端设备名称1(1001)',isSelect:0},
{id:'002',name:'终端设备名称2(1002)',isSelect:0},
{id:'003',name:'终端设备名称3(1003)',isSelect:0},
{id:'004',name:'终端设备名称4(1004)',isSelect:0},
{id:'005',name:'终端设备名称5(1005)',isSelect:0},
{id:'006',name:'终端设备名称6(1006)',isSelect:0},
{id:'007',name:'终端设备名称7(1007)',isSelect:0},
{id:'008',name:'终端设备名称8(1008)',isSelect:0},
{id:'009',name:'终端设备名称9(1009)',isSelect:0},
{id:'010',name:'终端设备名称10(1010)',isSelect:0},
{id:'011',name:'终端设备名称11(1011)',isSelect:0},
{id:'012',name:'终端设备名称12(1012)',isSelect:0},
{id:'013',name:'终端设备名称13(1013)',isSelect:0},
{id:'014',name:'终端设备名称14(1014)',isSelect:0},
{id:'015',name:'终端设备名称15(1015)',isSelect:0},
{id:'016',name:'终端设备名称16(1016)',isSelect:0},
{id:'017',name:'终端设备名称17(1017)',isSelect:0},
{id:'018',name:'终端设备名称18(1018)',isSelect:0},
{id:'019',name:'终端设备名称19(1019)',isSelect:0},
{id:'020',name:'终端设备名称20(1020)',isSelect:0},
{id:'021',name:'终端设备名称21(1021)',isSelect:0},
{id:'022',name:'终端设备名称22(1022)',isSelect:0},
{id:'023',name:'终端设备名称23(1023)',isSelect:0},
{id:'024',name:'终端设备名称24(1024)',isSelect:0},
],
startIndex:0,
current:1,
} }
}, },
computed: { computed: {
@ -264,9 +500,17 @@ export default {
mounted() { mounted() {
}, },
created(){ created(){
this.getTime() this.getTime();
// this.load()
this.getGroupData()
}, },
methods: { methods: {
//
getGroupData(){
getGroupList().then(res =>{
console.log(res)
})
},
fn(str) { fn(str) {
let num = null; let num = null;
str >= 10 ? (num = str) : (num = "0" + str); str >= 10 ? (num = str) : (num = "0" + str);
@ -287,6 +531,139 @@ export default {
this.date = year + "/" + (month + 1) + "/" + data; this.date = year + "/" + (month + 1) + "/" + data;
}, 1000); }, 1000);
}, },
//
inviteUser(row){
this.$confirm('确定要邀请该用户吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
row.isSelect = 1
this.deviceData.find(item => item.id == row.id).isSelect = 1;
this.inviteList.push(row)
}).catch(() => {
// this.$message({
// type: 'info',
// message: ''
// });
});
},
//
load(){
// this.isSroll = true;
// queryImmediateList({ curPage: this.current, pageRows: 10}).then((res) => {
// this.deviceData = this.deviceData.concat(res.data.records);
// this.current++;
// if (res.data.records.length == 0) {
// this.isSroll = false;
// }
// this.total = res.data.total;
// });
let arr = []
let endIndex = this.startIndex + 10;
this.isSroll = true;
this.deviceData = this.deviceData.concat(this.listData.slice(this.startIndex, endIndex));
arr =JSON.parse(JSON.stringify(this.listData)).slice(this.startIndex, endIndex)
this.startIndex = endIndex;
if(arr.length = 0){
this.isSroll = false;
this.startIndex = 0
}
},
//
deleteUser(item){
this.$confirm('确定要删除该用户吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteUser({intemployeeId:item.id}).then(res =>{
if(res.state == 200){
this.$message({
type: 'success',
message: '删除成功!'
});
}
})
}).catch(() => {
// this.$message({
// type: 'info',
// message: ''
// });
});
},
//
addUser(){
this.dialogVisible = true;
this.$nextTick(() =>{
this.$el.querySelector('.el-table__body-wrapper').scrollLeft = 0;
this.userData = [
{employeeId:'',password:'123456',employeeLevel:10,groupNum:null,name:'',type:'智能终端',isRecord:0,
isVideo:0,longitude:null,latitude:null,remark:''},
];
})
},
//
addPeople(){
let tmp = this.userData.find(item => item.employeeId == '')
if(tmp){
this.$message({
message:'请填写账号',
type:'warning'
})
}else{
this.userData.push(
{employeeId:'',password:'123456',employeeLevel:10,groupNum:'',name:'',type:'智能终端',isRecord:0,
isVideo:0,longitude:null,latitude:null,remark:''},
);
}
},
//
removePeople(index, row,val) {
console.log(val)
// if (row.id !== undefined) {
// this.$message({
// message: "",
// type: "warning",
// });
// } else {
if (index > 0 || this.userData.length > 1) {
this.userData.splice(index, 1);
} else {
this.$message({
message: "至少要填写一行",
type: "warning",
});
}
// }
},
userSubmit(){
let paramsData = []
let tmp = this.userData.find(item => item.employeeId == '');
if(tmp){
this.$message.error('请填写账号');
}else{
paramsData = JSON.parse(JSON.stringify(this.userData));
paramsData.map(item =>{
item.type = '6.0';
item.name = item.name == '' ? item.employeeId : item.name
})
console.log(paramsData)
addUser(JSON.stringify(paramsData)).then(res =>{
console.log(res)
if(res.code == 200){
this.$message.success('添加成功!')
this.deviceData = [];
this.current = 1;
this.load()
}
})
}
},
// / // /
changeTitle(item){ changeTitle(item){
this.activeTit = item this.activeTit = item
@ -531,7 +908,7 @@ export default {
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 0.06rem 0 0.16rem; margin: 0 0.06rem 0 0.06rem;
img{ img{
width: 0.28rem; width: 0.28rem;
height: 0.28rem; height: 0.28rem;
@ -543,21 +920,43 @@ export default {
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
font-weight: 400; font-weight: 400;
line-height: 0.35rem; line-height: 0.35rem;
width: 2.3rem;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&.act_dev_name{
width: 1.5rem;
}
} }
.dev_btn{ .dev_btn_box{
font-size: 14px; width: 0.85rem;
font-family: Microsoft YaHei; height: 0.35rem;
font-weight: 400; position: absolute;
float: right; right: 0.05rem;
width: 0.5rem; display: flex;
height: 0.25rem; align-items: center;
margin-right: 0.05rem; justify-content: space-between;
margin-top: 0.045rem;
background: #176CE8; .dev_btn{
border-radius: 2px; font-size: 14px;
color: #fff; font-family: Microsoft YaHei;
text-align: center; font-weight: 400;
line-height: 0.25rem; float: right;
width: 0.4rem;
height: 0.25rem;
// margin-right: 0.5rem;
// margin-top: 0.045rem;
background: #176CE8;
border-radius: 2px;
color: #fff;
text-align: center;
line-height: 0.25rem;
&.del_btn{
background: #D83030;
}
}
} }
} }
} }
@ -587,6 +986,7 @@ export default {
justify-content: center; justify-content: center;
margin: 0 auto; margin: 0 auto;
margin-top: 0.25rem; margin-top: 0.25rem;
cursor: pointer;
img{ img{
margin-right: 0.1rem; margin-right: 0.1rem;
@ -621,6 +1021,7 @@ export default {
background-size: 100% 100%; background-size: 100% 100%;
float: left; float: left;
margin-top: 0.085rem; margin-top: 0.085rem;
margin-left: -0.12rem;
} }
.level_first { .level_first {
background: url("~@/assets/image/tree.png"); background: url("~@/assets/image/tree.png");
@ -640,7 +1041,7 @@ export default {
background-size: 100% 100%; background-size: 100% 100%;
float: left; float: left;
margin-top: 0.02rem; margin-top: 0.02rem;
margin-left: 0.16rem; margin-left: 0.06rem;
margin-right: 0.06rem; margin-right: 0.06rem;
} }
.first_span{ .first_span{
@ -787,10 +1188,17 @@ export default {
width: 11.2rem; width: 11.2rem;
height: 7.35rem; height: 7.35rem;
margin: 0 auto; margin: 0 auto;
background: #233449;
margin-top: 0.2rem; .group_video{
display: flex; width: 100%;
flex-direction: column; height: 100%;
background: #233449;
margin-top: 0.2rem;
display: flex;
flex-direction: column;
}
.group_tit{ .group_tit{
width: 100%; width: 100%;
@ -817,6 +1225,7 @@ export default {
margin: 0 0.18rem 0 0.1rem; margin: 0 0.18rem 0 0.1rem;
} }
} }
} }
.bot_cen{ .bot_cen{
@ -1008,3 +1417,29 @@ export default {
} }
</style> </style>
<style lang="scss">
.user_dialog{
// background: red;
.el-dialog__header{
display: flex;
}
.dialog-footer{
height: 0.45rem;
display: flex;
justify-content: end;
}
}
.el-message .el-icon-warning{
font-size: 0.16rem;
}
.el-message .el-icon-error{
font-size: 0.16rem;
}
.el-message .el-icon-success{
font-size: 0.16rem;
}
</style>

@ -7,54 +7,61 @@ module.exports = {
chainWebpack: (config) => { chainWebpack: (config) => {
//忽略的打包文件 //忽略的打包文件
config.externals({ config.externals({
'vue': 'Vue', vue: "Vue",
'vue-router': 'VueRouter', "vue-router": "VueRouter",
'vuex': 'Vuex', vuex: "Vuex",
'axios': 'axios', axios: "axios",
'element-ui': 'ELEMENT', "element-ui": "ELEMENT",
}); });
const entry = config.entry('app'); const entry = config.entry("app");
entry.add('babel-polyfill').end(); entry.add("babel-polyfill").end();
entry.add('classlist-polyfill').end(); entry.add("classlist-polyfill").end();
entry.add('@/mock').end(); entry.add("@/mock").end();
}, },
css: { css: {
extract: { ignoreOrder: true } extract: { ignoreOrder: true },
}, },
//开启压缩 //开启压缩
configureWebpack: { configureWebpack: {
plugins: [ plugins: [
new CompressionPlugin({ new CompressionPlugin({
filename: '[path][base].gz', filename: "[path][base].gz",
algorithm: 'gzip', algorithm: "gzip",
test: '\.js$|\.css$|\.html$|\.ttf$|\.eot$|\.woff$/', test: ".js$|.css$|.html$|.ttf$|.eot$|.woff$/",
threshold: 10240, threshold: 10240,
minRatio: 0.8 minRatio: 0.8,
}),
})
], ],
}, },
//开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理 //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
devServer: { devServer: {
port: 1888, port: 1888,
proxy: { proxy: {
'/api': { "/api": {
//本地服务接口地址 //本地服务接口地址
// target: 'http://192.168.1.34:8008', // target: 'http://192.168.1.34:8008',
target: 'http://192.168.3.32:8008', target: "http://192.168.3.32:8008",
ws: true, ws: true,
pathRewrite: { pathRewrite: {
'^/api': '/' "^/api": "/",
} },
}, },
'/autoApi': { "/autoApi": {
//本地服务接口地址 //本地服务接口地址
target: 'http://182.139.182.190:82', target: "http://182.139.182.190:82",
ws: true, ws: true,
pathRewrite: { pathRewrite: {
'^/autoApi': '/' "^/autoApi": "/",
} },
} },
} "/dispatch": {
} //本地服务接口地址
target: "http://172.19.2.195:8081",
ws: true,
pathRewrite: {
"^/dispatch": "/",
},
},
},
},
}; };

Loading…
Cancel
Save