apply-clients 5.0.35-36 → 5.0.35-39

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.
@@ -1,804 +1,804 @@
1
- <template>
2
- <div class="auto select-overspread" v-if="refresh">
3
- <!--<div class="panel panel-info" v-if="!data.titlevisible">-->
4
- <!--<div class="panel-heading">-->
5
- <!--<h3 class="panel-title">-->
6
- <!--<span >{{data.title}}</span>-->
7
- <!--<span v-if="data.back_reason" style="color: red;font-family: 微软雅黑;font-weight: bold"> 请注意被退回原因为:{{data.back_reason}}</span>-->
8
- <!--</h3>-->
9
- <!--</div>-->
10
- <!--</div>-->
11
- <validator name="v">
12
- <form class="form-horizontal">
13
- <div class="col-sm-12 form-group form-group1">
14
- <div v-for="(index,item) in data.fields">
15
- <!--input-->
16
- <div :style="item.style+';height: 34px;'"
17
- v-if="item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email'"
18
- v-show="!item.hidden"
19
- :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 form-group1']">
20
- <label :style="item.label_style? item.label_style:''+';width:85px;'"
21
- :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':item.label_style?'':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
22
- <div :style="item.value_style? item.value_style:''"
23
- :class="item.value_bootstraped?item.value_bootstraped:item.value_style?'':'col-sm-6'">
24
- <input class="form-control" style="background-color: #f7fbff;"
25
- :type="item.type"
26
- v-model="data.fields[index].value"
27
- :placeholder="item.placeholder"
28
- :value="data.fields[index].value"
29
- :readonly="item.readonly"
30
- :disabled="item.disabled"
31
- @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
32
- @blur="select_change(index),check_disable"
33
- />
34
- </div>
35
- </div>
36
- <!--时间datepicker-->
37
- <div :style="item.style? item.style+';height: 34px;':'height: 34px;'" v-if="item.type==='datepicker'"
38
- v-show="!item.hidden"
39
- :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 form-group1']">
40
- <label style="width:85px"
41
- :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':'control-label control-label-justify col-sm-6'">{{item.label}}</label>
42
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
43
- <datepicker
44
- :placeholder="item.placeholder"
45
- :value.sync="data.fields[index].value"
46
- :format="'yyyy-MM-dd HH:mm:ss'"
47
- v-model="data.fields[index].value"
48
- :readonly=true
49
- :disabled="item.disabled"
50
- @blur="check_disable"
51
- :show-reset-button="reset">
52
- </datepicker>
53
- </div>
54
- </div>
55
-
56
- <!--textarea-->
57
- <div :style="item.style? item.style:'height: 34px;'" v-if="item.type==='textarea'" v-show="!item.hidden"
58
- :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']">
59
- <label :style="item.label_style? item.label_style:''"
60
- :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':item.label_style?'':'control-label-justify control-label col-sm-3'">{{item.label}}</label>
61
- <div :style="item.value_style? item.value_style:''"
62
- :class="item.value_bootstraped?item.value_bootstraped:item.value_style?'':'col-sm-10'">
63
- <textarea
64
- :readonly="item.readonly"
65
- :disabled="item.disabled"
66
- class="form-control"
67
- style="background-color: #f7fbff;margin-top: 7px"
68
- :rows="item.rows"
69
- v-model="data.fields[index].value"
70
- @change="disabled_check(data.fields[index].required,data.fields[index].value)"
71
- @blur="check_disable"
72
- >
73
- </textarea>
74
- </div>
75
- </div>
76
-
77
- <!--radio-->
78
- <div v-if="item.type==='radio'"
79
- :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']">
80
- <label v-if="item.label"
81
- :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':'control-label-justify control-label col-sm-2'">{{item.label}}</label>
82
- <div
83
- :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-sm-5': 'col-sm-3'"
84
- v-for="(index2,row) in item.items">
85
- <label for="row.label"
86
- :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'">{{row.label}}</label>
87
- <input @blur="check_disable"
88
- :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'"
89
- :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio"
90
- :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value"
91
- v-model="data.fields[index].value">
92
- </div>
93
- </div>
94
-
95
- <!--select-->
96
- <div style="height: 34px" v-if="item.type==='select'" v-show="!item.hidden"
97
- :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']">
98
- <label style="width:85px;"
99
- :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
100
- <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur="check_disable"
101
- @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
102
- :readonly="item.readonly" :disabled="item.disabled" :value.sync="data.fields[index].value"
103
- v-model="data.fields[index].value"
104
- :search="true"
105
- :options='data.fields[index].options' :valueSingle="true"></input-select>
106
-
107
- </div>
108
-
109
-
110
- <!--checkbox-->
111
- <div v-if="item.type==='checkbox'"
112
- :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']">
113
- <label v-if="item.label"
114
- :class="item.label_bootstraped?item.label_bootstraped+' control-label ':'control-label col-sm-2'">{{item.label}}</label>
115
- <div style="margin-top: 6px"
116
- :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'"
117
- v-for="(index2,row) in item.items">
118
- <label class="font-size form-group col-sm-6">{{row.label}}</label>
119
- <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6"
120
- :id="row.label" v-model="data.fields[index].items[index2].value" @click="checkboxSelect(index,index2)" >
121
- </div>
122
- </div>
123
- </div>
124
- <!-- onetomany -->
125
- <div class="col-sm-12" v-for="(i,datagrid) in data.onetomany">
126
- <table v-show="!datagrid.hidden" class="table table-bordered table-striped table-hover" style="margin-top: 80px">
127
- <tr style="background-color: #00A3F0">
128
- <th style="text-align: center;border-color: #00A3F0"><font color="white">序号</font></th>
129
- <th v-for="labels in datagrid.fields" style="text-align: center;border-color: #00A3F0">
130
- <nobr><font color="white">{{labels.label}}</font></nobr>
131
- </th>
132
- <th style="text-align: center;border-color: #00A3F0;padding: 0px">
133
- <button type="button" @click="$dispatch('add',i)" class="btn btn-warning"
134
- v-if="!data.onetomany[i].nopower">
135
- +
136
- </button>
137
- </th>
138
- </tr>
139
- <tr v-for="(j,row) in model.rows[i]">
140
- <td style="text-align: center">{{$index+1}}</td>
141
- <td v-for="key in surBodyData[i]" style="text-align: center">
142
- {{row[key]}}
143
- </td>
144
- <td style="text-align: center">
145
- <a href="#" @click="delete(i,j)" v-if="!data.onetomany[i].nopower">删除</a>
146
- </td>
147
- </tr>
148
- </table>
149
- </div>
150
- </div>
151
- <div class="col-sm-12 form-group text-center" style="padding-top:20px">
152
- <div class="form-group col-sm-2 center-block">
153
- <label class=" col-sm-6 control-label control-label-justify">所属公司:</label>
154
- <div class="col-sm-6">
155
- <input class="form-control" type="text" v-model="model.f_filiale" disabled>
156
- </div>
157
- </div>
158
- <div class="col-sm-1 form-group center-block">
159
- </div>
160
- <div class="col-sm-2 form-group center-block">
161
- <label class="control-label control-label-justify col-sm-6">部门:</label>
162
- <div class="col-sm-6">
163
- <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
164
- </div>
165
- </div>
166
- <div class="col-sm-1 form-group center-block">
167
- </div>
168
- <div class="col-sm-2 form-group center-block">
169
- <label class="control-label control-label-justify col-sm-6">操作人:</label>
170
- <div class="col-sm-6 ">
171
- <input type="text" class="form-control" disabled v-model="model.f_operator"/>
172
- </div>
173
- </div>
174
- <div class="col-sm-1 form-group center-block">
175
- </div>
176
- <div class="col-sm-2 form-group center-block">
177
- <label class="control-label control-label-justify col-sm-6">操作日期:</label>
178
- <div class="col-sm-6">
179
- <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
180
- </div>
181
- </div>
182
- </div>
183
- </form>
184
- </validator>
185
- <div class="from-group col-sm-11">
186
- <center>
187
- <!-- 按钮组 -->
188
- <button v-for="(index,button) in data.buttons"
189
- :disabled="(button.button_name==='提交'||button.button_name==='下发'||button.button_name==='打印回单')&&disable_button" type="button"
190
- @click="clicked(index,button)"
191
- :class="(button.button_name==='提交'||button.button_name==='下发'||button.button_name==='打印回单')&&disable_button?'btn btn-default':'btn btn-primary'"
192
- style="width:80px; margin-left:50px;">
193
- {{button.button_name}}
194
- </button>
195
- </center>
196
- </div>
197
- <!-- 按钮模态框 -->
198
- <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
199
- <header slot="modal-header" class="modal-header">
200
- <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
201
- <h4 class="modal-title">{{model.button.button_name}}</h4>
202
- </header>
203
- <article slot="modal-body" class="modal-body">
204
- <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
205
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
206
- <div class="col-sm-7">
207
- <!--select-->
208
- <input-select v-if="button_field.type=='select'"
209
- :value.sync="data.buttons[model.button.button_index].button_fields[index].value"
210
- v-model="data.buttons[model.button.button_index].button_fields[index].value"
211
- :options='button_field.options'></input-select>
212
- <!-- input -->
213
- <input v-else type="text" class="form-control"
214
- v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
215
- </div>
216
- </div>
217
- </article>
218
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
219
- <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
220
- </footer>
221
- </modal>
222
-
223
-
224
- <!-- onetomany新增模态框 -->
225
- <div class="auto"
226
- style="background-color:white;max-width: 700px;max-hight:500px;z-index:9999;box-shadow: 0px 0px 100px 10px grey;position: fixed;margin-left: 20%;"
227
- v-if="showadd">
228
-
229
- <div class="auto">
230
-
231
- <div style="padding-top: 15px;padding-left: 15px;padding-right: 15px;">
232
- <button type="button" class="close" @click="closemodal(modeltitle)"><span>&times;</span></button>
233
- <span class="modal-title" style="border-bottom: 1px solid #e5e5e5;"><font
234
- size="3">{{modeltitle}}</font></span>
235
- </div>
236
-            
237
- <div style="padding-top: 15px;border-top: 0px solid #e5e5e5;border-bottom: 0px solid #e5e5e5;">
238
- <div class="col-sm-12" v-for="(index,showadd_field) in showadd_fields.fields" v-if="refresh_modal">
239
- <label v-show="!showadd_field.hidden" class="control-label col-sm-3" style="margin-top: 10px">{{showadd_field.label}}:</label>
240
- <div class="col-sm-7" v-show="!showadd_field.hidden">
241
- <!--时间datepicker-->
242
- <div v-if="showadd_field.type=='datepicker'"
243
- :class="[showadd_fields[index].required&&!(showadd_fields.fields[index].value) ? 'has-error' : '']">
244
- <div>
245
- <datepicker
246
- :placeholder="showadd_field.placeholder"
247
- :value.sync="showadd_fields.fields[index].value"
248
- :format="'yyyy-MM-dd HH:mm:ss'"
249
- v-model="showadd_fields.fields[index].value"
250
- :readonly=true
251
- :disabled="showadd_fields.fields[index].disabled"
252
- @blur="check_disable"
253
- :show-reset-button="reset">
254
- </datepicker>
255
- </div>
256
- </div>
257
- <!--select-->
258
- <input-select
259
- @change="select_change_modal(index),disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
260
- v-if="showadd_field.type=='select'"
261
- @blur="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
262
- :mouseout="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
263
- :value.sync="showadd_fields.fields[index].value"
264
- v-model="showadd_fields.fields[index].value"
265
- :options='showadd_fields.fields[index].options'>
266
- </input-select>
267
- <!-- input -->
268
- <input :type="showadd_field.type"
269
- @change="select_change_modal(index),check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
270
- v-if="(showadd_field.type=='input'||showadd_field.type=='number')&&!showadd_field.hidden"
271
- @blur="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
272
- :mouseout="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
273
- :readonly="showadd_field.readonly" class="form-control"
274
- v-model="showadd_fields.fields[index].value"
275
- :value.sync="showadd_fields[index].value"/>
276
- <span
277
- v-if="showadd_fields.fields[index].error&&showadd_fields.fields[index].error.msg&&showadd_fields.fields[index].error.flag"
278
- style="color: red">{{showadd_fields.fields[index].error.msg}}</span>
279
- </div>
280
- </div>
281
- </div>
282
-
283
- <div style="padding-top: 15px;padding-left: 15px;padding-right: 15px;text-align: right;">
284
- <button :class="disable_button_modal?'btn btn-default':'btn btn-primary'" v-show="showadd"
285
- :disabled="disable_button_modal" type="button" @click="acknowledge(modeltitle)">
286
- 确认
287
- </button>
288
- </div>
289
-
290
- </div>
291
-  
292
- </div>
293
-
294
- </div>
295
- </template>
296
- <script>
297
- import Vue from 'vue'
298
- // Date格式化
299
- Date.prototype.Format = function (fmt) {
300
- var o = {
301
- "M+": this.getMonth() + 1, //月份
302
- "d+": this.getDate(), //日
303
- "H+": this.getHours(), //小时
304
- "m+": this.getMinutes(), //分
305
- "s+": this.getSeconds(), //秒
306
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
307
- "S": this.getMilliseconds() //毫秒
308
- };
309
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
310
- for (var k in o)
311
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
312
- return fmt;
313
- }
314
-
315
- export default {
316
- title: '报建业务通用组件',
317
- props: ['data'],
318
- data() {
319
- return {
320
- data: {
321
- onetomany: {
322
- fields: []
323
- }
324
- },
325
- surBodyData: [],
326
- refresh: true, // 控制重新渲染
327
- model: {
328
- rows: [],
329
- button: {
330
- button_name: null,
331
- button_index: null
332
- },
333
- f_filiale: null,
334
- f_parentname: null,
335
- f_operate_date: null,
336
- f_operator: null
337
- },
338
- showadd: false, // onetomany 新增模态框
339
- showadd_fields: [], // onetomany 新增模态框的字段配置
340
- // data: null,
341
- modeltitle: '',
342
- tempid: null,
343
- showadd_index: null,
344
- showmodal: false,
345
- disable_button: true,
346
- disable_button_modal: true,
347
- refresh_modal: true
348
- }
349
- },
350
- created() {
351
- // 初始化数据
352
- this.initializtion()
353
- },
354
- events: {
355
- async 'add'(index) {
356
- let templet = new Object()
357
- templet = this.data.onetomany[index]
358
- let count = 0
359
- for (let j = 0; j < templet.fields.length; j++) {
360
- templet.fields[j].value = ''
361
- if (templet.fields[j].type == 'datepicker') {
362
- templet.fields[j].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
363
- }
364
- if (templet.fields[j].required) {
365
- count++
366
- }
367
- }
368
- if (count == 0) {
369
- this.disable_button_modal = false
370
- }
371
- this.modeltitle = '新增'
372
- this.showadd_fields = templet
373
- this.showadd_index = index
374
- this.showadd = true
375
- }
376
- },
377
- methods: {
378
- // 获取组件中的数据
379
- getmodel() {
380
- // 组织model.fields数据
381
- let modeldatas = {}
382
- for (let i = 0; i < this.data.fields.length; i++) {
383
- // checkbox特殊处理
384
- if (this.data.fields[i].type === 'checkbox') {
385
- for (let j = 0; j < this.data.fields[i].items.length; j++) {
386
- modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
387
- }
388
- } else {
389
- modeldatas[this.data.fields[i].field] = this.data.fields[i].value
390
- }
391
- }
392
- modeldatas.f_process_id = this.data.f_process_id
393
- modeldatas.f_filiale = this.model.f_filiale
394
- modeldatas.f_parentname = this.model.f_parentname
395
- modeldatas.f_operator = this.model.f_operator
396
- modeldatas.f_operate_date = this.model.f_operate_date
397
- return modeldatas
398
- },
399
- // 修改
400
- revise(index, index2) {
401
- this.showadd_fields = []
402
- let templet = new Object()
403
- templet = this.data.onetomany[index]
404
- for (let j = 0; j < templet.fields.length; j++) {
405
- if (templet.fields[j].type == 'input') {
406
- templet[j] = {}
407
- templet[j].value = this.model.rows[index][index2][templet.fields[j].field]
408
- templet.fields[j].value = this.model.rows[index][index2][templet.fields[j].field]
409
- } else {
410
- templet.fields[j].value = this.model.rows[index][index2][templet.fields[j].field]
411
- if (templet.fields[j].type == 'datepicker') {
412
- templet.fields[j].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
413
- }
414
- }
415
- }
416
- this.tempid = this.model.rows[index][index2].id
417
- this.modeltitle = '修改'
418
- this.showadd_fields = templet
419
- this.showadd_index = index
420
- this.showadd = true
421
- },
422
- // 检测模态框按钮的disable
423
- disabled_check_modal(required, value) {
424
- if (required && value) {
425
- this.disable_button_modal = false
426
-
427
- let fields = this.showadd_fields.fields
428
- let flag = false
429
- for (let i = 0; i < fields.length; i++) {
430
- if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
431
- flag = true
432
- }
433
- }
434
- this.disable_button_modal = flag
435
- }
436
- },
437
- // 检测模态框按钮的disable,反向检查
438
- check_disable_modal() {
439
- let fields = this.showadd_fields.fields
440
- let flag = false
441
- for (let i = 0; i < fields.length; i++) {
442
- if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
443
- flag = true
444
- }
445
- }
446
- let count = 0
447
- for (let i = 0; i < fields.length; i++) {
448
- if (fields[i].type !== 'checkbox' && !fields[i].required) {
449
- count++
450
- }
451
- }
452
- if (count == 0) {
453
- flag = false
454
- }
455
- this.disable_button_modal = flag
456
- },
457
- checkboxSelect(index,index1){
458
- console.log("chufa事件");
459
- this.$dispatch('checkboxSelectControl', index, index1)
460
- },
461
- // 模态框级联操作预留
462
- select_change_modal(index) {
463
- if (this.showadd_fields.fields[index].value) {
464
- this.showadd_fields[index] = {}
465
- this.showadd_fields[index].value = this.showadd_fields.fields[index].value
466
- } else if (this.showadd_fields[index] && this.showadd_fields[index].value) {
467
- this.showadd_fields.fields[index].value = this.showadd_fields[index].value
468
- }
469
- this.refresh_modal = false
470
- this.$nextTick(() => {
471
- this.refresh_modal = true
472
- })
473
- this.$dispatch('select_cascade_modal', this.showadd_index, index)
474
- // if(this.showadd_fields.fields[index].label=='购货方纳税人识别号'){
475
- // if(this.showadd_fields.fields[index].value.length!=15&&this.showadd_fields.fields[index].value.length!=18&&this.showadd_fields.fields[index].value.length!=20){
476
- // this.$showMessage("购货方纳税人识别号必须为15位,18位或者20位")
477
- // this.showadd_fields.fields[index].value = ''
478
- // }
479
- // }
480
- },
481
- // 更新showadd模态框
482
- update_showadd_fields_value(index, value) {
483
- this.showadd_fields.fields[index].value = value
484
- this.showadd_fields[index] = {}
485
- this.showadd_fields[index].value = value
486
- },
487
- // 清理showadd模态框
488
- clear_showadd_fields_value(index) {
489
- this.showadd_fields.fields[index].value = ''
490
- this.showadd_fields[index].value = ''
491
- },
492
- // 删除
493
- delete(i, j) {
494
- this.$showMessage("您确定要删除这条记录吗?", ['confirm']).then((res) => {
495
- if (res == 'confirm') {
496
- this.$dispatch('onetomanydelete', i, j)
497
- }
498
- })
499
- },
500
- // 强制刷新
501
- update() {
502
- this.refresh = false
503
- this.$nextTick(() => {
504
- this.refresh = true
505
- })
506
- this.initializtion()
507
- },
508
- // 初始化数据
509
- initializtion() {
510
- let fields = this.data.fields
511
- let flag = false
512
- for (let i = 0; i < fields.length; i++) {
513
- if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
514
- flag = true
515
- }
516
- }
517
- let count = 0
518
- for (let i = 0; i < fields.length; i++) {
519
- if (fields[i].type !== 'checkbox' && !fields[i].required) {
520
- count++
521
- }
522
- }
523
- if (count = 0) {
524
- flag = false
525
- }
526
- this.disable_button = flag
527
-
528
- this.model.rows = []
529
- this.surBodyData = []
530
- if (this.data.onetomany && this.data.onetomany.length > 0) {
531
- for (let i = 0; i < this.data.onetomany.length; i++) {
532
- let temp = []
533
- for (let j = 0; j < this.data.onetomany[i].fields.length; j++) {
534
- temp.push(this.data.onetomany[i].fields[j].field)
535
- }
536
- this.surBodyData.push(temp)
537
- }
538
- for (let i = 0; i < this.data.onetomany.length; i++) {
539
- if (this.data.onetomany[i].rows) {
540
- this.model.rows.push(this.data.onetomany[i].rows)
541
- }
542
- }
543
-
544
- }
545
- // datepicker 没有值给当时值
546
- if (this.data.fields && this.data.fields.length > 0) {
547
- for (let i = 0; i < this.data.fields.length; i++) {
548
- if (this.data.fields[i].type === 'datepicker' && !this.data.fields[i].value) {
549
- this.data.fields[i].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
550
- }
551
- }
552
- } else {
553
- this.disable_button = false
554
- }
555
- if (this.data.filiale) {
556
- this.model.f_filiale = this.data.filiale
557
- } else {
558
- this.model.f_filiale = this.$login.f.f_fengongsi
559
- }
560
- if (this.data.f_parentname) {
561
- this.model.f_parentname = this.data.f_parentname
562
- } else {
563
- this.model.f_parentname = this.$login.f.f_parentname
564
- }
565
- if (this.data.operate_date) {
566
- this.model.f_operate_date = this.data.operate_date
567
- } else {
568
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
569
- }
570
- if (this.data.operator) {
571
- this.model.f_operator = this.data.operator
572
- } else {
573
- this.model.f_operator = this.$login.f.name
574
- }
575
- },
576
- // 模态框点击确定按钮
577
- acknowledge(val) {
578
- if (val == '新增') {
579
- let temp = {}
580
- for (let i = 0; i < this.showadd_fields.fields.length; i++) {
581
- if (this.showadd_fields.fields[i].value) {
582
- temp[this.showadd_fields.fields[i].field] = this.showadd_fields.fields[i].value
583
- } else if (this.showadd_fields && this.showadd_fields[i] && this.showadd_fields[i].value) {
584
- temp[this.showadd_fields.fields[i].field] = this.showadd_fields[i].value
585
- }
586
- }
587
- this.model.rows[this.showadd_index].push(temp)
588
- this.$dispatch('confirm', this.data.onetomany[this.showadd_index].tables, temp, this.showadd_index, this.model.rows[this.showadd_index].length - 1)
589
- this.showadd_fields = null
590
- this.showadd_index = null
591
- this.closemodal(val)
592
- } else {
593
- for (let i = 0; i < this.data.buttons[this.model.button.button_index].button_fields.length; i++) {
594
- 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
595
- }
596
- this.showmodal = false
597
- this.$dispatch('button', this.model)
598
- }
599
- },
600
- // 关闭模态框
601
- closemodal(val) {
602
- if (this.showadd_fields && this.showadd_fields.fields && this.showadd_fields.fields.length) {
603
- for (let i = 0; i < this.showadd_fields.fields.length; i++) {
604
- if (this.showadd_fields[i] && this.showadd_fields[i].value) {
605
- this.showadd_fields[i].value = ''
606
- }
607
- if (this.showadd_fields.fields[i] && this.showadd_fields.fields[i].value) {
608
- this.showadd_fields.fields[i].value = ''
609
- }
610
- }
611
- }
612
-
613
- if (val != '新增' || val != '修改' || val != '删除') {
614
- this.disable_button = false
615
- }
616
- this.showmodal = false
617
- if (val == '新增') {
618
- this.showadd = false
619
- }
620
- this.showadd_fields = null
621
- this.disable_button_modal = true
622
- this.modeltitle = null
623
- this.tempid = null
624
- },
625
- // 点击按钮
626
- clicked(index, button) {
627
-
628
- // onetomany 处理
629
- // if(this.data.onetomany&&this.data.onetomany.fields.length>0){
630
- // let temp = {}
631
- // temp['tables'] = this.data.onetomany.tables
632
- // temp['rows'] = this.model.rows
633
- // this.$dispatch('onetomanyevent',temp)
634
- // }
635
- this.disable_button=false;
636
- this.$parent.$parent.$parent.$parent.$refs.queryuser.button_name="查询"
637
- if(button.button_name !='打印回单')
638
- this.disable_button = true
639
- console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
640
- // 组织model.fields数据
641
- let modeldatas = {}
642
- for (let i = 0; i < this.data.fields.length; i++) {
643
- // checkbox特殊处理
644
- if (this.data.fields[i].type === 'checkbox') {
645
- for (let j = 0; j < this.data.fields[i].items.length; j++) {
646
- modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
647
- }
648
- } else {
649
- modeldatas[this.data.fields[i].field] = this.data.fields[i].value
650
- }
651
- }
652
- modeldatas.f_process_id = this.data.f_process_id
653
- modeldatas.f_filiale = this.model.f_filiale
654
- modeldatas.f_parentname = this.model.f_parentname
655
- modeldatas.f_operator = this.model.f_operator
656
- modeldatas.f_operate_date = this.model.f_operate_date
657
- this.model = null
658
- this.model = modeldatas
659
- // 初始化model.button数据
660
- let buttondatas = {
661
- button_fields: {}
662
- }
663
- if (button.button_event) {
664
- buttondatas.button_event = button.button_event
665
- }
666
- if (button.button_node) {
667
- buttondatas.button_node = button.button_node
668
- }
669
- if (button.button_person) {
670
- buttondatas.button_person = button.button_person
671
- }
672
- buttondatas.button_name = button.button_name
673
- buttondatas.button_index = index
674
- if (button.button_fields) {
675
- for (let i = 0; i < button.button_fields.length; i++) {
676
- buttondatas.button_fields[button.button_fields[i].field] = button.button_fields[i].value
677
- }
678
- }
679
- this.model.button = buttondatas
680
- if (button.button_name === '退回') {
681
- this.showmodal = true
682
- } else if (button.button_name === '下发') {
683
- this.showmodal = true
684
- } else {
685
- this.$dispatch('button', this.model)
686
- }
687
- },
688
- // 级联操作预留
689
- select_change(index) {
690
- this.$dispatch('select_cascade', index)
691
- },
692
- // 检测按钮的disable
693
- disabled_check(required, value) {
694
- if (required && value) {
695
- this.disable_button = false
696
-
697
- let fields = this.data.fields
698
- let flag = false
699
- for (let i = 0; i < fields.length; i++) {
700
- if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
701
- flag = true
702
- }
703
- }
704
- this.disable_button = flag
705
- }
706
- }
707
- },
708
- watch: {
709
- 'data.operate_date'() {
710
- if (this.data.filiale) {
711
- this.model.f_filiale = this.data.filiale
712
- } else {
713
- this.model.f_filiale = this.$login.f.f_fengongsi
714
- }
715
- if (this.data.f_parentname) {
716
- this.model.f_parentname = this.data.f_parentname
717
- } else {
718
- this.model.f_parentname = this.$login.f.f_parentname
719
- }
720
- if (this.data.operate_date) {
721
- this.model.f_operate_date = this.data.operate_date
722
- } else {
723
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
724
- }
725
- if (this.data.operator) {
726
- this.model.f_operator = this.data.operator
727
- } else {
728
- this.model.f_operator = this.$login.f.name
729
- }
730
- },
731
- 'data.fields'() {
732
- this.refresh = false
733
- this.$nextTick(() => {
734
- this.refresh = true
735
- })
736
- this.initializtion()
737
- },
738
- deep: true
739
- },
740
- computed: {
741
- // 输入后按钮检测
742
- check_disable: function () {
743
- let fields = this.data.fields
744
- let flag = false
745
- for (let i = 0; i < fields.length; i++) {
746
- if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
747
- flag = true
748
- }
749
- }
750
- let count = 0
751
- for (let i = 0; i < fields.length; i++) {
752
- if (fields[i].type !== 'checkbox' && !fields[i].required) {
753
- count++
754
- }
755
- }
756
- if (count == 0) {
757
- flag = false
758
- }
759
- this.disable_button = flag
760
- },
761
- refreshed() {
762
- let fields = this.data.fields
763
- this.data.fields = fields
764
- }
765
- }
766
- }
767
- </script>
768
- <style scoped>
769
- th {
770
-
771
- }
772
-
773
- .control-label-justify {
774
- display: inline-block;
775
- vertical-align: top;
776
- width: 70px;
777
- text-align: justify;
778
- font-family: PingFang-SC-Bold;
779
- }
780
-
781
- .control-label-justify::after {
782
- content: "";
783
- display: inline-block;
784
- width: 70px;
785
- overflow: hidden;
786
- height: 0;
787
- }
788
-
789
- input::-webkit-outer-spin-button,
790
- input::-webkit-inner-spin-button {
791
- -webkit-appearance: none;
792
- }
793
-
794
- input[type="number"] {
795
- -moz-appearance: textfield;
796
- }
797
-
798
- tr {
799
- height: 34px;
800
- }
801
- .form-group{
802
- margin-top:20px;
803
- }
804
- </style>
1
+ <template>
2
+ <div class="auto select-overspread" v-if="refresh">
3
+ <!--<div class="panel panel-info" v-if="!data.titlevisible">-->
4
+ <!--<div class="panel-heading">-->
5
+ <!--<h3 class="panel-title">-->
6
+ <!--<span >{{data.title}}</span>-->
7
+ <!--<span v-if="data.back_reason" style="color: red;font-family: 微软雅黑;font-weight: bold"> 请注意被退回原因为:{{data.back_reason}}</span>-->
8
+ <!--</h3>-->
9
+ <!--</div>-->
10
+ <!--</div>-->
11
+ <validator name="v">
12
+ <form class="form-horizontal">
13
+ <div class="col-sm-12 form-group form-group1">
14
+ <div v-for="(index,item) in data.fields">
15
+ <!--input-->
16
+ <div :style="item.style+';height: 34px;'"
17
+ v-if="item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email'"
18
+ v-show="!item.hidden"
19
+ :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 form-group1']">
20
+ <label :style="item.label_style? item.label_style:''+';width:85px;'"
21
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':item.label_style?'':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
22
+ <div :style="item.value_style? item.value_style:''"
23
+ :class="item.value_bootstraped?item.value_bootstraped:item.value_style?'':'col-sm-6'">
24
+ <input class="form-control" style="background-color: #f7fbff;"
25
+ :type="item.type"
26
+ v-model="data.fields[index].value"
27
+ :placeholder="item.placeholder"
28
+ :value="data.fields[index].value"
29
+ :readonly="item.readonly"
30
+ :disabled="item.disabled"
31
+ @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
32
+ @blur="select_change(index),check_disable"
33
+ />
34
+ </div>
35
+ </div>
36
+ <!--时间datepicker-->
37
+ <div :style="item.style? item.style+';height: 34px;':'height: 34px;'" v-if="item.type==='datepicker'"
38
+ v-show="!item.hidden"
39
+ :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 form-group1']">
40
+ <label style="width:85px"
41
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':'control-label control-label-justify col-sm-6'">{{item.label}}</label>
42
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
43
+ <datepicker
44
+ :placeholder="item.placeholder"
45
+ :value.sync="data.fields[index].value"
46
+ :format="'yyyy-MM-dd HH:mm:ss'"
47
+ v-model="data.fields[index].value"
48
+ :readonly=true
49
+ :disabled="item.disabled"
50
+ @blur="check_disable"
51
+ :show-reset-button="reset">
52
+ </datepicker>
53
+ </div>
54
+ </div>
55
+
56
+ <!--textarea-->
57
+ <div :style="item.style? item.style:'height: 34px;'" v-if="item.type==='textarea'" v-show="!item.hidden"
58
+ :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']">
59
+ <label :style="item.label_style? item.label_style:''"
60
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':item.label_style?'':'control-label-justify control-label col-sm-3'">{{item.label}}</label>
61
+ <div :style="item.value_style? item.value_style:''"
62
+ :class="item.value_bootstraped?item.value_bootstraped:item.value_style?'':'col-sm-10'">
63
+ <textarea
64
+ :readonly="item.readonly"
65
+ :disabled="item.disabled"
66
+ class="form-control"
67
+ style="background-color: #f7fbff;margin-top: 7px"
68
+ :rows="item.rows"
69
+ v-model="data.fields[index].value"
70
+ @change="disabled_check(data.fields[index].required,data.fields[index].value)"
71
+ @blur="check_disable"
72
+ >
73
+ </textarea>
74
+ </div>
75
+ </div>
76
+
77
+ <!--radio-->
78
+ <div v-if="item.type==='radio'"
79
+ :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']">
80
+ <label v-if="item.label"
81
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label-justify control-label':'control-label-justify control-label col-sm-2'">{{item.label}}</label>
82
+ <div
83
+ :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-sm-5': 'col-sm-3'"
84
+ v-for="(index2,row) in item.items">
85
+ <label for="row.label"
86
+ :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'">{{row.label}}</label>
87
+ <input @blur="check_disable"
88
+ :class="item.items.length%2 == 0?'col-sm-3 control-label': 'col-sm-2 control-label'"
89
+ :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio"
90
+ :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value"
91
+ v-model="data.fields[index].value">
92
+ </div>
93
+ </div>
94
+
95
+ <!--select-->
96
+ <div style="height: 34px" v-if="item.type==='select'" v-show="!item.hidden"
97
+ :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']">
98
+ <label style="width:85px;"
99
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
100
+ <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur="check_disable"
101
+ @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)"
102
+ :readonly="item.readonly" :disabled="item.disabled" :value.sync="data.fields[index].value"
103
+ v-model="data.fields[index].value"
104
+ :search="true"
105
+ :options='data.fields[index].options' :valueSingle="true"></input-select>
106
+
107
+ </div>
108
+
109
+
110
+ <!--checkbox-->
111
+ <div v-if="item.type==='checkbox'"
112
+ :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']">
113
+ <label v-if="item.label"
114
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label ':'control-label col-sm-2'">{{item.label}}</label>
115
+ <div style="margin-top: 6px"
116
+ :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'"
117
+ v-for="(index2,row) in item.items">
118
+ <label class="font-size form-group col-sm-6">{{row.label}}</label>
119
+ <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6"
120
+ :id="row.label" v-model="data.fields[index].items[index2].value" @click="checkboxSelect(index,index2)" >
121
+ </div>
122
+ </div>
123
+ </div>
124
+ <!-- onetomany -->
125
+ <div class="col-sm-12" v-for="(i,datagrid) in data.onetomany">
126
+ <table v-show="!datagrid.hidden" class="table table-bordered table-striped table-hover" style="margin-top: 80px">
127
+ <tr style="background-color: #00A3F0">
128
+ <th style="text-align: center;border-color: #00A3F0"><font color="white">序号</font></th>
129
+ <th v-for="labels in datagrid.fields" style="text-align: center;border-color: #00A3F0">
130
+ <nobr><font color="white">{{labels.label}}</font></nobr>
131
+ </th>
132
+ <th style="text-align: center;border-color: #00A3F0;padding: 0px">
133
+ <button type="button" @click="$dispatch('add',i)" class="btn btn-warning"
134
+ v-if="!data.onetomany[i].nopower">
135
+ +
136
+ </button>
137
+ </th>
138
+ </tr>
139
+ <tr v-for="(j,row) in model.rows[i]">
140
+ <td style="text-align: center">{{$index+1}}</td>
141
+ <td v-for="key in surBodyData[i]" style="text-align: center">
142
+ {{row[key]}}
143
+ </td>
144
+ <td style="text-align: center">
145
+ <a href="#" @click="delete(i,j)" v-if="!data.onetomany[i].nopower">删除</a>
146
+ </td>
147
+ </tr>
148
+ </table>
149
+ </div>
150
+ </div>
151
+ <div class="col-sm-12 form-group text-center" style="padding-top:20px">
152
+ <div class="form-group col-sm-2 center-block">
153
+ <label class=" col-sm-6 control-label control-label-justify">所属公司:</label>
154
+ <div class="col-sm-6">
155
+ <input class="form-control" type="text" v-model="model.f_filiale" disabled>
156
+ </div>
157
+ </div>
158
+ <div class="col-sm-1 form-group center-block">
159
+ </div>
160
+ <div class="col-sm-2 form-group center-block">
161
+ <label class="control-label control-label-justify col-sm-6">部门:</label>
162
+ <div class="col-sm-6">
163
+ <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
164
+ </div>
165
+ </div>
166
+ <div class="col-sm-1 form-group center-block">
167
+ </div>
168
+ <div class="col-sm-2 form-group center-block">
169
+ <label class="control-label control-label-justify col-sm-6">操作人:</label>
170
+ <div class="col-sm-6 ">
171
+ <input type="text" class="form-control" disabled v-model="model.f_operator"/>
172
+ </div>
173
+ </div>
174
+ <div class="col-sm-1 form-group center-block">
175
+ </div>
176
+ <div class="col-sm-2 form-group center-block">
177
+ <label class="control-label control-label-justify col-sm-6">操作日期:</label>
178
+ <div class="col-sm-6">
179
+ <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </form>
184
+ </validator>
185
+ <div class="from-group col-sm-11">
186
+ <center>
187
+ <!-- 按钮组 -->
188
+ <button v-for="(index,button) in data.buttons"
189
+ :disabled="(button.button_name==='提交'||button.button_name==='下发'||button.button_name==='打印回单')&&disable_button" type="button"
190
+ @click="clicked(index,button)"
191
+ :class="(button.button_name==='提交'||button.button_name==='下发'||button.button_name==='打印回单')&&disable_button?'btn btn-default':'btn btn-primary'"
192
+ style="width:80px; margin-left:50px;">
193
+ {{button.button_name}}
194
+ </button>
195
+ </center>
196
+ </div>
197
+ <!-- 按钮模态框 -->
198
+ <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
199
+ <header slot="modal-header" class="modal-header">
200
+ <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
201
+ <h4 class="modal-title">{{model.button.button_name}}</h4>
202
+ </header>
203
+ <article slot="modal-body" class="modal-body">
204
+ <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
205
+ <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
206
+ <div class="col-sm-7">
207
+ <!--select-->
208
+ <input-select v-if="button_field.type=='select'"
209
+ :value.sync="data.buttons[model.button.button_index].button_fields[index].value"
210
+ v-model="data.buttons[model.button.button_index].button_fields[index].value"
211
+ :options='button_field.options'></input-select>
212
+ <!-- input -->
213
+ <input v-else type="text" class="form-control"
214
+ v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
215
+ </div>
216
+ </div>
217
+ </article>
218
+ <footer slot="modal-footer" style="border-top:none" class="modal-footer">
219
+ <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
220
+ </footer>
221
+ </modal>
222
+
223
+
224
+ <!-- onetomany新增模态框 -->
225
+ <div class="auto"
226
+ style="background-color:white;max-width: 700px;max-hight:500px;z-index:9999;box-shadow: 0px 0px 100px 10px grey;position: fixed;margin-left: 20%;"
227
+ v-if="showadd">
228
+
229
+ <div class="auto">
230
+
231
+ <div style="padding-top: 15px;padding-left: 15px;padding-right: 15px;">
232
+ <button type="button" class="close" @click="closemodal(modeltitle)"><span>&times;</span></button>
233
+ <span class="modal-title" style="border-bottom: 1px solid #e5e5e5;"><font
234
+ size="3">{{modeltitle}}</font></span>
235
+ </div>
236
+            
237
+ <div style="padding-top: 15px;border-top: 0px solid #e5e5e5;border-bottom: 0px solid #e5e5e5;">
238
+ <div class="col-sm-12" v-for="(index,showadd_field) in showadd_fields.fields" v-if="refresh_modal">
239
+ <label v-show="!showadd_field.hidden" class="control-label col-sm-3" style="margin-top: 10px">{{showadd_field.label}}:</label>
240
+ <div class="col-sm-7" v-show="!showadd_field.hidden">
241
+ <!--时间datepicker-->
242
+ <div v-if="showadd_field.type=='datepicker'"
243
+ :class="[showadd_fields[index].required&&!(showadd_fields.fields[index].value) ? 'has-error' : '']">
244
+ <div>
245
+ <datepicker
246
+ :placeholder="showadd_field.placeholder"
247
+ :value.sync="showadd_fields.fields[index].value"
248
+ :format="'yyyy-MM-dd HH:mm:ss'"
249
+ v-model="showadd_fields.fields[index].value"
250
+ :readonly=true
251
+ :disabled="showadd_fields.fields[index].disabled"
252
+ @blur="check_disable"
253
+ :show-reset-button="reset">
254
+ </datepicker>
255
+ </div>
256
+ </div>
257
+ <!--select-->
258
+ <input-select
259
+ @change="select_change_modal(index),disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
260
+ v-if="showadd_field.type=='select'"
261
+ @blur="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
262
+ :mouseout="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
263
+ :value.sync="showadd_fields.fields[index].value"
264
+ v-model="showadd_fields.fields[index].value"
265
+ :options='showadd_fields.fields[index].options'>
266
+ </input-select>
267
+ <!-- input -->
268
+ <input :type="showadd_field.type"
269
+ @change="select_change_modal(index),check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
270
+ v-if="(showadd_field.type=='input'||showadd_field.type=='number')&&!showadd_field.hidden"
271
+ @blur="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
272
+ :mouseout="check_disable_modal,disabled_check_modal(showadd_fields.fields[index].required,showadd_fields.fields[index].value)"
273
+ :readonly="showadd_field.readonly" class="form-control"
274
+ v-model="showadd_fields.fields[index].value"
275
+ :value.sync="showadd_fields[index].value"/>
276
+ <span
277
+ v-if="showadd_fields.fields[index].error&&showadd_fields.fields[index].error.msg&&showadd_fields.fields[index].error.flag"
278
+ style="color: red">{{showadd_fields.fields[index].error.msg}}</span>
279
+ </div>
280
+ </div>
281
+ </div>
282
+
283
+ <div style="padding-top: 15px;padding-left: 15px;padding-right: 15px;text-align: right;">
284
+ <button :class="disable_button_modal?'btn btn-default':'btn btn-primary'" v-show="showadd"
285
+ :disabled="disable_button_modal" type="button" @click="acknowledge(modeltitle)">
286
+ 确认
287
+ </button>
288
+ </div>
289
+
290
+ </div>
291
+  
292
+ </div>
293
+
294
+ </div>
295
+ </template>
296
+ <script>
297
+ import Vue from 'vue'
298
+ // Date格式化
299
+ Date.prototype.Format = function (fmt) {
300
+ var o = {
301
+ "M+": this.getMonth() + 1, //月份
302
+ "d+": this.getDate(), //日
303
+ "H+": this.getHours(), //小时
304
+ "m+": this.getMinutes(), //分
305
+ "s+": this.getSeconds(), //秒
306
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
307
+ "S": this.getMilliseconds() //毫秒
308
+ };
309
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
310
+ for (var k in o)
311
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
312
+ return fmt;
313
+ }
314
+
315
+ export default {
316
+ title: '报建业务通用组件',
317
+ props: ['data'],
318
+ data() {
319
+ return {
320
+ data: {
321
+ onetomany: {
322
+ fields: []
323
+ }
324
+ },
325
+ surBodyData: [],
326
+ refresh: true, // 控制重新渲染
327
+ model: {
328
+ rows: [],
329
+ button: {
330
+ button_name: null,
331
+ button_index: null
332
+ },
333
+ f_filiale: null,
334
+ f_parentname: null,
335
+ f_operate_date: null,
336
+ f_operator: null
337
+ },
338
+ showadd: false, // onetomany 新增模态框
339
+ showadd_fields: [], // onetomany 新增模态框的字段配置
340
+ // data: null,
341
+ modeltitle: '',
342
+ tempid: null,
343
+ showadd_index: null,
344
+ showmodal: false,
345
+ disable_button: true,
346
+ disable_button_modal: true,
347
+ refresh_modal: true
348
+ }
349
+ },
350
+ created() {
351
+ // 初始化数据
352
+ this.initializtion()
353
+ },
354
+ events: {
355
+ async 'add'(index) {
356
+ let templet = new Object()
357
+ templet = this.data.onetomany[index]
358
+ let count = 0
359
+ for (let j = 0; j < templet.fields.length; j++) {
360
+ templet.fields[j].value = ''
361
+ if (templet.fields[j].type == 'datepicker') {
362
+ templet.fields[j].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
363
+ }
364
+ if (templet.fields[j].required) {
365
+ count++
366
+ }
367
+ }
368
+ if (count == 0) {
369
+ this.disable_button_modal = false
370
+ }
371
+ this.modeltitle = '新增'
372
+ this.showadd_fields = templet
373
+ this.showadd_index = index
374
+ this.showadd = true
375
+ }
376
+ },
377
+ methods: {
378
+ // 获取组件中的数据
379
+ getmodel() {
380
+ // 组织model.fields数据
381
+ let modeldatas = {}
382
+ for (let i = 0; i < this.data.fields.length; i++) {
383
+ // checkbox特殊处理
384
+ if (this.data.fields[i].type === 'checkbox') {
385
+ for (let j = 0; j < this.data.fields[i].items.length; j++) {
386
+ modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
387
+ }
388
+ } else {
389
+ modeldatas[this.data.fields[i].field] = this.data.fields[i].value
390
+ }
391
+ }
392
+ modeldatas.f_process_id = this.data.f_process_id
393
+ modeldatas.f_filiale = this.model.f_filiale
394
+ modeldatas.f_parentname = this.model.f_parentname
395
+ modeldatas.f_operator = this.model.f_operator
396
+ modeldatas.f_operate_date = this.model.f_operate_date
397
+ return modeldatas
398
+ },
399
+ // 修改
400
+ revise(index, index2) {
401
+ this.showadd_fields = []
402
+ let templet = new Object()
403
+ templet = this.data.onetomany[index]
404
+ for (let j = 0; j < templet.fields.length; j++) {
405
+ if (templet.fields[j].type == 'input') {
406
+ templet[j] = {}
407
+ templet[j].value = this.model.rows[index][index2][templet.fields[j].field]
408
+ templet.fields[j].value = this.model.rows[index][index2][templet.fields[j].field]
409
+ } else {
410
+ templet.fields[j].value = this.model.rows[index][index2][templet.fields[j].field]
411
+ if (templet.fields[j].type == 'datepicker') {
412
+ templet.fields[j].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
413
+ }
414
+ }
415
+ }
416
+ this.tempid = this.model.rows[index][index2].id
417
+ this.modeltitle = '修改'
418
+ this.showadd_fields = templet
419
+ this.showadd_index = index
420
+ this.showadd = true
421
+ },
422
+ // 检测模态框按钮的disable
423
+ disabled_check_modal(required, value) {
424
+ if (required && value) {
425
+ this.disable_button_modal = false
426
+
427
+ let fields = this.showadd_fields.fields
428
+ let flag = false
429
+ for (let i = 0; i < fields.length; i++) {
430
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
431
+ flag = true
432
+ }
433
+ }
434
+ this.disable_button_modal = flag
435
+ }
436
+ },
437
+ // 检测模态框按钮的disable,反向检查
438
+ check_disable_modal() {
439
+ let fields = this.showadd_fields.fields
440
+ let flag = false
441
+ for (let i = 0; i < fields.length; i++) {
442
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
443
+ flag = true
444
+ }
445
+ }
446
+ let count = 0
447
+ for (let i = 0; i < fields.length; i++) {
448
+ if (fields[i].type !== 'checkbox' && !fields[i].required) {
449
+ count++
450
+ }
451
+ }
452
+ if (count == 0) {
453
+ flag = false
454
+ }
455
+ this.disable_button_modal = flag
456
+ },
457
+ checkboxSelect(index,index1){
458
+ console.log("chufa事件");
459
+ this.$dispatch('checkboxSelectControl', index, index1)
460
+ },
461
+ // 模态框级联操作预留
462
+ select_change_modal(index) {
463
+ if (this.showadd_fields.fields[index].value) {
464
+ this.showadd_fields[index] = {}
465
+ this.showadd_fields[index].value = this.showadd_fields.fields[index].value
466
+ } else if (this.showadd_fields[index] && this.showadd_fields[index].value) {
467
+ this.showadd_fields.fields[index].value = this.showadd_fields[index].value
468
+ }
469
+ this.refresh_modal = false
470
+ this.$nextTick(() => {
471
+ this.refresh_modal = true
472
+ })
473
+ this.$dispatch('select_cascade_modal', this.showadd_index, index)
474
+ // if(this.showadd_fields.fields[index].label=='购货方纳税人识别号'){
475
+ // if(this.showadd_fields.fields[index].value.length!=15&&this.showadd_fields.fields[index].value.length!=18&&this.showadd_fields.fields[index].value.length!=20){
476
+ // this.$showMessage("购货方纳税人识别号必须为15位,18位或者20位")
477
+ // this.showadd_fields.fields[index].value = ''
478
+ // }
479
+ // }
480
+ },
481
+ // 更新showadd模态框
482
+ update_showadd_fields_value(index, value) {
483
+ this.showadd_fields.fields[index].value = value
484
+ this.showadd_fields[index] = {}
485
+ this.showadd_fields[index].value = value
486
+ },
487
+ // 清理showadd模态框
488
+ clear_showadd_fields_value(index) {
489
+ this.showadd_fields.fields[index].value = ''
490
+ this.showadd_fields[index].value = ''
491
+ },
492
+ // 删除
493
+ delete(i, j) {
494
+ this.$showMessage("您确定要删除这条记录吗?", ['confirm']).then((res) => {
495
+ if (res == 'confirm') {
496
+ this.$dispatch('onetomanydelete', i, j)
497
+ }
498
+ })
499
+ },
500
+ // 强制刷新
501
+ update() {
502
+ this.refresh = false
503
+ this.$nextTick(() => {
504
+ this.refresh = true
505
+ })
506
+ this.initializtion()
507
+ },
508
+ // 初始化数据
509
+ initializtion() {
510
+ let fields = this.data.fields
511
+ let flag = false
512
+ for (let i = 0; i < fields.length; i++) {
513
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
514
+ flag = true
515
+ }
516
+ }
517
+ let count = 0
518
+ for (let i = 0; i < fields.length; i++) {
519
+ if (fields[i].type !== 'checkbox' && !fields[i].required) {
520
+ count++
521
+ }
522
+ }
523
+ if (count = 0) {
524
+ flag = false
525
+ }
526
+ this.disable_button = flag
527
+
528
+ this.model.rows = []
529
+ this.surBodyData = []
530
+ if (this.data.onetomany && this.data.onetomany.length > 0) {
531
+ for (let i = 0; i < this.data.onetomany.length; i++) {
532
+ let temp = []
533
+ for (let j = 0; j < this.data.onetomany[i].fields.length; j++) {
534
+ temp.push(this.data.onetomany[i].fields[j].field)
535
+ }
536
+ this.surBodyData.push(temp)
537
+ }
538
+ for (let i = 0; i < this.data.onetomany.length; i++) {
539
+ if (this.data.onetomany[i].rows) {
540
+ this.model.rows.push(this.data.onetomany[i].rows)
541
+ }
542
+ }
543
+
544
+ }
545
+ // datepicker 没有值给当时值
546
+ if (this.data.fields && this.data.fields.length > 0) {
547
+ for (let i = 0; i < this.data.fields.length; i++) {
548
+ if (this.data.fields[i].type === 'datepicker' && !this.data.fields[i].value) {
549
+ this.data.fields[i].value = new Date().Format("yyyy-MM-dd HH:mm:ss")
550
+ }
551
+ }
552
+ } else {
553
+ this.disable_button = false
554
+ }
555
+ if (this.data.filiale) {
556
+ this.model.f_filiale = this.data.filiale
557
+ } else {
558
+ this.model.f_filiale = this.$login.f.f_fengongsi
559
+ }
560
+ if (this.data.f_parentname) {
561
+ this.model.f_parentname = this.data.f_parentname
562
+ } else {
563
+ this.model.f_parentname = this.$login.f.f_parentname
564
+ }
565
+ if (this.data.operate_date) {
566
+ this.model.f_operate_date = this.data.operate_date
567
+ } else {
568
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
569
+ }
570
+ if (this.data.operator) {
571
+ this.model.f_operator = this.data.operator
572
+ } else {
573
+ this.model.f_operator = this.$login.f.name
574
+ }
575
+ },
576
+ // 模态框点击确定按钮
577
+ acknowledge(val) {
578
+ if (val == '新增') {
579
+ let temp = {}
580
+ for (let i = 0; i < this.showadd_fields.fields.length; i++) {
581
+ if (this.showadd_fields.fields[i].value) {
582
+ temp[this.showadd_fields.fields[i].field] = this.showadd_fields.fields[i].value
583
+ } else if (this.showadd_fields && this.showadd_fields[i] && this.showadd_fields[i].value) {
584
+ temp[this.showadd_fields.fields[i].field] = this.showadd_fields[i].value
585
+ }
586
+ }
587
+ this.model.rows[this.showadd_index].push(temp)
588
+ this.$dispatch('confirm', this.data.onetomany[this.showadd_index].tables, temp, this.showadd_index, this.model.rows[this.showadd_index].length - 1)
589
+ this.showadd_fields = null
590
+ this.showadd_index = null
591
+ this.closemodal(val)
592
+ } else {
593
+ for (let i = 0; i < this.data.buttons[this.model.button.button_index].button_fields.length; i++) {
594
+ 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
595
+ }
596
+ this.showmodal = false
597
+ this.$dispatch('button', this.model)
598
+ }
599
+ },
600
+ // 关闭模态框
601
+ closemodal(val) {
602
+ if (this.showadd_fields && this.showadd_fields.fields && this.showadd_fields.fields.length) {
603
+ for (let i = 0; i < this.showadd_fields.fields.length; i++) {
604
+ if (this.showadd_fields[i] && this.showadd_fields[i].value) {
605
+ this.showadd_fields[i].value = ''
606
+ }
607
+ if (this.showadd_fields.fields[i] && this.showadd_fields.fields[i].value) {
608
+ this.showadd_fields.fields[i].value = ''
609
+ }
610
+ }
611
+ }
612
+
613
+ if (val != '新增' || val != '修改' || val != '删除') {
614
+ this.disable_button = false
615
+ }
616
+ this.showmodal = false
617
+ if (val == '新增') {
618
+ this.showadd = false
619
+ }
620
+ this.showadd_fields = null
621
+ this.disable_button_modal = true
622
+ this.modeltitle = null
623
+ this.tempid = null
624
+ },
625
+ // 点击按钮
626
+ clicked(index, button) {
627
+
628
+ // onetomany 处理
629
+ // if(this.data.onetomany&&this.data.onetomany.fields.length>0){
630
+ // let temp = {}
631
+ // temp['tables'] = this.data.onetomany.tables
632
+ // temp['rows'] = this.model.rows
633
+ // this.$dispatch('onetomanyevent',temp)
634
+ // }
635
+ this.disable_button=false;
636
+ this.$parent.$parent.$parent.$parent.$refs.queryuser.button_name="查询"
637
+ if(button.button_name !='打印回单')
638
+ this.disable_button = true
639
+ console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
640
+ // 组织model.fields数据
641
+ let modeldatas = {}
642
+ for (let i = 0; i < this.data.fields.length; i++) {
643
+ // checkbox特殊处理
644
+ if (this.data.fields[i].type === 'checkbox') {
645
+ for (let j = 0; j < this.data.fields[i].items.length; j++) {
646
+ modeldatas[this.data.fields[i].items[j].field] = this.data.fields[i].items[j].value
647
+ }
648
+ } else {
649
+ modeldatas[this.data.fields[i].field] = this.data.fields[i].value
650
+ }
651
+ }
652
+ modeldatas.f_process_id = this.data.f_process_id
653
+ modeldatas.f_filiale = this.model.f_filiale
654
+ modeldatas.f_parentname = this.model.f_parentname
655
+ modeldatas.f_operator = this.model.f_operator
656
+ modeldatas.f_operate_date = this.model.f_operate_date
657
+ this.model = null
658
+ this.model = modeldatas
659
+ // 初始化model.button数据
660
+ let buttondatas = {
661
+ button_fields: {}
662
+ }
663
+ if (button.button_event) {
664
+ buttondatas.button_event = button.button_event
665
+ }
666
+ if (button.button_node) {
667
+ buttondatas.button_node = button.button_node
668
+ }
669
+ if (button.button_person) {
670
+ buttondatas.button_person = button.button_person
671
+ }
672
+ buttondatas.button_name = button.button_name
673
+ buttondatas.button_index = index
674
+ if (button.button_fields) {
675
+ for (let i = 0; i < button.button_fields.length; i++) {
676
+ buttondatas.button_fields[button.button_fields[i].field] = button.button_fields[i].value
677
+ }
678
+ }
679
+ this.model.button = buttondatas
680
+ if (button.button_name === '退回') {
681
+ this.showmodal = true
682
+ } else if (button.button_name === '下发') {
683
+ this.showmodal = true
684
+ } else {
685
+ this.$dispatch('button', this.model)
686
+ }
687
+ },
688
+ // 级联操作预留
689
+ select_change(index) {
690
+ this.$dispatch('select_cascade', index)
691
+ },
692
+ // 检测按钮的disable
693
+ disabled_check(required, value) {
694
+ if (required && value) {
695
+ this.disable_button = false
696
+
697
+ let fields = this.data.fields
698
+ let flag = false
699
+ for (let i = 0; i < fields.length; i++) {
700
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
701
+ flag = true
702
+ }
703
+ }
704
+ this.disable_button = flag
705
+ }
706
+ }
707
+ },
708
+ watch: {
709
+ 'data.operate_date'() {
710
+ if (this.data.filiale) {
711
+ this.model.f_filiale = this.data.filiale
712
+ } else {
713
+ this.model.f_filiale = this.$login.f.f_fengongsi
714
+ }
715
+ if (this.data.f_parentname) {
716
+ this.model.f_parentname = this.data.f_parentname
717
+ } else {
718
+ this.model.f_parentname = this.$login.f.f_parentname
719
+ }
720
+ if (this.data.operate_date) {
721
+ this.model.f_operate_date = this.data.operate_date
722
+ } else {
723
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
724
+ }
725
+ if (this.data.operator) {
726
+ this.model.f_operator = this.data.operator
727
+ } else {
728
+ this.model.f_operator = this.$login.f.name
729
+ }
730
+ },
731
+ 'data.fields'() {
732
+ this.refresh = false
733
+ this.$nextTick(() => {
734
+ this.refresh = true
735
+ })
736
+ this.initializtion()
737
+ },
738
+ deep: true
739
+ },
740
+ computed: {
741
+ // 输入后按钮检测
742
+ check_disable: function () {
743
+ let fields = this.data.fields
744
+ let flag = false
745
+ for (let i = 0; i < fields.length; i++) {
746
+ if (fields[i].type !== 'checkbox' && fields[i].required && !fields[i].value) {
747
+ flag = true
748
+ }
749
+ }
750
+ let count = 0
751
+ for (let i = 0; i < fields.length; i++) {
752
+ if (fields[i].type !== 'checkbox' && !fields[i].required) {
753
+ count++
754
+ }
755
+ }
756
+ if (count == 0) {
757
+ flag = false
758
+ }
759
+ this.disable_button = flag
760
+ },
761
+ refreshed() {
762
+ let fields = this.data.fields
763
+ this.data.fields = fields
764
+ }
765
+ }
766
+ }
767
+ </script>
768
+ <style scoped>
769
+ th {
770
+
771
+ }
772
+
773
+ .control-label-justify {
774
+ display: inline-block;
775
+ vertical-align: top;
776
+ width: 70px;
777
+ text-align: justify;
778
+ font-family: PingFang-SC-Bold;
779
+ }
780
+
781
+ .control-label-justify::after {
782
+ content: "";
783
+ display: inline-block;
784
+ width: 70px;
785
+ overflow: hidden;
786
+ height: 0;
787
+ }
788
+
789
+ input::-webkit-outer-spin-button,
790
+ input::-webkit-inner-spin-button {
791
+ -webkit-appearance: none;
792
+ }
793
+
794
+ input[type="number"] {
795
+ -moz-appearance: textfield;
796
+ }
797
+
798
+ tr {
799
+ height: 34px;
800
+ }
801
+ .form-group{
802
+ margin-top:20px;
803
+ }
804
+ </style>