Files
Omni_wizard.db/zen_create_json_prepare_aside.txt
2026-02-06 14:44:08 +08:00

95 lines
3.9 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE zen_create_json_prepare_aside(
IN p_uuid VARCHAR(100),
IN p_aside_setup VARCHAR(100)
)
/*
功能 : amis Wizard 產生 json UI 的核心程式(每個 Component 有各自的 json UI 定義)
描述: 本段 sp 主要是設定 aside 中的 json 定義
建立日期 : 2023/12/20
修改歷史
項目 誰 日期 修改說明
==== ========== ========== ================================================
1 Michael 2023/12/20 根據 v1.0 重構
*/
BEGIN
DECLARE v_aside_setup_id VARCHAR(100);
DECLARE v_aside_field VARCHAR(100);
DECLARE v_aside_filter VARCHAR(600);
DECLARE v_aside_setup_data TEXT;
DECLARE v_ip VARCHAR(100);
DECLARE v_db VARCHAR(100);
DECLARE v_pos INT;
DECLARE v_crlf VARCHAR(2);
SET v_crlf = CONCAT(CHAR(13), CHAR(10));
SET v_ip = '${ls:base_ip}';
SET v_db = '${ls:base_db}';
/*
如果 zen_function.aside_setup 有設定, 程式就要加入下面這一段(@aside_setup@)
zen_function.aside_setup 的內容, 必須等於關聯 table 的欄位名稱(左方關聯的欄位)
zen_function.aside_field 的內容, 是 右方主 table 的欄位名稱(和左方關聯的欄位)
例如在 pbi 的 aside 是關聯 pms_sprint.sprintid, 就必須設定 aside_setup=sprintid, 右方資料 pbi, 關聯欄位是 aside_field=sprintid(通常會一樣, 但如果不同, 也可以分別設定)
basperson 的 aside 是關聯 basdepartment.departmentid, 就必須設定 departmentid
*/
-- 去除 @aside_setup 中的 tag
SET v_pos = LOCATE('.',p_aside_setup);
IF v_pos > 0 THEN
SET v_aside_setup_id = SUBSTRING(p_aside_setup,v_pos+1,LENGTH(p_aside_setup));
ELSE
SET v_aside_setup_id = p_aside_setup;
END IF;
SET v_aside_setup_data = '';
IF IFNULL(p_aside_setup,'') <> '' THEN
SET v_aside_setup_data = CONCAT(
' "asideResizor": true,', v_crlf,
' "asideMinWidth": 150,', v_crlf,
' "asideMaxWidth": 400,', v_crlf,
' "aside": {', v_crlf,
' "type": "form",', v_crlf,
' "className": "bg-green-100",', v_crlf,
' "wrapWithPanel": false,', v_crlf,
' "target": "dataList",', v_crlf,
' "submitOnInit": true,', v_crlf,
' "body": [{', v_crlf,
' "type": "input-tree",', v_crlf,
' "initiallyOpen": true,', v_crlf,
' "heightAuto": true,', v_crlf,
' "name": "',v_aside_setup_id,'",', v_crlf,
' "inputClassName": "no-border h-full",', v_crlf,
' "submitOnChange": true,', v_crlf,
' "selectFirst": false,', v_crlf,
' "source": {', v_crlf,
' "method": "post",', v_crlf,
' "url": "',v_ip,'/xapi/v2/',v_db,'/get_treedata/6/",', v_crlf,
' "data": {', v_crlf,
' "para01": "',p_aside_setup,'"', v_crlf,
' },', v_crlf,
' "dataType": "form"', v_crlf,
' }', v_crlf,
' }]', v_crlf,
' },');
IF IFNULL(v_aside_field,'') = '' THEN
SET v_aside_field = v_aside_setup_id;
END IF;
SET v_aside_filter = CONCAT(
'"_id_": "${',v_aside_setup_id,'}",', v_crlf,
' "_field_": "',v_aside_field,'",');
-- 寫入暫存表
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'aside_setup',v_aside_setup_data,NOW());
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'aside_filter',v_aside_filter,NOW());
ELSE
-- 沒有資料也要填空白
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'aside_setup','',NOW());
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'aside_filter','',NOW());
END IF;
END //
DELIMITER ;