# 后台管理
# 以下命令都运行在项目根目录
# 基础页面
- 效果图
- Laravel
# 生成对应的控制器文件 Model文件需要放入 [Qingwuit/Model] 目录下
php artisan make:controller Admin/xxxController # Seller/xxxController
class NoticesController extends Controller
{
protected $modelName = 'Notice'; #对应Laravel 生成的 Model文件
protected $setUser = true; # 是否区分所属用户默认False
}
- Vue
<!-- resources\js\views 目录下新建文件你自己vue -->
<!-- 示例:views\Admin\notices\index.vue -->
<template>
<table-view :options="options" :searchOption="searchOptions" :dialogParam="dialogParam"></table-view>
</template>
<script setup>
import {reactive,getCurrentInstance} from "vue"
import tableView from "@/components/common/table"
const {proxy} = getCurrentInstance()
// 列表列内容
const options = reactive([
{label:'标题',value:'name'},
{label:'标签',value:'tag',type:"tags"},
{label:'创建时间',value:'created_at'},
]);
// 搜索字段
const searchOptions = reactive([
{label:'标题',value:'name',where:'likeRight'},
{label:'标签',value:'tag',where:'likeRight'},
{label:'内容',value:'content',where:'like'},
])
// 表单配置
const addColumn = [
{label:'标题',value:'name'},
{label:'标签',value:'tag'},
{label:'内容',value:'content',type:'editor',span:24,viewType:'html'},
]
const dialogParam = reactive({
rules:{
name:[{required:true,message:'不能为空'}]
},
view:{column:addColumn},
add:{column:addColumn},
edit:{column:addColumn},
})
</script>
# 自定义Table列表
<template>
<table-view :options="options" >
<template #custom_item="row">
<!-- 自定义内容区域 -->
</template>
</table-view>
</template>
<script setup>
import {reactive} from "vue"
import tableView from "@/components/common/table"
// 列表列内容
const options = reactive([
{label:'自定义列表',value:'custom_item',type:"custom"},
]);
</script>
# 其他配置API
<template>
<table-view :options="options" :pagination="pagination" :handleWidth="handleWidth" :handleHide="handleHide" :params="params" :searchOption="searchOptions" :btnConfig="btnConfigs" :dialogParam="dialogParam">
<template #custom_item="row">
<!-- 自定义内容区域 -->
</template>
</table-view>
</template>
<script setup>
import {reactive,ref} from "vue"
import tableView from "@/components/common/table"
// 列表列内容
const options = reactive([
{label:'自定义列表',value:'custom_item',type:"custom"},
]);
// 这个参数控制 增删改查按钮的显示
const btnConfigs = reactive({
show:{show:true}, // 显示
store:{show:true}, // 添加
update:{show:true}, // 编辑
destroy:{show:true}, // 删除
deletes:{show:false}, // 删除单行
search:{show:true}, // 搜索
export:{show:true},
import:{show:false},
})
const dialogParam = reactive({
// 字典,根据键值 显示字典内容
dictData:{
status:[{label:proxy.$t('btn.waitUse'),value:0},{label:proxy.$t('btn.used'),value:1}]
},
width:'50%', // 弹框大小
labelWidth:'90px', // form label 字体宽度
span:12, // Item 默认宽度
column:[], // 默认字段
fullscreen:false, // 是否全屏
rules:null,
destroyOnClose:true,
isPageDict:false,
dict:[], // 字典链接 {name:"menus",url:'xxx.com'}
addOpenBefore:()=>{}, // 打开添加之前执行
editOpenBefore:()=>{}, // 打开编辑之前执行
editOpenAfter:()=>{},
add:{
column:[], // {label:'我的游戏',value:'name'},{label:'定位密钥',value:'name'},{label:'头像',value:'name'}
},
edit:{
column:[],
},
view:{
column:[],
}
})
const handleWidth = ref('120px') // 操作列宽度
const handleHide = ref(true) // 操作列是否显示
const pagination = ref(true) // 显示分页
const pageUrl = ref('') // 查询列表的url 默认当前url 这里是自定义的
// 列表显示的条件查询
const params = reactive({
is_belong:'0|gt',
})
</script>
# 自定义页面
- Vue
<template>
<!-- 聊天 -->
<base-view>
<template #main_view>
<chat ref="chat" :closeVis="false" :params="data.chatParams" />
</template>
</base-view>
</template>
<script setup>
import {reactive,onMounted,nextTick,getCurrentInstance} from "vue"
import Chat from "@/components/common/chat"
import baseView from "@/components/common/base"
const {proxy} = getCurrentInstance()
const data = reactive({
chatParams:{provider:'users',rid:null,rtype:null,token:localStorage.getItem('seller_token')}
})
onMounted(()=>{
proxy.$refs.chat.openChat()
})
</script>