apply-clients 5.0.35-1 → 5.0.35-100

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 (86) hide show
  1. package/package.json +3 -3
  2. package/src/AndroidApp.vue +28 -28
  3. package/src/android.js +1 -1
  4. package/src/apply.js +15 -1
  5. package/src/assets//345/210/240/351/231/244.png +0 -0
  6. package/src/assets//347/224/250/346/210/267/345/234/260/345/235/200.png +0 -0
  7. package/src/assets//347/224/250/346/210/267/345/247/223/345/220/215.png +0 -0
  8. package/src/assets//347/224/250/346/210/267/347/224/265/350/257/235.png +0 -0
  9. package/src/components/app_apply/ApplyDownList.vue +168 -164
  10. package/src/components/app_apply/ApplyInfo.vue +2 -2
  11. package/src/components/app_apply/ApplyListUpload.vue +268 -268
  12. package/src/components/app_apply/ApplyToDoList.vue +312 -183
  13. package/src/components/app_apply/Gongcheng.vue +3631 -0
  14. package/src/components/app_apply/OneToMany.vue +194 -0
  15. package/src/components/app_apply/PlaceControler.vue +299 -256
  16. package/src/components/app_apply/ServiceControl.vue +687 -335
  17. package/src/components/app_apply/ServiceView.vue +383 -383
  18. package/src/components/app_apply/ezhou/FeiMinYongV.vue +109 -109
  19. package/src/components/app_apply/ezhou/FeiMinYongVV.vue +100 -100
  20. package/src/components/app_apply/ezhou/MinYong.vue +92 -92
  21. package/src/components/app_apply/ezhou/ServiceView.vue +745 -620
  22. package/src/components/image/doc.jpg +0 -0
  23. package/src/components/image/dwg.png +0 -0
  24. package/src/components/image/dxf.png +0 -0
  25. package/src/components/image/excel.jpg +0 -0
  26. package/src/components/image/pdf.jpg +0 -0
  27. package/src/components/product/Common/ApplyValidateBill.vue +13 -6
  28. package/src/components/product/Common/PrintBill.vue +7 -6
  29. package/src/components/product/EngineeringManagement/EngineerUpload.vue +304 -0
  30. package/src/components/product/EngineeringManagement/EngineeringManagement.vue +137 -0
  31. package/src/components/product/EngineeringManagement/EngineeringSelect.vue +586 -0
  32. package/src/components/product/EngineeringSupervisory/EngineeringApplyStopInfo.vue +281 -0
  33. package/src/components/product/EngineeringSupervisory/EngineeringSupervisoryControl.vue +132 -0
  34. package/src/components/product/EngineeringSupervisory/EngineeringSupervisoryList.vue +340 -0
  35. package/src/components/product/EngineeringSupervisory/EngineeringSupervisoryServiceControl.vue +490 -0
  36. package/src/components/product/Function/InstallInfoSelect.vue +3 -2
  37. package/src/components/product/Function/Service/FunctionServiceControl.vue +37 -1
  38. package/src/components/product/Function/functions/ApplyUpload.vue +556 -0
  39. package/src/components/product/Function/functions/BuyerMessage.vue +1 -1
  40. package/src/components/product/Function/functions/InstallFee.vue +589 -347
  41. package/src/components/product/Function/functions/InstallFeeInfo.vue +6 -1
  42. package/src/components/product/Process/ExplorationSelect.vue +23 -6
  43. package/src/components/product/Process/Processes/CustomerRecordMessage.vue +2 -5
  44. package/src/components/product/Process/Processes/Service/ApplyChargeSearch.vue +126 -39
  45. package/src/components/product/Process/Processes/Service/PaperTicketBill.vue +85 -0
  46. package/src/components/product/Process/Processes/Service/ServiceControl.vue +1880 -1495
  47. package/src/components/product/ServiceView.vue +16 -6
  48. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +556 -406
  49. package/src/components/product/Supervisory/SupervisoryList.vue +77 -13
  50. package/src/components/product/applyReport/ApplyReport.vue +205 -0
  51. package/src/components/product/applyReport/PrintApplyReport.vue +116 -0
  52. package/src/components/product/stopInfo/ApplyStopInfo.vue +2 -1
  53. package/src/ezhouAndroid.js +48 -45
  54. package/src/index.js +8 -8
  55. package/src/main.js +1 -1
  56. package/src/plugins/commonService.js +11 -7
  57. package/static/newStyle/clear.png +0 -0
  58. package/static/newStyle/fife.png +0 -0
  59. package/static/newStyle/hidden.png +0 -0
  60. package/static/newStyle/label-clear.png +0 -0
  61. package/static/newStyle/left-img.png +0 -0
  62. package/static/newStyle/list_ok.png +0 -0
  63. package/static/newStyle/login-check.png +0 -0
  64. package/static/newStyle/login-con.png +0 -0
  65. package/static/newStyle/login-do.gif +0 -0
  66. package/static/newStyle/login-f.png +0 -0
  67. package/static/newStyle/login-info.png +0 -0
  68. package/static/newStyle/login-left.png +0 -0
  69. package/static/newStyle/login-org.png +0 -0
  70. package/static/newStyle/login-pwd.png +0 -0
  71. package/static/newStyle/login-user.png +0 -0
  72. package/static/newStyle/loginbg.gif +0 -0
  73. package/static/newStyle/loginbg1280.gif +0 -0
  74. package/static/newStyle/loginbg1366.gif +0 -0
  75. package/static/newStyle/loginbg_1.gif +0 -0
  76. package/static/newStyle/searchin.png +0 -0
  77. package/static/newStyle/searchout.png +0 -0
  78. package/static/newStyle/setting.png +0 -0
  79. package/static/newStyle/setting1.png +0 -0
  80. package/static/newStyle/shirk.png +0 -0
  81. package/static/newStyle/stretch_bottom.png +0 -0
  82. package/static/newStyle/stretch_left.png +0 -0
  83. package/static/newStyle/stretch_right.png +0 -0
  84. package/static/newStyle/stretch_top.png +0 -0
  85. package/static/newStyle/system-off.png +0 -0
  86. package/static/newStyle//350/261/252/344/275/263/347/207/203/346/260/224.png +0 -0
@@ -1,620 +1,745 @@
1
- <template>
2
- <div class="auto select-overspread">
3
- <div v-if="data.back_reason" class="panel panel-info">
4
- <span style="color: red"> 请注意被退回原因为:{{data.back_reason}}</span>
5
- </div>
6
- <validator name="v">
7
- <form class="form-horizontal">
8
- <div class="col-sm-11 form-group">
9
- <div v-for="(index,item) in data.fields">
10
- <!--input-->
11
- <div v-if="item.type==='input'" v-show="!item.hidden" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
12
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
13
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
14
- <input class="form-control"
15
- :type="item.type"
16
- v-model="data.fields[index].value"
17
- :placeholder="item.placeholder"
18
- :value="data.fields[index].value"
19
- :readonly="item.readonly"
20
- :disable="item.disable"
21
- @change="disabled_check(index,data.fields[index].required,data.fields[index].value)"
22
- @blur ="check_disable"
23
- />
24
- </div>
25
- </div>
26
- <!--number-->
27
- <div v-if="item.type==='number'" v-show="!item.hidden" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
28
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
29
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
30
- <input class="form-control"
31
- :type="item.type"
32
- v-model="data.fields[index].value"
33
- :placeholder="item.placeholder"
34
- :value="data.fields[index].value"
35
- :readonly="item.readonly"
36
- :disable="item.disable"
37
- @change="disabled_check(index,data.fields[index].required,data.fields[index].value)"
38
- @blur ="check_disable"
39
- />
40
- </div>
41
- </div>
42
-
43
- <!--时间datepicker-->
44
- <div v-if="item.type==='datepicker'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-xs-12 form-group']">
45
- <label style="margin-top: 0.7em" :class="item.label_bootstraped?item.label_bootstraped +' control-label':'control-label col-sm-6'">{{item.label}}:</label>
46
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
47
- <datepicker
48
- :placeholder="item.placeholder"
49
- :value.sync="data.fields[index].value"
50
- :format="'yyyy-MM-dd HH:mm:ss'"
51
- v-model="data.fields[index].value"
52
- :width="'100%'"
53
- class="form-control"
54
- :readonly="item.readonly"
55
- :disabled="item.disabled"
56
- @blur ="check_disable"
57
- :show-reset-button="reset">
58
- </datepicker>
59
- </div>
60
- </div>
61
-
62
-
63
- <!--textarea-->
64
- <div v-if="item.type==='textarea'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
65
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
66
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
67
- <textarea
68
- :readonly="item.readonly"
69
- :disabled="item.disabled"
70
- class="form-control"
71
- :rows="item.rows"
72
- v-model="data.fields[index].value"
73
- @change="disabled_check(index,data.fields[index].required,data.fields[index].value)"
74
- @blur ="check_disable"
75
- >
76
- </textarea>
77
- </div>
78
- </div>
79
-
80
- <!--radio-->
81
- <div v-if="item.type==='radio'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
82
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
83
- <div class="col-xs-12">
84
- <div :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-xs-5': 'col-xs-3'" v-for="(index2,row) in item.items">
85
- <label style="margin-top: 0.7em" for="row.label" :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{row.label}}</label>
86
- <input @blur ="check_disable" :class="item.items.length%2 == 0?'col-xs-1': 'col-xs-1'" :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio" :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value" v-model="data.fields[index].value">
87
- </div>
88
- </div>
89
- </div>
90
-
91
- <!--select-->
92
- <div v-if="item.type==='select'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
93
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
94
- <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur ="check_disable" @change="select_change(index),disabled_check(index,data.fields[index].required,data.fields[index].value)" :readonly="item.readonly" :disable="item.disabled" :value.sync="data.fields[index].value" v-model="data.fields[index].value"
95
- :options='item.options' :valueSingle="true"></input-select>
96
-
97
- </div>
98
-
99
- <!--checkbox-->
100
- <div v-if="item.type==='checkbox'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
101
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
102
- <div style="margin-top: 0.7em" :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'" v-for="(index2,row) in item.items">
103
- <label class="font-size form-group col-sm-6">{{row.label}}</label>
104
- <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6" :id="row.label" v-model="data.fields[index].items[index2].value">
105
- </div>
106
- </div>
107
-
108
-
109
- </div>
110
- </div>
111
- <div class="form-group col-sm-11" v-show="isshow">
112
- <label class="text-left font">现场照片</label>
113
-
114
- <div class="auto">
115
- <div class="panel" style="padding: 10px 10px 5px 10px;">
116
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
117
- <div class="row" style="height: 240px;overflow: scroll;top: 1px" >
118
- <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 35px" v-for="(index,img) in model.f_overall_imgs">
119
- <img-self :src="img.f_overall_path" alt="现场照片" :width="140" :height="170"></img-self>
120
- <img src="../../../assets/删除.png" @click="delfile('f_overall_path', img.f_overall_path,index)" style="width: 15px;margin-top: -80px" alt="">
121
- </div>
122
- </div>
123
- <div class="row text-right div-photo">
124
- <button type="button" name="button" class="btn btn-photo" @click="takePic('f_overall_path', '现场照片')">拍照</button>
125
- <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall_path', '总体安检照片1')">拍照</button>-->
126
- <!--&nbsp;&nbsp;&nbsp;&nbsp;<img src="../../../assets/remove.png" :class="style__" @click="delfile('f_overall_path', img.f_overall_path)" style="width: 25%;"></img>-->
127
- </div>
128
- </div>
129
- </div>
130
- </div>
131
- </div>
132
- <div class="form-group col-sm-11" v-show="isshow">
133
- <label class="text-left font">用户签名</label>
134
- <div class="auto">
135
- <div class="panel">
136
- <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
137
- <div class="row" style="height: 240px;overflow: scroll;top: 1px">
138
- <div class="col-sm-4">
139
- <img :src="model.f_sign_path" :width="200" :height="150" />
140
- </div>
141
- </div>
142
- <div class="row text-right div-photo">
143
- <button type="button" name="button" class="btn btn-primary btn-photo" @click="sign">签名</button>
144
- </div>
145
- </div>
146
- </div>
147
- </div>
148
- </div>
149
- <div class="form-group col-sm-11" v-show="kchege&&model.f_user_type=='非民用'">
150
- <input type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#" @click="gotohetong('民用')">居民天然气供用气合同</a></label>
151
- </div>
152
- <div class="form-group col-sm-11" v-show="kchege&&model.f_user_type=='民用'">
153
- <input type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#" @click="gotohetong('非民用1')">天然气工程建设安装合同</a>,<a href="#" @click="gotohetong('非民用2')">管道燃气供用气合同</a></label>
154
- </div>
155
- <div class="form-group col-sm-11" v-show="kcbuhege">
156
- <div class="col-sm-12 form-group">
157
- <label class="control-label col-sm-2">不合格原因:</label>
158
- <div class="col-sm-10">
159
- <textarea
160
- class="form-control"
161
- v-model="model.f_buhege_reason">
162
- </textarea>
163
- </div>
164
- </div>
165
-
166
-
167
- </div>
168
- <div class="col-sm-11 form-group">
169
- <div class="form-group col-sm-6">
170
- <label class=" col-sm-4 control-label">分公司:</label>
171
- <div class="col-sm-5">
172
- <input class="form-control" type="text" v-model="model.f_filiale" disabled>
173
- </div>
174
- </div>
175
- <div class="col-sm-6 form-group">
176
- <label class="control-label col-sm-6">部门:</label>
177
- <div class="col-sm-5">
178
- <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
179
- </div>
180
- </div>
181
- </div>
182
- <div class="col-sm-11 form-group">
183
- <div class="col-sm-6 form-group">
184
- <label class="control-label col-sm-4">操作日期:</label>
185
- <div class="col-sm-5">
186
- <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
187
- </div>
188
- </div>
189
- <div class="col-sm-6 form-group">
190
- <label class="control-label col-sm-6">操作人:</label>
191
- <div class="col-sm-5">
192
- <input type="text" class="form-control" disabled v-model="model.f_operator"/>
193
- </div>
194
- </div>
195
- </div>
196
-
197
- </form>
198
- </validator>
199
- <div class="from-group col-xs-12">
200
- <center>
201
- <div v-for="(index,button) in data.buttons" :class="[data.buttons.length==4?'col-xs-3':'',data.buttons.length==3?'col-xs-4':'',data.buttons.length==2?'col-xs-6':'']">
202
- <!-- 按钮组 -->
203
- <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
204
- type="button" @click="clicked(index,button)" style="border-radius:5px; "
205
- :class="[(button.button_name==='提交'||button.button_name==='下发')&&disable_button?'btn btn-default':'btn btn-primary',data.buttons.length==4 ? 'col-xs-2 col-xs-offset-1':'',data.buttons.length==3 ? 'col-xs-2 col-xs-offset-2':'',data.buttons.length==2 ? 'col-xs-4 col-xs-offset-2':'']">
206
- {{button.button_name}}
207
- </button>
208
- </div>
209
- </center>
210
- </div>
211
- <div class="form-group col-xs-12" style="height: 10px;width: 100%"></div>
212
- <!-- 模态框 -->
213
- <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
214
- <header slot="modal-header" class="modal-header">
215
- <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
216
- <h4 class="modal-title">{{model.button.button_name}}</h4>
217
- </header>
218
- <article slot="modal-body" class="modal-body">
219
- <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
220
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
221
- <div class="col-sm-7">
222
- <!--select-->
223
- <input-select v-if="button_field.type=='select'" :value.sync="data.buttons[model.button.button_index].button_fields[index].value" v-model="data.buttons[model.button.button_index].button_fields[index].value"
224
- :options='button_field.options'></input-select>
225
- <!-- input -->
226
- <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
227
- </div>
228
- </div>
229
- </article>
230
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
231
- <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
232
- </footer>
233
- </modal>
234
- </div>
235
- </template>
236
- <script>
237
-
238
- // Date格式化
239
- Date.prototype.Format = function (fmt) {
240
- var o = {
241
- "M+": this.getMonth() + 1, //月份
242
- "d+": this.getDate(), //日
243
- "H+": this.getHours(), //小时
244
- "m+": this.getMinutes(), //分
245
- "s+": this.getSeconds(), //秒
246
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
247
- "S": this.getMilliseconds() //毫秒
248
- };
249
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
250
- for (var k in o)
251
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
252
- return fmt;
253
- }
254
-
255
- import Vue from 'vue'
256
- import * as Util from '../../Util'
257
- export default {
258
- title: '报建业务通用组件',
259
- props: ['data'],
260
-
261
- data () {
262
- return {
263
- isshow:true,
264
- kchege:false,
265
- kcbuhege:false,
266
- model:{
267
-
268
- button:{
269
- button_name:null,
270
- button_index:null
271
- },
272
- f_filiale:null,
273
- f_parentname:null,
274
- f_operate_date:null,
275
- f_operator:null
276
- },
277
- countmoney:[0,0,0],
278
- data:null,
279
- showmodal:false,
280
- disable_button:true
281
- }
282
- },
283
- created(){
284
-
285
- // 初始化数据
286
- this.initializtion()
287
- },
288
- methods: {
289
- gotohetong(val){
290
- var _this = this
291
- var pardate = {
292
- _this: _this,
293
- title: '合同',
294
- safe: true
295
- }
296
- _this.$dispatch('gotoson',pardate)
297
- if (val=='民用'){
298
- _this.$goto('minyong', {},'self')
299
- }else if (val=='非民用1'){
300
- _this.$goto('feiminyongv', {},'self')
301
- }else {
302
- _this.$goto('feiminyongvv', {},'self')
303
- }
304
- },
305
- cameraCallBack(prop, fileName) {
306
- if(prop == 'f_overall_path'){
307
- let f_overall_path = fileName + '?' + Math.random()
308
- HostApp.__this__.model.f_overall_imgs.push({
309
- f_overall_path:f_overall_path,
310
- f_overall_name:this.data.title
311
- })
312
- }else{
313
- HostApp.__this__.model[prop] = fileName + '?' + Math.random()
314
- }
315
- HostApp.__callback__ = null
316
- HostApp.__this__ = null
317
- },
318
- takePic(prop, title,index) {
319
- HostApp.__callback__ = this.cameraCallBack
320
- HostApp.__this__ = this
321
- console.log("prop:" + prop)
322
- console.log("this.prop:" + this.model[prop])
323
- let fileName
324
- if(prop == 'f_overall_path'){
325
- if (!this.model.f_overall_imgs[index] || this.model.f_overall_imgs[index].f_overall_path.includes("nopic.png")) {
326
- fileName = Util.guid() + '-' + prop + '.jpg'
327
- } else {
328
- fileName = Util.getFileName(this.model.f_overall_imgs[index].f_overall_path)
329
- }
330
- }else{
331
- if (!this.model[prop] || this.model[prop].includes("nopic.png")) {
332
- fileName = Util.guid() + '-' + prop + '.jpg'
333
- } else {
334
- fileName = Util.getFileName(this.model[prop])
335
- }
336
- }
337
-
338
- HostApp._open_a_page({
339
- type: 'boomerang',
340
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
341
- param: {
342
- file: fileName,
343
- requestCode: 111,
344
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
345
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
346
- }
347
- })
348
- },
349
- signCallback(prop, fileName) {
350
- // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
351
- HostApp.__this__.$set('model.f_sign_path', fileName)
352
- HostApp.__callback__ = null
353
- HostApp.__this__ = null
354
- },
355
- delAudioFile(prop, fileName) {
356
- if (!fileName)
357
- return
358
- else {
359
- HostApp.delfile(fileName)
360
- this.model[prop] = null
361
- }
362
- },
363
- sign() {
364
- // if(!this.model.f_read_instructions){
365
- // this.$showMessage('请先阅读并勾选用户须知内容后进行签名!')
366
- // return
367
- // }
368
- this.delAudioFile('f_sign_path', this.model.f_sign_path)
369
- let prop = 'f_sign_path'
370
- let idx = 'aofeng'
371
- let fileName
372
- if (!this.model.f_sign_path) {
373
- fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
374
- } else {
375
- fileName = Util.getFileName(this.model.f_sign_path)
376
- }
377
- HostApp.__callback__ = this.signCallback
378
- HostApp.__this__ = this
379
- HostApp.getSignature({
380
- file: fileName,
381
- requestCode: 111,
382
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
383
- })
384
- },
385
- delfile(prop, fileName,index) {
386
- if (fileName == Vue.nopic)
387
- return
388
- else {
389
- if(prop == 'f_overall_path'){
390
- this.model.f_overall_imgs.splice(index,1)
391
- HostApp.delfile(fileName)
392
- }else{
393
- HostApp.delfile(fileName)
394
- this.model[prop] = Vue.nopic
395
- }
396
- }
397
- },
398
- // 初始化数据
399
- initializtion(){
400
- if (this.data.title=='安装通气'){
401
- this.isshow=false
402
- }
403
- console.log("5555555555555")
404
- console.log(this.isshow)
405
- Vue.nopic = 'file:///android_asset/nopic.png'
406
- if (!this.model.f_sign_path)
407
- this.$set('model.f_sign_path', Vue.nopic)
408
- console.log('!this.model.f_overall_imgs==>'+!this.model.f_overall_imgs)
409
- if (!this.model.f_overall_imgs){
410
- let imgs = []
411
- // imgs.push({f_overall_path:Vue.nopic})
412
- this.$set('model.f_overall_imgs', imgs)
413
- console.log('进入setmodel.f_overall_imgs')
414
- }
415
- console.log('进入serviceview的initializtion方法')
416
- console.log(JSON.stringify(this.data))
417
- // let temp = this.data
418
- // let temp = JSON.parse()
419
- // this.data = temp
420
- // datepicker 没有值给当时值
421
- if(this.data.fields){
422
- for(let i=0;i<this.data.fields.length;i++){
423
- if (this.data.fields[i].value){
424
- if (this.data.fields[i].value=='null'){
425
- console.log("看看为空的字段名"+this.data.fields[i].label)
426
- this.data.fields[i].value=null
427
- console.log("赋值完成")
428
- }
429
- }
430
- if(this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
431
- this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
432
- }
433
- }
434
- }
435
-
436
- if (this.data.filiale) {
437
- this.model.f_filiale = this.data.f_filiale
438
- } else if (Vue.user.orgs) {
439
- this.model.f_filiale = Vue.user.orgs
440
- } else {
441
- this.model.f_filiale = Vue.user.f_fengongsi
442
- }
443
- if (this.data.f_parentname) {
444
- this.model.f_parentname = this.data.f_parentname
445
- } else if (Vue.user.f_department_name) {
446
- this.model.f_parentname = Vue.user.f_department_name
447
- } else {
448
- this.model.f_parentname = Vue.user.f_parentname
449
- }
450
- if (this.data.operate_date) {
451
- this.model.f_operate_date = this.data.operate_date
452
- } else {
453
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
454
- }
455
- if (this.data.operator) {
456
- this.model.f_operator = this.data.operator
457
- } else {
458
- this.model.f_operator = Vue.user.name
459
- }
460
- },
461
- // 模态框点击确定按钮
462
- acknowledge(){
463
- for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
464
- this.model.button.button_fields[this.data.buttons[this.model.button.button_index].button_fields[i].field] = this.data.buttons[this.model.button.button_index].button_fields[i].value
465
- }
466
- this.showmodal=false
467
- this.$dispatch('button',this.model)
468
- },
469
- // 关闭模态框
470
- closemodal(){
471
- this.showmodal=false
472
- },
473
- watchmoney(val1,val2) {
474
- console.log("监听改变的值")
475
- console.log(val1)
476
- console.log(val2)
477
- },
478
- // 点击按钮
479
- clicked(index,button){
480
- console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
481
- // 组织model.fields数据
482
- let modeldatas = {}
483
- for(let i=0;i<this.data.fields.length;i++){
484
- console.log(JSON.stringify(this.data.fields[i]))
485
- // checkbox特殊处理
486
- if(this.data.fields[i].type==='checkbox'){
487
- for(let j=0;j<this.data.fields[i].items.length;j++){
488
- modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
489
- }
490
- }else{
491
- modeldatas[this.data.fields[i].field]=this.data.fields[i].value
492
- }
493
- }
494
- modeldatas.f_process_id = this.data.f_process_id
495
- modeldatas.f_filiale = this.model.f_filiale
496
- modeldatas.f_parentname = this.model.f_parentname
497
- modeldatas.f_operator = this.model.f_operator
498
- modeldatas.f_operate_date = this.model.f_operate_date
499
- modeldatas.f_overall_imgs = this.model.f_overall_imgs
500
- modeldatas.f_sign_path = this.model.f_sign_path
501
- this.model = null
502
- this.model = modeldatas
503
- // 初始化model.button数据
504
- let buttondatas = {
505
- button_fields:{}
506
- }
507
- buttondatas.button_name=button.button_name
508
- buttondatas.button_index=index
509
- if(button.button_fields){
510
- for(let i=0;i<button.button_fields.length;i++){
511
- buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
512
- }
513
- }
514
- this.model.button =buttondatas
515
-
516
- if(button.button_name==='退回'){
517
- this.showmodal=true
518
- }else if(button.button_name==='下发'){
519
- this.showmodal=true
520
- }else{
521
- this.$dispatch('button',this.model)
522
- }
523
- },
524
- // 级联操作预留
525
- select_change(index){
526
- this.$dispatch('select_cascade',index)
527
- },
528
- // 检测按钮的disable
529
- disabled_check(index,required,value){
530
- console.log("被检测到的值是什么")
531
- console.log(index)
532
- console.log(required)
533
- console.log(value)
534
- console.log(this.data.title)
535
- if (this.data.title=='现场勘查定价'){
536
- if (index==6||index==7||index==5){
537
- this.countmoney[index-5]=parseInt(this.data.fields[index].value)
538
- console.log(this.data.fields[index].value)
539
- console.log("做出了改变")
540
- }
541
- console.log(JSON.stringify(this.countmoney))
542
- let money=0
543
- for (let i = 0; i < this.countmoney.length; i++) {
544
- money+=this.countmoney[i]
545
- }
546
- this.$set('data.fields[8].value',money)
547
- this.$set('data.fields[9].value',money)
548
- if (index==10){
549
- console.log("1111111111"+value)
550
- if (value=='合格'){
551
- this.kchege=true
552
- this.kcbuhege=false
553
- console.log("1111111111"+this.kchege)
554
- }else if (value=='不合格'){
555
- this.kcbuhege=true
556
- this.kchege=false
557
- console.log("1111111111"+this.kcbuhege)
558
- }
559
- }
560
- }
561
- if(required&&value){
562
- this.disable_button = false
563
-
564
- let fields = this.data.fields
565
- let flag = false
566
- for(let i = 0;i<fields.length;i++){
567
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
568
- flag = true
569
- }
570
- }
571
- this.disable_button = flag
572
- }
573
- }
574
- },
575
- watch:{
576
- 'data.filed[12].value'(val){
577
- console.log("变动")
578
- if (this.data.title=='现场勘查定价'){
579
-
580
- }
581
- },
582
- 'data.operate_date'(){
583
- if(this.data.filiale){
584
- this.model.f_filiale = this.data.filiale
585
- }else{
586
- this.model.f_filiale = Vue.user.f_parentname
587
- }
588
- if(this.data.f_parentname){
589
- this.model.f_parentname = this.data.f_parentname
590
- }else{
591
- this.model.f_parentname = Vue.user.f_parentname
592
- }
593
- if(this.data.operate_date){
594
- this.model.f_operate_date = this.data.operate_date
595
- }else{
596
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
597
- }
598
- if(this.data.operator){
599
- this.model.f_operator = this.data.operator
600
- }else{
601
- this.model.f_operator = Vue.user.name
602
- }
603
- },
604
- deep:true
605
- },
606
- computed: {
607
- // 输入后按钮检测
608
- check_disable: function (){
609
- let fields = this.data.fields
610
- let flag = false
611
- for(let i = 0;i<fields.length;i++){
612
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
613
- flag = true
614
- }
615
- }
616
- this.disable_button = flag
617
- }
618
- }
619
- }
620
- </script>
1
+ <template>
2
+ <div class="auto select-overspread" v-if="refresh">
3
+ <div v-if="data.back_reason" class="panel panel-info">
4
+ <span style="color: red"> 请注意被退回原因为:{{ data.back_reason }}</span>
5
+ </div>
6
+ <validator name="v">
7
+ <form class="form-horizontal">
8
+ <div class="col-sm-11 form-group">
9
+ <div v-for="(index,item) in data.fields">
10
+ <!--input-->
11
+ <div v-if="item.type==='input' ||item.type === 'tel' " v-show="!item.hidden"
12
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
13
+ <label
14
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{
15
+ item.label
16
+ }}:</label>
17
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
18
+ <input class="form-control"
19
+ :type="item.type"
20
+ v-model="data.fields[index].value"
21
+ :placeholder="item.placeholder"
22
+ :value="data.fields[index].value"
23
+ :readonly="item.readonly"
24
+ :disable="item.disable"
25
+ @change="select_change(index),disabled_check(index,data.fields[index].required,data.fields[index].value)"
26
+ @blur="check_disable"
27
+ />
28
+ </div>
29
+ </div>
30
+ <!--number-->
31
+ <div v-if="item.type==='number'" v-show="!item.hidden"
32
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
33
+ <label
34
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{
35
+ item.label
36
+ }}:</label>
37
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
38
+ <input class="form-control"
39
+ :type="item.type"
40
+ v-model="data.fields[index].value"
41
+ :placeholder="item.placeholder"
42
+ :value="data.fields[index].value"
43
+ :readonly="item.readonly"
44
+ :disable="item.disable"
45
+ @change="disabled_check(index,data.fields[index].required,data.fields[index].value)"
46
+ @blur="check_disable"
47
+ />
48
+ </div>
49
+ </div>
50
+
51
+ <!--时间datepicker-->
52
+ <div v-if="item.type==='datepicker'"
53
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-xs-12 form-group']">
54
+ <label style="margin-top: 0.7em"
55
+ :class="item.label_bootstraped?item.label_bootstraped +' control-label':'control-label col-sm-6'">{{
56
+ item.label
57
+ }}:</label>
58
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
59
+ <datepicker
60
+ :placeholder="item.placeholder"
61
+ :value.sync="data.fields[index].value"
62
+ :format="'yyyy-MM-dd HH:mm:ss'"
63
+ v-model="data.fields[index].value"
64
+ :width="'100%'"
65
+ class="form-control"
66
+ :readonly="item.readonly"
67
+ :disabled="item.disabled"
68
+ @blur="check_disable"
69
+ :show-reset-button="reset">
70
+ </datepicker>
71
+ </div>
72
+ </div>
73
+
74
+
75
+ <!--textarea-->
76
+ <div v-if="item.type==='textarea'"
77
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
78
+ <label
79
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{
80
+ item.label
81
+ }}:</label>
82
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
83
+ <textarea
84
+ :readonly="item.readonly"
85
+ :disabled="item.disabled"
86
+ class="form-control"
87
+ :rows="item.rows"
88
+ v-model="data.fields[index].value"
89
+ @change="disabled_check(index,data.fields[index].required,data.fields[index].value)"
90
+ @blur="check_disable"
91
+ >
92
+ </textarea>
93
+ </div>
94
+ </div>
95
+
96
+ <!--radio-->
97
+ <div v-if="item.type==='radio'"
98
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
99
+ <label v-if="item.label"
100
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{
101
+ item.label
102
+ }}:</label>
103
+ <div class="col-xs-12">
104
+ <div
105
+ :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-xs-5': 'col-xs-3'"
106
+ v-for="(index2,row) in item.items">
107
+ <label style="margin-top: 0.7em" for="row.label"
108
+ :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{ row.label }}</label>
109
+ <input @blur="check_disable" :class="item.items.length%2 == 0?'col-xs-1': 'col-xs-1'"
110
+ :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio"
111
+ :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value"
112
+ v-model="data.fields[index].value">
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+ <!--select-->
118
+ <div v-if="item.type==='select'"
119
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
120
+ <label
121
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{
122
+ item.label
123
+ }}:</label>
124
+ <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur="check_disable"
125
+ @change="select_change(index),disabled_check(index,data.fields[index].required,data.fields[index].value)"
126
+ :readonly="item.readonly" :disable="item.disabled" :value.sync="data.fields[index].value"
127
+ v-model="data.fields[index].value"
128
+ :options='item.options' :valueSingle="true"></input-select>
129
+
130
+ </div>
131
+
132
+ <!--checkbox-->
133
+ <div v-if="item.type==='checkbox'"
134
+ :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
135
+ <label v-if="item.label"
136
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label }}</label>
137
+ <div style="margin-top: 6px"
138
+ :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'"
139
+ v-for="(index2,row) in item.items">
140
+ <label class="font-size form-group col-sm-6">{{ row.label }}</label>
141
+ <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6"
142
+ :id="row.label" v-model="data.fields[index].items[index2].value" @click="checkboxSelect(index,index2)">
143
+ </div>
144
+ </div>
145
+
146
+
147
+ </div>
148
+ </div>
149
+ <div class="form-group col-sm-11">
150
+ <label class="text-left font">现场照片</label>
151
+
152
+ <div class="auto">
153
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
154
+ <div class="panel-body panel-self"
155
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
156
+ <div class="row" style="height: 240px;overflow: scroll;top: 1px">
157
+ <div class="col-xs-4 col-sm-3 col-md-2" style="margin-bottom: 35px"
158
+ v-for="(index,img) in model.f_overall_imgs">
159
+ <img-self :src="img.f_overall_path" alt="现场照片" :width="140" :height="170"></img-self>
160
+ <img src="../../../assets/删除.png" @click="delfile('f_overall_path', img.f_overall_path,index)"
161
+ style="width: 15px;margin-top: -80px" alt="">
162
+ </div>
163
+ </div>
164
+ <div class="row text-right div-photo">
165
+ <button type="button" name="button" class="btn btn-photo" @click="takePic('f_overall_path', '现场照片')">
166
+ 拍照
167
+ </button>
168
+ <!--<button type="button" name="button" class="btn btn-primary btn-photo" @click="takePic('f_overall_path', '总体安检照片1')">拍照</button>-->
169
+ <!--&nbsp;&nbsp;&nbsp;&nbsp;<img src="../../../assets/remove.png" :class="style__" @click="delfile('f_overall_path', img.f_overall_path)" style="width: 25%;"></img>-->
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </div>
174
+ </div>
175
+ <div class="form-group col-sm-11" v-show="true">
176
+ <label class="text-left font">用户签名</label>
177
+ <div class="auto">
178
+ <div class="panel">
179
+ <div class="panel-body panel-self"
180
+ style="background-color: #F8F8F8;width: 100%;height: 260px;position: relative">
181
+ <div class="row" style="height: 240px;overflow: scroll;top: 1px">
182
+ <div class="col-sm-4">
183
+ <img :src="model.f_sign_path" :width="200" :height="150"/>
184
+ </div>
185
+ </div>
186
+ <div class="row text-right div-photo">
187
+ <button type="button" name="button" class="btn btn-primary btn-photo" @click="sign">签名</button>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <!-- <input @click="gotohetong('民用')" type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#" @click="gotohetong('民用')">居民天然气供用气合同</a></label>-->
195
+ <div class="form-group col-sm-11" v-show="kchege&&data.f_user_type=='民用'&&data.title!='现场勘查'">
196
+ <input type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#"
197
+ @click="gotohetong('民用')">居民天然气供用气合同</a></label>
198
+ </div>
199
+ <div class="form-group col-sm-11" v-show="kchege&&(data.f_user_type=='非民用'||data.title=='现场勘查')">
200
+ <input type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#"
201
+ @click="gotohetong('非民用1')">天然气工程建设安装合同</a>,<a
202
+ href="#" @click="gotohetong('非民用2')">管道燃气供用气合同</a></label>
203
+ </div>
204
+ <div class="form-group col-sm-11" v-show="kcbuhege">
205
+ <div class="col-sm-12 form-group">
206
+ <label class="control-label col-sm-2">不合格原因:</label>
207
+ <div class="col-sm-10">
208
+ <textarea
209
+ class="form-control"
210
+ v-model="model.f_buhege_reason">
211
+ </textarea>
212
+ </div>
213
+ </div>
214
+
215
+
216
+ </div>
217
+
218
+
219
+
220
+ <div class="col-sm-11 form-group" v-for="item in onetomany" style="text-align: center">
221
+
222
+ <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;" @click="gotoOneToMany(item)">前往{{item.title}}</button>
223
+
224
+ </div>
225
+
226
+ <div class="col-sm-11 form-group">
227
+ <div class="form-group col-sm-6">
228
+ <label class=" col-sm-4 control-label">分公司:</label>
229
+ <div class="col-sm-5">
230
+ <input class="form-control" type="text" v-model="model.f_filiale" disabled>
231
+ </div>
232
+ </div>
233
+ <div class="col-sm-6 form-group">
234
+ <label class="control-label col-sm-6">部门:</label>
235
+ <div class="col-sm-5">
236
+ <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ <div class="col-sm-11 form-group">
241
+ <div class="col-sm-6 form-group">
242
+ <label class="control-label col-sm-4">操作日期:</label>
243
+ <div class="col-sm-5">
244
+ <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
245
+ </div>
246
+ </div>
247
+ <div class="col-sm-6 form-group">
248
+ <label class="control-label col-sm-6">操作人:</label>
249
+ <div class="col-sm-5">
250
+ <input type="text" class="form-control" disabled v-model="model.f_operator"/>
251
+ </div>
252
+ </div>
253
+ </div>
254
+
255
+ </form>
256
+ </validator>
257
+ <div class="from-group col-xs-12">
258
+ <center>
259
+ <div v-for="(index,button) in data.buttons"
260
+ :class="[data.buttons.length==4?'col-xs-3':'',data.buttons.length==3?'col-xs-4':'',data.buttons.length==2?'col-xs-6':'']">
261
+ <!-- 按钮组 -->
262
+ <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
263
+ type="button" @click="clicked(index,button)" style="border-radius:5px; "
264
+ :class="[(button.button_name==='提交'||button.button_name==='下发')&&disable_button?'btn btn-default':'btn btn-primary',data.buttons.length==4 ? 'col-xs-2 col-xs-offset-1':'',data.buttons.length==3 ? 'col-xs-2 col-xs-offset-2':'',data.buttons.length==2 ? 'col-xs-4 col-xs-offset-2':'']">
265
+ {{ button.button_name }}
266
+ </button>
267
+ </div>
268
+ </center>
269
+ </div>
270
+ <div class="form-group col-xs-12" style="height: 50px;width: 100%"></div>
271
+ <!-- 模态框 -->
272
+ <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
273
+ <header slot="modal-header" class="modal-header">
274
+ <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
275
+ <h4 class="modal-title">{{ model.button.button_name }}</h4>
276
+ </header>
277
+ <article slot="modal-body" class="modal-body">
278
+ <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
279
+ <label class="control-label col-sm-3" style="margin-top: 10px">{{ button_field.label }}:</label>
280
+ <div class="col-sm-7">
281
+ <!--select-->
282
+ <input-select v-if="button_field.type=='select'"
283
+ :value.sync="data.buttons[model.button.button_index].button_fields[index].value"
284
+ v-model="data.buttons[model.button.button_index].button_fields[index].value"
285
+ :options='button_field.options'></input-select>
286
+ <!-- input -->
287
+ <input v-else type="text" class="form-control"
288
+ v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
289
+ </div>
290
+ </div>
291
+ </article>
292
+ <footer slot="modal-footer" style="border-top:none" class="modal-footer">
293
+ <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
294
+ </footer>
295
+ </modal>
296
+ </div>
297
+ </template>
298
+ <script>
299
+
300
+ // Date格式化
301
+
302
+
303
+ Date.prototype.Format = function (fmt) {
304
+ var o = {
305
+ "M+": this.getMonth() + 1, //月份
306
+ "d+": this.getDate(), //日
307
+ "H+": this.getHours(), //小时
308
+ "m+": this.getMinutes(), //分
309
+ "s+": this.getSeconds(), //秒
310
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
311
+ "S": this.getMilliseconds() //毫秒
312
+ };
313
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
314
+ for (var k in o)
315
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
316
+ return fmt;
317
+ }
318
+
319
+ import Vue from 'vue'
320
+ import * as Util from '../../Util'
321
+ import {HttpResetClass} from 'vue-client'
322
+ export default {
323
+ title: '报建业务通用组件',
324
+ props: ['data', 'model'],
325
+
326
+ data() {
327
+ return {
328
+ isshow: true,
329
+ kchege: false,
330
+ kcbuhege: false,
331
+ countmoney: [0, 0, 0],
332
+ data: null,
333
+ showmodal: false,
334
+ disable_button: true,
335
+ onetomany: [],
336
+ refresh: true // 控制重新渲染
337
+ }
338
+ },
339
+ created() {
340
+
341
+ // 初始化数据
342
+ this.initializtion()
343
+ },
344
+ methods: {
345
+ gotoOneToMany (item){
346
+ item.f_process_id = this.data.f_process_id
347
+ item.f_filiale = this.data.f_filiale
348
+ item.f_apply_num = this.data.f_apply_num
349
+ this.$dispatch('onetomany', item)
350
+ },
351
+ gotohetong (val) {
352
+ console.log(val)
353
+ console.log("进入goto")
354
+ this.$dispatch('gotonewpage', val)
355
+ },
356
+ cameraCallBack (prop, fileName) {
357
+ if (prop == 'f_overall_path') {
358
+ let f_overall_path = fileName + '?' + Math.random()
359
+ HostApp.__this__.model.f_overall_imgs.push({
360
+ f_overall_path: f_overall_path,
361
+ f_overall_name: this.data.title
362
+ })
363
+ } else {
364
+ HostApp.__this__.model[prop] = fileName + '?' + Math.random()
365
+ }
366
+ HostApp.__callback__ = null
367
+ HostApp.__this__ = null
368
+ },
369
+ takePic (prop, title, index) {
370
+ HostApp.__callback__ = this.cameraCallBack
371
+ HostApp.__this__ = this
372
+ console.log("prop:" + prop)
373
+ console.log("this.prop:" + this.model[prop])
374
+ let fileName
375
+ if (prop == 'f_overall_path') {
376
+ if (!this.model.f_overall_imgs[index] || this.model.f_overall_imgs[index].f_overall_path.includes("nopic.png")) {
377
+ fileName = Util.guid() + '-' + prop + '.jpg'
378
+ } else {
379
+ fileName = Util.getFileName(this.model.f_overall_imgs[index].f_overall_path)
380
+ }
381
+ } else {
382
+ if (!this.model[prop] || this.model[prop].includes("nopic.png")) {
383
+ fileName = Util.guid() + '-' + prop + '.jpg'
384
+ } else {
385
+ fileName = Util.getFileName(this.model[prop])
386
+ }
387
+ }
388
+
389
+ HostApp._open_a_page({
390
+ type: 'boomerang',
391
+ page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
392
+ param: {
393
+ file: fileName,
394
+ requestCode: 111,
395
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
396
+ watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
397
+ }
398
+ })
399
+ },
400
+ signCallback (prop, fileName) {
401
+ // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
402
+ HostApp.__this__.$set('model.f_sign_path', fileName)
403
+ HostApp.__callback__ = null
404
+ HostApp.__this__ = null
405
+ },
406
+ delAudioFile (prop, fileName) {
407
+ if (!fileName)
408
+ return
409
+ else {
410
+ HostApp.delfile(fileName)
411
+ this.model[prop] = null
412
+ }
413
+ },
414
+ sign () {
415
+ this.delAudioFile('f_sign_path', this.model.f_sign_path)
416
+ let prop = 'f_sign_path'
417
+ let idx = 'aofeng'
418
+ let fileName
419
+ if (!this.model.f_sign_path) {
420
+ fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
421
+ } else {
422
+ fileName = Util.getFileName(this.model.f_sign_path)
423
+ }
424
+ HostApp.__callback__ = this.signCallback
425
+ HostApp.__this__ = this
426
+ HostApp.getSignature({
427
+ file: fileName,
428
+ requestCode: 111,
429
+ callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
430
+ })
431
+ },
432
+ delfile (prop, fileName, index) {
433
+ if (fileName == Vue.nopic)
434
+ return
435
+ else {
436
+ if (prop == 'f_overall_path') {
437
+ this.model.f_overall_imgs.splice(index, 1)
438
+ HostApp.delfile(fileName)
439
+ } else {
440
+ HostApp.delfile(fileName)
441
+ this.model[prop] = Vue.nopic
442
+ }
443
+ }
444
+ },
445
+ // 初始化数据
446
+ initializtion () {
447
+ if (this.data.title == '现场勘查' || this.data.title == '现场勘查定价') {
448
+ this.isshow = false
449
+ }
450
+ console.log("5555555555555")
451
+ console.log("f_apply_num",this.data.f_apply_num)
452
+ console.log("f_filiale",this.data.f_filiale)
453
+ console.log(this.data.f_user_type)
454
+ console.log(this.isshow)
455
+ Vue.nopic = 'file:///android_asset/nopic.png'
456
+ if (!this.model.f_sign_path)
457
+ this.$set('model.f_sign_path', Vue.nopic)
458
+ console.log('!this.model.f_overall_imgs==>' + !this.model.f_overall_imgs)
459
+ if (!this.model.f_overall_imgs) {
460
+ let imgs = []
461
+ this.$set('model.f_overall_imgs', imgs)
462
+ console.log('进入setmodel.f_overall_imgs')
463
+ }
464
+ console.log('进入serviceview的initializtion方法')
465
+ console.log(JSON.stringify(this.data))
466
+ if(this.data.onetomany){
467
+ console.log(JSON.stringify(this.data.onetomany))
468
+ this.onetomany = this.data.onetomany
469
+ }
470
+ if (this.data.fields) {
471
+ for (let i = 0; i < this.data.fields.length; i++) {
472
+ if (this.data.fields[i].value) {
473
+ if (this.data.fields[i].value == 'null') {
474
+ console.log("看看为空的字段名" + this.data.fields[i].label)
475
+ this.data.fields[i].value = null
476
+ console.log("赋值完成")
477
+ }
478
+ }
479
+ if (this.data.fields[i].type === 'datepicker' && !this.data.fields[i].value) {
480
+ this.data.fields[i].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
481
+ }
482
+ if(this.data.f_user_type ==='非民用'){
483
+ this.data.fields[i].required = false
484
+ }
485
+ if (this.data.fields[i].label==='气价名称'){
486
+ this.data.fields[i].options=Vue.prototype.$qijia
487
+ }
488
+ if (this.data.fields[i].label==='气表品牌'){
489
+ this.data.fields[i].options=Vue.prototype.$pinpai
490
+ }
491
+ }
492
+ }
493
+
494
+ if (this.data.filiale) {
495
+ this.model.f_filiale = this.data.f_filiale
496
+ } else if (Vue.user.orgs) {
497
+ this.model.f_filiale = Vue.user.orgs
498
+ } else {
499
+ this.model.f_filiale = Vue.user.f_fengongsi
500
+ }
501
+ if (this.data.f_parentname) {
502
+ this.model.f_parentname = this.data.f_parentname
503
+ } else if (Vue.user.f_department_name) {
504
+ this.model.f_parentname = Vue.user.f_department_name
505
+ } else {
506
+ this.model.f_parentname = Vue.user.f_parentname
507
+ }
508
+ if (this.data.operate_date) {
509
+ this.model.f_operate_date = this.data.operate_date
510
+ } else {
511
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
512
+ }
513
+ if (this.data.operator) {
514
+ this.model.f_operator = this.data.operator
515
+ } else {
516
+ this.model.f_operator = Vue.user.name
517
+ }
518
+ },
519
+ // 模态框点击确定按钮
520
+ acknowledge () {
521
+ for (let i = 0; i < this.data.buttons[this.model.button.button_index].button_fields.length; i++) {
522
+ this.model.button.button_fields[this.data.buttons[this.model.button.button_index].button_fields[i].field] = this.data.buttons[this.model.button.button_index].button_fields[i].value
523
+ }
524
+ this.showmodal = false
525
+ this.$dispatch('button', this.model)
526
+ },
527
+ // 关闭模态框
528
+ closemodal () {
529
+ this.showmodal = false
530
+ },
531
+ watchmoney (val1, val2) {
532
+ console.log("监听改变的值")
533
+ console.log(val1)
534
+ console.log(val2)
535
+ },
536
+ // 点击按钮
537
+ clicked (index, button) {
538
+ console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
539
+ if (button.button_name=='提交') {
540
+ if (!this.model.f_overall_imgs || this.model.f_overall_imgs.length == 0){
541
+ this.$showMessage("必须有现场照片")
542
+ return;
543
+ }
544
+ if(Vue.nopic==this.model.f_sign_path){
545
+ this.$showMessage("必须有签名照片")
546
+ return;
547
+ }
548
+ this.model.f_overall_imgs.push({
549
+ f_overall_path: this.model.f_sign_path,
550
+ f_overall_name: this.data.title
551
+ })
552
+ }
553
+
554
+
555
+ // if ((this.data.title == '现场勘查' || this.data.title == '现场勘查定价') && button.button_name=='提交') {
556
+ // if (!this.model.f_overall_imgs || this.model.f_overall_imgs.length == 0){
557
+ // this.$showMessage("必须有现场照片")
558
+ // return;
559
+ // }
560
+ // }
561
+ if (this.kchege == 'true') {
562
+ console.log(this.model.f_hege)
563
+ if (this.model.f_hege != 'true') {
564
+ this.$showMessage("请勾选阅读合同")
565
+ return
566
+ }
567
+ }
568
+ // 组织model.fields数据
569
+ let modeldatas = {}
570
+ for (let i = 0; i < this.data.fields.length; i++) {
571
+ console.log(JSON.stringify(this.data.fields[i]))
572
+ // checkbox特殊处理
573
+ if (this.data.fields[i].type === 'checkbox') {
574
+ for (let j = 0; j < this.data.fields[i].items.length; j++) {
575
+ modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
576
+ }
577
+ } else {
578
+ modeldatas[this.data.fields[i].field] = this.data.fields[i].value
579
+ }
580
+ }
581
+ modeldatas.f_process_id = this.data.f_process_id
582
+ modeldatas.f_filiale = this.model.f_filiale
583
+ modeldatas.f_parentname = this.model.f_parentname
584
+ modeldatas.f_operator = this.model.f_operator
585
+ modeldatas.f_operate_date = this.model.f_operate_date
586
+ modeldatas.f_overall_imgs = this.model.f_overall_imgs
587
+ modeldatas.f_sign_path = this.model.f_sign_path
588
+ this.model = null
589
+ this.model = modeldatas
590
+ // 初始化model.button数据
591
+ let buttondatas = {
592
+ button_fields: {}
593
+ }
594
+ buttondatas.button_name = button.button_name
595
+ buttondatas.button_index = index
596
+ if (button.button_fields) {
597
+ for (let i = 0; i < button.button_fields.length; i++) {
598
+ buttondatas.button_fields[button.button_fields[i].field] = button.button_fields[i].value
599
+ }
600
+ }
601
+ this.model.button = buttondatas
602
+
603
+ if (button.button_name === '退回') {
604
+ this.showmodal = true
605
+ } else if (button.button_name === '下发') {
606
+ this.showmodal = true
607
+ } else {
608
+ this.$dispatch('button', this.model)
609
+ }
610
+ },
611
+ // 级联操作预留
612
+ select_change (index) {
613
+ this.$dispatch('select_cascade', index)
614
+ },
615
+ // 检测按钮的disable
616
+ disabled_check (index, required, value) {
617
+ console.log("被检测到的值是什么")
618
+ console.log(index)
619
+ console.log(required)
620
+ console.log(value)
621
+ console.log(this.data.title)
622
+ if (this.data.fields[index].label=='气表品牌'){
623
+ console.log("进入改变气表型号")
624
+ const pinpai = Vue.prototype.$pinpai.filter(res=>res.value===value);
625
+ const arr = Vue.prototype.$xinghao.filter(res=>res.id==pinpai[0].id)
626
+ this.$set(`data.fields[${index+1}].options`,arr)
627
+ }
628
+ if (this.data.title == '现场勘查') {
629
+ if (index == 4) {
630
+ if (value == '合格') {
631
+ this.kchege = true
632
+ this.kcbuhege = false
633
+ console.log("1111111111" + this.kchege)
634
+ } else if (value == '不合格') {
635
+ this.kcbuhege = true
636
+ this.kchege = false
637
+ console.log("1111111111" + this.kcbuhege)
638
+ }
639
+ }
640
+ }
641
+ if (this.data.title == '现场勘查定价') {
642
+ // if (index == 6 || index == 7 || index == 5) {
643
+ // this.countmoney[index - 5] = parseInt(this.data.fields[index].value)
644
+ // console.log(this.data.fields[index].value)
645
+ // console.log("做出了改变")
646
+ // }
647
+ // console.log(JSON.stringify(this.countmoney))
648
+ // let money = 0
649
+ // for (let i = 0; i < this.countmoney.length; i++) {
650
+ // money += this.countmoney[i]
651
+ // }
652
+ // this.$set('data.fields[8].value', money)
653
+ // this.$set('data.fields[9].value', money)
654
+ if (index == 7) {
655
+ console.log("1111111111" + value)
656
+ if (value == '合格') {
657
+ this.kchege = true
658
+ this.kcbuhege = false
659
+ console.log("1111111111" + this.kchege)
660
+ } else if (value == '不合格') {
661
+ this.kcbuhege = true
662
+ this.kchege = false
663
+ console.log("1111111111" + this.kcbuhege)
664
+ }
665
+ }
666
+ }
667
+ if (required && value) {
668
+ this.disable_button = false
669
+
670
+ let fields = this.data.fields
671
+ let flag = false
672
+ for (let i = 0; i < fields.length; i++) {
673
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
674
+ flag = true
675
+ }
676
+ }
677
+ this.disable_button = flag
678
+ }
679
+ },
680
+ checkboxSelect (index,index1){
681
+ console.log("chufa事件");
682
+ this.$dispatch('checkboxSelectControl', index, index1)
683
+ },
684
+ // 强制刷新
685
+ update (){
686
+ this.refresh = false
687
+ this.$nextTick(() => {
688
+ this.refresh = true
689
+ })
690
+ this.initializtion()
691
+ },
692
+ },
693
+ watch: {
694
+ 'data.filed[12].value'(val) {
695
+ console.log("变动")
696
+ if (this.data.title == '现场勘查定价') {
697
+
698
+ }
699
+ },
700
+ 'data.operate_date' () {
701
+ if (this.data.filiale) {
702
+ this.model.f_filiale = this.data.filiale
703
+ } else {
704
+ this.model.f_filiale = Vue.user.f_parentname
705
+ }
706
+ if (this.data.f_parentname) {
707
+ this.model.f_parentname = this.data.f_parentname
708
+ } else {
709
+ this.model.f_parentname = Vue.user.f_parentname
710
+ }
711
+ if (this.data.operate_date) {
712
+ this.model.f_operate_date = this.data.operate_date
713
+ } else {
714
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
715
+ }
716
+ if (this.data.operator) {
717
+ this.model.f_operator = this.data.operator
718
+ } else {
719
+ this.model.f_operator = Vue.user.name
720
+ }
721
+ },
722
+ 'data.fields' () {
723
+ this.refresh = false
724
+ this.$nextTick(() => {
725
+ this.refresh = true
726
+ })
727
+ this.initializtion()
728
+ },
729
+ deep: true
730
+ },
731
+ computed: {
732
+ // 输入后按钮检测
733
+ check_disable: function () {
734
+ let fields = this.data.fields
735
+ let flag = false
736
+ for (let i = 0; i < fields.length; i++) {
737
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
738
+ flag = true
739
+ }
740
+ }
741
+ this.disable_button = flag
742
+ }
743
+ }
744
+ }
745
+ </script>