apply-clients 5.0.35-8 → 5.0.35-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 (51) hide show
  1. package/.eslintrc.js +16 -16
  2. package/package.json +3 -3
  3. package/src/AndroidApp.vue +28 -28
  4. package/src/android.js +18 -18
  5. package/src/apply.js +14 -1
  6. package/src/components/app_apply/ApplyDownList.vue +168 -168
  7. package/src/components/app_apply/ApplyInfo.vue +56 -56
  8. package/src/components/app_apply/ApplyListUpload.vue +268 -268
  9. package/src/components/app_apply/ApplyToDoList.vue +2820 -243
  10. package/src/components/app_apply/Gongcheng.vue +3631 -0
  11. package/src/components/app_apply/OneToMany.vue +194 -0
  12. package/src/components/app_apply/PlaceControler.vue +299 -273
  13. package/src/components/app_apply/ServiceControl.vue +736 -341
  14. package/src/components/app_apply/ServiceView.vue +383 -383
  15. package/src/components/app_apply/ezhou/FeiMinYongV.vue +109 -109
  16. package/src/components/app_apply/ezhou/FeiMinYongVV.vue +100 -100
  17. package/src/components/app_apply/ezhou/MinYong.vue +92 -92
  18. package/src/components/app_apply/ezhou/ServiceView.vue +808 -626
  19. package/src/components/image/doc.jpg +0 -0
  20. package/src/components/image/dwg.png +0 -0
  21. package/src/components/image/dxf.png +0 -0
  22. package/src/components/image/excel.jpg +0 -0
  23. package/src/components/image/pdf.jpg +0 -0
  24. package/src/components/product/Common/ApplyValidateBill.vue +13 -6
  25. package/src/components/product/Common/PrintBill.vue +121 -120
  26. package/src/components/product/EngineeringManagement/EngineerUpload.vue +304 -0
  27. package/src/components/product/EngineeringManagement/EngineeringManagement.vue +137 -0
  28. package/src/components/product/EngineeringManagement/EngineeringSelect.vue +587 -0
  29. package/src/components/product/EngineeringSupervisory/EngineeringApplyStopInfo.vue +281 -0
  30. package/src/components/product/EngineeringSupervisory/EngineeringSupervisoryControl.vue +130 -0
  31. package/src/components/product/EngineeringSupervisory/EngineeringSupervisoryList.vue +350 -0
  32. package/src/components/product/Function/InstallInfoSelect.vue +3 -2
  33. package/src/components/product/Function/Service/FunctionServiceControl.vue +37 -1
  34. package/src/components/product/Function/functions/ApplyUpload.vue +556 -0
  35. package/src/components/product/Function/functions/BuyerMessage.vue +1 -1
  36. package/src/components/product/Function/functions/InstallFee.vue +581 -345
  37. package/src/components/product/Process/ExplorationSelect.vue +9 -5
  38. package/src/components/product/Process/Processes/CustomerRecordMessage.vue +2 -5
  39. package/src/components/product/Process/Processes/Service/ApplyChargeSearch.vue +124 -37
  40. package/src/components/product/Process/Processes/Service/PaperTicketBill.vue +85 -0
  41. package/src/components/product/Process/Processes/Service/ServiceControl.vue +368 -21
  42. package/src/components/product/ServiceView.vue +16 -6
  43. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +53 -6
  44. package/src/components/product/Supervisory/SupervisoryList.vue +57 -5
  45. package/src/components/product/applyReport/ApplyReport.vue +205 -0
  46. package/src/components/product/applyReport/PrintApplyReport.vue +116 -0
  47. package/src/components/product/stopInfo/ApplyStopInfo.vue +2 -1
  48. package/src/ezhouAndroid.js +48 -45
  49. package/src/index.js +8 -8
  50. package/src/main.js +32 -32
  51. package/src/plugins/commonService.js +11 -7
@@ -1,626 +1,808 @@
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
-
150
- <!-- <input @click="gotohetong('民用')" type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#" @click="gotohetong('民用')">居民天然气供用气合同</a></label>-->
151
- <div class="form-group col-sm-11" v-show="kchege&&data.f_user_type=='民用'&&data.title!='现场勘查'">
152
- <input type="checkbox" v-model="model.f_hege"/><label class="text-left font">我已阅读<a href="#" @click="gotohetong('民用')">居民天然气供用气合同</a></label>
153
- </div>
154
- <div class="form-group col-sm-11" v-show="kchege&&(data.f_user_type=='非民用'||data.title=='现场勘查')">
155
- <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>
156
- </div>
157
- <div class="form-group col-sm-11" v-show="kcbuhege">
158
- <div class="col-sm-12 form-group">
159
- <label class="control-label col-sm-2">不合格原因:</label>
160
- <div class="col-sm-10">
161
- <textarea
162
- class="form-control"
163
- v-model="model.f_buhege_reason">
164
- </textarea>
165
- </div>
166
- </div>
167
-
168
-
169
- </div>
170
- <div class="col-sm-11 form-group">
171
- <div class="form-group col-sm-6">
172
- <label class=" col-sm-4 control-label">分公司:</label>
173
- <div class="col-sm-5">
174
- <input class="form-control" type="text" v-model="model.f_filiale" disabled>
175
- </div>
176
- </div>
177
- <div class="col-sm-6 form-group">
178
- <label class="control-label col-sm-6">部门:</label>
179
- <div class="col-sm-5">
180
- <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
181
- </div>
182
- </div>
183
- </div>
184
- <div class="col-sm-11 form-group">
185
- <div class="col-sm-6 form-group">
186
- <label class="control-label col-sm-4">操作日期:</label>
187
- <div class="col-sm-5">
188
- <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
189
- </div>
190
- </div>
191
- <div class="col-sm-6 form-group">
192
- <label class="control-label col-sm-6">操作人:</label>
193
- <div class="col-sm-5">
194
- <input type="text" class="form-control" disabled v-model="model.f_operator"/>
195
- </div>
196
- </div>
197
- </div>
198
-
199
- </form>
200
- </validator>
201
- <div class="from-group col-xs-12">
202
- <center>
203
- <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':'']">
204
- <!-- 按钮组 -->
205
- <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
206
- type="button" @click="clicked(index,button)" style="border-radius:5px; "
207
- :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':'']">
208
- {{button.button_name}}
209
- </button>
210
- </div>
211
- </center>
212
- </div>
213
- <div class="form-group col-xs-12" style="height: 50px;width: 100%"></div>
214
- <!-- 模态框 -->
215
- <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
216
- <header slot="modal-header" class="modal-header">
217
- <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
218
- <h4 class="modal-title">{{model.button.button_name}}</h4>
219
- </header>
220
- <article slot="modal-body" class="modal-body">
221
- <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
222
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
223
- <div class="col-sm-7">
224
- <!--select-->
225
- <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"
226
- :options='button_field.options'></input-select>
227
- <!-- input -->
228
- <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
229
- </div>
230
- </div>
231
- </article>
232
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
233
- <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
234
- </footer>
235
- </modal>
236
- </div>
237
- </template>
238
- <script>
239
-
240
- // Date格式化
241
- Date.prototype.Format = function (fmt) {
242
- var o = {
243
- "M+": this.getMonth() + 1, //月份
244
- "d+": this.getDate(), //日
245
- "H+": this.getHours(), //小时
246
- "m+": this.getMinutes(), //分
247
- "s+": this.getSeconds(), //秒
248
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
249
- "S": this.getMilliseconds() //毫秒
250
- };
251
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
252
- for (var k in o)
253
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
254
- return fmt;
255
- }
256
-
257
- import Vue from 'vue'
258
- import * as Util from '../../Util'
259
- export default {
260
- title: '报建业务通用组件',
261
- props: ['data'],
262
-
263
- data () {
264
- return {
265
- isshow:true,
266
- kchege:false,
267
- kcbuhege:false,
268
- model:{
269
-
270
- button:{
271
- button_name:null,
272
- button_index:null
273
- },
274
- f_filiale:null,
275
- f_parentname:null,
276
- f_operate_date:null,
277
- f_operator:null
278
- },
279
- countmoney:[0,0,0],
280
- data:null,
281
- showmodal:false,
282
- disable_button:true
283
- }
284
- },
285
- created(){
286
-
287
- // 初始化数据
288
- this.initializtion()
289
- },
290
- methods: {
291
- gotohetong(val){
292
- console.log(val)
293
- console.log("进入goto")
294
- this.$dispatch('gotonewpage',val)
295
- },
296
- cameraCallBack(prop, fileName) {
297
- if(prop == 'f_overall_path'){
298
- let f_overall_path = fileName + '?' + Math.random()
299
- HostApp.__this__.model.f_overall_imgs.push({
300
- f_overall_path:f_overall_path,
301
- f_overall_name:this.data.title
302
- })
303
- }else{
304
- HostApp.__this__.model[prop] = fileName + '?' + Math.random()
305
- }
306
- HostApp.__callback__ = null
307
- HostApp.__this__ = null
308
- },
309
- takePic(prop, title,index) {
310
- HostApp.__callback__ = this.cameraCallBack
311
- HostApp.__this__ = this
312
- console.log("prop:" + prop)
313
- console.log("this.prop:" + this.model[prop])
314
- let fileName
315
- if(prop == 'f_overall_path'){
316
- if (!this.model.f_overall_imgs[index] || this.model.f_overall_imgs[index].f_overall_path.includes("nopic.png")) {
317
- fileName = Util.guid() + '-' + prop + '.jpg'
318
- } else {
319
- fileName = Util.getFileName(this.model.f_overall_imgs[index].f_overall_path)
320
- }
321
- }else{
322
- if (!this.model[prop] || this.model[prop].includes("nopic.png")) {
323
- fileName = Util.guid() + '-' + prop + '.jpg'
324
- } else {
325
- fileName = Util.getFileName(this.model[prop])
326
- }
327
- }
328
-
329
- HostApp._open_a_page({
330
- type: 'boomerang',
331
- page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
332
- param: {
333
- file: fileName,
334
- requestCode: 111,
335
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");',
336
- watermark: title + '\t时间:' + Util.toStandardTimeString() + '\t' + Vue.user.name
337
- }
338
- })
339
- },
340
- signCallback(prop, fileName) {
341
- // HostApp.alert('绑定属性:' + prop + ' 文件全路径如file:///storage/sdcard0/safecheck/abc.jpg:' + fullFileName)
342
- HostApp.__this__.$set('model.f_sign_path', fileName)
343
- HostApp.__callback__ = null
344
- HostApp.__this__ = null
345
- },
346
- delAudioFile(prop, fileName) {
347
- if (!fileName)
348
- return
349
- else {
350
- HostApp.delfile(fileName)
351
- this.model[prop] = null
352
- }
353
- },
354
- sign() {
355
- // if(!this.model.f_read_instructions){
356
- // this.$showMessage('请先阅读并勾选用户须知内容后进行签名!')
357
- // return
358
- // }
359
- this.delAudioFile('f_sign_path', this.model.f_sign_path)
360
- let prop = 'f_sign_path'
361
- let idx = 'aofeng'
362
- let fileName
363
- if (!this.model.f_sign_path) {
364
- fileName = Util.guid() + '-valve-' + idx + '-' + prop + '.jpg'
365
- } else {
366
- fileName = Util.getFileName(this.model.f_sign_path)
367
- }
368
- HostApp.__callback__ = this.signCallback
369
- HostApp.__this__ = this
370
- HostApp.getSignature({
371
- file: fileName,
372
- requestCode: 111,
373
- callback: 'javascript:HostApp.__callback__("' + prop + '", "%s");'
374
- })
375
- },
376
- delfile(prop, fileName,index) {
377
- if (fileName == Vue.nopic)
378
- return
379
- else {
380
- if(prop == 'f_overall_path'){
381
- this.model.f_overall_imgs.splice(index,1)
382
- HostApp.delfile(fileName)
383
- }else{
384
- HostApp.delfile(fileName)
385
- this.model[prop] = Vue.nopic
386
- }
387
- }
388
- },
389
- // 初始化数据
390
- initializtion(){
391
-
392
- if (this.data.title=='安装通气'){
393
- this.isshow=false
394
- }
395
- console.log("5555555555555")
396
- console.log(this.data.f_user_type)
397
- console.log(this.isshow)
398
- Vue.nopic = 'file:///android_asset/nopic.png'
399
- if (!this.model.f_sign_path)
400
- this.$set('model.f_sign_path', Vue.nopic)
401
- console.log('!this.model.f_overall_imgs==>'+!this.model.f_overall_imgs)
402
- if (!this.model.f_overall_imgs){
403
- let imgs = []
404
- // imgs.push({f_overall_path:Vue.nopic})
405
- this.$set('model.f_overall_imgs', imgs)
406
- console.log('进入setmodel.f_overall_imgs')
407
- }
408
- console.log('进入serviceview的initializtion方法')
409
- console.log(JSON.stringify(this.data))
410
- // let temp = this.data
411
- // let temp = JSON.parse()
412
- // this.data = temp
413
- // datepicker 没有值给当时值
414
- if(this.data.fields){
415
- for(let i=0;i<this.data.fields.length;i++){
416
- if (this.data.fields[i].value){
417
- if (this.data.fields[i].value=='null'){
418
- console.log("看看为空的字段名"+this.data.fields[i].label)
419
- this.data.fields[i].value=null
420
- console.log("赋值完成")
421
- }
422
- }
423
- if(this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
424
- this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
425
- }
426
- }
427
- }
428
-
429
- if (this.data.filiale) {
430
- this.model.f_filiale = this.data.f_filiale
431
- } else if (Vue.user.orgs) {
432
- this.model.f_filiale = Vue.user.orgs
433
- } else {
434
- this.model.f_filiale = Vue.user.f_fengongsi
435
- }
436
- if (this.data.f_parentname) {
437
- this.model.f_parentname = this.data.f_parentname
438
- } else if (Vue.user.f_department_name) {
439
- this.model.f_parentname = Vue.user.f_department_name
440
- } else {
441
- this.model.f_parentname = Vue.user.f_parentname
442
- }
443
- if (this.data.operate_date) {
444
- this.model.f_operate_date = this.data.operate_date
445
- } else {
446
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
447
- }
448
- if (this.data.operator) {
449
- this.model.f_operator = this.data.operator
450
- } else {
451
- this.model.f_operator = Vue.user.name
452
- }
453
- },
454
- // 模态框点击确定按钮
455
- acknowledge(){
456
- for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
457
- 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
458
- }
459
- this.showmodal=false
460
- this.$dispatch('button',this.model)
461
- },
462
- // 关闭模态框
463
- closemodal(){
464
- this.showmodal=false
465
- },
466
- watchmoney(val1,val2) {
467
- console.log("监听改变的值")
468
- console.log(val1)
469
- console.log(val2)
470
- },
471
- // 点击按钮
472
- clicked(index,button){
473
- console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
474
- // 组织model.fields数据
475
- let modeldatas = {}
476
- for(let i=0;i<this.data.fields.length;i++){
477
- console.log(JSON.stringify(this.data.fields[i]))
478
- // checkbox特殊处理
479
- if(this.data.fields[i].type==='checkbox'){
480
- for(let j=0;j<this.data.fields[i].items.length;j++){
481
- modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
482
- }
483
- }else{
484
- modeldatas[this.data.fields[i].field]=this.data.fields[i].value
485
- }
486
- }
487
- modeldatas.f_process_id = this.data.f_process_id
488
- modeldatas.f_filiale = this.model.f_filiale
489
- modeldatas.f_parentname = this.model.f_parentname
490
- modeldatas.f_operator = this.model.f_operator
491
- modeldatas.f_operate_date = this.model.f_operate_date
492
- modeldatas.f_overall_imgs = this.model.f_overall_imgs
493
- modeldatas.f_sign_path = this.model.f_sign_path
494
- this.model = null
495
- this.model = modeldatas
496
- // 初始化model.button数据
497
- let buttondatas = {
498
- button_fields:{}
499
- }
500
- buttondatas.button_name=button.button_name
501
- buttondatas.button_index=index
502
- if(button.button_fields){
503
- for(let i=0;i<button.button_fields.length;i++){
504
- buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
505
- }
506
- }
507
- this.model.button =buttondatas
508
-
509
- if(button.button_name==='退回'){
510
- this.showmodal=true
511
- }else if(button.button_name==='下发'){
512
- this.showmodal=true
513
- }else{
514
- this.$dispatch('button',this.model)
515
- }
516
- },
517
- // 级联操作预留
518
- select_change(index){
519
- this.$dispatch('select_cascade',index)
520
- },
521
- // 检测按钮的disable
522
- disabled_check(index,required,value){
523
- console.log("被检测到的值是什么")
524
- console.log(index)
525
- console.log(required)
526
- console.log(value)
527
- console.log(this.data.title)
528
- if (this.data.title=='现场勘查'){
529
- if (index==4){
530
- if (value=='合格'){
531
- this.kchege=true
532
- this.kcbuhege=false
533
- console.log("1111111111"+this.kchege)
534
- }else if (value=='不合格'){
535
- this.kcbuhege=true
536
- this.kchege=false
537
- console.log("1111111111"+this.kcbuhege)
538
- }
539
- }
540
- }
541
- if (this.data.title=='现场勘查定价'){
542
- if (index==6||index==7||index==5){
543
- this.countmoney[index-5]=parseInt(this.data.fields[index].value)
544
- console.log(this.data.fields[index].value)
545
- console.log("做出了改变")
546
- }
547
- console.log(JSON.stringify(this.countmoney))
548
- let money=0
549
- for (let i = 0; i < this.countmoney.length; i++) {
550
- money+=this.countmoney[i]
551
- }
552
- this.$set('data.fields[8].value',money)
553
- this.$set('data.fields[9].value',money)
554
- if (index==10){
555
- console.log("1111111111"+value)
556
- if (value=='合格'){
557
- this.kchege=true
558
- this.kcbuhege=false
559
- console.log("1111111111"+this.kchege)
560
- }else if (value=='不合格'){
561
- this.kcbuhege=true
562
- this.kchege=false
563
- console.log("1111111111"+this.kcbuhege)
564
- }
565
- }
566
- }
567
- if(required&&value){
568
- this.disable_button = false
569
-
570
- let fields = this.data.fields
571
- let flag = false
572
- for(let i = 0;i<fields.length;i++){
573
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
574
- flag = true
575
- }
576
- }
577
- this.disable_button = flag
578
- }
579
- }
580
- },
581
- watch:{
582
- 'data.filed[12].value'(val){
583
- console.log("变动")
584
- if (this.data.title=='现场勘查定价'){
585
-
586
- }
587
- },
588
- 'data.operate_date'(){
589
- if(this.data.filiale){
590
- this.model.f_filiale = this.data.filiale
591
- }else{
592
- this.model.f_filiale = Vue.user.f_parentname
593
- }
594
- if(this.data.f_parentname){
595
- this.model.f_parentname = this.data.f_parentname
596
- }else{
597
- this.model.f_parentname = Vue.user.f_parentname
598
- }
599
- if(this.data.operate_date){
600
- this.model.f_operate_date = this.data.operate_date
601
- }else{
602
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
603
- }
604
- if(this.data.operator){
605
- this.model.f_operator = this.data.operator
606
- }else{
607
- this.model.f_operator = Vue.user.name
608
- }
609
- },
610
- deep:true
611
- },
612
- computed: {
613
- // 输入后按钮检测
614
- check_disable: function (){
615
- let fields = this.data.fields
616
- let flag = false
617
- for(let i = 0;i<fields.length;i++){
618
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
619
- flag = true
620
- }
621
- }
622
- this.disable_button = flag
623
- }
624
- }
625
- }
626
- </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
+
448
+ if (this.data.title == '现场勘查' || this.data.title == '现场勘查定价') {
449
+ this.isshow = false
450
+ }
451
+ console.log("5555555555555")
452
+ console.log("f_apply_num",this.data.f_apply_num)
453
+ console.log("f_filiale",this.data.f_filiale)
454
+ console.log(this.data.f_user_type)
455
+ console.log(this.isshow)
456
+ Vue.nopic = 'file:///android_asset/nopic.png'
457
+ if (!this.model.f_sign_path)
458
+ this.$set('model.f_sign_path', Vue.nopic)
459
+ console.log('!this.model.f_overall_imgs==>' + !this.model.f_overall_imgs)
460
+ if (!this.model.f_overall_imgs) {
461
+ let imgs = []
462
+ this.$set('model.f_overall_imgs', imgs)
463
+ console.log('进入setmodel.f_overall_imgs')
464
+ }
465
+ console.log('进入serviceview的initializtion方法')
466
+ console.log(JSON.stringify(this.data))
467
+ if(this.data.onetomany){
468
+ console.log(JSON.stringify(this.data.onetomany))
469
+ this.onetomany = this.data.onetomany
470
+ }
471
+ if (this.data.fields) {
472
+ for (let i = 0; i < this.data.fields.length; i++) {
473
+ if (this.data.fields[i].value) {
474
+ if (this.data.fields[i].value == 'null') {
475
+ console.log("看看为空的字段名" + this.data.fields[i].label)
476
+ this.data.fields[i].value = null
477
+ console.log("赋值完成")
478
+ }
479
+ }
480
+ if (this.data.fields[i].type === 'datepicker' && !this.data.fields[i].value) {
481
+ this.data.fields[i].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
482
+ }
483
+ if(this.data.f_user_type ==='非民用'){
484
+ this.data.fields[i].required = false
485
+ }
486
+ if (this.data.fields[i].label==='气价名称'){
487
+ console.log(this.data.fields[i].options)
488
+ let data={
489
+ items:"f_price_name",
490
+ tablename:"t_stairprice",
491
+ condition:`f_filialeids = '${Vue.user.f_orgids}' and f_state= '有效' and getdate()>=f_perform_date and getdate()<=f_end_date `,
492
+ orderitem:'id'
493
+ }
494
+ let qijia=[]
495
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
496
+ console.log("66666666666666666666")
497
+ console.log(JSON.stringify(res))
498
+ console.log(typeof res)
499
+ //console.log(JSON.stringify(res.data[0]))
500
+ let result=res.data
501
+ result.forEach(ress=>{
502
+ qijia.push({
503
+ label:ress.f_price_name,
504
+ value:ress.f_price_name
505
+ })
506
+ })
507
+ this.data.fields[i].options=qijia
508
+ })
509
+ }
510
+ if (this.data.fields[i].label==='气表品牌'){
511
+ console.log(this.data.fields[i].options)
512
+ let data={
513
+ items:"f_meter_brand",
514
+ tablename:"t_gasbrand",
515
+ condition:`f_filialeids = '${Vue.user.f_orgids}'`,
516
+ orderitem:'id'
517
+ }
518
+ let pinpai=[]
519
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
520
+ console.log("666666666666666666662")
521
+ console.log(JSON.stringify(res))
522
+ console.log(typeof res)
523
+ //console.log(JSON.stringify(res.data[0]))
524
+ let result=res.data
525
+ result.forEach(ress=>{
526
+ pinpai.push({
527
+ label:ress.f_meter_brand,
528
+ value:ress.f_meter_brand
529
+ })
530
+ })
531
+ this.data.fields[i].options=pinpai
532
+ })
533
+ }
534
+ }
535
+ }
536
+
537
+ if (this.data.filiale) {
538
+ this.model.f_filiale = this.data.f_filiale
539
+ } else if (Vue.user.orgs) {
540
+ this.model.f_filiale = Vue.user.orgs
541
+ } else {
542
+ this.model.f_filiale = Vue.user.f_fengongsi
543
+ }
544
+ if (this.data.f_parentname) {
545
+ this.model.f_parentname = this.data.f_parentname
546
+ } else if (Vue.user.f_department_name) {
547
+ this.model.f_parentname = Vue.user.f_department_name
548
+ } else {
549
+ this.model.f_parentname = Vue.user.f_parentname
550
+ }
551
+ if (this.data.operate_date) {
552
+ this.model.f_operate_date = this.data.operate_date
553
+ } else {
554
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
555
+ }
556
+ if (this.data.operator) {
557
+ this.model.f_operator = this.data.operator
558
+ } else {
559
+ this.model.f_operator = Vue.user.name
560
+ }
561
+ },
562
+ // 模态框点击确定按钮
563
+ acknowledge () {
564
+ for (let i = 0; i < this.data.buttons[this.model.button.button_index].button_fields.length; i++) {
565
+ 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
566
+ }
567
+ this.showmodal = false
568
+ this.$dispatch('button', this.model)
569
+ },
570
+ // 关闭模态框
571
+ closemodal () {
572
+ this.showmodal = false
573
+ },
574
+ watchmoney (val1, val2) {
575
+ console.log("监听改变的值")
576
+ console.log(val1)
577
+ console.log(val2)
578
+ },
579
+ // 点击按钮
580
+ clicked (index, button) {
581
+ console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
582
+ if (button.button_name=='提交') {
583
+ if (!this.model.f_overall_imgs || this.model.f_overall_imgs.length == 0){
584
+ this.$showMessage("必须有现场照片")
585
+ return;
586
+ }
587
+ if(Vue.nopic==this.model.f_sign_path){
588
+ this.$showMessage("必须有签名照片")
589
+ return;
590
+ }
591
+ this.model.f_overall_imgs.push({
592
+ f_overall_path: this.model.f_sign_path,
593
+ f_overall_name: this.data.title
594
+ })
595
+ }
596
+
597
+
598
+ // if ((this.data.title == '现场勘查' || this.data.title == '现场勘查定价') && button.button_name=='提交') {
599
+ // if (!this.model.f_overall_imgs || this.model.f_overall_imgs.length == 0){
600
+ // this.$showMessage("必须有现场照片")
601
+ // return;
602
+ // }
603
+ // }
604
+ if (this.kchege == 'true') {
605
+ console.log(this.model.f_hege)
606
+ if (this.model.f_hege != 'true') {
607
+ this.$showMessage("请勾选阅读合同")
608
+ return
609
+ }
610
+ }
611
+ // 组织model.fields数据
612
+ let modeldatas = {}
613
+ for (let i = 0; i < this.data.fields.length; i++) {
614
+ console.log(JSON.stringify(this.data.fields[i]))
615
+ // checkbox特殊处理
616
+ if (this.data.fields[i].type === 'checkbox') {
617
+ for (let j = 0; j < this.data.fields[i].items.length; j++) {
618
+ modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
619
+ }
620
+ } else {
621
+ modeldatas[this.data.fields[i].field] = this.data.fields[i].value
622
+ }
623
+ }
624
+ modeldatas.f_process_id = this.data.f_process_id
625
+ modeldatas.f_filiale = this.model.f_filiale
626
+ modeldatas.f_parentname = this.model.f_parentname
627
+ modeldatas.f_operator = this.model.f_operator
628
+ modeldatas.f_operate_date = this.model.f_operate_date
629
+ modeldatas.f_overall_imgs = this.model.f_overall_imgs
630
+ modeldatas.f_sign_path = this.model.f_sign_path
631
+ this.model = null
632
+ this.model = modeldatas
633
+ // 初始化model.button数据
634
+ let buttondatas = {
635
+ button_fields: {}
636
+ }
637
+ buttondatas.button_name = button.button_name
638
+ buttondatas.button_index = index
639
+ if (button.button_fields) {
640
+ for (let i = 0; i < button.button_fields.length; i++) {
641
+ buttondatas.button_fields[button.button_fields[i].field] = button.button_fields[i].value
642
+ }
643
+ }
644
+ this.model.button = buttondatas
645
+
646
+ if (button.button_name === '退回') {
647
+ this.showmodal = true
648
+ } else if (button.button_name === '下发') {
649
+ this.showmodal = true
650
+ } else {
651
+ this.$dispatch('button', this.model)
652
+ }
653
+ },
654
+ // 级联操作预留
655
+ select_change (index) {
656
+ this.$dispatch('select_cascade', index)
657
+ },
658
+ // 检测按钮的disable
659
+ disabled_check (index, required, value) {
660
+ console.log("被检测到的值是什么")
661
+ console.log(index)
662
+ console.log(required)
663
+ console.log(value)
664
+ console.log(this.data.title)
665
+ if (this.data.fields[index].label=='气表品牌'){
666
+ console.log("进入改变气表型号")
667
+ console.log(this.data.fields[index+1].options)
668
+ this.data.fields[index+1].options=[]
669
+ let data={
670
+ items:"gm.f_meter_style",
671
+ tablename:"t_gasmodel gm left join t_gasbrand gb on gm.f_gasbrand_id=gb.id",
672
+ condition:`gb.f_filialeids = '${Vue.user.f_orgids}' and gb.f_meter_brand='${value}'`,
673
+ orderitem:'gm.id'
674
+ }
675
+ let xinghao=[]
676
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
677
+ console.log("66666666666666666666")
678
+ console.log(JSON.stringify(res))
679
+ console.log(typeof res)
680
+ //console.log(JSON.stringify(res.data[0]))
681
+ let result=res.data
682
+ result.forEach(ress=>{
683
+ xinghao.push({
684
+ label:ress.f_meter_style,
685
+ value:ress.f_meter_style
686
+ })
687
+ })
688
+ this.data.fields[index+1].options=xinghao
689
+ })
690
+ }
691
+ if (this.data.title == '现场勘查') {
692
+ if (index == 4) {
693
+ if (value == '合格') {
694
+ this.kchege = true
695
+ this.kcbuhege = false
696
+ console.log("1111111111" + this.kchege)
697
+ } else if (value == '不合格') {
698
+ this.kcbuhege = true
699
+ this.kchege = false
700
+ console.log("1111111111" + this.kcbuhege)
701
+ }
702
+ }
703
+ }
704
+ if (this.data.title == '现场勘查定价') {
705
+ // if (index == 6 || index == 7 || index == 5) {
706
+ // this.countmoney[index - 5] = parseInt(this.data.fields[index].value)
707
+ // console.log(this.data.fields[index].value)
708
+ // console.log("做出了改变")
709
+ // }
710
+ // console.log(JSON.stringify(this.countmoney))
711
+ // let money = 0
712
+ // for (let i = 0; i < this.countmoney.length; i++) {
713
+ // money += this.countmoney[i]
714
+ // }
715
+ // this.$set('data.fields[8].value', money)
716
+ // this.$set('data.fields[9].value', money)
717
+ if (index == 7) {
718
+ console.log("1111111111" + value)
719
+ if (value == '合格') {
720
+ this.kchege = true
721
+ this.kcbuhege = false
722
+ console.log("1111111111" + this.kchege)
723
+ } else if (value == '不合格') {
724
+ this.kcbuhege = true
725
+ this.kchege = false
726
+ console.log("1111111111" + this.kcbuhege)
727
+ }
728
+ }
729
+ }
730
+ if (required && value) {
731
+ this.disable_button = false
732
+
733
+ let fields = this.data.fields
734
+ let flag = false
735
+ for (let i = 0; i < fields.length; i++) {
736
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
737
+ flag = true
738
+ }
739
+ }
740
+ this.disable_button = flag
741
+ }
742
+ },
743
+ checkboxSelect (index,index1){
744
+ console.log("chufa事件");
745
+ this.$dispatch('checkboxSelectControl', index, index1)
746
+ },
747
+ // 强制刷新
748
+ update (){
749
+ this.refresh = false
750
+ this.$nextTick(() => {
751
+ this.refresh = true
752
+ })
753
+ this.initializtion()
754
+ },
755
+ },
756
+ watch: {
757
+ 'data.filed[12].value'(val) {
758
+ console.log("变动")
759
+ if (this.data.title == '现场勘查定价') {
760
+
761
+ }
762
+ },
763
+ 'data.operate_date' () {
764
+ if (this.data.filiale) {
765
+ this.model.f_filiale = this.data.filiale
766
+ } else {
767
+ this.model.f_filiale = Vue.user.f_parentname
768
+ }
769
+ if (this.data.f_parentname) {
770
+ this.model.f_parentname = this.data.f_parentname
771
+ } else {
772
+ this.model.f_parentname = Vue.user.f_parentname
773
+ }
774
+ if (this.data.operate_date) {
775
+ this.model.f_operate_date = this.data.operate_date
776
+ } else {
777
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
778
+ }
779
+ if (this.data.operator) {
780
+ this.model.f_operator = this.data.operator
781
+ } else {
782
+ this.model.f_operator = Vue.user.name
783
+ }
784
+ },
785
+ 'data.fields' () {
786
+ this.refresh = false
787
+ this.$nextTick(() => {
788
+ this.refresh = true
789
+ })
790
+ this.initializtion()
791
+ },
792
+ deep: true
793
+ },
794
+ computed: {
795
+ // 输入后按钮检测
796
+ check_disable: function () {
797
+ let fields = this.data.fields
798
+ let flag = false
799
+ for (let i = 0; i < fields.length; i++) {
800
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
801
+ flag = true
802
+ }
803
+ }
804
+ this.disable_button = flag
805
+ }
806
+ }
807
+ }
808
+ </script>