打卡14
1.新学期目标2.打卡3.打卡24.打卡35.打卡 46.打卡57.打卡68.打卡79.打卡810.打卡911.打卡1012.结对作业(地铁查询项目)0113.结对作业(地铁项目)0214.结对作业(地铁项目)0315.结对作业(地铁项目)0416.结对作业(地铁项目)0517.结对作业(地铁项目)0618.结对作业(地铁项目)0719.结对作业(地铁项目)0820.结对作业(地铁项目)0921.结对作业(地铁项目)1022.结对作业(地铁项目)1123.结对作业(地铁项目)1224.结对作业(地铁项目)1325.结对作业(地铁项目)1426.五一冲刺(政策查询系统)127.五一冲刺(政策查询系统)228.政策查询系统(安卓)129.政策查询系统(安卓)230.政策查询系统(安卓)331.政策查询系统(安卓)432.政策查询系统(安卓)533.政策查询系统(安卓)634.政策查询系统(安卓)735.JS开发36.安卓app开发相关37.第一次个人作业(安卓学习记录系统)0138.第一次个人作业(安卓学习记录系统)0239.第一次个人作业(安卓学习记录系统)0340.第一次个人作业(安卓学习记录系统)0441.第一次个人作业(安卓学习记录系统)0542.第一次个人作业(安卓学习记录系统)0643.第一次个人作业(安卓学习记录系统)0744.打卡1145.打卡1246.打卡13
47.打卡14
48.打卡1549.打卡1650.打卡1751.打卡1852.打卡1953.打卡2054.python学习55.python学习256.python学习357.Javaweb58.打卡2159.fragment学习和使用60.mybits学习161.mybits学习262.mybits学习363.课程总结64.个人总结
所花时间(包括上课): |
4h |
代码量(行): |
200左右 |
搏客量(篇): |
1 |
了解到的知识点: |
vue |
备注(其他): |
<script lang ='ts' setup>
import LOGO from "@/assets/LOGO.png"
import {getPolicyService} from "@/api/getPolicy.js";
import { ref, onMounted } from 'vue'
import { getPolicyCountByTypes } from "@/api/getPolicy.js";
import {getPolicy} from "@/api/getPolicy.js";
import type Node from 'element-plus/es/components/tree/src/model/node'
import {ElMessage} from "element-plus"
let count = 1
interface Tree {
name: string
}
const props = {
label: 'name',
children: 'zones',
}
const loadNode = (node: Node, resolve: (data: Tree[]) => void) => {
if (node.level === 0) {
return resolve([
{ name: '综合' },
{ name: '产业' },
{ name: '企业' },
{name:'企业技术进步与高新技术产业化'},
{name:'农村科技与社会发展'},
{name:'创新载体'},
{name:'国际科技合作'},
{name:'基础研究'},
{name:'平台基地'},
{name:'科学技术普及'},
{name:'科技中介服务'},
{name:'科技人才'},
{name:'科技奖励'},
{name:'科技成果与知识产权'},
{name:'科技条件与标准'},
{name:'科技经费与财务'},
{name:'科技计划管理'},
{name:'科技金融与税收'},
{name:'科研机构改革'}
])
}
}
const name = ref(''); //政策名称
const document = ref(''); //发文字号
const organ = ref(''); //发文机构
const text = ref(''); //全文检索
const selectedPolicyText = ref('');
const drawer = ref(false)
const policyTypes = ref([]); // 存储政策类型及对应数量的数组
// 获取政策类型及对应数量的数据
const fetchPolicyTypes = async () => {
const response = await getPolicyCountByTypes();
policyTypes.value = response.data; // 将返回的数据赋值给 policyTypes
}
const policyData = ref([
{
name:'',
organ:'',
pubdata:'',
type:'',
text:''
}
]);
//分页条数据模型
const pageNum = ref(1)//当前页
const total = ref(20)//总条数
const pageSize = ref(8)//每页条数
//当每页条数发生了变化,调用此函数
const onSizeChange = (size) => {
pageSize.value = size;
policyList();
}
//当前页码发生变化,调用此函数
const onCurrentChange = (num) => {
pageNum.value = num;
policyList();
}
//获取政策列表数据
const policyList = async () => {
let params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
name:name.value ? name.value : null,
document:document.value ? document.value : null,
organ:organ.value ? organ.value : null,
text:text.value ? text.value : null,
}
let result = await getPolicyService(params);
total.value = result.data.total;
policyData.value=result.data.items;
}
const handleCheckChange = async (
data: Tree,
checked: boolean,
indeterminate: boolean
) => {
console.log(data.name, checked, indeterminate)
const name = data.name;
if (checked == true) {
let result = await getPolicy({type:name});
total.value = result.data.total;
policyData.value = result.data.items;
}
}
const openDrawer = (row) => {
selectedPolicyText.value = row.text; // 将选中政策的文本内容赋值给selectedPolicyText
drawer.value = true; // 打开对话框
}
</script>
<template>
<!-- element-plus中的容器 -->
<el-container >
<!-- 左侧菜单栏 -->
<el-aside width="350px" style="overflow-y: auto;">
<el-tree
style="max-width: 600px"
:props="props"
:load="loadNode"
lazy
show-checkbox
@check-change="handleCheckChange"
/>
</el-aside>
<!-- 右侧主区域 -->
<el-container>
<el-header style="display: flex; justify-content: center; align-items: center;">
<el-avatar :size="50" :src="LOGO"/>
<h1 >河北科技政策查询系统</h1>
</el-header>
<!-- 内容展示区域 -->
<el-main>
<el-form :inline="true" >
<el-form-item label="政策名称">
<el-input v-model="name" placeholder="请输入政策名称" clearable />
</el-form-item>
<el-form-item label="发文字号">
<el-input v-model="document" placeholder="请输入发文字号" clearable />
</el-form-item>
<el-form-item label="发文机构">
<el-input v-model="organ" clearable />
</el-form-item>
<el-form-item label="全文检索">
<el-input v-model="text" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="policyList()">搜索</el-button>
</el-form-item>
</el-form>
<!-- 政策列表 -->
<el-table :data="policyData" style="width: 100%">
<el-table-column label="政策名称" width="650" prop="name"></el-table-column>
<el-table-column label="发文机构" width="200" prop="organ"></el-table-column>
<el-table-column label="颁布日期" width="200" prop="pubdata"> </el-table-column>
<el-table-column label="政策分类" width="200" prop="type"></el-table-column>
<el-table-column label="操作" width="100">
<template #default="{ row }">
<el-button plain type="primary" @click=openDrawer(row)>查看</el-button>
</template>
</el-table-column>
<template #empty>
<el-empty description="没有数据" />
</template>
</el-table>
<!-- 分页条 -->
<el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[3, 5, 10, 15]"
layout="jumper, total, sizes, prev, pager, next" background :total="total" @size-change="onSizeChange"
@current-change="onCurrentChange" style="margin-top: 20px; justify-content: flex-end" />
<el-dialog v-model="drawer" :with-header="false">
<div v-html="selectedPolicyText"></div>
</el-dialog>
</el-main>
<!-- 底部区域 -->
<el-footer> Copyright 1996-2024 All Rights Reserved 版权所有:河北省科学技术情报研究院 河北省科技创新战略研究院 技术支持:河北省科技信息处理实验室。</el-footer>
</el-container>
</el-container>
</template>
<style lang="scss" scoped>
.el-menu {
border-right: none;
}
.el-footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
color: #666;
}
</style>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效