From 961b8ca44057298551291ca4d14280a0ac7bc753 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期三, 17 七月 2024 17:50:37 +0800
Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj

---
 jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp |  333 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 333 insertions(+), 0 deletions(-)

diff --git a/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp
new file mode 100644
index 0000000..3624178
--- /dev/null
+++ b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp
@@ -0,0 +1,333 @@
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) BugListWin : public xframe
+	{
+	public:
+		xdwgrid	dw_list;
+		xnode	m_agentNode;	//Agent Condition
+
+		xstring m_EntityID;
+		xstring m_EntityType;
+
+		htmlctrl m_Html;
+		xcontrol m_Edit;
+		xcombobox m_cb;
+	public:
+		BugListWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static BugListWin* CreateInstance(void* implPtr, void* hWnd)
+		{
+			BugListWin* pWin = new BugListWin(implPtr, (HWND)hWnd);
+			return pWin;
+		}
+		int SetAgent()
+		{
+			xstring xfNodeAgentArea = L"agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if (m_agentNode)
+			{
+				SetAgentNode(anode, m_agentNode);
+			}
+			else
+			{
+				KXMLDOMElement xframeElement = GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
+				if (agent)
+				{
+					xstring s = agent.xml();
+					m_agentNode = SetAgentNode(anode, s);
+				}
+			}
+			return 1;
+		}
+
+		int OnRowChanged(TEvent* evt, int p)
+		{
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			int row = hdr.row;
+
+			m_EntityID = dw_list.GetGuid(row);
+			RetrieveNote(row);
+
+			return 1;
+		}
+
+		static stdcall int GetModuleFileName(int hModule, xstring lpFileName, int nSize) native from "kernel32.dll" alias "GetModuleFileNameW";
+		static stdcall int PathRemoveFileSpec(xstring lpFileName) native from "shlwapi.dll" alias "PathRemoveFileSpecW";
+
+		xstring GetModulePath()
+		{
+			xstring str = L"";
+			str = str.space(255);
+			GetModuleFileName(0, str, 250);
+			PathRemoveFileSpec(str);
+			return str;
+		}
+
+		xstring GetModuleTmpPath()
+		{
+			xstring str = L"";
+			str = str.space(255);
+			GetModuleFileName(0, str, 250);
+			PathRemoveFileSpec(str);
+			xstring tmp = str + L"\\Temp";
+			xaserver::CreateDirectory(tmp);
+			return tmp;
+		}
+
+		int RetrieveNote(int row)
+		{
+			if (row == 0)	row = dw_list.GetRow();
+			if (row < 1) return 1;
+
+			xstring EntityID = dw_list.GetGuid(row);
+			xml x ;
+		
+			xaserverarg arg ;
+			
+			arg.AddArg(L"EntityID", EntityID);
+			if (xurl::get(L"/sale/data/Commentary/entity/notelist", arg.GetString(), x) == 1)
+			{
+				m_Html.SetContent(x.xml());
+				m_Html.Redraw();
+			}
+			return 1;
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(TEvent* evt, LPARAM param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(xstring comdid)
+		{
+			if (comdid == L"xmAdd")
+			{
+				OpenWindow(L"dev:xpage[BugMaint.Developer.hxsoft.vx]", 0);
+				return 1;
+			}
+			else if (comdid == L"xmRetrieve")
+			{
+				OnRetrieve();
+				return 1;
+			}
+			else if (comdid == L"xmAtt")
+			{
+				addAtt();
+			}
+			else if (comdid == L"xmMsg")
+			{
+				OnAddItem();
+				return 1;
+			}
+			else if (comdid == L"xmDelete")
+			{
+				OnDelete();
+				return 1;
+			}
+			return 0;
+		}
+
+		int OnDelete()
+		{
+			int row = dw_list.GetRow();
+			if (row < 1)
+				return 1;
+			KXMLDOMElement ele = dw_list.GetRowElement(row);
+			xstring BugListID = ele.selectSingleNode(L"BugListID").text();
+			xml x ;
+			
+			xaserverarg arg ;
+			
+			arg.AddArg(L"BugListID", BugListID);
+			if (getUrl(L"/sale/data/BugList/delete/buglist", arg.GetString(), x) != 1)
+			{
+				xstring error = x.text();
+				alert(L"err:" + error);
+				return 1;
+			}
+			alert(x.text());
+			OnRetrieve();
+			return 1;
+		}
+
+		int addAtt()
+		{
+			xstring guid = publiccode::GetGuid();
+			xstring str = guid.left(2);
+			xstring ret = xaserver::UploadFile(L"attachment" + str, guid + L".jpg", GetHWND(), L"", false);
+			OnAddItem(ret, guid + L".jpg");
+			return 1;
+		}
+
+		//命令处理事件
+		int OnXCommand(TEvent* evt, LPARAM param)
+		{
+			return OnCmdDispatch(evt->xcommand.pStrID);
+		}
+
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&BugListWin::OnXCommand);
+			//获取焦点事件,用于重置工具条/sale/data/buglist/list/buglist"
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&BugListWin::OnSetFocus);
+			AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&BugListWin::OnRowChanged);//绑定行更改触发事件OnRowChanged
+			AttachEvent(L"note", L"HTC_OBJECTCLICKED", (FEvent)&BugListWin::OnHtmlClick);
+			return 1;
+		}
+
+		int OnHtmlClick(TEvent* evt, int p)
+		{
+			ref  HTMLNMHDR p = evt.pnmh;
+			const xstring d = m_Html.GetData(p.object);
+			if (d == L"") return -1;
+			xstring file = d.mid(0, d.find(L"|##@@|", 0));
+			xstring name = d.mid(d.find(L"|##@@|", 0) + 6, d.length());
+
+			xstring str = file.left(2);
+			xstring ext = L"";
+			if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
+			xstring sfile = file.left(file.length() - 4);
+			int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file, L"", GetModuleTmpPath() + L"\\" + sfile + ext);
+			if (openRet < 0)
+			{
+				alert(L"文件打开失败1!");
+				return -1;
+			}
+			openRet = ShellExecute(0, L"open", GetModuleTmpPath() + L"\\" + sfile + ext, L"", L"", 5);
+			if (openRet < 32)
+			{
+				alert(L"文件打开失败2!");
+				return -1;
+			}
+
+			return -1;
+		}
+
+		int AppendItem(xml x, KXMLDOMElement r, xstring name, xstring value)
+		{
+			KXMLDOMElement e = x.createElement(name);
+			e.text() = value;
+			r.appendChild(e);
+			return 1;
+		}
+
+		KXMLDOMElement getAtt(xstring source = L"", xstring file = L"")
+		{
+			xml x ;
+			
+			x.loadXML(L"<Attachment/>");
+			KXMLDOMElement ele = x.documentElement();
+			KXMLDOMElement e = x.createElement(L"item");
+			e.setAttribute(L"name", source);
+			e.setAttribute(L"file", file);
+			ele.appendChild(e);
+
+			return ele;
+		}
+
+		int OnAddItem(xstring source = L"", xstring file = L"")
+		{
+
+			xml x ;
+			
+			xaserverarg arg ;
+			
+			xstring value = m_Edit.GetText();
+			if (value == L"")
+			{
+				if (source == L"")
+				{
+					alert(L"请填写批注!");
+					return 1;
+				}
+			}
+
+			x.loadXML(L"<Commentary update.new='1' update.modify='1'/>");
+			KXMLDOMElement ele = x.documentElement();
+			AppendItem(x, ele, L"CommentaryID", publiccode::GetGuid());
+			AppendItem(x, ele, L"EntityID", m_EntityID);
+			AppendItem(x, ele, L"EntityType", m_EntityType);
+			AppendItem(x, ele, L"Remark", value);
+			//AppendItem(x, ele, L"ParentConnect", m_EntityConnect);
+			//AppendItem(x, ele, L"ParentCommentaryID", m_ConnectID);
+			AppendItem(x, ele, L"CreatorID", xaserver::GetUserId());
+			ele.appendChild(getAtt(source, file));
+
+			arg.AddArg(L"content", L"<root>" + (xstring)ele.xml() + L"</root>");
+
+			if (getUrl(L"/workflow/action/Commentary/bill.update", arg.GetString(), x) == 1)
+			{
+				m_Edit.SetText(L"");
+				RetrieveNote(0);
+				return 1;
+			}
+			else
+			{
+				alert(L"添加失败!");
+				return -1;
+			}
+		}
+
+		int  OnRetrieve()
+		{
+			xml x ;
+			
+			xaserverarg arg ;
+			
+			if (getUrl(L"/sale/data/BugList/list/buglist", arg.GetString(), x) != 1)
+			{
+				trace(x.text());
+				return -1;
+			}
+			else
+			{
+				dw_list.Retrieve(x);
+				dw_list.SetReadOnly(true);
+				dw_list.Redraw();
+				RetrieveNote(0);
+			}
+
+			return 1;
+		}
+
+
+		int onload()
+		{
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Developer/bug/list");
+
+			m_Html = GetControl(L"note");
+			m_Edit = GetControl(L"Txt");
+
+			m_EntityID = L"";
+			m_EntityType = L"BugList";
+
+			dw_list.SetColumnState(L"BugListID", false);
+			OnRetrieve();
+			OnAttachEvent();
+
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+
+			return 1;
+		}
+	};
\ No newline at end of file

--
Gitblit v1.9.3