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 ;