safecheck-client 4.0.2-75 → 4.0.2-76

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 (29) hide show
  1. package/package.json +1 -1
  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 -303
  7. package/src/components/android/week/StepHeaderBar.vue +477 -477
  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/meihekou/android/CheckPlanList.vue +198 -198
  20. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -190
  21. package/src/filiale/meihekou/android/SafecheckDevices.vue +1343 -1343
  22. package/src/filiale/meihekou/android.js +22 -22
  23. package/src/filiale/yunchengminsheng/android/SafecheckOrderV.vue +2 -2
  24. package/src/filiale/yunchengminsheng/android/SafecheckUserInfo.vue +4 -0
  25. package/src/safecheck-android.js +330 -332
  26. package/src/assets/marker-default.png +0 -0
  27. package/src/assets/myLocationIcon.png +0 -0
  28. package/src/components/android/AppMapLocation.vue +0 -829
  29. package/src/components/android/AppMapPaper.vue +0 -83
@@ -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>