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
+209
View File
@@ -0,0 +1,209 @@
DELIMITER //
CREATE OR REPLACE PROCEDURE zen_create_json_comps_cycles(
IN p_uuid VARCHAR(100),
IN p_FieldObject VARCHAR(100),
IN p_FieldName VARCHAR(100),
IN p_FieldCN NVARCHAR(100),
IN p_rowid INT
)
/*
function : amis Wizard 產生 json UI 的核心程式(每個 Component 有各自的 json UI 定義)
description: 本段 sp 主要是設定 cycle 週期性類元件 的 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_code_id VARCHAR(600);
DECLARE v_cnt INT;
DECLARE v_blob_data TEXT;
DECLARE v_field_df TEXT;
DECLARE v_required TEXT;
DECLARE v_crlf VARCHAR(2);
DECLARE v_init_api TEXT;
DECLARE v_pos , v_x INT;
DECLARE v_tmp1 VARCHAR(100);
DECLARE v_tmp2 TEXT;
DECLARE v_tmp3 VARCHAR(1000);
DECLARE v_frequency VARCHAR(100);
DECLARE v_FieldWidth VARCHAR(100);
DECLARE v_fld_date VARCHAR(20);
DECLARE v_fld_time VARCHAR(20);
DECLARE v_fld_last VARCHAR(10);
DECLARE v_visibleOn VARCHAR(100);
DECLARE v_vKey VARCHAR(100);
DECLARE v_vVal VARCHAR(100);
-- 通用寫法
SET v_crlf = CONCAT(CHAR(13), CHAR(10));
SET v_blob_data = '';
SET v_field_df = '';
SET v_required = '';
SET v_frequency = 'cal_repeated_flag';
-- Insert
-- 以下和週期性設定元件相關 20230819 Michael
IF p_FieldObject = 'cycle-frequency' THEN
SET v_comps = CONCAT(
' {', v_crlf,
' "label": "', p_FieldCN, '",', v_crlf,
' "type": "radios",', v_crlf,
' "name": "', p_FieldName, '",', v_crlf,
' "inline": true,', v_crlf,
' "value": "none",', v_crlf,
' "required": true,', v_crlf,
' "options": [', v_crlf,
' {', v_crlf,
' "label": "不重複",', v_crlf,
' "value": "none"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "每天",', v_crlf,
' "value": "day"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "每週",', v_crlf,
' "value": "week"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "每月",', v_crlf,
' "value": "month"', v_crlf,
' }', v_crlf,
' ]', v_crlf,
' }'
);
ELSEIF p_FieldObject = 'cycle-weeks' THEN
SET v_comps = CONCAT(
' {', v_crlf,
' "label": "', p_FieldCN, '",', v_crlf,
' "type": "button-group-select",', v_crlf,
' "name": "', p_FieldName, '",', v_crlf,
' "size": "md",', v_crlf,
' "visibleOn": "this.', IFNULL(v_frequency, ''), ' == \\"week\\"",', v_crlf,
' "clearable": true,', v_crlf,
' "multiple": true,', v_crlf,
' "extractValue": true,', v_crlf,
' "maxLength": 7,', v_crlf,
' "options": [', v_crlf,
' {', v_crlf,
' "label": "週一",', v_crlf,
' "value": "2"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "週二",', v_crlf,
' "value": "3"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "週三",', v_crlf,
' "value": "4"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "週四",', v_crlf,
' "value": "5"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "週五",', v_crlf,
' "value": "6"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "週六",', v_crlf,
' "value": "7"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "label": "周日",', v_crlf,
' "value": "1"', v_crlf,
' }', v_crlf,
' ]', v_crlf,
' }'
);
ELSEIF p_FieldObject = 'cycle-months' THEN
SET v_x = 1;
SET v_tmp2 = '';
WHILE v_x <= 31 DO
SET v_tmp2 = CONCAT(
v_tmp2,
' {', v_crlf,
' "value": ', v_x, ',', v_crlf,
' "label": "', IF(v_x < 10, '0', ''), v_x, '"', v_crlf,
' }', IF(v_x = 31, '', ','), v_crlf
);
SET v_x = v_x + 1;
END WHILE;
SET v_comps = CONCAT(
' {', v_crlf,
' "label": "', p_FieldCN, '",', v_crlf,
' "type": "list-select",', v_crlf,
' "name": "', p_FieldName, '",', v_crlf,
' "size": "md",', v_crlf,
' "visibleOn": "this.', IFNULL(v_frequency, ''), ' == \\"month\\"",', v_crlf,
' "maxLength": 31,', v_crlf,
' "clearable": true,', v_crlf,
' "multiple": true,', v_crlf,
' "extractValue": true,', v_crlf,
' "options": [', v_crlf,
v_tmp2,
' ]', v_crlf,
' }'
);
ELSEIF p_FieldObject IN ('cycle-startdate', 'cycle-enddate') THEN
SELECT visibleOn INTO v_visibleOn FROM zen_wizard_jsondata WHERE uuid = p_uuid AND rowid = p_rowid;
-- 動態顯式否
IF IFNULL(v_visibleOn, '') <> '' THEN
SET v_pos = LOCATE(',', v_visibleOn);
IF v_pos > 0 THEN
SET v_vKey = SUBSTRING(v_visibleOn, 1, v_pos - 1);
SET v_vVal = SUBSTRING(v_visibleOn, v_pos + 1, 100);
END IF;
END IF;
SET v_comps = CONCAT(
' {', v_crlf,
' "type": "input-date",', v_crlf,
' "name": "', p_FieldName, '",', v_crlf,
' "label": "', p_FieldCN, '",', v_crlf,
' "visibleOn": "this.', v_vKey, ' != \\"', v_vVal, '\\"",', v_crlf,
' "format": "YYYY-MM-DDTHH:mm:ss.SSSZ"', v_crlf,
' }', v_crlf
);
END IF;
SET v_json_insert = v_comps;
SET v_json_update = v_comps;
SET v_json_view = v_comps;
-- Grid View 內如果要顯示, 應該只能用 text
SET v_json_gridview = CONCAT(
' {', v_crlf,
' "type": "text",', v_crlf,
' "name": "', p_FieldName, '",', v_crlf,
' "label": "', p_FieldCN, '"', v_crlf,
' }'
);
-- 寫入暫存 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_gridview = v_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;
END //
DELIMITER ;