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.
- package/build/dev-server.js +6 -2
- package/package.json +2 -2
- package/src/App.vue +4 -4
- package/src/apply.js +2 -3
- package/src/applyAndroid.js +2 -0
- package/src/assets//344/270/213/350/275/275.png +0 -0
- package/src/components/android/AppCheckTakePic.vue +168 -0
- package/src/components/android/Process/AppServiceControl.vue +4 -0
- package/src/components/android/Process/Processes/AppChargeManagementNew.vue +637 -0
- package/src/components/image/dxf.png +0 -0
- package/src/components/product/Function/Service/FunctionServiceControl.vue +1 -1
- package/src/components/product/Material/MaterialDetailed.vue +268 -268
- package/src/components/product/MaterialsManage/MaterialsBase.vue +5 -1
- package/src/components/product/MaterialsManage/MaterialsManage.vue +2 -2
- package/src/components/product/PcZhihuanManagement.vue +160 -0
- package/src/components/product/Process/ExplorationSelect.vue +4 -1
- package/src/components/product/Process/ExplorationUser.vue +1 -0
- package/src/components/product/Process/Processes/chargeManagement.vue +1 -1
- package/src/components/product/ServiceView.vue +22 -1
- package/src/components/product/Supervisory/SupervisoryControl.vue +1 -0
- package/src/filiale/baiyin/android/AppServiceControl.vue +1762 -0
- package/src/filiale/baiyin/android/ByAddMaterialScience.vue +823 -0
- package/src/filiale/baiyin/android/ByDeviceManagement.vue +916 -0
- package/src/filiale/baiyin/android.js +8 -0
- package/src/filiale/fugou/android/AppAddMaterialScience.vue +448 -0
- package/src/filiale/fugou/android/AppAddReplacement.vue +341 -0
- package/src/filiale/fugou/android/AppChargeManagement.vue +739 -625
- package/src/filiale/fugou/android/AppDevicesManagement.vue +519 -0
- package/src/filiale/fugou/android/AppInstallationDetails.vue +541 -0
- package/src/filiale/fugou/android/AppServiceControl.vue +38 -5
- package/src/filiale/fugou/android/AppZhihuanManagement.vue +191 -0
- package/src/filiale/fugou/android.js +7 -1
- package/src/filiale/fugou/pc/AddReplacement.vue +340 -0
- package/src/filiale/fugou/pc/ExplorationSelect.vue +525 -0
- package/src/filiale/fugou/pc/InstallationDetails.vue +54 -43
- package/src/filiale/fugou/pc/ServiceControl.vue +125 -379
- package/src/filiale/fugou/pc/ServiceView.vue +941 -0
- package/src/filiale/fugou/pc/addMaterialScience.vue +481 -0
- package/src/filiale/fugou/pc/addressAndUserinfoManagement.vue +216 -0
- package/src/filiale/fugou/pc/devicesManagement.vue +483 -0
- package/src/filiale/fugou/pc.js +13 -7
- package/src/filiale/gongyi/android/AppAddMaterialScience.vue +493 -481
- package/src/filiale/gongyi/android/AppDisclosurerecord.vue +214 -0
- package/src/filiale/gongyi/android/AppInstallationDetails.vue +15 -10
- package/src/filiale/gongyi/android/AppLegacyIssues.vue +309 -0
- package/src/filiale/gongyi/android/AppSign.vue +16 -3
- package/src/filiale/gongyi/android/AppSupplementalAgreement.vue +298 -0
- package/src/filiale/gongyi/android.js +3 -0
- package/src/filiale/gongyi/pc/ApplyUpload.vue +31 -39
- package/src/filiale/gongyi/pc/PcAddLogs.vue +12 -4
- package/src/filiale/gongyi/pc/PcDisclosurerecord.vue +218 -0
- package/src/filiale/gongyi/pc/PcLegacyIssues.vue +309 -0
- package/src/filiale/gongyi/pc/SupervisoryServiceControl.vue +1 -1
- package/src/filiale/gongyi/pc/SupervisoryServiceView.vue +1005 -0
- package/src/filiale/gongyi/pc/addMaterialScience.vue +43 -7
- package/src/filiale/gongyi/pc/chargeManagement.vue +765 -0
- package/src/filiale/gongyi/pc/supplementalAgreement.vue +277 -0
- package/src/filiale/gongyi/pc.js +6 -1
- package/src/filiale/hongda/pc/SupervisoryList.vue +13 -0
- package/src/filiale/jinhuang/pc/ServiceControl.vue +1925 -0
- package/src/filiale/jinhuang/pc/chargeManagementNew.vue +589 -0
- package/src/filiale/jinhuang/pc.js +7 -0
- package/src/filiale/qianneng/android/AppChargeManagement.vue +686 -0
- package/src/filiale/qianneng/android/AppExplorationUser.vue +490 -490
- package/src/filiale/qianneng/android/AppInstallationDetails.vue +541 -541
- package/src/filiale/qianneng/android.js +15 -14
- package/src/filiale/qianneng/pc/ApplyUpload.vue +5 -4
- package/src/filiale/qianneng/pc/Applybatchdispatch.vue +704 -704
- package/src/filiale/qianneng/pc/Applydetail.vue +378 -383
- package/src/filiale/qianneng/pc/InstallFunction.vue +188 -188
- package/src/filiale/qianneng/pc/InstallationDetails.vue +614 -587
- package/src/filiale/qianneng/pc/ServiceControl.vue +1384 -1384
- package/src/filiale/qianneng/pc/printactivatecard.vue +311 -311
- package/src/filiale/ruihua/pc/ServiceControl.vue +20 -0
- package/src/filiale/ruihua/pc/printVentilation.vue +21 -6
- package/src/filiale/shexian/android/AppServiceControl.vue +12 -2
- package/src/filiale/shexian/android/AppTakePic.vue +15 -55
- package/src/filiale/siyangRH/android/AppAddMaterialScience.vue +0 -2
- package/src/filiale/siyangRH/pc/ApplyUpload.vue +324 -324
- package/src/filiale/siyangRH/pc/chargeManagement.vue +810 -0
- package/src/filiale/siyangRH/pc.js +1 -0
- package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +527 -511
- package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +639 -609
- package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +12 -0
- package/src/filiale/yangchunboneng/android/AppInstallationMaterial.vue +956 -961
- package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1681 -1648
- package/src/filiale/yangchunboneng/android/AppSuperServiceControl.vue +1 -1
- package/src/filiale/yangchunboneng/android/AppUpload.vue +78 -9
- package/src/filiale/yangchunboneng/android/MaterIialOne.vue +31 -19
- package/src/filiale/yangchunboneng/android.js +1 -1
- package/src/filiale/yangchunboneng/pc/ApplyUpload.vue +235 -218
- package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +548 -508
- package/src/filiale/yangchunboneng/pc/ExplorationUser.vue +191 -0
- package/src/filiale/yangchunboneng/pc/ServiceControl.vue +2075 -1871
- package/src/filiale/yangchunboneng/pc/SupervisoryControlNew.vue +142 -0
- package/src/filiale/yangchunboneng/pc/SupervisoryList.vue +69 -14
- package/src/filiale/yangchunboneng/pc/SupervisoryListNew.vue +628 -0
- package/src/filiale/yangchunboneng/pc/SupervisoryServiceControl.vue +902 -0
- package/src/filiale/yangchunboneng/pc/SupervisoryServiceControlNew.vue +901 -0
- package/src/filiale/yangchunboneng/pc/SupervisoryServiceView.vue +1117 -0
- package/src/filiale/yangchunboneng/pc/chargeManagement.vue +1059 -960
- package/src/filiale/yangchunboneng/pc.js +7 -1
- 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 (
|
|
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 (
|
|
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 (
|
|
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 === '楼层'
|
|
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>×</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-
|
|
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>×</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>
|