feat: 页面配置默认模板回退+删除功能
This commit is contained in:
@@ -16,12 +16,26 @@ import java.util.Map;
|
|||||||
public class SitePagesController {
|
public class SitePagesController {
|
||||||
|
|
||||||
private final SitePagesService sitePagesService;
|
private final SitePagesService sitePagesService;
|
||||||
|
private final com.par.core.mapper.SiteMapper siteMapper;
|
||||||
|
|
||||||
@GetMapping("/api/v1/sites/{siteId}/pages")
|
@GetMapping("/api/v1/sites/{siteId}/pages")
|
||||||
public ApiResponse<Map<String, Object>> getPages(@PathVariable String siteId) {
|
public ApiResponse<Map<String, Object>> getPages(@PathVariable String siteId) {
|
||||||
Map<String, Object> data = sitePagesService.getPages(siteId);
|
Map<String, Object> data = sitePagesService.getPages(siteId);
|
||||||
if (data == null) return ApiResponse.error(404, "页面配置不存在");
|
if (data != null) {
|
||||||
return ApiResponse.success(data);
|
data.put("source", "custom");
|
||||||
|
return ApiResponse.success(data);
|
||||||
|
}
|
||||||
|
// 回退到站点类型默认模板
|
||||||
|
var site = siteMapper.selectBySiteId(siteId);
|
||||||
|
String siteType = site != null && site.getSiteType() != null ? site.getSiteType().getValue() : null;
|
||||||
|
if (siteType != null) {
|
||||||
|
Map<String, Object> def = sitePagesService.getPages("default:" + siteType);
|
||||||
|
if (def != null) {
|
||||||
|
def.put("source", "default");
|
||||||
|
return ApiResponse.success(def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ApiResponse.error(404, "页面配置不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/api/v1/sites/{siteId}/pages/version")
|
@GetMapping("/api/v1/sites/{siteId}/pages/version")
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
<h2 style="margin:0">编辑: {{ editSiteId }}</h2>
|
<h2 style="margin:0">编辑: {{ editSiteId }}</h2>
|
||||||
<div style="display:flex;gap:8px">
|
<div style="display:flex;gap:8px">
|
||||||
<el-button size="small" type="primary" @click="savePages" :loading="saving">保存</el-button>
|
<el-button size="small" type="primary" @click="savePages" :loading="saving">保存</el-button>
|
||||||
|
<el-button size="small" type="danger" @click="deletePages" :loading="deleting">删除</el-button>
|
||||||
<el-button size="small" @click="editSiteId=''">返回列表</el-button>
|
<el-button size="small" @click="editSiteId=''">返回列表</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -70,7 +71,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import api from '../api'; import { Refresh } from '@element-plus/icons-vue'
|
import api from '../api'; import { Refresh } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
const loading = ref(false), saving = ref(false), sites = ref([]), pagesMap = ref({}), sitesList = ref([])
|
const loading = ref(false), saving = ref(false), deleting = ref(false), sites = ref([]), pagesMap = ref({}), sitesList = ref([])
|
||||||
const editSiteId = ref(''), editorJson = ref('[]')
|
const editSiteId = ref(''), editorJson = ref('[]')
|
||||||
const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-'
|
const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-'
|
||||||
const parsed = computed(() => { try { return JSON.parse(editorJson.value) } catch { return [] } })
|
const parsed = computed(() => { try { return JSON.parse(editorJson.value) } catch { return [] } })
|
||||||
@@ -106,6 +107,14 @@ const editPage = async (row) => {
|
|||||||
const syncToJson = () => { editorJson.value = JSON.stringify(parsed.value, null, 2) }
|
const syncToJson = () => { editorJson.value = JSON.stringify(parsed.value, null, 2) }
|
||||||
const remove = (idx) => { parsed.value.splice(idx,1); syncToJson() }
|
const remove = (idx) => { parsed.value.splice(idx,1); syncToJson() }
|
||||||
const addEntry = () => { parsed.value.push({key:'',label:'',url:'{base}',method:'GET'}); syncToJson() }
|
const addEntry = () => { parsed.value.push({key:'',label:'',url:'{base}',method:'GET'}); syncToJson() }
|
||||||
|
const deletePages = async () => {
|
||||||
|
try { await ElMessageBox.confirm('删除后站点将使用默认模板','确认',{type:'warning',confirmButtonText:'确认删除'}) } catch { return }
|
||||||
|
deleting.value = true
|
||||||
|
try { await api.raw.delete('/admin/site-pages/'+editSiteId.value); ElMessage.success('已删除'); editSiteId.value=''; fetchAll() }
|
||||||
|
catch { ElMessage.error('删除失败') }
|
||||||
|
finally { deleting.value = false }
|
||||||
|
}
|
||||||
|
|
||||||
const savePages = async () => {
|
const savePages = async () => {
|
||||||
saving.value = true
|
saving.value = true
|
||||||
try { await api.raw.put('/sites/'+editSiteId.value+'/pages', { entries: parsed.value }); ElMessage.success('已保存'); editSiteId.value=''; fetchAll() }
|
try { await api.raw.put('/sites/'+editSiteId.value+'/pages', { entries: parsed.value }); ElMessage.success('已保存'); editSiteId.value=''; fetchAll() }
|
||||||
|
|||||||
Reference in New Issue
Block a user