Report.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <?php
  2. namespace app\worker\controller;
  3. use think\facade\Session;
  4. use app\worker\BaseController;
  5. use app\common\model\ReportFactory as ReportFactoryModel;
  6. use app\common\model\ReportEntry as ReportEntryModel;
  7. use app\common\model\Agent as AgentModel;
  8. use app\common\model\Broker as BrokerModel;
  9. use PHPExcel_IOFactory;
  10. use PHPExcel;
  11. class Report extends BaseController
  12. {
  13. // 报备名单
  14. public function entryImport()
  15. {
  16. $workerid = $this->access_worker['id'];
  17. $agentlist = AgentModel::where('workerid', '=', $workerid)->order(['id'=>'asc'])->select();
  18. return view('report/entryimport',[
  19. 'agentlist' => $agentlist
  20. ]);
  21. }
  22. public function importEntry()
  23. {
  24. $workerid = $this->access_worker['id'];
  25. $agentid = input('agentid/d', 0);
  26. if (empty($agentid)){
  27. exit(json_encode(array(
  28. 'code' => 1,
  29. 'msg' => "请选择报备代理门店。"
  30. )));
  31. }
  32. $execlfile = input('execlfile/s', "");
  33. if (empty($execlfile)){
  34. exit(json_encode(array(
  35. 'code' => 1,
  36. 'msg' => "请上传导入文件。"
  37. )));
  38. }
  39. $filedata = read_excel( $execlfile );
  40. $factorylist = ReportFactoryModel::where(['status'=>1])->column('idnumber,id,title','idnumber');
  41. $createtime = input('createtime/s', "");
  42. $entry = new ReportEntryModel;
  43. $data = array();
  44. $sucnumber = 0;
  45. $errnumber = 0;
  46. foreach( $filedata as $k=>$v ){
  47. $idnumber = trim($v[7]);
  48. if (empty($factorylist[$idnumber])){
  49. $errnumber++;
  50. continue;
  51. }else{
  52. $data[] = array(
  53. 'workerid' => $workerid,
  54. 'agentid' => $agentid,
  55. 'brokerid' => 0,
  56. 'realname' => $v[1],
  57. 'mobile' => $v[2],
  58. 'idcard' => $v[3],
  59. 'gender' => $v[4],
  60. 'nation' => $v[5],
  61. 'address' => $v[6],
  62. 'factoryid' => $factorylist[$idnumber]['id'],
  63. 'startdate' => $v[8],
  64. 'enddate' => $v[9],
  65. 'reftype' => $v[10],
  66. 'refpolicy' => $v[11],
  67. 'agentremark' => $v[12],
  68. 'status' => 2,
  69. 'remark' => "",
  70. 'createtime' => $createtime
  71. );
  72. $sucnumber++;
  73. }
  74. }
  75. $entry->saveAll($data);
  76. exit(json_encode(array(
  77. 'code' => 0,
  78. 'sucnumber' => $sucnumber,
  79. 'errnumber' => $errnumber
  80. )));
  81. }
  82. public function entryForm()
  83. {
  84. $workerid = $this->access_worker['id'];
  85. $id = input('id/d', 0);
  86. $entry = ReportEntryModel::where('workerid', '=', $workerid)->findOrEmpty($id);
  87. $agentlist = AgentModel::with('broker')->where('workerid', '=', $workerid)->order(['id'=>'asc'])->select();
  88. $factorylist = ReportFactoryModel::order(['id'=>'desc'])->select();
  89. return view('report/entryform',[
  90. 'agentlist' => $agentlist,
  91. 'factorylist' => $factorylist,
  92. 'entry' => $entry
  93. ]);
  94. }
  95. public function editEntry()
  96. {
  97. $workerid = $this->access_worker['id'];
  98. $id = input('id/d', 0);
  99. $entry = ReportEntryModel::where('workerid', '=', $workerid)->findOrEmpty($id);
  100. $agentbrokerarr = explode(",", input('agentbroker/s'));
  101. $agentid = isset($agentbrokerarr[0]) ? $agentbrokerarr[0] : 0;
  102. $brokerid = isset($agentbrokerarr[1]) ? $agentbrokerarr[1] : 0;
  103. $agent = AgentModel::findOrEmpty($agentid);
  104. $data = array(
  105. 'workerid' => $workerid,
  106. 'agentid' => $agentid,
  107. 'brokerid' => $brokerid,
  108. 'factoryid' => input('factoryid/d', 0),
  109. 'realname' => input('realname/s', ""),
  110. 'mobile' => input('mobile/s', ""),
  111. 'idcard' => input('idcard/s', ""),
  112. 'gender' => input('gender/s', ""),
  113. 'nation' => input('nation/s', ""),
  114. 'address' => input('address/s', ""),
  115. 'startdate' => input('startdate/s', ""),
  116. 'enddate' => input('enddate/s', ""),
  117. 'reftype' => input('reftype/s', ""),
  118. 'refpolicy' => input('refpolicy/s', ""),
  119. 'agentremark' => input('agentremark/s', ""),
  120. 'status' => input('status/d', 1),
  121. 'remark' => input('remark/s', ""),
  122. 'createtime' => input('createtime/s', "")
  123. );
  124. if ($entry->isEmpty()){
  125. ReportEntryModel::create($data);
  126. }else{
  127. $entry->save($data);
  128. }
  129. exit(json_encode(array(
  130. 'code' => 0
  131. )));
  132. }
  133. public function delEntry()
  134. {
  135. $workerid = $this->access_worker['id'];
  136. $idarr = input('idarr/a');
  137. $entry = ReportEntryModel::where('workerid', '=', $workerid)->where('status', '=', 1)->whereIn('id',$idarr)->select();
  138. $result = $entry->delete();
  139. if ($result){
  140. exit(json_encode(array(
  141. 'code' => 0,
  142. 'msg' => ""
  143. )));
  144. }
  145. exit(json_encode(array(
  146. 'code' => 1,
  147. 'msg' => "删除失败,请稍后重试"
  148. )));
  149. }
  150. public function entryList()
  151. {
  152. $workerid = $this->access_worker['id'];
  153. $agentlist = AgentModel::where('workerid', '=', $workerid)->order(['id'=>'asc'])->select();
  154. $factorylist = ReportFactoryModel::order(['id'=>'desc'])->select();
  155. return view('report/entrylist',[
  156. 'worker' => $this->access_worker,
  157. 'agentlist' => $agentlist,
  158. 'factorylist' => $factorylist
  159. ]);
  160. }
  161. public function listEntry()
  162. {
  163. $workerid = $this->access_worker['id'];
  164. $limit = input('limit/d',20);
  165. $page = input('page/d',1);
  166. $map = array();
  167. $map[] = ['workerid', '=', $workerid];
  168. $keywords = input('keywords/s');
  169. if (!empty($keywords)){
  170. $map[] =['realname|idcard', 'like', '%'.$keywords.'%'];
  171. }
  172. $factoryid = input('factoryid/d');
  173. if (!empty($factoryid)){
  174. $map[] = ['factoryid', '=', $factoryid];
  175. }
  176. $agentid = input('agentid/d');
  177. if (!empty($agentid)){
  178. $map[] = ['agentid', '=', $agentid];
  179. }
  180. $status = input('status/d');
  181. if (!empty($status)){
  182. $map[] = ['status', '=', $status];
  183. }
  184. $list = ReportEntryModel::with(['agent','broker','reportFactory'])->where($map)->order('id','DESC')->limit($limit)->page($page)->append(['status_text'])->select();
  185. $count = ReportEntryModel::where($map)->count();
  186. if ($count==0){
  187. exit(json_encode(array(
  188. 'code' => 1,
  189. 'msg' => "未查询到数据"
  190. )));
  191. }
  192. exit(json_encode(array(
  193. 'code' => 0,
  194. 'msg' => "",
  195. 'count' => $count,
  196. 'data' => $list
  197. )));
  198. }
  199. public function exportEntry()
  200. {
  201. $workerid = $this->access_worker['id'];
  202. $map = array();
  203. $map[] = ['workerid', '=', $workerid];
  204. $keywords = input('keywords/s');
  205. if (!empty($keywords)){
  206. $map[] =['realname|idcard', 'like', '%'.$keywords.'%'];
  207. }
  208. $factoryid = input('factoryid/d');
  209. if (!empty($factoryid)){
  210. $map[] = ['factoryid', '=', $factoryid];
  211. }
  212. $agentid = input('agentid/d');
  213. if (!empty($agentid)){
  214. $map[] = ['agentid', '=', $agentid];
  215. }
  216. $status = input('status/d');
  217. if (!empty($status)){
  218. $map[] = ['status', '=', $status];
  219. }
  220. $xlsData = ReportEntryModel::with(['worker','agent','broker','reportFactory'])->where($map)->order('id','DESC')->select()->toArray();
  221. $xlsCell = array(
  222. array('id','表ID'),
  223. array('agent.title','代理门店'),
  224. array('broker.title','经纪人'),
  225. array('report_factory.title','意向工厂'),
  226. array('realname','姓名'),
  227. array('mobile','手机号'),
  228. array('idcard','身份证号'),
  229. array('gender','性别'),
  230. array('nation','民族'),
  231. array('address','现居住地'),
  232. array('startdate','出发日期'),
  233. array('enddate','预计到达日期'),
  234. array('reftype','返费模式'),
  235. array('refpolicy','返费政策'),
  236. array('agentremark','报备备注'),
  237. array('status','状态',array(1=>'待确认',2=>'已确认',3=>'已入职',4=>'未通过')),
  238. array('remark','状态备注'),
  239. array('createtime','注册时间'),
  240. );
  241. export_excel("名单报备",$xlsCell,$xlsData);
  242. }
  243. // 报备工厂
  244. public function factoryList()
  245. {
  246. return view('report/factorylist');
  247. }
  248. public function listFactory()
  249. {
  250. $limit = input('limit/d',20);
  251. $page = input('page/d',1);
  252. $map = array();
  253. $map[] = ['status', '=', 1];
  254. $keywords = input('keywords/s');
  255. if (!empty($keywords)){
  256. $map[] =['title', 'like', '%'.$keywords.'%'];
  257. }
  258. $list = ReportFactoryModel::where($map)->order('id','DESC')->limit($limit)->page($page)->select();
  259. $count = ReportFactoryModel::where($map)->count();
  260. if ($count==0){
  261. exit(json_encode(array(
  262. 'code' => 1,
  263. 'msg' => "未查询到数据"
  264. )));
  265. }
  266. exit(json_encode(array(
  267. 'code' => 0,
  268. 'msg' => "",
  269. 'count' => $count,
  270. 'data' => $list
  271. )));
  272. }
  273. }