DlgCheckInDaily.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. // DlgCheckInDaily.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "YLGL.h"
  5. #include "DlgCheckInDaily.h"
  6. #include "GetClientInfo.h"
  7. #include "ShowRemark.h"
  8. // CDlgCheckInDaily 对话框
  9. IMPLEMENT_DYNAMIC(CDlgCheckInDaily, CDialog)
  10. CDlgCheckInDaily::CDlgCheckInDaily(CWnd* pParent /*=NULL*/)
  11. : CDialog(CDlgCheckInDaily::IDD, pParent)
  12. , m_dt_begin_query(COleDateTime::GetCurrentTime())
  13. , m_dt_end_query(COleDateTime::GetCurrentTime())
  14. , m_staff(g_user.name)
  15. , m_customer(_T(""))
  16. , m_strWorkContent(_T(""))
  17. , m_strTomorrowPlay(_T(""))
  18. , m_strEvalulate(_T(""))
  19. , m_strQueryWord(_T(""))
  20. , m_id(_T(""))
  21. , m_dt_check(COleDateTime::GetCurrentTime())
  22. , m_dt_fill(COleDateTime::GetCurrentTime())
  23. {
  24. }
  25. CDlgCheckInDaily::~CDlgCheckInDaily()
  26. {
  27. }
  28. void CDlgCheckInDaily::DoDataExchange(CDataExchange* pDX)
  29. {
  30. CDialog::DoDataExchange(pDX);
  31. DDX_Control(pDX, IDC_LIST, m_list);
  32. DDX_Control(pDX, CBOX_DEPT, m_cbox_dept);
  33. DDX_Control(pDX, CBOX_STAFF, m_cbox_staff);
  34. DDX_DateTimeCtrl(pDX, DT_QUERY_BEGIN_TIME, m_dt_begin_query);
  35. DDX_DateTimeCtrl(pDX, DT_QUERY_END_TIME, m_dt_end_query);
  36. DDX_Text(pDX, ET_STAFF, m_staff);
  37. DDX_Text(pDX, ET_CUSTOMER, m_customer);
  38. DDX_Text(pDX, ET_WORK_CONTENT, m_strWorkContent);
  39. DDX_Text(pDX, ET_TOMMOROW_PLAN, m_strTomorrowPlay);
  40. DDX_Text(pDX, ET_EVALULATE, m_strEvalulate);
  41. DDX_Text(pDX, ET_QUERY_WORD, m_strQueryWord);
  42. DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_dt_check);
  43. DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_dt_fill);
  44. }
  45. BEGIN_MESSAGE_MAP(CDlgCheckInDaily, CDialog)
  46. ON_WM_SYSCOMMAND()
  47. ON_WM_CTLCOLOR()
  48. ON_BN_CLICKED(CHECK_DEPT, &CDlgCheckInDaily::OnBnClickedDept)
  49. ON_BN_CLICKED(CHECK_STAFF, &CDlgCheckInDaily::OnBnClickedStaff)
  50. ON_NOTIFY(DTN_DATETIMECHANGE, DT_QUERY_BEGIN_TIME, &CDlgCheckInDaily::OnDtnDatetimechangeQueryBeginTime)
  51. ON_NOTIFY(DTN_DATETIMECHANGE, DT_QUERY_END_TIME, &CDlgCheckInDaily::OnDtnDatetimechangeQueryEndTime)
  52. ON_CBN_SELCHANGE(CBOX_DEPT, &CDlgCheckInDaily::OnCbnSelchangeDept)
  53. ON_CBN_CLOSEUP(CBOX_STAFF, &CDlgCheckInDaily::OnCbnCloseupStaff)
  54. ON_BN_CLICKED(BTN_QUERY, &CDlgCheckInDaily::OnBnClickedQuery)
  55. ON_BN_CLICKED(BTN_SAVE, &CDlgCheckInDaily::OnBnClickedSave)
  56. ON_BN_CLICKED(BTN_RESET, &CDlgCheckInDaily::OnBnClickedReset)
  57. ON_BN_CLICKED(BTN_DELETE_RECORD, &CDlgCheckInDaily::OnBnClickedDeleteRecord)
  58. ON_NOTIFY(NM_CLICK, IDC_LIST, &CDlgCheckInDaily::OnNMClickList)
  59. ON_BN_CLICKED(BTN_FIND, &CDlgCheckInDaily::OnBnClickedFind)
  60. ON_BN_CLICKED(BTN_EVALULATE, &CDlgCheckInDaily::OnBnClickedEvalulate)
  61. END_MESSAGE_MAP()
  62. // CDlgCheckInDaily 消息处理程序
  63. BOOL CDlgCheckInDaily::OnInitDialog()
  64. {
  65. CDialog::OnInitDialog();
  66. // TODO: 在此添加额外的初始化
  67. CRect rcOldWnd;
  68. GetWindowRect(rcOldWnd);
  69. // 移动窗口;
  70. MoveWindow(&g_rc);
  71. CRect rcWnd;
  72. GetWindowRect(rcWnd);
  73. // 移动list;
  74. CRect rcList;
  75. m_list.GetWindowRect(rcList);
  76. rcList.right = rcWnd.right - 15;
  77. rcList.bottom = rcWnd.bottom - 15;
  78. ScreenToClient(rcList);
  79. m_list.MoveWindow(rcList);
  80. // 高差, 重新布局;
  81. INT nDValue = rcWnd.Height() - rcOldWnd.Height();
  82. if ( nDValue > 0 )
  83. {// 30 + 25;
  84. CRect rcCtrl;
  85. CWnd *pWnd = NULL;
  86. //nDValue -= 25;
  87. INT nValue = nDValue/3;
  88. pWnd = GetDlgItem(ET_WORK_CONTENT);
  89. pWnd->GetWindowRect(rcCtrl);
  90. rcCtrl.bottom += nValue;
  91. ScreenToClient(rcCtrl);
  92. pWnd->MoveWindow(rcCtrl);
  93. //////////////////////////////////////////////////////////////////////////
  94. pWnd = GetDlgItem(IDC_STATIC1);
  95. pWnd->GetWindowRect(rcCtrl);
  96. rcCtrl.top += nValue;
  97. rcCtrl.bottom += nValue*2;
  98. ScreenToClient(rcCtrl);
  99. pWnd->MoveWindow(rcCtrl);
  100. pWnd = GetDlgItem(ET_TOMMOROW_PLAN);
  101. pWnd->GetWindowRect(rcCtrl);
  102. rcCtrl.top += nValue;
  103. rcCtrl.bottom += nValue*2;
  104. ScreenToClient(rcCtrl);
  105. pWnd->MoveWindow(rcCtrl);
  106. /* pWnd = GetDlgItem(BTN_ADD_TOMORROW_PLAN);
  107. pWnd->GetWindowRect(rcCtrl);
  108. rcCtrl.top += nValue;
  109. rcCtrl.bottom += nValue;
  110. ScreenToClient(rcCtrl);
  111. pWnd->MoveWindow(rcCtrl);*/
  112. //////////////////////////////////////////////////////////////////////////
  113. pWnd = GetDlgItem(IDC_STATIC2);
  114. pWnd->GetWindowRect(rcCtrl);
  115. rcCtrl.top += 2*nValue;
  116. rcCtrl.bottom += nValue*3;
  117. ScreenToClient(rcCtrl);
  118. pWnd->MoveWindow(rcCtrl);
  119. pWnd = GetDlgItem(ET_EVALULATE);
  120. pWnd->GetWindowRect(rcCtrl);
  121. rcCtrl.top += 2*nValue;
  122. rcCtrl.bottom += 3*nValue;
  123. ScreenToClient(rcCtrl);
  124. pWnd->MoveWindow(rcCtrl);
  125. pWnd = GetDlgItem(BTN_EVALULATE);
  126. pWnd->GetWindowRect(rcCtrl);
  127. rcCtrl.top += 2*nValue;
  128. rcCtrl.bottom += 2*nValue;
  129. ScreenToClient(rcCtrl);
  130. pWnd->MoveWindow(rcCtrl);
  131. //////////////////////////////////////////////////////////////////////////
  132. pWnd = GetDlgItem(BTN_SAVE);
  133. pWnd->GetWindowRect(rcCtrl);
  134. rcCtrl.top += 3*nValue;
  135. rcCtrl.bottom += 3*nValue;
  136. ScreenToClient(rcCtrl);
  137. pWnd->MoveWindow(rcCtrl);
  138. pWnd = GetDlgItem(BTN_RESET);
  139. pWnd->GetWindowRect(rcCtrl);
  140. rcCtrl.top += 3*nValue;
  141. rcCtrl.bottom += 3*nValue;
  142. ScreenToClient(rcCtrl);
  143. pWnd->MoveWindow(rcCtrl);
  144. pWnd = GetDlgItem(BTN_DELETE_RECORD);
  145. pWnd->GetWindowRect(rcCtrl);
  146. rcCtrl.top += 3*nValue;
  147. rcCtrl.bottom += 3*nValue;
  148. ScreenToClient(rcCtrl);
  149. pWnd->MoveWindow(rcCtrl);
  150. }
  151. // 初始化list列头;
  152. m_list.SetHeadings(
  153. _T("id, 60"),
  154. _T("部门, 120"),
  155. _T("人员, 120"),
  156. _T("客户全称, 120"),
  157. _T("日期, 60"),
  158. _T("填写日期, 120"),
  159. _T("工作内容,60"),
  160. _T("明日计划,60"),
  161. _T("领导评定,60"),
  162. _T("状态,60"),
  163. NULL);
  164. // 删除记录;
  165. GetDlgItem(BTN_DELETE_RECORD)->EnableWindow(IsHasRights2new(49));
  166. // 评定;
  167. GetDlgItem(BTN_EVALULATE)->EnableWindow(IsHasRights2new(53));
  168. //((CEdit*)GetDlgItem(ET_EVALULATE))->SetReadOnly(!IsHasRights2new(53));
  169. ((CButton*)GetDlgItem(CHECK_DEPT))->SetCheck(FALSE);
  170. ((CButton*)GetDlgItem(CHECK_STAFF))->SetCheck(FALSE);
  171. m_cbox_dept.EnableWindow(FALSE);
  172. m_cbox_staff.EnableWindow(FALSE);
  173. // 获取部门信息,并初始cbox;
  174. GetDepartment();
  175. COleDateTimeSpan tSpan(7, 0, 0, 0);
  176. m_dt_begin_query -= tSpan;
  177. UpdateData(FALSE);
  178. GetCheckInDailyInfo();
  179. return TRUE; // return TRUE unless you set the focus to a control
  180. // 异常: OCX 属性页应返回 FALSE
  181. }
  182. void CDlgCheckInDaily::OnOK()
  183. {
  184. // TODO: 在此添加专用代码和/或调用基类
  185. FillList();
  186. //CDialog::OnOK();
  187. }
  188. void CDlgCheckInDaily::OnCancel()
  189. {
  190. // TODO: 在此添加专用代码和/或调用基类
  191. CDialog::OnCancel();
  192. }
  193. void CDlgCheckInDaily::OnSysCommand(UINT nID, LPARAM lParam)
  194. {
  195. // TODO: 在此添加消息处理程序代码和/或调用默认值
  196. if (nID == SC_MOVE || nID == 0xF012)
  197. return;
  198. CDialog::OnSysCommand(nID, lParam);
  199. }
  200. HBRUSH CDlgCheckInDaily::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  201. {
  202. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  203. // TODO: 在此更改 DC 的任何属性
  204. switch(nCtlColor)
  205. {
  206. case CTLCOLOR_DLG:
  207. {
  208. return CreateSolidBrush(g_clr_dlg);
  209. }
  210. break;
  211. case CTLCOLOR_BTN:
  212. break;
  213. case CTLCOLOR_STATIC:
  214. {
  215. pDC->SetBkMode(TRANSPARENT);
  216. return CreateSolidBrush(g_clr_dlg);
  217. }
  218. break;
  219. }
  220. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  221. return hbr;
  222. }
  223. void CDlgCheckInDaily::OnBnClickedDept()
  224. {
  225. BOOL bCheck = ((CButton*)GetDlgItem(CHECK_DEPT))->GetCheck();
  226. if ( bCheck )
  227. {
  228. ((CButton*)GetDlgItem(CHECK_STAFF))->SetCheck(FALSE);
  229. m_cbox_staff.SetCurSel(-1);
  230. m_cbox_staff.EnableWindow(FALSE);
  231. m_cbox_dept.EnableWindow();
  232. }
  233. else
  234. {
  235. m_cbox_dept.SetCurSel(-1);
  236. FillList();
  237. }
  238. }
  239. void CDlgCheckInDaily::OnBnClickedStaff()
  240. {
  241. BOOL bCheck = ((CButton*)GetDlgItem(CHECK_STAFF))->GetCheck();
  242. if ( bCheck )
  243. {
  244. ((CButton*)GetDlgItem(CHECK_DEPT))->SetCheck(FALSE);
  245. m_cbox_dept.SetCurSel(-1);
  246. m_cbox_dept.EnableWindow(FALSE);
  247. m_cbox_staff.EnableWindow();
  248. }
  249. else
  250. {
  251. m_cbox_staff.SetCurSel(-1);
  252. FillList();
  253. }
  254. }
  255. void CDlgCheckInDaily::GetDepartment()
  256. {
  257. g_sendhead.bsql = 0;
  258. g_sendhead.code[0] = 3;
  259. g_sendhead.tabcount = 1;
  260. g_pMainWnd->ProcessChatMessageRequest2(3);
  261. if (g_bSendOK == 0)return;
  262. CArray<CStringArray, CStringArray> AryDepartment;
  263. DataToArray(&AryDepartment);
  264. // 初始化CBOX_DEPT控件;
  265. for (int i = 0; i < AryDepartment.GetSize(); i++ )
  266. {
  267. m_cbox_dept.AddString(DAL::Case_3_GetDepartment(AryDepartment,i));
  268. }
  269. }
  270. void CDlgCheckInDaily::GetCheckInDailyInfo()
  271. {
  272. UpdateData(TRUE);
  273. CString strSQL;
  274. strSQL.Format(_T("[record_date] >= '%s' and [record_date] <= '%s'"), m_dt_begin_query.Format(_T("%Y-%m-%d")), m_dt_end_query.Format(_T("%Y-%m-%d")));
  275. g_sendhead.bsql = 0;
  276. g_sendhead.code[0] = 212;
  277. g_sendhead.tabcount = 1;
  278. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  279. if (g_bSendOK == 0)return;
  280. DataToArray(&m_AryCheckInDaily);
  281. CStringArray AryStaff;
  282. int nArySize = m_AryCheckInDaily.GetSize();
  283. for ( int i = 0; i < g_AryStaff.GetSize(); i++)
  284. {
  285. CString staff = DAL::GetStaffName(i);
  286. BOOL bFind = 0;
  287. for (int j = 0; j < nArySize; j++)
  288. {
  289. if (m_AryCheckInDaily.ElementAt(j).ElementAt(2) == staff)
  290. {
  291. bFind = 1;
  292. break;
  293. }
  294. }
  295. if (bFind == 0)AryStaff.Add(staff);
  296. }
  297. m_AryCheckInDaily.SetSize(nArySize + AryStaff.GetSize(), 1);
  298. for (int i = 0; i < AryStaff.GetSize(); i++)
  299. {
  300. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  301. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  302. m_AryCheckInDaily.ElementAt(nArySize + i).Add(AryStaff.ElementAt(i));
  303. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  304. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  305. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  306. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  307. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  308. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  309. m_AryCheckInDaily.ElementAt(nArySize + i).Add(_T(""));
  310. }
  311. for (int i = 0; i < m_AryCheckInDaily.GetSize(); i++)
  312. {
  313. if (!m_AryCheckInDaily.ElementAt(i).ElementAt(8).IsEmpty())
  314. {
  315. if (0 == atoi(m_AryCheckInDaily.ElementAt(i).ElementAt(9)))
  316. m_AryCheckInDaily.ElementAt(i).SetAt(9, _T("未读"));
  317. else
  318. m_AryCheckInDaily.ElementAt(i).SetAt(9, _T("已读"));
  319. }
  320. }
  321. FillList();
  322. }
  323. void CDlgCheckInDaily::FillList()
  324. {
  325. CString strStaff = _T("");
  326. CString strDepartment = _T("");
  327. INT nSelectedItem = CB_ERR;
  328. if ( CB_ERR != (nSelectedItem = m_cbox_staff.GetCurSel()) )
  329. m_cbox_staff.GetLBText(nSelectedItem, strStaff);
  330. if ( CB_ERR != (nSelectedItem = m_cbox_dept.GetCurSel()) )
  331. m_cbox_dept.GetLBText(nSelectedItem, strDepartment);
  332. UpdateData(TRUE);
  333. int nIndex = 0;
  334. m_list.m_AryList.RemoveAll();
  335. m_list.DeleteAllItems();
  336. m_list.m_AryList.SetSize(m_AryCheckInDaily.GetSize(), 1);
  337. for ( int i = 0; i < m_AryCheckInDaily.GetSize(); i++ )
  338. {
  339. if ( !strStaff.IsEmpty() && strDepartment.IsEmpty() )
  340. {// 选择员工;
  341. if ( m_AryCheckInDaily.ElementAt(i).ElementAt(2) == strStaff)
  342. {
  343. if ( m_strQueryWord.IsEmpty() )
  344. {
  345. m_list.m_AryList.ElementAt(nIndex).RemoveAll();
  346. m_list.m_AryList.ElementAt(nIndex).Copy(m_AryCheckInDaily.ElementAt(i));
  347. nIndex++;
  348. }
  349. else
  350. {
  351. if (
  352. m_AryCheckInDaily.ElementAt(i).ElementAt(2).Find(m_strQueryWord) != -1 ||
  353. //m_AryCheckInDaily.ElementAt(i).ElementAt(3).Find(m_strQueryWord) != -1 ||
  354. //m_AryCheckInDaily.ElementAt(i).ElementAt(4).Find(m_strQueryWord) != -1 ||
  355. //m_AryCheckInDaily.ElementAt(i).ElementAt(5).Find(m_strQueryWord) != -1 ||
  356. m_AryCheckInDaily.ElementAt(i).ElementAt(6).Find(m_strQueryWord) != -1 ||
  357. m_AryCheckInDaily.ElementAt(i).ElementAt(7).Find(m_strQueryWord) != -1 ||
  358. m_AryCheckInDaily.ElementAt(i).ElementAt(8).Find(m_strQueryWord) != -1 ||
  359. m_AryCheckInDaily.ElementAt(i).ElementAt(9).Find(m_strQueryWord) != -1
  360. )
  361. {
  362. m_list.m_AryList.ElementAt(nIndex).RemoveAll();
  363. m_list.m_AryList.ElementAt(nIndex).Copy(m_AryCheckInDaily.ElementAt(i));
  364. nIndex++;
  365. }
  366. }
  367. }
  368. }
  369. else if ( strStaff.IsEmpty() && !strDepartment.IsEmpty() )
  370. {// 选择部门;
  371. if ( m_AryCheckInDaily.ElementAt(i).ElementAt(1) == strDepartment)
  372. {
  373. if ( m_strQueryWord.IsEmpty() )
  374. {
  375. m_list.m_AryList.ElementAt(nIndex).RemoveAll();
  376. m_list.m_AryList.ElementAt(nIndex).Copy(m_AryCheckInDaily.ElementAt(i));
  377. nIndex++;
  378. }
  379. else
  380. {
  381. if (
  382. m_AryCheckInDaily.ElementAt(i).ElementAt(1).Find(m_strQueryWord) != -1 ||
  383. m_AryCheckInDaily.ElementAt(i).ElementAt(2).Find(m_strQueryWord) != -1 ||
  384. //m_AryCheckInDaily.ElementAt(i).ElementAt(3).Find(m_strQueryWord) != -1 ||
  385. //m_AryCheckInDaily.ElementAt(i).ElementAt(4).Find(m_strQueryWord) != -1 ||
  386. //m_AryCheckInDaily.ElementAt(i).ElementAt(5).Find(m_strQueryWord) != -1 ||
  387. m_AryCheckInDaily.ElementAt(i).ElementAt(6).Find(m_strQueryWord) != -1 ||
  388. m_AryCheckInDaily.ElementAt(i).ElementAt(7).Find(m_strQueryWord) != -1 ||
  389. m_AryCheckInDaily.ElementAt(i).ElementAt(8).Find(m_strQueryWord) != -1 ||
  390. m_AryCheckInDaily.ElementAt(i).ElementAt(9).Find(m_strQueryWord) != -1
  391. )
  392. {
  393. m_list.m_AryList.ElementAt(nIndex).RemoveAll();
  394. m_list.m_AryList.ElementAt(nIndex).Copy(m_AryCheckInDaily.ElementAt(i));
  395. nIndex++;
  396. }
  397. }
  398. }
  399. }
  400. else
  401. {// 均未选;
  402. if (
  403. m_AryCheckInDaily.ElementAt(i).ElementAt(1).Find(m_strQueryWord) != -1 ||
  404. m_AryCheckInDaily.ElementAt(i).ElementAt(2).Find(m_strQueryWord) != -1 ||
  405. m_AryCheckInDaily.ElementAt(i).ElementAt(3).Find(m_strQueryWord) != -1 ||
  406. //m_AryCheckInDaily.ElementAt(i).ElementAt(4).Find(m_strQueryWord) != -1 ||
  407. //m_AryCheckInDaily.ElementAt(i).ElementAt(5).Find(m_strQueryWord) != -1 ||
  408. m_AryCheckInDaily.ElementAt(i).ElementAt(6).Find(m_strQueryWord) != -1 ||
  409. m_AryCheckInDaily.ElementAt(i).ElementAt(7).Find(m_strQueryWord) != -1 ||
  410. m_AryCheckInDaily.ElementAt(i).ElementAt(8).Find(m_strQueryWord) != -1 ||
  411. m_AryCheckInDaily.ElementAt(i).ElementAt(9).Find(m_strQueryWord) != -1
  412. )
  413. {
  414. m_list.m_AryList.ElementAt(nIndex).RemoveAll();
  415. m_list.m_AryList.ElementAt(nIndex).Copy(m_AryCheckInDaily.ElementAt(i));
  416. nIndex++;
  417. }
  418. }
  419. }
  420. m_list.m_AryList.SetSize(nIndex,1);
  421. m_list.m_AryList.FreeExtra();
  422. m_list.SetItemCountEx(nIndex);
  423. }
  424. void CDlgCheckInDaily::OnDtnDatetimechangeQueryBeginTime(NMHDR *pNMHDR, LRESULT *pResult)
  425. {
  426. LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);
  427. // TODO: 在此添加控件通知处理程序代码.
  428. GetCheckInDailyInfo();
  429. *pResult = 0;
  430. }
  431. void CDlgCheckInDaily::OnDtnDatetimechangeQueryEndTime(NMHDR *pNMHDR, LRESULT *pResult)
  432. {
  433. LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);
  434. // TODO: 在此添加控件通知处理程序代码
  435. GetCheckInDailyInfo();
  436. *pResult = 0;
  437. }
  438. void CDlgCheckInDaily::OnCbnSelchangeDept()
  439. {
  440. FillList();
  441. }
  442. void CDlgCheckInDaily::OnCbnCloseupStaff()
  443. {
  444. FillList();
  445. }
  446. void CDlgCheckInDaily::OnBnClickedQuery()
  447. {
  448. FillList();
  449. }
  450. void CDlgCheckInDaily::OnBnClickedSave() // 保存;
  451. {
  452. UpdateData();
  453. if ( m_strWorkContent.IsEmpty() || m_strTomorrowPlay.IsEmpty() || m_customer.IsEmpty() )
  454. {
  455. AfxMessageBox(_T("资料不全!"), MB_ICONINFORMATION);
  456. return;
  457. }
  458. if ( m_dt_fill > m_dt_check )
  459. {
  460. COleDateTimeSpan tSpan = m_dt_fill - m_dt_check;
  461. if (tSpan.GetDays() > 6)
  462. {
  463. AfxMessageBox(_T("只能签到近一星期!"), MB_ICONINFORMATION);
  464. return;
  465. }
  466. }
  467. else
  468. {
  469. COleDateTimeSpan tSpan = m_dt_check - m_dt_fill;
  470. if (tSpan.GetDays() > 2)
  471. {
  472. AfxMessageBox(_T("请不要玩穿越!"), MB_ICONINFORMATION);
  473. return;
  474. }
  475. }
  476. CString strSQL = _T("");
  477. if (m_id.IsEmpty())
  478. strSQL.Format("insert into [workerreport] ([staff],[staff_dept],[customer],[check_date],[record_date],[work_content],[tomorrow_plan])values( '%s','%s','%s','%s','%s','%s','%s')",
  479. m_staff, DAL::GetStaffDepartment(m_staff), m_customer, m_dt_check.Format(_T("%Y-%m-%d")), m_dt_fill.Format(_T("%Y-%m-%d")), m_strWorkContent, m_strTomorrowPlay);
  480. else
  481. strSQL.Format("update [workerreport] set [customer]='%s',[check_date]='%s',[record_date]='%s',[work_content]='%s',[tomorrow_plan]='%s' where id=%s",
  482. m_customer, m_dt_check.Format(_T("%Y-%m-%d")), m_dt_fill.Format(_T("%Y-%m-%d")), m_strWorkContent, m_strTomorrowPlay, m_id);
  483. g_sendhead.bsql = 1;
  484. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  485. if (g_bSendOK == 0)
  486. return;
  487. AfxMessageBox(_T("保存成功!"), MB_ICONINFORMATION);
  488. // 重新查询;
  489. GetCheckInDailyInfo();
  490. }
  491. void CDlgCheckInDaily::OnBnClickedReset() // 重填;
  492. {
  493. m_id = _T("");
  494. m_staff = g_user.name;
  495. m_customer = _T("");
  496. m_strWorkContent = _T("");
  497. m_strTomorrowPlay = _T("");
  498. m_strEvalulate = _T("");
  499. m_strCheckState = _T("");
  500. m_dt_fill = GetDateTimeByString(g_date);
  501. m_dt_check = GetDateTimeByString(g_date);
  502. UpdateData(FALSE);
  503. GetDlgItem(BTN_SAVE)->SetWindowText(_T("保存"));
  504. GetDlgItem(BTN_SAVE)->EnableWindow(TRUE);
  505. }
  506. void CDlgCheckInDaily::OnBnClickedDeleteRecord() // 删除;
  507. {
  508. POSITION pos = m_list.GetFirstSelectedItemPosition();
  509. if ( pos == NULL )
  510. {
  511. AfxMessageBox(_T("请先选中您要删除的记录!"), MB_ICONINFORMATION);
  512. return;
  513. }
  514. if (AfxMessageBox(_T("确认删除此记录吗?"), MB_YESNO | MB_ICONINFORMATION) != IDYES)
  515. return;
  516. int nSelectedItem = m_list.GetNextSelectedItem(pos);
  517. m_id = m_list.GetItemText(nSelectedItem, 0);
  518. CString strSQL = _T("");
  519. strSQL.Format(_T("delete from [workerreport] where [id] = %s"), m_id);
  520. g_sendhead.bsql = 1;
  521. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  522. if (g_bSendOK == 0)return;
  523. GetCheckInDailyInfo();
  524. }
  525. void CDlgCheckInDaily::OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult)
  526. {
  527. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  528. // TODO: 在此添加控件通知处理程序代码
  529. if ( pNMItemActivate->iItem != -1 )
  530. {
  531. m_id = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(0);
  532. m_staff = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(2);
  533. m_customer = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(3);
  534. m_strWorkContent = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(6);
  535. m_strTomorrowPlay = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(7);
  536. m_strEvalulate = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(8);
  537. m_strCheckState = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(9);
  538. CString strDate = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(4);
  539. m_dt_check.SetDate(_tstoi(strDate.Mid(0,4)), _tstoi(strDate.Mid(5,2)),_tstoi(strDate.Mid(8,2)));
  540. strDate = m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(5);
  541. m_dt_fill.SetDate(_tstoi(strDate.Mid(0,4)), _tstoi(strDate.Mid(5,2)),_tstoi(strDate.Mid(8,2)));
  542. UpdateData(FALSE);
  543. GetDlgItem(BTN_SAVE)->SetWindowText("保存更改");
  544. if (g_user.name != m_staff || m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(5) != g_date || m_list.m_AryList.ElementAt(pNMItemActivate->iItem).ElementAt(8) != "")
  545. GetDlgItem(BTN_SAVE)->EnableWindow(0);
  546. else
  547. GetDlgItem(BTN_SAVE)->EnableWindow(1);
  548. }
  549. *pResult = 0;
  550. }
  551. void CDlgCheckInDaily::OnBnClickedFind() // 查找;
  552. {
  553. UpdateData();
  554. GetClientInfo dlg;
  555. if (dlg.DoModal() == IDOK)
  556. {
  557. m_customer = dlg.m_name2;
  558. UpdateData(FALSE);
  559. }
  560. }
  561. void CDlgCheckInDaily::OnBnClickedEvalulate() // 评定;
  562. {
  563. POSITION pos = m_list.GetFirstSelectedItemPosition();
  564. if ( pos == NULL )
  565. {
  566. AfxMessageBox(_T("请选择项目"), MB_ICONINFORMATION);
  567. return;
  568. }
  569. int nSelectedItem = m_list.GetNextSelectedItem(pos);
  570. m_id = m_list.GetItemText(nSelectedItem, 0);
  571. ShowRemark dlg;
  572. dlg.m_remark = m_strEvalulate;
  573. if (dlg.DoModal() == IDOK)
  574. {
  575. CString right = g_user.name + _T("示");
  576. if (dlg.m_remark.GetLength() >= right.GetLength())
  577. {
  578. if (dlg.m_remark.Right(right.GetLength()) != right)
  579. dlg.m_remark += " " + right;
  580. }
  581. else
  582. dlg.m_remark += " " + right;
  583. m_strEvalulate = dlg.m_remark;
  584. CString strSQL = _T("");
  585. strSQL.Format(_T("update [workerreport] set [assess]='%s',[state]='0' where id=%s"), m_strEvalulate, m_id);
  586. g_sendhead.bsql = 1;
  587. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  588. if (g_bSendOK == 0)
  589. return;
  590. AfxMessageBox(_T("保存成功!"), MB_ICONINFORMATION);
  591. GetCheckInDailyInfo();
  592. }
  593. }