若依ruoyi框架開發(fā)點滴

? ? 最近用若依(前后端集成版本)開發(fā)了一個財務(wù)系統(tǒng),感覺相當(dāng)?shù)慕o力,功能齊全,代碼量少。由于第一次使用,期間也遇到一些問題,現(xiàn)記錄下來,希望對初次使用的朋友有所幫助。文中涉及到的操作是基于idea開發(fā)工具。

一、代碼生成。

1、創(chuàng)建獨立模塊。

????這個主要是方便開發(fā)和維護,特別是多人分模塊開發(fā)。參考自(https://blog.csdn.net/kenkao/article/details/123349167)或者百度搜索“若依代碼生成”。簡單總結(jié)如下:

(1)單應(yīng)用:編輯ruoyi-admin中resources目錄下的application.yml

author: lzy # 開發(fā)者姓名,生成到類注釋上

packageName: com.ruoyi.student # 默認生成包路徑

autoRemovePre: true # 是否自動去除表前綴

tablePrefix: stu # 表前綴

(2)建表

????最好參考若依系統(tǒng)表創(chuàng)建,如固定字段:id,創(chuàng)建人,創(chuàng)建時間,修改人,修改時間,狀態(tài)等;還有就是字段名和表名統(tǒng)一采用下劃線或駝峰式,這對于后面代碼的get和set可能有影響,如果列表沒顯示出值,要檢查是否字段名引起。

(3)項目中新建模塊

a.右鍵項目頂級-->New-->Module

b.修改項目的pom.xml加入模塊dependency

<!-- 學(xué)生模塊-->

<dependency>

? ? <groupId>com.ruoyi</groupId>

? ? <artifactId>ruoyi-student</artifactId>

? ? <version>${ruoyi.version}</version>

</dependency>

c.在ruoyi-admin這個模塊的pom.xml中引入剛剛新建戴爾模塊

<!--學(xué)生模塊-->

<dependency>

? ? <groupId>com.ruoyi</groupId>

? ? <artifactId>ruoyi-student</artifactId>

</dependency>

d.將ruoyi-common引入到我們新建的模塊,ruoyi-student的pom.xml加入

<dependencies>

? ? <dependency>

? ? ? ? <groupId>com.ruoyi</groupId>

? ? ? ? <artifactId>ruoyi-common</artifactId>

? ? </dependency>

</dependencies>

e.如果模塊中用到系統(tǒng)表,如用戶,角色,菜單等,還需要把ruoyi-admin引入到ruoyi-student,(后面代碼會報錯,也會自動引入)

(4)啟動系統(tǒng)后在菜單管理中新建一個目錄-學(xué)生管理

(5)系統(tǒng)工具-代碼生成,導(dǎo)入,選擇新建的表。

對表進行編輯,其中模塊名可以用xxx/yyy來讓生成的html創(chuàng)建子目錄,菜單指定剛才創(chuàng)建的目錄。

(6)執(zhí)行生成的sql,自動生成菜單和權(quán)限。

(7)將生成的代碼放入項目中

a.將自動生成的代碼文件main目錄直接復(fù)制到我們的新建模塊的src下,替換原本的main目錄

b.將templates目錄拷貝到ruoyi-admin目錄下的resources中

(8)重啟項目(一定要重啟),訪問頁面

二、開發(fā)過程可能會遇到的問題總結(jié)

1、登錄后點擊菜單提示無權(quán)限

? ? 解決:登錄時勾選記住"記住我" 或 用谷歌的無痕模式進行訪問。

2、前端無翻頁的問題

(1)查看table.init方法其中的pagination 分頁插件是否設(shè)置為true

(2)排查問題得出不是前端頁面造成的分頁失效,查看list方法中返回的list集合是否被更改數(shù)據(jù)結(jié)構(gòu),被更改數(shù)據(jù)結(jié)構(gòu)后也會導(dǎo)致前端分頁失效。中間如果有對結(jié)果list做處理,就會失效,所以處理最好放到service層,或在mapper層處理。如果非要在controller處理請自行百度。

/**正確示范**/

startPage(l);

List<T> list = Service.selectTList(T);

return? getDataTable(list);

3、頁面上的功能

(1)表格底footer固定顯示某些內(nèi)容,如匯總等

var options = {

? ? ? ? ? ? ? ? url: prefix + "/listDto",

? ? ? ? ? ? ? ? createUrl: prefix + "/add",

? ? ? ? ? ? ? ? updateUrl: prefix + "/edit/{id}",

? ? ? ? ? ? ? ? removeUrl: prefix + "/remove",

? ? ? ? ? ? ? ? exportUrl: prefix + "/export",

? ? ? ? ? ? ? ? importUrl: prefix + "/importData",//導(dǎo)入

? ? ? ? ? ? ? ? modalName: "訂單",

? ? ? ? ? ? ? ? showFooter: true,

? ? ? ? ? ? ? ? columns: [{

? ? ? ? ? ? ? ? ? ? field: 'id',

? ? ? ? ? ? ? ? ? ? title: 'id',

? ? ? ? ? ? ? ? ? ? visible: false

? ? ? ? ? ? ? ? },

????????????????{

? ? ? ? ? ? ? ? ? ? field: 'amount',

? ? ? ? ? ? ? ? ? ? title: '訂單金額',

? ? ? ? ? ? ? ? ? ? formatter: function(value, row, index) {

? ? ? ? ? ? ? ? ? ? ? ? return toThousands(value);

? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? //計算此列的值

? ? ? ? ? ? ? ? ? ? footerFormatter: function(rows){

? ? ? ? ? ? ? ? ? ? ? ? var sum = 0;

? ? ? ? ? ? ? ? ? ? ? ? for (var i=0;i<rows.length;i++) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? sum += rows[i].amount

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? return toThousands(sum);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? },

(2)bootstrap 合并單元格之mergeCells屬性合并

var options = {

? ? ? ? ? ? url: prefix + "/reportData",

? ? ? ? ? ? createUrl: prefix + "/add",

? ? ? ? ? ? updateUrl: prefix + "/edit/{id}",

? ? ? ? ? ? removeUrl: prefix + "/remove",

? ? ? ? ? ? exportUrl: prefix + "/export",

? ? ? ? ? ? addInvoiceUrl: prefix + "/addInvoice?ids=",

? ? ? ? ? ? modalName: "報表",

? ? ? ? ? ? // onLoadSuccess: function(data) {

? ? ? ? ? ? //? ? var data = $('#bootstrap-table').bootstrapTable('getData', true);

? ? ? ? ? ? //? ? //合并單元格

? ? ? ? ? ? //? ? mergeCells(data, $('#bootstrap-table'));

? ? ? ? ? ? // },

? ? ? ? ? ? columns: [{

? ? ? ? ? ? ? ? ? ? field: 'id',

? ? ? ? ? ? ? ? ? ? title: 'id',

? ? ? ? ? ? ? ? ? ? visible: false

? ? ? ? ? ? ? ? },

function mergeCells(data, target) {

? ? ? ? var id = "";

? ? ? ? var length = 1;

? ? ? ? var list = [];

? ? ? ? for (var i = 0; i < data.length; i++) {

? ? ? ? ? ? if(id != data[i].id){

? ? ? ? ? ? ? ? if(i > 0){

? ? ? ? ? ? ? ? ? ? list.push(length);

? ? ? ? ? ? ? ? ? ? length = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? length = length + 1;

? ? ? ? ? ? }

? ? ? ? ? ? if(i == data.length -1){

? ? ? ? ? ? ? ? list.push(length);

? ? ? ? ? ? }

? ? ? ? ? ? id = data[i].id;

? ? ? ? }

? ? ? ? console.log(list);

? ? ? ? var num = 0;

? ? ? ? for(var i = 0; i < list.length; i++){

? ? ? ? ? ? if(list[i] > 1) {

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {index: num, field: 'id', colspan: 1, rowspan: list[i]});

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {

? ? ? ? ? ? ? ? ? ? index: num,

? ? ? ? ? ? ? ? ? ? field: 'invoiceDate',

? ? ? ? ? ? ? ? ? ? colspan: 1,

? ? ? ? ? ? ? ? ? ? rowspan: list[i]

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {

? ? ? ? ? ? ? ? ? ? index: num,

? ? ? ? ? ? ? ? ? ? field: 'invoiceType',

? ? ? ? ? ? ? ? ? ? colspan: 1,

? ? ? ? ? ? ? ? ? ? rowspan: list[i]

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {

? ? ? ? ? ? ? ? ? ? index: num,

? ? ? ? ? ? ? ? ? ? field: 'invoiceCode',

? ? ? ? ? ? ? ? ? ? colspan: 1,

? ? ? ? ? ? ? ? ? ? rowspan: list[i]

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {

? ? ? ? ? ? ? ? ? ? index: num,

? ? ? ? ? ? ? ? ? ? field: 'invoiceAmount',

? ? ? ? ? ? ? ? ? ? colspan: 1,

? ? ? ? ? ? ? ? ? ? rowspan: list[i]

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? $(target).bootstrapTable('mergeCells', {index: num, field: 'remarks', colspan: 1, rowspan: list[i]});

? ? ? ? ? ? }

? ? ? ? ? ? num = num + list[i];

? ? ? ? }

? ? }

(3)bootstrap 表格文本右對齊

$(function() {

? ? ? ? ? ? var options = {

? ? ? ? ? ? ? ? url: prefix + "/list",

? ? ? ? ? ? ? ? createUrl: prefix + "/add",

? ? ? ? ? ? ? ? updateUrl: prefix + "/edit/{id}",

? ? ? ? ? ? ? ? removeUrl: prefix + "/remove",

? ? ? ? ? ? ? ? exportUrl: prefix + "/export",

? ? ? ? ? ? ? ? importUrl: prefix + "/importData",//導(dǎo)入

? ? ? ? ? ? ? ? modalName: "協(xié)議信息",

? ? ? ? ? ? ? ? columns: [{

? ? ? ? ? ? ? ? ? ? field: 'id',

? ? ? ? ? ? ? ? ? ? title: 'id',

? ? ? ? ? ? ? ? ? ? visible: false

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? field: 'amount',

? ? ? ? ? ? ? ? ? ? title: '協(xié)議金額',

? ? ? ? ? ? ? ? ? ? align: 'right',

? ? ? ? ? ? ? ? ? ? formatter: function(value, row, index) {

? ? ? ? ? ? ? ? ? ? ? ? return toThousands(value);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }]

待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容