first commit

This commit is contained in:
DATAEXPRESS\4734
2026-02-06 14:44:08 +08:00
commit 3b3e190726
42 changed files with 5385 additions and 0 deletions
+127
View File
@@ -0,0 +1,127 @@
DELIMITER //
CREATE OR REPLACE PROCEDURE zen_create_json_kernel(
IN p_uuid VARCHAR(100),
IN p_FunctionTag VARCHAR(100),
IN p_tblName VARCHAR(100),
IN p_pk VARCHAR(100),
IN p_query_type VARCHAR(1),
IN p_code_id VARCHAR(100)
)
/*
功能 : amis Wizard 產生 json UI 的核心程式
描述: 本段 sp 是設定的主程式, 由此呼叫各自元件 sp, 會重新組合出原 @temp_code 內跟 compoment 的定義內容
一般記錄到 zen_wizard_jsondata, 少數情況會寫到 zen_wizard_tmp(zen_create_json_transfer)
仔細看起來, 似乎只有 Cycle 類元件以及 picker, transfer 及 formula 這幾個特殊元件要特別獨立 function 處理
我覺得還是給每個元件一段 sp, 雖然子程式會變多, 但是會更好維護 Thinking
建立日期 : 2023/12/20
修改歷史
項目 誰 日期 修改說明
==== ========== ========== ================================================
1 Michael 2023/12/20 根據 v1.0 重構
*/
BEGIN
/* 目前支援下列 amis 元件(可依需求繼續擴充)
select / options / options-add / checkboxes
input-date / input-datetime / input-time
input-number / input-password / formula
picker
radios
switch
checkbox
static
input-text
textarea
input-image
input-file
link-file
link
transfer
mapping
progress
hidden
uuid
qr-code
cycle-frequency / cycle-weeks / cycle-months / cycle-startdate / cycle-enddate
*/
DECLARE v_FieldObject VARCHAR(100);
DECLARE v_picker_tag VARCHAR(100);
DECLARE v_FieldName VARCHAR(100);
DECLARE v_FieldCN NVARCHAR(100);
DECLARE v_FieldWidth VARCHAR(100);
DECLARE v_fielddefault VARCHAR(200);
DECLARE v_fieldro VARCHAR(10);
DECLARE v_fieldfm VARCHAR(100);
DECLARE v_FieldDS VARCHAR(1);
DECLARE v_FieldSH VARCHAR(1);
DECLARE v_FieldCheckNull VARCHAR(1);
DECLARE v_iscolumnmatch VARCHAR(10);
DECLARE v_FieldBlock INT;
DECLARE v_group VARCHAR(10);
DECLARE v_block VARCHAR(10);
-- DECLARE v_y SMALLINT;
DECLARE v_cnt INT;
DECLARE v_imax INT;
DECLARE v_imin INT;
DECLARE v_inow INT;
DECLARE v_required VARCHAR(100);
DECLARE v_others VARCHAR(800);
-- 有非 input-text 標準屬性設定的其他元件, 但又不是 4大特殊元件的元件(picker, cycle-, formula, transfer)
SET v_others = 'input-file^input-image^textarea^select^input-date^input-datetime^options^options-add^mapping^progress^link-file^link^radios^';
SELECT MIN(rowid) INTO v_imin FROM zen_wizard_jsondata WHERE uuid = p_uuid;
SELECT MAX(rowid) INTO v_imax FROM zen_wizard_jsondata WHERE uuid = p_uuid;
SET v_inow = v_imin;
-- SET v_y = 1;
WHILE v_inow <= v_imax DO
SELECT
fieldname, IFNULL(fieldcn,fieldname), fieldwidth, fieldobject, fieldblock, picker_tag,
IFNULL(fielddefault,''), IFNULL(fieldro,'N'), IFNULL(fieldfm,''),
fieldds, fieldsh, fieldchecknull, iscolumnmatch, _group, _block
INTO
v_FieldName, v_FieldCN, v_FieldWidth, v_FieldObject, v_FieldBlock, v_picker_tag,
v_fielddefault, v_fieldro, v_fieldfm,
v_FieldDS, v_FieldSH, v_FieldCheckNull, v_iscolumnmatch, v_group, v_block
FROM zen_wizard_jsondata WHERE uuid = p_uuid AND rowid = v_inow;
-- 防錯處理
IF v_FieldObject = 'Picker' AND IFNULL(v_picker_tag,'') = '' THEN
SET v_FieldObject = 'input-text';
END IF;
-- 是否為必填
SET v_required = '';
IF v_FieldCheckNull = 'A' OR v_FieldCheckNull = 'Y' THEN
SET v_required = ' "required": true,';
END IF;
-- 加入簡易排版功能, type=block
-- v2: block / group
CALL zen_create_json_comps_block(p_uuid,p_FunctionTag,p_code_id,v_group,v_FieldBlock,v_block,v_inow);
-- by 元件產生設定內容, 並寫入暫存
IF v_FieldObject = 'formula' THEN
CALL zen_create_json_comps_formula(p_uuid,v_FieldObject,v_FieldName,v_FieldCN,v_picker_tag,v_inow);
ELSEIF v_FieldObject = 'picker' THEN
CALL zen_create_json_comps_picker(p_uuid,p_FunctionTag,v_FieldName,v_FieldCN,v_picker_tag,p_pk,v_FieldCheckNull,v_inow);
ELSEIF v_FieldObject = 'transfer' THEN
CALL zen_create_json_comps_transfer(p_uuid,v_FieldName,v_FieldCN,v_picker_tag,p_code_id,v_inow);
ELSEIF LOCATE('cycle-',v_FieldObject) > 0 THEN
CALL zen_create_json_comps_cycles(p_uuid,v_FieldObject,v_FieldName,v_FieldCN,v_inow);
ELSEIF v_FieldSH = 'Y' THEN
CALL zen_create_json_comps_others(
p_uuid,p_FunctionTag,p_code_id,v_FieldObject,p_tblName,p_pk,
v_FieldName,v_FieldCN,v_fieldro,v_fielddefault,v_FieldDS,v_FieldSH,
v_FieldCheckNull,v_required,p_query_type,v_picker_tag,v_fieldfm,v_inow
);
END IF;
SET v_inow = v_inow + 1;
END WHILE;
END //
DELIMITER ;