You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bocai_supplyChain_pc/src/views/main.vue

1059 lines
32 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="index-container" @click="isspecialboxshow = false">
<!-- title部分 -->
<div class="pagetitle" v-if="isLogin && routertitleindex != 0">
<div class="w fsa">
<div class="fss">
<svg class="svg_icon f36" aria-hidden="true">
<use xlink:href="#icon-daotian1" />
</svg>
<div>
<ul class="fsa titleTag">
<li>
<router-link to="/" :class="routertitleindex == 0 ? 'titleactive' : ''" rel="opener">首页</router-link>
</li>
<li>
<router-link to="/list" @click.native="toList" :class="routertitleindex == 1 ? 'titleactive' : ''" rel="opener">稻田职位</router-link>
</li>
<li>
<router-link to="/mybill" :class="routertitleindex == 5 ? 'titleactive' : ''" rel="opener">我的报名</router-link>
</li>
<li>
<router-link to="/mytownsman" :class="routertitleindex == 4 ? 'titleactive' : ''">我的老乡</router-link>
</li>
<!-- <li>
<router-link to="/dataStatistics" :class="routertitleindex == 6 ? 'titleactive' : ''">团队数据</router-link>
</li>-->
<!-- <li>
<router-link to="/serviceoutlets"
><a
href="javascript:;"
:class="routertitleindex === 2 ? 'titleactive' : ''"
>服务网点</a
>
</router-link>
</li>
<li>
<router-link to="/aboutus">
<a
href="javascript:;"
:class="routertitleindex === 3 ? 'titleactive' : ''"
>关于我们</a
>
</router-link>
</li>-->
</ul>
</div>
</div>
<span class="login fsa">
<div class="f14 pr16 mr16" style="line-height:1;border-right:1px solid #979797;cursor:pointer">
<!-- <i class="iconfont icon-qiehuan cf4 f12 mr4"></i>切换到公开版 -->
</div>
<span v-if="isLogin" class="logined">
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="loginValue.imgSrc" alt="" v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else><i class="iconfont icon-morentouxiang" style="color:#ff4400"></i></span>-->
<span class="fsa">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<div class="ml4">{{ userbaseInfo.userName }}</div>
</span>
<div class="loginbox" slot="overlay">
<!-- <div>
<img :src="loginValue.imgSrc" alt v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else class="iconfont icon-morentouxiang avatar f32"></span>
<span class="username">{{loginValue.userName || loginValue.nickName || loginValue.tel}}</span>
</div>-->
<router-link to="/accountsetting">
<div>
<span>
<i class="iconfont icon-gerenzhongxin"></i>个人中心
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/merchantBack" v-if="loginValue.agencyName == '郑州一才工作' && (loginValue.agencyRole == 2 || loginValue.agencyRole == 1 )">
<div>
<span>
<i class="iconfont icon-shangjiahoutai"></i>商家后台
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<!-- <router-link to="/accountsetting"
><div>
<span
><i class="iconfont icon-zhanghaoshezhi"></i
>账号设置</span
><i class="iconfont icon-youjiantou"></i>
</div>
</router-link>-->
<button @click="logout">退出登录</button>
</div>
</a-dropdown>
</span>
<span class="loginbtn" v-else>
<!-- <router-link to="/register">注册</router-link>/ -->
<router-link to="/login">
<button style="cursor: pointer">登录</button>
</router-link>
</span>
</span>
<!-- <span class="navigationright">
<ul>
<li>
<router-link
to="/mytownsman"
:class="routertitleindex === 4 ? 'titleactiveafter' : ''"
>我的老乡
</router-link>
</li>
<li>
<router-link
to="/mybill"
:class="routertitleindex === 5 ? 'titleactiveafter' : ''"
>我的报名
</router-link>
</li>
</ul>
</span>-->
</div>
</div>
<div class="fsa titleSlogan w" v-if="routertitleindex == 0 ">
<!-- <div> -->
<svg class="svg_icon" aria-hidden="true">
<use xlink:href="#icon-daotian-logo" />
</svg>
<!-- </div> -->
<div v-if="!isLogin">
<router-link to="/list" style="display: inline-block; width: 100%">登录</router-link>
</div>
<span v-else class="logined">
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="loginValue.imgSrc" alt="" v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else><i class="iconfont icon-morentouxiang" style="color:#ff4400"></i></span>-->
<span class="fsa f14 cf shadow">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<span class="ml4">{{ userbaseInfo.userName }}</span>
</span>
<div class="loginbox" slot="overlay">
<!-- <div>
<img :src="loginValue.imgSrc" alt v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else class="iconfont icon-morentouxiang avatar"></span>
<span class="username">
{{
loginValue.userName || loginValue.nickName || loginValue.tel
}}
</span>
</div> -->
<router-link to="/accountsetting">
<div>
<span>
<i class="iconfont icon-gerenzhongxin"></i>个人中心
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/merchantBack" v-if="loginValue.agencyName == '郑州一才工作' && (loginValue.agencyRole == 2 || loginValue.agencyRole == 1 )">
<div>
<span>
<i class="iconfont icon-shangjiahoutai"></i>商家后台
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<!-- <router-link to="/accountsetting"
><div>
<span
><i class="iconfont icon-zhanghaoshezhi"></i
>账号设置</span
><i class="iconfont icon-youjiantou"></i>
</div>
</router-link>-->
<button @click="logout">退出登录</button>
</div>
</a-dropdown>
</span>
</div>
<!-- 搜索栏 -->
<router-view :isspecialboxshow.sync="isspecialboxshow" :formvalue="formvalue" :jobMainList="jobMainList" :isspinning="isspinning"></router-view>
<!-- 老乡广告 -->
<!-- <div class="fellowtownsman" v-if="laoxiangshow">
<div class="w">
<div class="title">
<h1><span></span>老乡们都想去</h1>
</div>
<div class="main">
<div
class="jobinfobox"
v-for="(item, index) in fellowList"
:key="index"
>
<router-link :to="'/detail/' + item.id">
<a href="javascript:;" @click="resetpage">
<div class="imgbox">
<img v-if="item.logo" :src="item.logo" alt="" />
<img v-else src="../../../assets/nopicture.png" alt="" />
<span>服务费<i>1.3</i>元/小时</span>
</div>
<div class="jobname">{{ item.aliasName }}</div>
</a>
</router-link>
<div class="jobinfo">
<span>{{ item.district }}</span>
<span>{{ item.gender }}</span>
<span>{{ item.age }}</span>
</div>
<div class="jobtag">
<span>返费</span>
<span
v-for="(item1, index) in item.jobSpecialLabelNames"
:key="index"
>{{ item1 }}</span
>
</div>
<div class="jobprice">
<template v-if="item.hourlyPay"
><span>{{ item.hourlyPayTemp / 100 }}</span
>元/小时</template
>
<template v-else-if="item.dayPay"
><span>{{ item.hourlyPayTemp / 100 }}</span
>元/日</template
>
</div>
</div>
</div>
</div>
</div>-->
<!-- banner广告栏 -->
<!-- <div class="banner" v-if="isbannershow">
<div class="w">
<i class="iconfont icon-yigezhuanmenfuwudailidepingtai"></i>
</div>
</div>-->
<!-- footer部分 -->
<footer v-if="isfootershow" :class="loginPage ? 'footer_abs':''">
<div class="w">
<!-- <ul>
<li @click="totop"><router-link to="/list">一手职位</router-link></li>
<li></li>
<li @click="totop">
<router-link to="/serviceoutlets">服务网点</router-link>
</li>
<li></li>
<li @click="totop">
<router-link to="/aboutus">关于我们</router-link>
</li>
</ul>-->
<div>
Copyright © 2015-2023 Bocai. All Rights Reserved.
<i></i>
<a target="_blank" href="https://beian.miit.gov.cn/#/Integrated/index">豫ICP备2023001993号</a>
</div>
</div>
</footer>
</div>
</template>
<script>
// import joblist from "../components/firstjob/joblist.vue";
import Cookies from 'js-cookie'
import {
JobListApi,
// getCityApi,
} from '../api/job'
import { logoutApi } from '../api/login'
import { disposeJobListData } from '../utils/commonUtil'
export default {
inject: ['reload'],
provide() {
return {
getJobList: this.getJobList,
}
},
// 组件名称
name: '',
// 局部注册的组件
components: {
// joblist,
},
// 组件参数 接收来自父组件的数据
props: {},
// 组件状态值
data() {
return {
fellowList: [],
isspinning: false,
isspecialboxshow: false,
isfootershow: true,
laoxiangshow: false,
isbannershow: true,
isLogin: false,
loginValue: {},
jobMainList: [],
formvalue: {
// 筛选的上传参数
district: [], // 城镇数据
monthlyPayStr: [], // 每月工资
ageStr: '', // 年龄数据
jobSpecialLabelIds: [], // 特色标签索引
aliasName: '',
sex: [],
pageNum: 1,
pageSize: 8,
total: null, //分页配置
},
userbaseInfo: JSON.parse(localStorage.getItem('LOGIN_DATA')),
loginPage: false,
}
},
// 计算属性
computed: {
routertitleindex: {
set() {},
get() {
const path = this.$route.fullPath
if (path.indexOf('serviceoutlets') > -1) {
return 2
} else if (path.indexOf('list') > -1 || path.indexOf('detail') > -1) {
return 1
} else if (path.indexOf('aboutus') > -1) {
return 3
} else if (path.indexOf('main') > -1) {
return 0
} else if (path.indexOf('mytownsman') > -1) {
return 4
} else if (path.indexOf('mybill') > -1) {
return 5
} else if (path.indexOf('dataStatistics') > -1) {
return 6
} else {
return 7
}
},
},
// isLogin() {
// return localStorage.getItem("LOGIN_DATA") !== null ? true : false;
// },
// loginValue() {
// return localStorage.getItem("LOGIN_DATA") !== null
// ? JSON.parse(localStorage.getItem("LOGIN_DATA"))
// : { tel: "" };
// return JSON.parse(data)
// },
},
// 侦听器
watch: {
routertitleindex() {
const path = this.$route.fullPath
if (path.indexOf('serviceoutlets') > -1) {
this.laoxiangshow = true
} else if (path.indexOf('list') > -1 || path.indexOf('detail') > -1) {
this.laoxiangshow = true
} else if (path.indexOf('aboutus') > -1) {
this.laoxiangshow = false
} else {
this.laoxiangshow = true
}
this.showfooter()
},
$route: {
handler(to) {
console.log()
// console.log("ischange");
// console.log(to);
// console.log(from);
// console.dir(this.navigationBarLocation);
window.addEventListener('scroll', this.navigationBarLocation)
window.addEventListener('scroll', this.windowScroll) //监听页面滚动
if (to.fullPath == '/login') {
this.loginPage = true
} else {
this.loginPage = false
}
if (to.fullPath == '/list') {
window.removeEventListener('scroll', this.navigationBarLocation)
return
} else if (to.fullPath == '/main') {
window.removeEventListener('scroll', this.windowScroll)
return
}
window.removeEventListener('scroll', this.navigationBarLocation)
window.removeEventListener('scroll', this.windowScroll)
},
deep: true,
immediate: true,
},
// isLogin() {
// this.isLogin = JSON.parse(localStorage.getItem("LOGIN_DATA"));
// console.log(this.isLogin);
// },
},
// 生命周期钩子 注:没用到的钩子请自行删除
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created() {
console.log(this.$route)
if (this.$route.fullPath != '/login') {
this.loginPage = false
}
if (localStorage.getItem('LOGIN_DATA')) {
this.isLogin = true
}
this.getJobList()
this.isLaoxiangshow()
this.getRecommendJob()
this.showfooter()
},
/**
* el 被新创建的 vm.el 替换,并挂载到实例上去之后调用该钩子。
* 如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.el 也在文档内。
*/
mounted() {
this.loginValue = localStorage.getItem('LOGIN_DATA') !== null ? JSON.parse(localStorage.getItem('LOGIN_DATA')) : { tel: '' }
console.log(this.loginValue)
// console.log(document.querySelector(".ant-pagination-options-quick-jumper"));
},
// 组件方法
methods: {
/**
* 处理后台返回的职位列表
*/
// windowScroll() {
// // console.log(e);
// let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
// // console.log(scrollTop); // 获取到页面滚动的值,
// let navigation = document.getElementById("navigation");
// let content = document.getElementById("maincontent");
// // let filterbox = document.querySelector(".w");
// // console.log(filterbox);
// // console.log(content);
// // let left = ("100vw" - "1200px") / 2;
// // console.log(navigator.userAgent);
// if (this.$route.fullPath == "/list") {
// if (scrollTop >= 81) {
// navigation.style.position = "fixed";
// navigation.style.top = "0px";
// navigation.style.boxShadow = "2px 2px 4px 0px rgba(0,0,0,0.05)";
// content.style.marginTop = "64px";
// if (navigator.userAgent.indexOf("Mac OS X") == -1) {
// navigation.style.paddingLeft = "35px";
// }
// } else {
// navigation.style.position = "relative";
// navigation.style.right = "0";
// content.style.marginTop = "16px";
// navigation.style.boxShadow = "none";
// if (navigator.userAgent.indexOf("Mac OS X") == -1) {
// navigation.style.paddingLeft = "0px";
// }
// }
// }
// },
navigationBarLocation() {
let navigationBar = document.getElementById('navigationBar')
let aboutBill = document.getElementById('aboutBill')
// console.log(navigationBar.getBoundingClientRect().top);
// console.log(aboutBill);
// console.log(aboutBill.getBoundingClientRect().top);
if (this.$route.fullPath == '/main') {
if (navigationBar.getBoundingClientRect().top <= 0 && aboutBill.getBoundingClientRect().top < 84) {
navigationBar.style.position = 'fixed'
navigationBar.style.top = '0px'
navigationBar.style.boxShadow = '0 0 10px 0 #eee'
navigationBar.style.width = '1920px'
} else if (navigationBar.getBoundingClientRect().top == 0 && aboutBill.getBoundingClientRect().top >= 84) {
// console.log('isbig');
navigationBar.style.position = 'absolute'
navigationBar.style.top = 'unset'
navigationBar.style.bottom = '0px'
navigationBar.style.boxShadow = 'none'
navigationBar.style.width = '1200px'
}
}
},
// 获取工作列表
async getJobList(newdata) {
this.isspinning = true
console.log(this.formvalue)
try {
newdata = {
district: '',
monthlyPayStr: '',
ageStr: '',
jobSpecialLabelIds: '',
aliasName: '',
pageNum: 1,
pageSize: 8,
total: null, //分页配置
}
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : ''
} else {
newdata[k] = this.formvalue[k]
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApi(newdata)
// console.log(data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList)
this.formvalue.total = data.data.recordCount
console.log(this.jobMainList)
} else {
this.$message.info('数据获取失败')
}
}
this.totop()
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error)
}
this.isspinning = false
},
totop() {
// console.log(window);
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
// window.body.scrollY = 0;
},
isLaoxiangshow() {
const path = this.$route.fullPath
if (path.indexOf('serviceoutlets') > -1) {
this.laoxiangshow = true
} else if (path.indexOf('list') > -1 || path.indexOf('detail') > -1) {
this.laoxiangshow = true
} else if (path.indexOf('aboutus') > -1) {
this.laoxiangshow = false
} else {
this.laoxiangshow = true
}
},
async getRecommendJob() {
this.isspinning = true
try {
if (this.isLogin) {
const { data } = await JobListApi({
pageNum: 1,
pageSize: 4,
jobCategory: 608,
})
// console.log(data);
this.fellowList = disposeJobListData(data.data.recordList)
// console.log(this.fellowList);
}
// this.$emit("update:relationList", this.relationList);
} catch (error) {
console.log(error)
}
this.isspinning = false
},
async logout() {
// logoutApi().then((result) => {
// console.log(result);
// });
try {
const data = await logoutApi()
console.log(data)
if (data.status === 200) {
localStorage.removeItem('LOGIN_DATA')
this.reload()
this.$router.push('/main')
} else {
console.log(1)
}
// this.fellowList = disposeJobListData(data.data.recordList);
// this.isspinning = false;
// console.log(this.fellowList);
// this.$emit("update:relationList", this.relationList);
} catch (error) {
console.log(error)
this.$message.warning(error.message)
}
// console.log(data);
// if (data.status === 200) {
// localStorage.removeItem("LOGIN_DATA");
// }
},
resetpage() {
console.log(1)
setTimeout(() => {
this.reload()
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
}, 1000)
},
showfooter() {
const path = this.$route.fullPath
if (path.indexOf('main') > -1) {
this.isbannershow = false
this.isfootershow = false
} else {
this.isbannershow = true
this.isfootershow = true
}
if (path.indexOf('login') > -1 && path.indexOf('loginpsw') == -1) {
this.isbannershow = false
}
},
toList() {
console.log(this.$router)
// this.$router.go(0);
// window.location.reload();
this.reload()
},
},
}
</script>
<style scoped lang="less">
.index-container {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
& > div:nth-child(2) {
flex: 1;
}
.titleSlogan {
position: absolute;
left: 50%;
// padding-top: 32px;
transform: translateX(-50%);
z-index: 9;
svg {
font-size: 120px;
}
div {
width: 68px;
height: 26px;
font-size: 14px;
line-height: 24px;
text-align: center;
border-radius: 999px;
cursor: pointer;
color: #fff;
border: 1px solid #fff;
text-shadow: 3px 3px 10px rgba(0, 0, 0, 0.4);
background-color: rgba(255, 255, 255, 0);
transition: all 0.3s;
&:hover {
// background-color: rgba(255, 255, 255, 0.3);
background-color: #ff4400;
border-color: transparent;
}
}
}
/deep/ .pagetitle {
background-color: #f0f0f0;
padding: 0;
height: 48px;
display: flex;
align-items: center;
// height: 32px;
// width: 100vw;
// font-size: 16px;
.titleactive {
// font-size: 18px;
font-weight: normal;
color: #ff4400;
}
.w {
overflow: hidden;
// display: flex;
// justify-content: space-between;
// line-height: 36px;
.titleTag {
font-size: 14px;
display: flex;
margin-left: 150px;
li {
font-weight: 400;
color: #333;
margin-right: 24px;
line-height: 48px;
// text-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.05);
a {
transition: none;
&:hover {
color: #ff4400;
}
}
}
}
.navigationright {
float: right;
margin-right: 24px;
font-size: 16px;
ul {
display: flex;
text-align: center;
line-height: 52px;
li {
cursor: pointer;
a.titleactiveafter {
font-size: 16px;
font-weight: bold;
color: #ff4400;
}
a:hover {
color: #ff4400;
}
&:first-child {
margin-right: 24px;
}
}
}
}
.login {
float: right;
// width: 36px;
line-height: 24px;
.loginbtn {
width: 70px;
}
.loginbtn {
margin-top: 02px;
button {
width: 70px;
height: 24px;
font-size: 12px;
margin-top: 5px;
background-color: #fff;
border: 1px solid #ff4400;
line-height: 22px;
border-radius: 999px;
color: #ff4400;
text-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.05);
&:hover {
border-color: rgba(255, 68, 0, 0.8);
color: rgba(255, 68, 0, 0.8);
}
}
}
.logined {
// border-radius: 999px;
overflow: hidden;
border: 1px solid #eee;
line-height: 38px;
/*margin-top: 4px;*/
font-size: 14px;
cursor: default;
&:hover {
color: #ff4400;
}
// width: 24px;
// height: 24px;
img {
width: 24px;
height: 24px;
}
// span {
// width: 36px;
// height: 36px;
// margin-top: 4px;
// // margin-left: 33px;
// border-radius: 999px;
// // background-color: #ff4400;
// margin-right: -3px;
// text-align: center;
// }
// i {
// font-size: 32px;
// line-height: 30px;
// color: #ff4400;
// cursor: pointer;
// &:hover {
// color: #ff4400;
// }
// }
}
}
}
}
.fellowtownsman {
// height: 641px;
background: #ffffff;
.w {
padding: 30px 0;
.title {
font-size: 24px;
text-align: left;
color: #4d575e;
line-height: 56px;
h1 {
span {
display: inline-block;
vertical-align: middle;
margin-top: -4px;
width: 4px;
height: 25px;
margin-right: 8px;
background: #ff4400;
}
}
}
.main {
display: flex;
justify-content: start;
margin-top: 30px;
.jobinfobox {
width: 288px;
// height: 385px;
margin-bottom: 16px;
margin-right: 20px;
background: #ffffff;
border: 1px solid rgba(77, 87, 94, 0.1);
border-radius: 4px;
padding: 20px;
.imgbox {
position: relative;
width: 248px;
height: 186px;
img {
width: 100%;
height: 100%;
}
span {
position: absolute;
padding: 0 10px;
// width: 149px;
height: 28px;
left: 0;
bottom: 0;
background: #ff4400;
border-radius: 16px 16px 16px 0px;
font-size: 16px;
text-align: center;
color: #ffffff;
line-height: 28px;
}
}
.jobname {
height: 52px;
// margin: 12px 0;
font-size: 20px;
font-weight: normal;
text-align: left;
color: #4d575e;
line-height: 52px;
border-bottom: 1px solid #f2f0ec;
}
.jobinfo {
margin-top: 11px;
opacity: 0.5;
font-size: 18px;
text-align: left;
color: #4d575e;
line-height: 22px;
}
.jobtag {
margin-top: 12px;
text-align: left;
span:first-child {
color: #ff4400;
background: rgba(254, 97, 0, 0.1);
}
span {
margin-right: 8px;
font-size: 16px;
padding: 3px 8px;
background: rgba(51, 51, 51, 0.06);
border-radius: 4px;
}
}
.jobprice {
margin-top: 12px;
font-size: 18px;
font-weight: normal;
text-align: left;
color: #ff4400;
line-height: 25px;
span {
font-size: 22px;
}
}
}
}
}
}
.banner {
height: 72px;
margin-top: 20px;
background-color: #ff4400;
margin-bottom: -20px;
.w {
display: flex;
height: 100%;
justify-content: center;
align-items: center;
i {
font-size: 32px;
color: #fff;
}
img:last-child {
width: 173px;
height: 42px;
margin-right: 110px;
}
}
// background-color: black;
}
.footer_abs {
position: absolute;
left: 50%;
bottom: 0;
transform: translateX(-50%);
}
footer {
padding: 40px 30px;
margin-top: 20px;
.w {
ul {
display: flex;
justify-content: center;
li {
font-size: 16px;
text-align: center;
color: #4d575e;
line-height: 25px;
}
li:nth-of-type(2n) {
width: 1px;
height: 20px;
margin: 5px 54px;
background-color: #4d575e;
}
}
div {
text-align: center;
// margin-top: 16px;
color: #4d575e;
font-size: 12px;
i {
display: inline-block;
vertical-align: middle;
width: 1px;
height: 16px;
margin: 0 10px;
background-color: #4d575e;
}
}
}
}
}
.loginbox {
line-height: 36px;
> div:first-child {
display: flex;
align-items: center;
padding: 16px 0;
img {
width: 24px;
height: 24px;
margin-right: 8px;
}
}
.username {
max-width: 120px;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.avatar {
display: block;
line-height: 24px;
font-size: 24px !important;
color: #ff4400;
margin-right: 8px;
}
a {
div {
padding: 10px 0;
align-items: center;
}
}
button {
line-height: 28px;
&:hover {
border-color: #ff4400;
}
}
}
.shadow:hover {
cursor: default;
// text-shadow: 4px 4px 4px #000;
transform: scale(1.05);
img {
// box-shadow: 3px 3px 3px 3px #00000033;
}
}
.f40 {
/deep/ .ant-table {
.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on,
.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on {
color: #ff4400;
}
.ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,
.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,
.ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,
.ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
background: #fff3ef;
}
.ant-radio-checked .ant-radio-inner {
border-color: #ff4400 !important;
box-shadow: none !important;
}
.ant-radio-checked .ant-radio-inner::after {
background-color: #ff4400 !important;
}
.ant-radio:hover .ant-radio-inner {
border-color: #ff4400 !important;
box-shadow: none;
}
.ant-radio-checked .ant-radio-inner::after {
background-color: #ff4400 !important;
}
.ant-radio-checked:hover .ant-radio-inner {
border-color: #ff4400 !important;
}
.ant-radio {
border-color: #ddd !important;
box-shadow: none !important;
}
.ant-btn-primary:hover {
border-color: #ff4400;
background-color: #ff5416;
color: #fff;
}
.ant-input:hover {
border-color: #ff4400;
}
}
}
</style>