Browse Source

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

wangqin
zhangzhang 1 year ago
parent
commit
5862b703be
  1. BIN
      ruoyi-ui/src/assets/images/login-head.png
  2. 35
      ruoyi-ui/src/common/menuData.js
  3. 3
      ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue
  4. 44
      ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue
  5. 2
      ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
  6. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/index.vue
  7. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/Carousel/index.vue
  8. 21
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/data.js
  9. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
  10. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/ListItem.vue
  11. 19
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue
  12. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
  13. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue
  14. 21
      ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/components/AddNEditDialog.vue
  15. 19
      ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/index.vue
  16. 2
      ruoyi-ui/src/views/JiHeExpressway/utils/index.js
  17. 19
      ruoyi-ui/src/views/login.vue

BIN
ruoyi-ui/src/assets/images/login-head.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 187 KiB

35
ruoyi-ui/src/common/menuData.js

@ -50,7 +50,7 @@ export default [
title: "事件管控", title: "事件管控",
name: "controlEvent", name: "controlEvent",
path: "/control/event", path: "/control/event",
redirect: "controlEventPerception", redirect: "controlEventDispatch",
children: [ children: [
{ {
title: "调度记录", title: "调度记录",
@ -105,17 +105,28 @@ export default [
path: "/maintain", path: "/maintain",
children: [ children: [
{ {
title: "收费运营", title:"收费运营",
name: "chargeableOperations", name:"fee",
path: "/maintain/board", children:[
component: "maintenanceOperations/chargeableOperations/index.vue", {
}, title: "统计分析",
{ name: "feeStatistic",
title: "统计分析", path: "/maintain/fee/statistic",
name: "statisticalAnalysis", component: "maintenanceOperations/chargeableOperations/index.vue",
path: "/maintain/statisticalAnalysis", }
component: "maintenanceOperations/statisticalAnalysis/index.vue", ]
} },{
title:"智能养护",
name:"smart",
children:[
{
title: "统计分析",
name: "smartStatistic",
path: "/maintain/smart/statistic",
component: "maintenanceOperations/statisticalAnalysis/index.vue",
}
]
}
] ]
}, },
{ {

3
ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue

@ -165,7 +165,8 @@ export default {
.dialog-content { .dialog-content {
padding: 9px 21px 27px 21px; padding: 9px 21px 27px 21px;
max-height: 96vh; max-height: 90vh;
overflow-y: auto;
} }
.bottom-right { .bottom-right {

44
ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue

@ -15,7 +15,7 @@
<el-form :model="dataForm" :rules="dataRule" label-width="110px" ref="dataForm" size="mini"> <el-form :model="dataForm" :rules="dataRule" label-width="110px" ref="dataForm" size="mini">
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="所属类别" v-if="type == 'template' && mode!='toDevice'"> <el-form-item label="所属类别" v-if="type == 'template' && mode!='toDevice'" prop="category">
<el-select v-model="dataForm.category" placeholder="请选择所属类别" size="mini"> <el-select v-model="dataForm.category" placeholder="请选择所属类别" size="mini">
<el-option v-for="item in templateCategoryList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"> <el-option v-for="item in templateCategoryList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
</el-option> </el-option>
@ -90,7 +90,7 @@
</el-card> </el-card>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="onSubmit" v-loading="loading" style="background-color: #10aac2;color:#fff;">确认</el-button> <el-button @click="onSubmit('dataForm')" v-loading="loading" style="background-color: #10aac2;color:#fff;">确认</el-button>
<el-button style="background-color:#b5b5b6;color:#fff" @click="onClose">取消</el-button> <el-button style="background-color:#b5b5b6;color:#fff" @click="onClose">取消</el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -160,6 +160,13 @@ export default {
message: '请输入详细内容', message: '请输入详细内容',
trigger: 'blur' trigger: 'blur'
} }
],
category: [
{
required: true,
message: '请选择类别',
trigger: 'blur'
}
] ]
}, },
screenSizeOptions: [], screenSizeOptions: [],
@ -271,6 +278,9 @@ export default {
if(this.$refs.dataForm){ if(this.$refs.dataForm){
this.$refs.dataForm.clearValidate(); this.$refs.dataForm.clearValidate();
} }
// if(newV){
// this.initData();
// }
}, },
immediate:true immediate:true
}, },
@ -280,7 +290,8 @@ export default {
tpl:{ tpl:{
handler(newV){ handler(newV){
// { "id": 3, "category": "0", "content": "", "screenSize": "768*64", "fontColor": "FFFF00", "fontSize": "64", "fontType": "2", "fontSpacing": "0", "rollingSpeed": null, "stopTime": "50", "inScreenMode": "1", "formatStyle": "2", "remark": null, "createTime": "2024-01-06 10:40:19", "updateTime": "2024-01-06 11:04:53" } // { "id": 3, "category": "0", "content": "", "screenSize": "768*64", "fontColor": "FFFF00", "fontSize": "64", "fontType": "2", "fontSpacing": "0", "rollingSpeed": null, "stopTime": "50", "inScreenMode": "1", "formatStyle": "2", "remark": null, "createTime": "2024-01-06 10:40:19", "updateTime": "2024-01-06 11:04:53" }
if(newV && Object.keys(newV).length>0){
if(newV && Object.keys(newV).length>0){ //
this.initData(); this.initData();
} }
}, },
@ -290,6 +301,11 @@ export default {
handler(newV) { handler(newV) {
this.initData(); this.initData();
} }
},
"type": {
handler(newV) {
this.initData();
}
} }
}, },
mounted() { mounted() {
@ -313,14 +329,17 @@ export default {
}, },
methods: { methods: {
initData() { initData() {
console.log("调用initData+++++++");
if(this.isLocked){ if(this.isLocked){
return return
} }
this.isLocked = true; this.isLocked = true;
setTimeout(()=>{this.isLocked = false}, 300); setTimeout(()=>{this.isLocked = false}, 100);
// getTemplateList({id:this.tpl.id}).then(res=>{ // getTemplateList({id:this.tpl.id}).then(res=>{
// console.log(res.data , "++++++++==========="); // console.log(res.data , "++++++++===========");
// }) // })
if (this.mode == "add") { if (this.mode == "add") {
let tempTpl = null; let tempTpl = null;
if (this.type == "template") { if (this.type == "template") {
@ -351,7 +370,22 @@ export default {
this.dialogVisible = false; this.dialogVisible = false;
}, },
// //
async onSubmit() { async onSubmit(formName) {
// this.$refs[formName].validate((valid) => {
// if (valid) {
// } else {
// console.log('!!');
// return false;
// }
// });
if (this.type=="template" && this.dataForm.category == undefined) {
return this.$modal.msgError('请选择分类!')
}
if (!this.dataForm.content.trim()) { if (!this.dataForm.content.trim()) {
return this.$modal.msgError('当前输入内容为空') return this.$modal.msgError('当前输入内容为空')
} }

2
ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js

@ -37,7 +37,7 @@ export default{
displayAreaWidth: +arr[0], displayAreaWidth: +arr[0],
displayAreaHeight: +arr[1] displayAreaHeight: +arr[1]
} }
this.editDialog = { this.editDialog = {
visible: showDialog == false ? false : true, visible: showDialog == false ? false : true,
mode: "toDevice", mode: "toDevice",

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

@ -289,7 +289,7 @@ export default {
____onDeleteBoardItem(index) { ____onDeleteBoardItem(index) {
if (index > -1) { if (index > -1) {
this.selectedBdMsg.splice(index, 1) this.selectedBdMsg.splice(index, 1)
this.$message.success('删除成功,发布后才效。') this.$message.success('删除成功。')
} }
}, },
// //

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

@ -5,7 +5,9 @@
<VueSlickCarousel v-bind="settings" ref="CarouselRef" class="vueSlickCarousel"> <VueSlickCarousel v-bind="settings" ref="CarouselRef" class="vueSlickCarousel">
<div v-for="(item, index) in pictures" :key="index" class="item"> <div v-for="(item, index) in pictures" :key="index" class="item">
<!-- <img :src="require(`@screen/images/${item}`)" style="height: 100%"> --> <!-- <img :src="require(`@screen/images/${item}`)" style="height: 100%"> -->
<img :src="item" style="height: 100%"> <!-- <img :src="item" style="height: 100%"> -->
<el-image style="height: 100%" :src="item" :preview-src-list="pictures">
</el-image>
</div> </div>
</VueSlickCarousel> </VueSlickCarousel>
@ -27,37 +29,20 @@ export default {
pictures: { pictures: {
type: Array, type: Array,
default: () => [ default: () => [
"shareWith/message-active.svg", "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
"shareWith/message.svg", "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
"shareWith/website-active.svg", // "require('@screen/images/shareWith/message-active.svg')",
"shareWith/website.svg", // "require('@screen/images/shareWith/message.svg')",
"shareWith/weChat-active.svg", // "require('@screen/images/shareWith/website-active.svg')",
"shareWith/weChat-active.svg" // "require('@screen/images/shareWith/website.svg')",
// "require('@screen/images/shareWith/weChat-active.svg')",
// "require('@screen/images/shareWith/weChat-active.svg')"
] ]
}, },
}, },
data() { data() {
return { return {
carouselItems: [ carouselItems: [],
{
"imageURL": "shareWith/message-active.svg"
},
{
"imageURL": "shareWith/message.svg"
},
{
"imageURL": "shareWith/website-active.svg"
},
{
"imageURL": "shareWith/website.svg"
},
{
"imageURL": "shareWith/weChat-active.svg"
},
{
"imageURL": "shareWith/weChat-active.svg"
}
],
settings: { settings: {
infinite: true, infinite: true,
arrows: false, arrows: false,
@ -74,6 +59,7 @@ export default {
this.$refs.CarouselRef.prev() this.$refs.CarouselRef.prev()
}, },
nextSlide() { nextSlide() {
// console.log('pics',this.pictures)
this.$refs.CarouselRef.next() this.$refs.CarouselRef.next()
}, },
}, },

21
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/data.js

@ -35,7 +35,7 @@ export const tabConfigList = [
}, },
{ {
label: "地点:", label: "地点:",
key: "dcEventAccident.dd", key: "dcEventAccident.location",
isAlone: false, isAlone: false,
required: true, required: true,
options: { options: {
@ -71,11 +71,11 @@ export const tabConfigList = [
}, },
{ {
label: "匝道:", label: "匝道:",
key: "dcEventAccident.dd", key: "dcEventAccident.rampId",
type: "select",
isAlone: false, isAlone: false,
required: true, required: true,
options: { options: {
placeholder: "服务区地点",
}, },
visible:(data) => { visible:(data) => {
if(data?.dcEventAccident?.locationType == 3){ if(data?.dcEventAccident?.locationType == 3){
@ -107,11 +107,22 @@ export const tabConfigList = [
}, },
{ {
label: "地点:", label: "地点:",
key: "dcEventAccident.dd", key: "dcEventAccident.location",
type: "select",
isAlone: false, isAlone: false,
required: true, required: true,
options: { options: {
placeholder: "服务区地点", placeholder: "收费站地点",
options: [
{
value: "1",
label: "入口车道",
},
{
value: "2",
label: "出口车道",
},
],
}, },
visible:(data) => { visible:(data) => {
if(data?.dcEventAccident?.locationType == 4){ if(data?.dcEventAccident?.locationType == 4){

4
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue

@ -199,8 +199,8 @@ export default {
if (this.type == "month") { if (this.type == "month") {
xData.push(it.day.split("-")[2] + "日"); xData.push(it.day.split("-")[2] + "日");
} }
if (this.type == "day") { if (this.type == "date") {
xData.push(it.time.split(" ")[1] + "时"); xData.push(it.time.split(" ")[1] + "时");
} }
if (this.type == "quarter") { if (this.type == "quarter") {
xData.push(it.month + '月'); xData.push(it.month + '月');

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/ListItem.vue

@ -1,6 +1,6 @@
<template> <template>
<div class='ListItem'> <div class='ListItem'>
<img class="prefix" :src="require(`@screen/images/ListItem/${eventTypeIcon[1]}.svg`)" /> <img class="prefix" :src="require(`@screen/images/ListItem/${eventTypeIcon[data.type]}.svg`)" />
<div class="center"> <div class="center">
<div class="header"> <div class="header">
<span class="title">{{ data.title || '-' }}</span> <span class="title">{{ data.title || '-' }}</span>

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

@ -2,7 +2,8 @@
<Card2 class='Auditlists' title="审核列表"> <Card2 class='Auditlists' title="审核列表">
<InputSearch style="width: 100%;" /> <InputSearch style="width: 100%;" />
<div class="body"> <div class="body">
<ListItem v-for="item in list" :key="item.id" :data="item" origin="left" class="middle-ratio" /> <ListItem v-for="item in list1" :key="item.id" :data="item" origin="left" class="middle-ratio" />
<ListItem v-for="item in list2" :key="item.id" :data="item" origin="left" class="middle-ratio" />
</div> </div>
<div class="footer"> <div class="footer">
<Pagination :total="90" /> <Pagination :total="90" />
@ -26,14 +27,20 @@ export default {
}, },
data() { data() {
return { return {
list: Array.from({ length: 20 }).map(() => ({ list1: Array.from({ length: 3 }).map(() => ({
title: "异常天气", title: "异常天气",
content: "2023.12.23 13:00:00 济南方向K100+000 交通事故", content: "2023.12.23 13:00:00 济南方向K100+000 中雪",
type: (() => { type: 0,
isverify: (() => {
const min = 0; const min = 0;
const max = 1; const max = 2;
return Math.floor(Math.random() * (max - min + 1)) + min; return Math.floor(Math.random() * (max - min + 1)) + min;
})(), })()
})),
list2: Array.from({ length: 10 }).map(() => ({
title: "交通事故",
content: "2023.12.23 13:00:00 济南方向K100+000 交通事故",
type: 1,
isverify: (() => { isverify: (() => {
const min = 0; const min = 0;
const max = 2; const max = 2;

5
ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue

@ -462,7 +462,10 @@ export default {
this.editDialog = { this.editDialog = {
visible: true, visible: true,
mode: "add", mode: "add",
type: "template" type: "template",
tpl: {
"content": ""
}
} }
}, },
____onEditTemplate(tpl) { ____onEditTemplate(tpl) {

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue

@ -1,6 +1,6 @@
<template> <template>
<div class='congestion'> <div class='congestion'>
<WgtTitle :title="'今日发布渠道分析'"></WgtTitle> <WgtTitle :title="'今日发布审核分析'"></WgtTitle>
<div class="board"> <div class="board">
<div class="charts keep-ratio" id="auditAnalytics"></div> <div class="charts keep-ratio" id="auditAnalytics"></div>
</div> </div>

21
ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/components/AddNEditDialog.vue

@ -70,6 +70,17 @@ export default {
} }
} }
}, },
mounted(){
// "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split('').forEach(item => {
// request({
// url: `/business/dcInfoBoardVocabulary`,
// method: 'POST',
// data:{
// word:""+item
// }
// })
// });
},
methods: { methods: {
checkRepeat(word){ checkRepeat(word){
let temp = _.find(this.dataAll, { word: word }); let temp = _.find(this.dataAll, { word: word });
@ -88,9 +99,9 @@ export default {
this.submitting = true; this.submitting = true;
if (this.data) data.id = this.data.id; if (this.data) data.id = this.data.id;
if (!this.checkRepeat(data.word)) { // if (!this.checkRepeat(data.word)) {
return; // return;
} // }
request({ request({
url: `/business/dcInfoBoardVocabulary`, url: `/business/dcInfoBoardVocabulary`,
@ -98,7 +109,7 @@ export default {
data data
}) })
.then(result => { .then(result => {
if (result.code != 200) return Message.error(`提交失败!`); if (result.code != 200) return;
Message.success(`提交成功!`); Message.success(`提交成功!`);
this.$emit("onSuccess"); this.$emit("onSuccess");
@ -108,7 +119,7 @@ export default {
}) })
.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;

19
ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/index.vue

@ -1,5 +1,5 @@
<template> <template>
<div class='sensitiveWord'> <div class='sensitiveWord' v-loading="isLoading" element-loading-text="数据加载中" element-loading-background="rgba(0, 0, 0, 0.3)">
<div class="filter"> <div class="filter">
<div> <div>
@ -27,7 +27,7 @@
</div> </div>
<div class="body" :style="{'overflow-y': (data.length && data.length>42) ? 'scroll':'auto' }"> <div class="body">
<Empty v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</Empty> <Empty v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</Empty>
<template v-else> <template v-else>
<div class="cardBox" v-for="(item, index) in data" :key="index" style="overflow: hidden; height: 145px;"> <div class="cardBox" v-for="(item, index) in data" :key="index" style="overflow: hidden; height: 145px;">
@ -72,7 +72,7 @@ import Pagination from '@screen/components/Pagination.vue';
import { searchFormList } from "./data"; import { searchFormList } from "./data";
import request from "@/utils/request"; 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 { delay, exportFile, confirm } from "@screen/utils/common";
import { Message } from "element-ui"; import { Message } from "element-ui";
@ -89,6 +89,7 @@ export default {
}, },
data() { data() {
return { return {
isLoading:false,
searchText:"关键词搜索", searchText:"关键词搜索",
searchFormList, searchFormList,
@ -134,7 +135,7 @@ export default {
return params return params
}, },
async handleDelete(data) { async handleDelete(data) {
await confirm({ message: "是否要删除该辖段信息?" }); await confirm({ message: "确定删除该关键词?" });
request({ request({
url: `/business/dcInfoBoardVocabulary/${data.id}`, url: `/business/dcInfoBoardVocabulary/${data.id}`,
@ -166,9 +167,10 @@ export default {
this.getData(); this.getData();
}, },
async getData() { async getData() {
const closeLoading = setLoading(); // const closeLoading = setLoading();
this.isLoading = true;
await delay(150); await delay(100);
request({ request({
url: `/business/dcInfoBoardVocabulary/list`, url: `/business/dcInfoBoardVocabulary/list`,
@ -183,7 +185,8 @@ export default {
// this.pageTotal = Math.ceil(result.total/this.pageSize); // this.pageTotal = Math.ceil(result.total/this.pageSize);
}).finally(() => { }).finally(() => {
this.isFirst = false; this.isFirst = false;
closeLoading(); // closeLoading();
this.isLoading = false;
}) })
}, },
@ -218,7 +221,7 @@ export default {
} }
.body { .body {
height: 0; flex: 1; height: 0; flex: 1; overflow: hidden;
display: flex; flex-wrap: wrap; align-content: flex-start; display: flex; flex-wrap: wrap; align-content: flex-start;
.cardBox{ .cardBox{
flex-basis: percentage(1/7); width: 0; padding-right: 10px; padding-bottom: 10px; flex-basis: percentage(1/7); width: 0; padding-right: 10px; padding-bottom: 10px;

2
ruoyi-ui/src/views/JiHeExpressway/utils/index.js

@ -9,7 +9,7 @@ export function setLoading(options) {
let loadingInstance = Loading.service({ let loadingInstance = Loading.service({
fullscreen: true, fullscreen: true,
text: "数据加载中...", text: "数据加载中...",
lock: true, lock: false,
...options, ...options,
}); });

19
ruoyi-ui/src/views/login.vue

@ -256,7 +256,9 @@ export default {
position: relative; position: relative;
height: 100%; height: 100%;
background-image: url("../assets/images/login-background.png"); background-image: url("../assets/images/login-background.png");
background-size: 100% auto; // background-size: 100% auto;
background-repeat: no-repeat;
background-size: 100% 100%;
} }
.login::after { .login::after {
@ -266,7 +268,7 @@ export default {
height: 120px; height: 120px;
background-image: url('../assets/images/login-head.png'); background-image: url('../assets/images/login-head.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% auto; background-size: auto 100%;
background-position: center center; background-position: center center;
} }
@ -297,7 +299,6 @@ export default {
width: 4px; width: 4px;
height: 100%; height: 100%;
background: linear-gradient(180deg, #BDFFF600 0%, #BDFFF6 50%, #BDFFF600 100%); background: linear-gradient(180deg, #BDFFF600 0%, #BDFFF6 50%, #BDFFF600 100%);
;
} }
.login-form { .login-form {
@ -392,16 +393,20 @@ export default {
/* 重置按钮 */ /* 重置按钮 */
.el-button--goon { .el-button--goon {
font-size: 20px; font-size: 24px;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #FFF;
width: 380px; width: 380px;
height: 55px; height: 55px;
background: #07CAF6; background: #07CAF6;
border-radius: 4px 4px 4px 4px; border-radius: 4px;
opacity: 1; opacity: 1;
border: none;
} }
.el-button--goon:hover {} .el-button--goon:hover {}
::v-deep .el-form-item__error{
top:62px;
}
</style> </style>

Loading…
Cancel
Save