样式修改,页面组件修改

master
lzq 2026-01-14 17:19:27 +08:00
parent 3da8974001
commit 8c5159a10f
5 changed files with 620 additions and 37 deletions

View File

@ -0,0 +1,572 @@
// Element Plus
:root {
--custom-radius: 5px;
//
--main-color: #1C6EFF;
--el-color-white: white !important;
--el-color-black: white !important;
--el-color-primary: #1C6EFF !important;
--el-button-hover-bg-color: #458FFF !important;
--el-button-hover-border-color: #458FFF !important;
--el-color-primary-light-3: #458FFF !important;
--el-color-danger: #CF171D !important;
//
// --el-border-color: #E4E4E7 !important; // DCDFE6
//
--el-font-weight-primary: 400 !important;
--el-component-custom-height: 32px !important;
--el-component-size: var(--el-component-custom-height) !important;
// ...
--el-border-radius-base: calc(var(--custom-radius) / 3 + 2px) !important;
--el-border-radius-small: calc(var(--custom-radius) / 3 + 4px) !important;
--el-messagebox-border-radius: calc(var(--custom-radius) / 3 + 4px) !important;
--el-popover-border-radius: calc(var(--custom-radius) / 3 + 4px) !important;
.region .el-radio-button__original-radio:checked + .el-radio-button__inner {
color: var(--theme-color);
}
}
// el-form-item
.el-form-item__label {
height: var(--el-component-custom-height) !important;
line-height: var(--el-component-custom-height) !important;
}
//
.el-date-range-picker {
--el-datepicker-inrange-bg-color: var(--art-gray-200) !important;
}
// el-card
html.dark .el-card {
--el-card-bg-color: var(--default-box-color) !important;
}
.el-pagination {
justify-content: center;
.el-pager {
li {
box-sizing: border-box;
font-weight: 400 !important;
border: 1px solid #E6EAEB;
transition: border-color 0.15s;
padding: 0 10px !important;
&:not(.is-active) {
background-color: transparent !important;
}
&:hover {
border-color: var(--main-color) !important;
}
}
}
.el-pagination__jump {
.el-input {
height: 32px;
}
}
}
//
.el-menu.el-menu--inline {
transition: max-height 0.26s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.el-sub-menu {
position: relative;
}
.el-sub-menu .el-sub-menu__icon-arrow {
position: absolute;
top: 50%;
right: var(--el-menu-base-level-padding);
margin-top: -6px;
transition: transform var(--el-transition-duration);
font-size: 12px;
margin-right: 0;
display: block;
width: auto;
}
// item hover
.el-sub-menu__title,
.el-menu-item {
height: 42px !important;
margin-bottom: 4px;
line-height: 42px !important;
transition: background-color 0s !important;
width: calc(100% - 16px);
margin-left: 8px;
border-radius: 6px;
&:hover {
background-color: #F2F4F5 !important;
}
}
.menus:not(.el-menu--collapse) {
width: 230px !important;
}
.el-menu--collapse {
width: calc(16px + var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2) !important;
}
.el-menu-item.is-active {
background-color: rgb(238, 243, 255) !important;
}
// -------------------------------- el-size=default start --------------------------------
// el-button
.el-button--default {
height: var(--el-component-custom-height) !important;
}
// circle
.el-button--default.is-circle {
width: var(--el-component-custom-height) !important;
}
// el-select
.el-select--default {
.el-select__wrapper {
min-height: var(--el-component-custom-height) !important;
}
}
// el-checkbox-button
.el-checkbox-button--default .el-checkbox-button__inner,
// el-radio-button
.el-radio-button--default .el-radio-button__inner {
padding: 10px 15px !important;
}
.el-scrollbar__bar.is-vertical {
width: 4px;
}
// -------------------------------- el-size=default end --------------------------------
.el-pagination.is-background .btn-next,
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .el-pager li {
border-radius: 6px;
}
.el-popover {
min-width: 80px;
border-radius: var(--el-border-radius-small) !important;
}
.el-dialog {
border-radius: 100px !important;
border-radius: calc(var(--custom-radius) / 1.2 + 2px) !important;
overflow: hidden;
}
.el-dialog__header {
.el-dialog__title {
font-size: 16px;
}
}
.el-dialog__body {
padding: 25px 0 !important;
position: relative; // el-pagination relative el-pagination el-pagination__jump--small el-pagination__jump--small URL_ADDRESS.com/element-plus/element-plus/issues/5684#issuecomment-1176299275;
}
.el-dialog.el-dialog-border {
.el-dialog__body {
//
&::before,
//
&::after {
content: '';
position: absolute;
left: -16px;
width: calc(100% + 32px);
height: 1px;
background-color: var(--art-gray-300);
}
&::before {
top: 0;
}
&::after {
bottom: 0;
}
}
}
// el-message
.el-message {
background-color: var(--default-box-color) !important;
border: 0 !important;
box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05) !important;
p {
font-size: 13px;
}
}
// el-dropdown
.el-dropdown-menu {
padding: 6px !important;
border-radius: 10px !important;
border: none !important;
.el-dropdown-menu__item {
padding: 6px 16px !important;
border-radius: 6px !important;
&:hover:not(.is-disabled) {
color: var(--art-gray-900) !important;
background-color: var(--art-el-active-color) !important;
}
&:focus:not(.is-disabled) {
color: var(--art-gray-900) !important;
background-color: var(--art-gray-200) !important;
}
}
}
// selectdropdown
.el-select__popper,
.el-dropdown__popper {
margin-top: -6px !important;
.el-popper__arrow {
display: none;
}
}
.el-dropdown-selfdefine:focus {
outline: none !important;
}
//
@media screen and (max-width: 640px) {
.el-message-box,
.el-dialog {
width: calc(100% - 24px) !important;
}
.el-date-picker.has-sidebar.has-time {
width: calc(100% - 24px);
left: 12px !important;
}
.el-picker-panel *[slot='sidebar'],
.el-picker-panel__sidebar {
display: none;
}
.el-picker-panel *[slot='sidebar'] + .el-picker-panel__body,
.el-picker-panel__sidebar + .el-picker-panel__body {
margin-left: 0;
}
}
// el-button
.el-button {
&.el-button--text {
background-color: transparent !important;
padding: 0 !important;
span {
margin-left: 0 !important;
}
}
}
// el-tag
.el-tag {
font-weight: 500;
transition: all 0s !important;
&.el-tag--default {
height: 26px !important;
}
}
.el-checkbox-group {
&.el-table-filter__checkbox-group label.el-checkbox {
height: 17px !important;
.el-checkbox__label {
font-weight: 400 !important;
}
}
}
.el-radio--default {
//
.el-radio__input {
.el-radio__inner {
width: 16px;
height: 16px;
&::after {
width: 6px;
height: 6px;
}
}
}
}
.el-checkbox {
.el-checkbox__inner {
border-radius: 2px !important;
}
}
//
.el-checkbox--default {
.el-checkbox__inner {
width: 16px !important;
height: 16px !important;
border-radius: 4px !important;
&::before {
content: '';
height: 4px !important;
top: 5px !important;
background-color: #FFFFFF !important;
transform: scale(0.6) !important;
}
}
.is-checked {
.el-checkbox__inner {
&::after {
width: 3px;
height: 8px;
margin: auto;
border: 2px solid var(--el-checkbox-checked-icon-color);
border-left: 0;
border-top: 0;
transform: translate(-45%, -60%) rotate(45deg) scale(0.86) !important;
transform-origin: center;
}
}
}
}
.el-notification .el-notification__icon {
font-size: 22px !important;
}
// el-message-box
.el-message-box__headerbtn .el-message-box__close,
.el-dialog__headerbtn .el-dialog__close {
top: 7px;
right: 7px;
width: 30px;
height: 30px;
border-radius: 5px;
transition: all 0.3s;
&:hover {
background-color: var(--art-hover-color) !important;
color: var(--art-gray-900) !important;
}
}
.el-message-box {
padding: 25px 20px !important;
}
.el-message-box__title {
font-weight: 500 !important;
}
.el-table__column-filter-trigger i {
color: var(--theme-color) !important;
margin: -3px 0 0 2px;
}
// el-dropdown
.el-tooltip__trigger:focus-visible {
outline: unset;
}
// ipad
@media screen and (max-width: 1180px) {
.el-table-fixed-column--right {
padding-right: 0 !important;
}
}
.login-out-dialog {
padding: 30px 20px !important;
border-radius: 10px !important;
}
// dialog
.dialog-fade-enter-active {
.el-dialog:not(.is-draggable) {
animation: dialog-open 0.3s cubic-bezier(0.32, 0.14, 0.15, 0.86);
// el-dialog
.el-select__selected-item {
display: inline-block;
}
}
}
.dialog-fade-leave-active {
animation: fade-out 0.2s linear;
.el-dialog:not(.is-draggable) {
animation: dialog-close 0.5s !important;
}
}
@keyframes dialog-open {
0% {
opacity: 0;
transform: scale(0.2);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes dialog-close {
0% {
opacity: 1;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(0.2);
}
}
//
@keyframes fade-out {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
// el-select
/* .el-select__popper:not(.el-tree-select__popper) {
.el-select-dropdown__list {
padding: 5px !important;
.el-select-dropdown__item {
height: 34px !important;
line-height: 34px !important;
border-radius: 6px !important;
&.is-selected {
color: var(--art-gray-900) !important;
font-weight: 400 !important;
background-color: var(--art-el-active-color) !important;
margin-bottom: 4px !important;
}
&:hover {
background-color: var(--art-hover-color) !important;
}
}
.el-select-dropdown__item:hover ~ .is-selected,
.el-select-dropdown__item.is-selected:has(~ .el-select-dropdown__item:hover) {
background-color: transparent !important;
}
}
} */
// el-tree-select
.el-tree-select__popper {
.el-select-dropdown__list {
padding: 5px !important;
.el-tree-node {
.el-tree-node__content {
height: 36px !important;
border-radius: 6px !important;
&:hover {
background-color: var(--art-gray-200) !important;
}
}
}
}
}
//
.el-button > span {
position: relative;
z-index: 10;
}
//
.el-color-picker__color {
border-radius: 2px !important;
}
//
.el-picker-panel {
.el-picker-panel__footer {
border-radius: 0 0 var(--el-border-radius-base) var(--el-border-radius-base);
}
}
//
.el-tree-node__content {
border-radius: 4px;
margin-bottom: 4px;
padding: 1px 0;
&:hover {
background-color: var(--art-hover-color) !important;
}
}
.dark {
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
background-color: var(--art-gray-300) !important;
}
}
// hover
.menu-left-popper:focus-within,
.horizontal-menu-popper:focus-within {
box-shadow: none !important;
outline: none !important;
}
//
.el-input-number--default.is-controls-right {
.el-input-number__decrease,
.el-input-number__increase {
height: calc((var(--el-component-size) / 2)) !important;
}
}

View File

@ -58,6 +58,7 @@ const props = withDefaults(
searchFormProps?: FormPropsType searchFormProps?: FormPropsType
simpleSearchFormProps?: FormPropsType simpleSearchFormProps?: FormPropsType
formStyle?: { formStyle?: {
border: boolean
colCount?: number colCount?: number
vgap?: string vgap?: string
hgap?: string hgap?: string
@ -71,14 +72,19 @@ const props = withDefaults(
}, },
// @ts-ignore // @ts-ignore
searchFormProps: { searchFormProps: {
labelPosition: 'left',
labelWidth: '90px',
inline: true, inline: true,
} as FormPropsType, } as FormPropsType,
// @ts-ignore // @ts-ignore
simpleSearchFormProps: { simpleSearchFormProps: {
labelWidth: '90px',
labelPosition: 'left',
inline: true, inline: true,
} as FormPropsType, } as FormPropsType,
formStyle: { formStyle: {
// @ts-ignore // @ts-ignore
border: false,
colCount: 4, colCount: 4,
vgap: '20px', vgap: '20px',
hgap: '20px', hgap: '20px',
@ -148,7 +154,7 @@ onMounted(doSearch)
<Page class="form-page"> <Page class="form-page">
<div v-show="showSearchForm" class="search-form"> <div v-show="showSearchForm" class="search-form">
<ElScrollbar> <ElScrollbar>
<ElForm v-bind="searchFormProps" @submit.prevent="doSearch"> <ElForm :class="{'border-form':formStyle.border}" v-bind="searchFormProps" @submit.prevent="doSearch">
<slot :searchForm="searchForm" name="searchFormItem"/> <slot :searchForm="searchForm" name="searchFormItem"/>
<ElFormItem class="form-action-btn"> <ElFormItem class="form-action-btn">
@ -325,21 +331,14 @@ onMounted(doSearch)
width 100%; width 100%;
} }
:deep(.el-form) {
display grid
grid-template-columns repeat(v-bind('formStyle.colCount'), 1fr)
grid-auto-flow: dense;
column-gap v-bind('formStyle.hgap');
row-gap v-bind('formStyle.vgap');
padding 5px
.el-form-item:not(.form-action-btn) { .border-form {
:deep(.el-form-item) {
&:not(.form-action-btn) {
background-color white background-color white
//border 1px solid #DCDFE6
border-radius: var(--el-input-border-radius, var(--el-border-radius-base)); border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)); box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color));
padding: 1px; padding: 1px;
margin 0
.el-form-item__label { .el-form-item__label {
border-right 1px solid #DCDFE6 border-right 1px solid #DCDFE6
@ -363,10 +362,23 @@ onMounted(doSearch)
} }
} }
}
}
:deep(.el-form) {
display grid
grid-template-columns repeat(v-bind('formStyle.colCount'), 1fr)
grid-auto-flow: dense;
column-gap v-bind('formStyle.hgap');
row-gap v-bind('formStyle.vgap');
padding 5px
.el-form-item {
margin 0
}
.el-form-item.form-action-btn { .el-form-item.form-action-btn {
grid-column: 1 / -1; grid-column: 1 / -1;
margin: 0;
.el-form-item__content { .el-form-item__content {
justify-content end justify-content end
} }

View File

@ -1,4 +1,4 @@
import '@/assets/scss/index.scss' import '@/assets/stylus/index.styl'
import { createApp } from 'vue' import { createApp } from 'vue'
import App from './App.vue' import App from './App.vue'
import { Settings } from 'luxon' import { Settings } from 'luxon'
@ -8,7 +8,6 @@ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
// import Ws from '@/common/ws/ws.ts' // import Ws from '@/common/ws/ws.ts'
import element from '@/common/element/element.ts' import element from '@/common/element/element.ts'
import router from '@/common/router' import router from '@/common/router'
// import '@/assets/css/index.css'
createApp(App) createApp(App)
.use(element) .use(element)

View File

@ -6,12 +6,12 @@
:paging="paging"> :paging="paging">
<template #searchFormItem="{searchForm}"> <template #searchFormItem="{searchForm}">
<ElFormItem label="身份类型"> <ElFormItem label="身份类型">
<el-select style="width: 200px" v-model="searchForm.identityCategory" placeholder="身份类型"> <el-select v-model="searchForm.identityCategory" placeholder="身份类型">
<el-option v-for="item in bizList" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in bizList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</ElFormItem> </ElFormItem>
<ElFormItem label="结算方式"> <ElFormItem label="结算方式">
<el-select v-model="searchForm.settlementWay" placeholder="结算方式" style="width: 200px"> <el-select v-model="searchForm.settlementWay" placeholder="结算方式">
<el-option v-for="item in payList" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in payList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</ElFormItem> </ElFormItem>

View File

@ -37,7 +37,7 @@ export default defineConfig((configEnv) => {
modules: { modules: {
localsConvention: 'camelCase', localsConvention: 'camelCase',
}, },
preprocessorOptions: { /* preprocessorOptions: {
scss: { scss: {
additionalData: ` additionalData: `
@use "@/assets/scss/el-ui.scss" as *; @use "@/assets/scss/el-ui.scss" as *;
@ -45,7 +45,7 @@ export default defineConfig((configEnv) => {
@use "@/assets/scss/mixin.scss" as *; @use "@/assets/scss/mixin.scss" as *;
`, `,
}, },
}, }, */
}, },
plugins: [ plugins: [
vue(), vue(),
@ -53,7 +53,7 @@ export default defineConfig((configEnv) => {
VueDevTools(), VueDevTools(),
ElementPlus({ ElementPlus({
defaultLocale: 'zh-cn', defaultLocale: 'zh-cn',
useSource: true, // useSource: true,
}), }),
AutoImport({ AutoImport({
imports: [ 'vue', 'vue-router', 'pinia' ], imports: [ 'vue', 'vue-router', 'pinia' ],