前端vue+typeScritp+elementPlus基礎頁面實現:

效果:

前端代碼:

index.vue:

<template><el-container><el-main><el-card class="search-card" shadow="never"><transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"><el-form :inline="true" class="demo-form-inline"><el-form-item label="專科名稱:"><el-select v-model="queryParams.zhuanKeMingCheng" placeholder="請選擇專科名稱" filterable clearable><el-option v-for="item in zhuanKeNameList" :key="item" :label="item" :value="item" /></el-select></el-form-item><el-form-item><el-button type="primary" icon="Search" @click="onSearch">搜索</el-button></el-form-item><el-form-item><el-button type="warning" icon="Plus" @click="showAddDialog">新增</el-button></el-form-item></el-form></transition></el-card><el-card class="table-card" shadow="never"><el-table :data="tableData" border style="width: 100%"><el-table-column prop="nianFen" label="年份" width="100"></el-table-column><el-table-column prop="yiYuanMingCheng" label="醫院名稱" width="180"></el-table-column><el-table-column prop="zhuanKeMingCheng" label="專科名稱" width="180"></el-table-column><el-table-column prop="zhuanKeLeiBie" label="專科類別" width="180"></el-table-column><el-table-column prop="neiWaiKe" label="內外科" width="180"></el-table-column><el-table-column prop="zhuanKeDaiMa" label="專科代碼" width="180"></el-table-column><el-table-column label="狀態" width="120"><template #default="scope"><div v-if="scope.row.zhuangTai === '1'">未開始</div><div v-else-if="scope.row.zhuangTai === '2'">進行中</div><div v-else-if="scope.row.zhuangTai === '3'">已完成</div></template></el-table-column><el-table-column align="center" label="操作"><template #default="scope"><el-button size="small" plain type="primary" :disabled="scope.row.zhuangTai!=='1'" @click="handleProcess(scope.$index, scope.row)">開始申報</el-button><el-button size="small" plain type="danger" :disabled="scope.row.zhuangTai!=='1'" @click="handleDelete(scope.$index, scope.row)">刪除</el-button></template></el-table-column></el-table><pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="fetchData" /></el-card></el-main><!-- 新增對話框 --><el-dialog v-model="addDialogVisible" title="新增申報" width="30%"><el-form :model="addForm" ref="addFormRef" :rules="rules" label-width="100px"><el-form-item required label="年份" prop="nianFen"><el-date-picker  v-model="addForm.nianFen" type="year" placeholder="選擇年" format="YYYY" value-format="YYYY" ></el-date-picker></el-form-item><el-form-item required label="專科名稱" prop="zhuanKeName"><el-select v-model="addForm.zhuanKeName" placeholder="請選擇專科名稱"><el-option v-for="item in zhuanKeNameList" :key="item" :label="item" :value="item" /></el-select></el-form-item><el-form-item required label="專科類別" prop="zhuanKeLeiBie"><el-select v-model="addForm.zhuanKeLeiBie" style="width: 150px" clearable><el-option v-for="item in zhuan_ke_type" :value="item.value" :label="item.label" /></el-select></el-form-item></el-form><template #footer><span class="dialog-footer"><el-button @click="addDialogVisible = false">取消</el-button><el-button type="primary" @click="submitAddForm">提交</el-button></span></template></el-dialog></el-container>
</template><script setup lang="ts">
import {ref, onMounted, toRefs, getCurrentInstance} from 'vue';
import {addZhuanKeShenBao,getZhuanKeNameList,getZhuanKeShenBaoList,deleteZhuanKeShenBao, startShenBao
} from '@/api/keyspecialty/zhuanKeShenBao';
import {zhuankeShenBaoVo} from "@/api/keyspecialty/zhuanKeShenBao/types";
import {ElMessage} from 'element-plus';
const queryParams = ref({pageNum: 1,pageSize: 10,zhuanKeName: "",hospName: "",
})
const {proxy} = getCurrentInstance() as ComponentInternalInstance;
const {zhuan_ke_type} = toRefs<any>(proxy?.useDict("zhuan_ke_type"));//專科名稱列表
const zhuanKeNameList = ref([]);
// 表格數據
const tableData = ref<zhuankeShenBaoVo[]>([]);
const total = ref(0);
// 獲取數據的函數
const fetchData = async () => {try {const response = await getZhuanKeShenBaoList(queryParams.value);tableData.value = response.rows;total.value = response.total;} catch (error) {console.error('Error fetching data:', error);}
};// 頁面加載時獲取數據
onMounted(() => {fetchData();getZhuanKeNameListData();
});// 查詢按鈕點擊事件
const onSearch = () => {fetchData();console.log('查詢');
};// 顯示新增對話框
const addDialogVisible = ref(false);
const showAddDialog = () => {//重置表單數據addForm.value = {zhuanKeName: '',zhuanKeLeiBie: '',nianFen:'',};addDialogVisible.value = true;
};
// 新增表單數據
const addForm = ref({zhuanKeName: '',zhuanKeLeiBie: '',nianFen:'',
});
// 表單ref
const addFormRef = ref();
// 提交新增表單
const submitAddForm = () => {addFormRef.value?.validate((valid: boolean) => {if (valid) {console.log('提交新增表單', addForm.value);addZhuanKeShenBao(addForm.value.zhuanKeName, addForm.value.zhuanKeLeiBie, addForm.value.nianFen).then((res) => {if (res.code === 200) {ElMessage.success('申報成功');fetchData();addDialogVisible.value = false;} else {ElMessage.error('申報失敗');ElMessage.error(res.msg);}});} else {ElMessage.error('請填寫完整信息');}});
};
const rules = {nianFen: [{ required: true, message: '請選擇年份', trigger: 'change' }],zhuanKeName: [{ required: true, message: '請選擇專科名稱', trigger: 'change' }],zhuanKeLeiBie: [{ required: true, message: '請選擇專科類別', trigger: 'change' }]
};
//獲取專科名稱列表
const getZhuanKeNameListData = async () => {try {const response = await getZhuanKeNameList();zhuanKeNameList.value = response.data;console.log('專科名稱列表', zhuanKeNameList.value);} catch (error) {console.error('Error fetching data:', error);}
}
// 申報流程按鈕點擊事件
const handleProcess = (index: number, row: any) => {startShenBao(row.id).then((res) => {if (res.code == 200) {ElMessage.success('申報流程開始');fetchData();} else {ElMessage.error('申報流程開始失敗');fetchData();}})
};// 刪除按鈕點擊事件
const handleDelete = (index: number, row: any) => {ElMessageBox.confirm('確認刪除?', '提示', {confirmButtonText: '確定',cancelButtonText: '取消',type: 'warning',}).then(() => {deleteZhuanKeShenBao(row.id).then((res) => {if (res.code === 200) {ElMessage.success('刪除成功');fetchData();} else {ElMessage.error('刪除失敗');fetchData();return;}});})
};
</script>
<style scoped lang="scss">
.el-main {padding: 20px;.search-card {margin-bottom: 20px;}.table-card {padding: 10px;}
}
</style>

index.ts:

import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import {zhuankeShenBaoQuery, zhuankeShenBaoVo} from "@/api/keyspecialty/zhuanKeShenBao/types";/*** 新增專科申報* @param data*/
export const addZhuanKeShenBao = (zhuanKeName: string, zhuanKeLeiBie: string) => {return request({url: 'zhuanKeShenBao/addZhuanKeShenBao/' + zhuanKeName + '/' + zhuanKeLeiBie,method: 'post',});
};
//獲取專科名稱列表
export const getZhuanKeNameList = () => {return request({url: 'zhuanKeShenBao/getZhuankeNameList',method: 'get',});
};
//分頁查詢專科申報列表
export const getZhuanKeShenBaoList = (params: zhuankeShenBaoQuery) : AxiosPromise<zhuankeShenBaoVo[]>=> {return request({url: '/zhuanKeShenBao/getZhuanKeShenBaoList',method: 'get',params,});
}

type.ts

export interface zhuankeShenBaoQuery extends PageQuery{hospName:string,zhuanKeName:string
}
export interface zhuankeShenBaoVo{yiYuanId:number,yiYuanMingCheng:string,zhuanKeDaiMa:string,zhuanKeMingCheng:string,zhuanKeLeiBie:string,zhuangTai:string,isTuiJian:string,neiWaiKe:string
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77629.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微電網與分布式能源:智能配電技術的場景化落地

安科瑞顧強 隨著數字化轉型與能源革命的加速推進&#xff0c;電力系統正經歷從傳統模式向智能化、網絡化方向的深刻變革。用戶側的智能配電與智能用電技術作為這一變革的核心驅動力&#xff0c;正在重塑電力行業的生態格局。本文將從技術架構、應用場景及未來趨勢等維度&#…

綠幕摳圖直播軟件-藍松摳圖插件--使用相機直播,燈光需要怎么打?

使用SONY相機進行綠幕摳圖直播時&#xff0c;燈光布置是關鍵&#xff0c;直接影響摳圖效果和直播畫質。以下是詳細的燈光方案和注意事項&#xff1a; 一、綠幕燈光布置核心原則 均勻照明&#xff1a;綠幕表面光線需均勻&#xff0c;避免陰影和反光&#xff08;亮度差控制在0.5…

Linux Privilege Escalation: LD_PRELOAD

聲明&#xff1a;本文所有操作需在授權環境下進行&#xff0c;嚴禁非法使用&#xff01; 0x01 什么是 LD_PRELOAD&#xff1f; LD_PRELOAD 是 Linux 系統中一個特殊的環境變量&#xff0c;它允許用戶在程序啟動時優先加載自定義的動態鏈接庫&#xff08;.so 文件&#xff09;&…

程序性能(1)嵌入式基準測試工具

程序性能(1)嵌入式基準測試工具 Author&#xff1a;Once Day date: 2025年4月19日 漫漫長路&#xff0c;才剛剛開始… 全系列文檔查看&#xff1a;Perf性能分析_Once-Day的博客-CSDN博客 參考文檔: CPU Benchmark – MCU Benchmark – CoreMark – EEMBC Embedded Micropr…

ArrayList的subList的數據仍是集合

ArrayList的subList結果不可強轉成ArrayList&#xff0c;否則會拋出 ClassCastException異常 ? 級別&#xff1a; 【CRITICAL】 ? 規約類型&#xff1a;BUG ? 最壞影響&#xff1a; 程序錯誤&#xff0c;拋出異常 說明&#xff1a;subList 返回的是ArrayList的內部類SubL…

Notepad++中將文檔格式從Windows(CR LF)轉換為Unix(LF)

在Windows中用記事本寫了一個.sh的Linux運行腳本&#xff0c;是無法直接在Linux中執行&#xff0c;需要首先把文本編碼格式轉換為Unix的&#xff0c;特別是換行符這些&#xff0c;轉換步驟如下&#xff1a; 1、打開文檔 在Notepad中打開需要轉換的文件。 2、進入文檔格式轉換…

使用Ingress發布應用程序

使用Ingress發布應用程序 文章目錄 使用Ingress發布應用程序[toc]一、什么是Ingress二、定義Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安裝nginx Ingress控制器3.本地實際測試 五、使用Ingress對外發布應用程序1.使用D…

【網絡編程】TCP數據流套接字編程

目錄 一. TCP API 二. TCP回顯服務器-客戶端 1. 服務器 2. 客戶端 3. 服務端-客戶端工作流程 4. 服務器優化 TCP數據流套接字編程是一種基于有連接協議的網絡通信方式 一. TCP API 在TCP編程中&#xff0c;主要使用兩個核心類ServerSocket 和 Socket ServerSocket Ser…

力扣刷題Day 21:兩數之和(1)

1.題目描述 2.思路 暴力解法雖然不超時間限制&#xff0c;但是題解實在太妙了&#xff0c;哈希大法好&#xff01; 3.代碼&#xff08;Python3&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hash_table dict()for i, num i…

關于UE5的抗鋸齒和TAA

關于閃爍和不穩定現象的詳細解釋 當您關閉抗鋸齒技術時&#xff0c;場景中會出現嚴重的閃爍和不穩定現象&#xff0c;尤其在有細節紋理和小物體的場景中。這種現象的技術原因如下&#xff1a; 像素采樣問題 在3D渲染中&#xff0c;每個像素只能表示一個顏色值&#xff0c;但…

【MySQL】MySQL建立索引不知道注意什么?

基本原則&#xff1a; 1.選擇性原則&#xff1a; 選擇高選擇性的列建立索引(該列有大量不同的值) 2.適度原則&#xff1a;不是越多越好&#xff0c;每個索引都會增加寫入開銷 列選擇注意事項&#xff1a; 1.常用查詢條件列&#xff1a;WHERE字句中頻繁使用的列 2.連接操作列…

Vue3 + TypeScript中provide和inject的用法示例

基礎寫法&#xff08;類型安全&#xff09; typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定義類型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…

樹莓派超全系列教程文檔--(33)樹莓派啟動選項

樹莓派啟動選項 啟動選項start_file &#xff0c;fixup_filecmdlinekernelarm_64bitramfsfileramfsaddrinitramfsauto_initramfsdisable_poe_fandisable_splashenable_uartforce_eeprom_reados_prefixotg_mode &#xff08;僅限Raspberry Pi 4&#xff09;overlay_prefix配置屬…

java怎么找bug?Arthas原理與實戰指南

Arthas原理與實戰指南 1. Arthas簡介 Arthas是阿里巴巴開源的Java診斷工具&#xff0c;其名字取自《魔獸世界》的人物阿爾薩斯。它面向線上問題定位&#xff0c;被廣泛應用于性能分析、定位問題、安全審計等場景。Arthas的核心價值在于它能夠在不修改應用代碼、不重啟Java進程…

Python自學第1天:變量,打印,類型轉化

突然想學Python了。經過Deepseek的推薦&#xff0c;下載了一個Python3.12安裝。安裝過程請自行搜索。 乖乖從最基礎的學起來&#xff0c;廢話不說了&#xff0c;上鏈接&#xff0c;呃&#xff0c;打錯了&#xff0c;上知識點。 變量的定義 # 定義一個整數類型的變量 age 10#…

基于STM32中斷講解

基于STM32中斷講解 一、NVIC講解 簡介&#xff1a;當一個中斷請求到達時&#xff0c;NVIC會確定其優先級并決定是否應該中斷當前執行的程序&#xff0c;以便及時響應和處理該中斷請求。這種設計有助于提高系統的響應速度和可靠性&#xff0c;特別是在需要處理大量中斷請求的實…

游戲盾和高防ip有什么區別

游戲盾和高防IP都是針對網絡攻擊的防護方案&#xff0c;但??核心目標、技術側重點和應用場景存在顯著差異??。以下是兩者的詳細對比分析&#xff1a; ??一、核心定位與目標?? ??維度????高防IP????游戲盾????核心目標??抵御大流量網絡攻擊&#xff08…

Spark-SQL3

Spark-SQL 一.Spark-SQL核心編程&#xff08;四&#xff09; 1.數據加載與保存&#xff1a; 1&#xff09;通用方式&#xff1a; SparkSQL 提供了通用的保存數據和數據加載的方式。這里的通用指的是使用相同的API&#xff0c;根據不同的參數讀取和保存不同格式的數據&#…

DeepSeek與Napkin:信息可視化領域的創新利器

摘要 在數字化信息爆炸的時代&#xff0c;如何高效地組織思路并將其轉化為直觀、清晰的可視化圖表&#xff0c;成為眾多領域面臨的關鍵問題。本文深入剖析了DeepSeek與Napkin這兩款工具&#xff0c;詳細探討它們在信息處理與可視化過程中的功能特性、協同工作機制、應用場景、…

conda 創建、激活、退出、刪除環境命令

參考博客&#xff1a;Anaconda創建環境、刪除環境、激活環境、退出環境 使用起來覺得有些不方便可以改進&#xff0c;故寫此文。 1. 創建環境 使用 -y 跳過確認 conda create -n 你的環境名 -y 也可以直接選擇特定版本 python 安裝&#xff0c;以 3.10 為例&#xff1a; co…