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