safecheck-client 4.0.2-76 → 4.0.2-77

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 (27) hide show
  1. package/package.json +1 -1
  2. package/src/assets/marker-default.png +0 -0
  3. package/src/assets/myLocationIcon.png +0 -0
  4. package/src/components/android/AppMapLocation.vue +829 -0
  5. package/src/components/android/AppMapPaper.vue +83 -0
  6. package/src/components/android/PhoneUpUserinfo.vue +1249 -1249
  7. package/src/components/android/SafeRightTree.vue +218 -218
  8. package/src/components/android/SafecheckDevices.vue +1340 -1340
  9. package/src/components/android/week/CheckResultSimple.vue +258 -258
  10. package/src/components/android/week/FirstWeekCheck.vue +303 -303
  11. package/src/components/android/week/StepHeaderBar.vue +477 -477
  12. package/src/components/android/week/WeekCheck.vue +267 -267
  13. package/src/components/android/week/WeekCheckPaper.vue +274 -274
  14. package/src/components/android/week/WeekCheckPlan.vue +145 -145
  15. package/src/components/android/week/WeekCheckUserInfo.vue +99 -99
  16. package/src/components/pc/CheckBookArea.vue +146 -146
  17. package/src/components/pc/CheckBookCompany.vue +144 -144
  18. package/src/components/pc/CheckBookDetails.vue +161 -161
  19. package/src/components/pc/CheckBookEntry.vue +60 -60
  20. package/src/components/pc/CheckBookSearchArea.vue +560 -560
  21. package/src/components/pc/CheckBookSearchUnit.vue +229 -229
  22. package/src/components/pc/CheckBookSearchUserList.vue +674 -674
  23. package/src/filiale/meihekou/android/CheckPlanList.vue +198 -198
  24. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -190
  25. package/src/filiale/meihekou/android/SafecheckDevices.vue +1343 -1343
  26. package/src/filiale/meihekou/android.js +22 -22
  27. package/src/safecheck-android.js +332 -330
@@ -1,477 +1,477 @@
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
- <week-check-user-info :userinfo="weekUserInfo"></week-check-user-info>
20
- <check-rsult-simple :itemname="itemname" :items="weekCheck" ></check-rsult-simple>
21
- <div class="row text-center" style="margin-top: 20px;">
22
- <button v-if="showbutton" type="button" class="col-sm-3 btn btn-primary" @click="uploadCheckPaper">提交</button>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script>
28
- import {HttpResetClass, PagedList} from 'vue-client'
29
- import Vue from 'vue'
30
- import * as Util from '../../Util'
31
- import WeekCheckUserInfo from './WeekCheckUserInfo'
32
-
33
- export default {
34
- title: '周检待办详情',
35
- props: {
36
- weekdata:{
37
- type: Object,
38
- default () {
39
- return {}
40
- }
41
- }
42
- },
43
- components: {
44
- WeekCheckUserInfo
45
- },
46
- data () {
47
- return {
48
- weekConfig:{},
49
- weekCheck: [],
50
- steps: [],
51
- current: null,
52
- showbutton:false,
53
- weekCheckPaper:{},
54
- itemname:'',
55
- weekUserInfo:{}
56
- }
57
- },
58
- ready () {
59
- if (!Util.isEmpty(this.weekdata.paper_id)){
60
- const http = new HttpResetClass()
61
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckPaperById`, {id: this.weekdata.paper_id }).then(res=>{
62
- console.log('res', res.data)
63
- this.weekCheckPaper = res.data
64
- if (this.weekdata.f_complete == '已完成'){
65
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
66
- this.steps = []
67
- json.forEach((row) => {
68
- this.steps.push(row.itemname)
69
- })
70
- this.current = json.length
71
- this.weekCheckChange(json[json.length-1].itemname,json.length-1)
72
- }else {
73
- this.getweekconfig(this.weekdata.safechecktype_id)
74
- }
75
- })
76
- }else {
77
- this.getweekconfig(this.weekdata.safechecktype_id)
78
- }
79
- this.getWeekUserInfo()
80
- },
81
- computed: {
82
- },
83
- methods:{
84
- // 获取周检配置
85
- getweekconfig(row){
86
- const http = new HttpResetClass()
87
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckTypeById`, {id: row }).then(res=>{
88
- if (res.data && res.data.length > 0 ){
89
- this.weekConfig = res.data[0]
90
- const json = JSON.parse(this.weekConfig.f_json)
91
- if (json && json.length > 0){
92
- this.steps = []
93
- json.forEach((row1,index) => {
94
- if (Util.isEmpty(this.weekdata.f_complete)){
95
- this.current = 0
96
- }else if (row1.itemname === this.weekdata.f_complete){
97
- this.current = index+1
98
- }
99
- this.steps.push(row1.itemname)
100
- })
101
- if (Util.isEmpty(this.weekdata.f_complete)){
102
- this.weekCheckChange(json[0].itemname,this.current)
103
- }else {
104
- if (this.weekdata.f_complete != '已完成'){
105
- this.weekCheckChange(this.steps[this.current],this.current)
106
- }
107
- }
108
- }
109
- }
110
- })
111
- },
112
- // 获取当前环节周检配置
113
- weekCheckChange(row,id){
114
- if (this.current < id) {
115
- this.weekCheck = []
116
- this.showbutton = false
117
- this.$showMessage('请先完成当前环节!')
118
- }
119
- else if (this.current == id){
120
- this.showbutton = true
121
- const json = JSON.parse(this.weekConfig.f_json)
122
- this.weekCheck = []
123
- if (json && json.length > 0){
124
- if (Util.isEmpty(row)){
125
- json[0].items.forEach(row1 => {
126
- this.weekCheck.push({
127
- f_item_name: row1.itemname,
128
- f_item_value: row1.f_item_value || '',
129
- options:row1.options,
130
- type: row1.type,
131
- isshow:true,
132
- images: row1.images|| [],
133
- multiple: row1.multiple?row1.multiple:false,
134
- readonly:false,
135
- state:'未检'
136
- })
137
- })
138
- }
139
- else {
140
- for (let i = 0; i < json.length; i++){
141
- if (json[i].itemname === row){
142
- json[i].items.forEach(row1 => {
143
- this.weekCheck.push({
144
- f_item_name: row1.itemname,
145
- f_item_value: row1.f_item_value || '',
146
- options:row1.options,
147
- type: row1.type,
148
- isshow:true,
149
- images: row1.images|| [],
150
- multiple: row1.multiple?row1.multiple:false,
151
- readonly:false,
152
- state:'未检'
153
- })
154
- })
155
- }
156
- }
157
- }
158
- }
159
- this.watchitem()
160
- this.setFormData()
161
- }
162
- else if (this.current > id){
163
- this.showbutton = false
164
- this.weekCheck = []
165
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
166
- json.forEach(res=>{
167
- if (res.itemname === row){
168
- res.items.forEach(row1 => {
169
- this.weekCheck.push({
170
- f_item_name: row1.f_item_name,
171
- f_item_value: row1.f_item_value,
172
- options:row1.options,
173
- type: row1.type,
174
- isshow:row1.isshow,
175
- images: row1.images,
176
- multiple: row1.multiple?row1.multiple:false,
177
- readonly:true,
178
- state:'已检'
179
- })
180
- })
181
- }
182
- })
183
- }
184
- else {
185
- this.showbutton = false
186
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
187
- this.weekCheck = []
188
- json[0].items.forEach(row => {
189
- this.weekCheck.push({
190
- f_item_name: row.f_item_name,
191
- f_item_value: row.f_item_value ,
192
- options:row.options,
193
- type: row.type,
194
- isshow:row.isshow ,
195
- images: row.images,
196
- multiple: row.multiple?row.multiple:false,
197
- readonly:true,
198
- state:'已检'
199
- })
200
- })
201
- }
202
- this.itemname = row
203
- },
204
- // 表单数据
205
- setFormData(){
206
- this.weekCheck.forEach(item=>{
207
- if (item.f_item_name === '表号' && !Util.isEmpty(this.weekdata.f_meternumber)){
208
- item.f_item_value = this.weekdata.f_meternumber
209
- item.readonly = true
210
- }
211
- if (item.f_item_name === '气表品牌' && !Util.isEmpty(this.weekdata.f_meter_brand)){
212
- item.f_item_value = this.weekdata.f_meter_brand
213
- item.readonly = true
214
- }
215
- if (item.f_item_name === '气表型号' && !Util.isEmpty(this.weekdata.f_meter_style)){
216
- item.f_item_value = this.weekdata.f_meter_style
217
- item.readonly = true
218
- }
219
- if (item.f_item_name === '表具状态' && !Util.isEmpty(this.weekdata.f_table_state)){
220
- item.f_item_value = this.weekdata.f_table_state
221
- item.readonly = true
222
- }
223
- if (item.f_item_name === '操作人'){
224
- item.f_item_value = Vue.user.name
225
- item.isshow = false
226
- item.readonly = true
227
- }
228
- if (item.f_item_name === '完成时间') {
229
- item.f_item_value = Util.toStandardTimeString()
230
- item.isshow = false
231
- item.readonly = true
232
- }
233
- })
234
- },
235
- // 监听表单
236
- watchitem(){
237
- for (let item in this.weekCheck) {
238
- if (this.weekCheck[item].f_item_name === "是否停用表具") {
239
- this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
240
- if (val === '是') {
241
- this.weekCheck.forEach((item) => {
242
- if (item.f_item_name !== '操作人' && item.f_item_name !== '完成时间') {
243
- if (item.f_item_name === '是否停用表具' || item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
244
- item.isshow = true
245
- } else {
246
- item.isshow = false
247
- }
248
- }
249
- })
250
- }
251
- if (val === '否') {
252
- this.weekCheck.forEach((item) => {
253
- if (item.f_item_name !== '操作人' && item.f_item_name !== '完成时间') {
254
- if (item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
255
- item.f_item_value = ''
256
- item.images = []
257
- item.isshow = false
258
- } else {
259
- item.isshow = true
260
- }
261
- }
262
- })
263
- }
264
- })
265
- }
266
- }
267
- },
268
- async commitCallBack(jo) {
269
- if (jo.state != 'ok'){
270
- this.$showMessage('上传图片失败')
271
- throw '上传图片失败'
272
- }
273
- },
274
- async uploadCheckPaperPics () {
275
- let tableImages = []
276
- this.weekCheck.forEach((item) => {
277
- if (this.steps[this.current] == '上传报告'){
278
- if (item.f_item_name === '检定时间' ){
279
- if (item.f_item_value && item.f_item_value > Util.toStandardTimeString()){
280
- throw '只能选择当前或者之前的时间!'
281
- }
282
- }
283
- }
284
- if (item.f_item_name === "操作人") {
285
- item.isshow = true
286
- }
287
- if (item.f_item_name === "完成时间") {
288
- item.isshow = true
289
- }
290
- if (item.type == 'picture'){
291
- item.images.forEach(image=>{
292
- image.filename = image.f_path.substring(image.f_path.lastIndexOf('/')+1)
293
- tableImages.push({
294
- path: image.f_path,
295
- })
296
- })
297
- }
298
- })
299
- HostApp.__this__ = this
300
- HostApp.logicWithHint({
301
- 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
302
- 'data': {tableImages:tableImages}, 'backresult': 1
303
- })
304
- },
305
- async uploadCheckPaper () {
306
- try {
307
- await this.uploadCheckPaperPics()
308
- const http = new HttpResetClass()
309
- let json = []
310
- if (this.weekCheckPaper && !Util.isEmpty(this.weekCheckPaper.f_safe_content)){
311
- json = JSON.parse(this.weekCheckPaper.f_safe_content)
312
- }
313
- JSON.parse(this.weekConfig.f_json).forEach(res=>{
314
- if (res.itemname === this.steps[this.current]){
315
- res.items = this.weekCheck
316
- json.push(res)
317
- }
318
- })
319
- let data = {
320
- f_userinfo_id: this.weekdata.f_userinfo_id,
321
- f_user_name: this.weekdata.f_user_name,
322
- f_user_phone: this.weekdata.f_user_phone,
323
- f_meter_brand: this.weekdata.f_meter_brand,
324
- f_meter_style: this.weekdata.f_meter_style,
325
- f_meternumber: this.weekdata.f_meternumber,
326
- f_address: this.weekdata.f_address,
327
- f_checker_id: Vue.user.id,
328
- f_checker_name: Vue.user.name,
329
- f_safe_type: '周检',
330
- f_week_check_result: '合格',
331
- f_table_state: this.weekdata.f_table_state,
332
- f_safe_content: json,
333
- f_safecheck_type_id: this.weekdata.safechecktype_id,
334
- f_check_item_id: this.weekdata.id,
335
- f_check_plan_id: this.weekdata.f_plan_id,
336
- f_upload_date: Util.toStandardTimeString(),
337
- f_filiale_id: Vue.user.orgid,
338
- f_filiale: Vue.user.orgs,
339
- }
340
- if (!Util.isEmpty(this.weekdata.paper_id)){
341
- data.id = this.weekdata.paper_id
342
- }
343
- if (this.steps[this.current] == '上传报告'){
344
- data.f_current_complete = '已完成'
345
- data.f_complete = '已完成'
346
- data.f_state = '已检'
347
- }else {
348
- data.f_current_complete = this.steps[this.current + 1]
349
- data.f_complete = this.steps[this.current]
350
- data.f_state = '未检'
351
- }
352
- this.weekCheck.forEach(item => {
353
- if (this.steps[this.current] == '下表'){
354
- if (item.f_item_name === '是否停用表具'){
355
- if (item.f_item_value == '是'){
356
- data.f_table_state = '停用'
357
- data.f_complete = '已完成'
358
- data.f_state = '已检'
359
- }
360
- }
361
- }
362
- if (this.steps[this.current] == '输入检定结果'){
363
- if (item.f_item_name === '是否经过维修' ){
364
- data.f_entry_status = item.f_item_value
365
- }
366
- if (item.f_item_name === '检定结果' ){
367
- data.f_week_check_result = item.f_item_value
368
- if (item.f_item_value == '不合格'){
369
- data.f_complete = '已完成'
370
- data.f_state = '已检'
371
- }
372
- }
373
- if (item.f_item_name === '检定机构' ){
374
- data.f_last_inspection_agency = item.f_item_value
375
- }
376
- }
377
- if (this.steps[this.current] == '上传报告'){
378
- if (item.f_item_name === '检定时间' ){
379
- data.f_complete_date = item.f_item_value
380
- }
381
- }
382
- })
383
-
384
-
385
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, data).then(res=>{
386
- console.log('res', res.data)
387
- this.weekCheckPaper = res.data[0]
388
- })
389
- this.$dispatch('confirm')
390
- }catch (e) {
391
- this.$showMessage(e)
392
- }
393
- },
394
- async getWeekUserInfo () {
395
- const http = new HttpResetClass()
396
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/sql/getWeekUserinfo`, {
397
- condition:` uf.f_userinfo_id = '${this.weekdata.f_userinfo_id}'`
398
- }).then(res=>{
399
- this.weekUserInfo = res.data[0]
400
- })
401
- },
402
- }
403
- }
404
- </script>
405
-
406
- <style scoped>
407
- .step-header {
408
- background: #ffffff;
409
- padding: 15px 20px;
410
- }
411
-
412
- .step-track {
413
- display: flex;
414
- justify-content: flex-start;
415
- padding: 0 10px;
416
- font-size: 14px;
417
- color: #666;
418
- overflow-x: auto; /* 启用横向滚动 */
419
- /* 隐藏滚动条 */
420
- scrollbar-width: none; /* Firefox */
421
- -ms-overflow-style: none; /* IE/Edge */
422
- }
423
-
424
- /* 隐藏WebKit浏览器的滚动条 */
425
- .step-track::-webkit-scrollbar {
426
- display: none;
427
- }
428
-
429
- .step-item {
430
- position: relative;
431
- display: flex;
432
- flex-direction: column;
433
- align-items: end;
434
- }
435
-
436
- .step-number {
437
- width: 30px;
438
- height: 30px;
439
- border-radius: 50%;
440
- background: #e0e0e0;
441
- color: #666;
442
- line-height: 30px;
443
- text-align: center;
444
- font-weight: bold;
445
- font-size: 14px;
446
- transition: all 0.3s ease;
447
- }
448
-
449
- .step-number.active {
450
- background: #499EDF;
451
- color: white;
452
- }
453
-
454
- .step-title {
455
- margin-top: 8px;
456
- font-size: 14px;
457
- color: #666;
458
- font-weight: 500;
459
- width: 3em;
460
- text-align: center;
461
- word-break: break-all;
462
- line-height: 1.4;
463
- }
464
-
465
- /* 分隔线 */
466
- .step-divider {
467
- width: 80px;
468
- height: 2px;
469
- background: #e0e0e0;
470
- margin: 0 16px;
471
- transition: all 0.3s ease;
472
- }
473
-
474
- .step-divider.active {
475
- background: #499EDF;
476
- }
477
- </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
+ <week-check-user-info :userinfo="weekUserInfo"></week-check-user-info>
20
+ <check-rsult-simple :itemname="itemname" :items="weekCheck" ></check-rsult-simple>
21
+ <div class="row text-center" style="margin-top: 20px;">
22
+ <button v-if="showbutton" type="button" class="col-sm-3 btn btn-primary" @click="uploadCheckPaper">提交</button>
23
+ </div>
24
+ </div>
25
+ </template>
26
+
27
+ <script>
28
+ import {HttpResetClass, PagedList} from 'vue-client'
29
+ import Vue from 'vue'
30
+ import * as Util from '../../Util'
31
+ import WeekCheckUserInfo from './WeekCheckUserInfo'
32
+
33
+ export default {
34
+ title: '周检待办详情',
35
+ props: {
36
+ weekdata:{
37
+ type: Object,
38
+ default () {
39
+ return {}
40
+ }
41
+ }
42
+ },
43
+ components: {
44
+ WeekCheckUserInfo
45
+ },
46
+ data () {
47
+ return {
48
+ weekConfig:{},
49
+ weekCheck: [],
50
+ steps: [],
51
+ current: null,
52
+ showbutton:false,
53
+ weekCheckPaper:{},
54
+ itemname:'',
55
+ weekUserInfo:{}
56
+ }
57
+ },
58
+ ready () {
59
+ if (!Util.isEmpty(this.weekdata.paper_id)){
60
+ const http = new HttpResetClass()
61
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckPaperById`, {id: this.weekdata.paper_id }).then(res=>{
62
+ console.log('res', res.data)
63
+ this.weekCheckPaper = res.data
64
+ if (this.weekdata.f_complete == '已完成'){
65
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
66
+ this.steps = []
67
+ json.forEach((row) => {
68
+ this.steps.push(row.itemname)
69
+ })
70
+ this.current = json.length
71
+ this.weekCheckChange(json[json.length-1].itemname,json.length-1)
72
+ }else {
73
+ this.getweekconfig(this.weekdata.safechecktype_id)
74
+ }
75
+ })
76
+ }else {
77
+ this.getweekconfig(this.weekdata.safechecktype_id)
78
+ }
79
+ this.getWeekUserInfo()
80
+ },
81
+ computed: {
82
+ },
83
+ methods:{
84
+ // 获取周检配置
85
+ getweekconfig(row){
86
+ const http = new HttpResetClass()
87
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckTypeById`, {id: row }).then(res=>{
88
+ if (res.data && res.data.length > 0 ){
89
+ this.weekConfig = res.data[0]
90
+ const json = JSON.parse(this.weekConfig.f_json)
91
+ if (json && json.length > 0){
92
+ this.steps = []
93
+ json.forEach((row1,index) => {
94
+ if (Util.isEmpty(this.weekdata.f_complete)){
95
+ this.current = 0
96
+ }else if (row1.itemname === this.weekdata.f_complete){
97
+ this.current = index+1
98
+ }
99
+ this.steps.push(row1.itemname)
100
+ })
101
+ if (Util.isEmpty(this.weekdata.f_complete)){
102
+ this.weekCheckChange(json[0].itemname,this.current)
103
+ }else {
104
+ if (this.weekdata.f_complete != '已完成'){
105
+ this.weekCheckChange(this.steps[this.current],this.current)
106
+ }
107
+ }
108
+ }
109
+ }
110
+ })
111
+ },
112
+ // 获取当前环节周检配置
113
+ weekCheckChange(row,id){
114
+ if (this.current < id) {
115
+ this.weekCheck = []
116
+ this.showbutton = false
117
+ this.$showMessage('请先完成当前环节!')
118
+ }
119
+ else if (this.current == id){
120
+ this.showbutton = true
121
+ const json = JSON.parse(this.weekConfig.f_json)
122
+ this.weekCheck = []
123
+ if (json && json.length > 0){
124
+ if (Util.isEmpty(row)){
125
+ json[0].items.forEach(row1 => {
126
+ this.weekCheck.push({
127
+ f_item_name: row1.itemname,
128
+ f_item_value: row1.f_item_value || '',
129
+ options:row1.options,
130
+ type: row1.type,
131
+ isshow:true,
132
+ images: row1.images|| [],
133
+ multiple: row1.multiple?row1.multiple:false,
134
+ readonly:false,
135
+ state:'未检'
136
+ })
137
+ })
138
+ }
139
+ else {
140
+ for (let i = 0; i < json.length; i++){
141
+ if (json[i].itemname === row){
142
+ json[i].items.forEach(row1 => {
143
+ this.weekCheck.push({
144
+ f_item_name: row1.itemname,
145
+ f_item_value: row1.f_item_value || '',
146
+ options:row1.options,
147
+ type: row1.type,
148
+ isshow:true,
149
+ images: row1.images|| [],
150
+ multiple: row1.multiple?row1.multiple:false,
151
+ readonly:false,
152
+ state:'未检'
153
+ })
154
+ })
155
+ }
156
+ }
157
+ }
158
+ }
159
+ this.watchitem()
160
+ this.setFormData()
161
+ }
162
+ else if (this.current > id){
163
+ this.showbutton = false
164
+ this.weekCheck = []
165
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
166
+ json.forEach(res=>{
167
+ if (res.itemname === row){
168
+ res.items.forEach(row1 => {
169
+ this.weekCheck.push({
170
+ f_item_name: row1.f_item_name,
171
+ f_item_value: row1.f_item_value,
172
+ options:row1.options,
173
+ type: row1.type,
174
+ isshow:row1.isshow,
175
+ images: row1.images,
176
+ multiple: row1.multiple?row1.multiple:false,
177
+ readonly:true,
178
+ state:'已检'
179
+ })
180
+ })
181
+ }
182
+ })
183
+ }
184
+ else {
185
+ this.showbutton = false
186
+ const json = JSON.parse(this.weekCheckPaper.f_safe_content)
187
+ this.weekCheck = []
188
+ json[0].items.forEach(row => {
189
+ this.weekCheck.push({
190
+ f_item_name: row.f_item_name,
191
+ f_item_value: row.f_item_value ,
192
+ options:row.options,
193
+ type: row.type,
194
+ isshow:row.isshow ,
195
+ images: row.images,
196
+ multiple: row.multiple?row.multiple:false,
197
+ readonly:true,
198
+ state:'已检'
199
+ })
200
+ })
201
+ }
202
+ this.itemname = row
203
+ },
204
+ // 表单数据
205
+ setFormData(){
206
+ this.weekCheck.forEach(item=>{
207
+ if (item.f_item_name === '表号' && !Util.isEmpty(this.weekdata.f_meternumber)){
208
+ item.f_item_value = this.weekdata.f_meternumber
209
+ item.readonly = true
210
+ }
211
+ if (item.f_item_name === '气表品牌' && !Util.isEmpty(this.weekdata.f_meter_brand)){
212
+ item.f_item_value = this.weekdata.f_meter_brand
213
+ item.readonly = true
214
+ }
215
+ if (item.f_item_name === '气表型号' && !Util.isEmpty(this.weekdata.f_meter_style)){
216
+ item.f_item_value = this.weekdata.f_meter_style
217
+ item.readonly = true
218
+ }
219
+ if (item.f_item_name === '表具状态' && !Util.isEmpty(this.weekdata.f_table_state)){
220
+ item.f_item_value = this.weekdata.f_table_state
221
+ item.readonly = true
222
+ }
223
+ if (item.f_item_name === '操作人'){
224
+ item.f_item_value = Vue.user.name
225
+ item.isshow = false
226
+ item.readonly = true
227
+ }
228
+ if (item.f_item_name === '完成时间') {
229
+ item.f_item_value = Util.toStandardTimeString()
230
+ item.isshow = false
231
+ item.readonly = true
232
+ }
233
+ })
234
+ },
235
+ // 监听表单
236
+ watchitem(){
237
+ for (let item in this.weekCheck) {
238
+ if (this.weekCheck[item].f_item_name === "是否停用表具") {
239
+ this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
240
+ if (val === '是') {
241
+ this.weekCheck.forEach((item) => {
242
+ if (item.f_item_name !== '操作人' && item.f_item_name !== '完成时间') {
243
+ if (item.f_item_name === '是否停用表具' || item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
244
+ item.isshow = true
245
+ } else {
246
+ item.isshow = false
247
+ }
248
+ }
249
+ })
250
+ }
251
+ if (val === '否') {
252
+ this.weekCheck.forEach((item) => {
253
+ if (item.f_item_name !== '操作人' && item.f_item_name !== '完成时间') {
254
+ if (item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
255
+ item.f_item_value = ''
256
+ item.images = []
257
+ item.isshow = false
258
+ } else {
259
+ item.isshow = true
260
+ }
261
+ }
262
+ })
263
+ }
264
+ })
265
+ }
266
+ }
267
+ },
268
+ async commitCallBack(jo) {
269
+ if (jo.state != 'ok'){
270
+ this.$showMessage('上传图片失败')
271
+ throw '上传图片失败'
272
+ }
273
+ },
274
+ async uploadCheckPaperPics () {
275
+ let tableImages = []
276
+ this.weekCheck.forEach((item) => {
277
+ if (this.steps[this.current] == '上传报告'){
278
+ if (item.f_item_name === '检定时间' ){
279
+ if (item.f_item_value && item.f_item_value > Util.toStandardTimeString()){
280
+ throw '只能选择当前或者之前的时间!'
281
+ }
282
+ }
283
+ }
284
+ if (item.f_item_name === "操作人") {
285
+ item.isshow = true
286
+ }
287
+ if (item.f_item_name === "完成时间") {
288
+ item.isshow = true
289
+ }
290
+ if (item.type == 'picture'){
291
+ item.images.forEach(image=>{
292
+ image.filename = image.f_path.substring(image.f_path.lastIndexOf('/')+1)
293
+ tableImages.push({
294
+ path: image.f_path,
295
+ })
296
+ })
297
+ }
298
+ })
299
+ HostApp.__this__ = this
300
+ HostApp.logicWithHint({
301
+ 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
302
+ 'data': {tableImages:tableImages}, 'backresult': 1
303
+ })
304
+ },
305
+ async uploadCheckPaper () {
306
+ try {
307
+ await this.uploadCheckPaperPics()
308
+ const http = new HttpResetClass()
309
+ let json = []
310
+ if (this.weekCheckPaper && !Util.isEmpty(this.weekCheckPaper.f_safe_content)){
311
+ json = JSON.parse(this.weekCheckPaper.f_safe_content)
312
+ }
313
+ JSON.parse(this.weekConfig.f_json).forEach(res=>{
314
+ if (res.itemname === this.steps[this.current]){
315
+ res.items = this.weekCheck
316
+ json.push(res)
317
+ }
318
+ })
319
+ let data = {
320
+ f_userinfo_id: this.weekdata.f_userinfo_id,
321
+ f_user_name: this.weekdata.f_user_name,
322
+ f_user_phone: this.weekdata.f_user_phone,
323
+ f_meter_brand: this.weekdata.f_meter_brand,
324
+ f_meter_style: this.weekdata.f_meter_style,
325
+ f_meternumber: this.weekdata.f_meternumber,
326
+ f_address: this.weekdata.f_address,
327
+ f_checker_id: Vue.user.id,
328
+ f_checker_name: Vue.user.name,
329
+ f_safe_type: '周检',
330
+ f_week_check_result: '合格',
331
+ f_table_state: this.weekdata.f_table_state,
332
+ f_safe_content: json,
333
+ f_safecheck_type_id: this.weekdata.safechecktype_id,
334
+ f_check_item_id: this.weekdata.id,
335
+ f_check_plan_id: this.weekdata.f_plan_id,
336
+ f_upload_date: Util.toStandardTimeString(),
337
+ f_filiale_id: Vue.user.orgid,
338
+ f_filiale: Vue.user.orgs,
339
+ }
340
+ if (!Util.isEmpty(this.weekdata.paper_id)){
341
+ data.id = this.weekdata.paper_id
342
+ }
343
+ if (this.steps[this.current] == '上传报告'){
344
+ data.f_current_complete = '已完成'
345
+ data.f_complete = '已完成'
346
+ data.f_state = '已检'
347
+ }else {
348
+ data.f_current_complete = this.steps[this.current + 1]
349
+ data.f_complete = this.steps[this.current]
350
+ data.f_state = '未检'
351
+ }
352
+ this.weekCheck.forEach(item => {
353
+ if (this.steps[this.current] == '下表'){
354
+ if (item.f_item_name === '是否停用表具'){
355
+ if (item.f_item_value == '是'){
356
+ data.f_table_state = '停用'
357
+ data.f_complete = '已完成'
358
+ data.f_state = '已检'
359
+ }
360
+ }
361
+ }
362
+ if (this.steps[this.current] == '输入检定结果'){
363
+ if (item.f_item_name === '是否经过维修' ){
364
+ data.f_entry_status = item.f_item_value
365
+ }
366
+ if (item.f_item_name === '检定结果' ){
367
+ data.f_week_check_result = item.f_item_value
368
+ if (item.f_item_value == '不合格'){
369
+ data.f_complete = '已完成'
370
+ data.f_state = '已检'
371
+ }
372
+ }
373
+ if (item.f_item_name === '检定机构' ){
374
+ data.f_last_inspection_agency = item.f_item_value
375
+ }
376
+ }
377
+ if (this.steps[this.current] == '上传报告'){
378
+ if (item.f_item_name === '检定时间' ){
379
+ data.f_complete_date = item.f_item_value
380
+ }
381
+ }
382
+ })
383
+
384
+
385
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, data).then(res=>{
386
+ console.log('res', res.data)
387
+ this.weekCheckPaper = res.data[0]
388
+ })
389
+ this.$dispatch('confirm')
390
+ }catch (e) {
391
+ this.$showMessage(e)
392
+ }
393
+ },
394
+ async getWeekUserInfo () {
395
+ const http = new HttpResetClass()
396
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/sql/getWeekUserinfo`, {
397
+ condition:` uf.f_userinfo_id = '${this.weekdata.f_userinfo_id}'`
398
+ }).then(res=>{
399
+ this.weekUserInfo = res.data[0]
400
+ })
401
+ },
402
+ }
403
+ }
404
+ </script>
405
+
406
+ <style scoped>
407
+ .step-header {
408
+ background: #ffffff;
409
+ padding: 15px 20px;
410
+ }
411
+
412
+ .step-track {
413
+ display: flex;
414
+ justify-content: flex-start;
415
+ padding: 0 10px;
416
+ font-size: 14px;
417
+ color: #666;
418
+ overflow-x: auto; /* 启用横向滚动 */
419
+ /* 隐藏滚动条 */
420
+ scrollbar-width: none; /* Firefox */
421
+ -ms-overflow-style: none; /* IE/Edge */
422
+ }
423
+
424
+ /* 隐藏WebKit浏览器的滚动条 */
425
+ .step-track::-webkit-scrollbar {
426
+ display: none;
427
+ }
428
+
429
+ .step-item {
430
+ position: relative;
431
+ display: flex;
432
+ flex-direction: column;
433
+ align-items: end;
434
+ }
435
+
436
+ .step-number {
437
+ width: 30px;
438
+ height: 30px;
439
+ border-radius: 50%;
440
+ background: #e0e0e0;
441
+ color: #666;
442
+ line-height: 30px;
443
+ text-align: center;
444
+ font-weight: bold;
445
+ font-size: 14px;
446
+ transition: all 0.3s ease;
447
+ }
448
+
449
+ .step-number.active {
450
+ background: #499EDF;
451
+ color: white;
452
+ }
453
+
454
+ .step-title {
455
+ margin-top: 8px;
456
+ font-size: 14px;
457
+ color: #666;
458
+ font-weight: 500;
459
+ width: 3em;
460
+ text-align: center;
461
+ word-break: break-all;
462
+ line-height: 1.4;
463
+ }
464
+
465
+ /* 分隔线 */
466
+ .step-divider {
467
+ width: 80px;
468
+ height: 2px;
469
+ background: #e0e0e0;
470
+ margin: 0 16px;
471
+ transition: all 0.3s ease;
472
+ }
473
+
474
+ .step-divider.active {
475
+ background: #499EDF;
476
+ }
477
+ </style>