This commit is contained in:
zhang zhuo 2025-12-01 10:36:59 +08:00
parent e3a637f9b7
commit 689aaeaf17
8 changed files with 169 additions and 19 deletions

View File

@ -23,6 +23,8 @@ use App\Request\Role as rRequest;
use App\Request\GenTable as gtRequest;
use App\Model\AssetCategory as acModel;
use App\Request\AssetCategory as acRequest;
use App\Model\SystemConfig as scModel;
use App\Request\SystemConfig as scRequest;
use App\Model\Asset as asModel;
use App\Utils\AppInfoHelper;
use App\Utils\CpuHelper;
@ -609,6 +611,7 @@ class System extends Base
// 搜搜字段
$query_fields = [];
$insert_fields = [];
$edit_fields = [];
$list_fields = [];
$required_fields = [];
$fields = $table['gen_table_columns'];
@ -634,8 +637,8 @@ class System extends Base
'request.php' => $this->render->getContents('templates/request.php.twig', compact("controller_name", "insert_fields", "fields", "required_fields", "edit_fields")),
'controller.php' => $this->render->getContents('templates/controller.php.twig', compact("controller_name", "module_name", "query_fields", "insert_fields", "edit_fields", "table_name", "name1", "name2")),
'api.ts' => $this->render->getContents('templates/api.ts.twig', compact('table_name')),
'index.vue' => $this->render->getContents('templates/index.vue.twig', compact('table_name', 'list_fields', 'query_fields')),
'save.vue' => $this->render->getContents('templates/save.vue.twig', compact('table_name', 'insert_fields', 'required_fields'))
'index.vue' => $this->render->getContents('templates/index.vue.twig', compact('table_name', 'list_fields', 'query_fields', 'name2')),
'save.vue' => $this->render->getContents('templates/save.vue.twig', compact('table_name', 'insert_fields', 'required_fields', 'edit_fields'))
];
return $this->success("模板信息", $data);
}
@ -760,4 +763,55 @@ class System extends Base
}
return $this->error("上传失败");
}
#[GetMapping(path: "system_config/list")]
#[Auth(auth: "system_config:list")]
public function systemConfigList()
{
$param = Param::only(["config_name", "config_key", "limit" => 10]);
return $this->success("列表接口", scModel::list($param));
}
#[GetMapping(path: "system_config/option")]
#[Auth(needAuth: false)]
public function systemConfigOption()
{
return $this->success(scModel::options());
}
#[GetMapping(path: "system_config/info")]
#[Auth(auth: "system_config:info")]
public function systemConfigInfo()
{
$id = $this->request->input("id");
return $this->success(scModel::getById($id));
}
#[PostMapping(path: "system_config/add")]
#[Auth(auth: "system_config:add")]
public function systemConfigAdd()
{
$request = $this->container->get(scRequest::class);
$request->scene('add')->validateResolved();
$data = Param::only(["config_name", "config_key", "config_value", "remark"]);
return $this->toAjax(scModel::add($data));
}
#[PutMapping(path: "system_config/edit")]
#[Auth(auth: "system_config:edit")]
public function systemConfigEdit()
{
$request = $this->container->get(scRequest::class);
$request->scene('edit')->validateResolved();
$data = Param::only(["config_id", "config_name", "config_key", "config_value", "remark"]);
return $this->toAjax(scModel::edit($data));
}
#[DeleteMapping(path: "system_config/del")]
#[Auth(auth: "system_config:del")]
public function systemConfigDel()
{
$ids = $this->request->input("ids");
return $this->toAjax(scModel::del($ids));
}
}

View File

@ -176,7 +176,7 @@ class GenTable extends Model
'php_type' => Str::typeMysqlToPhp($column->Type),
'php_field' => $column->Field,
'is_insert' => Str::isInsert($column->Field, $column->Extra),
'is_edit' => Str::isEdit($column->Field, $column->Extra),
'is_edit' => Str::isEdit($column->Field),
'is_list' => Str::isList($column->Field, $column->Extra),
'is_query' => Str::isQuery($column->Field, $column->Extra),
'is_required' => 0,

View File

@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
namespace App\Model;
/**
* @property int $config_id
* @property string $config_name
* @property string $config_key
* @property string $config_value
* @property string $remark
* @property string $create_time
* @property string $update_time
* @property string $deleted_at
*/
class SystemConfig extends Model
{
/**
* The table associated with the model.
*/
protected ?string $table = 'system_config';
protected string $primaryKey = 'config_id';
/**
* The attributes that are mass assignable.
*/
protected array $fillable = [];
/**
* The attributes that should be cast to native types.
*/
protected array $casts = ['config_id' => 'integer'];
public static function list(array $param)
{
$model = self::query();
if (isset($param['config_name']) && $param['config_name'] != '') {
$model = $model->where('config_name', "like", "%{$param['config_name']}%");
}
if (isset($param['config_key']) && $param['config_key'] != '') {
$model = $model->where('config_key', "like", "%{$param['config_key']}%");
}
return $model->orderByDesc("config_id")
->select(["config_id", "config_name", "config_key", "config_value", "remark", "create_time", "update_time"])
->paginate((int)$param['limit']);
}
public static function options()
{
return self::select(["config_id", "config_name"])->get()->toArray();
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Request;
use Hyperf\Validation\Request\FormRequest;
class SystemConfig extends FormRequest
{
protected array $scenes = [
'add' => ["config_name", "config_key"],
'edit' => ["config_id", "config_name", "config_key"],
];
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'config_id' => 'required',
'config_name' => 'required',
'config_key' => 'required',
'config_value' => 'required',
'remark' => 'required',
];
}
public function messages(): array
{
return [
'config_name.required' => '参数名称必传!',
'config_key.required' => '参数键名必传!',
'config_value.required' => '参数键值必传!',
'remark.required' => '备注必传!',
];
}
}

View File

@ -87,11 +87,8 @@ class Str
return !in_array($field, ["deleted_at", "update_time"]) ? 1 : 0;
}
public static function isEdit($field, $extra): int
public static function isEdit($field): int
{
if ($extra == "auto_increment") {
return 0;
}
return !in_array($field, ["deleted_at", "create_time"]) ? 1 : 0;
}

View File

@ -23,7 +23,7 @@ class {{ controller_name }} extends Base
public function {{ name2 }}List()
{
$param = Param::only([{% for field in query_fields %}"{{ field.column_name }}"{% if not loop.last %}, {% endif %}{% endfor %}, "limit"=>10]);
return $this->success({{ name1 }}Model::list($param));
return $this->success("列表接口", {{ name1 }}Model::list($param));
}
#[GetMapping(path: "{{ table_name }}/option")]
@ -38,7 +38,7 @@ class {{ controller_name }} extends Base
public function {{ name2 }}Info()
{
$id = $this->request->input("id");
return $this->success({{ name1 }}Model::getById());
return $this->success({{ name1 }}Model::getById($id));
}
#[PostMapping(path: "{{ table_name }}/add")]

View File

@ -74,12 +74,12 @@
<el-table-column label="操作" fixed="right" align="right" width="170">
<template #default="scope">
<el-button-group>
<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">查看
<el-button text type="primary" size="small" @click="show(scope.row, scope.$index)">查看
</el-button>
<el-button v-auth="'{{ table_name }}:edit'" text type="success" size="small"
@click="table_edit(scope.row, scope.$index)">编辑
@click="edit(scope.row, scope.$index)">编辑
</el-button>
<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
<el-popconfirm title="确定删除吗?" @confirm="del(scope.row, scope.$index)">
<template #reference>
<el-button v-auth="'{{ table_name }}:del'" text type="danger" size="small">删除</el-button>
</template>
@ -97,7 +97,7 @@
import {getCurrentInstance, nextTick, ref} from "vue";
defineOptions({
name: ""
name: "{{ name2 }}"
})
const {proxy} = getCurrentInstance()
@ -121,7 +121,7 @@
}
//编辑
async function table_edit(row) {
async function edit(row) {
dialogShow.value = true
nextTick(() => {
dialogRef.value.open('edit', row)
@ -129,7 +129,7 @@
}
//查看
async function table_show(row) {
async function show(row) {
dialogShow.value = true
nextTick(() => {
dialogRef.value.open('show', row)
@ -137,7 +137,7 @@
}
//删除
async function table_del(row) {
async function del(row) {
const loading = proxy.$loading();
const res = await api.{{ table_name }}.del({ids: [row.{{ table_name }}_id]});
tableRef.value.refresh()

View File

@ -50,7 +50,7 @@
<script setup>
import {getCurrentInstance, ref} from 'vue'
import api from "@/api/index.js";
import api from "@/api/index"
defineExpose({
open
@ -68,8 +68,8 @@
let visible = ref(false)
let isSaveing = ref(false)
let form = ref({
{% for field in insert_fields %}
{{ field.php_field }}: null
{% for field in edit_fields %}
{{ field.php_field }}: null,
{% endfor %}
})
const rules = ref({