apply-clients 3.4.3 → 3.4.5

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