safecheck-client 4.0.2-50 → 4.0.2-52

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 (279) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/android.html +18 -18
  4. package/build/libs/SafecheckClient-1.15.6-9.jar +0 -0
  5. package/build/tmp/jar/MANIFEST.MF +2 -0
  6. package/config/dev.env.js +6 -6
  7. package/config/index.js +38 -38
  8. package/config/prod.env.js +3 -3
  9. package/config/test.env.js +6 -6
  10. package/docs/AppBase.md +22 -22
  11. package/docs/Busy.md +14 -14
  12. package/docs/CriteriaPaged.md +47 -47
  13. package/docs/DataGrid.md +54 -54
  14. package/docs/DataModel.md +22 -22
  15. package/docs/Dynamic.md +42 -42
  16. package/docs/GetParams.md +11 -11
  17. package/docs/HttpBusy.md +13 -13
  18. package/docs/HttpStore.md +29 -29
  19. package/docs/MessageBox.md +28 -28
  20. package/docs/PagedList.md +29 -29
  21. package/docs/Pager.md +21 -21
  22. package/docs/Project.md +23 -23
  23. package/docs/Route.md +105 -105
  24. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  25. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  26. package/docs/Task.md +46 -46
  27. package/docs/TreeList.md +28 -28
  28. package/docs/TreeMixin.md +18 -18
  29. package/docs/all.md +10 -10
  30. package/docs/list.md +42 -42
  31. package/docs/partial.md +75 -75
  32. package/docs/selector.md +82 -82
  33. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  34. 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
  35. 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
  36. 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
  37. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  38. package/examples/AddressList/App.vue +13 -13
  39. package/examples/AddressList/index.html +11 -11
  40. package/examples/DispatchList/App.vue +10 -10
  41. package/examples/DispatchList/BaseTree.vue +13 -13
  42. package/examples/DispatchList/Init.vue +22 -22
  43. package/examples/DispatchList/Test.vue +20 -20
  44. package/examples/DispatchList/index.html +11 -11
  45. package/examples/DispatchList/main.js +18 -18
  46. package/home.html +16 -16
  47. package/package.json +1 -1
  48. package/publish.bat +7 -7
  49. package/release.bat +5 -5
  50. package/src/Widget.vue +13 -13
  51. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  52. package/src/android-bootstrap/less/.csscomb.json +304 -304
  53. package/src/android-bootstrap/less/.csslintrc +19 -19
  54. package/src/android-bootstrap/less/alerts.less +73 -73
  55. package/src/android-bootstrap/less/badges.less +66 -66
  56. package/src/android-bootstrap/less/bootstrap.less +56 -56
  57. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  58. package/src/android-bootstrap/less/button-groups.less +247 -247
  59. package/src/android-bootstrap/less/buttons.less +173 -173
  60. package/src/android-bootstrap/less/carousel.less +269 -269
  61. package/src/android-bootstrap/less/close.less +34 -34
  62. package/src/android-bootstrap/less/code.less +69 -69
  63. package/src/android-bootstrap/less/component-animations.less +33 -33
  64. package/src/android-bootstrap/less/grid.less +84 -84
  65. package/src/android-bootstrap/less/input-groups.less +167 -167
  66. package/src/android-bootstrap/less/jumbotron.less +52 -52
  67. package/src/android-bootstrap/less/labels.less +64 -64
  68. package/src/android-bootstrap/less/list-group.less +141 -141
  69. package/src/android-bootstrap/less/media.less +66 -66
  70. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  71. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  72. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  73. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  74. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  75. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  76. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  77. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  78. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  79. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  80. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  81. package/src/android-bootstrap/less/mixins/image.less +33 -33
  82. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  83. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  84. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  85. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  86. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  87. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  88. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  89. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  90. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  91. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  92. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  93. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  94. package/src/android-bootstrap/less/mixins/size.less +10 -10
  95. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  96. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  97. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  98. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  99. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  100. package/src/android-bootstrap/less/mixins.less +40 -40
  101. package/src/android-bootstrap/less/modals.less +151 -151
  102. package/src/android-bootstrap/less/navbar.less +660 -660
  103. package/src/android-bootstrap/less/navs.less +290 -290
  104. package/src/android-bootstrap/less/normalize.less +424 -424
  105. package/src/android-bootstrap/less/pager.less +76 -76
  106. package/src/android-bootstrap/less/pagination.less +89 -89
  107. package/src/android-bootstrap/less/panels.less +274 -274
  108. package/src/android-bootstrap/less/popovers.less +131 -131
  109. package/src/android-bootstrap/less/print.less +101 -101
  110. package/src/android-bootstrap/less/progress-bars.less +87 -87
  111. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  112. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  113. package/src/android-bootstrap/less/scaffolding.less +161 -161
  114. package/src/android-bootstrap/less/tables.less +262 -262
  115. package/src/android-bootstrap/less/theme.less +291 -291
  116. package/src/android-bootstrap/less/thumbnails.less +36 -36
  117. package/src/android-bootstrap/less/tooltip.less +102 -102
  118. package/src/android-bootstrap/less/type.less +303 -303
  119. package/src/android-bootstrap/less/utilities.less +55 -55
  120. package/src/android-bootstrap/less/variables.less +896 -896
  121. package/src/android-bootstrap/less/wells.less +29 -29
  122. package/src/bootstrap/less/.csscomb.json +304 -304
  123. package/src/bootstrap/less/.csslintrc +19 -19
  124. package/src/bootstrap/less/alerts.less +73 -73
  125. package/src/bootstrap/less/badges.less +66 -66
  126. package/src/bootstrap/less/breadcrumbs.less +26 -26
  127. package/src/bootstrap/less/button-groups.less +247 -247
  128. package/src/bootstrap/less/buttons.less +172 -172
  129. package/src/bootstrap/less/carousel.less +269 -269
  130. package/src/bootstrap/less/close.less +34 -34
  131. package/src/bootstrap/less/code.less +69 -69
  132. package/src/bootstrap/less/component-animations.less +33 -33
  133. package/src/bootstrap/less/dropdowns.less +216 -216
  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/pagination.less +89 -89
  175. package/src/bootstrap/less/panels.less +275 -275
  176. package/src/bootstrap/less/popovers.less +131 -131
  177. package/src/bootstrap/less/print.less +101 -101
  178. package/src/bootstrap/less/progress-bars.less +87 -87
  179. package/src/bootstrap/less/responsive-embed.less +35 -35
  180. package/src/bootstrap/less/responsive-utilities.less +194 -194
  181. package/src/bootstrap/less/scaffolding.less +161 -161
  182. package/src/bootstrap/less/theme.less +291 -291
  183. package/src/bootstrap/less/thumbnails.less +36 -36
  184. package/src/bootstrap/less/tooltip.less +102 -102
  185. package/src/bootstrap/less/type.less +303 -303
  186. package/src/bootstrap/less/utilities.less +55 -55
  187. package/src/bootstrap/less/wells.less +29 -29
  188. package/src/components/FileUpload.vue +696 -696
  189. package/src/components/Hello.vue +39 -39
  190. package/src/components/LeftTree.vue +27 -27
  191. package/src/components/android/AndroidNotifiedDeal.vue +417 -0
  192. package/src/components/android/AttendanceTally.vue +116 -116
  193. package/src/components/android/Blank.vue +10 -10
  194. package/src/components/android/CheckUnplanPage.vue +56 -56
  195. package/src/components/android/Checker.vue +12 -12
  196. package/src/components/android/CheckerAnnual.vue +81 -81
  197. package/src/components/android/CheckerAvarta.vue +82 -82
  198. package/src/components/android/EquipmentInspection.vue +348 -348
  199. package/src/components/android/FootprintMap.vue +120 -120
  200. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  201. package/src/components/android/MasterMain.vue +77 -77
  202. package/src/components/android/Menu.vue +132 -132
  203. package/src/components/android/PaperAlarm.vue +85 -85
  204. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  205. package/src/components/android/PhoneUpUserinfo.vue +1249 -1249
  206. package/src/components/android/PlumberAnnual.vue +83 -83
  207. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  208. package/src/components/android/PlumberMonthly.vue +84 -84
  209. package/src/components/android/PostMap.vue +83 -83
  210. package/src/components/android/QueryCheckHistory.vue +122 -122
  211. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  212. package/src/components/android/RepairMain.vue +60 -60
  213. package/src/components/android/Repairman.vue +12 -12
  214. package/src/components/android/SafeRightTree.vue +218 -218
  215. package/src/components/android/SafecheckDevices.vue +1340 -1340
  216. package/src/components/android/StationMaster.vue +12 -12
  217. package/src/components/android/week/CheckResultSimple.vue +251 -251
  218. package/src/components/android/week/FirstWeekCheck.vue +275 -275
  219. package/src/components/android/week/StepHeaderBar.vue +457 -457
  220. package/src/components/android/week/WeekCheck.vue +209 -209
  221. package/src/components/android/week/WeekCheckPaper.vue +219 -219
  222. package/src/components/android/week/WeekCheckPlan.vue +145 -145
  223. package/src/components/defects/DefectModal.vue +101 -101
  224. package/src/components/defects/DevicesAndItem.vue +39 -39
  225. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  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/CheckBookArea.vue +146 -146
  230. package/src/components/pc/CheckBookCompany.vue +144 -144
  231. package/src/components/pc/CheckBookDetails.vue +161 -161
  232. package/src/components/pc/CheckBookEntry.vue +60 -60
  233. package/src/components/pc/CheckBookSearchArea.vue +560 -560
  234. package/src/components/pc/CheckBookSearchUnit.vue +229 -229
  235. package/src/components/pc/CheckBookSearchUser.vue +659 -659
  236. package/src/components/pc/CheckBookSearchUserList.vue +674 -674
  237. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  238. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  239. package/src/components/phonestate/PostMap.vue +82 -82
  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/AndroidDefectDeal.vue +722 -0
  245. package/src/filiale/jinhong/android.js +2 -1
  246. package/src/filiale/meihekou/android/CheckPlanList.vue +198 -198
  247. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -190
  248. package/src/filiale/meihekou/android/SafecheckDevices.vue +1343 -1343
  249. package/src/filiale/meihekou/android.js +22 -22
  250. package/src/filiale/meihekou/pc/CheckDetail.vue +217 -217
  251. package/src/plugins/LoadData.js +10 -10
  252. package/src/plugins/LoadParams.js +24 -24
  253. package/src/safecheck-android.js +328 -327
  254. package/src/stores/wxconfig.js +10 -10
  255. package/src/utils/getNowDate.js +33 -33
  256. package/test/e2e/custom-assertions/elementCount.js +26 -26
  257. package/test/e2e/nightwatch.conf.js +40 -40
  258. package/test/e2e/runner.js +30 -30
  259. package/test/e2e/specs/test.js +13 -13
  260. package/test/unit/.eslintrc +5 -5
  261. package/test/unit/TestUtil.js +62 -62
  262. package/test/unit/context.html +20 -20
  263. package/test/unit/index.js +13 -13
  264. package/build/css-loaders.js +0 -34
  265. package/build/dev-android.js +0 -151
  266. package/build/dev-client.js +0 -8
  267. package/build/example-server.js +0 -157
  268. package/build/release.sh +0 -28
  269. package/build/utils.js +0 -71
  270. package/build/webpack.base.conf.js +0 -129
  271. package/build/webpack.baseandroid.conf.js +0 -83
  272. package/build/webpack.dev.conf.js +0 -44
  273. package/build/webpack.devandroid.conf.js +0 -33
  274. package/build/webpack.example.conf.js +0 -49
  275. package/build/webpack.hanwei.conf.js +0 -57
  276. package/build/webpack.hwbase.conf.js +0 -78
  277. package/build/webpack.prod.conf.js +0 -78
  278. package/build/webpack.prodandroid.conf.js +0 -60
  279. package/build/webpack.test.conf.js +0 -31
@@ -1,457 +1,457 @@
1
- <template>
2
- <div class="auto">
3
- <div class="step-header">
4
- <div class="step-track">
5
- <div v-for="(idx, s) in steps" :key="idx" class="step-item">
6
- <div style="display: flex;align-items: center;">
7
- <!-- 分隔线(仅在非第一个步骤时显示) -->
8
- <div v-if="idx !== 0" class="step-divider" :class="{ active: idx <= current }"></div>
9
- <!-- 圆形数字 -->
10
- <div class="step-number" :class="{ active: idx <= current }" @click="weekCheckChange(s,idx)">
11
- {{ idx + 1 }}
12
- </div>
13
- </div>
14
- <!-- 步骤标题 -->
15
- <div class="step-title">{{ s }}</div>
16
- </div>
17
- </div>
18
- </div>
19
- <check-rsult-simple :itemname="itemname" :items="weekCheck" ></check-rsult-simple>
20
- <div class="row text-center" style="margin-top: 20px;">
21
- <button v-if="showbutton" type="button" class="col-sm-3 btn btn-primary" @click="uploadCheckPaper">提交</button>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script>
27
- import {HttpResetClass, PagedList} from 'vue-client'
28
- import Vue from 'vue'
29
- import * as Util from '../../Util'
30
-
31
- export default {
32
- title: '周检待办详情',
33
- props: {
34
- weekdata:{
35
- type: Object,
36
- default () {
37
- return {}
38
- }
39
- }
40
- },
41
- data () {
42
- return {
43
- weekConfig:{},
44
- weekCheck: [],
45
- steps: [],
46
- current: null,
47
- showbutton:false,
48
- weekCheckPaper:{},
49
- itemname:''
50
- }
51
- },
52
- ready () {
53
- if (!Util.isEmpty(this.weekdata.paper_id)){
54
- const http = new HttpResetClass()
55
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckPaperById`, {id: this.weekdata.paper_id }).then(res=>{
56
- console.log('res', res.data)
57
- this.weekCheckPaper = res.data
58
- if (this.weekdata.f_complete == '已完成'){
59
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
60
- this.steps = []
61
- json.forEach((row) => {
62
- this.steps.push(row.itemname)
63
- })
64
- this.current = json.length
65
- this.weekCheckChange(json[json.length-1].itemname,json.length-1)
66
- }else {
67
- this.getweekconfig(this.weekdata.safechecktype_id)
68
- }
69
- })
70
- }else {
71
- this.getweekconfig(this.weekdata.safechecktype_id)
72
- }
73
- },
74
- computed: {
75
- },
76
- methods:{
77
- // 获取周检配置
78
- getweekconfig(row){
79
- const http = new HttpResetClass()
80
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckTypeById`, {id: row }).then(res=>{
81
- if (res.data && res.data.length > 0 ){
82
- this.weekConfig = res.data[0]
83
- const json = JSON.parse(this.weekConfig.f_json)
84
- if (json && json.length > 0){
85
- this.steps = []
86
- json.forEach((row,index) => {
87
- if (Util.isEmpty(this.weekdata.f_complete)){
88
- this.current = 0
89
- }else if (row.itemname === this.weekdata.f_complete){
90
- this.current = index+1
91
- }
92
- this.steps.push(row.itemname)
93
- })
94
- if (Util.isEmpty(this.weekdata.f_complete)){
95
- this.weekCheckChange(json[0].itemname,this.current)
96
- }else {
97
- if (this.weekdata.f_complete != '已完成'){
98
- this.weekCheckChange(this.steps[this.current],this.current)
99
- }
100
- }
101
- }
102
- }
103
- })
104
- },
105
- // 获取当前环节周检配置
106
- weekCheckChange(row,id){
107
- if (this.current < id) {
108
- this.weekCheck = []
109
- this.showbutton = false
110
- this.$showMessage('请先完成当前环节!')
111
- }
112
- else if (this.current == id){
113
- this.showbutton = true
114
- const json = JSON.parse(this.weekConfig.f_json)
115
- this.weekCheck = []
116
- if (json && json.length > 0){
117
- if (Util.isEmpty(row)){
118
- json[0].items.forEach(row => {
119
- this.weekCheck.push({
120
- f_item_name: row.itemname,
121
- f_item_value: row.f_item_value || '',
122
- options:row.options,
123
- type: row.type,
124
- isshow:true,
125
- images: row.images|| [],
126
- multiple: row.multiple?row.multiple:false,
127
- readonly:false,
128
- state:'未检'
129
- })
130
- })
131
- }
132
- else {
133
- for (let i = 0; i < json.length; i++){
134
- if (json[i].itemname === row){
135
- json[i].items.forEach(row => {
136
- this.weekCheck.push({
137
- f_item_name: row.itemname,
138
- f_item_value: row.f_item_value || '',
139
- options:row.options,
140
- type: row.type,
141
- isshow:true,
142
- images: row.images|| [],
143
- multiple: row.multiple?row.multiple:false,
144
- readonly:false,
145
- state:'未检'
146
- })
147
- })
148
- }
149
- }
150
- }
151
- }
152
- this.setFormData()
153
- }
154
- else if (this.current > id){
155
- this.showbutton = false
156
- this.weekCheck = []
157
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
158
- json.forEach(res=>{
159
- if (res.itemname === row){
160
- res.items.forEach(row => {
161
- this.weekCheck.push({
162
- f_item_name: row.f_item_name,
163
- f_item_value: row.f_item_value || '',
164
- options:row.options,
165
- type: row.type,
166
- isshow:true,
167
- images: row.images|| [],
168
- multiple: row.multiple?row.multiple:false,
169
- readonly:true,
170
- state:'已检'
171
- })
172
- })
173
- }
174
- })
175
- }
176
- else {
177
- this.showbutton = false
178
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
179
- this.weekCheck = []
180
- json[0].items.forEach(row => {
181
- this.weekCheck.push({
182
- f_item_name: row.f_item_name,
183
- f_item_value: row.f_item_value || '',
184
- options:row.options,
185
- type: row.type,
186
- isshow:true,
187
- images: row.images|| [],
188
- multiple: row.multiple?row.multiple:false,
189
- readonly:true,
190
- state:'已检'
191
- })
192
- })
193
- }
194
- this.watchitem()
195
- this.itemname = row
196
- },
197
- // 表单数据
198
- setFormData(){
199
- this.weekCheck.forEach(item=>{
200
- if (item.f_item_name === '表号' && !Util.isEmpty(this.weekdata.f_meternumber)){
201
- item.f_item_value = this.weekdata.f_meternumber
202
- item.readonly = true
203
- }
204
- if (item.f_item_name === '气表品牌' && !Util.isEmpty(this.weekdata.f_meter_brand)){
205
- item.f_item_value = this.weekdata.f_meter_brand
206
- item.readonly = true
207
- }
208
- if (item.f_item_name === '气表型号' && !Util.isEmpty(this.weekdata.f_meter_style)){
209
- item.f_item_value = this.weekdata.f_meter_style
210
- item.readonly = true
211
- }
212
- if (item.f_item_name === '表具状态' && !Util.isEmpty(this.weekdata.f_table_state)){
213
- item.f_item_value = this.weekdata.f_table_state
214
- item.readonly = true
215
- }
216
- })
217
- },
218
- // 监听表单
219
- watchitem(){
220
- for (let item in this.weekCheck) {
221
- if (this.weekCheck[item].f_item_name === "是否停用表具") {
222
- this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
223
- if (val === '是') {
224
- this.weekCheck.forEach((item) => {
225
- if (item.f_item_name === '是否停用表具' || item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
226
- item.isshow = true
227
- } else {
228
- item.isshow = false
229
- }
230
- })
231
- }
232
- if (val === '否') {
233
- this.weekCheck.forEach((item) => {
234
- if (item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
235
- item.f_item_value = ''
236
- item.images = []
237
- item.isshow = false
238
- } else {
239
- item.isshow = true
240
- }
241
- })
242
- }
243
- })
244
- }
245
- if (this.weekCheck[item].f_item_name === "检定结果") {
246
- this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
247
- if (val === '不合格') {
248
- this.weekCheck.forEach((item) => {
249
- if (item.f_item_name === '检定结果' || item.f_item_name === '处理方式' ) {
250
- item.isshow = true
251
- } else {
252
- item.f_item_value = ''
253
- item.isshow = false
254
- }
255
- })
256
- }
257
- if (val === '合格') {
258
- this.weekCheck.forEach((item) => {
259
- if (item.f_item_name === '处理方式' ) {
260
- item.f_item_value = ''
261
- item.isshow = false
262
- } else {
263
- item.isshow = true
264
- }
265
- })
266
- }
267
- })
268
- }
269
- }
270
- },
271
- async commitCallBack(jo) {
272
- if (jo.state != 'ok'){
273
- this.$showMessage('上传图片失败')
274
- throw '上传图片失败'
275
- }
276
- },
277
- async uploadCheckPaperPics () {
278
- let tableImages = []
279
- this.weekCheck.forEach((item) => {
280
- if (item.type == 'picture'){
281
- item.images.forEach(image=>{
282
- image.filename = image.f_path.substring(image.f_path.lastIndexOf('/')+1)
283
- tableImages.push({
284
- path: image.f_path,
285
- })
286
- })
287
- }
288
- })
289
- HostApp.__this__ = this
290
- HostApp.logicWithHint({
291
- 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
292
- 'data': {tableImages:tableImages}, 'backresult': 1
293
- })
294
- },
295
- async uploadCheckPaper () {
296
- await this.uploadCheckPaperPics()
297
- const http = new HttpResetClass()
298
- let json = []
299
- if (this.weekCheckPaper && !Util.isEmpty(this.weekCheckPaper.f_safe_content)){
300
- json = JSON.parse(this.weekCheckPaper.f_safe_content)
301
- }
302
- JSON.parse(this.weekConfig.f_json).forEach(res=>{
303
- if (res.itemname === this.steps[this.current]){
304
- res.items = this.weekCheck
305
- json.push(res)
306
- }
307
- })
308
- let data = {
309
- f_userinfo_id: this.weekdata.f_userinfo_id,
310
- f_user_name: this.weekdata.f_user_name,
311
- f_user_phone: this.weekdata.f_user_phone,
312
- f_meter_brand: this.weekdata.f_meter_brand,
313
- f_meter_style: this.weekdata.f_meter_style,
314
- f_meternumber: this.weekdata.f_meternumber,
315
- f_address: this.weekdata.f_address,
316
- f_checker_id: Vue.user.id,
317
- f_checker_name: Vue.user.name,
318
- f_safe_type: '周检',
319
- f_entry_status :'正常',
320
- f_week_check_result: '合格',
321
- f_table_state: this.weekdata.f_table_state,
322
- f_safe_content: json,
323
- f_safecheck_type_id: this.weekdata.safechecktype_id,
324
- f_check_item_id: this.weekdata.id,
325
- f_check_plan_id: this.weekdata.f_plan_id,
326
- f_upload_date: Util.toStandardTimeString(),
327
- f_filiale_id: Vue.user.orgid,
328
- f_filiale: Vue.user.orgs,
329
- }
330
- if (!Util.isEmpty(this.weekdata.paper_id)){
331
- data.id = this.weekdata.paper_id
332
- }
333
- if (this.steps[this.current] == '上传报告'){
334
- data.f_current_complete = '已完成'
335
- data.f_complete = '已完成'
336
- data.f_state = '已检'
337
- data.f_entry_status = '正常'
338
- }else {
339
- data.f_current_complete = this.steps[this.current + 1]
340
- data.f_complete = this.steps[this.current]
341
- data.f_state = '未检'
342
- }
343
- this.weekCheck.forEach(item => {
344
- if (this.steps[this.current] == '下表'){
345
- if (item.f_item_name === '是否停用表具'){
346
- if (item.f_item_value == '是'){
347
- data.f_table_state = '停用'
348
- data.f_complete = '已完成'
349
- data.f_state = '已检'
350
- }
351
- }
352
- }
353
- if (this.steps[this.current] == '输入检定结果'){
354
- if (item.f_item_name === '处理方式' ){
355
- if (!Util.isEmpty(item.f_item_value)){
356
- data.f_entry_status = item.f_item_value
357
- data.f_complete = '已完成'
358
- data.f_state = '已检'
359
- }
360
- }
361
- if (item.f_item_name === '检定结果' ){
362
- data.f_week_check_result = item.f_item_value
363
- }
364
- if (item.f_item_name === '检定机构' ){
365
- data.f_last_inspection_agency = item.f_item_value
366
- }
367
- }
368
- if (this.steps[this.current] == '上传报告'){
369
- if (item.f_item_name === '检定时间' ){
370
- data.f_complete_date = item.f_item_value
371
- }
372
- }
373
- })
374
-
375
-
376
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, data).then(res=>{
377
- console.log('res', res.data)
378
- this.weekCheckPaper = res.data[0]
379
- })
380
- this.$dispatch('confirm')
381
- }
382
- }
383
- }
384
- </script>
385
-
386
- <style scoped>
387
- .step-header {
388
- background: #ffffff;
389
- padding: 15px 20px;
390
- }
391
-
392
- .step-track {
393
- display: flex;
394
- justify-content: flex-start;
395
- padding: 0 10px;
396
- font-size: 14px;
397
- color: #666;
398
- overflow-x: auto; /* 启用横向滚动 */
399
- /* 隐藏滚动条 */
400
- scrollbar-width: none; /* Firefox */
401
- -ms-overflow-style: none; /* IE/Edge */
402
- }
403
-
404
- /* 隐藏WebKit浏览器的滚动条 */
405
- .step-track::-webkit-scrollbar {
406
- display: none;
407
- }
408
-
409
- .step-item {
410
- position: relative;
411
- display: flex;
412
- flex-direction: column;
413
- align-items: end;
414
- }
415
-
416
- .step-number {
417
- width: 30px;
418
- height: 30px;
419
- border-radius: 50%;
420
- background: #e0e0e0;
421
- color: #666;
422
- line-height: 30px;
423
- text-align: center;
424
- font-weight: bold;
425
- font-size: 14px;
426
- transition: all 0.3s ease;
427
- }
428
-
429
- .step-number.active {
430
- background: #499EDF;
431
- color: white;
432
- }
433
-
434
- .step-title {
435
- margin-top: 8px;
436
- font-size: 14px;
437
- color: #666;
438
- font-weight: 500;
439
- width: 3em;
440
- text-align: center;
441
- word-break: break-all;
442
- line-height: 1.4;
443
- }
444
-
445
- /* 分隔线 */
446
- .step-divider {
447
- width: 80px;
448
- height: 2px;
449
- background: #e0e0e0;
450
- margin: 0 16px;
451
- transition: all 0.3s ease;
452
- }
453
-
454
- .step-divider.active {
455
- background: #499EDF;
456
- }
457
- </style>
1
+ <template>
2
+ <div class="auto">
3
+ <div class="step-header">
4
+ <div class="step-track">
5
+ <div v-for="(idx, s) in steps" :key="idx" class="step-item">
6
+ <div style="display: flex;align-items: center;">
7
+ <!-- 分隔线(仅在非第一个步骤时显示) -->
8
+ <div v-if="idx !== 0" class="step-divider" :class="{ active: idx <= current }"></div>
9
+ <!-- 圆形数字 -->
10
+ <div class="step-number" :class="{ active: idx <= current }" @click="weekCheckChange(s,idx)">
11
+ {{ idx + 1 }}
12
+ </div>
13
+ </div>
14
+ <!-- 步骤标题 -->
15
+ <div class="step-title">{{ s }}</div>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ <check-rsult-simple :itemname="itemname" :items="weekCheck" ></check-rsult-simple>
20
+ <div class="row text-center" style="margin-top: 20px;">
21
+ <button v-if="showbutton" type="button" class="col-sm-3 btn btn-primary" @click="uploadCheckPaper">提交</button>
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ import {HttpResetClass, PagedList} from 'vue-client'
28
+ import Vue from 'vue'
29
+ import * as Util from '../../Util'
30
+
31
+ export default {
32
+ title: '周检待办详情',
33
+ props: {
34
+ weekdata:{
35
+ type: Object,
36
+ default () {
37
+ return {}
38
+ }
39
+ }
40
+ },
41
+ data () {
42
+ return {
43
+ weekConfig:{},
44
+ weekCheck: [],
45
+ steps: [],
46
+ current: null,
47
+ showbutton:false,
48
+ weekCheckPaper:{},
49
+ itemname:''
50
+ }
51
+ },
52
+ ready () {
53
+ if (!Util.isEmpty(this.weekdata.paper_id)){
54
+ const http = new HttpResetClass()
55
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckPaperById`, {id: this.weekdata.paper_id }).then(res=>{
56
+ console.log('res', res.data)
57
+ this.weekCheckPaper = res.data
58
+ if (this.weekdata.f_complete == '已完成'){
59
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
60
+ this.steps = []
61
+ json.forEach((row) => {
62
+ this.steps.push(row.itemname)
63
+ })
64
+ this.current = json.length
65
+ this.weekCheckChange(json[json.length-1].itemname,json.length-1)
66
+ }else {
67
+ this.getweekconfig(this.weekdata.safechecktype_id)
68
+ }
69
+ })
70
+ }else {
71
+ this.getweekconfig(this.weekdata.safechecktype_id)
72
+ }
73
+ },
74
+ computed: {
75
+ },
76
+ methods:{
77
+ // 获取周检配置
78
+ getweekconfig(row){
79
+ const http = new HttpResetClass()
80
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckTypeById`, {id: row }).then(res=>{
81
+ if (res.data && res.data.length > 0 ){
82
+ this.weekConfig = res.data[0]
83
+ const json = JSON.parse(this.weekConfig.f_json)
84
+ if (json && json.length > 0){
85
+ this.steps = []
86
+ json.forEach((row,index) => {
87
+ if (Util.isEmpty(this.weekdata.f_complete)){
88
+ this.current = 0
89
+ }else if (row.itemname === this.weekdata.f_complete){
90
+ this.current = index+1
91
+ }
92
+ this.steps.push(row.itemname)
93
+ })
94
+ if (Util.isEmpty(this.weekdata.f_complete)){
95
+ this.weekCheckChange(json[0].itemname,this.current)
96
+ }else {
97
+ if (this.weekdata.f_complete != '已完成'){
98
+ this.weekCheckChange(this.steps[this.current],this.current)
99
+ }
100
+ }
101
+ }
102
+ }
103
+ })
104
+ },
105
+ // 获取当前环节周检配置
106
+ weekCheckChange(row,id){
107
+ if (this.current < id) {
108
+ this.weekCheck = []
109
+ this.showbutton = false
110
+ this.$showMessage('请先完成当前环节!')
111
+ }
112
+ else if (this.current == id){
113
+ this.showbutton = true
114
+ const json = JSON.parse(this.weekConfig.f_json)
115
+ this.weekCheck = []
116
+ if (json && json.length > 0){
117
+ if (Util.isEmpty(row)){
118
+ json[0].items.forEach(row => {
119
+ this.weekCheck.push({
120
+ f_item_name: row.itemname,
121
+ f_item_value: row.f_item_value || '',
122
+ options:row.options,
123
+ type: row.type,
124
+ isshow:true,
125
+ images: row.images|| [],
126
+ multiple: row.multiple?row.multiple:false,
127
+ readonly:false,
128
+ state:'未检'
129
+ })
130
+ })
131
+ }
132
+ else {
133
+ for (let i = 0; i < json.length; i++){
134
+ if (json[i].itemname === row){
135
+ json[i].items.forEach(row => {
136
+ this.weekCheck.push({
137
+ f_item_name: row.itemname,
138
+ f_item_value: row.f_item_value || '',
139
+ options:row.options,
140
+ type: row.type,
141
+ isshow:true,
142
+ images: row.images|| [],
143
+ multiple: row.multiple?row.multiple:false,
144
+ readonly:false,
145
+ state:'未检'
146
+ })
147
+ })
148
+ }
149
+ }
150
+ }
151
+ }
152
+ this.setFormData()
153
+ }
154
+ else if (this.current > id){
155
+ this.showbutton = false
156
+ this.weekCheck = []
157
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
158
+ json.forEach(res=>{
159
+ if (res.itemname === row){
160
+ res.items.forEach(row => {
161
+ this.weekCheck.push({
162
+ f_item_name: row.f_item_name,
163
+ f_item_value: row.f_item_value || '',
164
+ options:row.options,
165
+ type: row.type,
166
+ isshow:true,
167
+ images: row.images|| [],
168
+ multiple: row.multiple?row.multiple:false,
169
+ readonly:true,
170
+ state:'已检'
171
+ })
172
+ })
173
+ }
174
+ })
175
+ }
176
+ else {
177
+ this.showbutton = false
178
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
179
+ this.weekCheck = []
180
+ json[0].items.forEach(row => {
181
+ this.weekCheck.push({
182
+ f_item_name: row.f_item_name,
183
+ f_item_value: row.f_item_value || '',
184
+ options:row.options,
185
+ type: row.type,
186
+ isshow:true,
187
+ images: row.images|| [],
188
+ multiple: row.multiple?row.multiple:false,
189
+ readonly:true,
190
+ state:'已检'
191
+ })
192
+ })
193
+ }
194
+ this.watchitem()
195
+ this.itemname = row
196
+ },
197
+ // 表单数据
198
+ setFormData(){
199
+ this.weekCheck.forEach(item=>{
200
+ if (item.f_item_name === '表号' && !Util.isEmpty(this.weekdata.f_meternumber)){
201
+ item.f_item_value = this.weekdata.f_meternumber
202
+ item.readonly = true
203
+ }
204
+ if (item.f_item_name === '气表品牌' && !Util.isEmpty(this.weekdata.f_meter_brand)){
205
+ item.f_item_value = this.weekdata.f_meter_brand
206
+ item.readonly = true
207
+ }
208
+ if (item.f_item_name === '气表型号' && !Util.isEmpty(this.weekdata.f_meter_style)){
209
+ item.f_item_value = this.weekdata.f_meter_style
210
+ item.readonly = true
211
+ }
212
+ if (item.f_item_name === '表具状态' && !Util.isEmpty(this.weekdata.f_table_state)){
213
+ item.f_item_value = this.weekdata.f_table_state
214
+ item.readonly = true
215
+ }
216
+ })
217
+ },
218
+ // 监听表单
219
+ watchitem(){
220
+ for (let item in this.weekCheck) {
221
+ if (this.weekCheck[item].f_item_name === "是否停用表具") {
222
+ this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
223
+ if (val === '是') {
224
+ this.weekCheck.forEach((item) => {
225
+ if (item.f_item_name === '是否停用表具' || item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
226
+ item.isshow = true
227
+ } else {
228
+ item.isshow = false
229
+ }
230
+ })
231
+ }
232
+ if (val === '否') {
233
+ this.weekCheck.forEach((item) => {
234
+ if (item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
235
+ item.f_item_value = ''
236
+ item.images = []
237
+ item.isshow = false
238
+ } else {
239
+ item.isshow = true
240
+ }
241
+ })
242
+ }
243
+ })
244
+ }
245
+ if (this.weekCheck[item].f_item_name === "检定结果") {
246
+ this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
247
+ if (val === '不合格') {
248
+ this.weekCheck.forEach((item) => {
249
+ if (item.f_item_name === '检定结果' || item.f_item_name === '处理方式' ) {
250
+ item.isshow = true
251
+ } else {
252
+ item.f_item_value = ''
253
+ item.isshow = false
254
+ }
255
+ })
256
+ }
257
+ if (val === '合格') {
258
+ this.weekCheck.forEach((item) => {
259
+ if (item.f_item_name === '处理方式' ) {
260
+ item.f_item_value = ''
261
+ item.isshow = false
262
+ } else {
263
+ item.isshow = true
264
+ }
265
+ })
266
+ }
267
+ })
268
+ }
269
+ }
270
+ },
271
+ async commitCallBack(jo) {
272
+ if (jo.state != 'ok'){
273
+ this.$showMessage('上传图片失败')
274
+ throw '上传图片失败'
275
+ }
276
+ },
277
+ async uploadCheckPaperPics () {
278
+ let tableImages = []
279
+ this.weekCheck.forEach((item) => {
280
+ if (item.type == 'picture'){
281
+ item.images.forEach(image=>{
282
+ image.filename = image.f_path.substring(image.f_path.lastIndexOf('/')+1)
283
+ tableImages.push({
284
+ path: image.f_path,
285
+ })
286
+ })
287
+ }
288
+ })
289
+ HostApp.__this__ = this
290
+ HostApp.logicWithHint({
291
+ 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
292
+ 'data': {tableImages:tableImages}, 'backresult': 1
293
+ })
294
+ },
295
+ async uploadCheckPaper () {
296
+ await this.uploadCheckPaperPics()
297
+ const http = new HttpResetClass()
298
+ let json = []
299
+ if (this.weekCheckPaper && !Util.isEmpty(this.weekCheckPaper.f_safe_content)){
300
+ json = JSON.parse(this.weekCheckPaper.f_safe_content)
301
+ }
302
+ JSON.parse(this.weekConfig.f_json).forEach(res=>{
303
+ if (res.itemname === this.steps[this.current]){
304
+ res.items = this.weekCheck
305
+ json.push(res)
306
+ }
307
+ })
308
+ let data = {
309
+ f_userinfo_id: this.weekdata.f_userinfo_id,
310
+ f_user_name: this.weekdata.f_user_name,
311
+ f_user_phone: this.weekdata.f_user_phone,
312
+ f_meter_brand: this.weekdata.f_meter_brand,
313
+ f_meter_style: this.weekdata.f_meter_style,
314
+ f_meternumber: this.weekdata.f_meternumber,
315
+ f_address: this.weekdata.f_address,
316
+ f_checker_id: Vue.user.id,
317
+ f_checker_name: Vue.user.name,
318
+ f_safe_type: '周检',
319
+ f_entry_status :'正常',
320
+ f_week_check_result: '合格',
321
+ f_table_state: this.weekdata.f_table_state,
322
+ f_safe_content: json,
323
+ f_safecheck_type_id: this.weekdata.safechecktype_id,
324
+ f_check_item_id: this.weekdata.id,
325
+ f_check_plan_id: this.weekdata.f_plan_id,
326
+ f_upload_date: Util.toStandardTimeString(),
327
+ f_filiale_id: Vue.user.orgid,
328
+ f_filiale: Vue.user.orgs,
329
+ }
330
+ if (!Util.isEmpty(this.weekdata.paper_id)){
331
+ data.id = this.weekdata.paper_id
332
+ }
333
+ if (this.steps[this.current] == '上传报告'){
334
+ data.f_current_complete = '已完成'
335
+ data.f_complete = '已完成'
336
+ data.f_state = '已检'
337
+ data.f_entry_status = '正常'
338
+ }else {
339
+ data.f_current_complete = this.steps[this.current + 1]
340
+ data.f_complete = this.steps[this.current]
341
+ data.f_state = '未检'
342
+ }
343
+ this.weekCheck.forEach(item => {
344
+ if (this.steps[this.current] == '下表'){
345
+ if (item.f_item_name === '是否停用表具'){
346
+ if (item.f_item_value == '是'){
347
+ data.f_table_state = '停用'
348
+ data.f_complete = '已完成'
349
+ data.f_state = '已检'
350
+ }
351
+ }
352
+ }
353
+ if (this.steps[this.current] == '输入检定结果'){
354
+ if (item.f_item_name === '处理方式' ){
355
+ if (!Util.isEmpty(item.f_item_value)){
356
+ data.f_entry_status = item.f_item_value
357
+ data.f_complete = '已完成'
358
+ data.f_state = '已检'
359
+ }
360
+ }
361
+ if (item.f_item_name === '检定结果' ){
362
+ data.f_week_check_result = item.f_item_value
363
+ }
364
+ if (item.f_item_name === '检定机构' ){
365
+ data.f_last_inspection_agency = item.f_item_value
366
+ }
367
+ }
368
+ if (this.steps[this.current] == '上传报告'){
369
+ if (item.f_item_name === '检定时间' ){
370
+ data.f_complete_date = item.f_item_value
371
+ }
372
+ }
373
+ })
374
+
375
+
376
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, data).then(res=>{
377
+ console.log('res', res.data)
378
+ this.weekCheckPaper = res.data[0]
379
+ })
380
+ this.$dispatch('confirm')
381
+ }
382
+ }
383
+ }
384
+ </script>
385
+
386
+ <style scoped>
387
+ .step-header {
388
+ background: #ffffff;
389
+ padding: 15px 20px;
390
+ }
391
+
392
+ .step-track {
393
+ display: flex;
394
+ justify-content: flex-start;
395
+ padding: 0 10px;
396
+ font-size: 14px;
397
+ color: #666;
398
+ overflow-x: auto; /* 启用横向滚动 */
399
+ /* 隐藏滚动条 */
400
+ scrollbar-width: none; /* Firefox */
401
+ -ms-overflow-style: none; /* IE/Edge */
402
+ }
403
+
404
+ /* 隐藏WebKit浏览器的滚动条 */
405
+ .step-track::-webkit-scrollbar {
406
+ display: none;
407
+ }
408
+
409
+ .step-item {
410
+ position: relative;
411
+ display: flex;
412
+ flex-direction: column;
413
+ align-items: end;
414
+ }
415
+
416
+ .step-number {
417
+ width: 30px;
418
+ height: 30px;
419
+ border-radius: 50%;
420
+ background: #e0e0e0;
421
+ color: #666;
422
+ line-height: 30px;
423
+ text-align: center;
424
+ font-weight: bold;
425
+ font-size: 14px;
426
+ transition: all 0.3s ease;
427
+ }
428
+
429
+ .step-number.active {
430
+ background: #499EDF;
431
+ color: white;
432
+ }
433
+
434
+ .step-title {
435
+ margin-top: 8px;
436
+ font-size: 14px;
437
+ color: #666;
438
+ font-weight: 500;
439
+ width: 3em;
440
+ text-align: center;
441
+ word-break: break-all;
442
+ line-height: 1.4;
443
+ }
444
+
445
+ /* 分隔线 */
446
+ .step-divider {
447
+ width: 80px;
448
+ height: 2px;
449
+ background: #e0e0e0;
450
+ margin: 0 16px;
451
+ transition: all 0.3s ease;
452
+ }
453
+
454
+ .step-divider.active {
455
+ background: #499EDF;
456
+ }
457
+ </style>