From 250f3652813ec7d42f16947b174b2570c479393a Mon Sep 17 00:00:00 2001 From: liutk <961510893@qq.com> Date: Mon, 23 Feb 2026 21:26:54 +0800 Subject: [PATCH] 0.9 --- app/Admin/Controllers/ContactController.php | 99 +++++++++++++++++++++ app/Admin/routes.php | 1 + app/Models/Filters/ContactFilter.php | 44 +++++++++ app/Services/Admin/ContactService.php | 35 ++++++++ lang/zh_CN/admin.php | 11 +++ 5 files changed, 190 insertions(+) create mode 100644 app/Admin/Controllers/ContactController.php create mode 100644 app/Models/Filters/ContactFilter.php create mode 100644 app/Services/Admin/ContactService.php diff --git a/app/Admin/Controllers/ContactController.php b/app/Admin/Controllers/ContactController.php new file mode 100644 index 0000000..6de0f92 --- /dev/null +++ b/app/Admin/Controllers/ContactController.php @@ -0,0 +1,99 @@ +baseCRUD()->tableLayout('fixed') + ->headerToolbar([ + // $this->createTypeButton('drawer', 'md'), + ...$this->baseHeaderToolBar(), + ]) + ->filter($this->baseFilter()->body([ + amis()->GroupControl()->mode('horizontal')->body([ + amis()->TextControl('name', __('admin.contacts.name'))->columnRatio(3) + ->placeholder(__('admin.contacts.name')), + amis()->TextControl('phone', __('admin.contacts.phone'))->columnRatio(3) + ->placeholder(__('admin.contacts.phone')), + amis()->selectControl('type', __('admin.contacts.type'))->options(Keyword::allChildrenOfKey('contact_types')->pluck('name', 'id')) + ->placeholder(__('admin.contacts.type'))->columnRatio(3), + ]), + ])) + ->columns([ + // amis()->TableColumn('id', __('admin.id'))->sortable(true)->width('50px'), + amis()->TableColumn('name', __('admin.contacts.name'))->width('300px'), + amis()->TableColumn('phone', __('admin.contacts.phone'))->width('300px'), + amis()->TableColumn('type', __('admin.contacts.type'))->type('mapping') + ->map(Keyword::allChildrenOfKey('contact_types')->pluck('name', 'id')->toArray()) + ->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')), + amis()->TableColumn('phone', __('admin.contacts.phone'))->width('300px'), + amis()->TableColumn('status', __('admin.contacts.status'))->type('switch'), + amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), + amis()->TableColumn('updated_at', __('admin.updated_at'))->type('datetime')->sortable(true), + amis()->Operation()->label(__('admin.actions'))->buttons([ + $this->rowShowTypeButton('drawer', 'md'), + ]) + ]); + + return $this->baseList($crud); + } + + public function form($isEdit = false): Form + { + return $this->baseForm()->panelClassName('px-0')->body([ + amis()->Grid()->columns([ + amis()->Wrapper()->body([ + amis()->TextControl('name', __('admin.project_articles.name'))->required(true), + amis()->TextareaControl('description', __('admin.project_articles.description')), + // amis()->selectControl('cate', __('admin.project_articles.cate'))->options(ProjectCate::get()->pluck('title', 'id'))->required(true), + Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'case_study_tag')->required(true), + Components::make()->cropImageControl('cover', __('admin.project_articles.cover'), 0.775)->required(true), + Components::make()->sortControl('sort', __('admin.project_articles.sort')), + // amis()->DateTimeControl('published_at', __('admin.project_articles.published_at'))->format('YYYY-MM-DD HH:mm:ss')->description(__('admin.project_articles.published_at_remark')), + amis()->SwitchControl('is_enable', __('admin.project_articles.is_enable'))->value(false), + // amis()->SwitchControl('is_recommend', __('admin.project_articles.is_recommend'))->value(false), + // Components::make()->fileControl('appendixes', __('admin.articles.appendixes'), '.xsl,.xlsx,.txt,.doc,.docx,.pdf,.pptx'), + ])->md(4), + amis()->Wrapper()->body([ + Components::make()->fuEditorControl('content', __('admin.project_articles.content'))->required(true), + ])->md(8) + ]), + ]); + } + + public function detail(): Form + { + return $this->baseDetail()->panelClassName('px-0')->body([ + amis()->Grid()->columns([ + amis()->Wrapper()->body([ + amis()->TextControl('name', __('admin.contacts.name'))->disabled(true), + amis()->TextControl('phone', __('admin.contacts.phone'))->disabled(true), + amis()->TextControl('company', __('admin.contacts.company'))->disabled(true), + amis()->selectControl('type', __('admin.contacts.type'))->options(Keyword::allChildrenOfKey('contact_types')->pluck('name', 'id'))->disabled(true), + amis()->TextareaControl('content', __('admin.contacts.content'))->disabled(true), + amis()->DateTimeControl('created_at', __('admin.contacts.created_at'))->format('YYYY-MM-DD HH:mm:ss')->disabled(true), + amis()->SwitchControl('status', __('admin.contacts.status'))->disabled(true), + ]), + ]), + ]); + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index ba0c507..e135be9 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -42,6 +42,7 @@ Route::group([ $router->resource('friend_links', \App\Admin\Controllers\FriendLinkController::class); $router->resource('honors', \App\Admin\Controllers\HonorController::class); $router->resource('timelines', \App\Admin\Controllers\TimelineController::class); + $router->resource('contacts', \App\Admin\Controllers\ContactController::class); //修改上传 $router->post('upload_file', [\App\Admin\Controllers\IndexController::class, 'uploadFile']); diff --git a/app/Models/Filters/ContactFilter.php b/app/Models/Filters/ContactFilter.php new file mode 100644 index 0000000..b308bd7 --- /dev/null +++ b/app/Models/Filters/ContactFilter.php @@ -0,0 +1,44 @@ +where('id', $id); + } + /** + * 姓名 + */ + public function name($name) + { + return $this->where('name','like', $name.'%'); + } + + /** + * 手机号 + */ + public function phone($phone) + { + return $this->where('phone','like', $phone.'%'); + } + + /** + * 获取分类下的文章 + */ + public function type($type) + { + return $this->where('type', $type); + } + + public function status($status){ + return $this->where('status', $status); + } +} diff --git a/app/Services/Admin/ContactService.php b/app/Services/Admin/ContactService.php new file mode 100644 index 0000000..7d7257d --- /dev/null +++ b/app/Services/Admin/ContactService.php @@ -0,0 +1,35 @@ +getTableColumns(); + $model = $this->query()->whereKey($primaryKey)->first(); + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } +} \ No newline at end of file diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php index 3aa6f36..ecbd957 100644 --- a/lang/zh_CN/admin.php +++ b/lang/zh_CN/admin.php @@ -375,4 +375,15 @@ return [ 'is_recommend' => '推荐', 'sort' => '排序', ], + 'contacts' => [ + 'id' => '主键ID', + 'name' => '姓名', + 'phone'=> '手机号', + 'company' =>'公司', + 'type' => '业务需求类别', + 'created_at' => '提交时间', + 'updated_at' => '更新时间', + 'status' => '处理状态', + 'content' => '需求描述', + ], ];