budgetPostNum-add.jsp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>预算岗位人数表</title>
  7. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  8. <script src = "webpage/cn/com/lzt/budget/data/js/budget_tools.js"></script>
  9. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Cq7aZVbka0L3UXDLgkKFoiFqnZAwPdS4"></script>
  10. <%--<script src="plug-in/cron/cron.js" type="text/javascript"></script>--%>
  11. <style>
  12. html{
  13. height:100%;
  14. }
  15. body {
  16. height:100%;
  17. }
  18. .mainwrapp{
  19. display:flex;
  20. height:100%;
  21. }
  22. .left{
  23. width:500px;
  24. padding-left:20px;
  25. padding-right:20px;
  26. }
  27. .right{
  28. flex:1;
  29. }
  30. .info{
  31. position:absolute;
  32. left:600px;
  33. z-index: 999;
  34. background-color: rgba(255,255,255,0.5);
  35. /*opacity:0.5;*/
  36. }
  37. #container{
  38. width:100%;
  39. height:100%;
  40. }
  41. fieldset{
  42. border:1px solid #666666;padding:5px
  43. }
  44. </style>
  45. <script type="text/javascript">
  46. //编写自定义JS代码
  47. </script>
  48. </head>
  49. <body>
  50. <div class="mainwrapp">
  51. <div class="left">
  52. <c:if test="${param.type ==0}">
  53. <div class="info">
  54. <h2 style="text-align: center;font-weight:bold">社会化用工情况</h2>
  55. <table>
  56. <tr>
  57. <th>人员类型</th><th>可用人数</th><th>持证人数</th>
  58. </tr>
  59. <tr>
  60. <td>普保临保</td><td align="center">0</td><td align="center">0</td>
  61. </tr>
  62. <tr>
  63. <td>特保临保</td><td align="center">0</td><td align="center">0</td>
  64. </tr>
  65. <tr>
  66. <td>工程技工-高压电工</td><td align="center">0</td><td align="center">0</td>
  67. </tr>
  68. <tr>
  69. <td>工程技工-低压电工</td><td align="center">0</td><td align="center">0</td>
  70. </tr>
  71. <tr>
  72. <td>工程技工-空调工</td><td align="center">0</td><td align="center">0</td>
  73. </tr>
  74. <tr>
  75. <td>临时保洁</td><td align="center">0</td><td align="center">0</td>
  76. </tr>
  77. <tr>
  78. <td>临时会务</td><td align="center">0</td><td align="center">0</td>
  79. </tr>
  80. </table>
  81. </div>
  82. 市场配置人员费用:${param.scfy}
  83. 市场配置人员数量:${param.scrs}
  84. 外包人员费用:${param.wbfy}
  85. 外包人员数量:${param.wbrs}
  86. <div style="height:5px;"></div>
  87. 人力成本方案:<t:dictSelect field="scheme" id="scheme" type="list" dictTable="t_b_budget_cost_hr_scheme" dictField="id" dictText="name"/>
  88. 自有员工预估费用:<label id="feiyong"></label>
  89. <div style="height:5px;border-bottom:1px solid #666666;"></div>
  90. <div style="height:15px;"></div>
  91. </c:if>
  92. <t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" action="budgetPostNumController.do?doAdd" >
  93. <input id="id" name="id" type="hidden" value="${entity.id }"/>
  94. <input id="type" name="type" type="hidden" value="${param.type }"/>
  95. <input id="entityId" name="entityId" type="hidden" value="${param.entityId }"/>
  96. <input id="periodYear" name="periodYear" type="hidden" value="${param.periodYear }"/>
  97. <table cellpadding="0" cellspacing="1">
  98. <tr>
  99. <th align="right" style="padding-right:9px;">岗位名称</th>
  100. <th align="center">人数</th>
  101. <c:if test="${param.type ==0}">
  102. <th align="center">人员物资配置方案</th>
  103. </c:if>
  104. </tr>
  105. <c:forEach items="${budgetPostEntityList}" var="budgetPost" varStatus="s">
  106. <input type="hidden" name="postNumDetailEntities[${s.index }].postId" value="${budgetPost.id}"/>
  107. <input type="hidden" name="postNumDetailEntities[${s.index }].postName" value="${budgetPost.postName}"/>
  108. <c:set var="detail" value="${detailMap[budgetPost.id]}"/>
  109. <tr>
  110. <td align="right">
  111. <label class="Validform_label">
  112. ${budgetPost.postName}:
  113. </label>
  114. </td>
  115. <td class="value">
  116. <input id="postNumDetailEntities[${s.index }].num" name="postNumDetailEntities[${s.index }].num"
  117. type="text" style="width: 150px" value="${empty detail.num?0.0:detail.num}" onchange="estimate()" />
  118. </td>
  119. <c:if test="${param.type ==0}">
  120. <td class="value">
  121. <t:dictSelect field="postNumDetailEntities[${s.index }].costPostMaterialSchemeId" type="list"
  122. dictTable="t_b_budget_cost_post_material_scheme" dictField="id" dictText="name"
  123. defaultVal="${detail.costPostMaterialSchemeId}" hasLabel="false"></t:dictSelect>
  124. </td>
  125. </c:if>
  126. </tr>
  127. </c:forEach>
  128. </table>
  129. </t:formvalid>
  130. </div>
  131. <div class="right">
  132. <div id="container"></div>
  133. </div>
  134. </div>
  135. </body>
  136. <script>
  137. var entityId='${param.entityId}';
  138. var distanceLimit=2000;
  139. function getData(){
  140. var obj = {};
  141. obj.id = $('#id').val();
  142. return obj;
  143. }
  144. function estimate(){
  145. var scheme = $('#scheme').val();
  146. if(!scheme){
  147. // _alert('请选择成本方案');
  148. return;
  149. }
  150. var form = $('#formobj');
  151. var url = 'budgetPostNumController.do?estimate';
  152. var data=form.serialize();
  153. data+="&schemeId="+scheme;
  154. $.ajax({
  155. type: "POST",
  156. dataType: "json",
  157. url: url ,
  158. data: data,
  159. success: function (d) {
  160. var v=d.obj;
  161. $('#feiyong').html(v);
  162. },
  163. error : function() {
  164. alert("异常!");
  165. }
  166. });
  167. }
  168. var map;
  169. var centerPoint ;
  170. var centerMarker;
  171. $(function(){
  172. $('#scheme').bind('change',function(){
  173. estimate();
  174. })
  175. <c:if test="${param.type ==0}">
  176. $.post('budgetEntityController.do?getMapPoint4Postnum',{entityId:entityId},function(d){
  177. var obj = d.obj;
  178. map = new BMap.Map('container'); // 创建Map实例
  179. map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
  180. for(var i =0;i<obj.length;i++){
  181. var one = obj[i];
  182. var id=one[0];
  183. var entityName=one[1];
  184. if(!one[2]) continue;
  185. var lnglat = one[2].split(',');
  186. if(id==entityId) {
  187. var point = new BMap.Point(lnglat[0],lnglat[1]);
  188. centerPoint = point;
  189. var circle = new BMap.Circle(point,distanceLimit,{
  190. strokeColor: "blue",
  191. strokeWeight: 1,
  192. fillColor: "#E2E8F1",
  193. fillOpacity: 0.6
  194. });
  195. map.addOverlay(circle);
  196. break;
  197. }
  198. }
  199. for(var i =0;i<obj.length;i++){
  200. var one = obj[i];
  201. var id=one[0];
  202. var entityName=one[1];
  203. if(!one[2]) continue;
  204. var lnglat = one[2].split(',');
  205. var point = new BMap.Point(lnglat[0],lnglat[1]);
  206. var dis = map.getDistance(point,centerPoint);
  207. if(dis>distanceLimit) continue;
  208. let projectUserInfo =getProjectUserInfo();
  209. var marker=addMarker(point,projectUserInfo.icon);
  210. marker.addEventListener('mouseover',function(){
  211. this.openInfoWindow(new BMap.InfoWindow(projectUserInfo.html));
  212. });
  213. marker.addEventListener('mouseout',function(){
  214. this.closeInfoWindow();
  215. });
  216. addInfoWindow(marker,entityName,0)
  217. }
  218. // map.addControl(new BMap.NavigationControl()); //缩放按钮
  219. console.log(centerPoint)
  220. map.centerAndZoom(centerPoint, 15); // 初始化地图,设置中心点坐标和地图级别
  221. },'json');
  222. </c:if>
  223. })
  224. function getProjectUserInfo(){
  225. var html='<table>' +
  226. '<h2 style="text-align: center;font-weight:bold">项目可共享人员</h2><tr align="center"><th>岗位类型</th><th>人数</th><th>可共享时段</th></tr>';
  227. var maxUserCount=0;
  228. var num1=Math.floor(Math.random()*maxUserCount);
  229. html+=' <tr><td align="left">内勤</td><td align="center">'+num1+'</td><td></td></tr>';
  230. var num2=Math.floor(Math.random()*maxUserCount);
  231. html+=' <tr><td align="left">特保</td><td align="center">'+num2+'</td><td></td></tr>';
  232. var num3=Math.floor(Math.random()*maxUserCount);
  233. html+=' <tr><td align="left">普保</td><td align="center">'+num3+'</td><td></td></tr>';
  234. var num4=Math.floor(Math.random()*maxUserCount);
  235. html+=' <tr><td align="left">工程</td><td align="center">'+num4+'</td><td></td></tr>';
  236. var num5=Math.floor(Math.random()*maxUserCount);
  237. html+=' <tr><td align="left">保洁</td><td align="center">'+num5+'</td><td>周六、周日</td></tr>';
  238. html+='</table>';
  239. var total = num1+num2+num3+num4+num5;
  240. var icon = yellowIcon;
  241. if(total>9){
  242. icon=greenIcon;
  243. }else if(total==0){
  244. icon=redIcon;
  245. }
  246. var info={};
  247. info.html=html;
  248. info.icon = icon;
  249. return info;
  250. }
  251. function addInfoWindow(marker, content,number) {
  252. var offsetSize = new BMap.Size(0, 0);
  253. var labelStyle = {
  254. color: "#fff",
  255. backgroundColor: "0.05",
  256. border: "0"
  257. };
  258. //不同数字长度需要设置不同的样式。
  259. switch((number + '').length) {
  260. case 1:
  261. labelStyle.fontSize = "14px";
  262. offsetSize = new BMap.Size(4, 2);
  263. break;
  264. case 2:
  265. labelStyle.fontSize = "12px";
  266. offsetSize = new BMap.Size(2, 4);
  267. break;
  268. case 3:
  269. labelStyle.fontSize = "10px";
  270. offsetSize = new BMap.Size(-2, 4);
  271. break;
  272. default:
  273. break;
  274. }
  275. var label = new BMap.Label(number, {
  276. offset: offsetSize
  277. });
  278. label.setStyle(labelStyle);
  279. marker.setLabel(label);
  280. var label = new window.BMap.Label(content, { offset: new BMap.Size(20, -10) });
  281. marker.setLabel(label);
  282. }
  283. var greenIcon = new BMap.Icon("webpage/cn/com/lzt/budget/postnum/maker-green.png", new BMap.Size(32, 32));
  284. var redIcon = new BMap.Icon("webpage/cn/com/lzt/budget/postnum/maker-red.png", new BMap.Size(32, 32));
  285. var yellowIcon = new BMap.Icon("webpage/cn/com/lzt/budget/postnum/maker-yellow.png", new BMap.Size(32, 32));
  286. function addMarker(point,icon) {
  287. var marker = new BMap.Marker(point,{icon:icon});
  288. map.addOverlay(marker);
  289. return marker;
  290. }
  291. </script>
  292. <script src = "webpage/cn/com/lzt/budget/postnum/budgetPostNum.js"></script>