This commit is contained in:
qqGroup0 2023-04-27 14:13:00 +08:00
commit 12f4636320
22 changed files with 161 additions and 141 deletions

View File

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="VoRDM"/>
<meta name="description" content="VoRDM"/>
<link rel="icon" href="/src/assets/vordm-mini.png" />
<link rel="icon" href="logo2.png" />
<title>VoRDM Admin</title>
</head>
<body>

BIN
public/home.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

BIN
public/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
public/home1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 KiB

BIN
public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -84,7 +84,7 @@ export const pushing = (data) => {
//wordcloud服务
export const landsat = (disaster_id,number,id) => {
return request({
url: '/api/' + crawlModule + '/rs/landsat',
url: '/api/' + crawlModule + '/visual/wordcloud',
method: 'get',
params:{
disaster_id,

View File

@ -20,6 +20,7 @@
<el-table-column prop="dictValue" label="Disaster type" show-overflow-tooltip sortable></el-table-column>
<el-table-column prop="disasterCountry" label="Disaster country" show-overflow-tooltip sortable></el-table-column>
<el-table-column prop="disasterTime" label="Disaster time" show-overflow-tooltip sortable></el-table-column>
<slot></slot>
</el-table>
<el-pagination @size-change="onHandleDisasterSizeChange" @current-change="onHandleDisasterCurrentChange" class="mt15"
:pager-count="3" :page-sizes="[10, 20, 30]" v-model:current-page="state.disasterData.param.pageNum" background

View File

@ -1,8 +1,7 @@
<template>
<div class="layout-footer pb15">
<div class="layout-footer-warp">
<div>vue-next-adminMade by lyt with </div>
<div class="mt5">深圳市 xxx 公司版权所有</div>
</div>
</div>
</template>

View File

@ -12,26 +12,26 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="large"
:disabled="state.disabledSize === 'large'">大型</el-dropdown-item>
:disabled="state.disabledSize === 'large'">Large</el-dropdown-item>
<el-dropdown-item command="default"
:disabled="state.disabledSize === 'default'">默认</el-dropdown-item>
:disabled="state.disabledSize === 'default'">Default</el-dropdown-item>
<el-dropdown-item command="small"
:disabled="state.disabledSize === 'small'">小型</el-dropdown-item>
:disabled="state.disabledSize === 'small'">Small</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<div class="layout-navbars-breadcrumb-user-icon"
<!-- <div class="layout-navbars-breadcrumb-user-icon"
@click="onSearchClick">
<el-icon title="菜单搜索">
<ele-Search />
</el-icon>
</div>
<div class="layout-navbars-breadcrumb-user-icon"
</div> -->
<!-- <div class="layout-navbars-breadcrumb-user-icon"
@click="onLayoutSetingClick">
<i class="icon-skin iconfont"
title="布局配置"></i>
</div>
<div class="layout-navbars-breadcrumb-user-icon">
</div> -->
<!-- <div class="layout-navbars-breadcrumb-user-icon">
<el-popover placement="bottom"
trigger="click"
transition="el-zoom-in-top"
@ -48,7 +48,7 @@
<UserNews />
</template>
</el-popover>
</div>
</div> -->
<el-dropdown :show-timeout="70"
:hide-timeout="50"
trigger="click"
@ -87,12 +87,9 @@
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="/home">首页</el-dropdown-item>
<el-dropdown-item command="wareHouse">代码仓库</el-dropdown-item>
<el-dropdown-item command="/404">404</el-dropdown-item>
<el-dropdown-item command="/401">401</el-dropdown-item>
<el-dropdown-item command="/home">Dashboard</el-dropdown-item>
<el-dropdown-item divided
command="logOut">退出登录</el-dropdown-item>
command="logOut">Sign out</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
@ -174,16 +171,16 @@ const onHandleCommandClick = (path) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '此操作将退出登录, 是否继续?',
title: 'Prompt',
message: 'This action will log you out of the login and whether to continue?',
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonText: 'Yes',
cancelButtonText: 'No',
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '退出中';
instance.confirmButtonText = 'Exiting';
setTimeout(() => {
done();
setTimeout(() => {

View File

@ -12,7 +12,7 @@ export const useThemeConfig = defineStore('themeConfig', {
state: () => ({
website: {
// 开启验证码模式
captchaMode: false,
captchaMode: true,
tokenTime: 3000,
tenantId: '595035',
},
@ -109,7 +109,7 @@ export const useThemeConfig = defineStore('themeConfig', {
// 是否开启水印
isWartermark: false,
// 水印文案
wartermarkText: 'vue-next-admin',
wartermarkText: 'vordm',
/**
* 其它设置
@ -142,7 +142,7 @@ export const useThemeConfig = defineStore('themeConfig', {
* 全局网站标题 / 副标题
*/
// 网站主标题(菜单导航、浏览器当前网页标题)
globalTitle: 'vue-next-admin',
globalTitle: 'vordm',
// 网站副标题(登录页顶部文字)
globalViceTitle: 'vueNextAdmin',
// 网站副标题(登录页顶部文字)

View File

@ -126,12 +126,12 @@ export function formatPast(param, format = 'YYYY-mm-dd') {
*/
export function formatAxis(param) {
let hour = new Date(param).getHours();
if (hour < 6) return '凌晨好';
else if (hour < 9) return '早上好';
else if (hour < 12) return '上午好';
else if (hour < 14) return '中午好';
else if (hour < 17) return '下午好';
else if (hour < 19) return '傍晚好';
else if (hour < 22) return '晚上好';
else return '夜里好';
if (hour < 6) return 'Good morning';
else if (hour < 9) return 'Good morning';
else if (hour < 12) return 'Good morning';
else if (hour < 14) return 'Good noon';
else if (hour < 17) return 'Good afternoon';
else if (hour < 19) return 'Good evening';
else if (hour < 22) return 'Good evening';
else return 'Good night';
}

View File

@ -3,8 +3,7 @@ import { ElMessage, ElMessageBox } from 'element-plus';
import qs from 'qs';
import { Session } from '/@/utils/storage';
// export const moduleName = 'zqq-biz-vordm';
export const moduleName = 'yyhouc-biz-vordm';
export const moduleName = 'biz-vordm';
export const crawlModule = 'vordm-crawl';
const service = axios.create({
//baseURL: import.meta.env.VITE_API_URL,

View File

@ -3,31 +3,16 @@
<el-config-provider :locale="en">
<el-row :gutter="22">
<el-col :span="10">
<div class="system-role-padding layout-padding-auto layout-padding-view" style="height: 90vh;">
<el-table :data="state.disasterData.data" v-loading="state.disasterData.loading" style="width: 100%;"
highlight-current-row @row-click="tableClick">
<el-table-column prop="vordmId" label="ID" width="118" />
<el-table-column prop="disasterType" label="Disaster type" show-overflow-tooltip>
<!-- 在disasterType中获取dictKey 对应的dictValue -->
<template #default="scope">
<el-tag type="info">{{ getValue(scope.row.disasterType) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="disasterKeyword" label="Disaster keywords" show-overflow-tooltip></el-table-column>
<el-table-column prop="disasterTime" label="Disaster time" show-overflow-tooltip></el-table-column>
<el-table-column prop="Operate" label="Operate" width="85" show-overflow-tooltip>
<div class="system-role-padding layout-padding-auto layout-padding-view" style="height: 85vh;">
<disasterTable @childClick="tableClick">
<el-table-column prop="Operate" label="Operate" width="85" show-overflow-tooltip>
<template #default="scope">
<el-button size="small" text type="primary" @click="startBot(scope.row)">start</el-button>
<!-- <el-tag type="info" v-if="scope.row.respondStatus == 3">complete</el-tag> -->
</template>
</el-table-column>
</el-table>
<el-pagination @size-change="onHandleDisasterSizeChange" @current-change="onHandleDisasterCurrentChange"
class="mt15" :page-sizes="[10, 20, 30]"
v-model:current-page="state.disasterData.param.pageNum" background
v-model:page-size="state.disasterData.param.pageSize" layout="total, sizes, prev, pager, next"
:total="state.disasterData.total">
</el-pagination>
</disasterTable>
</div>
</el-col>
<el-col :span="14">
@ -64,8 +49,8 @@
Batch operation
</el-button>
</div>
<el-table :data=" state.tableData.data " v-loading=" state.tableData.loading "
@selection-change=" handleSelectionChange " style="width: 100%;">
<el-table :data=" state.tableData.data " v-loading=" state.tableData.loading "
@selection-change=" handleSelectionChange " style="width: 100%; height: 600px;">
<el-table-column type="selection" width="55" />
<el-table-column type="index" label="ID" width="50" />
<el-table-column v-if=" state.searchName == '1' " prop="title" label="Title"
@ -104,10 +89,11 @@
</template>
</el-table-column>
</el-table>
<el-pagination style="margin-left: 20px;" @size-change=" onHandleSizeChange " @current-change=" onHandleCurrentChange " class="mt15"
:page-sizes=" [10, 20, 30] " v-model:current-page=" state.tableData.param.pageNum " background
<el-pagination style="margin-left: 20px;" @size-change=" onHandleSizeChange "
@current-change=" onHandleCurrentChange " class="mt15" :page-sizes=" [10, 20, 30] "
v-model:current-page=" state.tableData.param.pageNum " background
v-model:page-size=" state.tableData.param.pageSize " layout="total, sizes, prev, pager, next"
:total=" state.tableData.total" >
:total=" state.tableData.total ">
</el-pagination>
</div>
</el-col>
@ -150,6 +136,7 @@ import { getDictionary } from '/@/api/system/dictbiz';
import { defineAsyncComponent, reactive, onMounted, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import boot from "./component/boot.vue";
import disasterTable from "/@/components/table/DisasterTable.vue";
//
const auditRef = ref();
const bootRef = ref();
@ -250,8 +237,8 @@ const formatSizeUnits = (size) => {
return (size / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
}
//
const tableClick = (row, column, event) => {
state.disasterId = row.id;
const tableClick = (i) => {
state.disasterId = i.disasterId;
getTableData();
}
//
@ -271,8 +258,8 @@ const getDisasterData = () => {
}
getList(param).then(res => {
state.disasterData.data = res.records;
state.disasterData.data.forEach(item=>{
let date = item.disasterTime.slice(0,10);
state.disasterData.data.forEach(item => {
let date = item.disasterTime.slice(0, 10);
item.disasterTime = date;
})
state.disasterData.total = res.total;
@ -377,11 +364,13 @@ onMounted(() => {
.system-role-container {
.system-role-padding {
padding: 15px;
.el-table {
flex: 1;
}
}
}
.mt15 {
display: flex;
justify-content: end;

View File

@ -1,6 +1,7 @@
<template>
<el-dialog title="upload" v-model="state.isShowDialog" width="500px">
<el-form :model="state.ruleForm" size="default" label-width="120px" :rules="rules" ref="adminAddFormRef" style="margin-left: 6%;">
<el-form :model="state.ruleForm" size="default" label-width="120px" :rules="rules" ref="adminAddFormRef"
style="margin-left: 6%;">
<el-form-item label="upload picture" prop="img">
<el-upload ref="upFileRef" class="upload-demo" drag accept="image/*" action="#" multiple :http-request="uploadPic"
:on-remove="removePic" :before-upload="beforeUpload">
@ -16,8 +17,12 @@
</el-upload>
</el-form-item>
<el-form-item prop="title" label="data title">
<el-input v-model="state.ruleForm.title" class="m-2" placeholder="please enter data title" :rows="3"
type="text" style="width:220px;" />
<el-input v-model="state.ruleForm.title" class="m-2" placeholder="please enter data title" :rows="3" type="text"
style="width:220px;" />
</el-form-item>
<el-form-item prop="sourceOrganization" label="data organization">
<el-input v-model="state.ruleForm.sourceOrganization" class="m-2" placeholder="please enter data organization "
:rows="3" type="text" style="width:220px;" />
</el-form-item>
<el-form-item prop="type" label="data type">
<el-select v-model="state.ruleForm.type" class="m-2" placeholder="please select data type">
@ -25,9 +30,9 @@
</el-select>
</el-form-item>
<el-form-item prop="visualFlag" label="data visualFlag">
<el-select v-model="state.ruleForm.visualFlag" placeholder="please select data visualFlag" size="default" >
<el-option label="Visualization" value= 1></el-option>
<el-option label="B Visualization" value= 0></el-option>
<el-select v-model="state.ruleForm.visualFlag" placeholder="please select data visualFlag" size="default">
<el-option label="Visualization" value=1></el-option>
<el-option label="Not Visualization" value=0></el-option>
</el-select>
</el-form-item>
<el-form-item prop="remark" label="data details">
@ -154,10 +159,15 @@ const onSubmit = () => {
state.dataForm.append('disasterId', state.disasterId);
state.dataForm.append('visualFlag', state.ruleForm.visualFlag);
state.dataForm.append('title', state.ruleForm.title);
state.dataForm.append('sourceOrganization', state.ruleForm.sourceOrganization);
for (let [a, b] of state.dataForm.entries()) {
console.log(a, b, '--------------');
}
uploadData(state.dataForm).then(res => {
adminAddFormRef.value.resetFields();
state.dataForm = new FormData(),
state.fileArray = [];
upFileRef.value.clearFiles();
ElMessage.success("Upload successfully");
emit('callback');
}).finally(() => {

View File

@ -46,7 +46,7 @@
<el-tag type="success" v-if="scope.row.isPublish == 1">YES</el-tag>
</template>
</el-table-column>
<el-table-column prop="title" label="Professional title" show-overflow-tooltip
<el-table-column prop="title" label="Title" show-overflow-tooltip
width="150"></el-table-column>
<el-table-column prop="size" label="Data size" width="90" show-overflow-tooltip>
<template #default="scope">
@ -252,16 +252,17 @@ const pub = (row) => {
name:row.title
}
pushing(da).then(data => {
console.log(data,"row==================");
console.log(data,"datadatadatadata");
if(data.code == 1500){
ElMessage.error(data.msg);
}
let daNew = {
id: row.id,
isPublish: 1
}
updateEntityData(daNew).then(da => {
})
updateEntityData(daNew)
ElMessage.success('success');
})
};
//

View File

@ -3,25 +3,15 @@
<el-row :gutter="22">
<el-col :span="10">
<div class="system-role-padding layout-padding-auto layout-padding-view" style="height: 80vh;">
<span style="margin:2%;font-weight: 600;font-size: 18px;">Disaster Info</span>
<el-table :data="state.disasterData.data" v-loading="state.disasterData.loading" style="width: 100%"
highlight-current-row @row-click="tableClick">
<el-table-column prop="disasterType" label="Disaster type" show-overflow-tooltip></el-table-column>
<el-table-column prop="disasterCountry" label="Disaster country" show-overflow-tooltip></el-table-column>
<el-table-column prop="disasterTime" label="Disaster time" show-overflow-tooltip></el-table-column>
<el-table-column prop="Operate" label="Operate" width="85" show-overflow-tooltip>
<disasterTable @childClick="tableClick">
<el-table-column prop="Operate" label="Operate" width="85" show-overflow-tooltip>
<template #default="scope">
<el-button size="small" text type="primary" @click="startBot(scope.row)">start</el-button>
<!-- <el-tag type="info" v-if="scope.row.respondStatus == 3">complete</el-tag> -->
</template>
</el-table-column>
</el-table>
<el-pagination style="margin-right:20px;" @size-change="onHandleDisasterSizeChange" @current-change="onHandleDisasterCurrentChange"
class="mt15" :page-sizes="[10, 20, 30]"
v-model:current-page="state.disasterData.param.pageNum" background
v-model:page-size="state.disasterData.param.pageSize" layout="total, sizes, prev, pager, next"
:total="state.disasterData.total">
</el-pagination>
</disasterTable>
</div>
</el-col>
<el-col :span="14">
@ -154,6 +144,8 @@
import { ref, reactive, onMounted } from 'vue';
import { getRemoteSensingSourceData, getRemoteSensingSourceDataByCondition, getPagesRemoteSensingSourceData } from "/@/api/remoteSensingSourceData/remoteSensingSourceData.js";
import { getDisasterPage } from '/@/api/data/otherData.js'
import disasterTable from "/@/components/table/DisasterTable.vue";
// import { getList as getDisasterPage } from '/@/api/disasterInfo/index';
const state = reactive({
@ -239,8 +231,8 @@ const getDisasterData = () => {
}
//
const tableClick = (row) => {
state.disasterId = row.disasterId;
const tableClick = (i) => {
state.disasterId = i.disasterId;
getData()
}

View File

@ -1,17 +1,5 @@
<template>
<div class="container">
<!-- <el-tabs v-model="state.activeName">
<el-tab-pane label="Search condition"
name="first">
<search-condition></search-condition>
</el-tab-pane>
<el-tab-pane label="Retrieval condition"
name="second">
<retrieval-condition></retrieval-condition>
</el-tab-pane>
</el-tabs> -->
<search-condition v-if ="state.isEdit" ref="edit" @response="responseFn"></search-condition>
<retrieval-condition v-if ="!state.isEdit" @response="responseFn"></retrieval-condition>
</div>

View File

@ -18,9 +18,9 @@
</el-icon>
search
</el-button>-->
<el-button v-if="!state.nameNew" size="default" type="success" class="ml10" @click="generateData">
Generate
</el-button>
<el-button v-if="!state.nameNew" size="default" type="success" class="ml10" @click="generateData">
Generate
</el-button>
<el-button v-if="state.nameNew" size="default" type="success" class="ml10" @click="uploadData">
<el-icon>
<ele-Upload />
@ -35,7 +35,7 @@
</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick" type="card">
<el-tab-pane label="Word cloud" name="first" >
<el-tab-pane label="Word cloud" name="first">
<el-table :data="state.tableData.data" v-loading="state.tableData.loading"
@selection-change="handleSelectionChange" style="width: 100%">
<el-table-column type="selection" width="55" />
@ -56,7 +56,7 @@
:total="state.tableData.total">
</el-pagination>
</el-tab-pane>
<el-tab-pane label="Hotspot area" name="second" >
<el-tab-pane label="Hotspot area" name="second">
<el-table :data="state.tableData.data" v-loading="state.tableData.loading"
@selection-change="handleSelectionHotspotChange" style="width: 100%">
<el-table-column type="selection" width="55" />
@ -109,7 +109,10 @@ import { defineAsyncComponent, reactive, onMounted, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import disasterTable from "/@/components/table/DisasterTable.vue";
import { ta } from 'element-plus/es/locale';
import { landsat } from '/@/api/crawl/index.js'
import { landsat, submit } from '/@/api/crawl/index.js'
import { useUserInfo } from '/@/stores/userInfo';
const userInfo = useUserInfo();
//
const RoleDialog = defineAsyncComponent(() => import('/@/views/system/role/dialog.vue'));
const auditRef = ref();
@ -117,7 +120,7 @@ const uploadRef = ref();
//
const roleDialogRef = ref();
const state = reactive({
nameNew:false,
nameNew: false,
multipleWord: [],
multipleHotspot: [],
tabVal: 'first',
@ -153,9 +156,9 @@ const handleSelectionHotspotChange = (val) => {
}
const handleClick = (tab) => {
if (tab=="second") {
if (tab == "second") {
state.nameNew = true;
}else{
} else {
state.nameNew = false;
}
state.tabVal = tab;
@ -205,6 +208,8 @@ const formatSizeUnits = (size) => {
}
//
const tableClick = (i) => {
console.log(i);
state.disasterId = i.disasterId;
getTableData();
}
@ -213,8 +218,8 @@ const getDisasterData = () => {
state.disasterData.loading = true;
getDisasterPage(state.disasterData.param.pageNum, state.disasterData.param.pageSize, {}).then(res => {
state.disasterData.data = res.records;
state.disasterData.data.forEach(item=>{
let date = item.disasterTime.slice(0,10);
state.disasterData.data.forEach(item => {
let date = item.disasterTime.slice(0, 10);
item.disasterTime = date;
})
state.disasterData.total = res.total;
@ -249,10 +254,29 @@ const uploadData = () => {
state.tabVal == 'first' ? wordCloudsRef.value.openDialog(state.disasterId) : hotspotRef.value.openDialog(state.disasterId);
};
//
const generateData =()=>{
landsat(state.disasterId).then(da=>{
console.log(da);
const generateData = () => {
if (!state.disasterId) {
ElMessage.error("Please select disaster information!")
return;
}
//
submit(
{
type: 8,
manageId: userInfo.userInfos.id,
status: 0,
disasterId: state.disasterId,
keywords: 'word clouds',
}
).then(ret => {
if (ret == 1042) {
ElMessage.error("error")
} else {
landsat(ret.disasterId, 30, ret.id).then(res => {
getTableData;
ElMessage.success("success")
})
}
})
}
@ -262,7 +286,7 @@ const editHotspot = (row) => {
};
//
const editWordCloud = (row) => {
editWordCloudsRef.value.openDialog(row);
editWordCloudsRef.value.openDialog(row);
};
//
const batchDel = () => {

View File

@ -24,7 +24,7 @@
</el-form-item>
<el-form-item class="login-animation3" v-if="state.captchaMode">
<el-col :span="15">
<el-input text maxlength="3" placeholder="Please input validate code" v-model="state.ruleForm.code" clearable autocomplete="off">
<el-input text maxlength="5" placeholder="Please input validate code" v-model="state.ruleForm.code" clearable autocomplete="off">
<template #prefix>
<el-icon class="el-input__icon"><ele-Position /></el-icon>
</template>

View File

@ -1,40 +1,34 @@
<template>
<div class="login-container flex">
<div class="login-left">
<div class="login-left-logo">
<img :src="logoMini" />
<div class="login-left-logo-text">
<span>{{ getThemeConfig.globalViceTitle }}</span>
<span class="login-left-logo-text-msg">{{ getThemeConfig.globalViceTitleMsg }}</span>
</div>
<img src="/logo.png">
</div>
<div class="login-left-img">
<img :src="loginMain" />
</div>
<img :src="loginBg" class="login-left-waves" />
</div>
<div class="login-right flex">
<div class="login-right-warp flex-margin">
<span class="login-right-warp-one"></span>
<span class="login-right-warp-two"></span>
<div class="login-right-warp-mian">
<div class="login-right-warp-main-title">{{ getThemeConfig.globalTitle }} 欢迎您</div>
<div class="login-right-warp-main-title">Welcome To VoRDM</div>
<div class="login-right-warp-main-form">
<div v-if="!state.isScan">
<el-tabs v-model="state.tabsActiveName">
<el-tab-pane label="Account Login" name="account">
<Account />
</el-tab-pane>
<el-tab-pane label="手机号登录" name="mobile">
<!-- <el-tab-pane label="手机号登录" name="mobile">
<Mobile />
</el-tab-pane>
</el-tab-pane> -->
</el-tabs>
</div>
<Scan v-if="state.isScan" />
<div class="login-content-main-sacn" @click="state.isScan = !state.isScan">
<!-- <Scan v-if="state.isScan" /> -->
<!-- <div class="login-content-main-sacn" @click="state.isScan = !state.isScan">
<i class="iconfont" :class="state.isScan ? 'icon-diannao1' : 'icon-barcode-qr'"></i>
<div class="login-content-main-sacn-delta"></div>
</div>
</div> -->
</div>
</div>
</div>
@ -78,11 +72,15 @@ onMounted(() => {
.login-container {
height: 100%;
background: var(--el-color-white);
.login-left {
flex: 1;
position: relative;
background-color: rgba(211, 239, 255, 1);
margin-right: 100px;
// background-color: rgba(211, 239, 255, 1);
// margin-right: 100px;
background: url(/home1.png) no-repeat;
background-size: 100% 100%;
.login-left-logo {
display: flex;
align-items: center;
@ -91,24 +89,29 @@ onMounted(() => {
left: 80px;
z-index: 1;
animation: logoAnimation 0.3s ease;
img {
width: 52px;
height: 52px;
width: 60%;
height: 70%;
}
.login-left-logo-text {
display: flex;
flex-direction: column;
span {
margin-left: 10px;
font-size: 28px;
color: #26a59a;
}
.login-left-logo-text-msg {
font-size: 12px;
color: #32a99e;
}
}
}
.login-left-img {
position: absolute;
top: 50%;
@ -116,20 +119,24 @@ onMounted(() => {
transform: translate(-50%, -50%);
width: 100%;
height: 52%;
img {
width: 100%;
height: 100%;
animation: error-num 0.6s ease;
}
}
.login-left-waves {
position: absolute;
top: 0;
right: -100px;
}
}
.login-right {
width: 700px;
.login-right-warp {
border: 1px solid var(--el-color-primary-light-3);
border-radius: 3px;
@ -138,12 +145,14 @@ onMounted(() => {
position: relative;
overflow: hidden;
background-color: var(--el-color-white);
.login-right-warp-one,
.login-right-warp-two {
position: absolute;
display: block;
width: inherit;
height: inherit;
&::before,
&::after {
content: '';
@ -151,6 +160,7 @@ onMounted(() => {
z-index: 1;
}
}
.login-right-warp-one {
&::before {
filter: hue-rotate(0deg);
@ -161,6 +171,7 @@ onMounted(() => {
background: linear-gradient(90deg, transparent, var(--el-color-primary));
animation: loginLeft 3s linear infinite;
}
&::after {
filter: hue-rotate(60deg);
top: -100%;
@ -172,6 +183,7 @@ onMounted(() => {
animation-delay: 0.7s;
}
}
.login-right-warp-two {
&::before {
filter: hue-rotate(120deg);
@ -183,6 +195,7 @@ onMounted(() => {
animation: loginRight 3s linear infinite;
animation-delay: 1.4s;
}
&::after {
filter: hue-rotate(300deg);
bottom: -100%;
@ -194,10 +207,12 @@ onMounted(() => {
animation-delay: 2.1s;
}
}
.login-right-warp-mian {
display: flex;
flex-direction: column;
height: 100%;
.login-right-warp-main-title {
height: 130px;
line-height: 130px;
@ -208,9 +223,11 @@ onMounted(() => {
animation-delay: 0.3s;
color: var(--el-text-color-primary);
}
.login-right-warp-main-form {
flex: 1;
padding: 0 50px 50px;
.login-content-main-sacn {
position: absolute;
top: 0;
@ -221,6 +238,7 @@ onMounted(() => {
cursor: pointer;
transition: all ease 0.3s;
color: var(--el-color-primary);
&-delta {
position: absolute;
width: 35px;
@ -231,11 +249,13 @@ onMounted(() => {
background: var(--el-color-white);
transform: rotate(-45deg);
}
&:hover {
opacity: 1;
transition: all ease 0.3s;
color: var(--el-color-primary) !important;
}
i {
width: 47px;
height: 50px;