Compare commits

...

6 Commits

Author SHA1 Message Date
JaguarJack
99a4c0fd6a chore:调整样式 2024-04-29 13:04:32 +08:00
JaguarJack
a2b55ab249 修改前端表单模板 2024-04-29 08:49:29 +08:00
JaguarJack
4da569773a update readme 2024-04-26 12:58:13 +08:00
JaguarJack
162f99648f 修改前端表单模板 2024-04-26 11:33:20 +08:00
JaguarJack
8f157f03e1 update version 2024-04-25 19:26:42 +08:00
JaguarJack
e115ca2a80 update version 2024-04-25 19:08:01 +08:00
5 changed files with 47 additions and 44 deletions

View File

@ -2,13 +2,16 @@
`CatchAdmin`是一款基于[Laravel](https://laravel.com)和[Element Plus](https://element-plus.org)二次开发而成后台管理系统。`Laravel` 社区也有许多非常优秀的后台管理系统,例如 `Nova`, 官方出品,当然是收费的,免费的有基于 `Livewire``Filament`,还有不得不说的 `Laravel Admin``CatchAdmin` 还是采用传统的前后端分离策略,`Laravel` 框架仅仅作为 `Api` 输出。将管理系统模块之间的耦合降到了最低限度。每个模块之间都有独立的控制器,路由,模型,数据表。在开发上尽可能将模块之间的影响降到最低,降低了开发上的难度。基于 `CatchAdmin `可以开发 `CMS``CRM``OA` 等 等系统。也封装了很多实用的工具,提升开发体验。
[中文](./README.md)|[英文](./README-en.md)
## 前后端完全分离版本
请使用 `server` 分支, 如果是新项目,请一定使用该完全分离分支。我们将在不久后会将项目分离出来
## 其他版本
- [tp8 新版本](https://gitee.com/catchamin/catchadmin-tp)
- [webman 高性能版本](https://gitee.com/catchamin/catchadmin-webman)
## 新功能
[动态表单](https://catchadmin.com/docs/3.0/front/catch-form)
[动态表格](https://catchadmin.com/docs/3.0/front/catch-table)
- [动态表单](https://catchadmin.com/docs/3.0/front/catch-form)
- [动态表格](https://catchadmin.com/docs/3.0/front/catch-table)
## 专业版
[专业版本官方地址](https://license.catchadmin.com)

View File

@ -17,7 +17,7 @@
"guzzlehttp/guzzle": "^7.8.1",
"laravel/framework": "^11.0",
"laravel/tinker": "^v2.9.0",
"catchadmin/core": "^0.3.2"
"catchadmin/core": "^0.3.4"
},
"require-dev": {
"fakerphp/faker": "^v1.23.1",

View File

@ -13,14 +13,14 @@ import { useShow } from '/admin/composables/curd/useShow'
import { onMounted } from 'vue'
const props = defineProps({
primary: String | Number,
primary: [String, Number],
api: String,
})
const { formData, form, loading, submitForm, close } = useCreate(props.api, props.primary)
const { formData, form, loading, submitForm, close } = useCreate(props.api as string, props.primary)
if (props.primary) {
useShow(props.api, props.primary, formData)
useShow(props.api as string, props.primary, formData)
}
const emit = defineEmits(['close'])

View File

@ -1,37 +1,9 @@
<template>
<div>
<catch-table
:columns="[
{
label: '角色名称',
prop: 'role_name'
},
{
label: '角色标识',
prop: 'description'
},
{
label: '角色描述',
prop: 'role_name'
},
{
label: '创建时间',
prop: 'created_at'
},
{
type: 'operate',
label: '操作',
width: 200
}
]"
:columns="columns"
:api="api"
:search-form="[
{
type: 'input',
label: '角色名称',
name: 'role_name'
}
]"
:search-form="search"
row-key="id"
:pagination="false"
>
@ -44,10 +16,38 @@
<script lang="ts" setup>
// @ts-nocheck
// import Create from './form/create.vue'
import Create from './create.vue'
const api = 'permissions/roles'
const columns = [
{
label: '角色名称',
prop: 'role_name'
},
{
label: '角色标识',
prop: 'description'
},
{
label: '角色描述',
prop: 'role_name'
},
{
label: '创建时间',
prop: 'created_at'
},
{
type: 'operate',
label: '操作',
width: 200
}
];
const search = [
{
type: 'input',
label: '角色名称',
name: 'role_name'
}
]
</script>

View File

@ -1,13 +1,13 @@
<template>
<div>
<el-table :data="structures">
<el-table-column prop="field" :label="$t('generate.schema.structure.field_name.name')" width="100px" />
<el-table-column prop="label" :label="$t('generate.schema.structure.form_label')" width="150px">
<el-table-column prop="field" :label="$t('generate.schema.structure.field_name.name')" />
<el-table-column prop="label" :label="$t('generate.schema.structure.form_label')">
<template #default="scope">
<el-input v-model="scope.row.label" />
</template>
</el-table-column>
<el-table-column prop="label" :label="$t('generate.schema.structure.form_component')" width="110px">
<el-table-column prop="label" :label="$t('generate.schema.structure.form_component')" >
<template #default="scope">
<el-select v-model="scope.row.form_component" class="w-full" filterable>
<el-option v-for="component in formComponents" :key="component" :label="component" :value="component" />
@ -29,14 +29,14 @@
<el-switch v-model="scope.row.search" inline-prompt :active-text="$t('system.yes')" :inactive-text="$t('system.no')" width="45px" />
</template>
</el-table-column>
<el-table-column prop="search_op" :label="$t('generate.schema.structure.search_op.name')" width="150px">
<el-table-column prop="search_op" :label="$t('generate.schema.structure.search_op.name')" >
<template #default="scope">
<el-select v-model="scope.row.search_op" :placeholder="$t('generate.schema.structure.search_op.placeholder')" class="w-full">
<el-option v-for="op in operates" :key="op" :label="op" :value="op" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="validates" :label="$t('generate.schema.structure.rules.name')" width="250px">
<el-table-column prop="validates" :label="$t('generate.schema.structure.rules.name')">
<template #default="scope">
<el-select v-model="scope.row.validates" :placeholder="$t('generate.schema.structure.rules.placeholder')" multiple filterable allow-create clearable class="w-full">
<el-option v-for="validate in validates" :key="validate" :label="validate" :value="validate" />
@ -44,7 +44,7 @@
</template>
</el-table-column>
<!--<el-table-column prop="comment" label="注释" />-->
<el-table-column prop="id" :label="$t('generate.schema.structure.operate')" width="120px">
<el-table-column prop="id" :label="$t('generate.schema.structure.operate')">
<template #default="scope">
<el-button type="danger" :icon="Delete" @click="deleteField(scope.row.field)" size="small" />
</template>