mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-11-03 00:10:38 +00:00
improve: 代码格式整理
This commit is contained in:
parent
24be666950
commit
636c3fa6b7
@ -84,4 +84,4 @@ export function exportmberCardList(id) {
|
||||
url: `/export/member_card/${id}`,
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,10 +71,10 @@ export function crudDownload(id) {
|
||||
/**
|
||||
* @description 代码生成 - 文件编辑
|
||||
*/
|
||||
export function crudSaveFile(id,data) {
|
||||
export function crudSaveFile(id, data) {
|
||||
return request({
|
||||
url: `/system/crud/save_file/${id}`,
|
||||
method: 'post',
|
||||
data
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
@ -16,8 +16,7 @@
|
||||
document.write(
|
||||
'<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>',
|
||||
);
|
||||
} catch (a) {
|
||||
}
|
||||
} catch (a) {}
|
||||
}
|
||||
function t() {
|
||||
o || ((o = !0), h());
|
||||
|
||||
@ -62,7 +62,6 @@
|
||||
<span v-else-if="row.user_type === 'h5'">H5</span>
|
||||
<span v-else-if="row.user_type === 'pc'">PC</span>
|
||||
<span v-else>--</span>
|
||||
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="sex">
|
||||
<span v-show="row.sex === 1">男</span>
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
import uploadPictures from '@/components/uploadPictures';
|
||||
export default {
|
||||
name: 'c_upload_img',
|
||||
@ -105,7 +105,7 @@ export default {
|
||||
'test-dialog',
|
||||
function (editor, uiName) {
|
||||
let dialog = new window.UE.ui.Dialog({
|
||||
iframeUrl: settings.routePre +'/widget.images/index.html?fodder=dialog',
|
||||
iframeUrl: settings.routePre + '/widget.images/index.html?fodder=dialog',
|
||||
editor: editor,
|
||||
name: uiName,
|
||||
title: '上传图片',
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
import linkaddress from '@/components/linkaddress';
|
||||
|
||||
import uploadPictures from '@/components/uploadPictures';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
|
||||
import vuedraggable from 'vuedraggable';
|
||||
export default {
|
||||
|
||||
@ -86,7 +86,6 @@ export default {
|
||||
.full-screen-btn-con .ivu-tooltip-rel i {
|
||||
font-size: 20px !important;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
|
||||
}
|
||||
.full-screen-btn-con .ivu-tooltip-rel {
|
||||
height: 50px;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.header-l{
|
||||
.header-l {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@ -5,11 +5,7 @@
|
||||
<!-- <span class="i-layout-header-trigger" @click="handleReload">
|
||||
<Icon type="ios-refresh" color='#fff' />
|
||||
</span> -->
|
||||
<custom-bread-crumb
|
||||
show-icon
|
||||
:list="breadCrumbList"
|
||||
:listLast="crumbPast"
|
||||
></custom-bread-crumb>
|
||||
<custom-bread-crumb show-icon :list="breadCrumbList" :listLast="crumbPast"></custom-bread-crumb>
|
||||
</div>
|
||||
|
||||
<div class="custom-content-con">
|
||||
|
||||
@ -7,14 +7,16 @@
|
||||
.side-menu-wrapper {
|
||||
user-select: none;
|
||||
height: 100%;
|
||||
::-webkit-scrollbar{width:0;}
|
||||
::-webkit-scrollbar {
|
||||
width: 0;
|
||||
}
|
||||
-ms-overflow-style: none;
|
||||
.menu-collapsed {
|
||||
height: 100%;
|
||||
background-color: @side-dark-theme;
|
||||
color: #fff !important;
|
||||
overflow-y: scroll;
|
||||
|
||||
|
||||
.ivu-dropdown {
|
||||
width: 100%;
|
||||
.ivu-dropdown-rel a {
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
</template>
|
||||
</Menu>
|
||||
</div>
|
||||
<div class="child-menu" v-if="sider.length">
|
||||
<div class="child-menu" v-if="sider.length">
|
||||
<div class="cat-name">{{ oneMenuName }}</div>
|
||||
<Menu
|
||||
ref="childMenu"
|
||||
@ -353,7 +353,7 @@ export default {
|
||||
.child-menu {
|
||||
z-index: 9;
|
||||
box-shadow: 2px 0px 4px 0px rgba(0, 0, 0, 0.06);
|
||||
transition: width .2s ease .2s;
|
||||
transition: width 0.2s ease 0.2s;
|
||||
overflow: hidden;
|
||||
.child-menus {
|
||||
width: @side-child-width !important;
|
||||
|
||||
@ -55,8 +55,8 @@
|
||||
}
|
||||
&.right-btn {
|
||||
right: 40px;
|
||||
border-right: 1px solid #f0f0f0;
|
||||
border-left: 1px solid #f0f0f0;
|
||||
border-right: 1px solid #f0f0f0;
|
||||
border-left: 1px solid #f0f0f0;
|
||||
}
|
||||
}
|
||||
.scroll-outer {
|
||||
@ -77,7 +77,7 @@
|
||||
.ivu-tag-dot-inner {
|
||||
transition: background 0.2s ease;
|
||||
}
|
||||
.ivu-tag-dot{
|
||||
.ivu-tag-dot {
|
||||
border: none !important;
|
||||
border-right: 1px solid #f2f2f2 !important;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
line-height: @bar-height;
|
||||
}
|
||||
.main-layout-con {
|
||||
height: calc(~"100vh - 60px");
|
||||
height: calc(~'100vh - 60px');
|
||||
overflow: hidden;
|
||||
}
|
||||
.main-content-con {
|
||||
@ -78,4 +78,4 @@
|
||||
|
||||
.dro-style {
|
||||
// padding: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ import vuedraggable from 'vuedraggable';
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
import uploadPictures from '@/components/uploadPictures';
|
||||
import { wechatNewsAddApi, wechatNewsInfotApi } from '@/api/app';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
export default {
|
||||
name: 'c_hot_imgs',
|
||||
props: {
|
||||
@ -153,7 +153,7 @@ export default {
|
||||
'test-dialog',
|
||||
function (editor, uiName) {
|
||||
let dialog = new window.UE.ui.Dialog({
|
||||
iframeUrl: settings.routePre +'/widget.images/index.html?fodder=dialog',
|
||||
iframeUrl: settings.routePre + '/widget.images/index.html?fodder=dialog',
|
||||
editor: editor,
|
||||
name: uiName,
|
||||
title: '上传图片',
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
import vuedraggable from 'vuedraggable';
|
||||
import uploadPictures from '@/components/uploadPictures';
|
||||
import linkaddress from '@/components/linkaddress';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
export default {
|
||||
name: 'c_menu_list',
|
||||
props: {
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
<script>
|
||||
import { mapState } from 'vuex';
|
||||
import uploadPictures from '@/components/uploadPictures';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
export default {
|
||||
name: 'c_upload_img',
|
||||
components: {
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<Button type="warning" :loading="modal_loading" @click="ok">确定</Button>
|
||||
<Button type="primary" @click="cancel">取消</Button>
|
||||
</div>
|
||||
</Modal>
|
||||
</Modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@ -18,8 +18,8 @@
|
||||
</Col>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row type="flex" v-show="$route.path === routePre+'/app/wechat/news_category/index'">
|
||||
<router-link :to="routePre+'/app/wechat/news_category/save/0'">
|
||||
<Row type="flex" v-show="$route.path === routePre + '/app/wechat/news_category/index'">
|
||||
<router-link :to="routePre + '/app/wechat/news_category/save/0'">
|
||||
<Button type="primary" class="bnt" icon="md-add">添加图文消息</Button>
|
||||
</router-link>
|
||||
</Row>
|
||||
@ -94,7 +94,7 @@
|
||||
import vueWaterfallEasy from 'vue-waterfall-easy';
|
||||
import { wechatNewsListApi } from '@/api/app';
|
||||
import { mapState } from 'vuex';
|
||||
import settings from '@/setting'
|
||||
import settings from '@/setting';
|
||||
export default {
|
||||
name: 'newsCategory',
|
||||
props: {
|
||||
@ -134,7 +134,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
routePre: settings.routePre ,
|
||||
routePre: settings.routePre,
|
||||
isDel: false,
|
||||
imgsArr: [],
|
||||
group: 0, // 当前加载的加载图片的次数
|
||||
|
||||
@ -68,7 +68,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
routePro:this.$routeProStr,
|
||||
routePro: this.$routeProStr,
|
||||
currentTab: '',
|
||||
grid: {
|
||||
xl: 8,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
* @Author: From-wh from-wh@hotmail.com
|
||||
* @Date: 2023-03-09 18:02:23
|
||||
* @FilePath: /admin/src/i18n/index.js
|
||||
* @Description:
|
||||
* @Description:
|
||||
*/
|
||||
import Vue from 'vue';
|
||||
import VueI18n from 'vue-i18n';
|
||||
|
||||
@ -1,159 +1,160 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
router: {
|
||||
home: 'home',
|
||||
system: 'system',
|
||||
systemMenu: 'systemMenu',
|
||||
systemUser: 'systemUser',
|
||||
limits: 'limits',
|
||||
limitsFrontEnd: 'FrontEnd',
|
||||
limitsFrontEndPage: 'FrontEndPage',
|
||||
limitsFrontEndBtn: 'FrontEndBtn',
|
||||
limitsBackEnd: 'BackEnd',
|
||||
limitsBackEndEndPage: 'BackEndEndPage',
|
||||
menu: 'menu',
|
||||
menu1: 'menu1',
|
||||
menu11: 'menu11',
|
||||
menu12: 'menu12',
|
||||
menu121: 'menu121',
|
||||
menu122: 'menu122',
|
||||
menu13: 'menu13',
|
||||
menu2: 'menu2',
|
||||
funIndex: 'function',
|
||||
funTagsView: 'funTagsView',
|
||||
funSignCanvas: 'Online signature',
|
||||
funCountup: 'countup',
|
||||
funEchartsTree: 'echartsTree',
|
||||
funSelector: 'funSelector',
|
||||
funWangEditor: 'wangEditor',
|
||||
funCropper: 'cropper',
|
||||
funMindMap: 'G6 MindMap',
|
||||
funQrcode: 'qrcode',
|
||||
funEchartsMap: 'EchartsMap',
|
||||
funPrintJs: 'PrintJs',
|
||||
funClipboard: 'Copy cut',
|
||||
funScreenShort: 'screenCapture',
|
||||
pagesIndex: 'pages',
|
||||
pagesFiltering: 'Filtering',
|
||||
pagesFilteringDetails: 'FilteringDetails',
|
||||
pagesFilteringDetails1: 'FilteringDetails1',
|
||||
pagesIocnfont: 'iconfont icon',
|
||||
pagesElement: 'element icon',
|
||||
pagesAwesome: 'awesome icon',
|
||||
pagesCityLinkage: 'CityLinkage',
|
||||
pagesFormAdapt: 'FormAdapt',
|
||||
pagesListAdapt: 'ListAdapt',
|
||||
pagesWaterfall: 'Waterfall',
|
||||
pagesSteps: 'Steps',
|
||||
chartIndex: 'chartIndex',
|
||||
personal: 'personal',
|
||||
tools: 'tools',
|
||||
layoutLinkView: 'LinkView',
|
||||
layoutIfameView: 'IfameView',
|
||||
},
|
||||
staticRoutes: {
|
||||
signIn: 'signIn',
|
||||
notFound: 'notFound',
|
||||
noPower: 'noPower',
|
||||
},
|
||||
user: {
|
||||
title0: 'Component size',
|
||||
title1: 'Language switching',
|
||||
title2: 'Menu search',
|
||||
title3: 'Layout configuration',
|
||||
title4: 'news',
|
||||
title5: 'Full screen on',
|
||||
title6: 'Full screen off',
|
||||
dropdownDefault: 'default',
|
||||
dropdownMedium: 'medium',
|
||||
dropdownSmall: 'small',
|
||||
dropdownMini: 'mini',
|
||||
dropdown1: 'home page',
|
||||
dropdown2: 'Personal Center',
|
||||
dropdown3: '404',
|
||||
dropdown4: '401',
|
||||
dropdown5: 'Log out',
|
||||
dropdown6: 'Code warehouse',
|
||||
searchPlaceholder: 'Menu search: support Chinese, routing path',
|
||||
newTitle: 'notice',
|
||||
newBtn: 'All read',
|
||||
newGo: 'Go to the notification center',
|
||||
newDesc: 'No notice',
|
||||
logOutTitle: 'Tips',
|
||||
logOutMessage: 'This operation will log out. Do you want to continue?',
|
||||
logOutConfirm: 'determine',
|
||||
logOutCancel: 'cancel',
|
||||
logOutExit: 'Exiting',
|
||||
logOutSuccess: 'Exit successfully!',
|
||||
},
|
||||
tagsView: {
|
||||
refresh: 'refresh',
|
||||
close: 'close',
|
||||
closeOther: 'closeOther',
|
||||
closeAll: 'closeAll',
|
||||
fullscreen: 'fullscreen',
|
||||
},
|
||||
notFound: {
|
||||
foundTitle: 'Wrong address input, please re-enter the address~',
|
||||
foundMsg: 'You can check the web address first, and then re-enter or give us feedback.',
|
||||
foundBtn: 'Back to home page',
|
||||
},
|
||||
layout: {
|
||||
configTitle: 'Layout configuration',
|
||||
oneTitle: 'Global Themes',
|
||||
menuBag: 'Menu BG Color',
|
||||
twoTitle: 'Menu / top bar',
|
||||
twoTopBar: 'Top bar background',
|
||||
twoMenuBar: 'Menu background',
|
||||
twoColumnsMenuBar: 'Column menu background',
|
||||
twoTopBarColor: 'Top bar default font color',
|
||||
twoMenuBarColor: 'Menu default font color',
|
||||
twoColumnsMenuBarColor: 'Default font color bar menu',
|
||||
twoIsTopBarColorGradual: 'Top bar gradient',
|
||||
twoIsMenuBarColorGradual: 'Menu gradient',
|
||||
twoIsMenuBarColorHighlight: 'Menu font highlight',
|
||||
threeTitle: 'Interface settings',
|
||||
threeIsCollapse: 'Menu horizontal collapse',
|
||||
threeIsUniqueOpened: 'Menu accordion',
|
||||
threeIsFixedHeader: 'Fixed header',
|
||||
threeIsClassicSplitMenu: 'Classic layout split menu',
|
||||
threeIsLockScreen: 'Open the lock screen',
|
||||
threeLockScreenTime: 'screen locking(s/s)',
|
||||
fourTitle: 'Interface display',
|
||||
fourIsShowLogo: 'Sidebar logo',
|
||||
fourIsBreadcrumb: 'Open breadcrumb',
|
||||
fourIsBreadcrumbIcon: 'Open breadcrumb icon',
|
||||
fourIsTagsview: 'Open tagsview',
|
||||
fourIsTagsviewIcon: 'Open tagsview Icon',
|
||||
fourIsFooter: 'Open footer',
|
||||
fourIsGrayscale: 'Grey model',
|
||||
fourIsInvert: 'Color weak mode',
|
||||
fourIsDark: 'Dark Mode',
|
||||
fourIsWartermark: 'Turn on watermark',
|
||||
fourWartermarkText: 'Watermark copy',
|
||||
fiveTitle: 'Other settings',
|
||||
fiveTagsStyle: 'Tagsview style',
|
||||
themeStyle: 'Theme',
|
||||
fiveAnimation: 'page animation',
|
||||
fiveColumnsAsideStyle: 'Column style',
|
||||
fiveColumnsAsideLayout: 'Column layout',
|
||||
sixTitle: 'Layout switch',
|
||||
sixDefaults: 'One',
|
||||
sixClassic: 'Two',
|
||||
sixTransverse: 'Three',
|
||||
sixColumns: 'Four',
|
||||
tipText: 'Click the button below to copy the layout configuration to `/src/store/modules/themeConfig.js` It has been modified in.',
|
||||
copyText: 'replication configuration',
|
||||
resetText: 'restore default',
|
||||
copyTextSuccess: 'Copy succeeded!',
|
||||
copyTextError: 'Copy failed!',
|
||||
},
|
||||
upgrade: {
|
||||
title: 'New version',
|
||||
msg: 'The new version is available, please update it now! Dont worry, the update is fast!',
|
||||
desc: 'Prompt: Update will restore the default configuration',
|
||||
btnOne: 'Cruel refusal',
|
||||
btnTwo: 'Update now',
|
||||
btnTwoLoading: 'Updating',
|
||||
},
|
||||
router: {
|
||||
home: 'home',
|
||||
system: 'system',
|
||||
systemMenu: 'systemMenu',
|
||||
systemUser: 'systemUser',
|
||||
limits: 'limits',
|
||||
limitsFrontEnd: 'FrontEnd',
|
||||
limitsFrontEndPage: 'FrontEndPage',
|
||||
limitsFrontEndBtn: 'FrontEndBtn',
|
||||
limitsBackEnd: 'BackEnd',
|
||||
limitsBackEndEndPage: 'BackEndEndPage',
|
||||
menu: 'menu',
|
||||
menu1: 'menu1',
|
||||
menu11: 'menu11',
|
||||
menu12: 'menu12',
|
||||
menu121: 'menu121',
|
||||
menu122: 'menu122',
|
||||
menu13: 'menu13',
|
||||
menu2: 'menu2',
|
||||
funIndex: 'function',
|
||||
funTagsView: 'funTagsView',
|
||||
funSignCanvas: 'Online signature',
|
||||
funCountup: 'countup',
|
||||
funEchartsTree: 'echartsTree',
|
||||
funSelector: 'funSelector',
|
||||
funWangEditor: 'wangEditor',
|
||||
funCropper: 'cropper',
|
||||
funMindMap: 'G6 MindMap',
|
||||
funQrcode: 'qrcode',
|
||||
funEchartsMap: 'EchartsMap',
|
||||
funPrintJs: 'PrintJs',
|
||||
funClipboard: 'Copy cut',
|
||||
funScreenShort: 'screenCapture',
|
||||
pagesIndex: 'pages',
|
||||
pagesFiltering: 'Filtering',
|
||||
pagesFilteringDetails: 'FilteringDetails',
|
||||
pagesFilteringDetails1: 'FilteringDetails1',
|
||||
pagesIocnfont: 'iconfont icon',
|
||||
pagesElement: 'element icon',
|
||||
pagesAwesome: 'awesome icon',
|
||||
pagesCityLinkage: 'CityLinkage',
|
||||
pagesFormAdapt: 'FormAdapt',
|
||||
pagesListAdapt: 'ListAdapt',
|
||||
pagesWaterfall: 'Waterfall',
|
||||
pagesSteps: 'Steps',
|
||||
chartIndex: 'chartIndex',
|
||||
personal: 'personal',
|
||||
tools: 'tools',
|
||||
layoutLinkView: 'LinkView',
|
||||
layoutIfameView: 'IfameView',
|
||||
},
|
||||
staticRoutes: {
|
||||
signIn: 'signIn',
|
||||
notFound: 'notFound',
|
||||
noPower: 'noPower',
|
||||
},
|
||||
user: {
|
||||
title0: 'Component size',
|
||||
title1: 'Language switching',
|
||||
title2: 'Menu search',
|
||||
title3: 'Layout configuration',
|
||||
title4: 'news',
|
||||
title5: 'Full screen on',
|
||||
title6: 'Full screen off',
|
||||
dropdownDefault: 'default',
|
||||
dropdownMedium: 'medium',
|
||||
dropdownSmall: 'small',
|
||||
dropdownMini: 'mini',
|
||||
dropdown1: 'home page',
|
||||
dropdown2: 'Personal Center',
|
||||
dropdown3: '404',
|
||||
dropdown4: '401',
|
||||
dropdown5: 'Log out',
|
||||
dropdown6: 'Code warehouse',
|
||||
searchPlaceholder: 'Menu search: support Chinese, routing path',
|
||||
newTitle: 'notice',
|
||||
newBtn: 'All read',
|
||||
newGo: 'Go to the notification center',
|
||||
newDesc: 'No notice',
|
||||
logOutTitle: 'Tips',
|
||||
logOutMessage: 'This operation will log out. Do you want to continue?',
|
||||
logOutConfirm: 'determine',
|
||||
logOutCancel: 'cancel',
|
||||
logOutExit: 'Exiting',
|
||||
logOutSuccess: 'Exit successfully!',
|
||||
},
|
||||
tagsView: {
|
||||
refresh: 'refresh',
|
||||
close: 'close',
|
||||
closeOther: 'closeOther',
|
||||
closeAll: 'closeAll',
|
||||
fullscreen: 'fullscreen',
|
||||
},
|
||||
notFound: {
|
||||
foundTitle: 'Wrong address input, please re-enter the address~',
|
||||
foundMsg: 'You can check the web address first, and then re-enter or give us feedback.',
|
||||
foundBtn: 'Back to home page',
|
||||
},
|
||||
layout: {
|
||||
configTitle: 'Layout configuration',
|
||||
oneTitle: 'Global Themes',
|
||||
menuBag: 'Menu BG Color',
|
||||
twoTitle: 'Menu / top bar',
|
||||
twoTopBar: 'Top bar background',
|
||||
twoMenuBar: 'Menu background',
|
||||
twoColumnsMenuBar: 'Column menu background',
|
||||
twoTopBarColor: 'Top bar default font color',
|
||||
twoMenuBarColor: 'Menu default font color',
|
||||
twoColumnsMenuBarColor: 'Default font color bar menu',
|
||||
twoIsTopBarColorGradual: 'Top bar gradient',
|
||||
twoIsMenuBarColorGradual: 'Menu gradient',
|
||||
twoIsMenuBarColorHighlight: 'Menu font highlight',
|
||||
threeTitle: 'Interface settings',
|
||||
threeIsCollapse: 'Menu horizontal collapse',
|
||||
threeIsUniqueOpened: 'Menu accordion',
|
||||
threeIsFixedHeader: 'Fixed header',
|
||||
threeIsClassicSplitMenu: 'Classic layout split menu',
|
||||
threeIsLockScreen: 'Open the lock screen',
|
||||
threeLockScreenTime: 'screen locking(s/s)',
|
||||
fourTitle: 'Interface display',
|
||||
fourIsShowLogo: 'Sidebar logo',
|
||||
fourIsBreadcrumb: 'Open breadcrumb',
|
||||
fourIsBreadcrumbIcon: 'Open breadcrumb icon',
|
||||
fourIsTagsview: 'Open tagsview',
|
||||
fourIsTagsviewIcon: 'Open tagsview Icon',
|
||||
fourIsFooter: 'Open footer',
|
||||
fourIsGrayscale: 'Grey model',
|
||||
fourIsInvert: 'Color weak mode',
|
||||
fourIsDark: 'Dark Mode',
|
||||
fourIsWartermark: 'Turn on watermark',
|
||||
fourWartermarkText: 'Watermark copy',
|
||||
fiveTitle: 'Other settings',
|
||||
fiveTagsStyle: 'Tagsview style',
|
||||
themeStyle: 'Theme',
|
||||
fiveAnimation: 'page animation',
|
||||
fiveColumnsAsideStyle: 'Column style',
|
||||
fiveColumnsAsideLayout: 'Column layout',
|
||||
sixTitle: 'Layout switch',
|
||||
sixDefaults: 'One',
|
||||
sixClassic: 'Two',
|
||||
sixTransverse: 'Three',
|
||||
sixColumns: 'Four',
|
||||
tipText:
|
||||
'Click the button below to copy the layout configuration to `/src/store/modules/themeConfig.js` It has been modified in.',
|
||||
copyText: 'replication configuration',
|
||||
resetText: 'restore default',
|
||||
copyTextSuccess: 'Copy succeeded!',
|
||||
copyTextError: 'Copy failed!',
|
||||
},
|
||||
upgrade: {
|
||||
title: 'New version',
|
||||
msg: 'The new version is available, please update it now! Dont worry, the update is fast!',
|
||||
desc: 'Prompt: Update will restore the default configuration',
|
||||
btnOne: 'Cruel refusal',
|
||||
btnTwo: 'Update now',
|
||||
btnTwoLoading: 'Updating',
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,160 +1,160 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
router: {
|
||||
home: '首頁',
|
||||
system: '系統設置',
|
||||
systemMenu: '選單管理',
|
||||
systemUser: '用戶管理',
|
||||
limits: '許可權管理',
|
||||
limitsFrontEnd: '前端控制',
|
||||
limitsFrontEndPage: '頁面許可權',
|
||||
limitsFrontEndBtn: '按鈕許可權',
|
||||
limitsBackEnd: '後端控制',
|
||||
limitsBackEndEndPage: '頁面許可權',
|
||||
menu: '選單嵌套',
|
||||
menu1: '選單1',
|
||||
menu11: '選單11',
|
||||
menu12: '選單12',
|
||||
menu121: '選單121',
|
||||
menu122: '選單122',
|
||||
menu13: '選單13',
|
||||
menu2: '選單2',
|
||||
funIndex: '功能',
|
||||
funTagsView: 'tagsView 操作',
|
||||
funSignCanvas: '線上簽名',
|
||||
funCountup: 'countup 數位滾動',
|
||||
funEchartsTree: 'echartsTree 樹圖',
|
||||
funSelector: '圖標選擇器',
|
||||
funWangEditor: 'wangEditor 編輯器',
|
||||
funCropper: 'cropper 圖片裁剪',
|
||||
funMindMap: 'G6 心智圖',
|
||||
funQrcode: 'qrcode 二維碼生成',
|
||||
funEchartsMap: '地理座標/地圖',
|
||||
funPrintJs: '頁面列印',
|
||||
funClipboard: '複製剪切',
|
||||
funScreenShort: '自定義截圖',
|
||||
pagesIndex: '頁面',
|
||||
pagesFiltering: '過濾篩選組件',
|
||||
pagesFilteringDetails: '過濾篩選組件詳情',
|
||||
pagesFilteringDetails1: '過濾篩選組件詳情111',
|
||||
pagesIocnfont: 'iconfont 字體圖標',
|
||||
pagesElement: 'element 字體圖標',
|
||||
pagesAwesome: 'awesome 字體圖標',
|
||||
pagesCityLinkage: '都市多級聯動',
|
||||
pagesFormAdapt: '表單自我調整',
|
||||
pagesListAdapt: '清單自我調整',
|
||||
pagesWaterfall: '瀑布屏',
|
||||
pagesSteps: '步驟條',
|
||||
chartIndex: '大資料圖表',
|
||||
personal: '個人中心',
|
||||
tools: '工具類集合',
|
||||
layoutLinkView: '外鏈',
|
||||
layoutIfameView: '内嵌 iframe',
|
||||
},
|
||||
staticRoutes: {
|
||||
signIn: '登入',
|
||||
notFound: '找不到此頁面',
|
||||
noPower: '沒有許可權',
|
||||
},
|
||||
user: {
|
||||
title0: '組件大小',
|
||||
title1: '語言切換',
|
||||
title2: '選單蒐索',
|
||||
title3: '佈局配寘',
|
||||
title4: '消息',
|
||||
title5: '開全屏',
|
||||
title6: '關全屏',
|
||||
title7: '重繪',
|
||||
dropdownDefault: '默認',
|
||||
dropdownMedium: '中等',
|
||||
dropdownSmall: '小型',
|
||||
dropdownMini: '超小',
|
||||
dropdown1: '首頁',
|
||||
dropdown2: '個人中心',
|
||||
dropdown3: '404',
|
||||
dropdown4: '401',
|
||||
dropdown5: '登出',
|
||||
dropdown6: '程式碼倉庫',
|
||||
searchPlaceholder: '選單蒐索:支援中文、路由路徑',
|
||||
newTitle: '通知',
|
||||
newBtn: '全部已讀',
|
||||
newGo: '前往通知中心',
|
||||
newDesc: '暫無通知',
|
||||
logOutTitle: '提示',
|
||||
logOutMessage: '此操作將登出,是否繼續?',
|
||||
logOutConfirm: '確定',
|
||||
logOutCancel: '取消',
|
||||
logOutExit: '退出中',
|
||||
logOutSuccess: '安全退出成功!',
|
||||
},
|
||||
tagsView: {
|
||||
refresh: '重繪',
|
||||
close: '關閉',
|
||||
closeOther: '關閉其它',
|
||||
closeAll: '全部關閉',
|
||||
fullscreen: '當前頁全屏',
|
||||
},
|
||||
notFound: {
|
||||
foundTitle: '地址輸入錯誤,請重新輸入地址~',
|
||||
foundMsg: '您可以先檢查網址,然後重新輸入或給我們迴響問題。',
|
||||
foundBtn: '返回首頁',
|
||||
},
|
||||
layout: {
|
||||
configTitle: '佈局配寘',
|
||||
oneTitle: '全域主題',
|
||||
menuBag: '菜單背景色',
|
||||
twoTitle: '選單 / 頂欄',
|
||||
twoTopBar: '頂欄背景',
|
||||
twoMenuBar: '選單背景',
|
||||
twoColumnsMenuBar: '分欄選單背景',
|
||||
twoTopBarColor: '頂欄默認字體顏色',
|
||||
twoMenuBarColor: '選單默認字體顏色',
|
||||
twoColumnsMenuBarColor: '分欄選單默認字體顏色',
|
||||
twoIsTopBarColorGradual: '頂欄背景漸變',
|
||||
twoIsMenuBarColorGradual: '選單背景漸變',
|
||||
twoIsMenuBarColorHighlight: '選單字體背景高亮',
|
||||
threeTitle: '介面設定',
|
||||
threeIsCollapse: '選單水准折疊',
|
||||
threeIsUniqueOpened: '選單手風琴',
|
||||
threeIsFixedHeader: '固定 Header',
|
||||
threeIsClassicSplitMenu: '經典佈局分割選單',
|
||||
threeIsLockScreen: '開啟鎖屏',
|
||||
threeLockScreenTime: '自動鎖屏(s/秒)',
|
||||
fourTitle: '介面顯示',
|
||||
fourIsShowLogo: '側邊欄 Logo',
|
||||
fourIsBreadcrumb: '開啟 Breadcrumb',
|
||||
fourIsBreadcrumbIcon: '開啟 Breadcrumb 圖標',
|
||||
fourIsTagsview: '開啟 Tagsview',
|
||||
fourIsTagsviewIcon: '開啟 Tagsview 圖標',
|
||||
fourIsFooter: '開啟 Footer',
|
||||
fourIsGrayscale: '灰色模式',
|
||||
fourIsInvert: '色弱模式',
|
||||
fourIsDark: '深色模式',
|
||||
fourIsWartermark: '開啟浮水印',
|
||||
fourWartermarkText: '浮水印文案',
|
||||
fiveTitle: '其它設定',
|
||||
fiveTagsStyle: 'Tagsview 風格',
|
||||
themeStyle: '主題',
|
||||
fiveAnimation: '主頁面切換動畫',
|
||||
fiveColumnsAsideStyle: '分欄高亮風格',
|
||||
fiveColumnsAsideLayout: '分欄佈局風格',
|
||||
sixTitle: '佈局切換',
|
||||
sixDefaults: '默認',
|
||||
sixClassic: '經典',
|
||||
sixTransverse: '橫向',
|
||||
sixColumns: '分欄',
|
||||
tipText: '點擊下方按鈕,複製佈局配寘去`src/store/modules/themeConfig.js`中修改。',
|
||||
copyText: '一鍵複製配寘',
|
||||
resetText: '一鍵恢復默認',
|
||||
copyTextSuccess: '複製成功!',
|
||||
copyTextError: '複製失敗!',
|
||||
},
|
||||
upgrade: {
|
||||
title: '新版本陞級',
|
||||
msg: '新版本來啦,馬上更新嘗鮮吧! 不用擔心,更新很快的哦!',
|
||||
desc: '提示:更新會還原默認配寘',
|
||||
btnOne: '殘忍拒絕',
|
||||
btnTwo: '馬上更新',
|
||||
btnTwoLoading: '更新中',
|
||||
},
|
||||
router: {
|
||||
home: '首頁',
|
||||
system: '系統設置',
|
||||
systemMenu: '選單管理',
|
||||
systemUser: '用戶管理',
|
||||
limits: '許可權管理',
|
||||
limitsFrontEnd: '前端控制',
|
||||
limitsFrontEndPage: '頁面許可權',
|
||||
limitsFrontEndBtn: '按鈕許可權',
|
||||
limitsBackEnd: '後端控制',
|
||||
limitsBackEndEndPage: '頁面許可權',
|
||||
menu: '選單嵌套',
|
||||
menu1: '選單1',
|
||||
menu11: '選單11',
|
||||
menu12: '選單12',
|
||||
menu121: '選單121',
|
||||
menu122: '選單122',
|
||||
menu13: '選單13',
|
||||
menu2: '選單2',
|
||||
funIndex: '功能',
|
||||
funTagsView: 'tagsView 操作',
|
||||
funSignCanvas: '線上簽名',
|
||||
funCountup: 'countup 數位滾動',
|
||||
funEchartsTree: 'echartsTree 樹圖',
|
||||
funSelector: '圖標選擇器',
|
||||
funWangEditor: 'wangEditor 編輯器',
|
||||
funCropper: 'cropper 圖片裁剪',
|
||||
funMindMap: 'G6 心智圖',
|
||||
funQrcode: 'qrcode 二維碼生成',
|
||||
funEchartsMap: '地理座標/地圖',
|
||||
funPrintJs: '頁面列印',
|
||||
funClipboard: '複製剪切',
|
||||
funScreenShort: '自定義截圖',
|
||||
pagesIndex: '頁面',
|
||||
pagesFiltering: '過濾篩選組件',
|
||||
pagesFilteringDetails: '過濾篩選組件詳情',
|
||||
pagesFilteringDetails1: '過濾篩選組件詳情111',
|
||||
pagesIocnfont: 'iconfont 字體圖標',
|
||||
pagesElement: 'element 字體圖標',
|
||||
pagesAwesome: 'awesome 字體圖標',
|
||||
pagesCityLinkage: '都市多級聯動',
|
||||
pagesFormAdapt: '表單自我調整',
|
||||
pagesListAdapt: '清單自我調整',
|
||||
pagesWaterfall: '瀑布屏',
|
||||
pagesSteps: '步驟條',
|
||||
chartIndex: '大資料圖表',
|
||||
personal: '個人中心',
|
||||
tools: '工具類集合',
|
||||
layoutLinkView: '外鏈',
|
||||
layoutIfameView: '内嵌 iframe',
|
||||
},
|
||||
staticRoutes: {
|
||||
signIn: '登入',
|
||||
notFound: '找不到此頁面',
|
||||
noPower: '沒有許可權',
|
||||
},
|
||||
user: {
|
||||
title0: '組件大小',
|
||||
title1: '語言切換',
|
||||
title2: '選單蒐索',
|
||||
title3: '佈局配寘',
|
||||
title4: '消息',
|
||||
title5: '開全屏',
|
||||
title6: '關全屏',
|
||||
title7: '重繪',
|
||||
dropdownDefault: '默認',
|
||||
dropdownMedium: '中等',
|
||||
dropdownSmall: '小型',
|
||||
dropdownMini: '超小',
|
||||
dropdown1: '首頁',
|
||||
dropdown2: '個人中心',
|
||||
dropdown3: '404',
|
||||
dropdown4: '401',
|
||||
dropdown5: '登出',
|
||||
dropdown6: '程式碼倉庫',
|
||||
searchPlaceholder: '選單蒐索:支援中文、路由路徑',
|
||||
newTitle: '通知',
|
||||
newBtn: '全部已讀',
|
||||
newGo: '前往通知中心',
|
||||
newDesc: '暫無通知',
|
||||
logOutTitle: '提示',
|
||||
logOutMessage: '此操作將登出,是否繼續?',
|
||||
logOutConfirm: '確定',
|
||||
logOutCancel: '取消',
|
||||
logOutExit: '退出中',
|
||||
logOutSuccess: '安全退出成功!',
|
||||
},
|
||||
tagsView: {
|
||||
refresh: '重繪',
|
||||
close: '關閉',
|
||||
closeOther: '關閉其它',
|
||||
closeAll: '全部關閉',
|
||||
fullscreen: '當前頁全屏',
|
||||
},
|
||||
notFound: {
|
||||
foundTitle: '地址輸入錯誤,請重新輸入地址~',
|
||||
foundMsg: '您可以先檢查網址,然後重新輸入或給我們迴響問題。',
|
||||
foundBtn: '返回首頁',
|
||||
},
|
||||
layout: {
|
||||
configTitle: '佈局配寘',
|
||||
oneTitle: '全域主題',
|
||||
menuBag: '菜單背景色',
|
||||
twoTitle: '選單 / 頂欄',
|
||||
twoTopBar: '頂欄背景',
|
||||
twoMenuBar: '選單背景',
|
||||
twoColumnsMenuBar: '分欄選單背景',
|
||||
twoTopBarColor: '頂欄默認字體顏色',
|
||||
twoMenuBarColor: '選單默認字體顏色',
|
||||
twoColumnsMenuBarColor: '分欄選單默認字體顏色',
|
||||
twoIsTopBarColorGradual: '頂欄背景漸變',
|
||||
twoIsMenuBarColorGradual: '選單背景漸變',
|
||||
twoIsMenuBarColorHighlight: '選單字體背景高亮',
|
||||
threeTitle: '介面設定',
|
||||
threeIsCollapse: '選單水准折疊',
|
||||
threeIsUniqueOpened: '選單手風琴',
|
||||
threeIsFixedHeader: '固定 Header',
|
||||
threeIsClassicSplitMenu: '經典佈局分割選單',
|
||||
threeIsLockScreen: '開啟鎖屏',
|
||||
threeLockScreenTime: '自動鎖屏(s/秒)',
|
||||
fourTitle: '介面顯示',
|
||||
fourIsShowLogo: '側邊欄 Logo',
|
||||
fourIsBreadcrumb: '開啟 Breadcrumb',
|
||||
fourIsBreadcrumbIcon: '開啟 Breadcrumb 圖標',
|
||||
fourIsTagsview: '開啟 Tagsview',
|
||||
fourIsTagsviewIcon: '開啟 Tagsview 圖標',
|
||||
fourIsFooter: '開啟 Footer',
|
||||
fourIsGrayscale: '灰色模式',
|
||||
fourIsInvert: '色弱模式',
|
||||
fourIsDark: '深色模式',
|
||||
fourIsWartermark: '開啟浮水印',
|
||||
fourWartermarkText: '浮水印文案',
|
||||
fiveTitle: '其它設定',
|
||||
fiveTagsStyle: 'Tagsview 風格',
|
||||
themeStyle: '主題',
|
||||
fiveAnimation: '主頁面切換動畫',
|
||||
fiveColumnsAsideStyle: '分欄高亮風格',
|
||||
fiveColumnsAsideLayout: '分欄佈局風格',
|
||||
sixTitle: '佈局切換',
|
||||
sixDefaults: '默認',
|
||||
sixClassic: '經典',
|
||||
sixTransverse: '橫向',
|
||||
sixColumns: '分欄',
|
||||
tipText: '點擊下方按鈕,複製佈局配寘去`src/store/modules/themeConfig.js`中修改。',
|
||||
copyText: '一鍵複製配寘',
|
||||
resetText: '一鍵恢復默認',
|
||||
copyTextSuccess: '複製成功!',
|
||||
copyTextError: '複製失敗!',
|
||||
},
|
||||
upgrade: {
|
||||
title: '新版本陞級',
|
||||
msg: '新版本來啦,馬上更新嘗鮮吧! 不用擔心,更新很快的哦!',
|
||||
desc: '提示:更新會還原默認配寘',
|
||||
btnOne: '殘忍拒絕',
|
||||
btnTwo: '馬上更新',
|
||||
btnTwoLoading: '更新中',
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
card: {
|
||||
title1: 'My desk',
|
||||
title2: 'Message notification',
|
||||
title3: 'more',
|
||||
title4: 'Marketing recommendation',
|
||||
title5: 'more',
|
||||
title6: 'Inventory operations',
|
||||
title7: 'Performance',
|
||||
title8: 'Out of stock monitoring',
|
||||
title9: 'Performance overtime warning',
|
||||
},
|
||||
card: {
|
||||
title1: 'My desk',
|
||||
title2: 'Message notification',
|
||||
title3: 'more',
|
||||
title4: 'Marketing recommendation',
|
||||
title5: 'more',
|
||||
title6: 'Inventory operations',
|
||||
title7: 'Performance',
|
||||
title8: 'Out of stock monitoring',
|
||||
title9: 'Performance overtime warning',
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
card: {
|
||||
title1: '我的工作台',
|
||||
title2: '消息通知',
|
||||
title3: '更多',
|
||||
title4: '营销推荐',
|
||||
title5: '更多',
|
||||
title6: '库存作业',
|
||||
title7: '履约情况',
|
||||
title8: '缺货监控',
|
||||
title9: '履约超时预警',
|
||||
},
|
||||
card: {
|
||||
title1: '我的工作台',
|
||||
title2: '消息通知',
|
||||
title3: '更多',
|
||||
title4: '营销推荐',
|
||||
title5: '更多',
|
||||
title6: '库存作业',
|
||||
title7: '履约情况',
|
||||
title8: '缺货监控',
|
||||
title9: '履约超时预警',
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
card: {
|
||||
title1: '我的工作臺',
|
||||
title2: '消息通知',
|
||||
title3: '更多',
|
||||
title4: '行銷推薦',
|
||||
title5: '更多',
|
||||
title6: '庫存工作',
|
||||
title7: '履約情况',
|
||||
title8: '缺貨監控',
|
||||
title9: '履約超時預警',
|
||||
},
|
||||
card: {
|
||||
title1: '我的工作臺',
|
||||
title2: '消息通知',
|
||||
title3: '更多',
|
||||
title4: '行銷推薦',
|
||||
title5: '更多',
|
||||
title6: '庫存工作',
|
||||
title7: '履約情况',
|
||||
title8: '缺貨監控',
|
||||
title9: '履約超時預警',
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
login: {
|
||||
placeholder1: 'The user name admin or not is test',
|
||||
placeholder2: 'Password: 123456',
|
||||
placeholder3: 'Please enter the verification code',
|
||||
btnText: 'Sign in',
|
||||
link: {
|
||||
one1: 'Third party login',
|
||||
one2: 'Links',
|
||||
},
|
||||
signInText: 'welcome back!',
|
||||
copyright: {
|
||||
one5: 'Copyright: Shenzhen XXX Software Technology Co., Ltd',
|
||||
two6: 'Copyright: Shenzhen XXX software technology Guangdong ICP preparation no.05010000',
|
||||
},
|
||||
},
|
||||
login: {
|
||||
placeholder1: 'The user name admin or not is test',
|
||||
placeholder2: 'Password: 123456',
|
||||
placeholder3: 'Please enter the verification code',
|
||||
btnText: 'Sign in',
|
||||
link: {
|
||||
one1: 'Third party login',
|
||||
one2: 'Links',
|
||||
},
|
||||
signInText: 'welcome back!',
|
||||
copyright: {
|
||||
one5: 'Copyright: Shenzhen XXX Software Technology Co., Ltd',
|
||||
two6: 'Copyright: Shenzhen XXX software technology Guangdong ICP preparation no.05010000',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@ -2,23 +2,23 @@
|
||||
* @Author: From-wh from-wh@hotmail.com
|
||||
* @Date: 2023-03-09 18:02:23
|
||||
* @FilePath: /admin/src/i18n/pages/login/zh-cn.js
|
||||
* @Description:
|
||||
* @Description:
|
||||
*/
|
||||
// 定义内容
|
||||
export default {
|
||||
login: {
|
||||
placeholder1: '用户名 admin 或不输均为 test',
|
||||
placeholder2: '密码:123456',
|
||||
placeholder3: '请输入验证码',
|
||||
btnText: '登 录',
|
||||
link: {
|
||||
one1: '第三方登录',
|
||||
one2: '友情链接',
|
||||
},
|
||||
signInText: '欢迎回来!',
|
||||
copyright: {
|
||||
one5: '',
|
||||
two6: '',
|
||||
},
|
||||
},
|
||||
login: {
|
||||
placeholder1: '用户名 admin 或不输均为 test',
|
||||
placeholder2: '密码:123456',
|
||||
placeholder3: '请输入验证码',
|
||||
btnText: '登 录',
|
||||
link: {
|
||||
one1: '第三方登录',
|
||||
one2: '友情链接',
|
||||
},
|
||||
signInText: '欢迎回来!',
|
||||
copyright: {
|
||||
one5: '',
|
||||
two6: '',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
// 定义内容
|
||||
export default {
|
||||
login: {
|
||||
placeholder1: '用戶名admin或不輸均為test',
|
||||
placeholder2: '密碼:123456',
|
||||
placeholder3: '請輸入驗證碼',
|
||||
btnText: '登 录',
|
||||
link: {
|
||||
one1: '協力廠商登入',
|
||||
one2: '友情連結',
|
||||
},
|
||||
signInText: '歡迎回來!',
|
||||
copyright: {
|
||||
one5: '版權所有:深圳市xxx軟件科技有限公司',
|
||||
two6: 'Copyright: Shenzhen XXX Software Technology 粵ICP備05010000號',
|
||||
},
|
||||
},
|
||||
login: {
|
||||
placeholder1: '用戶名admin或不輸均為test',
|
||||
placeholder2: '密碼:123456',
|
||||
placeholder3: '請輸入驗證碼',
|
||||
btnText: '登 录',
|
||||
link: {
|
||||
one1: '協力廠商登入',
|
||||
one2: '友情連結',
|
||||
},
|
||||
signInText: '歡迎回來!',
|
||||
copyright: {
|
||||
one5: '版權所有:深圳市xxx軟件科技有限公司',
|
||||
two6: 'Copyright: Shenzhen XXX Software Technology 粵ICP備05010000號',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,24 +1,24 @@
|
||||
<template>
|
||||
<el-header class="layout-header" :height="setHeaderHeight">
|
||||
<NavBarsIndex />
|
||||
</el-header>
|
||||
<el-header class="layout-header" :height="setHeaderHeight">
|
||||
<NavBarsIndex />
|
||||
</el-header>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBarsIndex from '@/layout/navBars/index.vue';
|
||||
export default {
|
||||
name: 'layoutHeader',
|
||||
components: { NavBarsIndex },
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
// 设置顶部 header 的具体高度
|
||||
setHeaderHeight() {
|
||||
let { isTagsview, layout } = this.$store.state.themeConfig.themeConfig;
|
||||
if (isTagsview && layout !== 'classic') return '84px';
|
||||
else return '50px';
|
||||
},
|
||||
},
|
||||
name: 'layoutHeader',
|
||||
components: { NavBarsIndex },
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
// 设置顶部 header 的具体高度
|
||||
setHeaderHeight() {
|
||||
let { isTagsview, layout } = this.$store.state.themeConfig.themeConfig;
|
||||
if (isTagsview && layout !== 'classic') return '84px';
|
||||
else return '50px';
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<el-main class="layout-main">
|
||||
<el-scrollbar
|
||||
class="layout-scrollbar"
|
||||
ref="layoutScrollbarRef"
|
||||
v-show="!currentRouteMeta.isLink && !currentRouteMeta.isIframe"
|
||||
:style="{ minHeight: `calc(100vh - ${headerHeight}` }"
|
||||
>
|
||||
<LayoutParentView />
|
||||
<Footers v-if="getThemeConfig.isFooter" />
|
||||
</el-scrollbar>
|
||||
<Links
|
||||
:style="{ height: `calc(100vh - ${headerHeight}` }"
|
||||
:meta="currentRouteMeta"
|
||||
v-if="currentRouteMeta.isLink && !currentRouteMeta.isIframe"
|
||||
/>
|
||||
<Iframes
|
||||
:style="{ height: `calc(100vh - ${headerHeight}` }"
|
||||
:meta="currentRouteMeta"
|
||||
v-if="currentRouteMeta.isLink && currentRouteMeta.isIframe && isShowLink"
|
||||
@getCurrentRouteMeta="onGetCurrentRouteMeta"
|
||||
/>
|
||||
</el-main>
|
||||
<el-main class="layout-main">
|
||||
<el-scrollbar
|
||||
class="layout-scrollbar"
|
||||
ref="layoutScrollbarRef"
|
||||
v-show="!currentRouteMeta.isLink && !currentRouteMeta.isIframe"
|
||||
:style="{ minHeight: `calc(100vh - ${headerHeight}` }"
|
||||
>
|
||||
<LayoutParentView />
|
||||
<Footers v-if="getThemeConfig.isFooter" />
|
||||
</el-scrollbar>
|
||||
<Links
|
||||
:style="{ height: `calc(100vh - ${headerHeight}` }"
|
||||
:meta="currentRouteMeta"
|
||||
v-if="currentRouteMeta.isLink && !currentRouteMeta.isIframe"
|
||||
/>
|
||||
<Iframes
|
||||
:style="{ height: `calc(100vh - ${headerHeight}` }"
|
||||
:meta="currentRouteMeta"
|
||||
v-if="currentRouteMeta.isLink && currentRouteMeta.isIframe && isShowLink"
|
||||
@getCurrentRouteMeta="onGetCurrentRouteMeta"
|
||||
/>
|
||||
</el-main>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -29,65 +29,65 @@ import Footers from '@/layout/footer/index.vue';
|
||||
import Links from '@/layout/routerView/link.vue';
|
||||
import Iframes from '@/layout/routerView/iframes.vue';
|
||||
export default {
|
||||
name: 'layoutMain',
|
||||
components: { LayoutParentView, Footers, Links, Iframes },
|
||||
data() {
|
||||
return {
|
||||
headerHeight: '',
|
||||
currentRouteMeta: {},
|
||||
isShowLink: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
// 获取布局配置信息
|
||||
getThemeConfig() {
|
||||
return this.$store.state.themeConfig.themeConfig;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.initHeaderHeight();
|
||||
this.initCurrentRouteMeta(this.$route.meta);
|
||||
},
|
||||
methods: {
|
||||
// 初始化当前路由 meta 信息
|
||||
initCurrentRouteMeta(meta) {
|
||||
this.isShowLink = false;
|
||||
this.currentRouteMeta = meta;
|
||||
setTimeout(() => {
|
||||
this.isShowLink = true;
|
||||
}, 100);
|
||||
},
|
||||
// 设置 main 的高度
|
||||
initHeaderHeight() {
|
||||
let { isTagsview } = this.$store.state.themeConfig.themeConfig;
|
||||
if (isTagsview) return (this.headerHeight = `84px`);
|
||||
else return (this.headerHeight = `50px`);
|
||||
},
|
||||
// 子组件触发更新
|
||||
onGetCurrentRouteMeta() {
|
||||
this.initCurrentRouteMeta(this.$route.meta);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听 vuex 数据变化
|
||||
'$store.state.themeConfig.themeConfig': {
|
||||
handler(val) {
|
||||
this.headerHeight = val.isTagsview ? '84px' : '50px';
|
||||
if (val.isFixedHeaderChange !== val.isFixedHeader) {
|
||||
if (!this.$refs.layoutScrollbarRef) return false;
|
||||
this.$refs.layoutScrollbarRef.update();
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// 监听路由的变化
|
||||
$route: {
|
||||
handler(to) {
|
||||
this.initCurrentRouteMeta(to.meta);
|
||||
this.$refs.layoutScrollbarRef.wrap.scrollTop = 0;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
name: 'layoutMain',
|
||||
components: { LayoutParentView, Footers, Links, Iframes },
|
||||
data() {
|
||||
return {
|
||||
headerHeight: '',
|
||||
currentRouteMeta: {},
|
||||
isShowLink: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
// 获取布局配置信息
|
||||
getThemeConfig() {
|
||||
return this.$store.state.themeConfig.themeConfig;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.initHeaderHeight();
|
||||
this.initCurrentRouteMeta(this.$route.meta);
|
||||
},
|
||||
methods: {
|
||||
// 初始化当前路由 meta 信息
|
||||
initCurrentRouteMeta(meta) {
|
||||
this.isShowLink = false;
|
||||
this.currentRouteMeta = meta;
|
||||
setTimeout(() => {
|
||||
this.isShowLink = true;
|
||||
}, 100);
|
||||
},
|
||||
// 设置 main 的高度
|
||||
initHeaderHeight() {
|
||||
let { isTagsview } = this.$store.state.themeConfig.themeConfig;
|
||||
if (isTagsview) return (this.headerHeight = `84px`);
|
||||
else return (this.headerHeight = `50px`);
|
||||
},
|
||||
// 子组件触发更新
|
||||
onGetCurrentRouteMeta() {
|
||||
this.initCurrentRouteMeta(this.$route.meta);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听 vuex 数据变化
|
||||
'$store.state.themeConfig.themeConfig': {
|
||||
handler(val) {
|
||||
this.headerHeight = val.isTagsview ? '84px' : '50px';
|
||||
if (val.isFixedHeaderChange !== val.isFixedHeader) {
|
||||
if (!this.$refs.layoutScrollbarRef) return false;
|
||||
this.$refs.layoutScrollbarRef.update();
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// 监听路由的变化
|
||||
$route: {
|
||||
handler(to) {
|
||||
this.initCurrentRouteMeta(to.meta);
|
||||
this.$refs.layoutScrollbarRef.wrap.scrollTop = 0;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<el-container class="layout-container flex-center">
|
||||
<Headers />
|
||||
<el-container class="layout-mian-height-50">
|
||||
<Asides />
|
||||
<div class="flex-center layout-backtop">
|
||||
<TagsView v-if="getThemeConfig.isTagsview" />
|
||||
<Mains />
|
||||
</div>
|
||||
</el-container>
|
||||
<el-backtop target=".layout-backtop .el-main .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
<el-container class="layout-container flex-center">
|
||||
<Headers />
|
||||
<el-container class="layout-mian-height-50">
|
||||
<Asides />
|
||||
<div class="flex-center layout-backtop">
|
||||
<TagsView v-if="getThemeConfig.isTagsview" />
|
||||
<Mains />
|
||||
</div>
|
||||
</el-container>
|
||||
<el-backtop target=".layout-backtop .el-main .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -18,13 +18,13 @@ import Headers from '@/layout/component/header.vue';
|
||||
import Mains from '@/layout/component/main.vue';
|
||||
import TagsView from '@/layout/navBars/tagsView/tagsView.vue';
|
||||
export default {
|
||||
name: 'layoutClassic',
|
||||
components: { Asides, Headers, Mains, TagsView },
|
||||
computed: {
|
||||
// 获取布局配置信息
|
||||
getThemeConfig() {
|
||||
return this.$store.state.themeConfig.themeConfig;
|
||||
},
|
||||
},
|
||||
name: 'layoutClassic',
|
||||
components: { Asides, Headers, Mains, TagsView },
|
||||
computed: {
|
||||
// 获取布局配置信息
|
||||
getThemeConfig() {
|
||||
return this.$store.state.themeConfig.themeConfig;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
<template>
|
||||
<el-container class="layout-container">
|
||||
<ColumnsAside />
|
||||
<div class="layout-columns-warp">
|
||||
<Asides />
|
||||
<el-container class="flex-center layout-backtop">
|
||||
<Headers v-if="isFixedHeader" />
|
||||
<el-scrollbar>
|
||||
<Headers v-if="!isFixedHeader" />
|
||||
<Mains />
|
||||
</el-scrollbar>
|
||||
</el-container>
|
||||
</div>
|
||||
<el-backtop target=".layout-backtop .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
<el-container class="layout-container">
|
||||
<ColumnsAside />
|
||||
<div class="layout-columns-warp">
|
||||
<Asides />
|
||||
<el-container class="flex-center layout-backtop">
|
||||
<Headers v-if="isFixedHeader" />
|
||||
<el-scrollbar>
|
||||
<Headers v-if="!isFixedHeader" />
|
||||
<Mains />
|
||||
</el-scrollbar>
|
||||
</el-container>
|
||||
</div>
|
||||
<el-backtop target=".layout-backtop .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -21,13 +21,13 @@ import Headers from '@/layout/component/header.vue';
|
||||
import Mains from '@/layout/component/main.vue';
|
||||
import ColumnsAside from '@/layout/component/columnsAside.vue';
|
||||
export default {
|
||||
name: 'layoutColumns',
|
||||
components: { Asides, Headers, Mains, ColumnsAside },
|
||||
computed: {
|
||||
// 是否开启固定 header
|
||||
isFixedHeader() {
|
||||
return this.$store.state.themeConfig.themeConfig.isFixedHeader;
|
||||
},
|
||||
},
|
||||
name: 'layoutColumns',
|
||||
components: { Asides, Headers, Mains, ColumnsAside },
|
||||
computed: {
|
||||
// 是否开启固定 header
|
||||
isFixedHeader() {
|
||||
return this.$store.state.themeConfig.themeConfig.isFixedHeader;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<el-container class="layout-container">
|
||||
<Asides />
|
||||
<el-container class="flex-center layout-backtop">
|
||||
<Headers v-if="isFixedHeader" />
|
||||
<el-scrollbar ref="layoutDefaultsScrollbarRef">
|
||||
<Headers v-if="!isFixedHeader" />
|
||||
<Mains />
|
||||
</el-scrollbar>
|
||||
</el-container>
|
||||
<el-backtop target=".layout-backtop .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
<el-container class="layout-container">
|
||||
<Asides />
|
||||
<el-container class="flex-center layout-backtop">
|
||||
<Headers v-if="isFixedHeader" />
|
||||
<el-scrollbar ref="layoutDefaultsScrollbarRef">
|
||||
<Headers v-if="!isFixedHeader" />
|
||||
<Mains />
|
||||
</el-scrollbar>
|
||||
</el-container>
|
||||
<el-backtop target=".layout-backtop .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -17,25 +17,25 @@ import Asides from '@/layout/component/aside.vue';
|
||||
import Headers from '@/layout/component/header.vue';
|
||||
import Mains from '@/layout/component/main.vue';
|
||||
export default {
|
||||
name: 'layoutDefaults',
|
||||
components: { Asides, Headers, Mains },
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
// 是否开启固定 header
|
||||
isFixedHeader() {
|
||||
return this.$store.state.themeConfig.themeConfig.isFixedHeader;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听路由的变化
|
||||
$route: {
|
||||
handler() {
|
||||
this.$refs.layoutDefaultsScrollbarRef.wrap.scrollTop = 0;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
name: 'layoutDefaults',
|
||||
components: { Asides, Headers, Mains },
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
// 是否开启固定 header
|
||||
isFixedHeader() {
|
||||
return this.$store.state.themeConfig.themeConfig.isFixedHeader;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听路由的变化
|
||||
$route: {
|
||||
handler() {
|
||||
this.$refs.layoutDefaultsScrollbarRef.wrap.scrollTop = 0;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<el-container class="layout-container flex-center layout-backtop">
|
||||
<Headers />
|
||||
<Mains />
|
||||
<el-backtop target=".layout-backtop .el-main .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
<el-container class="layout-container flex-center layout-backtop">
|
||||
<Headers />
|
||||
<Mains />
|
||||
<el-backtop target=".layout-backtop .el-main .el-scrollbar__wrap"></el-backtop>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Headers from '@/layout/component/header.vue';
|
||||
import Mains from '@/layout/component/main.vue';
|
||||
export default {
|
||||
name: 'layoutTransverse',
|
||||
components: { Headers, Mains },
|
||||
name: 'layoutTransverse',
|
||||
components: { Headers, Mains },
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -1,102 +1,109 @@
|
||||
<template>
|
||||
<div class="layout-search-dialog">
|
||||
<el-dialog :visible.sync="isShowSearch" width="300px" destroy-on-close :modal="false" fullscreen :show-close="false">
|
||||
<el-autocomplete
|
||||
v-model="menuQuery"
|
||||
:fetch-suggestions="menuSearch"
|
||||
:placeholder="$t('message.user.searchPlaceholder')"
|
||||
prefix-icon="el-icon-search"
|
||||
ref="layoutMenuAutocompleteRef"
|
||||
@select="onHandleSelect"
|
||||
@blur="onSearchBlur"
|
||||
>
|
||||
<template slot-scope="{ item }">
|
||||
<div><i :class="item.icon" class="mr10"></i>{{ $t(item.title) }}</div>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<div class="layout-search-dialog">
|
||||
<el-dialog
|
||||
:visible.sync="isShowSearch"
|
||||
width="300px"
|
||||
destroy-on-close
|
||||
:modal="false"
|
||||
fullscreen
|
||||
:show-close="false"
|
||||
>
|
||||
<el-autocomplete
|
||||
v-model="menuQuery"
|
||||
:fetch-suggestions="menuSearch"
|
||||
:placeholder="$t('message.user.searchPlaceholder')"
|
||||
prefix-icon="el-icon-search"
|
||||
ref="layoutMenuAutocompleteRef"
|
||||
@select="onHandleSelect"
|
||||
@blur="onSearchBlur"
|
||||
>
|
||||
<template slot-scope="{ item }">
|
||||
<div><i :class="item.icon" class="mr10"></i>{{ $t(item.title) }}</div>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAllSiderMenu } from '@/libs/system'
|
||||
import { getAllSiderMenu } from '@/libs/system';
|
||||
export default {
|
||||
name: 'layoutBreadcrumbSearch',
|
||||
data() {
|
||||
return {
|
||||
isShowSearch: false,
|
||||
menuQuery: '',
|
||||
tagsViewList: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 搜索弹窗打开
|
||||
openSearch() {
|
||||
this.menuQuery = '';
|
||||
this.isShowSearch = true;
|
||||
this.initTageView();
|
||||
this.$nextTick(() => {
|
||||
this.$refs.layoutMenuAutocompleteRef.focus();
|
||||
});
|
||||
},
|
||||
// 搜索弹窗关闭
|
||||
closeSearch() {
|
||||
setTimeout(() => {
|
||||
this.isShowSearch = false;
|
||||
}, 150);
|
||||
},
|
||||
// 菜单搜索数据过滤
|
||||
menuSearch(queryString, cb) {
|
||||
let results = queryString ? this.tagsViewList.filter(this.createFilter(queryString)) : this.tagsViewList;
|
||||
cb(results);
|
||||
},
|
||||
// 菜单搜索过滤
|
||||
createFilter(queryString) {
|
||||
return (restaurant) => {
|
||||
return (
|
||||
restaurant.path.toLowerCase().indexOf(queryString.toLowerCase()) > -1 ||
|
||||
restaurant.title.toLowerCase().indexOf(queryString.toLowerCase()) > -1 ||
|
||||
this.$t(restaurant.title).toLowerCase().indexOf(queryString.toLowerCase()) > -1
|
||||
);
|
||||
};
|
||||
},
|
||||
// 初始化菜单数据
|
||||
initTageView() {
|
||||
if (this.tagsViewList.length > 0) return false;
|
||||
this.tagsViewList = getAllSiderMenu(this.$store.state.routesList.routesList)
|
||||
// this.$store.state.tagsViewRoutes.tagsViewRoutes.map((v) => {
|
||||
// if (!v.isHide) this.tagsViewList.push({ ...v });
|
||||
// });
|
||||
},
|
||||
// 当前菜单选中时
|
||||
onHandleSelect(item) {
|
||||
let { path, redirect } = item;
|
||||
if (item.isLink && !item.isIframe) window.open(item.isLink);
|
||||
else if (redirect) this.$router.push(redirect);
|
||||
else this.$router.push(path);
|
||||
this.closeSearch();
|
||||
},
|
||||
// input 失去焦点时
|
||||
onSearchBlur() {
|
||||
this.closeSearch();
|
||||
},
|
||||
},
|
||||
name: 'layoutBreadcrumbSearch',
|
||||
data() {
|
||||
return {
|
||||
isShowSearch: false,
|
||||
menuQuery: '',
|
||||
tagsViewList: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 搜索弹窗打开
|
||||
openSearch() {
|
||||
this.menuQuery = '';
|
||||
this.isShowSearch = true;
|
||||
this.initTageView();
|
||||
this.$nextTick(() => {
|
||||
this.$refs.layoutMenuAutocompleteRef.focus();
|
||||
});
|
||||
},
|
||||
// 搜索弹窗关闭
|
||||
closeSearch() {
|
||||
setTimeout(() => {
|
||||
this.isShowSearch = false;
|
||||
}, 150);
|
||||
},
|
||||
// 菜单搜索数据过滤
|
||||
menuSearch(queryString, cb) {
|
||||
let results = queryString ? this.tagsViewList.filter(this.createFilter(queryString)) : this.tagsViewList;
|
||||
cb(results);
|
||||
},
|
||||
// 菜单搜索过滤
|
||||
createFilter(queryString) {
|
||||
return (restaurant) => {
|
||||
return (
|
||||
restaurant.path.toLowerCase().indexOf(queryString.toLowerCase()) > -1 ||
|
||||
restaurant.title.toLowerCase().indexOf(queryString.toLowerCase()) > -1 ||
|
||||
this.$t(restaurant.title).toLowerCase().indexOf(queryString.toLowerCase()) > -1
|
||||
);
|
||||
};
|
||||
},
|
||||
// 初始化菜单数据
|
||||
initTageView() {
|
||||
if (this.tagsViewList.length > 0) return false;
|
||||
this.tagsViewList = getAllSiderMenu(this.$store.state.routesList.routesList);
|
||||
// this.$store.state.tagsViewRoutes.tagsViewRoutes.map((v) => {
|
||||
// if (!v.isHide) this.tagsViewList.push({ ...v });
|
||||
// });
|
||||
},
|
||||
// 当前菜单选中时
|
||||
onHandleSelect(item) {
|
||||
let { path, redirect } = item;
|
||||
if (item.isLink && !item.isIframe) window.open(item.isLink);
|
||||
else if (redirect) this.$router.push(redirect);
|
||||
else this.$router.push(path);
|
||||
this.closeSearch();
|
||||
},
|
||||
// input 失去焦点时
|
||||
onSearchBlur() {
|
||||
this.closeSearch();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.layout-search-dialog {
|
||||
::v-deep .el-dialog {
|
||||
box-shadow: unset !important;
|
||||
border-radius: 0 !important;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
::v-deep .el-autocomplete {
|
||||
width: 560px;
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
::v-deep .el-dialog {
|
||||
box-shadow: unset !important;
|
||||
border-radius: 0 !important;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
::v-deep .el-autocomplete {
|
||||
width: 560px;
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -72,8 +72,7 @@
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- transverse 布局 -->
|
||||
<div
|
||||
class="layout-drawer-content-item"
|
||||
|
||||
@ -1,110 +1,116 @@
|
||||
<template>
|
||||
<div>
|
||||
<transition name="el-zoom-in-center">
|
||||
<ul
|
||||
class="el-dropdown-menu el-popper el-dropdown-menu--medium custom-contextmenu"
|
||||
:style="`top: ${dropdowns.y}px;left: ${dropdowns.x}px;`"
|
||||
x-placement="bottom-end"
|
||||
id="contextmenu"
|
||||
v-show="isShow"
|
||||
>
|
||||
<li class="el-dropdown-menu__item" v-for="(v, k) in dropdownList" :key="k" @click="onCurrentContextmenuClick(v.id)">
|
||||
<template v-if="!v.affix">
|
||||
<i :class="v.icon"></i>
|
||||
<span>{{ $t(v.txt) }}</span>
|
||||
</template>
|
||||
</li>
|
||||
<div x-arrow class="popper__arrow" :style="{ left: `${arrowLeft}px` }"></div>
|
||||
</ul>
|
||||
</transition>
|
||||
</div>
|
||||
<div>
|
||||
<transition name="el-zoom-in-center">
|
||||
<ul
|
||||
class="el-dropdown-menu el-popper el-dropdown-menu--medium custom-contextmenu"
|
||||
:style="`top: ${dropdowns.y}px;left: ${dropdowns.x}px;`"
|
||||
x-placement="bottom-end"
|
||||
id="contextmenu"
|
||||
v-show="isShow"
|
||||
>
|
||||
<li
|
||||
class="el-dropdown-menu__item"
|
||||
v-for="(v, k) in dropdownList"
|
||||
:key="k"
|
||||
@click="onCurrentContextmenuClick(v.id)"
|
||||
>
|
||||
<template v-if="!v.affix">
|
||||
<i :class="v.icon"></i>
|
||||
<span>{{ $t(v.txt) }}</span>
|
||||
</template>
|
||||
</li>
|
||||
<div x-arrow class="popper__arrow" :style="{ left: `${arrowLeft}px` }"></div>
|
||||
</ul>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'layoutTagsViewContextmenu',
|
||||
props: {
|
||||
dropdown: {
|
||||
type: Object,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false,
|
||||
dropdownList: [
|
||||
{ id: 0, txt: 'message.tagsView.refresh', affix: false, icon: 'el-icon-refresh-right' },
|
||||
{ id: 1, txt: 'message.tagsView.close', affix: false, icon: 'el-icon-close' },
|
||||
{ id: 2, txt: 'message.tagsView.closeOther', affix: false, icon: 'el-icon-circle-close' },
|
||||
{ id: 3, txt: 'message.tagsView.closeAll', affix: false, icon: 'el-icon-folder-delete' },
|
||||
],
|
||||
path: {},
|
||||
arrowLeft: 5,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
dropdowns() {
|
||||
// 99 为 `Dropdown 下拉菜单` 的宽度
|
||||
if (this.dropdown.x + 99 > document.documentElement.clientWidth) {
|
||||
return {
|
||||
x: document.documentElement.clientWidth - 99 - 5,
|
||||
y: this.dropdown.y,
|
||||
};
|
||||
} else {
|
||||
return this.dropdown;
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// 监听页面监听进行右键菜单的关闭
|
||||
document.body.addEventListener('click', this.closeContextmenu);
|
||||
},
|
||||
methods: {
|
||||
// 当前项菜单点击
|
||||
onCurrentContextmenuClick(id) {
|
||||
this.$emit('currentContextmenuClick', { id, path: this.path });
|
||||
},
|
||||
// 打开右键菜单:判断是否固定,固定则不显示关闭按钮
|
||||
openContextmenu(item) {
|
||||
this.path = item.path;
|
||||
item.meta.isAffix ? (this.dropdownList[1].affix = true) : (this.dropdownList[1].affix = false);
|
||||
this.closeContextmenu();
|
||||
setTimeout(() => {
|
||||
this.isShow = true;
|
||||
}, 80);
|
||||
},
|
||||
// 关闭右键菜单
|
||||
closeContextmenu() {
|
||||
this.isShow = false;
|
||||
},
|
||||
},
|
||||
destroyed() {
|
||||
// 页面卸载时,移除右键菜单监听事件
|
||||
document.body.removeEventListener('click', this.closeContextmenu);
|
||||
},
|
||||
// 监听下拉菜单位置
|
||||
watch: {
|
||||
dropdown: {
|
||||
handler({ x }) {
|
||||
if (x + 99 > document.documentElement.clientWidth) this.arrowLeft = 99 - (document.documentElement.clientWidth - x);
|
||||
else this.arrowLeft = 10;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
name: 'layoutTagsViewContextmenu',
|
||||
props: {
|
||||
dropdown: {
|
||||
type: Object,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false,
|
||||
dropdownList: [
|
||||
{ id: 0, txt: 'message.tagsView.refresh', affix: false, icon: 'el-icon-refresh-right' },
|
||||
{ id: 1, txt: 'message.tagsView.close', affix: false, icon: 'el-icon-close' },
|
||||
{ id: 2, txt: 'message.tagsView.closeOther', affix: false, icon: 'el-icon-circle-close' },
|
||||
{ id: 3, txt: 'message.tagsView.closeAll', affix: false, icon: 'el-icon-folder-delete' },
|
||||
],
|
||||
path: {},
|
||||
arrowLeft: 5,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
dropdowns() {
|
||||
// 99 为 `Dropdown 下拉菜单` 的宽度
|
||||
if (this.dropdown.x + 99 > document.documentElement.clientWidth) {
|
||||
return {
|
||||
x: document.documentElement.clientWidth - 99 - 5,
|
||||
y: this.dropdown.y,
|
||||
};
|
||||
} else {
|
||||
return this.dropdown;
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// 监听页面监听进行右键菜单的关闭
|
||||
document.body.addEventListener('click', this.closeContextmenu);
|
||||
},
|
||||
methods: {
|
||||
// 当前项菜单点击
|
||||
onCurrentContextmenuClick(id) {
|
||||
this.$emit('currentContextmenuClick', { id, path: this.path });
|
||||
},
|
||||
// 打开右键菜单:判断是否固定,固定则不显示关闭按钮
|
||||
openContextmenu(item) {
|
||||
this.path = item.path;
|
||||
item.meta.isAffix ? (this.dropdownList[1].affix = true) : (this.dropdownList[1].affix = false);
|
||||
this.closeContextmenu();
|
||||
setTimeout(() => {
|
||||
this.isShow = true;
|
||||
}, 80);
|
||||
},
|
||||
// 关闭右键菜单
|
||||
closeContextmenu() {
|
||||
this.isShow = false;
|
||||
},
|
||||
},
|
||||
destroyed() {
|
||||
// 页面卸载时,移除右键菜单监听事件
|
||||
document.body.removeEventListener('click', this.closeContextmenu);
|
||||
},
|
||||
// 监听下拉菜单位置
|
||||
watch: {
|
||||
dropdown: {
|
||||
handler({ x }) {
|
||||
if (x + 99 > document.documentElement.clientWidth)
|
||||
this.arrowLeft = 99 - (document.documentElement.clientWidth - x);
|
||||
else this.arrowLeft = 10;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.custom-contextmenu {
|
||||
transform-origin: center top;
|
||||
z-index: 2190;
|
||||
position: fixed;
|
||||
.el-dropdown-menu__item {
|
||||
font-size: 12px !important;
|
||||
white-space: nowrap;
|
||||
i {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
transform-origin: center top;
|
||||
z-index: 2190;
|
||||
position: fixed;
|
||||
.el-dropdown-menu__item {
|
||||
font-size: 12px !important;
|
||||
white-space: nowrap;
|
||||
i {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,46 +1,46 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="layout-view-bg-white flex h100" v-loading="iframeLoading">
|
||||
<iframe :src="meta.isLink" frameborder="0" height="100%" width="100%" id="iframe"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="layout-view-bg-white flex h100" v-loading="iframeLoading">
|
||||
<iframe :src="meta.isLink" frameborder="0" height="100%" width="100%" id="iframe"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'layoutIfameView',
|
||||
props: {
|
||||
meta: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
iframeLoading: true,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.bus.$on('onTagsViewRefreshRouterView', (path) => {
|
||||
if (this.$route.path !== path) return false;
|
||||
this.$emit('getCurrentRouteMeta');
|
||||
});
|
||||
},
|
||||
mounted() {
|
||||
this.initIframeLoad();
|
||||
},
|
||||
methods: {
|
||||
// 初始化页面加载 loading
|
||||
initIframeLoad() {
|
||||
this.$nextTick(() => {
|
||||
this.iframeLoading = true;
|
||||
const iframe = document.getElementById('iframe');
|
||||
if (!iframe) return false;
|
||||
iframe.onload = () => {
|
||||
this.iframeLoading = false;
|
||||
};
|
||||
});
|
||||
},
|
||||
},
|
||||
name: 'layoutIfameView',
|
||||
props: {
|
||||
meta: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
iframeLoading: true,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.bus.$on('onTagsViewRefreshRouterView', (path) => {
|
||||
if (this.$route.path !== path) return false;
|
||||
this.$emit('getCurrentRouteMeta');
|
||||
});
|
||||
},
|
||||
mounted() {
|
||||
this.initIframeLoad();
|
||||
},
|
||||
methods: {
|
||||
// 初始化页面加载 loading
|
||||
initIframeLoad() {
|
||||
this.$nextTick(() => {
|
||||
this.iframeLoading = true;
|
||||
const iframe = document.getElementById('iframe');
|
||||
if (!iframe) return false;
|
||||
iframe.onload = () => {
|
||||
this.iframeLoading = false;
|
||||
};
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -5,85 +5,85 @@
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="layout-scrollbar layout-link-container">
|
||||
<div class="layout-view-bg-white flex layout-view-link">
|
||||
<div class="layout-link-warp">
|
||||
<i class="layout-link-icon iconfont icon-xingqiu"></i>
|
||||
<div class="layout-link-msg">页面 "{{ $t(meta.title) }}" 已在新窗口中打开</div>
|
||||
<el-button class="mt30" round size="small" @click="onGotoFullPage">
|
||||
<i class="iconfont icon-lianjie"></i>
|
||||
<span>立即前往体验</span>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layout-scrollbar layout-link-container">
|
||||
<div class="layout-view-bg-white flex layout-view-link">
|
||||
<div class="layout-link-warp">
|
||||
<i class="layout-link-icon iconfont icon-xingqiu"></i>
|
||||
<div class="layout-link-msg">页面 "{{ $t(meta.title) }}" 已在新窗口中打开</div>
|
||||
<el-button class="mt30" round size="small" @click="onGotoFullPage">
|
||||
<i class="iconfont icon-lianjie"></i>
|
||||
<span>立即前往体验</span>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { verifyUrl } from '@/utils/toolsValidate';
|
||||
export default {
|
||||
name: 'layoutLinkView',
|
||||
props: {
|
||||
meta: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 立即前往
|
||||
onGotoFullPage() {
|
||||
const { origin, pathname } = window.location;
|
||||
if (verifyUrl(this.isLink)) window.open(this.isLink);
|
||||
else window.open(`${origin}${pathname}#${this.isLink}`);
|
||||
},
|
||||
},
|
||||
name: 'layoutLinkView',
|
||||
props: {
|
||||
meta: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 立即前往
|
||||
onGotoFullPage() {
|
||||
const { origin, pathname } = window.location;
|
||||
if (verifyUrl(this.isLink)) window.open(this.isLink);
|
||||
else window.open(`${origin}${pathname}#${this.isLink}`);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.layout-link-container {
|
||||
.layout-link-warp {
|
||||
margin: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
i.layout-link-icon {
|
||||
position: relative;
|
||||
font-size: 100px;
|
||||
color: var(--prev-color-primary);
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50px;
|
||||
top: 0;
|
||||
width: 15px;
|
||||
height: 100px;
|
||||
background: linear-gradient(
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(235, 255, 255, 0.5),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01)
|
||||
);
|
||||
transform: rotate(-15deg);
|
||||
animation: toRight 5s linear infinite;
|
||||
}
|
||||
}
|
||||
.layout-link-msg {
|
||||
font-size: 12px;
|
||||
color: var(--prev-bg-topBarColor);
|
||||
opacity: 0.7;
|
||||
margin-top: 15px;
|
||||
}
|
||||
}
|
||||
.layout-link-warp {
|
||||
margin: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
i.layout-link-icon {
|
||||
position: relative;
|
||||
font-size: 100px;
|
||||
color: var(--prev-color-primary);
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50px;
|
||||
top: 0;
|
||||
width: 15px;
|
||||
height: 100px;
|
||||
background: linear-gradient(
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(235, 255, 255, 0.5),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.05),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01),
|
||||
rgba(255, 255, 255, 0.01)
|
||||
);
|
||||
transform: rotate(-15deg);
|
||||
animation: toRight 5s linear infinite;
|
||||
}
|
||||
}
|
||||
.layout-link-msg {
|
||||
font-size: 12px;
|
||||
color: var(--prev-bg-topBarColor);
|
||||
opacity: 0.7;
|
||||
margin-top: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<Alert v-if="!pageData.appId && !pageData.code">
|
||||
<template slot="desc">
|
||||
您尚未配置小程序信息,请<router-link :to="{ path: $routeProStr +'/setting/system_config_retail/3/7' }"
|
||||
您尚未配置小程序信息,请<router-link :to="{ path: $routeProStr + '/setting/system_config_retail/3/7' }"
|
||||
>立即设置</router-link
|
||||
></template
|
||||
>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<div class="i-layout-page-header header-title">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<!-- 公众号设置 -->
|
||||
|
||||
@ -132,9 +132,7 @@
|
||||
</Upload>
|
||||
</div>
|
||||
<span v-show="formValidate.type === 'image'">文件最大2Mb,支持bmp/png/jpeg/jpg/gif格式</span>
|
||||
<span v-show="formValidate.type === 'voice'"
|
||||
>文件最大2Mb,支持mp3格式,播放长度不超过60s</span
|
||||
>
|
||||
<span v-show="formValidate.type === 'voice'">文件最大2Mb,支持mp3格式,播放长度不超过60s</span>
|
||||
</FormItem>
|
||||
</Form>
|
||||
</div>
|
||||
|
||||
@ -76,7 +76,7 @@ export default {
|
||||
methods: {
|
||||
// 添加
|
||||
add() {
|
||||
if (this.$route.path === (this.$routeProStr + '/app/wechat/wechat_user/user/tag')) {
|
||||
if (this.$route.path === this.$routeProStr + '/app/wechat/wechat_user/user/tag') {
|
||||
this.$modalForm(wechatTagCreateApi()).then(() => this.getList());
|
||||
} else {
|
||||
this.$modalForm(wechatGroupCreateApi()).then(() => this.getList());
|
||||
@ -84,7 +84,7 @@ export default {
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
if (this.$route.path === (this.$routeProStr + '/app/wechat/wechat_user/user/tag')) {
|
||||
if (this.$route.path === this.$routeProStr + '/app/wechat/wechat_user/user/tag') {
|
||||
this.$modalForm(wechatTagEditApi(row.id)).then(() => this.getList());
|
||||
} else {
|
||||
this.$modalForm(wechatGroupEditApi(row.id)).then(() => this.getList());
|
||||
@ -93,7 +93,7 @@ export default {
|
||||
// 删除
|
||||
del(row, tit, num) {
|
||||
let delfromData = null;
|
||||
if (this.$route.path === (this.$routeProStr + '/app/wechat/wechat_user/user/tag')) {
|
||||
if (this.$route.path === this.$routeProStr + '/app/wechat/wechat_user/user/tag') {
|
||||
delfromData = {
|
||||
title: tit,
|
||||
num: num,
|
||||
@ -123,7 +123,7 @@ export default {
|
||||
getList() {
|
||||
this.loading = true;
|
||||
let fountion;
|
||||
if (this.$route.path === (this.$routeProStr + '/app/wechat/wechat_user/user/tag')) {
|
||||
if (this.$route.path === this.$routeProStr + '/app/wechat/wechat_user/user/tag') {
|
||||
fountion = wechatTagListApi();
|
||||
} else {
|
||||
fountion = wechatGroupListApi();
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="i-layout-page-header header-title">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<div class="table_box">
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<span>
|
||||
<Button icon="ios-arrow-back" size="small" type="text" @click="$router.go(-1)">返回</Button>
|
||||
</span>
|
||||
<Divider type="vertical"/>
|
||||
<Divider type="vertical" />
|
||||
<span class="ivu-page-header-title">{{ $route.params.id ? '编辑文章' : '添加文章' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -37,7 +37,9 @@
|
||||
<FormItem label="文章分类:" label-for="cid" prop="cid">
|
||||
<div class="perW90">
|
||||
<Select v-model="formValidate.cid">
|
||||
<Option v-for="item in treeData" :value="item.id" :disabled="item.disabled" :key="item.id">{{ item.html + item.title }}</Option>
|
||||
<Option v-for="item in treeData" :value="item.id" :disabled="item.disabled" :key="item.id">{{
|
||||
item.html + item.title
|
||||
}}</Option>
|
||||
</Select>
|
||||
</div>
|
||||
</FormItem>
|
||||
|
||||
@ -85,44 +85,62 @@ export default {
|
||||
width: 100,
|
||||
align: 'center',
|
||||
});
|
||||
res.data.columns.map(item=>{
|
||||
if(item.from_type === 'frameImageOne'){
|
||||
item.render = (h,params)=>{
|
||||
return h('div',{
|
||||
class:'tabBox_img',
|
||||
directives:[{
|
||||
name:'viewer'
|
||||
}]
|
||||
},[
|
||||
h('img',{
|
||||
directives:[{
|
||||
name:'lazy',
|
||||
value: params.row[item.slot]
|
||||
}],
|
||||
})
|
||||
])
|
||||
}
|
||||
} else if(item.from_type === 'frameImages'){
|
||||
item.render = (h,params)=>{
|
||||
let image = params.row[item.slot] || []
|
||||
res.data.columns.map((item) => {
|
||||
if (item.from_type === 'frameImageOne') {
|
||||
item.render = (h, params) => {
|
||||
return h(
|
||||
'div',
|
||||
{
|
||||
class: 'tabBox_img',
|
||||
directives: [
|
||||
{
|
||||
name: 'viewer',
|
||||
},
|
||||
],
|
||||
},
|
||||
[
|
||||
h('img', {
|
||||
directives: [
|
||||
{
|
||||
name: 'lazy',
|
||||
value: params.row[item.slot],
|
||||
},
|
||||
],
|
||||
}),
|
||||
],
|
||||
);
|
||||
};
|
||||
} else if (item.from_type === 'frameImages') {
|
||||
item.render = (h, params) => {
|
||||
let image = params.row[item.slot] || [];
|
||||
let imageH = [];
|
||||
image.map(item=>{
|
||||
imageH.push(h('img',{
|
||||
directives:[{
|
||||
name:'lazy',
|
||||
value: item
|
||||
}],
|
||||
}));
|
||||
})
|
||||
return h('div',{
|
||||
class:'tabBox_img',
|
||||
directives:[{
|
||||
name:'viewer'
|
||||
}]
|
||||
},imageH)
|
||||
}
|
||||
image.map((item) => {
|
||||
imageH.push(
|
||||
h('img', {
|
||||
directives: [
|
||||
{
|
||||
name: 'lazy',
|
||||
value: item,
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
return h(
|
||||
'div',
|
||||
{
|
||||
class: 'tabBox_img',
|
||||
directives: [
|
||||
{
|
||||
name: 'viewer',
|
||||
},
|
||||
],
|
||||
},
|
||||
imageH,
|
||||
);
|
||||
};
|
||||
}
|
||||
})
|
||||
});
|
||||
this.columns = res.data.columns;
|
||||
this.getList();
|
||||
});
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="i-layout-page-header header-title">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Form :label-width="80" @submit.native.prevent>
|
||||
|
||||
@ -280,7 +280,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
/deep/.ivu-card-body {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
/>
|
||||
</FormItem>
|
||||
</Col>
|
||||
<Col >
|
||||
<Col>
|
||||
<Button type="primary" icon="ios-search" @click="userSearchs">搜索</Button>
|
||||
<Button v-auth="['export-userCommission']" class="export" icon="ios-share-outline" @click="exports"
|
||||
>导出
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="i-layout-page-header header-title">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Form
|
||||
|
||||
@ -301,7 +301,7 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
$route() {
|
||||
if (this.$route.fullPath === (this.$routeProStr +'/finance/user_extract/index?status=0')) {
|
||||
if (this.$route.fullPath === this.$routeProStr + '/finance/user_extract/index?status=0') {
|
||||
this.getPath();
|
||||
}
|
||||
},
|
||||
@ -316,7 +316,7 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
if (this.$route.fullPath === (this.$routeProStr + '/finance/user_extract/index?status=0')) {
|
||||
if (this.$route.fullPath === this.$routeProStr + '/finance/user_extract/index?status=0') {
|
||||
this.getPath();
|
||||
} else {
|
||||
this.getList();
|
||||
|
||||
@ -46,7 +46,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
.emoji {
|
||||
width: 380px;
|
||||
height: 186px;
|
||||
|
||||
@ -239,7 +239,7 @@ export default {
|
||||
this.$refs.goodslist.formValidate.is_virtual = 0;
|
||||
this.$refs.goodslist.getList();
|
||||
this.$refs.goodslist.goodsCategory();
|
||||
},
|
||||
},
|
||||
getCouponId(e) {
|
||||
this.formValidate.coupon_id = e.id;
|
||||
this.formValidate.coupon_title = e.coupon_title;
|
||||
|
||||
@ -241,7 +241,7 @@ export default {
|
||||
methods: {
|
||||
// 添加
|
||||
add() {
|
||||
this.$router.push({ path:this.$routeProStr + '/marketing/lottery/create' });
|
||||
this.$router.push({ path: this.$routeProStr + '/marketing/lottery/create' });
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
class="mr20"
|
||||
></DatePicker>
|
||||
</Card>
|
||||
<cards-data :cardLists="cardLists" v-if="cardLists.length >= 0"></cards-data>
|
||||
<cards-data :cardLists="cardLists" v-if="cardLists.length >= 0"></cards-data>
|
||||
<Card :bordered="false" dis-hover>
|
||||
<h3>积分使用趋势</h3>
|
||||
<echarts-new :option-data="optionData" :styles="style" height="100%" width="100%" v-if="optionData"></echarts-new>
|
||||
|
||||
@ -5,23 +5,23 @@
|
||||
<span>
|
||||
<Button icon="ios-arrow-back" size="small" type="text" @click="$router.go(-1)">返回</Button>
|
||||
</span>
|
||||
<Divider type="vertical"/>
|
||||
<Divider type="vertical" />
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<cards-data :cardLists="cardLists" v-if="cardLists.length >= 0"></cards-data>
|
||||
<div>
|
||||
<Tabs v-model="currentTab" @on-click="onClickTab">
|
||||
<TabPane v-for="(item, index) in tabs" :label="item.label" :name="item.type" :key="index"/>
|
||||
<TabPane v-for="(item, index) in tabs" :label="item.label" :name="item.type" :key="index" />
|
||||
</Tabs>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Form
|
||||
ref="pagination"
|
||||
:model="pagination"
|
||||
:label-width="labelWidth"
|
||||
label-position="right"
|
||||
@submit.native.prevent
|
||||
ref="pagination"
|
||||
:model="pagination"
|
||||
:label-width="labelWidth"
|
||||
label-position="right"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<Row type="flex" :gutter="24">
|
||||
<Col span="6" v-if="type == 1">
|
||||
@ -38,29 +38,29 @@
|
||||
<Col span="6">
|
||||
<FormItem label="搜索:" label-for="title">
|
||||
<Input
|
||||
search
|
||||
enter-button
|
||||
v-model="pagination.real_name"
|
||||
:placeholder="type == 1 ? '请输入用户姓名|订单号|UID' : '请输入用户UID'"
|
||||
@on-search="searchList"
|
||||
search
|
||||
enter-button
|
||||
v-model="pagination.real_name"
|
||||
:placeholder="type == 1 ? '请输入用户姓名|订单号|UID' : '请输入用户UID'"
|
||||
@on-search="searchList"
|
||||
/>
|
||||
</FormItem>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
<Table
|
||||
:columns="type ? thead2 : thead"
|
||||
:data="tbody"
|
||||
ref="table"
|
||||
class="mt25"
|
||||
:loading="loading"
|
||||
highlight-row
|
||||
no-userFrom-text="暂无数据"
|
||||
no-filtered-userFrom-text="暂无筛选结果"
|
||||
:columns="type ? thead2 : thead"
|
||||
:data="tbody"
|
||||
ref="table"
|
||||
class="mt25"
|
||||
:loading="loading"
|
||||
highlight-row
|
||||
no-userFrom-text="暂无数据"
|
||||
no-filtered-userFrom-text="暂无筛选结果"
|
||||
>
|
||||
<template slot-scope="{ row }" slot="avatar">
|
||||
<div class="tabBox_img" v-viewer>
|
||||
<img v-lazy="row.avatar"/>
|
||||
<img v-lazy="row.avatar" />
|
||||
</div>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="num">
|
||||
@ -77,43 +77,43 @@
|
||||
</Table>
|
||||
<div class="acea-row row-right page">
|
||||
<Page
|
||||
:total="total"
|
||||
:current="pagination.page"
|
||||
show-elevator
|
||||
show-total
|
||||
@on-change="pageChange"
|
||||
:page-size="pagination.limit"
|
||||
:total="total"
|
||||
:current="pagination.page"
|
||||
show-elevator
|
||||
show-total
|
||||
@on-change="pageChange"
|
||||
:page-size="pagination.limit"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<!-- 详情模态框-->
|
||||
<Modal
|
||||
v-model="modals"
|
||||
class="tableBox"
|
||||
scrollable
|
||||
footer-hide
|
||||
closable
|
||||
title="查看详情"
|
||||
:mask-closable="false"
|
||||
width="750"
|
||||
v-model="modals"
|
||||
class="tableBox"
|
||||
scrollable
|
||||
footer-hide
|
||||
closable
|
||||
title="查看详情"
|
||||
:mask-closable="false"
|
||||
width="750"
|
||||
>
|
||||
<Table
|
||||
ref="selection"
|
||||
:columns="columns2"
|
||||
:data="tabList3"
|
||||
:loading="loading2"
|
||||
no-data-text="暂无数据"
|
||||
highlight-row
|
||||
max-height="600"
|
||||
size="small"
|
||||
no-filtered-data-text="暂无筛选结果"
|
||||
ref="selection"
|
||||
:columns="columns2"
|
||||
:data="tabList3"
|
||||
:loading="loading2"
|
||||
no-data-text="暂无数据"
|
||||
highlight-row
|
||||
max-height="600"
|
||||
size="small"
|
||||
no-filtered-data-text="暂无筛选结果"
|
||||
>
|
||||
<template slot-scope="{ row }" slot="nickname">
|
||||
<span> {{ row.nickname + ' / ' + row.uid }}</span>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="avatar">
|
||||
<div class="tabBox_img" v-viewer>
|
||||
<img v-lazy="row.avatar"/>
|
||||
<img v-lazy="row.avatar" />
|
||||
</div>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="action">
|
||||
@ -136,7 +136,7 @@ import {
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
components: {cardsData},
|
||||
components: { cardsData },
|
||||
data() {
|
||||
return {
|
||||
modals: false,
|
||||
@ -326,14 +326,14 @@ export default {
|
||||
if (this.type == 0) {
|
||||
getbargainStatisticsPeople(this.id, this.pagination).then((res) => {
|
||||
this.loading = false;
|
||||
const {count, list} = res.data;
|
||||
const { count, list } = res.data;
|
||||
this.total = count;
|
||||
this.tbody = list;
|
||||
});
|
||||
} else {
|
||||
getbargainStatisticsOrder(this.id, this.pagination).then((res) => {
|
||||
this.loading = false;
|
||||
const {count, list} = res.data;
|
||||
const { count, list } = res.data;
|
||||
this.total = count;
|
||||
this.tbody = list;
|
||||
});
|
||||
@ -359,15 +359,15 @@ export default {
|
||||
this.modals = true;
|
||||
this.rows = row;
|
||||
bargainUserInfoApi(row.id)
|
||||
.then(async (res) => {
|
||||
let data = res.data;
|
||||
this.tabList3 = data.list;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then(async (res) => {
|
||||
let data = res.data;
|
||||
this.tabList3 = data.list;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@ -361,5 +361,4 @@ export default {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<Row type="flex" :gutter="24">
|
||||
<Col span="6" v-if="type == 1">
|
||||
<FormItem label="订单状态:" label-for="status">
|
||||
<Select v-model="pagination.status" placeholder="请选择订单状态" clearable @on-change="searchList">
|
||||
<Select v-model="pagination.status" placeholder="请选择订单状态" clearable @on-change="searchList">
|
||||
<Option value="0">未支付</Option>
|
||||
<Option value="1">待发货</Option>
|
||||
<Option value="2">待收货</Option>
|
||||
|
||||
@ -11,7 +11,12 @@
|
||||
<Row :gutter="24">
|
||||
<Col span="8" class="ivu-text-left">
|
||||
<FormItem label="订单状态:">
|
||||
<RadioGroup v-model="orderData.status" type="button" @on-change="selectChange2(orderData.status)" style="width: 400px">
|
||||
<RadioGroup
|
||||
v-model="orderData.status"
|
||||
type="button"
|
||||
@on-change="selectChange2(orderData.status)"
|
||||
style="width: 400px"
|
||||
>
|
||||
<Radio label="">全部 {{ '(' + orderChartType.statusAll ? orderChartType.statusAll : 0 + ')' }}</Radio>
|
||||
<Radio label="1">未发货 {{ '(' + orderChartType.unshipped ? orderChartType.unshipped : 0 + ')' }}</Radio>
|
||||
<Radio label="2">待收货 {{ '(' + orderChartType.untake ? orderChartType.untake : 0 + ')' }}</Radio>
|
||||
|
||||
@ -221,7 +221,7 @@ export default {
|
||||
methods: {
|
||||
// 添加
|
||||
add() {
|
||||
this.$router.push({ path:this.$routeProStr + '/marketing/presell/create/0' });
|
||||
this.$router.push({ path: this.$routeProStr + '/marketing/presell/create/0' });
|
||||
},
|
||||
// 导出
|
||||
exports() {
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
:label-position="labelPosition"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<Row type="flex" :gutter="24" v-if="$route.path === ($routeProStr +'/setting/sms/sms_template_apply/index')">
|
||||
<Row type="flex" :gutter="24" v-if="$route.path === $routeProStr + '/setting/sms/sms_template_apply/index'">
|
||||
<!-- <Col v-bind="grid">-->
|
||||
<!-- <FormItem label="模板类型:">-->
|
||||
<!-- <Select v-model="levelFrom.type" placeholder="请选择" clearable @on-change="userSearchs">-->
|
||||
@ -71,7 +71,7 @@
|
||||
<template
|
||||
slot-scope="{ row, index }"
|
||||
slot="is_have"
|
||||
v-if="$route.path === ($routeProStr + '/setting/sms/sms_template_apply/commons')"
|
||||
v-if="$route.path === $routeProStr + '/setting/sms/sms_template_apply/commons'"
|
||||
>
|
||||
<span v-show="row.status === 1">有</span>
|
||||
<span v-show="row.status === 0">没有</span>
|
||||
@ -177,9 +177,12 @@ export default {
|
||||
this.levelFrom.status = this.levelFrom.status || '';
|
||||
this.levelFrom.is_have = this.levelFrom.is_have || '';
|
||||
let data = {
|
||||
data: this.$route.path === (this.$routeProStr +'/setting/sms/sms_template_apply/index') ? this.levelFrom : this.levelFrom2,
|
||||
data:
|
||||
this.$route.path === this.$routeProStr + '/setting/sms/sms_template_apply/index'
|
||||
? this.levelFrom
|
||||
: this.levelFrom2,
|
||||
url:
|
||||
this.$route.path === (this.$routeProStr + '/setting/sms/sms_template_apply/index')
|
||||
this.$route.path === this.$routeProStr + '/setting/sms/sms_template_apply/index'
|
||||
? 'serve/sms/temps'
|
||||
: 'notify/sms/public_temp',
|
||||
};
|
||||
@ -216,7 +219,7 @@ export default {
|
||||
minWidth: 100,
|
||||
},
|
||||
];
|
||||
if (this.$route.path === (this.$routeProStr + '/setting/sms/sms_template_apply/commons')) {
|
||||
if (this.$route.path === this.$routeProStr + '/setting/sms/sms_template_apply/commons') {
|
||||
this.columns1 = Object.assign([], columns1)
|
||||
.slice(0, 6)
|
||||
.concat([
|
||||
|
||||
@ -276,7 +276,7 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
$route() {
|
||||
if (this.$route.fullPath === (this.$routeProStr + '/order/list?status=1')) {
|
||||
if (this.$route.fullPath === this.$routeProStr + '/order/list?status=1') {
|
||||
this.getPath();
|
||||
}
|
||||
},
|
||||
@ -284,7 +284,7 @@ export default {
|
||||
created() {
|
||||
// this.timeVal = this.today;
|
||||
// this.orderData.data = this.timeVal.join('-');
|
||||
if (this.$route.fullPath === (this.$routeProStr + '/order/list?status=1')) {
|
||||
if (this.$route.fullPath === this.$routeProStr + '/order/list?status=1') {
|
||||
this.getPath();
|
||||
}
|
||||
},
|
||||
|
||||
@ -18,7 +18,9 @@
|
||||
<Col span="12" class="fontColor1"
|
||||
>订单状态:{{ orderDatalist.orderInfo._status._title }}
|
||||
{{
|
||||
orderDatalist.orderInfo.refund && orderDatalist.orderInfo.refund.length && orderDatalist.orderInfo.refund_status < 2
|
||||
orderDatalist.orderInfo.refund &&
|
||||
orderDatalist.orderInfo.refund.length &&
|
||||
orderDatalist.orderInfo.refund_status < 2
|
||||
? orderDatalist.orderInfo.is_all_refund
|
||||
? '退款中'
|
||||
: '部分退款中'
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper" v-if="tabCur == 0">
|
||||
<div class="wrapper" v-if="tabCur == 0">
|
||||
<div v-for="(item, index) in leftMenu" :key="index">
|
||||
<div class="tips" @click="item.isOpen = !item.isOpen">
|
||||
{{ item.title }}
|
||||
@ -480,7 +480,7 @@ export default {
|
||||
if (evt.moved.element.name == 'search_box' || evt.moved.element.name == 'nav_bar') {
|
||||
return this.$Message.warning('该组件禁止拖拽');
|
||||
}
|
||||
|
||||
|
||||
// if (evt.moved.element.name == "nav_bar") {
|
||||
// return this.$Message.warning("该组件禁止拖拽");
|
||||
// }
|
||||
|
||||
@ -66,7 +66,9 @@
|
||||
v-if="row.is_diy === 1"
|
||||
class="target"
|
||||
ref="target"
|
||||
:href="`${url}${$routeProStr}/setting/pages/diy_index?id=${row.id}&name=${row.template_name || 'moren'}`"
|
||||
:href="`${url}${$routeProStr}/setting/pages/diy_index?id=${row.id}&name=${
|
||||
row.template_name || 'moren'
|
||||
}`"
|
||||
target="_blank"
|
||||
>
|
||||
编辑</a
|
||||
|
||||
@ -157,7 +157,10 @@ export default {
|
||||
this.$refs[name].validate((valid) => {
|
||||
if (valid) {
|
||||
setCookies('moveLink', this.formItem.link);
|
||||
this.$router.push({ path: this.$routeProStr + '/setting/pages/diy', query: { id: this.formItem.id, type: 1 } });
|
||||
this.$router.push({
|
||||
path: this.$routeProStr + '/setting/pages/diy',
|
||||
query: { id: this.formItem.id, type: 1 },
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -39,16 +39,16 @@
|
||||
</viewer>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="one_brokerage">
|
||||
<span>{{row.one_brokerage}}%</span>
|
||||
<span>{{ row.one_brokerage }}%</span>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="one_brokerage_ratio">
|
||||
<span>{{row.one_brokerage_ratio}}%</span>
|
||||
<span>{{ row.one_brokerage_ratio }}%</span>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="two_brokerage">
|
||||
<span>{{row.two_brokerage}}%</span>
|
||||
<span>{{ row.two_brokerage }}%</span>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="two_brokerage_ratio">
|
||||
<span>{{row.two_brokerage_ratio}}%</span>
|
||||
<span>{{ row.two_brokerage_ratio }}%</span>
|
||||
</template>
|
||||
<template slot-scope="{ row }" slot="status">
|
||||
<i-switch
|
||||
|
||||
@ -48,9 +48,9 @@
|
||||
</Card>
|
||||
<Alert class="mt10" closable="true">
|
||||
使用说明
|
||||
<template slot="desc" >
|
||||
1、前端页面:添加用户端页面语言,添加完成之后状态码为中文文字,前端页面使用 $t(`xxxx`),js文件中使用 this.t(`xxxx`) 或者使用
|
||||
that.t(`xxxx`)<br />
|
||||
<template slot="desc">
|
||||
1、前端页面:添加用户端页面语言,添加完成之后状态码为中文文字,前端页面使用 $t(`xxxx`),js文件中使用
|
||||
this.t(`xxxx`) 或者使用 that.t(`xxxx`)<br />
|
||||
2、后端接口:添加后端接口语言,添加完成之后状态码为6位数字,后台抛错或者控制器返回文字的时候直接填写状态码数字
|
||||
</template>
|
||||
</Alert>
|
||||
@ -95,7 +95,7 @@
|
||||
@on-cancel="addlangModal = false"
|
||||
@on-visible-change="modalChange"
|
||||
>
|
||||
<Form ref="langFormData" :model="langFormData" :rules="ruleValidate" >
|
||||
<Form ref="langFormData" :model="langFormData" :rules="ruleValidate">
|
||||
<FormItem label="应用端:" class="mb20" :label-width="120">
|
||||
<RadioGroup type="button" v-model="langFormData.is_admin" class="mr15">
|
||||
<Radio :label="item.value" v-for="(item, index) in langType.isAdmin" :key="index">{{ item.title }}</Radio>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div >
|
||||
<div>
|
||||
<div class="message">
|
||||
<Card :bordered="false" dis-hover class="">
|
||||
<div class="mb20">
|
||||
|
||||
@ -25,9 +25,7 @@
|
||||
</Row>
|
||||
<Row type="flex">
|
||||
<Col v-bind="grid">
|
||||
<Button type="primary" @click="menusAdd('添加规则')" icon="md-add"
|
||||
>添加规则
|
||||
</Button>
|
||||
<Button type="primary" @click="menusAdd('添加规则')" icon="md-add">添加规则 </Button>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
@ -47,8 +45,8 @@
|
||||
<vxe-table-column field="unique_auth" title="前端权限" min-width="200"></vxe-table-column>
|
||||
<vxe-table-column field="menu_path" title="路由" min-width="240" tooltip="true">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.auth_type == 1">页面:{{row.menu_path}}</span>
|
||||
<span v-if="row.auth_type == 2">接口:[{{row.methods}}]{{row.api_url}}</span>
|
||||
<span v-if="row.auth_type == 1">页面:{{ row.menu_path }}</span>
|
||||
<span v-if="row.auth_type == 2">接口:[{{ row.methods }}]{{ row.api_url }}</span>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
<vxe-table-column field="flag" title="规则状态" min-width="120">
|
||||
|
||||
@ -389,7 +389,12 @@
|
||||
<Input v-model="value" placeholder="请输入分组名称" style="width: 85%" />
|
||||
</Modal>
|
||||
<Modal v-model="debuggingModal" :title="formValidate.name" width="70%" footer-hide :loading="loading">
|
||||
<debugging v-if="debuggingModal" :formValidate="formValidate" :typeList="typeList" :requestTypeList="requestTypeList" />
|
||||
<debugging
|
||||
v-if="debuggingModal"
|
||||
:formValidate="formValidate"
|
||||
:typeList="typeList"
|
||||
:requestTypeList="requestTypeList"
|
||||
/>
|
||||
</Modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -41,8 +41,13 @@
|
||||
</Col>
|
||||
<Col span="12" class="mr">
|
||||
<FormItem label="选择门店:" label-for="store_name">
|
||||
|
||||
<Select v-model="formValidate.store_id" element-id="store_id" clearable @on-change="userSearchs" style="width: 430px">
|
||||
<Select
|
||||
v-model="formValidate.store_id"
|
||||
element-id="store_id"
|
||||
clearable
|
||||
@on-change="userSearchs"
|
||||
style="width: 430px"
|
||||
>
|
||||
<Option v-for="item in storeSelectList" :value="item.id" :key="item.id">{{ item.name }}</Option>
|
||||
</Select>
|
||||
</FormItem>
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
placeholder="请选择时间"
|
||||
style="width: 200px"
|
||||
:options="options"
|
||||
class="mr20 "
|
||||
class="mr20"
|
||||
></DatePicker>
|
||||
</Card>
|
||||
<cards-data :cardLists="cardLists" v-if="cardLists.length >= 0"></cards-data>
|
||||
|
||||
@ -109,7 +109,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.ivu-form-item {
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 0;
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<Alert closable>
|
||||
crud生成说明 不能生成系统自带的表;已经生成过的表还能继续生成
|
||||
</Alert>
|
||||
<Alert closable> crud生成说明 不能生成系统自带的表;已经生成过的表还能继续生成 </Alert>
|
||||
<Form ref="foundation" :model="foundation" :rules="foundationRules" :label-width="100">
|
||||
<FormItem label="菜单">
|
||||
<!-- <Select class="form-width" v-model="foundation.pid">
|
||||
|
||||
@ -67,10 +67,8 @@ export default {
|
||||
storageRules: {},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
created() {},
|
||||
mounted() {},
|
||||
methods: {},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -185,45 +185,47 @@ export default {
|
||||
data.id = this.id;
|
||||
this.$Modal.confirm({
|
||||
title: '生成提醒',
|
||||
content: '重新提交会重新生成文件,<span style="color: red">删除、新增、修改</span>的字段将直接从改表中进行修改,请慎重操作!!',
|
||||
content:
|
||||
'重新提交会重新生成文件,<span style="color: red">删除、新增、修改</span>的字段将直接从改表中进行修改,请慎重操作!!',
|
||||
loading: true,
|
||||
onOk:() => {
|
||||
this.saveCodeCrud(data,true);
|
||||
onOk: () => {
|
||||
this.saveCodeCrud(data, true);
|
||||
},
|
||||
})
|
||||
}else{
|
||||
});
|
||||
} else {
|
||||
this.$Modal.confirm({
|
||||
title: '生成提醒',
|
||||
content: '生成后本地开发调试会直接加载生成的vue页面;如果是上线后进行生成,可以进行浏览,代码生成列表中的修改文件将不生效。需要重新打包上线!',
|
||||
content:
|
||||
'生成后本地开发调试会直接加载生成的vue页面;如果是上线后进行生成,可以进行浏览,代码生成列表中的修改文件将不生效。需要重新打包上线!',
|
||||
loading: true,
|
||||
onOk:() => {
|
||||
this.saveCodeCrud(data,true);
|
||||
onOk: () => {
|
||||
this.saveCodeCrud(data, true);
|
||||
},
|
||||
})
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (this.currentTab < 3) this.currentTab++;
|
||||
}
|
||||
},
|
||||
saveCodeCrud(data,loading){
|
||||
saveCodeCrud(data, loading) {
|
||||
this.reqloading = true;
|
||||
codeCrud(data)
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getMenusUnique();
|
||||
this.reqloading = false;
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getMenusUnique();
|
||||
this.reqloading = false;
|
||||
|
||||
if(loading){
|
||||
this.$Modal.remove()
|
||||
}
|
||||
this.$router.push({
|
||||
name: 'system_code_generation_list',
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
this.reqloading = false;
|
||||
this.$Message.error(err.msg);
|
||||
if (loading) {
|
||||
this.$Modal.remove();
|
||||
}
|
||||
this.$router.push({
|
||||
name: 'system_code_generation_list',
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
this.reqloading = false;
|
||||
this.$Message.error(err.msg);
|
||||
});
|
||||
},
|
||||
getMenusUnique() {
|
||||
getMenusUnique().then((res) => {
|
||||
|
||||
@ -3,7 +3,8 @@
|
||||
<Alert closable="true">
|
||||
<template slot="desc">
|
||||
启动定时任务两种方式:<br />
|
||||
1、使用命令启动:php think timer start --d;如果更改了执行周期、编辑是否开启、删除定时任务需要重新启动下定时任务确保生效;<br />
|
||||
1、使用命令启动:php think timer start
|
||||
--d;如果更改了执行周期、编辑是否开启、删除定时任务需要重新启动下定时任务确保生效;<br />
|
||||
2、使用接口触发定时任务,建议每分钟调用一次,接口地址 https://您的域名/api/crontab/run
|
||||
</template>
|
||||
</Alert>
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="i-layout-page-header header-title">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="clear_tit">
|
||||
<Icon type="md-information-circle" color="#ED4014" />
|
||||
<span>清除数据请谨慎,清除就无法恢复哦!</span>
|
||||
</span>
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
<span class="clear_tit">
|
||||
<Icon type="md-information-circle" color="#ED4014" />
|
||||
<span>清除数据请谨慎,清除就无法恢复哦!</span>
|
||||
</span>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Row type="flex" :gutter="24">
|
||||
|
||||
@ -4,8 +4,7 @@
|
||||
<div v-if="isShowList" class="backs-box">
|
||||
<div class="backs">
|
||||
<span class="back" @click="goBack(false)"><Icon type="md-arrow-round-back" class="icon" /></span>
|
||||
<span class="item" v-for="(item, index) in routeList" :key="index" @click="jumpRoute(item)"
|
||||
>
|
||||
<span class="item" v-for="(item, index) in routeList" :key="index" @click="jumpRoute(item)">
|
||||
<span class="key">{{ item.key }}</span>
|
||||
<Icon class="forward" v-if="index < routeList.length - 1" type="ios-arrow-forward" />
|
||||
</span>
|
||||
@ -207,7 +206,7 @@ export default {
|
||||
slot: 'filename',
|
||||
minWidth: 150,
|
||||
back: '返回上级',
|
||||
sortable: true
|
||||
sortable: true,
|
||||
},
|
||||
// {
|
||||
// title: '文件/文件夹路径',
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<Row class="ivu-mt box-wrapper">
|
||||
<Col v-bind="grid1" class="left-wrapper">
|
||||
<Col v-bind="grid1" class="left-wrapper">
|
||||
<Menu :theme="theme3" :active-name="sortName" width="auto">
|
||||
<MenuGroup>
|
||||
<MenuItem
|
||||
@ -69,7 +69,14 @@
|
||||
</template>
|
||||
</Table>
|
||||
<div class="acea-row row-right page">
|
||||
<Page :total="total" :model-value="labelFrom.page" show-elevator show-total @on-change="pageChange" :page-size="labelFrom.limit" />
|
||||
<Page
|
||||
:total="total"
|
||||
:model-value="labelFrom.page"
|
||||
show-elevator
|
||||
show-total
|
||||
@on-change="pageChange"
|
||||
:page-size="labelFrom.limit"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
</Col>
|
||||
|
||||
@ -101,8 +101,8 @@
|
||||
</i-switch>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="action">
|
||||
<!-- <a @click="edit(row)">编辑</a>-->
|
||||
<!-- <Divider type="vertical" />-->
|
||||
<!-- <a @click="edit(row)">编辑</a>-->
|
||||
<!-- <Divider type="vertical" />-->
|
||||
<template>
|
||||
<Dropdown @on-click="changeMenu(row, $event, index)" :transfer="true">
|
||||
<a href="javascript:void(0)">
|
||||
@ -110,7 +110,7 @@
|
||||
<Icon type="ios-arrow-down"></Icon>
|
||||
</a>
|
||||
<DropdownMenu slot="list">
|
||||
<!-- <DropdownItem name="1">等级任务</DropdownItem>-->
|
||||
<!-- <DropdownItem name="1">等级任务</DropdownItem>-->
|
||||
<DropdownItem name="3">编辑等级</DropdownItem>
|
||||
<DropdownItem name="2">删除等级</DropdownItem>
|
||||
</DropdownMenu>
|
||||
@ -280,7 +280,7 @@ export default {
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.levelLists.splice(num, 1);
|
||||
this.total--
|
||||
this.total--;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const pre = 'agent_';
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
# CRMEB ADMIN CRUD 路由存放
|
||||
|
||||
|
||||
此目录下的所有路由会被自动加载到router,无需其他配置
|
||||
此目录下的所有路由会被自动加载到 router,无需其他配置
|
||||
|
||||
可以对此路由进行修改删除
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const pre = 'division_';
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
* @Author: From-wh from-wh@hotmail.com
|
||||
* @Date: 2023-02-21 09:14:27
|
||||
* @FilePath: /admin/src/router/modules/echarts.js
|
||||
* @Description:
|
||||
* @Description:
|
||||
*/
|
||||
// +---------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
@ -15,13 +15,13 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const pre = 'echarts_';
|
||||
|
||||
export default {
|
||||
path: routePre+'/echarts',
|
||||
path: routePre + '/echarts',
|
||||
name: 'echarts',
|
||||
header: 'echarts',
|
||||
redirect: {
|
||||
|
||||
@ -9,12 +9,12 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const pre = 'finance_';
|
||||
export default {
|
||||
path: routePre+'/finance',
|
||||
path: routePre + '/finance',
|
||||
name: 'finance',
|
||||
header: 'finance',
|
||||
meta: {
|
||||
|
||||
@ -9,13 +9,13 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const pre = 'order_';
|
||||
|
||||
export default {
|
||||
path: routePre+'/order',
|
||||
path: routePre + '/order',
|
||||
name: 'order',
|
||||
header: 'order',
|
||||
redirect: {
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const meta = {
|
||||
@ -19,7 +19,7 @@ const meta = {
|
||||
const pre = 'statistic_';
|
||||
|
||||
export default {
|
||||
path: routePre+'/statistic',
|
||||
path: routePre + '/statistic',
|
||||
name: 'statistic',
|
||||
header: 'statistic',
|
||||
redirect: {
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// +---------------------------------------------------------------------
|
||||
|
||||
import LayoutMain from '@/layout';
|
||||
import setting from '@/setting'
|
||||
import setting from '@/setting';
|
||||
let routePre = setting.routePre;
|
||||
|
||||
const meta = {
|
||||
@ -19,7 +19,7 @@ const meta = {
|
||||
const pre = 'user_';
|
||||
|
||||
export default {
|
||||
path: routePre+'/user',
|
||||
path: routePre + '/user',
|
||||
name: 'user',
|
||||
header: 'user',
|
||||
redirect: {
|
||||
|
||||
@ -97,6 +97,6 @@ export default new Vuex.Store({
|
||||
routesList,
|
||||
tagsViewRoutes,
|
||||
userInfos,
|
||||
keepAliveNames
|
||||
keepAliveNames,
|
||||
},
|
||||
});
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
const keepAliveNamesModule = {
|
||||
namespaced: true,
|
||||
state: {
|
||||
keepAliveNames: [],
|
||||
},
|
||||
mutations: {
|
||||
// 设置路由缓存(name字段)
|
||||
getCacheKeepAlive(state, data) {
|
||||
state.keepAliveNames = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置路由缓存(name字段)
|
||||
async setCacheKeepAlive({ commit }, data) {
|
||||
commit('getCacheKeepAlive', data);
|
||||
},
|
||||
},
|
||||
namespaced: true,
|
||||
state: {
|
||||
keepAliveNames: [],
|
||||
},
|
||||
mutations: {
|
||||
// 设置路由缓存(name字段)
|
||||
getCacheKeepAlive(state, data) {
|
||||
state.keepAliveNames = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置路由缓存(name字段)
|
||||
async setCacheKeepAlive({ commit }, data) {
|
||||
commit('getCacheKeepAlive', data);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default keepAliveNamesModule;
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
const tagsViewRoutesModule = {
|
||||
namespaced: true,
|
||||
state: {
|
||||
tagsViewRoutes: [],
|
||||
},
|
||||
mutations: {
|
||||
// 设置 TagsView 路由
|
||||
getTagsViewRoutes(state, data) {
|
||||
state.tagsViewRoutes = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置 TagsView 路由
|
||||
async setTagsViewRoutes({ commit }, data) {
|
||||
commit('getTagsViewRoutes', data);
|
||||
},
|
||||
},
|
||||
namespaced: true,
|
||||
state: {
|
||||
tagsViewRoutes: [],
|
||||
},
|
||||
mutations: {
|
||||
// 设置 TagsView 路由
|
||||
getTagsViewRoutes(state, data) {
|
||||
state.tagsViewRoutes = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置 TagsView 路由
|
||||
async setTagsViewRoutes({ commit }, data) {
|
||||
commit('getTagsViewRoutes', data);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default tagsViewRoutesModule;
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
import { Session } from '@/utils/storage.js';
|
||||
|
||||
const userInfosModule = {
|
||||
namespaced: true,
|
||||
state: {
|
||||
userInfos: {},
|
||||
},
|
||||
mutations: {
|
||||
// 设置用户信息
|
||||
getUserInfos(state, data) {
|
||||
state.userInfos = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置用户信息
|
||||
async setUserInfos({ commit }, data) {
|
||||
if (data) {
|
||||
commit('getUserInfos', data);
|
||||
} else {
|
||||
if (Session.get('userInfo')) commit('getUserInfos', Session.get('userInfo'));
|
||||
}
|
||||
},
|
||||
},
|
||||
namespaced: true,
|
||||
state: {
|
||||
userInfos: {},
|
||||
},
|
||||
mutations: {
|
||||
// 设置用户信息
|
||||
getUserInfos(state, data) {
|
||||
state.userInfos = data;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 设置用户信息
|
||||
async setUserInfos({ commit }, data) {
|
||||
if (data) {
|
||||
commit('getUserInfos', data);
|
||||
} else {
|
||||
if (Session.get('userInfo')) commit('getUserInfos', Session.get('userInfo'));
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default userInfosModule;
|
||||
|
||||
@ -716,11 +716,11 @@ body {
|
||||
.pt10 {
|
||||
padding-top: 10px;
|
||||
}
|
||||
.common-form-create-footer{
|
||||
.common-form-create-footer {
|
||||
display: flex;
|
||||
justify-content: right;
|
||||
}
|
||||
.common-form-button{
|
||||
.common-form-button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
@ -93,7 +93,7 @@ body,
|
||||
.layout-aside-width-default {
|
||||
width: 180px !important;
|
||||
transition: width 0.3s ease;
|
||||
box-shadow: 1px 1px 4px rgba(0,21,41,.08);
|
||||
box-shadow: 1px 1px 4px rgba(0, 21, 41, 0.08);
|
||||
}
|
||||
.layout-aside-width64 {
|
||||
width: 64px !important;
|
||||
|
||||
@ -4,99 +4,99 @@
|
||||
.slide-right-leave-active,
|
||||
.slide-left-enter-active,
|
||||
.slide-left-leave-active {
|
||||
will-change: transform;
|
||||
transition: all 0.3s ease;
|
||||
will-change: transform;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
// slide-right
|
||||
.slide-right-enter {
|
||||
opacity: 0;
|
||||
transform: translateX(-20px);
|
||||
opacity: 0;
|
||||
transform: translateX(-20px);
|
||||
}
|
||||
.slide-right-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateX(20px);
|
||||
opacity: 0;
|
||||
transform: translateX(20px);
|
||||
}
|
||||
// slide-left
|
||||
.slide-left-enter-from {
|
||||
@extend .slide-right-leave-active;
|
||||
@extend .slide-right-leave-active;
|
||||
}
|
||||
.slide-left-leave-to {
|
||||
@extend .slide-right-enter;
|
||||
@extend .slide-right-enter;
|
||||
}
|
||||
// opacitys
|
||||
.opacitys-enter-active,
|
||||
.opacitys-leave-active {
|
||||
will-change: transform;
|
||||
transition: all 0.3s ease;
|
||||
will-change: transform;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.opacitys-enter,
|
||||
.opacitys-leave-active {
|
||||
opacity: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Breadcrumb 面包屑过渡动画
|
||||
------------------------------- */
|
||||
.breadcrumb-enter-active,
|
||||
.breadcrumb-leave-active {
|
||||
// transition: all 0.3s;
|
||||
// transition: all 0.3s;
|
||||
}
|
||||
.breadcrumb-enter,
|
||||
.breadcrumb-leave-active {
|
||||
opacity: 0;
|
||||
// transform: translateX(20px);
|
||||
opacity: 0;
|
||||
// transform: translateX(20px);
|
||||
}
|
||||
.breadcrumb-move {
|
||||
// transition: all 0.3s;
|
||||
// transition: all 0.3s;
|
||||
}
|
||||
.breadcrumb-leave-active {
|
||||
position: absolute;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* logo 过渡动画
|
||||
------------------------------- */
|
||||
@keyframes logoAnimation {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
80% {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
80% {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* 404、401 过渡动画
|
||||
------------------------------- */
|
||||
@keyframes error-num {
|
||||
0% {
|
||||
transform: translateY(60px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
0% {
|
||||
transform: translateY(60px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@keyframes error-img {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 左右左 link.vue
|
||||
------------------------------- */
|
||||
@keyframes toRight {
|
||||
0% {
|
||||
left: -5px;
|
||||
}
|
||||
50% {
|
||||
left: 100%;
|
||||
}
|
||||
100% {
|
||||
left: -5px;
|
||||
}
|
||||
0% {
|
||||
left: -5px;
|
||||
}
|
||||
50% {
|
||||
left: 100%;
|
||||
}
|
||||
100% {
|
||||
left: -5px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,109 +1,109 @@
|
||||
/* 深色模式样式
|
||||
------------------------------- */
|
||||
[data-theme='dark'] {
|
||||
--prev-bg-menuBar: #191919 !important;
|
||||
--prev-bg-menuBarColor: #dadada !important;
|
||||
--prev-bg-topBar: #191919 !important;
|
||||
--prev-bg-topBarColor: #dadada !important;
|
||||
--prev-bg-columnsMenuBar: #191919 !important;
|
||||
--prev-bg-columnsMenuBarColor: #dadada !important;
|
||||
--prev-bg-main-color: #1f1f1f !important;
|
||||
--prev-bg-color: rgba(0, 0, 0, 0.3) !important;
|
||||
--prev-bg-white: #191919 !important;
|
||||
--prev-color-text-black: #ffffff !important;
|
||||
--prev-color-text-primary: #dadada !important;
|
||||
--prev-color-text-regular: #dadada !important;
|
||||
--prev-color-text-secondary: #a3a3a3 !important;
|
||||
--prev-color-hover: rgba(0, 0, 0, 0.3) !important;
|
||||
--prev-color-seting-main: #505050 !important;
|
||||
--prev-color-seting-aside: #3c3c3c !important;
|
||||
--prev-color-seting-header: #303030 !important;
|
||||
--prev-border-color-hover: #616161 !important;
|
||||
--prev-border-color-base: #333333 !important;
|
||||
--prev-border-color-light: #333333 !important;
|
||||
--prev-border-color-lighter: #333333 !important;
|
||||
--prev-border-color-extra-light: #333333 !important;
|
||||
--prev-bg-menuBar: #191919 !important;
|
||||
--prev-bg-menuBarColor: #dadada !important;
|
||||
--prev-bg-topBar: #191919 !important;
|
||||
--prev-bg-topBarColor: #dadada !important;
|
||||
--prev-bg-columnsMenuBar: #191919 !important;
|
||||
--prev-bg-columnsMenuBarColor: #dadada !important;
|
||||
--prev-bg-main-color: #1f1f1f !important;
|
||||
--prev-bg-color: rgba(0, 0, 0, 0.3) !important;
|
||||
--prev-bg-white: #191919 !important;
|
||||
--prev-color-text-black: #ffffff !important;
|
||||
--prev-color-text-primary: #dadada !important;
|
||||
--prev-color-text-regular: #dadada !important;
|
||||
--prev-color-text-secondary: #a3a3a3 !important;
|
||||
--prev-color-hover: rgba(0, 0, 0, 0.3) !important;
|
||||
--prev-color-seting-main: #505050 !important;
|
||||
--prev-color-seting-aside: #3c3c3c !important;
|
||||
--prev-color-seting-header: #303030 !important;
|
||||
--prev-border-color-hover: #616161 !important;
|
||||
--prev-border-color-base: #333333 !important;
|
||||
--prev-border-color-light: #333333 !important;
|
||||
--prev-border-color-lighter: #333333 !important;
|
||||
--prev-border-color-extra-light: #333333 !important;
|
||||
|
||||
// menu
|
||||
.layout-aside {
|
||||
border-right: 1px solid var(--prev-border-color-lighter) !important;
|
||||
}
|
||||
// menu
|
||||
.layout-aside {
|
||||
border-right: 1px solid var(--prev-border-color-lighter) !important;
|
||||
}
|
||||
|
||||
// drawer
|
||||
.el-drawer {
|
||||
border-left: 1px solid var(--prev-border-color-lighter) !important;
|
||||
}
|
||||
// drawer
|
||||
.el-drawer {
|
||||
border-left: 1px solid var(--prev-border-color-lighter) !important;
|
||||
}
|
||||
|
||||
// button
|
||||
.el-button--default {
|
||||
background: var(--prev-bg-white);
|
||||
color: var(--prev-color-text-primary);
|
||||
border-color: var(--prev-border-color-lighter);
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--prev-color-primary) !important;
|
||||
background: var(--prev-color-primary-light-8) !important;
|
||||
border-color: var(--prev-color-primary-light-6) !important;
|
||||
}
|
||||
&:focus {
|
||||
border-color: var(--prev-color-primary-light-1) !important;
|
||||
}
|
||||
&:active {
|
||||
border-color: var(--prev-color-primary-light-6) !important;
|
||||
}
|
||||
}
|
||||
// button
|
||||
.el-button--default {
|
||||
background: var(--prev-bg-white);
|
||||
color: var(--prev-color-text-primary);
|
||||
border-color: var(--prev-border-color-lighter);
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--prev-color-primary) !important;
|
||||
background: var(--prev-color-primary-light-8) !important;
|
||||
border-color: var(--prev-color-primary-light-6) !important;
|
||||
}
|
||||
&:focus {
|
||||
border-color: var(--prev-color-primary-light-1) !important;
|
||||
}
|
||||
&:active {
|
||||
border-color: var(--prev-color-primary-light-6) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// tag
|
||||
.el-tag.el-tag--info {
|
||||
background-color: var(--prev-bg-white) !important;
|
||||
border-color: var(--prev-border-color-light) !important;
|
||||
color: var(--prev-color-text-regular) !important;
|
||||
}
|
||||
// tag
|
||||
.el-tag.el-tag--info {
|
||||
background-color: var(--prev-bg-white) !important;
|
||||
border-color: var(--prev-border-color-light) !important;
|
||||
color: var(--prev-color-text-regular) !important;
|
||||
}
|
||||
|
||||
// switch
|
||||
.el-switch:not(.is-checked) {
|
||||
.el-switch__core {
|
||||
border-color: var(--prev-border-color-base) !important;
|
||||
background-color: var(--prev-border-color-base) !important;
|
||||
}
|
||||
}
|
||||
// switch
|
||||
.el-switch:not(.is-checked) {
|
||||
.el-switch__core {
|
||||
border-color: var(--prev-border-color-base) !important;
|
||||
background-color: var(--prev-border-color-base) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// TimePicker
|
||||
.el-time-spinner__item.active:not(.disabled) {
|
||||
color: var(--prev-color-primary) !important;
|
||||
}
|
||||
// TimePicker
|
||||
.el-time-spinner__item.active:not(.disabled) {
|
||||
color: var(--prev-color-primary) !important;
|
||||
}
|
||||
|
||||
// date
|
||||
.el-date-table td.in-range div,
|
||||
.el-date-table td.in-range div:hover,
|
||||
.el-date-table.is-week-mode .el-date-table__row.current div,
|
||||
.el-date-table.is-week-mode .el-date-table__row:hover div,
|
||||
.el-date-table td.selected div,
|
||||
.el-month-table td.in-range div,
|
||||
.el-month-table td.in-range div:hover {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
// date
|
||||
.el-date-table td.in-range div,
|
||||
.el-date-table td.in-range div:hover,
|
||||
.el-date-table.is-week-mode .el-date-table__row.current div,
|
||||
.el-date-table.is-week-mode .el-date-table__row:hover div,
|
||||
.el-date-table td.selected div,
|
||||
.el-month-table td.in-range div,
|
||||
.el-month-table td.in-range div:hover {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
|
||||
// transfer
|
||||
.el-transfer-panel,
|
||||
.el-transfer-panel .el-transfer-panel__header {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
// transfer
|
||||
.el-transfer-panel,
|
||||
.el-transfer-panel .el-transfer-panel__header {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
|
||||
// loading
|
||||
.el-loading-mask {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
// loading
|
||||
.el-loading-mask {
|
||||
background-color: var(--prev-bg-color) !important;
|
||||
}
|
||||
|
||||
// dropdown
|
||||
.el-dropdown-menu__item:focus,
|
||||
.el-dropdown-menu__item:not(.is-disabled):hover {
|
||||
background-color: var(--prev-color-hover) !important;
|
||||
}
|
||||
// dropdown
|
||||
.el-dropdown-menu__item:focus,
|
||||
.el-dropdown-menu__item:not(.is-disabled):hover {
|
||||
background-color: var(--prev-color-hover) !important;
|
||||
}
|
||||
|
||||
// dialog
|
||||
.el-dialog,
|
||||
.el-calendar {
|
||||
border: 1px solid var(--prev-border-color-lighter);
|
||||
}
|
||||
// dialog
|
||||
.el-dialog,
|
||||
.el-calendar {
|
||||
border: 1px solid var(--prev-border-color-lighter);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,56 +1,56 @@
|
||||
.loading-prev {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
background-color: var(--prev-bg-white);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
background-color: var(--prev-bg-white);
|
||||
}
|
||||
.loading-prev .loading-prev-box {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item {
|
||||
width: 33.333333%;
|
||||
height: 33.333333%;
|
||||
background: var(--prev-color-primary);
|
||||
float: left;
|
||||
animation: loading-prev-animation 1.2s infinite ease;
|
||||
border-radius: 1px;
|
||||
width: 33.333333%;
|
||||
height: 33.333333%;
|
||||
background: var(--prev-color-primary);
|
||||
float: left;
|
||||
animation: loading-prev-animation 1.2s infinite ease;
|
||||
border-radius: 1px;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(7) {
|
||||
animation-delay: 0s;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(4),
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(8) {
|
||||
animation-delay: 0.1s;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(1),
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(5),
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(9) {
|
||||
animation-delay: 0.2s;
|
||||
animation-delay: 0.2s;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(2),
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(6) {
|
||||
animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
}
|
||||
.loading-prev .loading-prev-box-warp .loading-prev-box-item:nth-child(3) {
|
||||
animation-delay: 0.4s;
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
@keyframes loading-prev-animation {
|
||||
0%,
|
||||
70%,
|
||||
100% {
|
||||
transform: scale3D(1, 1, 1);
|
||||
}
|
||||
35% {
|
||||
transform: scale3D(0, 0, 1);
|
||||
}
|
||||
0%,
|
||||
70%,
|
||||
100% {
|
||||
transform: scale3D(1, 1, 1);
|
||||
}
|
||||
35% {
|
||||
transform: scale3D(0, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
/* 页面宽度小于800px
|
||||
------------------------------- */
|
||||
@media screen and (max-width: 800px) {
|
||||
.el-dialog {
|
||||
width: 90%;
|
||||
}
|
||||
.el-dialog.is-fullscreen {
|
||||
width: 100% !important;
|
||||
}
|
||||
.el-dialog {
|
||||
width: 90%;
|
||||
}
|
||||
.el-dialog.is-fullscreen {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user