From c95c81035789180fb83470f53d5d90141292c1da Mon Sep 17 00:00:00 2001 From: wangzeyan <258785420@qq.com> Date: Sat, 17 May 2025 12:08:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=BE=E5=9B=9E=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/components.d.ts | 9 + admin/src/app/api/campus.ts | 23 +- admin/src/app/lang/zh-cn/campus.campus.json | 38 +- admin/src/app/views/campus/campus.vue | 446 ++++++++---------- .../views/campus/components/campus-edit.vue | 8 +- admin/src/components/TencentMapPicker.vue | 248 ++++++++++ niucloud/app/adminapi/route/campus.php | 37 ++ niucloud/app/model/campus/Campus.php | 94 ++++ .../service/admin/campus/CampusService.php | 100 ++++ niucloud/app/validate/campus/Campus.php | 35 ++ 10 files changed, 746 insertions(+), 292 deletions(-) create mode 100644 admin/src/components/TencentMapPicker.vue create mode 100644 niucloud/app/adminapi/route/campus.php create mode 100644 niucloud/app/model/campus/Campus.php create mode 100644 niucloud/app/service/admin/campus/CampusService.php create mode 100644 niucloud/app/validate/campus/Campus.php diff --git a/admin/components.d.ts b/admin/components.d.ts index 094307f8..f54888df 100644 --- a/admin/components.d.ts +++ b/admin/components.d.ts @@ -38,6 +38,7 @@ declare module '@vue/runtime-core' { ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] + ElPageHeader: typeof import('element-plus/es')['ElPageHeader'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] ElRadio: typeof import('element-plus/es')['ElRadio'] @@ -45,11 +46,18 @@ declare module '@vue/runtime-core' { ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElStep: typeof import('element-plus/es')['ElStep'] + ElSteps: typeof import('element-plus/es')['ElSteps'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElUpload: typeof import('element-plus/es')['ElUpload'] ExportSure: typeof import('./src/components/export-sure/index.vue')['default'] HeatMap: typeof import('./src/components/heat-map/index.vue')['default'] @@ -60,6 +68,7 @@ declare module '@vue/runtime-core' { RouterView: typeof import('vue-router')['RouterView'] SelectArea: typeof import('./src/components/select-area/index.vue')['default'] SelectIcon: typeof import('./src/components/select-icon/index.vue')['default'] + TencentMapPicker: typeof import('./src/components/TencentMapPicker.vue')['default'] UploadAttachment: typeof import('./src/components/upload-attachment/index.vue')['default'] UploadFile: typeof import('./src/components/upload-file/index.vue')['default'] UploadImage: typeof import('./src/components/upload-image/index.vue')['default'] diff --git a/admin/src/app/api/campus.ts b/admin/src/app/api/campus.ts index 5a1ce656..8b7833d4 100644 --- a/admin/src/app/api/campus.ts +++ b/admin/src/app/api/campus.ts @@ -1,5 +1,7 @@ import request from '@/utils/request' + + // USER_CODE_BEGIN -- campus /** * 获取校区列表 @@ -7,7 +9,7 @@ import request from '@/utils/request' * @returns */ export function getCampusList(params: Record) { - return request.get(`campus/campus`, { params }) + return request.get(`campus/campus`, {params}) } /** @@ -16,7 +18,7 @@ export function getCampusList(params: Record) { * @returns */ export function getCampusInfo(id: number) { - return request.get(`campus/campus/${id}`) + return request.get(`campus/campus/${id}`); } /** @@ -25,10 +27,7 @@ export function getCampusInfo(id: number) { * @returns */ export function addCampus(params: Record) { - return request.post('campus/campus', params, { - showErrorMessage: true, - showSuccessMessage: true, - }) + return request.post('campus/campus', params, { showErrorMessage: true, showSuccessMessage: true }) } /** @@ -38,10 +37,7 @@ export function addCampus(params: Record) { * @returns */ export function editCampus(params: Record) { - return request.put(`campus/campus/${params.id}`, params, { - showErrorMessage: true, - showSuccessMessage: true, - }) + return request.put(`campus/campus/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) } /** @@ -50,10 +46,9 @@ export function editCampus(params: Record) { * @returns */ export function deleteCampus(id: number) { - return request.delete(`campus/campus/${id}`, { - showErrorMessage: true, - showSuccessMessage: true, - }) + return request.delete(`campus/campus/${id}`, { showErrorMessage: true, showSuccessMessage: true }) } + + // USER_CODE_END -- campus diff --git a/admin/src/app/lang/zh-cn/campus.campus.json b/admin/src/app/lang/zh-cn/campus.campus.json index dfffdea4..f2405e53 100644 --- a/admin/src/app/lang/zh-cn/campus.campus.json +++ b/admin/src/app/lang/zh-cn/campus.campus.json @@ -1,20 +1,20 @@ { - "campusName": "校区名称", - "campusNamePlaceholder": "请输入校区名称", - "campusAddress": "校区地址", - "campusAddressPlaceholder": "请输入校区地址", - "campusPreviewImage": "校区预览图,存储图片路径", - "campusPreviewImagePlaceholder": "请输入校区预览图,存储图片路径", - "campusCoordinates": "校区坐标,格式为经度,纬度", - "campusCoordinatesPlaceholder": "请输入校区坐标,格式为经度,纬度", - "campusIntroduction": "校区介绍", - "campusIntroductionPlaceholder": "请输入校区介绍", - "campusStatus": "校区状态", - "campusStatusPlaceholder": "请输入校区状态", - "createTime": "校区创建时间", - "addCampus": "添加校区", - "updateCampus": "编辑校区", - "campusDeleteTips": "确定要删除该数据吗?", - "startDate": "请选择开始时间", - "endDate": "请选择结束时间" -} + "campusName":"校区名称", + "campusNamePlaceholder":"请输入校区名称", + "campusAddress":"校区地址", + "campusAddressPlaceholder":"请输入校区地址", + "campusPreviewImage":"校区banner", + "campusPreviewImagePlaceholder":"请选择图片", + "campusCoordinates":"校区位置", + "campusCoordinatesPlaceholder":"请选择校区位置", + "campusIntroduction":"校区介绍", + "campusIntroductionPlaceholder":"请输入校区介绍", + "campusStatus":"校区状态", + "campusStatusPlaceholder":"请输入校区状态", + "createTime":"校区创建时间", + "addCampus":"添加校区", + "updateCampus":"编辑校区", + "campusDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/app/views/campus/campus.vue b/admin/src/app/views/campus/campus.vue index 8f9dd59a..b384f486 100644 --- a/admin/src/app/views/campus/campus.vue +++ b/admin/src/app/views/campus/campus.vue @@ -1,253 +1,193 @@ - - - - - + + + + + diff --git a/admin/src/app/views/campus/components/campus-edit.vue b/admin/src/app/views/campus/components/campus-edit.vue index 43f0e45b..d16a13d1 100644 --- a/admin/src/app/views/campus/components/campus-edit.vue +++ b/admin/src/app/views/campus/components/campus-edit.vue @@ -37,12 +37,7 @@ - + @@ -84,6 +79,7 @@ import { useDictionary } from '@/app/api/dict' import { t } from '@/lang' import type { FormInstance } from 'element-plus' import { addCampus, editCampus, getCampusInfo } from '@/app/api/campus' +import TencentMapPicker from '@/components/TencentMapPicker.vue' let showDialog = ref(false) const loading = ref(false) diff --git a/admin/src/components/TencentMapPicker.vue b/admin/src/components/TencentMapPicker.vue new file mode 100644 index 00000000..26aaa9b3 --- /dev/null +++ b/admin/src/components/TencentMapPicker.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/niucloud/app/adminapi/route/campus.php b/niucloud/app/adminapi/route/campus.php new file mode 100644 index 00000000..0cc3c45e --- /dev/null +++ b/niucloud/app/adminapi/route/campus.php @@ -0,0 +1,37 @@ +middleware([ + AdminCheckToken::class, + AdminCheckRole::class, + AdminLog::class +]); +// USER_CODE_END -- campus diff --git a/niucloud/app/model/campus/Campus.php b/niucloud/app/model/campus/Campus.php new file mode 100644 index 00000000..0f5e48e3 --- /dev/null +++ b/niucloud/app/model/campus/Campus.php @@ -0,0 +1,94 @@ +where("campus_name", "like", "%".$value."%"); + } + } + + /** + * 搜索器:校区校区地址 + * @param $value + * @param $data + */ + public function searchCampusAddressAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_address", $value); + } + } + + /** + * 搜索器:校区校区状态 + * @param $value + * @param $data + */ + public function searchCampusStatusAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_status", $value); + } + } + + + + + + +} diff --git a/niucloud/app/service/admin/campus/CampusService.php b/niucloud/app/service/admin/campus/CampusService.php new file mode 100644 index 00000000..2d67b47f --- /dev/null +++ b/niucloud/app/service/admin/campus/CampusService.php @@ -0,0 +1,100 @@ +model = new Campus(); + } + + /** + * 获取校区列表 + * @param array $where + * @return array + */ + public function getPage(array $where = []) + { + $field = 'id,campus_name,campus_address,campus_preview_image,campus_coordinates,campus_introduction,campus_status,create_time,update_time,delete_time'; + $order = ''; + + $search_model = $this->model->withSearch(["campus_name","campus_address","campus_status"], $where)->field($field)->order($order); + $list = $this->pageQuery($search_model); + return $list; + } + + /** + * 获取校区信息 + * @param int $id + * @return array + */ + public function getInfo(int $id) + { + $field = 'id,campus_name,campus_address,campus_preview_image,campus_coordinates,campus_introduction,campus_status,create_time,update_time,delete_time'; + + $info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray(); + $info['campus_status'] = strval($info['campus_status']); + return $info; + } + + /** + * 添加校区 + * @param array $data + * @return mixed + */ + public function add(array $data) + { + $res = $this->model->create($data); + return $res->id; + + } + + /** + * 校区编辑 + * @param int $id + * @param array $data + * @return bool + */ + public function edit(int $id, array $data) + { + + $this->model->where([['id', '=', $id]])->update($data); + return true; + } + + /** + * 删除校区 + * @param int $id + * @return bool + */ + public function del(int $id) + { + $model = $this->model->where([['id', '=', $id]])->find(); + $res = $model->delete(); + return $res; + } + + + +} diff --git a/niucloud/app/validate/campus/Campus.php b/niucloud/app/validate/campus/Campus.php new file mode 100644 index 00000000..33316c20 --- /dev/null +++ b/niucloud/app/validate/campus/Campus.php @@ -0,0 +1,35 @@ + 'require', + ]; + + protected $message = [ + 'campus_name.require' => ['common_validate.require', ['campus_name']], + ]; + + protected $scene = [ + "add" => ['campus_name', 'campus_address', 'campus_preview_image', 'campus_coordinates', 'campus_introduction', 'campus_status'], + "edit" => ['campus_name', 'campus_address', 'campus_preview_image', 'campus_coordinates', 'campus_introduction', 'campus_status'] + ]; + +}