Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev

This commit is contained in:
liaofei 2023-04-28 14:22:17 +08:00
commit 8bb5001dcb
153 changed files with 16892 additions and 3424 deletions

View File

@ -142,7 +142,7 @@ class SystemMenus extends AuthController
if ($attPath) {
$pathData = [];
foreach ($attPath as $vv) {
if (strstr($vv, '<') === false || strstr($vv, '?>') === false) {
if (strstr($vv, '<') === false) {
$pathData[] = $vv;
}
}

View File

@ -95,6 +95,7 @@ class SystemFile extends AuthController
['full_path', ''],
['mark', ''],
], true);
$full_path = $this->request->param('full_path');
if ($full_path == '') return app('json')->fail(100100);
$this->services->fileMarkSave($full_path, $mark);
return app('json')->success(100000);

View File

@ -291,10 +291,12 @@ class StoreOrderController
return app('json')->status('pay_error', $pay);
}
case PayServices::OFFLINE_PAY:
if ($this->services->setOrderTypePayOffline($order['order_id']))
if ($this->services->setOrderTypePayOffline($order['order_id'])) {
event('NoticeListener', [$order, 'admin_pay_success_code']);
return app('json')->status('success', 410203);
else
} else {
return app('json')->status('success', 410216);
}
default:
$payInfo = $payServices->beforePay($order->toArray(), $paytype, ['quitUrl' => $quitUrl]);
return app('json')->status($payInfo['status'], $payInfo['payInfo']);

View File

@ -136,7 +136,7 @@ class SystemAdminServices extends BaseServices
'user_info' => [
'id' => $adminInfo->getData('id'),
'account' => $adminInfo->getData('account'),
'head_pic' => $adminInfo->getData('head_pic'),
'head_pic' => get_file_link($adminInfo->getData('head_pic')),
'level' => $adminInfo->getData('level'),
'real_name' => $adminInfo->getData('real_name'),
],

View File

@ -25,7 +25,7 @@ class SystemFileInfoServices extends BaseServices
public function syncfile()
{
$list = $this->flattenArray($this->scanDirectory());
// $this->dao->saveAll($list);
$this->dao->saveAll($list);
}
public function scanDirectory($dir = '')

View File

@ -73,20 +73,25 @@ class Util extends Command
$valueJosn = str_replace('https://', 'https:\\\/\\\/', $valueJosn);
$prefix = Config::get('database.connections.' . Config::get('database.default') . '.prefix');
$sql = [
"UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article` SET `image_input` = replace(`image_input` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article_category` SET `image` = replace(`image` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}article_content` SET `content` = replace(`content` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}diy` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}'),`default_value` = replace(default_value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}luck_lottery` SET `image` = replace(image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}luck_prize` SET `image` = replace(image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_bargain` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_category` SET `pic` = replace(`pic` ,'{$siteUrl}','{$url}'),`big_pic` = replace(`big_pic` ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_combination` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_integral` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`slider_image` = replace(slider_image ,'{$siteUrlJosn}','{$valueJosn}'),`recommend_image` = replace(recommend_image ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_attr_result` SET `result` = replace(result ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product_attr_value` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}store_seckill` SET `image` = replace(image ,'{$siteUrl}','{$url}'),`images` = replace(images,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_attachment` SET `att_dir` = replace(att_dir ,'{$siteUrl}','{$url}'),`satt_dir` = replace(satt_dir ,'{$siteUrl}','{$url}')",
"UPDATE `{$prefix}system_config` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}system_group_data` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}diy` SET `value` = replace(value ,'{$siteUrlJosn}','{$valueJosn}')",
"UPDATE `{$prefix}store_product_description` SET `description`= replace(description,'{$siteUrl}','{$url}')"
"UPDATE `{$prefix}user` SET `avatar` = replace(avatar ,'{$siteUrlJosn}','{$valueJosn}')",
];
return Db::transaction(function () use ($sql) {

File diff suppressed because it is too large Load Diff

View File

@ -406,7 +406,16 @@ switch ($step) {
$res = mysqli_query($conn, $addadminsql);
$res2 = true;
if (isset($_SERVER['SERVER_NAME'])) {
$site_url = '\'"http://' . $_SERVER['SERVER_NAME'] . '"\'';
if (isset($_SERVER['REQUEST_SCHEME'])) {
$request_scheme = $_SERVER['REQUEST_SCHEME'];
} else {
if ($_SERVER['HTTPS'] == 'on') {
$request_scheme = 'https';
} else {
$request_scheme = 'http';
}
}
$site_url = '\'"' . $request_scheme . '://' . $_SERVER['SERVER_NAME'] . '"\'';
$res2 = mysqli_query($conn, 'UPDATE `' . $dbPrefix . 'system_config` SET `value`=' . $site_url . ' WHERE `menu_name`="site_url"');
}
$arr = array('n' => 999999, 'count' => $counts, 'msg' => '安装完成', 'time' => date('Y-m-d H:i:s'));

View File

@ -23078,6 +23078,11 @@
"diff-match-patch": "^1.0.0"
}
},
"vue-cropper": {
"version": "0.5.11",
"resolved": "https://registry.npmmirror.com/vue-cropper/-/vue-cropper-0.5.11.tgz",
"integrity": "sha512-UeA3qL2BLCTGkOEAxEsxSNFO+qLYAn6YRHv4oS32cP9lMhF1vFmnAf/z+ZamtR0/Fh3sbZeZUCLVR2Ol2/dpTQ=="
},
"vue-eslint-parser": {
"version": "7.11.0",
"resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",

View File

@ -84,4 +84,4 @@ export function exportmberCardList(id) {
url: `/export/member_card/${id}`,
method: 'get',
});
}
}

View File

@ -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,
});
}

View File

@ -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());

View File

@ -69,14 +69,13 @@ export default {
components: {
VueCropper,
},
props: ['Name'],
data() {
return {
name: this.Name,
name: '',
resImg: '',
previews: {},
option: {
img: this.Name, //裁剪图片的地址
img: '', //裁剪图片的地址
outputSize: 1, //裁剪生成图片的质量(可选0.1 - 1)
outputType: 'png', //裁剪生成图片的格式(jpeg || png || webp)
info: true, //图片大小信息
@ -84,8 +83,8 @@ export default {
autoCrop: true, //是否默认生成截图框
autoCropWidth: 200, //默认生成截图框宽度
autoCropHeight: 200, //默认生成截图框高度
fixed: false, //是否开启截图框宽高固定比例
fixedNumber: [1.53, 1], //截图框的宽高比例
fixed: true, //是否开启截图框宽高固定比例
fixedNumber: [1, 1], //截图框的宽高比例
full: false, //false按原比例裁切图片,不失真
fixedBox: false, //固定截图框大小,不允许改变
canMove: true, //上传图片是否可以移动
@ -183,7 +182,6 @@ export default {
const formData = new FormData();
formData.append('file', file);
fileUpload(formData).then((res) => {
console.log(res);
if (res.status == 200) {
this.$emit('uploadImgSuccess', res.data);
} else {

View File

@ -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>

View File

@ -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: '上传图片',

View File

@ -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 {

View File

@ -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;

View File

@ -6,7 +6,7 @@
display: flex;
justify-content: space-between;
.header-l{
.header-l {
display: flex;
align-items: center;
}

View File

@ -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">

View File

@ -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 {

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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: '上传图片',

View File

@ -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: {

View File

@ -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: {

View File

@ -12,7 +12,7 @@
<Button type="warning" :loading="modal_loading" @click="ok">确定</Button>
<Button type="primary" @click="cancel">取消</Button>
</div>
</Modal>
</Modal>
</template>
<script>

View File

@ -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, // 当前加载的加载图片的次数

View File

@ -68,7 +68,7 @@ export default {
},
data() {
return {
routePro:this.$routeProStr,
routePro: this.$routeProStr,
currentTab: '',
grid: {
xl: 8,

View File

@ -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';

View File

@ -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',
},
};

View File

@ -136,7 +136,7 @@ export default {
fiveTagsStyle: '历史菜单风格',
themeStyle: '主题',
fiveAnimation: '主页面切换动画',
fiveColumnsAsideStyle: '分栏高亮风格',
fiveColumnsAsideStyle: '菜单高亮风格',
fiveColumnsAsideLayout: '分栏布局风格',
sixTitle: '布局切换',
sixDefaults: '默认',

View File

@ -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: '更新中',
},
};

View File

@ -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',
},
};

View File

@ -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: '履约超时预警',
},
};

View File

@ -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: '履約超時預警',
},
};

View File

@ -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',
},
},
};

View File

@ -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: '',
},
},
};

View File

@ -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號',
},
},
};

View File

@ -93,7 +93,6 @@ export default {
});
if (this.$store.state.themeConfig.themeConfig.layout !== 'columns') {
this.bus.$on('routesListChange', () => {
console.log('变了大哥');
this.setFilterRoutes();
});
}

View File

@ -8,6 +8,7 @@
:key="k"
@click="onColumnsAsideMenuClick(v)"
ref="columnsAsideOffsetTopRefs"
class="layout-columns"
:class="{ 'layout-columns-active': v.k === liIndex }"
:title="$t(v.title)"
>
@ -63,7 +64,6 @@ export default {
},
// 设置分栏布局风格
setColumnsAsidelayout() {
console.log('111');
return this.$store.state.themeConfig.themeConfig.columnsAsideLayout;
},
Layout() {
@ -74,7 +74,6 @@ export default {
},
},
beforeDestroy() {
console.log('zoule');
this.bus.$off('routesListChange');
},
mounted() {
@ -247,6 +246,9 @@ export default {
color: var(--prev-bg-columnsMenuBarColor);
}
}
.layout-columns {
transition: 0.3s ease-in-out;
}
.layout-columns-active,
.layout-columns-active a {
color: var(--prev-bg-columnsMenuActiveColor);

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -35,7 +35,6 @@ export default {
mounted() {
this.setFilterRoutes();
this.bus.$on('routesListChange', () => {
console.log('变了大哥');
this.setFilterRoutes();
});
},

View File

@ -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>

View File

@ -72,8 +72,7 @@
</div>
</div> -->
</div>
<!-- transverse 布局 -->
<div
class="layout-drawer-content-item"
@ -276,7 +275,7 @@
</el-radio-group>
</div>
</div>
<div class="layout-breadcrumb-seting-bar-flex mt15" v-if="getThemeConfig.layout === 'columns'">
<div class="layout-breadcrumb-seting-bar-flex mt15">
<div class="layout-breadcrumb-seting-bar-flex-label">{{ $t('message.layout.fiveColumnsAsideStyle') }}</div>
<div class="layout-breadcrumb-seting-bar-flex-value">
<el-radio-group v-model="getThemeConfig.columnsAsideStyle" size="mini" @change="setLocalThemeConfig">
@ -593,7 +592,14 @@ export default {
},
};
</script>
<style>
body .v-modal {
opacity: 0.5;
background-color: rgba(0, 0, 0, 0.3);
-webkit-backdrop-filter: blur(3px);
backdrop-filter: blur(5px);
}
</style>
<style scoped lang="scss">
.w10 {
width: 10px;

View File

@ -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>

View File

@ -113,7 +113,6 @@ export default {
methods: {
...mapMutations(['setBreadCrumb', 'setTagNavList', 'addTag', 'setLocal', 'setHomeRoute', 'closeTag']),
clickDropdown(e) {
// console.log(e, this.$route.path);
let data = { id: e, path: this.$route.path };
this.onCurrentContextmenuClick(data);
},
@ -148,8 +147,6 @@ export default {
scrollTag(production) {
let scrollRefs = this.$refs.scrollbarRef.$refs.wrap.scrollWidth;
let scrollLeft = this.$refs.scrollbarRef.$refs.wrap.scrollLeft;
console.log(production, this.$refs.scrollbarRef.$refs.wrap.scrollLeft);
if (production === 'left') {
this.$refs.scrollbarRef.$refs.wrap.scrollLeft = scrollLeft - 300 <= 0 ? 0 : scrollLeft - 300;
} else {
@ -252,12 +249,10 @@ export default {
// this.tagsViewList = Session.get('tagsViewList');
// } else {
let arr = [];
console.log(this.tagsViewRoutesList);
this.tagsViewRoutesList.map((v) => {
if (v.meta && v.meta.isAffix) arr.push({ ...v });
});
// }
console.log(arr);
this.setTagNavList(arr);
// 初始化当前元素(li)的下标
this.getTagsRefsIndex(this.$route.path);
@ -339,7 +334,6 @@ export default {
this.tagsViewRoutesList.map((v) => {
if ((v.meta && v.meta.isAffix) || v.path === path) tagsViewList.push({ ...v });
});
console.log(tagsViewList, this.tagsViewRoutesList, path);
this.addBrowserSetSession(tagsViewList);
this.$router.push({ path, query });

View File

@ -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>

View File

@ -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>

View File

@ -88,7 +88,6 @@ service.interceptors.response.use(
}
},
(error) => {
console.log(error);
Message.error(error.msg);
return Promise.reject(error);
},

View File

@ -226,11 +226,9 @@ export const findFirstNonNullChildren = (arr) => {
export const findFirstNonNullChildrenKeys = (obj, lastArr) => {
let ids = lastArr;
console.log(ids);
// 如果第一个对象没有children属性,返回该对象
if (!obj.children) {
ids.push(obj.id);
console.log(ids);
return ids;
}
// 如果第一个对象的children属性是数组,

View File

@ -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
>

View File

@ -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">
<!-- 公众号设置 -->

View File

@ -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>

View File

@ -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();

View File

@ -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">

View File

@ -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>

View File

@ -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();
});

View File

@ -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>

View File

@ -280,7 +280,6 @@ export default {
</script>
<style scoped lang="less">
/deep/.ivu-card-body {
padding: 0;
}

View File

@ -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"
>导出

View File

@ -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

View File

@ -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();

View File

@ -46,7 +46,6 @@ export default {
</script>
<style lang="less" scoped>
.emoji {
width: 380px;
height: 186px;

View File

@ -155,7 +155,6 @@ export default {
this.selectIds = this.goodsList.map((i) => {
return i.product_id;
});
console.log(this.selectIds, this.goodsList);
},
// 生成直播商品
liveGoods() {

View File

@ -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;

View File

@ -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) {

View File

@ -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>

View File

@ -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);
});
},
},
};

View File

@ -361,5 +361,4 @@ export default {
}
}
</style>

View File

@ -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>

View File

@ -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>

View File

@ -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() {

View File

@ -106,7 +106,6 @@ export default {
created() {
this.isChecked = this.$route.query.type;
this.onIsLogin();
console.log(this.$route);
},
methods: {
// 查看是否登录

View File

@ -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([

View File

@ -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();
}
},

View File

@ -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
? '退款中'
: '部分退款中'

View File

@ -74,7 +74,6 @@ export default {
},
methods: {
mealPay(val) {
console.log(val);
this.$router.push({ path: this.$routeProStr + '/setting/sms/sms_pay/index', query: { type: val } });
},
getCopyConfig() {

View File

@ -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("该组件禁止拖拽");
// }

View File

@ -470,7 +470,6 @@ export default {
if (item.name == 'search_box' || item.name == 'nav_bar') {
return this.$Message.warning('该组件禁止移动');
}
console.log(item);
// if (item.name == "nav_bar") {
// return this.$Message.warning("该组件禁止移动");
// }

View File

@ -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

View File

@ -75,7 +75,6 @@ export default {
methods: {
//接收iframe值
handleMessage(event) {
console.log(event.data.name)
if (event.data.name) {
let obj = { name: event.data.name, num: event.data.dataName };
this.configName = obj;

View File

@ -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;
}

View File

@ -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

View File

@ -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>

View File

@ -1,5 +1,5 @@
<template>
<div >
<div>
<div class="message">
<Card :bordered="false" dis-hover class="">
<div class="mb20">

View File

@ -307,7 +307,6 @@ export default {
}
},
changeUnique(val) {
console.log(val.target.value);
let value = this.$routeProStr + val.target.value;
if (value.slice(0, 1) === '/') value = value.replace('/', '');
this.formValidate.unique_auth = value.replaceAll('/', '-');

View File

@ -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">
@ -234,7 +232,6 @@ export default {
};
menusBatch(data)
.then((res) => {
console.log(res);
this.getData();
})
.catch((res) => {
@ -282,7 +279,6 @@ export default {
this.routeType = '0';
// this.getRuleList();
menusRuleCate().then((res) => {
console.log(res);
this.ruleCateList = res.data;
this.ruleModal = true;
if (res.data.length) {
@ -296,7 +292,6 @@ export default {
});
},
handleNodeClick(data) {
console.log(data);
this.getRuleList(data.id);
},
modalchange() {

View File

@ -261,7 +261,6 @@ export default {
created() {
this.interfaceData = this.formValidate;
this.interfaceData.request_body = JSON.parse(JSON.stringify(this.interfaceData.request_params));
console.log(this.interfaceData);
},
mounted() {},
methods: {
@ -275,8 +274,6 @@ export default {
});
},
async requestData() {
console.log(this.$refs.xTable.getTableData().tableData);
console.log(this.filtersData((await this.$refs.xTable.getTableData().tableData) || []));
let url, method, params, body, headers;
url = this.interfaceData.url;
method = this.interfaceData.method;
@ -284,12 +281,10 @@ export default {
body = this.filtersData((await this.$refs.yTable.getTableData().tableData) || []);
let h = this.filtersData((await this.$refs.zTable.getTableData().tableData) || []);
let h1 = this.filtersData((await this.$refs.zaTable.getTableData().tableData) || []);
console.log(this.interfaceData, h, h1);
headers = {
...h,
...h1,
};
console.log(url, method, params, body, headers);
requestMethod(url, method, params, body, headers)
.then((res) => {
this.codes = res + '';
@ -299,14 +294,12 @@ export default {
});
},
filtersData(arr) {
console.log(arr);
try {
let x = {};
arr.map((e) => {
if (!e.parentId) {
for (let i in e) {
if (i == 'attribute') {
console.log(e);
if (e.type !== 'array') {
x[e[i]] = e.value || '';
} else {
@ -344,7 +337,6 @@ export default {
},
changeTab(name) {
if (name === 'Header') {
console.log(this.interfaceData.headerData);
if (!this.interfaceData.headerData) {
this.insertEvent('zTable', {
attribute: 'Content-Type',
@ -353,7 +345,6 @@ export default {
this.insertEvent('zaTable');
}
}
console.log(this.interfaceData);
},
async insertEvent(type, d) {
const $table = this.$refs[type];

View File

@ -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>
@ -804,7 +809,6 @@ export default {
},
onChangeName(params) {
console.log(params);
if (params.eventType == 'blur') {
let data = {
name: params.newName,
@ -821,7 +825,6 @@ export default {
},
onAddNode(params) {
console.log(params);
// this.$router.push({
// path: '/admin/setting/system_out_interface/add',
// query: {

View File

@ -35,8 +35,6 @@ service.interceptors.request.use(
if (token || kefuToken) {
config.headers['Authori-zation'] = config.kefu ? 'Bearer ' + kefuToken : 'Bearer ' + token;
}
console.log('请求了', config);
return config;
},
(error) => {

View File

@ -28,7 +28,7 @@
</FormItem>
</Form>
</Card>
<Modal v-model="avatarMoadl" title="头像上传" width="700">
<Modal v-model="avatarMoadl" footer-hide title="头像上传" width="700">
<CropperImg v-if="avatarMoadl" @uploadImgSuccess="uploadImgSuccess"></CropperImg>
</Modal>
</div>

View File

@ -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>

View File

@ -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>

View File

@ -109,7 +109,6 @@ export default {
</script>
<style scoped>
.ivu-form-item {
padding-bottom: 10px;
margin-bottom: 0;

Some files were not shown because too many files have changed in this diff Show More