kyy
2025-09-01 909f579cd488f5da42c1cb7b5373e3fa49bc023e
DevApp/Gs.DevApp/DevFrm/QC/DefectCode.cs
@@ -17,95 +17,160 @@
        List<FilterEntity> _filterList = new List<FilterEntity>();
        public string strType = "";//类别(普通信息,认证信息)
        /// <summary>
        /// DefectCode类的构造函数
        /// </summary>
        /// <param name="_strType">传入的类型参数(如"QC基础资料",用于标识数据类别)</param>
        public DefectCode(string _strType)
        {
            // 1. 初始化控件布局(设计器自动生成的方法,设置控件位置、大小等)
            InitializeComponent();
            // 将传入的类型参数赋值给类的成员变量(后续逻辑中使用)
            strType = _strType;
            // 2. 绑定工具栏按钮事件(加载、查询)
            // 绑定"加载"按钮点击事件:点击后触发 ToolBarMenu1_btnLoadClick 方法
            toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick;
            // 绑定"查询"按钮点击事件:点击后触发 ToolBarMenu1_btnQueryClick 方法
            this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
            // 3. 配置树形列表(tlMenu)的序号列样式
            // 设置树形列表的"序号列"宽度为50像素
            tlMenu.IndicatorWidth = 50;
            // 绑定"自定义绘制序号列"事件:自定义序号显示逻辑
            tlMenu.CustomDrawNodeIndicator += (s, ee) =>
            {
                // 判断当前绘制的是"序号列"
                if (ee.IsNodeIndicator)
                {
                    // 获取当前节点在可见列表中的索引(从0开始)
                    var index = ee.Node.TreeList.GetVisibleIndexByNode(ee.Node);
                    // 序号显示为"索引+1"(从1开始计数)
                    ee.Info.DisplayText = (index + 1).ToString();
                }
            };
            // 4. 初始加载第一页数据
            getPageList(1);
            // 5. 绑定树形列表鼠标点击事件(后续可在 TlMenu_MouseDown 中处理点击逻辑)
            this.tlMenu.MouseDown += TlMenu_MouseDown;
            // 6. 绑定"添加子节点"菜单按钮事件(右键菜单或工具栏按钮)
            this.toolStripMenuItemAdd.Click += (s, ee) =>
            {
                // 初始化节点ID(新增节点暂未生成ID,为空)
                string strGuid = "";
                // 父节点ID:如果选中了某个节点,则以该节点为父节点;否则父节点为空(顶级节点)
                string strUpGuid = "";
                if (tlMenu.FocusedNode != null)
                {
                    // 获取选中节点的"guid"字段值,作为新节点的父ID
                    strUpGuid = tlMenu.FocusedNode.GetValue("guid").ToString();
                }
                Frm_MesDefectCodeShow frm = new Frm_MesDefectCodeShow(strGuid, strUpGuid,strType);
                // 打开新增节点的弹窗(参数:节点ID、父节点ID、数据类型)
                Frm_MesDefectCodeShow frm = new Frm_MesDefectCodeShow(strGuid, strUpGuid, strType);
                // 绑定弹窗的"更新父控件"事件:弹窗关闭后刷新当前页面数据
                frm.UpdateParent += (s2, ee2) =>
                {
                    getPageList(1);
                    getPageList(1); // 重新加载第一页数据
                };
                // 以模态窗口显示弹窗(阻塞当前界面,直到弹窗关闭)
                frm.ShowDialog();
            };
            // 7. 绑定"添加根节点"菜单按钮事件
            this.toolStripMenuItemRoot.Click += (s, ee) =>
            {
                // 新增根节点:节点ID和父节点ID均为空(无父节点)
                string strGuid = "";
                string strUpGuid = "";
                // 打开新增弹窗(明确添加根节点,父ID为空)
                Frm_MesDefectCodeShow frm = new Frm_MesDefectCodeShow(strGuid, strUpGuid, strType);
                // 弹窗关闭后刷新数据
                frm.UpdateParent += (s2, ee2) =>
                {
                    getPageList(1);
                };
                frm.ShowDialog();
            };
            // 8. 绑定"删除节点"菜单按钮事件
            this.toolStripMenuItemDel.Click += (s, ee) =>
            {
                // 判断是否选中了节点(未选中则提示)
                if (tlMenu.FocusedNode != null)
                {
                    // 获取选中节点的ID和名称(用于删除确认)
                    string rowGuid = "";
                    string rowName = "";
                    rowGuid = tlMenu.FocusedNode.GetValue("guid").ToString();
                    rowName = tlMenu.FocusedNode.GetValue("defectName").ToString();
                    // 节点ID为空时提示(异常情况处理)
                    if (string.IsNullOrEmpty(rowGuid))
                    {
                        ToolBox.MsgHelper.Warning("请先选择你要操作的行!");
                        return;
                    }
                    // 弹出确认框:提示用户是否删除选中的节点
                    if (!MsgHelper.AskQuestion("你选择了【" + rowName + "】,确定删除吗?"))
                        return;
                        return; // 用户取消删除,直接返回
                    // 准备删除参数:将节点ID存入列表(适配接口参数格式)
                    List<dynamic> lst = new List<dynamic>();
                    lst.Add(rowGuid);
                    var _obj = lst;
                    try
                    {
                        // 调用WebService接口删除节点(POST请求,传入节点ID列表)
                        string strJson = UtilityHelper.HttpPost("", _webServiceName + "DeleteModel", JsonConvert.SerializeObject(_obj));
                        // 解析接口返回结果
                        ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
                        // 接口返回成功(rtnCode>0):从树形列表中移除该节点
                        if (_rtn.rtnCode > 0)
                        {
                            tlMenu.DeleteNode(tlMenu.FocusedNode);
                        }
                        // 接口返回失败:提示错误信息
                        else
                            ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
                    }
                    // 捕获异常(如网络错误、接口报错)并提示
                    catch (Exception ex)
                    {
                        ToolBox.MsgHelper.Warning("提示:" + ex.Message);
                    }
                }
            };
            // 9. 绑定"编辑节点"菜单按钮事件
            this.toolStripMenuItemEdt.Click += (s, ee) =>
            {
                // 节点ID:选中节点的ID(用于回显数据)
                string strGuid = "";
                // 父节点ID:选中节点的父ID(编辑时保持父节点不变)
                string strUpGuid = "";
                if (tlMenu.FocusedNode != null)
                {
                    strGuid = tlMenu.FocusedNode.GetValue("guid").ToString();
                    strUpGuid = tlMenu.FocusedNode.GetValue("pid").ToString();
                }
                // 打开编辑弹窗(参数:节点ID、父节点ID、数据类型)
                Frm_MesDefectCodeShow frm = new Frm_MesDefectCodeShow(strGuid, strUpGuid, strType);
                // 弹窗关闭后刷新当前页面数据
                frm.UpdateParent += (s2, ee2) =>
                {
                    getPageList(1);
@@ -113,7 +178,6 @@
                frm.ShowDialog();
            };
        }
        /// <summary>
        /// 右键弹出菜单,如果是行,增加子项目,否则增加主项
        /// </summary>