Commit 6bf419589a8fcd01fa9552a2bb26e168b25f944f

Authored by 潘钊
2 parents 45db8ef4 a8ef52ad

Merge branch 'minhang' of http://222.66.0.204:8800/panzhaov5/bsth_control into minhang

README.md
1 -公交调度系统BS版 0.1  
2 -======  
3 -----------  
4 -## 目录  
5 ----------  
6 - * [字典表](#字典表)  
7 - * [动态jpa查询实现](#动态jpa查询实现)  
8 - * [车载 gps 相关数据](#gps)  
9 - * [实时gps数据接口 http](#实时gps接口)  
10 - * [进出站数据表结构](#进站数据)  
11 - * [异常警报表结构](#异常警报)  
12 - * [大间隔](#大间隔)  
13 - * [超速](#超速)  
14 - * [越界](#越界)  
15 - * [越站](#越站)  
16 - * [聚集](#聚集)  
17 - * [掉线](#掉线)  
18 - * [调度消息下发接口HTTP](#调度消息下发接口)  
19 - * [调度消息上传接口HTTP](#调度消息上传接口)  
20 -  
21 -----------  
22 -  
23 -## 字典表  
24 -----------  
25 -字典操作全部由前端负责,主要有2种。  
26 -  
27 -1、转换字典代码。  
28 - 当pjax的`pjax:success`事件被触发(片段加载完成)  
29 - 扫描容器内所有有 `$(".nt-dictionary")` 元素进行字典转换  
30 -``` html  
31 ---dom标签为span div p h1 h2 h3 h4 h5 h6 等等文本元素时,如下写法,text为要转换的代码  
32 -<span class="nt-dictionary" data-group="ScheduleType">out</span>  
33 ---to  
34 -<span>出场</span>  
35 -  
36 -<!- dom标签为input时,如下 data-code为要转换的代码 -->  
37 -<input class="nt-dictionary" data-group="ScheduleType" data-code="out">  
38 ---to  
39 -<input value="出场">  
40 -  
41 -<!- dom标签为select时 如下 data-code为要选中的项 -->  
42 -<select class="nt-dictionary" data-group="ScheduleType" data-code="out"></select>  
43 ---to  
44 -<select>  
45 - <option value="normal">正常班次</option>  
46 - <option value="out" selected>出场</option>  
47 - <option value="in">进场</option>  
48 - <option value="oil">加油</option>  
49 - <option value="temp">临加</option>  
50 - <option value="region">区间</option>  
51 - <option value="venting">放空</option>  
52 - <option value="major">放大站</option>  
53 -</select>  
54 -```  
55 -*原标签的class 除nt-dictionary 外,其余均会被保留*  
56 -  
57 -2、dictionary.js提供如下方法自行使用  
58 -| 方法名 | 参数|返回|  
59 -| ---- | ---- | ---- | ---- |  
60 -| groups (获取所有字典组) | 无| | {LineTrend: 线路走向, ScheduleType: 班次类型} |  
61 -| getByGroup (获取字典组下的字典)| (group) |{0: 上行, 1: 下行}|  
62 -| transformCode (转换字典代码)| (group, code) | 上行 |  
63 -  
64 -## 动态jpa查询实现  
65 -----------  
66 -*参考调度系统枚举com.bsth.entity.search.SearchOperator*  
67 -  
68 -  
69 -## gps  
70 -----------  
71 -### 实时gps接口  
72 -  
73 -所有在线GPS: [http://192.168.168.192:8080/transport_server/rtgps](http://192.168.168.192:8080/transport_server/rtgps/)  
74 -根据设备号查询:[http://192.168.168.192:8080/transport_server/rtgps/05B01901](http://192.168.168.192:8080/transport_server/rtgps/05B01901)  
75 -  
76 -<span style="color: red">Response</span>:  
77 -```json  
78 -{  
79 - "data":[  
80 - {  
81 - "companyCode":5,  
82 - "lineId":10329,  
83 - "deviceId":"05B01901",  
84 - "carparkNo":"00000000",  
85 - "stopNo":"7C890002",  
86 - "lon":121.549866,  
87 - "lat":31.238798,  
88 - "timestamp":1397104499000,  
89 - "speed":42.0,  
90 - "direction":245.9,  
91 - "state":0,  
92 - "upDown":0  
93 - }]  
94 -}  
95 -```  
96 -  
97 -| -- | --|--|  
98 -| ---- | ---- | ---- |  
99 -| companyCode | int | 公司代码 |  
100 -| lineId | int | 线路编码 |  
101 -| deviceId | String | 设备编号 |  
102 -| carparkNo | String | 停车场编码 |  
103 -| stopNo | String | 站点编码 |  
104 -| lon | float | 经度 |  
105 -| lat | float | 纬度 |  
106 -| timestamp | long | 时间戳 |  
107 -| speed | float | 速度|  
108 -| direction | float | 方向(角度) |  
109 -| state | int | 营运状态( 0 营运 ,1 非营运, -1 无效) |  
110 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效)|  
111 -  
112 -  
113 -### 进站数据  
114 -----------  
115 -表名:  
116 -  
117 -| .. | .. | .. |  
118 -| ---- | ---- | ---- |  
119 -| id | int | 主键 |  
120 -| deviceId | String | 设备号 |  
121 -| lineId | int | 线路编码 |  
122 -| stopNo | long | 站点编码 |  
123 -| timestamp | long | 时间戳 |  
124 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
125 -| createDate | Date | 创建时间 |  
126 -  
127 -  
128 -### 异常警报  
129 -----------  
130 -  
131 -### 大间隔  
132 -----------  
133 -表名:  
134 -  
135 -| .. | .. | .. |  
136 -| ---- | ---- | ---- |  
137 -| id | int | 主键 |  
138 -| line | int | 线路编码 |  
139 -| station | String | 站点编码 |  
140 -| cVehicle | String | 当前车辆编码 |  
141 -| lastVehicle | String | 上一个车辆编码 |  
142 -| interval | long | 间隔时间(秒) |  
143 -| timestamp | long | 时间戳 |  
144 -| createDate | Date | 创建时间 |  
145 -  
146 -### 超速  
147 -----------  
148 -表名:  
149 -  
150 -| .. | .. | .. |  
151 -| ---- | ---- | ---- |  
152 -| id | int | 主键 |  
153 -| vehicle | String | 车辆编码 |  
154 -| line | int | 线路编码 |  
155 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
156 -| lon | float | 经度 |  
157 -| lat | float | 纬度|  
158 -| speed | float | 速度 |  
159 -| timestamp | long | 时间戳 |  
160 -| createDate | Date | 时间 |  
161 -  
162 -### 越界  
163 -----------  
164 -表名:  
165 -  
166 -| .. | .. | .. |  
167 -| ---- | ---- | ---- |  
168 -| id | int | 主键 |  
169 -| vehicle | String | 车辆编码 |  
170 -| line | int | 线路编码 |  
171 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
172 -| lon | float | 经度 |  
173 -| lat | float | 纬度|  
174 -| location | String | 越界位置(由线调页面进行初始转换)意思是该字段默认为空,页面第一次查看时会写入值|  
175 -| timestamp | long | 时间戳 |  
176 -| createDate | Date | 时间 |  
177 -  
178 -  
179 -### 越站  
180 -----------  
181 -表名:  
182 -  
183 -| .. | .. | .. |  
184 -| ---- | ---- | ---- |  
185 -| id | int | 主键 |  
186 -| line | int | 线路编码 |  
187 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
188 -| station | String | 站点编码 |  
189 -| vehicle | String | 车辆编码 |  
190 -| inData | Date | 进站时间 |  
191 -| outDate | Date | 出站时间 |  
192 -  
193 -  
194 -### 聚集  
195 -----------  
196 -表名:  
197 -  
198 -| .. | .. | .. |  
199 -| ---- | ---- | ---- |  
200 -| id | int | 主键 |  
201 -| line | int | 线路编码 |  
202 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
203 -| stations | String | 站点(多个用 , 号分隔。应该是连续站点) |  
204 -| vehicles | String | 车辆编码(多个用 , 号分隔) |  
205 -| timestamp | long | 时间戳 |  
206 -| createDate | Date | 时间 |  
207 -  
208 -  
209 -### 掉线  
210 -----------  
211 -表名:  
212 -  
213 -| .. | .. | .. |  
214 -| ---- | ---- | ---- |  
215 -| id | int | 主键 |  
216 -| line | int | 线路编码 |  
217 -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |  
218 -| vehicle | String | 车辆编码 |  
219 -| lon | float | 经度 |  
220 -| lat | float | 纬度|  
221 -| timestamp | long | 时间戳 |  
222 -| createDate | Date | 时间 |  
223 -  
224 -  
225 -### 调度消息下发接口  
226 -----------  
227 -[http://192.168.168.192:8080/transport_server/message](http://192.168.168.192:8080/transport_server/message/)  
228 -  
229 -<span style="color: red">Request</span>:  
230 -```json  
231 -{  
232 - "deviceId":12345,  
233 - "timestamp":44324,  
234 - "operCode":0x60,  
235 - "data":{  
236 - "companyCode":22,  
237 - "deviceId":"029L2222",  
238 - "timestamp":134326,  
239 - "instructType":00,  
240 - "dispatchInstruct":0x00,  
241 - "msgId":12345,  
242 - "alarmTime":201606012000,  
243 - "serviceState":00000000,  
244 - "txtContent":"你好"  
245 - }  
246 -}  
247 -```  
248 -| .. | .. | .. |  
249 -| ---- | ---- | ---- |  
250 -| deviceId | string | 设备编号 |  
251 -| timestamp | long | 时间戳(ms) |  
252 -| operCode | short | 一级协议 |  
253 -| data.companyCode | short | 公司代码 |  
254 -| data.deviceId | string | 设备编号 |  
255 -| data.timestamp | long | 时间戳 |  
256 -| data.instructType | short | 保留 默认0 |  
257 -| data.dispatchInstruct | short | 调度指令 调度指令。0X00表示信息短语,0X01表示取消上次指令+调度指令(闹钟有效),0x02表示为调度指令(闹钟有效); 0x03表示运营状态指令(闹钟无效);0x04表示其他指令。|  
258 -| data.msgId | long | 同上 |  
259 -| data.alarmTime | long | 闹钟 MMddhhmm|  
260 -| data.serviceState | long | 多状态字节   先由车载发起车辆故障、事故报告、扣证、纠纷、加油等审请,经调度确认后,下发调度指令与运营状态。当调度指令为0X00终端需要提示信息。当调度指令为0x01和0x02,终端需要收到后提示信息。并且必须在闹钟结束后进行终端相关状态更新。在闹钟时间前120秒开始提示。当调度指令为0x03,收到后进行终端相关状态更新,终端不需要提示信息。当调度指令为0x04,暂不需要提示信息。|  
261 -| data.txtContent | string | 下发的消息文本 |  
262 -```json  
263 -{  
264 - "deviceId":12345,  
265 - "timestamp":44324,  
266 - "operCode":0x64,  
267 - "data":{  
268 - "cityCode":22,  
269 - "deviceId":"029L2222",  
270 - "lineId":"134326"  
271 - }  
272 -}  
273 -```  
274 -| .. | .. | .. |  
275 -| ---- | ---- | ---- |  
276 -| deviceId | string | 设备编号 |  
277 -| timestamp | long | 时间戳(ms) |  
278 -| operCode | short | 一级协议 |  
279 -| data.cityCode | short | 城市区号 |  
280 -| data.deviceId | string | 设备编号 |  
281 -| data.lineId | string | 线路编号 6位 不足6位前面补0 如编号890 用000890表示 |  
282 -  
283 -```json  
284 -{  
285 - "deviceId":12345,  
286 - "timestamp":44324,  
287 - "operCode":0xC0,  
288 - "data":{  
289 - "operCode":0x86,  
290 - "requestAck":0x06  
291 - }  
292 -}  
293 -```  
294 -| .. | .. | .. |  
295 -| ---- | ---- | ---- |  
296 -| deviceId | string | 设备编号 |  
297 -| timestamp | long | 时间戳(ms) |  
298 -| operCode | short | 一级协议 |  
299 -| data.operCode | short | 二级协议 |  
300 -| data.requestAck | short | 请求应答字 0x06同意 0x15不同意|  
301 -  
302 -<span style="color: red">Response</span>:  
303 -```json  
304 -{  
305 - "errCode":0  
306 -}  
307 -```  
308 -  
309 -  
310 -### 调度消息上传接口  
311 -----------  
312 -上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream)  
313 -<span style="color: red">Request</span>:  
314 -```json  
315 -{  
316 - "deviceId":12345,  
317 - "timestamp":44324,  
318 - "status":0,  
319 - "operCode":0x80,  
320 - "data":{  
321 - "operCode":0x26,  
322 - "requestCode":22  
323 - }  
324 -}  
325 -```  
326 -| .. | .. | .. |  
327 -| ---- | ---- | ---- |  
328 -| deviceId | string | 设备编号 |  
329 -| timestamp | long | 时间戳(ms) |  
330 -| status | int | 0x80时无数据 0表示失败 1表示成功或设备确认 2表示驾驶员阅读 |  
331 -| operCode | short | 一级协议 消息确认将无数据 |  
332 -| data.operCode | short | 二级协议 |  
333 -| data.requestCode | short | 请求代码0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 |  
334 -<span style="color: red">Response</span>:  
335 -```json  
336 -{  
337 - "errCode":0  
338 -}  
339 -```  
340 \ No newline at end of file 1 \ No newline at end of file
  2 +公交调度系统BS版 0.1
  3 +======
  4 +----------
  5 +## 目录
  6 +---------
  7 + * [字典表](#字典表)
  8 + * [动态jpa查询实现](#动态jpa查询实现)
  9 + * [车载 gps 相关数据](#gps)
  10 + * [实时gps数据接口 http](#实时gps接口)
  11 + * [进出站数据表结构](#进站数据)
  12 + * [异常警报表结构](#异常警报)
  13 + * [大间隔](#大间隔)
  14 + * [超速](#超速)
  15 + * [越界](#越界)
  16 + * [越站](#越站)
  17 + * [聚集](#聚集)
  18 + * [掉线](#掉线)
  19 + * [调度消息下发接口HTTP](#调度消息下发接口)
  20 + * [调度消息上传接口HTTP](#调度消息上传接口)
  21 +
  22 +----------
  23 +
  24 +## 字典表
  25 +----------
  26 +字典操作全部由前端负责,主要有2种。
  27 +
  28 +1、转换字典代码。
  29 + 当pjax的`pjax:success`事件被触发(片段加载完成)
  30 + 扫描容器内所有有 `$(".nt-dictionary")` 元素进行字典转换
  31 +``` html
  32 +--dom标签为span div p h1 h2 h3 h4 h5 h6 等等文本元素时,如下写法,text为要转换的代码
  33 +<span class="nt-dictionary" data-group="ScheduleType">out</span>
  34 +--to
  35 +<span>出场</span>
  36 +
  37 +<!- dom标签为input时,如下 data-code为要转换的代码 -->
  38 +<input class="nt-dictionary" data-group="ScheduleType" data-code="out">
  39 +--to
  40 +<input value="出场">
  41 +
  42 +<!- dom标签为select时 如下 data-code为要选中的项 -->
  43 +<select class="nt-dictionary" data-group="ScheduleType" data-code="out"></select>
  44 +--to
  45 +<select>
  46 + <option value="normal">正常班次</option>
  47 + <option value="out" selected>出场</option>
  48 + <option value="in">进场</option>
  49 + <option value="oil">加油</option>
  50 + <option value="temp">临加</option>
  51 + <option value="region">区间</option>
  52 + <option value="venting">放空</option>
  53 + <option value="major">放大站</option>
  54 +</select>
  55 +```
  56 +*原标签的class 除nt-dictionary 外,其余均会被保留*
  57 +
  58 +2、dictionary.js提供如下方法自行使用
  59 +| 方法名 | 参数|返回|
  60 +| ---- | ---- | ---- | ---- |
  61 +| groups (获取所有字典组) | 无| | {LineTrend: 线路走向, ScheduleType: 班次类型} |
  62 +| getByGroup (获取字典组下的字典)| (group) |{0: 上行, 1: 下行}|
  63 +| transformCode (转换字典代码)| (group, code) | 上行 |
  64 +
  65 +## 动态jpa查询实现
  66 +----------
  67 +*参考调度系统枚举com.bsth.entity.search.SearchOperator*
  68 +
  69 +
  70 +## gps
  71 +----------
  72 +### 实时gps接口
  73 +
  74 +所有在线GPS: [http://192.168.168.192:8080/transport_server/rtgps](http://192.168.168.192:8080/transport_server/rtgps/)
  75 +根据设备号查询:[http://192.168.168.192:8080/transport_server/rtgps/05B01901](http://192.168.168.192:8080/transport_server/rtgps/05B01901)
  76 +
  77 +<span style="color: red">Response</span>:
  78 +```json
  79 +{
  80 + "data":[
  81 + {
  82 + "companyCode":5,
  83 + "lineId":10329,
  84 + "deviceId":"05B01901",
  85 + "carparkNo":"00000000",
  86 + "stopNo":"7C890002",
  87 + "lon":121.549866,
  88 + "lat":31.238798,
  89 + "timestamp":1397104499000,
  90 + "speed":42.0,
  91 + "direction":245.9,
  92 + "state":0,
  93 + "upDown":0
  94 + }]
  95 +}
  96 +```
  97 +
  98 +| -- | --|--|
  99 +| ---- | ---- | ---- |
  100 +| companyCode | int | 公司代码 |
  101 +| lineId | int | 线路编码 |
  102 +| deviceId | String | 设备编号 |
  103 +| carparkNo | String | 停车场编码 |
  104 +| stopNo | String | 站点编码 |
  105 +| lon | float | 经度 |
  106 +| lat | float | 纬度 |
  107 +| timestamp | long | 时间戳 |
  108 +| speed | float | 速度|
  109 +| direction | float | 方向(角度) |
  110 +| state | int | 营运状态( 0 营运 ,1 非营运, -1 无效) |
  111 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效)|
  112 +
  113 +
  114 +### 进站数据
  115 +----------
  116 +表名:
  117 +
  118 +| .. | .. | .. |
  119 +| ---- | ---- | ---- |
  120 +| id | int | 主键 |
  121 +| deviceId | String | 设备号 |
  122 +| lineId | int | 线路编码 |
  123 +| stopNo | long | 站点编码 |
  124 +| timestamp | long | 时间戳 |
  125 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  126 +| createDate | Date | 创建时间 |
  127 +
  128 +
  129 +### 异常警报
  130 +----------
  131 +
  132 +### 大间隔
  133 +----------
  134 +表名:
  135 +
  136 +| .. | .. | .. |
  137 +| ---- | ---- | ---- |
  138 +| id | int | 主键 |
  139 +| line | int | 线路编码 |
  140 +| station | String | 站点编码 |
  141 +| cVehicle | String | 当前车辆编码 |
  142 +| lastVehicle | String | 上一个车辆编码 |
  143 +| interval | long | 间隔时间(秒) |
  144 +| timestamp | long | 时间戳 |
  145 +| createDate | Date | 创建时间 |
  146 +
  147 +### 超速
  148 +----------
  149 +表名:
  150 +
  151 +| .. | .. | .. |
  152 +| ---- | ---- | ---- |
  153 +| id | int | 主键 |
  154 +| vehicle | String | 车辆编码 |
  155 +| line | int | 线路编码 |
  156 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  157 +| lon | float | 经度 |
  158 +| lat | float | 纬度|
  159 +| speed | float | 速度 |
  160 +| timestamp | long | 时间戳 |
  161 +| createDate | Date | 时间 |
  162 +
  163 +### 越界
  164 +----------
  165 +表名:
  166 +
  167 +| .. | .. | .. |
  168 +| ---- | ---- | ---- |
  169 +| id | int | 主键 |
  170 +| vehicle | String | 车辆编码 |
  171 +| line | int | 线路编码 |
  172 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  173 +| lon | float | 经度 |
  174 +| lat | float | 纬度|
  175 +| location | String | 越界位置(由线调页面进行初始转换)意思是该字段默认为空,页面第一次查看时会写入值|
  176 +| timestamp | long | 时间戳 |
  177 +| createDate | Date | 时间 |
  178 +
  179 +
  180 +### 越站
  181 +----------
  182 +表名:
  183 +
  184 +| .. | .. | .. |
  185 +| ---- | ---- | ---- |
  186 +| id | int | 主键 |
  187 +| line | int | 线路编码 |
  188 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  189 +| station | String | 站点编码 |
  190 +| vehicle | String | 车辆编码 |
  191 +| inData | Date | 进站时间 |
  192 +| outDate | Date | 出站时间 |
  193 +
  194 +
  195 +### 聚集
  196 +----------
  197 +表名:
  198 +
  199 +| .. | .. | .. |
  200 +| ---- | ---- | ---- |
  201 +| id | int | 主键 |
  202 +| line | int | 线路编码 |
  203 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  204 +| stations | String | 站点(多个用 , 号分隔。应该是连续站点) |
  205 +| vehicles | String | 车辆编码(多个用 , 号分隔) |
  206 +| timestamp | long | 时间戳 |
  207 +| createDate | Date | 时间 |
  208 +
  209 +
  210 +### 掉线
  211 +----------
  212 +表名:
  213 +
  214 +| .. | .. | .. |
  215 +| ---- | ---- | ---- |
  216 +| id | int | 主键 |
  217 +| line | int | 线路编码 |
  218 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  219 +| vehicle | String | 车辆编码 |
  220 +| lon | float | 经度 |
  221 +| lat | float | 纬度|
  222 +| timestamp | long | 时间戳 |
  223 +| createDate | Date | 时间 |
  224 +
  225 +
  226 +### 调度消息下发接口
  227 +----------
  228 +[http://192.168.168.192:8080/transport_server/message](http://192.168.168.192:8080/transport_server/message/)
  229 +
  230 +<span style="color: red">Request</span>:
  231 +```json
  232 +{
  233 + "deviceId":12345,
  234 + "timestamp":44324,
  235 + "operCode":0x60,
  236 + "data":{
  237 + "companyCode":22,
  238 + "deviceId":"029L2222",
  239 + "timestamp":134326,
  240 + "instructType":00,
  241 + "dispatchInstruct":0x00,
  242 + "msgId":12345,
  243 + "alarmTime":201606012000,
  244 + "serviceState":00000000,
  245 + "txtContent":"你好"
  246 + }
  247 +}
  248 +```
  249 +| .. | .. | .. |
  250 +| ---- | ---- | ---- |
  251 +| deviceId | string | 设备编号 |
  252 +| timestamp | long | 时间戳(ms) |
  253 +| operCode | short | 一级协议 |
  254 +| data.companyCode | short | 公司代码 |
  255 +| data.deviceId | string | 设备编号 |
  256 +| data.timestamp | long | 时间戳 |
  257 +| data.instructType | short | 保留 默认0 |
  258 +| data.dispatchInstruct | short | 调度指令 调度指令。0X00表示信息短语,0X01表示取消上次指令+调度指令(闹钟有效),0x02表示为调度指令(闹钟有效); 0x03表示运营状态指令(闹钟无效);0x04表示其他指令。|
  259 +| data.msgId | long | 同上 |
  260 +| data.alarmTime | long | 闹钟 MMddhhmm|
  261 +| data.serviceState | long | 多状态字节   先由车载发起车辆故障、事故报告、扣证、纠纷、加油等审请,经调度确认后,下发调度指令与运营状态。当调度指令为0X00终端需要提示信息。当调度指令为0x01和0x02,终端需要收到后提示信息。并且必须在闹钟结束后进行终端相关状态更新。在闹钟时间前120秒开始提示。当调度指令为0x03,收到后进行终端相关状态更新,终端不需要提示信息。当调度指令为0x04,暂不需要提示信息。|
  262 +| data.txtContent | string | 下发的消息文本 |
  263 +```json
  264 +{
  265 + "deviceId":12345,
  266 + "timestamp":44324,
  267 + "operCode":0x64,
  268 + "data":{
  269 + "cityCode":22,
  270 + "deviceId":"029L2222",
  271 + "lineId":"134326"
  272 + }
  273 +}
  274 +```
  275 +| .. | .. | .. |
  276 +| ---- | ---- | ---- |
  277 +| deviceId | string | 设备编号 |
  278 +| timestamp | long | 时间戳(ms) |
  279 +| operCode | short | 一级协议 |
  280 +| data.cityCode | short | 城市区号 |
  281 +| data.deviceId | string | 设备编号 |
  282 +| data.lineId | string | 线路编号 6位 不足6位前面补0 如编号890 用000890表示 |
  283 +
  284 +```json
  285 +{
  286 + "deviceId":12345,
  287 + "timestamp":44324,
  288 + "operCode":0xC0,
  289 + "data":{
  290 + "operCode":0x86,
  291 + "requestAck":0x06
  292 + }
  293 +}
  294 +```
  295 +| .. | .. | .. |
  296 +| ---- | ---- | ---- |
  297 +| deviceId | string | 设备编号 |
  298 +| timestamp | long | 时间戳(ms) |
  299 +| operCode | short | 一级协议 |
  300 +| data.operCode | short | 二级协议 |
  301 +| data.requestAck | short | 请求应答字 0x06同意 0x15不同意|
  302 +
  303 +<span style="color: red">Response</span>:
  304 +```json
  305 +{
  306 + "errCode":0
  307 +}
  308 +```
  309 +
  310 +
  311 +### 调度消息上传接口
  312 +----------
  313 +上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream)
  314 +<span style="color: red">Request</span>:
  315 +```json
  316 +{
  317 + "deviceId":12345,
  318 + "timestamp":44324,
  319 + "status":0,
  320 + "operCode":0x80,
  321 + "data":{
  322 + "operCode":0x26,
  323 + "requestCode":22
  324 + }
  325 +}
  326 +```
  327 +| .. | .. | .. |
  328 +| ---- | ---- | ---- |
  329 +| deviceId | string | 设备编号 |
  330 +| timestamp | long | 时间戳(ms) |
  331 +| status | int | 0x80时无数据 0表示失败 1表示成功或设备确认 2表示驾驶员阅读 |
  332 +| operCode | short | 一级协议 消息确认将无数据 |
  333 +| data.operCode | short | 二级协议 |
  334 +| data.requestCode | short | 请求代码0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 |
  335 +<span style="color: red">Response</span>:
  336 +```json
  337 +{
  338 + "errCode":0
  339 +}
  340 +```
src/main/resources/static/pages/scheduleApp/module/common/dt/MyEmployeeGroupWrapTemplate.html
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 border: 1px solid #ddd; 7 border: 1px solid #ddd;
8 } 8 }
9 .employee-select .employee-input { 9 .employee-select .employee-input {
10 - margin: 2px 5px 5px 5px; 10 + margin: 5px 5px 0px 5px;
11 padding-left: 0; 11 padding-left: 0;
12 } 12 }
13 .employee-select .employee-select-cont { 13 .employee-select .employee-select-cont {
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 padding-right: 0px; 16 padding-right: 0px;
17 } 17 }
18 .employee-select .employee-select-body { 18 .employee-select .employee-select-body {
19 - margin-top: 10px; 19 + margin-top: 5px;
20 overflow: auto; 20 overflow: auto;
21 width: auto; 21 width: auto;
22 min-height: 5px; 22 min-height: 5px;
@@ -33,8 +33,8 @@ @@ -33,8 +33,8 @@
33 } 33 }
34 .employee-select .employee.active { 34 .employee-select .employee.active {
35 color: white; 35 color: white;
36 - background: #4095E8;  
37 - border: 1px solid #4095E8; 36 + background: #5A81A7;
  37 + border: 1px solid #5A81A7;
38 } 38 }
39 .employee-select .employee.start { 39 .employee-select .employee.start {
40 color: white; 40 color: white;
@@ -42,40 +42,151 @@ @@ -42,40 +42,151 @@
42 border: 1px solid #32C5D2; 42 border: 1px solid #32C5D2;
43 } 43 }
44 44
  45 + .employee-select .employeeGroup {
  46 + display: inline-block;
  47 + padding: 8px;
  48 + min-width: 50px;
  49 + text-align: center;
  50 + border: 1px solid #C1C1C1;
  51 + color: #666;
  52 + border-radius: 5px !important;
  53 + margin: 5px;
  54 + }
  55 + .employee-select .employeeGroup.active {
  56 + color: white;
  57 + background: #8DA29F;
  58 + border: 1px solid #8DA29F;
  59 + min-width: 100px;
  60 + max-width: 200px;
  61 + }
  62 + .employee-select .employeeGroup.start {
  63 + color: white;
  64 + background: #32C5D2;
  65 + border: 1px solid #32C5D2;
  66 + min-width: 100px;
  67 + max-width: 200px;
  68 + }
  69 +
  70 +
45 </style> 71 </style>
46 72
47 <div class="col-md-12 employee-select"> 73 <div class="col-md-12 employee-select">
48 <div class="col-md-12 employee-input"> 74 <div class="col-md-12 employee-input">
49 <div class="col-md-9"> 75 <div class="col-md-9">
50 - 人员列表  
51 - <span ng-bind="$saEmployeegroupCtrl.$$dataDesc"></span> 76 + 人员列表,共{{$saEmployeegroupCtrl.$$data.length}}组
  77 +
52 </div> 78 </div>
  79 + <div class="checkbox col-md-3" style="min-height: 19px; color: black;">
  80 + <label>
  81 + <input type="checkbox" ng-model="$saEmployeegroupCtrl.$$isFB"/>
  82 + 是否分班
  83 + </label>
  84 + </div>
  85 +
53 </div> 86 </div>
54 <div class="col-md-12 employee-select-cont"> 87 <div class="col-md-12 employee-select-cont">
55 <div class="employee-select-body"> 88 <div class="employee-select-body">
56 <div class="employee active" 89 <div class="employee active"
57 ng-repeat="$d in $saEmployeegroupCtrl.$$data track by $index" 90 ng-repeat="$d in $saEmployeegroupCtrl.$$data track by $index"
58 ng-click="$saEmployeegroupCtrl.$$internal_rylist_click($index)"> 91 ng-click="$saEmployeegroupCtrl.$$internal_rylist_click($index)">
59 - {{$d.jsy}}-{{$d.spy}} 92 + <span ng-if="$d.spy">
  93 + {{$d.jsy}}-{{$d.spy}}
  94 + <i class="fa fa-ticket" aria-hidden="true"></i>
  95 + </span>
  96 + <span ng-if="!$d.spy">
  97 + <i class="fa fa-bus" aria-hidden="true"></i>
  98 + {{$d.jsy}}
  99 + </span>
60 </div> 100 </div>
61 </div> 101 </div>
62 </div> 102 </div>
63 - <div class="col-md-12 employee-input">  
64 - <div class="col-md-9">  
65 - 已经选中的人员列表  
66 - <span ng-bind="$saEmployeegroupCtrl.$$dataSelectDesc"></span> 103 +
  104 + <!-- 不分班 -->
  105 + <div class="col-md-12 employee-input" ng-if="!$saEmployeegroupCtrl.$$isFB">
  106 + <div class="col-md-12">
  107 + 已经选中的人员列表,共{{$saEmployeegroupCtrl.$$dataSelected.length}}组,
  108 + 初始人员,{{$saEmployeegroupCtrl.$$dataSelectedStart == undefined ? "未选择" : "第" + ($saEmployeegroupCtrl.$$dataSelectedStart + 1) + "组"}}
67 </div> 109 </div>
68 </div> 110 </div>
69 - <div class="col-md-12 employee-select-cont"> 111 + <div class="col-md-12 employee-select-cont" ng-if="!$saEmployeegroupCtrl.$$isFB">
70 <div class="employee-select-body"> 112 <div class="employee-select-body">
71 <div ng-class="{employee: true, active: true, start: $d.isstart}" 113 <div ng-class="{employee: true, active: true, start: $d.isstart}"
72 ng-repeat="$d in $saEmployeegroupCtrl.$$dataSelected track by $index" 114 ng-repeat="$d in $saEmployeegroupCtrl.$$dataSelected track by $index"
73 ng-click="$saEmployeegroupCtrl.$$internal_selrylist_click($index)" 115 ng-click="$saEmployeegroupCtrl.$$internal_selrylist_click($index)"
74 ng-dblclick="$saEmployeegroupCtrl.$$internal_selrylist_dbclick($index)"> 116 ng-dblclick="$saEmployeegroupCtrl.$$internal_selrylist_dbclick($index)">
75 - {{$d.jsy}}-{{$d.spy}} 117 + <span ng-if="$d.spy">
  118 + {{$d.jsy}}-{{$d.spy}}
  119 + <i class="fa fa-ticket" aria-hidden="true"></i>
  120 + </span>
  121 + <span ng-if="!$d.spy">
  122 + <i class="fa fa-bus" aria-hidden="true"></i>
  123 + {{$d.jsy}}
  124 + </span>
  125 +
  126 + </div>
  127 + </div>
  128 + </div>
  129 +
  130 + <!-- 分班 -->
  131 + <div class="col-md-12 employee-input" ng-if="$saEmployeegroupCtrl.$$isFB">
  132 + <div class="col-md-12">
  133 + 已经选中的分班人员列表,共{{$saEmployeegroupCtrl.$$dataFBSelected.length}}组,
  134 + 初始分班人员,{{$saEmployeegroupCtrl.$$dataFBSelectedStart == undefined ? "未选择" : "第" + ($saEmployeegroupCtrl.$$dataFBSelectedStart + 1) + "组"}}
  135 + </div>
  136 + </div>
  137 + <div class="col-md-12 employee-select-cont" ng-if="$saEmployeegroupCtrl.$$isFB">
  138 + <div class="employee-select-body">
  139 + <div ng-class="{employeeGroup: true, active: true, start: $d.isstart}"
  140 + ng-repeat="$d in $saEmployeegroupCtrl.$$dataFBSelected track by $index"
  141 + ng-click="$saEmployeegroupCtrl.$$internal_selrygrouplist_click($index)"
  142 + ng-dblclick="$saEmployeegroupCtrl.$$internal_selrygrouplist_dbclick($index)">
  143 +
  144 + <div>
  145 + <i class="fa fa-sun-o" aria-hidden="true"></i>
  146 + <div ng-class="{employee: true, active: true, start: $d.group[0].isselected}"
  147 + ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 0, $event)"
  148 + ng-if="$d.group[0].spy">
  149 + <i class="fa fa-bus" aria-hidden="true"></i>
  150 + {{$d.group[0].jsy}}
  151 + -
  152 + <i class="fa fa-ticket" aria-hidden="true"></i>
  153 + {{$d.group[0].spy}}
  154 + </div>
  155 + <div ng-class="{employee: true, active: true, start: $d.group[0].isselected}"
  156 + ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 0, $event)"
  157 + ng-if="!$d.group[0].spy">
  158 + <i class="fa fa-bus" aria-hidden="true"></i>
  159 + {{$d.group[0].jsy}}
  160 + </div>
  161 + </div>
  162 +
  163 + <div>
  164 + <i class="fa fa-moon-o" aria-hidden="true"></i>
  165 + <div ng-class="{employee: true, active: true, start: $d.group[1].isselected}"
  166 + ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 1, $event)"
  167 + ng-if="$d.group[1].spy">
  168 + <i class="fa fa-bus" aria-hidden="true"></i>
  169 + {{$d.group[1].jsy}}
  170 + -
  171 + <i class="fa fa-ticket" aria-hidden="true"></i>
  172 + {{$d.group[1].spy}}
  173 + </div>
  174 + <div ng-class="{employee: true, active: true, start: $d.group[1].isselected}"
  175 + ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 1, $event)"
  176 + ng-if="!$d.group[1].spy">
  177 + <i class="fa fa-bus" aria-hidden="true"></i>
  178 + {{$d.group[1].jsy}}
  179 + </div>
  180 + </div>
  181 +
  182 +
76 </div> 183 </div>
  184 +
77 </div> 185 </div>
78 </div> 186 </div>
  187 +
  188 +
  189 +
79 </div> 190 </div>
80 191
81 192
src/main/resources/static/pages/scheduleApp/module/common/dt/MyGuideboardGroupWrapTemplate.html
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 border: 1px solid #ddd; 7 border: 1px solid #ddd;
8 } 8 }
9 .guideboard-select .guideboard-input { 9 .guideboard-select .guideboard-input {
10 - margin: 2px 5px 5px 5px; 10 + margin: 5px 5px 0px 5px;
11 padding-left: 0; 11 padding-left: 0;
12 } 12 }
13 .guideboard-select .guideboard-select-cont { 13 .guideboard-select .guideboard-select-cont {
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 padding-right: 0px; 16 padding-right: 0px;
17 } 17 }
18 .guideboard-select .guideboard-select-body { 18 .guideboard-select .guideboard-select-body {
19 - margin-top: 10px; 19 + margin-top: 5px;
20 overflow: auto; 20 overflow: auto;
21 width: auto; 21 width: auto;
22 min-height: 5px; 22 min-height: 5px;
@@ -47,8 +47,7 @@ @@ -47,8 +47,7 @@
47 <div class="col-md-12 guideboard-select"> 47 <div class="col-md-12 guideboard-select">
48 <div class="col-md-12 guideboard-input"> 48 <div class="col-md-12 guideboard-input">
49 <div class="col-md-9"> 49 <div class="col-md-9">
50 - 路牌列表  
51 - <span ng-bind="$saGuideboardgroupCtrl.$$dataDesc"></span> 50 + 路牌列表,共{{$saGuideboardgroupCtrl.$$data.length}}个
52 </div> 51 </div>
53 </div> 52 </div>
54 <div class="col-md-12 guideboard-select-cont"> 53 <div class="col-md-12 guideboard-select-cont">
@@ -56,14 +55,15 @@ @@ -56,14 +55,15 @@
56 <div class="guideboard active" 55 <div class="guideboard active"
57 ng-repeat="$d in $saGuideboardgroupCtrl.$$data track by $index" 56 ng-repeat="$d in $saGuideboardgroupCtrl.$$data track by $index"
58 ng-click="$saGuideboardgroupCtrl.$$internal_lplist_click($index)"> 57 ng-click="$saGuideboardgroupCtrl.$$internal_lplist_click($index)">
  58 + <i class="fa fa-map-signs" aria-hidden="true"></i>
59 {{$d.lpname}} 59 {{$d.lpname}}
60 </div> 60 </div>
61 </div> 61 </div>
62 </div> 62 </div>
63 <div class="col-md-12 guideboard-input"> 63 <div class="col-md-12 guideboard-input">
64 - <div class="col-md-9">  
65 - 已经选中的路牌列表  
66 - <span ng-bind="$saGuideboardgroupCtrl.$$dataSelectDesc"></span> 64 + <div class="col-md-12">
  65 + 已经选中的路牌列表,共{{$saGuideboardgroupCtrl.$$dataSelected.length}}个,
  66 + 初始路牌,{{$saGuideboardgroupCtrl.$$dataSelectedStart == undefined ? "未选择" : "第" + ($saGuideboardgroupCtrl.$$dataSelectedStart + 1) + "个"}}
67 </div> 67 </div>
68 </div> 68 </div>
69 <div class="col-md-12 guideboard-select-cont"> 69 <div class="col-md-12 guideboard-select-cont">
@@ -72,6 +72,7 @@ @@ -72,6 +72,7 @@
72 ng-repeat="$d in $saGuideboardgroupCtrl.$$dataSelected track by $index" 72 ng-repeat="$d in $saGuideboardgroupCtrl.$$dataSelected track by $index"
73 ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)" 73 ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)"
74 ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)"> 74 ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)">
  75 + <i class="fa fa-map-signs" aria-hidden="true"></i>
75 {{$d.lpname}} 76 {{$d.lpname}}
76 </div> 77 </div>
77 </div> 78 </div>
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -1479,9 +1479,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1479,9 +1479,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1479 self.$$data_lpid_first_init = false; // 路牌id是否初始化 1479 self.$$data_lpid_first_init = false; // 路牌id是否初始化
1480 self.$$data_lpstart_first_init = false; // 起始路牌是否初始化 1480 self.$$data_lpstart_first_init = false; // 起始路牌是否初始化
1481 1481
1482 - self.$$dataDesc = ""; // 路牌列表描述  
1483 - self.$$dataSelectDesc = ""; // 选中路牌描述  
1484 -  
1485 }, 1482 },
1486 1483
1487 /** 1484 /**
@@ -1617,9 +1614,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1617,9 +1614,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1617 eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;"); 1614 eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;");
1618 } 1615 }
1619 1616
1620 - scope[ctrlAs].$$dataSelectDesc =  
1621 - ",共" + data_temp.length + "个," + "初始路牌,第" + lpStart + "个";  
1622 -  
1623 } else { 1617 } else {
1624 scope[ctrlAs].$$internalmodel = undefined; 1618 scope[ctrlAs].$$internalmodel = undefined;
1625 } 1619 }
@@ -1724,12 +1718,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1724,12 +1718,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1724 scope[ctrlAs].$$dataSelected = []; 1718 scope[ctrlAs].$$dataSelected = [];
1725 scope[ctrlAs].$$dataSelectedStart = undefined; 1719 scope[ctrlAs].$$dataSelectedStart = undefined;
1726 scope[ctrlAs].$$internalmodel = undefined; 1720 scope[ctrlAs].$$internalmodel = undefined;
1727 - scope[ctrlAs].$$dataDesc = "";  
1728 - scope[ctrlAs].$$dataSelectDesc = "";  
1729 } 1721 }
1730 scope[ctrlAs].$$data_xl_first_init = true; 1722 scope[ctrlAs].$$data_xl_first_init = true;
1731 -  
1732 - scope[ctrlAs].$$dataDesc = ",共" + result.content.length + "个";  
1733 }, 1723 },
1734 function(result) { 1724 function(result) {
1735 1725
@@ -1837,14 +1827,35 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1837,14 +1827,35 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1837 1827
1838 // 测试数据 1828 // 测试数据
1839 //self.$$data = [ 1829 //self.$$data = [
  1830 + // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1'},
  1831 + // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2'},
  1832 + // {id: 3, dbbm: "3", jsy: '忍3', spy: '守3'}
  1833 + //];
  1834 +
  1835 + self.$$dataSelected = []; // 选中的人员配置列表
  1836 + self.$$dataSelectedStart = undefined; // 起始人员配置
  1837 +
  1838 + //self.$$dataSelected = [
1840 // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1', isstart: false}, 1839 // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1', isstart: false},
1841 // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2', isstart: true}, 1840 // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2', isstart: true},
1842 // {id: 3, dbbm: "3", jsy: '忍3', spy: '守3', isstart: false} 1841 // {id: 3, dbbm: "3", jsy: '忍3', spy: '守3', isstart: false}
1843 //]; 1842 //];
1844 1843
1845 -  
1846 - self.$$dataSelected = []; // 选中的人员配置列表  
1847 - self.$$dataSelectedStart = undefined; // 起始人员配置 1844 + self.$$isFB = false; // 是否分班
  1845 + self.$$dataFBSelected = []; // 选中的分班人员组配置列表
  1846 + self.$$dataFBInternalSelected = undefined; // 分班组内人员选中标识
  1847 + self.$$dataFBSelectedStart = undefined; // 选中的起始分班人员组合
  1848 +
  1849 + //self.$$dataFBSelected = [
  1850 + // {isstart: true, group: [
  1851 + // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1', isselected: false},
  1852 + // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2', isstart: true}
  1853 + // ]},
  1854 + // {isstart: false, group: [
  1855 + // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1', isselected: false},
  1856 + // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2', isstart: true}
  1857 + // ]}
  1858 + //];
1848 1859
1849 // saGuideboardgroup组件的ng-model,用于外部绑定等操作 1860 // saGuideboardgroup组件的ng-model,用于外部绑定等操作
1850 self.$$internalmodel = undefined; 1861 self.$$internalmodel = undefined;
@@ -1852,11 +1863,11 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1852,11 +1863,11 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1852 self.$$data_init = false; // *数据源初始化标志 1863 self.$$data_init = false; // *数据源初始化标志
1853 self.$$data_xl_first_init = false; // 线路是否初始化 1864 self.$$data_xl_first_init = false; // 线路是否初始化
1854 self.$$data_ry_first_init = false; // 人员配置是否初始化 1865 self.$$data_ry_first_init = false; // 人员配置是否初始化
  1866 + self.$$data_ry_first_data = undefined; // 人员配置初始化数据
1855 self.$$data_rycid_first_init = false; // 人员配置id是否初始化 1867 self.$$data_rycid_first_init = false; // 人员配置id是否初始化
  1868 + self.$$data_rycid_first_data = undefined; // 人员配置id初始化数据
1856 self.$$data_rystart_first_init = false; // 起始人员是否初始化 1869 self.$$data_rystart_first_init = false; // 起始人员是否初始化
1857 -  
1858 - self.$$dataDesc = ""; // 路牌列表描述  
1859 - self.$$dataSelectDesc = ""; // 选中路牌描述 1870 + self.$$data_rystart_first_data = undefined; // 起始人员初始化数据
1860 1871
1861 }, 1872 },
1862 1873
@@ -1901,9 +1912,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1901,9 +1912,6 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1901 scope[ctrlAs]["$name_attr"] = $name_attr; 1912 scope[ctrlAs]["$name_attr"] = $name_attr;
1902 } 1913 }
1903 1914
1904 - // TODO:  
1905 -  
1906 -  
1907 /** 1915 /**
1908 * 人员配置列表点击(人员配置列表中选中路牌) 1916 * 人员配置列表点击(人员配置列表中选中路牌)
1909 * @param $index 1917 * @param $index
@@ -1911,21 +1919,61 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1911,21 +1919,61 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1911 scope[ctrlAs].$$internal_rylist_click = function($index) { 1919 scope[ctrlAs].$$internal_rylist_click = function($index) {
1912 var data_temp = scope[ctrlAs].$$data; 1920 var data_temp = scope[ctrlAs].$$data;
1913 if (data_temp && data_temp.length > $index) { 1921 if (data_temp && data_temp.length > $index) {
1914 - scope[ctrlAs].$$dataSelected.push({  
1915 - id : data_temp[$index].id,  
1916 - dbbm: data_temp[$index].dbbm,  
1917 - jsy: data_temp[$index].jsy,  
1918 - spy: data_temp[$index].spy,  
1919 - isstart: data_temp[$index].isstart  
1920 - }); 1922 + if (!scope[ctrlAs].$$isFB) { // 不分班
  1923 + scope[ctrlAs].$$dataSelected.push({
  1924 + id : data_temp[$index].id,
  1925 + dbbm: data_temp[$index].dbbm,
  1926 + jsy: data_temp[$index].jsy,
  1927 + spy: data_temp[$index].spy,
  1928 + isstart: false
  1929 + });
  1930 +
  1931 + // 如果没有指定过初始人员,默认选择此人员作为起始人员
  1932 + if (scope[ctrlAs].$$dataSelectedStart == undefined) {
  1933 + scope[ctrlAs].$$internal_selrylist_click(
  1934 + scope[ctrlAs].$$dataSelected.length - 1);
  1935 + }
  1936 + } else { // 分班
  1937 + if (scope[ctrlAs].$$dataFBInternalSelected) { // 替换组内人员
  1938 + scope[ctrlAs].$$dataFBSelected
  1939 + [scope[ctrlAs].$$dataFBInternalSelected.gindex].group
  1940 + [scope[ctrlAs].$$dataFBInternalSelected.index] = {
  1941 + id : data_temp[$index].id,
  1942 + dbbm: data_temp[$index].dbbm,
  1943 + jsy: data_temp[$index].jsy,
  1944 + spy: data_temp[$index].spy,
  1945 + isselected: true
  1946 + };
1921 1947
1922 - // 如果没有指定过初始人员,默认选择此人员作为起始人员  
1923 - if (scope[ctrlAs].$$dataSelectedStart == undefined) {  
1924 - scope[ctrlAs].$$internal_selrylist_click(  
1925 - scope[ctrlAs].$$dataSelected.length - 1); 1948 + } else {
  1949 + scope[ctrlAs].$$dataFBSelected.push({
  1950 + isstart: false,
  1951 + group: [].concat(
  1952 + {
  1953 + id : data_temp[$index].id,
  1954 + dbbm: data_temp[$index].dbbm,
  1955 + jsy: data_temp[$index].jsy,
  1956 + spy: data_temp[$index].spy,
  1957 + isselected: false
  1958 + }, {
  1959 + id : data_temp[$index].id,
  1960 + dbbm: data_temp[$index].dbbm,
  1961 + jsy: data_temp[$index].jsy,
  1962 + spy: data_temp[$index].spy,
  1963 + isselected: false
  1964 + }
  1965 + )
  1966 + });
  1967 + if (scope[ctrlAs].$$dataFBSelectedStart == undefined) {
  1968 + scope[ctrlAs].$$internal_selrygrouplist_click(
  1969 + scope[ctrlAs].$$dataFBSelected.length - 1);
  1970 + }
  1971 + }
1926 } 1972 }
  1973 +
1927 } 1974 }
1928 }; 1975 };
  1976 +
1929 /** 1977 /**
1930 * 选中的人员单击(初始人员选择) 1978 * 选中的人员单击(初始人员选择)
1931 * @param $index 1979 * @param $index
@@ -1954,6 +2002,69 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1954,6 +2002,69 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1954 } 2002 }
1955 }; 2003 };
1956 2004
  2005 + /**
  2006 + * 选中的分班组人员单击(初始人员选择)
  2007 + * @param $index
  2008 + */
  2009 + scope[ctrlAs].$$internal_selrygrouplist_click = function($index) {
  2010 + var data_temp = scope[ctrlAs].$$dataFBSelected;
  2011 + if (data_temp && data_temp.length > $index) {
  2012 + for (var i = 0; i < data_temp.length; i++) {
  2013 + data_temp[i].isstart = false;
  2014 + for (var j = 0; j < data_temp[i].group.length; j++) {
  2015 + data_temp[i].group[j].isselected = false;
  2016 + }
  2017 + }
  2018 + data_temp[$index].isstart = true;
  2019 + scope[ctrlAs].$$dataFBSelectedStart = $index;
  2020 + scope[ctrlAs].$$dataFBInternalSelected = undefined;
  2021 + }
  2022 + };
  2023 + /**
  2024 + * 分组内部单击(选中分班中的某组人员)
  2025 + * @param $groupindex 组index
  2026 + * @param $index 组内部某个index
  2027 + * @param $event 事件防止冒泡
  2028 + */
  2029 + scope[ctrlAs].$$internal_selrygroup_click = function($groupindex, $index, $event) {
  2030 + var data_temp = scope[ctrlAs].$$dataFBSelected;
  2031 + if (data_temp && data_temp.length > $groupindex) {
  2032 + if (data_temp[$groupindex].group && data_temp[$groupindex].group.length > $index) {
  2033 + // $$dataFBInternalSelected的格式如下:
  2034 + //{gindex: 1, index: 0}
  2035 + for (var i = 0; i < data_temp.length; i++) {
  2036 + data_temp[i].isstart = false;
  2037 + for (var j = 0; j < data_temp[i].group.length; j++) {
  2038 + data_temp[i].group[j].isselected = false;
  2039 + }
  2040 + }
  2041 + data_temp[$groupindex].group[$index].isselected = true;
  2042 + scope[ctrlAs].$$dataFBInternalSelected = {
  2043 + gindex: $groupindex, index: $index
  2044 + };
  2045 + scope[ctrlAs].$$dataFBSelectedStart = undefined;
  2046 + $event.stopPropagation();
  2047 + }
  2048 + }
  2049 +
  2050 + };
  2051 + /**
  2052 + * 选中的分班人员双击(删除选中的人员)
  2053 + * @param $index
  2054 + */
  2055 + scope[ctrlAs].$$internal_selrygrouplist_dbclick = function($index) {
  2056 + var data_temp = scope[ctrlAs].$$dataFBSelected;
  2057 + if (data_temp && data_temp.length > $index) {
  2058 + if (scope[ctrlAs].$$dataFBSelectedStart == $index) {
  2059 + scope[ctrlAs].$$dataFBSelectedStart = undefined;
  2060 + }
  2061 + if (scope[ctrlAs].$$dataFBInternalSelected &&
  2062 + scope[ctrlAs].$$dataFBInternalSelected.gindex == $index) {
  2063 + scope[ctrlAs].$$dataFBInternalSelected = undefined;
  2064 + }
  2065 + data_temp.splice($index, 1);
  2066 + }
  2067 + };
1957 2068
1958 /** 2069 /**
1959 * 验证内部数据,更新外部model 2070 * 验证内部数据,更新外部model
@@ -1961,51 +2072,97 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -1961,51 +2072,97 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
1961 scope[ctrlAs].$$internal_validate_model = function() { 2072 scope[ctrlAs].$$internal_validate_model = function() {
1962 var data_temp = scope[ctrlAs].$$dataSelected; 2073 var data_temp = scope[ctrlAs].$$dataSelected;
1963 var data_temp2 = scope[ctrlAs].$$dataSelectedStart; 2074 var data_temp2 = scope[ctrlAs].$$dataSelectedStart;
  2075 + var data_temp3 = scope[ctrlAs].$$dataFBSelected;
  2076 + var data_temp4 = scope[ctrlAs].$$dataFBSelectedStart;
1964 var ryDbbms = []; 2077 var ryDbbms = [];
  2078 + var ryDbbm_group = [];
1965 var ryCids = []; 2079 var ryCids = [];
  2080 + var ryCid_group = [];
1966 var ryStart = 0; 2081 var ryStart = 0;
1967 var i = 0; 2082 var i = 0;
  2083 + var j = 0;
1968 2084
1969 - if (data_temp &&  
1970 - data_temp.length > 0 &&  
1971 - data_temp2 != undefined) { 2085 + var isFB = scope[ctrlAs].$$isFB;
1972 2086
1973 - for (i = 0; i < data_temp.length; i++) {  
1974 - ryDbbms.push(data_temp[i].dbbm);  
1975 - ryCids.push(data_temp[i].id);  
1976 - }  
1977 - data_temp[data_temp2].isstart = true;  
1978 - ryStart = data_temp2 + 1; 2087 + if (isFB) {
  2088 + if (data_temp3 &&
  2089 + data_temp3.length > 0 &&
  2090 + data_temp4 != undefined) {
1979 2091
1980 - // 更新内部model,用于外部验证  
1981 - // 内部model的值暂时随意,以后再改  
1982 - scope[ctrlAs].$$internalmodel = {desc: "ok"}; 2092 + for (i = 0; i < data_temp3.length; i++) {
  2093 + for (j = 0; j < data_temp3[i].group.length; j++) {
  2094 + ryDbbm_group.push(data_temp3[i].group[j].dbbm);
  2095 + ryCid_group.push(data_temp3[i].group[j].id);
  2096 + }
  2097 + ryDbbms.push(ryDbbm_group.join("-"));
  2098 + ryCids.push(ryCid_group.join("-"));
  2099 + ryDbbm_group = [];
  2100 + ryCid_group = [];
  2101 + }
1983 2102
1984 - // 更新外部model字段  
1985 - if ($dbbmrangename_attr) {  
1986 - console.log("dbbmrangename=" + ryDbbms.join(','));  
1987 - eval("scope[ctrlAs].model" + "." + $dbbmrangename_attr + " = ryDbbms.join(',');");  
1988 - }  
1989 - if (rycidrangename_attr) {  
1990 - console.log("rycidrangename=" + ryCids.join(','));  
1991 - eval("scope[ctrlAs].model" + "." + rycidrangename_attr + " = ryCids.join(',');");  
1992 - }  
1993 - if ($rystartname_attr) {  
1994 - console.log("rystartname=" + ryStart);  
1995 - eval("scope[ctrlAs].model" + "." + $rystartname_attr + " = ryStart;");  
1996 - } 2103 + data_temp3[data_temp4].isstart = true;
  2104 + ryStart = data_temp4 + 1;
  2105 +
  2106 + // 更新内部model,用于外部验证
  2107 + // 内部model的值暂时随意,以后再改
  2108 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  2109 +
  2110 + // 更新外部model字段
  2111 + if ($dbbmrangename_attr) {
  2112 + console.log("dbbmrangename=" + ryDbbms.join(','));
  2113 + eval("scope[ctrlAs].model" + "." + $dbbmrangename_attr + " = ryDbbms.join(',');");
  2114 + }
  2115 + if (rycidrangename_attr) {
  2116 + console.log("rycidrangename=" + ryCids.join(','));
  2117 + eval("scope[ctrlAs].model" + "." + rycidrangename_attr + " = ryCids.join(',');");
  2118 + }
  2119 + if ($rystartname_attr) {
  2120 + console.log("rystartname=" + ryStart);
  2121 + eval("scope[ctrlAs].model" + "." + $rystartname_attr + " = ryStart;");
  2122 + }
1997 2123
1998 - scope[ctrlAs].$$dataSelectDesc =  
1999 - ",共" + data_temp.length + "组," + "初始人员,第" + ryStart + "组"; 2124 + } else {
  2125 + scope[ctrlAs].$$internalmodel = undefined;
  2126 + }
2000 2127
2001 } else { 2128 } else {
2002 - scope[ctrlAs].$$internalmodel = undefined;  
2003 - } 2129 + if (data_temp &&
  2130 + data_temp.length > 0 &&
  2131 + data_temp2 != undefined) {
  2132 +
  2133 + for (i = 0; i < data_temp.length; i++) {
  2134 + ryDbbms.push(data_temp[i].dbbm);
  2135 + ryCids.push(data_temp[i].id);
  2136 + }
  2137 + data_temp[data_temp2].isstart = true;
  2138 + ryStart = data_temp2 + 1;
2004 2139
  2140 + // 更新内部model,用于外部验证
  2141 + // 内部model的值暂时随意,以后再改
  2142 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  2143 +
  2144 + // 更新外部model字段
  2145 + if ($dbbmrangename_attr) {
  2146 + console.log("dbbmrangename=" + ryDbbms.join(','));
  2147 + eval("scope[ctrlAs].model" + "." + $dbbmrangename_attr + " = ryDbbms.join(',');");
  2148 + }
  2149 + if (rycidrangename_attr) {
  2150 + console.log("rycidrangename=" + ryCids.join(','));
  2151 + eval("scope[ctrlAs].model" + "." + rycidrangename_attr + " = ryCids.join(',');");
  2152 + }
  2153 + if ($rystartname_attr) {
  2154 + console.log("rystartname=" + ryStart);
  2155 + eval("scope[ctrlAs].model" + "." + $rystartname_attr + " = ryStart;");
  2156 + }
  2157 +
  2158 + } else {
  2159 + scope[ctrlAs].$$internalmodel = undefined;
  2160 + }
  2161 + }
2005 2162
2006 }; 2163 };
2007 2164
2008 - // 监控内部数据,$$data_selected 变化 2165 + // 监控内部数据,$$dataSelected 变化
2009 scope.$watch( 2166 scope.$watch(
2010 function() { 2167 function() {
2011 return scope[ctrlAs].$$dataSelected; 2168 return scope[ctrlAs].$$dataSelected;
@@ -2016,7 +2173,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -2016,7 +2173,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2016 true 2173 true
2017 ); 2174 );
2018 2175
2019 - // 监控内部数据,$$data_selected_start 变化 2176 + // 监控内部数据,$$dataSelectedStart 变化
2020 scope.$watch( 2177 scope.$watch(
2021 function() { 2178 function() {
2022 return scope[ctrlAs].$$dataSelectedStart; 2179 return scope[ctrlAs].$$dataSelectedStart;
@@ -2027,6 +2184,51 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -2027,6 +2184,51 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2027 true 2184 true
2028 ); 2185 );
2029 2186
  2187 +
  2188 + // 监控内部数据,$$dataFBSelected 变化
  2189 + scope.$watch(
  2190 + function() {
  2191 + return scope[ctrlAs].$$dataFBSelected;
  2192 + },
  2193 + function(newValue, oldValue) {
  2194 + scope[ctrlAs].$$internal_validate_model();
  2195 + },
  2196 + true
  2197 + );
  2198 +
  2199 + // 监控内部数据,$$dataFBSelectedStart 变化
  2200 + scope.$watch(
  2201 + function() {
  2202 + return scope[ctrlAs].$$dataFBSelectedStart;
  2203 + },
  2204 + function(newValue, oldValue) {
  2205 + scope[ctrlAs].$$internal_validate_model();
  2206 + },
  2207 + true
  2208 + );
  2209 +
  2210 + // 监控内部数据,$$dataFBInternalSelected 变化
  2211 + scope.$watch(
  2212 + function() {
  2213 + return scope[ctrlAs].$$dataFBInternalSelected;
  2214 + },
  2215 + function(newValue, oldValue) {
  2216 + scope[ctrlAs].$$internal_validate_model();
  2217 + },
  2218 + true
  2219 + );
  2220 +
  2221 + // 监控内部数据,$$isFB 变化
  2222 + scope.$watch(
  2223 + function() {
  2224 + return scope[ctrlAs].$$isFB;
  2225 + },
  2226 + function(newValue, oldValue) {
  2227 + scope[ctrlAs].$$internal_validate_model();
  2228 + },
  2229 + true
  2230 + );
  2231 +
2030 /** 2232 /**
2031 * 验证数据是否初始化完成, 2233 * 验证数据是否初始化完成,
2032 * 所谓的初始化就是内部所有的数据被有效设定过一次。 2234 * 所谓的初始化就是内部所有的数据被有效设定过一次。
@@ -2035,26 +2237,86 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -2035,26 +2237,86 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2035 var self = scope[ctrlAs]; 2237 var self = scope[ctrlAs];
2036 var data_temp = self.$$data; 2238 var data_temp = self.$$data;
2037 var dataSelect_temp = self.$$dataSelected; 2239 var dataSelect_temp = self.$$dataSelected;
  2240 + var dataFBSelect_temp = self.$$dataFBSelected;
  2241 + var dbbmnames = null;
  2242 + var dbbmnamegroup = null;
  2243 + var rycids = null;
  2244 + var rycidgroup = null;
  2245 +
2038 var i = 0; 2246 var i = 0;
2039 var j = 0; 2247 var j = 0;
  2248 + var k = 0;
2040 2249
2041 if (self.$$data_xl_first_init && 2250 if (self.$$data_xl_first_init &&
2042 self.$$data_ry_first_init && 2251 self.$$data_ry_first_init &&
2043 self.$$data_rycid_first_init && 2252 self.$$data_rycid_first_init &&
2044 self.$$data_rystart_first_init) { 2253 self.$$data_rystart_first_init) {
2045 - console.log("数据初始化完毕!");  
2046 - self.$$data_init = true; 2254 + console.log("开始初始化数据");
2047 2255
2048 - // 修正选择dataSelect  
2049 - for (i = 0; i < dataSelect_temp.length; i++) {  
2050 - for (j = 0; j < data_temp.length; j++) {  
2051 - if (dataSelect_temp[i].dbbm == data_temp[j].dbbm) {  
2052 - dataSelect_temp[i].jsy = data_temp[j].jsy;  
2053 - dataSelect_temp[i].spy = data_temp[j].spy;  
2054 - break; 2256 + // 判定是否分班,字符串中包含-就是了
  2257 + if (self.$$data_ry_first_data.indexOf("-") != -1) { // 分班
  2258 + self.$$isFB = true;
  2259 +
  2260 + // 搭班编码、人员配置id
  2261 + dbbmnames = self.$$data_ry_first_data.split(",");
  2262 + rycids = self.$$data_rycid_first_data.split(",");
  2263 + for (i = 0; i < dbbmnames.length; i++) {
  2264 + dataFBSelect_temp.push({
  2265 + group: [],
  2266 + isstart: false
  2267 + });
  2268 + dbbmnamegroup = dbbmnames[i].split("-");
  2269 + rycidgroup = rycids[i].split("-");
  2270 +
  2271 + for (k = 0; k < dbbmnamegroup.length; k++) {
  2272 + dataFBSelect_temp[i].group.push({
  2273 + id: rycidgroup[k],
  2274 + dbbm: dbbmnamegroup[k],
  2275 + isselected: false
  2276 + });
  2277 +
  2278 + for (j = 0; j < data_temp.length; j++) {
  2279 + if (dataFBSelect_temp[i].group[k].dbbm == data_temp[j].dbbm) {
  2280 + dataFBSelect_temp[i].group[k].jsy = data_temp[j].jsy;
  2281 + dataFBSelect_temp[i].group[k].spy = data_temp[j].spy;
  2282 + break;
  2283 + }
  2284 + }
2055 } 2285 }
  2286 +
2056 } 2287 }
  2288 +
  2289 + // 初始人员
  2290 + scope[ctrlAs].$$dataFBSelectedStart = self.$$data_rystart_first_data - 1;
  2291 +
  2292 +
  2293 + } else {
  2294 + self.$$isFB = false;
  2295 +
  2296 + // 搭班编码、人员配置id
  2297 + dbbmnames = self.$$data_ry_first_data.split(",");
  2298 + rycids = self.$$data_rycid_first_data.split(",");
  2299 + for (i = 0; i < dbbmnames.length; i++) {
  2300 + dataSelect_temp.push({
  2301 + id: rycids[i],
  2302 + dbbm: dbbmnames[i],
  2303 + isstart: false
  2304 + });
  2305 + for (j = 0; j < data_temp.length; j++) {
  2306 + if (dataSelect_temp[i].dbbm == data_temp[j].dbbm) {
  2307 + dataSelect_temp[i].jsy = data_temp[j].jsy;
  2308 + dataSelect_temp[i].spy = data_temp[j].spy;
  2309 + break;
  2310 + }
  2311 + }
  2312 + }
  2313 + // 初始人员
  2314 + scope[ctrlAs].$$dataSelectedStart = self.$$data_rystart_first_data - 1;
  2315 +
2057 } 2316 }
  2317 +
  2318 + console.log("数据初始化完毕!");
  2319 + self.$$data_init = true;
2058 } 2320 }
2059 2321
2060 }; 2322 };
@@ -2111,20 +2373,20 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -2111,20 +2373,20 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2111 id: result.content[i].id, 2373 id: result.content[i].id,
2112 dbbm: result.content[i].dbbm, 2374 dbbm: result.content[i].dbbm,
2113 jsy: result.content[i].jsy.personnelName, 2375 jsy: result.content[i].jsy.personnelName,
2114 - spy: result.content[i].spy == null ? "" : result.content[i].spy.personnelName,  
2115 - isstart: false 2376 + spy: result.content[i].spy == null ? "" : result.content[i].spy.personnelName
2116 }); 2377 });
2117 } 2378 }
2118 if (scope[ctrlAs].$$data_init) { 2379 if (scope[ctrlAs].$$data_init) {
2119 scope[ctrlAs].$$dataSelected = []; 2380 scope[ctrlAs].$$dataSelected = [];
2120 scope[ctrlAs].$$dataSelectedStart = undefined; 2381 scope[ctrlAs].$$dataSelectedStart = undefined;
  2382 +
  2383 + scope[ctrlAs].$$dataFBSelected = [];
  2384 + scope[ctrlAs].$$dataFBInternalSelected = undefined;
  2385 + scope[ctrlAs].$$dataFBSelectedStart = undefined;
  2386 +
2121 scope[ctrlAs].$$internalmodel = undefined; 2387 scope[ctrlAs].$$internalmodel = undefined;
2122 - scope[ctrlAs].$$dataDesc = "";  
2123 - scope[ctrlAs].$$dataSelectDesc = "";  
2124 } 2388 }
2125 scope[ctrlAs].$$data_xl_first_init = true; 2389 scope[ctrlAs].$$data_xl_first_init = true;
2126 -  
2127 - scope[ctrlAs].$$dataDesc = ",共" + result.content.length + "组";  
2128 }, 2390 },
2129 function(result) { 2391 function(result) {
2130 2392
@@ -2137,59 +2399,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [ @@ -2137,59 +2399,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2137 // 监控搭班编码范围值的变化 2399 // 监控搭班编码范围值的变化
2138 attr.$observe("dbbmrangevalue", function(value) { 2400 attr.$observe("dbbmrangevalue", function(value) {
2139 if (value && value != "") { 2401 if (value && value != "") {
2140 - var data_temp = scope[ctrlAs].$$dataSelected;  
2141 - var dbbmnames = value.split(",");  
2142 - var i = 0;  
2143 - if (data_temp && data_temp.length == 0) { // 初始创建  
2144 - console.log("dbbmrangevalue变换了");  
2145 - for (i = 0; i < dbbmnames.length; i++) {  
2146 - scope[ctrlAs].$$dataSelected.push({  
2147 - dbbm: dbbmnames[i],  
2148 - isstart: false  
2149 - });  
2150 - }  
2151 - } else {  
2152 - for (i = 0; i < dbbmnames.length; i++) {  
2153 - data_temp[i].dbbm = dbbmnames[i];  
2154 - }  
2155 - } 2402 + console.log("dbbmrangevalue变换了");
2156 scope[ctrlAs].$$data_ry_first_init = true; 2403 scope[ctrlAs].$$data_ry_first_init = true;
  2404 + scope[ctrlAs].$$data_ry_first_data = value;
2157 } 2405 }
2158 }); 2406 });
2159 2407
2160 // 监控人员配置id范围值的变化 2408 // 监控人员配置id范围值的变化
2161 attr.$observe("rycidrangevalue", function(value) { 2409 attr.$observe("rycidrangevalue", function(value) {
2162 if (value && value != "") { 2410 if (value && value != "") {
2163 - var data_temp = scope[ctrlAs].$$dataSelected;  
2164 - var rycids = value.split(",");  
2165 - var i = 0;  
2166 - if (data_temp && data_temp.length == 0) { // 初始创建  
2167 - console.log("rycidrangevalue变换了");  
2168 - for (i = 0; i < rycids.length; i++) {  
2169 - scope[ctrlAs].$$dataSelected.push({  
2170 - id: rycids[i],  
2171 - isstart: false  
2172 - });  
2173 - }  
2174 - } else {  
2175 - for (i = 0; i < rycids.length; i++) {  
2176 - data_temp[i].id = rycids[i];  
2177 - }  
2178 - } 2411 + console.log("rycidrangevalue变换了");
2179 scope[ctrlAs].$$data_rycid_first_init = true; 2412 scope[ctrlAs].$$data_rycid_first_init = true;
  2413 + scope[ctrlAs].$$data_rycid_first_data = value;
2180 } 2414 }
2181 }); 2415 });
2182 2416
2183 // 监控起始人员的变化 2417 // 监控起始人员的变化
2184 attr.$observe("rystartvalue", function(value) { 2418 attr.$observe("rystartvalue", function(value) {
2185 if (value && value != "") { 2419 if (value && value != "") {
2186 - scope[ctrlAs].$$dataSelectedStart = value - 1; 2420 + console.log("rystartvalue变换了");
2187 scope[ctrlAs].$$data_rystart_first_init = true; 2421 scope[ctrlAs].$$data_rystart_first_init = true;
  2422 + scope[ctrlAs].$$data_rystart_first_data = value;
2188 } 2423 }
2189 }); 2424 });
2190 2425
2191 -  
2192 -  
2193 } 2426 }
2194 } 2427 }
2195 2428