safecheck-client 4.0.1-7 → 4.0.1-70

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 (304) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/android.html +18 -18
  4. package/config/dev.env.js +6 -6
  5. package/config/index.js +38 -38
  6. package/config/prod.env.js +3 -3
  7. package/config/test.env.js +6 -6
  8. package/docs/AppBase.md +22 -22
  9. package/docs/Busy.md +14 -14
  10. package/docs/CriteriaPaged.md +47 -47
  11. package/docs/DataGrid.md +54 -54
  12. package/docs/DataModel.md +22 -22
  13. package/docs/Dynamic.md +42 -42
  14. package/docs/GetParams.md +11 -11
  15. package/docs/HttpBusy.md +13 -13
  16. package/docs/HttpStore.md +29 -29
  17. package/docs/MessageBox.md +28 -28
  18. package/docs/PagedList.md +29 -29
  19. package/docs/Pager.md +21 -21
  20. package/docs/Project.md +23 -23
  21. package/docs/Route.md +105 -105
  22. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  23. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  24. package/docs/Task.md +46 -46
  25. package/docs/TreeList.md +28 -28
  26. package/docs/TreeMixin.md +18 -18
  27. package/docs/all.md +10 -10
  28. package/docs/list.md +42 -42
  29. package/docs/partial.md +75 -75
  30. package/docs/selector.md +82 -82
  31. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  32. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue-strap/345/217/230/346/233/264/350/256/260/345/275/225.md +7 -7
  33. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue/345/217/230/346/233/264/350/256/260/345/275/225.md +13 -13
  34. package/docs//345/274/200/345/217/221/346/226/207/346/241/243//345/274/200/345/217/221/347/216/257/345/242/203/350/256/276/347/275/256.md +77 -77
  35. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  36. package/examples/AddressList/App.vue +13 -13
  37. package/examples/AddressList/index.html +11 -11
  38. package/examples/DispatchList/App.vue +10 -10
  39. package/examples/DispatchList/BaseTree.vue +13 -13
  40. package/examples/DispatchList/Init.vue +22 -22
  41. package/examples/DispatchList/Test.vue +20 -20
  42. package/examples/DispatchList/index.html +11 -11
  43. package/examples/DispatchList/main.js +18 -18
  44. package/home.html +16 -16
  45. package/package.json +5 -5
  46. package/publish.bat +7 -7
  47. package/release.bat +5 -5
  48. package/src/Widget.vue +13 -13
  49. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  50. package/src/android-bootstrap/less/.csscomb.json +304 -304
  51. package/src/android-bootstrap/less/.csslintrc +19 -19
  52. package/src/android-bootstrap/less/alerts.less +73 -73
  53. package/src/android-bootstrap/less/badges.less +66 -66
  54. package/src/android-bootstrap/less/bootstrap.less +56 -56
  55. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  56. package/src/android-bootstrap/less/button-groups.less +247 -247
  57. package/src/android-bootstrap/less/buttons.less +173 -173
  58. package/src/android-bootstrap/less/carousel.less +269 -269
  59. package/src/android-bootstrap/less/close.less +34 -34
  60. package/src/android-bootstrap/less/code.less +69 -69
  61. package/src/android-bootstrap/less/component-animations.less +33 -33
  62. package/src/android-bootstrap/less/grid.less +84 -84
  63. package/src/android-bootstrap/less/input-groups.less +167 -167
  64. package/src/android-bootstrap/less/jumbotron.less +52 -52
  65. package/src/android-bootstrap/less/labels.less +64 -64
  66. package/src/android-bootstrap/less/list-group.less +141 -141
  67. package/src/android-bootstrap/less/media.less +66 -66
  68. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  69. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  70. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  71. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  72. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  73. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  74. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  75. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  76. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  77. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  78. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  79. package/src/android-bootstrap/less/mixins/image.less +33 -33
  80. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  81. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  82. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  83. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  84. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  85. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  86. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  87. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  88. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  89. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  90. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  91. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  92. package/src/android-bootstrap/less/mixins/size.less +10 -10
  93. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  94. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  95. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  96. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  97. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  98. package/src/android-bootstrap/less/mixins.less +40 -40
  99. package/src/android-bootstrap/less/modals.less +151 -151
  100. package/src/android-bootstrap/less/navbar.less +660 -660
  101. package/src/android-bootstrap/less/navs.less +290 -290
  102. package/src/android-bootstrap/less/normalize.less +424 -424
  103. package/src/android-bootstrap/less/pager.less +76 -76
  104. package/src/android-bootstrap/less/pagination.less +89 -89
  105. package/src/android-bootstrap/less/panels.less +274 -274
  106. package/src/android-bootstrap/less/popovers.less +131 -131
  107. package/src/android-bootstrap/less/print.less +101 -101
  108. package/src/android-bootstrap/less/progress-bars.less +87 -87
  109. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  110. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  111. package/src/android-bootstrap/less/scaffolding.less +161 -161
  112. package/src/android-bootstrap/less/tables.less +262 -262
  113. package/src/android-bootstrap/less/theme.less +291 -291
  114. package/src/android-bootstrap/less/thumbnails.less +36 -36
  115. package/src/android-bootstrap/less/tooltip.less +102 -102
  116. package/src/android-bootstrap/less/type.less +303 -303
  117. package/src/android-bootstrap/less/utilities.less +55 -55
  118. package/src/android-bootstrap/less/variables.less +896 -896
  119. package/src/android-bootstrap/less/wells.less +29 -29
  120. package/src/assets//350/255/246/345/221/212 (3).png +0 -0
  121. package/src/assets//350/255/246/345/221/212 (4).png +0 -0
  122. package/src/assets//350/255/246/345/221/212 (5).png +0 -0
  123. package/src/bootstrap/less/.csscomb.json +304 -304
  124. package/src/bootstrap/less/.csslintrc +19 -19
  125. package/src/bootstrap/less/alerts.less +73 -73
  126. package/src/bootstrap/less/badges.less +66 -66
  127. package/src/bootstrap/less/breadcrumbs.less +26 -26
  128. package/src/bootstrap/less/button-groups.less +247 -247
  129. package/src/bootstrap/less/buttons.less +172 -172
  130. package/src/bootstrap/less/carousel.less +269 -269
  131. package/src/bootstrap/less/close.less +34 -34
  132. package/src/bootstrap/less/code.less +69 -69
  133. package/src/bootstrap/less/component-animations.less +33 -33
  134. package/src/bootstrap/less/dropdowns.less +216 -216
  135. package/src/bootstrap/less/grid.less +84 -84
  136. package/src/bootstrap/less/input-groups.less +167 -167
  137. package/src/bootstrap/less/jumbotron.less +52 -52
  138. package/src/bootstrap/less/labels.less +64 -64
  139. package/src/bootstrap/less/list-group.less +141 -141
  140. package/src/bootstrap/less/media.less +66 -66
  141. package/src/bootstrap/less/mixins/alerts.less +14 -14
  142. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  143. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  144. package/src/bootstrap/less/mixins/buttons.less +69 -69
  145. package/src/bootstrap/less/mixins/center-block.less +7 -7
  146. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  147. package/src/bootstrap/less/mixins/forms.less +90 -90
  148. package/src/bootstrap/less/mixins/gradients.less +59 -59
  149. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  150. package/src/bootstrap/less/mixins/grid.less +122 -122
  151. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  152. package/src/bootstrap/less/mixins/image.less +33 -33
  153. package/src/bootstrap/less/mixins/labels.less +12 -12
  154. package/src/bootstrap/less/mixins/list-group.less +30 -30
  155. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  156. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  157. package/src/bootstrap/less/mixins/opacity.less +8 -8
  158. package/src/bootstrap/less/mixins/pagination.less +24 -24
  159. package/src/bootstrap/less/mixins/panels.less +24 -24
  160. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  161. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  162. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  163. package/src/bootstrap/less/mixins/resize.less +6 -6
  164. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  165. package/src/bootstrap/less/mixins/size.less +10 -10
  166. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  167. package/src/bootstrap/less/mixins/table-row.less +44 -44
  168. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  169. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  170. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  171. package/src/bootstrap/less/mixins.less +40 -40
  172. package/src/bootstrap/less/modals.less +151 -151
  173. package/src/bootstrap/less/navbar.less +660 -660
  174. package/src/bootstrap/less/normalize.less +424 -424
  175. package/src/bootstrap/less/pagination.less +89 -89
  176. package/src/bootstrap/less/panels.less +275 -275
  177. package/src/bootstrap/less/popovers.less +131 -131
  178. package/src/bootstrap/less/print.less +101 -101
  179. package/src/bootstrap/less/progress-bars.less +87 -87
  180. package/src/bootstrap/less/responsive-embed.less +35 -35
  181. package/src/bootstrap/less/responsive-utilities.less +194 -194
  182. package/src/bootstrap/less/scaffolding.less +161 -161
  183. package/src/bootstrap/less/theme.less +291 -291
  184. package/src/bootstrap/less/thumbnails.less +36 -36
  185. package/src/bootstrap/less/tooltip.less +102 -102
  186. package/src/bootstrap/less/type.less +303 -303
  187. package/src/bootstrap/less/utilities.less +55 -55
  188. package/src/bootstrap/less/wells.less +29 -29
  189. package/src/components/FileUpload.vue +696 -696
  190. package/src/components/Hello.vue +39 -39
  191. package/src/components/LeftTree.vue +27 -27
  192. package/src/components/NewDefectList/DefectListNew.vue +22 -3
  193. package/src/components/android/AndroidDefectDeal.vue +356 -323
  194. package/src/components/android/AndroidDefectDetails.vue +3 -3
  195. package/src/components/android/AppInstallationMaterial.vue +865 -0
  196. package/src/components/android/AttendanceTally.vue +116 -116
  197. package/src/components/android/Blank.vue +10 -10
  198. package/src/components/android/CheckUnplanPage.vue +56 -56
  199. package/src/components/android/Checker.vue +12 -12
  200. package/src/components/android/CheckerAnnual.vue +81 -81
  201. package/src/components/android/CheckerAvarta.vue +82 -82
  202. package/src/components/android/DailyworkloadQuery.vue +2 -1
  203. package/src/components/android/EquipmentInspection.vue +348 -348
  204. package/src/components/android/FootprintMap.vue +120 -120
  205. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  206. package/src/components/android/MasterMain.vue +77 -77
  207. package/src/components/android/Menu.vue +132 -132
  208. package/src/components/android/NewCheckpaperAndroid.vue +22 -48
  209. package/src/components/android/PaperAlarm.vue +85 -85
  210. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  211. package/src/components/android/PlumberAnnual.vue +83 -83
  212. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  213. package/src/components/android/PlumberMonthly.vue +84 -84
  214. package/src/components/android/PostMap.vue +83 -83
  215. package/src/components/android/QueryCheckHistory.vue +122 -122
  216. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  217. package/src/components/android/RepairMain.vue +60 -60
  218. package/src/components/android/Repairman.vue +12 -12
  219. package/src/components/android/StationMaster.vue +12 -12
  220. package/src/components/android/SwitchValve.vue +1 -1
  221. package/src/components/checkplan/CheckDetail.vue +1 -1
  222. package/src/components/defects/DefectModal.vue +101 -101
  223. package/src/components/defects/DevicesAndItem.vue +39 -39
  224. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  225. package/src/components/map/SecurityCheckCoordinates.vue +361 -0
  226. package/src/components/notice/NoticeForm.vue +100 -100
  227. package/src/components/notice/NoticeIssue.vue +20 -20
  228. package/src/components/paper/PicViewer.vue +18 -18
  229. package/src/components/pc/CheckBookUser.vue +337 -337
  230. package/src/components/pc/DefectDeal.vue +1 -0
  231. package/src/components/pc/DefectMaterialLook.vue +98 -0
  232. package/src/components/pc/PaperDefectMain.vue +26 -1
  233. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  234. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  235. package/src/components/phonestate/PostMap.vue +82 -82
  236. package/src/components/planmanage/PlanManage.vue +1 -0
  237. package/src/components/querycheckpaper/CheckPaperList.vue +6 -4
  238. package/src/components/querycheckpaper/CheckPaperSearchUser.vue +30 -4
  239. package/src/components/querycheckpaper/CheckSearchUser.vue +6 -1
  240. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  241. package/src/components/userfile/MeterFile.vue +145 -145
  242. package/src/components/userfile/MeterModify.vue +46 -46
  243. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  244. package/src/filiale/jinhong/android/CurrentCreate.vue +66 -22
  245. package/src/filiale/jinhong/pc/CheckBookList.vue +10 -7
  246. package/src/filiale/jinhong/pc/DefectPaperNew.vue +10 -10
  247. package/src/filiale/jinhong/pc/checkUserList.vue +30 -6
  248. package/src/filiale/libo/android/PaperFeedback.vue +1579 -0
  249. package/src/filiale/libo/android/PhoneUpUserinfo.vue +1249 -0
  250. package/src/filiale/libo/android/SafecheckOrderV.vue +2302 -0
  251. package/src/filiale/libo/android.js +14 -0
  252. package/src/filiale/libo/pc/NewCheckpaper.vue +1987 -0
  253. package/src/filiale/libo/pc.js +12 -0
  254. package/src/filiale/meihekou/android/CurrentCreate.vue +1 -1
  255. package/src/filiale/meihekou/android/MeterReading.vue +9 -5
  256. package/src/filiale/meihekou/android/PhoneUpUserinfo.vue +3 -2
  257. package/src/filiale/meihekou/android/SafecheckDevices.vue +5 -5
  258. package/src/filiale/meihekou/android/SafecheckOrderV.vue +324 -311
  259. package/src/filiale/meihekou/pc/NewCheckpaper.vue +2 -2
  260. package/src/filiale/meihekou/pc/NewCheckpaperNew.vue +2050 -0
  261. package/src/filiale/meihekou/pc/PaperList.vue +1205 -0
  262. package/src/filiale/meihekou/pc.js +2 -0
  263. package/src/filiale/minsheng/android/SwitchValve.vue +1 -1
  264. package/src/filiale/qianneng/android/SwitchValve.vue +1 -1
  265. package/src/filiale/qingjian/pc/checkUserList.vue +35 -0
  266. package/src/filiale/taiyuan/android/CurrentCreate.vue +1016 -0
  267. package/src/filiale/taiyuan/android/PhoneUpUserinfo.vue +1259 -0
  268. package/src/filiale/taiyuan/android/SafecheckOrderV.vue +2341 -0
  269. package/src/filiale/taiyuan/android/SafecheckUserInfo.vue +776 -0
  270. package/src/filiale/taiyuan/android.js +13 -0
  271. package/src/filiale/taiyuan/pc/DefectDeal.vue +1034 -0
  272. package/src/filiale/taiyuan/pc/NewCheckpaper.vue +1976 -0
  273. package/src/filiale/taiyuan/pc/PlanManage.vue +891 -0
  274. package/src/filiale/taiyuan/pc/checkUserList.vue +798 -0
  275. package/src/filiale/taiyuan/pc.js +15 -0
  276. package/src/filiale/tongchuan/android/SwitchValve.vue +1 -1
  277. package/src/filiale/xinkang/android/AddPlanItem.vue +244 -196
  278. package/src/filiale/xinkang/android/AndroidDefectDeal.vue +1 -0
  279. package/src/filiale/xinkang/android/SafecheckDevices.vue +52 -22
  280. package/src/filiale/xinkang/android/SafecheckOrderV.vue +24 -80
  281. package/src/filiale/xinkang/android/SafecheckUserInfo.vue +1 -1
  282. package/src/filiale/xinkang/pc/CheckSearchUser.vue +12 -12
  283. package/src/filiale/xinkang/pc/NewCheckpaper.vue +20 -44
  284. package/src/filiale/xinkang/pc/PaperList.vue +2 -9
  285. package/src/filiale/yuansheng/android/SwitchValve.vue +1 -1
  286. package/src/filiale/yunchengminsheng/android/PaperFeedback.vue +1030 -1030
  287. package/src/filiale/yunchengminsheng/android/SafecheckDevices.vue +4 -4
  288. package/src/filiale/yunchengminsheng/pc/PaperList.vue +811 -0
  289. package/src/filiale/yunchengminsheng/pc.js +1 -0
  290. package/src/main.js +33 -33
  291. package/src/plugins/LoadData.js +10 -10
  292. package/src/plugins/LoadParams.js +24 -24
  293. package/src/safecheck-android.js +4 -0
  294. package/src/safecheck.js +6 -0
  295. package/src/stores/wxconfig.js +10 -10
  296. package/src/utils/getNowDate.js +33 -33
  297. package/test/e2e/custom-assertions/elementCount.js +26 -26
  298. package/test/e2e/nightwatch.conf.js +40 -40
  299. package/test/e2e/runner.js +30 -30
  300. package/test/e2e/specs/test.js +13 -13
  301. package/test/unit/.eslintrc +5 -5
  302. package/test/unit/TestUtil.js +62 -62
  303. package/test/unit/context.html +20 -20
  304. package/test/unit/index.js +13 -13
@@ -0,0 +1,865 @@
1
+ <template>
2
+ <work-busy :is-busy="button_state"></work-busy>
3
+ <div v-for="(i, item) in material" class="y-form">
4
+ <div class="y-form-head">
5
+ <span style="text-align: center">材料{{ $index + 1 }}信息</span>
6
+ <button style="float: right" class="button_delete button_spacing" v-if="i > 0" @click.prevent="deleteUserFile(i)">删除
7
+ </button>
8
+ </div>
9
+ <div class="y-form-item">
10
+ <label>材料分类</label>
11
+ <input-select
12
+ class="select select_list y-form-item-input"
13
+ :value.sync="item.f_typename" v-model="item.f_typename"
14
+ :options="category.typeoptions"
15
+ @change="materialChange(item.f_typename)"
16
+ :valueSingle="true">
17
+ </input-select>
18
+ </div>
19
+ <div class="y-form-item">
20
+ <label>材料名称</label>
21
+ <input-select
22
+ class="select select_list y-form-item-input"
23
+ :value.sync="item.f_material_name"
24
+ v-model="item.f_material_name"
25
+ :options="category.options"
26
+ @change="item.f_typenumber = undefined"
27
+ :valueSingle="true">
28
+ </input-select>
29
+ </div>
30
+ <div class="y-form-item">
31
+ <label>材料型号</label>
32
+ <input-select
33
+ class="select select_list y-form-item-input"
34
+ :value.sync="item.f_typenumber"
35
+ v-model="item.f_typenumber"
36
+ :options="category.children[item.f_material_name].options"
37
+ @change="handleTypeChange(i)"
38
+ :valueSingle="true">
39
+ </input-select>
40
+ </div>
41
+ <div class="y-form-item">
42
+ <label>单价(元/{{
43
+ category.children[item.f_material_name].children[item.f_typenumber].f_material_spec
44
+ }})</label>
45
+ <input type="number" class="form-control y-form-item-input" v-model="item.f_material_price"
46
+ :value="item.f_material_price || category.children[item.f_material_name].children[item.f_typenumber].f_material_price">
47
+ </div>
48
+ <div class="y-form-item">
49
+ <label>数量</label>
50
+ <input type="number" class="form-control y-form-item-input" v-model="item.f_material_number">
51
+ </div>
52
+ <div class="y-form-item">
53
+ <label>金额</label>
54
+ <input type="number" class="form-control y-form-item-input" v-model="item.f_fee"
55
+ :value="smallnum(item.f_material_price, item.f_material_number)" readonly>
56
+ </div>
57
+ <div class="y-form-item">
58
+ <label>备注</label>
59
+ <textarea type="text" rows="2" class="form-control y-form-item-input" v-model="item.f_remarks"></textarea>
60
+ </div>
61
+ </div>
62
+ <div style="padding: 10px;display: flex;justify-content: space-around;">
63
+ <button type="button" class="btn btn-primary" @click="addUserFile">添加</button>
64
+ <button type="button" class="btn btn-primary" @click="showQrcodeButton">保存</button>
65
+ </div>
66
+ <div v-show="showQrCode">
67
+ <div class="row">
68
+ <label class="text-justify lb-left" style="width: 100px">收款</label>
69
+ <div class="row row_sty">
70
+ <label class="lab_sty col-xs-4">合计金额</label>
71
+ <div class="col-xs-8">
72
+ <input type="number" class="form-control" v-model="payNumber" :value.sync="payNumber" readonly>
73
+ </div>
74
+ </div>
75
+ <div class="row row_sty">
76
+ <label class="lab_sty col-xs-4">收款方式</label>
77
+ <div class="col-xs-8">
78
+ <v-select
79
+ :width="'100%'"
80
+ :value.sync="payType"
81
+ v-model="payType"
82
+ :options='payTypes'
83
+ placeholder='请选择'
84
+ close-on-select
85
+ :value-single="true"
86
+ ></v-select>
87
+ </div>
88
+ </div>
89
+ <div v-if="zfCode" style="margin-top: 20px; text-align: center;">
90
+ <div id="qrcode" style="margin-top: 25px;width: 266px;height: 266px"></div>
91
+ </div>
92
+ </div>
93
+ <div style="padding: 10px;display: flex;justify-content: space-around;">
94
+ <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right:10px;"
95
+ @click="beforeSaveCharge()">收费
96
+ </button>
97
+ <button type="button" class="btn btn-primary" @click="cancel">取消</button>
98
+ </div>
99
+ </div>
100
+ </template>
101
+ <script>
102
+ import Vue from 'vue'
103
+ import {HttpResetClass} from 'vue-client'
104
+ import QRCode from 'qrcodejs2'
105
+ import {getNowDate, isEmpty} from '../../components/Util'
106
+
107
+ export default {
108
+ title: '材料添加',
109
+ props: {
110
+ selectdata: {
111
+ type: Object
112
+ }
113
+ },
114
+ data() {
115
+ return {
116
+ originalOptions: [], // 用于保存原始数据
117
+ othercharge_id: '',
118
+ payState: false,
119
+ zfCode: false,
120
+ f_out_trade_no: '',
121
+ payTypes: [{label: '二维码支付', value: '二维码支付'},{label: '微信支付', value: '微信支付'}],
122
+ payType: '',
123
+ payNumber: 0,
124
+ button_state: false,
125
+ category: {
126
+ options: [],
127
+ },
128
+ showFile: false,
129
+ material: [],
130
+ positions: this.$appdata.getParam('品名及规格'), // 获取材料名称
131
+ charge: {
132
+ payment_terms: [{f_payment_term: '', f_charge_money: '', f_amount_words: '', f_payment_method: ''}]
133
+ }, // 收费内容
134
+ showCharge: false, // 收费显示
135
+ timeLeft: 300, // 收费时间
136
+ title1: '', // 二维码标题
137
+ showQrCode: false, // 二维码显示
138
+ order: {}, // 订单信息
139
+ f_cost_sum: 0, // 总收费
140
+ }
141
+ },
142
+ ready() {
143
+ this.loadOptions()
144
+ },
145
+ methods: {
146
+ handleTypeChange(i) {
147
+ if(!isEmpty(this.material[i].f_material_name)){
148
+ this.material[i].f_material_price = this.category.children[this.material[i].f_material_name].children[this.material[i].f_typenumber].f_material_price
149
+ }
150
+
151
+ },
152
+ materialChange(typename) {
153
+ this.category.options=[]
154
+ if(isEmpty(typename)){
155
+ this.category.options=[]
156
+ }else{
157
+ // 从原始数据中过滤,仅保留当前分类下的材料名称
158
+ // this.category.options = this.originalOptions.filter(option => option.key === typename);
159
+ for (let i = 0; i < this.originalOptions.length; i++) {
160
+ if (this.originalOptions[i].key === typename) {
161
+ this.category.options.push({
162
+ label: this.originalOptions[i].label,
163
+ value: this.originalOptions[i].value
164
+ })
165
+ }
166
+
167
+ }
168
+ }
169
+ },
170
+ cancel() {
171
+ this.payNumber = 0
172
+ this.othercharge_id = ''
173
+ this.payState = false
174
+ this.zfCode = false
175
+ this.showQrCode = false
176
+ clearTimeout(this.orderInterval)
177
+ },
178
+ getChangePayNumber() {
179
+ this.payNumber = 0
180
+ for (let i = 0; i < this.material.length; i++) {
181
+ this.material[i].f_fee = this.material[i].f_material_price * this.material[i].f_material_number
182
+ this.payNumber += Number(this.material[i].f_fee)
183
+ }
184
+ },
185
+ showQrcodeButton() {
186
+ this.getChangePayNumber()
187
+ this.showQrCode = true
188
+ },
189
+ loadOptions () {
190
+ const data = {
191
+ tablename: 't_material_management',
192
+ condition: `1=1 and f_orgid='${Vue.user.orgid}'`
193
+ }
194
+ this.$resetpost(this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data}, {
195
+ resolveMsg: null,
196
+ rejectMsg: '获取数据失败'
197
+ }).then((res) => {
198
+ const categories = []
199
+ const types = []
200
+ for (let material of res.data) {
201
+ if (material.f_material_stype == '分类') {
202
+ categories.push(material)
203
+ } else if (material.f_material_stype == '型号') {
204
+ types.push(material)
205
+ }
206
+ }
207
+ this.category.typeoptions = []
208
+ const seen = new Set(); // 用于记录已出现的 f_material_type
209
+ for (let category of categories) {
210
+ const type = category.f_material_type;
211
+ if (!seen.has(type)) {
212
+ seen.add(type);
213
+ this.category.typeoptions.push({
214
+ label: type,
215
+ value: type
216
+ });
217
+ }
218
+ }
219
+ this.originalOptions = []
220
+ for (let category of categories) {
221
+ this.originalOptions.push({
222
+ key: category.f_material_type,
223
+ label: category.f_material_name,
224
+ value: category.f_material_name
225
+ })
226
+ }
227
+
228
+ this.category.children = {}
229
+ for (let category of categories) {
230
+ this.category.children[category.f_material_name] = {
231
+ options: [],
232
+ children: {}
233
+ }
234
+
235
+ for (let type of types) {
236
+ if (type.parent_id == category.id) {
237
+ this.category.children[category.f_material_name].options.push({
238
+ label: type.f_material_name,
239
+ value: type.f_material_name
240
+ })
241
+ this.category.children[category.f_material_name].children[type.f_material_name] = type
242
+ }
243
+ }
244
+ }
245
+ console.log('this.category=', JSON.stringify(this.category))
246
+ this.search()
247
+ })
248
+ },
249
+ // 删除未保存的材料信息
250
+ async deleteUserFile(index) {
251
+ this.material.splice(index, 1)
252
+ this.cancel()
253
+ },
254
+ // 追加材料信息
255
+ addUserFile() {
256
+ this.material.push({})
257
+ this, this.cancel()
258
+ },
259
+ search() {
260
+ let http = new HttpResetClass()
261
+ let data = {
262
+ tablename: 't_material_service',
263
+ condition: `f_process_id = '${this.selectdata.f_process_id}'`
264
+ }
265
+ http.load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data: data}, {
266
+ resolveMsg: null,
267
+ rejectMsg: '获取数据失败'
268
+ }).then(res => {
269
+ this.material = res.data
270
+ if (this.material.length <= 0) {
271
+ this.material = [{}]
272
+ }
273
+ })
274
+ },
275
+ // 获取品名规格
276
+ // setTypename(i, val) {
277
+ // let ac = this.$appdata.getParam(val)
278
+ // this.$set('material[' + i + '].typeNameList', ac)
279
+ // this.$set('material[' + i + '].typeNumberList', [])
280
+ // this.$set('material[' + i + '].f_typenumber', null)
281
+ // this.$set('material[' + i + '].f_material_price', 0)
282
+ // },
283
+ // 获取类型
284
+ // setTypenumber(i, val) {
285
+ // let ac = this.$appdata.getParam(val)
286
+ // this.$set('material[' + i + '].typeNumberList', ac)
287
+ // this.$set('material[' + i + '].f_material_price', 0)
288
+ // },
289
+ // 获取单价
290
+ // setmaterialprice(i, val) {
291
+ // var num
292
+ // if (val == null) {
293
+ // num = 0
294
+ // }
295
+ // num = this.$appdata.getSingleValue(val)
296
+ // this.$set('material[' + i + '].f_material_price', num)
297
+ // },
298
+ // 金额计算
299
+ smallnum(val, val1) {
300
+ let num = Number(val) * Number(val1)
301
+ return num
302
+ },
303
+ qrcode(url) {
304
+ new QRCode('qrcode', {
305
+ text: url, // 设置二维码内容或跳转地址
306
+ width: 266, // 设置宽度,单位像素
307
+ height: 266, // 设置高度,单位像素
308
+ correctLevel: QRCode.CorrectLevel.L //容错率,L/M/Hs
309
+ })
310
+ },
311
+ clearQrCode() {
312
+ if (document.getElementById('qrcode')) {
313
+ document.getElementById('qrcode').innerHTML = ''
314
+ }
315
+ },
316
+ async getOrderInformation() {
317
+ // 查询订单信息
318
+ console.log('查询订单信息!!!')
319
+ let http = new HttpResetClass()
320
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/orderStatus`, {
321
+ "f_filiale": "wensuxilong",
322
+ "out_trade_no": `${this.f_out_trade_no}`
323
+ }, {
324
+ resolveMsg: null,
325
+ rejectMsg: '订单查询失败!!!'
326
+ })
327
+ // 支付成功
328
+ if (res.data.trade_state_desc.includes('成功')) {
329
+ this.$showMessage('支付成功!!!')
330
+ await this.saveUserFile('save')
331
+ this.clearQrCode()
332
+ this.cancel()
333
+ }
334
+ },
335
+ async openQrcode() {
336
+ this.clearQrCode()
337
+ let data = {
338
+ tablename: 't_userfiles',
339
+ condition: `f_userinfo_id = '${this.selectdata.model.f_userinfo_id}'`
340
+ }
341
+ let res = await new HttpResetClass().load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data: data}, {
342
+ resolveMsg: null,
343
+ rejectMsg: '获取数据失败'
344
+ })
345
+ let reqdata = {
346
+ "filiale": "wensuxilong",
347
+ "money": 1,
348
+ "str": "材料收费",
349
+ "attach": {
350
+ "f_userfiles_id": res.data[0].f_userfiles_id,
351
+ "f_userinfo_id": this.selectdata.model.f_userinfo_id
352
+ }
353
+ }
354
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/gasgetcode`, reqdata).then(res => {
355
+ if (res.data.code === 200) {
356
+ this.f_out_trade_no = res.data.out_trade_no
357
+ this.zfCode = true
358
+ this.$nextTick(() => {
359
+ this.qrcode(res.data.url)
360
+ })
361
+ this.orderInterval = setInterval(() => {
362
+ this.getOrderInformation()
363
+ }, 3000)
364
+ } else {
365
+ this.$showMessage('网络异常。。。')
366
+ }
367
+ })
368
+ },
369
+ async beforeSaveCharge() {
370
+
371
+
372
+ if (this.material.length == 0) {
373
+ return this.$showMessage(`请先添加消耗的材料!`)
374
+ }
375
+ for (let index = 0; index < this.material.length; index++) {
376
+ const item = this.material[index]
377
+ if (!item.f_material_name) {
378
+ this.$showMessage(`请选择材料${index + 1}的材料名称`)
379
+ return;
380
+ }
381
+ if (!item.f_typenumber) {
382
+ this.$showMessage(`请选择材料${index + 1}的型号`)
383
+ return;
384
+ }
385
+ if (!item.f_material_price) {
386
+ this.$showMessage(`请填写材料${index + 1}的单价`)
387
+ return;
388
+ }
389
+ if (!item.f_material_number || item.f_material_number == 0) {
390
+ this.$showMessage(`请填写材料${index + 1}的数量`)
391
+ return;
392
+ }
393
+ }
394
+ if (!this.payType) {
395
+ this.$showMessage(`请选择缴费方式`)
396
+ return;
397
+ }
398
+ if (this.payType.includes('二维码') && this.payNumber>0) {
399
+ await this.openQrcode()
400
+ } else {
401
+ this.payState= true
402
+ await this.saveUserFile('save')
403
+ }
404
+ },
405
+ async saveUserFile(type) {
406
+ for (let i = 0; i < this.material.length; i++) {
407
+ this.material[i].f_material_name = this.material[i].f_material_name
408
+ this.material[i].f_process_id = this.selectdata.f_process_id
409
+ this.material[i].f_department = Vue.user.f_department_name
410
+ this.material[i].f_operator = Vue.user.name
411
+ this.material[i].f_fee = this.material[i].f_material_price * this.material[i].f_material_number
412
+ if (isEmpty(this.material[i].f_state)) {
413
+ this.material[i].f_state = null
414
+ }
415
+ }
416
+ await this.saveOrder(type)
417
+ },
418
+ async saveOrder(type) {
419
+ console.log('this.material', this.material)
420
+ let otherdetail = []
421
+ if (this.payNumber == 0) {
422
+ otherdetail.push({
423
+ f_brand_spec: ['维修'],
424
+ f_typename: ['材料费'],
425
+ f_typenumber: [],
426
+ f_unitprice: 0,
427
+ f_number: this.material.length
428
+ })
429
+ } else {
430
+ this.material.forEach((row) => {
431
+ if (row.f_material_price != 0) {
432
+ otherdetail.push({
433
+ f_brand_spec: ['维修'],
434
+ f_typename: [`${row.material_type ? row.material_type : '材料费'}`],
435
+ f_typenumber: [],
436
+ f_unitprice: row.f_material_price,
437
+ f_number: row.f_material_number
438
+ })
439
+ }
440
+ })
441
+ }
442
+ let param = {
443
+ model: this.material,
444
+ operator_type: type,
445
+ othercharge_id: this.othercharge_id,
446
+ f_process_id: this.selectdata.f_process_id,
447
+ f_userinfo_code: this.selectdata.model.f_userinfo_id,
448
+ other:{
449
+ "record_userinfo": this.selectdata.model.f_userinfo_id,
450
+ "f_user_name": this.selectdata.model.f_user_name,
451
+ "f_address": this.selectdata.model.f_address,
452
+ "f_user_type": this.selectdata.model.f_user_type,
453
+ "f_gasproperties": "",
454
+ "f_collection": this.payNumber,
455
+ "f_comments": `${Vue.user.name}进行维修材料收费,收费方式-${this.payType} ${this.order.body && this.order.body.tradeNo ? '。支付订单号:' + this.order.body.tradeNo : ''}`,
456
+ "f_payment": this.payType,
457
+ "f_voucher_number": this.selectdata.f_process_id,
458
+ "f_bill_style": "普通收据",
459
+ "f_userinfo_id": this.selectdata.model.f_userinfo_id,
460
+ "f_service_person": Vue.user.name,
461
+ "f_operat_type": "维修收费",
462
+ "f_describe": "",
463
+ "f_serial_id": this.order.body ? this.order.body.tradeNo : null,
464
+ "f_state": '有效',
465
+ "f_operator": Vue.user.name,
466
+ "f_operatorid": Vue.user.id,
467
+ "f_orgid": Vue.user.orgid,
468
+ "f_orgname": Vue.user.orgs,
469
+ "f_depid": Vue.user.depids,
470
+ "f_depname": Vue.user.f_department_name,
471
+ "t_userfees": "",
472
+ "f_fee_type": "维修费用",
473
+ "f_fee_time": "12",
474
+ "otherdetail": otherdetail
475
+ }
476
+ }
477
+ console.log("材料收费保存", param)
478
+ let res = await new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/saveMaterialService`, param, {
479
+ resolveMsg: null,
480
+ rejectMsg: null
481
+ })
482
+ if (res.data.code == 200) {
483
+ if (type === 'create') {
484
+ // this.$showMessage('收费记录创建成功!!!')
485
+ // this.othercharge_id = res.data.othercharge_id
486
+ // this.$emit('aftersave')
487
+ } else {
488
+ this.$showMessage('材料保存成功!!!')
489
+ this.$emit('aftersave')
490
+ }
491
+
492
+
493
+ } else {
494
+ this.$showMessage(res.data.msg)
495
+ }
496
+ },
497
+ // 关闭对话框
498
+ // closeModal() {
499
+ // this.showCharge = false
500
+ // this.charge = {
501
+ // payment_terms: [{
502
+ // f_payment_term: '',
503
+ // f_charge_money: '',
504
+ // f_amount_words: '',
505
+ // f_payment_method: this.charge.f_payment_method
506
+ // }]
507
+ // }
508
+ // },
509
+ // 金额转大写
510
+ // handleInput(index) {
511
+ // // 通过正则过滤小数点后两位
512
+ // console.log('-----------------------')
513
+ // this.charge.payment_terms[index].f_charge_money = (this.charge.payment_terms[index].f_charge_money.match(/^\d*(\.?\d{0,2})/g)[0]) || null
514
+ // this.charge.payment_terms[index].f_amount_words = this.smalltoBIG(this.charge.payment_terms[index].f_charge_money)
515
+ // },
516
+ // 金额转大写
517
+ // smalltoBIG(n) {
518
+ // let fraction = ['角', '分'];
519
+ // let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
520
+ // let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
521
+ // let head = n < 0 ? '欠' : '';
522
+ // n = Math.abs(n);
523
+ //
524
+ // let s = '';
525
+ //
526
+ // for (var i = 0; i < fraction.length; i++) {
527
+ // s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
528
+ // }
529
+ // s = s || '整';
530
+ // n = Math.floor(n);
531
+ //
532
+ // for (var i = 0; i < unit[0].length && n > 0; i++) {
533
+ // let p = '';
534
+ // for (var j = 0; j < unit[1].length && n > 0; j++) {
535
+ // p = digit[n % 10] + unit[1][j] + p;
536
+ // n = Math.floor(n / 10);
537
+ // }
538
+ // s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
539
+ // }
540
+ // return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
541
+ // },
542
+ // moneyChange(index) {
543
+ // console.log(`当前下标----${index}`)
544
+ // if (isEmpty(this.charge.payment_terms[index].f_charge_money) || Number(this.charge.payment_terms[index].f_charge_money) === 0) {
545
+ // this.$showMessage('单笔收费不能为0元!!!', 'warning', 3000)
546
+ // this.charge.payment_terms[index].f_charge_money = null
547
+ // return
548
+ // }
549
+ //
550
+ // },
551
+ // 打开二维码
552
+ // async openQrCode() {
553
+ // let http = new HttpResetClass()
554
+ // for (let row = 0; row < this.charge.payment_terms.length; row++) {
555
+ // console.log(this.charge.payment_terms[row])
556
+ // if (isEmpty(this.charge.payment_terms[row].f_payment_term)) {
557
+ // this.$showMessage('请选择收费项目!!!', 'warning', 3000)
558
+ // return
559
+ // } else if (isEmpty(this.charge.payment_terms[row].f_charge_money)) {
560
+ // this.$showMessage('请输入收费金额!!!', 'warning', 3000)
561
+ // return
562
+ // }
563
+ // }
564
+ // if (this.charge.f_payment_method !== '微信支付' && this.charge.f_payment_method !== '支付宝支付') {
565
+ // this.saveother()
566
+ // this.$showMessage('缴费成功!')
567
+ // this.update()
568
+ // this.showCharge = false
569
+ // return
570
+ // }
571
+ // if (this.charge.f_payment_method == '微信支付') {
572
+ // this.title1 = '微信'
573
+ // }
574
+ // if (this.charge.f_payment_method == '支付宝支付') {
575
+ // this.title1 = '支付宝'
576
+ // }
577
+ // this.showCharge = false
578
+ // // 接口金额 单位为:分
579
+ // let data = {
580
+ // money: this.accMul(this.getTotalAmount(), 1) + '',
581
+ // attach: {
582
+ // "f_user": Vue.user.id,
583
+ // "f_user_name": Vue.user.name
584
+ // },
585
+ // orderType: '工单收费',
586
+ // userfilesid: '',
587
+ // flag: 'JsApiWeiNan',
588
+ // openid: '',
589
+ // filiale: 'weinanchengtou'
590
+ // }
591
+ // // 下订单
592
+ // await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/pay/jsApiPay`, data, {
593
+ // resolveMsg: null,
594
+ // rejectMsg: '订单生成失败!!!'
595
+ // }).then(
596
+ // res => {
597
+ // this.order = res.data
598
+ // this.showQrCode = true
599
+ // this.$nextTick(() => {
600
+ // this.qrcode()
601
+ // })
602
+ // // 剩余支付时间
603
+ // this.paymentInterval = setInterval(() => {
604
+ // this.timeLeft = this.timeLeft - 1
605
+ // }, 1000)
606
+ //
607
+ // // 3秒查询一次订单支付信息
608
+ // this.orderInterval = setInterval(() => {
609
+ // this.getOrderInformation()
610
+ // }, 3000)
611
+ // }
612
+ // )
613
+ // },
614
+ // getTotalAmount() {
615
+ // let money = 0
616
+ // this.charge.payment_terms.forEach((row) => {
617
+ // money = Math.floor((Number(money) + Number(row.f_charge_money)) * 100) / 100
618
+ // })
619
+ // return money
620
+ // },
621
+ // getPaymentTerm() {
622
+ // let term = ''
623
+ // this.charge.payment_terms.forEach((row) => {
624
+ // term += `${row.f_payment_term} `
625
+ // })
626
+ // return term
627
+ // },
628
+ // closeQRCode() {
629
+ // clearTimeout(this.paymentInterval)
630
+ // clearTimeout(this.orderInterval)
631
+ // this.timeLeft = 300
632
+ // this.closeOrder()
633
+ // // 清除二维码
634
+ // this.clearQrCode()
635
+ // this.showQrCode = false
636
+ // },
637
+ // clearQrCode() {
638
+ // document.getElementById('qrcode').innerHTML = ''
639
+ // },
640
+ // async closeOrder() {
641
+ // let data = {
642
+ // "flag": "JsApiWeiNan",
643
+ // "f_filiale": "weinanchengtou",
644
+ // "f_out_trade_no": this.order.f_out_trade_no,// 商户单号
645
+ // "isClose": "是",
646
+ // "f_sys_trace": this.order.f_sys_trace // 交易流水号
647
+ // }
648
+ // let http = new HttpResetClass()
649
+ // let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/pay/microPayOrderStatus`, data, {
650
+ // resolveMsg: null,
651
+ // rejectMsg: '关闭失败!!!'
652
+ // })
653
+ // },
654
+ // qrcode() {
655
+ // let qrcode = new QRCode('qrcode', {
656
+ // text: this.order.appId, // 设置二维码内容或跳转地址
657
+ // width: 200, // 设置宽度,单位像素
658
+ // height: 200, // 设置高度,单位像素
659
+ // correctLevel: QRCode.CorrectLevel.L //容错率,L/M/Hs
660
+ // })
661
+ // },
662
+ // // 获取订单信息
663
+ // async getOrderInformation() {
664
+ // // 查询订单信息
665
+ // console.log('查询订单信息!!!')
666
+ // let http = new HttpResetClass()
667
+ // let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/tel_singleTable`, {
668
+ // data: {
669
+ // tablename: "t_weixinreturnxml",
670
+ // condition: ` f_out_trade_no = '${this.order.f_out_trade_no}' and f_order_state = '已支付' `,
671
+ // }
672
+ // }, {
673
+ // resolveMsg: null,
674
+ // rejectMsg: '订单查询失败!!!'
675
+ // })
676
+ // // 支付成功
677
+ // if (res.data.length > 0) {
678
+ // clearTimeout(this.paymentInterval)
679
+ // clearTimeout(this.orderInterval)
680
+ // this.timeLeft = 300
681
+ // // 修改支付状态
682
+ // this.saveother()
683
+ // this.$showMessage('支付成功!!!')
684
+ // this.update()
685
+ // // 清除二维码
686
+ // this.clearQrCode()
687
+ // this.showQrCode = false
688
+ // }
689
+ // },
690
+ // async update() {
691
+ // let http = new HttpResetClass()
692
+ // for (let i = 0; i < this.material.length; i++) {
693
+ // if (this.material[i].f_state == '未收费') {
694
+ // this.material[i].f_state = '已收费'
695
+ // }
696
+ // }
697
+ // let data = {
698
+ // model: this.material
699
+ // }
700
+ // let res = await http.load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/logic/saveweinanmaterial', {data: data}, {
701
+ // resolveMsg: null,
702
+ // rejectMsg: '保存失败'
703
+ // })
704
+ // this.search()
705
+ // },
706
+ // async saveother() {
707
+ // let http = new HttpResetClass()
708
+ // let data1 = {
709
+ // tablename: 't_material_service',
710
+ // condition: `f_process_id = '${this.selectdata.f_process_id}' and f_state = '未收费'`
711
+ // }
712
+ // let res1 = await http.load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data: data1}, {
713
+ // resolveMsg: null,
714
+ // rejectMsg: '获取数据失败'
715
+ // })
716
+ // let data = {
717
+ // tablename: 't_userfiles',
718
+ // condition: `f_userinfo_id = '${this.selectdata.model.f_userinfo_id}'`
719
+ // }
720
+ // let res = await http.load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data: data}, {
721
+ // resolveMsg: null,
722
+ // rejectMsg: '获取数据失败'
723
+ // })
724
+ // let otherdetails = []
725
+ // for (let i = 0; i < res1.data.length; i++) {
726
+ // otherdetails.push(
727
+ // {
728
+ // "f_brand_spec": [res1.data[i].f_material_name],
729
+ // "f_unitprice": res1.data[i].f_material_price,
730
+ // "f_typename": [res1.data[i].f_typename],
731
+ // "f_typenumber": [res1.data[i].f_typenumber],
732
+ // "f_number": res1.data[i].f_material_number
733
+ // }
734
+ // )
735
+ // }
736
+ //
737
+ // console.log("查询的用户信息", otherdetails)
738
+ // let data2 = {
739
+ // "record_userinfo": this.selectdata.model.f_userinfo_id,
740
+ // "f_userfiles_id": res.data[0].f_userfiles_id,
741
+ // "f_user_id": res.data[0].f_user_id,
742
+ // "f_user_name": this.selectdata.model.f_user_name,
743
+ // "f_address": this.selectdata.model.f_address,
744
+ // "f_user_type": this.selectdata.model.f_user_type,
745
+ // "f_gasproperties": "",
746
+ // "f_collection": this.f_cost_sum,
747
+ // "f_comments": "",
748
+ // "f_payment": this.charge.f_payment_method,
749
+ // "f_voucher_number": "",
750
+ // "f_bill_style": "普通收据",
751
+ // "f_userinfo_id": this.selectdata.model.f_userinfo_id,
752
+ // "f_service_person": Vue.user.name,
753
+ // "f_operat_type": "其他收费",
754
+ // "f_describe": "",
755
+ // "f_state": "有效",
756
+ // "f_operator": Vue.user.name,
757
+ // "f_operatorid": Vue.user.id,
758
+ // "f_orgid": Vue.user.orgid,
759
+ // "f_orgname": Vue.user.orgs,
760
+ // "f_depid": Vue.user.depids,
761
+ // "f_depname": Vue.user.f_department_name,
762
+ // "t_userfees": "",
763
+ // "f_fee_type": "其他费用",
764
+ // "f_fee_time": "12",
765
+ // "otherdetail": otherdetails
766
+ // }
767
+ // let res2 = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/sale_othercharge_logic`, {data: data2}, {
768
+ // resolveMsg: null,
769
+ // rejectMsg: '保存数据失败'
770
+ // })
771
+ // },
772
+ // async shoufei() {
773
+ // let http = new HttpResetClass()
774
+ // let data = {
775
+ // tablename: 't_material_service',
776
+ // condition: `f_process_id = '${this.selectdata.f_process_id}' and f_state = '未收费'`
777
+ // }
778
+ // let res = await http.load('post', this.$androidUtil.getProxyUrl() + '/af-telephone/rs/sql/tel_singleTable', {data: data}, {
779
+ // resolveMsg: null,
780
+ // rejectMsg: '获取数据失败'
781
+ // })
782
+ // if (res.data.length <= 0) {
783
+ // this.$showMessage('请先添加未收费的材料!!!')
784
+ // return
785
+ // }
786
+ // this.f_cost_sum = 0
787
+ // for (let i = 0; i < res.data.length; i++) {
788
+ // this.f_cost_sum += Number(res.data[i].f_fee)
789
+ // }
790
+ // this.showCharge = true
791
+ // this.charge.payment_terms[0].f_charge_money = this.f_cost_sum
792
+ // },
793
+ // accMul(arg1, arg2) {
794
+ // let m = 0, s1 = arg1.toString(), s2 = arg2.toString();
795
+ // try {
796
+ // m += s1.split(".")[1].length
797
+ // } catch (e) {
798
+ // }
799
+ // try {
800
+ // m += s2.split(".")[1].length
801
+ // } catch (e) {
802
+ // }
803
+ // return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
804
+ // },
805
+ },
806
+ events: {},
807
+ computed: {
808
+ paymentMethod() {
809
+ return this.$appdata.getParam("付款方式")
810
+ },
811
+ paymentTerm() {
812
+ return this.$appdata.getParam("收费项目")
813
+ }
814
+ },
815
+ watch: {}
816
+ }
817
+ </script>
818
+ <style lang="less" scoped>
819
+ .head-but {
820
+ margin-left: 5px;
821
+ height: 34px;
822
+ /*background-color: #6aa6e2;*/
823
+ border-radius: 4px;
824
+ font-family: PingFang;
825
+ color: #ffffff;
826
+ }
827
+
828
+ /*清除model中的浮动*/
829
+ .clearfix:after, .clearfix:before {
830
+ display: table;
831
+ }
832
+
833
+ .clearfix:after {
834
+ clear: both;
835
+ }
836
+
837
+ .y-form {
838
+ display: flex;
839
+ flex-flow: column;
840
+ gap: 10px;
841
+ padding: 10px 5px;
842
+
843
+ .y-form-head {
844
+ background-color: #e8f4ff;
845
+ display: flex;
846
+ padding: 10px 20px;
847
+ align-items: center;
848
+ justify-content: space-between;
849
+ }
850
+
851
+ .y-form-item {
852
+ display: flex;
853
+ gap: 10px;
854
+
855
+ label {
856
+ width: 30%;
857
+ text-align: right;
858
+ }
859
+
860
+ .y-form-item-input {
861
+ width: 70%;
862
+ }
863
+ }
864
+ }
865
+ </style>