|
|
@@ -1,10 +1,42 @@
|
|
|
<template>
|
|
|
- <div class="tag-system-container">
|
|
|
+ <div class="tagging-logs-container">
|
|
|
<!-- 顶部搜索栏 -->
|
|
|
<div class="search-bar">
|
|
|
<el-form :inline="true" :model="searchForm" class="search-form">
|
|
|
- <el-form-item label="标签体系名称:">
|
|
|
- <el-input v-model="searchForm.name" placeholder="请输入" style="width: 300px;"></el-input>
|
|
|
+ <el-form-item label="请求ID:">
|
|
|
+ <el-input v-model="searchForm.requestId" placeholder="请输入" style="width: 200px;"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="贷款申请编号:">
|
|
|
+ <el-input v-model="searchForm.loanApplyNo" placeholder="请输入" style="width: 200px;"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同编号:">
|
|
|
+ <el-input v-model="searchForm.contractNo" placeholder="请输入" style="width: 200px;"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="调用时间:">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="searchForm.callTime"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ style="width: 240px;"
|
|
|
+ ></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="接口:">
|
|
|
+ <el-select v-model="searchForm.apiType" placeholder="全部" style="width: 150px;">
|
|
|
+ <el-option label="全部" value=""></el-option>
|
|
|
+ <el-option label="getCustomerTags" value="getCustomerTags"></el-option>
|
|
|
+ <el-option label="queryCustomerTags" value="queryCustomerTags"></el-option>
|
|
|
+ <el-option label="feedbackTagsResult" value="feedbackTagsResult"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="状态:">
|
|
|
+ <el-select v-model="searchForm.status" placeholder="全部" style="width: 150px;">
|
|
|
+ <el-option label="全部" value=""></el-option>
|
|
|
+ <el-option label="成功" value="success"></el-option>
|
|
|
+ <el-option label="失败" value="failed"></el-option>
|
|
|
+ <el-option label="响应中" value="pending"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click="handleSearch">查询</el-button>
|
|
|
@@ -12,212 +44,254 @@
|
|
|
<el-form-item>
|
|
|
<el-button @click="handleReset">重置</el-button>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click="handleRefresh">刷新</el-button>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 标签体系卡片网格 -->
|
|
|
- <div class="tag-system-grid">
|
|
|
- <!-- 新建标签体系卡片 -->
|
|
|
- <div class="tag-system-card create-card" @click="handleCreateTagSystem">
|
|
|
- <div class="create-icon">
|
|
|
- <i class="el-icon-plus"></i>
|
|
|
- </div>
|
|
|
- <div class="create-title">新建标签体系</div>
|
|
|
- <div class="create-desc">创建新的标签分类体系,用于业务的标签管理</div>
|
|
|
+ <!-- 表格和分页容器 -->
|
|
|
+ <div class="table-and-pagination-container">
|
|
|
+ <!-- 数据表格 -->
|
|
|
+ <div class="table-container">
|
|
|
+ <el-table :data="logs" style="width: 100%">
|
|
|
+ <el-table-column prop="requestId" label="请求ID" min-width="180"></el-table-column>
|
|
|
+ <el-table-column prop="loanApplyNo" label="贷款申请编号" min-width="150"></el-table-column>
|
|
|
+ <el-table-column prop="contractNo" label="合同编号" min-width="150"></el-table-column>
|
|
|
+ <el-table-column prop="apiName" label="接口" min-width="150"></el-table-column>
|
|
|
+ <el-table-column prop="callTime" label="调用时间" min-width="180"></el-table-column>
|
|
|
+ <el-table-column prop="status" label="状态" min-width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag :type="getStatusType(scope.row.status)">{{ scope.row.status }}</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="action" label="操作" min-width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" @click="handleViewDetail(scope.row)">查看详情</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 标签体系卡片 -->
|
|
|
- <div v-for="system in tagSystems" :key="system.id" class="tag-system-card">
|
|
|
- <div class="card-header">
|
|
|
- <div class="system-name">{{ system.name }}</div>
|
|
|
- <div class="card-actions">
|
|
|
- <el-button type="text" icon="el-icon-edit" @click.stop="handleEditTagSystem(system)"></el-button>
|
|
|
- <el-dropdown trigger="click" @command="(command) => handleDropdownCommand(command, system)">
|
|
|
- <el-button type="text" icon="el-icon-more"></el-button>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item v-if="system.status === 'enabled'" command="disable">停用</el-dropdown-item>
|
|
|
- <el-dropdown-item v-else command="enable">启用</el-dropdown-item>
|
|
|
- <el-dropdown-item command="delete" divided>删除</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="system-status">
|
|
|
- <el-tag :type="system.status === 'enabled' ? 'success' : 'info'">
|
|
|
- {{ system.status === 'enabled' ? '已启用' : '未启用' }}
|
|
|
- </el-tag>
|
|
|
- </div>
|
|
|
- <div class="system-desc">{{ system.description }}</div>
|
|
|
- <div class="system-meta">
|
|
|
- <span class="tag-count">标签数量:{{ system.tagCount }}</span>
|
|
|
- <span class="create-date">{{ system.createDate }}</span>
|
|
|
- </div>
|
|
|
- <div class="card-footer">
|
|
|
- <el-button type="text" @click.stop="handleViewTags(system)">
|
|
|
- <i class="el-icon-menu"></i> 查看标签列表
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
+ <!-- 分页控件 -->
|
|
|
+ <div class="pagination-container">
|
|
|
+ <el-pagination
|
|
|
+ :current-page="currentPage"
|
|
|
+ :page-size="pageSize"
|
|
|
+ :page-sizes="[10, 20, 50]"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="totalCount"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ ></el-pagination>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 分页控件 -->
|
|
|
- <div class="pagination-container">
|
|
|
- <div class="total-count">共 {{ totalCount }} 条数据</div>
|
|
|
- <el-pagination
|
|
|
- :current-page="currentPage"
|
|
|
- :page-size="pageSize"
|
|
|
- :page-sizes="[10, 20, 50]"
|
|
|
- layout="prev, pager, next"
|
|
|
- :total="totalCount"
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- ></el-pagination>
|
|
|
- </div>
|
|
|
+ <!-- 日志详情抽屉 -->
|
|
|
+ <LogDetailDrawer
|
|
|
+ :visible="drawerVisible"
|
|
|
+ :log-detail="currentLogDetail"
|
|
|
+ @update:visible="drawerVisible = $event"
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import LogDetailDrawer from './components/LogDetailDrawer.vue'
|
|
|
+
|
|
|
export default {
|
|
|
- name: 'TagSystemManagement',
|
|
|
+ name: 'TaggingLogs',
|
|
|
+ components: {
|
|
|
+ LogDetailDrawer
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
// 搜索表单
|
|
|
searchForm: {
|
|
|
- name: ''
|
|
|
+ requestId: '',
|
|
|
+ loanApplyNo: '',
|
|
|
+ contractNo: '',
|
|
|
+ callTime: '',
|
|
|
+ apiType: '',
|
|
|
+ status: ''
|
|
|
},
|
|
|
|
|
|
- // 标签体系列表
|
|
|
- tagSystems: [
|
|
|
+ // 日志列表
|
|
|
+ logs: [
|
|
|
+ {
|
|
|
+ requestId: 'API-20260203-87654',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ requestId: 'API-20260203-87653',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'queryCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
+ },
|
|
|
{
|
|
|
- id: 1,
|
|
|
- name: '海洋经济',
|
|
|
- status: 'enabled',
|
|
|
- description: '涵盖海洋渔业、海洋装备、海洋旅游等海洋经济相关产业的标签分类体系',
|
|
|
- tagCount: 53,
|
|
|
- createDate: '2026-02-01'
|
|
|
+ requestId: 'API-20260203-87652',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'feedbackTagsResult',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '失败'
|
|
|
},
|
|
|
{
|
|
|
- id: 2,
|
|
|
- name: '绿色金融',
|
|
|
- status: 'disabled',
|
|
|
- description: '包含绿色能源、节能环保、清洁生产等绿色产业相关的标签分类体系',
|
|
|
- tagCount: 53,
|
|
|
- createDate: '2026-02-01'
|
|
|
+ requestId: 'API-20260203-87651',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '响应中'
|
|
|
},
|
|
|
{
|
|
|
- id: 3,
|
|
|
- name: '养老产业',
|
|
|
- status: 'enabled',
|
|
|
- description: '涵盖养老服务、健康管理、老年用品等养老产业相关的标签分类体系',
|
|
|
- tagCount: 53,
|
|
|
- createDate: '2026-02-01'
|
|
|
+ requestId: 'API-20260203-87650',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
},
|
|
|
{
|
|
|
- id: 4,
|
|
|
- name: '科技创新',
|
|
|
- status: 'enabled',
|
|
|
- description: '包含人工智能、新一代信息技术、生物医药等科技创新领域的标签分类体系',
|
|
|
- tagCount: 53,
|
|
|
- createDate: '2026-02-01'
|
|
|
+ requestId: 'API-20260203-87649',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
},
|
|
|
{
|
|
|
- id: 5,
|
|
|
- name: '乡村振兴',
|
|
|
- status: 'enabled',
|
|
|
- description: '暂无描述',
|
|
|
- tagCount: 53,
|
|
|
- createDate: '2026-02-01'
|
|
|
+ requestId: 'API-20260203-87648',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ requestId: 'API-20260203-87647',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ requestId: 'API-20260203-87646',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ requestId: 'API-20260203-87645',
|
|
|
+ loanApplyNo: 'DKSQ20260203001',
|
|
|
+ contractNo: 'CUST20260203001',
|
|
|
+ apiName: 'getCustomerTags',
|
|
|
+ callTime: '2023-01-01 11:11:11',
|
|
|
+ status: '成功'
|
|
|
}
|
|
|
],
|
|
|
|
|
|
// 分页数据
|
|
|
- totalCount: 15,
|
|
|
+ totalCount: 120,
|
|
|
currentPage: 1,
|
|
|
- pageSize: 10
|
|
|
+ pageSize: 10,
|
|
|
+
|
|
|
+ // 抽屉相关
|
|
|
+ drawerVisible: false,
|
|
|
+ currentLogDetail: {}
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- // 搜索标签体系
|
|
|
+ // 根据状态获取标签类型
|
|
|
+ getStatusType(status) {
|
|
|
+ switch (status) {
|
|
|
+ case '成功':
|
|
|
+ return 'success'
|
|
|
+ case '失败':
|
|
|
+ return 'danger'
|
|
|
+ case '响应中':
|
|
|
+ return 'warning'
|
|
|
+ default:
|
|
|
+ return ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 搜索日志
|
|
|
handleSearch() {
|
|
|
- console.log('搜索标签体系:', this.searchForm.name)
|
|
|
+ console.log('搜索日志:', this.searchForm)
|
|
|
// 这里可以调用后端接口进行搜索
|
|
|
this.$message.success('搜索成功')
|
|
|
},
|
|
|
|
|
|
// 重置搜索
|
|
|
handleReset() {
|
|
|
- this.searchForm.name = ''
|
|
|
+ this.searchForm = {
|
|
|
+ requestId: '',
|
|
|
+ loanApplyNo: '',
|
|
|
+ contractNo: '',
|
|
|
+ callTime: '',
|
|
|
+ apiType: '',
|
|
|
+ status: ''
|
|
|
+ }
|
|
|
console.log('重置搜索')
|
|
|
},
|
|
|
|
|
|
- // 创建标签体系
|
|
|
- handleCreateTagSystem() {
|
|
|
- console.log('创建标签体系')
|
|
|
- this.$message.success('打开创建标签体系对话框')
|
|
|
- // 这里可以打开创建标签体系的对话框
|
|
|
- },
|
|
|
-
|
|
|
- // 编辑标签体系
|
|
|
- handleEditTagSystem(system) {
|
|
|
- console.log('编辑标签体系:', system.name)
|
|
|
- // 使用Vue Router跳转到编辑页面,并携带参数
|
|
|
- this.$router.push({
|
|
|
- path: '/home/tag-system-edit',
|
|
|
- query: { id: system.id }
|
|
|
- })
|
|
|
+ // 刷新日志
|
|
|
+ handleRefresh() {
|
|
|
+ console.log('刷新日志')
|
|
|
+ this.$message.success('刷新成功')
|
|
|
+ // 这里可以重新加载数据
|
|
|
},
|
|
|
|
|
|
- // 下拉菜单命令处理
|
|
|
- handleDropdownCommand(command, system) {
|
|
|
- switch (command) {
|
|
|
- case 'enable':
|
|
|
- this.handleEnableTagSystem(system)
|
|
|
- break
|
|
|
- case 'disable':
|
|
|
- this.handleDisableTagSystem(system)
|
|
|
- break
|
|
|
- case 'delete':
|
|
|
- this.handleDeleteTagSystem(system)
|
|
|
- break
|
|
|
- default:
|
|
|
- break
|
|
|
+ // 查看详情
|
|
|
+ handleViewDetail(row) {
|
|
|
+ console.log('查看详情:', row)
|
|
|
+ // 模拟加载日志详情数据
|
|
|
+ this.currentLogDetail = {
|
|
|
+ callTime: '2026-02-03 15:30:45',
|
|
|
+ responseTime: '124ms',
|
|
|
+ requestId: row.requestId,
|
|
|
+ apiName: row.apiName,
|
|
|
+ status: row.status,
|
|
|
+ clientIp: '192.168.1.45',
|
|
|
+ requestMethod: 'POST',
|
|
|
+ requestUrl: '/api/user/login',
|
|
|
+ requestHeaders: {
|
|
|
+ 'Content-Type': 'application/json',
|
|
|
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
|
|
+ },
|
|
|
+ requestBody: {
|
|
|
+ username: 'testuser',
|
|
|
+ password: '********'
|
|
|
+ },
|
|
|
+ responseStatus: 'HTTP 200',
|
|
|
+ responseHeaders: {
|
|
|
+ 'Content-Type': 'application/json',
|
|
|
+ 'X-Request-Id': row.requestId
|
|
|
+ },
|
|
|
+ responseBody: {
|
|
|
+ code: 0,
|
|
|
+ message: '登录成功',
|
|
|
+ data: {
|
|
|
+ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
|
|
|
+ userInfo: {
|
|
|
+ id: '1001',
|
|
|
+ username: 'testuser',
|
|
|
+ role: 'user'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
- // 启用标签体系
|
|
|
- handleEnableTagSystem(system) {
|
|
|
- console.log('启用标签体系:', system.name)
|
|
|
- system.status = 'enabled'
|
|
|
- this.$message.success(`启用标签体系: ${system.name}`)
|
|
|
- },
|
|
|
-
|
|
|
- // 停用标签体系
|
|
|
- handleDisableTagSystem(system) {
|
|
|
- console.log('停用标签体系:', system.name)
|
|
|
- system.status = 'disabled'
|
|
|
- this.$message.success(`停用标签体系: ${system.name}`)
|
|
|
- },
|
|
|
-
|
|
|
- // 删除标签体系
|
|
|
- handleDeleteTagSystem(system) {
|
|
|
- this.$confirm(`确定要删除标签体系「${system.name}」吗?`, '警告', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- console.log('删除标签体系:', system.name)
|
|
|
- // 这里可以调用后端接口删除标签体系
|
|
|
- this.$message.success(`删除标签体系: ${system.name}`)
|
|
|
- }).catch(() => {
|
|
|
- console.log('取消删除标签体系:', system.name)
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 查看标签列表
|
|
|
- handleViewTags(system) {
|
|
|
- console.log('查看标签列表:', system.name)
|
|
|
- this.$message.success(`查看标签列表: ${system.name}`)
|
|
|
- // 这里可以跳转到标签列表页面
|
|
|
+ this.drawerVisible = true
|
|
|
},
|
|
|
|
|
|
// 分页大小变化
|
|
|
@@ -238,9 +312,9 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-.tag-system-container {
|
|
|
- padding: 20px;
|
|
|
- background-color: #f0f2f5;
|
|
|
+.tagging-logs-container {
|
|
|
+ padding: 0;
|
|
|
+ background-color: transparent;
|
|
|
min-height: 100vh;
|
|
|
}
|
|
|
|
|
|
@@ -255,175 +329,52 @@ export default {
|
|
|
|
|
|
.search-form {
|
|
|
display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
align-items: center;
|
|
|
+ gap: 16px;
|
|
|
}
|
|
|
|
|
|
-/* 标签体系卡片网格 */
|
|
|
-.tag-system-grid {
|
|
|
- display: grid;
|
|
|
- grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
|
|
|
- gap: 20px;
|
|
|
- margin-bottom: 30px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 标签体系卡片 */
|
|
|
-.tag-system-card {
|
|
|
+/* 表格和分页容器 */
|
|
|
+.table-and-pagination-container {
|
|
|
background-color: #fff;
|
|
|
border-radius: 8px;
|
|
|
- padding: 20px;
|
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
- transition: all 0.3s ease;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.tag-system-card:hover {
|
|
|
- transform: translateY(-4px);
|
|
|
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
|
|
|
-}
|
|
|
-
|
|
|
-/* 创建标签体系卡片 */
|
|
|
-.create-card {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- min-height: 200px;
|
|
|
- border: 2px dashed #e8e8e8;
|
|
|
- background-color: #fafafa;
|
|
|
-}
|
|
|
-
|
|
|
-.create-card:hover {
|
|
|
- border-color: #1890ff;
|
|
|
- background-color: #f0f9ff;
|
|
|
-}
|
|
|
-
|
|
|
-.create-icon {
|
|
|
- width: 60px;
|
|
|
- height: 60px;
|
|
|
- border-radius: 50%;
|
|
|
- background-color: #e6f7ff;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- margin-bottom: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.create-icon i {
|
|
|
- font-size: 24px;
|
|
|
- color: #1890ff;
|
|
|
-}
|
|
|
-
|
|
|
-.create-title {
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 500;
|
|
|
- color: #303133;
|
|
|
- margin-bottom: 8px;
|
|
|
-}
|
|
|
-
|
|
|
-.create-desc {
|
|
|
- font-size: 14px;
|
|
|
- color: #909399;
|
|
|
- text-align: center;
|
|
|
- line-height: 1.4;
|
|
|
-}
|
|
|
-
|
|
|
-/* 卡片头部 */
|
|
|
-.card-header {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.system-name {
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 500;
|
|
|
- color: #303133;
|
|
|
-}
|
|
|
-
|
|
|
-.card-actions {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 8px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 卡片内容 */
|
|
|
-.system-status {
|
|
|
- margin-bottom: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.system-desc {
|
|
|
- font-size: 14px;
|
|
|
- color: #606266;
|
|
|
- line-height: 1.4;
|
|
|
- margin-bottom: 16px;
|
|
|
- min-height: 40px;
|
|
|
-}
|
|
|
-
|
|
|
-.system-meta {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- font-size: 12px;
|
|
|
- color: #909399;
|
|
|
- margin-bottom: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.tag-count {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 4px;
|
|
|
-}
|
|
|
-
|
|
|
-.create-date {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 4px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ overflow: hidden;
|
|
|
}
|
|
|
|
|
|
-/* 卡片底部 */
|
|
|
-.card-footer {
|
|
|
- border-top: 1px solid #f0f0f0;
|
|
|
- padding-top: 16px;
|
|
|
+/* 表格容器 */
|
|
|
+.table-container {
|
|
|
+ padding: 20px 20px 10px;
|
|
|
}
|
|
|
|
|
|
/* 分页控件 */
|
|
|
.pagination-container {
|
|
|
display: flex;
|
|
|
- justify-content: space-between;
|
|
|
+ justify-content: flex-end;
|
|
|
align-items: center;
|
|
|
- background-color: #fff;
|
|
|
- padding: 20px;
|
|
|
- border-radius: 8px;
|
|
|
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
-}
|
|
|
-
|
|
|
-.total-count {
|
|
|
- font-size: 14px;
|
|
|
- color: #606266;
|
|
|
+ padding: 0 20px 20px;
|
|
|
+ /* border-top: 1px solid #f0f0f0; */
|
|
|
}
|
|
|
|
|
|
/* 响应式设计 */
|
|
|
@media (max-width: 1200px) {
|
|
|
- .tag-system-grid {
|
|
|
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
|
+ .search-form {
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-start;
|
|
|
+ gap: 12px;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@media (max-width: 768px) {
|
|
|
- .tag-system-container {
|
|
|
+ .tagging-logs-container {
|
|
|
padding: 10px;
|
|
|
}
|
|
|
|
|
|
- .tag-system-grid {
|
|
|
- grid-template-columns: 1fr;
|
|
|
- gap: 16px;
|
|
|
- }
|
|
|
-
|
|
|
- .search-form {
|
|
|
- flex-direction: column;
|
|
|
- align-items: flex-start;
|
|
|
- gap: 12px;
|
|
|
+ .search-bar,
|
|
|
+ .table-container,
|
|
|
+ .pagination-container {
|
|
|
+ padding: 10px;
|
|
|
}
|
|
|
|
|
|
.pagination-container {
|