diff --git a/src/views/system/SettingManage.vue b/src/views/system/SettingManage.vue index a16b19a..0be28d7 100644 --- a/src/views/system/SettingManage.vue +++ b/src/views/system/SettingManage.vue @@ -1,216 +1,226 @@ @@ -1074,8 +1032,121 @@ onMounted(() => { background: #ffffff; } -.setting-tabs { - padding: 0 20px; +/* 树状图样式 */ +.tree-section { + padding: 20px; + min-height: 400px; + max-height: 500px; + overflow-y: auto; + /* 隐藏滚动条 */ + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ +} + +.tree-section::-webkit-scrollbar { + display: none; /* Chrome, Safari, Opera */ +} + +.setting-tree-table { + background: white; +} + +/* 树状层级样式 */ +.tree-item-content { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 0; +} + +.expand-icon { + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: #606266; + transition: transform 0.2s ease; +} + +.expand-icon:hover { + color: #409eff; +} + +.expand-icon .is-expanded { + transform: rotate(90deg); +} + +.expand-placeholder { + width: 20px; + height: 20px; +} + +.tree-icon { + color: #409eff; + font-size: 16px; + flex-shrink: 0; +} + +.tree-label { + font-weight: 500; + color: #303133; + font-size: 14px; + flex: 1; +} + +.type-tag { + margin-left: 8px; +} + +/* 表格行样式 */ +:deep(.setting-tree-table .el-table__row--level-1) { + background-color: #fafbfc; +} + +:deep(.setting-tree-table .el-table__row--level-2) { + background-color: #f5f7fa; +} + +/* 表格样式优化 */ +:deep(.setting-tree-table .el-table) { + border: none; + color: #2c3e50; +} + +:deep(.setting-tree-table .el-table__header) { + background: #f8f9fa; +} + +:deep(.setting-tree-table .el-table th) { + background: #f8f9fa !important; + border-bottom: 2px solid #e1e8ed; + color: #2c3e50; + font-weight: 600; + font-size: 13px; +} + +:deep(.setting-tree-table .el-table td) { + border-bottom: 1px solid #f0f2f5; + color: #34495e; +} + +:deep(.setting-tree-table .el-table tr:hover > td) { + background-color: #f8f9fa !important; +} + +/* 详细信息面板样式 */ +.detail-section { + padding: 20px; + background: #fafbfc; + border-top: 1px solid #e1e8ed; +} + +.detail-content { + background: white; + border-radius: 8px; + padding: 20px; } .filter-section { @@ -1198,6 +1269,39 @@ onMounted(() => { :deep(.dialog-scrollable .el-dialog__footer) { padding: 15px; } + + .tree-section { + max-height: 300px; + min-height: 300px; + padding: 10px; + } + + .tree-item-content { + padding: 4px 0; + } + + .tree-label { + font-size: 13px; + } + + .tree-icon { + font-size: 14px; + } + + .type-tag { + margin-left: 4px; + font-size: 11px; + } + + :deep(.setting-tree-table .el-table th) { + font-size: 12px; + padding: 8px 4px; + } + + :deep(.setting-tree-table .el-table td) { + font-size: 12px; + padding: 8px 4px; + } } /* 确保表单在弹窗中正确显示 */ diff --git a/问题.MD b/问题.MD index 5960824..8287973 100644 --- a/问题.MD +++ b/问题.MD @@ -1,63 +1,10 @@ ✅已完成、⚠️部分完成、❌未完成这样显示 -----------------------------------------------------------------------------------------------需要解决 -自行访问下面的接口地址内容 +1.将配置组管理和配置管理放到一起,弄成树状图这种,顶级是配置组管理,点击配置组管理的下级是配置管理列表数据,需要将两个合作一个,看如何能融合以下 -1.- 管理员 配置信息类型 type参数新增 file 类型,先点击上传图片的位置上传文件请求文件上传接口后将获取的响应数据中的id赋值到value,用户端返回信息会返回url ✅已完成 -- 管理员 配置信息类型 - - 新增 file 类型,上传文件后,设置value为id - - 新增 file_list 类型,允许上传多个文件,value 为文件列表id,使用 , 分割 - - 新增 string_list 类型,value 为字符串列表,使用 , 分割 -创建配置 - POST /api/v1/admin/server/setting/create - 接口ID:361964543 - 接口地址:https://app.apifox.com/link/project/5145887/apis/api-361964543 - 以下为响应数据格式: - { - "code": 200, - "message": "Success", - "data": { - "id": 5, - "name": "测试111", - "value": "1459", - "note": "测试", - "type": "file", - "settingGroup": null, - "settingGroupID": 4, - "open": true, - "CreatedAt": "2026-03-10T11:06:05.531505043+08:00", - "UpdatedAt": "2026-03-10T11:06:05.531505043+08:00", - "omitempty": null - } -} -文件上传 - POST /api/v1/tools/file/upload - 接口ID:223275082 - 接口地址:https://app.apifox.com/link/project/5145887/apis/api-223275082 - - 以下是响应数据格式: - { - "code": 200, - "message": "Success", - "data": [ - { - "id": 1459, - "realName": "312", - "saveName": "17731118324", - "savePath": "static/files/2026-03-10/17731118324", - "size": 323351, - "type": "work_order", - "content": "", - "userId": 4, - "openDow": true, - "CreatedAt": "2026-03-10T11:03:52.910463212+08:00", - "UpdatedAt": "2026-03-10T11:03:52.910463212+08:00", - "omitempty": null - } - ] -} -----------------------------------------------------------------------------------------------需要解决 规则限制: @@ -71,7 +18,7 @@ 4.后续每次写的页面,组件都需要兼容移动端 5.只要是关于选择用户,文件,优惠卷,代金卷的都使用组件 6.只要是弹窗需要使用选择组件的都参照用户列表的编辑用户的推介人的选择样式在弹窗中 - +7.如果给出需要访问的地址文档信息,自行访问下面的接口地址内容