apply-clients 3.5.4-67 → 3.5.4-68

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 (44) hide show
  1. package/build/dev-server.js +7 -19
  2. package/package.json +1 -1
  3. package/src/App.vue +25 -25
  4. package/src/components/product/Function/Service/FunctionServiceControl.vue +497 -497
  5. package/src/components/product/MaterialsManage/MaterialsBase.vue +181 -181
  6. package/src/components/product/MaterialsManage/MaterialsManage.vue +60 -60
  7. package/src/components/product/Process/Processes/chargeManagement.vue +656 -656
  8. package/src/components/product/ServiceView.vue +1026 -1026
  9. package/src/components/product/Supervisory/SupervisoryControl.vue +141 -141
  10. package/src/components/product/Supervisory/SupervisoryList.vue +452 -452
  11. package/src/filiale/gongyi/android/AppDisclosurerecord.vue +214 -214
  12. package/src/filiale/gongyi/android/AppInstallationDetails.vue +500 -500
  13. package/src/filiale/gongyi/android/AppLegacyIssues.vue +309 -309
  14. package/src/filiale/gongyi/android/AppSign.vue +170 -170
  15. package/src/filiale/gongyi/android/AppSupplementalAgreement.vue +298 -298
  16. package/src/filiale/gongyi/android.js +18 -18
  17. package/src/filiale/gongyi/pc/ApplyUpload.vue +371 -371
  18. package/src/filiale/gongyi/pc/PcAddLogs.vue +221 -221
  19. package/src/filiale/gongyi/pc/PcDisclosurerecord.vue +218 -218
  20. package/src/filiale/gongyi/pc/PcLegacyIssues.vue +309 -309
  21. package/src/filiale/gongyi/pc/SupervisoryServiceControl.vue +894 -894
  22. package/src/filiale/gongyi/pc/SupervisoryServiceView.vue +1005 -1005
  23. package/src/filiale/gongyi/pc/addMaterialScience.vue +575 -575
  24. package/src/filiale/gongyi/pc/chargeManagement.vue +765 -765
  25. package/src/filiale/gongyi/pc/supplementalAgreement.vue +277 -277
  26. package/src/filiale/gongyi/pc.js +24 -24
  27. package/src/filiale/hongda/pc/SupervisoryList.vue +422 -422
  28. package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +518 -518
  29. package/src/filiale/yangchunboneng/android/AppInstallationMaterial.vue +1085 -1081
  30. package/src/filiale/yangchunboneng/android/AppSuperServiceControl.vue +1524 -1524
  31. package/src/filiale/yangchunboneng/android/AppUpload.vue +205 -205
  32. package/src/filiale/yangchunboneng/android/MaterIialOne.vue +156 -156
  33. package/src/filiale/yangchunboneng/android.js +20 -20
  34. package/src/filiale/yangchunboneng/pc/ApplyUpload.vue +392 -392
  35. package/src/filiale/yangchunboneng/pc/ExplorationUser.vue +191 -191
  36. package/src/filiale/yangchunboneng/pc/InstallInfoSelect.vue +365 -365
  37. package/src/filiale/yangchunboneng/pc/SupervisoryControlNew.vue +142 -142
  38. package/src/filiale/yangchunboneng/pc/SupervisoryList.vue +590 -590
  39. package/src/filiale/yangchunboneng/pc/SupervisoryListNew.vue +628 -628
  40. package/src/filiale/yangchunboneng/pc/SupervisoryServiceControl.vue +902 -902
  41. package/src/filiale/yangchunboneng/pc/SupervisoryServiceControlNew.vue +901 -901
  42. package/src/filiale/yangchunboneng/pc/SupervisoryServiceView.vue +1117 -1117
  43. package/src/filiale/yangchunboneng/pc.js +24 -24
  44. package/src/main.js +1 -1
@@ -1,1117 +1,1117 @@
1
- <template>
2
- <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
- <validator name='v' @valid="$emit('valid')" @invalid="$emit('invalid')">
4
- <form class="form-horizontal">
5
- <div class="form-group">
6
- <div v-for="(index,item) in data.fields">
7
- <!--input-->
8
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
9
- v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device) && ( item.label != '证件号码')&&( item.label !== '身份证') && (item.label !== '用户电话')"
10
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
11
- <label :style="item.label_style ? item.label_style : ''"
12
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
13
- <div :style="item.value_style ? item.value_style:''"
14
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
15
- <input class="form-control input_view" style=""
16
- :type="item.type"
17
- v-model="data.fields[index].value"
18
- :placeholder="item.placeholder"
19
- :value="data.fields[index].value"
20
- :readonly="item.readonly"
21
- :disabled="item.disabled"
22
- @change="onchange(index)"
23
- @blur="onblur(index)"
24
- @input="oninput(index)"
25
- />
26
- </div>
27
- </div>
28
-
29
- <!--input-->
30
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
31
- v-if="(data.f_credentials != '身份证' && item.label === '证件号码')"
32
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
33
- <label :style="item.label_style ? item.label_style : ''"
34
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
35
- <div :style="item.value_style ? item.value_style:''"
36
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
37
- <input class="form-control input_view" style=""
38
- :type="item.type"
39
- v-model="data.fields[index].value"
40
- :placeholder="item.placeholder"
41
- :value="data.fields[index].value"
42
- :readonly="item.readonly"
43
- :disabled="item.disabled"
44
- @change="onchange(index)"
45
- @blur="onblur(index)"
46
- @input="oninput(index)"
47
- />
48
- </div>
49
- </div>
50
- <!--身份证验证-->
51
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
52
- v-if="(item.label==='身份证') || (data.f_credentials === '身份证' && item.label === '证件号码')"
53
- :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
54
- <label :style="item.label_style ? item.label_style : ''"
55
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
56
- <div :style="item.value_style ? item.value_style:''"
57
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
58
- <input class="form-control input_view" style=""
59
- :type="item.type"
60
- maxlength="18"
61
- v-model="data.fields[index].value"
62
- :placeholder="item.placeholder"
63
- :value="data.fields[index].value"
64
- v-validate:f_idnumber2='{identityCardValid: true}'
65
- :readonly="item.readonly"
66
- :disabled="item.disabled"
67
- @change="onchange(index)"
68
- @blur="onblur(index)"
69
- @input="oninput(index)"
70
- />
71
- </div>
72
- </div>
73
-
74
-
75
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
76
- v-if="item.label === '用户电话'"
77
- :class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
78
- <label :style="item.label_style ? item.label_style : ''"
79
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
80
- <div :style="item.value_style ? item.value_style:''"
81
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
82
- <input class="form-control input_view" style=""
83
- type="number"
84
- oninput="if(value.length > 11) value=value.slice(0,11)"
85
- v-validate:f_user_phone="{minlength: 7, maxlength: 11 }"
86
- v-model="data.fields[index].value"
87
- :placeholder="item.placeholder"
88
- :value="data.fields[index].value"
89
- onKeypress="return(/[\d\.]/.test(String.fromCharCode(event.keyCode)))"
90
- :readonly="item.readonly"
91
- :disabled="item.disabled"
92
- @change="onchange(index)"
93
- @blur="onblur(index)"
94
- @input="oninput(index)"
95
- />
96
- </div>
97
- </div>
98
-
99
-
100
-
101
- <!--时间datepicker-->
102
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
103
- v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)"
104
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
105
- <label
106
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
107
- <div :style="item.value_style ? item.value_style:''"
108
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
109
- <datepicker
110
- @change="onchange(index)"
111
- @blur="onblur(index)"
112
- :placeholder="item.placeholder"
113
- :value.sync="data.fields[index].value"
114
- :format="item.format ? item.format : 'yyyy-MM-dd'"
115
- v-model="data.fields[index].value"
116
- :readonly="item.readonly"
117
- :disabled="item.disabled"
118
- :show-reset-button="reset">
119
- </datepicker>
120
- </div>
121
- </div>
122
-
123
- <!--textarea-->
124
- <div :style="item.style ? item.style+';margin-bottom: 20px':'margin-bottom: 20px'"
125
- v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)"
126
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
127
- <label :style="item.label_style ? item.label_style : ''"
128
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
129
- <div :style="item.value_style ? item.value_style:''"
130
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
131
- <textarea
132
- :readonly="item.readonly"
133
- :disabled="item.disabled"
134
- class="form-control input_view"
135
- style="width: 100%;height: 100%"
136
- :rows="item.rows"
137
- v-model="data.fields[index].value"
138
- :value="data.fields[index].value"
139
- @change="onchange(index)"
140
- @blur="onblur(index)"
141
- @input="oninput(index)"
142
- >
143
- </textarea>
144
- </div>
145
- </div>
146
-
147
- <!--select-->
148
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
149
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device) && !item.multiple"
150
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
151
- <label
152
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
153
- <div :style="item.value_style ? item.value_style:''"
154
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
155
- <input-select
156
- class="select select_list"
157
- @blur="onblur(index)"
158
- @change="onchange(index)"
159
- @select-search="selectSearch($arguments,index)"
160
- :readonly="item.readonly"
161
- :disable="item.disabled"
162
- :value.sync="data.fields[index].value"
163
- v-model="data.fields[index].value"
164
- :options='data.fields[index].options'
165
- :valueSingle="true"></input-select>
166
- </div>
167
- </div>
168
- <!--select 多选-->
169
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
170
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)&& item.multiple"
171
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
172
- <label
173
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
174
- <div :style="item.value_style ? item.value_style:''"
175
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
176
- <v-select
177
- width="100%"
178
- class="select select_list"
179
- @blur="onblur(index)"
180
- @change="onchange(index)"
181
- @select-search="selectSearch($arguments,index)"
182
- :readonly="item.readonly"
183
- :disable="item.disabled"
184
- :value.sync="data.fields[index].value"
185
- v-model="data.fields[index].value"
186
- :options='data.fields[index].options'
187
- :multiple="data.fields[index].multiple"
188
- :valueSingle="true"></v-select>
189
- </div>
190
- </div>
191
-
192
- <!--checkbox-->
193
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
194
- v-if="item.type==='checkbox' && !item.hidden && (item.device === 'pc' || !item.device)"
195
- :class="[item.required && item.value.length === 0 ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
196
- <label v-if="item.label"
197
- :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
198
- <div :style="item.value_style ? item.value_style:''"
199
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
200
- <label class="checkbox-inline" v-for="(index2,row) in item.options">
201
- <input type="checkbox" class=""
202
- :readonly="data.fields[index].readonly"
203
- :disabled="data.fields[index].disabled"
204
- v-model="data.fields[index].value"
205
- :value="data.fields[index].options[index2].value"
206
- @change="onchange(index)"
207
- @blur="onblur(index)">
208
- {{row.label}}
209
- </label>
210
- </div>
211
- </div>
212
- </div>
213
- <!--区域地址联动-->
214
- <div>
215
- <res-area-select-group
216
- v-if="(data.f_apply_type === '报警器报建' || data.f_apply_type === '工商业报警器报建') && data.defname === '工程施工' && data.title === '工程施工' && data.f_sub_state !='完工'"
217
- labelstyle = "control-label"
218
- @shiji-select = "getSelectShijiValue"
219
- @xian-select = "getSelectXianValue"
220
- @shequ-select = "getSelectShequValue"
221
- >
222
- </res-area-select-group>
223
- </div>
224
-
225
- <gaode-map
226
- v-if="(data.f_apply_type === '报警器报建' || data.f_apply_type === '工商业报警器报建') && data.defname === '工程施工' && data.title === '工程施工' && data.f_sub_state !='完工'"
227
- >
228
-
229
- </gaode-map>
230
-
231
- </div>
232
-
233
- <!-- onetomany -->
234
- <div class="" v-for="(index,item) in data.onetomany">
235
- <onetomany :selectdata="data" :onetomany="item" :index="index" v-if="item.device === 'pc' || !item.device"></onetomany>
236
- </div>
237
-
238
- <div v-for="(i,item) in data.components">
239
- <h3 v-if="item.device === 'pc'"><nbr >{{item.title}}</nbr></h3>
240
- <component v-if="item.device === 'pc' || !item.device" :is="item.name" :selectdata="data" :mark="item.mark"></component>
241
- </div>
242
-
243
- <!--自定义组件-->
244
- <slot>
245
- </slot>
246
- <!--公司等属性-->
247
- <div class="col-sm-12 form-group text-center" style="padding-top:8px">
248
- <div class="col-sm-3 form-group center-block">
249
- <label class="col-sm-5">所属公司:</label>
250
- <div class="col-sm-6" style="text-align: left">
251
- {{model.orgs}}
252
- </div>
253
- </div>
254
- <div class="col-sm-3 form-group center-block">
255
- <label class="col-sm-5">部门:</label>
256
- <div class="col-sm-6" style="text-align: left">
257
- {{model.parentname}}
258
- </div>
259
- </div>
260
- <div class="col-sm-3 form-group center-block">
261
- <label class="col-sm-5">操作人:</label>
262
- <div class="col-sm-6 " style="text-align: left">
263
- {{model.operator}}
264
- </div>
265
- </div>
266
- <div class="col-sm-3 form-group center-block">
267
- <label class="col-sm-5">操作日期:</label>
268
- <div class="col-sm-6" style="text-align: left">
269
- {{model.operate_date}}
270
- </div>
271
- </div>
272
- </div>
273
- <!-- 按钮组 -->
274
- <div class="from-group col-sm-12 text-center">
275
- <!-- 按钮组 -->
276
- <button v-for="(index,button) in data.buttons"
277
- :disabled="(button.disabled && disable_button)"
278
- style="min-width:100px"
279
- :class="button.disabled && disable_button ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
280
- v-if="!button.hidden && button.button_name !=='提交'&& button.button_name !=='确认'"
281
- @click.prevent="click_but(button)"
282
- >
283
- {{button.button_name}}
284
- </button>
285
- <button v-for="(index,button) in data.buttons"
286
- :disabled="(button.disabled && disable_button) || (!$v.valid)"
287
- style="min-width:100px"
288
- :class="button.disabled && disable_button || (!$v.valid) ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
289
- v-if="!button.hidden && (button.button_name ==='提交'||button.button_name ==='确认')"
290
- @click.prevent="click_but(button)"
291
- >
292
- {{button.button_name}}
293
- </button>
294
- <button
295
- style="min-width:100px"
296
- :class="'btn btn-primary button_spacing'"
297
- @click.prevent="Audit"
298
- >审核</button>
299
- <button
300
- style="min-width:100px"
301
- :class="'btn btn-primary button_spacing'"
302
- @click.prevent="Checksed"
303
- >抽查</button>
304
- </div>
305
-
306
- <!-- 按钮模态框 -->
307
- <modal v-if="showButModal" :show.sync="showButModal" backdrop="false" large>
308
- <header slot="modal-header" class="modal-header">
309
- <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
310
- <span class="modal-title"><font
311
- size="3">{{data.button.button_name}}</font></span>
312
- </header>
313
- <article slot="modal-body" class="modal-body clearfix">
314
- <div class="form-group" style="padding: 0 150px">
315
- <div v-for="(index,item) in data.button.button_fields">
316
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group' : 'form-group']"
317
- v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)">
318
- <label :style="item.label_style ? item.label_style : ''"
319
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
320
- <div :style="item.value_style ? item.value_style : ''"
321
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
322
- <input class="form-control input_view"
323
- :placeholder="item.placeholder"
324
- :type="item.type"
325
- v-model="item.value"
326
- :value="item.value"
327
- :readonly="item.readonly"
328
- :disabled="item.disabled"
329
- @change="onbutchange(index)"
330
- @blur="onbutblur(index)"
331
- @input="onbutinput(index)"
332
- />
333
- </div>
334
- </div>
335
-
336
- <!--时间datepicker-->
337
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
338
- v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)">
339
- <label :style="item.label_style ? item.label_style : ''"
340
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
341
- <div :style="item.value_style ? item.value_style : ''"
342
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
343
- <datepicker
344
- :placeholder="item.placeholder"
345
- :value.sync="item.value"
346
- v-model="item.value"
347
- :readonly="item.readonly"
348
- :disabled="item.disabled"
349
- :format="item.format ? item.format : 'yyyy-MM-dd'"
350
- :show-reset-button="true"
351
- @change="onbutchange(index)"
352
- @blur="onbutblur(index)"
353
- ></datepicker>
354
- </div>
355
- </div>
356
-
357
- <!--select-->
358
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
359
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)">
360
- <label :style="item.label_style ? item.label_style : ''"
361
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
362
- <div :style="item.value_style ? item.value_style : ''"
363
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
364
- <input-select
365
- class="select select_list"
366
- :value.sync="item.value"
367
- v-model="item.value"
368
- :options='item.options'
369
- :readonly="item.readonly"
370
- :disable="item.disabled"
371
- :valueSingle="true"
372
- @blur="onbutblur(index)"
373
- @change="onbutchange(index)"
374
- ></input-select>
375
- </div>
376
- </div>
377
-
378
- <!--textarea-->
379
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
380
- v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)">
381
- <label :style="item.label_style ? item.label_style : ''"
382
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
383
- <div :style="item.value_style ? item.value_style : ''"
384
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
385
- <textarea
386
- class="form-control input_view"
387
- style="width: 100%;height: 100%"
388
- v-model="item.value"
389
- :value="item.value"
390
- :rows="item.rows"
391
- :readonly="item.readonly"
392
- :disabled="item.disabled"
393
- @change="onbutchange(index)"
394
- @blur="onbutblur(index)"
395
- @input="onbutinput(index)"
396
- ></textarea>
397
- </div>
398
- </div>
399
- </div>
400
- </div>
401
- </article>
402
- <footer slot="modal-footer" class="modal-footer">
403
- <button :class="disable_modal_button ? 'btn btn-default':'btn btn-primary'"
404
- :disabled="disable_modal_button" type="button" @click="confirmModal()">
405
- 确认
406
- </button>
407
- </footer>
408
- </modal>
409
- <!-- 审核 -->
410
- <modal v-if="showAudit" :show.sync="showAudit" v-ref:modal :backdrop="false" title="审核">
411
- <header slot="modal-header" class="modal-header">
412
- <button type="button" class="close" @click="closeModal1"><span>&times;</span></button>
413
- <h4 class="modal-title">审核</h4>
414
- </header>
415
- <article slot="modal-body" class="modal-body clearfix">
416
- <div class="form-group col-sm-12">
417
- <label class="col-sm-2 control-label">审核状态:</label>
418
- <div class="col-sm-10">
419
- <input-select
420
- class="select select_list"
421
- :value.sync="Audits.f_audit_state"
422
- v-model="Audits.f_audit_state"
423
- :options="AuditsOptions"
424
- :disable="mark === 1"
425
- :valueSingle="true"></input-select>
426
- </div>
427
- </div>
428
- <div class="form-group col-sm-12">
429
- <label class="col-sm-2 control-label">备注:</label>
430
- <div class="col-sm-10">
431
- <input type="text"
432
- class="form-control input_view"
433
- style="width: 100%"
434
- v-model="Audits.f_audit_comments" />
435
- </div>
436
- </div>
437
- </article>
438
- <footer slot="modal-footer" class="modal-footer">
439
- <button type="button" class="btn btn-primary" @click="ConfirmAudit()">确认</button>
440
- </footer>
441
- </modal>
442
- <!-- 抽查 -->
443
- <modal v-if="showChecks" :show.sync="showChecks" v-ref:modal :backdrop="false" title="抽查">
444
- <header slot="modal-header" class="modal-header">
445
- <button type="button" class="close" @click="closeModal1"><span>&times;</span></button>
446
- <h4 class="modal-title">抽查</h4>
447
- </header>
448
- <article slot="modal-body" class="modal-body clearfix">
449
- <div class="form-group col-sm-12">
450
- <label class="col-sm-2 control-label">抽查状态:</label>
451
- <div class="col-sm-10">
452
- <input-select
453
- class="select select_list"
454
- :value.sync="Checks.f_check_state"
455
- v-model="Checks.f_check_state"
456
- :options="ChecksOptions"
457
- :disable="mark === 1"
458
- :valueSingle="true"></input-select>
459
- </div>
460
- </div>
461
- <div class="form-group col-sm-12">
462
- <label class="col-sm-2 control-label">备注:</label>
463
- <div class="col-sm-10">
464
- <input type="text"
465
- class="form-control input_view"
466
- style="width: 100%"
467
- v-model="Checks.f_check_comments" />
468
- </div>
469
- </div>
470
- </article>
471
- <footer slot="modal-footer" class="modal-footer">
472
- <button type="button" class="btn btn-primary" @click="ConfirmCheck()">确认</button>
473
- </footer>
474
- </modal>
475
- </form>
476
- </validator>
477
- </div>
478
- </template>
479
- <script>
480
- import Vue from 'vue'
481
- import {isEmpty} from '../../../components/Util'
482
- import {HttpResetClass} from 'vue-client'
483
- // Date格式化
484
- Date.prototype.Format = function (fmt) {
485
- var o = {
486
- 'M+': this.getMonth() + 1, // 月份
487
- 'd+': this.getDate(), // 日
488
- 'H+': this.getHours(), // 小时
489
- 'm+': this.getMinutes(), // 分
490
- 's+': this.getSeconds(), // 秒
491
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
492
- 'S': this.getMilliseconds() // 毫秒
493
- }
494
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
495
- for (var k in o) {
496
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
497
- }
498
- return fmt
499
- }
500
-
501
- export default {
502
- title: '报建业务通用组件',
503
- props: {
504
- data: {
505
- type: Object
506
- }
507
- },
508
- data () {
509
- return {
510
- showAudit:false,
511
- showChecks:false,
512
- AuditPermissions:false,//审核权限
513
- ChecksPermissions:false,//抽查权限
514
- model: {}, // 公司等属性
515
- disable_button: true, // 控制按钮禁用
516
- disable_modal_button: true, // 控制按钮禁用
517
- //初始化省市区数据
518
- pcdslist: [],
519
- //初始化街道数据
520
- streetslist: [],
521
- //初始化街道数据
522
- areaslist: [],
523
- showButModal: false,
524
- areaData:{
525
- sjvalue:'',
526
- xianvalue:'',
527
- sqvalue:'',
528
- },
529
- templatlng: {
530
- gaodetemplng: "",
531
- gaodetemplat: "",
532
- baidutemplng: "",
533
- baidutemplat: ""
534
- },
535
- Audits: {
536
- f_audit_comments: '',
537
- f_audit_state: '',
538
- },
539
- Checks: {
540
- f_check_comments: '',
541
- f_check_state: '',
542
- },
543
- AuditsOptions:this.$appdata.getParam("报建审核状态"),
544
- ChecksOptions:this.$appdata.getParam("报建抽查状态"),
545
- }
546
- },
547
- watch: {
548
- deep: true
549
- },
550
- computed: {
551
-
552
- },
553
- created () {
554
- // 初始化数据
555
- this.initializtion()
556
- if (this.data.readyEvent) {
557
- this.$dispatch(this.data.readyEvent)
558
- }
559
- this.$dispatch('initializtionView')
560
- },
561
- methods: {
562
- async ConfirmAudit() {
563
- let data = {
564
- selectdata: this.data,
565
- audit: this.Audits,
566
- user: this.$login.f,
567
- flag:"审核"
568
- }
569
- let res = await this.$resetpost(
570
- `rs/logic/applyAuditAndCheck`,
571
- {data: data},
572
- {resolveMsg: null, rejectMsg: '审核失败!!!'}
573
- )
574
- if(res.data===200){
575
- this.$showMessage(`审核成功!!!`)
576
- }
577
- this.showAudit=false
578
- },
579
- async ConfirmCheck() {
580
- let data = {
581
- selectdata: this.data,
582
- checks: this.Checks,
583
- user: this.$login.f,
584
- flag: "抽查"
585
- }
586
- let res = await this.$resetpost(
587
- `rs/logic/applyAuditAndCheck`,
588
- {data: data},
589
- {resolveMsg: null, rejectMsg: '抽查失败!!!'}
590
- )
591
- if(res.data===200){
592
- this.$showMessage(`抽查成功!!!`)
593
- }
594
- this.showChecks=false
595
- },
596
- Audit(){
597
- if(!this.$login.r.includes('报建审核')){
598
- this.$showMessage(`您没有审核权限!!!`)
599
- return
600
- }
601
- if(this.data.f_audit_status!=='' && this.data.f_audit_status!==null){
602
- this.$showMessage(`此报建已被${this.data.f_audit_user}审核!!!`)
603
- return
604
- }
605
- this.Audits.f_audit_comments=''
606
- this.Audits.f_audit_state=''
607
- this.showAudit=true
608
- },
609
- Checksed(){
610
- if(!this.$login.r.includes('报建抽查')){
611
- this.$showMessage(`您没有抽查权限!!!`)
612
- return
613
- }
614
- if(this.data.f_check_state!=='' && this.data.f_check_state!==null){
615
- this.$showMessage(`此报建已被${this.data.f_check_user}抽查!!!`)
616
- return
617
- }
618
- this.Checks.f_check_comments=''
619
- this.Checks.f_check_state=''
620
- this.showChecks=true
621
- },
622
- // 初始化数据
623
- initializtion () {
624
- for (const item of this.data.fields) {
625
- this.data[item.field] = item.value
626
- }
627
- // 是否禁用按钮
628
- this.disableButton()
629
- // 公司等属性初始化
630
- if (this.data.orgs) {
631
- this.model.orgs = this.data.orgs
632
- } else {
633
- this.model.orgs = this.$login.f.orgs
634
- }
635
- if (this.data.parentname) {
636
- this.model.parentname = this.data.parentname
637
- } else {
638
- this.model.parentname = this.$login.f.f_department_name
639
- }
640
- if (this.data.operate_date) {
641
- this.model.operate_date = this.data.operate_date
642
- } else {
643
- this.model.operate_date = new Date().Format('yyyy-MM-dd')
644
- }
645
- if (this.data.operator) {
646
- this.model.operator = this.data.operator
647
- } else {
648
- this.model.operator = this.$login.f.name
649
- }
650
- this.initpcds(` j_orgid = '${this.$login.f.orgid}'`)
651
- },
652
- async getSelectShijiValue(sjvalue,sjlable) {
653
- this.areaData.sjvalue = sjvalue
654
- console.log("这是父级接收的市级值:",sjvalue,sjlable)
655
- this.data.areaData = this.areaData
656
- // 是否禁用按钮
657
- this.disableButton()
658
- },
659
- async getSelectXianValue(xianvalue,xianlable) {
660
- this.areaData.xianvalue = xianvalue
661
- this.data.areaData = this.areaData
662
- console.log("这是父级接收的县级值:",xianvalue,xianlable)
663
-
664
- // 是否禁用按钮
665
- this.disableButton()
666
- },
667
- async getSelectShequValue(sqvalue,sqlable) {
668
- this.areaData.sqvalue = sqvalue
669
- this.data.areaData = this.areaData
670
- console.log("这是父级接收的社区值:",sqvalue,sqlable)
671
-
672
- // 是否禁用按钮
673
- this.disableButton()
674
- },
675
- //初始化省市区,添加街道
676
- async initpcds(pconditon) {
677
- // console.log('initpcds', pconditon)
678
- // this.pcdslist = []
679
- // let HttpReset = new HttpResetClass()
680
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=9999999', {
681
- // data: {
682
- // items: '*',
683
- // tablename: 'j_bjqpcd',
684
- // orderitem: 'id',
685
- // condition: pconditon
686
- // }
687
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
688
- // let redata = []
689
- // req.data.forEach((row, n) => {
690
- // redata[n] = {
691
- // label: row.j_areaname,
692
- // value: row.j_areaid,
693
- // data: row,
694
- // id: row.id
695
- // }
696
- // })
697
- // console.log('市区', redata)
698
- // this.pcdslist = redata
699
- },
700
- //初始化街道 添加小区
701
- async initstreets(pconditon) {
702
- // console.log('市区32', pconditon)
703
- // this.streetslist = []
704
- // let HttpReset = new HttpResetClass()
705
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy', {
706
- // data: {
707
- // items: '*',
708
- // tablename: 'j_bjqstreet',
709
- // orderitem: 'id',
710
- // condition: pconditon
711
- // }
712
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
713
- // let redata = []
714
- // req.data.forEach((row, n) => {
715
- // redata[n] = {
716
- // label: row.j_areaname,
717
- // value: row.j_areaid,
718
- // data: row,
719
- // id: row.id
720
- // }
721
- // })
722
- // console.log('市区333', redata)
723
- // this.streetslist = redata
724
- // this.model.f_iscity = this.findbyid(this.streetslist, this.model.f_street_id).f_iscity
725
- },
726
- //初始化小区添加小区
727
- async initareas(pconditon) {
728
- // if(this.usertype){
729
- // pconditon=pconditon+` and f_special='1' `
730
- // }
731
- // this.areaslist = []
732
- // let HttpReset = new HttpResetClass()
733
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=100', {
734
- // data: {
735
- // items: '*',
736
- // tablename: 'j_bjqarea',
737
- // orderitem: 'id',
738
- // condition: pconditon
739
- // }
740
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
741
- // let redata = []
742
- // req.data.forEach((row) => {
743
- // redata.push({
744
- // label: row.j_areaname,
745
- // value: row.j_areaid,
746
- // data: row,
747
- // id: row.id
748
- // })
749
- // })
750
- // console.log('市区666', redata)
751
- // if (redata.length>0){
752
- // this.areaslist = redata
753
- // }
754
- },
755
- //省/市/区变化
756
- async pcdChange(val) {
757
-
758
- // console.log("省/市/区变化", val)
759
- // console.log("省/市/区变化", ` f_pcd_id ='${val}' `)
760
- // if (val) {
761
- // //那就把[小区,街道]重新组织一下
762
- // await this.initstreets(` j_parentid ='${val}' `)
763
- // if (this.model.f_street_id) {
764
- // if (this.findbyid(this.streetslist, this.model.f_street_id)) {
765
- // let pcd_id = this.findbyid(this.streetslist, this.model.f_street_id).f_pcd_id
766
- // if (pcd_id != val) {
767
- // this.model.f_street_id = ''
768
- // }
769
- // } else {
770
- // this.model.f_street_id = ''
771
- // }
772
- //
773
- // //那就把[小区,街道]重新组织一下
774
- // if (this.model.f_street_id) {
775
- // await this.initareas(` j_parentid ='${this.model.f_street_id}' `)
776
- // if (this.model.f_residential_area_id) {
777
- // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
778
- // let pcd_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_pcd_id
779
- // if (pcd_id != val) {
780
- // this.model.f_residential_area_id = ''
781
- // }
782
- // } else {
783
- // this.model.f_residential_area_id = ''
784
- // }
785
- //
786
- // }
787
- // }
788
- // }
789
- // }
790
- // this.$resetValidation()
791
- },
792
- //街道变化
793
- async streetChange(val) {
794
- // console.log("街道变化", val)
795
- // if (this.streetslist[0]) {
796
- // var street = ''
797
- // this.streetslist.forEach((item) => {
798
- // if (item.id === val) {
799
- // street = item.label
800
- // }
801
- // })
802
- // this.model.f_address = street
803
- // }
804
- // if (val) {
805
- // //那就把[小区]重新组织一下
806
- // await this.initareas(` j_parentid ='${val}' `)
807
- // if (this.model.f_residential_area_id) {
808
- // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
809
- // let street_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_street_id
810
- // if (street_id != val) {
811
- // this.model.f_residential_area_id = ''
812
- // }
813
- // } else {
814
- // this.model.f_residential_area_id = ''
815
- // }
816
- //
817
- // }
818
- // }
819
- // this.$resetValidation()
820
- },
821
- // 是否禁用按钮
822
- disableButton () {
823
- let flag = false
824
- for (const field of this.data.fields) {
825
- if (field.required && !field.value && !field.hidden && field.value !== 0) {
826
- flag = true
827
- }
828
-
829
- // 任何选择框只要是否都不能提交
830
- if (field.type === 'select' && field.value === '否' && field.value_no_disable) {
831
- flag = true
832
- }
833
-
834
- if (field.type === 'checkbox' && field.required && field.value.length === 0) {
835
- flag = true
836
- }
837
- }
838
-
839
- //区域下拉框必选 流程模式为报警器报建
840
- if ((this.data.f_apply_type === '报警器报建' || this.data.f_apply_type === '工商业报警器报建') && this.data.defname === '工程施工' && this.data.title === '工程施工' && this.data.f_sub_state !='完工'){
841
- if (!flag){
842
- if (this.areaData.sjvalue ==null || this.areaData.sjvalue.length ==0 || this.areaData.sqvalue == null || this.areaData.sqvalue.length ==0
843
- || this.areaData.xianvalue == null || this.areaData.xianvalue.length == 0){
844
- console.log("区域为空禁止提交:",this.areaData)
845
- flag = true
846
- }
847
-
848
- if (this.templatlng.baidutemplat ==null || this.templatlng.baidutemplat.length ==0 || this.templatlng.baidutemplng == null || this.templatlng.baidutemplng.length ==0
849
- || this.templatlng.gaodetemplat == null || this.templatlng.gaodetemplat.length == 0 || this.templatlng.gaodetemplng == null || this.templatlng.gaodetemplng.length == 0){
850
- console.log("地图坐标为空禁止提交:",this.templatlng)
851
- flag = true
852
- }
853
- }
854
- }
855
- this.disable_button = flag
856
- },
857
- // 失去焦点且值最终发生变化触发
858
- async onchange (index) {
859
- // 是否禁用按钮
860
- this.disableButton()
861
-
862
- if (!isEmpty(this.data.fields[index].value)) {
863
- // 前缀、后缀
864
- if (this.data.fields[index].prefix) {
865
- this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
866
- }
867
- if (this.data.fields[index].suffix) {
868
- this.data.fields[index].value = this.data.fields[index].value + this.data.fields[index].suffix
869
- }
870
- }
871
-
872
- // data赋值
873
- this.data[this.data.fields[index].field] = this.data.fields[index].value
874
-
875
- if (this.data.fields[index].type === 'datepicker') {
876
- this.check_datepicker(index)
877
- }
878
-
879
- if (this.data.fields[index].onchange) {
880
- this.$dispatch(this.data.fields[index].onchange, index)
881
- }
882
- this.$dispatch('onchange', index)
883
- },
884
- // 失去焦点触发,无论值是否发生变化
885
- onblur (index) {
886
- this.disableButton()
887
-
888
- if (this.data.fields[index].onblur) {
889
- this.$dispatch(this.data.fields[index].onblur, index)
890
- }
891
-
892
- this.$dispatch('onblur', index)
893
- },
894
- oninput (index) {
895
- // 是否禁用按钮
896
- this.disableButton()
897
-
898
- if (this.data.fields[index].oninput) {
899
- this.$dispatch(this.data.fields[index].oninput, index)
900
- }
901
- this.$dispatch('oninput', index)
902
- },
903
- selectSearch(event, index) {
904
- if (this.data.fields[index].selectSearch) {
905
- this.$dispatch(this.data.fields[index].selectSearch, event[0], index)
906
- }
907
- this.$dispatch('selectSearch', event[0], index)
908
- },
909
- // 点击按钮组按钮
910
- async click_but (button) {
911
- //报警器区域地址
912
- this.data.areaData = this.areaData
913
- this.data.templatlng = this.templatlng
914
-
915
- this.disable_button = true
916
-
917
- this.data.fields.forEach(item => {
918
- this.data[item.field] = item.value
919
- })
920
-
921
- this.data.button = button
922
-
923
- if (button.button_fields && button.button_fields.length > 0) {
924
- this.showButModal = true
925
- return
926
- }
927
-
928
- if (this.data.button.event) {
929
- this.$dispatch(this.data.button.event)
930
- } else {
931
- this.$dispatch('button')
932
- }
933
-
934
- },
935
- confirmModal () {
936
- this.closeModal()
937
-
938
- this.data.button.button_fields.forEach(item => {
939
- this.data.button[item.field] = item.value
940
- })
941
-
942
- if (this.data.button.event) {
943
- this.$dispatch(this.data.button.event)
944
- } else {
945
- this.$dispatch('button')
946
- }
947
- },
948
- closeModal1(){
949
- this.showAudit=false
950
- this.showChecks=false
951
- },
952
- // 关闭模态框
953
- closeModal () {
954
- this.showButModal = false
955
- this.disable_modal_button = false
956
- },
957
- onbutchange (index) {
958
- // 是否禁用按钮
959
- this.disableModalButton()
960
-
961
- if (this.data.button.button_fields[index].onchange) {
962
- this.$dispatch(this.data.button.button_fields[index].onchange, index)
963
- } else {
964
- this.$dispatch('onbutchange', index)
965
- }
966
-
967
- },
968
- onbutblur (index) {
969
- this.disableModalButton()
970
-
971
- if (this.data.button.button_fields[index].onblur) {
972
- this.$dispatch(this.data.button.button_fields[index].onblur, index)
973
- } else {
974
- this.$dispatch('onbutblur', index)
975
- }
976
- },
977
- onbutinput (index) {
978
- // 是否禁用按钮
979
- this.disableModalButton()
980
-
981
- if (this.data.button.button_fields[index].oninput) {
982
- this.$dispatch(this.data.button.button_fields[index].oninput, index)
983
- } else {
984
- this.$dispatch('onbutinput', index)
985
- }
986
- },
987
- disableModalButton () {
988
- let flag = false
989
-
990
-
991
- for (const item of this.data.button.button_fields) {
992
- if (item.required && !item.value) {
993
- if (item.value === 0) {
994
- flag = false
995
- } else {
996
- flag = true
997
- }
998
- }
999
- }
1000
-
1001
- this.disable_modal_button = flag
1002
- },
1003
- check_datepicker (index) {
1004
- // 时间格式检测
1005
- if (!isEmpty(this.data.fields[index].value)) {
1006
-
1007
- let dateReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
1008
- let timeReg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
1009
- let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
1010
- if (this.data.fields[index].format) {
1011
- if (this.data.fields[index].format === 'yyyy-MM-dd') {
1012
- if (!dateReg.test(this.data.fields[index].value)) {
1013
- this.data.fields[index].value = ''
1014
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
1015
- }
1016
- }
1017
- if (this.data.fields[index].format === 'HH:mm:ss') {
1018
- if (!timeReg.test(this.data.fields[index].value)) {
1019
- this.data.fields[index].value = ''
1020
- this.$showAlert(this.data.fields[index].label + '格式错误如:00:00:00', 'warning', 2000)
1021
- }
1022
- }
1023
- if (this.data.fields[index].format === 'yyyy-MM-dd HH:mm:ss') {
1024
- if (!datetimeReg.test(this.data.fields[index].value)) {
1025
- this.data.fields[index].value = ''
1026
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01 00:00:00', 'warning', 2000)
1027
- }
1028
- }
1029
- } else {
1030
- if (!dateReg.test(this.data.fields[index].value)) {
1031
- this.data.fields[index].value = ''
1032
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
1033
- }
1034
- }
1035
- }
1036
- }
1037
- },
1038
- events: {
1039
-
1040
- }
1041
- }
1042
- </script>
1043
- <style>
1044
- .datepicker{
1045
- width: 100%!important;
1046
- }
1047
- .datepicker-input{
1048
- background-color: #ffffff!important;
1049
- width: 100%!important;
1050
- }
1051
- .datepicker-input:disabled{
1052
- border: 1px solid #DDD!important;
1053
- color: #ACA899!important;
1054
- width: 100%!important;
1055
- }
1056
- </style>
1057
- <style scoped>
1058
- th{
1059
- font-size: 15px !important;
1060
- text-align: center !important;
1061
- background-color: #dfedfb!important;
1062
- color: #666666 !important;
1063
- font-family: PINGFANG-BOLD !important;
1064
- font-weight: normal!important;
1065
- }
1066
- /*清除model中的浮动*/
1067
- .clearfix:after,.clearfix:before{
1068
- display: table;
1069
- }
1070
- .clearfix:after{
1071
- clear: both;
1072
- }
1073
-
1074
- .input_view{
1075
- padding: 8px;
1076
- background-color: #ffffff;
1077
- border-radius: 2px;
1078
- border: solid 1px #c7c7c7!important;
1079
- color: #333333!important;
1080
- font-size: 15px!important;
1081
- }
1082
-
1083
- .input_view[readonly]{
1084
- border: 1px solid #DDD!important;
1085
- color:#ACA899!important;
1086
- }
1087
- .input_view:disabled{
1088
- border: 1px solid #DDD!important;
1089
- color:#ACA899!important;
1090
- }
1091
-
1092
- .control-label-justify {
1093
- display: inline-block;
1094
- vertical-align: top;
1095
- width: 150px;
1096
- text-align: justify;
1097
- font-family: PingFang-SC-Bold;
1098
- }
1099
-
1100
- .control-label-justify::after {
1101
- content: "";
1102
- display: inline-block;
1103
- width: 100%;
1104
- overflow: hidden;
1105
- height: 0;
1106
- }
1107
-
1108
- input::-webkit-outer-spin-button,
1109
- input::-webkit-inner-spin-button {
1110
- -webkit-appearance: none;
1111
- }
1112
-
1113
- input[type="number"] {
1114
- -moz-appearance: textfield;
1115
- }
1116
-
1117
- </style>
1
+ <template>
2
+ <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
+ <validator name='v' @valid="$emit('valid')" @invalid="$emit('invalid')">
4
+ <form class="form-horizontal">
5
+ <div class="form-group">
6
+ <div v-for="(index,item) in data.fields">
7
+ <!--input-->
8
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
9
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device) && ( item.label != '证件号码')&&( item.label !== '身份证') && (item.label !== '用户电话')"
10
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
11
+ <label :style="item.label_style ? item.label_style : ''"
12
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
13
+ <div :style="item.value_style ? item.value_style:''"
14
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
15
+ <input class="form-control input_view" style=""
16
+ :type="item.type"
17
+ v-model="data.fields[index].value"
18
+ :placeholder="item.placeholder"
19
+ :value="data.fields[index].value"
20
+ :readonly="item.readonly"
21
+ :disabled="item.disabled"
22
+ @change="onchange(index)"
23
+ @blur="onblur(index)"
24
+ @input="oninput(index)"
25
+ />
26
+ </div>
27
+ </div>
28
+
29
+ <!--input-->
30
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
31
+ v-if="(data.f_credentials != '身份证' && item.label === '证件号码')"
32
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
33
+ <label :style="item.label_style ? item.label_style : ''"
34
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
35
+ <div :style="item.value_style ? item.value_style:''"
36
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
37
+ <input class="form-control input_view" style=""
38
+ :type="item.type"
39
+ v-model="data.fields[index].value"
40
+ :placeholder="item.placeholder"
41
+ :value="data.fields[index].value"
42
+ :readonly="item.readonly"
43
+ :disabled="item.disabled"
44
+ @change="onchange(index)"
45
+ @blur="onblur(index)"
46
+ @input="oninput(index)"
47
+ />
48
+ </div>
49
+ </div>
50
+ <!--身份证验证-->
51
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
52
+ v-if="(item.label==='身份证') || (data.f_credentials === '身份证' && item.label === '证件号码')"
53
+ :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
54
+ <label :style="item.label_style ? item.label_style : ''"
55
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
56
+ <div :style="item.value_style ? item.value_style:''"
57
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
58
+ <input class="form-control input_view" style=""
59
+ :type="item.type"
60
+ maxlength="18"
61
+ v-model="data.fields[index].value"
62
+ :placeholder="item.placeholder"
63
+ :value="data.fields[index].value"
64
+ v-validate:f_idnumber2='{identityCardValid: true}'
65
+ :readonly="item.readonly"
66
+ :disabled="item.disabled"
67
+ @change="onchange(index)"
68
+ @blur="onblur(index)"
69
+ @input="oninput(index)"
70
+ />
71
+ </div>
72
+ </div>
73
+
74
+
75
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
76
+ v-if="item.label === '用户电话'"
77
+ :class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
78
+ <label :style="item.label_style ? item.label_style : ''"
79
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
80
+ <div :style="item.value_style ? item.value_style:''"
81
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
82
+ <input class="form-control input_view" style=""
83
+ type="number"
84
+ oninput="if(value.length > 11) value=value.slice(0,11)"
85
+ v-validate:f_user_phone="{minlength: 7, maxlength: 11 }"
86
+ v-model="data.fields[index].value"
87
+ :placeholder="item.placeholder"
88
+ :value="data.fields[index].value"
89
+ onKeypress="return(/[\d\.]/.test(String.fromCharCode(event.keyCode)))"
90
+ :readonly="item.readonly"
91
+ :disabled="item.disabled"
92
+ @change="onchange(index)"
93
+ @blur="onblur(index)"
94
+ @input="oninput(index)"
95
+ />
96
+ </div>
97
+ </div>
98
+
99
+
100
+
101
+ <!--时间datepicker-->
102
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
103
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)"
104
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
105
+ <label
106
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
107
+ <div :style="item.value_style ? item.value_style:''"
108
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
109
+ <datepicker
110
+ @change="onchange(index)"
111
+ @blur="onblur(index)"
112
+ :placeholder="item.placeholder"
113
+ :value.sync="data.fields[index].value"
114
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
115
+ v-model="data.fields[index].value"
116
+ :readonly="item.readonly"
117
+ :disabled="item.disabled"
118
+ :show-reset-button="reset">
119
+ </datepicker>
120
+ </div>
121
+ </div>
122
+
123
+ <!--textarea-->
124
+ <div :style="item.style ? item.style+';margin-bottom: 20px':'margin-bottom: 20px'"
125
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)"
126
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
127
+ <label :style="item.label_style ? item.label_style : ''"
128
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
129
+ <div :style="item.value_style ? item.value_style:''"
130
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
131
+ <textarea
132
+ :readonly="item.readonly"
133
+ :disabled="item.disabled"
134
+ class="form-control input_view"
135
+ style="width: 100%;height: 100%"
136
+ :rows="item.rows"
137
+ v-model="data.fields[index].value"
138
+ :value="data.fields[index].value"
139
+ @change="onchange(index)"
140
+ @blur="onblur(index)"
141
+ @input="oninput(index)"
142
+ >
143
+ </textarea>
144
+ </div>
145
+ </div>
146
+
147
+ <!--select-->
148
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
149
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device) && !item.multiple"
150
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
151
+ <label
152
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
153
+ <div :style="item.value_style ? item.value_style:''"
154
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
155
+ <input-select
156
+ class="select select_list"
157
+ @blur="onblur(index)"
158
+ @change="onchange(index)"
159
+ @select-search="selectSearch($arguments,index)"
160
+ :readonly="item.readonly"
161
+ :disable="item.disabled"
162
+ :value.sync="data.fields[index].value"
163
+ v-model="data.fields[index].value"
164
+ :options='data.fields[index].options'
165
+ :valueSingle="true"></input-select>
166
+ </div>
167
+ </div>
168
+ <!--select 多选-->
169
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
170
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)&& item.multiple"
171
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
172
+ <label
173
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
174
+ <div :style="item.value_style ? item.value_style:''"
175
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
176
+ <v-select
177
+ width="100%"
178
+ class="select select_list"
179
+ @blur="onblur(index)"
180
+ @change="onchange(index)"
181
+ @select-search="selectSearch($arguments,index)"
182
+ :readonly="item.readonly"
183
+ :disable="item.disabled"
184
+ :value.sync="data.fields[index].value"
185
+ v-model="data.fields[index].value"
186
+ :options='data.fields[index].options'
187
+ :multiple="data.fields[index].multiple"
188
+ :valueSingle="true"></v-select>
189
+ </div>
190
+ </div>
191
+
192
+ <!--checkbox-->
193
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
194
+ v-if="item.type==='checkbox' && !item.hidden && (item.device === 'pc' || !item.device)"
195
+ :class="[item.required && item.value.length === 0 ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
196
+ <label v-if="item.label"
197
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
198
+ <div :style="item.value_style ? item.value_style:''"
199
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
200
+ <label class="checkbox-inline" v-for="(index2,row) in item.options">
201
+ <input type="checkbox" class=""
202
+ :readonly="data.fields[index].readonly"
203
+ :disabled="data.fields[index].disabled"
204
+ v-model="data.fields[index].value"
205
+ :value="data.fields[index].options[index2].value"
206
+ @change="onchange(index)"
207
+ @blur="onblur(index)">
208
+ {{row.label}}
209
+ </label>
210
+ </div>
211
+ </div>
212
+ </div>
213
+ <!--区域地址联动-->
214
+ <div>
215
+ <res-area-select-group
216
+ v-if="(data.f_apply_type === '报警器报建' || data.f_apply_type === '工商业报警器报建') && data.defname === '工程施工' && data.title === '工程施工' && data.f_sub_state !='完工'"
217
+ labelstyle = "control-label"
218
+ @shiji-select = "getSelectShijiValue"
219
+ @xian-select = "getSelectXianValue"
220
+ @shequ-select = "getSelectShequValue"
221
+ >
222
+ </res-area-select-group>
223
+ </div>
224
+
225
+ <gaode-map
226
+ v-if="(data.f_apply_type === '报警器报建' || data.f_apply_type === '工商业报警器报建') && data.defname === '工程施工' && data.title === '工程施工' && data.f_sub_state !='完工'"
227
+ >
228
+
229
+ </gaode-map>
230
+
231
+ </div>
232
+
233
+ <!-- onetomany -->
234
+ <div class="" v-for="(index,item) in data.onetomany">
235
+ <onetomany :selectdata="data" :onetomany="item" :index="index" v-if="item.device === 'pc' || !item.device"></onetomany>
236
+ </div>
237
+
238
+ <div v-for="(i,item) in data.components">
239
+ <h3 v-if="item.device === 'pc'"><nbr >{{item.title}}</nbr></h3>
240
+ <component v-if="item.device === 'pc' || !item.device" :is="item.name" :selectdata="data" :mark="item.mark"></component>
241
+ </div>
242
+
243
+ <!--自定义组件-->
244
+ <slot>
245
+ </slot>
246
+ <!--公司等属性-->
247
+ <div class="col-sm-12 form-group text-center" style="padding-top:8px">
248
+ <div class="col-sm-3 form-group center-block">
249
+ <label class="col-sm-5">所属公司:</label>
250
+ <div class="col-sm-6" style="text-align: left">
251
+ {{model.orgs}}
252
+ </div>
253
+ </div>
254
+ <div class="col-sm-3 form-group center-block">
255
+ <label class="col-sm-5">部门:</label>
256
+ <div class="col-sm-6" style="text-align: left">
257
+ {{model.parentname}}
258
+ </div>
259
+ </div>
260
+ <div class="col-sm-3 form-group center-block">
261
+ <label class="col-sm-5">操作人:</label>
262
+ <div class="col-sm-6 " style="text-align: left">
263
+ {{model.operator}}
264
+ </div>
265
+ </div>
266
+ <div class="col-sm-3 form-group center-block">
267
+ <label class="col-sm-5">操作日期:</label>
268
+ <div class="col-sm-6" style="text-align: left">
269
+ {{model.operate_date}}
270
+ </div>
271
+ </div>
272
+ </div>
273
+ <!-- 按钮组 -->
274
+ <div class="from-group col-sm-12 text-center">
275
+ <!-- 按钮组 -->
276
+ <button v-for="(index,button) in data.buttons"
277
+ :disabled="(button.disabled && disable_button)"
278
+ style="min-width:100px"
279
+ :class="button.disabled && disable_button ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
280
+ v-if="!button.hidden && button.button_name !=='提交'&& button.button_name !=='确认'"
281
+ @click.prevent="click_but(button)"
282
+ >
283
+ {{button.button_name}}
284
+ </button>
285
+ <button v-for="(index,button) in data.buttons"
286
+ :disabled="(button.disabled && disable_button) || (!$v.valid)"
287
+ style="min-width:100px"
288
+ :class="button.disabled && disable_button || (!$v.valid) ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
289
+ v-if="!button.hidden && (button.button_name ==='提交'||button.button_name ==='确认')"
290
+ @click.prevent="click_but(button)"
291
+ >
292
+ {{button.button_name}}
293
+ </button>
294
+ <button
295
+ style="min-width:100px"
296
+ :class="'btn btn-primary button_spacing'"
297
+ @click.prevent="Audit"
298
+ >审核</button>
299
+ <button
300
+ style="min-width:100px"
301
+ :class="'btn btn-primary button_spacing'"
302
+ @click.prevent="Checksed"
303
+ >抽查</button>
304
+ </div>
305
+
306
+ <!-- 按钮模态框 -->
307
+ <modal v-if="showButModal" :show.sync="showButModal" backdrop="false" large>
308
+ <header slot="modal-header" class="modal-header">
309
+ <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
310
+ <span class="modal-title"><font
311
+ size="3">{{data.button.button_name}}</font></span>
312
+ </header>
313
+ <article slot="modal-body" class="modal-body clearfix">
314
+ <div class="form-group" style="padding: 0 150px">
315
+ <div v-for="(index,item) in data.button.button_fields">
316
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group' : 'form-group']"
317
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)">
318
+ <label :style="item.label_style ? item.label_style : ''"
319
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
320
+ <div :style="item.value_style ? item.value_style : ''"
321
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
322
+ <input class="form-control input_view"
323
+ :placeholder="item.placeholder"
324
+ :type="item.type"
325
+ v-model="item.value"
326
+ :value="item.value"
327
+ :readonly="item.readonly"
328
+ :disabled="item.disabled"
329
+ @change="onbutchange(index)"
330
+ @blur="onbutblur(index)"
331
+ @input="onbutinput(index)"
332
+ />
333
+ </div>
334
+ </div>
335
+
336
+ <!--时间datepicker-->
337
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
338
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)">
339
+ <label :style="item.label_style ? item.label_style : ''"
340
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
341
+ <div :style="item.value_style ? item.value_style : ''"
342
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
343
+ <datepicker
344
+ :placeholder="item.placeholder"
345
+ :value.sync="item.value"
346
+ v-model="item.value"
347
+ :readonly="item.readonly"
348
+ :disabled="item.disabled"
349
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
350
+ :show-reset-button="true"
351
+ @change="onbutchange(index)"
352
+ @blur="onbutblur(index)"
353
+ ></datepicker>
354
+ </div>
355
+ </div>
356
+
357
+ <!--select-->
358
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
359
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)">
360
+ <label :style="item.label_style ? item.label_style : ''"
361
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
362
+ <div :style="item.value_style ? item.value_style : ''"
363
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
364
+ <input-select
365
+ class="select select_list"
366
+ :value.sync="item.value"
367
+ v-model="item.value"
368
+ :options='item.options'
369
+ :readonly="item.readonly"
370
+ :disable="item.disabled"
371
+ :valueSingle="true"
372
+ @blur="onbutblur(index)"
373
+ @change="onbutchange(index)"
374
+ ></input-select>
375
+ </div>
376
+ </div>
377
+
378
+ <!--textarea-->
379
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
380
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)">
381
+ <label :style="item.label_style ? item.label_style : ''"
382
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
383
+ <div :style="item.value_style ? item.value_style : ''"
384
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
385
+ <textarea
386
+ class="form-control input_view"
387
+ style="width: 100%;height: 100%"
388
+ v-model="item.value"
389
+ :value="item.value"
390
+ :rows="item.rows"
391
+ :readonly="item.readonly"
392
+ :disabled="item.disabled"
393
+ @change="onbutchange(index)"
394
+ @blur="onbutblur(index)"
395
+ @input="onbutinput(index)"
396
+ ></textarea>
397
+ </div>
398
+ </div>
399
+ </div>
400
+ </div>
401
+ </article>
402
+ <footer slot="modal-footer" class="modal-footer">
403
+ <button :class="disable_modal_button ? 'btn btn-default':'btn btn-primary'"
404
+ :disabled="disable_modal_button" type="button" @click="confirmModal()">
405
+ 确认
406
+ </button>
407
+ </footer>
408
+ </modal>
409
+ <!-- 审核 -->
410
+ <modal v-if="showAudit" :show.sync="showAudit" v-ref:modal :backdrop="false" title="审核">
411
+ <header slot="modal-header" class="modal-header">
412
+ <button type="button" class="close" @click="closeModal1"><span>&times;</span></button>
413
+ <h4 class="modal-title">审核</h4>
414
+ </header>
415
+ <article slot="modal-body" class="modal-body clearfix">
416
+ <div class="form-group col-sm-12">
417
+ <label class="col-sm-2 control-label">审核状态:</label>
418
+ <div class="col-sm-10">
419
+ <input-select
420
+ class="select select_list"
421
+ :value.sync="Audits.f_audit_state"
422
+ v-model="Audits.f_audit_state"
423
+ :options="AuditsOptions"
424
+ :disable="mark === 1"
425
+ :valueSingle="true"></input-select>
426
+ </div>
427
+ </div>
428
+ <div class="form-group col-sm-12">
429
+ <label class="col-sm-2 control-label">备注:</label>
430
+ <div class="col-sm-10">
431
+ <input type="text"
432
+ class="form-control input_view"
433
+ style="width: 100%"
434
+ v-model="Audits.f_audit_comments" />
435
+ </div>
436
+ </div>
437
+ </article>
438
+ <footer slot="modal-footer" class="modal-footer">
439
+ <button type="button" class="btn btn-primary" @click="ConfirmAudit()">确认</button>
440
+ </footer>
441
+ </modal>
442
+ <!-- 抽查 -->
443
+ <modal v-if="showChecks" :show.sync="showChecks" v-ref:modal :backdrop="false" title="抽查">
444
+ <header slot="modal-header" class="modal-header">
445
+ <button type="button" class="close" @click="closeModal1"><span>&times;</span></button>
446
+ <h4 class="modal-title">抽查</h4>
447
+ </header>
448
+ <article slot="modal-body" class="modal-body clearfix">
449
+ <div class="form-group col-sm-12">
450
+ <label class="col-sm-2 control-label">抽查状态:</label>
451
+ <div class="col-sm-10">
452
+ <input-select
453
+ class="select select_list"
454
+ :value.sync="Checks.f_check_state"
455
+ v-model="Checks.f_check_state"
456
+ :options="ChecksOptions"
457
+ :disable="mark === 1"
458
+ :valueSingle="true"></input-select>
459
+ </div>
460
+ </div>
461
+ <div class="form-group col-sm-12">
462
+ <label class="col-sm-2 control-label">备注:</label>
463
+ <div class="col-sm-10">
464
+ <input type="text"
465
+ class="form-control input_view"
466
+ style="width: 100%"
467
+ v-model="Checks.f_check_comments" />
468
+ </div>
469
+ </div>
470
+ </article>
471
+ <footer slot="modal-footer" class="modal-footer">
472
+ <button type="button" class="btn btn-primary" @click="ConfirmCheck()">确认</button>
473
+ </footer>
474
+ </modal>
475
+ </form>
476
+ </validator>
477
+ </div>
478
+ </template>
479
+ <script>
480
+ import Vue from 'vue'
481
+ import {isEmpty} from '../../../components/Util'
482
+ import {HttpResetClass} from 'vue-client'
483
+ // Date格式化
484
+ Date.prototype.Format = function (fmt) {
485
+ var o = {
486
+ 'M+': this.getMonth() + 1, // 月份
487
+ 'd+': this.getDate(), // 日
488
+ 'H+': this.getHours(), // 小时
489
+ 'm+': this.getMinutes(), // 分
490
+ 's+': this.getSeconds(), // 秒
491
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
492
+ 'S': this.getMilliseconds() // 毫秒
493
+ }
494
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
495
+ for (var k in o) {
496
+ if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
497
+ }
498
+ return fmt
499
+ }
500
+
501
+ export default {
502
+ title: '报建业务通用组件',
503
+ props: {
504
+ data: {
505
+ type: Object
506
+ }
507
+ },
508
+ data () {
509
+ return {
510
+ showAudit:false,
511
+ showChecks:false,
512
+ AuditPermissions:false,//审核权限
513
+ ChecksPermissions:false,//抽查权限
514
+ model: {}, // 公司等属性
515
+ disable_button: true, // 控制按钮禁用
516
+ disable_modal_button: true, // 控制按钮禁用
517
+ //初始化省市区数据
518
+ pcdslist: [],
519
+ //初始化街道数据
520
+ streetslist: [],
521
+ //初始化街道数据
522
+ areaslist: [],
523
+ showButModal: false,
524
+ areaData:{
525
+ sjvalue:'',
526
+ xianvalue:'',
527
+ sqvalue:'',
528
+ },
529
+ templatlng: {
530
+ gaodetemplng: "",
531
+ gaodetemplat: "",
532
+ baidutemplng: "",
533
+ baidutemplat: ""
534
+ },
535
+ Audits: {
536
+ f_audit_comments: '',
537
+ f_audit_state: '',
538
+ },
539
+ Checks: {
540
+ f_check_comments: '',
541
+ f_check_state: '',
542
+ },
543
+ AuditsOptions:this.$appdata.getParam("报建审核状态"),
544
+ ChecksOptions:this.$appdata.getParam("报建抽查状态"),
545
+ }
546
+ },
547
+ watch: {
548
+ deep: true
549
+ },
550
+ computed: {
551
+
552
+ },
553
+ created () {
554
+ // 初始化数据
555
+ this.initializtion()
556
+ if (this.data.readyEvent) {
557
+ this.$dispatch(this.data.readyEvent)
558
+ }
559
+ this.$dispatch('initializtionView')
560
+ },
561
+ methods: {
562
+ async ConfirmAudit() {
563
+ let data = {
564
+ selectdata: this.data,
565
+ audit: this.Audits,
566
+ user: this.$login.f,
567
+ flag:"审核"
568
+ }
569
+ let res = await this.$resetpost(
570
+ `rs/logic/applyAuditAndCheck`,
571
+ {data: data},
572
+ {resolveMsg: null, rejectMsg: '审核失败!!!'}
573
+ )
574
+ if(res.data===200){
575
+ this.$showMessage(`审核成功!!!`)
576
+ }
577
+ this.showAudit=false
578
+ },
579
+ async ConfirmCheck() {
580
+ let data = {
581
+ selectdata: this.data,
582
+ checks: this.Checks,
583
+ user: this.$login.f,
584
+ flag: "抽查"
585
+ }
586
+ let res = await this.$resetpost(
587
+ `rs/logic/applyAuditAndCheck`,
588
+ {data: data},
589
+ {resolveMsg: null, rejectMsg: '抽查失败!!!'}
590
+ )
591
+ if(res.data===200){
592
+ this.$showMessage(`抽查成功!!!`)
593
+ }
594
+ this.showChecks=false
595
+ },
596
+ Audit(){
597
+ if(!this.$login.r.includes('报建审核')){
598
+ this.$showMessage(`您没有审核权限!!!`)
599
+ return
600
+ }
601
+ if(this.data.f_audit_status!=='' && this.data.f_audit_status!==null){
602
+ this.$showMessage(`此报建已被${this.data.f_audit_user}审核!!!`)
603
+ return
604
+ }
605
+ this.Audits.f_audit_comments=''
606
+ this.Audits.f_audit_state=''
607
+ this.showAudit=true
608
+ },
609
+ Checksed(){
610
+ if(!this.$login.r.includes('报建抽查')){
611
+ this.$showMessage(`您没有抽查权限!!!`)
612
+ return
613
+ }
614
+ if(this.data.f_check_state!=='' && this.data.f_check_state!==null){
615
+ this.$showMessage(`此报建已被${this.data.f_check_user}抽查!!!`)
616
+ return
617
+ }
618
+ this.Checks.f_check_comments=''
619
+ this.Checks.f_check_state=''
620
+ this.showChecks=true
621
+ },
622
+ // 初始化数据
623
+ initializtion () {
624
+ for (const item of this.data.fields) {
625
+ this.data[item.field] = item.value
626
+ }
627
+ // 是否禁用按钮
628
+ this.disableButton()
629
+ // 公司等属性初始化
630
+ if (this.data.orgs) {
631
+ this.model.orgs = this.data.orgs
632
+ } else {
633
+ this.model.orgs = this.$login.f.orgs
634
+ }
635
+ if (this.data.parentname) {
636
+ this.model.parentname = this.data.parentname
637
+ } else {
638
+ this.model.parentname = this.$login.f.f_department_name
639
+ }
640
+ if (this.data.operate_date) {
641
+ this.model.operate_date = this.data.operate_date
642
+ } else {
643
+ this.model.operate_date = new Date().Format('yyyy-MM-dd')
644
+ }
645
+ if (this.data.operator) {
646
+ this.model.operator = this.data.operator
647
+ } else {
648
+ this.model.operator = this.$login.f.name
649
+ }
650
+ this.initpcds(` j_orgid = '${this.$login.f.orgid}'`)
651
+ },
652
+ async getSelectShijiValue(sjvalue,sjlable) {
653
+ this.areaData.sjvalue = sjvalue
654
+ console.log("这是父级接收的市级值:",sjvalue,sjlable)
655
+ this.data.areaData = this.areaData
656
+ // 是否禁用按钮
657
+ this.disableButton()
658
+ },
659
+ async getSelectXianValue(xianvalue,xianlable) {
660
+ this.areaData.xianvalue = xianvalue
661
+ this.data.areaData = this.areaData
662
+ console.log("这是父级接收的县级值:",xianvalue,xianlable)
663
+
664
+ // 是否禁用按钮
665
+ this.disableButton()
666
+ },
667
+ async getSelectShequValue(sqvalue,sqlable) {
668
+ this.areaData.sqvalue = sqvalue
669
+ this.data.areaData = this.areaData
670
+ console.log("这是父级接收的社区值:",sqvalue,sqlable)
671
+
672
+ // 是否禁用按钮
673
+ this.disableButton()
674
+ },
675
+ //初始化省市区,添加街道
676
+ async initpcds(pconditon) {
677
+ // console.log('initpcds', pconditon)
678
+ // this.pcdslist = []
679
+ // let HttpReset = new HttpResetClass()
680
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=9999999', {
681
+ // data: {
682
+ // items: '*',
683
+ // tablename: 'j_bjqpcd',
684
+ // orderitem: 'id',
685
+ // condition: pconditon
686
+ // }
687
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
688
+ // let redata = []
689
+ // req.data.forEach((row, n) => {
690
+ // redata[n] = {
691
+ // label: row.j_areaname,
692
+ // value: row.j_areaid,
693
+ // data: row,
694
+ // id: row.id
695
+ // }
696
+ // })
697
+ // console.log('市区', redata)
698
+ // this.pcdslist = redata
699
+ },
700
+ //初始化街道 添加小区
701
+ async initstreets(pconditon) {
702
+ // console.log('市区32', pconditon)
703
+ // this.streetslist = []
704
+ // let HttpReset = new HttpResetClass()
705
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy', {
706
+ // data: {
707
+ // items: '*',
708
+ // tablename: 'j_bjqstreet',
709
+ // orderitem: 'id',
710
+ // condition: pconditon
711
+ // }
712
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
713
+ // let redata = []
714
+ // req.data.forEach((row, n) => {
715
+ // redata[n] = {
716
+ // label: row.j_areaname,
717
+ // value: row.j_areaid,
718
+ // data: row,
719
+ // id: row.id
720
+ // }
721
+ // })
722
+ // console.log('市区333', redata)
723
+ // this.streetslist = redata
724
+ // this.model.f_iscity = this.findbyid(this.streetslist, this.model.f_street_id).f_iscity
725
+ },
726
+ //初始化小区添加小区
727
+ async initareas(pconditon) {
728
+ // if(this.usertype){
729
+ // pconditon=pconditon+` and f_special='1' `
730
+ // }
731
+ // this.areaslist = []
732
+ // let HttpReset = new HttpResetClass()
733
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=100', {
734
+ // data: {
735
+ // items: '*',
736
+ // tablename: 'j_bjqarea',
737
+ // orderitem: 'id',
738
+ // condition: pconditon
739
+ // }
740
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
741
+ // let redata = []
742
+ // req.data.forEach((row) => {
743
+ // redata.push({
744
+ // label: row.j_areaname,
745
+ // value: row.j_areaid,
746
+ // data: row,
747
+ // id: row.id
748
+ // })
749
+ // })
750
+ // console.log('市区666', redata)
751
+ // if (redata.length>0){
752
+ // this.areaslist = redata
753
+ // }
754
+ },
755
+ //省/市/区变化
756
+ async pcdChange(val) {
757
+
758
+ // console.log("省/市/区变化", val)
759
+ // console.log("省/市/区变化", ` f_pcd_id ='${val}' `)
760
+ // if (val) {
761
+ // //那就把[小区,街道]重新组织一下
762
+ // await this.initstreets(` j_parentid ='${val}' `)
763
+ // if (this.model.f_street_id) {
764
+ // if (this.findbyid(this.streetslist, this.model.f_street_id)) {
765
+ // let pcd_id = this.findbyid(this.streetslist, this.model.f_street_id).f_pcd_id
766
+ // if (pcd_id != val) {
767
+ // this.model.f_street_id = ''
768
+ // }
769
+ // } else {
770
+ // this.model.f_street_id = ''
771
+ // }
772
+ //
773
+ // //那就把[小区,街道]重新组织一下
774
+ // if (this.model.f_street_id) {
775
+ // await this.initareas(` j_parentid ='${this.model.f_street_id}' `)
776
+ // if (this.model.f_residential_area_id) {
777
+ // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
778
+ // let pcd_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_pcd_id
779
+ // if (pcd_id != val) {
780
+ // this.model.f_residential_area_id = ''
781
+ // }
782
+ // } else {
783
+ // this.model.f_residential_area_id = ''
784
+ // }
785
+ //
786
+ // }
787
+ // }
788
+ // }
789
+ // }
790
+ // this.$resetValidation()
791
+ },
792
+ //街道变化
793
+ async streetChange(val) {
794
+ // console.log("街道变化", val)
795
+ // if (this.streetslist[0]) {
796
+ // var street = ''
797
+ // this.streetslist.forEach((item) => {
798
+ // if (item.id === val) {
799
+ // street = item.label
800
+ // }
801
+ // })
802
+ // this.model.f_address = street
803
+ // }
804
+ // if (val) {
805
+ // //那就把[小区]重新组织一下
806
+ // await this.initareas(` j_parentid ='${val}' `)
807
+ // if (this.model.f_residential_area_id) {
808
+ // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
809
+ // let street_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_street_id
810
+ // if (street_id != val) {
811
+ // this.model.f_residential_area_id = ''
812
+ // }
813
+ // } else {
814
+ // this.model.f_residential_area_id = ''
815
+ // }
816
+ //
817
+ // }
818
+ // }
819
+ // this.$resetValidation()
820
+ },
821
+ // 是否禁用按钮
822
+ disableButton () {
823
+ let flag = false
824
+ for (const field of this.data.fields) {
825
+ if (field.required && !field.value && !field.hidden && field.value !== 0) {
826
+ flag = true
827
+ }
828
+
829
+ // 任何选择框只要是否都不能提交
830
+ if (field.type === 'select' && field.value === '否' && field.value_no_disable) {
831
+ flag = true
832
+ }
833
+
834
+ if (field.type === 'checkbox' && field.required && field.value.length === 0) {
835
+ flag = true
836
+ }
837
+ }
838
+
839
+ //区域下拉框必选 流程模式为报警器报建
840
+ if ((this.data.f_apply_type === '报警器报建' || this.data.f_apply_type === '工商业报警器报建') && this.data.defname === '工程施工' && this.data.title === '工程施工' && this.data.f_sub_state !='完工'){
841
+ if (!flag){
842
+ if (this.areaData.sjvalue ==null || this.areaData.sjvalue.length ==0 || this.areaData.sqvalue == null || this.areaData.sqvalue.length ==0
843
+ || this.areaData.xianvalue == null || this.areaData.xianvalue.length == 0){
844
+ console.log("区域为空禁止提交:",this.areaData)
845
+ flag = true
846
+ }
847
+
848
+ if (this.templatlng.baidutemplat ==null || this.templatlng.baidutemplat.length ==0 || this.templatlng.baidutemplng == null || this.templatlng.baidutemplng.length ==0
849
+ || this.templatlng.gaodetemplat == null || this.templatlng.gaodetemplat.length == 0 || this.templatlng.gaodetemplng == null || this.templatlng.gaodetemplng.length == 0){
850
+ console.log("地图坐标为空禁止提交:",this.templatlng)
851
+ flag = true
852
+ }
853
+ }
854
+ }
855
+ this.disable_button = flag
856
+ },
857
+ // 失去焦点且值最终发生变化触发
858
+ async onchange (index) {
859
+ // 是否禁用按钮
860
+ this.disableButton()
861
+
862
+ if (!isEmpty(this.data.fields[index].value)) {
863
+ // 前缀、后缀
864
+ if (this.data.fields[index].prefix) {
865
+ this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
866
+ }
867
+ if (this.data.fields[index].suffix) {
868
+ this.data.fields[index].value = this.data.fields[index].value + this.data.fields[index].suffix
869
+ }
870
+ }
871
+
872
+ // data赋值
873
+ this.data[this.data.fields[index].field] = this.data.fields[index].value
874
+
875
+ if (this.data.fields[index].type === 'datepicker') {
876
+ this.check_datepicker(index)
877
+ }
878
+
879
+ if (this.data.fields[index].onchange) {
880
+ this.$dispatch(this.data.fields[index].onchange, index)
881
+ }
882
+ this.$dispatch('onchange', index)
883
+ },
884
+ // 失去焦点触发,无论值是否发生变化
885
+ onblur (index) {
886
+ this.disableButton()
887
+
888
+ if (this.data.fields[index].onblur) {
889
+ this.$dispatch(this.data.fields[index].onblur, index)
890
+ }
891
+
892
+ this.$dispatch('onblur', index)
893
+ },
894
+ oninput (index) {
895
+ // 是否禁用按钮
896
+ this.disableButton()
897
+
898
+ if (this.data.fields[index].oninput) {
899
+ this.$dispatch(this.data.fields[index].oninput, index)
900
+ }
901
+ this.$dispatch('oninput', index)
902
+ },
903
+ selectSearch(event, index) {
904
+ if (this.data.fields[index].selectSearch) {
905
+ this.$dispatch(this.data.fields[index].selectSearch, event[0], index)
906
+ }
907
+ this.$dispatch('selectSearch', event[0], index)
908
+ },
909
+ // 点击按钮组按钮
910
+ async click_but (button) {
911
+ //报警器区域地址
912
+ this.data.areaData = this.areaData
913
+ this.data.templatlng = this.templatlng
914
+
915
+ this.disable_button = true
916
+
917
+ this.data.fields.forEach(item => {
918
+ this.data[item.field] = item.value
919
+ })
920
+
921
+ this.data.button = button
922
+
923
+ if (button.button_fields && button.button_fields.length > 0) {
924
+ this.showButModal = true
925
+ return
926
+ }
927
+
928
+ if (this.data.button.event) {
929
+ this.$dispatch(this.data.button.event)
930
+ } else {
931
+ this.$dispatch('button')
932
+ }
933
+
934
+ },
935
+ confirmModal () {
936
+ this.closeModal()
937
+
938
+ this.data.button.button_fields.forEach(item => {
939
+ this.data.button[item.field] = item.value
940
+ })
941
+
942
+ if (this.data.button.event) {
943
+ this.$dispatch(this.data.button.event)
944
+ } else {
945
+ this.$dispatch('button')
946
+ }
947
+ },
948
+ closeModal1(){
949
+ this.showAudit=false
950
+ this.showChecks=false
951
+ },
952
+ // 关闭模态框
953
+ closeModal () {
954
+ this.showButModal = false
955
+ this.disable_modal_button = false
956
+ },
957
+ onbutchange (index) {
958
+ // 是否禁用按钮
959
+ this.disableModalButton()
960
+
961
+ if (this.data.button.button_fields[index].onchange) {
962
+ this.$dispatch(this.data.button.button_fields[index].onchange, index)
963
+ } else {
964
+ this.$dispatch('onbutchange', index)
965
+ }
966
+
967
+ },
968
+ onbutblur (index) {
969
+ this.disableModalButton()
970
+
971
+ if (this.data.button.button_fields[index].onblur) {
972
+ this.$dispatch(this.data.button.button_fields[index].onblur, index)
973
+ } else {
974
+ this.$dispatch('onbutblur', index)
975
+ }
976
+ },
977
+ onbutinput (index) {
978
+ // 是否禁用按钮
979
+ this.disableModalButton()
980
+
981
+ if (this.data.button.button_fields[index].oninput) {
982
+ this.$dispatch(this.data.button.button_fields[index].oninput, index)
983
+ } else {
984
+ this.$dispatch('onbutinput', index)
985
+ }
986
+ },
987
+ disableModalButton () {
988
+ let flag = false
989
+
990
+
991
+ for (const item of this.data.button.button_fields) {
992
+ if (item.required && !item.value) {
993
+ if (item.value === 0) {
994
+ flag = false
995
+ } else {
996
+ flag = true
997
+ }
998
+ }
999
+ }
1000
+
1001
+ this.disable_modal_button = flag
1002
+ },
1003
+ check_datepicker (index) {
1004
+ // 时间格式检测
1005
+ if (!isEmpty(this.data.fields[index].value)) {
1006
+
1007
+ let dateReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
1008
+ let timeReg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
1009
+ let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
1010
+ if (this.data.fields[index].format) {
1011
+ if (this.data.fields[index].format === 'yyyy-MM-dd') {
1012
+ if (!dateReg.test(this.data.fields[index].value)) {
1013
+ this.data.fields[index].value = ''
1014
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
1015
+ }
1016
+ }
1017
+ if (this.data.fields[index].format === 'HH:mm:ss') {
1018
+ if (!timeReg.test(this.data.fields[index].value)) {
1019
+ this.data.fields[index].value = ''
1020
+ this.$showAlert(this.data.fields[index].label + '格式错误如:00:00:00', 'warning', 2000)
1021
+ }
1022
+ }
1023
+ if (this.data.fields[index].format === 'yyyy-MM-dd HH:mm:ss') {
1024
+ if (!datetimeReg.test(this.data.fields[index].value)) {
1025
+ this.data.fields[index].value = ''
1026
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01 00:00:00', 'warning', 2000)
1027
+ }
1028
+ }
1029
+ } else {
1030
+ if (!dateReg.test(this.data.fields[index].value)) {
1031
+ this.data.fields[index].value = ''
1032
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
1033
+ }
1034
+ }
1035
+ }
1036
+ }
1037
+ },
1038
+ events: {
1039
+
1040
+ }
1041
+ }
1042
+ </script>
1043
+ <style>
1044
+ .datepicker{
1045
+ width: 100%!important;
1046
+ }
1047
+ .datepicker-input{
1048
+ background-color: #ffffff!important;
1049
+ width: 100%!important;
1050
+ }
1051
+ .datepicker-input:disabled{
1052
+ border: 1px solid #DDD!important;
1053
+ color: #ACA899!important;
1054
+ width: 100%!important;
1055
+ }
1056
+ </style>
1057
+ <style scoped>
1058
+ th{
1059
+ font-size: 15px !important;
1060
+ text-align: center !important;
1061
+ background-color: #dfedfb!important;
1062
+ color: #666666 !important;
1063
+ font-family: PINGFANG-BOLD !important;
1064
+ font-weight: normal!important;
1065
+ }
1066
+ /*清除model中的浮动*/
1067
+ .clearfix:after,.clearfix:before{
1068
+ display: table;
1069
+ }
1070
+ .clearfix:after{
1071
+ clear: both;
1072
+ }
1073
+
1074
+ .input_view{
1075
+ padding: 8px;
1076
+ background-color: #ffffff;
1077
+ border-radius: 2px;
1078
+ border: solid 1px #c7c7c7!important;
1079
+ color: #333333!important;
1080
+ font-size: 15px!important;
1081
+ }
1082
+
1083
+ .input_view[readonly]{
1084
+ border: 1px solid #DDD!important;
1085
+ color:#ACA899!important;
1086
+ }
1087
+ .input_view:disabled{
1088
+ border: 1px solid #DDD!important;
1089
+ color:#ACA899!important;
1090
+ }
1091
+
1092
+ .control-label-justify {
1093
+ display: inline-block;
1094
+ vertical-align: top;
1095
+ width: 150px;
1096
+ text-align: justify;
1097
+ font-family: PingFang-SC-Bold;
1098
+ }
1099
+
1100
+ .control-label-justify::after {
1101
+ content: "";
1102
+ display: inline-block;
1103
+ width: 100%;
1104
+ overflow: hidden;
1105
+ height: 0;
1106
+ }
1107
+
1108
+ input::-webkit-outer-spin-button,
1109
+ input::-webkit-inner-spin-button {
1110
+ -webkit-appearance: none;
1111
+ }
1112
+
1113
+ input[type="number"] {
1114
+ -moz-appearance: textfield;
1115
+ }
1116
+
1117
+ </style>