safecheck-client 3.0.39-14 → 3.0.39-16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/android.html +18 -18
  4. package/config/dev.env.js +6 -6
  5. package/config/index.js +38 -38
  6. package/config/prod.env.js +3 -3
  7. package/config/test.env.js +6 -6
  8. package/docs/AppBase.md +22 -22
  9. package/docs/Busy.md +14 -14
  10. package/docs/CriteriaPaged.md +47 -47
  11. package/docs/DataGrid.md +54 -54
  12. package/docs/DataModel.md +22 -22
  13. package/docs/Dynamic.md +42 -42
  14. package/docs/GetParams.md +11 -11
  15. package/docs/HttpBusy.md +13 -13
  16. package/docs/HttpStore.md +29 -29
  17. package/docs/MessageBox.md +28 -28
  18. package/docs/PagedList.md +29 -29
  19. package/docs/Pager.md +21 -21
  20. package/docs/Project.md +23 -23
  21. package/docs/Route.md +105 -105
  22. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  23. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  24. package/docs/Task.md +46 -46
  25. package/docs/TreeList.md +28 -28
  26. package/docs/TreeMixin.md +18 -18
  27. package/docs/all.md +10 -10
  28. package/docs/list.md +42 -42
  29. package/docs/partial.md +75 -75
  30. package/docs/selector.md +82 -82
  31. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  32. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue-strap/345/217/230/346/233/264/350/256/260/345/275/225.md +7 -7
  33. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue/345/217/230/346/233/264/350/256/260/345/275/225.md +13 -13
  34. package/docs//345/274/200/345/217/221/346/226/207/346/241/243//345/274/200/345/217/221/347/216/257/345/242/203/350/256/276/347/275/256.md +77 -77
  35. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  36. package/examples/AddressList/App.vue +13 -13
  37. package/examples/AddressList/index.html +11 -11
  38. package/examples/DispatchList/App.vue +10 -10
  39. package/examples/DispatchList/BaseTree.vue +13 -13
  40. package/examples/DispatchList/Init.vue +22 -22
  41. package/examples/DispatchList/Test.vue +20 -20
  42. package/examples/DispatchList/index.html +11 -11
  43. package/examples/DispatchList/main.js +18 -18
  44. package/home.html +16 -16
  45. package/package.json +1 -1
  46. package/publish.bat +7 -7
  47. package/release.bat +5 -5
  48. package/src/Widget.vue +13 -13
  49. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  50. package/src/android-bootstrap/less/.csscomb.json +304 -304
  51. package/src/android-bootstrap/less/.csslintrc +19 -19
  52. package/src/android-bootstrap/less/alerts.less +73 -73
  53. package/src/android-bootstrap/less/badges.less +66 -66
  54. package/src/android-bootstrap/less/bootstrap.less +56 -56
  55. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  56. package/src/android-bootstrap/less/button-groups.less +247 -247
  57. package/src/android-bootstrap/less/buttons.less +173 -173
  58. package/src/android-bootstrap/less/carousel.less +269 -269
  59. package/src/android-bootstrap/less/close.less +34 -34
  60. package/src/android-bootstrap/less/code.less +69 -69
  61. package/src/android-bootstrap/less/component-animations.less +33 -33
  62. package/src/android-bootstrap/less/grid.less +84 -84
  63. package/src/android-bootstrap/less/input-groups.less +167 -167
  64. package/src/android-bootstrap/less/jumbotron.less +52 -52
  65. package/src/android-bootstrap/less/labels.less +64 -64
  66. package/src/android-bootstrap/less/list-group.less +141 -141
  67. package/src/android-bootstrap/less/media.less +66 -66
  68. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  69. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  70. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  71. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  72. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  73. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  74. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  75. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  76. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  77. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  78. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  79. package/src/android-bootstrap/less/mixins/image.less +33 -33
  80. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  81. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  82. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  83. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  84. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  85. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  86. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  87. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  88. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  89. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  90. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  91. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  92. package/src/android-bootstrap/less/mixins/size.less +10 -10
  93. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  94. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  95. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  96. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  97. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  98. package/src/android-bootstrap/less/mixins.less +40 -40
  99. package/src/android-bootstrap/less/modals.less +151 -151
  100. package/src/android-bootstrap/less/navbar.less +660 -660
  101. package/src/android-bootstrap/less/navs.less +290 -290
  102. package/src/android-bootstrap/less/normalize.less +424 -424
  103. package/src/android-bootstrap/less/pager.less +76 -76
  104. package/src/android-bootstrap/less/pagination.less +89 -89
  105. package/src/android-bootstrap/less/panels.less +274 -274
  106. package/src/android-bootstrap/less/popovers.less +131 -131
  107. package/src/android-bootstrap/less/print.less +101 -101
  108. package/src/android-bootstrap/less/progress-bars.less +87 -87
  109. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  110. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  111. package/src/android-bootstrap/less/scaffolding.less +161 -161
  112. package/src/android-bootstrap/less/tables.less +262 -262
  113. package/src/android-bootstrap/less/theme.less +291 -291
  114. package/src/android-bootstrap/less/thumbnails.less +36 -36
  115. package/src/android-bootstrap/less/tooltip.less +102 -102
  116. package/src/android-bootstrap/less/type.less +303 -303
  117. package/src/android-bootstrap/less/utilities.less +55 -55
  118. package/src/android-bootstrap/less/variables.less +896 -896
  119. package/src/android-bootstrap/less/wells.less +29 -29
  120. package/src/bootstrap/less/.csscomb.json +304 -304
  121. package/src/bootstrap/less/.csslintrc +19 -19
  122. package/src/bootstrap/less/alerts.less +73 -73
  123. package/src/bootstrap/less/badges.less +66 -66
  124. package/src/bootstrap/less/breadcrumbs.less +26 -26
  125. package/src/bootstrap/less/button-groups.less +247 -247
  126. package/src/bootstrap/less/buttons.less +172 -172
  127. package/src/bootstrap/less/carousel.less +269 -269
  128. package/src/bootstrap/less/close.less +34 -34
  129. package/src/bootstrap/less/code.less +69 -69
  130. package/src/bootstrap/less/component-animations.less +33 -33
  131. package/src/bootstrap/less/dropdowns.less +216 -216
  132. package/src/bootstrap/less/grid.less +84 -84
  133. package/src/bootstrap/less/input-groups.less +167 -167
  134. package/src/bootstrap/less/jumbotron.less +52 -52
  135. package/src/bootstrap/less/labels.less +64 -64
  136. package/src/bootstrap/less/list-group.less +141 -141
  137. package/src/bootstrap/less/media.less +66 -66
  138. package/src/bootstrap/less/mixins/alerts.less +14 -14
  139. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  140. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  141. package/src/bootstrap/less/mixins/buttons.less +69 -69
  142. package/src/bootstrap/less/mixins/center-block.less +7 -7
  143. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  144. package/src/bootstrap/less/mixins/forms.less +90 -90
  145. package/src/bootstrap/less/mixins/gradients.less +59 -59
  146. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  147. package/src/bootstrap/less/mixins/grid.less +122 -122
  148. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  149. package/src/bootstrap/less/mixins/image.less +33 -33
  150. package/src/bootstrap/less/mixins/labels.less +12 -12
  151. package/src/bootstrap/less/mixins/list-group.less +30 -30
  152. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  153. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  154. package/src/bootstrap/less/mixins/opacity.less +8 -8
  155. package/src/bootstrap/less/mixins/pagination.less +24 -24
  156. package/src/bootstrap/less/mixins/panels.less +24 -24
  157. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  158. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  159. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  160. package/src/bootstrap/less/mixins/resize.less +6 -6
  161. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  162. package/src/bootstrap/less/mixins/size.less +10 -10
  163. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  164. package/src/bootstrap/less/mixins/table-row.less +44 -44
  165. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  166. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  167. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  168. package/src/bootstrap/less/mixins.less +40 -40
  169. package/src/bootstrap/less/modals.less +151 -151
  170. package/src/bootstrap/less/navbar.less +660 -660
  171. package/src/bootstrap/less/normalize.less +424 -424
  172. package/src/bootstrap/less/pagination.less +89 -89
  173. package/src/bootstrap/less/panels.less +275 -275
  174. package/src/bootstrap/less/popovers.less +131 -131
  175. package/src/bootstrap/less/print.less +101 -101
  176. package/src/bootstrap/less/progress-bars.less +87 -87
  177. package/src/bootstrap/less/responsive-embed.less +35 -35
  178. package/src/bootstrap/less/responsive-utilities.less +194 -194
  179. package/src/bootstrap/less/scaffolding.less +161 -161
  180. package/src/bootstrap/less/theme.less +291 -291
  181. package/src/bootstrap/less/thumbnails.less +36 -36
  182. package/src/bootstrap/less/tooltip.less +102 -102
  183. package/src/bootstrap/less/type.less +303 -303
  184. package/src/bootstrap/less/utilities.less +55 -55
  185. package/src/bootstrap/less/wells.less +29 -29
  186. package/src/components/FileUpload.vue +696 -696
  187. package/src/components/Hello.vue +39 -39
  188. package/src/components/LeftTree.vue +27 -27
  189. package/src/components/android/AttendanceTally.vue +116 -116
  190. package/src/components/android/Blank.vue +10 -10
  191. package/src/components/android/CheckUnplanPage.vue +56 -56
  192. package/src/components/android/Checker.vue +12 -12
  193. package/src/components/android/CheckerAnnual.vue +81 -81
  194. package/src/components/android/CheckerAvarta.vue +82 -82
  195. package/src/components/android/EquipmentInspection.vue +348 -348
  196. package/src/components/android/FootprintMap.vue +120 -120
  197. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  198. package/src/components/android/MasterMain.vue +77 -77
  199. package/src/components/android/Menu.vue +132 -132
  200. package/src/components/android/PaperAlarm.vue +85 -85
  201. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  202. package/src/components/android/PlumberAnnual.vue +83 -83
  203. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  204. package/src/components/android/PlumberMonthly.vue +84 -84
  205. package/src/components/android/PostMap.vue +83 -83
  206. package/src/components/android/QueryCheckHistory.vue +122 -122
  207. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  208. package/src/components/android/RepairMain.vue +60 -60
  209. package/src/components/android/Repairman.vue +12 -12
  210. package/src/components/android/StationMaster.vue +12 -12
  211. package/src/components/defects/DefectModal.vue +101 -101
  212. package/src/components/defects/DevicesAndItem.vue +39 -39
  213. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  214. package/src/components/notice/NoticeForm.vue +100 -100
  215. package/src/components/notice/NoticeIssue.vue +20 -20
  216. package/src/components/paper/PicViewer.vue +18 -18
  217. package/src/components/pc/SafeCheckOrder/SafeCheckOrderList.vue +248 -248
  218. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  219. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  220. package/src/components/phonestate/PostMap.vue +82 -82
  221. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  222. package/src/components/userfile/MeterFile.vue +145 -145
  223. package/src/components/userfile/MeterModify.vue +46 -46
  224. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  225. package/src/filiale/hanzhong/pc/CheckHiddenDanger.vue +713 -713
  226. package/src/filiale/hanzhong/pc/CheckNumberStatistics.vue +499 -499
  227. package/src/filiale/hanzhong/pc/CheckSafeDetail.vue +578 -573
  228. package/src/filiale/hanzhong/pc/CheckSafeStatus.vue +508 -508
  229. package/src/filiale/hanzhong/pc/CheckerSafeDetail.vue +595 -595
  230. package/src/filiale/hanzhong/pc/HomeEcharts.vue +153 -153
  231. package/src/filiale/kelai/android/PaperFeedback.vue +1553 -1553
  232. package/src/filiale/qingjian/android/PhoneUpUserinfo.vue +104 -38
  233. package/src/filiale/qingjian/android/SafecheckUserInfo.vue +42 -19
  234. package/src/filiale/tongchuan/pc/AMapTrailShowZk.vue +226 -226
  235. package/src/filiale/tongchuan/pc/CheckSearchUser.vue +1091 -1091
  236. package/src/filiale/tongchuan/pc/DefectPaperWeiXiu.vue +664 -664
  237. package/src/filiale/tongchuan/pc/NoCheckplanSafecheck.vue +247 -247
  238. package/src/filiale/tongchuan/pc/PaperDefectMain.vue +1094 -1094
  239. package/src/filiale/tongchuan/pc/PaperList.vue +718 -718
  240. package/src/filiale/tongchuan/pc/PersonTrack.vue +269 -269
  241. package/src/filiale/tongchuan/pc/SelectCheckPlan.vue +336 -336
  242. package/src/filiale/tongchuan/pc.js +37 -37
  243. package/src/filiale/wuan/android/SafecheckOrderV.vue +2242 -2242
  244. package/src/filiale/wuan/android/SafecheckUserInfo.vue +659 -659
  245. package/src/plugins/LoadData.js +10 -10
  246. package/src/plugins/LoadParams.js +24 -24
  247. package/src/stores/wxconfig.js +10 -10
  248. package/src/utils/getNowDate.js +33 -33
  249. package/test/e2e/custom-assertions/elementCount.js +26 -26
  250. package/test/e2e/nightwatch.conf.js +40 -40
  251. package/test/e2e/runner.js +30 -30
  252. package/test/e2e/specs/test.js +13 -13
  253. package/test/unit/.eslintrc +5 -5
  254. package/test/unit/TestUtil.js +62 -62
  255. package/test/unit/context.html +20 -20
  256. package/test/unit/index.js +13 -13
@@ -1,269 +1,269 @@
1
- <template>
2
- <div class="basic-main" style="height: 100%">
3
- <div class="row">
4
- <div class="col-sm-9 amap-main">
5
- <div class="form-horizontal select-overspread container-fluid auto">
6
- <div class="row">
7
- <div class="col-sm-3 form-input-group" style="width: 20%">
8
- <label class="control-label">公&emsp;&emsp;司</label>
9
- <right-tree-safe @re-res="getRes" >
10
- </right-tree-safe>
11
- </div>
12
- <div class="col-sm-3 form-input-group" style="width: 20%">
13
- <label class="control-label" >轨迹时间</label>
14
- <datepicker placeholder="轨迹时间"
15
- :value.sync="searchCondition.date"
16
- v-model="searchCondition.date"
17
- :format="'yyyy-MM-dd'">
18
- </datepicker>
19
- </div>
20
- <div class="col-sm-3 form-input-group" style="width: 20%">
21
- <label class="control-label">安检员</label>
22
- <v-select :value.sync="searchCondition.userId" v-model='searchCondition.userId'
23
- :value-single="true" clear-button search
24
- :options='searchUserEndOption' placeholder='请选择'
25
- ></v-select>
26
- </div>
27
- <div class="col-sm-3 form-input-group" style="width: 20%">
28
- <label class="control-label">班组</label>
29
- <v-select :value.sync="searchCondition.departmentId" v-model='searchCondition.departmentId'
30
- :value-single="true" clear-button search
31
- :options='searchDepartmentOption' placeholder='请选择'
32
- ></v-select>
33
- </div>
34
- <div class="col-sm-3 form-input-group" style="width: 20%">
35
- <label class="control-label">网格员</label>
36
- <v-select class="select_list select"
37
- placeholder='请选择' style="width: 60%"
38
- :value.sync="f_book_checker" v-model="f_book_checker"
39
- :options='users'
40
- filer-key="name"
41
- close-on-select clear-button
42
- :value-single="true">
43
- </v-select>
44
- </div>
45
- <div class="col-sm-3 form-input-group" style="width: 20%;float:right;">
46
- <button class="btn btn-primary" @click="search">查询</button>
47
- </div>
48
- </div>
49
- </div>
50
- <a-map-trajectory-new :outerlinedata.sync="outerlinedata" :pathnavigatorstyle="pathnavigatorstyle" :dom="dom"></a-map-trajectory-new>
51
- </div>
52
- <div class="col-sm-3">
53
- <div id="zzz" class="basic-main" style="flex:1;margin-left: 0px;overflow: hidden">
54
- <div class="flex">
55
- <div class="panel panel-info" style="flex: 4;margin-top:0px;height: 50%">
56
- <div class="panel-heading" style="height: auto">
57
- <h3 class="panel-title">轨迹记录</h3>
58
- </div>
59
- <div class="panel-body" style="overflow: scroll; height: 700px">
60
- <accordion :one-at-a-time="true" v-if="reponData.length>0">
61
- <template v-for="row in reponData">
62
- <panel is-open="false" type="primary" @click="chengeLocation(row)">
63
- <strong slot="header">人员姓名:{{row.name}}</strong>
64
- <!-- <div v-for="(idx,item) in row.result" @click="chengeLocation(item)" :class="{'alert alert-info':idx%2===0,'alert alert-success':idx%2!==0}">-->
65
- <!-- 轨迹时间段:{{item.f_start_date}} ~ {{item.f_end_date}}-->
66
- <!-- </div>-->
67
- </panel>
68
- </template>
69
- </accordion>
70
- <h4 class="panel-title" v-else>暂无相关数据</h4>
71
- </div>
72
- </div>
73
- </div>
74
- </div>
75
- </div>
76
- </div>
77
-
78
- </div>
79
- </template>
80
-
81
- <script>
82
- import {HttpResetClass} from 'vue-client'
83
- import { douglasPeuckerForAMap } from '../../../components/map/douglasPeuckerForAMap'
84
-
85
- export default {
86
- title: "安检员轨迹展示",
87
- data() {
88
- return {
89
- showTaskPoints: [],
90
- taskModel: {},
91
- // 当前分公司下所有的用户id
92
- toUserIds: '',
93
- // 当前公司的所有安检员
94
- searchUserEndOption: [],
95
- searchDepartmentOption: [],
96
- // 请求到的结果集合
97
- reponData: [],
98
- // 点集
99
- outerlinedata: [],
100
- pathnavigatorstyle: {
101
- // 图标宽度
102
- width: 16,
103
- // 图标高度
104
- height: 32,
105
- // 图标地址(外链地址或者Base64)
106
- iconBase64: 'https://webapi.amap.com/ui/1.1/ui/misc/PathSimplifier/examples/imgs/car.png'
107
- },
108
- // 分公司ids
109
- f_filialeids: '',
110
- path: [],
111
- aMap: null,
112
- map: null,
113
- filialeOptions: [],
114
- userid: null,
115
- dom: 'amapIdLOCUS' + Math.round(Math.random() * 10) + Math.round(Math.random() * 10),
116
- rootSubmenuKeys: ['1', '2'],
117
- users:[{label: '全部', value: ''}],
118
- f_book_checker:'',
119
- openKeys: ['1'],
120
- searchCondition: {
121
- condition: '1 = 1',
122
- orderTime: 'ps.f_realtime asc',
123
- date: '',
124
- userId: undefined,
125
- departmentId: undefined
126
- }
127
- }
128
- },
129
- methods: {
130
- chengeLocation(row) {
131
- const points = douglasPeuckerForAMap(row.points, 2, 'tm')
132
- this.outerlinedata = [{ path: points, speed: Math.ceil(points.length / 2), name: `${this.searchCondition.date}的轨迹` }]
133
- },
134
- search() {
135
- var condition = '1 = 1'
136
- if (!this.f_filialeids) {
137
- return this.$showMessage('请选择需要查询的分公司')
138
- }
139
- if (!this.searchCondition.date) {
140
- return this.$showMessage('请选择需要查看的轨迹时间')
141
- }
142
- // if (!this.searchCondition.userId[0]) {
143
- // return this.$showMessage('请选择需要查看的轨迹所属人员')
144
- // }
145
-
146
- if (typeof this.searchCondition.date !== 'string') {
147
- this.searchCondition.date = this.searchCondition.date.format('YYYY-MM-DD')
148
- }
149
- condition += " and ps.f_realtime >= '" + this.searchCondition.date + " 00:00:00' and ps.f_realtime <= '" + this.searchCondition.date + " 23:59:59'"
150
- let userIds = []
151
- if (this.searchCondition.userId && !userIds.includes(this.searchCondition.userId)) {
152
- userIds.push(this.searchCondition.userId)
153
- }
154
- if (this.f_book_checker && !userIds.includes(this.f_book_checker)) {
155
- userIds.push(this.f_book_checker)
156
- }
157
- if (userIds.length > 0) {
158
- const idsStr = userIds.map(id => `'${id}'`).join(',')
159
- condition += ` and ps.f_user_id in (${idsStr})`
160
- }
161
- let condition2 = '1 = 1'
162
- if(this.searchCondition.departmentId){
163
- condition2 += ` and d.id = '${this.searchCondition.departmentId}'`
164
- }
165
- this.searchCondition.condition = condition
166
- this.$resetpost('rs/logic/getPhoneState', { condition: this.searchCondition.condition, condition2, orderTime: this.searchCondition.orderTime }, {resolveMsg: "轨迹记录查询成功", rejectMsg: "轨迹记录查询失败"}).then((response)=>{
167
- if (response.data.state === 'success') {
168
- this.reponData = response.data.result
169
- // const points = douglasPeuckerForAMap(response.data.result, 2, 'tm')
170
- // this.outerlinedata = [{ path: points, speed: Math.ceil(points.length / 2), name: `${this.searchCondition.date}的轨迹` }]
171
- } else {
172
- this.$showMessage("该用户当日使用app时间较短或行程较少,不足够生成轨迹")
173
- }
174
- })
175
- },
176
- getRes(obj){
177
- // this.model.f_filialeids = this.$login.convertToIn(obj.resids);
178
- if (obj.res != undefined && obj.res.length > 0 && obj.res[0] != undefined) {
179
- this.getNewData(obj.res[0])
180
- }
181
- this.f_filialeids = this.$login.convertToIn(obj.resids);
182
- },
183
- //获取定位人员类表
184
- async getNewData(organization){
185
- // let organization = '公司名称'
186
- // let userRolestr = '需要定位人员'
187
- let userRolestr = '安检员'
188
- let res =await new HttpResetClass().load('POST', '/rs/search', {
189
- // source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($需要定位人员$) != -1))',
190
- source: "this.getParentByName($"+organization+"$).getAllChildrens().where(row.getAttributes().get($resourcetype$)==$user$).where(row.getAttributes().get($rolestr$)!=null).where(row.getAttributes().get($rolestr$).indexOf($"+userRolestr+"$)!=-1)",
191
- userid: this.$login.f.id
192
- }, {resolveMsg: null, rejectMsg: null})
193
- let dataEnd = [{label:'全部',value:''}]
194
- let idsEnd = []
195
- res.data.forEach(res=>{
196
- let h=true
197
- dataEnd.forEach(per=>{
198
- if(res.id==per.value){
199
- h=false
200
- }
201
- })
202
- if(h){
203
- dataEnd.push({label:res.name,value:res.id})
204
- idsEnd.push(res.id)
205
- }
206
- })
207
- this.toUserIds = this.$login.convertToIn(idsEnd); //所有的员工ID
208
- this.searchUserEndOption = dataEnd
209
-
210
- let resp = await new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
211
- data: {
212
- items:'*',
213
- tablename: 't_department',
214
- condition: `parentid = '${this.$login.f.orgid}' and f_dep_type = '部门'`,
215
- orderitem:'id'
216
- }
217
- }, {resolveMsg: null, rejectMsg: null})
218
- //tag)
219
- const departments = [{label: '全部', value: ''}]
220
- for (const item of resp.data) {
221
- departments.push({
222
- label: item.name,
223
- value: item.id
224
- })
225
- }
226
- this.searchDepartmentOption = departments
227
- },
228
- toStandardDateString () {
229
- const dt = new Date()
230
- const month = dt.getMonth() + 1
231
- const date = dt.getDate()
232
- return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date)
233
- },
234
- initBookChecker(){
235
- new HttpResetClass().load('POST', '/rs/search', {
236
- data: {
237
- source: `root.getResourceById($${this.$login.f.orgid}$,$organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($网格员$) != -1)`,
238
- userid: this.$login.f.id
239
- }
240
- }, {resolveMsg: null, rejectMsg: null}).then(res=>{
241
- let data = res.data
242
- const addedNames = new Set()
243
- this.users = []
244
- data.forEach(user => {
245
- if (user.state === '在职') {
246
- if (!addedNames.has(user.name)) {
247
- this.users.push({label:user.name,value:user.id})
248
- addedNames.add(user.name)
249
- }
250
- }
251
- })
252
- console.log(this.users)
253
- })
254
- },
255
-
256
- },
257
- ready(){
258
- this.searchCondition.date = this.toStandardDateString()
259
- this.initBookChecker()
260
- }
261
- }
262
- </script>
263
-
264
- <style lang="less" scoped>
265
- .amap-main {
266
- height: 90%;
267
- padding-right:10px;
268
- }
269
- </style>
1
+ <template>
2
+ <div class="basic-main" style="height: 100%">
3
+ <div class="row">
4
+ <div class="col-sm-9 amap-main">
5
+ <div class="form-horizontal select-overspread container-fluid auto">
6
+ <div class="row">
7
+ <div class="col-sm-3 form-input-group" style="width: 20%">
8
+ <label class="control-label">公&emsp;&emsp;司</label>
9
+ <right-tree-safe @re-res="getRes" >
10
+ </right-tree-safe>
11
+ </div>
12
+ <div class="col-sm-3 form-input-group" style="width: 20%">
13
+ <label class="control-label" >轨迹时间</label>
14
+ <datepicker placeholder="轨迹时间"
15
+ :value.sync="searchCondition.date"
16
+ v-model="searchCondition.date"
17
+ :format="'yyyy-MM-dd'">
18
+ </datepicker>
19
+ </div>
20
+ <div class="col-sm-3 form-input-group" style="width: 20%">
21
+ <label class="control-label">安检员</label>
22
+ <v-select :value.sync="searchCondition.userId" v-model='searchCondition.userId'
23
+ :value-single="true" clear-button search
24
+ :options='searchUserEndOption' placeholder='请选择'
25
+ ></v-select>
26
+ </div>
27
+ <div class="col-sm-3 form-input-group" style="width: 20%">
28
+ <label class="control-label">班组</label>
29
+ <v-select :value.sync="searchCondition.departmentId" v-model='searchCondition.departmentId'
30
+ :value-single="true" clear-button search
31
+ :options='searchDepartmentOption' placeholder='请选择'
32
+ ></v-select>
33
+ </div>
34
+ <div class="col-sm-3 form-input-group" style="width: 20%">
35
+ <label class="control-label">网格员</label>
36
+ <v-select class="select_list select"
37
+ placeholder='请选择' style="width: 60%"
38
+ :value.sync="f_book_checker" v-model="f_book_checker"
39
+ :options='users'
40
+ filer-key="name"
41
+ close-on-select clear-button
42
+ :value-single="true">
43
+ </v-select>
44
+ </div>
45
+ <div class="col-sm-3 form-input-group" style="width: 20%;float:right;">
46
+ <button class="btn btn-primary" @click="search">查询</button>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <a-map-trajectory-new :outerlinedata.sync="outerlinedata" :pathnavigatorstyle="pathnavigatorstyle" :dom="dom"></a-map-trajectory-new>
51
+ </div>
52
+ <div class="col-sm-3">
53
+ <div id="zzz" class="basic-main" style="flex:1;margin-left: 0px;overflow: hidden">
54
+ <div class="flex">
55
+ <div class="panel panel-info" style="flex: 4;margin-top:0px;height: 50%">
56
+ <div class="panel-heading" style="height: auto">
57
+ <h3 class="panel-title">轨迹记录</h3>
58
+ </div>
59
+ <div class="panel-body" style="overflow: scroll; height: 700px">
60
+ <accordion :one-at-a-time="true" v-if="reponData.length>0">
61
+ <template v-for="row in reponData">
62
+ <panel is-open="false" type="primary" @click="chengeLocation(row)">
63
+ <strong slot="header">人员姓名:{{row.name}}</strong>
64
+ <!-- <div v-for="(idx,item) in row.result" @click="chengeLocation(item)" :class="{'alert alert-info':idx%2===0,'alert alert-success':idx%2!==0}">-->
65
+ <!-- 轨迹时间段:{{item.f_start_date}} ~ {{item.f_end_date}}-->
66
+ <!-- </div>-->
67
+ </panel>
68
+ </template>
69
+ </accordion>
70
+ <h4 class="panel-title" v-else>暂无相关数据</h4>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+
78
+ </div>
79
+ </template>
80
+
81
+ <script>
82
+ import {HttpResetClass} from 'vue-client'
83
+ import { douglasPeuckerForAMap } from '../../../components/map/douglasPeuckerForAMap'
84
+
85
+ export default {
86
+ title: "安检员轨迹展示",
87
+ data() {
88
+ return {
89
+ showTaskPoints: [],
90
+ taskModel: {},
91
+ // 当前分公司下所有的用户id
92
+ toUserIds: '',
93
+ // 当前公司的所有安检员
94
+ searchUserEndOption: [],
95
+ searchDepartmentOption: [],
96
+ // 请求到的结果集合
97
+ reponData: [],
98
+ // 点集
99
+ outerlinedata: [],
100
+ pathnavigatorstyle: {
101
+ // 图标宽度
102
+ width: 16,
103
+ // 图标高度
104
+ height: 32,
105
+ // 图标地址(外链地址或者Base64)
106
+ iconBase64: 'https://webapi.amap.com/ui/1.1/ui/misc/PathSimplifier/examples/imgs/car.png'
107
+ },
108
+ // 分公司ids
109
+ f_filialeids: '',
110
+ path: [],
111
+ aMap: null,
112
+ map: null,
113
+ filialeOptions: [],
114
+ userid: null,
115
+ dom: 'amapIdLOCUS' + Math.round(Math.random() * 10) + Math.round(Math.random() * 10),
116
+ rootSubmenuKeys: ['1', '2'],
117
+ users:[{label: '全部', value: ''}],
118
+ f_book_checker:'',
119
+ openKeys: ['1'],
120
+ searchCondition: {
121
+ condition: '1 = 1',
122
+ orderTime: 'ps.f_realtime asc',
123
+ date: '',
124
+ userId: undefined,
125
+ departmentId: undefined
126
+ }
127
+ }
128
+ },
129
+ methods: {
130
+ chengeLocation(row) {
131
+ const points = douglasPeuckerForAMap(row.points, 2, 'tm')
132
+ this.outerlinedata = [{ path: points, speed: Math.ceil(points.length / 2), name: `${this.searchCondition.date}的轨迹` }]
133
+ },
134
+ search() {
135
+ var condition = '1 = 1'
136
+ if (!this.f_filialeids) {
137
+ return this.$showMessage('请选择需要查询的分公司')
138
+ }
139
+ if (!this.searchCondition.date) {
140
+ return this.$showMessage('请选择需要查看的轨迹时间')
141
+ }
142
+ // if (!this.searchCondition.userId[0]) {
143
+ // return this.$showMessage('请选择需要查看的轨迹所属人员')
144
+ // }
145
+
146
+ if (typeof this.searchCondition.date !== 'string') {
147
+ this.searchCondition.date = this.searchCondition.date.format('YYYY-MM-DD')
148
+ }
149
+ condition += " and ps.f_realtime >= '" + this.searchCondition.date + " 00:00:00' and ps.f_realtime <= '" + this.searchCondition.date + " 23:59:59'"
150
+ let userIds = []
151
+ if (this.searchCondition.userId && !userIds.includes(this.searchCondition.userId)) {
152
+ userIds.push(this.searchCondition.userId)
153
+ }
154
+ if (this.f_book_checker && !userIds.includes(this.f_book_checker)) {
155
+ userIds.push(this.f_book_checker)
156
+ }
157
+ if (userIds.length > 0) {
158
+ const idsStr = userIds.map(id => `'${id}'`).join(',')
159
+ condition += ` and ps.f_user_id in (${idsStr})`
160
+ }
161
+ let condition2 = '1 = 1'
162
+ if(this.searchCondition.departmentId){
163
+ condition2 += ` and d.id = '${this.searchCondition.departmentId}'`
164
+ }
165
+ this.searchCondition.condition = condition
166
+ this.$resetpost('rs/logic/getPhoneState', { condition: this.searchCondition.condition, condition2, orderTime: this.searchCondition.orderTime }, {resolveMsg: "轨迹记录查询成功", rejectMsg: "轨迹记录查询失败"}).then((response)=>{
167
+ if (response.data.state === 'success') {
168
+ this.reponData = response.data.result
169
+ // const points = douglasPeuckerForAMap(response.data.result, 2, 'tm')
170
+ // this.outerlinedata = [{ path: points, speed: Math.ceil(points.length / 2), name: `${this.searchCondition.date}的轨迹` }]
171
+ } else {
172
+ this.$showMessage("该用户当日使用app时间较短或行程较少,不足够生成轨迹")
173
+ }
174
+ })
175
+ },
176
+ getRes(obj){
177
+ // this.model.f_filialeids = this.$login.convertToIn(obj.resids);
178
+ if (obj.res != undefined && obj.res.length > 0 && obj.res[0] != undefined) {
179
+ this.getNewData(obj.res[0])
180
+ }
181
+ this.f_filialeids = this.$login.convertToIn(obj.resids);
182
+ },
183
+ //获取定位人员类表
184
+ async getNewData(organization){
185
+ // let organization = '公司名称'
186
+ // let userRolestr = '需要定位人员'
187
+ let userRolestr = '安检员'
188
+ let res =await new HttpResetClass().load('POST', '/rs/search', {
189
+ // source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($需要定位人员$) != -1))',
190
+ source: "this.getParentByName($"+organization+"$).getAllChildrens().where(row.getAttributes().get($resourcetype$)==$user$).where(row.getAttributes().get($rolestr$)!=null).where(row.getAttributes().get($rolestr$).indexOf($"+userRolestr+"$)!=-1)",
191
+ userid: this.$login.f.id
192
+ }, {resolveMsg: null, rejectMsg: null})
193
+ let dataEnd = [{label:'全部',value:''}]
194
+ let idsEnd = []
195
+ res.data.forEach(res=>{
196
+ let h=true
197
+ dataEnd.forEach(per=>{
198
+ if(res.id==per.value){
199
+ h=false
200
+ }
201
+ })
202
+ if(h){
203
+ dataEnd.push({label:res.name,value:res.id})
204
+ idsEnd.push(res.id)
205
+ }
206
+ })
207
+ this.toUserIds = this.$login.convertToIn(idsEnd); //所有的员工ID
208
+ this.searchUserEndOption = dataEnd
209
+
210
+ let resp = await new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
211
+ data: {
212
+ items:'*',
213
+ tablename: 't_department',
214
+ condition: `parentid = '${this.$login.f.orgid}' and f_dep_type = '部门'`,
215
+ orderitem:'id'
216
+ }
217
+ }, {resolveMsg: null, rejectMsg: null})
218
+ //tag)
219
+ const departments = [{label: '全部', value: ''}]
220
+ for (const item of resp.data) {
221
+ departments.push({
222
+ label: item.name,
223
+ value: item.id
224
+ })
225
+ }
226
+ this.searchDepartmentOption = departments
227
+ },
228
+ toStandardDateString () {
229
+ const dt = new Date()
230
+ const month = dt.getMonth() + 1
231
+ const date = dt.getDate()
232
+ return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date)
233
+ },
234
+ initBookChecker(){
235
+ new HttpResetClass().load('POST', '/rs/search', {
236
+ data: {
237
+ source: `root.getResourceById($${this.$login.f.orgid}$,$organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($网格员$) != -1)`,
238
+ userid: this.$login.f.id
239
+ }
240
+ }, {resolveMsg: null, rejectMsg: null}).then(res=>{
241
+ let data = res.data
242
+ const addedNames = new Set()
243
+ this.users = []
244
+ data.forEach(user => {
245
+ if (user.state === '在职') {
246
+ if (!addedNames.has(user.name)) {
247
+ this.users.push({label:user.name,value:user.id})
248
+ addedNames.add(user.name)
249
+ }
250
+ }
251
+ })
252
+ console.log(this.users)
253
+ })
254
+ },
255
+
256
+ },
257
+ ready(){
258
+ this.searchCondition.date = this.toStandardDateString()
259
+ this.initBookChecker()
260
+ }
261
+ }
262
+ </script>
263
+
264
+ <style lang="less" scoped>
265
+ .amap-main {
266
+ height: 90%;
267
+ padding-right:10px;
268
+ }
269
+ </style>