safecheck-client 4.0.0-6 → 4.0.0-60

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 (313) hide show
  1. package/package.json +1 -1
  2. package/src/App.vue +31 -31
  3. package/src/components/CheckerCount/CheckCountUserList.vue +144 -144
  4. package/src/components/DefectDealMain/DefectListNew.vue +642 -642
  5. package/src/components/Util/ImgSelfSafePlus.vue +13 -3
  6. package/src/components/android/AddPlanItem.vue +447 -447
  7. package/src/components/android/AddPlanItemYy.vue +451 -451
  8. package/src/components/android/AddSpecialPlanItem.vue +426 -426
  9. package/src/components/android/AndroidDefectDeal.vue +1 -1
  10. package/src/components/android/AndroidDefectDealBeforeSafe.vue +1 -1
  11. package/src/components/android/AndroidDefectDetails.vue +725 -0
  12. package/src/components/android/BlackUserOnLine.vue +2 -2
  13. package/src/components/android/CurrentCreateYy.vue +1051 -1051
  14. package/src/components/android/Devices.vue +327 -327
  15. package/src/components/android/Devicesm.vue +327 -327
  16. package/src/components/android/Insurance/PhoneInsurancePurchase.vue +1 -1
  17. package/src/components/android/PaperFeedback.vue +14 -12
  18. package/src/components/android/PaperFeedbackTemp.vue +2 -2
  19. package/src/components/android/PaperFeedbackm.vue +1026 -1026
  20. package/src/components/android/PhoneRecordInfo.vue +113 -113
  21. package/src/components/android/PhoneSellInfo.vue +113 -113
  22. package/src/components/android/PhoneUpDetail.vue +1040 -1040
  23. package/src/components/android/PhoneUpUserinfo.vue +20 -0
  24. package/src/components/android/QRCode/QRCodeBinding.vue +300 -300
  25. package/src/components/android/QRCode/QRCodePage.vue +212 -212
  26. package/src/components/android/RelieveRestrict.vue +1 -1
  27. package/src/components/android/Restriction.vue +1 -1
  28. package/src/components/android/SafePlanItem.vue +509 -509
  29. package/src/components/android/SafecheckDevices.vue +47 -2
  30. package/src/components/android/SafecheckOrderV.vue +2 -2
  31. package/src/components/android/SealBind.vue +392 -0
  32. package/src/components/android/SealManage.vue +250 -0
  33. package/src/components/android/UserinfoSelect.vue +714 -714
  34. package/src/components/android/examples/SafeListExamples.vue +296 -296
  35. package/src/components/android/old/PaperFeedback.vue +1015 -1015
  36. package/src/components/android/recheck/Recheck.vue +402 -402
  37. package/src/components/android/userinfo/SafecheckUserInfo.vue +776 -776
  38. package/src/components/checkplan/checkmsg.vue +459 -459
  39. package/src/components/defect/DefectList.vue +507 -507
  40. package/src/components/defect/DefectListWeixiu.vue +484 -484
  41. package/src/components/filialCircle/CircleList.vue +139 -139
  42. package/src/components/inspections/AddInspectPlanItem.vue +325 -325
  43. package/src/components/inspections/AddInspectPlanItems.vue +325 -325
  44. package/src/components/inspections/AddInspectPlanItemss.vue +317 -317
  45. package/src/components/inspections/DisplayInspectionList.vue +1224 -1224
  46. package/src/components/inspections/inspectionFeedback.vue +2 -2
  47. package/src/components/inspections/inspectionOrderV.vue +1853 -1853
  48. package/src/components/inspections/inspectionOrderVs.vue +1853 -1853
  49. package/src/components/inspections/inspectionOrderVss.vue +1856 -1856
  50. package/src/components/inspections/inspectionUserInfo.vue +398 -398
  51. package/src/components/paper/PaperList.vue +34 -6
  52. package/src/components/pc/AddToCheckBook.vue +100 -23
  53. package/src/components/pc/AnnouncementPC.vue +524 -524
  54. package/src/components/pc/CheckBook.vue +2 -0
  55. package/src/components/pc/CheckBookDetails.vue +6 -39
  56. package/src/components/pc/CheckBookEntry.vue +6 -7
  57. package/src/components/pc/CheckBookList.vue +60 -71
  58. package/src/components/pc/CheckBookSearchArea.vue +20 -24
  59. package/src/components/pc/CheckBookSearchUser.vue +139 -84
  60. package/src/components/pc/CheckBookSearchUserList.vue +1 -2
  61. package/src/components/pc/CheckBookUser.vue +276 -44
  62. package/src/components/pc/DefectList.vue +742 -742
  63. package/src/components/pc/DeviceChange.vue +1068 -1068
  64. package/src/components/pc/NewCheckpaper.vue +14 -8
  65. package/src/components/pc/NewCheckpaperTemp.vue +5 -5
  66. package/src/components/pc/PaperDefectMain.vue +1 -0
  67. package/src/components/pc/SafeVisitInfo.vue +261 -261
  68. package/src/components/planmanage/PlanManage.vue +886 -888
  69. package/src/components/planmanage/checkPlanList.vue +368 -368
  70. package/src/components/querycheckpaper/CheckPaperList.vue +130 -130
  71. package/src/components/report/HiddenSituation.vue +165 -165
  72. package/src/components/rongcheng/AspPaperFeedback.vue +1 -1
  73. package/src/components/rongcheng/AspiratedOrderV.vue +2377 -2377
  74. package/src/components/rongcheng/CurrentCreateOnline.vue +906 -906
  75. package/src/components/rongcheng/DefectList.vue +560 -560
  76. package/src/components/rongcheng/PaperFeedback.vue +2 -2
  77. package/src/components/rongcheng/SafecheckOrderVCli.vue +2641 -2641
  78. package/src/components/safecheck/queryManage/CheckBookAll.vue +2 -2
  79. package/src/components/safecheckNew/android/AddPlanItem.vue +419 -419
  80. package/src/components/safecheckNew/android/CurrentCreate.vue +1050 -1050
  81. package/src/components/safecheckNew/android/Recheck.vue +379 -379
  82. package/src/components/sendsingle/EquipmentManagement.vue +727 -727
  83. package/src/components/shaoguan/DefectList.vue +473 -473
  84. package/src/components/shaoguan/SafecheckOrderV.vue +2140 -2140
  85. package/src/components/tongcheng/PaperFeedback.vue +1061 -1061
  86. package/src/components/userfile/SecurityAudit.vue +243 -243
  87. package/src/components/userfileNew/UserInfoAuditNew.vue +274 -274
  88. package/src/filiale/ALshan/pc/DefectListWeixiu.vue +476 -476
  89. package/src/filiale/ancheng/android/PaperFeedback.vue +2 -2
  90. package/src/filiale/ancheng/android/SafecheckOrderV.vue +2703 -2703
  91. package/src/filiale/ancheng/android/SafecheckUserInfo.vue +737 -737
  92. package/src/filiale/ancheng/pc/checkScreen.vue +923 -923
  93. package/src/filiale/ankangyihua/android/AddPlanItem.vue +446 -446
  94. package/src/filiale/ankangyihua/android/AndroidDefectDeal.vue +1 -1
  95. package/src/filiale/ankangyihua/android/SafecheckOrderV.vue +2908 -2908
  96. package/src/filiale/ankangyihua/pc/DefectListWeixiu.vue +491 -491
  97. package/src/filiale/baiyin/android/AndroidDefectDeal.vue +1 -1
  98. package/src/filiale/baiyin/android/SafecheckOrderV.vue +2785 -2785
  99. package/src/filiale/baiyin/pc/DefectListNew.vue +597 -597
  100. package/src/filiale/bayan/android/Edit.vue +132 -132
  101. package/src/filiale/bayan/android/PaperFeedback.vue +2 -2
  102. package/src/filiale/bayan/pc/DefectListNew.vue +597 -597
  103. package/src/filiale/bayan/pc/DeviceChange.vue +1838 -1838
  104. package/src/filiale/bayan/pc/HiddenSituation.vue +295 -295
  105. package/src/filiale/dexin/android/CasualSave.vue +1050 -1050
  106. package/src/filiale/dexin/android/SafecheckOrderV.vue +2950 -2950
  107. package/src/filiale/fugou/android/AddPlanItem.vue +413 -413
  108. package/src/filiale/fugou/android/SafecheckOrderV.vue +2796 -2796
  109. package/src/filiale/fugou/pc/CheckBookSearchUser.vue +830 -830
  110. package/src/filiale/fugou/pc/PaperDefectMain.vue +1 -1
  111. package/src/filiale/fugu/android/SafecheckOrderV.vue +2484 -2484
  112. package/src/filiale/fugu/pc/NewCheckpaper.vue +1287 -1287
  113. package/src/filiale/ganquan/android/AddPlanItem.vue +444 -444
  114. package/src/filiale/ganquan/android/SafecheckOrderV.vue +2485 -2485
  115. package/src/filiale/ganquan/pc/NewCheckpaper.vue +1354 -1354
  116. package/src/filiale/guangxi/pc/DefectListNew.vue +518 -518
  117. package/src/filiale/hanzhong/android/PaperFeedback.vue +2 -2
  118. package/src/filiale/hanzhong/android/SafecheckOrderV.vue +2683 -2683
  119. package/src/filiale/hanzhong/android/SafecheckUserInfo.vue +786 -786
  120. package/src/filiale/huaran/android/SafecheckOrderV.vue +2803 -2803
  121. package/src/filiale/huatong/android/PaperFeedback.vue +2 -2
  122. package/src/filiale/huatong/android/SafecheckOrderV.vue +2426 -2426
  123. package/src/filiale/huatong/android/SafecheckUserInfo.vue +749 -749
  124. package/src/filiale/huayin/android/PaperFeedback.vue +2 -2
  125. package/src/filiale/huayin/android/SafecheckOrderV.vue +1 -1
  126. package/src/filiale/huayin/pc/NewCheckpaper.vue +1307 -1307
  127. package/src/filiale/jiaocheng/android/AddPlanItem.vue +435 -435
  128. package/src/filiale/jiaocheng/android/PaperFeedback.vue +2 -2
  129. package/src/filiale/jiaocheng/android/SafecheckUserInfo.vue +737 -737
  130. package/src/filiale/jiaocheng/pc/DefectListNew.vue +576 -576
  131. package/src/filiale/jiaxian/android/AddPlanItem.vue +447 -447
  132. package/src/filiale/jiaxian/android/SafecheckOrderV.vue +2807 -2807
  133. package/src/filiale/jiaxian/android/SafecheckUserInfo.vue +784 -784
  134. package/src/filiale/jinbin/pc/DefectListWeixiu.vue +478 -478
  135. package/src/filiale/jingyang/android/AddPlanItem.vue +458 -458
  136. package/src/filiale/jingyang/android/PaperFeedback.vue +2 -2
  137. package/src/filiale/jingyang/android/SafecheckOrderV.vue +2734 -2734
  138. package/src/filiale/jingyang/android/SafecheckUserInfo.vue +781 -781
  139. package/src/filiale/jinhong/android/PhoneInsurancePurchaseDetail.vue +171 -100
  140. package/src/filiale/jinhong/android/PhoneInsuranceRecordList.vue +346 -0
  141. package/src/filiale/jinhong/android.js +1 -0
  142. package/src/filiale/kelai/android/AddPlanItem.vue +488 -488
  143. package/src/filiale/kelai/android/AndroidDefectDeal.vue +2 -2
  144. package/src/filiale/kelai/android/PaperFeedback.vue +2 -2
  145. package/src/filiale/kelai/android/RelieveRestrict.vue +1 -1
  146. package/src/filiale/kelai/android/SafecheckOrderV.vue +1 -1
  147. package/src/filiale/kelai/android/SafecheckUserInfo.vue +774 -774
  148. package/src/filiale/kelai/android/SafecheckUserInfo1.vue +618 -618
  149. package/src/filiale/kelai/pc/DefectListNew.vue +688 -688
  150. package/src/filiale/kelai/pc/FaultLimitGas/FaultLimitGasList.vue +518 -518
  151. package/src/filiale/kelai/pc/FaultLimitGas/FaultLimitGasPaper.vue +1 -1
  152. package/src/filiale/kelai/pc/NewCheckpaper.vue +1454 -1454
  153. package/src/filiale/liaoyuan/android/AddPlanItem.vue +412 -412
  154. package/src/filiale/liaoyuan/android/CurrentCreate.vue +1066 -1066
  155. package/src/filiale/liaoyuan/android/SafecheckOrderV.vue +2388 -2388
  156. package/src/filiale/liaoyuan/android/SafecheckUserInfo.vue +557 -557
  157. package/src/filiale/liaoyuan/pc/DefectListWeixiu.vue +489 -489
  158. package/src/filiale/liaoyuan/pc/NewCheckpaper.vue +1020 -1020
  159. package/src/filiale/lixian/android/SafecheckOrderV.vue +2404 -2404
  160. package/src/filiale/lixian/android/SafecheckUserInfo.vue +578 -578
  161. package/src/filiale/lixian/pc/NewCheckpaper.vue +1211 -1211
  162. package/src/filiale/meihekou/android/AreaPlan.vue +569 -0
  163. package/src/filiale/meihekou/android/CheckPlanList.vue +198 -0
  164. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -0
  165. package/src/filiale/meihekou/android/CurrentCreate.vue +1087 -0
  166. package/src/filiale/meihekou/android/MeterReading.vue +106 -0
  167. package/src/filiale/meihekou/android/PhoneUpUserinfo.vue +1276 -0
  168. package/src/filiale/meihekou/android/SafecheckOrderV.vue +2398 -0
  169. package/src/filiale/meihekou/android/SafecheckUserInfo.vue +787 -0
  170. package/src/filiale/meihekou/android.js +19 -0
  171. package/src/filiale/meihekou/pc.js +12 -0
  172. package/src/filiale/minsheng/android/SafecheckUserInfo.vue +754 -754
  173. package/src/filiale/minsheng/pc/DefectListNew.vue +535 -535
  174. package/src/filiale/pingxiang/android/PaperFeedback.vue +2 -2
  175. package/src/filiale/pingxiang/android/SafecheckOrderV.vue +2424 -2424
  176. package/src/filiale/pingxiang/android/SafecheckUserInfo.vue +600 -600
  177. package/src/filiale/pingxiang/pc/DefectListNew.vue +519 -519
  178. package/src/filiale/pingxiang/pc/NewCheckpaper.vue +1294 -1294
  179. package/src/filiale/qianneng/android/AddPlanItem.vue +482 -482
  180. package/src/filiale/qianneng/android/PaperFeedback.vue +2 -2
  181. package/src/filiale/qianneng/android/SafecheckOrderV.vue +2785 -2785
  182. package/src/filiale/qianneng/android/SafecheckUserInfo.vue +775 -775
  183. package/src/filiale/qianneng/pc/DefectListNew.vue +576 -576
  184. package/src/filiale/qianneng/pc/NewCheckpaper.vue +1546 -1546
  185. package/src/filiale/qingjian/android/SafecheckOrderV.vue +2844 -2844
  186. package/src/filiale/qingjian/android/SafecheckUserInfo.vue +800 -800
  187. package/src/filiale/qingtongxia/android/AddPlanItem.vue +450 -450
  188. package/src/filiale/qingtongxia/android/SafecheckOrderV.vue +2726 -2726
  189. package/src/filiale/qingtongxia/android/SafecheckUserInfo.vue +782 -782
  190. package/src/filiale/qingtongxia/pc/DefectListNew.vue +594 -594
  191. package/src/filiale/rizhao/android/AddPlanItem.vue +446 -446
  192. package/src/filiale/rizhao/android/PaperFeedback.vue +2 -2
  193. package/src/filiale/rizhao/android/SafecheckOrderV.vue +2430 -2430
  194. package/src/filiale/rizhao/android/SafecheckUserInfo.vue +640 -640
  195. package/src/filiale/rizhao/pc/DefectList.vue +489 -489
  196. package/src/filiale/rongchuang/android/PaperFeedback.vue +2 -2
  197. package/src/filiale/rongchuang/android/SafecheckOrderV.vue +2696 -2696
  198. package/src/filiale/rongchuang/android/checkpapermsg.vue +209 -209
  199. package/src/filiale/ruihua/android/SafecheckOrderV.vue +2747 -2747
  200. package/src/filiale/ruihua/android/SafecheckUserInfo.vue +804 -804
  201. package/src/filiale/shanggao/android/PaperFeedback.vue +2 -2
  202. package/src/filiale/shanggao/android/SafecheckOrderV.vue +2426 -2426
  203. package/src/filiale/shanxian/android/AndroidDefectDeal.vue +1 -1
  204. package/src/filiale/shanxian/android/PaperFeedback.vue +2 -2
  205. package/src/filiale/shanxian/android/SafecheckUserInfo.vue +749 -749
  206. package/src/filiale/shanxian/pc/HiddenSituation.vue +121 -121
  207. package/src/filiale/shanxian/pc/NewCheckpaper.vue +1526 -1526
  208. package/src/filiale/shexian/android/AddPlanItem.vue +444 -444
  209. package/src/filiale/shexian/android/AndroidDefectDeal.vue +1 -1
  210. package/src/filiale/shexian/android/PaperFeedback.vue +2 -2
  211. package/src/filiale/shexian/android/SafecheckOrderV.vue +2879 -2879
  212. package/src/filiale/shexian/pc/DefectListNew.vue +593 -593
  213. package/src/filiale/shexian/pc/NewCheckpaper.vue +1469 -1469
  214. package/src/filiale/shimen/android/PaperFeedback.vue +2 -2
  215. package/src/filiale/shimen/android/SafecheckUserInfo.vue +547 -547
  216. package/src/filiale/shimen/pc/DefectList.vue +473 -473
  217. package/src/filiale/shimen/pc/NewCheckpaper.vue +1275 -1275
  218. package/src/filiale/siyang/android/AddPlanItem.vue +450 -450
  219. package/src/filiale/siyang/android/CurrentCreate.vue +1051 -1051
  220. package/src/filiale/siyang/android/PhoneRecordInfo.vue +214 -214
  221. package/src/filiale/siyang/android/SafecheckOrderV.vue +2796 -2796
  222. package/src/filiale/siyang/android/SafecheckUserInfo.vue +789 -789
  223. package/src/filiale/siyang/pc/HiddenSituation.vue +167 -167
  224. package/src/filiale/tianke/android/AddPlanItem.vue +455 -455
  225. package/src/filiale/tianke/android/SafecheckOrderV.vue +2431 -2431
  226. package/src/filiale/tianke/android/SafecheckUserInfo.vue +744 -744
  227. package/src/filiale/tongchuan/android/AddPlanItem.vue +483 -483
  228. package/src/filiale/tongchuan/android/AndroidDefectDeal.vue +1 -1
  229. package/src/filiale/tongchuan/android/PaperFeedback.vue +2 -2
  230. package/src/filiale/tongchuan/android/PhoneRecordInfo.vue +191 -191
  231. package/src/filiale/tongchuan/android/PhoneSellInfo.vue +113 -113
  232. package/src/filiale/tongchuan/android/SafecheckUserInfo.vue +720 -720
  233. package/src/filiale/tongchuan/pc/CheckBookDetails.vue +209 -209
  234. package/src/filiale/tongchuan/pc/DefectListWeixiu.vue +484 -484
  235. package/src/filiale/tongchuan/pc/HiddenSituation.vue +166 -166
  236. package/src/filiale/weinan/android/AddPlanItem.vue +438 -438
  237. package/src/filiale/weinan/android/CurrentCreate.vue +1171 -1171
  238. package/src/filiale/weinan/android/CurrentCreateOnline.vue +911 -911
  239. package/src/filiale/weinan/android/SafePlanItem.vue +440 -440
  240. package/src/filiale/weinan/android/SafecheckOrderV.vue +3 -3
  241. package/src/filiale/weinan/android/SafecheckUserInfo.vue +778 -778
  242. package/src/filiale/weinan/pc/DefectListNew.vue +617 -617
  243. package/src/filiale/weinan/pc/DeviceChange.vue +1088 -1088
  244. package/src/filiale/weinan/pc/HiddenSituation.vue +167 -167
  245. package/src/filiale/weinan/pc/checkScreen.vue +1094 -1094
  246. package/src/filiale/weinanct/android/SafecheckOrderV.vue +2730 -2730
  247. package/src/filiale/weinanct/pc/NewCheckpaper.vue +1315 -1315
  248. package/src/filiale/wensu/android/AddPlanItem.vue +495 -495
  249. package/src/filiale/wensu/android/AndroidDefectDeal.vue +464 -464
  250. package/src/filiale/wensu/android/PaperFeedback.vue +1358 -1358
  251. package/src/filiale/wensu/android/SafecheckOrderV.vue +2430 -2430
  252. package/src/filiale/wensu/android/SafecheckUserInfo.vue +627 -627
  253. package/src/filiale/wensu/pc/DefectListNew.vue +735 -735
  254. package/src/filiale/wenxi/android/AddPlanItem.vue +431 -431
  255. package/src/filiale/wenxi/android/PaperFeedback.vue +3 -3
  256. package/src/filiale/wenxi/android/SafecheckOrderV.vue +2671 -2671
  257. package/src/filiale/wenxi/android/SafecheckUserInfo.vue +673 -673
  258. package/src/filiale/wenxi/pc/DefectList.vue +653 -653
  259. package/src/filiale/wenxi/pc/NewCheckpaper.vue +1358 -1358
  260. package/src/filiale/wuan/android/PaperFeedback.vue +2 -2
  261. package/src/filiale/wuan/android/SafecheckOrderV.vue +2241 -2241
  262. package/src/filiale/wuan/android/SafecheckUserInfo.vue +596 -596
  263. package/src/filiale/wuan/pc/DefectListWeixiu.vue +506 -506
  264. package/src/filiale/wuan/pc/NewCheckpaper.vue +1169 -1169
  265. package/src/filiale/wuhai/android/PaperFeedback.vue +2 -2
  266. package/src/filiale/wuhai/android/SafecheckOrderV.vue +2456 -2456
  267. package/src/filiale/wuhai/android/SafecheckUserInfo.vue +573 -573
  268. package/src/filiale/wuhai/pc/NewCheckpaper.vue +1281 -1281
  269. package/src/filiale/xiangyuanzhongai/android/SafecheckDevices.vue +20 -1
  270. package/src/filiale/xiangyuanzhongai/android/SafecheckOrderV.vue +2282 -0
  271. package/src/filiale/xiangyuanzhongai/android/SafecheckUserInfo.vue +786 -0
  272. package/src/filiale/xiangyuanzhongai/android.js +2 -0
  273. package/src/filiale/xiangyuanzhongai/pc/DefectListNew.vue +663 -0
  274. package/src/filiale/xiangyuanzhongai/pc/PaperList.vue +795 -0
  275. package/src/filiale/xiangyuanzhongai/pc.js +2 -0
  276. package/src/filiale/xinkang/android/SafecheckOrderV.vue +2732 -2732
  277. package/src/filiale/xinkang/android/SafecheckUserInfo.vue +747 -747
  278. package/src/filiale/xinkang/pc/DefectListWeixiu.vue +475 -475
  279. package/src/filiale/xinkang/pc/NewCheckpaper.vue +1498 -1498
  280. package/src/filiale/yangchunboneng/android/AddPlanItem.vue +496 -496
  281. package/src/filiale/yangchunboneng/android/PaperFeedback.vue +2 -2
  282. package/src/filiale/yangchunboneng/android/SafecheckOrderV.vue +2865 -2865
  283. package/src/filiale/yangchunboneng/android/SafecheckUserInfo.vue +887 -887
  284. package/src/filiale/yangchunboneng/pc/DefectListNew.vue +576 -576
  285. package/src/filiale/yongzhou/android/PaperFeedback.vue +2 -2
  286. package/src/filiale/yongzhou/android/SafecheckOrderV.vue +2774 -2774
  287. package/src/filiale/yongzhou/android/SafecheckUserInfo.vue +776 -776
  288. package/src/filiale/yuansheng/android/AndroidDefectDeal.vue +1 -1
  289. package/src/filiale/yuansheng/android/PaperFeedback.vue +2 -2
  290. package/src/filiale/yuansheng/android/SafecheckOrderV.vue +2758 -2758
  291. package/src/filiale/yuansheng/android/SafecheckUserInfo.vue +797 -797
  292. package/src/filiale/yuansheng/pc/DefectListNew.vue +524 -524
  293. package/src/filiale/yuansheng/pc/NewCheckpaper.vue +1371 -1371
  294. package/src/filiale/yuansheng/pc/checkmsg.vue +464 -464
  295. package/src/filiale/yunchengminsheng/android/DailyworkloadQuery.vue +491 -491
  296. package/src/filiale/yunchengminsheng/android/PhoneSellInfo.vue +113 -0
  297. package/src/filiale/yunchengminsheng/android/SafecheckOrderV.vue +2848 -2846
  298. package/src/filiale/yunchengminsheng/android/SafecheckUserInfo.vue +785 -785
  299. package/src/filiale/yunchengminsheng/android.js +15 -14
  300. package/src/filiale/yunchengminsheng/pc/NewCheckpaper.vue +16 -5
  301. package/src/filiale/zhongsheng/android/BuyRecords.vue +122 -122
  302. package/src/filiale/zhongsheng/android/PaperFeedback.vue +2 -2
  303. package/src/filiale/zhongsheng/android/SafecheckOrderV.vue +2461 -2461
  304. package/src/filiale/zhongsheng/android/SafecheckUserInfo.vue +690 -690
  305. package/src/filiale/zhongsheng/pc/DefectListWeixiu.vue +514 -514
  306. package/src/filiale/zhongsheng/pc/NewCheckpaper.vue +1322 -1322
  307. package/src/filiale/zhongyi/android/SafecheckOrderV.vue +2431 -2431
  308. package/src/filiale/zhongyi/pc/DefectListNew.vue +514 -514
  309. package/src/filiale/zhoukou/android/PaperFeedback.vue +2 -2
  310. package/src/filiale/zhoukou/android/SafecheckOrderV.vue +2502 -2502
  311. package/src/filiale/zhoukou/android/SafecheckUserInfo.vue +588 -588
  312. package/src/main.js +32 -33
  313. package/src/safecheck-android.js +3 -0
@@ -1,888 +1,886 @@
1
- <template>
2
- <work-busy :is-busy="isSend"></work-busy>
3
- <div class="binary" style="background-color: #e8f4ff">
4
- <!--左侧安检计划列表******************************************************-->
5
- <div class="binary-left flex flex-column" style="width: 16%">
6
- <div style="height: 9%">
7
- <div class="row auto">
8
- <img style="width: 20px;margin: 0 5px" src="../../../static/images/searchhover.png" @click="showUserCondition()"/>
9
- <v-select :width="'80%'"
10
- class="select select_list"
11
- :search="false"
12
- :value.sync="currentorder"
13
- v-model="currentorder"
14
- @change="loadCheckPlan"
15
- :options='opt'
16
- close-on-select value-single >
17
- </v-select>
18
- </div>
19
- <div class="row auto safe-div-p"><!--<span style="margin-right: 5px" @click="refresh()" style="cursor:default">测试</span>--><span style="margin-right: 5px" @click="delCheckPlan()" style="cursor:default" v-if="isdelete">删除</span> <span @click="sendCheckPlan()" style="cursor:default">下发</span></div>
20
- </div>
21
- <div class="leftplan-center safe_plan_list">
22
- <div class="row safe-leftplan safe_list_li" :class="{'safe-selectplan':selectPlan.id==row.id}" v-for="row in checkplan.list.data" @click="selectPlanChange(row)">
23
- <table style="width:100%;table-layout:fixed" >
24
- <tr class="safe-planfont">
25
- <td rowspan="6"><input type="checkbox" style="pointer-events:auto" v-show="row.plan_count==0 || row.f_issued=='未下发'" onClick="event.cancelBubble = true" :checked="checkplan.check.isChecked(row.f_check_item_id)" @change="checkplan.check.setCheckes(row.id)"/></td>
26
- <td colspan="6" class="safe_p">{{row.f_plan_name}}</td>
27
- <td colspan="2" style="text-align: center"><img width="20px" style="pointer-events:auto" onClick="event.cancelBubble = true" @click="showUpPlans(row)" src="../../../static/images/edit.png"/></td>
28
- </tr>
29
- <tr class="safe-bodyfont" style="color:#4792de">
30
- <td colspan="6">{{row.f_issued}}</td>
31
- <td colspan="2" class="safe_p">{{row.f_checker?row.f_checker:'共享'}}</td>
32
- </tr>
33
- <tr class="safe-bodyfont">
34
- <td colspan="4">{{row.f_plan_year}}-{{row.f_plan_month}}</td>
35
- <td colspan="2">总 :</td>
36
- <td colspan="2">{{row.plan_count}}</td>
37
- </tr>
38
- <tr class="safe-bodyfont">
39
- <td colspan="2">未检 :</td>
40
- <td colspan="2">{{row.unchecked}}</td>
41
- <td colspan="2">已检 :</td>
42
- <td colspan="2">{{row.checked}}</td>
43
- </tr>
44
- <tr class="safe-bodyfont" v-if="row.f_create_time">
45
- <td colspan="3">创建时间 :</td>
46
- <td colspan="5" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :title="row.f_create_time">{{row.f_create_time}}</td>
47
- </tr>
48
- <tr class="safe-bodyfont" v-if="row.f_safecheck_type">
49
- <td colspan="3">安检类型 :</td>
50
- <td colspan="5" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :title="row.f_safecheck_type">{{row.f_safecheck_type}}</td>
51
- </tr>
52
- </table>
53
- </div>
54
- </div>
55
- <div style="height: 11%">
56
- <div class="row auto leftplan-center" style="padding: 8px">
57
- <div class="col-sm-6" style="">
58
- <span>共{{checkplan.list.count}}条</span>
59
- </div>
60
- <div class="col-sm-6" style="text-align: end">
61
- <span @click="loadMore('checkplan')"><img src="../../../static/images/doubledown.png"/>&ensp;更多</span>
62
- </div>
63
- </div>
64
- <div class="row auto" style="padding: 10px;text-align: center">
65
- <img src="../../../static/images/addnew.png" @click="showcCreatePlan()"/>
66
- </div>
67
- </div>
68
- </div>
69
- <!--右侧列表**************************************************************************-->
70
- <div class="binary-right" style="width: 84%;overflow: auto">
71
- <div style="height: 5%">
72
- <div class="col-sm-4">
73
- <label class="font_normal_body">公&emsp;&emsp;司</label>
74
- <right-tree-safe :islist="false" :width="'60%'" @re-res="getRes"></right-tree-safe>
75
- </div>
76
- </div>
77
- <div style="height: 95%">
78
- <div style="height: 50%" class="leftplan-center">
79
- <check-plan-list :selectplan="selectPlan" :userlogin="userlogin" v-ref:item></check-plan-list>
80
- </div>
81
- <div style="height: 50%">
82
- <check-user-list :selectplan="selectPlan" :userlogin="userlogin" v-ref:user></check-user-list>
83
- </div>
84
- </div>
85
- </div>
86
- <modal :show.sync="showCondtion" v-ref:modal :width="'50%'" :backdrop="false">
87
- <div slot="modal-header" class="modal-header">
88
- <h4 class="modal-title">
89
- 计划查询条件
90
- </h4>
91
- </div>
92
- <div slot="modal-body" class="modal-body">
93
- <div class="row">
94
- <div class="form-group col-sm-4" >
95
- <label class="font_normal_body">计划名称:</label>
96
- <input type="text" class="input_search" v-model="planCondition.f_plan_name" @change="setProperty('checkplan','f_plan_name',planCondition.f_plan_name)"
97
- style="width: 60%" placeholder="请选择" />
98
- </div>
99
- <div class="form-group col-sm-4" >
100
- <label class="font_normal_body">计划年份:</label>
101
- <v-select
102
- class="select select_list"
103
- :value.sync="planCondition.f_plan_year"
104
- v-model="planCondition.f_plan_year"
105
- @change="setProperty('checkplan','f_plan_year',planCondition.f_plan_year)"
106
- :search="false"
107
- :options='getConList("yearList")'
108
- placeholder='请选择'
109
- close-on-select
110
- value-single
111
- >
112
- </v-select>
113
- </div>
114
- <div class="form-group col-sm-4" >
115
- <label class="font_normal_body">计划月份:</label>
116
- <v-select
117
- class="select select_list"
118
- :value.sync="planCondition.f_plan_month"
119
- v-model="planCondition.f_plan_month"
120
- @change="setProperty('checkplan','f_plan_month',planCondition.f_plan_month)"
121
- :search="false"
122
- :options='getConList("monthList")'
123
- placeholder='请选择'
124
- close-on-select
125
- value-single>
126
- </v-select>
127
- </div>
128
- <div class="form-group col-sm-4" >
129
- <label class="font_normal_body">是否共享:</label>
130
- <v-select
131
- class="select select_list"
132
- :value.sync="planCondition.isShare"
133
- v-model="planCondition.isShare"
134
- @change="setProperty('checkplan','isAndNot',planCondition.isShare)"
135
- :options='getConList("conIsAndNot")'
136
- :search="false"
137
- placeholder='请选择'
138
- close-on-select
139
- value-single
140
- >
141
- </v-select>
142
- </div>
143
- <div class="form-group col-sm-4" >
144
- <label class="font_normal_body">是否下发:</label>
145
- <v-select
146
- class="select select_list"
147
- :value.sync="planCondition.issued"
148
- v-model="planCondition.issued"
149
- :options='getConList("isAndNot")'
150
- @change="setProperty('checkplan','issude',planCondition.issued)"
151
- placeholder='请选择'
152
- :search="false"
153
- close-on-select
154
- value-single
155
- >
156
- </v-select>
157
- </div>
158
- <div class="form-group col-sm-4" >
159
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
160
- <v-select
161
- class="select select_list"
162
- :value.sync="planCondition.f_checker"
163
- v-model="planCondition.f_checker"
164
- @change="setProperty('checkplan','checkerid',planCondition.f_checker.id)"
165
- :options='getConList("checker")'
166
- placeholder='请选择'
167
- close-on-select
168
- value-single
169
- >
170
- </v-select>
171
- </div>
172
-
173
- <div class="form-group col-sm-4" >
174
- <label class="font_normal_body">安检类型:</label>
175
- <v-select
176
- class="select select_list"
177
- :value.sync="planCondition.f_safecheck_type"
178
- v-model="planCondition.f_safecheck_type"
179
- @change="setProperty('checkplan','safechecktype',planCondition.f_safecheck_type)"
180
- :options='getConList("safechecktype")'
181
- placeholder='请选择'
182
- :search="false"
183
- close-on-select
184
- value-single
185
- >
186
- </v-select>
187
- </div>
188
- <div class="form-group col-sm-4" >
189
- <label class="font_normal_body">创&ensp;建&ensp;人:</label>
190
- <input type="text" class="input_search" v-model="planCondition.f_create_operator" @change="setProperty('checkplan','f_create_operator',planCondition.f_create_operator)"
191
- style="width: 60%" placeholder="创建人" />
192
- </div>
193
- </div>
194
- </div>
195
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
196
- <button class="button_search" @click="loadCheckPlan" style="margin-right: 15px">查询</button>
197
- <button class="button_search" @click="cancel">取消</button>
198
- </div>
199
- </modal>
200
- <modal :show.sync="showCreatePlan" v-ref:modal1 :width="'50%'" :backdrop="false">
201
- <div slot="modal-header" class="modal-header">
202
- <h4 class="modal-title">
203
- 新建计划
204
- </h4>
205
- </div>
206
- <div slot="modal-body" class="modal-body">
207
- <div class="row">
208
- <div class="form-group col-sm-4" >
209
- <label class="font_normal_body">计划名称:</label>
210
- <input type="text" class="input_search" v-model="createPlan.f_plan_name"
211
- style="width: 60%" placeholder="请选择" />
212
- </div>
213
- <div class="form-group col-sm-4" >
214
- <label class="font_normal_body">计划年份:</label>
215
- <v-select
216
- class="select select_list"
217
- :value.sync="createPlan.f_plan_year"
218
- v-model="createPlan.f_plan_year"
219
- :search="false"
220
- :options='yearList'
221
- placeholder='请选择'
222
- close-on-select
223
- value-single
224
- >
225
- </v-select>
226
- </div>
227
- <div class="form-group col-sm-4" >
228
- <label class="font_normal_body">计划月份:</label>
229
- <v-select
230
- class="select select_list"
231
- :value.sync="createPlan.f_plan_month"
232
- v-model="createPlan.f_plan_month"
233
- :search="false"
234
- :options='monthList'
235
- placeholder='请选择'
236
- close-on-select
237
- value-single>
238
- </v-select>
239
- </div>
240
- <div class="form-group col-sm-4" >
241
- <label class="font_normal_body">是否共享:</label>
242
- <v-select
243
- class="select select_list"
244
- :search="false"
245
- :value.sync="createPlan.isShare"
246
- v-model="createPlan.isShare"
247
- :options='isAndNot'
248
- placeholder='请选择'
249
- close-on-select
250
- value-single
251
- >
252
- </v-select>
253
- </div>
254
- <div class="form-group col-sm-4" v-show="createPlan.isShare=='是' && ismulchecker">
255
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
256
- <v-select
257
- class="select select_list"
258
- :value.sync="createPlan.checkers"
259
- v-model="createPlan.checkers"
260
- :options='checker'
261
- placeholder='请选择'
262
- :multiple="true"
263
- >
264
- </v-select>
265
- </div>
266
- <div class="form-group col-sm-4" v-show="createPlan.isShare=='否'">
267
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
268
- <v-select
269
- class="select select_list"
270
- :value.sync="createPlan.checker"
271
- v-model="createPlan.checker"
272
- :options='checker'
273
- placeholder='请选择'
274
- close-on-select
275
- value-single
276
- >
277
- </v-select>
278
- </div>
279
-
280
- <div class="form-group col-sm-4" >
281
- <label class="font_normal_body">安检类型:</label>
282
- <v-select
283
- class="select select_list"
284
- :value.sync="createPlan.f_safecheck_type"
285
- v-model="createPlan.f_safecheck_type"
286
- :search="false"
287
- :options='ntoway'
288
- placeholder='请选择'
289
- close-on-select
290
- value-single
291
- >
292
- </v-select>
293
- </div>
294
- </div>
295
- </div>
296
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
297
- <button class="button_search" style="margin-right: 15px" @click="addNewPlan()">创建计划</button>
298
- <button class="button_search" @click="cancel">取消</button>
299
- </div>
300
- </modal>
301
- <modal :show.sync="showUpPlan" v-ref:modal2 :backdrop="false">
302
- <div slot="modal-header" class="modal-header">
303
- <h4 class="modal-title">
304
- 修改计划
305
- </h4>
306
- </div>
307
- <div slot="modal-body" class="modal-body">
308
- <div class="row">
309
- <div class="form-group col-sm-4" >
310
- <label class="font_normal_body">计划名称:</label>
311
- <input type="text" class="input_search" v-model="upCheckPlan.f_plan_name"
312
- style="width: 60%" />
313
- </div>
314
- <div class="form-group col-sm-4" >
315
- <label class="font_normal_body">计划年份:</label>
316
- <v-select
317
- class="select select_list"
318
- :value.sync="upCheckPlan.f_plan_year"
319
- v-model="upCheckPlan.f_plan_year"
320
- :search="false"
321
- :value="upCheckPlan.f_plan_year"
322
- :options='yearList'
323
-
324
- close-on-select
325
- value-single>
326
-
327
-
328
- </v-select>
329
- <!-- <datepicker
330
- placeholder='请选择'
331
- style="width:60%"
332
- :disabled-days-of-week="[]"
333
- :format="'yyyy'"
334
- :show-rest-button="reset"
335
- :value.sync="upCheckPlan.f_plan_year"
336
- v-model="upCheckPlan.f_plan_year">
337
- </datepicker>-->
338
- </div>
339
- <div class="form-group col-sm-4" >
340
- <label class="font_normal_body">计划月份:</label>
341
- <v-select
342
- class="select select_list"
343
- :value.sync="upCheckPlan.f_plan_month"
344
- v-model="upCheckPlan.f_plan_month"
345
-
346
- :options='monthList'
347
- close-on-select
348
- value-single>
349
- </v-select>
350
- </div>
351
- <div class="form-group col-sm-4" >
352
- <label class="font_normal_body">是否共享:</label>
353
- <v-select
354
- class="select select_list"
355
- :search="false"
356
- :value.sync="upCheckPlan.isShare"
357
- v-model="upCheckPlan.isShare"
358
- :options='isAndNot'
359
- placeholder='请选择'
360
- close-on-select
361
- value-single
362
- >
363
- </v-select>
364
- </div>
365
- <div class="form-group col-sm-4" v-show="upCheckPlan.isShare=='是' && ismulchecker">
366
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
367
- <v-select
368
- class="select select_list"
369
- :value.sync="upCheckPlan.checkers"
370
- v-model="upCheckPlan.checkers"
371
- :options='checker'
372
- placeholder='请选择'
373
- :multiple="true"
374
- >
375
- </v-select>
376
- </div>
377
- <div class="form-group col-sm-4" v-show="upCheckPlan.isShare=='否'">
378
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
379
- <v-select
380
- class="select select_list"
381
- :value.sync="upCheckPlan.checker"
382
- v-model="upCheckPlan.checker"
383
- :options='checker'
384
- close-on-select
385
- value-single
386
- >
387
- </v-select>
388
- </div>
389
-
390
- <div class="form-group col-sm-4">
391
- <label class="font_normal_body">安检类型:</label>
392
- <v-select
393
- class="select select_list"
394
- :value.sync="upCheckPlan.f_safecheck_type"
395
- v-model="upCheckPlan.f_safecheck_type"
396
- :options='ntoway'
397
- close-on-select
398
- value-single
399
- >
400
- </v-select>
401
- </div>
402
- </div>
403
- </div>
404
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
405
- <button class="button_search" style="margin-right: 15px" @click="upPlan()">保存修改</button>
406
- <button class="button_search" @click="cancel">取消</button>
407
- </div>
408
- </modal>
409
- </div>
410
- </template>
411
-
412
- <script>
413
- import {SearchList,HttpResetClass, PagedList} from "vue-client";
414
- import * as Util from "../Util";
415
- import Vue from "vue";
416
- import AppData from "../../stores/AppData";
417
-
418
- export default {
419
- name: "PlanManage",
420
- title: '计划管理',
421
- data() {
422
- return {
423
- ismulchecker:this.$appdata.getSingleValue('计划安检员多选')?true:false,
424
- a:'1',
425
- opt:[{label:"按时间降序",value:"按时间降序"},{label:"按时间升序",value:"按时间升序"}],
426
- currentorder:'按时间降序',
427
- isdelete:this.$login.r ? this.$login.r.includes("安检计划删除"):false,
428
- checkplan : new SearchList(true),
429
- selectPlan:{id:''},
430
- upCheckPlan:{
431
- f_plan_name:'',
432
- f_safecheck_type:'',
433
- f_plan_year:'',
434
- f_plan_month:'',
435
- f_checker_id:'',
436
- isShare:'',
437
- f_checker:'',
438
- f_checkerstr:'',
439
- checker:{},
440
- checkers:[]
441
- },
442
- isSend:false,
443
- createPlan:{
444
- f_plan_name:'',
445
- f_plan_year:'',
446
- f_plan_month:'',
447
- isShare:'否',
448
- f_issued:'否',
449
- f_checker_id:null,
450
- checker:{},
451
- checkers:[],
452
- f_checker:null,
453
- f_checkerstr:null,
454
- f_safecheck_type:'',
455
- },
456
- planCondition:{},
457
- showCondtion:false,
458
- showCreatePlan:false,
459
- showUpPlan:false,
460
- isAndNot:[{label:'是',value:'是'},{label:'否',value:'否'}],
461
- conIsAndNot:[{label:'是',value:'is null'},{label:'否',value:'is not null'}],
462
- yearList:[{label:2020,value:2020},{label:2021,value:2021},{label:2022,value:2022},{label:2023,value:2023},{label:2024,value:2024},{label:2025,value:2025},{label:2026,value:2026},{label:2027,value:2027},{label:2028,value:2028},{label:2029,value:2029},{label:2030,value:2030}],
463
- monthList:[{label:"1",value:1},{label:"2",value:2},{label:"3",value:3},{label:"4",value:4},{label:"5",value:5},{label:"6",value:6},{label:"7",value:7},{label:"8",value:8},{label:"9",value:9},{label:"10",value:10},{label:"11",value:11},{label:"12",value:12}],
464
- safechecktype:[{label:'年度普检',value:'年度普检'}],
465
- checker:[],
466
- checkertCon:[],
467
- userlogin:{
468
- id:this.$login.f.id,
469
- name:this.$login.f.name,
470
- orgid:this.$login.f.orgid,
471
- orgstr:this.$login.f.orgs,
472
- }
473
- //需要测试直接把下面放开即可
474
- /*userlogin:{
475
- id:'141701',
476
- name:'hwq',
477
- orgid:'35526',
478
- orgstr:'西华县天然气有限公司'
479
- }*/
480
- }
481
- },
482
- async ready(){
483
- await this.loadpage()
484
- if (!this.userlogin.orgid){
485
- if (this.$login.f.f_orgids){
486
- this.userlogin.orgid = this.$login.f.f_orgids.endsWith('.')?this.$login.f.f_orgids.substring(0,this.$login.f.f_orgids.length-1):this.$login.f.f_orgids
487
- }else {
488
- this.userlogin.orgid = ''
489
- }
490
- }
491
- },
492
- computed: {
493
- ntoway() {
494
- /*/!* return AppData.getParam('安检类型')*!/*/
495
- return this.$appdata.getParam('安检类型')
496
- }
497
- },
498
- methods:{
499
- /* ntoway() {
500
- /!* return AppData.getParam('安检类型')*!/
501
- return Vue.$appdata.getParam('安检类型')
502
- },*/
503
- async loadpage(){
504
- //await this.checkplan.searchList("/api/af-safecheck/sql/预约计划下发", {},{groupitem:"",f_filialeids:"('"+this.userlogin.orgid+"')",orderitem:"f_create_time desc"})
505
- await this.loadCheckPlan()
506
- await this.searchChecker(this.userlogin.id)
507
- },
508
- getRes(obj) {
509
- console.log("----obj"+JSON.stringify(obj.resids))
510
- console.log(obj)
511
- if(obj.resids.length>0 && obj.resids[0]!=this.userlogin.orgid && obj.resids[0]){
512
- this.userlogin.orgid=obj.resids[0]
513
- this.userlogin.orgstr=obj.res[0]
514
- if(this.$refs.item && this.$refs.user){
515
- this.loadpage()
516
- this.selectPlan={id:""}
517
- this.$refs.item.model.rows=[]
518
- this.$refs.user.model.rows=[]
519
- this.$refs.user.loadpage()
520
- }
521
- }
522
- },
523
- getConList(field){
524
- return [{label:'全部',value:''}, ...this[field]]
525
- },
526
- selectPlanChange(plan){
527
- this.selectPlan=plan
528
- //this.upCheckPlan=plan
529
- },
530
- showUserCondition(){
531
- this.showCondtion=true
532
- },
533
- showcCreatePlan(){
534
- this.showCreatePlan=true
535
- },
536
- cancel(){
537
- this.showCondtion=false
538
- this.showCreatePlan=false
539
- this.showUpPlan=false
540
- },
541
- //新建计划
542
- async addNewPlan() {
543
- if(!this.validationCreatePlan()){
544
- return
545
- }
546
- this.isSend=true
547
- let res=await new HttpResetClass().load("POST","/api/af-safecheck/sql/getCheckplan", {data: {condition:"f_plan_name='"+this.createPlan.f_plan_name+"'",sortfield:'f_create_time desc'}})
548
- console.log("结果-"+res.data.length)
549
- if(res.data.length>0){
550
- Vue.showMessage("计划名称不能重复!")
551
- this.isSend=false
552
- return
553
- }
554
- if(this.createPlan.isShare=="是"){
555
- if(this.ismulchecker && this.createPlan.checkers.length > 0){
556
- this.createPlan.checkers.forEach((value) => {
557
- this.createPlan.f_checkerstr += `${value.name},`
558
- })
559
- this.createPlan.f_checkerstr = this.createPlan.f_checkerstr.slice(0, -1)
560
- }
561
- this.createPlan.f_checker_id=null
562
- this.createPlan.f_checker=null
563
- }else{
564
- this.createPlan.f_checker_id=this.createPlan.checker.id
565
- this.createPlan.f_checker=this.createPlan.checker.name
566
- }
567
- console.log("this.createPlan.f_checker:"+this.createPlan.f_checker)
568
- this.createPlan.f_plan_type='预约计划'
569
- this.createPlan.f_subcompany=this.userlogin.orgstr
570
- this.createPlan.f_filialeid=this.userlogin.orgid
571
- this.createPlan.f_create_operator=this.userlogin.name
572
- this.createPlan.f_create_time=Util.toStandardTimeString()
573
- await new HttpResetClass().load('POST',"/api/af-safecheck/logic/createCheckPlan", {"data": this.createPlan},{resolveMsg : '新建计划成功!', rejectMsg : '新建计划失败!'})
574
- //await this.loadCheckPlan('',()=>{})
575
- this.createPlan={
576
- f_plan_name:'',
577
- f_plan_year:'',
578
- f_plan_month:'',
579
- isShare:'否',
580
- f_issued:'否',
581
- f_checker_id:null,
582
- checker:{},
583
- checkers:[],
584
- f_checker:null,
585
- f_checkerstr:null,
586
- f_safecheck_type:'',
587
- f_create_operator:''
588
- }
589
- await this.loadCheckPlan()
590
- this.isSend=false
591
-
592
- },
593
- validationCreatePlan(){
594
- if(!this.createPlan.f_plan_name){
595
- Vue.showMessage("请输入安检计划名称!")
596
- return false
597
- }
598
- if(!this.createPlan.f_plan_year){
599
- Vue.showMessage("请选择安检年份!")
600
- return false
601
- }
602
- if(!this.createPlan.f_plan_month){
603
- Vue.showMessage("请选择安检月份!")
604
- return false
605
- }
606
- if(this.createPlan.isShare=="否"){
607
- if(JSON.stringify(this.createPlan.checker)=='{}'){
608
- Vue.showMessage("请选择安检人员!")
609
- return false
610
- }
611
- }else{
612
- this.createPlan.f_checker=''
613
- }
614
- if(!this.createPlan.f_safecheck_type){
615
- Vue.showMessage("请选择安检类型!")
616
- return false
617
- }
618
- return true
619
- },
620
- //查询安检员selectChanged
621
- async searchChecker(id){
622
- let res=await new HttpResetClass().load('POST', '/rs/search', {
623
- data:{
624
- source: `this.getSpecialResByType($user$).where(row.getAttributes().get($rolestr$)!=null ).where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1)`,
625
- userid: this.userlogin.orgid
626
- }
627
- }, {resolveMsg: null, rejectMsg: null})
628
- let arr = []
629
- res.data.forEach((resRow) => {
630
- if (!arr.includes(resRow.name) && resRow.state == '在职'){
631
- arr.push(resRow.name)
632
- this.checker.push({label:resRow.name,value:resRow})
633
- }
634
- })
635
- },
636
- //设置属性值
637
- setProperty(modulename, property, value) {
638
- console.log(modulename+"新添--"+property+"--"+value)
639
- if(value=='全部'){
640
- this[modulename].search.setField(property, '')
641
- }else{
642
- this[modulename].search.setField(property, value)
643
- }
644
- },
645
- //按条件查询所有安检计划
646
- async loadCheckPlan() {
647
- this.isSend=true
648
- this.checkplan.check.checkescheckes=[]
649
- let fieldValue=''
650
- switch(this.currentorder){
651
- case "按时间降序":
652
- fieldValue='f_create_time desc'
653
- break
654
- case "按时间升序":
655
- fieldValue='f_create_time'
656
- break
657
- }
658
- console.log("--------fieldValue"+fieldValue)
659
- this.cancel()
660
- await this.checkplan.searchList("/api/af-safecheck/sql/预约计划下发",
661
- {"f_plan_name": "f_plan_name like '%{}%'",
662
- "f_plan_year":"f_plan_year={}",
663
- "f_plan_month":"f_plan_month={}",
664
- "checkerid":"f_checker_id='{}'",
665
- "isAndNot":"f_checker {}",
666
- "safechecktype":"f_safecheck_type='{}'",
667
- "issude":"f_issued = '{}'",
668
- "f_create_operator": "f_create_operator like '%{}%'"
669
- },
670
- {orderitem:fieldValue,
671
- f_filialeids:"('"+this.userlogin.orgid+"')",
672
- groupitem:""
673
- }
674
- )
675
-
676
- this.isSend=false
677
- },
678
- //加载更多数据
679
- async loadMore(modelname) {
680
- this.isSend=true
681
- await this[modelname].list.loadMore()
682
- this.isSend=false
683
- },
684
- showUpPlans(row){
685
- this.upCheckPlan.id=row.id
686
- this.upCheckPlan.f_safecheck_type=row.f_safecheck_type
687
- this.upCheckPlan.f_plan_name=row.f_plan_name
688
- this.upCheckPlan.f_plan_year=row.f_plan_year
689
- this.upCheckPlan.f_plan_month=row.f_plan_month
690
- this.upCheckPlan.f_checker_id=row.f_checker_id?row.f_checker_id:null
691
- this.upCheckPlan.f_checker=row.f_checker?row.f_checker:null
692
- this.upCheckPlan.isShare=row.f_checker_id?'否':'是'
693
- this.upCheckPlan.f_issued=row.f_issued
694
- this.upCheckPlan.checker={id:row.f_checker_id,name:row.f_checker}
695
- this.showUpPlan=true
696
- },
697
- async upPlan(){
698
- if(this.upCheckPlan.f_issued=='已下发'){
699
- this.$showMessage("该计划已下发,无法进行修改!")
700
- return
701
- }
702
- if(!this.upCheckPlan.f_plan_name){
703
- Vue.showMessage("请输入安检计划名称!")
704
- return false
705
- }
706
- if(!this.upCheckPlan.f_plan_year){
707
- Vue.showMessage("请选择安检年份!")
708
- return false
709
- }
710
- if(!this.upCheckPlan.f_plan_month){
711
- Vue.showMessage("请选择安检月份!")
712
- return false
713
- }
714
- console.log(this.upCheckPlan)
715
-
716
- if(this.upCheckPlan.isShare=="是"){
717
- if(this.ismulchecker && this.upCheckPlan.checkers.length > 0){
718
- this.upCheckPlan.checkers.forEach((value) => {
719
- this.upCheckPlan.f_checkerstr += `${value.name},`
720
- })
721
- this.upCheckPlan.f_checkerstr = this.upCheckPlan.f_checkerstr.slice(0, -1)
722
- }
723
- this.upCheckPlan.f_checker_id=null
724
- this.upCheckPlan.f_checker=null
725
- }else{
726
- this.upCheckPlan.f_checker_id=this.upCheckPlan.checker.id
727
- this.upCheckPlan.f_checker=this.upCheckPlan.checker.name
728
- }
729
- this.isSend=true
730
- let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/updateCheckPlan", {
731
- data:{
732
- checkers:this.createPlan.checkers,
733
- f_checkerstr:this.createPlan.f_checkerstr,
734
- f_checker:this.upCheckPlan.f_checker,
735
- f_safecheck_type:this.upCheckPlan.f_safecheck_type,
736
- f_checker_id:this.upCheckPlan.f_checker_id,
737
- f_plan_name:this.upCheckPlan.f_plan_name,
738
- f_plan_year:this.upCheckPlan.f_plan_year,
739
- f_plan_month:this.upCheckPlan.f_plan_month,
740
- f_plan_id:this.upCheckPlan.id
741
- }
742
- }, {resolveMsg: null, rejectMsg: null})
743
- if(res.data.code==200){
744
- this.$showMessage("修改成功!")
745
- this.cancel()
746
- await this.loadCheckPlan()
747
- }else{
748
- this.$showMessage("修改失败!")
749
- }
750
- this.isSend=false
751
- },
752
- //下发安检计划
753
- async sendCheckPlan(f){
754
- if(this.checkplan.check.checkes.length<1){
755
- this.$showMessage("请选择要下发的安检计划")
756
- return
757
- }
758
- this.isSend=true
759
- let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/NewBespeakCheckPlan", {
760
- data:{
761
- f_issued:'是',
762
- f_issue_time:Util.toStandardTimeString(),
763
- f_send_operator:this.userlogin.name,
764
- param:this.checkplan.check.checkes,
765
- }
766
- }, {resolveMsg: null, rejectMsg: null})
767
- if(res.data.code==200){
768
- //Vue.showMessage("下发成功!其中有"+res.data.repet+"个计划己经是下发状态")
769
- this.$showMessage("下发成功!")
770
- }else{
771
- this.$showMessage("下发失败!")
772
- }
773
- await this.loadCheckPlan()
774
- this.isSend=false
775
- },
776
- //删除安检计划
777
- async delCheckPlan(f){
778
- if(this.checkplan.check.checkes.length<1){
779
- this.$showMessage("请选择要删除的安检计划")
780
- return
781
- }
782
- this.isSend=true
783
- let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/deleteCheckPlan", {
784
- data:{
785
- f_operator:this.userlogin.name,//global.login.name,
786
- condition:"",
787
- switchCheckAll:true,
788
- checkAll:false,
789
- param:this.checkplan.check.checkes,
790
- columnName: "f_plan_id"
791
- }
792
- }, {resolveMsg: null, rejectMsg: null})
793
- console.log(JSON.stringify(res))
794
- if(res.data.code==200){
795
- this.$showMessage("删除成功!")
796
- }else{
797
- this.$showMessage("删除失败!")
798
- }
799
- if(this.checkplan.check.checkes.indexOf(this.selectPlan.id)!= -1){
800
- this.selectPlan={id:''}
801
- console.log("包含了清空selectplan")
802
- }
803
- await this.loadCheckPlan()
804
- this.isSend=false
805
- },
806
- async refresh(){
807
- this.$refs.item.$refs.paged.$refs.criteria.search()
808
- this.$refs.user.$refs.paged.$refs.criteria.search()
809
- await this.loadCheckPlan()
810
- },
811
- async refreshPlan(){
812
- this.$refs.item.$refs.paged.$refs.criteria.search()
813
- await this.loadCheckPlan()
814
- }
815
- }
816
- }
817
- </script>
818
-
819
- <style scoped>
820
- .safe-planfont{
821
- font-family: MicrosoftYaHei;
822
- font-size: 15px;
823
- font-weight: normal;
824
- font-stretch: normal;
825
- letter-spacing: 2px;
826
- color: #333333;
827
- line-height: 25px;
828
- }
829
- .safe-bodyfont{
830
- font-family: MicrosoftYaHei;
831
- font-size: 14px;
832
- font-weight: normal;
833
- font-stretch: normal;
834
- letter-spacing: 0px;
835
- color: #999999;
836
- line-height: 30px;
837
- }
838
- .safe-leftplan{
839
- height:auto;
840
- border-bottom:1px solid #ececec;
841
- padding: 10px 5px
842
- }
843
- .leftplan-center{
844
- border-top:1px solid #ececec;
845
- border-bottom:1px solid #ececec;
846
- }
847
- .safe_p{
848
- white-space: nowrap;
849
- overflow: hidden;
850
- text-overflow: ellipsis;
851
- }
852
- .safe-div-p{
853
- color: #4792de;
854
- text-align: end;
855
- padding: 8px 15px;
856
- }
857
- .safe_list_li:hover{
858
- background-color: rgb(245,246,247);
859
- }
860
- .safe-selectplan{
861
- pointer-events: none;
862
- background-color: rgb(216,234,251);
863
- }
864
- .safe_plan_list{
865
- height: 80%;
866
- overflow: scroll;
867
- }
868
-
869
- </style>
870
- <style>
871
- .safe_plan_list::-webkit-scrollbar{
872
- background-color: #F5F5F5;
873
- }
874
-
875
- /*定义滚动条轨道 内阴影+圆角*/
876
- .safe_plan_list::-webkit-scrollbar-track{
877
- -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
878
- border-radius: 10px;
879
- background-color: #F5F5F5;
880
- }
881
-
882
- /*定义滑块 内阴影+圆角*/
883
- .safe_plan_list::-webkit-scrollbar-thumb{
884
- border-radius: 10px;
885
- -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
886
- background-color: #F5F5F5;
887
- }
888
- </style>
1
+ <template>
2
+ <work-busy :is-busy="isSend"></work-busy>
3
+ <div class="binary" style="background-color: #e8f4ff">
4
+ <!--左侧安检计划列表******************************************************-->
5
+ <div class="binary-left flex flex-column" style="width: 16%">
6
+ <div style="height: 9%">
7
+ <div class="row auto">
8
+ <img style="width: 20px;margin: 0 5px" src="../../../static/images/searchhover.png" @click="showUserCondition()"/>
9
+ <v-select :width="'80%'"
10
+ class="select select_list"
11
+ :search="false"
12
+ :value.sync="currentorder"
13
+ v-model="currentorder"
14
+ @change="loadCheckPlan"
15
+ :options='opt'
16
+ close-on-select value-single >
17
+ </v-select>
18
+ </div>
19
+ <div class="row auto safe-div-p"><!--<span style="margin-right: 5px" @click="refresh()" style="cursor:default">测试</span>--><span style="margin-right: 5px" @click="delCheckPlan()" style="cursor:default" v-if="isdelete">删除</span> <span @click="sendCheckPlan()" style="cursor:default">下发</span></div>
20
+ </div>
21
+ <div class="leftplan-center safe_plan_list">
22
+ <div class="row safe-leftplan safe_list_li" :class="{'safe-selectplan':selectPlan.id==row.id}" v-for="row in checkplan.list.data" @click="selectPlanChange(row)">
23
+ <table style="width:100%;table-layout:fixed" >
24
+ <tr class="safe-planfont">
25
+ <td rowspan="6"><input type="checkbox" style="pointer-events:auto" v-show="row.plan_count==0 || row.f_issued=='未下发'" onClick="event.cancelBubble = true" :checked="checkplan.check.isChecked(row.f_check_item_id)" @change="checkplan.check.setCheckes(row.id)"/></td>
26
+ <td colspan="6" class="safe_p">{{row.f_plan_name}}</td>
27
+ <td colspan="2" style="text-align: center"><img width="20px" style="pointer-events:auto" onClick="event.cancelBubble = true" @click="showUpPlans(row)" src="../../../static/images/edit.png"/></td>
28
+ </tr>
29
+ <tr class="safe-bodyfont" style="color:#4792de">
30
+ <td colspan="6">{{row.f_issued}}</td>
31
+ <td colspan="2" class="safe_p">{{row.f_checker?row.f_checker:'共享'}}</td>
32
+ </tr>
33
+ <tr class="safe-bodyfont">
34
+ <td colspan="4">{{row.f_plan_year}}-{{row.f_plan_month}}</td>
35
+ <td colspan="2">总 :</td>
36
+ <td colspan="2">{{row.plan_count}}</td>
37
+ </tr>
38
+ <tr class="safe-bodyfont">
39
+ <td colspan="2">未检 :</td>
40
+ <td colspan="2">{{row.unchecked}}</td>
41
+ <td colspan="2">已检 :</td>
42
+ <td colspan="2">{{row.checked}}</td>
43
+ </tr>
44
+ <tr class="safe-bodyfont" v-if="row.f_create_time">
45
+ <td colspan="3">创建时间 :</td>
46
+ <td colspan="5" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :title="row.f_create_time">{{row.f_create_time}}</td>
47
+ </tr>
48
+ <tr class="safe-bodyfont" v-if="row.f_safecheck_type">
49
+ <td colspan="3">安检类型 :</td>
50
+ <td colspan="5" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :title="row.f_safecheck_type">{{row.f_safecheck_type}}</td>
51
+ </tr>
52
+ </table>
53
+ </div>
54
+ </div>
55
+ <div style="height: 11%">
56
+ <div class="row auto leftplan-center" style="padding: 8px">
57
+ <div class="col-sm-6" style="">
58
+ <span>共{{checkplan.list.count}}条</span>
59
+ </div>
60
+ <div class="col-sm-6" style="text-align: end">
61
+ <span @click="loadMore('checkplan')"><img src="../../../static/images/doubledown.png"/>&ensp;更多</span>
62
+ </div>
63
+ </div>
64
+ <div class="row auto" style="padding: 10px;text-align: center">
65
+ <img src="../../../static/images/addnew.png" @click="showcCreatePlan()"/>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ <!--右侧列表**************************************************************************-->
70
+ <div class="binary-right" style="width: 84%;overflow: auto">
71
+ <div style="height: 5%">
72
+ <div class="col-sm-4">
73
+ <label class="font_normal_body">公&emsp;&emsp;司</label>
74
+ <right-tree-safe :islist="false" :width="'60%'" @re-res="getRes"></right-tree-safe>
75
+ </div>
76
+ </div>
77
+ <div style="height: 95%">
78
+ <div style="height: 50%" class="leftplan-center">
79
+ <check-plan-list :selectplan="selectPlan" :userlogin="userlogin" v-ref:item></check-plan-list>
80
+ </div>
81
+ <div style="height: 50%">
82
+ <check-user-list :selectplan="selectPlan" :userlogin="userlogin" v-ref:user></check-user-list>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ <modal :show.sync="showCondtion" v-ref:modal :width="'50%'" :backdrop="false">
87
+ <div slot="modal-header" class="modal-header">
88
+ <h4 class="modal-title">
89
+ 计划查询条件
90
+ </h4>
91
+ </div>
92
+ <div slot="modal-body" class="modal-body">
93
+ <div class="row">
94
+ <div class="form-group col-sm-4" >
95
+ <label class="font_normal_body">计划名称:</label>
96
+ <input type="text" class="input_search" v-model="planCondition.f_plan_name" @change="setProperty('checkplan','f_plan_name',planCondition.f_plan_name)"
97
+ style="width: 60%" placeholder="请选择" />
98
+ </div>
99
+ <div class="form-group col-sm-4" >
100
+ <label class="font_normal_body">计划年份:</label>
101
+ <v-select
102
+ class="select select_list"
103
+ :value.sync="planCondition.f_plan_year"
104
+ v-model="planCondition.f_plan_year"
105
+ @change="setProperty('checkplan','f_plan_year',planCondition.f_plan_year)"
106
+ :search="false"
107
+ :options='getConList("yearList")'
108
+ placeholder='请选择'
109
+ close-on-select
110
+ value-single
111
+ >
112
+ </v-select>
113
+ </div>
114
+ <div class="form-group col-sm-4" >
115
+ <label class="font_normal_body">计划月份:</label>
116
+ <v-select
117
+ class="select select_list"
118
+ :value.sync="planCondition.f_plan_month"
119
+ v-model="planCondition.f_plan_month"
120
+ @change="setProperty('checkplan','f_plan_month',planCondition.f_plan_month)"
121
+ :search="false"
122
+ :options='getConList("monthList")'
123
+ placeholder='请选择'
124
+ close-on-select
125
+ value-single>
126
+ </v-select>
127
+ </div>
128
+ <div class="form-group col-sm-4" >
129
+ <label class="font_normal_body">是否共享:</label>
130
+ <v-select
131
+ class="select select_list"
132
+ :value.sync="planCondition.isShare"
133
+ v-model="planCondition.isShare"
134
+ @change="setProperty('checkplan','isAndNot',planCondition.isShare)"
135
+ :options='getConList("conIsAndNot")'
136
+ :search="false"
137
+ placeholder='请选择'
138
+ close-on-select
139
+ value-single
140
+ >
141
+ </v-select>
142
+ </div>
143
+ <div class="form-group col-sm-4" >
144
+ <label class="font_normal_body">是否下发:</label>
145
+ <v-select
146
+ class="select select_list"
147
+ :value.sync="planCondition.issued"
148
+ v-model="planCondition.issued"
149
+ :options='getConList("isAndNot")'
150
+ @change="setProperty('checkplan','issude',planCondition.issued)"
151
+ placeholder='请选择'
152
+ :search="false"
153
+ close-on-select
154
+ value-single
155
+ >
156
+ </v-select>
157
+ </div>
158
+ <div class="form-group col-sm-4" >
159
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
160
+ <v-select
161
+ class="select select_list"
162
+ :value.sync="planCondition.f_checker"
163
+ v-model="planCondition.f_checker"
164
+ @change="setProperty('checkplan','checkerid',planCondition.f_checker.id)"
165
+ :options='getConList("checker")'
166
+ placeholder='请选择'
167
+ close-on-select
168
+ value-single
169
+ >
170
+ </v-select>
171
+ </div>
172
+
173
+ <div class="form-group col-sm-4" >
174
+ <label class="font_normal_body">安检类型:</label>
175
+ <v-select
176
+ class="select select_list"
177
+ :value.sync="planCondition.f_safecheck_type"
178
+ v-model="planCondition.f_safecheck_type"
179
+ @change="setProperty('checkplan','safechecktype',planCondition.f_safecheck_type)"
180
+ :options='getConList("safechecktype")'
181
+ placeholder='请选择'
182
+ :search="false"
183
+ close-on-select
184
+ value-single
185
+ >
186
+ </v-select>
187
+ </div>
188
+ <div class="form-group col-sm-4" >
189
+ <label class="font_normal_body">创&ensp;建&ensp;人:</label>
190
+ <input type="text" class="input_search" v-model="planCondition.f_create_operator" @change="setProperty('checkplan','f_create_operator',planCondition.f_create_operator)"
191
+ style="width: 60%" placeholder="创建人" />
192
+ </div>
193
+ </div>
194
+ </div>
195
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
196
+ <button class="button_search" @click="loadCheckPlan" style="margin-right: 15px">查询</button>
197
+ <button class="button_search" @click="cancel">取消</button>
198
+ </div>
199
+ </modal>
200
+ <modal :show.sync="showCreatePlan" v-ref:modal1 :width="'50%'" :backdrop="false">
201
+ <div slot="modal-header" class="modal-header">
202
+ <h4 class="modal-title">
203
+ 新建计划
204
+ </h4>
205
+ </div>
206
+ <div slot="modal-body" class="modal-body">
207
+ <div class="row">
208
+ <div class="form-group col-sm-4" >
209
+ <label class="font_normal_body">计划名称:</label>
210
+ <input type="text" class="input_search" v-model="createPlan.f_plan_name"
211
+ style="width: 60%" placeholder="请选择" />
212
+ </div>
213
+ <div class="form-group col-sm-4" >
214
+ <label class="font_normal_body">计划年份:</label>
215
+ <v-select
216
+ class="select select_list"
217
+ :value.sync="createPlan.f_plan_year"
218
+ v-model="createPlan.f_plan_year"
219
+ :search="false"
220
+ :options='yearList'
221
+ placeholder='请选择'
222
+ close-on-select
223
+ value-single
224
+ >
225
+ </v-select>
226
+ </div>
227
+ <div class="form-group col-sm-4" >
228
+ <label class="font_normal_body">计划月份:</label>
229
+ <v-select
230
+ class="select select_list"
231
+ :value.sync="createPlan.f_plan_month"
232
+ v-model="createPlan.f_plan_month"
233
+ :search="false"
234
+ :options='monthList'
235
+ placeholder='请选择'
236
+ close-on-select
237
+ value-single>
238
+ </v-select>
239
+ </div>
240
+ <div class="form-group col-sm-4" >
241
+ <label class="font_normal_body">是否共享:</label>
242
+ <v-select
243
+ class="select select_list"
244
+ :search="false"
245
+ :value.sync="createPlan.isShare"
246
+ v-model="createPlan.isShare"
247
+ :options='isAndNot'
248
+ placeholder='请选择'
249
+ close-on-select
250
+ value-single
251
+ >
252
+ </v-select>
253
+ </div>
254
+ <div class="form-group col-sm-4" v-show="createPlan.isShare=='是' && ismulchecker">
255
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
256
+ <v-select
257
+ class="select select_list"
258
+ :value.sync="createPlan.checkers"
259
+ v-model="createPlan.checkers"
260
+ :options='checker'
261
+ placeholder='请选择'
262
+ :multiple="true"
263
+ >
264
+ </v-select>
265
+ </div>
266
+ <div class="form-group col-sm-4" v-show="createPlan.isShare=='否'">
267
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
268
+ <v-select
269
+ class="select select_list"
270
+ :value.sync="createPlan.checker"
271
+ v-model="createPlan.checker"
272
+ :options='checker'
273
+ placeholder='请选择'
274
+ close-on-select
275
+ value-single
276
+ >
277
+ </v-select>
278
+ </div>
279
+
280
+ <div class="form-group col-sm-4" >
281
+ <label class="font_normal_body">安检类型:</label>
282
+ <v-select
283
+ class="select select_list"
284
+ :value.sync="createPlan.f_safecheck_type"
285
+ v-model="createPlan.f_safecheck_type"
286
+ :search="false"
287
+ :options='ntoway'
288
+ placeholder='请选择'
289
+ close-on-select
290
+ value-single
291
+ >
292
+ </v-select>
293
+ </div>
294
+ </div>
295
+ </div>
296
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
297
+ <button class="button_search" style="margin-right: 15px" @click="addNewPlan()">创建计划</button>
298
+ <button class="button_search" @click="cancel">取消</button>
299
+ </div>
300
+ </modal>
301
+ <modal :show.sync="showUpPlan" v-ref:modal2 :backdrop="false">
302
+ <div slot="modal-header" class="modal-header">
303
+ <h4 class="modal-title">
304
+ 修改计划
305
+ </h4>
306
+ </div>
307
+ <div slot="modal-body" class="modal-body">
308
+ <div class="row">
309
+ <div class="form-group col-sm-4" >
310
+ <label class="font_normal_body">计划名称:</label>
311
+ <input type="text" class="input_search" v-model="upCheckPlan.f_plan_name"
312
+ style="width: 60%" />
313
+ </div>
314
+ <div class="form-group col-sm-4" >
315
+ <label class="font_normal_body">计划年份:</label>
316
+ <v-select
317
+ class="select select_list"
318
+ :value.sync="upCheckPlan.f_plan_year"
319
+ v-model="upCheckPlan.f_plan_year"
320
+ :search="false"
321
+ :value="upCheckPlan.f_plan_year"
322
+ :options='yearList'
323
+
324
+ close-on-select
325
+ value-single>
326
+
327
+
328
+ </v-select>
329
+ <!-- <datepicker
330
+ placeholder='请选择'
331
+ style="width:60%"
332
+ :disabled-days-of-week="[]"
333
+ :format="'yyyy'"
334
+ :show-rest-button="reset"
335
+ :value.sync="upCheckPlan.f_plan_year"
336
+ v-model="upCheckPlan.f_plan_year">
337
+ </datepicker>-->
338
+ </div>
339
+ <div class="form-group col-sm-4" >
340
+ <label class="font_normal_body">计划月份:</label>
341
+ <v-select
342
+ class="select select_list"
343
+ :value.sync="upCheckPlan.f_plan_month"
344
+ v-model="upCheckPlan.f_plan_month"
345
+
346
+ :options='monthList'
347
+ close-on-select
348
+ value-single>
349
+ </v-select>
350
+ </div>
351
+ <div class="form-group col-sm-4" >
352
+ <label class="font_normal_body">是否共享:</label>
353
+ <v-select
354
+ class="select select_list"
355
+ :search="false"
356
+ :value.sync="upCheckPlan.isShare"
357
+ v-model="upCheckPlan.isShare"
358
+ :options='isAndNot'
359
+ placeholder='请选择'
360
+ close-on-select
361
+ value-single
362
+ >
363
+ </v-select>
364
+ </div>
365
+ <div class="form-group col-sm-4" v-show="upCheckPlan.isShare=='是' && ismulchecker">
366
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
367
+ <v-select
368
+ class="select select_list"
369
+ :value.sync="upCheckPlan.checkers"
370
+ v-model="upCheckPlan.checkers"
371
+ :options='checker'
372
+ placeholder='请选择'
373
+ :multiple="true"
374
+ >
375
+ </v-select>
376
+ </div>
377
+ <div class="form-group col-sm-4" v-show="upCheckPlan.isShare=='否'">
378
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
379
+ <v-select
380
+ class="select select_list"
381
+ :value.sync="upCheckPlan.checker"
382
+ v-model="upCheckPlan.checker"
383
+ :options='checker'
384
+ close-on-select
385
+ value-single
386
+ >
387
+ </v-select>
388
+ </div>
389
+
390
+ <div class="form-group col-sm-4">
391
+ <label class="font_normal_body">安检类型:</label>
392
+ <v-select
393
+ class="select select_list"
394
+ :value.sync="upCheckPlan.f_safecheck_type"
395
+ v-model="upCheckPlan.f_safecheck_type"
396
+ :options='ntoway'
397
+ close-on-select
398
+ value-single
399
+ >
400
+ </v-select>
401
+ </div>
402
+ </div>
403
+ </div>
404
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
405
+ <button class="button_search" style="margin-right: 15px" @click="upPlan()">保存修改</button>
406
+ <button class="button_search" @click="cancel">取消</button>
407
+ </div>
408
+ </modal>
409
+ </div>
410
+ </template>
411
+
412
+ <script>
413
+ import {SearchList,HttpResetClass, PagedList} from "vue-client";
414
+ import * as Util from "../Util";
415
+ import Vue from "vue";
416
+ import AppData from "../../stores/AppData";
417
+
418
+ export default {
419
+ name: "PlanManage",
420
+ title: '计划管理',
421
+ data() {
422
+ return {
423
+ ismulchecker:this.$appdata.getSingleValue('计划安检员多选')?true:false,
424
+ a:'1',
425
+ opt:[{label:"按时间降序",value:"按时间降序"},{label:"按时间升序",value:"按时间升序"}],
426
+ currentorder:'按时间降序',
427
+ isdelete:this.$login.r ? this.$login.r.includes("安检计划删除"):false,
428
+ checkplan : new SearchList(true),
429
+ selectPlan:{id:''},
430
+ upCheckPlan:{
431
+ f_plan_name:'',
432
+ f_safecheck_type:'',
433
+ f_plan_year:'',
434
+ f_plan_month:'',
435
+ f_checker_id:'',
436
+ isShare:'',
437
+ f_checker:'',
438
+ f_checkerstr:'',
439
+ checker:{},
440
+ checkers:[]
441
+ },
442
+ isSend:false,
443
+ createPlan:{
444
+ f_plan_name:'',
445
+ f_plan_year:'',
446
+ f_plan_month:'',
447
+ isShare:'否',
448
+ f_issued:'否',
449
+ f_checker_id:null,
450
+ checker:{},
451
+ checkers:[],
452
+ f_checker:null,
453
+ f_checkerstr:null,
454
+ f_safecheck_type:'',
455
+ },
456
+ planCondition:{},
457
+ showCondtion:false,
458
+ showCreatePlan:false,
459
+ showUpPlan:false,
460
+ isAndNot:[{label:'是',value:'是'},{label:'否',value:'否'}],
461
+ conIsAndNot:[{label:'是',value:'is null'},{label:'否',value:'is not null'}],
462
+ yearList:[{label:2020,value:2020},{label:2021,value:2021},{label:2022,value:2022},{label:2023,value:2023},{label:2024,value:2024},{label:2025,value:2025},{label:2026,value:2026},{label:2027,value:2027},{label:2028,value:2028},{label:2029,value:2029},{label:2030,value:2030}],
463
+ monthList:[{label:"1",value:1},{label:"2",value:2},{label:"3",value:3},{label:"4",value:4},{label:"5",value:5},{label:"6",value:6},{label:"7",value:7},{label:"8",value:8},{label:"9",value:9},{label:"10",value:10},{label:"11",value:11},{label:"12",value:12}],
464
+ safechecktype:[{label:'年度普检',value:'年度普检'}],
465
+ checker:[],
466
+ checkertCon:[],
467
+ userlogin:{
468
+ id:this.$login.f.id,
469
+ name:this.$login.f.name,
470
+ orgid:this.$login.f.orgid,
471
+ orgstr:this.$login.f.orgs,
472
+ }
473
+ //需要测试直接把下面放开即可
474
+ /*userlogin:{
475
+ id:'141701',
476
+ name:'hwq',
477
+ orgid:'35526',
478
+ orgstr:'西华县天然气有限公司'
479
+ }*/
480
+ }
481
+ },
482
+ async ready(){
483
+ await this.loadpage()
484
+ if (!this.userlogin.orgid){
485
+ if (this.$login.f.f_orgids){
486
+ this.userlogin.orgid = this.$login.f.f_orgids.endsWith('.')?this.$login.f.f_orgids.substring(0,this.$login.f.f_orgids.length-1):this.$login.f.f_orgids
487
+ }else {
488
+ this.userlogin.orgid = ''
489
+ }
490
+ }
491
+ },
492
+ computed: {
493
+ ntoway() {
494
+ /*/!* return AppData.getParam('安检类型')*!/*/
495
+ return this.$appdata.getParam('安检类型')
496
+ }
497
+ },
498
+ methods:{
499
+ /* ntoway() {
500
+ /!* return AppData.getParam('安检类型')*!/
501
+ return Vue.$appdata.getParam('安检类型')
502
+ },*/
503
+ async loadpage(){
504
+ //await this.checkplan.searchList("/api/af-safecheck/sql/预约计划下发", {},{groupitem:"",f_filialeids:"('"+this.userlogin.orgid+"')",orderitem:"f_create_time desc"})
505
+ await this.loadCheckPlan()
506
+ await this.searchChecker(this.userlogin.id)
507
+ },
508
+ getRes(obj) {
509
+ console.log("----obj"+JSON.stringify(obj.resids))
510
+ console.log(obj)
511
+ if(obj.resids.length>0 && obj.resids[0]!=this.userlogin.orgid && obj.resids[0]){
512
+ this.userlogin.orgid=obj.resids[0]
513
+ this.userlogin.orgstr=obj.res[0]
514
+ if(this.$refs.item && this.$refs.user){
515
+ this.loadpage()
516
+ this.selectPlan={id:""}
517
+ this.$refs.item.model.rows=[]
518
+ this.$refs.user.model.rows=[]
519
+ this.$refs.user.loadpage()
520
+ }
521
+ }
522
+ },
523
+ getConList(field){
524
+ return [{label:'全部',value:''}, ...this[field]]
525
+ },
526
+ selectPlanChange(plan){
527
+ this.selectPlan=plan
528
+ //this.upCheckPlan=plan
529
+ },
530
+ showUserCondition(){
531
+ this.showCondtion=true
532
+ },
533
+ showcCreatePlan(){
534
+ this.showCreatePlan=true
535
+ },
536
+ cancel(){
537
+ this.showCondtion=false
538
+ this.showCreatePlan=false
539
+ this.showUpPlan=false
540
+ },
541
+ //新建计划
542
+ async addNewPlan() {
543
+ if(!this.validationCreatePlan()){
544
+ return
545
+ }
546
+ this.isSend=true
547
+ let res=await new HttpResetClass().load("POST","/api/af-safecheck/sql/getCheckplan", {data: {condition:"f_plan_name='"+this.createPlan.f_plan_name+"'",sortfield:'f_create_time desc'}})
548
+ console.log("结果-"+res.data.length)
549
+ if(res.data.length>0){
550
+ Vue.showMessage("计划名称不能重复!")
551
+ this.isSend=false
552
+ return
553
+ }
554
+ if(this.createPlan.isShare=="是"){
555
+ if(this.ismulchecker && this.createPlan.checkers.length > 0){
556
+ this.createPlan.checkers.forEach((value) => {
557
+ this.createPlan.f_checkerstr += `${value.name},`
558
+ })
559
+ this.createPlan.f_checkerstr = this.createPlan.f_checkerstr.slice(0, -1)
560
+ }
561
+ this.createPlan.f_checker_id=null
562
+ this.createPlan.f_checker=null
563
+ }else{
564
+ this.createPlan.f_checker_id=this.createPlan.checker.id
565
+ this.createPlan.f_checker=this.createPlan.checker.name
566
+ }
567
+ console.log("this.createPlan.f_checker:"+this.createPlan.f_checker)
568
+ this.createPlan.f_plan_type='预约计划'
569
+ this.createPlan.f_subcompany=this.userlogin.orgstr
570
+ this.createPlan.f_filialeid=this.userlogin.orgid
571
+ this.createPlan.f_create_operator=this.userlogin.name
572
+ this.createPlan.f_create_time=Util.toStandardTimeString()
573
+ await new HttpResetClass().load('POST',"/api/af-safecheck/logic/createCheckPlan", {"data": this.createPlan},{resolveMsg : '新建计划成功!', rejectMsg : '新建计划失败!'})
574
+ //await this.loadCheckPlan('',()=>{})
575
+ this.createPlan={
576
+ f_plan_name:'',
577
+ f_plan_year:'',
578
+ f_plan_month:'',
579
+ isShare:'否',
580
+ f_issued:'否',
581
+ f_checker_id:null,
582
+ checker:{},
583
+ checkers:[],
584
+ f_checker:null,
585
+ f_checkerstr:null,
586
+ f_safecheck_type:'',
587
+ f_create_operator:''
588
+ }
589
+ await this.loadCheckPlan()
590
+ this.isSend=false
591
+
592
+ },
593
+ validationCreatePlan(){
594
+ if(!this.createPlan.f_plan_name){
595
+ Vue.showMessage("请输入安检计划名称!")
596
+ return false
597
+ }
598
+ if(!this.createPlan.f_plan_year){
599
+ Vue.showMessage("请选择安检年份!")
600
+ return false
601
+ }
602
+ if(!this.createPlan.f_plan_month){
603
+ Vue.showMessage("请选择安检月份!")
604
+ return false
605
+ }
606
+ if(this.createPlan.isShare=="否"){
607
+ if(JSON.stringify(this.createPlan.checker)=='{}'){
608
+ Vue.showMessage("请选择安检人员!")
609
+ return false
610
+ }
611
+ }else{
612
+ this.createPlan.f_checker=''
613
+ }
614
+ if(!this.createPlan.f_safecheck_type){
615
+ Vue.showMessage("请选择安检类型!")
616
+ return false
617
+ }
618
+ return true
619
+ },
620
+ //查询安检员selectChanged
621
+ async searchChecker(){
622
+ console.log(this.$login.f.orgid)
623
+ debugger
624
+ let res=await new HttpResetClass().load('POST', '/rs/search', {
625
+ data:{
626
+ source: `root.getResourceById($${this.$login.f.orgid}$,$organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1)`,
627
+ userid: this.$login.f.id
628
+ }
629
+ }, {resolveMsg: null, rejectMsg: null})
630
+ res.data.forEach((resRow) => {
631
+ this.checker.push({label:resRow.name,value:resRow})
632
+ })
633
+ },
634
+ //设置属性值
635
+ setProperty(modulename, property, value) {
636
+ console.log(modulename+"新添--"+property+"--"+value)
637
+ if(value=='全部'){
638
+ this[modulename].search.setField(property, '')
639
+ }else{
640
+ this[modulename].search.setField(property, value)
641
+ }
642
+ },
643
+ //按条件查询所有安检计划
644
+ async loadCheckPlan() {
645
+ this.isSend=true
646
+ this.checkplan.check.checkescheckes=[]
647
+ let fieldValue=''
648
+ switch(this.currentorder){
649
+ case "按时间降序":
650
+ fieldValue='f_create_time desc'
651
+ break
652
+ case "按时间升序":
653
+ fieldValue='f_create_time'
654
+ break
655
+ }
656
+ console.log("--------fieldValue"+fieldValue)
657
+ this.cancel()
658
+ await this.checkplan.searchList("/api/af-safecheck/sql/预约计划下发",
659
+ {"f_plan_name": "f_plan_name like '%{}%'",
660
+ "f_plan_year":"f_plan_year={}",
661
+ "f_plan_month":"f_plan_month={}",
662
+ "checkerid":"f_checker_id='{}'",
663
+ "isAndNot":"f_checker {}",
664
+ "safechecktype":"f_safecheck_type='{}'",
665
+ "issude":"f_issued = '{}'",
666
+ "f_create_operator": "f_create_operator like '%{}%'"
667
+ },
668
+ {orderitem:fieldValue,
669
+ f_filialeids:"('"+this.userlogin.orgid+"')",
670
+ groupitem:""
671
+ }
672
+ )
673
+
674
+ this.isSend=false
675
+ },
676
+ //加载更多数据
677
+ async loadMore(modelname) {
678
+ this.isSend=true
679
+ await this[modelname].list.loadMore()
680
+ this.isSend=false
681
+ },
682
+ showUpPlans(row){
683
+ this.upCheckPlan.id=row.id
684
+ this.upCheckPlan.f_safecheck_type=row.f_safecheck_type
685
+ this.upCheckPlan.f_plan_name=row.f_plan_name
686
+ this.upCheckPlan.f_plan_year=row.f_plan_year
687
+ this.upCheckPlan.f_plan_month=row.f_plan_month
688
+ this.upCheckPlan.f_checker_id=row.f_checker_id?row.f_checker_id:null
689
+ this.upCheckPlan.f_checker=row.f_checker?row.f_checker:null
690
+ this.upCheckPlan.isShare=row.f_checker_id?'否':'是'
691
+ this.upCheckPlan.f_issued=row.f_issued
692
+ this.upCheckPlan.checker={id:row.f_checker_id,name:row.f_checker}
693
+ this.showUpPlan=true
694
+ },
695
+ async upPlan(){
696
+ if(this.upCheckPlan.f_issued=='已下发'){
697
+ this.$showMessage("该计划已下发,无法进行修改!")
698
+ return
699
+ }
700
+ if(!this.upCheckPlan.f_plan_name){
701
+ Vue.showMessage("请输入安检计划名称!")
702
+ return false
703
+ }
704
+ if(!this.upCheckPlan.f_plan_year){
705
+ Vue.showMessage("请选择安检年份!")
706
+ return false
707
+ }
708
+ if(!this.upCheckPlan.f_plan_month){
709
+ Vue.showMessage("请选择安检月份!")
710
+ return false
711
+ }
712
+ console.log(this.upCheckPlan)
713
+
714
+ if(this.upCheckPlan.isShare=="是"){
715
+ if(this.ismulchecker && this.upCheckPlan.checkers.length > 0){
716
+ this.upCheckPlan.checkers.forEach((value) => {
717
+ this.upCheckPlan.f_checkerstr += `${value.name},`
718
+ })
719
+ this.upCheckPlan.f_checkerstr = this.upCheckPlan.f_checkerstr.slice(0, -1)
720
+ }
721
+ this.upCheckPlan.f_checker_id=null
722
+ this.upCheckPlan.f_checker=null
723
+ }else{
724
+ this.upCheckPlan.f_checker_id=this.upCheckPlan.checker.id
725
+ this.upCheckPlan.f_checker=this.upCheckPlan.checker.name
726
+ }
727
+ this.isSend=true
728
+ let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/updateCheckPlan", {
729
+ data:{
730
+ checkers:this.createPlan.checkers,
731
+ f_checkerstr:this.createPlan.f_checkerstr,
732
+ f_checker:this.upCheckPlan.f_checker,
733
+ f_safecheck_type:this.upCheckPlan.f_safecheck_type,
734
+ f_checker_id:this.upCheckPlan.f_checker_id,
735
+ f_plan_name:this.upCheckPlan.f_plan_name,
736
+ f_plan_year:this.upCheckPlan.f_plan_year,
737
+ f_plan_month:this.upCheckPlan.f_plan_month,
738
+ f_plan_id:this.upCheckPlan.id
739
+ }
740
+ }, {resolveMsg: null, rejectMsg: null})
741
+ if(res.data.code==200){
742
+ this.$showMessage("修改成功!")
743
+ this.cancel()
744
+ await this.loadCheckPlan()
745
+ }else{
746
+ this.$showMessage("修改失败!")
747
+ }
748
+ this.isSend=false
749
+ },
750
+ //下发安检计划
751
+ async sendCheckPlan(f){
752
+ if(this.checkplan.check.checkes.length<1){
753
+ this.$showMessage("请选择要下发的安检计划")
754
+ return
755
+ }
756
+ this.isSend=true
757
+ let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/NewBespeakCheckPlan", {
758
+ data:{
759
+ f_issued:'是',
760
+ f_issue_time:Util.toStandardTimeString(),
761
+ f_send_operator:this.userlogin.name,
762
+ param:this.checkplan.check.checkes,
763
+ }
764
+ }, {resolveMsg: null, rejectMsg: null})
765
+ if(res.data.code==200){
766
+ //Vue.showMessage("下发成功!其中有"+res.data.repet+"个计划己经是下发状态")
767
+ this.$showMessage("下发成功!")
768
+ }else{
769
+ this.$showMessage("下发失败!")
770
+ }
771
+ await this.loadCheckPlan()
772
+ this.isSend=false
773
+ },
774
+ //删除安检计划
775
+ async delCheckPlan(f){
776
+ if(this.checkplan.check.checkes.length<1){
777
+ this.$showMessage("请选择要删除的安检计划")
778
+ return
779
+ }
780
+ this.isSend=true
781
+ let res=await new HttpResetClass().load("POST", "/api/af-safecheck/logic/deleteCheckPlan", {
782
+ data:{
783
+ f_operator:this.userlogin.name,//global.login.name,
784
+ condition:"",
785
+ switchCheckAll:true,
786
+ checkAll:false,
787
+ param:this.checkplan.check.checkes,
788
+ columnName: "f_plan_id"
789
+ }
790
+ }, {resolveMsg: null, rejectMsg: null})
791
+ console.log(JSON.stringify(res))
792
+ if(res.data.code==200){
793
+ this.$showMessage("删除成功!")
794
+ }else{
795
+ this.$showMessage("删除失败!")
796
+ }
797
+ if(this.checkplan.check.checkes.indexOf(this.selectPlan.id)!= -1){
798
+ this.selectPlan={id:''}
799
+ console.log("包含了清空selectplan")
800
+ }
801
+ await this.loadCheckPlan()
802
+ this.isSend=false
803
+ },
804
+ async refresh(){
805
+ this.$refs.item.$refs.paged.$refs.criteria.search()
806
+ this.$refs.user.$refs.paged.$refs.criteria.search()
807
+ await this.loadCheckPlan()
808
+ },
809
+ async refreshPlan(){
810
+ this.$refs.item.$refs.paged.$refs.criteria.search()
811
+ await this.loadCheckPlan()
812
+ }
813
+ }
814
+ }
815
+ </script>
816
+
817
+ <style scoped>
818
+ .safe-planfont{
819
+ font-family: MicrosoftYaHei;
820
+ font-size: 15px;
821
+ font-weight: normal;
822
+ font-stretch: normal;
823
+ letter-spacing: 2px;
824
+ color: #333333;
825
+ line-height: 25px;
826
+ }
827
+ .safe-bodyfont{
828
+ font-family: MicrosoftYaHei;
829
+ font-size: 14px;
830
+ font-weight: normal;
831
+ font-stretch: normal;
832
+ letter-spacing: 0px;
833
+ color: #999999;
834
+ line-height: 30px;
835
+ }
836
+ .safe-leftplan{
837
+ height:auto;
838
+ border-bottom:1px solid #ececec;
839
+ padding: 10px 5px
840
+ }
841
+ .leftplan-center{
842
+ border-top:1px solid #ececec;
843
+ border-bottom:1px solid #ececec;
844
+ }
845
+ .safe_p{
846
+ white-space: nowrap;
847
+ overflow: hidden;
848
+ text-overflow: ellipsis;
849
+ }
850
+ .safe-div-p{
851
+ color: #4792de;
852
+ text-align: end;
853
+ padding: 8px 15px;
854
+ }
855
+ .safe_list_li:hover{
856
+ background-color: rgb(245,246,247);
857
+ }
858
+ .safe-selectplan{
859
+ pointer-events: none;
860
+ background-color: rgb(216,234,251);
861
+ }
862
+ .safe_plan_list{
863
+ height: 80%;
864
+ overflow: scroll;
865
+ }
866
+
867
+ </style>
868
+ <style>
869
+ .safe_plan_list::-webkit-scrollbar{
870
+ background-color: #F5F5F5;
871
+ }
872
+
873
+ /*定义滚动条轨道 内阴影+圆角*/
874
+ .safe_plan_list::-webkit-scrollbar-track{
875
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
876
+ border-radius: 10px;
877
+ background-color: #F5F5F5;
878
+ }
879
+
880
+ /*定义滑块 内阴影+圆角*/
881
+ .safe_plan_list::-webkit-scrollbar-thumb{
882
+ border-radius: 10px;
883
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
884
+ background-color: #F5F5F5;
885
+ }
886
+ </style>