You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1085 lines
34 KiB

<template>
<div style="padding: 0 20px">
<div ref="lxHeader">
<lx-header icon="md-apps" text="拜访记录管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<slot>
<div style="display: flex;align-items: center;" class="selector">
<!-- 模拟数据开关 -->
<div v-if="false" style="margin-right: 15px; padding: 5px 10px; background: #f0f0f0; border-radius: 4px; display: flex; align-items: center;">
<span style="margin-right: 8px; font-size: 12px; color: #666;">模拟数据:</span>
<el-switch
v-model="useMockData"
active-color="#13ce66"
inactive-color="#ff4949"
@change="getList">
</el-switch>
</div>
<div style="margin-right: 10px;">关键词</div>
<el-input size="mini" placeholder="请输入关键词" v-model="select.keyword"
style="width: 160px;margin-right: 10px;"></el-input>
<div style="margin-right: 10px;">状态</div>
<el-select v-model="select.audit_status" clearable placeholder="请选择">
<el-option v-for="item in statusList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
<div style="margin:0 10px;">起始时间</div>
<el-date-picker v-model="selectRange" @change="selectRanges" value-format="yyyy-MM-dd" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button @click="getList" slot="reference" size="medium" type="primary" style="margin-left: 10px">查询
</el-button>
<template>
<el-popover placement="right" width="250" v-model="visible" trigger='click'>
<p style="margin-bottom:10px">选择访客类型:</p>
<div style="display: flex;align-items: center;">
<el-button size="mini" type="primary"
@click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 1">普通访客
</el-button>
<el-button type="primary" size="mini"
@click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 2">施工人员
</el-button>
<el-button type="primary" size="mini"
@click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 3">物流司机</el-button>
</div>
<el-button slot="reference" size="medium" type="primary" style="margin-left: 10px">新增</el-button>
</el-popover>
</template>
<el-button @click="downloadExel" slot="reference" size="medium" type="primary" style="margin-left: 10px">导出
</el-button>
</div>
</slot>
</lx-header>
</div>
<xy-table :table-item="table" :list="data" :total="total"
:auths="['detail','edit','delete']"
@pageSizeChange="e => {select.page_size = e;select.page = 1;getList()}"
@pageIndexChange="e => {select.page = e;getList()}" @detail="viewDetail" @delete="deleteStudy" @editor="editorStudy">
</xy-table>
<addCommon ref="addCommon" @refresh="getList"></addCommon>
<!-- <addBuild ref="addBuild" @refresh="getList"></addBuild>
<addPark ref="addPark" @refresh="getList"></addPark> -->
<!-- 详情弹窗 -->
<el-dialog
title="拜访记录详情"
:visible.sync="detailVisible"
width="800px"
:close-on-click-modal="false">
<div class="detail-content" v-if="currentDetail">
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">姓名:</span>
<span class="detail-value">{{ currentDetail.name }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">访客类型:</span>
<span class="detail-value">{{ currentDetail.type_text }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">状态:</span>
<el-tag :type="getStatusType(currentDetail.audit_status)">{{ currentDetail.audit_status_text }}</el-tag>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">被访人:</span>
<span class="detail-value">{{ currentDetail.accept_admin ? currentDetail.accept_admin.name : '-' }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">证件类型:</span>
<span class="detail-value">{{ currentDetail.credent == 1 ? '身份证' : '护照' }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">证件号:</span>
<span class="detail-value">{{ currentDetail.idcard }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">手机号:</span>
<span class="detail-value">{{ currentDetail.mobile }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">预约时间:</span>
<span class="detail-value">{{ currentDetail.date }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="24">
<div class="detail-item">
<span class="detail-label">单位名称:</span>
<span class="detail-value">{{ currentDetail.company_name }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">开始时间:</span>
<span class="detail-value">{{ currentDetail.start_date }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">结束时间:</span>
<span class="detail-value">{{ currentDetail.end_date }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">入场时间:</span>
<span class="detail-value multi-line">{{ getGateTime(currentDetail, '进厂') || '-' }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">离场时间:</span>
<span class="detail-value multi-line">{{ getGateTime(currentDetail, '离厂') || '-' }}</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="24">
<div class="detail-item">
<span class="detail-label">是否随访:</span>
<span class="detail-value">
<el-tag :type="currentDetail.follw_people && currentDetail.follw_people.length > 0 ? 'success' : 'info'" size="small">
{{ currentDetail.follw_people && currentDetail.follw_people.length > 0 ? '是' : '否' }}
</el-tag>
<span v-if="currentDetail.follw_people && currentDetail.follw_people.length > 0" style="margin-left: 10px;">
随访人员:{{ currentDetail.follw_people.join('、') }}
</span>
</span>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="detail-row">
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">创建时间:</span>
<span class="detail-value">{{ currentDetail.created_at }}</span>
</div>
</el-col>
<el-col :span="12">
<div class="detail-item">
<span class="detail-label">创建人:</span>
<span class="detail-value">{{ currentDetail.admin ? currentDetail.admin.name : '-' }}</span>
</div>
</el-col>
</el-row>
<!-- 照片信息 -->
<el-row :gutter="20" class="detail-row" v-if="currentDetail.vehicle_images_detail && currentDetail.vehicle_images_detail.length > 0">
<el-col :span="24">
<div class="detail-item detail-photos">
<span class="detail-label">照片信息:</span>
<div class="detail-value">
<div class="photo-list">
<div class="photo-item" v-for="(photo, index) in currentDetail.vehicle_images_detail" :key="index">
<div class="photo-wrapper">
<el-image
:src="photo.url"
:preview-src-list="currentDetail.vehicle_images_detail.map(p => p.url)"
:initial-index="index"
fit="cover"
class="photo-image">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div class="photo-overlay">
<i class="el-icon-zoom-in"></i>
<span>点击预览</span>
</div>
</div>
<div class="photo-desc">{{ photo.original_name }}</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="detailVisible = false">关闭</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getList,
destroy
} from '@/api/visit/record.js'
import addCommon from '@/views/visit/component/addCommon'
import {
download
} from '@/utils/downloadRequest'
import store from "@/store/modules/user.js"
export default {
components: {
addCommon
},
data() {
return {
visible: false,
// 模拟数据开关(隐藏,默认使用真实数据)
useMockData: false,
// 详情弹窗控制
detailVisible: false,
currentDetail: null,
select: {
page: 1,
page_size: 10,
keyword: "",
audit_status: "",
my_accept_admin:'',
start_date: "",
end_date: "",
is_export: 0
},
selectRange: [],
statusList: [{
id: -1,
value: '待学习'
},
{
id: 0,
value: '待审核'
},
{
id: 1,
value: '通过(待进厂)'
},
{
id: 2,
value: '驳回'
},
{
id: 3,
value: '已进厂'
},
{
id: 4,
value: '已离厂'
},{
id: 5,
value: '已取消'
}
],
total: 0,
data: [],
// 模拟数据
mockData: [
{
id: 1,
name: '张三',
type: 1,
type_text: '普通访客',
audit_status: 3,
audit_status_text: '已进厂',
accept_admin: {
name: '李经理'
},
follw_people: ['随行人员1', '随行人员2'],
date: '2024-10-12',
credent: 1,
idcard: '110101199001011234',
mobile: '13800138001',
company_name: '北京科技有限公司',
start_date: '2024-10-12 09:00:00',
end_date: '2024-10-12 18:00:00',
gate_logs: [
{ remark: '进厂', created_at: '2024-10-12 09:15:00' },
{ remark: '离厂', created_at: '2024-10-12 17:30:00' }
],
created_at: '2024-10-11 15:30:00',
admin: {
name: '管理员A'
},
vehicle_images_detail: [
{
id: 1001,
url: 'https://picsum.photos/300/400?random=1',
original_name: '访客正面照.png',
extension: 'png',
size: 2544
},
{
id: 1002,
url: 'https://picsum.photos/300/400?random=2',
original_name: '访客侧面照.png',
extension: 'png',
size: 2231
}
]
},
{
id: 2,
name: '李四',
type: 2,
type_text: '施工人员',
audit_status: 1,
audit_status_text: '通过(待进厂)',
accept_admin: {
name: '王主管'
},
follw_people: [],
date: '2024-10-13',
credent: 1,
idcard: '110101199002025678',
mobile: '13800138002',
company_name: '建筑施工集团',
start_date: '2024-10-13 08:00:00',
end_date: '2024-10-13 20:00:00',
gate_logs: null,
created_at: '2024-10-11 16:00:00',
admin: {
name: '管理员B'
},
vehicle_images_detail: [
{
id: 1003,
url: 'https://picsum.photos/300/400?random=3',
original_name: '施工人员照片.png',
extension: 'png',
size: 2784
}
]
},
{
id: 3,
name: '王五',
type: 3,
type_text: '物流司机',
audit_status: 4,
audit_status_text: '已离厂',
accept_admin: {
name: '赵总监'
},
follw_people: ['司机助手'],
date: '2024-10-12',
credent: 1,
idcard: '110101199003033456',
mobile: '13800138003',
company_name: '顺达物流公司',
start_date: '2024-10-12 10:00:00',
end_date: '2024-10-12 16:00:00',
gate_logs: [
{ remark: '进厂', created_at: '2024-10-12 10:05:00' },
{ remark: '离厂', created_at: '2024-10-12 15:45:00' }
],
created_at: '2024-10-11 14:20:00',
admin: {
name: '管理员C'
},
vehicle_images_detail: [
{
id: 1004,
url: 'https://picsum.photos/400/300?random=4',
original_name: '车辆前方照片.png',
extension: 'png',
size: 2686
},
{
id: 1005,
url: 'https://picsum.photos/400/300?random=5',
original_name: '车辆侧面照片.png',
extension: 'png',
size: 2544
},
{
id: 1006,
url: 'https://picsum.photos/400/300?random=6',
original_name: '车牌号照片.png',
extension: 'png',
size: 2231
}
]
},
{
id: 4,
name: '赵六',
type: 1,
type_text: '普通访客',
audit_status: 0,
audit_status_text: '待审核',
accept_admin: {
name: '刘经理'
},
follw_people: [],
date: '2024-10-14',
credent: 2,
idcard: 'P123456789',
mobile: '13800138004',
company_name: '国际贸易公司',
start_date: '2024-10-14 09:00:00',
end_date: '2024-10-14 17:00:00',
gate_logs: null,
created_at: '2024-10-12 08:30:00',
admin: {
name: '管理员D'
},
vehicle_images_detail: [
{
id: 1007,
url: 'https://picsum.photos/300/400?random=7',
original_name: '访客证件照.png',
extension: 'png',
size: 2544
}
]
},
{
id: 5,
name: '孙七',
type: 2,
type_text: '施工人员',
audit_status: 2,
audit_status_text: '驳回',
accept_admin: {
name: '周主任'
},
follw_people: ['施工队员1', '施工队员2', '施工队员3'],
date: '2024-10-13',
credent: 1,
idcard: '110101199004047890',
mobile: '13800138005',
company_name: '装修工程队',
start_date: '2024-10-13 07:00:00',
end_date: '2024-10-13 19:00:00',
gate_logs: null,
created_at: '2024-10-11 17:15:00',
admin: {
name: '管理员E'
},
vehicle_images_detail: []
},
{
id: 6,
name: '周八',
type: 1,
type_text: '普通访客',
audit_status: 5,
audit_status_text: '已取消',
accept_admin: {
name: '吴经理'
},
follw_people: [],
date: '2024-10-12',
credent: 1,
idcard: '110101199005055432',
mobile: '13800138006',
company_name: '咨询服务公司',
start_date: '2024-10-12 14:00:00',
end_date: '2024-10-12 17:00:00',
gate_logs: null,
created_at: '2024-10-10 10:00:00',
admin: {
name: '管理员F'
},
vehicle_images_detail: []
},
{
id: 7,
name: '吴九',
type: 3,
type_text: '物流司机',
audit_status: 3,
audit_status_text: '已进厂',
accept_admin: {
name: '郑部长'
},
follw_people: [],
date: '2024-10-12',
credent: 1,
idcard: '110101199006066789',
mobile: '13800138007',
company_name: '快运物流',
start_date: '2024-10-12 11:00:00',
end_date: '2024-10-12 19:00:00',
gate_logs: [
{ remark: '进厂', created_at: '2024-10-12 11:10:00' }
],
created_at: '2024-10-11 09:00:00',
admin: {
name: '管理员G'
},
vehicle_images_detail: [
{
id: 1008,
url: 'https://picsum.photos/400/300?random=8',
original_name: '货车照片.png',
extension: 'png',
size: 2686
},
{
id: 1009,
url: 'https://picsum.photos/300/400?random=9',
original_name: '司机照片.png',
extension: 'png',
size: 2544
}
]
},
{
id: 8,
name: '郑十',
type: 1,
type_text: '普通访客',
audit_status: -1,
audit_status_text: '待学习',
accept_admin: {
name: '冯总'
},
follw_people: ['助理'],
date: '2024-10-15',
credent: 1,
idcard: '110101199007077654',
mobile: '13800138008',
company_name: '教育培训机构',
start_date: '2024-10-15 10:00:00',
end_date: '2024-10-15 16:00:00',
gate_logs: null,
created_at: '2024-10-12 10:30:00',
admin: {
name: '管理员H'
},
vehicle_images_detail: []
}
],
table: [{
label: '序号',
type: "index",
fixed: "left",
width: 80
},
{
label: '姓名',
sortable: false,
prop: 'name',
fixed: "left",
width: 120
},
{
label: '类型',
sortable: false,
prop: 'type_text',
width: 120
},
{
label: '状态',
sortable: false,
prop: 'audit_status_text',
width: 120
},{
label: '被访人',
sortable: false,
prop: 'accept_admin.name',
width: 120,
},
{
label: '是否随访',
sortable: false,
prop: 'follw_people',
width: 80,
formatter:(cell, data, value)=>{
return value.length>0?'是':'否'
}
},
{
label: '预约时间',
sortable: false,
prop: 'date',
width: 120
},
{
label: '证件类型',
sortable: false,
prop: 'credent',
width: 120,
formatter:(cell, data, value)=>{
return value==1?'身份证':'护照'
},
},
{
label: '证件号',
sortable: false,
prop: 'idcard',
width: 180
},
{
label: '手机号',
sortable: false,
prop: 'mobile',
width: 120
},
{
label: '单位名称',
sortable: false,
prop: 'company_name',
width: 180
},
{
label: '开始时间',
sortable: false,
prop: 'start_date',
width: 180
},
{
label: '结束时间',
sortable: false,
prop: 'end_date',
width: 180
},
{
label: '入场时间',
sortable: false,
prop: 'gate_start_date',
width: 180,
formatter:(cell,data,value)=>{
if(cell.gate_logs){
for(let k of cell.gate_logs){
if(k.remark=='进厂'){
return k.created_at
}
}
}else{
return ''
}
}
},
{
label: '离场时间',
sortable: false,
prop: 'gate_end_date',
width: 180,
formatter:(cell,data,value)=>{
if(cell.gate_logs){
for(let k of cell.gate_logs){
if(k.remark=='离厂'){
return k.created_at
}
}
}else{
return ''
}
}
},
{
label: '创建时间',
sortable: false,
prop: 'created_at',
width: 180
},
{
label: '创建人',
sortable: false,
prop: 'admin.name',
width: 120,
formatter(cell, data, value){
return value?value:''
}
}
]
}
},
computed: {},
mounted() {
console.log("stote",store)
// const state = store.state
// if(state.role && state.role.includes('系统管理员')!=-1){
// this.select.my_accept_admin = ''
// }
this.getList()
},
methods: {
async getList() {
// 使用模拟数据模式
if (this.useMockData) {
// 过滤模拟数据
let filteredData = [...this.mockData]
// 关键词搜索
if (this.select.keyword) {
filteredData = filteredData.filter(item =>
item.name.includes(this.select.keyword) ||
item.mobile.includes(this.select.keyword) ||
item.idcard.includes(this.select.keyword) ||
item.company_name.includes(this.select.keyword)
)
}
// 状态筛选
if (this.select.audit_status !== '' && this.select.audit_status !== null && this.select.audit_status !== undefined) {
filteredData = filteredData.filter(item => item.audit_status === this.select.audit_status)
}
// 时间段筛选
if (this.select.start_date && this.select.end_date) {
filteredData = filteredData.filter(item => {
return item.date >= this.select.start_date && item.date <= this.select.end_date
})
}
// 计算分页
this.total = filteredData.length
const start = (this.select.page - 1) * this.select.page_size
const end = start + this.select.page_size
this.data = filteredData.slice(start, end)
console.log('使用模拟数据:', { total: this.total, data: this.data })
} else {
// 原有的真实接口调用逻辑
let res = await getList(this.select)
console.log(res)
this.data = res.data
this.total = res.total
}
},
selectRanges(val){
if(val){
this.select.start_date = val[0]
this.select.end_date = val[1]
}else{
this.select.start_date = ''
this.select.end_date = ''
}
},
downloadExel() {
this.select.is_export = 1
download(
'/api/admin/visit/index',
'get', {
...this.select
},
'拜访记录列表.csv')
this.select.is_export = 0
},
deleteStudy(row) {
destroy({
id: row.id
}).then(res => {
this.$successMessage('destroy', '拜访记录')
this.getList()
})
},
editorStudy(row) {
// let addWhat = row.type == 1 ? "addCommon" : (row.type == 2 ? "addBuild" : (row.type == 3 ? "addPark" : ""))
let addWhat = "addCommon"
console.log(row)
this.$refs[addWhat].id = row.id
this.$refs[addWhat].visitType= parseInt(row.type)
this.$refs[addWhat].type = 'editor'
this.$refs[addWhat].isShow = true
},
// 查看详情
viewDetail(row) {
console.log('查看详情:', row)
this.currentDetail = row
this.detailVisible = true
},
// 获取进厂/离厂时间
getGateTime(record, remark) {
console.log(record,remark)
if (record.gate_logs && record.gate_logs.length > 0) {
const logs = record.gate_logs.filter(item => item.remark === remark)
if (logs && logs.length > 0) {
// 将多条记录的时间用换行符分隔
return logs.map(item => item.created_at).join('\n')
}
}
return ''
},
// 根据状态获取标签类型
getStatusType(status) {
const statusMap = {
'-1': 'info', // 待学习
'0': 'warning', // 待审核
'1': 'primary', // 通过(待进厂)
'2': 'danger', // 驳回
'3': 'success', // 已进厂
'4': '', // 已离厂
'5': 'info' // 已取消
}
return statusMap[status.toString()] || 'info'
}
},
}
</script>
<style scoped lang="scss">
//::v-deep .el-button + .el-button{
// margin-left: 0 !important;
//}
::v-deep .el-button {
padding: 5px 8px !important;
}
// 详情弹窗样式
.detail-content {
padding: 10px;
.detail-row {
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
}
.detail-item {
display: flex;
align-items: flex-start;
min-height: 32px;
.detail-label {
font-weight: 600;
color: #606266;
min-width: 90px;
flex-shrink: 0;
}
.detail-value {
color: #303133;
flex: 1;
word-break: break-all;
&.multi-line {
white-space: pre-line;
}
}
// 照片展示样式
&.detail-photos {
align-items: flex-start;
.detail-value {
width: 100%;
}
.photo-list {
display: flex;
flex-wrap: wrap;
gap: 15px;
margin-top: 5px;
.photo-item {
display: flex;
flex-direction: column;
align-items: center;
.photo-wrapper {
position: relative;
width: 120px;
height: 160px;
border-radius: 8px;
overflow: hidden;
.photo-image {
width: 100%;
height: 100%;
border: 2px solid #e4e7ed;
cursor: pointer;
transition: all 0.3s;
&:hover {
border-color: #409eff;
}
::v-deep .el-image__inner {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s;
}
.image-slot {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background: #f5f7fa;
color: #909399;
i {
font-size: 40px;
}
}
}
.photo-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.6);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
opacity: 0;
transition: opacity 0.3s;
pointer-events: none;
i {
font-size: 32px;
color: #fff;
margin-bottom: 8px;
}
span {
color: #fff;
font-size: 14px;
font-weight: 500;
}
}
&:hover {
.photo-overlay {
opacity: 1;
}
.photo-image ::v-deep .el-image__inner {
transform: scale(1.1);
}
}
}
.photo-desc {
margin-top: 8px;
font-size: 12px;
color: #909399;
text-align: center;
max-width: 120px;
word-break: break-all;
}
}
}
}
}
}
.selector {
::v-deep .el-input--suffix .el-input__inner {
height: 28px;
}
::v-deep .el-select .el-input .el-select__caret {
line-height: 28px;
}
::v-deep .el-range-editor.el-input__inner {
height: 28px;
width: 250px
}
::v-deep .el-date-editor .el-range__icon {
line-height: 21px;
}
::v-deep .el-date-editor .el-range-separator {
line-height: 21px;
}
::v-deep .el-date-editor .el-range__close-icon {
line-height: 21px;
}
}
</style>
<style lang="scss">
// 优化图片预览器的关闭按钮样式(全局样式)
.el-image-viewer__wrapper {
.el-image-viewer__close {
width: 50px !important;
height: 50px !important;
font-size: 28px !important;
background: rgba(0, 0, 0, 0.7) !important;
border-radius: 50% !important;
color: #fff !important;
top: 20px !important;
right: 20px !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
transition: all 0.3s !important;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.5) !important;
&:hover {
background: rgba(255, 73, 73, 0.9) !important;
transform: scale(1.1) rotate(90deg) !important;
}
}
// 优化左右切换按钮
.el-image-viewer__prev,
.el-image-viewer__next {
width: 50px !important;
height: 50px !important;
font-size: 28px !important;
background: rgba(0, 0, 0, 0.6) !important;
border-radius: 50% !important;
color: #fff !important;
transition: all 0.3s !important;
&:hover {
background: rgba(64, 158, 255, 0.9) !important;
transform: scale(1.1) !important;
}
}
// 优化操作栏按钮
.el-image-viewer__actions__inner {
background: rgba(0, 0, 0, 0.7) !important;
border-radius: 30px !important;
padding: 10px 20px !important;
i {
color: #fff !important;
font-size: 24px !important;
margin: 0 8px !important;
transition: all 0.3s !important;
&:hover {
color: #409eff !important;
transform: scale(1.2) !important;
}
}
}
// 优化遮罩层
.el-image-viewer__mask {
background: rgba(0, 0, 0, 0.85) !important;
}
}
</style>