apply-clients 3.5.4-8 → 3.5.4-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 (103) hide show
  1. package/build/dev-server.js +6 -2
  2. package/package.json +2 -2
  3. package/src/App.vue +4 -4
  4. package/src/apply.js +2 -3
  5. package/src/applyAndroid.js +2 -0
  6. package/src/assets//344/270/213/350/275/275.png +0 -0
  7. package/src/components/android/AppCheckTakePic.vue +168 -0
  8. package/src/components/android/Process/AppServiceControl.vue +4 -0
  9. package/src/components/android/Process/Processes/AppChargeManagementNew.vue +637 -0
  10. package/src/components/image/dxf.png +0 -0
  11. package/src/components/product/Function/Service/FunctionServiceControl.vue +1 -1
  12. package/src/components/product/Material/MaterialDetailed.vue +268 -268
  13. package/src/components/product/MaterialsManage/MaterialsBase.vue +5 -1
  14. package/src/components/product/MaterialsManage/MaterialsManage.vue +2 -2
  15. package/src/components/product/PcZhihuanManagement.vue +160 -0
  16. package/src/components/product/Process/ExplorationSelect.vue +4 -1
  17. package/src/components/product/Process/ExplorationUser.vue +1 -0
  18. package/src/components/product/Process/Processes/chargeManagement.vue +1 -1
  19. package/src/components/product/ServiceView.vue +22 -1
  20. package/src/components/product/Supervisory/SupervisoryControl.vue +1 -0
  21. package/src/filiale/baiyin/android/AppServiceControl.vue +1762 -0
  22. package/src/filiale/baiyin/android/ByAddMaterialScience.vue +823 -0
  23. package/src/filiale/baiyin/android/ByDeviceManagement.vue +916 -0
  24. package/src/filiale/baiyin/android.js +8 -0
  25. package/src/filiale/fugou/android/AppAddMaterialScience.vue +448 -0
  26. package/src/filiale/fugou/android/AppAddReplacement.vue +341 -0
  27. package/src/filiale/fugou/android/AppChargeManagement.vue +739 -625
  28. package/src/filiale/fugou/android/AppDevicesManagement.vue +519 -0
  29. package/src/filiale/fugou/android/AppInstallationDetails.vue +541 -0
  30. package/src/filiale/fugou/android/AppServiceControl.vue +38 -5
  31. package/src/filiale/fugou/android/AppZhihuanManagement.vue +191 -0
  32. package/src/filiale/fugou/android.js +7 -1
  33. package/src/filiale/fugou/pc/AddReplacement.vue +340 -0
  34. package/src/filiale/fugou/pc/ExplorationSelect.vue +525 -0
  35. package/src/filiale/fugou/pc/InstallationDetails.vue +54 -43
  36. package/src/filiale/fugou/pc/ServiceControl.vue +125 -379
  37. package/src/filiale/fugou/pc/ServiceView.vue +941 -0
  38. package/src/filiale/fugou/pc/addMaterialScience.vue +481 -0
  39. package/src/filiale/fugou/pc/addressAndUserinfoManagement.vue +216 -0
  40. package/src/filiale/fugou/pc/devicesManagement.vue +483 -0
  41. package/src/filiale/fugou/pc.js +13 -7
  42. package/src/filiale/gongyi/android/AppAddMaterialScience.vue +493 -481
  43. package/src/filiale/gongyi/android/AppDisclosurerecord.vue +214 -0
  44. package/src/filiale/gongyi/android/AppInstallationDetails.vue +15 -10
  45. package/src/filiale/gongyi/android/AppLegacyIssues.vue +309 -0
  46. package/src/filiale/gongyi/android/AppSign.vue +16 -3
  47. package/src/filiale/gongyi/android/AppSupplementalAgreement.vue +298 -0
  48. package/src/filiale/gongyi/android.js +3 -0
  49. package/src/filiale/gongyi/pc/ApplyUpload.vue +31 -39
  50. package/src/filiale/gongyi/pc/PcAddLogs.vue +12 -4
  51. package/src/filiale/gongyi/pc/PcDisclosurerecord.vue +218 -0
  52. package/src/filiale/gongyi/pc/PcLegacyIssues.vue +309 -0
  53. package/src/filiale/gongyi/pc/SupervisoryServiceControl.vue +1 -1
  54. package/src/filiale/gongyi/pc/SupervisoryServiceView.vue +1005 -0
  55. package/src/filiale/gongyi/pc/addMaterialScience.vue +43 -7
  56. package/src/filiale/gongyi/pc/chargeManagement.vue +765 -0
  57. package/src/filiale/gongyi/pc/supplementalAgreement.vue +277 -0
  58. package/src/filiale/gongyi/pc.js +6 -1
  59. package/src/filiale/hongda/pc/SupervisoryList.vue +13 -0
  60. package/src/filiale/jinhuang/pc/ServiceControl.vue +1925 -0
  61. package/src/filiale/jinhuang/pc/chargeManagementNew.vue +589 -0
  62. package/src/filiale/jinhuang/pc.js +7 -0
  63. package/src/filiale/qianneng/android/AppChargeManagement.vue +686 -0
  64. package/src/filiale/qianneng/android/AppExplorationUser.vue +490 -490
  65. package/src/filiale/qianneng/android/AppInstallationDetails.vue +541 -541
  66. package/src/filiale/qianneng/android.js +15 -14
  67. package/src/filiale/qianneng/pc/ApplyUpload.vue +5 -4
  68. package/src/filiale/qianneng/pc/Applybatchdispatch.vue +704 -704
  69. package/src/filiale/qianneng/pc/Applydetail.vue +378 -383
  70. package/src/filiale/qianneng/pc/InstallFunction.vue +188 -188
  71. package/src/filiale/qianneng/pc/InstallationDetails.vue +614 -587
  72. package/src/filiale/qianneng/pc/ServiceControl.vue +1384 -1384
  73. package/src/filiale/qianneng/pc/printactivatecard.vue +311 -311
  74. package/src/filiale/ruihua/pc/ServiceControl.vue +20 -0
  75. package/src/filiale/ruihua/pc/printVentilation.vue +21 -6
  76. package/src/filiale/shexian/android/AppServiceControl.vue +12 -2
  77. package/src/filiale/shexian/android/AppTakePic.vue +15 -55
  78. package/src/filiale/siyangRH/android/AppAddMaterialScience.vue +0 -2
  79. package/src/filiale/siyangRH/pc/ApplyUpload.vue +324 -324
  80. package/src/filiale/siyangRH/pc/chargeManagement.vue +810 -0
  81. package/src/filiale/siyangRH/pc.js +1 -0
  82. package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +527 -511
  83. package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +639 -609
  84. package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +12 -0
  85. package/src/filiale/yangchunboneng/android/AppInstallationMaterial.vue +956 -961
  86. package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1681 -1648
  87. package/src/filiale/yangchunboneng/android/AppSuperServiceControl.vue +1 -1
  88. package/src/filiale/yangchunboneng/android/AppUpload.vue +78 -9
  89. package/src/filiale/yangchunboneng/android/MaterIialOne.vue +31 -19
  90. package/src/filiale/yangchunboneng/android.js +1 -1
  91. package/src/filiale/yangchunboneng/pc/ApplyUpload.vue +235 -218
  92. package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +548 -508
  93. package/src/filiale/yangchunboneng/pc/ExplorationUser.vue +191 -0
  94. package/src/filiale/yangchunboneng/pc/ServiceControl.vue +2075 -1871
  95. package/src/filiale/yangchunboneng/pc/SupervisoryControlNew.vue +142 -0
  96. package/src/filiale/yangchunboneng/pc/SupervisoryList.vue +69 -14
  97. package/src/filiale/yangchunboneng/pc/SupervisoryListNew.vue +628 -0
  98. package/src/filiale/yangchunboneng/pc/SupervisoryServiceControl.vue +902 -0
  99. package/src/filiale/yangchunboneng/pc/SupervisoryServiceControlNew.vue +901 -0
  100. package/src/filiale/yangchunboneng/pc/SupervisoryServiceView.vue +1117 -0
  101. package/src/filiale/yangchunboneng/pc/chargeManagement.vue +1059 -960
  102. package/src/filiale/yangchunboneng/pc.js +7 -1
  103. package/src/main.js +1 -1
@@ -52,6 +52,10 @@ export default {
52
52
  this.refurbish()
53
53
  },
54
54
  methods: {
55
+ /*获取服务人*/
56
+ getServicPeo(){
57
+ this.setLabelValue("服务人",Vue.user.name)
58
+ },
55
59
  async buttonCommit() {
56
60
  if(this.show_data.button.button_name){
57
61
  this.$refs.serviceview.disablebtu()
@@ -639,6 +643,7 @@ export default {
639
643
  this.$nextTick(() => {
640
644
  this.showview = true
641
645
  })
646
+ this.getServicPeo()
642
647
  },
643
648
  signClean () {
644
649
  this.selectdata.f_construction_sign = null
@@ -968,6 +973,18 @@ export default {
968
973
  this.$showAlert('费用未结清!!!', 'warning', 3000)
969
974
  throw null
970
975
  }
976
+ if(this.show_data.f_apply_type === '散户报建' && this.show_data.defname==="通气点火"){
977
+ let ventilation = this.getLableValue('是否具备通气条件')
978
+ if(ventilation==='否'){
979
+ let remark=this.getLableValue('通气备注')
980
+ if(isEmpty(remark)){
981
+ this.$showMessage(`不满足通气条件,请进行拍照,并备注说明!!!`)
982
+ throw null
983
+ }else{
984
+ this.$showMessage(`不满足通气条件,请进行拍照!!!`)
985
+ }
986
+ }
987
+ }
971
988
  },
972
989
  //通气点火前置
973
990
  async ventilationBefore() {
@@ -1368,6 +1385,8 @@ export default {
1368
1385
  )
1369
1386
 
1370
1387
  this.setLabelValue('应交金额', res.data)
1388
+ var bag=this.smalltoBIG(this.show_data.f_contract_money)
1389
+ this.setLabelValue('金额大写', bag)
1371
1390
  },
1372
1391
  // ===========================================
1373
1392
  async 'button'() {
@@ -1590,13 +1609,14 @@ export default {
1590
1609
  this.show_data.f_userinfo_code = row.f_userinfo_code
1591
1610
  },
1592
1611
  // 地址类型失去焦点
1612
+ // 地址类型失去焦点
1593
1613
  'addressTypeChange' (index) {
1594
1614
  this.setLabelValue('街道/乡镇', null)
1595
1615
  this.setLabelValue('集收单位', null)
1596
1616
  let f_address_type = this.show_data.fields[index].value
1597
1617
  for (const item of this.show_data.fields) {
1598
1618
  if (f_address_type === '民用市区') {
1599
- if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号' || item.label === '小区') {
1619
+ if ( item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '小区') {
1600
1620
  item.hidden = false
1601
1621
  item.required = true
1602
1622
  item.value = null
@@ -1612,7 +1632,7 @@ export default {
1612
1632
  }
1613
1633
  }
1614
1634
  if (f_address_type === '民用乡镇') {
1615
- if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号'|| item.label === '小区') {
1635
+ if ( item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '小区') {
1616
1636
  item.hidden = false
1617
1637
  item.required = true
1618
1638
  item.value = null
@@ -1633,7 +1653,7 @@ export default {
1633
1653
  }
1634
1654
  }
1635
1655
  if (f_address_type === '特殊地址') {
1636
- if (item.label === '区/县' || item.label === '街道/乡镇') {
1656
+ if ( item.label === '街道/乡镇') {
1637
1657
  item.hidden = false
1638
1658
  item.required = true
1639
1659
  item.value = null
@@ -1643,7 +1663,7 @@ export default {
1643
1663
  item.required = false
1644
1664
  item.value = null
1645
1665
  }
1646
- if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层' || item.label === '门牌号') {
1666
+ if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层' ) {
1647
1667
  item.hidden = true
1648
1668
  item.required = false
1649
1669
  item.value = null
@@ -1654,6 +1674,7 @@ export default {
1654
1674
  }
1655
1675
  }
1656
1676
  }
1677
+ this.pcdChange()
1657
1678
  },
1658
1679
  async 'searchArea' (area, index) {
1659
1680
  let data = {
@@ -1717,7 +1738,19 @@ export default {
1717
1738
  this.electiveLabels('片区', '地址类型',)
1718
1739
  }
1719
1740
  },
1720
- 'onblur' (index) {},
1741
+ 'onblur' (index) {
1742
+ if(this.show_data.fields[index].label==="优惠金额"){
1743
+ let contract=this.getLableValue('合同金额')
1744
+ let add=this.getLableValue('追加款')
1745
+ let money = this.getLableValue('优惠金额')
1746
+ //转为数字,然后contract减去money,保留两位小数
1747
+ let money_num = parseFloat(money)
1748
+ let add_num = parseFloat(add)
1749
+ let contract_num = parseFloat(contract)
1750
+ let new_contract = contract_num+add_num - money_num
1751
+ this.setLabelValue('应交金额', new_contract.toFixed(2))
1752
+ }
1753
+ },
1721
1754
  'oninput' (index) {},
1722
1755
  'initializtionView' () {},
1723
1756
  async 'onchangeModal' (index, fieldIndex) {
@@ -0,0 +1,191 @@
1
+ <template>
2
+ <div class="col-sm-12" style="margin: 20px 0px;">
3
+ <data-grid :model="model" v-ref:grid class="list_area table_sy" style="padding: 0px">
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
+ </tr>
11
+ </template>
12
+ <template partial='body'>
13
+ <tr>
14
+ <td style="text-align: center;">
15
+ <nobr>{{$index+1}}</nobr>
16
+ </td>
17
+ <td style="text-align: center;" >
18
+ <nobr>{{row.f_check_list}}</nobr>
19
+ </td>
20
+ <td style="text-align: center;">
21
+ <nobr>{{row.f_check_value}}</nobr>
22
+ </td>
23
+ <td style="text-align: center;">
24
+ <nobr>
25
+ <button
26
+ type="button"
27
+ name="button"
28
+ class="btn btn-link"
29
+ @click="$parent.$parent.showModal(row)"
30
+ >修改</button>
31
+ </nobr>
32
+ </td>
33
+ </tr>
34
+ </template>
35
+ </data-grid>
36
+ <validator name="v">
37
+ <modal v-if="showCheckModel" :show.sync="showCheckModel" v-ref:modal :large="true" :backdrop="false" title="收费明细">
38
+ <header slot="modal-header" class="modal-header">
39
+ <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
40
+ <h4 class="modal-title">检查明细</h4>
41
+ </header>
42
+ <article slot="modal-body" class="modal-body clearfix">
43
+ <div class="form-group col-sm-12">
44
+ <label class="col-sm-2 control-label">检查项目:</label>
45
+ <div class="col-sm-10">
46
+ <textarea width="100%" rows="3" v-model="checkList.f_check_list"></textarea>
47
+ </div>
48
+
49
+ </div>
50
+ <div class="form-group col-sm-12" >
51
+ <label class="col-sm-2 control-label">检查结果:</label>
52
+ <div class="col-sm-10">
53
+ <input-select
54
+ placeholder='请选择' width="100%"
55
+ v-model="checkList.f_check_value"
56
+ :value.sync="checkList.f_check_value"
57
+ :options='item'
58
+ class="select select_list"
59
+ :value-single="true"
60
+ close-on-select ></input-select>
61
+ </div>
62
+ </div>
63
+ <app-check-take-pic
64
+ :blobid="selectdata.f_process_id"
65
+ :flag="flag"
66
+ :defname="selectdata.defname"
67
+ :isdelete="true"
68
+ :istakepic="true"
69
+ :istype="true">
70
+ </app-check-take-pic>
71
+ </article>
72
+ <footer slot="modal-footer" class="modal-footer">
73
+ <button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="save()">保存</button>
74
+ </footer>
75
+ </modal>
76
+ </validator>
77
+ </div>
78
+ </template>
79
+ <script>
80
+ import {HttpResetClass} from 'vue-client'
81
+ import Vue from 'vue'
82
+
83
+ export default {
84
+ title: '检查项管理',
85
+ props: {
86
+ selectdata: {
87
+ type: Object
88
+ },
89
+ },
90
+ data () {
91
+ return {
92
+ model: {
93
+ data: null
94
+ },
95
+ flag:0,
96
+ showCheckModel: false,
97
+ checkList:{},
98
+ item: [{label: '是', value: '是'},{label: '否', value: '否'}],
99
+ hasList:false,
100
+ savelist:[]
101
+ }
102
+ },
103
+ ready () {
104
+ this.search()
105
+ },
106
+ methods: {
107
+ async save(){
108
+ let res = await this.$resetpost(
109
+ `${this.$androidUtil.getProxyUrl()}/apply/rs/entity/t_apply_check`,
110
+ this.checkList,
111
+ {resolveMsg: null, rejectMsg: '数据保存失败!!!'}
112
+ )
113
+ if(res){
114
+ this.showCheckModel=false
115
+ this.search()
116
+ }
117
+ },
118
+ showModal(row){
119
+ this.checkList=row
120
+ this.flag=this.selectdata.f_apply_num+row.id
121
+ this.showCheckModel=true
122
+ },
123
+ closeModal() {
124
+ this.showCheckModel=false
125
+ },
126
+ //如果是第一次,则新保存检查想到数据库
127
+ async saveCheck() {
128
+ if (this.hasList === false) {
129
+ this.savelist = []
130
+ let checkList = this.$appdata.getParam("报建检查项目")
131
+ //遍历数组,获取数组中的每一个对象,并获取对象的value
132
+ for (let i = 0; i < checkList.length; i++) {
133
+ let obj = checkList[i]
134
+ let value = obj.value
135
+ this.savelist.push(value)
136
+ }
137
+ //保存到数据库
138
+ let http = new HttpResetClass()
139
+ let data = {
140
+ apply: this.selectdata,
141
+ user: Vue.user,
142
+ check:this.savelist
143
+ }
144
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyCheck`, {data: data}, {
145
+ resolveMsg: null,
146
+ rejectMsg: '添加失败!!!'
147
+ })
148
+ }
149
+ },
150
+ //查询
151
+ async search() {
152
+ let http = new HttpResetClass()
153
+ let data = {
154
+ tablename: 't_apply_check',
155
+ condition: `f_process_id= '${this.selectdata.f_process_id}'`
156
+ }
157
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data:data}, {
158
+ resolveMsg: null,
159
+ rejectMsg: '检查项查询失败!!!'
160
+ })
161
+ if(res.data.length>0){
162
+ this.model.data=res.data
163
+ }else{
164
+ this.saveCheck()
165
+ }
166
+ }
167
+ },
168
+ events: {
169
+ },
170
+ computed: {
171
+ CheckItems() {
172
+ return this.$appdata.getParam("报建检查项目")
173
+ }
174
+ },
175
+ watch: {
176
+ }
177
+ }
178
+ </script>
179
+ <style scoped>
180
+ .textNoLineBreak {
181
+ white-space: nowrap;
182
+ }
183
+ .head-but{
184
+ margin-left: 5px;
185
+ height: 34px;
186
+ /*background-color: #6aa6e2;*/
187
+ border-radius: 4px;
188
+ font-family: PingFang;
189
+ color: #ffffff;
190
+ }
191
+ </style>
@@ -4,6 +4,12 @@ let specialComp = {
4
4
  'app-service-view': (resolve) => { require(['./android/AppServiceView'], resolve) },
5
5
  'app-exploration-user': (resolve) => { require(['./android/AppExplorationUser'], resolve) },
6
6
  'app-service-control': (resolve) => { require(['./android/AppServiceControl'], resolve) },
7
- 'app-charge-management': (resolve) => { require(['./android/AppChargeManagement'], resolve) }
7
+ 'app-zhihuan-management': (resolve) => { require(['./android/AppZhihuanManagement'], resolve) },
8
+ 'app-charge-management': (resolve) => { require(['./android/AppChargeManagement'], resolve) },
9
+ 'app-add-material-science': (resolve) => { require(['./android/AppAddMaterialScience'], resolve) },
10
+ 'app-installation-details': (resolve) => { require(['./android/AppInstallationDetails'], resolve) },
11
+ 'app-apply-replacement': (resolve) => { require(['./android/AppAddReplacement'], resolve) },
12
+ 'app-apply-devices-management': (resolve) => { require(['./android/AppDevicesManagement'], resolve) }
13
+
8
14
  }
9
15
  exports.specialComp = specialComp
@@ -0,0 +1,340 @@
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" >
11
+ <button v-if="$parent.$parent.mark === 0" type="button" class="btn btn-primary" @click="$parent.$parent.openMaterialModal()">添加
12
+ </button>
13
+ </th>
14
+ </tr>
15
+ </template>
16
+ <template partial='body'>
17
+ <tr>
18
+ <td style="text-align: center;">
19
+ <nobr>{{row.f_operator}}</nobr>
20
+ </td>
21
+ <td style="text-align: center;">
22
+ <nobr>{{row.f_operation_date}}</nobr>
23
+ </td>
24
+ <td style="text-align: center;">
25
+ <nobr>{{row.f_content}}</nobr>
26
+ </td>
27
+ <td style="text-align: center;">
28
+ <nobr>
29
+ {{$parent.$parent.toArry(row.f_content_value)}}
30
+ </nobr>
31
+ </td>
32
+ <td style="text-align: center;">
33
+ <button v-if="$parent.$parent.mark === 0" type="button" class="button_delete button_spacing" @click="$parent.$parent.deletelogs(row)">删除
34
+ </button>
35
+ </td>
36
+ </tr>
37
+ </template>
38
+ </data-grid>
39
+ <modal v-if="showMaterialModal" :show.sync="showMaterialModal" v-ref:modal :large="true"
40
+ :backdrop="false" :title="title">
41
+ <header slot="modal-header" class="modal-header">
42
+ <button type="button" class="close" @click="closeMaterials"><span>&times;</span></button>
43
+ <h4 class="modal-title">{{title}}</h4>
44
+ </header>
45
+ <article slot="modal-body" class="modal-body clearfix">
46
+ <div class="form-group col-sm-6">
47
+ <label class="col-sm-4 control-label">设备:</label>
48
+ <div class="col-sm-8">
49
+ <input-select
50
+ class="select select_list"
51
+ :value.sync="device"
52
+ v-model="device"
53
+ :options="logOptions"
54
+ :disable="mark === 1"
55
+ :valueSingle="true"></input-select>
56
+ </div>
57
+ </div>
58
+ <div v-for="(i,item) in materials" class="form-group col-sm-12 panel panel-info">
59
+ <div class="panel-body">
60
+ <div class="row">
61
+ <div class="form-group col-sm-6">
62
+ <label class="col-sm-4 control-label">内容:</label>
63
+ <div class="col-sm-8">
64
+ <input-select
65
+ class="select select_list"
66
+ :value.sync="item.f_content"
67
+ v-model="item.f_content"
68
+ :options="Options"
69
+ :disable="mark === 1"
70
+ :valueSingle="true"></input-select>
71
+ </div>
72
+ </div>
73
+ <div class="form-group col-sm-6">
74
+ <label class="col-sm-4 control-label">值:</label>
75
+ <div class="col-sm-8">
76
+ <input
77
+ class="form-control"
78
+ v-model="item.f_content_value"
79
+ :value.sync="item.f_content_value"
80
+ rows="3"
81
+ :readonly="mark === 1"
82
+ ></input>
83
+ </div>
84
+ </div>
85
+ <div v-if="mark !== 1 && materials.length > 1" class="form-group col-sm-12 text-center">
86
+ <button type="button" class="btn btn-danger" @click="removeMaterial(i)">
87
+ <i class="fa fa-minus"></i> 移除
88
+ </button>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ <div v-if="mark !== 1" class="form-group col-sm-12 text-center">
94
+ <button type="button" class="btn btn-success" @click="addMaterial()">
95
+ <i class="fa fa-plus"></i> 添加
96
+ </button>
97
+ </div>
98
+ </article>
99
+ <footer slot="modal-footer" class="modal-footer">
100
+ <template v-if="mark!== 1">
101
+ <button type="button" class="btn btn-primary" v-if="title==='新增'" @click="addlogs()"
102
+ :disabled="!$v.valid">确认
103
+ </button>
104
+ </template>
105
+ </footer>
106
+ </modal>
107
+ </div>
108
+ </template>
109
+
110
+ <script>
111
+ import {HttpResetClass} from 'vue-client'
112
+ export default {
113
+ name: 'replacement',
114
+ props: {
115
+ selectdata: {
116
+ type: Object
117
+ },
118
+ mark: {
119
+ type: Number,
120
+ default: 0
121
+ }
122
+ },
123
+ data() {
124
+ return {
125
+ onetomany: {
126
+ rows: []
127
+ },
128
+ logOptions: this.$appdata.getParam('置换设备'),
129
+ Options: this.$appdata.getParam('置换内容'),
130
+ device:'',
131
+ title: '新增',
132
+ deviceArry:[],
133
+ showMaterialModal: false,
134
+ materials: [
135
+ {
136
+
137
+ }
138
+ ],
139
+ meterialOptions: [],
140
+ row: {},
141
+ bjqChecklag:[],
142
+ fmaterialname:{}
143
+ }
144
+ },
145
+ ready() {
146
+ this.getOnetoManyData()
147
+ },
148
+ methods: {
149
+ toArry(row){
150
+ //将row放进数组中
151
+ if (!row) return "无";
152
+ try {
153
+ // 添加方括号使其成为有效的JSON数组
154
+ const jsonStr = '[' + row + ']';
155
+ // 尝试解析字符串为JSON数组
156
+ const jsonArray = JSON.parse(jsonStr);
157
+ // 将解析后的数据保存到deviceArry中
158
+ this.deviceArry = jsonArray;
159
+
160
+ // 格式化显示数据
161
+ let result = '';
162
+ for (let i = 0; i < this.deviceArry.length; i++) {
163
+ const item = this.deviceArry[i];
164
+ result += `${item.f_content}:${item.f_content_value}`;
165
+ if (i < this.deviceArry.length - 1) {
166
+ result += ',';
167
+ }
168
+ }
169
+ return result;
170
+ } catch (err) {
171
+ console.error('解析JSON数据失败:', err);
172
+ return "无";
173
+ }
174
+ },
175
+ look(row){
176
+ this.title = '查看'
177
+ this.materials = [
178
+ {
179
+ id: row.id,
180
+ f_log_type:row.f_log_type,
181
+ f_log_content:row.f_log_content
182
+ }
183
+ ],
184
+ this.showMaterialModal = true
185
+ },
186
+
187
+ changelogs(){
188
+ let http = new HttpResetClass()
189
+ let data = {
190
+ data: {
191
+ id: this.materials[0].id,
192
+ f_process_id:this.selectdata.f_process_id,
193
+ f_log_type:this.materials[0].f_log_type,
194
+ f_log_content:this.materials[0].f_log_content,
195
+ user:this.$login.f
196
+ }
197
+ }
198
+ http.load(
199
+ 'POST',
200
+ `/rs/logic/addLogs`,
201
+ data,
202
+ {resolveMsg: '修改成功', rejectMsg: '添加失败'}
203
+ ).then(res => {
204
+ this.closeMaterials()
205
+ })
206
+ },
207
+ addlogs(){
208
+ let value=[]
209
+ let http = new HttpResetClass()
210
+ this.materials.forEach(material => {
211
+ let obj={}
212
+ obj.f_content=material.f_content
213
+ obj.f_content_value=material.f_content_value
214
+ //obj转为字符串
215
+ obj = JSON.stringify(obj)
216
+ value.push(obj)
217
+ });
218
+ let s = {
219
+ f_process_id: this.selectdata.f_process_id,
220
+ f_operation_date: new Date().Format('yyyy-MM-dd HH:mm:ss'),
221
+ f_content_value:`${value}` ,
222
+ f_content: this.device,
223
+ f_operator: this.$login.f.name,
224
+ f_operator_id: this.$login.f.id
225
+ }
226
+ let data = {
227
+ tableName: 't_replacement',
228
+ model: s
229
+ }
230
+ http.load(
231
+ 'POST',
232
+ `/rs/logic/entitySingleTable`,
233
+ data,
234
+ {resolveMsg: null, rejectMsg: '添加失败'}
235
+ ).then(res => {
236
+ this.getOnetoManyData()
237
+ this.showMaterialModal=false
238
+ })
239
+ },
240
+ deletelogs(row){
241
+ let http = new HttpResetClass()
242
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
243
+ if (res === 'confirm') {
244
+ let data = {
245
+ tableName:'t_replacement',
246
+ id:row.id
247
+ }
248
+ http.load(
249
+ 'POST',
250
+ `/rs/logic/delentitySingleTable`,
251
+ data,
252
+ {resolveMsg: '删除成功', rejectMsg: '删除失败'}
253
+ ).then(res => {
254
+ this.getOnetoManyData()
255
+ })
256
+ }
257
+ })
258
+ },
259
+ async getOnetoManyData () {
260
+ let http = new HttpResetClass()
261
+ let data = {
262
+ tablename: `t_replacement`,
263
+ condition: `f_process_id='${this.selectdata.f_process_id}'`
264
+ }
265
+ let res = await http.load(
266
+ 'POST',
267
+ `/rs/sql/apply_singleTable?aaa=123`,
268
+ {data: data},
269
+ {resolveMsg: null, rejectMsg: 'onetomany查询失败'}
270
+ )
271
+ this.onetomany.rows = res.data
272
+ },
273
+ async openMaterialModal() {
274
+ this.title = '新增'
275
+ this.materials = [
276
+ {
277
+ f_devices: '',
278
+ f_content: '',
279
+ f_content_value: ''
280
+ }
281
+ ];
282
+ this.showMaterialModal = true
283
+ },
284
+
285
+ closeMaterials() {
286
+ this.getOnetoManyData()
287
+ this.showMaterialModal = false
288
+ },
289
+ removeMaterial(index) {
290
+ if (this.materials.length > 1) {
291
+ this.materials.splice(index, 1);
292
+ } else {
293
+ this.$showMessage('至少需要保留一组数据');
294
+ }
295
+ },
296
+ addMaterial() {
297
+ // 获取最后一个材料的设备值,如果存在的话
298
+ const lastDevice = this.materials.length > 0 ? this.materials[this.materials.length - 1].f_devices : '';
299
+
300
+ this.materials.push({
301
+ f_devices: lastDevice, // 复制上一个设备的值
302
+ f_content: '',
303
+ f_content_value: ''
304
+ });
305
+ },
306
+ }
307
+ }
308
+
309
+ </script>
310
+
311
+ <style scoped>
312
+ .panel-info {
313
+ border: 1px solid #bce8f1;
314
+ margin-bottom: 15px;
315
+ }
316
+
317
+ .panel-heading {
318
+ background-color: #d9edf7;
319
+ border-bottom: 1px solid #bce8f1;
320
+ color: #31708f;
321
+ padding: 10px 15px;
322
+ }
323
+
324
+ .panel-body {
325
+ padding: 15px;
326
+ }
327
+
328
+ .form-group {
329
+ margin-bottom: 15px;
330
+ }
331
+
332
+ .btn-success {
333
+ margin-top: 10px;
334
+ }
335
+
336
+ .modal-body {
337
+ max-height: 500px;
338
+ overflow-y: auto;
339
+ }
340
+ </style>