WebController.class.php 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373
  1. <?php
  2. namespace Addons\LuojiangKaoping\Controller;
  3. use Mp\Controller\AddonsController;
  4. /**
  5. * 洛江考评微官网后台管理控制器
  6. * @author 大鱼
  7. */
  8. class WebController extends AddonsController {
  9. public function test()
  10. {
  11. //luojiang_achievement
  12. $all_list = M('luojiang_article')->select();
  13. Vendor('HyperDown.Parser');
  14. $parser = new \Parser();
  15. foreach( $all_list as $val )
  16. {
  17. $content = $parser->makeHtml($val['content']);
  18. M('luojiang_article')->where( array('id' => $val['id']) )->save( array('content' => $content) );
  19. //id
  20. }
  21. var_dump('success');
  22. die();
  23. //LuojiangKaoping
  24. }
  25. public function eventreport()
  26. {
  27. /**
  28. Vendor('HyperDown.Parser');
  29. $parser = new \Parser();
  30. $markdown = $parser->makeHtml("![](http://wx.mnw.cn/Uploads/Pictures/20180411/5acd6d78033a2.jpg)");
  31. Vendor('Michelf.Markdown');
  32. $html = \Michelf\Markdown::defaultTransform("![](http://wx.mnw.cn/Uploads/Pictures/20180411/5acd6d78033a2.jpg)");
  33. var_dump($markdown,$html);
  34. die();
  35. **/
  36. $custom = array(
  37. 'options' => array(
  38. 'lool_to_material' => array(
  39. 'title' => '处理上报事件',
  40. 'url' => U('addon/LuojiangKaoping/web/editeventreport', array('id'=>'{id}')),
  41. 'class' => 'btn btn-primary btn-sm icon-edit'
  42. ),
  43. 'edit_fans' => array(
  44. 'title' => '查看用户信息',
  45. 'url' => U('Mp/Fans/edit_fans_byid', array('fansid'=>'{fans_id}')),
  46. 'class' => 'btn btn-primary btn-sm icon-edit'
  47. )
  48. )
  49. );
  50. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  51. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  52. ->addCrumb('事件上报', '', 'active')
  53. ->setModel('luojiang_eventreport')
  54. ->setListOrder('addtime desc')
  55. ->setListMap(array('mpid'=>get_mpid()))
  56. ->setTip('<p id="msg_flush">暂无新消息</p>')
  57. ->setListSearch(array('nickname' => '会员名称'))
  58. ->addListItem('fans_id', '会员名称', 'callback', array('callback_name'=>'get_fans_name'))
  59. ->addListItem('event_type', '事件类型', 'enum', array('options'=>array('井盖缺失'=>'井盖缺失','道路破损'=>'道路破损','道路淘空'=>'道路淘空','陈年垃圾'=>'陈年垃圾','卫生死角'=>'卫生死角','公共设施'=>'公共设施','市容环境'=>'市容环境','其他情况'=>'其他情况')))
  60. ->addListItem('descript', '事件描述')
  61. ->addListItem('image_list', '图片列表', 'callback', array('callback_name'=>'get_images_str'))
  62. ->addListItem('video_file', '视频', 'callback', array('callback_name'=>'get_video_str'))
  63. ->addListItem('jiangli', '奖励')
  64. ->addListItem('id', '位置', 'callback', array('callback_name'=>'get_message_content'))
  65. ->addListItem('addtime', '创建时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  66. ->addListItem('reply_info', '处理结果', '', array('placeholder'=>'<font color="red">未处理</font>'))
  67. ->addListItem('id', '操作', 'custom', $custom)
  68. ->addButton('导出', U('addon/LuojiangKaoping/web/loadexcel'), 'btn btn-primary')
  69. ->common_lists();
  70. echo '<script src="/Public/Mp/js/checkflush.js"></script>';
  71. echo "<style>.table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th{border-top:1px solid #000; ;border-bottom:1px solid #000;}</style>";
  72. }
  73. public function get_message_content($id) {
  74. $map['id'] = $id;
  75. $map['mpid'] = get_mpid();
  76. $message = M('luojiang_eventreport')->where($map)->find();
  77. if(!empty($message['location_addr'])){
  78. return $message['location_addr'].'<br/><button type="button" class="btn btn-sm btn-success" onclick="lookMap('.$message['lat'].','.$message['lng'].')">查看【位置】</button>';
  79. }else{
  80. return "未提供";
  81. }
  82. }
  83. public function downfile()
  84. {
  85. //.jpg mp4
  86. //$mp_message_info['msgtype'] == 'video'
  87. $file_url = urldecode( I('get.file_url') );
  88. $type = urldecode( I('get.type') );
  89. $file_url = str_replace('/Uploads/','Uploads/',$file_url);
  90. $file_name = $file_url.'.'.$type;
  91. $file_sub_path= "/data/web/wx.mnw.cn/";
  92. $file_path=$file_sub_path.$file_name;
  93. $filectime = filectime($file_path);
  94. if( strpos($file_name,'jpg') !== false )
  95. {
  96. $img_arrs = explode('.', $file_name);
  97. $file_name = '微信图片_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  98. }
  99. else if( strpos($file_name,'png') !== false ){
  100. $img_arrs = explode('.', $file_name);
  101. $file_name = '微信图片_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  102. }
  103. else if( strpos($file_name,'gif') !== false ){
  104. $img_arrs = explode('.', $file_name);
  105. $file_name = '微信图片_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  106. }
  107. else if( strpos($file_name,'jpeg') !== false ){
  108. $img_arrs = explode('.', $file_name);
  109. $file_name = '微信图片_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  110. }
  111. else if( strpos($file_name,'mp4') !== false ){
  112. $img_arrs = explode('.', $file_name);
  113. $file_name = '微信视频_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  114. }
  115. else if($mp_message_info['msgtype'] == 'voice' ){
  116. $img_arrs = explode('.', $file_name);
  117. $file_name = '微信语音_'.date('Ymd',$filectime).'_'.$filectime.'.'.$img_arrs[1];
  118. }
  119. $fp=fopen($file_path,"r");
  120. $file_size=filesize($file_path);
  121. //var_dump($file_size);die();
  122. //下载文件需要用到的头
  123. Header("Content-type: application/octet-stream");
  124. Header("Accept-Ranges: bytes");
  125. Header("Accept-Length:".$file_size);
  126. Header("Content-Disposition: attachment; filename=".$file_name);
  127. $buffer=1024;
  128. $file_count=0;
  129. //向浏览器返回数据
  130. while(!feof($fp) && $file_count<$file_size){
  131. $file_con=fread($fp,$buffer);
  132. $file_count+=$buffer;
  133. echo $file_con;
  134. }
  135. fclose($fp);
  136. echo $file_url;
  137. die();
  138. }
  139. /**
  140. * 获取视频
  141. * @author lyf
  142. */
  143. public function get_video_str($video_file)
  144. {
  145. if(empty($video_file))
  146. {
  147. return '暂无';
  148. }else{
  149. return '<button type="button" class="btn btn-sm btn-warning icon-video" data-src="'.$video_file.'" onclick="lookVideo(this)">查看视频</button><a href="'.U('addon/HuianKaoping/web/downfile', array('type' =>'mp4', 'file_url' => urlencode($video_file) )).'" title="点击下载视频" target=_blank">【下载】</a>';
  150. }
  151. }
  152. /*
  153. * 导出
  154. */
  155. public function loadexcel()
  156. {
  157. header("content-type:text/html; charset=uft-8");
  158. if(IS_POST)
  159. {
  160. //date_added_begin:2017-08-02 0:00:00
  161. //date_added_end:2017-08-19 0:00:00
  162. $data = I('post.');
  163. $where = array();
  164. if(!empty($data['date_added_begin']))
  165. {
  166. $where['addtime'] = array('gt',strtotime($data['date_added_begin']) );
  167. }
  168. if(!empty($data['date_added_end']))
  169. {
  170. $where['addtime'] = array('lt',strtotime($data['date_added_end']) );
  171. }
  172. $s_time = strtotime($data['date_added_begin']);
  173. $e_time = strtotime($data['date_added_end']);
  174. if($s_time && $e_time)
  175. {
  176. $where['addtime'] = array('between',array($s_time,$e_time));
  177. }
  178. $list = M('luojiang_eventreport')->where($where)->order('id desc')->select();
  179. //$need_data = array( array('order_sn'=>1,'get_image'=>'http://wx.mnw.cn/Uploads/Pictures/2/2017-08-07/2_oA7ocv8o0sk-tPmG87fjPD25nQWs_1502095440.jpg'),array('order_sn'=>1,'get_image'=>'http://wx.mnw.cn/Uploads/Pictures/2/2017-08-07/2_oA7ocv8o0sk-tPmG87fjPD25nQWs_1502095440.jpg') );
  180. $need_data = array();
  181. $xlsCell = array(
  182. array('id','序号'),
  183. array('addtime','日期'),
  184. array('fans_id','微信名'),
  185. array('mobile','联系人电话'),
  186. array('jifen','积分'),
  187. array('descript','事件描述'),
  188. array('image_list','图否'),
  189. array('jiangli','奖励'),
  190. array('is_reply','反馈情况'),
  191. array('reply_info','反馈内容'),
  192. array('video_file','视频')
  193. /*
  194. array('contact_tel','联系电话'),
  195. array('jifen','积分'),
  196. array('nickname','微信名'),
  197. array('content','问题描述'),
  198. array('get_img','图否'),
  199. array('fankui','反馈情况'),
  200. array('fankui_tu','反馈图片'),
  201. */
  202. );
  203. $i = 1;
  204. foreach($list as $val)
  205. {
  206. $tmp_data = array();
  207. $tmp_data['id'] = $i;
  208. $tmp_data['addtime'] = date('Y-m-d H:i:s', $val['addtime']);
  209. //openid
  210. $mp_fans = M('mp_fans')->field('nickname')->where( array('id' => $val['fans_id']) )->find();
  211. $tmp_data['fans_id'] = $mp_fans['nickname'];
  212. $tmp_data['mobile'] = $mp_fans['mobile'];
  213. if( empty($val['reply_info']) ){
  214. $tmp_data['jifen'] = 0;
  215. }else{
  216. $tmp_data['jifen'] = 2;
  217. }
  218. $tmp_data['jiangli'] = $val['jiangli'];
  219. //$tmp_data['title'] = $val['title'];
  220. $tmp_data['descript'] = $val['descript'];
  221. if( empty($val['reply_info']) ){
  222. $tmp_data['is_reply'] = '否';
  223. }else{
  224. $tmp_data['is_reply'] = '是';
  225. }
  226. $tmp_data['reply_info'] = $val['reply_info'];
  227. if(empty($val['video_file']))
  228. {
  229. $tmp_data['video_file'] ='否';
  230. }else{
  231. $tmp_data['video_file'] ='是';
  232. //$tmp_data['video_file'] ='http://'.$_SERVER['SERVER_NAME'].str_replace('./','',$val['video_file']);
  233. }
  234. //http://wx.mnw.cn/Uploads/Pictures/2/2017-08-07/2_oA7ocv8o0sk-tPmG87fjPD25nQWs_1502095440.jpg
  235. if(!empty($val['image_list']))
  236. {
  237. $img_arr = explode(',',$val['image_list']);
  238. if($val['image_list'] == ',undefined/undefined' || $val['image_list'] == 'undefined/undefined')
  239. {
  240. $img_url = '';
  241. $img_urls = array();
  242. }else{
  243. $img_urls = explode(',', $val['image_list']);
  244. foreach($img_urls as $kk => $vv)
  245. {
  246. $vv = str_replace('./','/',$vv );
  247. $vv = '/data/web/wx.mnw.cn'.$vv;
  248. $img_urls[$kk] = $vv;
  249. }
  250. //$img_url = str_replace('./','http://'.$_SERVER['SERVER_NAME'],$val['image_list']);
  251. }
  252. $tmp_data['image_list'] = $img_urls;
  253. }
  254. $i++;
  255. $need_data[] = $tmp_data;
  256. }
  257. $expTitle = date('Y-m-d H:i:s');
  258. export_excel($expTitle,$xlsCell,$need_data);
  259. }
  260. $this->display();
  261. }
  262. public function editeventreport()
  263. {
  264. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  265. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  266. ->addCrumb('处理上报事件', '', 'active')
  267. ->setModel('luojiang_eventreport')
  268. ->addFormField('jiangli', '上报奖励', 'text')
  269. ->addFormField('reply_info', '处理意见', 'text')
  270. ->setFormData( M('luojiang_eventreport')->find(I('get.id')) )
  271. ->setEditMap( array('id'=>I('get.id')) )
  272. ->setEditSuccessUrl( U('addon/LuojiangKaoping/web/eventreport') )
  273. ->common_edit();
  274. }
  275. public function opinionsuggestion()
  276. {
  277. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  278. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  279. ->addCrumb('意见建议', '', 'active')
  280. ->setModel('luojiang_opinionsuggestion')
  281. ->setListOrder('addtime desc')
  282. ->setListMap(array('mpid'=>get_mpid()))
  283. ->addListItem('fans_id', '会员名称', 'callback', array('callback_name'=>'get_fans_name'))
  284. ->addListItem('opinion_name', '建议人姓名')
  285. ->addListItem('contact', '建议人联系电话')
  286. ->addListItem('email', '邮箱')
  287. ->addListItem('title', '建议标题')
  288. ->addListItem('content', '建议内容')
  289. ->addListItem('image_list', '图片列表', 'callback', array('callback_name'=>'get_images_str'))
  290. ->addListItem('reply_method', '回复方式', 'enum', array('options'=>array('1'=>'网上',2=>'电话',3=>'当面')))
  291. //->addListItem('is_reply', '是否回复', 'enum', array('options'=>array(0=>'未回复',1=>'已回复')))
  292. ->addListItem('addtime', '创建时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  293. ->addListItem('id', '操作', 'custom', array('options'=>array('edit_eventreport'=>array('处理意见建议', U('addon/LuojiangKaoping/web/editopinionsuggestion', array('id'=>'{id}')),'btn btn-primary btn-sm icon-edit',''))))
  294. //->addListItem('id', '操作', 'custom', array('options'=>array('edit_fans'=>array('编辑粉丝资料', U('Mp/Fans/edit_fans', array('openid'=>'{openid}')),'btn btn-primary btn-sm icon-edit',''))))
  295. ->common_lists();
  296. }
  297. public function editopinionsuggestion()
  298. {
  299. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  300. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  301. ->addCrumb('处理意见建议', '', 'active')
  302. ->setModel('luojiang_opinionsuggestion')
  303. ->addFormField('reply_info', '处理意见', 'text')
  304. ->setFormData( M('luojiang_opinionsuggestion')->find(I('get.id')) )
  305. ->setEditMap( array('id'=>I('get.id')) )
  306. ->setEditSuccessUrl( U('addon/LuojiangKaoping/web/opinionsuggestion') )
  307. ->common_edit();
  308. }
  309. public function newsnenter_two()
  310. {
  311. $options = array(
  312. 'edit_fans'=>array('编辑', U('addon/LuojiangKaoping/web/editarticle', array('id'=>'{id}') )
  313. ,'btn btn-primary btn-sm icon-edit',''),
  314. 'delete' => array(
  315. 'title' => '删除',
  316. 'url' => U('addon/LuojiangKaoping/web/deletearticle', array('id'=>'{id}')),
  317. 'class' => 'btn btn-danger btn-sm icon-delete'
  318. )
  319. );
  320. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  321. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  322. ->addCrumb('新闻中心', '', 'active')
  323. ->setModel('luojiang_article')
  324. ->setListMap(array('type'=>2))
  325. ->setListOrder('addtime desc')
  326. ->addListItem('title', '标题')
  327. // ->addListItem('logo', '图片', 'image', array('attr'=>'width=50 height=50','placeholder'=>__ROOT__ . '/Public/Admin/img/noname.jpg'))
  328. ->addListItem('cate_id', '所属分类', 'callback',array('callback_name'=>'get_cate_name'))
  329. ->addListItem('sendtime', '发布时间')
  330. ->addListItem('addtime', '创建时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  331. ->addListItem('id', '操作', 'custom', array('options'=>$options))
  332. //->addButton('新增文章分类', U('addon/HuianKaoping/web/addarticlecate'), 'btn btn-primary')
  333. ->addButton('新增文章', U('addon/LuojiangKaoping/web/addarticle_two'), 'btn btn-primary')
  334. ->common_lists();
  335. }
  336. public function newsnenter()
  337. {
  338. $options = array(
  339. 'edit_fans'=>array('编辑', U('addon/LuojiangKaoping/web/editarticle', array('id'=>'{id}') )
  340. ,'btn btn-primary btn-sm icon-edit',''),
  341. 'delete' => array(
  342. 'title' => '删除',
  343. 'url' => U('addon/LuojiangKaoping/web/deletearticle', array('id'=>'{id}')),
  344. 'class' => 'btn btn-danger btn-sm icon-delete'
  345. )
  346. );
  347. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  348. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  349. ->addCrumb('新闻中心', '', 'active')
  350. ->setModel('luojiang_article')
  351. ->setListMap(array('type'=>1))
  352. ->setListOrder('addtime desc')
  353. ->addListItem('title', '标题')
  354. ->addListItem('logo', '图片', 'image', array('attr'=>'width=50 height=50','placeholder'=>__ROOT__ . '/Public/Admin/img/noname.jpg'))
  355. ->addListItem('cate_id', '所属分类', 'callback',array('callback_name'=>'get_cate_name'))
  356. ->addListItem('sendtime', '发布时间')
  357. ->addListItem('addtime', '创建时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  358. ->addListItem('id', '操作', 'custom', array('options'=>$options))
  359. //->addButton('新增文章分类', U('addon/HuianKaoping/web/addarticlecate'), 'btn btn-primary')
  360. ->addButton('新增文章', U('addon/LuojiangKaoping/web/addarticle'), 'btn btn-primary')
  361. ->common_lists();
  362. }
  363. /**
  364. * 删除关键词回复
  365. * @author 艾逗笔<765532665@qq.com>
  366. */
  367. public function deletearticle() {
  368. M('luojiang_article')->where( array('id' =>I('get.id') ) )->delete();
  369. $this->success('删除成功');
  370. }
  371. public function votecenter()
  372. {
  373. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  374. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  375. ->addCrumb('投票专区', '', 'active')
  376. ->setModel('vote')
  377. ->addListItem('title', '标题')
  378. ->addListItem('begin_time', '开始时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  379. ->addListItem('end_time', '结束时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  380. ->addListItem('addtime', '添加时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  381. ->addListItem('vote_id', '操作', 'custom', array('options'=>array(
  382. 'edit_fans'=>array('编辑', U('addon/LuojiangKaoping/web/editvote', array('vote_id'=>'{vote_id}') ) ,'btn btn-primary btn-sm icon-edit',''),
  383. 'add_votesubject'=>array('添加投票选项', U('addon/LuojiangKaoping/web/addvotesubject', array('vote_id'=>'{vote_id}') ) ,'btn btn-primary btn-sm icon-edit',''),
  384. )))
  385. ->addButton('新增投票', U('addon/LuojiangKaoping/web/addvote'), 'btn btn-primary')
  386. ->common_lists();
  387. }
  388. public function addvote()
  389. {
  390. if( IS_POST )
  391. {
  392. $data = I('post.');
  393. $vote_data = array();
  394. $vote_data['mpid'] = get_mpid();
  395. $vote_data['title'] = $data['name'];
  396. $vote_data['begin_time'] = strtotime( $data['date_added_begin'] );
  397. $vote_data['end_time'] = strtotime( $data['date_added_end'] );
  398. $vote_data['addtime'] = time();
  399. M('vote')->add($vote_data);
  400. $this->success('添加投票成功', U('addon/LuojiangKaoping/web/votecenter'));
  401. die();
  402. }
  403. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  404. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  405. ->addCrumb('新闻中心', '', 'active')
  406. ->display();
  407. }
  408. public function addvotesubject()
  409. {
  410. $vote_id = I('get.vote_id');
  411. $this->vote_id = $vote_id;
  412. if( IS_POST )
  413. {
  414. $data = I('post.');
  415. if( isset($data['edit_votesubject']) )
  416. {
  417. $has_key = array();
  418. $del_key = array();
  419. foreach( $data['attr_title'] as $key => $val)
  420. {
  421. $has_key[] = $key;
  422. }
  423. $vote_sub_all = M('vote_subject')->where( array('vote_id' => $data['vote_id']) )->select();
  424. foreach($vote_sub_all as $vote_sub)
  425. {
  426. if( !in_array($vote_sub['sub_id'],$has_key ) )
  427. {
  428. $del_key[] = $vote_sub['sub_id'];
  429. }
  430. }
  431. //删除多余键
  432. if( !empty($del_key) )
  433. {
  434. M('vote_subject')->where( array('sub_id' => array('in', $del_key ) ) )->delete();
  435. //删除投票记录
  436. M('vote_record')->where( array('sub_id' => array('in', $del_key ) ) )->delete();
  437. }
  438. //开始更新和新增选项
  439. foreach($data['attr_title'] as $key => $val)
  440. {
  441. if( strpos($key, 'new') !== false )
  442. {
  443. //新增的模块
  444. $tmp_vote_subject = array();
  445. $tmp_vote_subject['vote_id'] = $data['vote_id'];
  446. $tmp_vote_subject['title'] = $val;
  447. $tmp_vote_subject['type'] = $data['type'][$key];
  448. $tmp_vote_subject['addtime'] = time();
  449. M('vote_subject')->add($tmp_vote_subject);
  450. $sub_id = M('vote_subject')->getLastInsID();
  451. $extra = $data['extra'][$key];
  452. $extra_arr = explode('|', $extra);
  453. foreach($extra_arr as $vv)
  454. {
  455. $xun_data = array();
  456. $xun_data['sub_id'] = $sub_id;
  457. $xun_data['titile'] = $vv;
  458. $xun_data['addtime'] = time();
  459. M('vote_xuan')->add($xun_data);
  460. }
  461. } else {
  462. //需要更新板块
  463. $tmp_vote_subject = array();
  464. $tmp_vote_subject['title'] = $val;
  465. $tmp_vote_subject['type'] = $data['type'][$key];
  466. M('vote_subject')->where( array('sub_id' =>$key ) ) ->save($tmp_vote_subject);
  467. //更新子内容
  468. //先判断原来有几个
  469. $vote_xuan_list = M('vote_xuan')->where( array('sub_id' => $key) )->order('xu_id asc')->select();
  470. $extra = array();
  471. $extra = $data['extra'][$key];
  472. $extra_arr = explode('|', $extra);
  473. foreach($vote_xuan_list as $xun_vo)
  474. {
  475. if( !empty($extra_arr) )
  476. {
  477. $tmp_xun = array_shift( $extra_arr );
  478. M('vote_xuan')->where( array('xu_id' => $xun_vo['xu_id']) )->save( array('titile' => $tmp_xun) );
  479. }else {
  480. //需要删除的
  481. M('vote_xuan')->where( array('xu_id' => $xun_vo['xu_id']) )->delete();
  482. }
  483. }
  484. //判断是否可以新增
  485. if( !empty($extra_arr) )
  486. {
  487. foreach($extra_arr as $vv)
  488. {
  489. $xun_data = array();
  490. $xun_data['sub_id'] = $key;
  491. $xun_data['titile'] = $vv;
  492. $xun_data['addtime'] = time();
  493. M('vote_xuan')->add($xun_data);
  494. }
  495. }
  496. }
  497. }
  498. $this->success('编辑投票选项成功', U('addon/HuianKaoping/web/votecenter'));
  499. die();
  500. }
  501. foreach($data['attr_title'] as $key => $val)
  502. {
  503. if( !empty($val) )
  504. {
  505. $tmp_vote_subject = array();
  506. $tmp_vote_subject['vote_id'] = $data['vote_id'];
  507. $tmp_vote_subject['title'] = $val;
  508. $tmp_vote_subject['type'] = $data['type'][$key];
  509. $tmp_vote_subject['addtime'] = time();
  510. M('vote_subject')->add($tmp_vote_subject);
  511. $sub_id = M('vote_subject')->getLastInsID();
  512. $extra = $data['extra'][$key];
  513. //vote_xuan
  514. $extra_arr = explode('|', $extra);
  515. foreach($extra_arr as $vv)
  516. {
  517. $xun_data = array();
  518. $xun_data['sub_id'] = $sub_id;
  519. $xun_data['titile'] = $vv;
  520. $xun_data['addtime'] = time();
  521. M('vote_xuan')->add($xun_data);
  522. }
  523. }
  524. }
  525. $this->success('新增投票选项成功', U('addon/HuianKaoping/web/votecenter'));
  526. die();
  527. }
  528. $vote_subject = M('vote_subject')->where( array('vote_id' => $vote_id) )->order('sub_id asc')->select();
  529. if( !empty($vote_subject) )
  530. {
  531. foreach( $vote_subject as $key=> $val )
  532. {
  533. $vote_xuan_list = M('vote_xuan')->where( array('sub_id' => $val['sub_id']) )->order('xu_id asc')->select();
  534. $xun_arr = array();
  535. foreach( $vote_xuan_list as $vv )
  536. {
  537. $xun_arr[] = $vv['titile'];
  538. }
  539. $val['xun_title'] = implode('|', $xun_arr);
  540. $val['vote_xuan_list'] = $vote_xuan_list;
  541. $vote_subject[$key] = $val;
  542. }
  543. $this->vote_subject = $vote_subject;
  544. $this->addCrumb('洛江考评微官网', U('addon/HuianKaoping/index'), '')
  545. ->addCrumb('业务导航', U('addon/HuianKaoping/web/eventreport'), '')
  546. ->addCrumb('新闻中心', '', 'active')
  547. ->display('editvotesubject');
  548. } else {
  549. $this->addCrumb('洛江考评微官网', U('addon/HuianKaoping/index'), '')
  550. ->addCrumb('业务导航', U('addon/HuianKaoping/web/eventreport'), '')
  551. ->addCrumb('新闻中心', '', 'active')
  552. ->display();
  553. }
  554. }
  555. public function loadachievement()
  556. {
  557. $type = I('type');
  558. if( IS_POST )
  559. {
  560. set_time_limit(0);
  561. if(isset($_FILES["file"]) && ($_FILES["file"]["error"] == 0)){
  562. $excel_dir = './Uploads/Pictures/' . date('Y-m-d') . '/';
  563. if (!file_exists($excel_dir)) {
  564. $dirs = explode('/', $excel_dir);
  565. $dir = $dirs[0] . '/';
  566. for ($i=1, $j=count($dirs)-1; $i<$j; $i++) {
  567. $dir .= $dirs[$i] . '/';
  568. if (!is_dir($dir)) {
  569. mkdir($dir, 0777);
  570. }
  571. }
  572. }
  573. $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
  574. $path = $excel_dir.'/'.md5($_FILES['file']['name'].mt_rand(1, 999)).'.'.$extension;
  575. is_file_excel($path);
  576. $rs = move_uploaded_file($_FILES["file"]["tmp_name"],$path);
  577. $file = $path;
  578. $type = pathinfo($file);
  579. $type = strtolower($type["extension"]);
  580. $type=$type==='csv' ? $type : 'Excel5';
  581. ini_set('max_execution_time', '0');
  582. vendor("PHPExcel.PHPExcel");
  583. // 判断使用哪种格式
  584. $objReader = \PHPExcel_IOFactory::createReader($type);
  585. $objPHPExcel = $objReader->load($file);
  586. $sheet = $objPHPExcel->getSheet(0);
  587. // 取得总行数
  588. $highestRow = $sheet->getHighestRow();
  589. // 取得总列数
  590. $highestColumn = $sheet->getHighestColumn();
  591. //循环读取excel文件,读取一条,插入一条
  592. $data=array();
  593. //从第一行开始读取数据
  594. for($j=1;$j<=$highestRow;$j++){
  595. if($j <=2) {
  596. continue;
  597. }
  598. //从A列读取数据
  599. for($k='A';$k<=$highestColumn;$k++){
  600. // 读取单元格
  601. $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
  602. }
  603. }
  604. $result = $data;
  605. $get_data = array();
  606. if(!empty($result)) {
  607. foreach($result as $key => $val){
  608. //array(5) { [0]=> string(6) "村庄" [1]=> string(18) "2017-8月上半月"
  609. //[2]=> string(9) "小岞镇" [3]=> string(9) "新桥村" [4]=> float(92.5) }
  610. if(empty($val[0]))
  611. {
  612. continue;
  613. }
  614. //$val[1] = str_replace('上半月','01',$val[1]);
  615. //$val[1] = str_replace('下半月','15',$val[1]);
  616. //$val[1] = $val[1]->__toString();
  617. $val[1] .= ' 00:00:00';
  618. //$val[1] = str_replace('年','-',$val[1]);
  619. //$val[1] = str_replace('月','',$val[1]);
  620. $need_data = array();
  621. $need_data['name'] = $val[0];
  622. $need_data['kao_time'] = strtotime($val[1]);
  623. $need_data['zeren_danwei'] = $val[2];
  624. $need_data['stree'] = $val[3];
  625. $need_data['kaoping_dian'] = '';
  626. $need_data['chengji'] = $val[4];
  627. if(I('type') == 2)
  628. {
  629. $need_data['type'] = 2;
  630. }else{
  631. $need_data['type'] = 1;
  632. }
  633. if(empty($need_data['stree']))
  634. {
  635. $need_data['stree'] = '';
  636. }
  637. $need_data['paiming'] = 0;
  638. $need_data['addtime'] = time();
  639. M('luojiang_achievement')->add($need_data);
  640. }
  641. if(I('type') == 2){
  642. $this->success('导入成绩成功', U('addon/LuojiangKaoping/web/achievementmanage_two'));
  643. }else{
  644. $this->success('导入成绩成功', U('addon/LuojiangKaoping/web/achievementmanage'));
  645. }
  646. die();
  647. }
  648. }
  649. }
  650. $this->assign('type', $type);
  651. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  652. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  653. ->addCrumb('成绩管理', '', 'active')
  654. ->display();
  655. }
  656. public function editvote()
  657. {
  658. // /vote_id/1
  659. $vote_id = I('get.vote_id');
  660. if( IS_POST )
  661. {
  662. $data = I('post.');
  663. $data = I('post.');
  664. $vote_data = array();
  665. $vote_data['mpid'] = get_mpid();
  666. $vote_data['title'] = $data['name'];
  667. $vote_data['begin_time'] = strtotime( $data['date_added_begin'] );
  668. $vote_data['end_time'] = strtotime( $data['date_added_end'] );
  669. M('vote')->where( array('vote_id' => $data['vote_id']) )->save($vote_data);
  670. $this->success('编辑投票成功', U('addon/HuianKaoping/web/votecenter'));
  671. die();
  672. }
  673. $vote = M('vote')->where( array('vote_id' => $vote_id) )->find();
  674. $this->vote = $vote;
  675. $this->addCrumb('洛江考评微官网', U('addon/HuianKaoping/index'), '')
  676. ->addCrumb('业务导航', U('addon/HuianKaoping/web/eventreport'), '')
  677. ->addCrumb('新闻中心', '', 'active')
  678. ->display('addvote');
  679. }
  680. public function editachievement()
  681. {
  682. $id = I('get.id');
  683. $type = I('get.type');
  684. if( IS_POST )
  685. {
  686. $data = I('post.');
  687. $vote_data = array();
  688. $vote_data['name'] = $data['name'];
  689. $vote_data['kao_time'] = strtotime( $data['kao_time'] );
  690. $vote_data['zeren_danwei'] = $data['zeren_danwei'];
  691. $vote_data['stree'] = $data['stree'];
  692. $vote_data['content'] = ($data['content']);
  693. //$vote_data['kaoping_dian'] = $data['kaoping_dian'];
  694. $vote_data['chengji'] = $data['chengji'];
  695. //$vote_data['paiming'] = $data['paiming'];
  696. M('luojiang_achievement')->where( array('id' => $id) )->save($vote_data);
  697. if($data['type'] == 2)
  698. {
  699. $this->success('编辑成功', U('addon/LuojiangKaoping/web/achievementmanage_two'));
  700. }else{
  701. $this->success('编辑成功', U('addon/LuojiangKaoping/web/achievementmanage'));
  702. }
  703. die();
  704. }
  705. if($type == 2)
  706. {
  707. $this->setEditSuccessUrl( U('addon/LuojiangKaoping/web/achievementmanage_two') );
  708. }else{
  709. $this->setEditSuccessUrl( U('addon/LuojiangKaoping/web/achievementmanage') );
  710. }
  711. $this->assign('type', $type);
  712. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  713. ->addCrumb('成绩管理', U('addon/LuojiangKaoping/web/achievementmanage'), '')
  714. ->addCrumb('成绩管理', '', 'active')
  715. ->setModel('luojiang_achievement')
  716. ->addFormField('name', '类别', 'text')
  717. ->addFormField('kao_time', '考评时间', 'date')
  718. ->addFormField('zeren_danwei', '街道(乡镇)/责任单位', 'text')
  719. ->addFormField('stree', '抽评点', 'text')
  720. ->addFormField('content', '内容', 'editor')
  721. //->addFormField('kaoping_dian', '考评点', 'text')
  722. ->addFormField('chengji', '成绩', 'text')
  723. //->addFormField('paiming', '排名', 'text')
  724. ->setEditMap( array('id'=>I('get.id')))
  725. ->common_edit();
  726. }
  727. public function get_cate_name($cate_id)
  728. {
  729. $category_info = M('luojiang_articlecategory')->where( array('id' => $cate_id) )->find();
  730. return $category_info['name'];
  731. }
  732. public function editarticle()
  733. {
  734. $cateinfos = M('luojiang_articlecategory')->where( array('pid' => 0) )->select();
  735. $cate_arr = array();
  736. foreach($cateinfos as $val)
  737. {
  738. $cate_arr[$val[id]] = $val['name'];
  739. }
  740. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  741. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  742. ->addCrumb('编辑文章', '', 'active')
  743. ->setModel('huian_article')
  744. ->addFormField('title', '标题', 'text')
  745. ->addFormField('link', '外链', 'text')
  746. ->addFormField('logo', '图片', 'image')
  747. ->addFormField('sendtime', '发布时间', 'time')
  748. ->addFormField('cate_id', '所属分类', 'select', array('options'=>$cate_arr))
  749. ->addFormField('content', '内容', 'editor')
  750. ->setValidate(array(
  751. array('name', 'require', '标题不能为空')//,
  752. //array('logo', 'require', '请上传图片')
  753. ))
  754. ->setFormData( M('luojiang_article')->find(I('get.id')) )
  755. ->setEditMap( array('id'=>I('get.id')) )
  756. ->setEditSuccessUrl( U('addon/LuojiangKaoping/web/newsnenter') )
  757. ->common_edit();
  758. }
  759. public function addarticlecate()
  760. {
  761. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  762. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  763. ->addCrumb('添加文章分类', '', 'active')
  764. ->setModel('luojiang_articlecategory')
  765. ->addFormField('name', '名称', 'text')
  766. //->addFormField('type', '类型', 'radio', array('options'=>array(1=>'普通订阅号',2=>'认证订阅号',3=>'普通服务号',4=>'认证服务号',5=>'测试号'),'value'=>4,'is_must'=>1))
  767. // ->addFormField('pid', '原始ID', 'text', array('is_must'=>1))
  768. //->addFormField('mp_number', '微信号', 'text')
  769. // ->addFormField('appid', 'APPID', 'text')
  770. // ->addFormField('appsecret', 'APPSECRET', 'text')
  771. //->addFormField('headimg', '头像', 'image')
  772. //->addFormField('qrcode', '二维码', 'image')
  773. ->setValidate(array(
  774. array('name', 'require', '名称不能为空'),
  775. ))
  776. ->setAuto(array(
  777. array('pid', '0'),
  778. array('addtime', 'time', 1, 'function')
  779. ))
  780. ->setAddSuccessUrl( U('addon/LuojiangKaoping/web/newsnenter') )
  781. ->common_add();
  782. }
  783. public function addarticle_two()
  784. {
  785. $cateinfos = M('luojiang_articlecategory')->where( array('pid' => 0) )->select();
  786. $cate_arr = array();
  787. foreach($cateinfos as $val)
  788. {
  789. $cate_arr[$val[id]] = $val['name'];
  790. }
  791. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  792. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  793. ->addCrumb('添加文章', '', 'active')
  794. ->setModel('luojiang_article')
  795. ->addFormField('title', '标题', 'text')
  796. ->addFormField('type', '1', 'hidden',array('value'=>2))
  797. //->addFormField('link', '外链', 'text')
  798. //->addFormField('logo', '图片', 'image')
  799. ->addFormField('sendtime', '发布时间', 'time')
  800. ->addFormField('cate_id', '1', 'hidden',array('value'=>1))
  801. //->addFormField('cate_id', '所属分类', 'select', array('options'=>$cate_arr))
  802. ->addFormField('content', '内容', 'editor')
  803. ->setValidate(array(
  804. array('name', 'require', '标题不能为空'),
  805. //array('logo', 'require', '请上传图片')
  806. ))
  807. ->setAuto(array(
  808. array('addtime', 'time', 1, 'function')
  809. ))
  810. ->setAddSuccessUrl( U('addon/LuojiangKaoping/web/newsnenter_two') )
  811. ->common_add();
  812. }
  813. public function addarticle()
  814. {
  815. $cateinfos = M('luojiang_articlecategory')->where( array('pid' => 0) )->select();
  816. $cate_arr = array();
  817. foreach($cateinfos as $val)
  818. {
  819. $cate_arr[$val[id]] = $val['name'];
  820. }
  821. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  822. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  823. ->addCrumb('添加文章', '', 'active')
  824. ->setModel('luojiang_article')
  825. ->addFormField('title', '标题', 'text')
  826. ->addFormField('type', '1', 'hidden',array('value'=>1))
  827. ->addFormField('link', '外链', 'text')
  828. ->addFormField('logo', '图片', 'image')
  829. ->addFormField('sendtime', '发布时间', 'time')
  830. ->addFormField('cate_id', '所属分类', 'select', array('options'=>$cate_arr))
  831. ->addFormField('content', '内容', 'editor')
  832. ->setValidate(array(
  833. array('name', 'require', '标题不能为空')//,
  834. //array('logo', 'require', '请上传图片')
  835. ))
  836. ->setAuto(array(
  837. array('addtime', 'time', 1, 'function')
  838. ))
  839. ->setAddSuccessUrl( U('addon/LuojiangKaoping/web/newsnenter') )
  840. ->common_add();
  841. }
  842. public function achievementmanage()
  843. {
  844. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  845. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  846. ->addCrumb('乡镇成绩管理', '', 'active')
  847. ->setModel('luojiang_achievement')
  848. ->setListOrder('addtime desc')
  849. ->addListItem('name', '类别')
  850. //->addListItem('kao_time', '考评时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  851. ->setListMap(array('type'=>1))
  852. ->addListItem('kao_time', '考评时间', 'callback', array('callback_name'=>'get_date_hui'))
  853. ->addListItem('zeren_danwei', '街道办事处')
  854. ->addListItem('stree', '抽评点')
  855. //->addListItem('kaoping_dian', '考评点')
  856. ->addListItem('chengji', '成绩')
  857. //->addListItem('paiming', '排名')
  858. ->addListItem('addtime', '添加时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  859. ->addButton('导入考评成绩', U('addon/LuojiangKaoping/web/loadachievement'), 'btn btn-primary')
  860. ->addListItem('id', '操作', 'custom', array('options'=>array('edit_fans'=>array('编辑成绩', U('addon/LuojiangKaoping/web/editachievement', array('id'=>'{id}','type'=>1)),'btn btn-primary btn-sm icon-edit',''))))
  861. ->common_lists();
  862. $cjcount = M('luojiang_achievement')->where(array('paiming'=>0,'type'=>1))->count();
  863. if($cjcount>0)
  864. {
  865. $paiming = array();
  866. $pagecount = M('luojiang_achievement')->field('kao_time')->where(array('type'=>1))->group('kao_time')->order('kao_time desc')->select();
  867. foreach($pagecount as $val)
  868. {
  869. $data = M('luojiang_achievement')->field('id,chengji')->where(array("kao_time"=>$val['kao_time'],"type"=>1))->order('chengji desc, id asc')->select();
  870. $chengji = $data[0]['chengji'];
  871. $order = 1;$num = 0;
  872. foreach($data as $key=>$subval)
  873. {
  874. if($key != 0){
  875. if($subval["chengji"] < $chengji){
  876. $order += 1;
  877. $chengji = $subval['chengji'];
  878. $order += $num;
  879. $num = 0;
  880. }
  881. else {
  882. $num++;
  883. }
  884. }
  885. $paiming[] = array('id'=>$subval["id"],'paiming'=>$order);
  886. }
  887. krsort($data);
  888. $chengji = $data[count($data)-1]['chengji'];
  889. $order = -5;$num = 0;
  890. foreach($data as $key=>$subval)
  891. {
  892. if($key != count($data)-1){
  893. if($subval["chengji"] > $chengji){
  894. $order += 1;
  895. $chengji = $subval['chengji'];
  896. $order += $num;
  897. $num = 0;
  898. }
  899. else {
  900. $num++;
  901. }
  902. }
  903. if($order == 0) break;
  904. $paiming[] = array('id'=>$subval["id"],'paiming'=>$order);
  905. }
  906. }
  907. foreach($paiming as $val)
  908. {
  909. $data['paiming'] = $val['paiming'];
  910. M('luojiang_achievement')->where(array("id"=>$val['id']))->save($data);
  911. }
  912. }
  913. }
  914. public function achievementmanage_two()
  915. {
  916. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  917. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  918. ->addCrumb('部门成绩管理', '', 'active')
  919. ->setModel('luojiang_achievement')
  920. ->setListOrder('addtime desc')
  921. ->setListMap(array('type'=>2))
  922. ->addListItem('name', '类别')
  923. //->addListItem('kao_time', '考评时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  924. ->addListItem('kao_time', '考评时间', 'callback', array('callback_name'=>'get_date_hui'))
  925. ->addListItem('zeren_danwei', '部门')
  926. ->addListItem('stree', '考评对象')
  927. //->addListItem('kaoping_dian', '考评点')
  928. ->addListItem('chengji', '成绩')
  929. //->addListItem('paiming', '排名')
  930. ->addListItem('addtime', '添加时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  931. ->addButton('导入考评成绩', U('addon/LuojiangKaoping/web/loadachievement',array('type'=>2)), 'btn btn-primary')
  932. ->addListItem('id', '操作', 'custom', array('options'=>array('edit_fans'=>array('编辑成绩', U('addon/HuianKaoping/web/editachievement', array('id'=>'{id}','type'=>2)),'btn btn-primary btn-sm icon-edit',''))))
  933. ->common_lists();
  934. $cjcount = M('luojiang_achievement')->where(array('paiming'=>0,'type'=>2))->count();
  935. if($cjcount>0)
  936. {
  937. $paiming = array();
  938. $pagecount = M('luojiang_achievement')->field('kao_time')->where(array('type'=>2))->group('kao_time')->order('kao_time desc')->select();
  939. foreach($pagecount as $val)
  940. {
  941. $data = M('luojiang_achievement')->field('id,chengji')->where(array("kao_time"=>$val['kao_time'],'type'=>2))->order('chengji desc, id asc')->select();
  942. $chengji = $data[0]['chengji'];
  943. $order = 1;$num = 0;
  944. foreach($data as $key=>$subval)
  945. {
  946. if($key != 0){
  947. if($subval["chengji"] < $chengji){
  948. $order += 1;
  949. $chengji = $subval['chengji'];
  950. $order += $num;
  951. $num = 0;
  952. }
  953. else {
  954. $num++;
  955. }
  956. }
  957. $paiming[] = array('id'=>$subval["id"],'paiming'=>$order);
  958. }
  959. krsort($data);
  960. $chengji = $data[count($data)-1]['chengji'];
  961. $order = -5;$num = 0;
  962. foreach($data as $key=>$subval)
  963. {
  964. if($key != count($data)-1){
  965. if($subval["chengji"] > $chengji){
  966. $order += 1;
  967. $chengji = $subval['chengji'];
  968. $order += $num;
  969. $num = 0;
  970. }
  971. else {
  972. $num++;
  973. }
  974. }
  975. if($order == 0) break;
  976. $paiming[] = array('id'=>$subval["id"],'paiming'=>$order);
  977. }
  978. }
  979. foreach($paiming as $val)
  980. {
  981. $data['paiming'] = $val['paiming'];
  982. M('luojiang_achievement')->where(array("id"=>$val['id']))->save($data);
  983. }
  984. }
  985. }
  986. public function get_date_hui($kao_time)
  987. {
  988. $d = date('d',$kao_time);
  989. /**
  990. if($d == '15')
  991. {
  992. $kao_time = date('Y-m',$kao_time).'-下半月';
  993. } else {
  994. $kao_time = date('Y-m',$kao_time).'-上半月';
  995. }
  996. **/
  997. $kao_time = date('Y-m-d',$kao_time);
  998. return $kao_time;
  999. }
  1000. public function usermanage()
  1001. {
  1002. //->addListItem('msgid', '消息内容', 'callback', array('callback_name'=>'get_message_content'))
  1003. $this->addCrumb('洛江考评微官网', U('addon/LuojiangKaoping/index'), '')
  1004. ->addCrumb('业务导航', U('addon/LuojiangKaoping/web/eventreport'), '')
  1005. ->addCrumb('用户管理', '', 'active')
  1006. ->setModel('luojiang_eventreport')
  1007. ->setListMap(array('mpid'=>get_mpid()))
  1008. ->addListItem('fans_id', '会员名称', 'callback', array('callback_name'=>'get_fans_name'))
  1009. ->addListItem('event_type', '事件类型', 'enum', array('options'=>array('0'=>'未知',1=>'事件类型1',2=>'事件类型2',3=>'事件类型3')))
  1010. ->addListItem('title', '标题')
  1011. ->addListItem('descript', '事件描述')
  1012. ->addListItem('image_list', '图片列表', 'callback', array('callback_name'=>'get_images_str'))
  1013. ->addListItem('is_reply', '是否回复', 'enum', array('options'=>array(0=>'未回复',1=>'已回复')))
  1014. ->addListItem('location_addr', '位置', '', array('placeholder'=>'未提供'))
  1015. ->addListItem('addtime', '创建时间', 'function', array('function_name'=>'date','params'=>'Y-m-d H:i:s,###'))
  1016. ->addListItem('id', '操作', 'custom', array('options'=>array('edit_fans'=>array('编辑粉丝资料', U('Mp/Fans/edit_fans', array('openid'=>'{openid}')),'btn btn-primary btn-sm icon-edit',''))))
  1017. ->common_lists();
  1018. }
  1019. function get_images_str($image_list)
  1020. {
  1021. $image_arr = explode(',', $image_list);
  1022. $image_str = '';
  1023. $image_need_arr = array();
  1024. if( !empty($image_arr) )
  1025. {
  1026. foreach($image_arr as $img)
  1027. {
  1028. $img = str_replace('./Uploads/','/Uploads/',$img);
  1029. $img = str_replace('//','/',$img);
  1030. $imgtemp = explode('.',$img);
  1031. //$thumb_img = $this->resize($img,100,100);
  1032. $image_need_arr[] = "<div style='float:left;width:100px;margin-right:5px;'><img src='".$img."' width=100 height=100 'placeholder'= '".__ROOT__ ."/Public/Admin/img/noname.jpg' /><br/>【<a href='".$img."' target='_blank'>预览</a> | <a href='".U('addon/HuianKaoping/web/downfile', array('type' =>$imgtemp[1], 'file_url' => urlencode($img) ))."' target='_blank'>下载】</a></div>";
  1033. }
  1034. $image_str = implode(' ', $image_need_arr);
  1035. }
  1036. return "<div style='width:220px;'> ".$image_str."</div>";
  1037. }
  1038. //字符串截取
  1039. function utf8_substr($string, $offset, $length = null) {
  1040. // generates E_NOTICE
  1041. // for PHP4 objects, but not PHP5 objects
  1042. $string = (string)$string;
  1043. $offset = (int)$offset;
  1044. if (!is_null($length)) {
  1045. $length = (int)$length;
  1046. }
  1047. // handle trivial cases
  1048. if ($length === 0) {
  1049. return '';
  1050. }
  1051. if ($offset < 0 && $length < 0 && $length < $offset) {
  1052. return '';
  1053. }
  1054. // normalise negative offsets (we could use a tail
  1055. // anchored pattern, but they are horribly slow!)
  1056. if ($offset < 0) {
  1057. $strlen = strlen(utf8_decode($string));
  1058. $offset = $strlen + $offset;
  1059. if ($offset < 0) {
  1060. $offset = 0;
  1061. }
  1062. }
  1063. $Op = '';
  1064. $Lp = '';
  1065. // establish a pattern for offset, a
  1066. // non-captured group equal in length to offset
  1067. if ($offset > 0) {
  1068. $Ox = (int)($offset / 65535);
  1069. $Oy = $offset%65535;
  1070. if ($Ox) {
  1071. $Op = '(?:.{65535}){' . $Ox . '}';
  1072. }
  1073. $Op = '^(?:' . $Op . '.{' . $Oy . '})';
  1074. } else {
  1075. $Op = '^';
  1076. }
  1077. // establish a pattern for length
  1078. if (is_null($length)) {
  1079. $Lp = '(.*)$';
  1080. } else {
  1081. if (!isset($strlen)) {
  1082. $strlen = strlen(utf8_decode($string));
  1083. }
  1084. // another trivial case
  1085. if ($offset > $strlen) {
  1086. return '';
  1087. }
  1088. if ($length > 0) {
  1089. $length = min($strlen - $offset, $length);
  1090. $Lx = (int)($length / 65535);
  1091. $Ly = $length % 65535;
  1092. // negative length requires a captured group
  1093. // of length characters
  1094. if ($Lx) {
  1095. $Lp = '(?:.{65535}){' . $Lx . '}';
  1096. }
  1097. $Lp = '(' . $Lp . '.{' . $Ly . '})';
  1098. } elseif ($length < 0) {
  1099. if ($length < ($offset - $strlen)) {
  1100. return '';
  1101. }
  1102. $Lx = (int)((-$length) / 65535);
  1103. $Ly = (-$length)%65535;
  1104. // negative length requires ... capture everything
  1105. // except a group of -length characters
  1106. // anchored at the tail-end of the string
  1107. if ($Lx) {
  1108. $Lp = '(?:.{65535}){' . $Lx . '}';
  1109. }
  1110. $Lp = '(.*)(?:' . $Lp . '.{' . $Ly . '})$';
  1111. }
  1112. }
  1113. if (!preg_match( '#' . $Op . $Lp . '#us', $string, $match)) {
  1114. return '';
  1115. }
  1116. return $match[1];
  1117. }
  1118. /**
  1119. * 递归生成目录
  1120. */
  1121. function RecursiveMkdir($path) {
  1122. if (!file_exists($path)) {
  1123. $this->RecursiveMkdir(dirname($path));
  1124. @mkdir($path, 0777);
  1125. }
  1126. }
  1127. //字符串长度计算
  1128. function utf8_strlen($string) {
  1129. return strlen(utf8_decode($string));
  1130. }
  1131. function utf8_strrpos($string, $needle, $offset = null) {
  1132. if (is_null($offset)) {
  1133. $data = explode($needle, $string);
  1134. if (count($data) > 1) {
  1135. array_pop($data);
  1136. $string = join($needle, $data);
  1137. return $this->utf8_strlen($string);
  1138. }
  1139. return false;
  1140. } else {
  1141. if (!is_int($offset)) {
  1142. trigger_error('utf8_strrpos expects parameter 3 to be long', E_USER_WARNING);
  1143. return false;
  1144. }
  1145. $string = $this->utf8_substr($string, $offset);
  1146. if (false !== ($position = utf8_strrpos($string, $needle))) {
  1147. return $position + $offset;
  1148. }
  1149. return false;
  1150. }
  1151. }
  1152. /**
  1153. * 自动生成新尺寸 的图片
  1154. */
  1155. function resize($filename, $width, $height) {
  1156. define(ROOT_PATH,'/data/web/wx.mnw.cn/');
  1157. ///data/web/wx.mnw.cn/Addons/HuianKaoping/Controller
  1158. $image_dir=ROOT_PATH;
  1159. if (!is_file($image_dir . $filename)) {
  1160. return;
  1161. }
  1162. $extension = pathinfo($filename, PATHINFO_EXTENSION);
  1163. $old_image = $filename;
  1164. $new_image = 'cache/' . $this->utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
  1165. if (!is_file($image_dir . $new_image) || (filectime($image_dir . $old_image) > filectime($image_dir . $new_image))) {
  1166. $path = '';
  1167. $directories = explode('/', dirname(str_replace('../', '', $new_image)));
  1168. foreach ($directories as $directory) {
  1169. $path = $path . '/' . $directory;
  1170. if (!is_dir($image_dir . $path)) {
  1171. @mkdir($image_dir . $path, 0777);
  1172. }
  1173. }
  1174. list($width_orig, $height_orig) = getimagesize($image_dir . $old_image);
  1175. if ($width_orig != $width || $height_orig != $height) {
  1176. $image = new \Lib\Image($image_dir . $old_image);
  1177. $image->resize($width, $height);
  1178. $image->save($image_dir . $new_image);
  1179. } else {
  1180. copy($image_dir . $old_image, $image_dir . $new_image);
  1181. }
  1182. }
  1183. return 'Uploads/image/' . $new_image;
  1184. }
  1185. public function get_fans_name($fans_id)
  1186. {
  1187. $fans_info = M('mp_fans')->where( array('id' => $fans_id) )->find();
  1188. return $fans_info['nickname'];
  1189. //return '<a href="'.U('Mp/Fans/edit_fans', array('openid'=>$fans_info['openid'])).'" target="_blank" title="点击查看用户信息">'.$fans_info['nickname'].'</a>';
  1190. }
  1191. }
  1192. ?>