apply-clients 3.0.10-21 → 3.0.10-210

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 (65) hide show
  1. package/.gradle/3.5/file-changes/last-build.bin +0 -0
  2. package/.gradle/3.5/taskHistory/taskHistory.lock +0 -0
  3. package/.gradle/5.2.1/executionHistory/executionHistory.bin +0 -0
  4. package/.gradle/5.2.1/executionHistory/executionHistory.lock +0 -0
  5. package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
  6. package/.gradle/5.2.1/fileHashes/fileHashes.bin +0 -0
  7. package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
  8. package/.gradle/5.2.1/gc.properties +0 -0
  9. package/.gradle/buildOutputCleanup/built.bin +0 -0
  10. package/.gradle/buildOutputCleanup/cache.properties +2 -0
  11. package/.gradle/buildOutputCleanup/cache.properties.lock +1 -0
  12. package/.gradle/vcs-1/gc.properties +0 -0
  13. package/doc//346/226/260/347/224/250/346/210/267/350/212/261/345/220/215/345/206/214/345/257/274/345/205/245/346/250/241/346/235/277.xls +0 -0
  14. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  15. package/gradle/wrapper/gradle-wrapper.properties +5 -0
  16. package/gradlew +0 -0
  17. package/gradlew.bat +84 -0
  18. package/package.json +5 -4
  19. package/src/apply.js +187 -146
  20. package/src/components/Util.js +26 -22
  21. package/src/components/app_apply/ApplyDownList.vue +21 -8
  22. package/src/components/app_apply/ApplyToDoList.vue +83 -59
  23. package/src/components/app_apply/ApplyUserInfo.vue +3 -3
  24. package/src/components/app_apply/PlaceControler.vue +255 -255
  25. package/src/components/app_apply/ServiceControl.vue +1387 -1387
  26. package/src/components/app_apply/ServiceView.vue +583 -361
  27. package/src/components/image/doc.jpg +0 -0
  28. package/src/components/image/excel.jpg +0 -0
  29. package/src/components/image/pdf.jpg +0 -0
  30. package/src/components/product/BatchFunction/BatchPay.vue +663 -0
  31. package/src/components/product/Function/InstallFunction.vue +9 -9
  32. package/src/components/product/Function/InstallInfoSelect.vue +230 -38
  33. package/src/components/product/Function/Service/FunctionServiceControl.vue +3 -1
  34. package/src/components/product/Function/functions/InstallFee.vue +58 -35
  35. package/src/components/product/Function/functions/StopInstall.vue +13 -1
  36. package/src/components/product/HiddenDangersInProjects/AddHiddenDangers.vue +957 -0
  37. package/src/components/product/HiddenDangersInProjects/HiddenProjectList.vue +425 -0
  38. package/src/components/product/HiddenDangersInProjects/HiddenProjectSchedule.vue +146 -0
  39. package/src/components/product/Process/ExplorationSelect.vue +302 -71
  40. package/src/components/product/Process/ExplorationUser.vue +18 -3
  41. package/src/components/product/Process/Processes/CustomerRecordMessage.vue +736 -201
  42. package/src/components/product/Process/Processes/Service/ApplyChargeSearch.vue +75 -69
  43. package/src/components/product/Process/Processes/Service/ServiceControl.vue +3172 -3053
  44. package/src/components/product/ProjectManagement/AddProjectSchedule.vue +863 -0
  45. package/src/components/product/ProjectManagement/ProjectList.vue +420 -0
  46. package/src/components/product/ProjectManagement/ProjectSchedule.vue +146 -0
  47. package/src/components/product/ReportForm/PaymentRecord.vue +801 -0
  48. package/src/components/product/ReportForm/PaymentRecordAdd.vue +105 -0
  49. package/src/components/product/ReportForm/PaymentRecordBad.vue +1273 -0
  50. package/src/components/product/ReportForm/PaymentRecordDetailed.vue +472 -0
  51. package/src/components/product/ReportForm/PaymentRecordTooBad.vue +60 -0
  52. package/src/components/product/ReportForm/PaymentReport.vue +532 -0
  53. package/src/components/product/ReportForm/ProjectReport.vue +447 -0
  54. package/src/components/product/ReportForm/SettlementReport.vue +336 -0
  55. package/src/components/product/ReportForm/SummaryReport.vue +451 -0
  56. package/src/components/product/ReportForm/UserReport.vue +402 -0
  57. package/src/components/product/ServiceView.vue +17 -9
  58. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +36 -2
  59. package/src/components/product/Supervisory/SupervisoryControl.vue +30 -6
  60. package/src/components/product/Supervisory/SupervisoryList.vue +249 -34
  61. package/src/components/product/VueUtils/ApplyUpload.vue +310 -0
  62. package/src/components/product/VueUtils/rightview/InstallCardList2.vue +0 -1
  63. package/src/main.js +4 -0
  64. package/success.rar +0 -0
  65. package/doc//350/212/261/345/220/215/345/206/214/345/257/274/345/205/245/346/250/241/346/235/277.xlsx +0 -0
@@ -1,361 +1,583 @@
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" style="display: inline-block;width: 100%">
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="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
22
- @blur ="select_change(index),check_disable"
23
- />
24
- </div>
25
- </div>
26
- <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']">
27
- <label style="margin-top: 0.7em" :class="item.label_bootstraped?item.label_bootstraped +' control-label':'control-label col-sm-6'">{{item.label}}:</label>
28
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
29
- <datepicker
30
- :placeholder="item.placeholder"
31
- :value.sync="data.fields[index].value"
32
- :format="'yyyy-MM-dd HH:mm:ss'"
33
- v-model="data.fields[index].value"
34
- :width="'100%'"
35
- class="form-control"
36
- :readonly="item.readonly"
37
- :disabled="item.disabled"
38
- @blur ="check_disable"
39
- :show-reset-button="reset">
40
- </datepicker>
41
- </div>
42
- </div>
43
-
44
-
45
-
46
- <!--textarea-->
47
- <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']">
48
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
49
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
50
- <textarea
51
- :readonly="item.readonly"
52
- :disabled="item.disabled"
53
- class="form-control"
54
- :rows="item.rows"
55
- v-model="data.fields[index].value"
56
- @change="disabled_check(data.fields[index].required,data.fields[index].value)"
57
- @blur ="check_disable"
58
- >
59
- </textarea>
60
- </div>
61
- </div>
62
-
63
- <!--radio-->
64
- <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']">
65
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
66
- <div class="col-xs-12">
67
- <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">
68
- <label style="margin-top: 0.7em" for="row.label" :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{row.label}}</label>
69
- <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">
70
- </div>
71
- </div>
72
- </div>
73
-
74
- <!--select-->
75
- <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']">
76
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
77
- <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur ="check_disable" @change="select_change(index),disabled_check(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"
78
- :options='item.options' :valueSingle="true"></input-select>
79
-
80
- </div>
81
-
82
- <!--checkbox-->
83
- <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']">
84
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
85
- <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">
86
- <label class="font-size form-group col-sm-6">{{row.label}}</label>
87
- <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6" :id="row.label" v-model="data.fields[index].items[index2].value">
88
- </div>
89
- </div>
90
-
91
-
92
- </div>
93
- </div>
94
- <div class="col-sm-11 form-group">
95
- <div class="form-group col-sm-6">
96
- <label class=" col-sm-4 control-label">分公司:</label>
97
- <div class="col-sm-5">
98
- <input class="form-control" type="text" v-model="model.f_filiale" disabled>
99
- </div>
100
- </div>
101
- <div class="col-sm-6 form-group">
102
- <label class="control-label col-sm-6">部门:</label>
103
- <div class="col-sm-5">
104
- <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
105
- </div>
106
- </div>
107
- </div>
108
- <div class="col-sm-11 form-group">
109
- <div class="col-sm-6 form-group">
110
- <label class="control-label col-sm-4">操作日期:</label>
111
- <div class="col-sm-5">
112
- <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
113
- </div>
114
- </div>
115
- <div class="col-sm-6 form-group">
116
- <label class="control-label col-sm-6">操作人:</label>
117
- <div class="col-sm-5">
118
- <input type="text" class="form-control" disabled v-model="model.f_operator"/>
119
- </div>
120
- </div>
121
- </div>
122
-
123
- </form>
124
- </validator>
125
- <div class="from-group col-xs-12">
126
- <center>
127
- <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':'']">
128
- <!-- 按钮组 -->
129
- <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
130
- type="button" @click="clicked(index,button)" style="border-radius:5px; "
131
- :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':'']">
132
- {{button.button_name}}
133
- </button>
134
- </div>
135
- </center>
136
- </div>
137
- <!-- 模态框 -->
138
- <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
139
- <header slot="modal-header" class="modal-header">
140
- <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
141
- <h4 class="modal-title">{{model.button.button_name}}</h4>
142
- </header>
143
- <article slot="modal-body" class="modal-body">
144
- <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
145
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
146
- <div class="col-sm-7">
147
- <!--select-->
148
- <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"
149
- :options='button_field.options'></input-select>
150
- <!-- input -->
151
- <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
152
- </div>
153
- </div>
154
- </article>
155
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
156
- <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
157
- </footer>
158
- </modal>
159
- </div>
160
- </template>
161
- <script>
162
-
163
- // Date格式化
164
- Date.prototype.Format = function (fmt) {
165
- var o = {
166
- "M+": this.getMonth() + 1, //月份
167
- "d+": this.getDate(), //日
168
- "H+": this.getHours(), //小时
169
- "m+": this.getMinutes(), //分
170
- "s+": this.getSeconds(), //秒
171
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
172
- "S": this.getMilliseconds() //毫秒
173
- };
174
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
175
- for (var k in o)
176
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
177
- return fmt;
178
- }
179
-
180
- import Vue from 'vue'
181
-
182
- export default {
183
- title: '报建业务通用组件',
184
- props: ['data'],
185
- data () {
186
- return {
187
- model:{
188
- button:{
189
- button_name:null,
190
- button_index:null
191
- },
192
- f_filiale:null,
193
- f_parentname:null,
194
- f_operate_date:null,
195
- f_operator:null
196
- },
197
- data:null,
198
- showmodal:false,
199
- disable_button:true
200
- }
201
- },
202
- created(){
203
- // 初始化数据
204
- this.initializtion()
205
- },
206
- methods: {
207
- // 初始化数据
208
- initializtion(){
209
- console.log('进入serviceview的initializtion方法')
210
- console.log(JSON.stringify(this.data))
211
- // let temp = this.data
212
- // let temp = JSON.parse()
213
- // this.data = temp
214
- // datepicker 没有值给当时值
215
- if(this.data.fields){
216
- for(let i=0;i<this.data.fields.length;i++){
217
- if(this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
218
- this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
219
- }
220
- }
221
- }
222
-
223
- if(this.data.filiale){
224
- this.model.f_filiale = this.data.f_filiale
225
- }else{
226
- this.model.f_filiale = Vue.user.orgs
227
- }
228
- if(this.data.f_parentname){
229
- this.model.f_parentname = this.data.f_parentname
230
- }else{
231
- this.model.f_parentname = Vue.user.f_department_name
232
- }
233
- if(this.data.operate_date){
234
- this.model.f_operate_date = this.data.operate_date
235
- }else{
236
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
237
- }
238
- if(this.data.operator){
239
- this.model.f_operator = this.data.operator
240
- }else{
241
- this.model.f_operator = Vue.user.name
242
- }
243
- },
244
- // 模态框点击确定按钮
245
- acknowledge(){
246
- for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
247
- 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
248
- }
249
- this.showmodal=false
250
- this.$dispatch('button',this.model)
251
- },
252
- // 关闭模态框
253
- closemodal(){
254
- this.showmodal=false
255
- },
256
- // 点击按钮
257
- clicked(index,button){
258
- console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
259
- // 组织model.fields数据
260
- let modeldatas = {}
261
- for(let i=0;i<this.data.fields.length;i++){
262
- // checkbox特殊处理
263
- if(this.data.fields[i].type==='checkbox'){
264
- for(let j=0;j<this.data.fields[i].items.length;j++){
265
- modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
266
- }
267
- }else{
268
- modeldatas[this.data.fields[i].field]=this.data.fields[i].value
269
- }
270
- }
271
- modeldatas.f_process_id = this.data.f_process_id
272
- modeldatas.f_filiale = this.model.f_filiale
273
- modeldatas.f_parentname = this.model.f_parentname
274
- modeldatas.f_operator = this.model.f_operator
275
- modeldatas.f_operate_date = this.model.f_operate_date
276
- this.model = null
277
- this.model = modeldatas
278
- // 初始化model.button数据
279
- let buttondatas = {
280
- button_fields:{}
281
- }
282
- buttondatas.button_name=button.button_name
283
- buttondatas.button_index=index
284
- if(button.button_fields){
285
- for(let i=0;i<button.button_fields.length;i++){
286
- buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
287
- }
288
- }
289
- this.model.button =buttondatas
290
-
291
- if(button.button_name==='退回'){
292
- this.showmodal=true
293
- }else if(button.button_name==='下发'){
294
- this.showmodal=true
295
- }else{
296
- this.$dispatch('button',this.model)
297
- }
298
- },
299
- // 级联操作预留
300
- select_change(index){
301
- this.$dispatch('select_cascade',index)
302
- },
303
- // 检测按钮的disable
304
- disabled_check(required,value){
305
- console.log("被检测到的值是什么")
306
- console.log(required)
307
- console.log(value)
308
- if(required&&value){
309
- this.disable_button = false
310
-
311
- let fields = this.data.fields
312
- let flag = false
313
- for(let i = 0;i<fields.length;i++){
314
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
315
- flag = true
316
- }
317
- }
318
- this.disable_button = flag
319
- }
320
- }
321
- },
322
- watch:{
323
- 'data.operate_date'(){
324
- if(this.data.filiale){
325
- this.model.f_filiale = this.data.filiale
326
- }else{
327
- this.model.f_filiale = Vue.user.f_parentname
328
- }
329
- if(this.data.f_parentname){
330
- this.model.f_parentname = this.data.f_parentname
331
- }else{
332
- this.model.f_parentname = Vue.user.f_parentname
333
- }
334
- if(this.data.operate_date){
335
- this.model.f_operate_date = this.data.operate_date
336
- }else{
337
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
338
- }
339
- if(this.data.operator){
340
- this.model.f_operator = this.data.operator
341
- }else{
342
- this.model.f_operator = Vue.user.name
343
- }
344
- },
345
- deep:true
346
- },
347
- computed: {
348
- // 输入后按钮检测
349
- check_disable: function (){
350
- let fields = this.data.fields
351
- let flag = false
352
- for(let i = 0;i<fields.length;i++){
353
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
354
- flag = true
355
- }
356
- }
357
- this.disable_button = flag
358
- }
359
- }
360
- }
361
- </script>
1
+ <template>
2
+ <div class="auto select-overspread" :style="data.canedit?'pointer-events: auto':'pointer-events: none'">
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" style="display: inline-block;width: 100%">
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="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
22
+ @blur ="select_change(index),check_disable"
23
+ />
24
+ </div>
25
+ </div>
26
+ <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']">
27
+ <label style="margin-top: 0.7em" :class="item.label_bootstraped?item.label_bootstraped +' control-label':'control-label col-sm-6'">{{item.label}}:</label>
28
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
29
+ <datepicker
30
+ :placeholder="item.placeholder"
31
+ :value.sync="data.fields[index].value"
32
+ :format="'yyyy-MM-dd HH:mm:ss'"
33
+ v-model="data.fields[index].value"
34
+ :width="'100%'"
35
+ class="form-control"
36
+ :readonly="item.readonly"
37
+ :disabled="item.disabled"
38
+ @blur ="check_disable"
39
+ :show-reset-button="reset">
40
+ </datepicker>
41
+ </div>
42
+ </div>
43
+
44
+
45
+
46
+ <!--textarea-->
47
+ <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']">
48
+ <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
49
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
50
+ <textarea
51
+ :readonly="item.readonly"
52
+ :disabled="item.disabled"
53
+ class="form-control"
54
+ :rows="item.rows"
55
+ v-model="data.fields[index].value"
56
+ @change="disabled_check(data.fields[index].required,data.fields[index].value)"
57
+ @blur ="check_disable"
58
+ >
59
+ </textarea>
60
+ </div>
61
+ </div>
62
+
63
+ <!--radio-->
64
+ <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']">
65
+ <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
66
+ <div class="col-xs-12">
67
+ <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">
68
+ <label style="margin-top: 0.7em" for="row.label" :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{row.label}}</label>
69
+ <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">
70
+ </div>
71
+ </div>
72
+ </div>
73
+
74
+ <!--select-->
75
+ <div v-if="item.type==='select'" 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']">
76
+ <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
77
+ <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur ="check_disable" @change="select_change(index),disabled_check(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"
78
+ :options='item.options' :valueSingle="true"></input-select>
79
+
80
+ </div>
81
+
82
+ <!--checkbox-->
83
+ <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']">
84
+ <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
85
+ <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">
86
+ <label class="font-size form-group col-sm-6">{{row.label}}</label>
87
+ <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6" :id="row.label" v-model="data.fields[index].items[index2].value">
88
+ </div>
89
+ </div>
90
+
91
+
92
+ </div>
93
+ </div>
94
+ <div class="col-sm-11 form-group">
95
+ <div class="form-group col-sm-6">
96
+ <label class=" col-sm-4 control-label">分公司:</label>
97
+ <div class="col-sm-5">
98
+ <input class="form-control" type="text" v-model="model.f_filiale" disabled>
99
+ </div>
100
+ </div>
101
+ <div class="col-sm-6 form-group">
102
+ <label class="control-label col-sm-6">部门:</label>
103
+ <div class="col-sm-5">
104
+ <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ <div class="col-sm-11 form-group">
109
+ <div class="col-sm-6 form-group">
110
+ <label class="control-label col-sm-4">操作日期:</label>
111
+ <div class="col-sm-5">
112
+ <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
113
+ </div>
114
+ </div>
115
+ <div class="col-sm-6 form-group">
116
+ <label class="control-label col-sm-6">操作人:</label>
117
+ <div class="col-sm-5">
118
+ <input type="text" class="form-control" disabled v-model="model.f_operator"/>
119
+ </div>
120
+ </div>
121
+ </div>
122
+
123
+ </form>
124
+ </validator>
125
+ <div class="from-group col-xs-12" v-show="data.canedit">
126
+ <center>
127
+ <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':'']">
128
+ <!-- 按钮组 -->
129
+ <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
130
+ type="button" @click="clicked(index,button)" style="border-radius:5px; "
131
+ :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':'']">
132
+ {{button.button_name}}
133
+ </button>
134
+ </div>
135
+ </center>
136
+ </div>
137
+ <div class="form-group col-xs-12" style="height: 10px;width: 100%"></div>
138
+ <!-- 模态框 -->
139
+
140
+ <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
141
+ <header slot="modal-header" class="modal-header">
142
+ <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
143
+ <h4 class="modal-title">{{model.button.button_name}}</h4>
144
+ </header>
145
+ <article slot="modal-body" class="modal-body">
146
+ <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
147
+ <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
148
+ <div class="col-sm-7">
149
+ <!--select-->
150
+ <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"
151
+ :options='button_field.options'></input-select>
152
+ <!-- input -->
153
+ <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
154
+ </div>
155
+ </div>
156
+ </article>
157
+ <footer slot="modal-footer" style="border-top:none" class="modal-footer">
158
+ <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
159
+ </footer>
160
+ </modal>
161
+ </div>
162
+ </template>
163
+ <script>
164
+
165
+ // Date格式化
166
+ Date.prototype.Format = function (fmt) {
167
+ var o = {
168
+ "M+": this.getMonth() + 1, //月份
169
+ "d+": this.getDate(), //日
170
+ "H+": this.getHours(), //小时
171
+ "m+": this.getMinutes(), //分
172
+ "s+": this.getSeconds(), //秒
173
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
174
+ "S": this.getMilliseconds() //毫秒
175
+ };
176
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
177
+ for (var k in o)
178
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
179
+ return fmt;
180
+ }
181
+
182
+ import Vue from 'vue'
183
+ import {HttpResetClass} from 'vue-client'
184
+
185
+ export default {
186
+ title: '报建业务通用组件',
187
+ props: ['data'],
188
+ data () {
189
+ return {
190
+ model:{
191
+ button:{
192
+ button_name:null,
193
+ button_index:null
194
+ },
195
+ f_filiale:null,
196
+ f_parentname:null,
197
+ f_operate_date:null,
198
+ f_operator:null
199
+ },
200
+ countmoney:[0,0],
201
+ f_meter_brand:'',
202
+ data:null,
203
+ showmodal:false,
204
+ disable_button:true
205
+ }
206
+ },
207
+ created(){
208
+ console.log("233333333333333")
209
+ console.log(this.data.canedit)
210
+ // 初始化数据
211
+ this.initializtion()
212
+ },
213
+ methods: {
214
+ // 初始化数据
215
+ smalltoBIG(n) {
216
+ let fraction = ['角', '分'];
217
+ let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
218
+ let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
219
+ let head = n < 0 ? '欠' : '';
220
+ n = Math.abs(n);
221
+
222
+ let s = '';
223
+
224
+ for (var i = 0; i < fraction.length; i++) {
225
+ s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
226
+ }
227
+ s = s || '整';
228
+ n = Math.floor(n);
229
+
230
+ for (var i = 0; i < unit[0].length && n > 0; i++) {
231
+ let p = '';
232
+ for (var j = 0; j < unit[1].length && n > 0; j++) {
233
+ p = digit[n % 10] + unit[1][j] + p;
234
+ n = Math.floor(n / 10);
235
+ }
236
+ s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
237
+ }
238
+ return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
239
+ },
240
+ initializtion(){
241
+ console.log('进入serviceview的initializtion方法')
242
+ console.log(JSON.stringify(this.data))
243
+ // let temp = this.data
244
+ // let temp = JSON.parse()
245
+ // this.data = temp
246
+ // datepicker 没有值给当时值
247
+
248
+ if(this.data.fields){
249
+ for(let i=0;i<this.data.fields.length;i++){
250
+ if (this.data.fields[i].value){
251
+ if (this.data.fields[i].value=='null'){
252
+ console.log("看看为空的字段名"+this.data.fields[i].label)
253
+ this.data.fields[i].value=null
254
+ console.log("赋值完成")
255
+ }
256
+ }
257
+ if (this.data.fields[i].label=='气表品牌'){
258
+ let condition = "f_orgid = '" + Vue.user.orgid + "'"
259
+ new HttpResetClass().load('POST',`${this.$androidUtil.getProxyUrl()}/rs/sql/applysingleTable`,{data:{tablename:'t_gasbrand',condition:condition}}, {resolveMsg: null, rejectMsg: null}).then(res=>{
260
+ let data = []
261
+ let array = []
262
+ data = res.data.map(item => {
263
+ return item.f_meter_brand;
264
+ })
265
+ for (let q = 0; q < data.length; q++) {
266
+ let arraydata = {
267
+ 'label': data[q],
268
+ 'value': data[q]
269
+ }
270
+ if (array.length != 0) {
271
+ for (let w = 0; w < array.length; w++) {
272
+ if (array[w].label == data[q]) {
273
+ break
274
+ }
275
+ while (w == array.length - 1) {
276
+ array.push(arraydata)
277
+ break
278
+ }
279
+ }
280
+ } else {
281
+ array.push(arraydata)
282
+ }
283
+ }
284
+ this.data.fields[i].options = array
285
+ console.log("气表品牌选择框数据:" + JSON.stringify(this.data.fields[i].options))
286
+ })
287
+ }
288
+ if (this.data.fields[i].label=='气表品牌'){
289
+ console.log("给表号赋值")
290
+ this.f_meter_brand=this.data.fields[i].value
291
+ console.log(this.data.fields[i].value)
292
+ console.log(this.f_meter_brand)
293
+
294
+ }
295
+ if (this.data.fields[i].label === '通气人'){
296
+ console.log("通气人")
297
+ this.data.fields[i].value = Vue.user.name
298
+ }
299
+ if (this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
300
+ this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
301
+ }
302
+ }
303
+ }
304
+ if (this.data.title=='通气') {
305
+ let http2 = new HttpResetClass()
306
+ console.log(this.f_meter_brand)
307
+ console.log("拿到表号")
308
+ http2.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/queryGasType`, {
309
+ data: {
310
+ f_orgid: Vue.user.orgid,
311
+ f_meter_brand: this.f_meter_brand
312
+ }
313
+ }, {resolveMsg: null, rejectMsg: null}).then(res2=>{
314
+ console.log("气表型号查询数据" + JSON.stringify(res2))
315
+ console.log("气表型号查询数据" + JSON.stringify(res2.data))
316
+ if (res2.data[0].f_meter_type == '机表') {
317
+ for (let i = 0; i < this.data.fields.length; i++) {
318
+ if (this.data.fields[i].label == '抄表本') {
319
+ let condition = " f_orgname = '" + Vue.user.orgs + "'"
320
+ console.log("77777777777777")
321
+ console.log(condition)
322
+ new HttpResetClass().load('POST',`${this.$androidUtil.getProxyUrl()}/rs/sql/applysingleTable`,{data:{tablename: 't_meter_book', condition: condition}}, {resolveMsg: null, rejectMsg: "获取抄表本失败"}).then(res=>{
323
+ let data = []
324
+ let array = []
325
+ data = res.data.map(item => {
326
+ return item.f_book_name;
327
+ })
328
+ for (let q = 0; q < data.length; q++) {
329
+ let arraydata = {
330
+ 'label': data[q],
331
+ 'value': data[q]
332
+ }
333
+ if (array.length != 0) {
334
+ for (let w = 0; w < array.length; w++) {
335
+ if (array[w].label == data[q]) {
336
+ break
337
+ }
338
+ while (w == array.length - 1) {
339
+ array.push(arraydata)
340
+ break
341
+ }
342
+ }
343
+ } else {
344
+ array.push(arraydata)
345
+ }
346
+ }
347
+ console.log("抄表册查询数据:" + JSON.stringify(res.data))
348
+ console.log("抄表册查询数据:" + JSON.stringify(array))
349
+ this.data.fields[i].options = array
350
+ this.data.fields[i].hidden = false
351
+ this.data.fields[i].required = true
352
+ })
353
+
354
+
355
+ }
356
+ }
357
+ }
358
+ if (res2.data[0].f_meter_type != '机表') {
359
+ console.log("进入非机表")
360
+ for (let i = 0; i < this.data.fields.length; i++) {
361
+ if (this.data.fields[i].label == '抄表本') {
362
+ this.data.fields[i].hidden = true
363
+ this.data.fields[i].required = false
364
+
365
+ }
366
+ }
367
+ }
368
+ })
369
+
370
+
371
+ }
372
+ if(this.data.filiale){
373
+ this.model.f_filiale = this.data.f_filiale
374
+ }else{
375
+ this.model.f_filiale = Vue.user.orgs
376
+ }
377
+ if(this.data.f_parentname){
378
+ this.model.f_parentname = this.data.f_parentname
379
+ }else{
380
+ this.model.f_parentname = Vue.user.f_department_name
381
+ }
382
+ if(this.data.operate_date){
383
+ this.model.f_operate_date = this.data.operate_date
384
+ }else{
385
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
386
+ }
387
+ if(this.data.operator){
388
+ this.model.f_operator = this.data.operator
389
+ }else{
390
+ this.model.f_operator = Vue.user.name
391
+ }
392
+ },
393
+ // 模态框点击确定按钮
394
+ acknowledge(){
395
+ for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
396
+ 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
397
+ }
398
+ this.showmodal=false
399
+ this.$dispatch('button',this.model)
400
+ },
401
+ // 关闭模态框
402
+ closemodal(){
403
+ this.showmodal=false
404
+ },
405
+ // 点击按钮
406
+ clicked(index,button){
407
+ console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
408
+ // 组织model.fields数据
409
+ let modeldatas = {}
410
+ for(let i=0;i<this.data.fields.length;i++){
411
+ // checkbox特殊处理
412
+ if(this.data.fields[i].type==='checkbox'){
413
+ for(let j=0;j<this.data.fields[i].items.length;j++){
414
+ modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
415
+ }
416
+ }else{
417
+ modeldatas[this.data.fields[i].field]=this.data.fields[i].value
418
+ }
419
+ }
420
+ modeldatas.f_process_id = this.data.f_process_id
421
+ modeldatas.f_filiale = this.model.f_filiale
422
+ modeldatas.f_parentname = this.model.f_parentname
423
+ modeldatas.f_operator = this.model.f_operator
424
+ modeldatas.f_operate_date = this.model.f_operate_date
425
+ this.model = null
426
+ this.model = modeldatas
427
+ // 初始化model.button数据
428
+ let buttondatas = {
429
+ button_fields:{}
430
+ }
431
+ buttondatas.button_name=button.button_name
432
+ buttondatas.button_index=index
433
+ if(button.button_fields){
434
+ for(let i=0;i<button.button_fields.length;i++){
435
+ buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
436
+ }
437
+ }
438
+ this.model.button =buttondatas
439
+
440
+ if(button.button_name==='退回'){
441
+ this.showmodal=true
442
+ }else if(button.button_name==='下发'){
443
+ this.showmodal=true
444
+ }else{
445
+ this.$dispatch('button',this.model)
446
+ }
447
+ },
448
+ // 级联操作预留
449
+ select_change(index){
450
+ console.log("99999999999999")
451
+ if (this.data.title=='安装施工'){
452
+ console.log("进入")
453
+ console.log(this.data.fields[13].value)
454
+ if (index==13){
455
+ let style=this.data.fields[13].value
456
+ new HttpResetClass().load('POST',`${this.$androidUtil.getProxyUrl()}/rs/sql/queryGasType`,{data:{f_orgid:Vue.user.orgid,f_meter_brand:style}}, {resolveMsg: null, rejectMsg: null}).then(res2=>{
457
+ console.log("气表型号查询数据" + JSON.stringify(res2.data))
458
+ let data = []
459
+ let data2 = []
460
+ let array = []
461
+ data = res2.data.map(item => {
462
+ return item.f_meter_style;
463
+ })
464
+ data2 = res2.data.map(item => {
465
+ return item.f_type;
466
+ })
467
+ console.log("是不是来过这儿1")
468
+ for (let q = 0; q < data.length; q++) {
469
+ let arraydata = {
470
+ 'label': data[q] + data2[q],
471
+ 'value': data[q] + data2[q]
472
+ }
473
+ let then = data[q] + data2[q]
474
+ if (array.length != 0) {
475
+ for (let w = 0; w < array.length; w++) {
476
+ if (array[w].label == then) {
477
+ break
478
+ }
479
+ while (w == array.length - 1) {
480
+ array.push(arraydata)
481
+ break
482
+ }
483
+ }
484
+ } else {
485
+ array.push(arraydata)
486
+ }
487
+ }
488
+ this.data.fields[14].options = array
489
+ console.log("选择框数据:" + JSON.stringify(this.data.fields[14].options))
490
+
491
+ })
492
+ }
493
+ }
494
+ if (this.data.title=='报建缴费' || this.data.title=='现场勘察'){
495
+ if (index==14 && this.data.title=='报建缴费'){
496
+
497
+ console.log("14141414")
498
+ let unaccounts_money=this.data.fields[13].value?parseFloat(this.data.fields[13].value):0-this.data.fields[14].value?parseFloat(this.data.fields[14].value):0
499
+ let bignumber=this.smalltoBIG(this.data.fields[14].value?parseFloat(this.data.fields[14].value):0)
500
+ this.$set('data.fields[15].value',unaccounts_money)
501
+ this.$set('data.fields[17].value',bignumber)
502
+
503
+ }
504
+ if (index==11||index==12){
505
+ this.countmoney[index-11]=this.data.fields[index].value?parseFloat(this.data.fields[index].value):0
506
+ console.log(this.data.fields[index].value)
507
+ console.log("做出了改变")
508
+ }else{
509
+ this.countmoney[0]=this.data.fields[11].value?parseFloat(this.data.fields[11].value):0
510
+ this.countmoney[1]=this.data.fields[12].value?parseFloat(this.data.fields[12].value):0
511
+ }
512
+ console.log(JSON.stringify(this.countmoney))
513
+ let money=0
514
+ for (let i = 0; i < this.countmoney.length; i++) {
515
+ money+=this.countmoney[i]
516
+ }
517
+ this.$set('data.fields[13].value',money)
518
+ if(this.data.title=='现场勘察'){
519
+ this.$set('data.fields[14].value',money)
520
+ }
521
+ //this.$set('data.fields[9].value',money)
522
+ }
523
+ //this.$dispatch('select_cascade',index)
524
+ },
525
+ // 检测按钮的disable
526
+ disabled_check(required,value){
527
+ console.log("被检测到的值是什么")
528
+ console.log(required)
529
+ console.log(value)
530
+ if(required&&value){
531
+ this.disable_button = false
532
+
533
+ let fields = this.data.fields
534
+ let flag = false
535
+ for(let i = 0;i<fields.length;i++){
536
+ if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
537
+ flag = true
538
+ }
539
+ }
540
+ this.disable_button = flag
541
+ }
542
+ }
543
+ },
544
+ watch:{
545
+ 'data.operate_date'(){
546
+ if(this.data.filiale){
547
+ this.model.f_filiale = this.data.filiale
548
+ }else{
549
+ this.model.f_filiale = Vue.user.f_parentname
550
+ }
551
+ if(this.data.f_parentname){
552
+ this.model.f_parentname = this.data.f_parentname
553
+ }else{
554
+ this.model.f_parentname = Vue.user.f_parentname
555
+ }
556
+ if(this.data.operate_date){
557
+ this.model.f_operate_date = this.data.operate_date
558
+ }else{
559
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
560
+ }
561
+ if(this.data.operator){
562
+ this.model.f_operator = this.data.operator
563
+ }else{
564
+ this.model.f_operator = Vue.user.name
565
+ }
566
+ },
567
+ deep:true
568
+ },
569
+ computed: {
570
+ // 输入后按钮检测
571
+ check_disable: function (){
572
+ let fields = this.data.fields
573
+ let flag = false
574
+ for(let i = 0;i<fields.length;i++){
575
+ if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
576
+ flag = true
577
+ }
578
+ }
579
+ this.disable_button = flag
580
+ }
581
+ }
582
+ }
583
+ </script>