telephone-clients 3.0.103-8 → 3.0.103-81

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 (1043) hide show
  1. package/.babelignore +1 -1
  2. package/.babelrc +6 -6
  3. package/.eslintrc.js +16 -16
  4. package/CHANGELOG.md +37 -37
  5. package/README.md +38 -38
  6. package/TelephoneClient.iml +12 -12
  7. package/adapter.min.js +2049 -2049
  8. package/android.html +18 -18
  9. package/build.gradle +15 -15
  10. package/index.html +29 -29
  11. package/package.json +3 -3
  12. package/release.bat +5 -5
  13. package/src/AndroidApp.vue +33 -33
  14. package/src/App.vue +54 -52
  15. package/src/android-bootstrap/less/navs.less +333 -333
  16. package/src/android.js +17 -17
  17. package/src/androidBase.js +111 -111
  18. package/src/androidTest.js +18 -18
  19. package/src/assets//345/210/240/351/231/244.png +0 -0
  20. package/src/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  21. package/src/bootstrap/less/.csscomb.json +304 -304
  22. package/src/bootstrap/less/.csslintrc +19 -19
  23. package/src/bootstrap/less/alerts.less +73 -73
  24. package/src/bootstrap/less/aofeng/animate.min.css +10 -10
  25. package/src/bootstrap/less/aofeng/standard.less +585 -585
  26. package/src/bootstrap/less/aofeng/themeOne/BinaryTemplate.less +478 -478
  27. package/src/bootstrap/less/aofeng/themeOne/loginStyle.less +1586 -1586
  28. package/src/bootstrap/less/aofeng/themeOne/systemStyle.less +1905 -1905
  29. package/src/bootstrap/less/aofeng/themeTwo/newStyle1.less +415 -415
  30. package/src/bootstrap/less/badges.less +66 -66
  31. package/src/bootstrap/less/bootstrap.less +65 -65
  32. package/src/bootstrap/less/breadcrumbs.less +26 -26
  33. package/src/bootstrap/less/button-groups.less +247 -247
  34. package/src/bootstrap/less/buttons.less +172 -172
  35. package/src/bootstrap/less/carousel.less +269 -269
  36. package/src/bootstrap/less/close.less +34 -34
  37. package/src/bootstrap/less/code.less +69 -69
  38. package/src/bootstrap/less/component-animations.less +33 -33
  39. package/src/bootstrap/less/dropdowns.less +216 -216
  40. package/src/bootstrap/less/forms.less +626 -626
  41. package/src/bootstrap/less/glyphicons.less +305 -305
  42. package/src/bootstrap/less/grid.less +84 -84
  43. package/src/bootstrap/less/input-groups.less +167 -167
  44. package/src/bootstrap/less/jumbotron.less +52 -52
  45. package/src/bootstrap/less/labels.less +64 -64
  46. package/src/bootstrap/less/list-group.less +141 -141
  47. package/src/bootstrap/less/manageStyle/manageChile.less +180 -180
  48. package/src/bootstrap/less/manageStyle/manageStyle.less +1102 -1102
  49. package/src/bootstrap/less/manageStyle/safeStyle.less +498 -498
  50. package/src/bootstrap/less/media.less +66 -66
  51. package/src/bootstrap/less/mixins/alerts.less +14 -14
  52. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  53. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  54. package/src/bootstrap/less/mixins/buttons.less +69 -69
  55. package/src/bootstrap/less/mixins/center-block.less +7 -7
  56. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  57. package/src/bootstrap/less/mixins/forms.less +90 -90
  58. package/src/bootstrap/less/mixins/gradients.less +59 -59
  59. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  60. package/src/bootstrap/less/mixins/grid.less +122 -122
  61. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  62. package/src/bootstrap/less/mixins/image.less +33 -33
  63. package/src/bootstrap/less/mixins/labels.less +12 -12
  64. package/src/bootstrap/less/mixins/list-group.less +30 -30
  65. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  66. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  67. package/src/bootstrap/less/mixins/opacity.less +8 -8
  68. package/src/bootstrap/less/mixins/pagination.less +24 -24
  69. package/src/bootstrap/less/mixins/panels.less +24 -24
  70. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  71. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  72. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  73. package/src/bootstrap/less/mixins/resize.less +6 -6
  74. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  75. package/src/bootstrap/less/mixins/size.less +10 -10
  76. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  77. package/src/bootstrap/less/mixins/table-row.less +44 -44
  78. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  79. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  80. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  81. package/src/bootstrap/less/mixins.less +40 -40
  82. package/src/bootstrap/less/modals.less +151 -151
  83. package/src/bootstrap/less/navbar.less +660 -660
  84. package/src/bootstrap/less/navs.less +285 -285
  85. package/src/bootstrap/less/normalize.less +424 -424
  86. package/src/bootstrap/less/pager.less +76 -76
  87. package/src/bootstrap/less/pagination.less +89 -89
  88. package/src/bootstrap/less/panels.less +275 -275
  89. package/src/bootstrap/less/popovers.less +131 -131
  90. package/src/bootstrap/less/print.less +101 -101
  91. package/src/bootstrap/less/progress-bars.less +87 -87
  92. package/src/bootstrap/less/responsive-embed.less +35 -35
  93. package/src/bootstrap/less/responsive-utilities.less +194 -194
  94. package/src/bootstrap/less/scaffolding.less +161 -161
  95. package/src/bootstrap/less/stand.less +211 -211
  96. package/src/bootstrap/less/standard.less +503 -503
  97. package/src/bootstrap/less/systemStyle.less +860 -860
  98. package/src/bootstrap/less/tables.less +312 -312
  99. package/src/bootstrap/less/theme.less +291 -291
  100. package/src/bootstrap/less/themeOne.less +34 -34
  101. package/src/bootstrap/less/themeTwo.less +27 -27
  102. package/src/bootstrap/less/thumbnails.less +36 -36
  103. package/src/bootstrap/less/tooltip.less +102 -102
  104. package/src/bootstrap/less/type.less +303 -303
  105. package/src/bootstrap/less/utilities.less +55 -55
  106. package/src/bootstrap/less/variables.less +896 -896
  107. package/src/bootstrap/less/wells.less +29 -29
  108. package/src/bus.js +2 -2
  109. package/src/components/CaseContainer.vue +86 -86
  110. package/src/components/ExportExcel.vue +342 -342
  111. package/src/components/ImgSelfTel.vue +126 -126
  112. package/src/components/MaterialsManage/MaterialsBase.vue +177 -177
  113. package/src/components/MaterialsManage/MaterialsList.vue +244 -244
  114. package/src/components/MaterialsManage/MaterialsManage.vue +60 -60
  115. package/src/components/PartialView.vue +44 -44
  116. package/src/components/Test.vue +26 -26
  117. package/src/components/TimelineItem.vue +119 -119
  118. package/src/components/Util/FileUpload.vue +139 -139
  119. package/src/components/Util/ImgSelfSafePlus.vue +156 -156
  120. package/src/components/Util/RightTreeSafe.vue +346 -346
  121. package/src/components/Util/RightTreeSafeDep.vue +350 -0
  122. package/src/components/Util/TelePhoneUpload.vue +279 -279
  123. package/src/components/Util.js +600 -600
  124. package/src/components/android/AddMyTask.vue +353 -346
  125. package/src/components/android/AppHeader.vue +69 -69
  126. package/src/components/android/CameraImg.vue +111 -111
  127. package/src/components/android/CompletedRepair.vue +264 -264
  128. package/src/components/android/EmployeeInfo.vue +59 -59
  129. package/src/components/android/EmployeePage.vue +71 -71
  130. package/src/components/android/Lbt.vue +103 -103
  131. package/src/components/android/LoginApp.vue +374 -374
  132. package/src/components/android/NavBottom.vue +104 -104
  133. package/src/components/changemeter/ChangeMeterAll.vue +189 -189
  134. package/src/components/changemeter/ChangeMeterDetail.vue +300 -300
  135. package/src/components/changemeter/ChangeMeterMain.vue +37 -37
  136. package/src/components/eachart/BarBrokenline.vue +206 -206
  137. package/src/components/eachart/BarChart.vue +165 -165
  138. package/src/components/eachart/PieChart.vue +182 -182
  139. package/src/components/eachart/datesumchart.vue +165 -165
  140. package/src/components/eachart/statework.vue +226 -226
  141. package/src/components/eachart/workorderchart.vue +183 -183
  142. package/src/components/guoxin/Console.vue +356 -356
  143. package/src/components/guoxin/RecordInfoRight.vue +75 -75
  144. package/src/components/guoxin/VisitInfo.vue +281 -281
  145. package/src/components/guoxin/call.state.api.js +215 -215
  146. package/src/components/guoxin/reconnecting-websocket.min.js +1 -1
  147. package/src/components/guoxin/telephone.js +15 -15
  148. package/src/components/map/AMapTrailShowWx.vue +178 -178
  149. package/src/components/map/CallMap.vue +403 -403
  150. package/src/components/map/CriteriaData.vue +81 -81
  151. package/src/components/map/OlMap.vue +831 -831
  152. package/src/components/map/OrderService.vue +249 -249
  153. package/src/components/map/PipeMap.vue +154 -154
  154. package/src/components/map/dragbox.js +234 -234
  155. package/src/components/pay/createQRcode.vue +192 -192
  156. package/src/components/pay/telReadCard.vue +59 -59
  157. package/src/components/pc/AllUser.vue +615 -615
  158. package/src/components/pc/AllUserNew.vue +638 -638
  159. package/src/components/pc/ArrearsList.vue +397 -397
  160. package/src/components/pc/AttendantCallStat.vue +213 -213
  161. package/src/components/pc/AttendantWorkHistory.vue +98 -98
  162. package/src/components/pc/Auxfunc.vue +76 -76
  163. package/src/components/pc/BottleGas/BottleGasManage.vue +304 -304
  164. package/src/components/pc/BottleGasWork.vue +214 -214
  165. package/src/components/pc/BuildReport.vue +60 -60
  166. package/src/components/pc/CallerInfoList.vue +98 -98
  167. package/src/components/pc/ChatMsg.vue +338 -338
  168. package/src/components/pc/ComplainWork.vue +326 -326
  169. package/src/components/pc/Console.vue +617 -617
  170. package/src/components/pc/DelayReply.vue +60 -60
  171. package/src/components/pc/DistributeWork.vue +177 -177
  172. package/src/components/pc/ElseWork.vue +44 -44
  173. package/src/components/pc/ElseWorkList.vue +267 -267
  174. package/src/components/pc/Emoji.vue +64 -64
  175. package/src/components/pc/Evaluate.vue +145 -145
  176. package/src/components/pc/EvaluateList.vue +195 -195
  177. package/src/components/pc/EvaluateModel.vue +53 -53
  178. package/src/components/pc/FailureEdit.vue +192 -192
  179. package/src/components/pc/FailureShow.vue +61 -61
  180. package/src/components/pc/FireQuery.vue +165 -165
  181. package/src/components/pc/FootPrintList.vue +40 -40
  182. package/src/components/pc/GasWork.vue +764 -764
  183. package/src/components/pc/GroupResend.vue +111 -111
  184. package/src/components/pc/InstallWork.vue +734 -734
  185. package/src/components/pc/ManageMaterial.vue +282 -282
  186. package/src/components/pc/MessageList.vue +635 -635
  187. package/src/components/pc/MessageManage.vue +136 -136
  188. package/src/components/pc/MessageManageList.vue +127 -127
  189. package/src/components/pc/MessageManageNew.vue +121 -121
  190. package/src/components/pc/MonitorGroup.vue +82 -82
  191. package/src/components/pc/NewRepairPaper.vue +370 -370
  192. package/src/components/pc/OrderService.vue +182 -182
  193. package/src/components/pc/ProgressBar.vue +50 -50
  194. package/src/components/pc/QueryJoinlv.vue +136 -136
  195. package/src/components/pc/QueryTeleHistory.vue +95 -95
  196. package/src/components/pc/QueryTextHistory.vue +98 -98
  197. package/src/components/pc/QueryVisitHistory.vue +217 -217
  198. package/src/components/pc/ReVisitList.vue +208 -208
  199. package/src/components/pc/RecordInfoRight.vue +84 -84
  200. package/src/components/pc/RecordList.vue +53 -53
  201. package/src/components/pc/RecordList2.vue +155 -155
  202. package/src/components/pc/RecordListLeft.vue +188 -188
  203. package/src/components/pc/RecordReport.vue +181 -181
  204. package/src/components/pc/ReminderOrder.vue +52 -52
  205. package/src/components/pc/RepairHistoryList.vue +152 -152
  206. package/src/components/pc/RepairsWork.vue +839 -820
  207. package/src/components/pc/ReturnRecord.vue +126 -126
  208. package/src/components/pc/RoleSelector.vue +139 -139
  209. package/src/components/pc/RoleSelectorDep.vue +158 -0
  210. package/src/components/pc/SeatInfo.vue +207 -207
  211. package/src/components/pc/Seekwork.vue +310 -310
  212. package/src/components/pc/ServerAppendixInfo.vue +52 -52
  213. package/src/components/pc/ServiceBack.vue +49 -49
  214. package/src/components/pc/ServiceDetails.vue +53 -53
  215. package/src/components/pc/ServiceDetailsNew.vue +53 -53
  216. package/src/components/pc/SiteBack.vue +84 -84
  217. package/src/components/pc/SiteCase.vue +87 -87
  218. package/src/components/pc/SiteSend.vue +281 -281
  219. package/src/components/pc/StandSend.vue +600 -600
  220. package/src/components/pc/StandServer.vue +25 -25
  221. package/src/components/pc/StandWork.vue +91 -91
  222. package/src/components/pc/StandWorkNew.vue +91 -91
  223. package/src/components/pc/TelFindUser.vue +304 -304
  224. package/src/components/pc/TelListener.vue +174 -143
  225. package/src/components/pc/TelLossList.vue +247 -247
  226. package/src/components/pc/TelMaterSelect.vue +225 -225
  227. package/src/components/pc/TelUserMaterSend.vue +171 -171
  228. package/src/components/pc/TeleInfo.vue +140 -140
  229. package/src/components/pc/TeleList.vue +99 -99
  230. package/src/components/pc/TeleOperKl.vue +91 -91
  231. package/src/components/pc/TemplateMessage.vue +92 -92
  232. package/src/components/pc/TextControl.vue +113 -113
  233. package/src/components/pc/TextInfoRight.vue +84 -84
  234. package/src/components/pc/TextList.vue +45 -45
  235. package/src/components/pc/TextListLeft.vue +156 -156
  236. package/src/components/pc/TextServer.vue +154 -154
  237. package/src/components/pc/TextService.vue +849 -849
  238. package/src/components/pc/UserDefinedMessage.vue +90 -90
  239. package/src/components/pc/UserDefinedMessageNew.vue +121 -121
  240. package/src/components/pc/UserOperate.vue +48 -48
  241. package/src/components/pc/VideoPlayer.vue +73 -73
  242. package/src/components/pc/VisitInfo.vue +284 -284
  243. package/src/components/pc/VoiceServer.vue +208 -208
  244. package/src/components/pc/WorkCenter.vue +105 -105
  245. package/src/components/pc/WorkCenterContent.vue +100 -100
  246. package/src/components/pc/WorkCenterList.vue +292 -292
  247. package/src/components/pc/WorkFind.vue +128 -128
  248. package/src/components/pc/WorkHistory.vue +560 -548
  249. package/src/components/pc/WorkList.vue +743 -743
  250. package/src/components/pc/WorkListAll.vue +630 -630
  251. package/src/components/pc/WorkListAllNew.vue +700 -700
  252. package/src/components/pc/WorkListNew.vue +712 -706
  253. package/src/components/pc/WorkMsg.vue +105 -105
  254. package/src/components/pc/analysis/AnalysisMain.vue +423 -423
  255. package/src/components/pc/analysis/StateStatistics.vue +292 -292
  256. package/src/components/pc/analysis/TelephoneAnaly.vue +104 -104
  257. package/src/components/pc/analysis/TelephoneType.vue +270 -270
  258. package/src/components/pc/config/DefaultPrint.js +7 -7
  259. package/src/components/pc/dataManager/KlCatalog.vue +293 -293
  260. package/src/components/pc/dataManager/KlContent.vue +193 -193
  261. package/src/components/pc/dataManager/Knowledge.vue +21 -21
  262. package/src/components/pc/dataManager/Materials.vue +553 -553
  263. package/src/components/pc/dataManager/OutletsList.vue +85 -85
  264. package/src/components/pc/dataManager/SafeEditor.vue +91 -91
  265. package/src/components/pc/dataManager/SafeList.vue +77 -77
  266. package/src/components/pc/dataManager/ShowMaterials.vue +159 -159
  267. package/src/components/pc/dataManager/StopGasManager.vue +320 -320
  268. package/src/components/pc/imgmove.vue +192 -192
  269. package/src/components/pc/olddata/OldWorkList.vue +193 -0
  270. package/src/components/pc/serviceDeleteOrder.vue +53 -53
  271. package/src/components/pc/wx/BookingService.vue +407 -407
  272. package/src/components/pc/wx/CustomMenu.vue +154 -154
  273. package/src/components/pc/wx/MenuView.vue +249 -249
  274. package/src/components/pc/wx/MobileView.vue +273 -273
  275. package/src/components/pc/wx/NewsMaterial.vue +144 -144
  276. package/src/components/pc/wx/SelectMaterial.vue +100 -100
  277. package/src/components/pc/wx/TelOutletsManager.vue +186 -186
  278. package/src/components/pos/Init.vue +213 -213
  279. package/src/components/pos/Main.vue +123 -123
  280. package/src/components/pos/Plugin/AndroidPlugin.js +148 -148
  281. package/src/components/pos/Plugin/PosUtil.js +315 -315
  282. package/src/components/pos/aotePos.js +55 -55
  283. package/src/components/pos/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  284. package/src/components/pos/bootstrap/less/.csscomb.json +304 -304
  285. package/src/components/pos/bootstrap/less/.csslintrc +19 -19
  286. package/src/components/pos/bootstrap/less/alerts.less +73 -73
  287. package/src/components/pos/bootstrap/less/badges.less +66 -66
  288. package/src/components/pos/bootstrap/less/bootstrap.less +56 -56
  289. package/src/components/pos/bootstrap/less/breadcrumbs.less +26 -26
  290. package/src/components/pos/bootstrap/less/button-groups.less +247 -247
  291. package/src/components/pos/bootstrap/less/buttons.less +172 -172
  292. package/src/components/pos/bootstrap/less/carousel.less +269 -269
  293. package/src/components/pos/bootstrap/less/close.less +34 -34
  294. package/src/components/pos/bootstrap/less/code.less +69 -69
  295. package/src/components/pos/bootstrap/less/component-animations.less +33 -33
  296. package/src/components/pos/bootstrap/less/dropdowns.less +216 -216
  297. package/src/components/pos/bootstrap/less/forms.less +626 -626
  298. package/src/components/pos/bootstrap/less/glyphicons.less +305 -305
  299. package/src/components/pos/bootstrap/less/grid.less +84 -84
  300. package/src/components/pos/bootstrap/less/input-groups.less +167 -167
  301. package/src/components/pos/bootstrap/less/jumbotron.less +52 -52
  302. package/src/components/pos/bootstrap/less/labels.less +64 -64
  303. package/src/components/pos/bootstrap/less/list-group.less +141 -141
  304. package/src/components/pos/bootstrap/less/media.less +66 -66
  305. package/src/components/pos/bootstrap/less/mixins/alerts.less +14 -14
  306. package/src/components/pos/bootstrap/less/mixins/background-variant.less +9 -9
  307. package/src/components/pos/bootstrap/less/mixins/border-radius.less +18 -18
  308. package/src/components/pos/bootstrap/less/mixins/buttons.less +69 -69
  309. package/src/components/pos/bootstrap/less/mixins/center-block.less +7 -7
  310. package/src/components/pos/bootstrap/less/mixins/clearfix.less +22 -22
  311. package/src/components/pos/bootstrap/less/mixins/forms.less +90 -90
  312. package/src/components/pos/bootstrap/less/mixins/gradients.less +59 -59
  313. package/src/components/pos/bootstrap/less/mixins/grid-framework.less +92 -92
  314. package/src/components/pos/bootstrap/less/mixins/grid.less +122 -122
  315. package/src/components/pos/bootstrap/less/mixins/hide-text.less +21 -21
  316. package/src/components/pos/bootstrap/less/mixins/image.less +33 -33
  317. package/src/components/pos/bootstrap/less/mixins/labels.less +12 -12
  318. package/src/components/pos/bootstrap/less/mixins/list-group.less +30 -30
  319. package/src/components/pos/bootstrap/less/mixins/nav-divider.less +10 -10
  320. package/src/components/pos/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  321. package/src/components/pos/bootstrap/less/mixins/opacity.less +8 -8
  322. package/src/components/pos/bootstrap/less/mixins/pagination.less +24 -24
  323. package/src/components/pos/bootstrap/less/mixins/panels.less +24 -24
  324. package/src/components/pos/bootstrap/less/mixins/progress-bar.less +10 -10
  325. package/src/components/pos/bootstrap/less/mixins/reset-filter.less +8 -8
  326. package/src/components/pos/bootstrap/less/mixins/reset-text.less +18 -18
  327. package/src/components/pos/bootstrap/less/mixins/resize.less +6 -6
  328. package/src/components/pos/bootstrap/less/mixins/responsive-visibility.less +15 -15
  329. package/src/components/pos/bootstrap/less/mixins/size.less +10 -10
  330. package/src/components/pos/bootstrap/less/mixins/tab-focus.less +9 -9
  331. package/src/components/pos/bootstrap/less/mixins/table-row.less +44 -44
  332. package/src/components/pos/bootstrap/less/mixins/text-emphasis.less +9 -9
  333. package/src/components/pos/bootstrap/less/mixins/text-overflow.less +8 -8
  334. package/src/components/pos/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  335. package/src/components/pos/bootstrap/less/mixins.less +40 -40
  336. package/src/components/pos/bootstrap/less/modals.less +151 -151
  337. package/src/components/pos/bootstrap/less/navbar.less +660 -660
  338. package/src/components/pos/bootstrap/less/navs.less +286 -286
  339. package/src/components/pos/bootstrap/less/normalize.less +424 -424
  340. package/src/components/pos/bootstrap/less/pager.less +76 -76
  341. package/src/components/pos/bootstrap/less/pagination.less +89 -89
  342. package/src/components/pos/bootstrap/less/panels.less +274 -274
  343. package/src/components/pos/bootstrap/less/popovers.less +131 -131
  344. package/src/components/pos/bootstrap/less/print.less +101 -101
  345. package/src/components/pos/bootstrap/less/progress-bars.less +87 -87
  346. package/src/components/pos/bootstrap/less/responsive-embed.less +35 -35
  347. package/src/components/pos/bootstrap/less/responsive-utilities.less +194 -194
  348. package/src/components/pos/bootstrap/less/scaffolding.less +161 -161
  349. package/src/components/pos/bootstrap/less/tables.less +262 -262
  350. package/src/components/pos/bootstrap/less/theme.less +291 -291
  351. package/src/components/pos/bootstrap/less/thumbnails.less +36 -36
  352. package/src/components/pos/bootstrap/less/tooltip.less +102 -102
  353. package/src/components/pos/bootstrap/less/type.less +303 -303
  354. package/src/components/pos/bootstrap/less/utilities.less +55 -55
  355. package/src/components/pos/bootstrap/less/variables.less +895 -895
  356. package/src/components/pos/bootstrap/less/wells.less +29 -29
  357. package/src/components/pos/charge/card/CardInfo.vue +43 -43
  358. package/src/components/pos/charge/card/CheckUser.Vue +116 -116
  359. package/src/components/pos/charge/card/ReadCardInter.vue +177 -177
  360. package/src/components/pos/charge/card/ReadCardToBuy.vue +174 -174
  361. package/src/components/pos/charge/card/SelectUser.Vue +104 -104
  362. package/src/components/pos/charge/machine/MachineSearch.Vue +124 -124
  363. package/src/components/pos/charge/sellgas/AdvertPop.vue +70 -70
  364. package/src/components/pos/charge/sellgas/CardSellGas.vue +361 -361
  365. package/src/components/pos/charge/sellgas/ChoosePayWay.vue +275 -275
  366. package/src/components/pos/charge/sellgas/GudingPrice.vue +38 -38
  367. package/src/components/pos/charge/sellgas/JietiPrice.vue +54 -54
  368. package/src/components/pos/charge/sellgas/ScanQrcode.vue +171 -171
  369. package/src/components/pos/charge/sellgas/WriteCard.vue +366 -366
  370. package/src/components/pos/charge/userinfo/ChangeMeterList.vue +43 -43
  371. package/src/components/pos/charge/userinfo/FillGasList.vue +43 -43
  372. package/src/components/pos/charge/userinfo/HistorySellList.vue +90 -90
  373. package/src/components/pos/charge/userinfo/OtherList.vue +43 -43
  374. package/src/components/pos/charge/userinfo/SellList.vue +43 -43
  375. package/src/components/pos/charge/userinfo/TransList.vue +43 -43
  376. package/src/components/pos/charge/userinfo/UserInfo.vue +176 -176
  377. package/src/components/pos/charge/userinfo/WritecardInfo.vue +44 -44
  378. package/src/components/pos/css/bootstrap.less +6757 -6757
  379. package/src/components/pos/css/style.less +158 -158
  380. package/src/components/pos/css/style.less.bak +84 -84
  381. package/src/components/pos/fonts/fontawesome-webfont.svg +2671 -2671
  382. package/src/components/pos/fonts/glyphicons-halflings-regular.svg +287 -287
  383. package/src/components/pos/js/bootstrap.js +2377 -2377
  384. package/src/components/pos/js/bootstrap.min.js +6 -6
  385. package/src/components/pos/js/jquery.chromatable.js +150 -150
  386. package/src/components/pos/js/jquery.min.js +5 -5
  387. package/src/components/pos/js/npm.js +12 -12
  388. package/src/components/pos/ztprint.js +26 -26
  389. package/src/components/qinhua/qhonlineChangeMeter.vue +440 -440
  390. package/src/components/qinhua/qhonlineoperation.vue +227 -227
  391. package/src/components/reli/ChoosePayWay.vue +179 -179
  392. package/src/components/reli/HistorySellLists.vue +128 -128
  393. package/src/components/reli/MachineMain.vue +470 -470
  394. package/src/components/reli/UserInfo.vue +211 -211
  395. package/src/components/reli/searchSells.vue +446 -446
  396. package/src/components/repaircount/RepairDetail.vue +74 -74
  397. package/src/components/repaircount/RepairPlan.vue +58 -58
  398. package/src/components/repaircount/SelectRepairPlan.vue +189 -189
  399. package/src/components/sale/CardMeterCenter.vue +625 -625
  400. package/src/components/sale/IOTMeterCenter.vue +443 -443
  401. package/src/components/sale/MachineMeterCenter.vue +591 -591
  402. package/src/components/sendsingle/CardChangeFill.vue +338 -338
  403. package/src/components/sendsingle/ChangeSendCard.vue +19 -19
  404. package/src/components/sendsingle/IotChangeFill.vue +471 -471
  405. package/src/components/sendsingle/MachineChangeFill.vue +143 -143
  406. package/src/components/sendsingle/PosMakeGas.vue +342 -342
  407. package/src/components/sendsingle/QueryTemporaryRepair.vue +226 -226
  408. package/src/components/sendsingle/TelLotChangeFill.vue +626 -626
  409. package/src/components/sendsingle/TemporarySingle.vue +480 -480
  410. package/src/components/sendsingle/ceshi.vue +51 -51
  411. package/src/components/sendsingle/onlineBuyGas.vue +632 -632
  412. package/src/components/sendsingle/onlineBuyGasOld.vue +19 -19
  413. package/src/components/sendsingle/onlineChangeMeter.vue +419 -419
  414. package/src/components/sendsingle/onlinemakecard.vue +413 -413
  415. package/src/components/sendsingle/onlineoperation.vue +401 -401
  416. package/src/components/sendsingle/onlinequeryuser.vue +468 -468
  417. package/src/components/sendsingle/posMaintainer.vue +277 -277
  418. package/src/components/shaoguan/DelayReply.vue +60 -60
  419. package/src/components/shaoguan/FailureEdit.vue +172 -172
  420. package/src/components/shaoguan/RepairDetailsChange.vue +399 -399
  421. package/src/components/shaoguan/RepairOrderChange.vue +673 -673
  422. package/src/components/shaoguan/RepairUserInfoChange.vue +532 -532
  423. package/src/components/shaoguan/WorkHistory.vue +346 -346
  424. package/src/components/shaoguan/WorkListAll.vue +521 -521
  425. package/src/components/shaoguan/config/DefaultPrint.js +7 -7
  426. package/src/components/telcount/TelByAttendant.vue +118 -118
  427. package/src/components/telcount/TelByLouQi.vue +113 -113
  428. package/src/components/telcount/TelByLouQiMingxi.vue +117 -117
  429. package/src/components/telcount/TelByOrderMan.vue +105 -105
  430. package/src/components/telcount/TelByWeiXiu.vue +199 -199
  431. package/src/components/telcount/TelByZhiHuan.vue +109 -109
  432. package/src/components/telreport/HotlineMonthly.vue +121 -121
  433. package/src/components/telreport/RepairsDetailsReport.vue +98 -0
  434. package/src/components/telreport/TableFaultReport.vue +96 -0
  435. package/src/components/telreport/TelAgentVoiceReport.vue +275 -275
  436. package/src/components/telreport/TelMan.vue +127 -127
  437. package/src/components/telreport/TelReport.vue +122 -122
  438. package/src/components/telreport/TelephoneManReport.vue +121 -121
  439. package/src/components/telreport/Traffic.vue +94 -94
  440. package/src/components/telreport/Trafficassess.vue +121 -121
  441. package/src/components/temp/BusinessMessage.vue +60 -60
  442. package/src/components/temp/BusinesscheckInfo.vue +82 -82
  443. package/src/components/temp/CallRecords.vue +86 -86
  444. package/src/components/temp/ChangemeterInfo.vue +87 -87
  445. package/src/components/temp/DeviceInfo.vue +82 -82
  446. package/src/components/temp/DisableInforMation.vue +82 -82
  447. package/src/components/temp/HandplanInfo.vue +78 -78
  448. package/src/components/temp/InfoTable.vue +134 -131
  449. package/src/components/temp/InstructInfo.vue +86 -86
  450. package/src/components/temp/Main.vue +375 -375
  451. package/src/components/temp/MetereadInfo.vue +83 -83
  452. package/src/components/temp/MetterInfo.vue +92 -92
  453. package/src/components/temp/OldRepairList.vue +100 -0
  454. package/src/components/temp/ParamManager/ParamPage.vue +285 -285
  455. package/src/components/temp/ParamManager/SinglePage.vue +161 -161
  456. package/src/components/temp/RepairList.vue +125 -125
  457. package/src/components/temp/SecurityMessage.vue +64 -64
  458. package/src/components/temp/SecuritycheckInfo.vue +73 -73
  459. package/src/components/temp/SellInfo.vue +153 -153
  460. package/src/components/temp/TelList.vue +99 -99
  461. package/src/components/temp/rightview/CardList.vue +287 -287
  462. package/src/components/temp/rightview/RecordCancel.vue +103 -103
  463. package/src/components/temp/rightview/carddetail/AddUserDetail.vue +65 -65
  464. package/src/components/temp/rightview/carddetail/BankDKDetail.vue +75 -75
  465. package/src/components/temp/rightview/carddetail/BankPay.vue +75 -75
  466. package/src/components/temp/rightview/carddetail/CancellationDetail.vue +58 -58
  467. package/src/components/temp/rightview/carddetail/CardMeterCenterDetail.vue +58 -58
  468. package/src/components/temp/rightview/carddetail/CardOverUserDetail.vue +62 -62
  469. package/src/components/temp/rightview/carddetail/ChangeMeterDetail.vue +70 -70
  470. package/src/components/temp/rightview/carddetail/OtherChargeDetail.vue +56 -56
  471. package/src/components/temp/rightview/carddetail/RefundDetail.vue +63 -63
  472. package/src/components/temp/rightview/carddetail/ReissueBill.vue +165 -165
  473. package/src/components/temp/rightview/carddetail/SortingQuery.vue +295 -295
  474. package/src/components/temp/rightview/carddetail/UserChangeDetail.vue +77 -77
  475. package/src/components/temp/rightview/carddetail/WeChatPay.vue +75 -75
  476. package/src/components/temp/server/ChangeDeclare.vue +45 -45
  477. package/src/components/temp/server/LoadData.vue +60 -60
  478. package/src/components/temp/server/Login.vue +401 -401
  479. package/src/components/temp/server/ModifyPw.vue +143 -143
  480. package/src/components/tongcheng/DistributeWork.vue +129 -129
  481. package/src/components/tongcheng/InfoTable.vue +55 -55
  482. package/src/components/tongcheng/MetterInfo.vue +90 -90
  483. package/src/components/tongcheng/RepairsWork.vue +788 -788
  484. package/src/components/tongcheng/SellInfo.vue +152 -152
  485. package/src/components/tongcheng/StandServer.vue +24 -24
  486. package/src/components/tongcheng/UserOperate.vue +43 -43
  487. package/src/components/tongcheng/VoiceServer.vue +136 -136
  488. package/src/components/tongcheng/WorkListAll.vue +535 -535
  489. package/src/components/weinan/ComplainMsg.vue +141 -141
  490. package/src/components/weinan/ComplainWork.vue +205 -205
  491. package/src/components/weinan/Console.vue +418 -418
  492. package/src/components/weinan/DistributeWork.vue +138 -138
  493. package/src/components/weinan/ExportExcel.vue +204 -204
  494. package/src/components/weinan/FailureEdit.vue +182 -182
  495. package/src/components/weinan/InfoTable.vue +67 -67
  496. package/src/components/weinan/RecordList.vue +299 -299
  497. package/src/components/weinan/RepairFirstV.vue +547 -547
  498. package/src/components/weinan/RepairInfo.vue +163 -163
  499. package/src/components/weinan/RepairListTel.vue +96 -96
  500. package/src/components/weinan/RepairOrderV.vue +1447 -1447
  501. package/src/components/weinan/RepairUserInfo.vue +533 -533
  502. package/src/components/weinan/RepairsWork.vue +806 -806
  503. package/src/components/weinan/Seekwork.vue +178 -178
  504. package/src/components/weinan/SiteChange.vue +228 -228
  505. package/src/components/weinan/SiteSend.vue +228 -228
  506. package/src/components/weinan/SiteSendWeixiu.vue +268 -277
  507. package/src/components/weinan/StandWorkWeixiu.vue +91 -91
  508. package/src/components/weinan/TelByAttendant.vue +110 -110
  509. package/src/components/weinan/TelFindUser.vue +241 -241
  510. package/src/components/weinan/WorkList.vue +726 -653
  511. package/src/components/weinan/WorkListAll.vue +974 -898
  512. package/src/components/weinan/WorkListWeixiu.vue +608 -608
  513. package/src/components/workOrderApplication/OrderWorkDetail.vue +796 -796
  514. package/src/components/workOrderApplication/orderApplicationManage.vue +98 -98
  515. package/src/components/workOrderApplication/orderApply.vue +57 -57
  516. package/src/components/workOrderApplication/orderTable.vue +214 -214
  517. package/src/components/workOrderApplication/orderWork.vue +114 -114
  518. package/src/components/workorder/AfTabset.vue +125 -125
  519. package/src/components/workorder/AndroidStopGasManager.vue +270 -270
  520. package/src/components/workorder/AppInstallationMaterial.vue +613 -613
  521. package/src/components/workorder/ChangeMeter.vue +546 -546
  522. package/src/components/workorder/ChangeMeterList.vue +236 -236
  523. package/src/components/workorder/ChangeMeterPage.vue +506 -506
  524. package/src/components/workorder/CompletedInstall.vue +214 -214
  525. package/src/components/workorder/CompletedRepair.vue +321 -235
  526. package/src/components/workorder/CookingUtensils.vue +134 -134
  527. package/src/components/workorder/DelayApply.vue +105 -105
  528. package/src/components/workorder/DeviceService.vue +133 -133
  529. package/src/components/workorder/DoorService.vue +355 -355
  530. package/src/components/workorder/FaultAll.vue +826 -826
  531. package/src/components/workorder/FirstGasCheck.vue +310 -310
  532. package/src/components/workorder/InputSelect.vue +110 -110
  533. package/src/components/workorder/InstallFirst.vue +517 -517
  534. package/src/components/workorder/InstallUpLoad.vue +111 -111
  535. package/src/components/workorder/MaterialSum.vue +238 -238
  536. package/src/components/workorder/MonitorMSend.vue +202 -202
  537. package/src/components/workorder/Othercharge.vue +477 -477
  538. package/src/components/workorder/Outlay.vue +236 -236
  539. package/src/components/workorder/PhoneGroupResend.vue +88 -88
  540. package/src/components/workorder/PhoneStandWork.vue +354 -354
  541. package/src/components/workorder/PhoneUpDetail.vue +1041 -1038
  542. package/src/components/workorder/PhoneUpUserinfo.vue +1041 -1041
  543. package/src/components/workorder/PhotoWrite.vue +116 -116
  544. package/src/components/workorder/Pipeline.vue +497 -497
  545. package/src/components/workorder/QueryTemporaryRepair.vue +220 -220
  546. package/src/components/workorder/ReadCardPage.vue +217 -217
  547. package/src/components/workorder/RepairDetails.vue +603 -603
  548. package/src/components/workorder/RepairDetails22.vue +128 -128
  549. package/src/components/workorder/RepairFirst.vue +170 -170
  550. package/src/components/workorder/RepairFirstOld.vue +410 -410
  551. package/src/components/workorder/RepairFirstV.vue +673 -673
  552. package/src/components/workorder/RepairFirstVnew.vue +542 -542
  553. package/src/components/workorder/RepairInfo.vue +166 -166
  554. package/src/components/workorder/RepairMatterInfo.vue +186 -186
  555. package/src/components/workorder/RepairOrder.vue +688 -688
  556. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  557. package/src/components/workorder/RepairOrderVnew.vue +868 -868
  558. package/src/components/workorder/RepairSend.vue +264 -264
  559. package/src/components/workorder/RepairUserInfo.vue +532 -532
  560. package/src/components/workorder/Repairpage.vue +100 -100
  561. package/src/components/workorder/RepairsVisit.vue +319 -319
  562. package/src/components/workorder/SafeCheckService.vue +355 -355
  563. package/src/components/workorder/SubstitFirstV.vue +143 -143
  564. package/src/components/workorder/SubstitutionPage.vue +100 -100
  565. package/src/components/workorder/TelChangeMatter.vue +231 -231
  566. package/src/components/workorder/TemporarySingle.vue +480 -480
  567. package/src/components/workorder/TroubleRemoval.vue +419 -419
  568. package/src/components/workorder/UpLoad.vue +111 -111
  569. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  570. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  571. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  572. package/src/expandcss.less +620 -620
  573. package/src/filiale/fugu/pc/ComplainWork.vue +206 -206
  574. package/src/filiale/fugu/pc/FailureEdit.vue +183 -183
  575. package/src/filiale/fugu/pc/RepairsWork.vue +793 -793
  576. package/src/filiale/fugu/pc/Seekwork.vue +182 -182
  577. package/src/filiale/fugu/telephone.js +16 -16
  578. package/src/filiale/furuike/android/CompletedRepair.vue +210 -210
  579. package/src/filiale/furuike/android/FaultAll.vue +861 -861
  580. package/src/filiale/furuike/android/Materials.vue +410 -410
  581. package/src/filiale/furuike/android/RepairFirstVnew.vue +580 -580
  582. package/src/filiale/furuike/android/RepairOrderVnew.vue +890 -890
  583. package/src/filiale/furuike/pc/Auxfunc.vue +109 -109
  584. package/src/filiale/furuike/pc/CallRcords.vue +109 -109
  585. package/src/filiale/furuike/pc/ChangemeterInfo.vue +87 -87
  586. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  587. package/src/filiale/furuike/pc/DeviceInfo.vue +82 -82
  588. package/src/filiale/furuike/pc/DisableInforMation.vue +82 -82
  589. package/src/filiale/furuike/pc/FailureEdit.vue +198 -198
  590. package/src/filiale/furuike/pc/HandplanInfo.vue +78 -78
  591. package/src/filiale/furuike/pc/InfoTable.vue +134 -134
  592. package/src/filiale/furuike/pc/InstructInfo.vue +86 -86
  593. package/src/filiale/furuike/pc/LineReport.vue +215 -215
  594. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +400 -400
  595. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +63 -63
  596. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +381 -381
  597. package/src/filiale/furuike/pc/MetereadInfo.vue +82 -82
  598. package/src/filiale/furuike/pc/MetterInfo.vue +92 -92
  599. package/src/filiale/furuike/pc/NewRepairPaper.vue +415 -415
  600. package/src/filiale/furuike/pc/ProblemList.vue +170 -170
  601. package/src/filiale/furuike/pc/QueryVisitHistory.vue +183 -183
  602. package/src/filiale/furuike/pc/RecordListLeft.vue +259 -259
  603. package/src/filiale/furuike/pc/ReminderOrder.vue +50 -50
  604. package/src/filiale/furuike/pc/RepairList.vue +102 -102
  605. package/src/filiale/furuike/pc/RepairsWork.vue +918 -918
  606. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +128 -128
  607. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  608. package/src/filiale/furuike/pc/SellInfo.vue +158 -158
  609. package/src/filiale/furuike/pc/TableReport.vue +160 -160
  610. package/src/filiale/furuike/pc/TelFindUser.vue +229 -229
  611. package/src/filiale/furuike/pc/TelLossList.vue +145 -145
  612. package/src/filiale/furuike/pc/TelePhoneUpload.vue +279 -279
  613. package/src/filiale/furuike/pc/TextServer.vue +168 -168
  614. package/src/filiale/furuike/pc/VoiceServer.vue +216 -216
  615. package/src/filiale/furuike/pc/WorkCenter.vue +104 -104
  616. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  617. package/src/filiale/furuike/pc/WorkListAllNew.vue +855 -855
  618. package/src/filiale/furuike/telephone.js +115 -115
  619. package/src/filiale/furuike/telephoneAndroid.js +23 -23
  620. package/src/filiale/gehua/pc/Console.vue +676 -676
  621. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +285 -285
  622. package/src/filiale/gehua/pc/TelFindUser.vue +214 -214
  623. package/src/filiale/gehua/telephone.js +16 -16
  624. package/src/filiale/gehua/telephoneAndroid.js +9 -9
  625. package/src/filiale/gongyi/android/RepairDetails.vue +542 -542
  626. package/src/filiale/gongyi/android/RepairFirstV.vue +537 -537
  627. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  628. package/src/filiale/gongyi/pc/WorkListAll.vue +632 -632
  629. package/src/filiale/gongyi/telephone.js +13 -13
  630. package/src/filiale/gongyi/telephoneAndroid.js +15 -15
  631. package/src/filiale/guangxi/android/FaultAll.vue +896 -896
  632. package/src/filiale/guangxi/telephoneAndroid.js +13 -13
  633. package/src/filiale/hanzhong/PagedList.js +248 -248
  634. package/src/filiale/hanzhong/android/Outlay.vue +265 -265
  635. package/src/filiale/hanzhong/android/RepairInfo.vue +167 -167
  636. package/src/filiale/hanzhong/hzSelectUtil.js +84 -84
  637. package/src/filiale/hanzhong/md5.js +266 -266
  638. package/src/filiale/hanzhong/pc/AnalysisMain.vue +477 -477
  639. package/src/filiale/hanzhong/pc/Console.vue +884 -884
  640. package/src/filiale/hanzhong/pc/DistributeWork.vue +420 -420
  641. package/src/filiale/hanzhong/pc/FailureEdit.vue +195 -195
  642. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +84 -84
  643. package/src/filiale/hanzhong/pc/RecordList.vue +53 -53
  644. package/src/filiale/hanzhong/pc/RecordListLeft.vue +196 -196
  645. package/src/filiale/hanzhong/pc/Seekwork.vue +318 -318
  646. package/src/filiale/hanzhong/pc/StateStatistics.vue +292 -292
  647. package/src/filiale/hanzhong/pc/TelFindUser.vue +224 -224
  648. package/src/filiale/hanzhong/pc/TelLossList.vue +137 -137
  649. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +104 -104
  650. package/src/filiale/hanzhong/pc/TelephoneType.vue +269 -269
  651. package/src/filiale/hanzhong/pc/TextServer.vue +157 -157
  652. package/src/filiale/hanzhong/pc/VoiceServer.vue +208 -208
  653. package/src/filiale/hanzhong/pc/message/AllUser.vue +615 -615
  654. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +638 -638
  655. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +397 -397
  656. package/src/filiale/hanzhong/pc/message/MessageList.vue +635 -635
  657. package/src/filiale/hanzhong/pc/message/MessageManage.vue +136 -136
  658. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +127 -127
  659. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +121 -121
  660. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +92 -92
  661. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +90 -90
  662. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +121 -121
  663. package/src/filiale/hanzhong/telephone.js +48 -48
  664. package/src/filiale/hanzhong/telephoneAndroid.js +15 -15
  665. package/src/filiale/kelai/android/AppTakePic.vue +143 -0
  666. package/src/filiale/kelai/android/Outlay.vue +274 -274
  667. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -0
  668. package/src/filiale/kelai/android/RepairFirstV.vue +552 -552
  669. package/src/filiale/kelai/android/RepairOrderV.vue +1446 -1446
  670. package/src/filiale/kelai/android/RepairTypeList.vue +170 -170
  671. package/src/filiale/kelai/android/RepairUserInfo.vue +537 -537
  672. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +612 -612
  673. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +128 -128
  674. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +69 -69
  675. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +82 -82
  676. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +60 -60
  677. package/src/filiale/kelai/pc/CallReport/Time.vue +107 -107
  678. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +76 -76
  679. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +66 -66
  680. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +297 -297
  681. package/src/filiale/kelai/pc/RecordListLeft.vue +188 -188
  682. package/src/filiale/kelai/pc/Seekwork.vue +308 -308
  683. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +276 -276
  684. package/src/filiale/kelai/pc/TelFindUser.vue +214 -214
  685. package/src/filiale/kelai/pc/TelLossList.vue +154 -154
  686. package/src/filiale/kelai/pc/TextServer.vue +157 -157
  687. package/src/filiale/kelai/pc/Trafficassess.vue +159 -159
  688. package/src/filiale/kelai/pc/VisitInfo.vue +268 -268
  689. package/src/filiale/kelai/pc/VoiceServer.vue +227 -227
  690. package/src/filiale/kelai/pc/WorkCenterList.vue +315 -298
  691. package/src/filiale/kelai/pc/WorkListAllNew.vue +717 -679
  692. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -0
  693. package/src/filiale/kelai/telephone.js +40 -39
  694. package/src/filiale/kelai/telephoneAndroid.js +19 -17
  695. package/src/filiale/liaoyuan/android/FaultAll.vue +737 -737
  696. package/src/filiale/liaoyuan/android/RepairDetails.vue +493 -493
  697. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  698. package/src/filiale/liaoyuan/telephoneAndroid.js +13 -13
  699. package/src/filiale/meihekou/android/Othercharge.vue +443 -443
  700. package/src/filiale/meihekou/android/createQRcode.vue +192 -192
  701. package/src/filiale/meihekou/android/onlineBuyGas.vue +793 -793
  702. package/src/filiale/meihekou/telephone.js +13 -13
  703. package/src/filiale/meihekou/telephoneAndroid.js +18 -18
  704. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1032 -1032
  705. package/src/filiale/qianneng/android/Examine.vue +513 -513
  706. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  707. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  708. package/src/filiale/qianneng/android/PhoneStandWork.vue +412 -412
  709. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  710. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  711. package/src/filiale/qianneng/android/RepairFirstV.vue +615 -615
  712. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  713. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  714. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  715. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -512
  716. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  717. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  718. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  719. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  720. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  721. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -250
  722. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -0
  723. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  724. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  725. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -982
  726. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  727. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  728. package/src/filiale/qianneng/pc/WorkListAllNew.vue +749 -701
  729. package/src/filiale/qianneng/pc/changetable.vue +273 -0
  730. package/src/filiale/qianneng/telephone.js +22 -20
  731. package/src/filiale/qianneng/telephoneAndroid.js +22 -22
  732. package/src/filiale/rizhao/android/FaultAll.vue +893 -893
  733. package/src/filiale/rizhao/android/Othercharge.vue +423 -423
  734. package/src/filiale/rizhao/android/RepairFirstV.vue +525 -525
  735. package/src/filiale/rizhao/android/RepairInfo.vue +172 -172
  736. package/src/filiale/rizhao/android/RepairOrderV.vue +1415 -1415
  737. package/src/filiale/rizhao/pc/AnalysisMain.vue +355 -355
  738. package/src/filiale/rizhao/pc/CallRecords.vue +89 -89
  739. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +87 -87
  740. package/src/filiale/rizhao/pc/ComplainWork.vue +357 -357
  741. package/src/filiale/rizhao/pc/Console.vue +456 -456
  742. package/src/filiale/rizhao/pc/DispatchMan.vue +100 -100
  743. package/src/filiale/rizhao/pc/DispatchWork.vue +100 -100
  744. package/src/filiale/rizhao/pc/DistributeWork.vue +188 -188
  745. package/src/filiale/rizhao/pc/FailureEdit.vue +183 -183
  746. package/src/filiale/rizhao/pc/FailureEditFire.vue +169 -169
  747. package/src/filiale/rizhao/pc/FailureEditRepair.vue +174 -174
  748. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +890 -890
  749. package/src/filiale/rizhao/pc/NewRepairPaper.vue +377 -377
  750. package/src/filiale/rizhao/pc/RecordListLeft.vue +189 -189
  751. package/src/filiale/rizhao/pc/ReminderOrder.vue +51 -51
  752. package/src/filiale/rizhao/pc/RepairsWork.vue +936 -936
  753. package/src/filiale/rizhao/pc/Seekwork.vue +339 -339
  754. package/src/filiale/rizhao/pc/SiteSend.vue +258 -258
  755. package/src/filiale/rizhao/pc/StateStatistics.vue +292 -292
  756. package/src/filiale/rizhao/pc/TelFindUser.vue +243 -243
  757. package/src/filiale/rizhao/pc/TelMan.vue +133 -133
  758. package/src/filiale/rizhao/pc/TeleInfo.vue +142 -142
  759. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +72 -72
  760. package/src/filiale/rizhao/pc/TelephoneType.vue +272 -272
  761. package/src/filiale/rizhao/pc/Traffic.vue +91 -91
  762. package/src/filiale/rizhao/pc/UserOperate.vue +49 -49
  763. package/src/filiale/rizhao/pc/VoiceServer.vue +219 -219
  764. package/src/filiale/rizhao/pc/WorkCenterList.vue +294 -294
  765. package/src/filiale/rizhao/pc/WorkHistory.vue +541 -541
  766. package/src/filiale/rizhao/pc/WorkList.vue +783 -783
  767. package/src/filiale/rizhao/pc/WorkListAllNew.vue +673 -668
  768. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +134 -134
  769. package/src/filiale/rizhao/telephone.js +57 -57
  770. package/src/filiale/rizhao/telephoneAndroid.js +16 -16
  771. package/src/filiale/rongcheng/CliWorkListAll.vue +701 -666
  772. package/src/filiale/rongcheng/FaultAll.vue +713 -713
  773. package/src/filiale/rongcheng/RepairFirstV.vue +418 -418
  774. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -0
  775. package/src/filiale/rongcheng/RepairUserInfo.vue +539 -539
  776. package/src/filiale/rongcheng/ServiceDetails.vue +53 -53
  777. package/src/filiale/rongcheng/WorkListAll.vue +727 -727
  778. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +303 -303
  779. package/src/filiale/rongcheng/checkmsgZG.vue +243 -243
  780. package/src/filiale/rongcheng/onlineBuyGas.vue +799 -799
  781. package/src/filiale/rongcheng/onlineoperation.vue +383 -383
  782. package/src/filiale/rongcheng/onlinequeryuser.vue +460 -460
  783. package/src/filiale/rongcheng/telephone.js +19 -19
  784. package/src/filiale/rongcheng/telephoneAndroid.js +19 -17
  785. package/src/filiale/shanxian/android/RepairFirstV.vue +639 -635
  786. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -0
  787. package/src/filiale/shanxian/pc/WorkList.vue +823 -823
  788. package/src/filiale/shanxian/telephone.js +13 -12
  789. package/src/filiale/shanxian/telephoneAndroid.js +13 -13
  790. package/src/filiale/shaoguan/pc/WorkCenterList.vue +326 -326
  791. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +683 -683
  792. package/src/filiale/shaoguan/telephone.js +14 -14
  793. package/src/filiale/shexian/android/AddMyTask.vue +354 -347
  794. package/src/filiale/shexian/android/CompletedRepair.vue +280 -0
  795. package/src/filiale/shexian/android/FaultAll.vue +847 -831
  796. package/src/filiale/shexian/android/Outlay.vue +266 -249
  797. package/src/filiale/shexian/android/RepairFirstV.vue +775 -761
  798. package/src/filiale/shexian/android/RepairInfo.vue +182 -181
  799. package/src/filiale/shexian/android/RepairOrderV.vue +732 -732
  800. package/src/filiale/shexian/pc/NewRepairPaper.vue +374 -374
  801. package/src/filiale/shexian/pc/TelByOrderMan.vue +109 -109
  802. package/src/filiale/shexian/pc/TelByOrderManCount.vue +124 -116
  803. package/src/filiale/shexian/pc/TelByRepairType.vue +111 -111
  804. package/src/filiale/shexian/pc/WorkList.vue +764 -740
  805. package/src/filiale/shexian/pc/WorkListAllNew.vue +718 -712
  806. package/src/filiale/shexian/telephone.js +18 -18
  807. package/src/filiale/shexian/telephoneAndroid.js +32 -29
  808. package/src/filiale/shimen/pc/ChangemeterInfo.vue +108 -108
  809. package/src/filiale/shimen/pc/ComplainWork.vue +297 -297
  810. package/src/filiale/shimen/pc/DistributeWork.vue +173 -173
  811. package/src/filiale/shimen/pc/InfoTable.vue +122 -122
  812. package/src/filiale/shimen/pc/RepairList.vue +109 -109
  813. package/src/filiale/shimen/pc/RepairsWork.vue +803 -803
  814. package/src/filiale/shimen/pc/Seekwork.vue +307 -307
  815. package/src/filiale/shimen/pc/SellInfo.vue +87 -87
  816. package/src/filiale/shimen/pc/WorkListAllNew.vue +680 -680
  817. package/src/filiale/shimen/telephone.js +23 -23
  818. package/src/filiale/tianke/android/FaultAll.vue +854 -854
  819. package/src/filiale/tianke/android/RepairFirstV.vue +614 -614
  820. package/src/filiale/tianke/android.js +12 -12
  821. package/src/filiale/tianke/pc/DistributeWork.vue +180 -180
  822. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +801 -801
  823. package/src/filiale/tianke/pc/NewRepairPaper.vue +370 -370
  824. package/src/filiale/tianke/pc/RepairsWork.vue +794 -794
  825. package/src/filiale/tianke/pc/WorkList.vue +769 -769
  826. package/src/filiale/tianke/telephone.js +17 -17
  827. package/src/filiale/tianke/telephoneAndroid.js +13 -13
  828. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +321 -321
  829. package/src/filiale/tongchuan/android/CompletedRepair.vue +211 -211
  830. package/src/filiale/tongchuan/android/PhoneStandWork.vue +409 -409
  831. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +1005 -1005
  832. package/src/filiale/tongchuan/android/RepairFirstV.vue +646 -646
  833. package/src/filiale/tongchuan/android/RepairInfo.vue +172 -172
  834. package/src/filiale/tongchuan/android/RepairOrderV.vue +1446 -1446
  835. package/src/filiale/tongchuan/android/TicketDetails.vue +411 -408
  836. package/src/filiale/tongchuan/pc/AnalysisMain.vue +355 -355
  837. package/src/filiale/tongchuan/pc/CallRecords.vue +96 -96
  838. package/src/filiale/tongchuan/pc/CheckWork.vue +289 -289
  839. package/src/filiale/tongchuan/pc/ComplainWork.vue +324 -324
  840. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +148 -148
  841. package/src/filiale/tongchuan/pc/DistributeWork.vue +179 -179
  842. package/src/filiale/tongchuan/pc/ExportExcel.vue +204 -204
  843. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +115 -115
  844. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +236 -236
  845. package/src/filiale/tongchuan/pc/RecordListLeft.vue +216 -216
  846. package/src/filiale/tongchuan/pc/RepairList.vue +102 -102
  847. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +133 -133
  848. package/src/filiale/tongchuan/pc/RepairsWork.vue +836 -836
  849. package/src/filiale/tongchuan/pc/SeatInfo.vue +325 -325
  850. package/src/filiale/tongchuan/pc/Seekwork.vue +307 -307
  851. package/src/filiale/tongchuan/pc/ServiceDetails.vue +112 -112
  852. package/src/filiale/tongchuan/pc/StateStatistics.vue +292 -292
  853. package/src/filiale/tongchuan/pc/TelFindUser.vue +278 -278
  854. package/src/filiale/tongchuan/pc/TelMan.vue +142 -142
  855. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +102 -102
  856. package/src/filiale/tongchuan/pc/TelephoneType.vue +272 -272
  857. package/src/filiale/tongchuan/pc/Traffic.vue +103 -103
  858. package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
  859. package/src/filiale/tongchuan/pc/VisitInfo.vue +305 -305
  860. package/src/filiale/tongchuan/pc/VisitListWork.vue +251 -251
  861. package/src/filiale/tongchuan/pc/VoiceServer.vue +218 -218
  862. package/src/filiale/tongchuan/pc/WorkCenterList.vue +297 -297
  863. package/src/filiale/tongchuan/pc/WorkHistory.vue +521 -521
  864. package/src/filiale/tongchuan/pc/WorkList.vue +811 -811
  865. package/src/filiale/tongchuan/pc/WorkListAll.vue +731 -731
  866. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +294 -294
  867. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +376 -376
  868. package/src/filiale/tongchuan/pc/visitPlanList.vue +342 -342
  869. package/src/filiale/tongchuan/pc/visitPlanManage.vue +599 -599
  870. package/src/filiale/tongchuan/pc/visitServiceList.vue +285 -285
  871. package/src/filiale/tongchuan/telephone.js +52 -52
  872. package/src/filiale/tongchuan/telephoneAndroid.js +22 -22
  873. package/src/filiale/v3new/android/FaultAll.vue +809 -809
  874. package/src/filiale/v3new/android/RepairFirstV.vue +633 -633
  875. package/src/filiale/v3new/pc/SiteBack.vue +83 -83
  876. package/src/filiale/v3new/pc/WorkCenter.vue +104 -104
  877. package/src/filiale/v3new/pc/WorkCenterList.vue +274 -274
  878. package/src/filiale/v3new/pc/WorkHistory.vue +537 -537
  879. package/src/filiale/v3new/pc/WorkList.vue +766 -766
  880. package/src/filiale/v3new/pc/WorkListNew.vue +706 -706
  881. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +51 -51
  882. package/src/filiale/v3new/telephone.js +19 -19
  883. package/src/filiale/v3new/telephoneAndroid.js +15 -15
  884. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +586 -586
  885. package/src/filiale/weinanct/android/FaultAll.vue +854 -854
  886. package/src/filiale/weinanct/android/RepairDetails.vue +508 -508
  887. package/src/filiale/weinanct/android/RepairFirstV.vue +635 -635
  888. package/src/filiale/weinanct/android/RepairOrderV.vue +1443 -1443
  889. package/src/filiale/weinanct/pc/TelFindUser.vue +213 -213
  890. package/src/filiale/weinanct/pc/VoiceServer.vue +208 -208
  891. package/src/filiale/weinanct/telephone.js +14 -14
  892. package/src/filiale/weinanct/telephoneAndroid.js +20 -20
  893. package/src/filiale/weinanct//350/257/264/346/230/216.txt +1 -1
  894. package/src/filiale/wenxi/android/RepairFirstV.vue +537 -537
  895. package/src/filiale/wenxi/android/RepairInfo.vue +254 -168
  896. package/src/filiale/wenxi/android/RepairOrderV.vue +1419 -1419
  897. package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -0
  898. package/src/filiale/wenxi/pc/DistributeWork.vue +163 -177
  899. package/src/filiale/wenxi/pc/FailureEdit.vue +206 -206
  900. package/src/filiale/wenxi/pc/GasWork.vue +753 -0
  901. package/src/filiale/wenxi/pc/RepairsWork.vue +774 -759
  902. package/src/filiale/wenxi/pc/TelFindUser.vue +306 -209
  903. package/src/filiale/wenxi/pc/VoiceServer.vue +214 -214
  904. package/src/filiale/wenxi/pc/WorkListAll.vue +650 -647
  905. package/src/filiale/wenxi/telephone.js +16 -18
  906. package/src/filiale/wenxi/telephoneAndroid.js +17 -16
  907. package/src/filiale/wuan/Util.js +461 -461
  908. package/src/filiale/wuan/android/AddMyTask.vue +227 -227
  909. package/src/filiale/wuan/android/RepairInfo.vue +136 -136
  910. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  911. package/src/filiale/wuan/android/RepairUserInfo.vue +581 -581
  912. package/src/filiale/wuan/pc/BatchList.vue +329 -329
  913. package/src/filiale/wuan/pc/BatchListSanhu.vue +329 -329
  914. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +115 -115
  915. package/src/filiale/wuan/pc/CheckWork.vue +263 -263
  916. package/src/filiale/wuan/pc/DistributeWork.vue +136 -136
  917. package/src/filiale/wuan/pc/FailureEdit.vue +174 -174
  918. package/src/filiale/wuan/pc/GasWorkSanhu.vue +817 -817
  919. package/src/filiale/wuan/pc/RepairsWork.vue +848 -848
  920. package/src/filiale/wuan/pc/Seekwork.vue +311 -311
  921. package/src/filiale/wuan/pc/TelFindUser.vue +229 -229
  922. package/src/filiale/wuan/pc/WorkListAll.vue +642 -642
  923. package/src/filiale/wuan/telephone.js +23 -23
  924. package/src/filiale/wuan/telephoneAndroid.js +17 -17
  925. package/src/filiale/wuhai/pc/CallRcords.vue +109 -109
  926. package/src/filiale/wuhai/pc/ComplainWork.vue +324 -324
  927. package/src/filiale/wuhai/pc/Console.vue +432 -432
  928. package/src/filiale/wuhai/pc/DistributeWork.vue +173 -173
  929. package/src/filiale/wuhai/pc/FailureEdit.vue +190 -190
  930. package/src/filiale/wuhai/pc/InfoTable.vue +135 -135
  931. package/src/filiale/wuhai/pc/NewRepairPaper.vue +380 -380
  932. package/src/filiale/wuhai/pc/RecordListLeft.vue +202 -202
  933. package/src/filiale/wuhai/pc/RepairsWork.vue +811 -811
  934. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +92 -92
  935. package/src/filiale/wuhai/pc/Seekwork.vue +361 -361
  936. package/src/filiale/wuhai/pc/ServiceRcords.vue +146 -146
  937. package/src/filiale/wuhai/pc/TelFindUser.vue +256 -256
  938. package/src/filiale/wuhai/pc/VoiceServer.vue +211 -211
  939. package/src/filiale/wuhai/pc/WorkCenter.vue +104 -104
  940. package/src/filiale/wuhai/pc/WorkCenterList.vue +337 -337
  941. package/src/filiale/wuhai/pc/WorkListAllNew.vue +715 -715
  942. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +54 -54
  943. package/src/filiale/wuhai/telephone.js +35 -35
  944. package/src/filiale/xinkang/android/FaultAll.vue +840 -840
  945. package/src/filiale/xinkang/android/RepairFirstV.vue +484 -484
  946. package/src/filiale/xinkang/telephoneAndroid.js +14 -14
  947. package/src/filiale/yuansheng/android/RepairFirstV.vue +636 -636
  948. package/src/filiale/yuansheng/android/RepairInfo.vue +166 -166
  949. package/src/filiale/yuansheng/pc/DistributeWork.vue +177 -177
  950. package/src/filiale/yuansheng/pc/FailureEdit.vue +188 -188
  951. package/src/filiale/yuansheng/pc/HandplanInfo.vue +78 -78
  952. package/src/filiale/yuansheng/pc/MetereadInfo.vue +83 -83
  953. package/src/filiale/yuansheng/pc/ReservationWork.vue +156 -156
  954. package/src/filiale/yuansheng/pc/TelFindUser.vue +237 -237
  955. package/src/filiale/yuansheng/pc/VoiceServer.vue +208 -208
  956. package/src/filiale/yuansheng/telephone.js +20 -20
  957. package/src/filiale/yuansheng/telephoneAndroid.js +16 -16
  958. package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -0
  959. package/src/filiale/yuncheng/telephone.js +12 -0
  960. package/src/filiale/zhongsheng/android/FailureShow.vue +61 -61
  961. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -0
  962. package/src/filiale/zhongsheng/android/RepairFirstV.vue +464 -464
  963. package/src/filiale/zhongsheng/android/RepairInfo.vue +133 -133
  964. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  965. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +559 -532
  966. package/src/filiale/zhongsheng/pc/ComplainWork.vue +299 -299
  967. package/src/filiale/zhongsheng/pc/Console.vue +432 -432
  968. package/src/filiale/zhongsheng/pc/DistributeWork.vue +173 -173
  969. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +836 -836
  970. package/src/filiale/zhongsheng/pc/InfoTable.vue +124 -124
  971. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  972. package/src/filiale/zhongsheng/pc/Seekwork.vue +283 -283
  973. package/src/filiale/zhongsheng/pc/TelFindUser.vue +216 -216
  974. package/src/filiale/zhongsheng/pc/WorkList.vue +805 -805
  975. package/src/filiale/zhongsheng/pc/WorkListAll.vue +628 -628
  976. package/src/filiale/zhongsheng/telephone.js +23 -23
  977. package/src/filiale/zhongsheng/telephoneAndroid.js +19 -18
  978. package/src/filiale/zhongyi/android/FaultAll.vue +854 -854
  979. package/src/filiale/zhongyi/android/RepairFirstV.vue +614 -614
  980. package/src/filiale/zhongyi/android.js +12 -12
  981. package/src/filiale/zhongyi/pc/DistributeWork.vue +180 -180
  982. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +801 -801
  983. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +370 -370
  984. package/src/filiale/zhongyi/pc/RepairsWork.vue +794 -794
  985. package/src/filiale/zhongyi/pc/WorkList.vue +769 -769
  986. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +672 -672
  987. package/src/filiale/zhongyi/telephone.js +18 -18
  988. package/src/filiale/zhongyi/telephoneAndroid.js +13 -13
  989. package/src/filiale/zhoukou/android/ChargeBill.vue +201 -201
  990. package/src/filiale/zhoukou/android/FaultAll.vue +779 -779
  991. package/src/filiale/zhoukou/android/Othercharge.vue +591 -591
  992. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +574 -574
  993. package/src/filiale/zhoukou/android/Outlay.vue +236 -236
  994. package/src/filiale/zhoukou/android/RepairDetails.vue +544 -544
  995. package/src/filiale/zhoukou/android/RepairFirstV.vue +542 -542
  996. package/src/filiale/zhoukou/android/RepairInfo.vue +136 -136
  997. package/src/filiale/zhoukou/android/RepairOrderV.vue +1383 -1383
  998. package/src/filiale/zhoukou/android/RepairUserInfo.vue +532 -532
  999. package/src/filiale/zhoukou/android/ZkBill.vue +191 -191
  1000. package/src/filiale/zhoukou/android/createQRcode.vue +256 -256
  1001. package/src/filiale/zhoukou/android/onlineBuyGas.vue +804 -804
  1002. package/src/filiale/zhoukou/android/onlineoperation.vue +416 -416
  1003. package/src/filiale/zhoukou/android/onlinequeryuser.vue +468 -468
  1004. package/src/filiale/zhoukou/pc/ExportExcel.vue +204 -204
  1005. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +366 -366
  1006. package/src/filiale/zhoukou/pc/SiteSend.vue +265 -265
  1007. package/src/filiale/zhoukou/pc/WorkHistory.vue +514 -514
  1008. package/src/filiale/zhoukou/pc/WorkList.vue +653 -653
  1009. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +675 -675
  1010. package/src/filiale/zhoukou/telephone.js +18 -18
  1011. package/src/filiale/zhoukou/telephoneAndroid.js +33 -33
  1012. package/src/index.js +15 -15
  1013. package/src/main.js +22 -22
  1014. package/src/plugins/DataSql.js +569 -569
  1015. package/src/plugins/EmojiData.js +514 -514
  1016. package/src/plugins/EncryptUtil.js +53 -53
  1017. package/src/plugins/HttpLoad.js +93 -93
  1018. package/src/plugins/LoadData.js +40 -40
  1019. package/src/plugins/LoadParams.js +54 -54
  1020. package/src/plugins/LocalPagedList.js +107 -107
  1021. package/src/plugins/ObjTree.js +532 -532
  1022. package/src/plugins/TelGetSaleParams.js +63 -63
  1023. package/src/qrcode.js +618 -618
  1024. package/src/qrcode.min.js +1 -1
  1025. package/src/stores/exportConfig.js +10 -10
  1026. package/src/stores/wxconfig.js +10 -10
  1027. package/src/telephone-android.js +367 -367
  1028. package/src/telephone-shaoguan.js +256 -256
  1029. package/src/telephone-tongcheng.js +254 -254
  1030. package/src/telephone.js +746 -733
  1031. package/src/telephoneanaly.less +704 -704
  1032. package/src/utils/LdapHelper.js +99 -99
  1033. package/src/weinan-android.js +350 -350
  1034. package/src/weinan.js +537 -531
  1035. package/static/fonts/font.css +6 -6
  1036. package/static/js/adapter.min.js +2049 -2049
  1037. package/static/js/bootstrap.min.js +7 -7
  1038. package/static/js/ctilink.js +1303 -1303
  1039. package/static/js/ctimsg.js +655 -655
  1040. package/static/js/janus.js +4034 -4034
  1041. package/static/js/jquery-2.1.1.min.js +5 -5
  1042. package/yarn-error.log +7872 -7872
  1043. package//345/221/274/345/217/253/345/267/245/345/215/225/351/205/215/347/275/256/350/257/264/346/230/216.md +6 -6
@@ -1,849 +1,849 @@
1
- <template>
2
- <div class="flex" style="background: #EDF2F9;border: 1px solid #B4BCCC;">
3
- <div class="span text-server">
4
- <div class='flex-row' id="text-service">
5
- <!-- Nav tabs -->
6
- <ul class="nav nav-tabs" role="tablist" style="overflow: auto;width: 7%">
7
- <li :id="'vc-tabset-li-text-service'+'-'+$index" v-for="user in users"
8
- v-bind:class="{'active': ($index === active), 'offline': !user.lineState}"
9
- @click.prevent="handleTabListClick($index, user)" :disabled="r.disabled">
10
- <a href="javascript:void(0)">
11
- {{user.name === "" ? '未' : user.name[0]}}
12
- <span class="badge">{{user.unreadNum === 0 ? '' : user.unreadNum}}</span>
13
- <span class="glyphicon glyphicon-remove" @click.stop="deleteUser($index, user)"></span>
14
- </a>
15
-
16
- </li>
17
- </ul>
18
- <!-- Tab panes -->
19
- <div class="flex" style="width: 90%">
20
- <div class="tab-content span" v-el:tab-content style="flex: 1;overflow: scroll" style="height: 100px;" v-el:msgs
21
- @scroll="scroll">
22
- <div role="tabpanel" v-show="$index === active" :transition="transition" v-for="user in users"
23
- style="padding: 10px;">
24
- <chat-msg :msgs="user.msgs"></chat-msg>
25
- </div>
26
- </div>
27
-
28
- <!-- 消息发送区域 -->
29
- <div class="send-msg">
30
- <div contentEditable="true" name="name" class="text-editor"
31
- style="max-width: 100%;word-wrap:break-word"
32
- @input="contentChanged" @keydown="handleKeys"
33
- @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" v-el:content>
34
- </div>
35
-
36
- <!-- <textarea contentEditable="true" name="name" rows="8" cols="80" style="resize: none; padding: 8px;flex: 1;background: #FFF;" v-model="content"
37
- @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" @keyup.enter.stop="send('text')" v-el:content></textarea> -->
38
- <div style="padding: 5px;height: auto;position: relative;">
39
- <div style="display: inline-block;">
40
- <img :src="'static/wechat/ziyuan.png'" alt="选择素材" v-if="this.typeuser!=='webUser'"
41
- style="height: 20px;cursor: pointer;" @click="selectMater()">
42
- <!-- 选择小表情 -->
43
- <emoji @select-emoji="contentAddIcon"></emoji>
44
- </div>
45
- <!-- <button type="button" name="button" class="btn btn-primary" >选择资源</button> -->
46
- <button type="button" name="button" class="btn btn-primary btn-xs" @click="send('text')"
47
- style="float: right;">发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;送
48
- </button>
49
- </div>
50
- </div>
51
-
52
- </div>
53
- </div>
54
-
55
- </div>
56
- <div id="mediaPane" style="display:flex; flex-direction: column; background-color:white; position: fixed; z-index: 9999; left:0px; right:0px; top: 0px; bottom:0px; padding-bottom: 30px;" v-show="show">
57
- <div style="height:auto; background-color:grey;">
58
- <button type="button" style="position:absolute; right: 10px; top:20px;" @click="close"><span>关闭</span></button>
59
- <h4 class="modal-title">选择发送素材</h4>
60
- <div style="position:fixed; bottom:0px; width: 300px; z-index:9999; height:auto;">
61
- <button type="button" style="margin: 0 auto; display:block; width: 100px;" @click='sendMater()'>发送</button>
62
- </div>
63
- </div>
64
- <div style="flex: 1; overflow: auto;">
65
- <materials use-type="use" v-ref:material>
66
- </materials>
67
- </div>
68
- </div>
69
- </div>
70
- </template>
71
-
72
- <script>
73
- import * as Util from '../Util'
74
- import co from 'co'
75
- import {HttpResetClass} from 'vue-client'
76
- import data from '../../stores/wxconfig'
77
- import * as emoji from '../../plugins/EmojiData'
78
- import Vue from "vue";
79
- let msgGen = function* (self) {
80
- try {
81
- // 话务员才去登录,维修员不登录
82
- if (!self.isRepairman) {
83
- console.log('开始登陆')
84
- // 话务员登陆
85
- let http = new HttpResetClass()
86
- let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
87
- aId: self.dualId,
88
- aBzType: "login",
89
- aName:self.dualName,
90
- }, {resolveMsg: null, rejectMsg: null})
91
-
92
- console.log('登陆返回的信息:', loginMsg)
93
- if (loginMsg.data.code !== 200) {
94
- self.$showAlert('登陆失败', 'danger', 0)
95
- return
96
- }
97
- }
98
- // 轮询获取消息
99
- self.getUerMsg()
100
- } catch (e) {
101
- // self.$showAlert(`登陆失败:${JSON.stringify(e)}`, 'danger', 0)
102
- console.log('登陆失败,请重试')
103
- }
104
-
105
- }
106
-
107
- let outGen = function* (self) {
108
- //维修员,不存在登出
109
- if (self.isRepairman)
110
- return
111
- // 话务员登出
112
- let http = new HttpResetClass()
113
-
114
- let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
115
- aId: self.dualId,
116
- aBzType: "logout",
117
- aName:self.dualName,
118
- }, {resolveMsg: null, rejectMsg: null})
119
- console.log('登出返回的信息:', loginMsg)
120
- if (loginMsg.data.code !== 200) {
121
- self.$showAlert('登陆失败')
122
- return
123
- }
124
- }
125
-
126
- export default {
127
- title: '文字客服',
128
- data() {
129
- return {
130
- webId: '',
131
- content: '',
132
- interval: '',
133
- fengongsi:'',
134
- gh_id:'',
135
- users: [
136
- ], // 接入用户
137
- show: false, // 选择素材
138
- // msgs: [],
139
- isTop: true, // 是否滚动到顶部
140
- dualId: null,
141
- dualRole: null,
142
- dualName: null,
143
- }
144
- },
145
- props: {
146
- active: {
147
- type: Number,
148
- default: 0
149
- },
150
- isRepairman: {
151
- default: false
152
- },
153
- typeuser: {
154
- type: String,
155
- default: 'webUser'
156
- }
157
- },
158
-
159
- ready() {
160
- this.fengongsi=this.$appdata.getSingleValue("分公司")
161
- this.gh_id=this.$appdata.getSingleValue("公众号ID")
162
- console.log(this.fengongsi)
163
- console.log(this.gh_id)
164
- console.log('当前是否是维修员:' + this.isRepairman)
165
- if (this.typeuser === 'webUser') {
166
- this.webId = '________________' + Util.randnum()
167
- console.log(this.webId)
168
- }
169
- if (this.isRepairman) {
170
- this.dualId = this.$login.f.name
171
- this.dualName = this.$login.f.name
172
- this.dualRole = 'repairman'
173
- } else {
174
- console.log('当前坐席:' + this.$login.f.id)
175
- this.dualId = this.$login.f.id
176
- this.dualName = this.$login.f.name
177
- this.dualRole = null
178
- }
179
-
180
- let gen = msgGen(this)
181
- co(gen)
182
- // document.getElementById("myDIV").addEventListener("wheel", myFunction);
183
-
184
- console.log('监听元素', this.$els.msgs + ':::::' + this.$androidUtil.getProxyUrl())
185
-
186
- this.$els.msgs.addEventListener("wheel", this.wheelUp)
187
- // 为Android滑动触屏添加事件
188
- this.$els.msgs.addEventListener("touchstart", this.touchStart)
189
- this.$els.msgs.addEventListener("touchend", this.touchEnd)
190
- },
191
- methods: {
192
- sendMessage(user, index) {
193
- user = {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name}
194
- console.log(user)
195
- this.active = index
196
- this.$dispatch('user', user)
197
- },
198
- getUerMsg() {
199
- let that = this
200
- let http = new HttpResetClass()
201
- console.log('轮询取消息')
202
- this.interval = setInterval(() => {
203
- let params = this.typeuser === 'webUser' ? {openId: this.webId, aBzType: "nvl"} : {
204
- aId: this.dualId,
205
- aBzType: "nvl",
206
- role: this.dualRole,
207
- aName:this.dualName,
208
- }
209
- //load(method,url,data)
210
- console.log(JSON.stringify(params))
211
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, params, {
212
- resolveMsg: null,
213
- rejectMsg: null
214
- }).then((res) => {
215
-
216
- if (typeof res.data === 'string') {
217
- window.alert(res.data)
218
- // res.data = res.data.replace('"sessionId":', '"sessionId":"')
219
- // res.data = res.data.replace(', "msgType"', '", "msgType"')
220
- res.data = res.data.replace(/}/g,'},')
221
- res.data = res.data.replace(',]},',']}')
222
- res.data = res.data.replace('},]','}]')
223
- console.log(res.data)
224
- res.data = JSON.parse(res.data)
225
- }
226
- if (res.data.code === 200) {
227
- // 有用户离线处理
228
- if (res.data.kickedOffList && res.data.kickedOffList.length > 0) {
229
- res.data.kickedOffList.forEach((openId) => {
230
- that.turnOff(openId)
231
- })
232
- }
233
- if (res.data.msgs.length > 0) { // 有新消息
234
- // 将新消息放入到对应用户的消息中
235
- console.log('参数拿一下' + res.data.msgs[0].openId.substring(0, 2))
236
- //如果有aId说明是坐席接收消息。如果接收到的是web端发来的消息则显示web用户openid
237
- if (params.aId && res.data.msgs[0].name === '' && res.data.msgs[0].openId.substring(0, 2) === '__') {
238
- res.data.msgs[0].name = 'web客户' + res.data.msgs[0].openId.substring(15)
239
- }
240
- //如果有openid则说明是web接收消息
241
- if (params.openId) {
242
- res.data.msgs[0].name = '客服'
243
- }
244
-
245
- that.addMsg(res.data.msgs)
246
- if("text-server"!=Vue.routes.main.selecttab){
247
- this.$showAlert("您有新的客服消息,请注意查看",'success',1000)
248
- }
249
- }
250
- // 处理维修员带过来的所有用户
251
- if (res.data.bondedUsers && res.data.bondedUsers.length > 0) {
252
- that.addBondedWeUsers(res.data.bondedUsers)
253
- }
254
- }
255
- if (res.data.code === 509) {
256
- this.$showAlert('请重新登陆', 'danger', 0)
257
- }
258
- }).catch((err) => {
259
- console.log('提取数据出错', JSON.stringify(err))
260
- })
261
- }, 1000)
262
- },
263
- addBondedWeUsers(weusers) {
264
- let that = this
265
- weusers.forEach((wu) => {
266
- // 查找用户
267
- let index = that.users.findIndex((user, index, arr) => {
268
- return user.openId === wu.f_open_id
269
- })
270
- // 找到
271
- if (index && index !== -1 || index === 0) {
272
- // do nothing
273
- } else {
274
- if (that.users.length === 0) { // 如果是添加的第一户
275
-
276
- that.users.push({
277
- name: wu.f_user_name,
278
- userId: wu.f_user_name,
279
- openId: wu.f_open_id,
280
- gh_id:wu.gh_id,
281
- msgs: [],
282
- unreadNum: 0,
283
- lineState: true
284
- })
285
- this.$dispatch('user', {openId: wu.f_open_id, gh_id:wu.gh_id,userId: wu.f_user_name, name: wu.f_user_name})
286
- } else {
287
- that.users.push({
288
- name: wu.f_user_name,
289
- userId: wu.f_user_name,
290
- openId: wu.f_open_id,
291
- gh_id:wu.gh_id,
292
- msgs: [],
293
- unreadNum: 0,
294
- lineState: true
295
- })
296
- }
297
- }
298
- })
299
- },
300
- addMsg(msgs) {
301
- let that = this
302
- msgs.forEach((msg) => {
303
- let index = that.users.findIndex((user, index, arr) => {
304
- return user.openId === msg.openId
305
- })
306
- if (!msg.aBzType) { // 收到的消息
307
- if (msg.msgType === 'image' || msg.msgType === 'video' || msg.msgType === 'voice') { // 有素材
308
- msg.src = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.media}`
309
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.thumbnail}`
310
- }
311
- }
312
- if (index && index !== -1 || index === 0) { // 返回的有index,说明有这个用户
313
- // 往用户消息里面push消息时,判断当前激活是否是当前用户,不是,要有新消息提示
314
- that.users[index].msgs.push(msg)
315
- that.users[index].lineState = true // 将用户改为上线
316
- if (that.active !== index) { // 如果当前激活不是该用户,添加消息后,将未读消息加 1
317
- this.users[index].unreadNum += 1
318
- }
319
- } else { // 没有则添加到用户列表中
320
- if (that.users.length === 0) { // 如果是添加的第一户
321
- that.users.push({
322
- name: msg.name,
323
- userId: msg.userId,
324
- openId: msg.openId,
325
- gh_id:msg.gh_id,
326
- msgs: [msg],
327
- unreadNum: 0,
328
- lineState: true
329
- })
330
- this.$dispatch('user', {openId: msg.openId, gh_id:msg.gh_id,userId: msg.userId, name: msg.name})
331
- } else {
332
- that.users.push({
333
- name: msg.name,
334
- userId: msg.userId,
335
- openId: msg.openId,
336
- gh_id:msg.gh_id,
337
- msgs: [msg],
338
- unreadNum: 1,
339
- lineState: true
340
- })
341
- }
342
- }
343
- // that.msgs = that.users[0].msgs
344
- })
345
- // 有消息加入后滚动到最底部
346
- this.scrollBottom()
347
- },
348
- enter(ev) {
349
- ev.preventDefault()
350
- ev.stopPropagation()
351
- },
352
- allowDrop(ev) {
353
- // ev.preventDefault()
354
- ev.preventDefault()
355
- ev.stopPropagation()
356
- ev.dataTransfer.dropEffect = 'copy'
357
- },
358
-
359
- drop(ev) {
360
- ev.preventDefault()
361
- // 接收得信息包括图片信息,音频信息,文字信息
362
- let files = ev.dataTransfer.files
363
- // 循环遍历所有文件
364
- if (files.length > 0) { // 如果有文件,取出文件传送文件
365
- for (var i = 0; i < files.length; i++) {
366
- let type = ''
367
- // 判断是不是图片信息
368
- if (/image\/\w+/.test(files[i].type)) {
369
- type = 'image'
370
- // if(file.size / 1024 / 1024 > 2) {
371
- // that.$showAlert('上传图片不能大于2M,请处理后再选择', 'warning', 3000)
372
- // return
373
- // }
374
-
375
- } else if (/video\/|ogg$|mp4$/.test(files[i].type)) { // 判断是不是音频信息
376
- type = 'video'
377
- }
378
- this.send(type)
379
- // files[i]
380
- }
381
- } else { // 文字信息
382
- let data = ev.dataTransfer.getData("Text")
383
- this.content += data
384
- this.$els.content.innerHTML = this.$els.content.innerHTML + data
385
- }
386
-
387
- },
388
- // 选择素材
389
- selectMater() {
390
- this.show = true
391
- },
392
- close() {
393
- this.$refs.material.clearRows()
394
- this.show = false
395
- },
396
- // 发送选择资源
397
- sendMater() {
398
- this.$refs.material.rows.forEach((row) => {
399
- this.send(row.f_file_type, row)
400
- })
401
- this.close()
402
- },
403
- // 发送信息,将内容区域得内容发送出去,图片和文字,拖拽进来后直接发送,不用点击发送按钮
404
- send(type, content) {
405
- console.log('发送类型', type, this.typeuser)
406
-
407
- if (this.typeuser !== 'webUser' && !this.users[this.active]) {
408
- this.$showAlert('当前无通话用户,不能发送消息', 'warning', 2000)
409
- return
410
- }
411
- if (content) {
412
- this.content = content
413
- }
414
- // 如果用户离线,不能发送消息
415
- if (this.typeuser !== 'webUser' && !this.users[this.active].lineState) {
416
- this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
417
- return
418
- }
419
- let msg = {
420
- openId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].openId,
421
- gh_id: this.typeuser === 'webUser' ? this.webId : this.users[this.active].gh_id,
422
- userId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].userId,
423
- aBzType: 'send',
424
- aName:this.dualName,
425
- branch:this.fengongsi,
426
- //gh_id:this.gh_id,
427
- name: this.typeuser === 'webUser' ? 'web客户' + this.webId.substring(15) : this.$login.f.name,
428
- date: Util.toStandardTimeString().split(' ')[0].substring(2, Util.toStandardTimeString().split(' ')[0].length),
429
- time: Util.toStandardTimeString().split(' ')[1],
430
- }
431
- // web端没有aId
432
- if (this.typeuser !== 'webUser') {
433
- msg.aId = this.dualId
434
- msg.role = this.dualRole
435
- }
436
- if (this.typeuser === 'webUser') {
437
- msg.openId = this.webId
438
- }
439
- if (type === 'text') {
440
- if (!(this.content && this.content.length > 0)) {
441
- console.log('发送的内容不能为空');
442
- return
443
- }
444
- msg.msgType = 'text'
445
- msg.content = this.content
446
- } else if (type === 'image') { // 图片消息
447
- msg.msgType = 'image'
448
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
449
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
450
- msg.content = content.f_mediaid
451
- } else if (type === 'video') { // 视频消息
452
- msg.msgType = 'video'
453
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
454
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
455
- msg.content = content.f_mediaid
456
- }
457
- console.log('发送的消息体为', msg)
458
- // 此处将消息发送服务一份,然后添加到自己界面
459
- let that = this
460
- let http = new HttpResetClass()
461
- let url = `${this.$androidUtil.getProxyUrl()}/TDual`
462
- http.load('POST', url, msg, {resolveMsg: null, rejectMsg: null}).then((res) => {
463
- console.log('发消息返回的消息', res)
464
- if (res.data.code === 200 && !res.data.msg) {
465
-
466
- }
467
- else if(res.data.code === 500){
468
- this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
469
-
470
- }
471
- //else if (res.data.code === 200&&res.data.msg!==''){
472
- // this.$showAlert(',暂时无法服务,请拨打96677咨询人工客服', 'warning', 2000)
473
- //}
474
- })
475
- // openId: 微信用户openId
476
- // msgType: 消息类别
477
- // content:消息内容,只针对text消息
478
- // name: 燃气用户姓名
479
- // userId: 燃气用户id
480
- // time: 消息时间
481
- // date: 消息年月日
482
- // media: 除text消息外的文件名
483
- // thumbnail: media对应的缩略图或转换文件
484
- // {"aId":"001", "aBzType":"send", "msgType":"text", "content":"huawuyuangeinidexiaoxi", "openId": "oL5ch0q8MjNEuLcsQw4CsImDkEdA"}
485
- this.addMsg([msg])
486
- // 消息发送出后,清空输入框
487
- this.content = ''
488
- // 清空显示
489
- this.$els.content.innerHTML = ''
490
- this.$els.content.focus()
491
- // 消息发出后滚动到最底部
492
- // this.scrollBottom()
493
- },
494
- // 切换用户
495
- handleTabListClick(index, user) {
496
- this.active = index
497
- // 切换激活用户时,将未读消息设置为0
498
- this.users[index].unreadNum = 0
499
- // user = {openId: user.openId, userId: user.userId, name: user.name}
500
- console.log(user)
501
- this.active = index
502
- // 发送事件,切换用户时重新查询用户
503
- this.$dispatch('user', {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name})
504
- this.scrollBottom()
505
- },
506
- // 关闭用户对话框
507
- deleteUser(index, user) {
508
- // 话务员直接关闭
509
- if (this.isRepairman)
510
- return
511
- console.log('关闭用户对话框')
512
- if (!user.lineState) { // 如果用户已经离线,直接删除,发请求回报错,导致关闭不了
513
- this.users.splice(index, 1)
514
- return
515
- }
516
- let http = new HttpResetClass()
517
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, {
518
- aId: this.dualId,
519
- aBzType: "abort",
520
- aName:this.dualName,
521
- openId: user.openId,
522
- gh_id:user.gh_id,
523
- }, {resolveMsg: null, rejectMsg: null}).then((res) => {
524
- console.log('关闭用户对话框', res)
525
- this.users.splice(index, 1)
526
- })
527
- },
528
- // 滚动到文字信息底部
529
- scrollBottom() {
530
- this.$nextTick(() => {
531
- this.$els.msgs.scrollTop = this.$els.msgs.scrollHeight
532
-
533
- })
534
- },
535
- // 处理离线用户
536
- turnOff(openId) {
537
- let index = this.users.findIndex((user, index, arr) => {
538
- return user.openId === openId
539
- })
540
- this.users[index].lineState = false
541
- },
542
- // 当有滚动事件时,滚轮事件被屏蔽掉
543
- // 滚动事件
544
- scroll(e) {
545
- // console.log('滚动事件', e)
546
- if (e.target.scrollTop === 0) {
547
- this.isTop = true
548
- } else {
549
- this.isTop = false
550
- }
551
- },
552
- // 触屏滑动事件
553
- touchStart(e) { // 触屏开始位置
554
- this.start_Y = e.changedTouches[0].pageY
555
- },
556
- touchEnd(e) { // 滑动当前位置
557
- let end_Y = e.changedTouches[0].pageY
558
- if (end_Y - this.start_Y > 50) {
559
- // 下滑加载
560
- console.log('发生滑动时间:' + e)
561
- this.loadHistory(e)
562
- }
563
- },
564
- // 滚轮事件,为解决刚进来没有滚动时,加载历史记录
565
- wheelUp(e) {
566
- if (e.wheelDelta > 0) {
567
- console.log('发生滚轮时间:' + e)
568
- this.loadHistory(e)
569
- }
570
- },
571
- loadHistory(e) {
572
- if (this.isTop) { // 加载历史开始了
573
- if (this.users.length == 0 || !this.users[this.active].openId)
574
- return
575
- let dt = ''
576
- // 如果维修员想要查看历史消息,但是还没有聊天的情况下,
577
- if (this.users[this.active].msgs.length == 0)
578
- dt = Util.toStandardTimeString()
579
- else
580
- dt = `20${this.users[this.active].msgs[0].date} ${this.users[this.active].msgs[0].time}`
581
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/tel_getChatHistory`,
582
- {
583
- data: {
584
- f_dt: dt,
585
- f_open_id: this.users[this.active].openId
586
- }
587
- },
588
- {resolveMsg: null, rejectMsg: null}).then((res) => {
589
- console.log('加载到的数据是', res)
590
- if (res.data.length > 0) {
591
- let msgs = []
592
- res.data.forEach((item) => {
593
- if (item.f_msg_type !== 'system') {
594
- let msg = {
595
- content: item.f_content,
596
- date: item.f_dt.split(' ')[0].substring(2, item.f_dt.split(' ')[0].length),
597
- time: item.f_dt.split(' ')[1],
598
- media: "",
599
- msgType: item.f_msg_type,
600
- name: (item.f_msg_direction === '发送') ? (item.f_repairman ? item.f_repairman : null) : item.f_user_name,
601
- openId: item.f_open_id,
602
- gh_id:item.gh_id,
603
- sessionId: item.f_session_id,
604
- thumbnail: item.f_thumbnail,
605
- userId: item.f_user_id
606
- }
607
- if (item.f_msg_direction === '发送') {
608
- msg.aBzType = "send"
609
- msg.branch = this.fengongsi
610
- msg.gh_id=this.gh_id
611
- }
612
- if (item.f_msg_type === 'video' || item.f_msg_type === 'voice' || item.f_msg_type === 'image') {
613
- console.log('聊天历史消息:', JSON.stringify(item))
614
- if (item.f_msg_direction === '发送') { // 话务员发送的消息
615
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${item.f_file_name}`
616
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${item.thumbnail}`
617
- } else { // 用户发送的消息
618
- msg.src = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_content}`
619
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_thumbnail}`
620
- }
621
- }
622
- msgs.push(msg)
623
- }
624
- })
625
- console.log('组成消息组是', msgs)
626
- this.users[this.active].msgs.unshift(...msgs)
627
- } else { // 没有记录了
628
- this.$showAlert('没有记录了', 'warning', 1000)
629
- }
630
- })
631
- // console.log('向上滚')
632
- // console.log(e.target.scrollTop)
633
- } else {
634
- // console.log('向下滚')
635
- }
636
- },
637
- // 自文本内容中加入小图标
638
- contentAddIcon(key, emoji) {
639
- // 获取焦点,防止选择表情无法输入
640
- let el = this.$els.content
641
- el.focus() // 获取焦点
642
- // 将光标定位到文档最后
643
- let range = document.createRange();
644
- range.selectNodeContents(el);
645
- range.collapse(true);
646
- range.setEnd(el, el.childNodes.length);
647
- range.setStart(el, el.childNodes.length);
648
- let sel = window.getSelection();
649
- sel.removeAllRanges();
650
- sel.addRange(range);
651
- // 定位光标后
652
- this.content += key
653
- document.execCommand('insertImage', false, `static/wechat/${emoji}`)
654
- },
655
- // 按键事件
656
- handleKeys(event) {
657
- if (event.which === 9) event.preventDefault()
658
- if (event.which === 13 && event.ctrlKey) {
659
- event.preventDefault()
660
- this.send('text')
661
- }
662
- // if (event.which === 13 && event.ctrlKey){
663
- // this.content = this.$els.content.innerHTML
664
- // }
665
- // console.log('this.content---->', this.content)
666
- },
667
- // 内容发生变化
668
- contentChanged() {
669
- if (this.$els.content.innerHTML === '') {
670
- return
671
- }
672
- this.content = emoji.editorChange(this.$els.content.innerHTML)
673
- },
674
- // insertTextAtCursor () {
675
- // let sel
676
- // if (window.getSelection) {
677
- // sel = window.getSelection();
678
- // if (sel.getRangeAt && sel.rangeCount) {
679
- // range = sel.getRangeAt(0)
680
- // range.deleteContents()
681
- // }
682
- // }
683
- // }
684
- // insertTextAtCursor(text) {
685
- // var sel, range, html;
686
- // console.log('11111111111', window.getSelection())
687
- // if (window.getSelection) {
688
- // sel = window.getSelection();
689
- // if (sel.getRangeAt && sel.rangeCount) {
690
- // range = sel.getRangeAt(0);
691
- // range.deleteContents();
692
- // // range.insertNode( document.createTextNode(text) );
693
- // }
694
- // } else if (document.selection && document.selection.createRange) {
695
- // // document.selection.createRange().text = text;
696
- // }
697
- // },
698
- // saveSelection () {
699
- // if (window.getSelection) {
700
- // sel = window.getSelection()
701
- // if (sel.getRangeAt && sel.rangeCount) {
702
- // return sel.getRangeAt(0)
703
- // }
704
- // } else if (document.selection && document.selection.createRange) {
705
- // return document.selection.createRange()
706
- // }
707
- // return null
708
- // },
709
- // restoreSelection(range) {
710
- // if (range) {
711
- // if (window.getSelection) {
712
- // sel = window.getSelection()
713
- // sel.removeAllRanges()
714
- // sel.addRange(range)
715
- // } else if (document.selection && range.select) {
716
- // range.select()
717
- // }
718
- // }
719
- // }
720
- },
721
- beforeDestroy() {
722
- clearInterval(this.interval)
723
- let gen = outGen(this)
724
- co(gen)
725
- },
726
- computed:{
727
- reply() {
728
- return this.$appdata.getParam('快速回复')
729
- }
730
-
731
- },
732
- }
733
- </script>
734
- <style scoped>
735
- .text-editor {
736
- flex: 1;
737
- }
738
-
739
- div[contenteditable=true] {
740
- outline: none;
741
- border-top: 1px solid #DDD;
742
- overflow: auto;
743
- background: #FFF;
744
- padding: 5px 10px;
745
- }
746
-
747
- div[contenteditable=true] div {
748
- height: auto;
749
- }
750
-
751
- div[contenteditable=true] img {
752
- width: 25px;
753
- }
754
-
755
- .send-msg {
756
- /*position: relative;*/
757
- display: flex;
758
- height: 120px;
759
- flex-direction: column;
760
- }
761
-
762
- .send-msg > button {
763
- /*position: absolute;*/
764
- right: 20px;
765
- bottom: 5px;
766
- padding: 3px 20px;
767
- }
768
-
769
- /* 文字客服页签样式 */
770
- /* .text-server .flex {
771
- display: flex;
772
- flex-direction: row;
773
- } */
774
- .text-server .flex-row > ul {
775
- background: #009BDB;
776
- width: 60px;
777
-
778
- }
779
-
780
- .text-server .flex-row > ul > li {
781
- width: 100%;
782
- display: flex;
783
- justify-content: center;
784
- }
785
-
786
- .text-server .flex-row > ul > li > a {
787
- border-bottom: none;
788
- /* background: #FFF; */
789
- padding: 0px;
790
- margin-right: 0px;
791
- line-height: 40px;
792
- text-align: center;
793
- font-size: 1.2em;
794
- width: 40px;
795
- height: 40px;
796
- margin: 5px 0px;
797
- border-radius: 50%;
798
- }
799
-
800
- .text-server .flex-row > ul > li.active {
801
- background: rgba(255, 255, 255, 0.3);
802
- }
803
-
804
- .text-server ul > li > a > span {
805
- display: inherit;
806
- }
807
-
808
- /* 关闭按钮 badge glyphicon style="position: absolute;right: -5px;top: 0px;background: #F61003;" */
809
- #text-service > ul > li > a {
810
- position: relative;
811
- }
812
-
813
- #text-service > ul > li > a > .glyphicon {
814
- display: none;
815
- }
816
-
817
- #text-service > ul > li > a > .badge {
818
- /* display: initial; */
819
- position: absolute;
820
- right: -5px;
821
- top: 0px;
822
- background: #F61003;
823
- }
824
-
825
- #text-service > ul > li > a:hover > .glyphicon {
826
- display: initial;
827
- position: absolute;
828
- /* font-size: 13px; */
829
- background-color: rgb(255, 255, 255, 0.5);
830
- right: -5px;
831
- top: 0px;
832
- }
833
-
834
- /* 当鼠标悬停在游湖头像时,未读消息显示隐藏,关闭按钮显示 */
835
- #text-service > ul > li > a:hover > .badge {
836
- display: none;
837
- }
838
-
839
- #text-service > ul > li > a:hover > .glyphicon:hover {
840
- background-color: #F61003;
841
- color: #FFF;
842
- /* color: #5CBDED; */
843
- }
844
-
845
- .offline {
846
- background: #888 !important;
847
- }
848
-
849
- </style>
1
+ <template>
2
+ <div class="flex" style="background: #EDF2F9;border: 1px solid #B4BCCC;">
3
+ <div class="span text-server">
4
+ <div class='flex-row' id="text-service">
5
+ <!-- Nav tabs -->
6
+ <ul class="nav nav-tabs" role="tablist" style="overflow: auto;width: 7%">
7
+ <li :id="'vc-tabset-li-text-service'+'-'+$index" v-for="user in users"
8
+ v-bind:class="{'active': ($index === active), 'offline': !user.lineState}"
9
+ @click.prevent="handleTabListClick($index, user)" :disabled="r.disabled">
10
+ <a href="javascript:void(0)">
11
+ {{user.name === "" ? '未' : user.name[0]}}
12
+ <span class="badge">{{user.unreadNum === 0 ? '' : user.unreadNum}}</span>
13
+ <span class="glyphicon glyphicon-remove" @click.stop="deleteUser($index, user)"></span>
14
+ </a>
15
+
16
+ </li>
17
+ </ul>
18
+ <!-- Tab panes -->
19
+ <div class="flex" style="width: 90%">
20
+ <div class="tab-content span" v-el:tab-content style="flex: 1;overflow: scroll" style="height: 100px;" v-el:msgs
21
+ @scroll="scroll">
22
+ <div role="tabpanel" v-show="$index === active" :transition="transition" v-for="user in users"
23
+ style="padding: 10px;">
24
+ <chat-msg :msgs="user.msgs"></chat-msg>
25
+ </div>
26
+ </div>
27
+
28
+ <!-- 消息发送区域 -->
29
+ <div class="send-msg">
30
+ <div contentEditable="true" name="name" class="text-editor"
31
+ style="max-width: 100%;word-wrap:break-word"
32
+ @input="contentChanged" @keydown="handleKeys"
33
+ @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" v-el:content>
34
+ </div>
35
+
36
+ <!-- <textarea contentEditable="true" name="name" rows="8" cols="80" style="resize: none; padding: 8px;flex: 1;background: #FFF;" v-model="content"
37
+ @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" @keyup.enter.stop="send('text')" v-el:content></textarea> -->
38
+ <div style="padding: 5px;height: auto;position: relative;">
39
+ <div style="display: inline-block;">
40
+ <img :src="'static/wechat/ziyuan.png'" alt="选择素材" v-if="this.typeuser!=='webUser'"
41
+ style="height: 20px;cursor: pointer;" @click="selectMater()">
42
+ <!-- 选择小表情 -->
43
+ <emoji @select-emoji="contentAddIcon"></emoji>
44
+ </div>
45
+ <!-- <button type="button" name="button" class="btn btn-primary" >选择资源</button> -->
46
+ <button type="button" name="button" class="btn btn-primary btn-xs" @click="send('text')"
47
+ style="float: right;">发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;送
48
+ </button>
49
+ </div>
50
+ </div>
51
+
52
+ </div>
53
+ </div>
54
+
55
+ </div>
56
+ <div id="mediaPane" style="display:flex; flex-direction: column; background-color:white; position: fixed; z-index: 9999; left:0px; right:0px; top: 0px; bottom:0px; padding-bottom: 30px;" v-show="show">
57
+ <div style="height:auto; background-color:grey;">
58
+ <button type="button" style="position:absolute; right: 10px; top:20px;" @click="close"><span>关闭</span></button>
59
+ <h4 class="modal-title">选择发送素材</h4>
60
+ <div style="position:fixed; bottom:0px; width: 300px; z-index:9999; height:auto;">
61
+ <button type="button" style="margin: 0 auto; display:block; width: 100px;" @click='sendMater()'>发送</button>
62
+ </div>
63
+ </div>
64
+ <div style="flex: 1; overflow: auto;">
65
+ <materials use-type="use" v-ref:material>
66
+ </materials>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </template>
71
+
72
+ <script>
73
+ import * as Util from '../Util'
74
+ import co from 'co'
75
+ import {HttpResetClass} from 'vue-client'
76
+ import data from '../../stores/wxconfig'
77
+ import * as emoji from '../../plugins/EmojiData'
78
+ import Vue from "vue";
79
+ let msgGen = function* (self) {
80
+ try {
81
+ // 话务员才去登录,维修员不登录
82
+ if (!self.isRepairman) {
83
+ console.log('开始登陆')
84
+ // 话务员登陆
85
+ let http = new HttpResetClass()
86
+ let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
87
+ aId: self.dualId,
88
+ aBzType: "login",
89
+ aName:self.dualName,
90
+ }, {resolveMsg: null, rejectMsg: null})
91
+
92
+ console.log('登陆返回的信息:', loginMsg)
93
+ if (loginMsg.data.code !== 200) {
94
+ self.$showAlert('登陆失败', 'danger', 0)
95
+ return
96
+ }
97
+ }
98
+ // 轮询获取消息
99
+ self.getUerMsg()
100
+ } catch (e) {
101
+ // self.$showAlert(`登陆失败:${JSON.stringify(e)}`, 'danger', 0)
102
+ console.log('登陆失败,请重试')
103
+ }
104
+
105
+ }
106
+
107
+ let outGen = function* (self) {
108
+ //维修员,不存在登出
109
+ if (self.isRepairman)
110
+ return
111
+ // 话务员登出
112
+ let http = new HttpResetClass()
113
+
114
+ let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
115
+ aId: self.dualId,
116
+ aBzType: "logout",
117
+ aName:self.dualName,
118
+ }, {resolveMsg: null, rejectMsg: null})
119
+ console.log('登出返回的信息:', loginMsg)
120
+ if (loginMsg.data.code !== 200) {
121
+ self.$showAlert('登陆失败')
122
+ return
123
+ }
124
+ }
125
+
126
+ export default {
127
+ title: '文字客服',
128
+ data() {
129
+ return {
130
+ webId: '',
131
+ content: '',
132
+ interval: '',
133
+ fengongsi:'',
134
+ gh_id:'',
135
+ users: [
136
+ ], // 接入用户
137
+ show: false, // 选择素材
138
+ // msgs: [],
139
+ isTop: true, // 是否滚动到顶部
140
+ dualId: null,
141
+ dualRole: null,
142
+ dualName: null,
143
+ }
144
+ },
145
+ props: {
146
+ active: {
147
+ type: Number,
148
+ default: 0
149
+ },
150
+ isRepairman: {
151
+ default: false
152
+ },
153
+ typeuser: {
154
+ type: String,
155
+ default: 'webUser'
156
+ }
157
+ },
158
+
159
+ ready() {
160
+ this.fengongsi=this.$appdata.getSingleValue("分公司")
161
+ this.gh_id=this.$appdata.getSingleValue("公众号ID")
162
+ console.log(this.fengongsi)
163
+ console.log(this.gh_id)
164
+ console.log('当前是否是维修员:' + this.isRepairman)
165
+ if (this.typeuser === 'webUser') {
166
+ this.webId = '________________' + Util.randnum()
167
+ console.log(this.webId)
168
+ }
169
+ if (this.isRepairman) {
170
+ this.dualId = this.$login.f.name
171
+ this.dualName = this.$login.f.name
172
+ this.dualRole = 'repairman'
173
+ } else {
174
+ console.log('当前坐席:' + this.$login.f.id)
175
+ this.dualId = this.$login.f.id
176
+ this.dualName = this.$login.f.name
177
+ this.dualRole = null
178
+ }
179
+
180
+ let gen = msgGen(this)
181
+ co(gen)
182
+ // document.getElementById("myDIV").addEventListener("wheel", myFunction);
183
+
184
+ console.log('监听元素', this.$els.msgs + ':::::' + this.$androidUtil.getProxyUrl())
185
+
186
+ this.$els.msgs.addEventListener("wheel", this.wheelUp)
187
+ // 为Android滑动触屏添加事件
188
+ this.$els.msgs.addEventListener("touchstart", this.touchStart)
189
+ this.$els.msgs.addEventListener("touchend", this.touchEnd)
190
+ },
191
+ methods: {
192
+ sendMessage(user, index) {
193
+ user = {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name}
194
+ console.log(user)
195
+ this.active = index
196
+ this.$dispatch('user', user)
197
+ },
198
+ getUerMsg() {
199
+ let that = this
200
+ let http = new HttpResetClass()
201
+ console.log('轮询取消息')
202
+ this.interval = setInterval(() => {
203
+ let params = this.typeuser === 'webUser' ? {openId: this.webId, aBzType: "nvl"} : {
204
+ aId: this.dualId,
205
+ aBzType: "nvl",
206
+ role: this.dualRole,
207
+ aName:this.dualName,
208
+ }
209
+ //load(method,url,data)
210
+ console.log(JSON.stringify(params))
211
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, params, {
212
+ resolveMsg: null,
213
+ rejectMsg: null
214
+ }).then((res) => {
215
+
216
+ if (typeof res.data === 'string') {
217
+ window.alert(res.data)
218
+ // res.data = res.data.replace('"sessionId":', '"sessionId":"')
219
+ // res.data = res.data.replace(', "msgType"', '", "msgType"')
220
+ res.data = res.data.replace(/}/g,'},')
221
+ res.data = res.data.replace(',]},',']}')
222
+ res.data = res.data.replace('},]','}]')
223
+ console.log(res.data)
224
+ res.data = JSON.parse(res.data)
225
+ }
226
+ if (res.data.code === 200) {
227
+ // 有用户离线处理
228
+ if (res.data.kickedOffList && res.data.kickedOffList.length > 0) {
229
+ res.data.kickedOffList.forEach((openId) => {
230
+ that.turnOff(openId)
231
+ })
232
+ }
233
+ if (res.data.msgs.length > 0) { // 有新消息
234
+ // 将新消息放入到对应用户的消息中
235
+ console.log('参数拿一下' + res.data.msgs[0].openId.substring(0, 2))
236
+ //如果有aId说明是坐席接收消息。如果接收到的是web端发来的消息则显示web用户openid
237
+ if (params.aId && res.data.msgs[0].name === '' && res.data.msgs[0].openId.substring(0, 2) === '__') {
238
+ res.data.msgs[0].name = 'web客户' + res.data.msgs[0].openId.substring(15)
239
+ }
240
+ //如果有openid则说明是web接收消息
241
+ if (params.openId) {
242
+ res.data.msgs[0].name = '客服'
243
+ }
244
+
245
+ that.addMsg(res.data.msgs)
246
+ if("text-server"!=Vue.routes.main.selecttab){
247
+ this.$showAlert("您有新的客服消息,请注意查看",'success',1000)
248
+ }
249
+ }
250
+ // 处理维修员带过来的所有用户
251
+ if (res.data.bondedUsers && res.data.bondedUsers.length > 0) {
252
+ that.addBondedWeUsers(res.data.bondedUsers)
253
+ }
254
+ }
255
+ if (res.data.code === 509) {
256
+ this.$showAlert('请重新登陆', 'danger', 0)
257
+ }
258
+ }).catch((err) => {
259
+ console.log('提取数据出错', JSON.stringify(err))
260
+ })
261
+ }, 1000)
262
+ },
263
+ addBondedWeUsers(weusers) {
264
+ let that = this
265
+ weusers.forEach((wu) => {
266
+ // 查找用户
267
+ let index = that.users.findIndex((user, index, arr) => {
268
+ return user.openId === wu.f_open_id
269
+ })
270
+ // 找到
271
+ if (index && index !== -1 || index === 0) {
272
+ // do nothing
273
+ } else {
274
+ if (that.users.length === 0) { // 如果是添加的第一户
275
+
276
+ that.users.push({
277
+ name: wu.f_user_name,
278
+ userId: wu.f_user_name,
279
+ openId: wu.f_open_id,
280
+ gh_id:wu.gh_id,
281
+ msgs: [],
282
+ unreadNum: 0,
283
+ lineState: true
284
+ })
285
+ this.$dispatch('user', {openId: wu.f_open_id, gh_id:wu.gh_id,userId: wu.f_user_name, name: wu.f_user_name})
286
+ } else {
287
+ that.users.push({
288
+ name: wu.f_user_name,
289
+ userId: wu.f_user_name,
290
+ openId: wu.f_open_id,
291
+ gh_id:wu.gh_id,
292
+ msgs: [],
293
+ unreadNum: 0,
294
+ lineState: true
295
+ })
296
+ }
297
+ }
298
+ })
299
+ },
300
+ addMsg(msgs) {
301
+ let that = this
302
+ msgs.forEach((msg) => {
303
+ let index = that.users.findIndex((user, index, arr) => {
304
+ return user.openId === msg.openId
305
+ })
306
+ if (!msg.aBzType) { // 收到的消息
307
+ if (msg.msgType === 'image' || msg.msgType === 'video' || msg.msgType === 'voice') { // 有素材
308
+ msg.src = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.media}`
309
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.thumbnail}`
310
+ }
311
+ }
312
+ if (index && index !== -1 || index === 0) { // 返回的有index,说明有这个用户
313
+ // 往用户消息里面push消息时,判断当前激活是否是当前用户,不是,要有新消息提示
314
+ that.users[index].msgs.push(msg)
315
+ that.users[index].lineState = true // 将用户改为上线
316
+ if (that.active !== index) { // 如果当前激活不是该用户,添加消息后,将未读消息加 1
317
+ this.users[index].unreadNum += 1
318
+ }
319
+ } else { // 没有则添加到用户列表中
320
+ if (that.users.length === 0) { // 如果是添加的第一户
321
+ that.users.push({
322
+ name: msg.name,
323
+ userId: msg.userId,
324
+ openId: msg.openId,
325
+ gh_id:msg.gh_id,
326
+ msgs: [msg],
327
+ unreadNum: 0,
328
+ lineState: true
329
+ })
330
+ this.$dispatch('user', {openId: msg.openId, gh_id:msg.gh_id,userId: msg.userId, name: msg.name})
331
+ } else {
332
+ that.users.push({
333
+ name: msg.name,
334
+ userId: msg.userId,
335
+ openId: msg.openId,
336
+ gh_id:msg.gh_id,
337
+ msgs: [msg],
338
+ unreadNum: 1,
339
+ lineState: true
340
+ })
341
+ }
342
+ }
343
+ // that.msgs = that.users[0].msgs
344
+ })
345
+ // 有消息加入后滚动到最底部
346
+ this.scrollBottom()
347
+ },
348
+ enter(ev) {
349
+ ev.preventDefault()
350
+ ev.stopPropagation()
351
+ },
352
+ allowDrop(ev) {
353
+ // ev.preventDefault()
354
+ ev.preventDefault()
355
+ ev.stopPropagation()
356
+ ev.dataTransfer.dropEffect = 'copy'
357
+ },
358
+
359
+ drop(ev) {
360
+ ev.preventDefault()
361
+ // 接收得信息包括图片信息,音频信息,文字信息
362
+ let files = ev.dataTransfer.files
363
+ // 循环遍历所有文件
364
+ if (files.length > 0) { // 如果有文件,取出文件传送文件
365
+ for (var i = 0; i < files.length; i++) {
366
+ let type = ''
367
+ // 判断是不是图片信息
368
+ if (/image\/\w+/.test(files[i].type)) {
369
+ type = 'image'
370
+ // if(file.size / 1024 / 1024 > 2) {
371
+ // that.$showAlert('上传图片不能大于2M,请处理后再选择', 'warning', 3000)
372
+ // return
373
+ // }
374
+
375
+ } else if (/video\/|ogg$|mp4$/.test(files[i].type)) { // 判断是不是音频信息
376
+ type = 'video'
377
+ }
378
+ this.send(type)
379
+ // files[i]
380
+ }
381
+ } else { // 文字信息
382
+ let data = ev.dataTransfer.getData("Text")
383
+ this.content += data
384
+ this.$els.content.innerHTML = this.$els.content.innerHTML + data
385
+ }
386
+
387
+ },
388
+ // 选择素材
389
+ selectMater() {
390
+ this.show = true
391
+ },
392
+ close() {
393
+ this.$refs.material.clearRows()
394
+ this.show = false
395
+ },
396
+ // 发送选择资源
397
+ sendMater() {
398
+ this.$refs.material.rows.forEach((row) => {
399
+ this.send(row.f_file_type, row)
400
+ })
401
+ this.close()
402
+ },
403
+ // 发送信息,将内容区域得内容发送出去,图片和文字,拖拽进来后直接发送,不用点击发送按钮
404
+ send(type, content) {
405
+ console.log('发送类型', type, this.typeuser)
406
+
407
+ if (this.typeuser !== 'webUser' && !this.users[this.active]) {
408
+ this.$showAlert('当前无通话用户,不能发送消息', 'warning', 2000)
409
+ return
410
+ }
411
+ if (content) {
412
+ this.content = content
413
+ }
414
+ // 如果用户离线,不能发送消息
415
+ if (this.typeuser !== 'webUser' && !this.users[this.active].lineState) {
416
+ this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
417
+ return
418
+ }
419
+ let msg = {
420
+ openId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].openId,
421
+ gh_id: this.typeuser === 'webUser' ? this.webId : this.users[this.active].gh_id,
422
+ userId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].userId,
423
+ aBzType: 'send',
424
+ aName:this.dualName,
425
+ branch:this.fengongsi,
426
+ //gh_id:this.gh_id,
427
+ name: this.typeuser === 'webUser' ? 'web客户' + this.webId.substring(15) : this.$login.f.name,
428
+ date: Util.toStandardTimeString().split(' ')[0].substring(2, Util.toStandardTimeString().split(' ')[0].length),
429
+ time: Util.toStandardTimeString().split(' ')[1],
430
+ }
431
+ // web端没有aId
432
+ if (this.typeuser !== 'webUser') {
433
+ msg.aId = this.dualId
434
+ msg.role = this.dualRole
435
+ }
436
+ if (this.typeuser === 'webUser') {
437
+ msg.openId = this.webId
438
+ }
439
+ if (type === 'text') {
440
+ if (!(this.content && this.content.length > 0)) {
441
+ console.log('发送的内容不能为空');
442
+ return
443
+ }
444
+ msg.msgType = 'text'
445
+ msg.content = this.content
446
+ } else if (type === 'image') { // 图片消息
447
+ msg.msgType = 'image'
448
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
449
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
450
+ msg.content = content.f_mediaid
451
+ } else if (type === 'video') { // 视频消息
452
+ msg.msgType = 'video'
453
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
454
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
455
+ msg.content = content.f_mediaid
456
+ }
457
+ console.log('发送的消息体为', msg)
458
+ // 此处将消息发送服务一份,然后添加到自己界面
459
+ let that = this
460
+ let http = new HttpResetClass()
461
+ let url = `${this.$androidUtil.getProxyUrl()}/TDual`
462
+ http.load('POST', url, msg, {resolveMsg: null, rejectMsg: null}).then((res) => {
463
+ console.log('发消息返回的消息', res)
464
+ if (res.data.code === 200 && !res.data.msg) {
465
+
466
+ }
467
+ else if(res.data.code === 500){
468
+ this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
469
+
470
+ }
471
+ //else if (res.data.code === 200&&res.data.msg!==''){
472
+ // this.$showAlert(',暂时无法服务,请拨打96677咨询人工客服', 'warning', 2000)
473
+ //}
474
+ })
475
+ // openId: 微信用户openId
476
+ // msgType: 消息类别
477
+ // content:消息内容,只针对text消息
478
+ // name: 燃气用户姓名
479
+ // userId: 燃气用户id
480
+ // time: 消息时间
481
+ // date: 消息年月日
482
+ // media: 除text消息外的文件名
483
+ // thumbnail: media对应的缩略图或转换文件
484
+ // {"aId":"001", "aBzType":"send", "msgType":"text", "content":"huawuyuangeinidexiaoxi", "openId": "oL5ch0q8MjNEuLcsQw4CsImDkEdA"}
485
+ this.addMsg([msg])
486
+ // 消息发送出后,清空输入框
487
+ this.content = ''
488
+ // 清空显示
489
+ this.$els.content.innerHTML = ''
490
+ this.$els.content.focus()
491
+ // 消息发出后滚动到最底部
492
+ // this.scrollBottom()
493
+ },
494
+ // 切换用户
495
+ handleTabListClick(index, user) {
496
+ this.active = index
497
+ // 切换激活用户时,将未读消息设置为0
498
+ this.users[index].unreadNum = 0
499
+ // user = {openId: user.openId, userId: user.userId, name: user.name}
500
+ console.log(user)
501
+ this.active = index
502
+ // 发送事件,切换用户时重新查询用户
503
+ this.$dispatch('user', {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name})
504
+ this.scrollBottom()
505
+ },
506
+ // 关闭用户对话框
507
+ deleteUser(index, user) {
508
+ // 话务员直接关闭
509
+ if (this.isRepairman)
510
+ return
511
+ console.log('关闭用户对话框')
512
+ if (!user.lineState) { // 如果用户已经离线,直接删除,发请求回报错,导致关闭不了
513
+ this.users.splice(index, 1)
514
+ return
515
+ }
516
+ let http = new HttpResetClass()
517
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, {
518
+ aId: this.dualId,
519
+ aBzType: "abort",
520
+ aName:this.dualName,
521
+ openId: user.openId,
522
+ gh_id:user.gh_id,
523
+ }, {resolveMsg: null, rejectMsg: null}).then((res) => {
524
+ console.log('关闭用户对话框', res)
525
+ this.users.splice(index, 1)
526
+ })
527
+ },
528
+ // 滚动到文字信息底部
529
+ scrollBottom() {
530
+ this.$nextTick(() => {
531
+ this.$els.msgs.scrollTop = this.$els.msgs.scrollHeight
532
+
533
+ })
534
+ },
535
+ // 处理离线用户
536
+ turnOff(openId) {
537
+ let index = this.users.findIndex((user, index, arr) => {
538
+ return user.openId === openId
539
+ })
540
+ this.users[index].lineState = false
541
+ },
542
+ // 当有滚动事件时,滚轮事件被屏蔽掉
543
+ // 滚动事件
544
+ scroll(e) {
545
+ // console.log('滚动事件', e)
546
+ if (e.target.scrollTop === 0) {
547
+ this.isTop = true
548
+ } else {
549
+ this.isTop = false
550
+ }
551
+ },
552
+ // 触屏滑动事件
553
+ touchStart(e) { // 触屏开始位置
554
+ this.start_Y = e.changedTouches[0].pageY
555
+ },
556
+ touchEnd(e) { // 滑动当前位置
557
+ let end_Y = e.changedTouches[0].pageY
558
+ if (end_Y - this.start_Y > 50) {
559
+ // 下滑加载
560
+ console.log('发生滑动时间:' + e)
561
+ this.loadHistory(e)
562
+ }
563
+ },
564
+ // 滚轮事件,为解决刚进来没有滚动时,加载历史记录
565
+ wheelUp(e) {
566
+ if (e.wheelDelta > 0) {
567
+ console.log('发生滚轮时间:' + e)
568
+ this.loadHistory(e)
569
+ }
570
+ },
571
+ loadHistory(e) {
572
+ if (this.isTop) { // 加载历史开始了
573
+ if (this.users.length == 0 || !this.users[this.active].openId)
574
+ return
575
+ let dt = ''
576
+ // 如果维修员想要查看历史消息,但是还没有聊天的情况下,
577
+ if (this.users[this.active].msgs.length == 0)
578
+ dt = Util.toStandardTimeString()
579
+ else
580
+ dt = `20${this.users[this.active].msgs[0].date} ${this.users[this.active].msgs[0].time}`
581
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/tel_getChatHistory`,
582
+ {
583
+ data: {
584
+ f_dt: dt,
585
+ f_open_id: this.users[this.active].openId
586
+ }
587
+ },
588
+ {resolveMsg: null, rejectMsg: null}).then((res) => {
589
+ console.log('加载到的数据是', res)
590
+ if (res.data.length > 0) {
591
+ let msgs = []
592
+ res.data.forEach((item) => {
593
+ if (item.f_msg_type !== 'system') {
594
+ let msg = {
595
+ content: item.f_content,
596
+ date: item.f_dt.split(' ')[0].substring(2, item.f_dt.split(' ')[0].length),
597
+ time: item.f_dt.split(' ')[1],
598
+ media: "",
599
+ msgType: item.f_msg_type,
600
+ name: (item.f_msg_direction === '发送') ? (item.f_repairman ? item.f_repairman : null) : item.f_user_name,
601
+ openId: item.f_open_id,
602
+ gh_id:item.gh_id,
603
+ sessionId: item.f_session_id,
604
+ thumbnail: item.f_thumbnail,
605
+ userId: item.f_user_id
606
+ }
607
+ if (item.f_msg_direction === '发送') {
608
+ msg.aBzType = "send"
609
+ msg.branch = this.fengongsi
610
+ msg.gh_id=this.gh_id
611
+ }
612
+ if (item.f_msg_type === 'video' || item.f_msg_type === 'voice' || item.f_msg_type === 'image') {
613
+ console.log('聊天历史消息:', JSON.stringify(item))
614
+ if (item.f_msg_direction === '发送') { // 话务员发送的消息
615
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${item.f_file_name}`
616
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${item.thumbnail}`
617
+ } else { // 用户发送的消息
618
+ msg.src = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_content}`
619
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_thumbnail}`
620
+ }
621
+ }
622
+ msgs.push(msg)
623
+ }
624
+ })
625
+ console.log('组成消息组是', msgs)
626
+ this.users[this.active].msgs.unshift(...msgs)
627
+ } else { // 没有记录了
628
+ this.$showAlert('没有记录了', 'warning', 1000)
629
+ }
630
+ })
631
+ // console.log('向上滚')
632
+ // console.log(e.target.scrollTop)
633
+ } else {
634
+ // console.log('向下滚')
635
+ }
636
+ },
637
+ // 自文本内容中加入小图标
638
+ contentAddIcon(key, emoji) {
639
+ // 获取焦点,防止选择表情无法输入
640
+ let el = this.$els.content
641
+ el.focus() // 获取焦点
642
+ // 将光标定位到文档最后
643
+ let range = document.createRange();
644
+ range.selectNodeContents(el);
645
+ range.collapse(true);
646
+ range.setEnd(el, el.childNodes.length);
647
+ range.setStart(el, el.childNodes.length);
648
+ let sel = window.getSelection();
649
+ sel.removeAllRanges();
650
+ sel.addRange(range);
651
+ // 定位光标后
652
+ this.content += key
653
+ document.execCommand('insertImage', false, `static/wechat/${emoji}`)
654
+ },
655
+ // 按键事件
656
+ handleKeys(event) {
657
+ if (event.which === 9) event.preventDefault()
658
+ if (event.which === 13 && event.ctrlKey) {
659
+ event.preventDefault()
660
+ this.send('text')
661
+ }
662
+ // if (event.which === 13 && event.ctrlKey){
663
+ // this.content = this.$els.content.innerHTML
664
+ // }
665
+ // console.log('this.content---->', this.content)
666
+ },
667
+ // 内容发生变化
668
+ contentChanged() {
669
+ if (this.$els.content.innerHTML === '') {
670
+ return
671
+ }
672
+ this.content = emoji.editorChange(this.$els.content.innerHTML)
673
+ },
674
+ // insertTextAtCursor () {
675
+ // let sel
676
+ // if (window.getSelection) {
677
+ // sel = window.getSelection();
678
+ // if (sel.getRangeAt && sel.rangeCount) {
679
+ // range = sel.getRangeAt(0)
680
+ // range.deleteContents()
681
+ // }
682
+ // }
683
+ // }
684
+ // insertTextAtCursor(text) {
685
+ // var sel, range, html;
686
+ // console.log('11111111111', window.getSelection())
687
+ // if (window.getSelection) {
688
+ // sel = window.getSelection();
689
+ // if (sel.getRangeAt && sel.rangeCount) {
690
+ // range = sel.getRangeAt(0);
691
+ // range.deleteContents();
692
+ // // range.insertNode( document.createTextNode(text) );
693
+ // }
694
+ // } else if (document.selection && document.selection.createRange) {
695
+ // // document.selection.createRange().text = text;
696
+ // }
697
+ // },
698
+ // saveSelection () {
699
+ // if (window.getSelection) {
700
+ // sel = window.getSelection()
701
+ // if (sel.getRangeAt && sel.rangeCount) {
702
+ // return sel.getRangeAt(0)
703
+ // }
704
+ // } else if (document.selection && document.selection.createRange) {
705
+ // return document.selection.createRange()
706
+ // }
707
+ // return null
708
+ // },
709
+ // restoreSelection(range) {
710
+ // if (range) {
711
+ // if (window.getSelection) {
712
+ // sel = window.getSelection()
713
+ // sel.removeAllRanges()
714
+ // sel.addRange(range)
715
+ // } else if (document.selection && range.select) {
716
+ // range.select()
717
+ // }
718
+ // }
719
+ // }
720
+ },
721
+ beforeDestroy() {
722
+ clearInterval(this.interval)
723
+ let gen = outGen(this)
724
+ co(gen)
725
+ },
726
+ computed:{
727
+ reply() {
728
+ return this.$appdata.getParam('快速回复')
729
+ }
730
+
731
+ },
732
+ }
733
+ </script>
734
+ <style scoped>
735
+ .text-editor {
736
+ flex: 1;
737
+ }
738
+
739
+ div[contenteditable=true] {
740
+ outline: none;
741
+ border-top: 1px solid #DDD;
742
+ overflow: auto;
743
+ background: #FFF;
744
+ padding: 5px 10px;
745
+ }
746
+
747
+ div[contenteditable=true] div {
748
+ height: auto;
749
+ }
750
+
751
+ div[contenteditable=true] img {
752
+ width: 25px;
753
+ }
754
+
755
+ .send-msg {
756
+ /*position: relative;*/
757
+ display: flex;
758
+ height: 120px;
759
+ flex-direction: column;
760
+ }
761
+
762
+ .send-msg > button {
763
+ /*position: absolute;*/
764
+ right: 20px;
765
+ bottom: 5px;
766
+ padding: 3px 20px;
767
+ }
768
+
769
+ /* 文字客服页签样式 */
770
+ /* .text-server .flex {
771
+ display: flex;
772
+ flex-direction: row;
773
+ } */
774
+ .text-server .flex-row > ul {
775
+ background: #009BDB;
776
+ width: 60px;
777
+
778
+ }
779
+
780
+ .text-server .flex-row > ul > li {
781
+ width: 100%;
782
+ display: flex;
783
+ justify-content: center;
784
+ }
785
+
786
+ .text-server .flex-row > ul > li > a {
787
+ border-bottom: none;
788
+ /* background: #FFF; */
789
+ padding: 0px;
790
+ margin-right: 0px;
791
+ line-height: 40px;
792
+ text-align: center;
793
+ font-size: 1.2em;
794
+ width: 40px;
795
+ height: 40px;
796
+ margin: 5px 0px;
797
+ border-radius: 50%;
798
+ }
799
+
800
+ .text-server .flex-row > ul > li.active {
801
+ background: rgba(255, 255, 255, 0.3);
802
+ }
803
+
804
+ .text-server ul > li > a > span {
805
+ display: inherit;
806
+ }
807
+
808
+ /* 关闭按钮 badge glyphicon style="position: absolute;right: -5px;top: 0px;background: #F61003;" */
809
+ #text-service > ul > li > a {
810
+ position: relative;
811
+ }
812
+
813
+ #text-service > ul > li > a > .glyphicon {
814
+ display: none;
815
+ }
816
+
817
+ #text-service > ul > li > a > .badge {
818
+ /* display: initial; */
819
+ position: absolute;
820
+ right: -5px;
821
+ top: 0px;
822
+ background: #F61003;
823
+ }
824
+
825
+ #text-service > ul > li > a:hover > .glyphicon {
826
+ display: initial;
827
+ position: absolute;
828
+ /* font-size: 13px; */
829
+ background-color: rgb(255, 255, 255, 0.5);
830
+ right: -5px;
831
+ top: 0px;
832
+ }
833
+
834
+ /* 当鼠标悬停在游湖头像时,未读消息显示隐藏,关闭按钮显示 */
835
+ #text-service > ul > li > a:hover > .badge {
836
+ display: none;
837
+ }
838
+
839
+ #text-service > ul > li > a:hover > .glyphicon:hover {
840
+ background-color: #F61003;
841
+ color: #FFF;
842
+ /* color: #5CBDED; */
843
+ }
844
+
845
+ .offline {
846
+ background: #888 !important;
847
+ }
848
+
849
+ </style>