apply-clients 5.0.36 → 5.0.37-2

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