【fastadmin開發實戰】在前端頁面中使用bootstraptable以及表格中實現文件上傳

先看效果:

1、前端頁面中引入了表格

2、表格中實現文件上傳

3、增加截止時間頁面

?

難點在哪呢?

1、這是前端頁面,并不支持直接使用btn-dialog的類屬性實現彈窗;

2、前端頁面一般綁定了layout模板,如何實現某個頁面不調用公共模板的情況下,保留Form.api.bindevent的核心調用,確保表單驗證功能正常;

圖1的index引入table

 index:function(){require(['table'], function (Table) {// 初始化表格參數配置Table.api.init({extend: {index_url: 'lunwen/index' + location.search,add_url: '/DAZoRKUuEW.php/lunwen/index/add?user_id='+Config.userinfo.id,edit_url: '/DAZoRKUuEW.php/lunwen/index/xiugai',table: 'lunwen_author',}});var urlArr = [];var multiple = Fast.api.query('multiple');multiple = multiple == 'true' ? true : false;var table = $("#table");// 遠程數據加載成功時觸發成功。table.on('load-success.bs.table', function (e, data) {$('[name="author_ids"]').val(data.rows.map(row=>row.id).join(','));});// 初始化表格table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,sortName: 'id',pk: 'id',uniqueId: 'id', // 指定唯一標識字段為 idshowToggle: false,showExport: false,search:false,commonSearch:false,columns: [[{checkbox: true,visible:false},{field: 'id', title: __('Id'),visible:false},{field: 'bianhao', title: __('論文編號'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'zhuti', title: __('論文標題'), searchList: {"male":__('男'),"female":__('女')}, formatter: Table.api.formatter.normal,operate:false},{field: 'zhuanti_text', title: __('所屬專題'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'baogao_type', title: __('報告形式'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},{field: 'upload_poster',title: __('張貼報告'),formatter: function (value, row, index) {// 1. 口頭報告:顯示「無需上傳」if (row.baogao_type === '口頭報告') {return `<span class="text-muted">無需上傳</span>`;}// 2. 張貼報告且已有附件:顯示下載鏈接if (value) {return `<a href="${value}" target="_blank" class="text-success"><i class="fa fa-file-pdf-o"></i> 已上傳(點擊下載)</a>`;}// 3. 張貼報告且無附件:顯示上傳按鈕return `<button class="btn btn-xs btn-warning btn-upload-poster faupload"   data-mimetype="jpg,jpeg" data-id="${row.id}"><i class="fa fa-upload"></i> 上傳</button>`;},operate: false // 禁用搜索和排序},{field: 'status', title: __('Status'), searchList: {"0":__('草稿'),"save":__('保存'),"submit":__('提交')}, formatter: Table.api.formatter.normal},{field: 'buttons',width: "150px",title: __('操作'),table: table,events: Table.api.events.operate,buttons: [{name: 'detail',text: __('修改'),title: __('修改論文'),classname: 'btn btn-xs btn-primary btn-dialog',extend:' target="_blank"',// icon: 'fa fa-list',url: '/DAZoRKUuEW.php/lunwen/index/add',callback: function (data) {Layer.alert("接收到回傳數據:" + JSON.stringify(data), {title: "回傳數據"});},visible: function (row) {if(row.status=='submit') return false;//返回true時按鈕顯示,返回false隱藏return true;}},{name: 'detail',text: __('查看'),title: __('查看論文'),classname: 'btn btn-xs btn-primary btn-dialog',// icon: 'fa fa-list',url: '/DAZoRKUuEW.php/lunwen/index/chakan',extend:' target="_blank"',callback: function (data) {Layer.alert("接收到回傳數據:" + JSON.stringify(data), {title: "回傳數據"});},visible: function (row) {//返回true時按鈕顯示,返回false隱藏return true;}},],formatter: Table.api.formatter.buttons}]],queryParams:function(params){// var place_id = Fast.api.query('ids');var filter = typeof params.filter == "undefined" ? {} : JSON.parse(params.filter);var op = typeof params.op == "undefined" ? {} : JSON.parse(params.op);filter.user_id = Config.userinfo.id;op.place_id = '=';params.filter = JSON.stringify(filter);params.op = JSON.stringify(op);return params;}});// 為表格綁定事件Table.api.bindevent(table);});},

難點1的解決:用表格的formatter方法,根據狀態渲染不同的內容,如果是需要上傳的,渲染上傳按鈕

?

我顯示嘗試了直接在class里面加入faupload方法,但實際點擊沒反應。改用事件監聽,用Fast.api.open方法打開彈窗:

?

后端寫法:

public function uphaibao($ids){// 定義截止日期(2025年5月22日23:59:59)$deadline = strtotime('2025-05-22 23:59:59');$currentTime = time();// 統一時間校驗邏輯if ($currentTime > $deadline) {if ($this->request->isGet()) {// GET請求時返回提示頁面$this->view->engine->layout(false);return $this->view->fetch('common/deadline', ['message' => '論文海報上傳已截止(截止時間:2025年5月22日)']);} else {// POST請求時返回錯誤提示$this->error('上傳已截止(截止時間:2025年5月22日)');}}$params = $this->request->param();if($this->request->isGet()){$this->view->engine->layout(false);    // 不使用layout模版$this->view->assign('params',$params);return $this->view->fetch('uploadposter');}if($this->request->isPost()){$row = LunwenModel::get($params['ids']);if(!$row) $this->error('沒有找到論文記錄');$row->upload_poster = $params['upload_file'];if($row->save()){$this->success('上傳成功');}else{$this->error('上傳失敗');}}}

?相對應的js文件中加入

uphaibao:function(){Form.api.bindevent($("#lunwenform"));}

重點來了(難點2)

uploadposter.html的模板頁,把去頭掐尾的內容給補回來!

<!DOCTYPE html>
<html><head>{include file="common/meta" /}<link href="__CDN__/assets/css/user.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet"><script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script><!--<script src="https://cdn.tailwindcss.com"></script>--><script src="__CDN__/assets/js/tailwindcss.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet"></head><body><main class="container mx-auto px-4 py-8"><form id="lunwenform" method="POST" action="" enctype="multipart/form-data"><!-- 隱藏業務字段 --><input type="hidden" name="ids" id="ids" value="{$params.ids ?? ''}"><!-- 上傳文件區域 --><div class="space-y-4"><div class="border border-gray-200 rounded-lg p-6 bg-gray-50"><h3 class="text-lg font-medium text-gray-800 mb-4">文件上傳要求</h3><ul class="list-disc list-inside text-sm text-gray-600"><li>支持格式:JPG/JPEG</li><li>最大文件大小:10MB</li><li>建議分辨率:1200x1600及以上(保證內容清晰)</li></ul></div><!-- 上傳組件 --><div class="flex flex-col gap-3"><label class="block text-sm font-medium text-gray-700">選擇報告文件</label><div class="flex items-center gap-4"><input readonly id="c-rowupload" name="upload_file" class="border-gray-300 rounded-lg shadow-sm flex-1 px-3 py-2" type="text" placeholder="點擊上傳按鈕選擇文件"><button id="faupload-rowupload" class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors faupload"  data-mimetype="png,jpg,jpeg,gif" data-input-id="c-rowupload"type="button"><i class="fa fa-upload mr-2"></i> 上傳文件</button></div><div id="p-rowupload" class="mt-2 flex gap-3 flex-wrap"></div></div></div><!-- 提交按鈕 --><div class="mt-6"><button type="submit" class="w-full bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors">保存并提交報告</button></div></form></main>{include file="common/script" /}</body></html>

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

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

相關文章

豆包:基于多模態交互的智能心理咨詢機器人系統設計與效果評估——情感計算框架下的對話機制創新

豆包:基于多模態交互的智能心理咨詢機器人系統設計與效果評估——情感計算框架下的對話機制創新 摘要 隨著人工智能在心理健康領域的應用深化,本文提出一種融合情感計算與動態對話管理的智能心理咨詢機器人系統架構。通過構建“用戶狀態-情感響應-策略生成”三層模型,結合…

【漫話機器學習系列】257.填補缺失值(Imputing Missing Values)

數據科學必備技能&#xff1a;填補缺失值&#xff08;Imputing Missing Values&#xff09; 在數據分析和機器學習項目中&#xff0c;缺失值&#xff08;Missing Values&#xff09; 是非常常見的問題。缺失的數據如果處理不當&#xff0c;會嚴重影響模型的訓練效果&#xff0…

基于千眼狼高速攝像機與三色掩模的體三維粒子圖像測速PIV技術

研究背景 航空航天、能源動力領域&#xff0c;測量三維瞬態流場的速度場信息對于理解流體力學行為、優化系統設計非常關鍵。 傳統三維粒子圖像測速技術如Tomo層析PIV&#xff0c;因依賴多相機陣列&#xff0c;存在系統體積、操作復雜&#xff0c;在封閉空間測量存在困難&#…

MongoDB 的主要優勢和劣勢是什么?適用于哪些場景?

MongoDB 的主要優勢 (Advantages) 靈活的文檔模型 (Flexible Document Model): 無需預定義模式 (Schemaless/Flexible Schema): 這是 MongoDB 最核心的優勢之一。它存儲 JSON 格式的文檔&#xff0c;每個文檔可以有不同的字段和結構。這使得在開發過程中修改數據結構非常容易&a…

css iconfont圖標樣式修改,js 點擊后更改樣式

背景&#xff1a; 在vue項目中&#xff0c;通過點擊/鼠標覆蓋&#xff0c;更改選中元素的樣式&#xff0c;可以通過js邏輯&#xff0c;也可以根據css樣式修改。包括以下內容&#xff1a;iconfont圖標的引入以及使用&#xff0c;iconfont圖標樣式修改【導入文件是純白&#xff0…

CosyVoice介紹

CosyVoice介紹 CosyVoice是阿里開源的一個多語言語音生成大模型&#xff0c;可應用于TTS(Text To Speech) 工具的開發。它支持內置預制語音生成、語音克隆、自然語言控制語音生成等功能。CosyVoice的另一個亮點在于它對生成語音情感和韻律的精細控制&#xff0c;這是通過富文本…

分布式任務調度XXL-Job

? XXL-Job 是一款輕量級、分布式的任務調度平臺&#xff0c;其核心設計解決了傳統任務調度&#xff08;如Quartz&#xff09;在分布式場景下的?任務分片?、?高可用?、?可視化管控?等痛點。以下從原理、核心架構、應用場景、代碼示例及關聯中間件展開詳解 一、主流任務…

GOOSE 協議中MAC配置

在 GOOSE&#xff08;Generic Object Oriented Substation Event&#xff09;協議中&#xff0c;主站&#xff08;Publisher&#xff09;發送的 MAC 地址不需要與從站&#xff08;Listener&#xff09;的 MAC 地址一致&#xff0c;其通信機制與 MAC 地址的匹配邏輯取決于 GOOSE…

交流充電樁IEC 61851-1和IEC 61851-21-2標準測試項目

交流充電樁IEC 61851-1和IEC 61851-21-2標準測試項目 立訊檢測的光儲充實驗室專注于光伏、儲能、充電設施等新能源領域的檢測與認證服務&#xff0c;以下是詳細介紹&#xff1a; ?1. 實驗室概況? ?覆蓋領域?&#xff1a;光伏逆變器、儲能電池系統、充電樁、便攜式儲能電…

備戰菊廠筆試2-BFS記憶化MLE?用Set去重-Set會TLE?用SortedSet剪枝

目錄 200.島嶼數量 不用getnei&#xff0c;直接在dfs判斷&#xff0c;去掉解包 如果害怕棧溢出那么可以用bfs 2617.網格圖中最少訪問的格子數 注意特判&#xff01; MLE主要是因為vis占用的內存過大 用SortedSet有序剪枝 什么是SortedSet&#xff1f; 基本性質 導入 …

STM32H743輸出50%的占空比波形

使用cubeMX進行配置如下&#xff1a; 時鐘配置如下&#xff1a; 具體代碼如下&#xff1a; /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

MYSQL 查詢去除小數位后多余的0

MYSQL 查詢去除小數位后多余的0 在MySQL中&#xff0c;有時候我們需要去除存儲在數據庫中的數字字段小數點后面多余的0。這種情況通常發生在處理金額或其他需要精確小數位的數據時。例如&#xff0c;數據庫中存儲的是decimal (18,6)類型的數據&#xff0c;但在頁面展示時不希望…

物理:從人體組成角度能否說明基本粒子的差異性以及組織結構的可預設性?

人類的個體差異源于粒子組合的復雜性、環境與隨機性的相互作用,而非基本粒子本身的差異性。以下分層次解析: 一、基本粒子的同質性與組合多樣性 1. 基本粒子的同一性 標準模型確認:同種類基本粒子(如電子、上夸克)具有完全相同的質量、電荷等屬性,不存在個體差異。泡利不…

應用探析|千眼狼PIV測量系統在職業病防治中的應用

1、職業病防治背景 隨著《職業病防治法》及各省市“十四五”職業病防治規劃的深入推進&#xff0c;工作場所粉塵危害監測與防控已成為疾控部門的核心任務。以礦山、建材、冶金、化工等行業為例&#xff0c;粉塵濃度、分布及傳播特性的精準測量是評估職業病風險的關鍵。 傳統的…

串口模塊詳細講解

目錄 1.串口介紹 2。STC-ISP串口功能介紹 3.接口及引腳定義 4.串口知識點 4.1 硬件電路 4.2 電平標準 4.3 相關術語 4.4 常見通信接口比較 4.5 51單片機的UART 4.6 串口參數及時序圖 4.7 串口模式圖 4.8 串口和中斷系統 4.9 串口相關寄存器 5.串口向電腦發送信息…

基于大模型的腰椎管狹窄術前、術中、術后全流程預測與治療方案研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、腰椎管狹窄概述 2.1 定義與分類 2.2 發病原因與機制 2.3 臨床表現與診斷方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用案例 3.3 選擇大模型預測腰椎管狹窄的依據 四、…

【2025年前端高頻場景題系列】使用同一個鏈接,如何實現PC打開是web應用、手機打是-個H5 應用?

面試情境與問題引入 哈嘍大家伙,我是布魯伊。在前端開發面試中,面試官經常會拋出一些看似簡單卻能考察多方面能力的問題。"如何實現同一個鏈接在PC端和移動端展示不同應用?"就是這樣一個典型問題。為什么面試官喜歡問這個問題?因為它能同時考察候選人的設備適配…

醫療實時操作系統方案:手術機器人的微秒級運動控制

一、引言 手術機器人作為現代醫療技術的重要突破&#xff0c;正不斷推動著外科手術向精準化、微創化和智能化的方向發展。直覺外科&#xff08;Intuitive Surgical&#xff09;作為手術機器人領域的領軍企業&#xff0c;其達芬奇手術機器人系統已被廣泛應用于全球眾多醫療機構…

數據結構基礎--藍橋杯備考

1.優缺點總述 STL中各容器對比圖 各類線性數據結構優缺點 1.數組 1.優點 1.簡單&#xff0c;容易理解 2.訪問快捷&#xff0c;只需要用下標就可以 3.有某些應用場景直接對應&#xff0c;例如二維數組對應平面 2.缺點 刪除和插入數據非常耗時 2.鏈表 1.優點 插入和刪…

運用數組和矩陣對數據進行存取和運算——NumPy模塊 之六

目錄 NumPy模塊介紹 3.6.1 數組之間的運算 3.6.2 算術運算 3.6.3 比較運算 3.6.4 邏輯運算 3.6.5 矩陣運算 3.6.6 廣播運算 3.6.7 聚合運算 3.6.8 三角函數與指數對數運算 3.6.9 位運算 3.6.10 條件運算 3.6.11 數組的統計運算 3.6.12 關鍵問題:數組之間的運算對數組的維度有要…