apply-clients 7.1.33 → 7.1.36

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 (431) hide show
  1. package/android.html +4 -0
  2. package/build/css-loaders.js +34 -0
  3. package/build/dev-client.js +8 -0
  4. package/build/dev-server.js +151 -0
  5. package/build/example-server.js +80 -0
  6. package/build/release.sh +28 -0
  7. package/build/utils.js +80 -0
  8. package/build/webpack.base.conf.js +123 -0
  9. package/build/webpack.baseandroid.conf.js +123 -0
  10. package/build/webpack.dev.conf.js +43 -0
  11. package/build/webpack.devandroid.conf.js +34 -0
  12. package/build/webpack.example.conf.js +49 -0
  13. package/build/webpack.prod.conf.js +60 -0
  14. package/build/webpack.prodandroid.conf.js +60 -0
  15. package/dist-android.7z +0 -0
  16. package/dist.7z +0 -0
  17. package/index.html +33 -30
  18. package/package.json +11 -7
  19. package/src/AndroidApp.vue +21 -14
  20. package/src/App.vue +18 -20
  21. package/{dist-android/static → src/android-bootstrap/fonts}/glyphicons-halflings-regular.eot +0 -0
  22. package/{dist-android/static → src/android-bootstrap/fonts}/glyphicons-halflings-regular.svg +0 -0
  23. package/{dist-android/static → src/android-bootstrap/fonts}/glyphicons-halflings-regular.ttf +0 -0
  24. package/{dist-android/static → src/android-bootstrap/fonts}/glyphicons-halflings-regular.woff +0 -0
  25. package/{dist-android/static → src/android-bootstrap/fonts}/glyphicons-halflings-regular.woff2 +0 -0
  26. package/src/android-bootstrap/less/.csscomb.json +304 -0
  27. package/src/android-bootstrap/less/.csslintrc +19 -0
  28. package/src/android-bootstrap/less/alerts.less +73 -0
  29. package/src/android-bootstrap/less/badges.less +66 -0
  30. package/src/android-bootstrap/less/bootstrap.less +56 -0
  31. package/src/android-bootstrap/less/breadcrumbs.less +26 -0
  32. package/src/android-bootstrap/less/button-groups.less +247 -0
  33. package/src/android-bootstrap/less/buttons.less +173 -0
  34. package/src/android-bootstrap/less/carousel.less +269 -0
  35. package/src/android-bootstrap/less/close.less +34 -0
  36. package/src/android-bootstrap/less/code.less +69 -0
  37. package/src/android-bootstrap/less/component-animations.less +33 -0
  38. package/src/android-bootstrap/less/dropdowns.less +216 -0
  39. package/src/android-bootstrap/less/forms.less +626 -0
  40. package/src/android-bootstrap/less/glyphicons.less +305 -0
  41. package/src/android-bootstrap/less/grid.less +84 -0
  42. package/src/android-bootstrap/less/input-groups.less +167 -0
  43. package/src/android-bootstrap/less/jumbotron.less +52 -0
  44. package/src/android-bootstrap/less/labels.less +64 -0
  45. package/src/android-bootstrap/less/list-group.less +141 -0
  46. package/src/android-bootstrap/less/media.less +66 -0
  47. package/src/android-bootstrap/less/mixins/alerts.less +14 -0
  48. package/src/android-bootstrap/less/mixins/background-variant.less +9 -0
  49. package/src/android-bootstrap/less/mixins/border-radius.less +18 -0
  50. package/src/android-bootstrap/less/mixins/buttons.less +69 -0
  51. package/src/android-bootstrap/less/mixins/center-block.less +7 -0
  52. package/src/android-bootstrap/less/mixins/clearfix.less +22 -0
  53. package/src/android-bootstrap/less/mixins/forms.less +90 -0
  54. package/src/android-bootstrap/less/mixins/gradients.less +59 -0
  55. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -0
  56. package/src/android-bootstrap/less/mixins/grid.less +122 -0
  57. package/src/android-bootstrap/less/mixins/hide-text.less +21 -0
  58. package/src/android-bootstrap/less/mixins/image.less +33 -0
  59. package/src/android-bootstrap/less/mixins/labels.less +12 -0
  60. package/src/android-bootstrap/less/mixins/list-group.less +30 -0
  61. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -0
  62. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -0
  63. package/src/android-bootstrap/less/mixins/opacity.less +8 -0
  64. package/src/android-bootstrap/less/mixins/pagination.less +24 -0
  65. package/src/android-bootstrap/less/mixins/panels.less +24 -0
  66. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -0
  67. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -0
  68. package/src/android-bootstrap/less/mixins/reset-text.less +18 -0
  69. package/src/android-bootstrap/less/mixins/resize.less +6 -0
  70. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -0
  71. package/src/android-bootstrap/less/mixins/size.less +10 -0
  72. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -0
  73. package/src/android-bootstrap/less/mixins/table-row.less +44 -0
  74. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -0
  75. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -0
  76. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -0
  77. package/src/android-bootstrap/less/mixins.less +40 -0
  78. package/src/android-bootstrap/less/modals.less +151 -0
  79. package/src/android-bootstrap/less/navbar.less +660 -0
  80. package/src/android-bootstrap/less/navs.less +302 -0
  81. package/src/android-bootstrap/less/normalize.less +424 -0
  82. package/src/android-bootstrap/less/pager.less +76 -0
  83. package/src/android-bootstrap/less/pagination.less +89 -0
  84. package/src/android-bootstrap/less/panels.less +274 -0
  85. package/src/android-bootstrap/less/popovers.less +131 -0
  86. package/src/android-bootstrap/less/print.less +101 -0
  87. package/src/android-bootstrap/less/progress-bars.less +87 -0
  88. package/src/android-bootstrap/less/responsive-embed.less +35 -0
  89. package/src/android-bootstrap/less/responsive-utilities.less +194 -0
  90. package/src/android-bootstrap/less/scaffolding.less +161 -0
  91. package/src/android-bootstrap/less/tables.less +262 -0
  92. package/src/android-bootstrap/less/theme.less +291 -0
  93. package/src/android-bootstrap/less/thumbnails.less +36 -0
  94. package/src/android-bootstrap/less/tooltip.less +102 -0
  95. package/src/android-bootstrap/less/type.less +303 -0
  96. package/src/android-bootstrap/less/utilities.less +55 -0
  97. package/src/android-bootstrap/less/variables.less +896 -0
  98. package/src/android-bootstrap/less/wells.less +29 -0
  99. package/src/android.js +7 -4
  100. package/src/apply.js +31 -15
  101. package/src/applyAndroid.js +52 -39
  102. package/src/assets//345/210/240/351/231/244.png +0 -0
  103. package/src/components/android/AppOnetomany.vue +301 -0
  104. package/src/components/android/AppServiceView.vue +568 -0
  105. package/src/components/android/AppSign.vue +169 -0
  106. package/src/components/android/AppTakePic.vue +142 -0
  107. package/src/components/android/AppUpload.vue +232 -0
  108. package/src/components/android/Ignition/VentilationIgnition.vue +328 -0
  109. package/src/components/android/Ignition/VentilationIgnitionHandle.vue +330 -0
  110. package/src/components/android/Process/AppExplorationUser.vue +352 -0
  111. package/src/components/android/Process/AppServiceControl.vue +1050 -0
  112. package/src/components/android/Process/Processes/AppDevicesManagement.vue +336 -0
  113. package/src/components/android/Process/Processes/AppInstallationDetails.vue +770 -0
  114. package/src/components/android/Process/Processes/SurveyUserSign.vue +56 -0
  115. package/src/components/android/Sign/AppSignTask.vue +182 -0
  116. package/src/components/android/Sign/SignProcess.vue +102 -0
  117. package/src/components/android/Supervisory/AppProcessSupervisory.vue +183 -0
  118. package/src/components/android/Supervisory/AppSupervisoryCart.vue +121 -0
  119. package/src/components/android/Task/Build/BuildTsak.vue +114 -0
  120. package/src/components/android/Task/Survey/SurveyTsak.vue +112 -0
  121. package/src/components/android/TaskGraph.vue +130 -0
  122. package/src/components/android/newPackage/customerServiceManager.vue +218 -0
  123. package/src/components/android/newPackage/designDrawings.vue +94 -0
  124. package/src/components/android/newPackage/detailedData.vue +24 -0
  125. package/src/components/android/newPackage/projectPrice.vue +218 -0
  126. package/src/components/image/dwg.png +0 -0
  127. package/src/components/image/dxf.png +0 -0
  128. package/src/components/product/ApplyCharge/ApplyChargeList.vue +141 -62
  129. package/src/components/product/ApplyCharge/ApplyChargeSearch.vue +2 -2
  130. package/src/components/product/Function/InstallFunction.vue +131 -147
  131. package/src/components/product/Function/InstallInfoSelect.vue +294 -281
  132. package/src/components/product/Function/Service/FunctionServiceControl.vue +323 -148
  133. package/src/components/product/Ignition/IgnitionDispatch.vue +277 -0
  134. package/src/components/product/Ignition/IgnitionRecord.vue +216 -0
  135. package/src/components/product/Onetomany.vue +377 -0
  136. package/src/components/product/Print/BuildOrder/buildOrderList.vue +229 -0
  137. package/src/components/product/Print/BuildOrder/printBuildOrder.vue +265 -0
  138. package/src/components/product/Process/ExplorationSelect.vue +281 -254
  139. package/src/components/product/Process/ExplorationUser.vue +151 -134
  140. package/src/components/product/Process/Processes/ApplyMapCom.vue +83 -0
  141. package/src/components/product/Process/Processes/ExhibitionPicture.vue +27 -0
  142. package/src/components/product/Process/Processes/InstallationDetails.vue +616 -277
  143. package/src/components/product/Process/Processes/Print/img/10101.png +0 -0
  144. package/src/components/product/Process/Processes/Print/img/1010109.png +0 -0
  145. package/src/components/product/Process/Processes/Print/img/1010110.png +0 -0
  146. package/src/components/product/Process/Processes/Print/img/1010111.png +0 -0
  147. package/src/components/product/Process/Processes/Print/img/1010112.png +0 -0
  148. package/src/components/product/Process/Processes/Print/printCharge.vue +142 -0
  149. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +207 -249
  150. package/src/components/product/Process/Processes/chargeManagement.vue +331 -347
  151. package/src/components/product/Process/Processes/devicesManagement.vue +360 -0
  152. package/src/components/product/Process/Processes/selectApply.vue +250 -0
  153. package/src/components/product/Process/Processes/selectUserinfo.vue +182 -0
  154. package/src/components/product/Process/Processes/supplementalAgreement.vue +182 -181
  155. package/src/components/product/Process/Service/ServiceControl.vue +1314 -753
  156. package/src/components/product/Process/Service/ShowBackReason.vue +33 -0
  157. package/src/components/product/ServiceView.vue +632 -755
  158. package/src/components/product/Stop/StopApply.vue +105 -0
  159. package/src/components/product/Stop/StopApplyList.vue +224 -0
  160. package/src/components/product/Supervisory/NewSupervisoryhCart.vue +167 -0
  161. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +231 -199
  162. package/src/components/product/Supervisory/SupervisoryControl.vue +110 -121
  163. package/src/components/product/Supervisory/SupervisoryList.vue +98 -48
  164. package/src/components/product/Supervisory/SupervisoryhCart.vue +119 -103
  165. package/src/components/product/VueUtils/ApplyUpload.vue +279 -261
  166. package/src/components/product/VueUtils/HighMeter.vue +208 -0
  167. package/src/expandcssAndroid.less +1034 -0
  168. package/src/main.js +27 -23
  169. package/src/public/history/HistoryApplyList.vue +108 -0
  170. package/src/public/history/PublicHistoryApply.vue +39 -0
  171. package/src/public/history/PublicSupervisoryhCart.vue +72 -0
  172. package/src/public/order/PublicOrderApply.vue +387 -0
  173. package/dist-android/index.html +0 -3
  174. package/dist-android/static/.gitkeep +0 -0
  175. package/dist-android/static/0.js +0 -2
  176. package/dist-android/static/0.js.map +0 -1
  177. package/dist-android/static/1.js +0 -2
  178. package/dist-android/static/1.js.map +0 -1
  179. package/dist-android/static/10.js +0 -2
  180. package/dist-android/static/10.js.map +0 -1
  181. package/dist-android/static/100.js +0 -2
  182. package/dist-android/static/100.js.map +0 -1
  183. package/dist-android/static/11.js +0 -2
  184. package/dist-android/static/11.js.map +0 -1
  185. package/dist-android/static/12.js +0 -2
  186. package/dist-android/static/12.js.map +0 -1
  187. package/dist-android/static/13.js +0 -2
  188. package/dist-android/static/13.js.map +0 -1
  189. package/dist-android/static/14.js +0 -2
  190. package/dist-android/static/14.js.map +0 -1
  191. package/dist-android/static/15.js +0 -2
  192. package/dist-android/static/15.js.map +0 -1
  193. package/dist-android/static/16.js +0 -2
  194. package/dist-android/static/16.js.map +0 -1
  195. package/dist-android/static/17.js +0 -2
  196. package/dist-android/static/17.js.map +0 -1
  197. package/dist-android/static/18.js +0 -2
  198. package/dist-android/static/18.js.map +0 -1
  199. package/dist-android/static/19.js +0 -2
  200. package/dist-android/static/19.js.map +0 -1
  201. package/dist-android/static/2.js +0 -2
  202. package/dist-android/static/2.js.map +0 -1
  203. package/dist-android/static/20.js +0 -2
  204. package/dist-android/static/20.js.map +0 -1
  205. package/dist-android/static/21.js +0 -2
  206. package/dist-android/static/21.js.map +0 -1
  207. package/dist-android/static/22.js +0 -2
  208. package/dist-android/static/22.js.map +0 -1
  209. package/dist-android/static/23.js +0 -2
  210. package/dist-android/static/23.js.map +0 -1
  211. package/dist-android/static/24.js +0 -2
  212. package/dist-android/static/24.js.map +0 -1
  213. package/dist-android/static/25.js +0 -2
  214. package/dist-android/static/25.js.map +0 -1
  215. package/dist-android/static/26.js +0 -2
  216. package/dist-android/static/26.js.map +0 -1
  217. package/dist-android/static/27.js +0 -2
  218. package/dist-android/static/27.js.map +0 -1
  219. package/dist-android/static/28.js +0 -2
  220. package/dist-android/static/28.js.map +0 -1
  221. package/dist-android/static/29.js +0 -2
  222. package/dist-android/static/29.js.map +0 -1
  223. package/dist-android/static/3.js +0 -2
  224. package/dist-android/static/3.js.map +0 -1
  225. package/dist-android/static/30.js +0 -2
  226. package/dist-android/static/30.js.map +0 -1
  227. package/dist-android/static/31.js +0 -2
  228. package/dist-android/static/31.js.map +0 -1
  229. package/dist-android/static/32.js +0 -2
  230. package/dist-android/static/32.js.map +0 -1
  231. package/dist-android/static/33.js +0 -2
  232. package/dist-android/static/33.js.map +0 -1
  233. package/dist-android/static/34.js +0 -2
  234. package/dist-android/static/34.js.map +0 -1
  235. package/dist-android/static/35.js +0 -2
  236. package/dist-android/static/35.js.map +0 -1
  237. package/dist-android/static/36.js +0 -2
  238. package/dist-android/static/36.js.map +0 -1
  239. package/dist-android/static/37.js +0 -2
  240. package/dist-android/static/37.js.map +0 -1
  241. package/dist-android/static/38.js +0 -2
  242. package/dist-android/static/38.js.map +0 -1
  243. package/dist-android/static/39.js +0 -2
  244. package/dist-android/static/39.js.map +0 -1
  245. package/dist-android/static/4.js +0 -2
  246. package/dist-android/static/4.js.map +0 -1
  247. package/dist-android/static/40.js +0 -2
  248. package/dist-android/static/40.js.map +0 -1
  249. package/dist-android/static/41.js +0 -2
  250. package/dist-android/static/41.js.map +0 -1
  251. package/dist-android/static/42.js +0 -2
  252. package/dist-android/static/42.js.map +0 -1
  253. package/dist-android/static/43.js +0 -2
  254. package/dist-android/static/43.js.map +0 -1
  255. package/dist-android/static/44.js +0 -2
  256. package/dist-android/static/44.js.map +0 -1
  257. package/dist-android/static/45.js +0 -2
  258. package/dist-android/static/45.js.map +0 -1
  259. package/dist-android/static/46.js +0 -2
  260. package/dist-android/static/46.js.map +0 -1
  261. package/dist-android/static/47.js +0 -2
  262. package/dist-android/static/47.js.map +0 -1
  263. package/dist-android/static/48.js +0 -2
  264. package/dist-android/static/48.js.map +0 -1
  265. package/dist-android/static/49.js +0 -2
  266. package/dist-android/static/49.js.map +0 -1
  267. package/dist-android/static/5.js +0 -2
  268. package/dist-android/static/5.js.map +0 -1
  269. package/dist-android/static/50.js +0 -2
  270. package/dist-android/static/50.js.map +0 -1
  271. package/dist-android/static/51.js +0 -2
  272. package/dist-android/static/51.js.map +0 -1
  273. package/dist-android/static/52.js +0 -2
  274. package/dist-android/static/52.js.map +0 -1
  275. package/dist-android/static/53.js +0 -2
  276. package/dist-android/static/53.js.map +0 -1
  277. package/dist-android/static/54.js +0 -2
  278. package/dist-android/static/54.js.map +0 -1
  279. package/dist-android/static/55.js +0 -2
  280. package/dist-android/static/55.js.map +0 -1
  281. package/dist-android/static/56.js +0 -2
  282. package/dist-android/static/56.js.map +0 -1
  283. package/dist-android/static/57.js +0 -2
  284. package/dist-android/static/57.js.map +0 -1
  285. package/dist-android/static/58.js +0 -2
  286. package/dist-android/static/58.js.map +0 -1
  287. package/dist-android/static/59.js +0 -2
  288. package/dist-android/static/59.js.map +0 -1
  289. package/dist-android/static/6.js +0 -2
  290. package/dist-android/static/6.js.map +0 -1
  291. package/dist-android/static/60.js +0 -2
  292. package/dist-android/static/60.js.map +0 -1
  293. package/dist-android/static/61.js +0 -2
  294. package/dist-android/static/61.js.map +0 -1
  295. package/dist-android/static/62.js +0 -2
  296. package/dist-android/static/62.js.map +0 -1
  297. package/dist-android/static/63.js +0 -2
  298. package/dist-android/static/63.js.map +0 -1
  299. package/dist-android/static/64.js +0 -2
  300. package/dist-android/static/64.js.map +0 -1
  301. package/dist-android/static/65.js +0 -2
  302. package/dist-android/static/65.js.map +0 -1
  303. package/dist-android/static/66.js +0 -2
  304. package/dist-android/static/66.js.map +0 -1
  305. package/dist-android/static/67.js +0 -2
  306. package/dist-android/static/67.js.map +0 -1
  307. package/dist-android/static/68.js +0 -2
  308. package/dist-android/static/68.js.map +0 -1
  309. package/dist-android/static/69.js +0 -2
  310. package/dist-android/static/69.js.map +0 -1
  311. package/dist-android/static/7.js +0 -6
  312. package/dist-android/static/7.js.map +0 -1
  313. package/dist-android/static/70.js +0 -2
  314. package/dist-android/static/70.js.map +0 -1
  315. package/dist-android/static/71.js +0 -2
  316. package/dist-android/static/71.js.map +0 -1
  317. package/dist-android/static/72.js +0 -2
  318. package/dist-android/static/72.js.map +0 -1
  319. package/dist-android/static/73.js +0 -2
  320. package/dist-android/static/73.js.map +0 -1
  321. package/dist-android/static/74.js +0 -2
  322. package/dist-android/static/74.js.map +0 -1
  323. package/dist-android/static/75.js +0 -2
  324. package/dist-android/static/75.js.map +0 -1
  325. package/dist-android/static/76.js +0 -2
  326. package/dist-android/static/76.js.map +0 -1
  327. package/dist-android/static/77.js +0 -2
  328. package/dist-android/static/77.js.map +0 -1
  329. package/dist-android/static/78.js +0 -2
  330. package/dist-android/static/78.js.map +0 -1
  331. package/dist-android/static/79.js +0 -2
  332. package/dist-android/static/79.js.map +0 -1
  333. package/dist-android/static/8.js +0 -2
  334. package/dist-android/static/8.js.map +0 -1
  335. package/dist-android/static/80.js +0 -2
  336. package/dist-android/static/80.js.map +0 -1
  337. package/dist-android/static/81.js +0 -2
  338. package/dist-android/static/81.js.map +0 -1
  339. package/dist-android/static/82.js +0 -2
  340. package/dist-android/static/82.js.map +0 -1
  341. package/dist-android/static/83.js +0 -2
  342. package/dist-android/static/83.js.map +0 -1
  343. package/dist-android/static/84.js +0 -2
  344. package/dist-android/static/84.js.map +0 -1
  345. package/dist-android/static/85.js +0 -2
  346. package/dist-android/static/85.js.map +0 -1
  347. package/dist-android/static/86.js +0 -2
  348. package/dist-android/static/86.js.map +0 -1
  349. package/dist-android/static/87.js +0 -2
  350. package/dist-android/static/87.js.map +0 -1
  351. package/dist-android/static/88.js +0 -2
  352. package/dist-android/static/88.js.map +0 -1
  353. package/dist-android/static/89.js +0 -2
  354. package/dist-android/static/89.js.map +0 -1
  355. package/dist-android/static/9.js +0 -3
  356. package/dist-android/static/9.js.map +0 -1
  357. package/dist-android/static/90.js +0 -2
  358. package/dist-android/static/90.js.map +0 -1
  359. package/dist-android/static/91.js +0 -2
  360. package/dist-android/static/91.js.map +0 -1
  361. package/dist-android/static/92.js +0 -2
  362. package/dist-android/static/92.js.map +0 -1
  363. package/dist-android/static/93.js +0 -2
  364. package/dist-android/static/93.js.map +0 -1
  365. package/dist-android/static/94.js +0 -2
  366. package/dist-android/static/94.js.map +0 -1
  367. package/dist-android/static/95.js +0 -2
  368. package/dist-android/static/95.js.map +0 -1
  369. package/dist-android/static/96.js +0 -2
  370. package/dist-android/static/96.js.map +0 -1
  371. package/dist-android/static/97.js +0 -2
  372. package/dist-android/static/97.js.map +0 -1
  373. package/dist-android/static/98.js +0 -2
  374. package/dist-android/static/98.js.map +0 -1
  375. package/dist-android/static/99.js +0 -2
  376. package/dist-android/static/99.js.map +0 -1
  377. package/dist-android/static/app.css +0 -2
  378. package/dist-android/static/app.css.map +0 -1
  379. package/dist-android/static/app.js +0 -80
  380. package/dist-android/static/app.js.map +0 -1
  381. package/dist-android/static/batchleft.png +0 -0
  382. package/dist-android/static/batchright.png +0 -0
  383. package/dist-android/static/bluemainbg.jpg +0 -0
  384. package/dist-android/static/config.json +0 -7
  385. package/dist-android/static/denglu.png +0 -0
  386. package/dist-android/static/huangtengbiaozhi.png +0 -0
  387. package/dist-android/static/jingyin.jpg +0 -0
  388. package/dist-android/static/login_bg.jpg +0 -0
  389. package/dist-android/static/login_title.png +0 -0
  390. package/dist-android/static/login_title1.png +0 -0
  391. package/dist-android/static/loginbg.jpg +0 -0
  392. package/dist-android/static/loginlogo.png +0 -0
  393. package/dist-android/static/main_logo.png +0 -0
  394. package/dist-android/static/mainbg.jpg +0 -0
  395. package/dist-android/static/menulogo.png +0 -0
  396. package/dist-android/static/newmainbg.jpg +0 -0
  397. package/dist-android/static/psicon.png +0 -0
  398. package/dist-android/static/singleleft.png +0 -0
  399. package/dist-android/static/singleright.png +0 -0
  400. package/dist-android/static/treeopen.png +0 -0
  401. package/dist-android/static/treeout.png +0 -0
  402. package/dist-android/static/treeset.png +0 -0
  403. package/dist-android/static/usericon.png +0 -0
  404. package/dist-android/static/workflow_apply.json +0 -766
  405. package/dist-android/static/xinxi.png +0 -0
  406. package/dist-android/static//344/277/256/346/224/271/345/257/206/347/240/201.png +0 -0
  407. package/dist-android/static//345/256/211/346/243/200/345/257/274/350/210/252/347/253/226/345/261/2173.png +0 -0
  408. package/dist-android/static//345/257/274/345/207/272/346/225/260/346/215/256.png +0 -0
  409. package/dist-android/static//346/270/205/347/251/272/346/225/260/346/215/256.png +0 -0
  410. package/src/components/app_apply/Acceptance.vue +0 -298
  411. package/src/components/app_apply/ApplyApp.vue +0 -91
  412. package/src/components/app_apply/ApplyDownList.vue +0 -166
  413. package/src/components/app_apply/ApplyInfo.vue +0 -56
  414. package/src/components/app_apply/ApplyListUpload.vue +0 -258
  415. package/src/components/app_apply/ApplyToDoList.vue +0 -165
  416. package/src/components/app_apply/ApplyUserInfo.vue +0 -56
  417. package/src/components/app_apply/FieldExploration.vue +0 -267
  418. package/src/components/app_apply/PlaceControler.vue +0 -258
  419. package/src/components/app_apply/ServiceControl.vue +0 -267
  420. package/src/components/app_apply/ServiceView.vue +0 -355
  421. package/src/components/app_apply/ToolsPage.vue +0 -51
  422. package/src/components/app_apply/Ventilation.vue +0 -199
  423. package/src/components/product/ApplyCharge/ApplyChargeReport.vue +0 -107
  424. package/src/components/product/Function/StopApplyCrrdList.vue +0 -176
  425. package/src/components/product/Function/functions/ApplyRecordCancel.vue +0 -102
  426. package/src/components/product/Function/functions/StopInstall.vue +0 -106
  427. package/src/components/product/Process/Processes/printCharge.vue +0 -126
  428. package/src/components/product/Process/ShowBackReason.vue +0 -32
  429. package/src/components/product/ReportForm/GasIgnitionSummary.vue +0 -352
  430. package/src/components/product/VueUtils/ToolsPage.vue +0 -51
  431. package/src/components/product/VueUtils/Tree.vue +0 -330
@@ -1,755 +1,632 @@
1
- <template>
2
- <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
- <validator name="v">
4
- <form class="form-horizontal">
5
- <div class="form-group">
6
- <div v-for="(index,item) in data.fields" style="">
7
- <!--input-->
8
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
9
- v-if="item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email'"
10
- v-show="!item.hidden"
11
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
12
- <label :style="item.label_style ? item.label_style : ''"
13
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
14
- <div :style="item.value_style ? item.value_style:''"
15
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
16
- <input class="form-control input_view" style=""
17
- :type="item.type"
18
- v-model="data.fields[index].value"
19
- :placeholder="item.placeholder"
20
- :value="data.fields[index].value"
21
- :readonly="item.readonly"
22
- :disabled="item.disabled"
23
- @change="onchange(index)"
24
- @blur="onblur(index)"
25
- @input="oninput(index)"
26
- />
27
- <span
28
- v-if="item.error&&item.error.msg&&item.error.flag"
29
- style="color: red">{{item.error.msg}}</span>
30
- </div>
31
- </div>
32
- <!--时间datepicker-->
33
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
34
- v-if="item.type==='datepicker'"
35
- v-show="!item.hidden"
36
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
37
- <label
38
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
39
- <div :style="item.value_style ? item.value_style:''"
40
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
41
- <datepicker
42
- @change="onchange(index)"
43
- @blur="onblur(index)"
44
- :placeholder="item.placeholder"
45
- :value.sync="data.fields[index].value"
46
- :format="item.format ? item.format : 'yyyy-MM-dd'"
47
- v-model="data.fields[index].value"
48
- :readonly="item.readonly"
49
- :disabled="item.disabled"
50
- :show-reset-button="reset">
51
- </datepicker>
52
- </div>
53
- <span
54
- v-if="item.error&&item.error.msg&&item.error.flag"
55
- style="color: red">{{item.error.msg}}</span>
56
- </div>
57
-
58
- <!--textarea-->
59
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
60
- v-if="item.type==='textarea'" v-show="!item.hidden"
61
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
62
- <label :style="item.label_style ? item.label_style : ''"
63
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
64
- <div :style="item.value_style ? item.value_style:''"
65
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
66
- <textarea
67
- :readonly="item.readonly"
68
- :disabled="item.disabled"
69
- class="form-control input_view"
70
- style="width: 100%;height: 100%"
71
- :rows="item.rows"
72
- v-model="data.fields[index].value"
73
- :value="data.fields[index].value"
74
- @change="onchange(index)"
75
- @blur="onblur(index)"
76
- @input="oninput(index)"
77
- >
78
- </textarea>
79
- </div>
80
- <span
81
- v-if="item.error&&item.error.msg&&item.error.flag"
82
- style="color: red">{{item.error.msg}}</span>
83
- </div>
84
-
85
- <!--radio-->
86
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
87
- v-if="item.type==='radio'"
88
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
89
- <label v-if="item.label"
90
- :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':'control-label-justify control-label col-sm-2'">{{item.label}}</label>
91
- <div
92
- :style="item.value_style ? item.value_style:''"
93
- :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-sm-5': 'col-sm-3'"
94
- v-for="(index2,row) in item.items">
95
- <label :for="row.label"
96
- :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'">{{row.label}}</label>
97
- <input @blur="onblur(index)"
98
- :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'"
99
- :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio"
100
- :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value"
101
- v-model="data.fields[index].value">
102
- </div>
103
- <span
104
- v-if="item.error&&item.error.msg&&item.error.flag"
105
- style="color: red">{{item.error.msg}}</span>
106
- </div>
107
-
108
- <!--select-->
109
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
110
- v-if="item.type==='select'" v-show="!item.hidden"
111
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
112
- <label
113
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
114
- <div :style="item.value_style ? item.value_style:''"
115
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
116
- <input-select
117
- class="select select_list"
118
- @blur="onblur(index)"
119
- @change="onchange(index)"
120
- :readonly="item.readonly"
121
- :disable="item.disabled"
122
- :value.sync="data.fields[index].value"
123
- v-model="data.fields[index].value"
124
- :options='data.fields[index].options'
125
- :valueSingle="true"></input-select>
126
- </div>
127
- <span
128
- v-if="item.error&&item.error.msg&&item.error.flag"
129
- style="color: red">{{item.error.msg}}</span>
130
- </div>
131
-
132
- <!--checkbox-->
133
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
134
- v-if="item.type==='checkbox'"
135
- :class="[item.required&&!(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
136
- <label v-if="item.label"
137
- :class="item.label_bootstraped?item.label_bootstraped+' control-label ':'control-label col-sm-2'">{{item.label}}</label>
138
- <div style="margin-top: 6px"
139
- :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'"
140
- v-for="(index2,row) in item.items">
141
- <label class="font-size form-group col-sm-6">{{row.label}}</label>
142
- <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6"
143
- :id="row.label" v-model="data.fields[index].items[index2].value" @blur="onblur(index)" >
144
- </div>
145
- </div>
146
- </div>
147
- </div>
148
- <!-- onetomany -->
149
- <div class="" v-for="(i,item) in data.onetomany" style="overflow:auto;width:100%">
150
- <table v-show="!item.hidden" class="table table-bordered table-striped table-hover" style="white-space:nowrap">
151
- <tr>
152
- <th>序号</th>
153
- <th v-for="field in item.fields" v-if="!field.displayPosition || field.displayPosition === '*' || field.displayPosition === 'list'">
154
- <nobr>{{field.label}}</nobr>
155
- </th>
156
- <th v-if="!item.hiddenOperate">
157
- <button type="button" @click="add(i)" class="btn btn-info"
158
- v-if="showprint && !item.addHidden">
159
- <span v-if="item.addText === 'default' || !item.addText" class="glyphicon glyphicon-plus" aria-hidden="true"></span>
160
- <span v-else :style="item.addStyle">{{item.addText}}</span>
161
- </button>
162
- </th>
163
- </tr>
164
- <tr v-for="(j,row) in item.rows" style="">
165
- <td style="text-align: center">{{$index+1}}</td>
166
- <td v-for="key in item.fields" v-if="!key.displayPosition || key.displayPosition === '*' || key.displayPosition === 'list'" style="text-align: center">
167
- {{row[key.field]}}
168
- </td>
169
- <td style="text-align: center" v-if="!item.hiddenOperate">
170
- <span @click="update(i,j)" v-if="showprint && !item.updateHidden">
171
- <span v-if="item.updateText === 'default' || !item.updateText" class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
172
- <span v-else :style="item.updateStyle">{{item.updateText}}</span>
173
- </span>
174
- <span @click="delete(i,j)" v-if="showprint && !item.deleteHidden" style="margin-left: 10px">
175
- <span v-if="item.deleteText === 'default' || !item.deleteText" class="glyphicon glyphicon-trash" aria-hidden="true"></span>
176
- <span v-else :style="item.deleteStyle">{{item.deleteText}}</span>
177
- </span>
178
- </td>
179
- </tr>
180
- </table>
181
- </div>
182
-
183
- <div v-for="(i,item) in data.components">
184
- <component :is="item.name" :selectdata="data" :mark="item.mark"></component>
185
- </div>
186
-
187
- <!--自定义组件-->
188
- <slot></slot>
189
- <!--公司等属性-->
190
- <div class="col-sm-12 form-group text-center" style="padding-top:8px">
191
- <div class="col-sm-3 form-group center-block">
192
- <label class="col-sm-5">所属公司:</label>
193
- <div class="col-sm-6" style="text-align: left">
194
- {{model.f_filiale}}
195
- </div>
196
- </div>
197
- <div class="col-sm-3 form-group center-block">
198
- <label class="col-sm-5">部门:</label>
199
- <div class="col-sm-6" style="text-align: left">
200
- {{model.f_parentname}}
201
- </div>
202
- </div>
203
- <div class="col-sm-3 form-group center-block">
204
- <label class="col-sm-5">操作人:</label>
205
- <div class="col-sm-6 " style="text-align: left">
206
- {{model.f_operator}}
207
- </div>
208
- </div>
209
- <div class="col-sm-3 form-group center-block">
210
- <label class="col-sm-5">操作日期:</label>
211
- <div class="col-sm-6" style="text-align: left">
212
- {{model.f_operate_date}}
213
- </div>
214
- </div>
215
- </div>
216
-
217
- </form>
218
- </validator>
219
-
220
- <!-- 按钮组 -->
221
- <div class="from-group col-sm-12" style="margin-top: 20px;height: 100px">
222
- <center>
223
- <!-- 按钮组 -->
224
- <button v-for="(index,button) in data.buttons"
225
- :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button" type="button"
226
- @click="clicked(index,button)"
227
- :class="(button.button_name==='提交'||button.button_name==='下发')&&disable_button?'btn btn-default':'btn btn-primary'"
228
- v-if="!button.hidden"
229
- style="min-width:100px; margin-right:50px;">
230
- {{button.button_name}}
231
- </button>
232
- </center>
233
- </div>
234
-
235
- <!-- onetomany模态框 -->
236
- <modal v-if="show" :show.sync="show" backdrop="false" :large="modalSize === 'large' ? true : false" :small="modalSize === 'small' ? true : false">
237
- <header slot="modal-header" class="modal-header">
238
- <button type="button" class="close" @click="closemodal(modeltitle)"><span>&times;</span></button>
239
- <span class="modal-title"><font
240
- size="3">{{modeltitle}}</font></span>
241
- </header>
242
- <article slot="modal-body" class="modal-body clearfix">
243
- <div
244
- :class="[item.required&&!(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped:'col-sm-12']"
245
- v-for="(index,item) in data.onetomany[onetomany_index].fields" v-if="!item.displayPosition || item.displayPosition === '*' || item.displayPosition === 'from'">
246
- <label v-show="!item.hidden" :class="item.label_bootstraped ? item.label_bootstraped + ' control-label' : 'control-label col-sm-3'" style="margin-top: 10px">{{item.label}}:</label>
247
- <div :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-7'" v-show="!item.hidden">
248
- <!--时间datepicker-->
249
- <datepicker
250
- v-if="item.type=='datepicker'"
251
- @change="onchange_modal(index)"
252
- @blur="onblur_modal(index)"
253
- :placeholder="item.placeholder"
254
- :value.sync="data.onetomany[onetomany_index].fields[index].value"
255
- :format="'yyyy-MM-dd'"
256
- v-model="data.onetomany[onetomany_index].fields[index].value"
257
- :readonly="item.readonly"
258
- :disabled="item.disabled"
259
- :show-reset-button="reset">
260
- </datepicker>
261
- <!--select-->
262
- <input-select
263
- @change="onchange_modal(index)"
264
- v-if="item.type=='select'"
265
- @blur="onblur_modal(index)"
266
- :value.sync="data.onetomany[onetomany_index].fields[index].value"
267
- v-model="data.onetomany[onetomany_index].fields[index].value"
268
- :options='data.onetomany[onetomany_index].fields[index].options'>
269
- </input-select>
270
- <!-- input -->
271
- <input v-if="item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email'"
272
- class="form-control"
273
- :type="item.type"
274
- v-model="data.onetomany[onetomany_index].fields[index].value"
275
- :placeholder="item.placeholder"
276
- :value="data.onetomany[onetomany_index].fields[index].value"
277
- :readonly="item.readonly"
278
- :disabled="item.disabled"
279
- @change="onchange_modal(index)"
280
- @blur="onblur_modal(index)"
281
- @input="oninput_modal(index)"
282
- />
283
- </div>
284
- </div>
285
- </article>
286
- <footer slot="modal-footer" class="modal-footer">
287
- <button :class="disable_button_onetomany?'btn btn-default':'btn btn-primary'"
288
- :disabled="disable_button_onetomany" type="button" @click="confirm_modal(modeltitle)">
289
- 确认
290
- </button>
291
- </footer>
292
- </modal>
293
-
294
- <!-- 按钮模态框 -->
295
- <modal v-if="showbutmodal" :show.sync="showbutmodal" v-ref:modal backdrop="false">
296
- <header slot="modal-header" class="modal-header">
297
- <button type="button" class="close" @click="closemodal('but')"><span>&times;</span></button>
298
- <h4 class="modal-title">{{model.button.button_name}}</h4>
299
- </header>
300
- <article slot="modal-body" class="modal-body">
301
- <div class="col-sm-12" v-for="(index,button) in data.buttons[model.button.button_index].button_fields">
302
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button.label}}:</label>
303
- <div class="col-sm-7">
304
- <!--select-->
305
- <input-select v-if="button.type=='select'"
306
- :value.sync="data.buttons[model.button.button_index].button_fields[index].value"
307
- v-model="data.buttons[model.button.button_index].button_fields[index].value"
308
- :options='button.options'></input-select>
309
- <!-- input -->
310
- <input v-else type="text" class="form-control"
311
- v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
312
- </div>
313
- </div>
314
- </article>
315
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
316
- <button type="button" class="btn btn-primary" :disabled="disable_button_but" @click='confirm_but_modal()'>确认</button>
317
- </footer>
318
- </modal>
319
- </div>
320
- </template>
321
- <script>
322
- import Vue from 'vue'
323
- // Date格式化
324
- Date.prototype.Format = function (fmt) {
325
- var o = {
326
- 'M+': this.getMonth() + 1, // 月份
327
- 'd+': this.getDate(), //
328
- 'H+': this.getHours(), // 小时
329
- 'm+': this.getMinutes(), // 分
330
- 's+': this.getSeconds(), // 秒
331
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
332
- 'S': this.getMilliseconds() // 毫秒
333
- }
334
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
335
- for (var k in o) {
336
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
337
- }
338
- return fmt
339
- }
340
-
341
- export default {
342
- title: '报建业务通用组件',
343
- props: {
344
- data: {
345
- type: Object
346
- },
347
- showprint: {
348
- type: Boolean,
349
- default: true
350
- }
351
- },
352
- data () {
353
- return {
354
- model: {}, // 公司等属性
355
- disable_button: true, // 控制按钮禁用
356
- show: false, // 控制onetomany模态框
357
- disable_button_onetomany: true, // 控制onetomany模态框按钮
358
- onetomany_index: null, // 当前选择的下标
359
- update_onetomany_index: null, // 当前需要修改的下标
360
- modeltitle: null, // 模态框标题
361
- modalSize: null, // 模态框大小
362
- showbutmodal: false,
363
- }
364
- },
365
- watch: {
366
- deep: true
367
- },
368
- computed: {
369
-
370
- },
371
- created () {
372
- // 初始化数据
373
- this.initializtion()
374
- this.$dispatch('initializtionView')
375
-
376
- this.disableButton()
377
- },
378
- methods: {
379
- // 按钮模态框确定
380
- confirm_but_modal() {
381
- for (const item of this.data.buttons[this.model.button.button_index].button_fields) {
382
- this.model.button.button_fields[item.field] = item.value
383
- }
384
- this.showbutmodal = false
385
- this.disable_button_but = true
386
- this.$dispatch('button', this.model)
387
- },
388
- // 点击按钮组按钮
389
- async clicked(index, button) {
390
- this.disable_button = true
391
- // 组织model.fields数据
392
- for (const item of this.data.fields) {
393
- // checkbox特殊处理
394
- if (item.type === 'checkbox') {
395
- for (let j = 0; j < item.items.length; j++) {
396
- this.model[item.items[j].field] = item.items[j].value
397
- }
398
- } else {
399
- this.model[item.field] = item.value
400
- }
401
- }
402
- this.model.f_process_id = this.data.f_process_id
403
-
404
- // 初始化model.button数据
405
- let buttondatas = {
406
- button_fields: {}
407
- }
408
- buttondatas.button_name = button.button_name
409
- buttondatas.button_index = index
410
- if (button.button_fields) {
411
- for (const item of button.button_fields) {
412
- buttondatas.button_fields[item.field] = item.value
413
- }
414
- }
415
- this.model.button = buttondatas
416
- this.model.title = this.data.title
417
- this.model.fields = this.data.fields
418
- this.model.onetomany = this.data.onetomany
419
-
420
-
421
- if (button.button_name === '退回') {
422
- this.showbutmodal = true
423
- } else if (button.button_name === '下发') {
424
- this.showbutmodal = true
425
- } else {
426
- this.$dispatch('button', this.model)
427
- }
428
- },
429
- // 初始化数据
430
- initializtion () {
431
- // 是否禁用按钮
432
- this.disableButton()
433
-
434
- // datepicker 没有值给当时值
435
- for (const item of this.data.fields) {
436
- if (item.type === 'datepicker' && !item.value) {
437
- item.value = new Date().Format('yyyy-MM-dd HH:mm:ss')
438
- }
439
- }
440
-
441
- // 公司等属性初始化
442
- if (this.data.filiale) {
443
- this.model.f_filiale = this.data.filiale
444
- } else {
445
- this.model.f_filiale = this.$login.f.f_fengongsi
446
- }
447
- if (this.data.f_parentname) {
448
- this.model.f_parentname = this.data.f_parentname
449
- } else {
450
- this.model.f_parentname = this.$login.f.f_parentname
451
- }
452
- if (this.data.operate_date) {
453
- this.model.f_operate_date = this.data.operate_date
454
- } else {
455
- this.model.f_operate_date = new Date().Format('yyyy-MM-dd')
456
- }
457
- if (this.data.operator) {
458
- this.model.f_operator = this.data.operator
459
- } else {
460
- this.model.f_operator = this.$login.f.name
461
- }
462
- },
463
- // 是否禁用按钮
464
- disableButton () {
465
- let fields = this.data.fields
466
-
467
- let flag = false
468
- for (const item of fields) {
469
- if (item.type !== 'checkbox' && item.required && !item.value) {
470
- if (item.value === 0) {
471
- flag = false
472
- } else {
473
- flag = true
474
- }
475
- }
476
- // 任何选择框只要是否都不能提交
477
- if (item.type === 'select' && item.value === '否' && item.disabledButton) {
478
- flag = true
479
- }
480
- }
481
-
482
- let count = 0
483
- for (const item of fields) {
484
- if (item.type !== 'checkbox' && item.required) {
485
- count++
486
- }
487
- }
488
- if (count === 0) {
489
- flag = false
490
- }
491
-
492
- this.disable_button = flag
493
- },
494
- // 失去焦点触发,无论值是否发生变化
495
- onblur (index) {
496
- // 是否禁用按钮
497
- this.disableButton()
498
-
499
- this.$dispatch('onblur', index)
500
- // 如果有错误信息提示走错误信息判断处理
501
-
502
- if (this.data.fields[index].error || this.data.fields[index].type === 'datepicker') {
503
- this.$dispatch('error_check', index)
504
- }
505
- },
506
- // 失去焦点且值最终发生变化触发
507
- onchange (index) {
508
- // 是否禁用按钮
509
- this.disableButton()
510
-
511
- this.data.fields[index].value = this.data.fields[index].value.trim()
512
-
513
- if (this.data.fields[index].prefix && this.data.fields[index].value !== '') {
514
- this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
515
- }
516
-
517
- this.data[this.data.fields[index].field] = this.data.fields[index].value
518
-
519
- this.$dispatch('onchange', index)
520
-
521
- // 如果有错误信息提示走错误信息判断处理
522
- if (this.data.fields[index].error || this.data.fields[index].type === 'datepicker') {
523
- this.$dispatch('error_check', index)
524
- }
525
- },
526
- oninput (index) {
527
- // 是否禁用按钮
528
- this.disableButton()
529
-
530
- this.$dispatch('oninput', index)
531
-
532
- // 如果有错误信息提示走错误信息判断处理
533
- if (this.data.fields[index].error || this.data.fields[index].type === 'datepicker') {
534
- this.$dispatch('error_check', index)
535
- }
536
- },
537
- // 模态框确认按钮
538
- confirm_modal (title) {
539
- if (title === '新增') {
540
- if (this.data.onetomany[this.onetomany_index].addEvent === 'default' || !this.data.onetomany[this.onetomany_index].addEvent) {
541
- this.$dispatch('onetomanyadd', this.onetomany_index)
542
- } else {
543
- this.$dispatch(this.data.onetomany[this.onetomany_index].addEvent, this.onetomany_index)
544
- }
545
- } else {
546
- if (this.data.onetomany[this.onetomany_index].updateEvent === 'default' || !this.data.onetomany[this.onetomany_index].updateEvent) {
547
- this.$dispatch('onetomanyupdate', this.onetomany_index, this.update_onetomany_index)
548
- } else {
549
- this.$dispatch(this.data.onetomany[this.onetomany_index].updateEvent, this.onetomany_index, this.update_onetomany_index)
550
- }
551
- }
552
-
553
- this.closemodal()
554
- },
555
- // 删除
556
- delete (i, j) {
557
- this.$showMessage((this.data.onetomany[i].deleteMessage === 'default' || !this.data.onetomany[i].deleteMessage) ? '您确定要删除这条记录吗?' : this.data.onetomany[i].deleteMessage, ['confirm']).then((res) => {
558
- if (res === 'confirm') {
559
- if (this.data.onetomany[i].deleteEvent === 'default' || !this.data.onetomany[i].deleteEvent) {
560
- this.$dispatch('onetomanydelete', i, j)
561
- } else {
562
- this.$dispatch(this.data.onetomany[i].deleteEvent, i, j)
563
- }
564
- }
565
- })
566
- },
567
- // 修改
568
- update (i, j) {
569
- let onetomany = this.data.onetomany[i]
570
- let item = this.data.onetomany[i].rows[j]
571
- let count = 0
572
- for (let k = 0; k < onetomany.fields.length; k++) {
573
- // 防止初始化的时候没有value
574
- Vue.set(this.data.onetomany[i].fields[k], 'value', item[this.data.onetomany[i].fields[k].field])
575
-
576
- if (onetomany.fields[j].required) {
577
- count++
578
- }
579
- }
580
- if (count === 0) {
581
- this.disable_button_onetomany = false
582
- }
583
- this.modeltitle = '修改'
584
- this.modalSize = this.data.onetomany[i].modalSize
585
- this.onetomany_index = i
586
- this.update_onetomany_index = j
587
-
588
- this.$dispatch('openUpdateModel',i,j)
589
-
590
- this.show = true
591
- },
592
- // 添加
593
- add (index) {
594
- let count = 0
595
- for (const item of this.data.onetomany[index].fields) {
596
- if (item.type === 'datepicker') {
597
- item.value = new Date().Format('yyyy-MM-dd')
598
- }
599
- if (item.required) {
600
- count++
601
- }
602
- }
603
-
604
- if (count === 0) {
605
- this.disable_button_onetomany = false
606
- }
607
- this.modeltitle = '新增'
608
- this.modalSize = this.data.onetomany[index].modalSize
609
- this.onetomany_index = index
610
-
611
- this.$dispatch('openAddModel',index)
612
-
613
- this.show = true
614
- },
615
- // 关闭模态框
616
- closemodal (val) {
617
- if (val === 'but'){
618
- this.disableButton()
619
- this.showbutmodal = false
620
- return
621
- }
622
- for (const item of this.data.onetomany[this.onetomany_index].fields) {
623
- item.value = ''
624
- }
625
- this.show = false
626
- this.disable_button_onetomany = true
627
- this.onetomany_index = null
628
- this.update_onetomany_index = null
629
- this.modeltitle = null
630
- this.modalSize = null
631
- },
632
- // 是否禁用模态框按钮
633
- disableModalButton () {
634
- let fields = this.data.onetomany[this.onetomany_index].fields
635
-
636
- let flag = false
637
- for (const item of fields) {
638
- if (item.type !== 'checkbox' && item.required && !item.value) {
639
- if (item.value === 0) {
640
- flag = false
641
- } else {
642
- flag = true
643
- }
644
- }
645
- }
646
-
647
- let count = 0
648
- for (const item of fields) {
649
- if (item.type !== 'checkbox' && item.required) {
650
- count++
651
- }
652
- }
653
- if (count === 0) {
654
- flag = false
655
- }
656
- this.disable_button_onetomany = flag
657
- },
658
- // 监听模态框属性失去焦点
659
- onchange_modal (index) {
660
- this.disableModalButton()
661
- this.$dispatch('onchange_modal', this.onetomany_index, index)
662
- },
663
- // 监听模态框属性失去焦点
664
- onblur_modal (index) {
665
- this.disableModalButton()
666
- this.$dispatch('onblur_modal', this.onetomany_index, index)
667
- },
668
- // input输入属性值发生变化监听
669
- oninput_modal (index) {
670
- this.disableModalButton()
671
- this.$dispatch('oninput_modal', this.onetomany_index, index)
672
- }
673
- },
674
- events: {
675
-
676
- }
677
- }
678
- </script>
679
- <style>
680
- .datepicker{
681
- width: 100%!important;
682
- }
683
- .datepicker-input{
684
- background-color: #ffffff!important;
685
- width: 100%!important;
686
- }
687
- .datepicker-input:disabled{
688
- border: 1px solid #DDD!important;
689
- color: #ACA899!important;
690
- width: 100%!important;
691
- }
692
- </style>
693
- <style scoped>
694
- th{
695
- font-size: 15px !important;
696
- text-align: center !important;
697
- background-color: #dfedfb!important;
698
- color: #666666 !important;
699
- font-family: PINGFANG-BOLD !important;
700
- font-weight: normal!important;
701
- }
702
- /*清除model中的浮动*/
703
- .clearfix:after,.clearfix:before{
704
- display: table;
705
- }
706
- .clearfix:after{
707
- clear: both;
708
- }
709
-
710
- .input_view{
711
- padding: 8px;
712
- background-color: #ffffff;
713
- border-radius: 2px;
714
- border: solid 1px #c7c7c7!important;
715
- color: #333333!important;
716
- font-size: 15px!important;
717
- }
718
-
719
- .input_view[readonly]{
720
- border: 1px solid #DDD!important;
721
- /*background-color: #F5F5F5;*/
722
- color:#ACA899!important;
723
- }
724
- .input_view:disabled{
725
- border: 1px solid #DDD!important;
726
- /*background-color: #F5F5F5;*/
727
- color:#ACA899!important;
728
- }
729
-
730
- .control-label-justify {
731
- display: inline-block;
732
- vertical-align: top;
733
- width: 110px;
734
- text-align: justify;
735
- font-family: PingFang-SC-Bold;
736
- }
737
-
738
- .control-label-justify::after {
739
- content: "";
740
- display: inline-block;
741
- width: 70px;
742
- overflow: hidden;
743
- height: 0;
744
- }
745
-
746
- input::-webkit-outer-spin-button,
747
- input::-webkit-inner-spin-button {
748
- -webkit-appearance: none;
749
- }
750
-
751
- input[type="number"] {
752
- -moz-appearance: textfield;
753
- }
754
-
755
- </style>
1
+ <template>
2
+ <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
+ <form class="form-horizontal">
4
+ <div class="form-group">
5
+ <div v-for="(index,item) in data.fields">
6
+ <!--input-->
7
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
8
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)"
9
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
10
+ <label :style="item.label_style ? item.label_style : ''"
11
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
12
+ <div :style="item.value_style ? item.value_style:''"
13
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
14
+ <input class="form-control input_view" style=""
15
+ :type="item.type"
16
+ v-model="data.fields[index].value"
17
+ :placeholder="item.placeholder"
18
+ :value="data.fields[index].value"
19
+ :readonly="item.readonly"
20
+ :disabled="item.disabled"
21
+ @change="onchange(index)"
22
+ @blur="onblur(index)"
23
+ @input="oninput(index)"
24
+ />
25
+ </div>
26
+ </div>
27
+
28
+ <!--时间datepicker-->
29
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
30
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)"
31
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
32
+ <label
33
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
34
+ <div :style="item.value_style ? item.value_style:''"
35
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
36
+ <datepicker
37
+ @change="onchange(index)"
38
+ @blur="onblur(index)"
39
+ :placeholder="item.placeholder"
40
+ :value.sync="data.fields[index].value"
41
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
42
+ v-model="data.fields[index].value"
43
+ :readonly="item.readonly"
44
+ :disabled="item.disabled"
45
+ :show-reset-button="reset">
46
+ </datepicker>
47
+ </div>
48
+ </div>
49
+
50
+ <!--textarea-->
51
+ <div :style="item.style ? item.style+';margin-bottom: 20px':'margin-bottom: 20px'"
52
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)"
53
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
54
+ <label :style="item.label_style ? item.label_style : ''"
55
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
56
+ <div :style="item.value_style ? item.value_style:''"
57
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
58
+ <textarea
59
+ :readonly="item.readonly"
60
+ :disabled="item.disabled"
61
+ class="form-control input_view"
62
+ style="width: 100%;height: 100%"
63
+ :rows="item.rows"
64
+ v-model="data.fields[index].value"
65
+ :value="data.fields[index].value"
66
+ @change="onchange(index)"
67
+ @blur="onblur(index)"
68
+ @input="oninput(index)"
69
+ >
70
+ </textarea>
71
+ </div>
72
+ </div>
73
+
74
+ <!--select-->
75
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
76
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)"
77
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
78
+ <label
79
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
80
+ <div :style="item.value_style ? item.value_style:''"
81
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
82
+ <input-select
83
+ class="select select_list"
84
+ @blur="onblur(index)"
85
+ @change="onchange(index)"
86
+ @select-search="selectSearch($arguments,index)"
87
+ :readonly="item.readonly"
88
+ :disable="item.disabled"
89
+ :value.sync="data.fields[index].value"
90
+ v-model="data.fields[index].value"
91
+ :options='data.fields[index].options'
92
+ :valueSingle="true"></input-select>
93
+ </div>
94
+ </div>
95
+
96
+ <!--checkbox-->
97
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
98
+ v-if="item.type==='checkbox' && !item.hidden && (item.device === 'pc' || !item.device)"
99
+ :class="[item.required && item.value.length === 0 ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
100
+ <label v-if="item.label"
101
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
102
+ <div :style="item.value_style ? item.value_style:''"
103
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
104
+ <label class="checkbox-inline" v-for="(index2,row) in item.options">
105
+ <input type="checkbox" class=""
106
+ :readonly="data.fields[index].readonly"
107
+ :disabled="data.fields[index].disabled"
108
+ v-model="data.fields[index].value"
109
+ :value="data.fields[index].options[index2].value"
110
+ @change="onchange(index)"
111
+ @blur="onblur(index)">
112
+ {{row.label}}
113
+ </label>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+
119
+ <!-- onetomany -->
120
+ <div class="" v-for="(index,item) in data.onetomany">
121
+ <onetomany :selectdata="data" :onetomany="item" :index="index" v-if="(item.device === 'pc' || !item.device) && !item.hidden"></onetomany>
122
+ </div>
123
+
124
+ <div v-for="(i,item) in data.components">
125
+ <component v-if="(item.device === 'pc' || !item.device) && !item.hidden" :is="item.name" :selectdata="data" :mark="item.mark"></component>
126
+ </div>
127
+
128
+ <!--自定义组件-->
129
+ <slot></slot>
130
+ <!--公司等属性-->
131
+ <div class="col-sm-12 form-group text-center" style="padding-top:8px">
132
+ <div class="col-sm-3 form-group center-block">
133
+ <label class="col-sm-5">所属公司:</label>
134
+ <div class="col-sm-6" style="text-align: left">
135
+ {{model.orgs}}
136
+ </div>
137
+ </div>
138
+ <div class="col-sm-3 form-group center-block">
139
+ <label class="col-sm-5">部门:</label>
140
+ <div class="col-sm-6" style="text-align: left">
141
+ {{model.parentname}}
142
+ </div>
143
+ </div>
144
+ <div class="col-sm-3 form-group center-block">
145
+ <label class="col-sm-5">操作人:</label>
146
+ <div class="col-sm-6 " style="text-align: left">
147
+ {{model.operator}}
148
+ </div>
149
+ </div>
150
+ <div class="col-sm-3 form-group center-block">
151
+ <label class="col-sm-5">操作日期:</label>
152
+ <div class="col-sm-6" style="text-align: left">
153
+ {{model.operate_date}}
154
+ </div>
155
+ </div>
156
+ </div>
157
+ <!-- 按钮组 -->
158
+ <div class="from-group col-sm-12 text-center">
159
+ <!-- 按钮组 -->
160
+ <button v-for="(index,button) in data.buttons"
161
+ :disabled="button.disabled && disable_button"
162
+ style="min-width:100px"
163
+ :class="button.disabled && disable_button ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
164
+ v-if="!button.hidden"
165
+ @click.prevent="click_but(button)"
166
+ >
167
+ {{button.button_name}}
168
+ </button>
169
+ </div>
170
+
171
+ <!-- 按钮模态框 -->
172
+ <modal v-if="showButModal" :show.sync="showButModal" backdrop="false" large>
173
+ <header slot="modal-header" class="modal-header">
174
+ <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
175
+ <span class="modal-title"><font
176
+ size="3">{{data.button.button_name}}</font></span>
177
+ </header>
178
+ <article slot="modal-body" class="modal-body clearfix">
179
+ <div class="form-group" style="padding: 0 150px">
180
+ <div v-for="(index,item) in data.button.button_fields">
181
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group' : 'form-group']"
182
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)">
183
+ <label :style="item.label_style ? item.label_style : ''"
184
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
185
+ <div :style="item.value_style ? item.value_style : ''"
186
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
187
+ <input class="form-control input_view"
188
+ :placeholder="item.placeholder"
189
+ :type="item.type"
190
+ v-model="item.value"
191
+ :value="item.value"
192
+ :readonly="item.readonly"
193
+ :disabled="item.disabled"
194
+ @change="onbutchange(index)"
195
+ @blur="onbutblur(index)"
196
+ @input="onbutinput(index)"
197
+ />
198
+ </div>
199
+ </div>
200
+
201
+ <!--时间datepicker-->
202
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
203
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)">
204
+ <label :style="item.label_style ? item.label_style : ''"
205
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
206
+ <div :style="item.value_style ? item.value_style : ''"
207
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
208
+ <datepicker
209
+ :placeholder="item.placeholder"
210
+ :value.sync="item.value"
211
+ v-model="item.value"
212
+ :readonly="item.readonly"
213
+ :disabled="item.disabled"
214
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
215
+ :show-reset-button="true"
216
+ @change="onbutchange(index)"
217
+ @blur="onbutblur(index)"
218
+ ></datepicker>
219
+ </div>
220
+ </div>
221
+
222
+ <!--select-->
223
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
224
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)">
225
+ <label :style="item.label_style ? item.label_style : ''"
226
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
227
+ <div :style="item.value_style ? item.value_style : ''"
228
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
229
+ <input-select
230
+ class="select select_list"
231
+ :value.sync="item.value"
232
+ v-model="item.value"
233
+ :options='item.options'
234
+ :readonly="item.readonly"
235
+ :disable="item.disabled"
236
+ :valueSingle="true"
237
+ @blur="onbutblur(index)"
238
+ @change="onbutchange(index)"
239
+ ></input-select>
240
+ </div>
241
+ </div>
242
+
243
+ <!--textarea-->
244
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
245
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)">
246
+ <label :style="item.label_style ? item.label_style : ''"
247
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
248
+ <div :style="item.value_style ? item.value_style : ''"
249
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
250
+ <textarea
251
+ class="form-control input_view"
252
+ style="width: 100%;height: 100%"
253
+ v-model="item.value"
254
+ :value="item.value"
255
+ :rows="item.rows"
256
+ :readonly="item.readonly"
257
+ :disabled="item.disabled"
258
+ @change="onbutchange(index)"
259
+ @blur="onbutblur(index)"
260
+ @input="onbutinput(index)"
261
+ ></textarea>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ </div>
266
+ </article>
267
+ <footer slot="modal-footer" class="modal-footer">
268
+ <button :class="disable_modal_button ? 'btn btn-default':'btn btn-primary'"
269
+ :disabled="disable_modal_button" type="button" @click="confirmModal()">
270
+ 确认
271
+ </button>
272
+ </footer>
273
+ </modal>
274
+ </form>
275
+ </div>
276
+ </template>
277
+ <script>
278
+ import Vue from 'vue'
279
+ import {isEmpty} from '../Util'
280
+ // Date格式化
281
+ Date.prototype.Format = function (fmt) {
282
+ var o = {
283
+ 'M+': this.getMonth() + 1, // 月份
284
+ 'd+': this.getDate(), // 日
285
+ 'H+': this.getHours(), // 小时
286
+ 'm+': this.getMinutes(), // 分
287
+ 's+': this.getSeconds(), // 秒
288
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
289
+ 'S': this.getMilliseconds() // 毫秒
290
+ }
291
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
292
+ for (var k in o) {
293
+ if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
294
+ }
295
+ return fmt
296
+ }
297
+
298
+ export default {
299
+ title: '报建业务通用组件',
300
+ props: {
301
+ data: {
302
+ type: Object
303
+ }
304
+ },
305
+ data () {
306
+ return {
307
+ model: {}, // 公司等属性
308
+ disable_button: true, // 控制按钮禁用
309
+ disable_modal_button: true, // 控制按钮禁用
310
+ showButModal: false
311
+ }
312
+ },
313
+ watch: {
314
+ deep: true
315
+ },
316
+ computed: {
317
+
318
+ },
319
+ created () {
320
+ // 初始化数据
321
+ this.initializtion()
322
+ if (this.data.readyEvent) {
323
+ this.$dispatch(this.data.readyEvent)
324
+ }
325
+ this.$dispatch('initializtionView')
326
+
327
+ setTimeout(() => {
328
+ // 是否禁用按钮
329
+ this.disableButton()
330
+ }, 2000)
331
+ },
332
+ methods: {
333
+ // 初始化数据
334
+ initializtion () {
335
+ for (const item of this.data.fields) {
336
+ this.data[item.field] = item.value
337
+ }
338
+
339
+ // 公司等属性初始化
340
+ if (this.data.orgs) {
341
+ this.model.orgs = this.data.orgs
342
+ } else {
343
+ this.model.orgs = this.$login.f.orgs
344
+ }
345
+ if (this.data.parentname) {
346
+ this.model.parentname = this.data.parentname
347
+ } else {
348
+ this.model.parentname = this.$login.f.f_department_name
349
+ }
350
+ if (this.data.operate_date) {
351
+ this.model.operate_date = this.data.operate_date
352
+ } else {
353
+ this.model.operate_date = new Date().Format('yyyy-MM-dd')
354
+ }
355
+ if (this.data.operator) {
356
+ this.model.operator = this.data.operator
357
+ } else {
358
+ this.model.operator = this.$login.f.name
359
+ }
360
+ },
361
+ // 是否禁用按钮
362
+ disableButton () {
363
+ let flag = false
364
+
365
+ for (const field of this.data.fields) {
366
+ if (field.required && !field.value && !field.hidden && field.value !== 0) {
367
+ flag = true
368
+ }
369
+
370
+ // 任何选择框只要是否都不能提交
371
+ if (field.type === 'select' && field.value === '否' && field.value_no_disable) {
372
+ flag = true
373
+ }
374
+
375
+ if (field.type === 'checkbox' && field.required && field.value.length === 0) {
376
+ flag = true
377
+ }
378
+ }
379
+
380
+ this.disable_button = flag
381
+ },
382
+ // 失去焦点且值最终发生变化触发
383
+ async onchange (index) {
384
+ // 是否禁用按钮
385
+ this.disableButton()
386
+
387
+ if (!isEmpty(this.data.fields[index].value)) {
388
+ // 前缀、后缀
389
+ if (this.data.fields[index].prefix) {
390
+ this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
391
+ }
392
+ if (this.data.fields[index].suffix) {
393
+ this.data.fields[index].value = this.data.fields[index].value + this.data.fields[index].suffix
394
+ }
395
+ }
396
+
397
+ // data赋值
398
+ this.data[this.data.fields[index].field] = this.data.fields[index].value
399
+
400
+ if (this.data.fields[index].type === 'datepicker') {
401
+ this.check_datepicker(index)
402
+ }
403
+
404
+ if (this.data.fields[index].onchange) {
405
+ this.$dispatch(this.data.fields[index].onchange, index)
406
+ }
407
+ this.$dispatch('onchange', index)
408
+ },
409
+ // 失去焦点触发,无论值是否发生变化
410
+ onblur (index) {
411
+ this.disableButton()
412
+
413
+ if (this.data.fields[index].onblur) {
414
+ this.$dispatch(this.data.fields[index].onblur, index)
415
+ }
416
+
417
+ this.$dispatch('onblur', index)
418
+ },
419
+ oninput (index) {
420
+ // 是否禁用按钮
421
+ this.disableButton()
422
+
423
+ if (this.data.fields[index].oninput) {
424
+ this.$dispatch(this.data.fields[index].oninput, index)
425
+ }
426
+ this.$dispatch('oninput', index)
427
+ },
428
+ selectSearch(event, index) {
429
+ if (this.data.fields[index].selectSearch) {
430
+ this.$dispatch(this.data.fields[index].selectSearch, event[0], index)
431
+ }
432
+ this.$dispatch('selectSearch', event[0], index)
433
+ },
434
+ // 点击按钮组按钮
435
+ async click_but (button) {
436
+ this.disable_button = true
437
+
438
+ this.data.fields.forEach(item => {
439
+ this.data[item.field] = item.value
440
+ })
441
+
442
+ this.data.button = button
443
+
444
+ if (button.button_fields && button.button_fields.length > 0) {
445
+ this.showButModal = true
446
+ return
447
+ }
448
+
449
+ if (this.data.button.event) {
450
+ this.$dispatch(this.data.button.event)
451
+ } else {
452
+ this.$dispatch('button')
453
+ }
454
+ },
455
+ confirmModal () {
456
+ this.closeModal()
457
+
458
+ this.data.button.button_fields.forEach(item => {
459
+ this.data.button[item.field] = item.value
460
+ })
461
+
462
+ if (this.data.button.event) {
463
+ this.$dispatch(this.data.button.event)
464
+ } else {
465
+ this.$dispatch('button')
466
+ }
467
+ },
468
+ // 关闭模态框
469
+ closeModal () {
470
+ this.showButModal = false
471
+ this.disable_modal_button = false
472
+ },
473
+ onbutchange (index) {
474
+ // 是否禁用按钮
475
+ this.disableModalButton()
476
+
477
+ if (this.data.button.button_fields[index].onchange) {
478
+ this.$dispatch(this.data.button.button_fields[index].onchange, index)
479
+ } else {
480
+ this.$dispatch('onbutchange', index)
481
+ }
482
+
483
+ },
484
+ onbutblur (index) {
485
+ this.disableModalButton()
486
+
487
+ if (this.data.button.button_fields[index].onblur) {
488
+ this.$dispatch(this.data.button.button_fields[index].onblur, index)
489
+ } else {
490
+ this.$dispatch('onbutblur', index)
491
+ }
492
+ },
493
+ onbutinput (index) {
494
+ // 是否禁用按钮
495
+ this.disableModalButton()
496
+
497
+ if (this.data.button.button_fields[index].oninput) {
498
+ this.$dispatch(this.data.button.button_fields[index].oninput, index)
499
+ } else {
500
+ this.$dispatch('onbutinput', index)
501
+ }
502
+ },
503
+ disableModalButton () {
504
+ let flag = false
505
+
506
+
507
+ for (const item of this.data.button.button_fields) {
508
+ if (item.required && !item.value) {
509
+ if (item.value === 0) {
510
+ flag = false
511
+ } else {
512
+ flag = true
513
+ }
514
+ }
515
+ }
516
+
517
+ this.disable_modal_button = flag
518
+ },
519
+ check_datepicker (index) {
520
+ // 时间格式检测
521
+ if (!isEmpty(this.data.fields[index].value)) {
522
+
523
+ let dateReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
524
+ let timeReg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
525
+ let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
526
+ if (this.data.fields[index].format) {
527
+ if (this.data.fields[index].format === 'yyyy-MM-dd') {
528
+ if (!dateReg.test(this.data.fields[index].value)) {
529
+ this.data.fields[index].value = ''
530
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
531
+ }
532
+ }
533
+ if (this.data.fields[index].format === 'HH:mm:ss') {
534
+ if (!timeReg.test(this.data.fields[index].value)) {
535
+ this.data.fields[index].value = ''
536
+ this.$showAlert(this.data.fields[index].label + '格式错误如:00:00:00', 'warning', 2000)
537
+ }
538
+ }
539
+ if (this.data.fields[index].format === 'yyyy-MM-dd HH:mm:ss') {
540
+ if (!datetimeReg.test(this.data.fields[index].value)) {
541
+ this.data.fields[index].value = ''
542
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01 00:00:00', 'warning', 2000)
543
+ }
544
+ }
545
+ } else {
546
+ if (!dateReg.test(this.data.fields[index].value)) {
547
+ this.data.fields[index].value = ''
548
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
549
+ }
550
+ }
551
+ }
552
+ }
553
+ },
554
+ events: {
555
+
556
+ }
557
+ }
558
+ </script>
559
+ <style>
560
+ .datepicker{
561
+ width: 100%!important;
562
+ }
563
+ .datepicker-input{
564
+ background-color: #ffffff!important;
565
+ width: 100%!important;
566
+ }
567
+ .datepicker-input:disabled{
568
+ border: 1px solid #DDD!important;
569
+ color: #ACA899!important;
570
+ width: 100%!important;
571
+ }
572
+ </style>
573
+ <style scoped>
574
+ th{
575
+ font-size: 15px !important;
576
+ text-align: center !important;
577
+ background-color: #dfedfb!important;
578
+ color: #666666 !important;
579
+ font-family: PINGFANG-BOLD !important;
580
+ font-weight: normal!important;
581
+ }
582
+ /*清除model中的浮动*/
583
+ .clearfix:after,.clearfix:before{
584
+ display: table;
585
+ }
586
+ .clearfix:after{
587
+ clear: both;
588
+ }
589
+
590
+ .input_view{
591
+ background-color: #ffffff;
592
+ border-radius: 2px;
593
+ border: solid 1px #c7c7c7!important;
594
+ color: #333333!important;
595
+ font-size: 15px!important;
596
+ }
597
+
598
+ .input_view[readonly]{
599
+ border: 1px solid #DDD!important;
600
+ color:#ACA899!important;
601
+ }
602
+ .input_view:disabled{
603
+ border: 1px solid #DDD!important;
604
+ color:#ACA899!important;
605
+ }
606
+
607
+ .control-label-justify {
608
+ display: inline-block;
609
+ vertical-align: top;
610
+ width: 110px;
611
+ text-align: justify;
612
+ font-family: PingFang-SC-Bold;
613
+ }
614
+
615
+ .control-label-justify::after {
616
+ content: "";
617
+ display: inline-block;
618
+ width: 100%;
619
+ overflow: hidden;
620
+ height: 0;
621
+ }
622
+
623
+ input::-webkit-outer-spin-button,
624
+ input::-webkit-inner-spin-button {
625
+ -webkit-appearance: none;
626
+ }
627
+
628
+ input[type="number"] {
629
+ -moz-appearance: textfield;
630
+ }
631
+
632
+ </style>