safecheck-client 4.0.1-8 → 4.0.1-80

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 (82) hide show
  1. package/.trae/.ignore +0 -0
  2. package/.vscode/settings.json +3 -0
  3. package/package.json +5 -5
  4. package/src/assets//350/255/246/345/221/212 (3).png +0 -0
  5. package/src/assets//350/255/246/345/221/212 (4).png +0 -0
  6. package/src/assets//350/255/246/345/221/212 (5).png +0 -0
  7. package/src/components/NewDefectList/DefectListNew.vue +22 -3
  8. package/src/components/Util/RightTreeSafeDep.vue +12 -0
  9. package/src/components/android/AndroidDefectDeal.vue +356 -323
  10. package/src/components/android/AndroidDefectDetails.vue +3 -3
  11. package/src/components/android/AppInstallationMaterial.vue +865 -0
  12. package/src/components/android/DailyworkloadQuery.vue +2 -1
  13. package/src/components/android/NewCheckpaperAndroid.vue +22 -48
  14. package/src/components/android/SafecheckOrderV.vue +6 -0
  15. package/src/components/android/SwitchValve.vue +1 -1
  16. package/src/components/checkplan/CheckDetail.vue +1 -1
  17. package/src/components/map/SecurityCheckCoordinates.vue +361 -0
  18. package/src/components/paper/PaperList.vue +5 -0
  19. package/src/components/pc/DefectDeal.vue +2 -1
  20. package/src/components/pc/DefectMaterialLook.vue +98 -0
  21. package/src/components/pc/PaperDefectMain.vue +26 -1
  22. package/src/components/pc/RoleSelectorDep.vue +9 -2
  23. package/src/components/planmanage/PlanManage.vue +1 -0
  24. package/src/components/querycheckpaper/CheckPaperList.vue +6 -4
  25. package/src/components/querycheckpaper/CheckPaperSearchUser.vue +30 -4
  26. package/src/components/querycheckpaper/CheckSearchUser.vue +6 -1
  27. package/src/filiale/jinhong/android/CurrentCreate.vue +66 -22
  28. package/src/filiale/jinhong/pc/CheckBookList.vue +12 -7
  29. package/src/filiale/jinhong/pc/DefectPaperNew.vue +10 -10
  30. package/src/filiale/jinhong/pc/PaperList.vue +56 -47
  31. package/src/filiale/jinhong/pc/PlanManage.vue +2 -0
  32. package/src/filiale/jinhong/pc/checkPlanList.vue +2 -0
  33. package/src/filiale/jinhong/pc/checkUserList.vue +766 -742
  34. package/src/filiale/libo/android/PaperFeedback.vue +1579 -0
  35. package/src/filiale/libo/android/PhoneUpUserinfo.vue +1249 -0
  36. package/src/filiale/libo/android/SafecheckOrderV.vue +2302 -0
  37. package/src/filiale/libo/android.js +14 -0
  38. package/src/filiale/libo/pc/NewCheckpaper.vue +1987 -0
  39. package/src/filiale/libo/pc.js +12 -0
  40. package/src/filiale/meihekou/android/CurrentCreate.vue +1 -1
  41. package/src/filiale/meihekou/android/MeterReading.vue +9 -5
  42. package/src/filiale/meihekou/android/PhoneUpUserinfo.vue +3 -2
  43. package/src/filiale/meihekou/android/SafecheckDevices.vue +5 -5
  44. package/src/filiale/meihekou/android/SafecheckOrderV.vue +2446 -2427
  45. package/src/filiale/meihekou/pc/NewCheckpaper.vue +2 -2
  46. package/src/filiale/meihekou/pc/NewCheckpaperNew.vue +2050 -0
  47. package/src/filiale/meihekou/pc/PaperList.vue +1205 -0
  48. package/src/filiale/meihekou/pc.js +2 -0
  49. package/src/filiale/minsheng/android/SwitchValve.vue +1 -1
  50. package/src/filiale/qianneng/android/SwitchValve.vue +1 -1
  51. package/src/filiale/qingjian/pc/checkUserList.vue +35 -0
  52. package/src/filiale/taiyuan/android/AddPlanItem.vue +456 -0
  53. package/src/filiale/taiyuan/android/AreaPlan.vue +565 -0
  54. package/src/filiale/taiyuan/android/CurrentCreate.vue +1016 -0
  55. package/src/filiale/taiyuan/android/PhoneUpUserinfo.vue +1253 -0
  56. package/src/filiale/taiyuan/android/SafecheckOrderV.vue +2347 -0
  57. package/src/filiale/taiyuan/android/SafecheckUserInfo.vue +784 -0
  58. package/src/filiale/taiyuan/android.js +15 -0
  59. package/src/filiale/taiyuan/pc/DefectDeal.vue +1034 -0
  60. package/src/filiale/taiyuan/pc/NewCheckpaper.vue +1976 -0
  61. package/src/filiale/taiyuan/pc/PaperList.vue +795 -0
  62. package/src/filiale/taiyuan/pc/PlanManage.vue +891 -0
  63. package/src/filiale/taiyuan/pc/checkUserList.vue +798 -0
  64. package/src/filiale/taiyuan/pc.js +16 -0
  65. package/src/filiale/tianke/android/CurrentCreate.vue +3 -3
  66. package/src/filiale/tongchuan/android/SwitchValve.vue +1 -1
  67. package/src/filiale/xinkang/android/AddPlanItem.vue +244 -196
  68. package/src/filiale/xinkang/android/AndroidDefectDeal.vue +1 -0
  69. package/src/filiale/xinkang/android/SafecheckDevices.vue +52 -22
  70. package/src/filiale/xinkang/android/SafecheckOrderV.vue +24 -80
  71. package/src/filiale/xinkang/android/SafecheckUserInfo.vue +1 -1
  72. package/src/filiale/xinkang/pc/CheckSearchUser.vue +12 -12
  73. package/src/filiale/xinkang/pc/NewCheckpaper.vue +57 -72
  74. package/src/filiale/xinkang/pc/PaperList.vue +25 -10
  75. package/src/filiale/yuansheng/android/SwitchValve.vue +1 -1
  76. package/src/filiale/yunchengminsheng/android/PaperFeedback.vue +1030 -1030
  77. package/src/filiale/yunchengminsheng/android/SafecheckDevices.vue +4 -4
  78. package/src/filiale/yunchengminsheng/pc/PaperList.vue +811 -0
  79. package/src/filiale/yunchengminsheng/pc.js +1 -0
  80. package/src/main.js +33 -33
  81. package/src/safecheck-android.js +4 -0
  82. package/src/safecheck.js +6 -0
@@ -276,6 +276,7 @@ import Vue from 'vue'
276
276
  import { PagedList,HttpResetClass } from 'vue-client'
277
277
  import * as Util from '../Util'
278
278
  import co from 'co'
279
+ import {isEmpty} from "../Util";
279
280
 
280
281
  export default {
281
282
  title: '无计划安检查询',
@@ -405,7 +406,7 @@ export default {
405
406
  // this.getPlanCount()
406
407
  //let condition = `f_filialeid='${Vue.user.orgid}' and f_checker_id='${Vue.user.id}' `
407
408
  let condition = "1=1 "
408
- if (this.f_checker_id){
409
+ if (!isEmpty(this.f_checker_id)){
409
410
  condition += " and f_checker_id = '"+ this.f_checker_id + "'"
410
411
  }
411
412
  if(this.$refs.paged.$refs.cri.model.f_user_name){
@@ -53,11 +53,6 @@ div {
53
53
 
54
54
  <template>
55
55
  <div class="basic-main" style="height: 100%">
56
- <!-- <div class="page-header app-header auto" style="padding: 15px;margin-right: 10px;right: 0%;height: 7%">-->
57
- <!-- <div @click="back()">-->
58
- <!-- <img src="../../assets/back.png" style="margin: 0px"/>-->
59
- <!-- </div>-->
60
- <!-- </div>-->
61
56
  <work-busy :is-busy="loading"></work-busy>
62
57
  <div class="container-fluid" style="overflow: scroll">
63
58
  <div class="row">
@@ -387,51 +382,15 @@ import Vue from 'vue'
387
382
  import * as Util from '../../components/Util'
388
383
  import {jsonSort} from '../../utils/LdapHelper'
389
384
  import {HttpResetClass} from "vue-client";
390
-
385
+ import {isEmpty} from "../../components/Util";
391
386
  let asyncReady = async function (self) {
392
- // 获取配置信息
393
387
  try {
394
- let res = await new HttpResetClass().load('post', `${self.$androidUtil.getProxyUrl()}/api/af-safecheck/sql/safe_singleTable_OrderBy`, {
395
- data: {
396
- items: 'name,f_dir',
397
- tablename: 't_organization',
398
- condition: `id = '${self.item.f_filialeid}'`,
399
- orderitem: 'id'
400
- }
401
- })/*.then(res=>{*/
402
- //tag
403
- //tag)
404
- if (res.data.length === 0) {
405
- // self.$showMessage("该公司无组织目录,无法获取配置文件,将使用默认配置文件")
406
- return
407
- }
408
- if (!res.data[0].f_dir) {
409
- // self.$showMessage("该公司无组织目录,无法获取配置文件,请联系管理员确认")
410
- } else {
411
- //this.f_dir=res.data[0].f_dir
412
- try {
413
- let res1 = await new HttpResetClass().load('GET', `${self.$androidUtil.getProxyUrl()}/safecheck/rs/vue/DevicesConfig.json?folderName=phonevues&orgDir=${res.data[0].f_dir}`, {}, {
414
- resolveMsg: '获取居民配置项成功!',
415
- rejectMsg: '获取居民配置项出错!'
416
- })/*.then(res=>{*/
417
- //tag
418
- //this.safeConfig["民用配置项"]=Object.assign({},res.data)
419
- Vue.config.safecheck.DevicesConfig = res1.data
420
- /*})*/
421
- let res2 = await new HttpResetClass().load('GET', `${self.$androidUtil.getProxyUrl()}/safecheck/rs/vue/DevicesSetConfig.json?folderName=phonevues&orgDir=${res.data[0].f_dir}`, {}, {
422
- resolveMsg: '获取非居民配置项成功!',
423
- rejectMsg: '获取非居民配置项出错!'
424
- })/*.then(res=>{*/
425
- //tag
426
- //this.safeConfig["非民用配置项"]=Object.assign({},res.data)
427
- Vue.config.safecheck.DevicesSetConfig = res2.data
428
- /*}).then(res=> {
429
- })*/
430
-
431
- } catch (e) {
432
- // self.$showMessage("获取配置文件失败" + e)
433
- }
434
- }
388
+ let res = await new HttpResetClass().load('GET',`${self.$androidUtil.getProxyUrl()}/api/af-safecheck/vue`,null, {resolveMsg: null, rejectMsg: null})
389
+ self.delConfigKey(res.data)
390
+ Vue.config.safecheck=res.data
391
+ Vue.config.safecheck.DevicesConfig =res.data.DevicesConfig
392
+ Vue.config.safecheck.DevicesSetConfig = res.data.DevicesSetConfig
393
+ console.log('获取配置结果===', res.data)
435
394
  } catch (error) {
436
395
  // 忽略704,文件找不到异常R
437
396
  if (error.status !== 704) {
@@ -565,7 +524,22 @@ export default {
565
524
  }
566
525
  },
567
526
  methods: {
527
+ delConfigKey(obj){
528
+ // 从琉璃中获取的配置中会包含 $开头的一些额外描述新的key。为了兼容v3的代码逻辑在此函数中去掉
529
+ Object.keys(obj).forEach(key =>{
530
+ Object.keys(obj[key]).forEach(col => {
531
+ // 检查键是否以$开头
532
+ if (col.startsWith('$')) {
533
+ // 使用delete操作符删除键
534
+ delete obj[key][col];
535
+ }
536
+ })
537
+ })
538
+ },
568
539
  getimg(val){
540
+ if(isEmpty(val)){
541
+ return ''
542
+ }
569
543
  console.log(`${this.$androidUtil.getProxyUrl()}/${val}`)
570
544
 
571
545
  return `${this.$androidUtil.getProxyUrl()}/${val}`
@@ -1306,6 +1306,12 @@
1306
1306
  }else if(res.code == 309){
1307
1307
  this.$showMessage('该安检单已作废!')
1308
1308
  this.$dispatch('confirm')
1309
+ }else if(res.code == 310){
1310
+ this.$showMessage('该单已成功入户,请勿重复上传!')
1311
+ this.$dispatch('confirm')
1312
+ }else if(res.code == 311){
1313
+ this.$showMessage('该单已上传,请勿重复上传!')
1314
+ this.$dispatch('confirm')
1309
1315
  }else if(res.code == 710){
1310
1316
  this.$showMessage('上传照片失败,请检查网络是否正常!'+res.msg)
1311
1317
  this.onlySave = true
@@ -295,7 +295,7 @@ export default {
295
295
  meternumberf: this.thisOneData.f_meternumber, //表号
296
296
  contentData: {isOpen: msg=='开阀' ? 1 : 0}, // oper 为true 时为开阀 false 为关阀
297
297
  }
298
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/iot_saveInstruct`, {data: data}).then((row) => {
298
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/api/af-revenue/logic/openapi/iot_saveInstruct`, {data: data}).then((row) => {
299
299
  this.$showMessage(`${msg}指令发送成功,请等候2分钟进行查询`)
300
300
  //tag
301
301
  this.thisOneData = '';
@@ -111,7 +111,7 @@ export default {
111
111
  'check' (val) {
112
112
  let condition
113
113
  //tag
114
- condition = `tt.f_checker_name='${this.check.f_checker}' and i.f_state!='作废' and c.f_issued='是'`
114
+ condition = `c.f_checker_name='${this.check.f_checker}' and i.f_state!='作废' and c.f_issued='是'`
115
115
  if(this.checkstatus){
116
116
  condition += ` and cp.f_entry_status = '${this.checkstatus}'`
117
117
  }
@@ -0,0 +1,361 @@
1
+ <template>
2
+ <div class="flex-row">
3
+ <div class="basic-main" style="flex:7">
4
+ <div id="check_map" style="height:100%">
5
+ </div>
6
+ </div>
7
+ <div id="zzz" class="basic-main" style="flex:1;margin-left: 0px;overflow: hidden">
8
+ <div class="panel panel-info" style="margin-top:0px; height: 100%; display: flex; flex-direction: column;">
9
+ <div class="panel-heading" style="height: 50px">
10
+ <h3 class="panel-title">状态选择</h3>
11
+ </div>
12
+ <div class="panel-body">
13
+ <ul class="safe_ul_sty">
14
+ <li class="safe_li_sty"><input class="safe_checkbox_sty" v-model="mulchs.level1" @change="enableChange('level1',mulchs.level1)" type="checkbox"/><img class="safe_deimg" src="../../assets/警告 (3).png"/>拒检</li>
15
+ <li class="safe_li_sty"><input class="safe_checkbox_sty" v-model="mulchs.level3" @change="enableChange('level3',mulchs.level3)" type="checkbox"/><img class="safe_deimg" src="../../assets/警告 (4).png"/>到访不遇</li>
16
+ <li class="safe_li_sty"><input class="safe_checkbox_sty" v-model="mulchs.problems" @change="enableChange('problems',mulchs.problems)" type="checkbox"/><img class="safe_deimg" src="../../assets/警告 (5).png"/>正常</li>
17
+ </ul>
18
+ </div>
19
+ <div class="panel-heading" style="height: 50px">
20
+ <h3 class="panel-title">时间选择</h3>
21
+ </div>
22
+ <div class="panel-body">
23
+ <div class="row" style="height: 50px">
24
+ <datepicker
25
+ :value.sync="f_check_start"
26
+ placeholder='开始时间'
27
+ :disabled-days-of-week="[]"
28
+ @change="safeRefresh"
29
+ :format="'yyyy-MM-dd'"
30
+ :show-rest-button="reset"
31
+ v-model="f_check_start">
32
+ </datepicker>
33
+ </div>
34
+
35
+ <div class="row" style="height: 50px">
36
+ <datepicker
37
+ :value.sync="f_check_end"
38
+ placeholder='结束时间'
39
+ :disabled-days-of-week="[]"
40
+ @change="safeRefresh"
41
+ :format="'yyyy-MM-dd'"
42
+ :show-rest-button="reset"
43
+ v-model="f_check_end">
44
+ </datepicker>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </template>
51
+
52
+ <script>
53
+ import * as Util from '../Util'
54
+ import {HttpResetClass} from 'vue-client'
55
+
56
+ export default {
57
+ title: '用户安检定位信息',
58
+ data() {
59
+ return {
60
+ loading: false,
61
+ f_check_start:'',
62
+ f_check_end:'',
63
+ map:null,
64
+ infoWindow:null,
65
+ level1Mulchs:null,//拒检点位
66
+ level3Mulchs:null,//到访不遇点位
67
+ problemsMulchs:null,//正常点位
68
+ level1:[],
69
+ level3:[],
70
+ problems:[],
71
+ defectList:{rows:[]},
72
+ intervalNum:'',
73
+ mulchs:{//覆盖物控制显示
74
+ level1:true,
75
+ level3:true,
76
+ problems:true
77
+ },
78
+ styleObject :[
79
+ {
80
+ url: require('../../assets/警告 (3).png'), //拒检图标URL
81
+ anchor: new AMap.Pixel(14, 8), // 图标偏移位置
82
+ size: new AMap.Size(26, 28) //图标大小
83
+ },
84
+ {
85
+ url: require('../../assets/警告 (4).png'), //到访不遇图标URL
86
+ anchor: new AMap.Pixel(14, 8), // 图标偏移位置
87
+ size: new AMap.Size(26, 28) //图标大小
88
+ },
89
+ {
90
+ url: require('../../assets/警告 (5).png'), //正常图标URL
91
+ anchor: new AMap.Pixel(14, 8), // 图标偏移位置
92
+ size: new AMap.Size(26, 28) //图标大小
93
+ }
94
+ ]
95
+ }
96
+ },
97
+ async ready(){
98
+ this.initMap()
99
+ await this.getNewData(`f_longitude is not null and f_latitude is not null`)
100
+ this.assemblyData()
101
+ this.intervalNum=window.setInterval(this.safeRefresh, 240000)
102
+ },
103
+ methods: {
104
+ async getNewData (condition) {
105
+ this.loading = true
106
+ let arr = await new HttpResetClass().load('POST', `api/af-safecheck/sql/safe_singleTable_OrderBy`,
107
+ {
108
+ data: {
109
+ items:'tcp.*,tab.f_adjustable_name,tr.f_name as f_region_name ',
110
+ tablename: 't_check_paper tcp left join t_userfiles uf on uf.f_userinfo_id = tcp.f_userinfoid left join t_adjustablebox tab on tab.id=uf.f_adjustable_id left join t_region tr on tab.f_region_id=tr.id',
111
+ condition: condition,
112
+ orderitem: 'tcp.f_entry_status'
113
+ }}, {resolveMsg: null, rejectMsg: null})
114
+ if (arr.data) {
115
+ this.level1 = []
116
+ this.level3 = []
117
+ this.problems = []
118
+ arr.data.forEach((defect) => {
119
+ if (defect.f_entry_status == '拒检' ) {
120
+ this.level1.push(defect)
121
+ } else if (defect.f_entry_status == '到访不遇' ) {
122
+ this.level3.push(defect)
123
+ } else {
124
+ this.problems.push(defect)
125
+ }
126
+ })
127
+ }
128
+ this.loading = false
129
+ this.defectList.rows = arr.data
130
+ },
131
+ getDefectContent(row){
132
+ return `
133
+ <div style="padding:0px;margin-left: 8px;"><b>安检内容</b></div>
134
+ <div class="panel panel-default" style="background-color: azure;border-radius: 5px;margin-left: 8px;">
135
+ <div class="panel-body">
136
+ <ul style="list-style-type: none;font-size: 15px;">
137
+ <li style="margin: 3px 0;">用户姓名: ${row.f_user_name}</li>
138
+ <li style="margin: 3px 0;">用户地址: ${row.f_address}</li>
139
+ <li style="margin: 3px 0;">安检状态: ${row.f_entry_status}</li>
140
+ <li style="margin: 3px 0;">安检时间: ${row.f_offsite_time}</li>
141
+ <li style="margin: 3px 0;">安检人员: ${row.f_checker_name}</li>
142
+ <li style="margin: 3px 0;">调压箱: ${row.f_adjustable_name?row.f_adjustable_name:'无'}</li>
143
+ <li style="margin: 3px 0;">所属区域: ${row.f_region_name?row.f_region_name:'无'}</li>
144
+ </ul>
145
+ </div>
146
+ </div>`
147
+ },
148
+ assemblyData(){
149
+ let a2=[]
150
+ for(let i=0;i<this.level1.length;i++){
151
+ a2.push({
152
+ lnglat: [this.level1[i].f_longitude, this.level1[i].f_latitude], //点标记位置
153
+ name: '拒检',
154
+ id:i,
155
+ rowstr:this.level1[i]
156
+ })
157
+ }
158
+ this.level1Mulchs.setData(a2);
159
+ this.level1Mulchs.setMap(this.map);
160
+
161
+ let a4=[]
162
+ for(let p=0;p<this.level3.length;p++){
163
+ if (this.level3[p].f_longitude&&this.level3[p].f_latitude){
164
+ a4.push({
165
+ lnglat: [this.level3[p].f_longitude, this.level3[p].f_latitude], //点标记位置
166
+ name: '到访不遇',
167
+ id:p,
168
+ rowstr:this.level3[p]
169
+ })
170
+ }
171
+ }
172
+ this.level3Mulchs.setData(a4);
173
+ this.level3Mulchs.setMap(this.map);
174
+
175
+ let a5=[]
176
+ for(let l=0;l<this.problems.length;l++){
177
+ if (this.problems[l].f_longitude&&this.problems[l].f_latitude){
178
+ a5.push({
179
+ lnglat: [this.problems[l].f_longitude, this.problems[l].f_latitude], //点标记位置
180
+ name: '正常',
181
+ id:l,
182
+ rowstr:this.problems[l]
183
+ })
184
+ }
185
+ }
186
+ this.problemsMulchs.setData(a5);
187
+ this.problemsMulchs.setMap(this.map);
188
+ },
189
+ enableChange(vname,val){
190
+ switch(vname){
191
+ case 'level1':
192
+ if(val){
193
+ this.level1Mulchs.show()
194
+ }else{
195
+ this.level1Mulchs.hide()
196
+ }
197
+ break;
198
+ case 'level3':
199
+ if(val){
200
+ this.level3Mulchs.show()
201
+ }else{
202
+ this.level3Mulchs.hide()
203
+ }
204
+ break;
205
+ case 'problems':
206
+ if(val){
207
+ this.problemsMulchs.show()
208
+ }else{
209
+ this.problemsMulchs.hide()
210
+ }
211
+ break;
212
+ default:
213
+ }
214
+ },
215
+ initMap(){
216
+ let that=this
217
+ this.map = new AMap.Map('check_map', {
218
+ zoom: 17,
219
+ viewMode: '2D',
220
+ lang: 'zh_cn',
221
+ zindex: 99,
222
+ zooms: [3, 18], // 设置地图缩放范围为3到18级
223
+ center: [110.121181, 37.088921],
224
+ });
225
+ AMap.plugin(
226
+ ['AMap.ToolBar','AMap.Geolocation'], () => {
227
+ var geolocation = new AMap.Geolocation({
228
+ enableHighAccuracy: true,
229
+ showbutton: true,
230
+ timeout: 10000,
231
+ buttonOffset: new AMap.Pixel(10, 20),
232
+ buttonPosition: 'LB'
233
+ })
234
+ that.map.addControl(geolocation)
235
+ geolocation.getCurrentPosition();
236
+ that.map.addControl(new AMap.ToolBar())
237
+ });
238
+ this.map.setDefaultCursor('move');
239
+ this.infoWindow = new AMap.InfoWindow({
240
+ anchor: 'bottom-center',
241
+ autoMove:true,
242
+ content: '',
243
+ offset: new AMap.Pixel(0, -25)
244
+ })
245
+
246
+ this.level1Mulchs=new AMap.MassMarks([], {
247
+ opacity: 0.8,
248
+ zIndex: 111,
249
+ cursor: 'pointer',
250
+ style: this.styleObject[0]
251
+ });
252
+ this.level1Mulchs.on('mouseover',function (e) {
253
+ let defectContent=that.getDefectContent(e.data.rowstr)
254
+ that.infoWindow.setContent(defectContent)
255
+ that.infoWindow.open(that.map, e.data.lnglat);
256
+ })
257
+ this.level1Mulchs.on('mouseout',function (e) {
258
+ that.infoWindow.close();
259
+ })
260
+ this.level3Mulchs=new AMap.MassMarks([], {
261
+ opacity: 0.8,
262
+ zIndex: 111,
263
+ cursor: 'pointer',
264
+ style: this.styleObject[1]
265
+ });
266
+ this.level3Mulchs.on('mouseover',function (e) {
267
+ let defectContent=that.getDefectContent(e.data.rowstr)
268
+ that.infoWindow.setContent(defectContent)
269
+ that.infoWindow.open(that.map, e.data.lnglat);
270
+ })
271
+ this.level3Mulchs.on('mouseout',function (e) {
272
+ that.infoWindow.close();
273
+ })
274
+ this.problemsMulchs=new AMap.MassMarks([], {
275
+ opacity: 0.8,
276
+ zIndex: 111,
277
+ cursor: 'pointer',
278
+ style: this.styleObject[2]
279
+ });
280
+ this.problemsMulchs.on('mouseover',function (e) {
281
+ let defectContent=that.getDefectContent(e.data.rowstr)
282
+ that.infoWindow.setContent(defectContent)
283
+ that.infoWindow.open(that.map, e.data.lnglat);
284
+ })
285
+ this.problemsMulchs.on('mouseout',function (e) {
286
+ that.infoWindow.close();
287
+ })
288
+ },
289
+ async safeRefresh(){
290
+ let condition =`f_longitude is not null and f_latitude is not null`
291
+ if (this.f_check_start){
292
+ condition += ` and f_offsite_time >= '${this.f_check_start} 00:00:00'`
293
+ }
294
+ if (this.f_check_end){
295
+ condition += ` and f_offsite_time <= '${this.f_check_end} 23:59:59'`
296
+ }
297
+ await this.getNewData(condition)
298
+ this.assemblyData()
299
+ }
300
+ },
301
+ destroyed() {
302
+ window.clearInterval(this.intervalNum)
303
+ }
304
+ }
305
+ </script>
306
+
307
+ <style lang="less" scoped>
308
+
309
+ .time-picker-container {
310
+ display: flex;
311
+ align-items: center;
312
+ }
313
+
314
+ .time-picker-container /deep/ .v-datepicker {
315
+ width: 100% !important;
316
+ }
317
+
318
+ .date-separator {
319
+ padding: 0 5px;
320
+ }
321
+
322
+ .safe_checkbox_sty{
323
+ vertical-align:text-bottom;
324
+ margin-right: 3px;
325
+
326
+ }
327
+ .safe_ul_sty{
328
+ list-style-type: none;
329
+ font-size: 13px;
330
+ padding-left: 5px;
331
+ }
332
+ .safe_li_sty{
333
+ font-size: 13px;
334
+ margin-top: 5px;
335
+ }
336
+ .safe_p{
337
+ white-space: nowrap;
338
+ overflow: hidden;
339
+ text-overflow: ellipsis;
340
+ margin: 0 0 0 10px;
341
+
342
+ font-size: 12px;
343
+ }
344
+ .safe_list_li{
345
+ margin-top: 5px;
346
+ background-color: #ffffff;
347
+ border: solid 1px #f0f4fa !important;
348
+ color: #666666 !important;
349
+ font-size: 1.3rem !important;
350
+ font-family: PINGFANG-MEDIUM !important;
351
+ padding: 8px;
352
+ }
353
+ .safe_list_li:hover{
354
+ background-color: rgb(203,234,241);
355
+ }
356
+ .safe_deimg{
357
+ vertical-align: text-bottom;
358
+ width: 15px;
359
+ margin-right: 3px;
360
+ }
361
+ </style>
@@ -268,6 +268,11 @@
268
268
  <input type="text" class="input_search" v-model="model.f_card_id"
269
269
  style="width: 60%" placeholder="客户卡号" condition="f_card_id like '%{}%'">
270
270
  </div>
271
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
272
+ <label class="font_normal_body">备注</label>
273
+ <input type="text" class="input_search" v-model="model.f_repair_approved_note"
274
+ style="width: 60%" placeholder="备注" condition="f_repair_approved_note like '%{}%'">
275
+ </div>
271
276
  <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
272
277
  <label class="font_normal_body">距上次安检天数</label>
273
278
  <input type="number" class="input_search" v-model="model.f_check_date"
@@ -34,7 +34,7 @@
34
34
  progress="safeGetExportProgress"
35
35
  sqlurl="api/af-safecheck/logic/exportfile" sql-name="defectDetails" template-name='隐患处置'></export-excel>
36
36
  <button style="margin-left: 4px" class="button_search button_spacing" @click="$parent.$parent.showaudio()" v-if="$parent.$parent.audioshow">隐藏</button>
37
- <button style="margin-left: 4px" class="button_search button_spacing" @click="$parent.$parent.toRepair" v-if="$parent.$parent.canToRepair == '是'">转维修</button>
37
+ <button style="margin-left: 4px" class="button_search button_spacing" @click="$parent.$parent.toRepair()" v-if="$parent.$parent.canToRepair == '是'">转维修</button>
38
38
  <button style="margin-left: 4px" class="button_search button_spacing" @click="search()">查询</button>
39
39
  <div
40
40
  :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
@@ -985,6 +985,7 @@
985
985
  selfSearch(args) {
986
986
  ////tag
987
987
  // args.condition += ` and f_is_repaired = '未处理'`
988
+ args.condition += ` and f_filialeid='${this.$login.f.orgid}'`
988
989
  this.model.search(args.condition, args.model, args.condValue)
989
990
  }
990
991
  },
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <div>
3
+ <data-grid :model="onetomany" class="list_area table_sy">
4
+ <template partial='head'>
5
+ <tr>
6
+ <th class="textNoLineBreak">序号</th>
7
+ <th class="textNoLineBreak">材料名称</th>
8
+ <th class="textNoLineBreak">规格、型号</th>
9
+ <th class="textNoLineBreak">单价</th>
10
+ <th class="textNoLineBreak">数量</th>
11
+ <th class="textNoLineBreak">金额</th>
12
+ <th class="textNoLineBreak">操作人</th>
13
+ <th class="textNoLineBreak">操作时间</th>
14
+ <th class="textNoLineBreak">备注</th>
15
+ </tr>
16
+ </template>
17
+ <template partial='body'>
18
+ <tr>
19
+ <td style="text-align: center;">
20
+ <nobr>{{$index+1}}</nobr>
21
+ </td>
22
+ <td style="text-align: center;">
23
+ <nobr>{{row.f_material_name}}</nobr>
24
+ </td>
25
+ <td style="text-align: center;">
26
+ <nobr>{{row.f_typenumber}}</nobr>
27
+ </td>
28
+
29
+ <td style="text-align: center;">
30
+ <nobr>{{row.f_material_price}}</nobr>
31
+ </td>
32
+ <td style="text-align: center;">
33
+ <nobr>{{row.f_material_number}}</nobr>
34
+ </td>
35
+ <td style="text-align: center;">
36
+ <nobr>{{row.f_fee}}</nobr>
37
+ </td>
38
+ <td style="text-align: center;">
39
+ <nobr>{{row.f_operator}}</nobr>
40
+ </td>
41
+ <td style="text-align: center;">
42
+ <nobr>{{row.f_date}}</nobr>
43
+ </td>
44
+ <td style="text-align: center;">
45
+ <nobr>{{row.f_remarks}}</nobr>
46
+ </td>
47
+ </tr>
48
+ </template>
49
+ </data-grid>
50
+ </div>
51
+ </template>
52
+
53
+ <script>
54
+ import {HttpResetClass} from 'vue-client'
55
+ export default {
56
+ name: '隐患明细材料查看',
57
+ props: {
58
+ selectdata: {
59
+ type: Object
60
+ }
61
+ },
62
+ data () {
63
+ return {
64
+ onetomany: {
65
+ rows: []
66
+ }
67
+ }
68
+ },
69
+ ready(){
70
+ this.getOnetoManyData()
71
+ },
72
+ methods: {
73
+ /*获取工单收费添加的材料*/
74
+ async getOnetoManyData () {
75
+ let http = new HttpResetClass()
76
+ let data = {
77
+ items: '*',
78
+ tablename: 't_material_service',
79
+ condition: `f_process_id = '${this.selectdata.f_defect_id}'`,
80
+ orderitem: 'id'
81
+ }
82
+ http.load('post', 'api/af-safecheck/sql/safe_singleTable_OrderBy', {data: data}, {
83
+ resolveMsg: null,
84
+ rejectMsg: '获取数据失败'
85
+ }).then(res => {
86
+ this.onetomany.rows = res.data
87
+ })
88
+ }
89
+ },
90
+ events: {
91
+ },
92
+ }
93
+
94
+ </script>
95
+
96
+ <style scoped>
97
+
98
+ </style>