DELIMITER // CREATE OR REPLACE PROCEDURE zen_create_json_comps_transfer( IN p_uuid VARCHAR(100), IN p_FieldName VARCHAR(100), IN p_FieldCN NVARCHAR(100), IN p_picker_tag VARCHAR(100), IN p_code_id VARCHAR(100), IN p_rowid INT ) /* function : amis Wizard 產生 json UI 的核心程式(每個 Component 有各自的 json UI 定義) description: 本段 sp 主要是設定 transfer 的 json 定義 Build Date : 2023/12/20 Modified : 2025/08/09 (轉換為 MariaDB 版本) Modify History Item Who Date Modify Docs ==== ========== ========== ================================================ 1 Michael 2023/12/20 根據 v1.0 重構 2 Assistant 2025/08/09 轉換為 MariaDB 版本 */ BEGIN DECLARE v_comps TEXT; DECLARE v_json_insert TEXT; DECLARE v_json_update TEXT; DECLARE v_json_quickedit TEXT; DECLARE v_json_gridview TEXT; DECLARE v_json_view TEXT; DECLARE v_cnt INT; DECLARE v_blob_data TEXT; DECLARE v_field_df TEXT; DECLARE v_required TEXT; DECLARE v_init_api TEXT; DECLARE v_crlf VARCHAR(2); DECLARE v_ip VARCHAR(100); DECLARE v_db VARCHAR(100); -- 通用寫法 SET v_crlf = CONCAT(CHAR(13), CHAR(10)); SET v_blob_data = ''; SET v_field_df = ''; SET v_required = ''; SET v_ip = '${ls:base_ip}'; SET v_db = '${ls:base_db}'; -- Insert SET v_comps = CONCAT( ' {', v_crlf, ' "label": "', p_FieldCN, '選擇",', v_crlf, ' "type": "transfer",', v_crlf, ' "name": "', p_FieldName, '",', v_crlf, ' "selectMode": "tree",', v_crlf, ' "source": "${config}"', v_crlf, ' }' ); SET v_json_insert = v_comps; -- update: 加入判斷, 是否為 pk 欄位 SET v_json_update = v_comps; -- view IF LOCATE('MasterDetail', p_code_id) > 0 THEN SET v_comps = CONCAT( ' {', v_crlf, ' "label": "', p_FieldCN, '",', v_crlf, ' "type": "static",', v_crlf, ' "name": "', p_FieldName, '"', v_crlf, ' }' ); ELSE SET v_comps = CONCAT( ' {', v_crlf, ' "label": "', p_FieldCN, '選擇",', v_crlf, ' "type": "transfer",', v_crlf, ' "name": "', p_FieldName, '",', v_crlf, ' "selectMode": "tree",', v_crlf, ' "disabled": true,', v_crlf, ' "source": "${config}"', v_crlf, ' }' ); END IF; SET v_json_view = v_comps; -- 寫入暫存 Table (zen_wizard_jsondata) UPDATE zen_wizard_jsondata SET json_insert = v_json_insert WHERE uuid = p_uuid AND rowid = p_rowid; UPDATE zen_wizard_jsondata SET json_update = v_json_update WHERE uuid = p_uuid AND rowid = p_rowid; UPDATE zen_wizard_jsondata SET json_quickedit = '' WHERE uuid = p_uuid AND rowid = p_rowid; UPDATE zen_wizard_jsondata SET json_gridview = '' WHERE uuid = p_uuid AND rowid = p_rowid; UPDATE zen_wizard_jsondata SET json_view = v_json_view WHERE uuid = p_uuid AND rowid = p_rowid; -- 有其他的資料要寫入 zen_wizard_tmp -- 要在 form 上新增 initApi 的設定(未完) SET v_init_api = CONCAT( ' "initApi": {', v_crlf, ' "method": "post",', v_crlf, ' "url": "', v_ip, '/xapi/v2/', v_db, '/get_orgStructure/9/",', v_crlf, ' "data": {', v_crlf, ' "para01": "', IF(p_picker_tag = '', 'person', p_picker_tag), '"', v_crlf, ' },', v_crlf, ' "dataType": "form"', v_crlf, ' },', v_crlf ); -- 更新 zen_wizard_tmp 表 UPDATE zen_wizard_tmp SET zen_value = CONCAT(zen_value, v_init_api) WHERE uuid = p_uuid AND zen_key = 'init_api_org'; END // DELIMITER ;