|
@@ -1,9 +1,97 @@
|
|
|
<template>
|
|
|
- <div class="library-stack-container">测试啊</div>
|
|
|
+ <div class="library-stack-container w-full bg-white p-6">
|
|
|
+ <div class="search-form mb-6">
|
|
|
+ <el-row :gutter="20" class="mb-4">
|
|
|
+ <el-col :xs="24" :sm="8" :md="8" :lg="6" :xl="6">
|
|
|
+ <div class="flex items-center">
|
|
|
+ <span class="mr-2 text-gray-600 w-20 text-right">书籍id:</span>
|
|
|
+ <el-input v-model="formData.bookId" placeholder="请输入" class="flex-1"></el-input>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="8" :md="8" :lg="6" :xl="6">
|
|
|
+ <div class="flex items-center">
|
|
|
+ <span class="mr-2 text-gray-600 w-20 text-right">书籍名称:</span>
|
|
|
+ <el-input v-model="formData.bookName" placeholder="请输入" class="flex-1"></el-input>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="8" :md="8" :lg="6" :xl="6">
|
|
|
+ <div class="flex items-center">
|
|
|
+ <span class="mr-2 text-gray-600 w-20 text-right">连载状态:</span>
|
|
|
+ <el-select v-model="formData.status" placeholder="请选择" clearable class="flex-1">
|
|
|
+ <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="6">
|
|
|
+ <div class="flex justify-start mt-2 sm:mt-0 sm:justify-end">
|
|
|
+ <el-button type="primary" @click="handleSearch" class="mr-2">查 询</el-button>
|
|
|
+ <el-button @click="handleReset">重 置</el-button>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="content-area">
|
|
|
+ <!-- 内容区域 -->
|
|
|
+ <el-empty v-if="!hasData" description="暂无数据"></el-empty>
|
|
|
+ <!-- 如果有数据,这里可以放置数据表格或其他内容 -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, reactive, onMounted } from 'vue';
|
|
|
+
|
|
|
+// 表单数据
|
|
|
+const formData = reactive({
|
|
|
+ bookId: '',
|
|
|
+ bookName: '',
|
|
|
+ status: ''
|
|
|
+});
|
|
|
+
|
|
|
+// 连载状态选项
|
|
|
+const statusOptions = ref([
|
|
|
+ { value: '1', label: '连载中' },
|
|
|
+ { value: '2', label: '已完结' },
|
|
|
+ { value: '3', label: '暂停' }
|
|
|
+]);
|
|
|
+
|
|
|
+// 是否有数据
|
|
|
+const hasData = ref(false);
|
|
|
+
|
|
|
+// 搜索方法
|
|
|
+const handleSearch = () => {
|
|
|
+ console.log('搜索条件:', formData);
|
|
|
+ // TODO: 实现搜索逻辑,更新 hasData 状态
|
|
|
+};
|
|
|
+
|
|
|
+// 重置方法
|
|
|
+const handleReset = () => {
|
|
|
+ formData.bookId = '';
|
|
|
+ formData.bookName = '';
|
|
|
+ formData.status = '';
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ // 页面加载时可执行的初始化操作
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
-<style scoped lang="scss"></style>
|
|
|
+<style scoped>
|
|
|
+/* 可以添加一些额外的自定义样式 */
|
|
|
+.library-stack-container {
|
|
|
+ min-height: calc(100vh - 80px); /* 适应屏幕高度,减去头部高度 */
|
|
|
+}
|
|
|
+
|
|
|
+/* 如果内容区域不够时的样式处理 */
|
|
|
+.content-area {
|
|
|
+ min-height: 400px; /* 设置最小高度确保页面不会太空 */
|
|
|
+}
|
|
|
+
|
|
|
+/* 确保表单在小屏幕上有适当的间距 */
|
|
|
+@media (max-width: 640px) {
|
|
|
+ .el-col {
|
|
|
+ margin-bottom: 12px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|