Exemplo n.º 1
0
        public Task <bool> Show(WfFormInfo p_info)
        {
            _info = p_info;
            if (!Kit.IsPhoneUI)
            {
                Height = 400;
                Width  = 500;
            }

            // 普通活动
            foreach (var recv in _info.NextRecvs.Atvs)
            {
                if (recv.Recvs != null && recv.Recvs.Count > 0)
                {
                    CreateItem(recv);
                }
            }

            // 同步活动
            if (_info.NextRecvs.SyncAtv != null)
            {
                CreateItem(_info.NextRecvs.SyncAtv);
            }

            if (_info.NextRecvs.FinishedAtv != null)
            {
                _m[1].Visibility = Visibility.Visible;
            }
            return(ShowAsync());
        }
Exemplo n.º 2
0
        public WfFormWin(WfFormInfo p_info)
        {
            InitializeComponent();

            _form        = (IWfForm)Activator.CreateInstance(p_info.FormType);
            _tab.Content = _form;
            _tab.Title   = p_info.PrcDef.Name;
            LoadMenu(p_info);
        }
Exemplo n.º 3
0
        public async void Show(long p_prciID, long p_prcID)
        {
            _prciID = p_prciID;

            // 查询流程模板id
            if (p_prcID <= 0)
            {
                p_prcID = await AtCm.GetScalar <long>("流程-实例id获取模板id", new { id = p_prciID });
            }

            var def = await WfFormInfo.GetPrcDef(p_prcID);

            if (string.IsNullOrEmpty(def.Diagram))
            {
                Kit.Warn("流程图模板内容为空!");
                return;
            }

            _sketch.ReadXml(def.Diagram);
            var atvs = await AtCm.Query("流程-活动实例状态", new { prciid = p_prciID });

            if (atvs.Count > 0)
            {
                foreach (var node in _sketch.Container.Children.OfType <SNode>())
                {
                    var dr = (from c in atvs
                              where c.Long("atvdid") == node.ID
                              select c).LastOrDefault();
                    if (dr != null)
                    {
                        switch (dr.Str("status"))
                        {
                        //活动
                        case "0":
                            node.BorderBrush = Res.醒目红色;
                            break;

                        //结束
                        case "1":
                            node.BorderBrush = Res.GreenBrush;
                            break;
                        }
                        node.Click += OnNodeClick;
                    }
                }
            }

            if (!Kit.IsPhoneUI)
            {
                Height = 700;
                Width  = 500;
            }
            Show();
        }
Exemplo n.º 4
0
        async void OnItemClick(object sender, ItemClickArgs e)
        {
            if (InputManager.IsCtrlPressed)
            {
                AtWf.OpenFormWin(new WfFormInfo(e.Row.Long("prcdid"), e.Row.Long("itemid"), WfFormUsage.Edit));
            }
            else if (e.IsChanged)
            {
                var info = new WfFormInfo(e.Row.Long("prcdid"), e.Row.Long("itemid"), WfFormUsage.Edit);
                var win  = await AtWf.CreateFormWin(info);

                info.FormClosed += (s, arg) => Refresh();
                LoadMain(win);
            }
        }
Exemplo n.º 5
0
 public WfSendCmd(WfFormInfo p_info)
 {
     _info        = p_info;
     AllowExecute = true;
 }
Exemplo n.º 6
0
 public WfDeleteCmd(WfFormInfo p_info)
 {
     _info        = p_info;
     AllowExecute = true;
 }
Exemplo n.º 7
0
        /// <summary>
        /// 加载默认菜单,自动绑定命令
        /// </summary>
        async void LoadMenu(WfFormInfo p_info)
        {
            var fv = ((FrameworkElement)_form).FindChildByType <Fv>();

            if (fv == null)
            {
                Kit.Warn($"未找到流程表单【{p_info.PrcDef.Name}】!");
                return;
            }

            Menu m = new Menu();

            if (p_info.Usage == WfFormUsage.Edit)
            {
                m.Items.Add(new Mi {
                    ID = "发送", Icon = Icons.发出, Cmd = p_info.CmdSend
                });

                if (await p_info.AllowRollback())
                {
                    m.Items.Add(new Mi {
                        ID = "回退", Icon = Icons.追回, Cmd = p_info.CmdRollback
                    });
                }

                if (!p_info.IsStartItem)
                {
                    Mi mi = new Mi {
                        ID = "签收", Icon = Icons.锁卡, IsCheckable = true, Cmd = p_info.CmdAccept
                    };
                    if (p_info.WorkItem.IsAccept)
                    {
                        mi.IsChecked = true;
                    }
                    m.Items.Add(mi);
                }

                // 合并IsDirty属性
                p_info.CmdSave.AllowExecute = fv.IsDirty;
                fv.Dirty += (s, b) => p_info.CmdSave.AllowExecute = b;
                m.Items.Add(new Mi {
                    ID = "保存", Icon = Icons.保存, Cmd = p_info.CmdSave
                });
                m.Items.Add(new Mi {
                    ID = "撤消", Icon = Icons.撤消, Cmd = fv.CmdUndo
                });

                if (p_info.AtvDef.CanDelete || p_info.AtvDef.Type == WfdAtvType.Start)
                {
                    m.Items.Add(new Mi {
                        ID = "删除", Icon = Icons.垃圾箱, Cmd = p_info.CmdDelete
                    });
                }
            }
            else if (p_info.Usage == WfFormUsage.Manage)
            {
                m.Items.Add(new Mi {
                    ID = "删除", Icon = Icons.垃圾箱, Cmd = p_info.CmdDelete
                });
                fv.IsReadOnly = true;
            }
            else
            {
                fv.IsReadOnly = true;
            }
            m.Items.Add(new Mi {
                ID = "日志", Icon = Icons.审核, Cmd = p_info.CmdLog
            });

            p_info.Menu = m;
            _tab.Menu   = m;

            _form.Init(p_info);
        }
Exemplo n.º 8
0
 public WfRollbackCmd(WfFormInfo p_info)
 {
     _info        = p_info;
     AllowExecute = true;
 }
Exemplo n.º 9
0
 public WfSaveCmd(WfFormInfo p_info)
 {
     _info = p_info;
 }
Exemplo n.º 10
0
 public WfAcceptCmd(WfFormInfo p_info)
 {
     _info        = p_info;
     AllowExecute = true;
 }
Exemplo n.º 11
0
        void ShowFormWin(Row p_row)
        {
            var info = new WfFormInfo(p_row.Long("id"), WfFormUsage.Manage);

            AtWf.OpenFormWin(info);
        }