#include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) Commentary : public xframe { public: string m_EntityID; string m_EntityType; string m_EntityConnect; string m_ConnectID; control__ m_Edit; html__ m_Html; combobox__ m_cb; public: BindComputerDlgNew(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} public: static BindComputerDlgNew* CreateInstance(void* implPtr, void* hWnd) { BindComputerDlgNew* pWin = new BindComputerDlgNew(implPtr, (HWND)hWnd); return pWin; } string GetGuid() { return TApp::GetGuid(); } int Init() { if (m_EntityID == "") return -1; xml__ x = new xml__; x.setNativePointer(x.CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("EntityID", m_EntityID); arg.AddArg("EntityType", m_EntityType); arg.AddArg("EntityConnect", m_EntityConnect); if (url::get("/sale/data/Commentary/entity/notelist", arg.GetString(), x) == 1) { //trace(x.GetXml()); m_Html.SetContent(x.GetXml()); m_Html.Redraw(); } return 1; } int AppendItem(xml__ x, msxml::IXMLDOMElement r, string name, string value) { var e = x.GetXmlDoc().createElement(name); e.text = value; r.appendChild(e); return 1; } int showAtt() { xnode__ anode = new xnode__; anode.setNativePointer(GetAgentNode("att")); int s = combobox__::GetCount(m_cb.GetId()); xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; //trace(str); int i = 0; for (i = 0; i < s; i++) { string tmp = combobox__::GetLBText(m_cb.GetId(), i); //trace(tmp); var e = x.GetXmlDoc().createElement("hbox"); e.setAttribute("height", "20"); var l = x.GetXmlDoc().createElement("xlabel"); l.setAttribute("caption", "" + tmp); var b = x.GetXmlDoc().createElement("xtoolbutton"); b.setAttribute("width", "18"); b.setAttribute("name", "att_" + i.toString()); b.setAttribute("image", "1,5"); e.appendChild(l); e.appendChild(b); ele.appendChild(e); var g = x.GetXmlDoc().createElement("xlabel"); g.setAttribute("height", "2"); g.setAttribute("style", "background-color:#000000"); ele.appendChild(g); } //trace(ele.xml); SetAgentNodeContent(anode, ele.xml); anode.SetWidthHeight(-1, i * 20 + 1); return 1; } int addAtt() { string guid = TApp::GetGuid(); string ret = xaserver__::UploadFile("attachment", guid + ".jpg", this.GetHWND(), "", false); //trace(ret); int nIndex = combobox__::AddItem(m_cb.GetId(), ret, guid + ".jpg"); showAtt(); return 1; } int delAtt(string no) { int nIndex = no.toInt(); combobox__::DeleteItem(m_cb.GetId(), nIndex); showAtt(); return 1; } msxml::IXMLDOMElement getAtt() { int s = combobox__::GetCount(m_cb.GetId()); xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; //trace(str); int i = 0; for (i = 0; i < s; i++) { string tmp = combobox__::GetLBText(m_cb.GetId(), i); string tmp2 = combobox__::GetitemData(m_cb.GetId(), i); var e = x.GetXmlDoc().createElement("item"); e.setAttribute("name", "" + tmp); e.setAttribute("file", "" + tmp2); ele.appendChild(e); } return ele; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { if (comdid == "xmOK") { if (m_EntityID == "") return 1; xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); string value = m_Edit.GetText(); if (value == "") { alert("ÇëÌîдÅú×¢£¡"); return 1; } x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; AppendItem(x, ele, "CommentaryID", GetGuid()); AppendItem(x, ele, "EntityID", m_EntityID); AppendItem(x, ele, "EntityType", m_EntityType); AppendItem(x, ele, "Remark", value); AppendItem(x, ele, "ParentConnect", m_EntityConnect); AppendItem(x, ele, "ParentCommentaryID", m_ConnectID); AppendItem(x, ele, "CreatorID", xaserver__::GetUserId()); ele.appendChild(getAtt()); //trace(ele.xml); arg.AddArg("content", "" + ele.xml + ""); if (getUrl("/workflow/action/Commentary/bill.update", arg.GetString(), x) == 1) { //trace(x.GetXml()); //alert("Ìí¼Ó³É¹¦!"); m_Edit.SetText(""); combobox__::ResetContent(m_cb.GetId()); Init(); showAtt(); return 1; } else { alert("Ìí¼Óʧ°Ü!"); return -1; } } else if (comdid == "xmAtt") { addAtt(); } else if (comdid.left(4) == "att_") { delAtt(comdid.right(comdid.length() - 4)); } else { CloseWindow(); } return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt, int param) { return OnCmdDispatch(evt.pStrID); } int OnHtmlClick(ref TNotifyEvent evt, int p) { ref HTMLNMHDR p = evt.pnmh; const string d = m_Html.GetData(p.object); if (d == "") return -1; string file = d.mid(0, d.find("|##@@|", 0)); string name = d.mid(d.find("|##@@|", 0) + 6, d.length()); xaserver__::CreateDirectory("C:/Temp"); int openRet = xaserver__::DownLoadFile(GetServerUrl(), "/business/supplierattachment/" + file, name, "C:/Temp/" + name); if (openRet < 0) { alert("Îļþ´ò¿ªÊ§°Ü£¡"); return -1; } openRet = win__::ShellExecute(0, "open", "C:/Temp/" + name, "", "", 5); if (openRet < 32) { alert("Îļþ´ò¿ªÊ§°Ü2£¡"); return -1; } return -1; } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND", OnXCommand); AttachEvent("note", "HTC_OBJECTCLICKED", OnHtmlClick); } int onload() { OnAttachEvent(); m_Edit = new control__; m_Edit.setNativePointer(GetControl("Txt")); m_Html = new html__; m_Html.setNativePointer(GetControl("note")); m_cb = new html__; m_cb.setNativePointer(GetControl("attlist")); m_EntityID = ""; m_EntityType = ""; m_EntityConnect = ""; m_ConnectID = ""; if (this.GetParam()) { xaserverarg__ arg = this.GetParam(); m_EntityID = arg.GetArgString("EntityID"); m_EntityType = arg.GetArgString("m_EntityType"); m_EntityConnect = arg.GetArgString("m_EntityConnect"); } Init(); return 1; } ] ] ]