前段時間一直在搞QT方向的研發,想在QT這條路上有所突破,再將資源引流到自定義表單方面,自定義表單進度基本出於停滯狀態,結果由於疫情原因和大環境影響,QT基本沒什麼專案資源。QT方面也是做了一套開發框架,很多低程式碼的思想在裡面,唉,欲哭無淚,後面計劃開源出來。接下來精力應該全部轉向到自定義表單的研發上面來,不斷的進行迭代優化。
樹相信每個專案都會遇到,除了常見的樹之外,還有樹型列表,在這裡我把常見的情況做成的模板,可以方便的生成對應的功能表單。
模板二:TreeListFormTree_ts(單樹_模板列表表單)
此模板為一棵樹型列表,樹列表為樹型結構,沒有分頁,沒有匯入匯出功能,包括增刪改查以及高階查詢,後臺自動處理關於樹特性的業務邏輯。
範例演示
Object物件「是否為樹」需要勾選,勾選之後,系統自動在資料庫增加PId、TreeCode、Path、Title等欄位,且執行時動態維護這幾個欄位的值,具體生成邏輯可檢視後臺原始碼。
下面是Mysql自動生成的資料庫表:
CREATE TABLE `Tree_t` (
`Id` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`StringField` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`DateTimeField` datetime(6) DEFAULT NULL,
`DictField` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`IntField` int DEFAULT NULL,
`TextField` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
`AutoNoField` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`DecimalField` decimal(10,2) DEFAULT NULL,
`DateField` date DEFAULT NULL,
`PId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`TreeCode` varchar(767) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Path` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Icon` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`CreatorId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`CreationTime` datetime(6) NOT NULL,
`CreatorDept` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
快速建立表單大致邏輯: 將模組裡面的表單、檢視、規則等所有設定資料從資料庫裡面查詢到記憶體中,將列表檢視裡面的列、查詢、匯入匯出Excel設定以及編輯檢視裡面的行、列資料全部刪除,將資料庫裡的所有資料的Id提取出來,並構造出IdMap資料字典,字典Key為原Id,Value為新生成的Id(所有資料都包含主鍵,且主鍵型別為Guid),按照設定,根據新的物件的欄位型別生成列表檢視裡面的列、匯入匯出Excle以及編輯檢視裡的行、列資料,其他資料全部保留,用新的Id替換原始Id值,再一起儲存到資料庫,同時重新整理快取,這樣,一個新的業務表單就完成了。具體邏輯可查詢開源的原始碼。
將最外層表單Id值拷貝過來,填寫對應的欄位即可。
模板三:TreeListFormTree_ts(單樹Tree_模板列表表單)
傳統的一棵樹,在很多地方都可以使用
範例演示:
步驟同上,用的同一張表
將生成的表單Id設定到選單中。
wike檔案地址:https://gitee.com/kuangqifu/sprite/wikis/pages
後端開源地址:https://gitee.com/kuangqifu/sprite
前端開源地址:https://gitee.com/kuangqifu/spritefronts
體驗地址:http://47.108.141.193:8031 (首次載入可能有點慢,用的阿里雲最差的伺服器)
自定義表單文章地址:https://www.cnblogs.com/spritekuang/
流程引擎文章地址:https://www.cnblogs.com/spritekuang/category/834975.html (採用WWF開發,已過時,已改用Elsa實現,https://www.cnblogs.com/spritekuang/p/14970992.html )