98 lines
2.6 KiB
Markdown
98 lines
2.6 KiB
Markdown
# Owl Admin Start
|
|
|
|
- Laravel 10.x
|
|
- slowlyo/owl-admin
|
|
- tucker-eric/eloquentfilter
|
|
|
|
## Helers
|
|
|
|
### 上传文件
|
|
|
|
- 上传文件保存的路径为 **相对路径**, 如果需要设置 **全路径**, 添加 `->receiver(admin_url('upload_image') . '?full-url=1')`
|
|
- 在模型中, 保存文件的字段需要加上 `StorageFile`, 详见: `app/Models/Keyword.php`
|
|
|
|
### sql日志
|
|
|
|
- `app/Providers/QueryLogServiceProvider.php`
|
|
- `storage/logs/sql.log`
|
|
|
|
### 无限级分类
|
|
|
|
- `app/Traits/TreePath.php`
|
|
|
|
| column | name | comment |
|
|
| - | - | - |
|
|
| parent_id | 上级id | 默认: 0 |
|
|
| path | 所有上级id | 默认: -, 例如: -1-2-3- |
|
|
| sort | 排序 | 正序 |
|
|
|
|
## 修改前端文件
|
|
|
|
### resources\admin-views\src\pages\amis\index.tsx
|
|
|
|
自定义登录页面, 删除高度 `20px` 的 `div`
|
|
|
|
```tsx
|
|
return (
|
|
<>
|
|
<Spin loading={initPage.loading}
|
|
dot
|
|
size={8}
|
|
className="w-full"
|
|
style={{minHeight: initPage.loading ? "500px" : ""}}>
|
|
<AmisRender schema={schema}/>
|
|
</Spin>
|
|
{(settings.footer && !initPage.loading) && <Footer/>}
|
|
</>
|
|
)
|
|
```
|
|
|
|
### resources\admin-views\src\components\AmisRender\CustomComponents\components\WangEditor\index.tsx
|
|
|
|
WangEditor 编辑器上传图片时, 把登录授权的 `token` 带上
|
|
|
|
```tsx
|
|
// 编辑器配置
|
|
const editorConfig: Partial<IEditorConfig> = {
|
|
placeholder: props.placeholder,
|
|
readOnly: props.disabled || props.static,
|
|
autoFocus: props.autoFocus,
|
|
maxLength: props.maxLength,
|
|
MENU_CONF: {
|
|
uploadImage: {
|
|
server: props.uploadImageServer,
|
|
maxFileSize: props.uploadImageMaxSize || (1024 * 1024 * 2),
|
|
maxNumberOfFiles: props.uploadImageMaxNumber || 100,
|
|
headers: {
|
|
Authorization: `Bearer ${token}`
|
|
}
|
|
},
|
|
uploadVideo: {
|
|
server: props.uploadVideoServer,
|
|
maxFileSize: props.uploadVideoMaxSize || (1024 * 1024 * 10),
|
|
maxNumberOfFiles: props.uploadVideoMaxNumber || 10,
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### resources\admin-views\src\pages\login\form.tsx
|
|
|
|
自定义登录页面, 重复请求接口 `admin-api/captcha` 获取图形验证码
|
|
|
|
```tsx
|
|
// 读取 localStorage, 设置初始值
|
|
useEffect(() => {
|
|
const rememberPassword = !!loginParams
|
|
setRememberPassword(rememberPassword)
|
|
if (formRef.current && rememberPassword) {
|
|
const parseParams = JSON.parse(decodeURIComponent(window.atob(loginParams)))
|
|
formRef.current.setFieldsValue(parseParams)
|
|
}
|
|
|
|
// if (appSettings.login_captcha) {
|
|
// getCaptcha.run()
|
|
// }
|
|
}, [loginParams])
|
|
```
|