apply-clients 4.1.5 → 4.1.7-weinan

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 (39) hide show
  1. package/index.html +30 -30
  2. package/package.json +7 -5
  3. package/src/apply.js +15 -1
  4. package/src/applyAndroid.js +41 -39
  5. package/src/components/app_apply/AppChargeManagement.vue +584 -0
  6. package/src/components/app_apply/ApplyInfo.vue +56 -56
  7. package/src/components/app_apply/ApplyToDoList.vue +148 -165
  8. package/src/components/app_apply/PlaceControler.vue +258 -258
  9. package/src/components/app_apply/ServiceControl.vue +292 -267
  10. package/src/components/app_apply/ServiceView.vue +361 -355
  11. package/src/components/product/ApplyCharge/ApplyChargeList.vue +4 -4
  12. package/src/components/product/Function/InstallInfoSelect.vue +40 -27
  13. package/src/components/product/Function/StopApplyCrrdList.vue +1 -1
  14. package/src/components/product/Function/functions/StopInstall.vue +7 -1
  15. package/src/components/product/Process/ExplorationSelect.vue +56 -38
  16. package/src/components/product/Process/Processes/InstallationDetails.vue +276 -246
  17. package/src/components/product/Process/Processes/UserFireInfo.vue +409 -0
  18. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +1555 -222
  19. package/src/components/product/Process/Processes/addressAndUserinfoManagementPro.vue +1221 -0
  20. package/src/components/product/Process/Processes/chargeManagement.vue +47 -53
  21. package/src/components/product/Process/Processes/devicesDetails.vue +834 -0
  22. package/src/components/product/Process/Processes/materialshoufei.vue +182 -0
  23. package/src/components/product/Process/Processes/printCharge.vue +4 -4
  24. package/src/components/product/Process/Processes/recordcancel.vue +50 -50
  25. package/src/components/product/Process/Processes/selectUserinfo.vue +199 -0
  26. package/src/components/product/Process/Processes/splitMaterial.vue +358 -0
  27. package/src/components/product/Process/Service/ServiceControl.vue +978 -587
  28. package/src/components/product/Process/ShowBackReason.vue +1 -0
  29. package/src/components/product/ServiceView.vue +802 -779
  30. package/src/components/product/Stop/StopApply.vue +101 -0
  31. package/src/components/product/Stop/StopApplyList.vue +257 -0
  32. package/src/components/product/Supervisory/SupervisoryControl.vue +7 -4
  33. package/src/components/product/Supervisory/SupervisoryList.vue +40 -27
  34. package/src/components/product/Supervisory/SupervisoryhCart.vue +0 -7
  35. package/src/components/product/Test.vue +8 -4
  36. package/src/components/product/VueUtils/ApplyUpload.vue +4 -4
  37. package/src/main.js +25 -23
  38. package/static/images/lefticon//347/237/251/345/275/2421183.png +0 -0
  39. package/dist.rar +0 -0
@@ -1,355 +1,361 @@
1
- <template>
2
- <div class="auto select-overspread">
3
- <div v-if="data.back_reason" class="panel panel-info">
4
- <span style="color: red"> 请注意被退回原因为:{{data.back_reason}}</span>
5
- </div>
6
- <validator name="v">
7
- <form class="form-horizontal">
8
- <div class="col-sm-11 form-group">
9
- <div v-for="(index,item) in data.fields">
10
- <!--input-->
11
- <div v-if="item.type==='input'" v-show="!item.hidden" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
12
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
13
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
14
- <input class="form-control"
15
- :type="item.type"
16
- v-model="data.fields[index].value"
17
- :placeholder="item.placeholder"
18
- :value="data.fields[index].value"
19
- :readonly="item.readonly"
20
- :disable="item.disable"
21
- @change="disabled_check(data.fields[index].required,data.fields[index].value)"
22
- @blur ="check_disable"
23
- />
24
- </div>
25
- </div>
26
- <!--时间datepicker-->
27
- <div v-if="item.type==='datepicker'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-xs-12 form-group']">
28
- <label style="margin-top: 0.7em" :class="item.label_bootstraped?item.label_bootstraped + '':'col-xs-12'">{{item.label}}:</label>
29
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-xs-12'">
30
- <datepicker
31
- :placeholder="item.placeholder"
32
- :value.sync="data.fields[index].value"
33
- :format="'yyyy-MM-dd HH:mm:ss'"
34
- v-model="data.fields[index].value"
35
- :readonly="item.readonly"
36
- :disabled="item.disabled"
37
- @blur ="check_disable"
38
- :show-reset-button="reset">
39
- </datepicker>
40
- </div>
41
- </div>
42
-
43
-
44
- <!--textarea-->
45
- <div v-if="item.type==='textarea'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
46
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
47
- <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
48
- <textarea
49
- :readonly="item.readonly"
50
- :disabled="item.disabled"
51
- class="form-control"
52
- :rows="item.rows"
53
- v-model="data.fields[index].value"
54
- @change="disabled_check(data.fields[index].required,data.fields[index].value)"
55
- @blur ="check_disable"
56
- >
57
- </textarea>
58
- </div>
59
- </div>
60
-
61
- <!--radio-->
62
- <div v-if="item.type==='radio'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
63
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
64
- <div class="col-xs-12">
65
- <div :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-xs-5': 'col-xs-3'" v-for="(index2,row) in item.items">
66
- <label style="margin-top: 0.7em" for="row.label" :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{row.label}}</label>
67
- <input @blur ="check_disable" :class="item.items.length%2 == 0?'col-xs-1': 'col-xs-1'" :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio" :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value" v-model="data.fields[index].value">
68
- </div>
69
- </div>
70
- </div>
71
-
72
- <!--select-->
73
- <div v-if="item.type==='select'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
74
- <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
75
- <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur ="check_disable" @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)" :readonly="item.readonly" :disable="item.disabled" :value.sync="data.fields[index].value" v-model="data.fields[index].value"
76
- :options='item.options' :valueSingle="true"></input-select>
77
-
78
- </div>
79
-
80
- <!--checkbox-->
81
- <div v-if="item.type==='checkbox'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
82
- <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
83
- <div style="margin-top: 0.7em" :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'" v-for="(index2,row) in item.items">
84
- <label class="font-size form-group col-sm-6">{{row.label}}</label>
85
- <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6" :id="row.label" v-model="data.fields[index].items[index2].value">
86
- </div>
87
- </div>
88
-
89
-
90
- </div>
91
- </div>
92
- <div class="col-sm-11 form-group">
93
- <div class="form-group col-sm-6">
94
- <label class=" col-sm-4 control-label">分公司:</label>
95
- <div class="col-sm-5">
96
- <input class="form-control" type="text" v-model="model.f_filiale" disabled>
97
- </div>
98
- </div>
99
- <div class="col-sm-6 form-group">
100
- <label class="control-label col-sm-6">部门:</label>
101
- <div class="col-sm-5">
102
- <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
103
- </div>
104
- </div>
105
- </div>
106
- <div class="col-sm-11 form-group">
107
- <div class="col-sm-6 form-group">
108
- <label class="control-label col-sm-4">操作日期:</label>
109
- <div class="col-sm-5">
110
- <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
111
- </div>
112
- </div>
113
- <div class="col-sm-6 form-group">
114
- <label class="control-label col-sm-6">操作人:</label>
115
- <div class="col-sm-5">
116
- <input type="text" class="form-control" disabled v-model="model.f_operator"/>
117
- </div>
118
- </div>
119
- </div>
120
-
121
- </form>
122
- </validator>
123
- <div class="from-group col-xs-12">
124
- <center>
125
- <div v-for="(index,button) in data.buttons" :class="[data.buttons.length==4?'col-xs-3':'',data.buttons.length==3?'col-xs-4':'',data.buttons.length==2?'col-xs-6':'']">
126
- <!-- 按钮组 -->
127
- <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
128
- type="button" @click="clicked(index,button)" style="border-radius:5px; "
129
- :class="[(button.button_name==='提交'||button.button_name==='下发')&&disable_button?'btn btn-default':'btn btn-primary',data.buttons.length==4 ? 'col-xs-2 col-xs-offset-1':'',data.buttons.length==3 ? 'col-xs-2 col-xs-offset-2':'',data.buttons.length==2 ? 'col-xs-4 col-xs-offset-2':'']">
130
- {{button.button_name}}
131
- </button>
132
- </div>
133
- </center>
134
- </div>
135
- <!-- 模态框 -->
136
- <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
137
- <header slot="modal-header" class="modal-header">
138
- <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
139
- <h4 class="modal-title">{{model.button.button_name}}</h4>
140
- </header>
141
- <article slot="modal-body" class="modal-body">
142
- <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
143
- <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
144
- <div class="col-sm-7">
145
- <!--select-->
146
- <input-select v-if="button_field.type=='select'" :value.sync="data.buttons[model.button.button_index].button_fields[index].value" v-model="data.buttons[model.button.button_index].button_fields[index].value"
147
- :options='button_field.options'></input-select>
148
- <!-- input -->
149
- <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
150
- </div>
151
- </div>
152
- </article>
153
- <footer slot="modal-footer" style="border-top:none" class="modal-footer">
154
- <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
155
- </footer>
156
- </modal>
157
- </div>
158
- </template>
159
- <script>
160
-
161
- // Date格式化
162
- Date.prototype.Format = function (fmt) {
163
- var o = {
164
- "M+": this.getMonth() + 1, //月份
165
- "d+": this.getDate(), //日
166
- "H+": this.getHours(), //小时
167
- "m+": this.getMinutes(), //分
168
- "s+": this.getSeconds(), //秒
169
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
170
- "S": this.getMilliseconds() //毫秒
171
- };
172
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
173
- for (var k in o)
174
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
175
- return fmt;
176
- }
177
-
178
- import Vue from 'vue'
179
-
180
- export default {
181
- title: '报建业务通用组件',
182
- props: ['data'],
183
- data () {
184
- return {
185
- model:{
186
- button:{
187
- button_name:null,
188
- button_index:null
189
- },
190
- f_filiale:null,
191
- f_parentname:null,
192
- f_operate_date:null,
193
- f_operator:null
194
- },
195
- data:null,
196
- showmodal:false,
197
- disable_button:true
198
- }
199
- },
200
- created(){
201
- // 初始化数据
202
- this.initializtion()
203
- },
204
- methods: {
205
- // 初始化数据
206
- initializtion(){
207
- console.log('进入serviceview的initializtion方法')
208
- // let temp = this.data
209
- // let temp = JSON.parse(JSON.stringify(this.data))
210
- // this.data = temp
211
- // datepicker 没有值给当时值
212
- if(this.data.fields){
213
- for(let i=0;i<this.data.fields.length;i++){
214
- if(this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
215
- this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
216
- }
217
- }
218
- }
219
-
220
- if(this.data.filiale){
221
- this.model.f_filiale = this.data.filiale
222
- }else{
223
- this.model.f_filiale = Vue.user.f_parentname
224
- }
225
- if(this.data.f_parentname){
226
- this.model.f_parentname = this.data.f_parentname
227
- }else{
228
- this.model.f_parentname = Vue.user.f_parentname
229
- }
230
- if(this.data.operate_date){
231
- this.model.f_operate_date = this.data.operate_date
232
- }else{
233
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
234
- }
235
- if(this.data.operator){
236
- this.model.f_operator = this.data.operator
237
- }else{
238
- this.model.f_operator = Vue.user.name
239
- }
240
- },
241
- // 模态框点击确定按钮
242
- acknowledge(){
243
- for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
244
- this.model.button.button_fields[this.data.buttons[this.model.button.button_index].button_fields[i].field] = this.data.buttons[this.model.button.button_index].button_fields[i].value
245
- }
246
- this.showmodal=false
247
- this.$dispatch('button',this.model)
248
- },
249
- // 关闭模态框
250
- closemodal(){
251
- this.showmodal=false
252
- },
253
- // 点击按钮
254
- clicked(index,button){
255
- console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
256
- // 组织model.fields数据
257
- let modeldatas = {}
258
- for(let i=0;i<this.data.fields.length;i++){
259
- // checkbox特殊处理
260
- if(this.data.fields[i].type==='checkbox'){
261
- for(let j=0;j<this.data.fields[i].items.length;j++){
262
- modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
263
- }
264
- }else{
265
- modeldatas[this.data.fields[i].field]=this.data.fields[i].value
266
- }
267
- }
268
- modeldatas.f_process_id = this.data.f_process_id
269
- modeldatas.f_filiale = this.model.f_filiale
270
- modeldatas.f_parentname = this.model.f_parentname
271
- modeldatas.f_operator = this.model.f_operator
272
- modeldatas.f_operate_date = this.model.f_operate_date
273
- this.model = null
274
- this.model = modeldatas
275
- // 初始化model.button数据
276
- let buttondatas = {
277
- button_fields:{}
278
- }
279
- buttondatas.button_name=button.button_name
280
- buttondatas.button_index=index
281
- if(button.button_fields){
282
- for(let i=0;i<button.button_fields.length;i++){
283
- buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
284
- }
285
- }
286
- this.model.button =buttondatas
287
-
288
- if(button.button_name==='退回'){
289
- this.showmodal=true
290
- }else if(button.button_name==='下发'){
291
- this.showmodal=true
292
- }else{
293
- this.$dispatch('button',this.model)
294
- }
295
- },
296
- // 级联操作预留
297
- select_change(index){
298
- this.$dispatch('select_cascade',index)
299
- },
300
- // 检测按钮的disable
301
- disabled_check(required,value){
302
- if(required&&value){
303
- this.disable_button = false
304
-
305
- let fields = this.data.fields
306
- let flag = false
307
- for(let i = 0;i<fields.length;i++){
308
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
309
- flag = true
310
- }
311
- }
312
- this.disable_button = flag
313
- }
314
- }
315
- },
316
- watch:{
317
- 'data.operate_date'(){
318
- if(this.data.filiale){
319
- this.model.f_filiale = this.data.filiale
320
- }else{
321
- this.model.f_filiale = Vue.user.f_parentname
322
- }
323
- if(this.data.f_parentname){
324
- this.model.f_parentname = this.data.f_parentname
325
- }else{
326
- this.model.f_parentname = Vue.user.f_parentname
327
- }
328
- if(this.data.operate_date){
329
- this.model.f_operate_date = this.data.operate_date
330
- }else{
331
- this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
332
- }
333
- if(this.data.operator){
334
- this.model.f_operator = this.data.operator
335
- }else{
336
- this.model.f_operator = Vue.user.name
337
- }
338
- },
339
- deep:true
340
- },
341
- computed: {
342
- // 输入后按钮检测
343
- check_disable: function (){
344
- let fields = this.data.fields
345
- let flag = false
346
- for(let i = 0;i<fields.length;i++){
347
- if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
348
- flag = true
349
- }
350
- }
351
- this.disable_button = flag
352
- }
353
- }
354
- }
355
- </script>
1
+ <template>
2
+ <div class="auto select-overspread">
3
+ <div v-if="data.back_reason" class="panel panel-info">
4
+ <span style="color: red"> 请注意被退回原因为:{{data.back_reason}}</span>
5
+ </div>
6
+ <validator name="v">
7
+ <form class="form-horizontal">
8
+ <div class="col-sm-11 form-group">
9
+ <div v-for="(index,item) in data.fields">
10
+ <!--input-->
11
+ <div v-if="item.type==='input'" v-show="!item.hidden" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
12
+ <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
13
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'">
14
+ <input class="form-control"
15
+ :type="item.type"
16
+ v-model="data.fields[index].value"
17
+ :placeholder="item.placeholder"
18
+ :value="data.fields[index].value"
19
+ :readonly="item.readonly"
20
+ :disable="item.disable"
21
+ @change="disabled_check(data.fields[index].required,data.fields[index].value)"
22
+ @blur ="check_disable"
23
+ />
24
+ </div>
25
+ </div>
26
+ <!--时间datepicker-->
27
+ <div v-if="item.type==='datepicker'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-xs-12 form-group']">
28
+ <label style="margin-top: 0.7em" :class="item.label_bootstraped?item.label_bootstraped + '':'col-xs-12'">{{item.label}}:</label>
29
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-xs-12'">
30
+ <datepicker
31
+ :placeholder="item.placeholder"
32
+ :value.sync="data.fields[index].value"
33
+ :format="'yyyy-MM-dd HH:mm:ss'"
34
+ v-model="data.fields[index].value"
35
+ :readonly="item.readonly"
36
+ :disabled="item.disabled"
37
+ @blur ="check_disable"
38
+ :show-reset-button="reset">
39
+ </datepicker>
40
+ </div>
41
+ </div>
42
+
43
+
44
+ <!--textarea-->
45
+ <div v-if="item.type==='textarea'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
46
+ <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
47
+ <div :class="item.value_bootstraped?item.value_bootstraped:'col-sm-10'">
48
+ <textarea
49
+ :readonly="item.readonly"
50
+ :disabled="item.disabled"
51
+ class="form-control"
52
+ :rows="item.rows"
53
+ v-model="data.fields[index].value"
54
+ @change="disabled_check(data.fields[index].required,data.fields[index].value)"
55
+ @blur ="check_disable"
56
+ >
57
+ </textarea>
58
+ </div>
59
+ </div>
60
+
61
+ <!--radio-->
62
+ <div v-if="item.type==='radio'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
63
+ <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
64
+ <div class="col-xs-12">
65
+ <div :class="item.value_bootstraped?item.value_bootstraped:item.items.length%2 == 0?'col-xs-5': 'col-xs-3'" v-for="(index2,row) in item.items">
66
+ <label style="margin-top: 0.7em" for="row.label" :class="item.items.length%2 == 0?'col-xs-4': 'col-xs-2'">{{row.label}}</label>
67
+ <input @blur ="check_disable" :class="item.items.length%2 == 0?'col-xs-1': 'col-xs-1'" :readonly="item.readonly" :disabled="item.disabled" style="margin-top: 10px" type="radio" :name="index" :id="row.label" v-bind:value="data.fields[index].items[index2].value" v-model="data.fields[index].value">
68
+ </div>
69
+ </div>
70
+ </div>
71
+
72
+ <!--select-->
73
+ <div v-if="item.type==='select'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-4 form-group']">
74
+ <label :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-6'">{{item.label}}:</label>
75
+ <input-select :class="item.value_bootstraped?item.value_bootstraped:'col-sm-6'" @blur ="check_disable" @change="select_change(index),disabled_check(data.fields[index].required,data.fields[index].value)" :readonly="item.readonly" :disable="item.disabled" :value.sync="data.fields[index].value" v-model="data.fields[index].value"
76
+ :options='item.options' :valueSingle="true"></input-select>
77
+
78
+ </div>
79
+
80
+ <!--checkbox-->
81
+ <div v-if="item.type==='checkbox'" :class="[data.fields[index].required&&!(data.fields[index].value) ? 'has-error' : '',data.fields[index].bootstraped?data.fields[index].bootstraped+' form-group':'col-sm-12 form-group']">
82
+ <label v-if="item.label" :class="item.label_bootstraped?item.label_bootstraped+' control-label':'control-label col-sm-2'">{{item.label}}:</label>
83
+ <div style="margin-top: 0.7em" :class="item.value_bootstraped?item.value_bootstraped:'control-label col-sm-2'" v-for="(index2,row) in item.items">
84
+ <label class="font-size form-group col-sm-6">{{row.label}}</label>
85
+ <input :readonly="item.readonly" :disabled="item.disabled" type="checkbox" class="col-sm-6" :id="row.label" v-model="data.fields[index].items[index2].value">
86
+ </div>
87
+ </div>
88
+ </div>
89
+ <div class="col-sm-12 col-xs-12" id="test11">
90
+ <accordion one-at-a-time="true">
91
+ <panel v-for="(i,item) in data.components" :header="item.title" :is-open="true" type="primary" v-if="item.device === 'app' || !item.device">
92
+ <component :is="item.name" :selectdata="data" :mark="item.mark"></component>
93
+ </panel>
94
+ </accordion>
95
+ </div>
96
+
97
+ </div>
98
+ <div class="col-sm-11 form-group">
99
+ <div class="form-group col-sm-6">
100
+ <label class=" col-sm-4 control-label">分公司:</label>
101
+ <div class="col-sm-5">
102
+ <input class="form-control" type="text" v-model="model.f_filiale" disabled>
103
+ </div>
104
+ </div>
105
+ <div class="col-sm-6 form-group">
106
+ <label class="control-label col-sm-6">部门:</label>
107
+ <div class="col-sm-5">
108
+ <input type="text" class="form-control" disabled v-model="model.f_parentname"/>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ <div class="col-sm-11 form-group">
113
+ <div class="col-sm-6 form-group">
114
+ <label class="control-label col-sm-4">操作日期:</label>
115
+ <div class="col-sm-5">
116
+ <input type="text" class="form-control" disabled v-model="model.f_operate_date"/>
117
+ </div>
118
+ </div>
119
+ <div class="col-sm-6 form-group">
120
+ <label class="control-label col-sm-6">操作人:</label>
121
+ <div class="col-sm-5">
122
+ <input type="text" class="form-control" disabled v-model="model.f_operator"/>
123
+ </div>
124
+ </div>
125
+ </div>
126
+
127
+ </form>
128
+ </validator>
129
+ <div class="from-group col-xs-12">
130
+ <center>
131
+ <div v-for="(index,button) in data.buttons" :class="[data.buttons.length==4?'col-xs-3':'',data.buttons.length==3?'col-xs-4':'',data.buttons.length==2?'col-xs-6':'']">
132
+ <!-- 按钮组 -->
133
+ <button :disabled="(button.button_name==='提交'||button.button_name==='下发')&&disable_button"
134
+ type="button" @click="clicked(index,button)" style="border-radius:5px; "
135
+ :class="[(button.button_name==='提交'||button.button_name==='下发')&&disable_button?'btn btn-default':'btn btn-primary',data.buttons.length==4 ? 'col-xs-2 col-xs-offset-1':'',data.buttons.length==3 ? 'col-xs-2 col-xs-offset-2':'',data.buttons.length==2 ? 'col-xs-4 col-xs-offset-2':'']">
136
+ {{button.button_name}}
137
+ </button>
138
+ </div>
139
+ </center>
140
+ </div>
141
+ <!-- 模态框 -->
142
+ <modal v-if="showmodal" :show.sync="showmodal" v-ref:modal backdrop="false">
143
+ <header slot="modal-header" class="modal-header">
144
+ <button type="button" class="close" @click="closemodal"><span>&times;</span></button>
145
+ <h4 class="modal-title">{{model.button.button_name}}</h4>
146
+ </header>
147
+ <article slot="modal-body" class="modal-body">
148
+ <div class="col-sm-12" v-for="(index,button_field) in data.buttons[model.button.button_index].button_fields">
149
+ <label class="control-label col-sm-3" style="margin-top: 10px">{{button_field.label}}:</label>
150
+ <div class="col-sm-7">
151
+ <!--select-->
152
+ <input-select v-if="button_field.type=='select'" :value.sync="data.buttons[model.button.button_index].button_fields[index].value" v-model="data.buttons[model.button.button_index].button_fields[index].value"
153
+ :options='button_field.options'></input-select>
154
+ <!-- input -->
155
+ <input v-else type="text" class="form-control" v-model="data.buttons[model.button.button_index].button_fields[index].value"/>
156
+ </div>
157
+ </div>
158
+ </article>
159
+ <footer slot="modal-footer" style="border-top:none" class="modal-footer">
160
+ <button v-show="showmodal" type="button" class="btn btn-primary" @click='acknowledge'>确认</button>
161
+ </footer>
162
+ </modal>
163
+ </div>
164
+ </template>
165
+ <script>
166
+
167
+ // Date格式化
168
+ Date.prototype.Format = function (fmt) {
169
+ var o = {
170
+ "M+": this.getMonth() + 1, //月份
171
+ "d+": this.getDate(), //日
172
+ "H+": this.getHours(), //小时
173
+ "m+": this.getMinutes(), //分
174
+ "s+": this.getSeconds(), //秒
175
+ "q+": Math.floor((this.getMonth() + 3) / 3), //季度
176
+ "S": this.getMilliseconds() //毫秒
177
+ };
178
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
179
+ for (var k in o)
180
+ if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
181
+ return fmt;
182
+ }
183
+
184
+ import Vue from 'vue'
185
+
186
+ export default {
187
+ title: '报建业务通用组件',
188
+ props: ['data'],
189
+ data () {
190
+ return {
191
+ model:{
192
+ button:{
193
+ button_name:null,
194
+ button_index:null
195
+ },
196
+ f_filiale:null,
197
+ f_parentname:null,
198
+ f_operate_date:null,
199
+ f_operator:null
200
+ },
201
+ data:null,
202
+ showmodal:false,
203
+ disable_button:true
204
+ }
205
+ },
206
+ created(){
207
+ // 初始化数据
208
+ this.initializtion()
209
+ },
210
+ methods: {
211
+ // 初始化数据
212
+ initializtion(){
213
+ console.log('进入serviceview的initializtion方法')
214
+ // let temp = this.data
215
+ // let temp = JSON.parse(JSON.stringify(this.data))
216
+ // this.data = temp
217
+ // datepicker 没有值给当时值
218
+ if(this.data.fields){
219
+ for(let i=0;i<this.data.fields.length;i++){
220
+ if(this.data.fields[i].type==='datepicker'&&!this.data.fields[i].value){
221
+ this.data.fields[i].value=new Date().Format("yyyy-MM-dd HH:mm:ss")
222
+ }
223
+ }
224
+ }
225
+
226
+ if(this.data.filiale){
227
+ this.model.f_filiale = this.data.filiale
228
+ }else{
229
+ this.model.f_filiale = Vue.user.f_parentname
230
+ }
231
+ if(this.data.f_parentname){
232
+ this.model.f_parentname = this.data.f_parentname
233
+ }else{
234
+ this.model.f_parentname = Vue.user.f_parentname
235
+ }
236
+ if(this.data.operate_date){
237
+ this.model.f_operate_date = this.data.operate_date
238
+ }else{
239
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
240
+ }
241
+ if(this.data.operator){
242
+ this.model.f_operator = this.data.operator
243
+ }else{
244
+ this.model.f_operator = Vue.user.name
245
+ }
246
+ },
247
+ // 模态框点击确定按钮
248
+ acknowledge(){
249
+ for(let i=0;i<this.data.buttons[this.model.button.button_index].button_fields.length;i++){
250
+ this.model.button.button_fields[this.data.buttons[this.model.button.button_index].button_fields[i].field] = this.data.buttons[this.model.button.button_index].button_fields[i].value
251
+ }
252
+ this.showmodal=false
253
+ this.$dispatch('button',this.model)
254
+ },
255
+ // 关闭模态框
256
+ closemodal(){
257
+ this.showmodal=false
258
+ },
259
+ // 点击按钮
260
+ clicked(index,button){
261
+ console.log(`点击了按钮index:${index}+button:${JSON.stringify(button)}`);
262
+ // 组织model.fields数据
263
+ let modeldatas = {}
264
+ for(let i=0;i<this.data.fields.length;i++){
265
+ // checkbox特殊处理
266
+ if(this.data.fields[i].type==='checkbox'){
267
+ for(let j=0;j<this.data.fields[i].items.length;j++){
268
+ modeldatas[this.data.fields[i].items[j].field]=this.data.fields[i].items[j].value
269
+ }
270
+ }else{
271
+ modeldatas[this.data.fields[i].field]=this.data.fields[i].value
272
+ }
273
+ }
274
+ modeldatas.f_process_id = this.data.f_process_id
275
+ modeldatas.f_filiale = this.model.f_filiale
276
+ modeldatas.f_parentname = this.model.f_parentname
277
+ modeldatas.f_operator = this.model.f_operator
278
+ modeldatas.f_operate_date = this.model.f_operate_date
279
+ this.model = null
280
+ this.model = modeldatas
281
+ // 初始化model.button数据
282
+ let buttondatas = {
283
+ button_fields:{}
284
+ }
285
+ buttondatas.button_name=button.button_name
286
+ buttondatas.button_index=index
287
+ if(button.button_fields){
288
+ for(let i=0;i<button.button_fields.length;i++){
289
+ buttondatas.button_fields[button.button_fields[i].field]=button.button_fields[i].value
290
+ }
291
+ }
292
+ this.model.button =buttondatas
293
+
294
+ if(button.button_name==='退回'){
295
+ this.showmodal=true
296
+ }else if(button.button_name==='下发'){
297
+ this.showmodal=true
298
+ }else{
299
+ this.$dispatch('button',this.model)
300
+ }
301
+ },
302
+ // 级联操作预留
303
+ select_change(index){
304
+ this.$dispatch('select_cascade',index)
305
+ },
306
+ // 检测按钮的disable
307
+ disabled_check(required,value){
308
+ if(required&&value){
309
+ this.disable_button = false
310
+
311
+ let fields = this.data.fields
312
+ let flag = false
313
+ for(let i = 0;i<fields.length;i++){
314
+ if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
315
+ flag = true
316
+ }
317
+ }
318
+ this.disable_button = flag
319
+ }
320
+ }
321
+ },
322
+ watch:{
323
+ 'data.operate_date'(){
324
+ if(this.data.filiale){
325
+ this.model.f_filiale = this.data.filiale
326
+ }else{
327
+ this.model.f_filiale = Vue.user.f_parentname
328
+ }
329
+ if(this.data.f_parentname){
330
+ this.model.f_parentname = this.data.f_parentname
331
+ }else{
332
+ this.model.f_parentname = Vue.user.f_parentname
333
+ }
334
+ if(this.data.operate_date){
335
+ this.model.f_operate_date = this.data.operate_date
336
+ }else{
337
+ this.model.f_operate_date = new Date().Format("yyyy-MM-dd HH:mm:ss")
338
+ }
339
+ if(this.data.operator){
340
+ this.model.f_operator = this.data.operator
341
+ }else{
342
+ this.model.f_operator = Vue.user.name
343
+ }
344
+ },
345
+ deep:true
346
+ },
347
+ computed: {
348
+ // 输入后按钮检测
349
+ check_disable: function (){
350
+ let fields = this.data.fields
351
+ let flag = false
352
+ for(let i = 0;i<fields.length;i++){
353
+ if(fields[i].type!=='checkbox'&&fields[i].required&&!fields[i].value){
354
+ flag = true
355
+ }
356
+ }
357
+ this.disable_button = flag
358
+ }
359
+ }
360
+ }
361
+ </script>