safecheck-client 3.0.34-42 → 3.0.34-43

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 (252) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/android.html +18 -18
  4. package/config/dev.env.js +6 -6
  5. package/config/index.js +38 -38
  6. package/config/prod.env.js +3 -3
  7. package/config/test.env.js +6 -6
  8. package/docs/AppBase.md +22 -22
  9. package/docs/Busy.md +14 -14
  10. package/docs/CriteriaPaged.md +47 -47
  11. package/docs/DataGrid.md +54 -54
  12. package/docs/DataModel.md +22 -22
  13. package/docs/Dynamic.md +42 -42
  14. package/docs/GetParams.md +11 -11
  15. package/docs/HttpBusy.md +13 -13
  16. package/docs/HttpStore.md +29 -29
  17. package/docs/MessageBox.md +28 -28
  18. package/docs/PagedList.md +29 -29
  19. package/docs/Pager.md +21 -21
  20. package/docs/Project.md +23 -23
  21. package/docs/Route.md +105 -105
  22. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  23. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  24. package/docs/Task.md +46 -46
  25. package/docs/TreeList.md +28 -28
  26. package/docs/TreeMixin.md +18 -18
  27. package/docs/all.md +10 -10
  28. package/docs/list.md +42 -42
  29. package/docs/partial.md +75 -75
  30. package/docs/selector.md +82 -82
  31. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  32. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue-strap/345/217/230/346/233/264/350/256/260/345/275/225.md +7 -7
  33. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue/345/217/230/346/233/264/350/256/260/345/275/225.md +13 -13
  34. package/docs//345/274/200/345/217/221/346/226/207/346/241/243//345/274/200/345/217/221/347/216/257/345/242/203/350/256/276/347/275/256.md +77 -77
  35. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  36. package/examples/AddressList/App.vue +13 -13
  37. package/examples/AddressList/index.html +11 -11
  38. package/examples/DispatchList/App.vue +10 -10
  39. package/examples/DispatchList/BaseTree.vue +13 -13
  40. package/examples/DispatchList/Init.vue +22 -22
  41. package/examples/DispatchList/Test.vue +20 -20
  42. package/examples/DispatchList/index.html +11 -11
  43. package/examples/DispatchList/main.js +18 -18
  44. package/home.html +16 -16
  45. package/package.json +1 -1
  46. package/publish.bat +7 -7
  47. package/release.bat +5 -5
  48. package/src/Widget.vue +13 -13
  49. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  50. package/src/android-bootstrap/less/.csscomb.json +304 -304
  51. package/src/android-bootstrap/less/.csslintrc +19 -19
  52. package/src/android-bootstrap/less/alerts.less +73 -73
  53. package/src/android-bootstrap/less/badges.less +66 -66
  54. package/src/android-bootstrap/less/bootstrap.less +56 -56
  55. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  56. package/src/android-bootstrap/less/button-groups.less +247 -247
  57. package/src/android-bootstrap/less/buttons.less +173 -173
  58. package/src/android-bootstrap/less/carousel.less +269 -269
  59. package/src/android-bootstrap/less/close.less +34 -34
  60. package/src/android-bootstrap/less/code.less +69 -69
  61. package/src/android-bootstrap/less/component-animations.less +33 -33
  62. package/src/android-bootstrap/less/grid.less +84 -84
  63. package/src/android-bootstrap/less/input-groups.less +167 -167
  64. package/src/android-bootstrap/less/jumbotron.less +52 -52
  65. package/src/android-bootstrap/less/labels.less +64 -64
  66. package/src/android-bootstrap/less/list-group.less +141 -141
  67. package/src/android-bootstrap/less/media.less +66 -66
  68. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  69. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  70. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  71. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  72. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  73. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  74. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  75. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  76. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  77. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  78. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  79. package/src/android-bootstrap/less/mixins/image.less +33 -33
  80. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  81. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  82. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  83. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  84. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  85. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  86. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  87. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  88. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  89. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  90. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  91. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  92. package/src/android-bootstrap/less/mixins/size.less +10 -10
  93. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  94. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  95. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  96. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  97. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  98. package/src/android-bootstrap/less/mixins.less +40 -40
  99. package/src/android-bootstrap/less/modals.less +151 -151
  100. package/src/android-bootstrap/less/navbar.less +660 -660
  101. package/src/android-bootstrap/less/navs.less +290 -290
  102. package/src/android-bootstrap/less/normalize.less +424 -424
  103. package/src/android-bootstrap/less/pager.less +76 -76
  104. package/src/android-bootstrap/less/pagination.less +89 -89
  105. package/src/android-bootstrap/less/panels.less +274 -274
  106. package/src/android-bootstrap/less/popovers.less +131 -131
  107. package/src/android-bootstrap/less/print.less +101 -101
  108. package/src/android-bootstrap/less/progress-bars.less +87 -87
  109. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  110. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  111. package/src/android-bootstrap/less/scaffolding.less +161 -161
  112. package/src/android-bootstrap/less/tables.less +262 -262
  113. package/src/android-bootstrap/less/theme.less +291 -291
  114. package/src/android-bootstrap/less/thumbnails.less +36 -36
  115. package/src/android-bootstrap/less/tooltip.less +102 -102
  116. package/src/android-bootstrap/less/type.less +303 -303
  117. package/src/android-bootstrap/less/utilities.less +55 -55
  118. package/src/android-bootstrap/less/variables.less +896 -896
  119. package/src/android-bootstrap/less/wells.less +29 -29
  120. package/src/androidTest.js +20 -20
  121. package/src/bootstrap/less/.csscomb.json +304 -304
  122. package/src/bootstrap/less/.csslintrc +19 -19
  123. package/src/bootstrap/less/alerts.less +73 -73
  124. package/src/bootstrap/less/badges.less +66 -66
  125. package/src/bootstrap/less/breadcrumbs.less +26 -26
  126. package/src/bootstrap/less/button-groups.less +247 -247
  127. package/src/bootstrap/less/buttons.less +172 -172
  128. package/src/bootstrap/less/carousel.less +269 -269
  129. package/src/bootstrap/less/close.less +34 -34
  130. package/src/bootstrap/less/code.less +69 -69
  131. package/src/bootstrap/less/component-animations.less +33 -33
  132. package/src/bootstrap/less/dropdowns.less +216 -216
  133. package/src/bootstrap/less/forms.less +626 -626
  134. package/src/bootstrap/less/grid.less +84 -84
  135. package/src/bootstrap/less/input-groups.less +167 -167
  136. package/src/bootstrap/less/jumbotron.less +52 -52
  137. package/src/bootstrap/less/labels.less +64 -64
  138. package/src/bootstrap/less/list-group.less +141 -141
  139. package/src/bootstrap/less/media.less +66 -66
  140. package/src/bootstrap/less/mixins/alerts.less +14 -14
  141. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  142. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  143. package/src/bootstrap/less/mixins/buttons.less +69 -69
  144. package/src/bootstrap/less/mixins/center-block.less +7 -7
  145. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  146. package/src/bootstrap/less/mixins/forms.less +90 -90
  147. package/src/bootstrap/less/mixins/gradients.less +59 -59
  148. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  149. package/src/bootstrap/less/mixins/grid.less +122 -122
  150. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  151. package/src/bootstrap/less/mixins/image.less +33 -33
  152. package/src/bootstrap/less/mixins/labels.less +12 -12
  153. package/src/bootstrap/less/mixins/list-group.less +30 -30
  154. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  155. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  156. package/src/bootstrap/less/mixins/opacity.less +8 -8
  157. package/src/bootstrap/less/mixins/pagination.less +24 -24
  158. package/src/bootstrap/less/mixins/panels.less +24 -24
  159. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  160. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  161. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  162. package/src/bootstrap/less/mixins/resize.less +6 -6
  163. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  164. package/src/bootstrap/less/mixins/size.less +10 -10
  165. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  166. package/src/bootstrap/less/mixins/table-row.less +44 -44
  167. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  168. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  169. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  170. package/src/bootstrap/less/mixins.less +40 -40
  171. package/src/bootstrap/less/modals.less +151 -151
  172. package/src/bootstrap/less/navbar.less +660 -660
  173. package/src/bootstrap/less/normalize.less +424 -424
  174. package/src/bootstrap/less/pager.less +76 -76
  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/android/AddressList.vue +61 -61
  193. package/src/components/android/AttendanceTally.vue +116 -116
  194. package/src/components/android/Blank.vue +10 -10
  195. package/src/components/android/CheckUnplanPage.vue +56 -56
  196. package/src/components/android/Checker.vue +12 -12
  197. package/src/components/android/CheckerAnnual.vue +81 -81
  198. package/src/components/android/CheckerAvarta.vue +82 -82
  199. package/src/components/android/EquipmentInspection.vue +348 -348
  200. package/src/components/android/FootprintMap.vue +120 -120
  201. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  202. package/src/components/android/MasterMain.vue +77 -77
  203. package/src/components/android/Menu.vue +132 -132
  204. package/src/components/android/NavBottom.vue +157 -157
  205. package/src/components/android/PaperAlarm.vue +85 -85
  206. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  207. package/src/components/android/PlumberAnnual.vue +83 -83
  208. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  209. package/src/components/android/PlumberMonthly.vue +84 -84
  210. package/src/components/android/PostMap.vue +83 -83
  211. package/src/components/android/QRCode/QRCodeBinding.vue +300 -300
  212. package/src/components/android/QRCode/QRCodePage.vue +212 -212
  213. package/src/components/android/QueryCheckHistory.vue +122 -122
  214. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  215. package/src/components/android/RepairMain.vue +60 -60
  216. package/src/components/android/Repairman.vue +12 -12
  217. package/src/components/android/StationMaster.vue +12 -12
  218. package/src/components/android/examples/SafeListExamples.vue +1 -1
  219. package/src/components/android/examples/UserExamples.vue +1 -1
  220. package/src/components/defects/DefectModal.vue +101 -101
  221. package/src/components/defects/DevicesAndItem.vue +39 -39
  222. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  223. package/src/components/notice/NoticeForm.vue +100 -100
  224. package/src/components/notice/NoticeIssue.vue +20 -20
  225. package/src/components/paper/PicViewer.vue +18 -18
  226. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  227. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  228. package/src/components/phonestate/PostMap.vue +82 -82
  229. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  230. package/src/components/userfile/MeterFile.vue +145 -145
  231. package/src/components/userfile/MeterModify.vue +46 -46
  232. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  233. package/src/filiale/bayan/android/SafecheckOrderV.vue +2889 -2889
  234. package/src/filiale/tongchuan/android/Select.vue +421 -421
  235. package/src/filiale/tongchuan/android.js +21 -21
  236. package/src/filiale/tongchuan/pc/PaperDefectMain.vue +1060 -1060
  237. package/src/filiale/tongchuan/utils/EventListener.js +29 -29
  238. package/src/filiale/tongchuan/utils/coerceBoolean.js +7 -7
  239. package/src/filiale/weinan/pc/CheckBookSearchUserList.vue +57 -59
  240. package/src/filiale/weinan/pc/checkUserList.vue +34 -113
  241. package/src/plugins/LoadData.js +10 -10
  242. package/src/plugins/LoadParams.js +24 -24
  243. package/src/stores/wxconfig.js +10 -10
  244. package/src/utils/getNowDate.js +33 -33
  245. package/test/e2e/custom-assertions/elementCount.js +26 -26
  246. package/test/e2e/nightwatch.conf.js +40 -40
  247. package/test/e2e/runner.js +30 -30
  248. package/test/e2e/specs/test.js +13 -13
  249. package/test/unit/.eslintrc +5 -5
  250. package/test/unit/TestUtil.js +62 -62
  251. package/test/unit/context.html +20 -20
  252. package/test/unit/index.js +13 -13
@@ -1,300 +1,300 @@
1
- <template>
2
- <div style="height: 100%">
3
- <div class="panel auto">
4
- <div class="panel-body ">
5
- <div class="row auto" style="margin: 5px 0">
6
- <label class="righttxt" style="width: 30%;">负责人姓名:</label>
7
- <input v-model="bindingData.f_head_name" class="form-control rightipt" type="text"/>
8
- </div>
9
- </div>
10
- </div>
11
- <div class="panel auto">
12
- <div class="panel-body ">
13
- <div class="row auto" style="margin: 5px 0">
14
- <label class="righttxt" style="width: 30%;">负责人职务:</label>
15
- <v-select v-model="bindingData.f_head_post" :options='headPostTypes' :value.sync="bindingData.f_head_post" :width="'60%'"
16
- class="input-font" clear-button close-on-select placeholder='类型' style="margin-left: 5%;"
17
- value-single></v-select>
18
- </div>
19
- </div>
20
- </div>
21
- <div class="panel auto">
22
- <div class="panel-body ">
23
- <div class="row auto" style="margin: 5px 0">
24
- <label class="righttxt" style="width: 30%;">负责人电话:</label>
25
- <input v-model="bindingData.f_head_phone" class="form-control rightipt" type="text"/>
26
- </div>
27
- </div>
28
- </div>
29
- <div class="panel auto">
30
- <div class="panel-body ">
31
- <div class="row auto" style="margin: 5px 0">
32
- <label class="righttxt" style="width: 30%;">绑定类型:</label>
33
- <v-select v-model="bindingData.f_type" :options='types' :value.sync="bindingData.f_type" :width="'60%'"
34
- class="input-font" clear-button close-on-select placeholder='类型' style="margin-left: 5%;"
35
- value-single></v-select>
36
- </div>
37
- </div>
38
- </div>
39
- <div v-if="bindingData.f_type == '小区'" class="panel auto">
40
- <div class="panel-body ">
41
- <div class="row auto" style="margin: 5px 0">
42
- <label class="righttxt" style="width: 30%;">小区名称:</label>
43
- <v-select v-model="bindingData.f_user_name" :options='residentialAreas' :value.sync="bindingData.f_user_name" :width="'60%'"
44
- class="input-font" clear-button close-on-select placeholder='小区名称'
45
- style="margin-left: 5%;" value-single></v-select>
46
- </div>
47
- </div>
48
- </div>
49
- <div v-if="bindingData.f_type === '用户'" class="panel auto">
50
- <div class="panel-body ">
51
- <div class="row auto" style="margin: 5px 0">
52
- <label class="righttxt" style="width: 30%;">用户编号:</label>
53
- <input v-model="bindingData.f_userinfo_code" class="form-control rightipt" type="text"/>
54
- </div>
55
- </div>
56
- </div>
57
- <div v-if="bindingData.f_type == '用户'" class="panel auto">
58
- <div class="panel-body ">
59
- <div class="row auto" style="margin: 5px 0">
60
- <label class="righttxt" style="width: 30%;">用户名称:</label>
61
- <v-select v-model="bindingData.f_userinfo" :options='userNames' :value.sync="bindingData.f_userinfo" :width="'60%'"
62
- class="input-font" clear-button close-on-select placeholder='用户名称' @select-search="refreshUser"
63
- style="margin-left: 5%;" menu-mode="align-button" @click="initUser"
64
- value-single></v-select>
65
- </div>
66
- </div>
67
- </div>
68
- <div class="panel auto">
69
- <div class="panel-body">
70
- <label class="row auto text-left col-md-4 col-xs-4">备注</label>
71
- <div class="col-md-12 col-sm-12 col-xs-12">
72
- <textarea v-model="bindingData.f_comments" class="form-control"></textarea>
73
- </div>
74
- </div>
75
- </div>
76
- <div class="panel auto">
77
- <div class="panel-body ">
78
- <div class="row auto" style="margin: 5px 0">
79
- <label class="righttxt">图片:</label>
80
- <div class="col-xs-6" style="height: 160px;width:160px;overflow: scroll;top: 1px">
81
- <img-self v-if="bindingData.f_head_pic" :src="bindingData.f_head_pic" width="140" height="140"></img-self>
82
- <button v-if="!bindingData.f_head_pic" type="button" name="button" class="btn btn-primary" @click="takePictures('com.aofeng.hybrid.android.peripheral.CameraActivity')">拍照</button>
83
- <button v-if="!bindingData.f_head_pic" type="button" name="button" class="btn btn-primary" @click="takePictures('com.aofeng.hybrid.android.peripheral.ActionMultiplePickActivity')">相册</button>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <div class="panel auto">
89
- <div class="panel-body">
90
- <div style="display: flex;justify-content: center;">
91
- <button class="col-sm-3 btn btn-primary" @click="binding()">绑定</button>
92
- </div>
93
- </div>
94
- </div>
95
- </div>
96
- </template>
97
-
98
- <script>
99
- import {HttpResetClass} from 'vue-client'
100
- import * as Util from '../../Util'
101
-
102
-
103
- export default {
104
- title: '二维码绑定',
105
- data() {
106
- return {
107
- bindingData: {},
108
- residentialAreas: [{label: '请选择', value: ''}],
109
- userNames: [{label: '请选择', value: ''}],
110
- headPostTypes:[{label: '请选择', value: ''} ,...this.$appdata.getParam('负责人职务')],
111
- types: [{label: '请选择', value: ''}, {label: '小区', value: '小区'}, {label: '用户', value: '用户'}]
112
- }
113
- },
114
- props: {
115
- row: {
116
- type: Object
117
- }
118
- },
119
- methods: {
120
- async fetchUsers(condition) {
121
- try {
122
- const response = await new HttpResetClass().load('post', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
123
- data: {
124
- items: 'ui.f_user_name,ui.f_userinfo_id,ui.f_userinfo_code',
125
- tablename: 't_userinfo ui LEFT JOIN t_userfiles uf on ui.f_userinfo_id = uf.f_userinfo_id',
126
- condition: condition,
127
- orderitem: '1'
128
- }
129
- });
130
- return response.data;
131
- } catch (error) {
132
- return [];
133
- }
134
- },
135
- async initUser() {
136
- if (!this.bindingData.f_userinfo_code) return;
137
- const baseCondition = `1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用')`;
138
- const condition = `${baseCondition} and ui.f_userinfo_code like '${this.bindingData.f_userinfo_code}%'`;
139
- const users = await this.fetchUsers(condition);
140
- users.forEach(item => {
141
- if (!this.userNames.some(user => user.value.f_userinfo_id === item.f_userinfo_id)) {
142
- this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
143
- }
144
- })
145
- },
146
- async refreshUser(val) {
147
- let condition = `1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用') and ui.f_user_name like '${val}%'`;
148
- if (this.bindingData.f_userinfo_code) {
149
- condition += ` and ui.f_userinfo_code like '${this.bindingData.f_userinfo_code}%'`;
150
- }
151
- const users = await this.fetchUsers(condition);
152
- users.forEach(item => {
153
- if (!this.userNames.some(user => user.value.f_userinfo_id === item.f_userinfo_id)) {
154
- this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
155
- }
156
- })
157
- },
158
-
159
- cameraCallBack(prop,fileName) {
160
- this.$set('bindingData.f_head_pic',fileName)
161
- },
162
- takePictures(page){
163
- HostApp.__callback__ = this.cameraCallBack
164
- HostApp.__this__ = this
165
- let prop = 'QRCode'
166
- this.fileName = Util.guid() +'.jpg'
167
- HostApp._open_a_page({
168
- type: 'boomerang',
169
- page: page,
170
- param: {
171
- file: this.fileName,
172
- requestCode: 111,
173
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
174
- watermark: ''
175
- }
176
- })
177
- },
178
- async binding() {
179
- let tableImages = []
180
- if (!this.row.f_head_pic){
181
- tableImages.push({
182
- path:this.bindingData.f_head_pic
183
- })
184
- }
185
- let data = {
186
- tableImages: tableImages
187
- }
188
- HostApp.__this__ = this
189
- HostApp.logicWithHint({
190
- 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
191
- 'data': data, 'backresult': 1
192
- })
193
- },
194
- async commitCallBack(jo) {
195
- if (jo.state == 'ok') {
196
- const res = JSON.parse(jo.result)
197
- let sql = ''
198
- if (res.images && res.images.length > 0){
199
- sql = `update t_qr_code set f_head_name = '${this.bindingData.f_head_name}',f_head_post = '${this.bindingData.f_head_post}',f_head_phone = '${this.bindingData.f_head_phone}',f_type = '${this.bindingData.f_type}',f_user_name = '${this.bindingData.f_user_name}',f_userinfo_id = '${this.bindingData.f_userinfo_id}',f_comments = '${this.bindingData.f_comments}',f_head_pic='${res.images[0].imgfileName}' where id = '${this.bindingData.id}'`
200
- }else {
201
- sql = `update t_qr_code set f_head_name = '${this.bindingData.f_head_name}',f_head_post = '${this.bindingData.f_head_post}',f_head_phone = '${this.bindingData.f_head_phone}',f_type = '${this.bindingData.f_type}',f_user_name = '${this.bindingData.f_user_name}',f_userinfo_id = '${this.bindingData.f_userinfo_id}',f_comments = '${this.bindingData.f_comments}' where id = '${this.bindingData.id}'`
202
- }
203
- new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/runSQL`, {data: {sql: sql}}).then(res=>{
204
- this.$showMessage('绑定成功')
205
- this.$dispatch('confirm')
206
- }).catch(e=>{
207
- this.$showMessage('绑定失败')
208
- })
209
- }else {
210
- this.$showMessage('图片上传失败')
211
- }
212
- },
213
- },
214
- async ready() {
215
- this.bindingData = JSON.parse(JSON.stringify(this.row))
216
- if(this.bindingData.f_head_pic){
217
- this.bindingData.f_head_pic = `${this.$androidUtil.getProxyUrl()}/rs/image/file/${this.bindingData.f_head_pic}`
218
- }
219
- let residentialArea = await new HttpResetClass().load('post', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
220
- data: {
221
- items: 'f_residential_area,id',
222
- tablename: 't_area',
223
- condition: `1=1 and f_residential_area is not null`,
224
- orderitem: '1'
225
- }
226
- })
227
- residentialArea.data.forEach(item => {
228
- this.residentialAreas.push({label: item.f_residential_area, value: `${item.f_residential_area}:${item.id}`});
229
- })
230
- const users = await this.fetchUsers(`1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用')`)
231
- users.forEach(item => {
232
- this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
233
- })
234
- }
235
- }
236
- </script>
237
- <style lang="less" scoped>
238
- .butt3 {
239
- float: right;
240
- width: 12px;
241
- margin: 1% 2% 0 0;
242
- }
243
-
244
- .rightipt {
245
- width: 60%;
246
- float: left;
247
- margin-left: 5%;
248
- }
249
-
250
- .righttxt {
251
- border: none;
252
- margin-left: 5px;
253
- /*border-left: 5px solid #A2C2EB;*/
254
- float: left;
255
- width: 25%;
256
- margin-bottom: 3px;
257
- text-align: left;
258
- word-wrap: break-word;
259
- white-space: normal;
260
- }
261
-
262
- .spanboder {
263
- border-bottom: 2px solid #499edf;
264
- padding-bottom: 8px
265
- }
266
-
267
- #upuserinfo_sel /deep/ ul {
268
- width: 100% !important;
269
- left: 0 !important;
270
- }
271
-
272
- .btn-photo {
273
- border: 0;
274
- border-radius: 7px;
275
- background-color: #7dc1f4;
276
- font: 15px PingFang-SC-Bold;
277
- height: 20%;
278
- }
279
-
280
- .panel-self {
281
- border-radius: 10px;
282
- border: 1px solid #499EDF;
283
- background-color: #F8F8F8;
284
- }
285
-
286
- .div-photo {
287
- width: auto;
288
- height: auto;
289
- /* margin-top: 10px; */
290
- position: absolute;
291
- bottom: 10px;
292
- right: 10px;
293
- }
294
- </style>
295
- <style lang="less">
296
- #upuserinfo_sel ul {
297
- width: 100% !important;
298
- left: 0 !important;
299
- }
300
- </style>
1
+ <template>
2
+ <div style="height: 100%">
3
+ <div class="panel auto">
4
+ <div class="panel-body ">
5
+ <div class="row auto" style="margin: 5px 0">
6
+ <label class="righttxt" style="width: 30%;">负责人姓名:</label>
7
+ <input v-model="bindingData.f_head_name" class="form-control rightipt" type="text"/>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ <div class="panel auto">
12
+ <div class="panel-body ">
13
+ <div class="row auto" style="margin: 5px 0">
14
+ <label class="righttxt" style="width: 30%;">负责人职务:</label>
15
+ <v-select v-model="bindingData.f_head_post" :options='headPostTypes' :value.sync="bindingData.f_head_post" :width="'60%'"
16
+ class="input-font" clear-button close-on-select placeholder='类型' style="margin-left: 5%;"
17
+ value-single></v-select>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <div class="panel auto">
22
+ <div class="panel-body ">
23
+ <div class="row auto" style="margin: 5px 0">
24
+ <label class="righttxt" style="width: 30%;">负责人电话:</label>
25
+ <input v-model="bindingData.f_head_phone" class="form-control rightipt" type="text"/>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ <div class="panel auto">
30
+ <div class="panel-body ">
31
+ <div class="row auto" style="margin: 5px 0">
32
+ <label class="righttxt" style="width: 30%;">绑定类型:</label>
33
+ <v-select v-model="bindingData.f_type" :options='types' :value.sync="bindingData.f_type" :width="'60%'"
34
+ class="input-font" clear-button close-on-select placeholder='类型' style="margin-left: 5%;"
35
+ value-single></v-select>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div v-if="bindingData.f_type == '小区'" class="panel auto">
40
+ <div class="panel-body ">
41
+ <div class="row auto" style="margin: 5px 0">
42
+ <label class="righttxt" style="width: 30%;">小区名称:</label>
43
+ <v-select v-model="bindingData.f_user_name" :options='residentialAreas' :value.sync="bindingData.f_user_name" :width="'60%'"
44
+ class="input-font" clear-button close-on-select placeholder='小区名称'
45
+ style="margin-left: 5%;" value-single></v-select>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ <div v-if="bindingData.f_type === '用户'" class="panel auto">
50
+ <div class="panel-body ">
51
+ <div class="row auto" style="margin: 5px 0">
52
+ <label class="righttxt" style="width: 30%;">用户编号:</label>
53
+ <input v-model="bindingData.f_userinfo_code" class="form-control rightipt" type="text"/>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ <div v-if="bindingData.f_type == '用户'" class="panel auto">
58
+ <div class="panel-body ">
59
+ <div class="row auto" style="margin: 5px 0">
60
+ <label class="righttxt" style="width: 30%;">用户名称:</label>
61
+ <v-select v-model="bindingData.f_userinfo" :options='userNames' :value.sync="bindingData.f_userinfo" :width="'60%'"
62
+ class="input-font" clear-button close-on-select placeholder='用户名称' @select-search="refreshUser"
63
+ style="margin-left: 5%;" menu-mode="align-button" @click="initUser"
64
+ value-single></v-select>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <div class="panel auto">
69
+ <div class="panel-body">
70
+ <label class="row auto text-left col-md-4 col-xs-4">备注</label>
71
+ <div class="col-md-12 col-sm-12 col-xs-12">
72
+ <textarea v-model="bindingData.f_comments" class="form-control"></textarea>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div class="panel auto">
77
+ <div class="panel-body ">
78
+ <div class="row auto" style="margin: 5px 0">
79
+ <label class="righttxt">图片:</label>
80
+ <div class="col-xs-6" style="height: 160px;width:160px;overflow: scroll;top: 1px">
81
+ <img-self v-if="bindingData.f_head_pic" :src="bindingData.f_head_pic" width="140" height="140"></img-self>
82
+ <button v-if="!bindingData.f_head_pic" type="button" name="button" class="btn btn-primary" @click="takePictures('com.aofeng.hybrid.android.peripheral.CameraActivity')">拍照</button>
83
+ <button v-if="!bindingData.f_head_pic" type="button" name="button" class="btn btn-primary" @click="takePictures('com.aofeng.hybrid.android.peripheral.ActionMultiplePickActivity')">相册</button>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ <div class="panel auto">
89
+ <div class="panel-body">
90
+ <div style="display: flex;justify-content: center;">
91
+ <button class="col-sm-3 btn btn-primary" @click="binding()">绑定</button>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </template>
97
+
98
+ <script>
99
+ import {HttpResetClass} from 'vue-client'
100
+ import * as Util from '../../Util'
101
+
102
+
103
+ export default {
104
+ title: '二维码绑定',
105
+ data() {
106
+ return {
107
+ bindingData: {},
108
+ residentialAreas: [{label: '请选择', value: ''}],
109
+ userNames: [{label: '请选择', value: ''}],
110
+ headPostTypes:[{label: '请选择', value: ''} ,...this.$appdata.getParam('负责人职务')],
111
+ types: [{label: '请选择', value: ''}, {label: '小区', value: '小区'}, {label: '用户', value: '用户'}]
112
+ }
113
+ },
114
+ props: {
115
+ row: {
116
+ type: Object
117
+ }
118
+ },
119
+ methods: {
120
+ async fetchUsers(condition) {
121
+ try {
122
+ const response = await new HttpResetClass().load('post', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
123
+ data: {
124
+ items: 'ui.f_user_name,ui.f_userinfo_id,ui.f_userinfo_code',
125
+ tablename: 't_userinfo ui LEFT JOIN t_userfiles uf on ui.f_userinfo_id = uf.f_userinfo_id',
126
+ condition: condition,
127
+ orderitem: '1'
128
+ }
129
+ });
130
+ return response.data;
131
+ } catch (error) {
132
+ return [];
133
+ }
134
+ },
135
+ async initUser() {
136
+ if (!this.bindingData.f_userinfo_code) return;
137
+ const baseCondition = `1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用')`;
138
+ const condition = `${baseCondition} and ui.f_userinfo_code like '${this.bindingData.f_userinfo_code}%'`;
139
+ const users = await this.fetchUsers(condition);
140
+ users.forEach(item => {
141
+ if (!this.userNames.some(user => user.value.f_userinfo_id === item.f_userinfo_id)) {
142
+ this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
143
+ }
144
+ })
145
+ },
146
+ async refreshUser(val) {
147
+ let condition = `1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用') and ui.f_user_name like '${val}%'`;
148
+ if (this.bindingData.f_userinfo_code) {
149
+ condition += ` and ui.f_userinfo_code like '${this.bindingData.f_userinfo_code}%'`;
150
+ }
151
+ const users = await this.fetchUsers(condition);
152
+ users.forEach(item => {
153
+ if (!this.userNames.some(user => user.value.f_userinfo_id === item.f_userinfo_id)) {
154
+ this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
155
+ }
156
+ })
157
+ },
158
+
159
+ cameraCallBack(prop,fileName) {
160
+ this.$set('bindingData.f_head_pic',fileName)
161
+ },
162
+ takePictures(page){
163
+ HostApp.__callback__ = this.cameraCallBack
164
+ HostApp.__this__ = this
165
+ let prop = 'QRCode'
166
+ this.fileName = Util.guid() +'.jpg'
167
+ HostApp._open_a_page({
168
+ type: 'boomerang',
169
+ page: page,
170
+ param: {
171
+ file: this.fileName,
172
+ requestCode: 111,
173
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
174
+ watermark: ''
175
+ }
176
+ })
177
+ },
178
+ async binding() {
179
+ let tableImages = []
180
+ if (!this.row.f_head_pic){
181
+ tableImages.push({
182
+ path:this.bindingData.f_head_pic
183
+ })
184
+ }
185
+ let data = {
186
+ tableImages: tableImages
187
+ }
188
+ HostApp.__this__ = this
189
+ HostApp.logicWithHint({
190
+ 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
191
+ 'data': data, 'backresult': 1
192
+ })
193
+ },
194
+ async commitCallBack(jo) {
195
+ if (jo.state == 'ok') {
196
+ const res = JSON.parse(jo.result)
197
+ let sql = ''
198
+ if (res.images && res.images.length > 0){
199
+ sql = `update t_qr_code set f_head_name = '${this.bindingData.f_head_name}',f_head_post = '${this.bindingData.f_head_post}',f_head_phone = '${this.bindingData.f_head_phone}',f_type = '${this.bindingData.f_type}',f_user_name = '${this.bindingData.f_user_name}',f_userinfo_id = '${this.bindingData.f_userinfo_id}',f_comments = '${this.bindingData.f_comments}',f_head_pic='${res.images[0].imgfileName}' where id = '${this.bindingData.id}'`
200
+ }else {
201
+ sql = `update t_qr_code set f_head_name = '${this.bindingData.f_head_name}',f_head_post = '${this.bindingData.f_head_post}',f_head_phone = '${this.bindingData.f_head_phone}',f_type = '${this.bindingData.f_type}',f_user_name = '${this.bindingData.f_user_name}',f_userinfo_id = '${this.bindingData.f_userinfo_id}',f_comments = '${this.bindingData.f_comments}' where id = '${this.bindingData.id}'`
202
+ }
203
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/runSQL`, {data: {sql: sql}}).then(res=>{
204
+ this.$showMessage('绑定成功')
205
+ this.$dispatch('confirm')
206
+ }).catch(e=>{
207
+ this.$showMessage('绑定失败')
208
+ })
209
+ }else {
210
+ this.$showMessage('图片上传失败')
211
+ }
212
+ },
213
+ },
214
+ async ready() {
215
+ this.bindingData = JSON.parse(JSON.stringify(this.row))
216
+ if(this.bindingData.f_head_pic){
217
+ this.bindingData.f_head_pic = `${this.$androidUtil.getProxyUrl()}/rs/image/file/${this.bindingData.f_head_pic}`
218
+ }
219
+ let residentialArea = await new HttpResetClass().load('post', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {
220
+ data: {
221
+ items: 'f_residential_area,id',
222
+ tablename: 't_area',
223
+ condition: `1=1 and f_residential_area is not null`,
224
+ orderitem: '1'
225
+ }
226
+ })
227
+ residentialArea.data.forEach(item => {
228
+ this.residentialAreas.push({label: item.f_residential_area, value: `${item.f_residential_area}:${item.id}`});
229
+ })
230
+ const users = await this.fetchUsers(`1=1 and f_user_name is not null and uf.f_user_type = '非民用' and uf.f_table_state in ('正常','停用')`)
231
+ users.forEach(item => {
232
+ this.userNames.push({ label: `${item.f_user_name}:${item.f_userinfo_code}`, value: item })
233
+ })
234
+ }
235
+ }
236
+ </script>
237
+ <style lang="less" scoped>
238
+ .butt3 {
239
+ float: right;
240
+ width: 12px;
241
+ margin: 1% 2% 0 0;
242
+ }
243
+
244
+ .rightipt {
245
+ width: 60%;
246
+ float: left;
247
+ margin-left: 5%;
248
+ }
249
+
250
+ .righttxt {
251
+ border: none;
252
+ margin-left: 5px;
253
+ /*border-left: 5px solid #A2C2EB;*/
254
+ float: left;
255
+ width: 25%;
256
+ margin-bottom: 3px;
257
+ text-align: left;
258
+ word-wrap: break-word;
259
+ white-space: normal;
260
+ }
261
+
262
+ .spanboder {
263
+ border-bottom: 2px solid #499edf;
264
+ padding-bottom: 8px
265
+ }
266
+
267
+ #upuserinfo_sel /deep/ ul {
268
+ width: 100% !important;
269
+ left: 0 !important;
270
+ }
271
+
272
+ .btn-photo {
273
+ border: 0;
274
+ border-radius: 7px;
275
+ background-color: #7dc1f4;
276
+ font: 15px PingFang-SC-Bold;
277
+ height: 20%;
278
+ }
279
+
280
+ .panel-self {
281
+ border-radius: 10px;
282
+ border: 1px solid #499EDF;
283
+ background-color: #F8F8F8;
284
+ }
285
+
286
+ .div-photo {
287
+ width: auto;
288
+ height: auto;
289
+ /* margin-top: 10px; */
290
+ position: absolute;
291
+ bottom: 10px;
292
+ right: 10px;
293
+ }
294
+ </style>
295
+ <style lang="less">
296
+ #upuserinfo_sel ul {
297
+ width: 100% !important;
298
+ left: 0 !important;
299
+ }
300
+ </style>