feat: 项目基础框架+配置+Kernel

This commit is contained in:
testadmin
2026-04-29 05:35:00 +08:00
parent 6ce7adcbfb
commit 9a6151fce3
5082 changed files with 437062 additions and 0 deletions
@@ -0,0 +1,74 @@
{include file="../application/tpl/admin/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit()">新增管理员</el-button>
</div>
<div class="fr">
<el-button type="warning" plain size="mini" @click="getlist" icon="el-icon-search">刷新</el-button>
</div>
</div>
<table>
<thead>
<tr><th>姓名</th><th>账号</th><th>角色</th><th>状态</th><th>添加时间</th><th>最后登录</th><th>登录IP</th><th width="220">操作</th></tr>
</thead>
<tbody>
<tr v-for="(items,index) in lists">
<td>{{items.user_name}}</td>
<td>{{items.account_name}}</td>
<td>{{items.role_name}}</td>
<td><span v-if="items.state==1">启用</span><span v-else>禁用</span></td>
<td>{{items.addtime}}</td>
<td>{{items.logintime}}</td>
<td>{{items.loginip}}</td>
<td>
<el-button type="text" @click="repass(index)" v-if="items.id!=1">重置密码</el-button>
<el-button type="text" @click="editstate(index)" v-if="items.id!=1"><span v-if="items.state==1">禁用</span><span v-else>启用</span></el-button>
<el-button type="text" @click="edit(index)" v-if="items.id!=1">修改</el-button>
<el-button type="text" @click="del(index)" v-if="items.id!=1">删除</el-button>
</td>
</tr>
</tbody>
</table>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="edittitle"
:visible.sync="iseditshow"
width="480px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="80px">
<el-form-item label="登录账号" prop="account_name">
<el-input v-model.trim="one.account_name" placeholder="登录账号"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="user_name">
<el-input v-model.trim="one.user_name" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="登录密码" prop="password" v-if="ac.type=='add'">
<el-input v-model.trim="one.password" placeholder="登录密码"></el-input>
</el-form-item>
<el-form-item label="角色" prop="role">
<el-select v-model="one.role" placeholder="无">
<el-option value="" label="无"></el-option>
<el-option v-for="items in roles" :value="items.id" :key="items.id" :label="items.name"></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small"><span v-if="isedit">关 闭</span><span v-else>取 消</span></el-button>
<el-button type="primary" @click="editSub('one')" size="small" v-if="!isedit">确 定</el-button>
</span>
</el-dialog>
{include file="../application/tpl/admin/foot.html" /}
<script src="/model/admin/admins.js"></script>
</body>
</html>
@@ -0,0 +1,42 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item><a href="/okadmin/contents">内容管理</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
<div class="fr"><el-button type="primary" @click="adds('one')" size="small" icon="el-icon-check">保存</el-button></div>
</el-breadcrumb>
<el-form :model="one" ref="one" :rules="ruleOne" label-width="72px" class="editoneshi">
<el-col :span="12">
<el-form-item label="分类" prop="typeid">
<el-select v-model="one.typeid" placeholder="请选择分类" size="small">
<el-option
v-for="item in types"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label=" ">
<el-button type="success" @click="addonecontent" size="small" icon="el-icon-plus" v-if="one.contents.length<18">添加内容</el-button>
</el-form-item>
</el-col>
<el-col :span="24">
<el-row class="clearfix">
<el-col :span="12" v-for="(items,index) in one.contents" class="nrgldnrone">
<el-form-item :prop="'contents.'+index+'.c'" :label="'内容'+(index+1)" :rules="[{required: true, message: '请输入内容', trigger: 'blur'},{ type: 'string', min: 20, message: '内容至少20字符', trigger: 'blur' }]">
<el-input type="textarea" v-model="items.c" :placeholder="'请输入内容'+(index+1)"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-form>
{include file="../application/admin/view/inc/foot.html" /}
<script src="/model/admin/contentadds.js"></script>
</body>
</html>
@@ -0,0 +1,67 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit(-1)">添加内容</el-button>
<el-button type="warning" icon="el-icon-plus" size="mini" @click="edits">批量添加内容</el-button>
</div>
<div class="fr">共{{total}}条内容</div>
</div>
<table>
<thead>
<tr>
<th width="80">ID</th><th width="120">分类</th><th>内容</th><th width="120">操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(items,index) in lists">
<td>{{items.id}}</td>
<td>{{typeid2str(items.typeid)}}</td>
<td>{{comm.reduceStr(items.content,60)}}...</td>
<td>
<el-button type="text" @click="edit(index)">修改</el-button>
<el-button type="text" @click="del(index)">删除</el-button>
</td>
</tr>
</tbody>
</table>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="ac.type=='add'?'添加内容':'修改内容'"
:visible.sync="iseditshow"
width="800px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="60px">
<el-form-item label="分类" prop="typeid">
<el-select v-model="one.typeid" placeholder="请选择分类">
<el-option
v-for="item in types"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input type="textarea" rows="10" v-model="one.content"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small">取 消</el-button>
<el-button type="primary" @click="editSub('one')" size="small">确 定</el-button>
</span>
</el-dialog>
{include file="../application/admin/view/inc/foot.html" /}
<script src="/model/admin/contents.js"></script>
</body>
</html>
+37
View File
@@ -0,0 +1,37 @@
</el-main>
</el-container>
</div>
<el-dialog
title="修改登录密码"
:visible.sync="comm.uppassISshow"
width="30%"
>
<div>
<el-form :model="comm.uppassForm" ref="uppassForm" :rules="comm.rule_uppass" label-width="100px" status-icon label-position="left">
<el-form-item label="原 密 码" prop="oldpass">
<el-input type="text" v-model="comm.uppassForm.oldpass" autocomplete="off" prefix-icon="el-icon-unlock" placeholder="原密码"></el-input>
</el-form-item>
<el-form-item label="新 密 码" prop="newpass">
<el-input type="password" v-model="comm.uppassForm.newpass" autocomplete="off" show-password prefix-icon="el-icon-lock" placeholder="新密码"></el-input>
</el-form-item>
<el-form-item label="重复新密码" prop="repass">
<el-input type="password" v-model="comm.uppassForm.repass" autocomplete="off" show-password prefix-icon="el-icon-lock" placeholder="重复新密码"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="comm.uppassISshow = false">取 消</el-button>
<el-button type="primary" @click="uppassSub('uppassForm')">确 定</el-button>
</span>
</el-dialog>
<script src="/static/vue/jquery-1.9.0.min.js"></script>
<script src="/static/vue/vue.min.js"></script>
<script src="/static/vue/comm.js"></script>
<script src="/static/eleui/admin.js"></script>
+61
View File
@@ -0,0 +1,61 @@
<!doctype html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0" />
<title>{$pagemodel}-{$Think.const.SITE_NAME}管理后台</title>
<link rel="stylesheet" href="/static/eleui/index.css"/>
<link rel="stylesheet" href="/static/eleui/diy.css"/>
</head>
<body>
<div id="app" v-show="comm.pageloadcomplete" style="display: none;">
<div class="el-container is-vertical">
<header class="el-header" style="height: 60px;">
<div class="clearfix">
<div class="logo fl"><i class="el-icon-magic-stick fl"></i><span class="fl">{$Think.const.SITE_NAME}管理后台</span></div>
<div class="fr" style="padding-top: 16px;">
<el-dropdown trigger="click" @command="comm.topRcommandClick">
<span class="el-dropdown-link">
{$Think.session.adminName}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item icon="el-icon-edit-outline" command="uppass">修改密码</el-dropdown-item>
<el-dropdown-item icon="el-icon-right" command="loginout">安全退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</header>
<el-container>
<el-aside width="240px" class="leftmenu">
<el-menu
class="el-menu-vertical-demo"
@open="comm.handleOpen"
@close="comm.handleClose"
:default-active="menuActive"
:default-openeds="menuAOpeneds"
@select="comm.leftnavclick"
>
<el-submenu index="1">
<template slot="title"><i class="el-icon-user"></i><span>会员管理</span></template>
<el-menu-item index="101">会员列表</el-menu-item>
<el-menu-item index="102">充值记录</el-menu-item>
<el-menu-item index="103">统计报表</el-menu-item>
</el-submenu>
<el-submenu index="8">
<template slot="title"><i class="el-icon-setting"></i><span>系统设置</span></template>
<el-menu-item index="8001">地区管理</el-menu-item>
<el-menu-item index="801">分类管理</el-menu-item>
<el-menu-item index="802">内容管理</el-menu-item>
<el-menu-item index="803">模板管理</el-menu-item>
<el-menu-item index="8005">角色管理</el-menu-item>
<el-menu-item index="8006">管理员管理</el-menu-item>
<el-menu-item index="8004">系统设置</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<!--head end -->
@@ -0,0 +1,9 @@
{include file="../application/tpl/admin/head.html" /}
<div class="indexadminbox">
<div class="systitle">{$Think.const.SITE_NAME}管理后台</div>
<div class="time">{{comm.nowtimes}}</div>
</div>
{include file="../application/tpl/admin/foot.html" /}
<script src="/model/admin/index.js"></script>
</body>
</html>
+118
View File
@@ -0,0 +1,118 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>管理员登录_{$Think.const.SITE_NAME}</title>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<link rel="stylesheet" href="/static/eleui/index.css"/>
<link rel="stylesheet" href="/static/eleui/diy.css"/>
</head>
<body class="admin_login_body">
<div id="app">
<div class="admin_loginbox">
<el-form :model="loginForm" ref="loginForm" :rules="rule_login" label-width="0" class="demo-ruleForm">
<div class="cctit">管理员登录</div>
<el-form-item label="" prop="a_name">
<el-input type="text" v-model="loginForm.a_name" autocomplete="off" prefix-icon="el-icon-user" placeholder="登录账号"></el-input>
</el-form-item>
<el-form-item label="" prop="pwd">
<el-input type="password" v-model="loginForm.pwd" autocomplete="off" show-password prefix-icon="el-icon-lock" placeholder="登录密码"></el-input>
</el-form-item>
<el-form-item label="" prop="codeimg">
<el-col :span="12">
<el-input type="text" v-model="loginForm.codeimg" autocomplete="off" prefix-icon="el-icon-check" placeholder="验证码"></el-input>
</el-col>
<el-col :span="10" :offset="2">
<img :src="captcha" class="admin_captcha" rel="admin_captcha" class="yzmimg" id="code" @click="getcode"/>
</el-col>
</el-form-item>
<el-form-item label="" class="adminlogin_btnbox">
<el-button type="primary" @click="loginGo" v-if="!isthislogin">登  录</el-button>
<el-button type="primary" v-else>登  录</el-button>
</el-form-item>
</el-form>
</div>
<div class="loginbtxt"></div>
</div>
<script src="/static/vue/jquery-1.9.0.min.js"></script>
<script src="/static/vue/vue.min.js"></script>
<script src="/static/eleui/admin.js"></script>
<script src="/static/vue/comm.js"></script>
<script>
var app=new Vue({
el:"#app",
data:{
loginForm:{
a_name:'',
pwd:'',
codeimg:''
},
captcha:"/captcha/captcha",
rule_login:{
},
isthislogin:false
},
created: function() {
var that=this;
},
methods: {
init:function(){
},
loginGo:function(){
this.isthislogin=true;
var arg={
"a_name":comm.sTrim(this.loginForm.a_name),
"pwd":comm.sTrim(this.loginForm.pwd),
"codeimg":comm.sTrim(this.loginForm.codeimg),
}
//adminlogin
$.ajax({
url: "/admin/admin/adminlogin",
type: 'post',
dataType: "json",
contentType: "application/json",
data:JSON.stringify(arg),
success: function(data) {
this.$message.success("登录成功");
setTimeout(function () {
window.location.href="/admin/admin";
}, 3000)
}.bind(this),
error:function(res){
//this.$message.error(JSON.parse(res.responseText).msg);
this.getcode();
this.isthislogin=false;
}.bind(this)
})
},
getcode:function(){
this.captcha="/captcha/captcha?t="+new Date().getTime();
},
searchdata:function(){
var arg={
cs:null
}
$.ajax({
url: "/api/getlist",
type: "get",
dataType: "json",
contentType: "application/json",
data:arg,
success: function(data) {
//$(".datalist").append(data.data)
this.alllists=this.alllists.concat(data.data);
}.bind(this)
});
},
}
})
</script>
</body>
</html>
+241
View File
@@ -0,0 +1,241 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item><a href="/okadmin/poems">古诗管理</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
<div class="fr">
<div class="fl"><el-input type="text" v-model="cai_id" size="mini" placeholder="目标ID"></el-input></div>
<div class="fl"><el-button type="warning" size="mini" @click="caiji">采集</el-button></div>
</div>
</el-breadcrumb>
<el-form :model="one" ref="one" :rules="ruleOne" label-width="72px" class="editoneshi">
<el-col :span="12">
<el-form-item label="标题" prop="title">
<el-input type="text" v-model="one.title" size="mini" placeholder="标题"></el-input>
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="朝代" prop="author">
<el-select v-model="one.dynastyid" size="mini" placeholder="朝代">
<el-option v-for="item in comm.chaodais" :value="item.value" :key="item.value" :label="item.label"></el-option>
</select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="作者" prop="author">
<el-input type="text" v-model="one.author" size="mini" placeholder="作者姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年级" prop="title">
<el-cascader :options="comm.gradetypes" v-model="one.gradeTaID" placeholder="年级" size="mini" clearable></el-cascader>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="诗集" prop="title">
<el-select v-model="one.groupid" size="mini" placeholder="诗集" clearable>
<el-option v-for="item in comm.groupids" :value="item.value" :key="item.value" :label="item.label"></el-option>
</select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="详情" prop="contents">
<el-input type="textarea" v-model="one.contents" size="mini" placeholder="详情" rows="27"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="翻译" prop="yi">
<el-input type="textarea" v-model="one.yi" size="mini" placeholder="翻译" rows="11"></el-input>
</el-form-item>
<el-form-item label="注释" prop="zhu">
<el-input type="textarea" v-model="one.zhu" size="mini" placeholder="注释" rows="11"></el-input>
</el-form-item>
<el-form-item label="赏析" prop="shang">
<el-input type="textarea" v-model="one.shang" size="mini" placeholder="赏析" rows="11"></el-input>
</el-form-item>
</el-col>
<el-col :span="24" style="text-align: center;">
<el-form-item label=" " prop="title">
<el-button type="primary" @click="saveto">保存</el-button>
<span style="padding:0 100px 0 0;"></span><el-button type="danger" @click="next({$id+1})">保存并下一首</el-button>
</el-form-item>
</el-col>
</el-form>
{include file="../application/admin/view/inc/foot.html" /}
<script>
var app=new Vue({
el:"#app",
data:{
menuActive:"101",
menuAOpeneds:[],
nowtimes:"23",
one:{
title:'',
gradeTaID:[],//根据学段,年级重新组成数组
gradetype:null,
gradeid:null,
dynastyid:null,
dynasty:'',
groupid:null,
author:"",
contents:"",
remark1:"",
remark2:"",
remark2:"",
yi:'[]',
zhu:'[]',
shang:'[]'
},
id:null,
ruleOne:{
title:[
]
},
cai_id:null
},
created: function() {
var that=this;
{if $id}
this.id={$id};
this.getone();
{/if}
},
methods: {
init:function(){
},
getone:function(){
$.ajax({
url: "/okadmin/oneshi?id="+{$id},
type: "get",
dataType: "json",
contentType: "application/json",
data:"",
success: function(data) {
this.one=data.data;
if(!this.one.yi)this.one.yi='[]';
if(!this.one.zhu)this.one.zhu='[]';
if(!this.one.shang)this.one.shang='[]';
//console.log(JSON.stringify(data.data))
}.bind(this),
error:function(err){
}.bind(this)
});
},
caiji:function(){
$.ajax({
url: "/okadmin/caiji?id="+this.cai_id,
type: "get",
dataType: "json",
contentType: "application/json",
data:"",
success: function(data) {
this.one.yi=JSON.stringify(data.yi);
this.one.zhu=JSON.stringify(data.zhu);
this.one.shang=JSON.stringify(data.shang);
}.bind(this),
error:function(err){
}.bind(this)
});
},
next:function(id){
if(id){
$.ajax({
url: "/okadmin/saveshi?id="+this.id,
type: "patch",
dataType: "json",
contentType: "application/json",
data:JSON.stringify(this.one),
success: function(data) {
this.$message.success("修改成功");
$.ajax({
url: "/okadmin/getnext?id="+this.id,
type: "get",
dataType: "json",
contentType: "application/json",
data:"",
success: function(data) {
window.location.href="/okadmin/poetry/"+data.id;
}.bind(this),
error:function(err){
}.bind(this)
});
}.bind(this),
error:function(err){
}.bind(this)
});
}else{
}
},
saveto:function(){
var id=this.id;
if(id){
$.ajax({
url: "/okadmin/saveshi?id="+this.id,
type: "patch",
dataType: "json",
contentType: "application/json",
data:JSON.stringify(this.one),
success: function(data) {
this.$message.success("修改成功");
}.bind(this),
error:function(err){
}.bind(this)
});
}else{
}
},
uppassSub:function(formName){
this.$refs[formName].validate((valid) => {
if (valid) {
var old=comm.sTrim(comm.uppassForm.oldpass)
var newp=comm.sTrim(comm.uppassForm.newpass)
var renewp=comm.sTrim(comm.uppassForm.repass)
var query={
password:old,
newPassword:newp
};
$.ajax({
url: "/okadmin/uppass",
type: "post",
dataType: "json",
contentType: "application/json",
data:JSON.stringify(query),
success: function(data) {
comm.uppassForm.newpass="";
comm.uppassForm.oldpass="";
comm.uppassForm.renewpass="";
comm.uppassForm=false;
this.$message.success("密码修改成功。请使用新密码重新登录!");
setTimeout(function () {
window.location.href="/okadmin/loginout";
}, 3000)
}.bind(this),
error:function(err){
this.$message.error(JSON.parse(err.responseText).msg);
}.bind(this)
});
} else {
return false;
}
});
},
}
})
</script>
</body>
</html>
@@ -0,0 +1,51 @@
{include file="../application/tpl/admin/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit(-1)">添加顶级地区</el-button>
</div>
<div class="fr">
<el-button type="warning" plain size="mini" @click="getlist" icon="el-icon-search">刷新</el-button>
</div>
</div>
<table>
<thead>
<tr><th width="180">顶级地区</th><th>二级地区</th></tr>
</thead>
<tbody>
<tr v-for="(items,index) in lists">
<td>{{items.initials}} {{items.title}}</td>
<td></td>
</tr>
</tbody>
</table>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="edittitle"
:visible.sync="iseditshow"
width="400px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="80px">
<el-form-item label="地区名称" prop="title">
<el-input v-model.trim="one.title" placeholder="地区名称"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small">取 消</el-button>
<el-button type="primary" @click="editSub('one')" size="small">确 定</el-button>
</span>
</el-dialog>
{include file="../application/tpl/admin/foot.html" /}
<script src="/model/admin/regions.js"></script>
</body>
</html>
+73
View File
@@ -0,0 +1,73 @@
{include file="../application/tpl/admin/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit()">新增角色</el-button>
</div>
<div class="fr">
<el-button type="warning" plain size="mini" @click="getlist" icon="el-icon-search">刷新</el-button>
</div>
</div>
<table>
<thead>
<tr><th width="200">角色名称</th><th>描述</th><th width="48">系统</th><th width="150">操作</th></tr>
</thead>
<tbody>
<tr v-for="(items,index) in lists">
<td>{{items.name}}</td>
<td>{{items.desc}}</td>
<td>
<span v-if="items.issys"></span><span v-else>-</span>
</td>
<td>
<el-button type="text" @click="edit(index,'v')">查看</el-button>
<el-button type="text" @click="edit(index)" v-if="!items.issys">修改</el-button>
<el-button type="text" @click="del(index)" v-if="!items.issys">删除</el-button>
</td>
</tr>
</tbody>
</table>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="edittitle"
:visible.sync="iseditshow"
width="800px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="80px">
<el-form-item label="角色名称" prop="name">
<el-input v-model.trim="one.name" placeholder="角色名称" :disabled="isedit"></el-input>
</el-form-item>
<el-form-item label="角色描述" prop="desc">
<el-input type="textarea" v-model.trim="one.desc" placeholder="角色描述" :disabled="isedit"></el-input>
</el-form-item>
<el-form-item label="权限" prop="permissions">
<div class="qxselboxs">
<div class="li" v-for="(items,index) in permissions">
<b class="name1">{{items.name}}</b>
<div class="u2 clearfix" v-if="items.item.length">
<div class="li2" :class="comm.isArrayCon(selpss,items2.id)?'cur':''" :disabled="isedit" v-for="(items2,index2) in items.item" @click="isedit?'':selAp(items2.id)">{{items2.name}}</div>
</div>
</div>
</div>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small"><span v-if="isedit">关 闭</span><span v-else>取 消</span></el-button>
<el-button type="primary" @click="editSub('one')" size="small" v-if="!isedit">确 定</el-button>
</span>
</el-dialog>
{include file="../application/tpl/admin/foot.html" /}
<script src="/model/admin/roles.js"></script>
</body>
</html>
@@ -0,0 +1,75 @@
{include file="../application/tpl/admin/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<el-form :model="one" ref="one" :rules="ruleOne" label-width="150px" class="editoneshi">
<el-row class="clearfix">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="sitename" label="系统名称">
<el-input v-model.trim="one.sitename" placeholder="请输入系统名称"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="domain_name" label="官方网址">
<el-input v-model.trim="one.domain_name" placeholder="请输入官方网址"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="kf_weixin" label="客服微信号">
<el-input v-model.trim="one.kf_weixin" placeholder="请输入客服微信号"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="kf_qq" label="客服QQ">
<el-input v-model.trim="one.kf_qq" placeholder="请输入客服QQ"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="kf_400" label="400热线">
<el-input v-model.trim="one.kf_400" placeholder="请输入400热线"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="kf_wxcode" label="微信客服二维码">
<el-upload
class="upload-demo"
action="/okadmin/wxcodeup"
:on-success="upok"
:before-upload="beforeAvatarUpload"
:show-file-list="false">
<div style="position:relative;" v-if="one.kf_wxcode">
<img :src="one.kf_wxcode" width="128" height="128" style="display:block;padding:4px;border:1px solid #e4e4e4;">
<span style="position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.4);color:#fff;text-align:center;height:30px;line-height:30px;">更改</span>
</div>
<el-button size="small" type="warning" v-else>上传</el-button>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="client_name" label="客户端名称">
<el-input type="textarea" v-model.trim="one.client_name" placeholder="请输入客户端名称。客户端title"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="site_keyword" label="网站关键词">
<el-input type="textarea" v-model.trim="one.site_keyword" placeholder="请输入网站关键词"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="8">
<el-form-item prop="site_desc" label="网站描述">
<el-input type="textarea" v-model.trim="one.site_desc" placeholder="请输入网站描述"></el-input>
</el-form-item>
</el-col>
</el-row>
<div style="text-align:center;padding:20px;">
<el-button type="primary" @click="adds('one')" size="small" icon="el-icon-check">保存</el-button>
</div>
</el-form>
{include file="../application/tpl/admin/foot.html" /}
<script src="/model/admin/syssetting.js"></script>
</body>
</html>
@@ -0,0 +1,85 @@
{include file="../application/admin/view/inc/head.html" /}
<div class="mainconbox">
<div class="Breadcrumbs">
<span class="ico fa fa-home"></span><a href="/okadmin">系统首页</a><i class="i fa fa-angle-right"></i><span class="active">系统设置</span>
</div>
<!--面包屑 END -->
<!--数据加载中的样式<div class="loadingbox"></div> -->
<div class="col-sm-12 clearfix">
<!--面包屑 -->
<!--面包屑 END -->
<!--数据加载中的样式<div class="loadingbox"></div> -->
<div class="qc8"></div>
<div class="lmtab">
<div class="f-l txt">基本设置</div>
<div class="qc"></div>
</div>
<div class="qc8"></div>
<div class="col-sm-12">
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-1 control-label no-padding-right"><span class="red">*</span>网站名称</label>
<div class="col-sm-2"><input name="site_name" type="text" class="form-control" id="site_name" value="{$site_name}"></div>
<label class="col-sm-1 control-label no-padding-right">域名</label>
<div class="col-sm-2"><input name="domain_name" type="text" class="form-control" id="domain_name" value="{$domain_name}"></div>
<label class="col-sm-1 control-label no-padding-right"><span class="red">*</span>预约收费</label>
<div class="col-sm-2">
<div class="input-group">
<input name="yuyuefee" type="text" class="form-control" id="yuyuefee" value="{$yuyuefee}">
<span class="input-group-addon">元 / 次</span>
</div>
</div>
</div>
<div class="qc8"></div>
<div class="qc8"></div>
<div class="h-20"></div>
<div class="form-group">
<div class="col-sm-12" style="text-align: center;">
<a href="javascript:;" class="btn btn-info" type="button" onclick="saveok();"><i class="fa fa-save"></i> 保 存</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- -->
<script>topnavid="1";tonavjs();l_navid="1";lenavjs();/*头部,左部菜单选中样式*/</script>
<script>
function saveok(){
var arg={
"site_name":trim($("#site_name").val()),
"domain_name":trim($("#domain_name").val()),
"yuyuefee":trim($("#yuyuefee").val()),
}
$.ajax({
url: "/okadmin/systemup",
type: "put",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(arg),
success: function(data) {
diytipshow('ok',data.msg);
},error:function(err){
diytipshow('err',JSON.parse(err.responseText).msg);
}
});
}
</script>
</body>
</html>
@@ -0,0 +1,71 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit(-1)">添加模板</el-button>
</div>
<div class="fr">共{{total}}个模板</div>
</div>
<table>
<thead>
<tr>
<th width="80">ID</th><th>模板名称</th><th>描述</th><th width="120">操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(items,index) in lists">
<td>{{items.id}}</td>
<td>{{items.name}}</td>
<td>{{items.dec}}</td>
<td>
<el-button type="text" @click="yulan(index)">预览</el-button>
<el-button type="text" @click="del(index)">删除</el-button>
</td>
</tr>
</tbody>
</table>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="ac.type=='add'?'添加模板':'修改模板'"
:visible.sync="iseditshow"
width="800px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="80px">
<el-form-item label="名称" prop="name">
<el-input v-model="one.name"></el-input>
</el-form-item>
<el-form-item label="模板" prop="file">
<el-input v-model="one.file" id="onefile" readonly placeholder="点击上传模板" @click="fileClick"></el-input>
<el-upload
class="upload-demo"
action="/okadmin/templateupload"
:on-success="upok"
:before-upload="beforeAvatarUpload"
:show-file-list="false">
<el-button size="small" type="primary">点击上传HTML文件</el-button>
</el-upload>
</el-form-item>
<el-form-item label="描述" prop="dec">
<el-input type="textarea" rows="4" v-model="one.dec"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small">取 消</el-button>
<el-button type="primary" @click="editSub('one')" size="small">确 定</el-button>
</span>
</el-dialog>
{include file="../application/admin/view/inc/foot.html" /}
<script src="/model/admin/templates.js"></script>
</body>
</html>
+49
View File
@@ -0,0 +1,49 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item>{$pagemodel}</el-breadcrumb-item>
</el-breadcrumb>
<div class="clearfix pdtb10">
<div class="fl">
<el-button type="success" icon="el-icon-plus" size="mini" @click="edit(-1)">添加分类</el-button>
</div>
<div class="fr">
<el-button type="warning" plain size="mini" @click="getlist" icon="el-icon-search">刷新</el-button>
</div>
</div>
<div class="clearfix typelistbox">
<div class="li" v-for="(items,index) in lists">
<span>{{items.name}}</span>
<i class="el-icon-edit" @click="edit(index)"></i><i class="el-icon-error" @click="del(index)"></i>
</div>
</div>
<div class="listtip" style="display:none;" v-show="isloading || lists.length<1">{{datatxt}}</div>
<el-dialog
:title="ac.type=='add'?'添加分类':'修改分类'"
:visible.sync="iseditshow"
width="400px"
:show-close="false"
:close-on-press-escape="false"
:close-on-click-modal="false"
>
<div>
<el-form ref="one" :model="one" :rules="oneRulue" label-width="80px">
<el-form-item label="分类名称" prop="name">
<el-input v-model="one.name"></el-input>
</el-form-item>
<el-form-item label="排序" prop="px">
<el-input-number v-model="one.px" controls-position="right" :min="1" :max="99999"></el-input-number>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="iseditshow = false" size="small">取 消</el-button>
<el-button type="primary" @click="editSub('one')" size="small">确 定</el-button>
</span>
</el-dialog>
{include file="../application/admin/view/inc/foot.html" /}
<script src="/model/admin/types.js"></script>
</body>
</html>
@@ -0,0 +1,11 @@
{include file="../application/admin/view/inc/head.html" /}
<el-breadcrumb separator="/">
<el-breadcrumb-item><i class="el-icon-s-home"></i><a href="/okadmin">系统首页</a></el-breadcrumb-item>
<el-breadcrumb-item><a href="/okadmin/poems">古诗管理</a></el-breadcrumb-item>
<el-breadcrumb-item>古诗管理</el-breadcrumb-item>
</el-breadcrumb>
{include file="../application/admin/view/inc/foot.html" /}
<script src="/model/admin/poetry.js"></script>
</body>
</html>