Compare commits
8 Commits
Author | SHA1 | Date |
---|---|---|
ichynul | 0ee279c079 | |
ichynul | fa28755d96 | |
ichynul | 86f2d25114 | |
ichynul | 6ff5493a85 | |
ichynul | 4d374776ce | |
ichynul | 6c6ad1aafa | |
ichynul | d8a0eb661c | |
ichynul | 5f484c823c |
20
README.md
20
README.md
|
@ -1,5 +1,19 @@
|
||||||
## element-plus
|
# vue-next-admin
|
||||||
|
|
||||||
### 基于 [Vue-next-admin] 对 `tpextmyadmin`的UI替换方案
|
## 关于
|
||||||
|
|
||||||
### 部分样式和组件来源于 `vue-next-admin` : <https://gitee.com/lyt-top/vue-next-admin>
|
替换默认的:`/admin/index/index`主体页面样式和登录页面`/admin/index/login`样式
|
||||||
|
|
||||||
|
## 使用
|
||||||
|
|
||||||
|
1. 下载安装本扩展
|
||||||
|
2. 打开设置:在[平台设置]-[后台框架]
|
||||||
|
3. 点击`index主体页面风格`下拉框,选择`vue-next-admin样式`
|
||||||
|
4. 点击`登录页面风格`下拉框,选择`vue-next-admin样式` (可选,登录页面可不换)
|
||||||
|
5. [F5]刷新浏览器生效。
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
卸载本扩展时,要先把使用中的模板修改为其他。
|
||||||
|
|
||||||
|
## 部分样式和组件来源于 `vue-next-admin` : <https://gitee.com/lyt-top/vue-next-admin>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<span>{$admin_logo|raw|default='admin'}</span>
|
<span>{$admin_logo|raw|default='admin'}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="layout-logo-size" v-else @click="onCollapseConfigChange">
|
<div class="layout-logo-size" v-else @click="onCollapseConfigChange">
|
||||||
<img src="/assets/elementplus/logo/logo-mini.svg" class="layout-logo-size-img" />
|
<img src="/assets/vuenextadmin/logo/logo-mini.svg" class="layout-logo-size-img" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-scrollbar class="flex-auto" ref="layoutAsideScrollbarRef" @mouseenter="onAsideEnterLeave(true)"
|
<el-scrollbar class="flex-auto" ref="layoutAsideScrollbarRef" @mouseenter="onAsideEnterLeave(true)"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!--Breadcrumb end-->
|
<!--Breadcrumb end-->
|
||||||
<template v-if="getThemeConfig.layout=='transverse'">
|
<template v-if="getThemeConfig.layout=='transverse'">
|
||||||
{include file="$admin_horizontal" /}
|
{include file="components/horizontal" /}
|
||||||
</template>
|
</template>
|
||||||
<!--User-->
|
<!--User-->
|
||||||
<div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
|
<div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
|
||||||
|
|
|
@ -326,7 +326,7 @@
|
||||||
<div class="layout-tips-warp"
|
<div class="layout-tips-warp"
|
||||||
:class="{ 'layout-tips-warp-active': getThemeConfig.layout === 'defaults' }">
|
:class="{ 'layout-tips-warp-active': getThemeConfig.layout === 'defaults' }">
|
||||||
<div class="layout-tips-box">
|
<div class="layout-tips-box">
|
||||||
<p class="layout-tips-txt">默认</p>
|
<p class="layout-tips-txt">传统</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<title>首页 - {$admin_page_title|default=''}</title>
|
<title>首页 - {$admin_page_title|default=''}</title>
|
||||||
<link rel="icon" href="{$admin_favicon|default=''}" type="image/ico">
|
<link rel="icon" href="{$admin_favicon|default=''}" type="image/ico">
|
||||||
<meta name="description" content="{$admin_page_description|default=''}">
|
<meta name="description" content="{$admin_page_description|default=''}">
|
||||||
<link rel="stylesheet" href="/assets/elementplus/theme/index.css?v={$admin_assets_ver|default='1.0'}" />
|
<link rel="stylesheet" href="/assets/vuenextadmin/theme/index.css?v={$admin_assets_ver|default='1.0'}" />
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="/assets/lightyearadmin/css/materialdesignicons.min.css?v={$admin_assets_ver|default='1.0'}">
|
href="/assets/lightyearadmin/css/materialdesignicons.min.css?v={$admin_assets_ver|default='1.0'}">
|
||||||
</head>
|
</head>
|
||||||
|
@ -23,15 +23,15 @@
|
||||||
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
||||||
class="layout-container">
|
class="layout-container">
|
||||||
<!--LayoutAside-->
|
<!--LayoutAside-->
|
||||||
{include file="$admin_aside" /}
|
{include file="components/aside" /}
|
||||||
<!--LayoutAside end-->
|
<!--LayoutAside end-->
|
||||||
<el-container class="layout-container-view h100">
|
<el-container class="layout-container-view h100">
|
||||||
<el-scrollbar ref="layoutScrollbarRef" class="layout-backtop">
|
<el-scrollbar ref="layoutScrollbarRef" class="layout-backtop">
|
||||||
<!--LayoutHeader-->
|
<!--LayoutHeader-->
|
||||||
{include file="$admin_header" /}
|
{include file="components/header" /}
|
||||||
<!--LayoutHeader end-->
|
<!--LayoutHeader end-->
|
||||||
<!--LayoutMain-->
|
<!--LayoutMain-->
|
||||||
{include file="$admin_main" /}
|
{include file="components/main" /}
|
||||||
<!--LayoutMain end-->
|
<!--LayoutMain end-->
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
@ -45,18 +45,18 @@
|
||||||
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
||||||
class="layout-container">
|
class="layout-container">
|
||||||
<!--ColumnsAside-->
|
<!--ColumnsAside-->
|
||||||
{include file="$admin_columns_aside" /}
|
{include file="components/columns-aside" /}
|
||||||
<!--ColumnsAside end-->
|
<!--ColumnsAside end-->
|
||||||
<el-container class="layout-columns-warp layout-container-view h100">
|
<el-container class="layout-columns-warp layout-container-view h100">
|
||||||
<!--LayoutAside-->
|
<!--LayoutAside-->
|
||||||
{include file="$admin_aside" /}
|
{include file="components/aside" /}
|
||||||
<!--LayoutAside end-->
|
<!--LayoutAside end-->
|
||||||
<el-scrollbar ref="layoutScrollbarRef" class="layout-backtop">
|
<el-scrollbar ref="layoutScrollbarRef" class="layout-backtop">
|
||||||
<!--LayoutHeader-->
|
<!--LayoutHeader-->
|
||||||
{include file="$admin_header" /}
|
{include file="components/header" /}
|
||||||
<!--LayoutHeader end-->
|
<!--LayoutHeader end-->
|
||||||
<!--LayoutMain-->
|
<!--LayoutMain-->
|
||||||
{include file="$admin_main" /}
|
{include file="components/main" /}
|
||||||
<!--LayoutMain end-->
|
<!--LayoutMain end-->
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
@ -70,17 +70,17 @@
|
||||||
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
:element-loading-background="getThemeConfig.isIsDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'"
|
||||||
class="layout-container flex-center layout-backtop">
|
class="layout-container flex-center layout-backtop">
|
||||||
<!--LayoutHeader-->
|
<!--LayoutHeader-->
|
||||||
{include file="$admin_header" /}
|
{include file="components/header" /}
|
||||||
<!--LayoutHeader end-->
|
<!--LayoutHeader end-->
|
||||||
<!--LayoutMain-->
|
<!--LayoutMain-->
|
||||||
{include file="$admin_main" /}
|
{include file="components/main" /}
|
||||||
<!--LayoutMain end-->
|
<!--LayoutMain end-->
|
||||||
</el-container>
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
<!--layout-transverse end-->
|
<!--layout-transverse end-->
|
||||||
|
|
||||||
<!--Settings-->
|
<!--Settings-->
|
||||||
{include file="$admin_setting" /}
|
{include file="components/setting" /}
|
||||||
<!--Settings end-->
|
<!--Settings end-->
|
||||||
</el-config-provider>
|
</el-config-provider>
|
||||||
</div>
|
</div>
|
||||||
|
@ -88,37 +88,37 @@
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/tpextbuilder/js/layer/layer.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/tpextbuilder/js/layer/layer.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/vue.global.prod.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/vue.global.prod.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/index.full.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/index.full.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/icons.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/icons.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/axios.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/axios.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/vue-demi.iife.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/vue-demi.iife.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/mitt.umd.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/mitt.umd.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/pinia.iife.prod.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/pinia.iife.prod.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/Sortable.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/Sortable.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/locale/zh-cn.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/locale/zh-cn.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/js/index.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/js/index.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/utils/storage.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/utils/storage.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/utils/watermark.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/utils/watermark.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/utils/mitt.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/utils/mitt.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/utils/theme.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/utils/theme.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/stores/themeConfig.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/stores/themeConfig.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/stores/tagsViewRoutes.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/stores/tagsViewRoutes.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const { createApp, computed, ref, reactive, onBeforeMount, onMounted, onUnmounted, nextTick, watch } = Vue;
|
const { createApp, computed, ref, reactive, onBeforeMount, onMounted, onUnmounted, nextTick, watch } = Vue;
|
||||||
|
@ -958,7 +958,7 @@
|
||||||
const setColumnsAsideMove = (k) => {
|
const setColumnsAsideMove = (k) => {
|
||||||
if (k === undefined) return false;
|
if (k === undefined) return false;
|
||||||
state.liIndex = k;
|
state.liIndex = k;
|
||||||
if (columnsAsideActiveRef.value) {
|
if (columnsAsideActiveRef.value && columnsAsideOffsetTopRefs.value[k]) {
|
||||||
columnsAsideActiveRef.value.style.top = `${columnsAsideOffsetTopRefs.value[k].offsetTop + state.difference}px`;
|
columnsAsideActiveRef.value.style.top = `${columnsAsideOffsetTopRefs.value[k].offsetTop + state.difference}px`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1023,7 +1023,7 @@
|
||||||
document.getElementById('app').className = '';
|
document.getElementById('app').className = '';
|
||||||
initSortable();
|
initSortable();
|
||||||
|
|
||||||
let wartermark_text = '{$wartermark_text}';
|
let wartermark_text = "{$wartermark_text|default=''}";
|
||||||
if (wartermark_text) {
|
if (wartermark_text) {
|
||||||
watermark.set(wartermark_text + " - {$admin_user.username|default=''}");
|
watermark.set(wartermark_text + " - {$admin_user.username|default=''}");
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
<title>登录 - {$admin_page_title|default=''}</title>
|
<title>登录 - {$admin_page_title|default=''}</title>
|
||||||
<link rel="icon" href="{$admin_favicon|default=''}" type="image/ico">
|
<link rel="icon" href="{$admin_favicon|default=''}" type="image/ico">
|
||||||
<meta name="description" content="{$admin_page_description|default=''}">
|
<meta name="description" content="{$admin_page_description|default=''}">
|
||||||
<link rel="stylesheet" href="/assets/elementplus/theme/login.css?v={$admin_assets_ver|default='1.0'}" />
|
<link rel="stylesheet" href="/assets/vuenextadmin/theme/login.css?v={$admin_assets_ver|default='1.0'}" />
|
||||||
<link rel="stylesheet" href="/assets/elementplus/lib/index.css?v={$admin_assets_ver|default='1.0'}" />
|
<link rel="stylesheet" href="/assets/vuenextadmin/lib/index.css?v={$admin_assets_ver|default='1.0'}" />
|
||||||
<script>
|
<script>
|
||||||
if ('{$login_in_top}' == '1' && window != top) {
|
if ('{$login_in_top}' == '1' && window != top) {
|
||||||
top.location.replace("{:url('/admin/index/login')}");
|
top.location.replace("{:url('/admin/index/login')}");
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
<div class="login-left-img">
|
<div class="login-left-img">
|
||||||
<img src="{$admin_login_background_img}" />
|
<img src="{$admin_login_background_img}" />
|
||||||
</div>
|
</div>
|
||||||
<img src="/assets/elementplus/logo/login-bg.svg" class="login-left-waves" />
|
<img src="/assets/vuenextadmin/logo/login-bg.svg" class="login-left-waves" />
|
||||||
</div>
|
</div>
|
||||||
<div class="login-right flex">
|
<div class="login-right flex">
|
||||||
<div class="login-right-warp flex-margin">
|
<div class="login-right-warp flex-margin">
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
<el-form size="large" class="login-content-form" :model="state.ruleForm"
|
<el-form size="large" class="login-content-form" :model="state.ruleForm"
|
||||||
:rules="state.rules" ref="formRef">
|
:rules="state.rules" ref="formRef">
|
||||||
<el-form-item class="login-animation1" prop="username">
|
<el-form-item class="login-animation1" prop="username">
|
||||||
<el-input text placeholder="账号" v-model="state.ruleForm.username" clearable
|
<el-input type="text" placeholder="账号" v-model="state.ruleForm.username" :clearable="true"
|
||||||
autocomplete="off">
|
autocomplete="off">
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<el-icon class="el-input__icon">
|
<el-icon class="el-input__icon">
|
||||||
|
@ -92,8 +92,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="login-animation3" prop="captcha">
|
<el-form-item class="login-animation3" prop="captcha">
|
||||||
<el-col :span="15">
|
<el-col :span="15">
|
||||||
<el-input text maxlength="4" placeholder="验证码"
|
<el-input type="text" maxlength="6" placeholder="验证码"
|
||||||
v-model="state.ruleForm.captcha" clearable autocomplete="off">
|
v-model="state.ruleForm.captcha" :clearable="true" autocomplete="off">
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<el-icon class="el-input__icon">
|
<el-icon class="el-input__icon">
|
||||||
<ele-position></ele-position>
|
<ele-position></ele-position>
|
||||||
|
@ -124,15 +124,15 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/vue.global.prod.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/vue.global.prod.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/index.full.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/index.full.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/icons.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/icons.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/axios.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/axios.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="/assets/elementplus/lib/locale/zh-cn.min.js?v={$admin_assets_ver|default='1.0'}"
|
<script type="text/javascript" src="/assets/vuenextadmin/lib/locale/zh-cn.min.js?v={$admin_assets_ver|default='1.0'}"
|
||||||
charset="utf-8"></script>
|
charset="utf-8"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const state = Vue.reactive({
|
const state = Vue.reactive({
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no" />
|
|
||||||
<title>{$admin_page_position|default='后台'} - {$admin_page_title|default=''}</title>
|
|
||||||
<link rel="icon" href="{$admin_favicon|default=''}" type="image/ico">
|
|
||||||
<meta name="description" content="{$admin_page_description|default=''}">
|
|
||||||
{notempty name="$admin_css"}
|
|
||||||
{volist name="admin_css" id="item"}
|
|
||||||
<link href="{$item}" rel="stylesheet">
|
|
||||||
{/volist}
|
|
||||||
{/notempty}
|
|
||||||
{block name="style"}
|
|
||||||
<!--stylesheets-->
|
|
||||||
{/block}
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<!--页面主要内容-->
|
|
||||||
<div class="layout-container">
|
|
||||||
<div class="layout-padding w100">
|
|
||||||
<div class="layout-padding-view">
|
|
||||||
{block name="content"}{/block}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--End 页面主要内容-->
|
|
||||||
{notempty name="$admin_js"}
|
|
||||||
{volist name="admin_js" id="item"}
|
|
||||||
<script type="text/javascript" src="{$item}" charset="utf-8"></script>
|
|
||||||
{/volist}
|
|
||||||
{/notempty}
|
|
||||||
<script>
|
|
||||||
window.__token__ = "{$__token__|default=''}";
|
|
||||||
</script>
|
|
||||||
{block name="script"}
|
|
||||||
<!--scripts-->
|
|
||||||
{/block}
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,50 +0,0 @@
|
||||||
.el-form .el-form-item.tpext-form-item {
|
|
||||||
margin-bottom: 6px;
|
|
||||||
padding-right: 14px;
|
|
||||||
padding-left: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form.search-form .el-form-item.tpext-form-item {
|
|
||||||
margin-bottom: 4px;
|
|
||||||
padding-right: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form .el-form-item.tpext-form-item .el-form-item__content {
|
|
||||||
padding-left: 12px;
|
|
||||||
padding-right: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form-item.tpext-form-item .el-form-item__content.fields-div {
|
|
||||||
padding-left: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form-item__content.fields-div .el-form-item.tpext-form-item {
|
|
||||||
padding-left: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form--label-left.no-margin-bottom .el-form-item__label {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-row {
|
|
||||||
padding-left: 12px;
|
|
||||||
padding-right: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.el-button {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form .el-form-item--mini.el-form-item,
|
|
||||||
.el-form .el-form-item--small.el-form-item {
|
|
||||||
margin-bottom: 12px
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-form.search-form .el-form-item--mini.el-form-item,
|
|
||||||
.el-form.search-form .el-form-item--small.el-form-item {
|
|
||||||
|
|
||||||
margin-bottom: 3px
|
|
||||||
}
|
|
|
@ -1,856 +0,0 @@
|
||||||
(function (w) {
|
|
||||||
|
|
||||||
var tpextbuilder = function () { };
|
|
||||||
tpextbuilder.autoPost = function (classname, url, refresh) {
|
|
||||||
|
|
||||||
$('body').on('change', '.' + classname + ' :checkbox', function () {
|
|
||||||
if ($(this).hasClass('switch-box')) {
|
|
||||||
var text = $(this).parent('label').prev('input[type="hidden"]');
|
|
||||||
var name = text.attr('name');
|
|
||||||
var val = $(this).is(':checked') ? $(this).data('on') : $(this).data('off');
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(this).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var name = $(this).attr('name');
|
|
||||||
var values = [];
|
|
||||||
$('.' + classname + " input[name='" + name + "']:checked").each(function (i, e) {
|
|
||||||
values.push($(e).val());
|
|
||||||
});
|
|
||||||
var val = values.join(',');
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(this).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', '.' + classname + ' :radio', function () {
|
|
||||||
var name = $(this).attr('name');
|
|
||||||
var val = $('.' + classname + " input[name='" + name + "']:checked").val();
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(this).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
});
|
|
||||||
|
|
||||||
var timer = null;
|
|
||||||
|
|
||||||
$('body').on('change', '.' + classname + ' input[type="text"]', function () {
|
|
||||||
clearTimeout(timer);
|
|
||||||
var that = this;
|
|
||||||
timer = setTimeout(function () {
|
|
||||||
var name = $(that).attr('name');
|
|
||||||
var val = $(that).val();
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(that).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
}, 200);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', '.' + classname + ' textarea', function () {
|
|
||||||
clearTimeout(timer);
|
|
||||||
var that = this;
|
|
||||||
timer = setTimeout(function () {
|
|
||||||
var name = $(that).attr('name');
|
|
||||||
var val = $(that).val();
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(that).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
}, 200);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', '.' + classname + ' select', function () {
|
|
||||||
var name = $(this).attr('name');
|
|
||||||
var val = $(this).val();
|
|
||||||
name = name.split('-')[0];
|
|
||||||
var dataid = $(this).parents('tr.table-row-id').data('id');
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
id: dataid,
|
|
||||||
name: name,
|
|
||||||
value: val
|
|
||||||
}, url, refresh);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.postChecked = function (id, url, confirm) {
|
|
||||||
var obj = $('#' + id);
|
|
||||||
if (!obj.size()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$('body').on('click', '#' + id, function () {
|
|
||||||
var val = '';
|
|
||||||
|
|
||||||
var values = [];
|
|
||||||
|
|
||||||
$("input.table-row:checked").each(function (i, e) {
|
|
||||||
values.push($(e).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
if (values.length == 0) {
|
|
||||||
|
|
||||||
lightyear.notify('未选中任何数据', 'warning');
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
val = values.join(',');
|
|
||||||
|
|
||||||
if (confirm && confirm != '0' && confirm != 'false') {
|
|
||||||
if (confirm == '1') {
|
|
||||||
var text = $('#' + id).text().trim() || $(this).attr('title');
|
|
||||||
confirm = '确定要执行批量<strong>' + text + '</strong>操作吗?';
|
|
||||||
}
|
|
||||||
$.alert({
|
|
||||||
title: '操作提示',
|
|
||||||
content: confirm,
|
|
||||||
type: 'orange',
|
|
||||||
buttons: {
|
|
||||||
confirm: {
|
|
||||||
text: '确认',
|
|
||||||
btnClass: 'btn-primary',
|
|
||||||
action: function () {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
text: '取消',
|
|
||||||
action: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row', function () {
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row-checkall', function () {
|
|
||||||
if ($("input.table-row:checked").is(':checked')) {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.openChecked = function (id, url) {
|
|
||||||
var obj = $('#' + id);
|
|
||||||
if (!obj.size()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$('body').on('click', '#' + id, function () {
|
|
||||||
var val = '';
|
|
||||||
|
|
||||||
var values = [];
|
|
||||||
|
|
||||||
$("input.table-row:checked").each(function (i, e) {
|
|
||||||
values.push($(e).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
if (values.length == 0) {
|
|
||||||
|
|
||||||
lightyear.notify('未选中任何数据', 'warning');
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
val = values.join(',');
|
|
||||||
var size = $(this).data('layer-size');
|
|
||||||
size = size ? size.split(',') : null;
|
|
||||||
w.layerOpen(this, size, url + (/.+\?.*/.test(url) ? '&ids=' : '?ids=') + val);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row', function () {
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row-checkall', function () {
|
|
||||||
if ($("input.table-row:checked").is(':checked')) {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.postActionsChecked = function (id, confirms) {
|
|
||||||
var obj = $('#' + id);
|
|
||||||
if (!obj.size()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$('body').on('click', '#' + id + '-div .dropdown-menu li a', function () {
|
|
||||||
|
|
||||||
var url = $(this).data('url');
|
|
||||||
|
|
||||||
var confirm = confirms[url];
|
|
||||||
|
|
||||||
var val = '';
|
|
||||||
|
|
||||||
var values = [];
|
|
||||||
|
|
||||||
$("input.table-row:checked").each(function (i, e) {
|
|
||||||
values.push($(e).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
if (values.length == 0) {
|
|
||||||
|
|
||||||
lightyear.notify('未选中任何数据', 'warning');
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
val = values.join(',');
|
|
||||||
|
|
||||||
if (confirm && confirm != '0' && confirm != 'false') {
|
|
||||||
if (confirm == '1') {
|
|
||||||
var text = $(this).text().trim();
|
|
||||||
confirm = '确定要执行批量<strong>' + text + '</strong>操作吗?';
|
|
||||||
}
|
|
||||||
$.alert({
|
|
||||||
title: '操作提示',
|
|
||||||
content: confirm,
|
|
||||||
type: 'orange',
|
|
||||||
buttons: {
|
|
||||||
confirm: {
|
|
||||||
text: '确认',
|
|
||||||
btnClass: 'btn-primary',
|
|
||||||
action: function () {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
text: '取消',
|
|
||||||
action: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row', function () {
|
|
||||||
if ($("input.table-row:checked").size() == 0) {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('change', 'input.table-row-checkall', function () {
|
|
||||||
if ($("input.table-row:checked").is(':checked')) {
|
|
||||||
$('#' + id).removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#' + id).addClass('disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.postRowid = function (classname, url, confirm) {
|
|
||||||
$('body').on('click', '.row-__action__ .' + classname, function () {
|
|
||||||
var val = $(this).data('id');
|
|
||||||
if (confirm && confirm != '0' && confirm != 'false') {
|
|
||||||
if (confirm == '1') {
|
|
||||||
var text = $(this).text().trim() || $(this).attr('title') || '此';
|
|
||||||
confirm = '确定要执行<strong>' + text + '</strong>操作吗?';
|
|
||||||
}
|
|
||||||
$.alert({
|
|
||||||
title: '操作提示',
|
|
||||||
content: confirm,
|
|
||||||
type: 'orange',
|
|
||||||
buttons: {
|
|
||||||
confirm: {
|
|
||||||
text: '确认',
|
|
||||||
btnClass: 'btn-primary',
|
|
||||||
action: function () {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
text: '取消',
|
|
||||||
action: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.postActionsRowid = function (classname, confirms) {
|
|
||||||
$('body').on('click', '.row-__action__ .' + classname + ' .dropdown-menu li a', function () {
|
|
||||||
var url = $(this).data('url');
|
|
||||||
|
|
||||||
var confirm = confirms[url];
|
|
||||||
|
|
||||||
var val = $('.row-__action__ .' + classname).data('id');
|
|
||||||
if (confirm && confirm != '0' && confirm != 'false') {
|
|
||||||
if (confirm == '1') {
|
|
||||||
var text = $(this).text().trim() || $(this).attr('title') || '此';
|
|
||||||
confirm = '确定要执行<strong>' + text + '</strong>操作吗?';
|
|
||||||
}
|
|
||||||
else if (confirm == '2') {
|
|
||||||
var size = $('.' + classname).find('.btn-actions').data('layer-size');
|
|
||||||
size = size ? size.split(',') : null;
|
|
||||||
w.layerOpen(this, size);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$.alert({
|
|
||||||
title: '操作提示',
|
|
||||||
content: confirm,
|
|
||||||
type: 'orange',
|
|
||||||
buttons: {
|
|
||||||
confirm: {
|
|
||||||
text: '确认',
|
|
||||||
btnClass: 'btn-primary',
|
|
||||||
action: function () {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
text: '取消',
|
|
||||||
action: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
tpextbuilder.autoSendData({
|
|
||||||
ids: val
|
|
||||||
}, url, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
tpextbuilder.autoSendData = function (data, url, refresh, del) {
|
|
||||||
data.__token__ = w.__token__;
|
|
||||||
data._method = /.+?\/(?:destroy|delete|remove|del)(?:\.\w+)?$/.test(url) ? "delete" : "patch";
|
|
||||||
lightyear.loading('show');
|
|
||||||
$.ajax({
|
|
||||||
url: url,
|
|
||||||
data: data,
|
|
||||||
type: "POST",
|
|
||||||
dataType: "json",
|
|
||||||
success: function (data) {
|
|
||||||
lightyear.loading('hide');
|
|
||||||
if (data.__token__) {
|
|
||||||
w.__token__ = data.__token__;
|
|
||||||
}
|
|
||||||
if (data.status || data.code) {
|
|
||||||
lightyear.notify(data.msg || data.message || '操作成功!', 'success');
|
|
||||||
if (refresh) {
|
|
||||||
$('.search-refresh').trigger('click');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lightyear.notify(data.msg || data.message || '操作失败', 'warning');
|
|
||||||
}
|
|
||||||
if (data.script || (data.data && data.data.script)) {
|
|
||||||
var script = data.script || data.data.script;
|
|
||||||
if ($('#script-div').size()) {
|
|
||||||
$('#script-div').html(script);
|
|
||||||
} else {
|
|
||||||
$('body').append(
|
|
||||||
'<div class="hidden" id="script-div">' + data.script + '</div>');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function () {
|
|
||||||
lightyear.loading('hide');
|
|
||||||
lightyear.notify('网络错误', 'danger');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
w.tpextbuilder = tpextbuilder;
|
|
||||||
|
|
||||||
w.layerOpen = function (obj, size, url) {
|
|
||||||
var href = url || $(obj).data('url') || $(obj).attr('url') || $(obj).attr('href');
|
|
||||||
|
|
||||||
var text = $(obj).data('title') || $(obj).attr('title') || $(obj).text();
|
|
||||||
if ($(obj).data('layer-size')) {
|
|
||||||
size = $(obj).data('layer-size').split(',');
|
|
||||||
}
|
|
||||||
var winheight = $(window).height() - 14;
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: text,
|
|
||||||
shadeClose: false,
|
|
||||||
scrollbar: false,
|
|
||||||
maxmin: true,
|
|
||||||
anim: 5, //渐显
|
|
||||||
shade: 0.3,
|
|
||||||
maxHeight: winheight,
|
|
||||||
area: size || ['90%', '400'],
|
|
||||||
offset: '7px',
|
|
||||||
content: href,
|
|
||||||
success: function (layero, index) {
|
|
||||||
if (!size || size[1] == 'auto' || size[1] == '' || size[1] == '0') {
|
|
||||||
var iframe = layero.find('iframe').get(0);
|
|
||||||
|
|
||||||
var mainheight = $(iframe.contentWindow.document.body).find('.panel-default.content').height() + 10;
|
|
||||||
if (mainheight < 400) {
|
|
||||||
mainheight = 400;
|
|
||||||
}
|
|
||||||
if (mainheight > winheight - 43) {
|
|
||||||
mainheight = winheight - 43;
|
|
||||||
}
|
|
||||||
$(iframe).height(mainheight);
|
|
||||||
//layero.css('top', ((winheight - mainheight - 43) / 2) + 'px');
|
|
||||||
layer.iframeAuto(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(':focus').blur();
|
|
||||||
this.enterEsc = function (event) {
|
|
||||||
if (event.keyCode === 13) {
|
|
||||||
return false; //阻止系统默认回车事件
|
|
||||||
}
|
|
||||||
if (event.keyCode === 0x1B) {
|
|
||||||
var index2 = layer.msg('关闭当前弹窗?', {
|
|
||||||
time: 2000,
|
|
||||||
btn: ['确定', '取消'],
|
|
||||||
yes: function (params) {
|
|
||||||
layer.close(index);
|
|
||||||
layer.close(index2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false; //阻止系统默认esc事件
|
|
||||||
}
|
|
||||||
};
|
|
||||||
$(document).on('keydown', this.enterEsc); //监听键盘事件,关闭层
|
|
||||||
},
|
|
||||||
end: function () {
|
|
||||||
$(document).off('keydown', this.enterEsc); //解除键盘关闭事件
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
})(window);
|
|
||||||
|
|
||||||
window.renderFiles = function (elid) {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 示例上传成功采用返回ID的形式,即上传成功以附件表形式存储,返回给前端ID值。
|
|
||||||
* 成功返回示例:{"status":200,"info":"成功","class":"success","id":1,"picurl":".\/upload\/images\/lyear_5ddfc00174bbb.jpg"}
|
|
||||||
* 这里设定单图上传为js-upload-image,多图上传为js-upload-images
|
|
||||||
* 存放预览图的div元素,命名:file_list_*;后面的上传按钮的命名:filePicker_*(这里的*跟隐藏的input的name对应)。方便单页面中存在有多个上传时区分以及使用。
|
|
||||||
* input上保存上传后的图片ID以及设置上传时的一些参数,
|
|
||||||
*/
|
|
||||||
elid = elid ? elid : '';
|
|
||||||
// 通用绑定,
|
|
||||||
$(elid + '.js-upload-files').each(function () {
|
|
||||||
var $input_file = $(this).find('input.file-url-input'),
|
|
||||||
$input_file_name = $(this).data('name');
|
|
||||||
|
|
||||||
var jsOptions = window.uploadConfigs[$input_file_name];
|
|
||||||
|
|
||||||
var $multiple = jsOptions.multiple, // 是否选择多个文件
|
|
||||||
$ext = jsOptions.ext.join(','), // 支持的文件后缀
|
|
||||||
$size = jsOptions.fileSingleSizeLimit; // 支持最大的文件大小
|
|
||||||
|
|
||||||
var $file_list = $('#file_list_' + $input_file_name);
|
|
||||||
var $file_list_upli = $('#file_list_' + $input_file_name + '_upli');
|
|
||||||
|
|
||||||
var ratio = window.devicePixelRatio || 1;
|
|
||||||
var thumbnailWidth = (jsOptions.thumbnailWidth || 165) * ratio;
|
|
||||||
var thumbnailHeight = (jsOptions.thumbnailHeight || 110) * ratio;
|
|
||||||
|
|
||||||
$file_list.find('li.pic-item').each(function (ii, ee) {
|
|
||||||
var $li = $(ee);
|
|
||||||
var $btn = $li.find('a.btn-link-pic');
|
|
||||||
if ($btn && $btn.attr('href')) {
|
|
||||||
var href = $btn.attr('href');
|
|
||||||
$img = $li.find('img.preview-img');
|
|
||||||
if (!jsOptions.isImage && !/.+\.(png|jpg|jpeg|gif|bmp|wbmp|webpg|ico)(\?.*)?$/i.test(href)) {
|
|
||||||
$btn.removeClass('btn-link-pic');
|
|
||||||
$btn.attr('target', '_blank');
|
|
||||||
$img.attr('src', '/index.php/tpextbuilder/index/file/extimg/type/' + href.replace(/.+?\.(\w+)$/, '$1'));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$img.attr('src', href);
|
|
||||||
}
|
|
||||||
$img.css({
|
|
||||||
'display': 'block',
|
|
||||||
'max-width': thumbnailWidth + 'px',
|
|
||||||
'margin': '0 auto'
|
|
||||||
}).parent('div').css({
|
|
||||||
'height': thumbnailHeight + 'px',
|
|
||||||
'width': thumbnailWidth + 'px',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
if (jsOptions.canUpload || !jsOptions.istable) {
|
|
||||||
|
|
||||||
$file_list_upli.css({
|
|
||||||
'height': thumbnailHeight + 'px',
|
|
||||||
'width': thumbnailWidth + 'px',
|
|
||||||
'padding-left': '10px',
|
|
||||||
'display': 'block',
|
|
||||||
});
|
|
||||||
|
|
||||||
var uploader = WebUploader.create({
|
|
||||||
auto: true,
|
|
||||||
chunked: true,
|
|
||||||
prepareNextFile: true,
|
|
||||||
duplicate: jsOptions.duplicate ? true : false,
|
|
||||||
resize: jsOptions.resize ? true : false,
|
|
||||||
swf: jsOptions.swf_url,
|
|
||||||
server: jsOptions.upload_url,
|
|
||||||
pick: {
|
|
||||||
id: '#picker_' + $input_file_name,
|
|
||||||
multiple: $multiple
|
|
||||||
},
|
|
||||||
fileSingleSizeLimit: $size,
|
|
||||||
fileNumLimit: 99,
|
|
||||||
fileSizeLimit: jsOptions.fileSizeLimit,
|
|
||||||
accept: {
|
|
||||||
title: '文件',
|
|
||||||
extensions: $ext,
|
|
||||||
mimeTypes: jsOptions.mimeTypes || '*/*'
|
|
||||||
},
|
|
||||||
thumb: {
|
|
||||||
// 图片质量,只有type为`image/jpeg`的时候才有效。
|
|
||||||
quality: 70,
|
|
||||||
// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
|
|
||||||
allowMagnify: false,
|
|
||||||
// 是否允许裁剪。
|
|
||||||
crop: true,
|
|
||||||
// 为空的话则保留原有图片格式。
|
|
||||||
// 否则强制转换成指定的类型。
|
|
||||||
type: 'image/jpeg'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
uploader.on('beforeFileQueued', function (file) {
|
|
||||||
if (jsOptions.fileNumLimit > 1 && $file_list.find('li.pic-item').size() >= jsOptions.fileNumLimit) {
|
|
||||||
lightyear.notify('最多允许上传' + jsOptions.fileNumLimit + '个文件', 'danger');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
uploader.on('fileQueued', function (file) {
|
|
||||||
var $li = $('<li class="pic-item" id="' + file.id + '">' +
|
|
||||||
' <figure>' +
|
|
||||||
'<div>' +
|
|
||||||
' <img>' +
|
|
||||||
'</div>' +
|
|
||||||
' <figcaption>' +
|
|
||||||
' <a class="btn btn-xs btn-round btn-square btn-primary btn-link-pic" href="javascript:;"><i class="mdi mdi-eye"></i></a>' +
|
|
||||||
' <a class="btn btn-xs btn-round btn-square btn-danger btn-remove-pic" href="javascript:;"><i class="mdi mdi-delete"></i></a>' +
|
|
||||||
' </figcaption>' +
|
|
||||||
' </figure>' +
|
|
||||||
'</li>'),
|
|
||||||
$img = $li.find('img');
|
|
||||||
|
|
||||||
if (jsOptions.fileNumLimit <= 1) {
|
|
||||||
$file_list.find('li.pic-item').remove();
|
|
||||||
}
|
|
||||||
$file_list.append($li);
|
|
||||||
uploader.makeThumb(file, function (error, src) {
|
|
||||||
if (!jsOptions.isImage && !/(png|jpg|jpeg|gif|bmp|wbmp|webpg|ico)$/i.test(file.ext) && error) {
|
|
||||||
src = '/index.php/tpextbuilder/index/file/extimg/type/' + file.ext;
|
|
||||||
$img.addClass('cantpreview');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$img.addClass('imgpreview');
|
|
||||||
}
|
|
||||||
$img.attr('src', src);
|
|
||||||
$img.css({
|
|
||||||
'display': 'block',
|
|
||||||
'max-width': thumbnailWidth + 'px',
|
|
||||||
'margin': '0 auto'
|
|
||||||
}).parent('div').css({
|
|
||||||
'height': thumbnailHeight + 'px',
|
|
||||||
'width': thumbnailWidth + 'px',
|
|
||||||
});
|
|
||||||
}, thumbnailWidth, thumbnailHeight);
|
|
||||||
$('<div class="progress progress-xs"><div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div></div>').appendTo($li);
|
|
||||||
});
|
|
||||||
uploader.on('uploadProgress', function (file, percentage) {
|
|
||||||
var $percent = $('#' + file.id).find('.progress-bar');
|
|
||||||
$percent.css('width', percentage * 100 + '%');
|
|
||||||
});
|
|
||||||
uploader.on('uploadSuccess', function (file, response) {
|
|
||||||
var $li = $('#' + file.id);
|
|
||||||
if (response.status == 200) { // 返回200成功
|
|
||||||
if (jsOptions.fileNumLimit > 1) {
|
|
||||||
if ($input_file.val()) {
|
|
||||||
$input_file.val($input_file.val() + ',' + response.picurl).trigger('change');
|
|
||||||
} else {
|
|
||||||
$input_file.val(response.picurl).trigger('change');
|
|
||||||
}
|
|
||||||
$li.find('.btn-remove-pic').attr('data-id', response.id).attr('data-url', response.picurl);
|
|
||||||
} else {
|
|
||||||
$input_file.val(response.picurl).trigger('change');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$('<div class="' + response.class + ' upload-result"></div>').text(response.info + '(' + $file_list.find('li.pic-item').size() + '/' + jsOptions.fileNumLimit + ')').appendTo($li.find('figure'));
|
|
||||||
if ($li.find('.cantpreview').size() > 0) {
|
|
||||||
$li.find('a.btn-link-pic').attr('href', response.picurl).removeClass('btn-link-pic').attr('target', '_blank');
|
|
||||||
} else {
|
|
||||||
$li.find('.imgpreview').attr('src', response.picurl);
|
|
||||||
$li.find('a.btn-link-pic').attr('href', response.picurl);
|
|
||||||
}
|
|
||||||
setTimeout(function () {
|
|
||||||
$li.find('.upload-result').remove();
|
|
||||||
}, 3000);
|
|
||||||
});
|
|
||||||
uploader.on('uploadError', function (file) {
|
|
||||||
var $li = $('#' + file.id);
|
|
||||||
$('<div class="error upload-result">上传失败</div>').appendTo($li).find('figure');
|
|
||||||
setTimeout(function () {
|
|
||||||
$li.remove();
|
|
||||||
}, 3000);
|
|
||||||
});
|
|
||||||
uploader.on('error', function (type) {
|
|
||||||
switch (type) {
|
|
||||||
case 'Q_TYPE_DENIED':
|
|
||||||
lightyear.notify('文件类型不正确,只允许上传后缀名为:' + $ext + ',请重新上传!', 'danger');
|
|
||||||
break;
|
|
||||||
case 'F_EXCEED_SIZE':
|
|
||||||
lightyear.notify('文件不得超过' + ($size / 1024) + 'kb,请重新上传!', 'danger');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
uploader.on('uploadComplete', function (file) {
|
|
||||||
setTimeout(function () {
|
|
||||||
$('#' + file.id).find('.progress').remove();
|
|
||||||
}, 500);
|
|
||||||
});
|
|
||||||
// 删除操作
|
|
||||||
$file_list.delegate('.btn-remove-pic', 'click', function () {
|
|
||||||
var url = $(this).data('url');
|
|
||||||
var that = $(this);
|
|
||||||
$.alert({
|
|
||||||
title: '提示',
|
|
||||||
content: '确认要删除此文件吗?',
|
|
||||||
buttons: {
|
|
||||||
confirm: {
|
|
||||||
text: '确认',
|
|
||||||
btnClass: 'btn-primary',
|
|
||||||
action: function () {
|
|
||||||
if (jsOptions.fileNumLimit > 1) {
|
|
||||||
var ids = $input_file.val().split(',');
|
|
||||||
if (url) {
|
|
||||||
for (var i = 0; i < ids.length; i++) {
|
|
||||||
if (ids[i] == url) {
|
|
||||||
ids.splice(i, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$input_file.val(ids.join(',')).trigger('change');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$input_file.val('').trigger('change');
|
|
||||||
}
|
|
||||||
|
|
||||||
that.closest('.pic-item').remove();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cancel: {
|
|
||||||
text: '取消',
|
|
||||||
action: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接入图片查看插件
|
|
||||||
$(this).magnificPopup({
|
|
||||||
delegate: 'a.btn-link-pic',
|
|
||||||
type: 'image',
|
|
||||||
gallery: {
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
window.chooseFile = function (id, $input_file_name) {
|
|
||||||
var jsOptions = window.uploadConfigs[$input_file_name];
|
|
||||||
|
|
||||||
var $file_list = $('#file_list_' + $input_file_name);
|
|
||||||
|
|
||||||
var chooseUrl = jsOptions.chooseUrl || '/admin/attachment/index?';
|
|
||||||
|
|
||||||
if (jsOptions.fileNumLimit > 1 && $file_list.find('li.pic-item').size() >= jsOptions.fileNumLimit) {
|
|
||||||
lightyear.notify('最多允许上传' + jsOptions.fileNumLimit + '个文件', 'danger');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var obj = $('#' + id);
|
|
||||||
|
|
||||||
var size = ['98%', '98%'];
|
|
||||||
|
|
||||||
if (obj.data('layer-size')) {
|
|
||||||
size = obj.data('layer-size').split(',');
|
|
||||||
}
|
|
||||||
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '文件选择',
|
|
||||||
shadeClose: false,
|
|
||||||
scrollbar: false,
|
|
||||||
shade: 0.3,
|
|
||||||
anim: 2, //从最底部往上滑入
|
|
||||||
area: size,
|
|
||||||
content: chooseUrl + 'choose=1&id=' + id + '&limit=' + jsOptions.fileNumLimit + '&ext=' + jsOptions.ext.join(','),
|
|
||||||
success: function (layero, index) {
|
|
||||||
$(':focus').blur();
|
|
||||||
this.enterEsc = function (event) {
|
|
||||||
if (event.keyCode === 13) {
|
|
||||||
return false; //阻止系统默认回车事件
|
|
||||||
}
|
|
||||||
if (event.keyCode === 0x1B) {
|
|
||||||
var index2 = layer.msg('关闭当前弹窗?', {
|
|
||||||
time: 2000,
|
|
||||||
btn: ['确定', '取消'],
|
|
||||||
yes: function (params) {
|
|
||||||
layer.close(index);
|
|
||||||
layer.close(index2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false; //阻止系统默认esc事件
|
|
||||||
}
|
|
||||||
};
|
|
||||||
$(document).on('keydown', this.enterEsc); //监听键盘事件,关闭层
|
|
||||||
},
|
|
||||||
end: function () {
|
|
||||||
$(document).off('keydown', this.enterEsc); //解除键盘关闭事件
|
|
||||||
window.refreshFiles(jsOptions, $file_list, obj);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
window.refreshFiles = function (jsOptions, $file_list, $input_file) {
|
|
||||||
|
|
||||||
var ratio = window.devicePixelRatio || 1;
|
|
||||||
var thumbnailWidth = (jsOptions.thumbnailWidth || 165) * ratio;
|
|
||||||
var thumbnailHeight = (jsOptions.thumbnailHeight || 110) * ratio;
|
|
||||||
|
|
||||||
$file_list.find('li.pic-item').remove();
|
|
||||||
|
|
||||||
if ($input_file.val().trim() == '') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var filesArr = $input_file.val().split(',');
|
|
||||||
|
|
||||||
for (var i in filesArr) {
|
|
||||||
var src = filesArr[i];
|
|
||||||
var $li = $('<li class="pic-item" id="fild' + i + '">' +
|
|
||||||
' <figure>' +
|
|
||||||
'<div style="width:' + thumbnailWidth + 'px;height:' + thumbnailHeight + 'px">' +
|
|
||||||
' <img class="preview-img" />' +
|
|
||||||
'</div>' +
|
|
||||||
' <figcaption>' +
|
|
||||||
' <a class="btn btn-xs btn-round btn-square btn-primary btn-link-pic" href="' + src + '"><i class="mdi mdi-eye"></i></a>' +
|
|
||||||
' <a class="btn btn-xs btn-round btn-square btn-danger btn-remove-pic" href="javascript:;"><i class="mdi mdi-delete"></i></a>' +
|
|
||||||
' </figcaption>' +
|
|
||||||
' </figure>' +
|
|
||||||
'</li>');
|
|
||||||
var $img = $li.find('img');
|
|
||||||
var $btn = $li.find('a.btn-link-pic');
|
|
||||||
$li.find('.btn-remove-pic').attr('data-id', i).attr('data-url', src);
|
|
||||||
$file_list.append($li);
|
|
||||||
if (!jsOptions.isImage && !/.+\.(png|jpg|jpeg|gif|bmp|wbmp|webpg|ico)$/i.test(src)) {
|
|
||||||
src = '/index.php/tpextbuilder/index/file/extimg/type/' + src.replace(/.+?\.(\w+)$/, '$1');
|
|
||||||
$img.addClass('cantpreview');
|
|
||||||
$btn.removeClass('btn-link-pic');
|
|
||||||
$btn.attr('target', '_blank');
|
|
||||||
}
|
|
||||||
$img.attr('src', src);
|
|
||||||
$img.css({
|
|
||||||
'display': 'block',
|
|
||||||
'max-width': thumbnailWidth + 'px',
|
|
||||||
'margin': '0 auto'
|
|
||||||
}).parent('div').css({
|
|
||||||
'height': thumbnailHeight + 'px',
|
|
||||||
'width': thumbnailWidth + 'px',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
//动态选择框,上下级选中状态变化
|
|
||||||
window.renderFiles();
|
|
||||||
});
|
|
|
@ -36,11 +36,11 @@ window.useThemeConfig = Pinia.defineStore('themeConfig', {
|
||||||
* 菜单设置
|
* 菜单设置
|
||||||
*/
|
*/
|
||||||
// 默认菜单导航背景颜色
|
// 默认菜单导航背景颜色
|
||||||
menuBar: '#545c64',
|
menuBar: '#3a3e42',
|
||||||
// 默认菜单导航字体颜色
|
// 默认菜单导航字体颜色
|
||||||
menuBarColor: '#eaeaea',
|
menuBarColor: '#eaeaea',
|
||||||
// 默认菜单高亮背景色
|
// 默认菜单高亮背景色
|
||||||
menuBarActiveColor: 'rgba(0, 0, 0, 0.2)',
|
menuBarActiveColor: 'rgba(115, 145, 183, 0.2)',
|
||||||
// 是否开启菜单背景颜色渐变
|
// 是否开启菜单背景颜色渐变
|
||||||
isMenuBarColorGradual: false,
|
isMenuBarColorGradual: false,
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ window.useThemeConfig = Pinia.defineStore('themeConfig', {
|
||||||
* 分栏设置
|
* 分栏设置
|
||||||
*/
|
*/
|
||||||
// 默认分栏菜单背景颜色
|
// 默认分栏菜单背景颜色
|
||||||
columnsMenuBar: '#545c64',
|
columnsMenuBar: '#3a3e42',
|
||||||
// 默认分栏菜单字体颜色
|
// 默认分栏菜单字体颜色
|
||||||
columnsMenuBarColor: '#e6e6e6',
|
columnsMenuBarColor: '#e6e6e6',
|
||||||
// 是否开启分栏菜单背景颜色渐变
|
// 是否开启分栏菜单背景颜色渐变
|
||||||
|
@ -126,8 +126,8 @@ window.useThemeConfig = Pinia.defineStore('themeConfig', {
|
||||||
* 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/topBar/setings.vue
|
* 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/topBar/setings.vue
|
||||||
* 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
|
* 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
|
||||||
*/
|
*/
|
||||||
// 布局切换:可选值"<defaults|classic|transverse|columns>",默认 defaults
|
// 布局切换:可选值"<defaults|classic|transverse|columns>",默认 columns
|
||||||
layout: 'defaults',
|
layout: 'columns',
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 后端控制路由
|
* 后端控制路由
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
|
|
||||||
namespace vuenextadmin\common;
|
namespace vuenextadmin\common;
|
||||||
|
|
||||||
|
use tpext\think\App;
|
||||||
|
use tpext\think\View;
|
||||||
|
use tpext\common\ExtLoader;
|
||||||
use tpext\common\Resource as baseResource;
|
use tpext\common\Resource as baseResource;
|
||||||
use tpext\myadmin\common\Module as adminModule;
|
use tpext\myadmin\common\Module as adminModule;
|
||||||
use tpext\think\View;
|
|
||||||
|
|
||||||
class Resource extends baseResource
|
class Resource extends baseResource
|
||||||
{
|
{
|
||||||
protected $version = '1.0.1';
|
protected $version = '1.0.4';
|
||||||
|
|
||||||
protected $name = 'vue.next.admin';
|
protected $name = 'vue.next.admin';
|
||||||
|
|
||||||
|
@ -28,24 +30,53 @@ class Resource extends baseResource
|
||||||
adminModule::getInstance()->addIndexView($indexView, 'vue-next-admin样式');
|
adminModule::getInstance()->addIndexView($indexView, 'vue-next-admin样式');
|
||||||
adminModule::getInstance()->addLoginView($loginView, 'vue-next-admin样式');
|
adminModule::getInstance()->addLoginView($loginView, 'vue-next-admin样式');
|
||||||
|
|
||||||
$adminConfig = adminModule::getInstance()->getConfig();
|
$this->shareVars();
|
||||||
|
|
||||||
|
if (ExtLoader::isWebman()) {
|
||||||
|
//webman 每次请求结束后清除View::clearShareVars(),需要监听请求开始事件重新共享
|
||||||
|
ExtLoader::watch('tpext_webman_run', function () {
|
||||||
|
$this->shareVars();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function shareVars()
|
||||||
|
{
|
||||||
|
$indexView = $this->getRoot() . implode(DIRECTORY_SEPARATOR, ['admin', 'view', 'index', 'index.html']);
|
||||||
|
$adminConfig = adminModule::getInstance()->getConfig();
|
||||||
$adminIndexView = $adminConfig['index_page_style'] ?? '';
|
$adminIndexView = $adminConfig['index_page_style'] ?? '';
|
||||||
|
|
||||||
if ($adminIndexView == str_replace(app()->getRootPath(), '__WWW__', $indexView)) { //本扩展提供的index主页样式正在被使用
|
if ($adminIndexView == str_replace(App::getRootPath(), '__WWW__', $indexView)) { //本扩展提供的index主页样式正在被使用
|
||||||
$admin_components_path = $this->getRoot() . implode(DIRECTORY_SEPARATOR, ['admin', 'view', 'components']);
|
|
||||||
|
|
||||||
$config = $this->getConfig();
|
$config = $this->getConfig();
|
||||||
|
|
||||||
View::share([
|
View::share([
|
||||||
'admin_aside' => $admin_components_path . DIRECTORY_SEPARATOR . 'aside.html',
|
|
||||||
'admin_setting' => $admin_components_path . DIRECTORY_SEPARATOR . 'setting.html',
|
|
||||||
'admin_header' => $admin_components_path . DIRECTORY_SEPARATOR . 'header.html',
|
|
||||||
'admin_main' => $admin_components_path . DIRECTORY_SEPARATOR . 'main.html',
|
|
||||||
'admin_columns_aside' => $admin_components_path . DIRECTORY_SEPARATOR . 'columns-aside.html',
|
|
||||||
'admin_horizontal' => $admin_components_path . DIRECTORY_SEPARATOR . 'horizontal.html',
|
|
||||||
'wartermark_text' => $config['wartermark_text'],
|
'wartermark_text' => $config['wartermark_text'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function uninstall($runSql = true)
|
||||||
|
{
|
||||||
|
$indexView = $this->getRoot() . implode(DIRECTORY_SEPARATOR, ['admin', 'view', 'index', 'index.html']);
|
||||||
|
$loginView = $this->getRoot() . implode(DIRECTORY_SEPARATOR, ['admin', 'view', 'index', 'login.html']);
|
||||||
|
|
||||||
|
$adminConfig = adminModule::getInstance()->getConfig();
|
||||||
|
|
||||||
|
$adminIndexView = $adminConfig['index_page_style'] ?? '';
|
||||||
|
$adminLoginxView = $adminConfig['login_page_style'] ?? '';
|
||||||
|
|
||||||
|
if (
|
||||||
|
$adminIndexView == str_replace(App::getRootPath(), '__WWW__', $indexView)
|
||||||
|
|| $adminLoginxView == str_replace(App::getRootPath(), '__WWW__', $loginView)
|
||||||
|
) { //本扩展提供的index主页或登录样式正在被使用
|
||||||
|
$this->errors[] = new \Exception('本扩展的index模板或login模板正被使用,请修改[后台框架]配置中修改模板为其他,后再卸载');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::uninstall($runSql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enabled($state)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue