safecheck-client 4.0.2-73 → 4.0.2-74

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 (26) hide show
  1. package/package.json +132 -132
  2. package/src/components/android/PhoneUpUserinfo.vue +1249 -1249
  3. package/src/components/android/SafeRightTree.vue +218 -218
  4. package/src/components/android/SafecheckDevices.vue +1340 -1340
  5. package/src/components/android/week/CheckResultSimple.vue +258 -258
  6. package/src/components/android/week/FirstWeekCheck.vue +303 -301
  7. package/src/components/android/week/StepHeaderBar.vue +477 -485
  8. package/src/components/android/week/WeekCheck.vue +267 -267
  9. package/src/components/android/week/WeekCheckPaper.vue +274 -274
  10. package/src/components/android/week/WeekCheckPlan.vue +145 -145
  11. package/src/components/android/week/WeekCheckUserInfo.vue +99 -99
  12. package/src/components/pc/CheckBookArea.vue +146 -146
  13. package/src/components/pc/CheckBookCompany.vue +144 -144
  14. package/src/components/pc/CheckBookDetails.vue +161 -161
  15. package/src/components/pc/CheckBookEntry.vue +60 -60
  16. package/src/components/pc/CheckBookSearchArea.vue +560 -560
  17. package/src/components/pc/CheckBookSearchUnit.vue +229 -229
  18. package/src/components/pc/CheckBookSearchUserList.vue +674 -674
  19. package/src/filiale/jinhong/android/AndroidDefectDeal.vue +748 -748
  20. package/src/filiale/jinhong/android/AndroidNotifiedDeal.vue +569 -569
  21. package/src/filiale/jinhong/pc/checkUserList.vue +806 -806
  22. package/src/filiale/meihekou/android/CheckPlanList.vue +198 -198
  23. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -190
  24. package/src/filiale/meihekou/android/SafecheckDevices.vue +1343 -1343
  25. package/src/filiale/meihekou/android.js +22 -22
  26. package/build/reports/problems/problems-report.html +0 -663
@@ -1,485 +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((row,index) => {
94
- if (Util.isEmpty(this.weekdata.f_complete)){
95
- this.current = 0
96
- }else if (row.itemname === this.weekdata.f_complete){
97
- this.current = index+1
98
- }
99
- this.steps.push(row.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(row => {
126
- this.weekCheck.push({
127
- f_item_name: row.itemname,
128
- f_item_value: row.f_item_value || '',
129
- options:row.options,
130
- type: row.type,
131
- isshow:true,
132
- images: row.images|| [],
133
- multiple: row.multiple?row.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(row => {
143
- this.weekCheck.push({
144
- f_item_name: row.itemname,
145
- f_item_value: row.f_item_value || '',
146
- options:row.options,
147
- type: row.type,
148
- isshow:true,
149
- images: row.images|| [],
150
- multiple: row.multiple?row.multiple:false,
151
- readonly:false,
152
- state:'未检'
153
- })
154
- })
155
- }
156
- }
157
- }
158
- }
159
- this.setFormData()
160
- }
161
- else if (this.current > id){
162
- this.showbutton = false
163
- this.weekCheck = []
164
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
165
- json.forEach(res=>{
166
- if (res.itemname === row){
167
- res.items.forEach(row => {
168
- this.weekCheck.push({
169
- f_item_name: row.f_item_name,
170
- f_item_value: row.f_item_value || '',
171
- options:row.options,
172
- type: row.type,
173
- isshow:true,
174
- images: row.images|| [],
175
- multiple: row.multiple?row.multiple:false,
176
- readonly:true,
177
- state:'已检'
178
- })
179
- })
180
- }
181
- })
182
- }
183
- else {
184
- this.showbutton = false
185
- const json = JSON.parse(this.weekCheckPaper.f_safe_content)
186
- this.weekCheck = []
187
- json[0].items.forEach(row => {
188
- this.weekCheck.push({
189
- f_item_name: row.f_item_name,
190
- f_item_value: row.f_item_value || '',
191
- options:row.options,
192
- type: row.type,
193
- isshow:true,
194
- images: row.images|| [],
195
- multiple: row.multiple?row.multiple:false,
196
- readonly:true,
197
- state:'已检'
198
- })
199
- })
200
- }
201
- this.watchitem()
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.readonly = true
226
- }
227
- if (item.f_item_name === '完成时间') {
228
- item.f_item_value = Util.toStandardTimeString()
229
- item.readonly = true
230
- }
231
- })
232
- },
233
- // 监听表单
234
- watchitem(){
235
- for (let item in this.weekCheck) {
236
- if (this.weekCheck[item].f_item_name === "是否停用表具") {
237
- this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
238
- if (val === '是') {
239
- this.weekCheck.forEach((item) => {
240
- if (item.f_item_name === '是否停用表具' || item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
241
- item.isshow = true
242
- } else {
243
- item.isshow = false
244
- }
245
- })
246
- }
247
- if (val === '否') {
248
- this.weekCheck.forEach((item) => {
249
- if (item.f_item_name === '停用备注' || item.f_item_name === '停用图片') {
250
- item.f_item_value = ''
251
- item.images = []
252
- item.isshow = false
253
- } else {
254
- item.isshow = true
255
- }
256
- })
257
- }
258
- })
259
- }
260
- if (this.weekCheck[item].f_item_name === "检定结果") {
261
- this.$watch('weekCheck[' + item + '].f_item_value', function (val) {
262
- if (val === '不合格') {
263
- this.weekCheck.forEach((item) => {
264
- if (item.f_item_name === '检定结果' || item.f_item_name === '处理方式' ) {
265
- item.isshow = true
266
- } else {
267
- item.f_item_value = ''
268
- item.isshow = false
269
- }
270
- })
271
- }
272
- if (val === '合格') {
273
- this.weekCheck.forEach((item) => {
274
- if (item.f_item_name === '处理方式' ) {
275
- item.f_item_value = ''
276
- item.isshow = false
277
- } else {
278
- item.isshow = true
279
- }
280
- })
281
- }
282
- })
283
- }
284
- }
285
- },
286
- async commitCallBack(jo) {
287
- if (jo.state != 'ok'){
288
- this.$showMessage('上传图片失败')
289
- throw '上传图片失败'
290
- }
291
- },
292
- async uploadCheckPaperPics () {
293
- let tableImages = []
294
- this.weekCheck.forEach((item) => {
295
- if (item.type == 'picture'){
296
- item.images.forEach(image=>{
297
- image.filename = image.f_path.substring(image.f_path.lastIndexOf('/')+1)
298
- tableImages.push({
299
- path: image.f_path,
300
- })
301
- })
302
- }
303
- })
304
- HostApp.__this__ = this
305
- HostApp.logicWithHint({
306
- 'logic': 'imagesUploadAndroid', 'callback': 'javascript: HostApp.__this__.commitCallBack()',
307
- 'data': {tableImages:tableImages}, 'backresult': 1
308
- })
309
- },
310
- async uploadCheckPaper () {
311
- await this.uploadCheckPaperPics()
312
- const http = new HttpResetClass()
313
- let json = []
314
- if (this.weekCheckPaper && !Util.isEmpty(this.weekCheckPaper.f_safe_content)){
315
- json = JSON.parse(this.weekCheckPaper.f_safe_content)
316
- }
317
- JSON.parse(this.weekConfig.f_json).forEach(res=>{
318
- if (res.itemname === this.steps[this.current]){
319
- res.items = this.weekCheck
320
- json.push(res)
321
- }
322
- })
323
- let data = {
324
- f_userinfo_id: this.weekdata.f_userinfo_id,
325
- f_user_name: this.weekdata.f_user_name,
326
- f_user_phone: this.weekdata.f_user_phone,
327
- f_meter_brand: this.weekdata.f_meter_brand,
328
- f_meter_style: this.weekdata.f_meter_style,
329
- f_meternumber: this.weekdata.f_meternumber,
330
- f_address: this.weekdata.f_address,
331
- f_checker_id: Vue.user.id,
332
- f_checker_name: Vue.user.name,
333
- f_safe_type: '周检',
334
- f_entry_status :'正常',
335
- f_week_check_result: '合格',
336
- f_table_state: this.weekdata.f_table_state,
337
- f_safe_content: json,
338
- f_safecheck_type_id: this.weekdata.safechecktype_id,
339
- f_check_item_id: this.weekdata.id,
340
- f_check_plan_id: this.weekdata.f_plan_id,
341
- f_upload_date: Util.toStandardTimeString(),
342
- f_filiale_id: Vue.user.orgid,
343
- f_filiale: Vue.user.orgs,
344
- }
345
- if (!Util.isEmpty(this.weekdata.paper_id)){
346
- data.id = this.weekdata.paper_id
347
- }
348
- if (this.steps[this.current] == '上传报告'){
349
- data.f_current_complete = '已完成'
350
- data.f_complete = '已完成'
351
- data.f_state = '已检'
352
- data.f_entry_status = '正常'
353
- }else {
354
- data.f_current_complete = this.steps[this.current + 1]
355
- data.f_complete = this.steps[this.current]
356
- data.f_state = '未检'
357
- }
358
- this.weekCheck.forEach(item => {
359
- if (this.steps[this.current] == '下表'){
360
- if (item.f_item_name === '是否停用表具'){
361
- if (item.f_item_value == '是'){
362
- data.f_table_state = '停用'
363
- data.f_complete = '已完成'
364
- data.f_state = '已检'
365
- }
366
- }
367
- }
368
- if (this.steps[this.current] == '输入检定结果'){
369
- if (item.f_item_name === '处理方式' ){
370
- if (!Util.isEmpty(item.f_item_value)){
371
- data.f_entry_status = item.f_item_value
372
- data.f_complete = '已完成'
373
- data.f_state = '已检'
374
- }
375
- }
376
- if (item.f_item_name === '检定结果' ){
377
- data.f_week_check_result = item.f_item_value
378
- }
379
- if (item.f_item_name === '检定机构' ){
380
- data.f_last_inspection_agency = item.f_item_value
381
- }
382
- }
383
- if (this.steps[this.current] == '上传报告'){
384
- if (item.f_item_name === '检定时间' ){
385
- if (item.f_item_value && item.f_item_value > Util.toStandardTimeString()){
386
- this.$showMessage('只能选择当前或者之前的时间!')
387
- throw '只能选择当前或者之前的时间!'
388
- return
389
- }
390
- data.f_complete_date = item.f_item_value
391
- }
392
- }
393
- })
394
-
395
-
396
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, data).then(res=>{
397
- console.log('res', res.data)
398
- this.weekCheckPaper = res.data[0]
399
- })
400
- this.$dispatch('confirm')
401
- },
402
- async getWeekUserInfo () {
403
- const http = new HttpResetClass()
404
- http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/sql/getWeekUserinfo`, {
405
- condition:` uf.f_userinfo_id = '${this.weekdata.f_userinfo_id}'`
406
- }).then(res=>{
407
- this.weekUserInfo = res.data[0]
408
- })
409
- },
410
- }
411
- }
412
- </script>
413
-
414
- <style scoped>
415
- .step-header {
416
- background: #ffffff;
417
- padding: 15px 20px;
418
- }
419
-
420
- .step-track {
421
- display: flex;
422
- justify-content: flex-start;
423
- padding: 0 10px;
424
- font-size: 14px;
425
- color: #666;
426
- overflow-x: auto; /* 启用横向滚动 */
427
- /* 隐藏滚动条 */
428
- scrollbar-width: none; /* Firefox */
429
- -ms-overflow-style: none; /* IE/Edge */
430
- }
431
-
432
- /* 隐藏WebKit浏览器的滚动条 */
433
- .step-track::-webkit-scrollbar {
434
- display: none;
435
- }
436
-
437
- .step-item {
438
- position: relative;
439
- display: flex;
440
- flex-direction: column;
441
- align-items: end;
442
- }
443
-
444
- .step-number {
445
- width: 30px;
446
- height: 30px;
447
- border-radius: 50%;
448
- background: #e0e0e0;
449
- color: #666;
450
- line-height: 30px;
451
- text-align: center;
452
- font-weight: bold;
453
- font-size: 14px;
454
- transition: all 0.3s ease;
455
- }
456
-
457
- .step-number.active {
458
- background: #499EDF;
459
- color: white;
460
- }
461
-
462
- .step-title {
463
- margin-top: 8px;
464
- font-size: 14px;
465
- color: #666;
466
- font-weight: 500;
467
- width: 3em;
468
- text-align: center;
469
- word-break: break-all;
470
- line-height: 1.4;
471
- }
472
-
473
- /* 分隔线 */
474
- .step-divider {
475
- width: 80px;
476
- height: 2px;
477
- background: #e0e0e0;
478
- margin: 0 16px;
479
- transition: all 0.3s ease;
480
- }
481
-
482
- .step-divider.active {
483
- background: #499EDF;
484
- }
485
- </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>