21
This commit is contained in:
parent
a7e5c11007
commit
47f02cccf6
|
|
@ -0,0 +1,181 @@
|
|||
using MiAssessment.Admin.Business.Attributes;
|
||||
using MiAssessment.Admin.Business.Models;
|
||||
using MiAssessment.Admin.Business.Models.Common;
|
||||
using MiAssessment.Admin.Business.Models.ReportPageConfig;
|
||||
using MiAssessment.Admin.Business.Services.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace MiAssessment.Admin.Business.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// 报告页面配置控制器
|
||||
/// </summary>
|
||||
[Route("api/admin/business/reportpageconfig")]
|
||||
public class ReportPageConfigController : BusinessControllerBase
|
||||
{
|
||||
private readonly IReportPageConfigService _service;
|
||||
|
||||
public ReportPageConfigController(IReportPageConfigService service)
|
||||
{
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报告页面配置列表
|
||||
/// </summary>
|
||||
[HttpGet("getList")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> GetList([FromQuery] ReportPageConfigQueryRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await _service.GetListAsync(request);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "获取报告页面配置列表失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建报告页面配置
|
||||
/// </summary>
|
||||
[HttpPost("create")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> Create([FromBody] CreateReportPageConfigRequest request)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(request.PageName))
|
||||
return ValidationError("页面标识不能为空");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.Title))
|
||||
return ValidationError("页面标题不能为空");
|
||||
|
||||
try
|
||||
{
|
||||
var id = await _service.CreateAsync(request);
|
||||
return Ok(id);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "创建报告页面配置失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新报告页面配置
|
||||
/// </summary>
|
||||
[HttpPost("update")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> Update([FromBody] UpdateReportPageConfigRequest request)
|
||||
{
|
||||
if (request.Id <= 0)
|
||||
return ValidationError("配置ID无效");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.PageName))
|
||||
return ValidationError("页面标识不能为空");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.Title))
|
||||
return ValidationError("页面标题不能为空");
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _service.UpdateAsync(request);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "更新报告页面配置失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除报告页面配置
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> Delete([FromBody] DeleteRequest request)
|
||||
{
|
||||
if (request.Id <= 0)
|
||||
return ValidationError("配置ID无效");
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _service.DeleteAsync(request.Id);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "删除报告页面配置失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新状态
|
||||
/// </summary>
|
||||
[HttpPost("updateStatus")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> UpdateStatus([FromBody] UpdateStatusRequest request)
|
||||
{
|
||||
if (request.Id <= 0)
|
||||
return ValidationError("配置ID无效");
|
||||
|
||||
if (request.Status < 0 || request.Status > 1)
|
||||
return ValidationError("状态值无效");
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _service.UpdateStatusAsync(request.Id, request.Status);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "更新状态失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量更新排序
|
||||
/// </summary>
|
||||
[HttpPost("updateSort")]
|
||||
[BusinessPermission("assessment:view")]
|
||||
public async Task<IActionResult> UpdateSort([FromBody] UpdateSortRequest request)
|
||||
{
|
||||
if (request.Items == null || request.Items.Count == 0)
|
||||
return ValidationError("排序项列表不能为空");
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _service.UpdateSortAsync(request.Items);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (BusinessException ex)
|
||||
{
|
||||
return Error(ex.Code, ex.Message);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return Error(ErrorCodes.SystemError, "更新排序失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using MiAssessment.Admin.Business.Models;
|
||||
using MiAssessment.Admin.Business.Models.Common;
|
||||
using MiAssessment.Admin.Business.Models.ReportPageConfig;
|
||||
|
||||
namespace MiAssessment.Admin.Business.Services.Interfaces;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
/**
|
||||
* 报告页面配置 API
|
||||
* @module api/business/reportPageConfig
|
||||
*/
|
||||
import { request, type ApiResponse } from '@/utils/request'
|
||||
import type { PagedRequest, PagedResult, UpdateStatusRequest, UpdateSortRequest } from '@/types/common'
|
||||
|
||||
/** 报告页面配置项 */
|
||||
export interface ReportPageConfigItem {
|
||||
id: number
|
||||
pageType: number
|
||||
pageTypeName: string
|
||||
pageName: string
|
||||
title: string
|
||||
sortOrder: number
|
||||
imageUrl: string | null
|
||||
routeUrl: string | null
|
||||
status: number
|
||||
statusName: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
/** 查询参数 */
|
||||
export interface ReportPageConfigQuery extends PagedRequest {
|
||||
pageType?: number
|
||||
status?: number
|
||||
title?: string
|
||||
}
|
||||
|
||||
/** 创建请求 */
|
||||
export interface CreateReportPageConfigRequest {
|
||||
pageType: number
|
||||
pageName: string
|
||||
title: string
|
||||
sortOrder: number
|
||||
imageUrl?: string
|
||||
routeUrl?: string
|
||||
status: number
|
||||
}
|
||||
|
||||
/** 更新请求 */
|
||||
export interface UpdateReportPageConfigRequest extends CreateReportPageConfigRequest {
|
||||
id: number
|
||||
}
|
||||
|
||||
const BASE = '/admin/business/reportpageconfig'
|
||||
|
||||
export function getReportPageConfigList(params: ReportPageConfigQuery): Promise<ApiResponse<PagedResult<ReportPageConfigItem>>> {
|
||||
return request<PagedResult<ReportPageConfigItem>>({ url: `${BASE}/getList`, method: 'get', params })
|
||||
}
|
||||
|
||||
export function createReportPageConfig(data: CreateReportPageConfigRequest): Promise<ApiResponse<number>> {
|
||||
return request<number>({ url: `${BASE}/create`, method: 'post', data })
|
||||
}
|
||||
|
||||
export function updateReportPageConfig(data: UpdateReportPageConfigRequest): Promise<ApiResponse<boolean>> {
|
||||
return request<boolean>({ url: `${BASE}/update`, method: 'post', data })
|
||||
}
|
||||
|
||||
export function deleteReportPageConfig(id: number): Promise<ApiResponse<boolean>> {
|
||||
return request<boolean>({ url: `${BASE}/delete`, method: 'post', data: { id } })
|
||||
}
|
||||
|
||||
export function updateReportPageConfigStatus(data: UpdateStatusRequest): Promise<ApiResponse<boolean>> {
|
||||
return request<boolean>({ url: `${BASE}/updateStatus`, method: 'post', data })
|
||||
}
|
||||
|
||||
export function updateReportPageConfigSort(data: UpdateSortRequest): Promise<ApiResponse<boolean>> {
|
||||
return request<boolean>({ url: `${BASE}/updateSort`, method: 'post', data })
|
||||
}
|
||||
|
|
@ -124,6 +124,12 @@ export const businessRoutes: RouteRecordRaw[] = [
|
|||
name: 'AssessmentRecord',
|
||||
component: () => import('@/views/business/assessment/record/index.vue'),
|
||||
meta: { title: '测评记录', permission: 'assessmentRecord:view', keepAlive: true }
|
||||
},
|
||||
{
|
||||
path: 'report-page-config',
|
||||
name: 'ReportPageConfig',
|
||||
component: () => import('@/views/business/assessment/report-page-config/index.vue'),
|
||||
meta: { title: '报告页面配置', permission: 'assessment:view', keepAlive: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,449 @@
|
|||
<template>
|
||||
<div class="report-page-config-container">
|
||||
<!-- 页面标题和操作栏 -->
|
||||
<el-card class="page-header">
|
||||
<div class="header-content">
|
||||
<div class="header-left">
|
||||
<h2 class="page-title">报告页面配置</h2>
|
||||
<span class="page-description">管理测评报告的页面组成,支持静态图片和网页截图两种类型</span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新增配置
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 搜索表单 -->
|
||||
<el-card class="search-card">
|
||||
<el-form :model="queryParams" inline>
|
||||
<el-form-item label="标题">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter="handleSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item label="页面类型">
|
||||
<el-select v-model="queryParams.pageType" placeholder="请选择" clearable>
|
||||
<el-option label="静态图片" :value="1" />
|
||||
<el-option label="网页截图" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<DictSelect v-model="queryParams.status" type="common_status" placeholder="请选择状态" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
|
||||
<el-button @click="handleReset"><el-icon><Refresh /></el-icon>重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<el-card v-loading="state.loading" class="table-card">
|
||||
<el-table :data="state.tableData" row-key="id" stripe>
|
||||
<!-- 排序操作列 -->
|
||||
<el-table-column width="80" align="center" label="排序">
|
||||
<template #default="{ $index }">
|
||||
<div class="sort-buttons">
|
||||
<el-button type="primary" link size="small" :disabled="$index === 0" @click="handleMoveUp($index)">
|
||||
<el-icon><Top /></el-icon>
|
||||
</el-button>
|
||||
<el-button type="primary" link size="small" :disabled="$index === state.tableData.length - 1" @click="handleMoveDown($index)">
|
||||
<el-icon><Bottom /></el-icon>
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 页面类型 -->
|
||||
<el-table-column label="页面类型" width="120" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.pageType === 1 ? 'warning' : 'success'">
|
||||
{{ row.pageTypeName }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 页面标识 -->
|
||||
<el-table-column prop="pageName" label="页面标识" min-width="140" show-overflow-tooltip />
|
||||
|
||||
<!-- 标题 -->
|
||||
<el-table-column prop="title" label="标题" min-width="160" show-overflow-tooltip />
|
||||
|
||||
<!-- 路由/图片地址 -->
|
||||
<el-table-column label="地址" min-width="200" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.pageType === 2">{{ row.routeUrl || '-' }}</span>
|
||||
<span v-else>{{ row.imageUrl || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 状态 -->
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-switch
|
||||
v-model="row.status"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
:loading="row._statusLoading"
|
||||
@change="(val: number) => handleStatusChange(row, val)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 创建时间 -->
|
||||
<el-table-column prop="createTime" label="创建时间" width="180" align="center" />
|
||||
|
||||
<!-- 操作 -->
|
||||
<el-table-column label="操作" width="150" fixed="right" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link size="small" @click="handleEdit(row)">
|
||||
<el-icon><Edit /></el-icon>编辑
|
||||
</el-button>
|
||||
<el-popconfirm title="确定要删除这条配置吗?" confirm-button-text="确定" cancel-button-text="取消" @confirm="handleDelete(row)">
|
||||
<template #reference>
|
||||
<el-button type="danger" link size="small">
|
||||
<el-icon><Delete /></el-icon>删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<div class="pagination-wrapper">
|
||||
<el-pagination
|
||||
v-model:current-page="queryParams.page"
|
||||
v-model:page-size="queryParams.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:total="state.total"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 新增/编辑对话框 -->
|
||||
<el-dialog v-model="state.dialogVisible" :title="state.dialogTitle" width="600px" :close-on-click-modal="false" @closed="handleDialogClosed">
|
||||
<el-form ref="formRef" :model="state.formData" :rules="formRules" label-width="100px" label-position="right">
|
||||
<el-form-item label="页面类型" prop="pageType" required>
|
||||
<el-select v-model="state.formData.pageType" placeholder="请选择页面类型">
|
||||
<el-option label="静态图片" :value="1" />
|
||||
<el-option label="网页截图" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="页面标识" prop="pageName" required>
|
||||
<el-input v-model="state.formData.pageName" placeholder="请输入页面标识,如 cover、traits" maxlength="50" show-word-limit />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="页面标题" prop="title" required>
|
||||
<el-input v-model="state.formData.title" placeholder="请输入页面标题" maxlength="100" show-word-limit />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="排序" prop="sortOrder">
|
||||
<el-input-number v-model="state.formData.sortOrder" :min="0" :max="9999" placeholder="数值越小越靠前" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="state.formData.pageType === 1" label="图片地址" prop="imageUrl">
|
||||
<el-input v-model="state.formData.imageUrl" placeholder="请输入静态图片路径" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="state.formData.pageType === 2" label="路由地址" prop="routeUrl">
|
||||
<el-input v-model="state.formData.routeUrl" placeholder="请输入网页路由路径,如 /Report/Cover" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态" prop="status" required>
|
||||
<DictSelect v-model="state.formData.status" type="common_status" placeholder="请选择状态" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="state.dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="state.formLoading" @click="handleSubmit">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
/**
|
||||
* 报告页面配置管理页面
|
||||
*/
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { Plus, Search, Refresh, Edit, Delete, Top, Bottom } from '@element-plus/icons-vue'
|
||||
import { ElMessage, type FormInstance, type FormRules } from 'element-plus'
|
||||
import {
|
||||
getReportPageConfigList,
|
||||
createReportPageConfig,
|
||||
updateReportPageConfig,
|
||||
deleteReportPageConfig,
|
||||
updateReportPageConfigStatus,
|
||||
updateReportPageConfigSort,
|
||||
type ReportPageConfigItem,
|
||||
type ReportPageConfigQuery,
|
||||
type CreateReportPageConfigRequest,
|
||||
type UpdateReportPageConfigRequest
|
||||
} from '@/api/business/reportPageConfig'
|
||||
import { DictSelect } from '@/components'
|
||||
|
||||
// ============ Types ============
|
||||
|
||||
interface FormData {
|
||||
id?: number
|
||||
pageType: number
|
||||
pageName: string
|
||||
title: string
|
||||
sortOrder: number
|
||||
imageUrl: string
|
||||
routeUrl: string
|
||||
status: number | string
|
||||
}
|
||||
|
||||
interface PageState {
|
||||
loading: boolean
|
||||
tableData: (ReportPageConfigItem & { _statusLoading?: boolean })[]
|
||||
total: number
|
||||
dialogVisible: boolean
|
||||
dialogTitle: string
|
||||
formData: FormData
|
||||
formLoading: boolean
|
||||
isEdit: boolean
|
||||
}
|
||||
|
||||
// ============ Refs ============
|
||||
|
||||
const formRef = ref<FormInstance>()
|
||||
|
||||
// ============ State ============
|
||||
|
||||
const queryParams = reactive<ReportPageConfigQuery>({
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
title: '',
|
||||
pageType: undefined,
|
||||
status: undefined
|
||||
})
|
||||
|
||||
const state = reactive<PageState>({
|
||||
loading: false,
|
||||
tableData: [],
|
||||
total: 0,
|
||||
dialogVisible: false,
|
||||
dialogTitle: '新增配置',
|
||||
formData: getDefaultFormData(),
|
||||
formLoading: false,
|
||||
isEdit: false
|
||||
})
|
||||
|
||||
// ============ Form Rules ============
|
||||
|
||||
const formRules: FormRules = {
|
||||
pageType: [{ required: true, message: '请选择页面类型', trigger: 'change' }],
|
||||
pageName: [{ required: true, message: '请输入页面标识', trigger: 'blur' }],
|
||||
title: [{ required: true, message: '请输入页面标题', trigger: 'blur' }],
|
||||
status: [{ required: true, message: '请选择状态', trigger: 'change' }]
|
||||
}
|
||||
|
||||
// ============ Helper Functions ============
|
||||
|
||||
function getDefaultFormData(): FormData {
|
||||
return { pageType: 2, pageName: '', title: '', sortOrder: 0, imageUrl: '', routeUrl: '', status: 1 }
|
||||
}
|
||||
|
||||
// ============ API Functions ============
|
||||
|
||||
async function loadList() {
|
||||
state.loading = true
|
||||
try {
|
||||
const params: ReportPageConfigQuery = { page: queryParams.page, pageSize: queryParams.pageSize }
|
||||
if (queryParams.title) params.title = queryParams.title
|
||||
if (queryParams.pageType !== undefined && queryParams.pageType !== '') params.pageType = Number(queryParams.pageType)
|
||||
if (queryParams.status !== undefined && queryParams.status !== '') params.status = Number(queryParams.status)
|
||||
|
||||
const res = await getReportPageConfigList(params)
|
||||
if (res.code === 0) {
|
||||
state.tableData = res.data?.list || []
|
||||
state.total = res.data?.total || 0
|
||||
} else {
|
||||
throw new Error(res.message || '获取列表失败')
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '获取列表失败')
|
||||
} finally {
|
||||
state.loading = false
|
||||
}
|
||||
}
|
||||
|
||||
// ============ Sort Handlers ============
|
||||
|
||||
async function handleMoveUp(index: number) {
|
||||
if (index <= 0) return
|
||||
await swapAndUpdateSort(index, index - 1)
|
||||
}
|
||||
|
||||
async function handleMoveDown(index: number) {
|
||||
if (index >= state.tableData.length - 1) return
|
||||
await swapAndUpdateSort(index, index + 1)
|
||||
}
|
||||
|
||||
async function swapAndUpdateSort(fromIndex: number, toIndex: number) {
|
||||
const temp = state.tableData[fromIndex]
|
||||
state.tableData[fromIndex] = state.tableData[toIndex]
|
||||
state.tableData[toIndex] = temp
|
||||
|
||||
const sortItems = state.tableData.map((item, idx) => ({ id: item.id, sort: idx }))
|
||||
|
||||
state.loading = true
|
||||
try {
|
||||
const res = await updateReportPageConfigSort({ items: sortItems })
|
||||
if (res.code === 0) {
|
||||
ElMessage.success('排序更新成功')
|
||||
await loadList()
|
||||
} else {
|
||||
throw new Error(res.message || '排序更新失败')
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '排序更新失败')
|
||||
await loadList()
|
||||
} finally {
|
||||
state.loading = false
|
||||
}
|
||||
}
|
||||
|
||||
// ============ Event Handlers ============
|
||||
|
||||
function handleSearch() { queryParams.page = 1; loadList() }
|
||||
|
||||
function handleReset() {
|
||||
queryParams.title = ''
|
||||
queryParams.pageType = undefined
|
||||
queryParams.status = undefined
|
||||
queryParams.page = 1
|
||||
loadList()
|
||||
}
|
||||
|
||||
function handleSizeChange(size: number) { queryParams.pageSize = size; queryParams.page = 1; loadList() }
|
||||
function handleCurrentChange(page: number) { queryParams.page = page; loadList() }
|
||||
|
||||
function handleAdd() {
|
||||
state.isEdit = false
|
||||
state.dialogTitle = '新增配置'
|
||||
state.formData = getDefaultFormData()
|
||||
state.dialogVisible = true
|
||||
}
|
||||
|
||||
function handleEdit(row: ReportPageConfigItem) {
|
||||
state.isEdit = true
|
||||
state.dialogTitle = '编辑配置'
|
||||
state.formData = {
|
||||
id: row.id,
|
||||
pageType: row.pageType,
|
||||
pageName: row.pageName,
|
||||
title: row.title,
|
||||
sortOrder: row.sortOrder,
|
||||
imageUrl: row.imageUrl || '',
|
||||
routeUrl: row.routeUrl || '',
|
||||
status: row.status
|
||||
}
|
||||
state.dialogVisible = true
|
||||
}
|
||||
|
||||
async function handleStatusChange(row: ReportPageConfigItem & { _statusLoading?: boolean }, status: number) {
|
||||
row._statusLoading = true
|
||||
try {
|
||||
const res = await updateReportPageConfigStatus({ id: row.id, status })
|
||||
if (res.code === 0) {
|
||||
ElMessage.success(status === 1 ? '已启用' : '已禁用')
|
||||
} else {
|
||||
row.status = status === 1 ? 0 : 1
|
||||
throw new Error(res.message || '状态更新失败')
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '状态更新失败')
|
||||
} finally {
|
||||
row._statusLoading = false
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDelete(row: ReportPageConfigItem) {
|
||||
try {
|
||||
const res = await deleteReportPageConfig(row.id)
|
||||
if (res.code === 0) {
|
||||
ElMessage.success('删除成功')
|
||||
if (state.tableData.length === 1 && queryParams.page > 1) queryParams.page--
|
||||
await loadList()
|
||||
} else {
|
||||
throw new Error(res.message || '删除失败')
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '删除失败')
|
||||
}
|
||||
}
|
||||
|
||||
async function handleSubmit() {
|
||||
if (!formRef.value) return
|
||||
try { await formRef.value.validate() } catch { return }
|
||||
|
||||
state.formLoading = true
|
||||
try {
|
||||
const fd = state.formData
|
||||
const data: CreateReportPageConfigRequest | UpdateReportPageConfigRequest = {
|
||||
pageType: fd.pageType,
|
||||
pageName: fd.pageName,
|
||||
title: fd.title,
|
||||
sortOrder: fd.sortOrder,
|
||||
imageUrl: fd.pageType === 1 ? fd.imageUrl : undefined,
|
||||
routeUrl: fd.pageType === 2 ? fd.routeUrl : undefined,
|
||||
status: Number(fd.status)
|
||||
}
|
||||
|
||||
let res
|
||||
if (state.isEdit && fd.id) {
|
||||
res = await updateReportPageConfig({ ...data, id: fd.id } as UpdateReportPageConfigRequest)
|
||||
} else {
|
||||
res = await createReportPageConfig(data)
|
||||
}
|
||||
|
||||
if (res.code === 0) {
|
||||
ElMessage.success(state.isEdit ? '更新成功' : '创建成功')
|
||||
state.dialogVisible = false
|
||||
await loadList()
|
||||
} else {
|
||||
throw new Error(res.message || (state.isEdit ? '更新失败' : '创建失败'))
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : (state.isEdit ? '更新失败' : '创建失败'))
|
||||
} finally {
|
||||
state.formLoading = false
|
||||
}
|
||||
}
|
||||
|
||||
function handleDialogClosed() {
|
||||
formRef.value?.resetFields()
|
||||
state.formData = getDefaultFormData()
|
||||
}
|
||||
|
||||
// ============ Lifecycle ============
|
||||
|
||||
onMounted(() => { loadList() })
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.report-page-config-container { padding: 0; }
|
||||
.page-header { margin-bottom: 16px; }
|
||||
.header-content { display: flex; justify-content: space-between; align-items: center; }
|
||||
.header-left { display: flex; align-items: baseline; gap: 16px; }
|
||||
.page-title { margin: 0; font-size: 20px; font-weight: 600; color: var(--text-primary, #303133); }
|
||||
.page-description { font-size: 14px; color: var(--text-secondary, #909399); }
|
||||
.search-card { margin-bottom: 16px; }
|
||||
.search-card :deep(.el-card__body) { padding-bottom: 2px; }
|
||||
.table-card { min-height: 400px; }
|
||||
.pagination-wrapper { display: flex; justify-content: flex-end; margin-top: 16px; }
|
||||
.sort-buttons { display: flex; flex-direction: column; align-items: center; gap: 2px; }
|
||||
.sort-buttons .el-button { padding: 2px; }
|
||||
:deep(.el-table th.el-table__cell) { background-color: var(--bg-light, #f5f7fa); font-weight: 500; }
|
||||
:deep(.el-dialog__body) { padding-top: 20px; }
|
||||
</style>
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as r,c as a,b as t,e as p,w as _,g as l,t as d,i as c,k as u,_ as i}from"./index-cO0XwfvV.js";const m={class:"error-page"},f={class:"error-content"},x=r({__name:"404",setup(k){const o=c(),s=()=>{o.push("/")};return(v,e)=>{const n=l("el-button");return u(),a("div",m,[t("div",f,[e[1]||(e[1]=t("h1",null,"404",-1)),e[2]||(e[2]=t("p",null,"抱歉,您访问的页面不存在",-1)),p(n,{type:"primary",onClick:s},{default:_(()=>[...e[0]||(e[0]=[d("返回首页",-1)])]),_:1})])])}}}),b=i(x,[["__scopeId","data-v-7e9f7d47"]]);export{b as default};
|
||||
import{d as r,c as a,b as t,e as p,w as _,g as l,t as d,i as c,k as u,_ as i}from"./index-CIT-S3uf.js";const m={class:"error-page"},f={class:"error-content"},x=r({__name:"404",setup(k){const o=c(),s=()=>{o.push("/")};return(v,e)=>{const n=l("el-button");return u(),a("div",m,[t("div",f,[e[1]||(e[1]=t("h1",null,"404",-1)),e[2]||(e[2]=t("p",null,"抱歉,您访问的页面不存在",-1)),p(n,{type:"primary",onClick:s},{default:_(()=>[...e[0]||(e[0]=[d("返回首页",-1)])]),_:1})])])}}}),b=i(x,[["__scopeId","data-v-7e9f7d47"]]);export{b as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as e}from"./index-cO0XwfvV.js";function n(t){return e({url:"/admin/assessment/type/getList",method:"get",params:t})}function a(t){return e({url:"/admin/assessment/type/create",method:"post",data:t})}function o(t){return e({url:"/admin/assessment/type/update",method:"post",data:t})}function r(t){return e({url:"/admin/assessment/type/delete",method:"post",data:{id:t}})}function u(t){return e({url:"/admin/assessment/type/updateStatus",method:"post",data:t})}function i(t){return e({url:"/admin/assessment/question/getList",method:"get",params:t})}function m(t){return e({url:"/admin/assessment/question/create",method:"post",data:t})}function d(t){return e({url:"/admin/assessment/question/update",method:"post",data:t})}function p(t){return e({url:"/admin/assessment/question/delete",method:"post",data:{id:t}})}function c(t){return e({url:"/admin/assessment/question/batchImport",method:"post",data:t,headers:{"Content-Type":"multipart/form-data"}})}function l(t){return e({url:"/admin/assessment/category/getTree",method:"get",params:{assessmentTypeId:t}})}function g(t){return e({url:"/admin/assessment/category/create",method:"post",data:t})}function h(t){return e({url:"/admin/assessment/category/update",method:"post",data:t})}function f(t){return e({url:"/admin/assessment/category/delete",method:"post",data:{id:t}})}function y(t){return e({url:"/admin/assessment/mapping/getByQuestion",method:"get",params:{questionId:t}})}function O(t){return e({url:"/admin/assessment/mapping/batchUpdate",method:"post",data:t})}function C(t){return e({url:"/admin/assessment/conclusion/getList",method:"get",params:{categoryId:t}})}function S(t){return e({url:"/admin/assessment/conclusion/create",method:"post",data:t})}function L(t){return e({url:"/admin/assessment/conclusion/update",method:"post",data:t})}function T(t){return e({url:"/admin/assessment/conclusion/delete",method:"post",data:{id:t}})}function q(t){return e({url:"/admin/assessment/scoreOption/getList",method:"get",params:t})}function Q(t){return e({url:"/admin/assessment/scoreOption/create",method:"post",data:t})}function b(t){return e({url:"/admin/assessment/scoreOption/update",method:"post",data:t})}function A(t){return e({url:"/admin/assessment/scoreOption/delete",method:"post",data:{id:t}})}function x(t){return e({url:"/admin/assessment/scoreOption/updateStatus",method:"post",data:t})}export{l as a,T as b,g as c,f as d,L as e,S as f,n as g,C as h,i,p as j,d as k,m as l,O as m,c as n,y as o,q as p,A as q,x as r,b as s,Q as t,h as u,u as v,r as w,o as x,a as y};
|
||||
import{O as e}from"./index-CIT-S3uf.js";function n(t){return e({url:"/admin/assessment/type/getList",method:"get",params:t})}function a(t){return e({url:"/admin/assessment/type/create",method:"post",data:t})}function o(t){return e({url:"/admin/assessment/type/update",method:"post",data:t})}function r(t){return e({url:"/admin/assessment/type/delete",method:"post",data:{id:t}})}function u(t){return e({url:"/admin/assessment/type/updateStatus",method:"post",data:t})}function i(t){return e({url:"/admin/assessment/question/getList",method:"get",params:t})}function m(t){return e({url:"/admin/assessment/question/create",method:"post",data:t})}function d(t){return e({url:"/admin/assessment/question/update",method:"post",data:t})}function p(t){return e({url:"/admin/assessment/question/delete",method:"post",data:{id:t}})}function c(t){return e({url:"/admin/assessment/question/batchImport",method:"post",data:t,headers:{"Content-Type":"multipart/form-data"}})}function l(t){return e({url:"/admin/assessment/category/getTree",method:"get",params:{assessmentTypeId:t}})}function g(t){return e({url:"/admin/assessment/category/create",method:"post",data:t})}function h(t){return e({url:"/admin/assessment/category/update",method:"post",data:t})}function f(t){return e({url:"/admin/assessment/category/delete",method:"post",data:{id:t}})}function y(t){return e({url:"/admin/assessment/mapping/getByQuestion",method:"get",params:{questionId:t}})}function O(t){return e({url:"/admin/assessment/mapping/batchUpdate",method:"post",data:t})}function C(t){return e({url:"/admin/assessment/conclusion/getList",method:"get",params:{categoryId:t}})}function S(t){return e({url:"/admin/assessment/conclusion/create",method:"post",data:t})}function L(t){return e({url:"/admin/assessment/conclusion/update",method:"post",data:t})}function T(t){return e({url:"/admin/assessment/conclusion/delete",method:"post",data:{id:t}})}function q(t){return e({url:"/admin/assessment/scoreOption/getList",method:"get",params:t})}function Q(t){return e({url:"/admin/assessment/scoreOption/create",method:"post",data:t})}function b(t){return e({url:"/admin/assessment/scoreOption/update",method:"post",data:t})}function A(t){return e({url:"/admin/assessment/scoreOption/delete",method:"post",data:{id:t}})}function x(t){return e({url:"/admin/assessment/scoreOption/updateStatus",method:"post",data:t})}export{l as a,T as b,g as c,f as d,L as e,S as f,n as g,C as h,i,p as j,d as k,m as l,O as m,c as n,y as o,q as p,A as q,x as r,b as s,Q as t,h as u,u as v,r as w,o as x,a as y};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as t}from"./index-cO0XwfvV.js";function e(){return t({url:"/admin/config/upload/get",method:"get"})}function i(n){return t({url:"/admin/config/upload/update",method:"post",data:n})}function r(n){return t({url:"/admin/config/upload/testConnection",method:"post",data:n})}function u(){return t({url:"/admin/config/miniprogram/get",method:"get"})}function a(n){return t({url:"/admin/config/miniprogram/update",method:"post",data:n})}function g(){return t({url:"/admin/config/weixinpay/get",method:"get"})}function d(n){return t({url:"/admin/config/weixinpay/update",method:"post",data:n})}function f(){return t({url:"/admin/config/user/get",method:"get"})}function m(n){return t({url:"/admin/config/user/update",method:"post",data:n})}export{g as a,d as b,e as c,i as d,f as e,m as f,u as g,r as t,a as u};
|
||||
import{O as t}from"./index-CIT-S3uf.js";function e(){return t({url:"/admin/config/upload/get",method:"get"})}function i(n){return t({url:"/admin/config/upload/update",method:"post",data:n})}function r(n){return t({url:"/admin/config/upload/testConnection",method:"post",data:n})}function u(){return t({url:"/admin/config/miniprogram/get",method:"get"})}function a(n){return t({url:"/admin/config/miniprogram/update",method:"post",data:n})}function g(){return t({url:"/admin/config/weixinpay/get",method:"get"})}function d(n){return t({url:"/admin/config/weixinpay/update",method:"post",data:n})}function f(){return t({url:"/admin/config/user/get",method:"get"})}function m(n){return t({url:"/admin/config/user/update",method:"post",data:n})}export{g as a,d as b,e as c,i as d,f as e,m as f,u as g,r as t,a as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as n}from"./index-cO0XwfvV.js";function o(t){return n({url:"/admin/content/banner/getList",method:"get",params:t})}function a(t){return n({url:"/admin/content/banner/create",method:"post",data:t})}function r(t){return n({url:"/admin/content/banner/update",method:"post",data:t})}function i(t){return n({url:"/admin/content/banner/delete",method:"post",data:{id:t}})}function u(t){return n({url:"/admin/content/banner/updateStatus",method:"post",data:t})}function d(t){return n({url:"/admin/content/banner/updateSort",method:"post",data:t})}function m(t){return n({url:"/admin/content/promotion/getList",method:"get",params:t})}function s(t){return n({url:"/admin/content/promotion/create",method:"post",data:t})}function c(t){return n({url:"/admin/content/promotion/update",method:"post",data:t})}function p(t){return n({url:"/admin/content/promotion/delete",method:"post",data:{id:t}})}function l(t){return n({url:"/admin/content/promotion/updateStatus",method:"post",data:t})}function g(t){return n({url:"/admin/content/navigation/getList",method:"get",params:t})}function f(t){return n({url:"/admin/content/navigation/create",method:"post",data:t})}function h(t){return n({url:"/admin/content/navigation/update",method:"post",data:t})}function v(t){return n({url:"/admin/content/navigation/delete",method:"post",data:{id:t}})}function S(t){return n({url:"/admin/content/navigation/updateStatus",method:"post",data:t})}export{u as a,r as b,a as c,i as d,g as e,S as f,o as g,v as h,h as i,f as j,m as k,l,p as m,c as n,s as o,d as u};
|
||||
import{O as n}from"./index-CIT-S3uf.js";function o(t){return n({url:"/admin/content/banner/getList",method:"get",params:t})}function a(t){return n({url:"/admin/content/banner/create",method:"post",data:t})}function r(t){return n({url:"/admin/content/banner/update",method:"post",data:t})}function i(t){return n({url:"/admin/content/banner/delete",method:"post",data:{id:t}})}function u(t){return n({url:"/admin/content/banner/updateStatus",method:"post",data:t})}function d(t){return n({url:"/admin/content/banner/updateSort",method:"post",data:t})}function m(t){return n({url:"/admin/content/promotion/getList",method:"get",params:t})}function s(t){return n({url:"/admin/content/promotion/create",method:"post",data:t})}function c(t){return n({url:"/admin/content/promotion/update",method:"post",data:t})}function p(t){return n({url:"/admin/content/promotion/delete",method:"post",data:{id:t}})}function l(t){return n({url:"/admin/content/promotion/updateStatus",method:"post",data:t})}function g(t){return n({url:"/admin/content/navigation/getList",method:"get",params:t})}function f(t){return n({url:"/admin/content/navigation/create",method:"post",data:t})}function h(t){return n({url:"/admin/content/navigation/update",method:"post",data:t})}function v(t){return n({url:"/admin/content/navigation/delete",method:"post",data:{id:t}})}function S(t){return n({url:"/admin/content/navigation/updateStatus",method:"post",data:t})}export{u as a,r as b,a as c,i as d,g as e,S as f,o as g,v as h,h as i,f as j,m as k,l,p as m,c as n,s as o,d as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as t}from"./index-cO0XwfvV.js";function m(){return t({url:"/admin/departments",method:"get"})}function a(e){return t({url:"/admin/departments",method:"post",data:e})}function u(e,n){return t({url:`/admin/departments/${e}`,method:"put",data:n})}function d(e){return t({url:`/admin/departments/${e}`,method:"delete"})}function s(e){return t({url:`/admin/departments/${e}/menus`,method:"get"})}function p(e){return t({url:`/admin/departments/${e.departmentId}/menus`,method:"put",data:{menuIds:e.menuIds}})}export{s as a,p as b,a as c,d,m as g,u};
|
||||
import{O as t}from"./index-CIT-S3uf.js";function m(){return t({url:"/admin/departments",method:"get"})}function a(e){return t({url:"/admin/departments",method:"post",data:e})}function u(e,n){return t({url:`/admin/departments/${e}`,method:"put",data:n})}function d(e){return t({url:`/admin/departments/${e}`,method:"delete"})}function s(e){return t({url:`/admin/departments/${e}/menus`,method:"get"})}function p(e){return t({url:`/admin/departments/${e.departmentId}/menus`,method:"put",data:{menuIds:e.menuIds}})}export{s as a,p as b,a as c,d,m as g,u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as i}from"./index-cO0XwfvV.js";function n(t){return i({url:"/admin/distribution/inviteCode/getList",method:"get",params:t})}function o(t){return i({url:"/admin/distribution/inviteCode/generate",method:"post",data:t})}function r(t){return i({url:"/admin/distribution/inviteCode/assign",method:"post",data:t})}function s(t){return i({url:"/admin/distribution/inviteCode/export",method:"get",params:t,responseType:"blob"})}function a(t){return i({url:"/admin/distribution/commission/getList",method:"get",params:t})}function d(t){return i({url:"/admin/distribution/commission/getDetail",method:"get",params:{id:t}})}function u(t){return i({url:"/admin/distribution/commission/getStatistics",method:"get",params:t})}function m(t){return i({url:"/admin/distribution/commission/export",method:"get",params:t,responseType:"blob"})}function l(t){return i({url:"/admin/distribution/withdrawal/getList",method:"get",params:t})}function h(t){return i({url:"/admin/distribution/withdrawal/getDetail",method:"get",params:{id:t}})}function p(t){return i({url:"/admin/distribution/withdrawal/approve",method:"post",data:t})}function g(t){return i({url:"/admin/distribution/withdrawal/reject",method:"post",data:t})}function c(t){return i({url:"/admin/distribution/withdrawal/complete",method:"post",data:t})}function b(t){return i({url:"/admin/distribution/withdrawal/export",method:"get",params:t,responseType:"blob"})}export{a,d as b,n as c,o as d,m as e,r as f,u as g,s as h,l as i,h as j,p as k,c as l,b as m,g as r};
|
||||
import{O as i}from"./index-CIT-S3uf.js";function n(t){return i({url:"/admin/distribution/inviteCode/getList",method:"get",params:t})}function o(t){return i({url:"/admin/distribution/inviteCode/generate",method:"post",data:t})}function r(t){return i({url:"/admin/distribution/inviteCode/assign",method:"post",data:t})}function s(t){return i({url:"/admin/distribution/inviteCode/export",method:"get",params:t,responseType:"blob"})}function a(t){return i({url:"/admin/distribution/commission/getList",method:"get",params:t})}function d(t){return i({url:"/admin/distribution/commission/getDetail",method:"get",params:{id:t}})}function u(t){return i({url:"/admin/distribution/commission/getStatistics",method:"get",params:t})}function m(t){return i({url:"/admin/distribution/commission/export",method:"get",params:t,responseType:"blob"})}function l(t){return i({url:"/admin/distribution/withdrawal/getList",method:"get",params:t})}function h(t){return i({url:"/admin/distribution/withdrawal/getDetail",method:"get",params:{id:t}})}function p(t){return i({url:"/admin/distribution/withdrawal/approve",method:"post",data:t})}function g(t){return i({url:"/admin/distribution/withdrawal/reject",method:"post",data:t})}function c(t){return i({url:"/admin/distribution/withdrawal/complete",method:"post",data:t})}function b(t){return i({url:"/admin/distribution/withdrawal/export",method:"get",params:t,responseType:"blob"})}export{a,d as b,n as c,o as d,m as e,r as f,u as g,s as h,l as i,h as j,p as k,c as l,b as m,g as r};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as v,u as x,v as b,c as u,e as t,w as a,g as r,t as n,x as o,F as g,y as k,b as N,k as c,z as h,_ as y}from"./index-cO0XwfvV.js";const B={class:"page-container"},C=v({__name:"index",setup(I){const i=x(),s=b(()=>i.userInfo);return(S,_)=>{const l=r("el-descriptions-item"),p=r("el-tag"),m=r("el-descriptions"),f=r("el-card");return c(),u("div",B,[t(f,null,{header:a(()=>[..._[0]||(_[0]=[N("span",null,"个人中心",-1)])]),default:a(()=>[t(m,{column:2,border:""},{default:a(()=>[t(l,{label:"用户名"},{default:a(()=>{var e;return[n(o((e=s.value)==null?void 0:e.username),1)]}),_:1}),t(l,{label:"姓名"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.realName)||"-"),1)]}),_:1}),t(l,{label:"手机号"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.phone)||"-"),1)]}),_:1}),t(l,{label:"邮箱"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.email)||"-"),1)]}),_:1}),t(l,{label:"部门"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.departmentName)||"-"),1)]}),_:1}),t(l,{label:"角色"},{default:a(()=>{var e;return[(c(!0),u(g,null,k((e=s.value)==null?void 0:e.roles,d=>(c(),h(p,{key:d,size:"small",style:{"margin-right":"4px"}},{default:a(()=>[n(o(d),1)]),_:2},1024))),128))]}),_:1})]),_:1})]),_:1})])}}}),w=y(C,[["__scopeId","data-v-e4ec3187"]]);export{w as default};
|
||||
import{d as v,u as x,v as b,c as u,e as t,w as a,g as r,t as n,x as o,F as g,y as k,b as N,k as c,z as h,_ as y}from"./index-CIT-S3uf.js";const B={class:"page-container"},C=v({__name:"index",setup(I){const i=x(),s=b(()=>i.userInfo);return(S,_)=>{const l=r("el-descriptions-item"),p=r("el-tag"),m=r("el-descriptions"),f=r("el-card");return c(),u("div",B,[t(f,null,{header:a(()=>[..._[0]||(_[0]=[N("span",null,"个人中心",-1)])]),default:a(()=>[t(m,{column:2,border:""},{default:a(()=>[t(l,{label:"用户名"},{default:a(()=>{var e;return[n(o((e=s.value)==null?void 0:e.username),1)]}),_:1}),t(l,{label:"姓名"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.realName)||"-"),1)]}),_:1}),t(l,{label:"手机号"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.phone)||"-"),1)]}),_:1}),t(l,{label:"邮箱"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.email)||"-"),1)]}),_:1}),t(l,{label:"部门"},{default:a(()=>{var e;return[n(o(((e=s.value)==null?void 0:e.departmentName)||"-"),1)]}),_:1}),t(l,{label:"角色"},{default:a(()=>{var e;return[(c(!0),u(g,null,k((e=s.value)==null?void 0:e.roles,d=>(c(),h(p,{key:d,size:"small",style:{"margin-right":"4px"}},{default:a(()=>[n(o(d),1)]),_:2},1024))),128))]}),_:1})]),_:1})]),_:1})])}}}),w=y(C,[["__scopeId","data-v-e4ec3187"]]);export{w as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
.report-page-config-container[data-v-5a738e99]{padding:0}.page-header[data-v-5a738e99]{margin-bottom:16px}.header-content[data-v-5a738e99]{display:flex;justify-content:space-between;align-items:center}.header-left[data-v-5a738e99]{display:flex;align-items:baseline;gap:16px}.page-title[data-v-5a738e99]{margin:0;font-size:20px;font-weight:600;color:var(--text-primary, #303133)}.page-description[data-v-5a738e99]{font-size:14px;color:var(--text-secondary, #909399)}.search-card[data-v-5a738e99]{margin-bottom:16px}.search-card[data-v-5a738e99] .el-card__body{padding-bottom:2px}.table-card[data-v-5a738e99]{min-height:400px}.pagination-wrapper[data-v-5a738e99]{display:flex;justify-content:flex-end;margin-top:16px}.sort-buttons[data-v-5a738e99]{display:flex;flex-direction:column;align-items:center;gap:2px}.sort-buttons .el-button[data-v-5a738e99]{padding:2px}[data-v-5a738e99] .el-table th.el-table__cell{background-color:var(--bg-light, #f5f7fa);font-weight:500}[data-v-5a738e99] .el-dialog__body{padding-top:20px}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as P,r as w,a as b,c as v,e as s,w as a,g as d,t as x,b as V,A as y,E as i,k as h,_ as k}from"./index-cO0XwfvV.js";const C={class:"page-container"},E=P({__name:"index",setup(q){const u=w(),n=w(!1),o=b({oldPassword:"",newPassword:"",confirmPassword:""}),p={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"},{min:6,max:20,message:"密码长度在 6 到 20 个字符",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,max:20,message:"密码长度在 6 到 20 个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请再次输入新密码",trigger:"blur"},{validator:(m,e,r)=>{e!==o.newPassword?r(new Error("两次输入密码不一致")):r()},trigger:"blur"}]},f=async()=>{var e;if(await((e=u.value)==null?void 0:e.validate())){n.value=!0;try{await y({oldPassword:o.oldPassword,newPassword:o.newPassword}),i.success("密码修改成功"),o.oldPassword="",o.newPassword="",o.confirmPassword=""}catch(r){i.error(r.message||"修改失败")}finally{n.value=!1}}};return(m,e)=>{const r=d("el-input"),t=d("el-form-item"),c=d("el-button"),_=d("el-form"),g=d("el-card");return h(),v("div",C,[s(g,null,{header:a(()=>[...e[3]||(e[3]=[V("span",null,"修改密码",-1)])]),default:a(()=>[s(_,{ref_key:"formRef",ref:u,model:o,rules:p,"label-width":"100px",style:{"max-width":"400px"}},{default:a(()=>[s(t,{label:"原密码",prop:"oldPassword"},{default:a(()=>[s(r,{modelValue:o.oldPassword,"onUpdate:modelValue":e[0]||(e[0]=l=>o.oldPassword=l),type:"password",placeholder:"请输入原密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,{label:"新密码",prop:"newPassword"},{default:a(()=>[s(r,{modelValue:o.newPassword,"onUpdate:modelValue":e[1]||(e[1]=l=>o.newPassword=l),type:"password",placeholder:"请输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,{label:"确认密码",prop:"confirmPassword"},{default:a(()=>[s(r,{modelValue:o.confirmPassword,"onUpdate:modelValue":e[2]||(e[2]=l=>o.confirmPassword=l),type:"password",placeholder:"请再次输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,null,{default:a(()=>[s(c,{type:"primary",onClick:f,loading:n.value},{default:a(()=>[...e[4]||(e[4]=[x(" 确认修改 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})])}}}),N=k(E,[["__scopeId","data-v-928c0ade"]]);export{N as default};
|
||||
import{d as P,r as w,a as b,c as v,e as s,w as a,g as d,t as x,b as V,A as y,E as i,k as h,_ as k}from"./index-CIT-S3uf.js";const C={class:"page-container"},E=P({__name:"index",setup(q){const u=w(),n=w(!1),o=b({oldPassword:"",newPassword:"",confirmPassword:""}),p={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"},{min:6,max:20,message:"密码长度在 6 到 20 个字符",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,max:20,message:"密码长度在 6 到 20 个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请再次输入新密码",trigger:"blur"},{validator:(m,e,r)=>{e!==o.newPassword?r(new Error("两次输入密码不一致")):r()},trigger:"blur"}]},f=async()=>{var e;if(await((e=u.value)==null?void 0:e.validate())){n.value=!0;try{await y({oldPassword:o.oldPassword,newPassword:o.newPassword}),i.success("密码修改成功"),o.oldPassword="",o.newPassword="",o.confirmPassword=""}catch(r){i.error(r.message||"修改失败")}finally{n.value=!1}}};return(m,e)=>{const r=d("el-input"),t=d("el-form-item"),c=d("el-button"),_=d("el-form"),g=d("el-card");return h(),v("div",C,[s(g,null,{header:a(()=>[...e[3]||(e[3]=[V("span",null,"修改密码",-1)])]),default:a(()=>[s(_,{ref_key:"formRef",ref:u,model:o,rules:p,"label-width":"100px",style:{"max-width":"400px"}},{default:a(()=>[s(t,{label:"原密码",prop:"oldPassword"},{default:a(()=>[s(r,{modelValue:o.oldPassword,"onUpdate:modelValue":e[0]||(e[0]=l=>o.oldPassword=l),type:"password",placeholder:"请输入原密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,{label:"新密码",prop:"newPassword"},{default:a(()=>[s(r,{modelValue:o.newPassword,"onUpdate:modelValue":e[1]||(e[1]=l=>o.newPassword=l),type:"password",placeholder:"请输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,{label:"确认密码",prop:"confirmPassword"},{default:a(()=>[s(r,{modelValue:o.confirmPassword,"onUpdate:modelValue":e[2]||(e[2]=l=>o.confirmPassword=l),type:"password",placeholder:"请再次输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),s(t,null,{default:a(()=>[s(c,{type:"primary",onClick:f,loading:n.value},{default:a(()=>[...e[4]||(e[4]=[x(" 确认修改 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})])}}}),N=k(E,[["__scopeId","data-v-928c0ade"]]);export{N as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import s from"./upload-Dd7mgrCo.js";import p from"./miniprogram-BavQVauT.js";import i from"./payment-DygCUOiy.js";import _ from"./user-Bzm47jDQ.js";import{d,r as c,g as r,c as f,k as u,e,w as a,_ as b}from"./index-cO0XwfvV.js";import"./config-72hJ2Twl.js";const g={class:"config-container"},C=d({__name:"index",setup(v){const t=c("miniprogram");return(x,n)=>{const o=r("el-tab-pane"),l=r("el-tabs");return u(),f("div",g,[e(l,{modelValue:t.value,"onUpdate:modelValue":n[0]||(n[0]=m=>t.value=m),type:"border-card"},{default:a(()=>[e(o,{label:"小程序配置",name:"miniprogram"},{default:a(()=>[e(p)]),_:1}),e(o,{label:"支付配置",name:"payment"},{default:a(()=>[e(i)]),_:1}),e(o,{label:"上传配置",name:"upload"},{default:a(()=>[e(s)]),_:1}),e(o,{label:"用户配置",name:"user"},{default:a(()=>[e(_)]),_:1})]),_:1},8,["modelValue"])])}}}),h=b(C,[["__scopeId","data-v-1c246f87"]]);export{h as default};
|
||||
import s from"./upload-DZwrV5XI.js";import p from"./miniprogram-BVUgdskI.js";import i from"./payment-73HGuqwu.js";import _ from"./user-nAVm2dIq.js";import{d,r as c,g as r,c as f,k as u,e,w as a,_ as b}from"./index-CIT-S3uf.js";import"./config-CkLmixH4.js";const g={class:"config-container"},C=d({__name:"index",setup(v){const t=c("miniprogram");return(x,n)=>{const o=r("el-tab-pane"),l=r("el-tabs");return u(),f("div",g,[e(l,{modelValue:t.value,"onUpdate:modelValue":n[0]||(n[0]=m=>t.value=m),type:"border-card"},{default:a(()=>[e(o,{label:"小程序配置",name:"miniprogram"},{default:a(()=>[e(p)]),_:1}),e(o,{label:"支付配置",name:"payment"},{default:a(()=>[e(i)]),_:1}),e(o,{label:"上传配置",name:"upload"},{default:a(()=>[e(s)]),_:1}),e(o,{label:"用户配置",name:"user"},{default:a(()=>[e(_)]),_:1})]),_:1},8,["modelValue"])])}}}),h=b(C,[["__scopeId","data-v-1c246f87"]]);export{h as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
var a_=Object.defineProperty;var o_=(r,t,e)=>t in r?a_(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var iv=(r,t,e)=>o_(r,typeof t!="symbol"?t+"":t,e);import{d as ig,a2 as pu,a3 as _o,a4 as s_,v as Tr,a5 as So,a6 as bo,a7 as ng,o as Ff,a8 as l_,a9 as gu,$ as u_,aa as Us,ab as f_,ac as h_,ad as v_,O as zf,u as c_,r as d_,a as p_,g as Ae,B as g_,c as Ys,k as Le,z as Gr,G as m_,e as O,w as H,t as ge,C as hr,b as Z,l as Tt,m as nv,x as Ie,ae as av,af as y_,ag as ov,ah as __,ai as S_,aj as sv,ak as lv,al as b_,T as w_,R as x_,E as Xs,_ as T_}from"./index-cO0XwfvV.js";/*! *****************************************************************************
|
||||
var a_=Object.defineProperty;var o_=(r,t,e)=>t in r?a_(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var iv=(r,t,e)=>o_(r,typeof t!="symbol"?t+"":t,e);import{d as ig,a2 as pu,a3 as _o,a4 as s_,v as Tr,a5 as So,a6 as bo,a7 as ng,o as Ff,a8 as l_,a9 as gu,$ as u_,aa as Us,ab as f_,ac as h_,ad as v_,O as zf,u as c_,r as d_,a as p_,g as Ae,B as g_,c as Ys,k as Le,z as Gr,G as m_,e as O,w as H,t as ge,C as hr,b as Z,l as Tt,m as nv,x as Ie,ae as av,af as y_,ag as ov,ah as __,ai as S_,aj as sv,ak as lv,al as b_,V as w_,R as x_,E as Xs,_ as T_}from"./index-CIT-S3uf.js";/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as R,u as z,r as d,a as U,o as B,c as _,b as l,e as a,w as o,f as E,g as n,h as F,E as x,i as I,j as N,k as h,l as c,m as M,n as S,p as j,q as L,s as T,t as A,_ as D}from"./index-cO0XwfvV.js";const G={class:"login-container"},H={class:"login-box"},J={class:"captcha-container"},O=["src"],P={key:1,class:"captcha-loading"},Q=R({__name:"index",setup(W){const C=I(),V=N(),b=z(),u=d(),p=d(!1),m=d(""),v=d(""),s=U({username:"",password:"",captchaCode:""}),k={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码至少6个字符",trigger:"blur"}],captchaCode:[{required:!0,message:"请输入验证码",trigger:"blur"},{min:4,max:6,message:"验证码为4-6位字符",trigger:"blur"}]},f=async()=>{try{const t=await F();v.value=t.data.captchaKey,m.value=t.data.captchaImage}catch{x.error("获取验证码失败,请重试")}},y=async()=>{u.value&&await u.value.validate(async t=>{if(t){p.value=!0;try{await b.login({username:s.username,password:s.password,captchaKey:v.value,captchaCode:s.captchaCode}),x.success("登录成功");const e=V.query.redirect;C.push(e||"/")}catch{s.captchaCode="",await f()}finally{p.value=!1}}})};return B(()=>{f()}),(t,e)=>{const g=n("el-input"),i=n("el-form-item"),w=n("el-icon"),q=n("el-button"),K=n("el-form");return h(),_("div",G,[l("div",H,[e[4]||(e[4]=l("div",{class:"login-header"},[l("h1",null,"学业邑规划 后台管理系统")],-1)),a(K,{ref_key:"loginFormRef",ref:u,model:s,rules:k,class:"login-form",onKeyup:E(y,["enter"])},{default:o(()=>[a(i,{prop:"username"},{default:o(()=>[a(g,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=r=>s.username=r),placeholder:"请输入用户名","prefix-icon":c(M),size:"large"},null,8,["modelValue","prefix-icon"])]),_:1}),a(i,{prop:"password"},{default:o(()=>[a(g,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=r=>s.password=r),type:"password",placeholder:"请输入密码","prefix-icon":c(S),size:"large","show-password":""},null,8,["modelValue","prefix-icon"])]),_:1}),a(i,{prop:"captchaCode"},{default:o(()=>[l("div",J,[a(g,{modelValue:s.captchaCode,"onUpdate:modelValue":e[2]||(e[2]=r=>s.captchaCode=r),placeholder:"请输入验证码","prefix-icon":c(j),size:"large",class:"captcha-input"},null,8,["modelValue","prefix-icon"]),l("div",{class:"captcha-image-wrapper",onClick:f},[m.value?(h(),_("img",{key:0,src:m.value,alt:"验证码",class:"captcha-image",title:"点击刷新验证码"},null,8,O)):(h(),_("div",P,[a(w,{class:"is-loading"},{default:o(()=>[a(c(L))]),_:1})])),a(w,{class:"refresh-icon"},{default:o(()=>[a(c(T))]),_:1})])])]),_:1}),a(i,null,{default:o(()=>[a(q,{type:"primary",size:"large",loading:p.value,class:"login-btn",onClick:y},{default:o(()=>[...e[3]||(e[3]=[A(" 登 录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])])])}}}),Y=D(Q,[["__scopeId","data-v-d12e50e6"]]);export{Y as default};
|
||||
import{d as R,u as z,r as d,a as U,o as B,c as _,b as l,e as a,w as o,f as E,g as n,h as F,E as x,i as I,j as N,k as h,l as c,m as M,n as S,p as j,q as L,s as T,t as A,_ as D}from"./index-CIT-S3uf.js";const G={class:"login-container"},H={class:"login-box"},J={class:"captcha-container"},O=["src"],P={key:1,class:"captcha-loading"},Q=R({__name:"index",setup(W){const C=I(),V=N(),b=z(),u=d(),p=d(!1),m=d(""),v=d(""),s=U({username:"",password:"",captchaCode:""}),k={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码至少6个字符",trigger:"blur"}],captchaCode:[{required:!0,message:"请输入验证码",trigger:"blur"},{min:4,max:6,message:"验证码为4-6位字符",trigger:"blur"}]},f=async()=>{try{const t=await F();v.value=t.data.captchaKey,m.value=t.data.captchaImage}catch{x.error("获取验证码失败,请重试")}},y=async()=>{u.value&&await u.value.validate(async t=>{if(t){p.value=!0;try{await b.login({username:s.username,password:s.password,captchaKey:v.value,captchaCode:s.captchaCode}),x.success("登录成功");const e=V.query.redirect;C.push(e||"/")}catch{s.captchaCode="",await f()}finally{p.value=!1}}})};return B(()=>{f()}),(t,e)=>{const g=n("el-input"),i=n("el-form-item"),w=n("el-icon"),q=n("el-button"),K=n("el-form");return h(),_("div",G,[l("div",H,[e[4]||(e[4]=l("div",{class:"login-header"},[l("h1",null,"学业邑规划 后台管理系统")],-1)),a(K,{ref_key:"loginFormRef",ref:u,model:s,rules:k,class:"login-form",onKeyup:E(y,["enter"])},{default:o(()=>[a(i,{prop:"username"},{default:o(()=>[a(g,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=r=>s.username=r),placeholder:"请输入用户名","prefix-icon":c(M),size:"large"},null,8,["modelValue","prefix-icon"])]),_:1}),a(i,{prop:"password"},{default:o(()=>[a(g,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=r=>s.password=r),type:"password",placeholder:"请输入密码","prefix-icon":c(S),size:"large","show-password":""},null,8,["modelValue","prefix-icon"])]),_:1}),a(i,{prop:"captchaCode"},{default:o(()=>[l("div",J,[a(g,{modelValue:s.captchaCode,"onUpdate:modelValue":e[2]||(e[2]=r=>s.captchaCode=r),placeholder:"请输入验证码","prefix-icon":c(j),size:"large",class:"captcha-input"},null,8,["modelValue","prefix-icon"]),l("div",{class:"captcha-image-wrapper",onClick:f},[m.value?(h(),_("img",{key:0,src:m.value,alt:"验证码",class:"captcha-image",title:"点击刷新验证码"},null,8,O)):(h(),_("div",P,[a(w,{class:"is-loading"},{default:o(()=>[a(c(L))]),_:1})])),a(w,{class:"refresh-icon"},{default:o(()=>[a(c(T))]),_:1})])])]),_:1}),a(i,null,{default:o(()=>[a(q,{type:"primary",size:"large",loading:p.value,class:"login-btn",onClick:y},{default:o(()=>[...e[3]||(e[3]=[A(" 登 录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])])])}}}),Y=D(Q,[["__scopeId","data-v-d12e50e6"]]);export{Y as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{O as s}from"./index-cO0XwfvV.js";function r(){return s({url:"/admin/permissions",method:"get"})}function t(){return s({url:"/admin/permissions/by-module",method:"get"})}function o(e){return s({url:"/admin/permissions",method:"post",data:e})}function m(e,i){return s({url:`/admin/permissions/${e}`,method:"put",data:i})}function u(e){return s({url:`/admin/permissions/${e}`,method:"delete"})}export{r as a,o as c,u as d,t as g,m as u};
|
||||
import{O as s}from"./index-CIT-S3uf.js";function r(){return s({url:"/admin/permissions",method:"get"})}function t(){return s({url:"/admin/permissions/by-module",method:"get"})}function o(e){return s({url:"/admin/permissions",method:"post",data:e})}function m(e,i){return s({url:`/admin/permissions/${e}`,method:"put",data:i})}function u(e){return s({url:`/admin/permissions/${e}`,method:"delete"})}export{r as a,o as c,u as d,t as g,m as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as t}from"./index-cO0XwfvV.js";function a(n){return t({url:"/admin/planner/getList",method:"get",params:n})}function r(n){return t({url:"/admin/planner/create",method:"post",data:n})}function o(n){return t({url:"/admin/planner/update",method:"post",data:n})}function u(n){return t({url:"/admin/planner/delete",method:"post",data:{id:n}})}function i(n){return t({url:"/admin/planner/updateStatus",method:"post",data:n})}function d(n){return t({url:"/admin/planner/booking/getList",method:"get",params:n})}function l(n){return t({url:"/admin/planner/booking/getDetail",method:"get",params:{id:n}})}function s(n){return t({url:"/admin/planner/booking/updateStatus",method:"post",data:n})}function p(n){return t({url:"/admin/planner/booking/export",method:"get",params:n,responseType:"blob"})}export{d as a,l as b,o as c,r as d,p as e,i as f,a as g,u as h,s as u};
|
||||
import{O as t}from"./index-CIT-S3uf.js";function a(n){return t({url:"/admin/planner/getList",method:"get",params:n})}function r(n){return t({url:"/admin/planner/create",method:"post",data:n})}function o(n){return t({url:"/admin/planner/update",method:"post",data:n})}function u(n){return t({url:"/admin/planner/delete",method:"post",data:{id:n}})}function i(n){return t({url:"/admin/planner/updateStatus",method:"post",data:n})}function d(n){return t({url:"/admin/planner/booking/getList",method:"get",params:n})}function l(n){return t({url:"/admin/planner/booking/getDetail",method:"get",params:{id:n}})}function s(n){return t({url:"/admin/planner/booking/updateStatus",method:"post",data:n})}function p(n){return t({url:"/admin/planner/booking/export",method:"get",params:n,responseType:"blob"})}export{d as a,l as b,o as c,r as d,p as e,i as f,a as g,u as h,s as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{O as s}from"./index-cO0XwfvV.js";function r(e){return s({url:"/admin/roles",method:"get",params:e})}function t(){return s({url:"/admin/roles/all",method:"get"})}function u(e){return s({url:"/admin/roles",method:"post",data:e})}function l(e,n){return s({url:`/admin/roles/${e}`,method:"put",data:n})}function i(e){return s({url:`/admin/roles/${e}`,method:"delete"})}function m(e){return s({url:`/admin/roles/${e}/menus`,method:"get"})}function d(e){return s({url:`/admin/roles/${e.roleId}/menus`,method:"put",data:{menuIds:e.menuIds}})}function a(e){return s({url:`/admin/roles/${e}/permissions`,method:"get"})}function c(e){return s({url:`/admin/roles/${e.roleId}/permissions`,method:"put",data:{permissionCodes:e.permissionCodes}})}export{m as a,d as b,u as c,i as d,a as e,c as f,r as g,t as h,l as u};
|
||||
import{O as s}from"./index-CIT-S3uf.js";function r(e){return s({url:"/admin/roles",method:"get",params:e})}function t(){return s({url:"/admin/roles/all",method:"get"})}function u(e){return s({url:"/admin/roles",method:"post",data:e})}function l(e,n){return s({url:`/admin/roles/${e}`,method:"put",data:n})}function i(e){return s({url:`/admin/roles/${e}`,method:"delete"})}function m(e){return s({url:`/admin/roles/${e}/menus`,method:"get"})}function d(e){return s({url:`/admin/roles/${e.roleId}/menus`,method:"put",data:{menuIds:e.menuIds}})}function a(e){return s({url:`/admin/roles/${e}/permissions`,method:"get"})}function c(e){return s({url:`/admin/roles/${e.roleId}/permissions`,method:"put",data:{permissionCodes:e.permissionCodes}})}export{m as a,d as b,u as c,i as d,a as e,c as f,r as g,t as h,l as u};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{O as t}from"./index-cO0XwfvV.js";function u(e){return t({url:"/admin/user/getList",method:"get",params:e})}function s(e){return t({url:"/admin/user/getDetail",method:"get",params:{id:e}})}function a(e){return t({url:"/admin/user/updateStatus",method:"post",data:e})}function n(e){return t({url:"/admin/user/updateLevel",method:"post",data:e})}function o(e){return t({url:"/admin/user/export",method:"get",params:e,responseType:"blob"})}function d(e){return t({url:"/admin/user/delete",method:"post",data:{id:e}})}export{n as a,s as b,d,o as e,u as g,a as u};
|
||||
import{O as t}from"./index-CIT-S3uf.js";function u(e){return t({url:"/admin/user/getList",method:"get",params:e})}function s(e){return t({url:"/admin/user/getDetail",method:"get",params:{id:e}})}function a(e){return t({url:"/admin/user/updateStatus",method:"post",data:e})}function n(e){return t({url:"/admin/user/updateLevel",method:"post",data:e})}function o(e){return t({url:"/admin/user/export",method:"get",params:e,responseType:"blob"})}function d(e){return t({url:"/admin/user/delete",method:"post",data:{id:e}})}export{n as a,s as b,d,o as e,u as g,a as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as C,a as I,v as k,o as B,g as s,B as N,c as E,k as v,e as t,C as M,w as l,b as n,z as S,t as r,V as z,E as u,_ as L}from"./index-cO0XwfvV.js";import{e as R,f as T}from"./config-72hJ2Twl.js";const j={class:"user-config-container"},q={class:"avatar-config"},A={class:"form-actions"},F=C({__name:"user",setup(G){const a=I({loading:!1,saving:!1,formData:{uid_type:"2",uid_length:"6",default_nickname_prefix:"用户",default_avatar:""}}),m=k({get:()=>parseInt(a.formData.uid_length||"6")||6,set:o=>{a.formData.uid_length=String(o)}});async function p(){a.loading=!0;try{const o=await R();o.code===0&&o.data&&(a.formData=o.data)}catch(o){console.error("加载用户配置失败:",o),u.error("加载配置失败")}finally{a.loading=!1}}async function D(){a.saving=!0;try{const o=await T(a.formData);o.code===0?u.success("保存成功"):u.error(o.message||"保存失败")}catch(o){console.error("保存用户配置失败:",o),u.error("保存失败")}finally{a.saving=!1}}function V(){p()}return B(()=>{p()}),(o,e)=>{const _=s("el-card"),f=s("el-radio"),b=s("el-radio-group"),d=s("el-form-item"),U=s("el-input-number"),c=s("el-divider"),x=s("el-input"),y=s("el-form"),g=s("el-button"),w=N("loading");return v(),E("div",j,[t(_,{class:"page-header"},{default:l(()=>[...e[4]||(e[4]=[n("div",{class:"header-content"},[n("h2",{class:"page-title"},"用户配置"),n("span",{class:"page-description"},"配置新用户注册时的UID生成规则、默认昵称前缀和默认头像")],-1)])]),_:1}),M((v(),S(_,{class:"config-form-card"},{default:l(()=>[t(y,{"label-width":"140px","label-position":"right"},{default:l(()=>[e[10]||(e[10]=n("div",{class:"section-title"},"UID 配置",-1)),t(d,{label:"UID类型"},{default:l(()=>[t(b,{modelValue:a.formData.uid_type,"onUpdate:modelValue":e[0]||(e[0]=i=>a.formData.uid_type=i)},{default:l(()=>[t(f,{value:"1"},{default:l(()=>[...e[5]||(e[5]=[r("真实ID",-1)])]),_:1}),t(f,{value:"2"},{default:l(()=>[...e[6]||(e[6]=[r("数字ID",-1)])]),_:1}),t(f,{value:"3"},{default:l(()=>[...e[7]||(e[7]=[r("随机字符和数字",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"UID长度"},{default:l(()=>[t(U,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=i=>m.value=i),modelModifiers:{number:!0},min:4,max:12,"controls-position":"right"},null,8,["modelValue"]),e[8]||(e[8]=n("div",{class:"form-item-tip"},"新用户UID的位数,建议6位",-1))]),_:1}),t(c),e[11]||(e[11]=n("div",{class:"section-title"},"默认昵称",-1)),t(d,{label:"昵称前缀"},{default:l(()=>[t(x,{modelValue:a.formData.default_nickname_prefix,"onUpdate:modelValue":e[2]||(e[2]=i=>a.formData.default_nickname_prefix=i),placeholder:"请输入默认昵称前缀",maxlength:"10","show-word-limit":"",clearable:"",style:{width:"300px"}},null,8,["modelValue"]),e[9]||(e[9]=n("div",{class:"form-item-tip"},'新用户注册时的昵称前缀,系统会自动拼接6位随机数字,如"用户123456"',-1))]),_:1}),t(c),e[12]||(e[12]=n("div",{class:"section-title"},"默认头像",-1)),t(d,{label:"默认头像"},{default:l(()=>[n("div",q,[t(z,{modelValue:a.formData.default_avatar,"onUpdate:modelValue":e[3]||(e[3]=i=>a.formData.default_avatar=i),placeholder:"点击上传默认头像","show-url-input":!1,tip:"上传图片作为所有新用户的默认头像,不上传则系统自动生成唯一头像"},null,8,["modelValue"])])]),_:1})]),_:1}),n("div",A,[t(g,{type:"primary",loading:a.saving,onClick:D},{default:l(()=>[...e[13]||(e[13]=[r("保存配置",-1)])]),_:1},8,["loading"]),t(g,{onClick:V},{default:l(()=>[...e[14]||(e[14]=[r("重置",-1)])]),_:1})])]),_:1})),[[w,a.loading]])])}}}),K=L(F,[["__scopeId","data-v-5ef730fd"]]);export{K as default};
|
||||
import{d as C,a as I,v as k,o as B,g as s,B as N,c as E,k as v,e as t,C as M,w as l,b as n,z as S,t as r,X as z,E as u,_ as L}from"./index-CIT-S3uf.js";import{e as R,f as T}from"./config-CkLmixH4.js";const X={class:"user-config-container"},j={class:"avatar-config"},q={class:"form-actions"},A=C({__name:"user",setup(F){const a=I({loading:!1,saving:!1,formData:{uid_type:"2",uid_length:"6",default_nickname_prefix:"用户",default_avatar:""}}),m=k({get:()=>parseInt(a.formData.uid_length||"6")||6,set:o=>{a.formData.uid_length=String(o)}});async function p(){a.loading=!0;try{const o=await R();o.code===0&&o.data&&(a.formData=o.data)}catch(o){console.error("加载用户配置失败:",o),u.error("加载配置失败")}finally{a.loading=!1}}async function D(){a.saving=!0;try{const o=await T(a.formData);o.code===0?u.success("保存成功"):u.error(o.message||"保存失败")}catch(o){console.error("保存用户配置失败:",o),u.error("保存失败")}finally{a.saving=!1}}function V(){p()}return B(()=>{p()}),(o,e)=>{const _=s("el-card"),f=s("el-radio"),b=s("el-radio-group"),d=s("el-form-item"),U=s("el-input-number"),c=s("el-divider"),x=s("el-input"),y=s("el-form"),g=s("el-button"),w=N("loading");return v(),E("div",X,[t(_,{class:"page-header"},{default:l(()=>[...e[4]||(e[4]=[n("div",{class:"header-content"},[n("h2",{class:"page-title"},"用户配置"),n("span",{class:"page-description"},"配置新用户注册时的UID生成规则、默认昵称前缀和默认头像")],-1)])]),_:1}),M((v(),S(_,{class:"config-form-card"},{default:l(()=>[t(y,{"label-width":"140px","label-position":"right"},{default:l(()=>[e[10]||(e[10]=n("div",{class:"section-title"},"UID 配置",-1)),t(d,{label:"UID类型"},{default:l(()=>[t(b,{modelValue:a.formData.uid_type,"onUpdate:modelValue":e[0]||(e[0]=i=>a.formData.uid_type=i)},{default:l(()=>[t(f,{value:"1"},{default:l(()=>[...e[5]||(e[5]=[r("真实ID",-1)])]),_:1}),t(f,{value:"2"},{default:l(()=>[...e[6]||(e[6]=[r("数字ID",-1)])]),_:1}),t(f,{value:"3"},{default:l(()=>[...e[7]||(e[7]=[r("随机字符和数字",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"UID长度"},{default:l(()=>[t(U,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=i=>m.value=i),modelModifiers:{number:!0},min:4,max:12,"controls-position":"right"},null,8,["modelValue"]),e[8]||(e[8]=n("div",{class:"form-item-tip"},"新用户UID的位数,建议6位",-1))]),_:1}),t(c),e[11]||(e[11]=n("div",{class:"section-title"},"默认昵称",-1)),t(d,{label:"昵称前缀"},{default:l(()=>[t(x,{modelValue:a.formData.default_nickname_prefix,"onUpdate:modelValue":e[2]||(e[2]=i=>a.formData.default_nickname_prefix=i),placeholder:"请输入默认昵称前缀",maxlength:"10","show-word-limit":"",clearable:"",style:{width:"300px"}},null,8,["modelValue"]),e[9]||(e[9]=n("div",{class:"form-item-tip"},'新用户注册时的昵称前缀,系统会自动拼接6位随机数字,如"用户123456"',-1))]),_:1}),t(c),e[12]||(e[12]=n("div",{class:"section-title"},"默认头像",-1)),t(d,{label:"默认头像"},{default:l(()=>[n("div",j,[t(z,{modelValue:a.formData.default_avatar,"onUpdate:modelValue":e[3]||(e[3]=i=>a.formData.default_avatar=i),placeholder:"点击上传默认头像","show-url-input":!1,tip:"上传图片作为所有新用户的默认头像,不上传则系统自动生成唯一头像"},null,8,["modelValue"])])]),_:1})]),_:1}),n("div",q,[t(g,{type:"primary",loading:a.saving,onClick:D},{default:l(()=>[...e[13]||(e[13]=[r("保存配置",-1)])]),_:1},8,["loading"]),t(g,{onClick:V},{default:l(()=>[...e[14]||(e[14]=[r("重置",-1)])]),_:1})])]),_:1})),[[w,a.loading]])])}}}),J=L(A,[["__scopeId","data-v-5ef730fd"]]);export{J as default};
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>学业邑规划 - 后台管理系统</title>
|
||||
<script type="module" crossorigin src="/assets/index-cO0XwfvV.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-CIT-S3uf.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DzyxRPPz.css">
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user