apply-clients 3.3.216 → 3.4.1

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 (96) hide show
  1. package/android.html +23 -23
  2. package/index.html +33 -33
  3. package/package.json +3 -3
  4. package/src/AndroidApp.vue +35 -30
  5. package/src/App.vue +20 -20
  6. package/src/android.js +21 -21
  7. package/src/apply.js +81 -90
  8. package/src/applyAndroid.js +1 -23
  9. package/src/components/android/AppOnetomany.vue +301 -285
  10. package/src/components/android/AppServiceView.vue +566 -570
  11. package/src/components/android/AppSign.vue +142 -142
  12. package/src/components/android/AppTakePic.vue +143 -144
  13. package/src/components/android/Process/AppExplorationUser.vue +320 -270
  14. package/src/components/android/Process/AppServiceControl.vue +757 -686
  15. package/src/components/android/Process/Processes/AppInstallationDetails.vue +456 -466
  16. package/src/components/android/ProgressReport/ProgressReportDetail.vue +64 -0
  17. package/src/components/android/ProgressReport/ProgressReportList.vue +209 -0
  18. package/src/components/android/Supervisory/AppProcessSupervisory.vue +73 -152
  19. package/src/components/android/Supervisory/AppSupervisoryCart.vue +121 -115
  20. package/src/components/android/TaskGraph.vue +125 -0
  21. package/src/components/product/ApplyCharge/ApplyChargeList.vue +36 -50
  22. package/src/components/product/ApplyCharge/ApplyChargeSearch.vue +3 -3
  23. package/src/components/product/Function/InstallFunction.vue +125 -122
  24. package/src/components/product/Function/InstallInfoSelect.vue +292 -318
  25. package/src/components/product/Function/Service/FunctionServiceControl.vue +222 -254
  26. package/src/components/product/Function/StopApplyCrrdList.vue +176 -0
  27. package/src/components/product/Function/functions/ApplyRecordCancel.vue +102 -0
  28. package/src/components/product/Function/functions/StopInstall.vue +106 -0
  29. package/src/components/product/Onetomany.vue +377 -296
  30. package/src/components/product/Order/OrderApply.vue +30 -30
  31. package/src/components/product/Order/OrderApplyList.vue +78 -67
  32. package/src/components/product/Order/OrderMessage.vue +11 -87
  33. package/src/components/product/Process/ExplorationSelect.vue +410 -369
  34. package/src/components/product/Process/ExplorationUser.vue +138 -128
  35. package/src/components/product/Process/Processes/InstallationDetails.vue +592 -504
  36. package/src/components/product/Process/Processes/Print/img/10101.png +0 -0
  37. package/src/components/product/Process/Processes/Print/img/1010109.png +0 -0
  38. package/src/components/product/Process/Processes/Print/img/1010110.png +0 -0
  39. package/src/components/product/Process/Processes/Print/img/1010111.png +0 -0
  40. package/src/components/product/Process/Processes/Print/img/1010112.png +0 -0
  41. package/src/components/product/Process/Processes/Print/printCharge.vue +142 -0
  42. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +207 -181
  43. package/src/components/product/Process/Processes/chargeManagement.vue +639 -638
  44. package/src/components/product/Process/Processes/devicesManagement.vue +22 -2
  45. package/src/components/product/Process/Processes/selectApply.vue +1 -1
  46. package/src/components/product/Process/Service/ServiceControl.vue +1254 -883
  47. package/src/components/product/Process/Service/ShowBackReason.vue +33 -0
  48. package/src/components/product/ServiceView.vue +631 -741
  49. package/src/components/product/Stop/StopApply.vue +103 -103
  50. package/src/components/product/Stop/StopApplyList.vue +269 -254
  51. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +186 -517
  52. package/src/components/product/Supervisory/SupervisoryControl.vue +100 -108
  53. package/src/components/product/Supervisory/SupervisoryList.vue +233 -253
  54. package/src/components/product/Supervisory/SupervisoryhCart.vue +107 -124
  55. package/src/components/product/VueUtils/ApplyUpload.vue +273 -264
  56. package/src/components/product/VueUtils/HighMeter.vue +208 -0
  57. package/src/expandcssAndroid.less +1034 -517
  58. package/src/filiale/yuchuan/android/Process/AppServiceControl.vue +548 -414
  59. package/src/filiale/yuchuan/android/Process/Processes/AppInstallationDetails.vue +754 -456
  60. package/src/filiale/yuchuan/android/Task/Survey/SurveyTsak.vue +60 -0
  61. package/src/filiale/yuchuan/android.js +7 -8
  62. package/src/filiale/yuchuan/pc/Order/OrderApply.vue +528 -517
  63. package/src/filiale/yuchuan/pc/Order/OrderApplyList.vue +343 -343
  64. package/src/filiale/yuchuan/pc/Process/ExplorationSelect.vue +270 -231
  65. package/src/filiale/yuchuan/pc/Process/ExplorationUser.vue +147 -131
  66. package/src/filiale/yuchuan/pc/Process/Processes/ApplyMapCom.vue +66 -0
  67. package/src/filiale/yuchuan/pc/Process/Processes/InstallationDetails.vue +759 -0
  68. package/src/filiale/yuchuan/pc/Process/Processes/chargeManagement.vue +470 -0
  69. package/src/filiale/yuchuan/pc/Process/Service/ServiceControl.vue +879 -517
  70. package/src/filiale/yuchuan/pc.js +11 -13
  71. package/src/main.js +23 -23
  72. package/src/components/android/Function/AppFunctionServiceControl.vue +0 -329
  73. package/src/components/android/Function/AppInstallFunction.vue +0 -330
  74. package/src/components/android/Process/Processes/AppBuildSign.vue +0 -47
  75. package/src/components/android/Process/Processes/AppChargeManagement.vue +0 -468
  76. package/src/components/android/Process/Processes/AppDevicesManagement.vue +0 -490
  77. package/src/components/android/Process/Processes/AppSupplementalAgreement.vue +0 -297
  78. package/src/components/android/Process/Processes/AppjiaSign.vue +0 -47
  79. package/src/components/android/Process/Processes/AppjiafangSign.vue +0 -47
  80. package/src/components/android/Process/Processes/ApptechnologySign.vue +0 -47
  81. package/src/components/image/dwg.jpg +0 -0
  82. package/src/components/image/yasuobao.jpg +0 -0
  83. package/src/components/product/Function/Inform.vue +0 -73
  84. package/src/components/product/Function/MarketSurvey.vue +0 -81
  85. package/src/components/product/Process/Processes/printCharge.vue +0 -121
  86. package/src/components/product/Process/ShowBackReason.vue +0 -33
  87. package/src/components/product/Supervisory/Service/printChargeNode.vue +0 -873
  88. package/src/components/product/VueUtils/GaoPaiYi/HighMeter.vue +0 -1090
  89. package/src/components/product/VueUtils/ToolsPage.vue +0 -51
  90. package/src/components/product/VueUtils/Tree.vue +0 -330
  91. package/src/filiale/wuan/android.js +0 -0
  92. package/src/filiale/wuan/pc.js +0 -4
  93. package/src/filiale/yuchuan/android/AppServiceView.vue +0 -599
  94. package/src/filiale/yuchuan/android/Reserve/ApplyReserve.vue +0 -200
  95. package/src/filiale/yuchuan/android/SiteSurvey/TaskGraph.vue +0 -137
  96. package/src/filiale/yuchuan/pc/Process/Processes/MapCom.vue +0 -51
@@ -1,285 +1,301 @@
1
- <template>
2
- <div>
3
- <div class="col-sm-12 col-xs-12 form-group app-btn">
4
- <button class="btn btn-info" @click.prevent="openAdd()" v-if="!onetomany.addHidden" :style="onetomany.addStyle">{{ onetomany.addText === 'default' || !onetomany.addText ? '添加' : onetomany.addText }}</button>
5
- </div>
6
- <div class="col-sm-12 col-xs-12">
7
- <list :model="onetomany" partial='list'>
8
- <div partial class="auto app-text panel">
9
- <div class="panel-body panel-self">
10
- <div class="row" v-for="field in $parent.model.fields" v-if="!field.displayPosition || field.displayPosition === 'list'">
11
- <p class="col-xs-3 text-left font label-justify"><b>{{ field.label }}</b></p>
12
- <p class="col-xs-8 col-xs-offset-1 text-left input-font">{{ row[field.field] }}</p>
13
- </div>
14
- <div class="row text-right" v-if="!$parent.$parent.onetomany.hiddenOperate">
15
- <button class="btn btn-warning" @click.prevent="$parent.$parent.openUpdate($index)" v-if="!$parent.$parent.onetomany.updateHidden">
16
- <span :style="$parent.model.updateStyle">{{ $parent.model.updateText ? $parent.model.updateText : '修改' }}</span>
17
- </button>
18
- <button class="btn btn-danger" @click.prevent="$parent.$parent.openDelete($index)" v-if="!$parent.$parent.onetomany.deleteHidden">
19
- <span :style="$parent.model.deleteStyle">{{ $parent.model.deleteText ? $parent.model.deleteText : '删除' }}</span>
20
- </button>
21
- </div>
22
- </div>
23
- </div>
24
- </list>
25
- </div>
26
-
27
-
28
- <!-- onetomany模态框 -->
29
- <modal v-if="showModal" :show.sync="showModal" backdrop="false" :large="onetomany.modalSize === 'large' ? true : false" :small="onetomany.modalSize === 'small' ? true : false">
30
- <header slot="modal-header" class="modal-header">
31
- <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
32
- <span class="modal-title"><font
33
- size="3">{{modelTitle}}</font></span>
34
- </header>
35
- <article slot="modal-body" class="modal-body clearfix">
36
- <div v-for="(index,item) in onetomany.fields">
37
- <!--input-->
38
- <div :style="item.style ? item.style : ''"
39
- v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'app' || !item.device)"
40
- :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped + ' form-group app-input':'col-xs-12 form-group app-input']">
41
- <label class="control-label-justify">{{item.label}}</label>
42
- <div :style="item.value_style ? item.value_style:''"
43
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
44
- <input class="" style="width: 100%"
45
- :type="item.type"
46
- v-model="onetomany.fields[index].value"
47
- :placeholder="item.placeholder"
48
- :value="onetomany.fields[index].value"
49
- :readonly="item.readonly"
50
- :disabled="item.disabled"
51
- @change="onchange(index)"
52
- @blur="onblur(index)"
53
- @input="oninput(index)"
54
- />
55
- </div>
56
- </div>
57
-
58
- <!--select-->
59
- <div :style="item.style ? item.style : ''"
60
- v-if="item.type==='select' && !item.hidden && (item.device === 'app' || !item.device)"
61
- :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped + ' form-group app-input':'col-xs-12 form-group app-input']">
62
- <label class="control-label-justify">{{item.label}}</label>
63
- <div :style="item.value_style ? item.value_style:''"
64
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
65
- <v-select
66
- class="select" width="100%" align="right"
67
- :placeholder="item.placeholder"
68
- :search="item.search"
69
- close-on-select value-single
70
- :options="onetomany.options"
71
- v-model="onetomany.value"
72
- :value.sync="onetomany.fields[index].value"
73
- :readonly="item.readonly"
74
- :disabled="item.disabled"
75
- @blur="onblur(index)"
76
- @change="onchange(index)"
77
- ></v-select>
78
- </div>
79
- </div>
80
-
81
- <!--时间datepicker-->
82
- <div :style="item.style ? item.style : ''"
83
- v-if="item.type==='datepicker' && !item.hidden && (item.device === 'app' || !item.device)"
84
- :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped+' form-group app-input':'col-xs-12 form-group app-input']">
85
- <label class="control-label-justify">{{item.label}}</label>
86
- <div :style="item.value_style ? item.value_style:''"
87
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
88
- <datepicker
89
- :placeholder="item.placeholder"
90
- :value.sync="onetomany.fields[index].value"
91
- :format="item.format ? item.format : 'yyyy-MM-dd'"
92
- v-model="onetomany.fields[index].value"
93
- :readonly="item.readonly"
94
- :disabled="item.disabled"
95
- @change="onchange(index)"
96
- @blur="onblur(index)"
97
- :show-reset-button="true">
98
- </datepicker>
99
- </div>
100
- </div>
101
-
102
- <!--textarea-->
103
- <div :style="item.style ? item.style : ''"
104
- v-if="item.type==='textarea' && !item.hidden && (item.device === 'app' || !item.device)"
105
- :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped?item.bootstraped+' form-group app-input':'col-xs-12 form-group app-input']">
106
- <label class="control-label-justify">{{item.label}}</label>
107
- <div :style="item.value_style ? item.value_style:''"
108
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
109
- <textarea
110
- :readonly="item.readonly"
111
- :disabled="item.disabled"
112
- class="" rows="1"
113
- style="width: 100%;height: 100%"
114
- v-model="onetomany.fields[index].value"
115
- :value="onetomany.fields[index].value"
116
- @change="onchange(index)"
117
- @blur="onblur(index)"
118
- @input="oninput(index)"
119
- ></textarea>
120
- </div>
121
- </div>
122
- </div>
123
- </article>
124
- <footer slot="modal-footer" class="modal-footer">
125
- <button :class="disableButton?'btn btn-default':'btn btn-primary'"
126
- :disabled="disableButton" type="button" @click.prevent="confirmModal()">
127
- 确认
128
- </button>
129
- </footer>
130
- </modal>
131
- </div>
132
- </template>
133
-
134
- <script>
135
- import {HttpResetClass} from 'vue-client'
136
- import {guid, toStandardTimeString} from '../Util'
137
- import Vue from 'vue'
138
- export default {
139
- title: 'onetomany',
140
- props: ['onetomany', 'index'],
141
- data () {
142
- return {
143
- showModal: false,
144
- disableButton: true,
145
- modelTitle: null,
146
- rowIndex: null
147
- }
148
- },
149
- ready () {
150
- },
151
- methods: {
152
- confirmModal () {
153
- if (this.modelTitle === '新增') {
154
- if (this.onetomany.addEvent) {
155
- this.$dispatch(this.onetomany.addEvent, this.index)
156
- } else {
157
- this.$dispatch('onetomanyadd', this.index)
158
- }
159
- }
160
- if (this.modelTitle === '修改') {
161
- if (this.onetomany.updateEvent) {
162
- this.$dispatch(this.onetomany.updateEvent, this.index, this.rowIndex)
163
- } else {
164
- this.$dispatch('onetomanyupdate', this.index, this.rowIndex)
165
- }
166
- }
167
-
168
- this.closeModal()
169
- },
170
- onchange (fieldIndex) {
171
- this.disableModalButton()
172
- if (this.onetomany.fields[fieldIndex].onchange) {
173
- this.$dispatch(this.onetomany.fields[fieldIndex].onchange, this.index, fieldIndex)
174
- } else {
175
- this.$dispatch('onchangeModal', this.index, fieldIndex)
176
- }
177
- },
178
- onblur (fieldIndex) {
179
- this.disableModalButton()
180
- if (this.onetomany.fields[fieldIndex].onblur) {
181
- this.$dispatch(this.onetomany.fields[fieldIndex].onblur, this.index, fieldIndex)
182
- } else {
183
- this.$dispatch('onblurModal', this.index, fieldIndex)
184
- }
185
- },
186
- oninput (fieldIndex) {
187
- this.disableModalButton()
188
- if (this.onetomany.fields[fieldIndex].oninput) {
189
- this.$dispatch(this.onetomany.fields[fieldIndex].oninput, this.index, fieldIndex)
190
- } else {
191
- this.$dispatch('oninputModal', this.index, fieldIndex)
192
- }
193
- },
194
- openDelete (rowIndex) {
195
- this.$showMessage(this.onetomany.deleteMessage ? this.onetomany.deleteMessage : '您确定要删除这条记录吗?', ['confirm']).then((res) => {
196
- if (res === 'confirm') {
197
- if (this.onetomany.deleteEvent) {
198
- this.$dispatch(this.onetomany.deleteEvent, this.index, rowIndex)
199
- } else {
200
- this.$dispatch('onetomanydelete', this.index, rowIndex)
201
- }
202
- }
203
- })
204
- },
205
- // 修改
206
- openUpdate (rowIndex) {
207
- let row = this.onetomany.rows[rowIndex]
208
- for (const item of this.onetomany.fields) {
209
- item.value = row[item.field]
210
- }
211
-
212
- this.disableModalButton()
213
-
214
- this.modelTitle = '修改'
215
- this.rowIndex = rowIndex
216
-
217
- this.$dispatch('openUpdateModel', this.index, this.rowIndex)
218
-
219
- this.showModal = true
220
- },
221
- openAdd () {
222
- this.disableModalButton()
223
- this.modelTitle = '新增'
224
-
225
- this.$dispatch('openAddModel', this.index)
226
-
227
- this.showModal = true
228
- },
229
- closeModal () {
230
- this.showModal = false
231
- this.disableButton = false
232
- this.modelTitle = null
233
- this.rowIndex = null
234
-
235
- for (const item of this.onetomany.fields) {
236
- item.value = null
237
- }
238
- },
239
- // 是否禁用按钮
240
- disableModalButton () {
241
- let flag = false
242
-
243
- for (const field of this.onetomany.fields) {
244
- if (field.required && !field.value) {
245
- if (field.value === 0) {
246
- flag = false
247
- } else {
248
- flag = true
249
- }
250
- }
251
- }
252
-
253
- this.disableButton = flag
254
- }
255
- },
256
- computed: {
257
- },
258
- events: {
259
- }
260
- }
261
- </script>
262
-
263
- <style scoped>
264
- .control-label-justify {
265
- width: 30%;
266
- text-align: justify;
267
- text-align-last: justify;
268
- font-family: PingFang-SC-Bold;
269
- float: left;
270
- }
271
- .label-justify {
272
- text-align: justify;
273
- text-align-last: justify;
274
- float: left;
275
- }
276
- .panel-self{
277
- border-radius: 10px;
278
- border:1px solid #499EDF;
279
- background-color: #F8F8F8;
280
- }
281
- .font{
282
- font: 15px PingFang-SC-Medium;
283
- color: #666666;
284
- }
285
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="col-sm-12 col-xs-12 form-group app-btn">
4
+ <button
5
+ :class="onetomany.add.class || 'btn btn-info'"
6
+ @click.prevent="openAdd()"
7
+ v-if="!onetomany.add.hidden"
8
+ :style="onetomany.add.style || ''">
9
+ {{ onetomany.add.text || '添加'}}
10
+ </button>
11
+ </div>
12
+ <div class="col-sm-12 col-xs-12">
13
+ <list :model="onetomany" partial='list'>
14
+ <div partial class="auto app-text panel">
15
+ <div class="panel-body panel-self">
16
+ <div class="row" v-for="field in $parent.$parent.onetomany.fields" v-if="!field.displayPosition || field.displayPosition === 'list'">
17
+ <p class="col-xs-3 text-left font label-justify"><b>{{ field.label }}</b></p>
18
+ <p class="col-xs-8 col-xs-offset-1 text-left input-font">{{ row[field.field] }}</p>
19
+ </div>
20
+ <div class="row text-right" v-if="!$parent.$parent.onetomany.hiddenOperate">
21
+ <button
22
+ :class="$parent.$parent.onetomany.update.style || 'btn btn-warning'"
23
+ @click.prevent="$parent.$parent.openUpdate($index)"
24
+ v-if="!$parent.$parent.onetomany.update.hidden"
25
+ :style="$parent.$parent.onetomany.update.style || ''">
26
+ {{ $parent.$parent.onetomany.update.text || '修改'}}
27
+ </button>
28
+ <button
29
+ :class="$parent.$parent.onetomany.delete.style || 'btn btn-danger'"
30
+ @click.prevent="$parent.$parent.openDelete($index)"
31
+ v-if="!$parent.$parent.onetomany.delete.hidden"
32
+ :style="$parent.$parent.onetomany.delete.style || ''">
33
+ {{ $parent.$parent.onetomany.delete.text || '删除'}}
34
+ </button>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </list>
39
+ </div>
40
+
41
+
42
+ <!-- onetomany模态框 -->
43
+ <modal v-if="showModal" :show.sync="showModal" backdrop="false" :large="onetomany.modalSize === 'large' ? true : false" :small="onetomany.modalSize === 'small' ? true : false">
44
+ <header slot="modal-header" class="modal-header">
45
+ <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
46
+ <span class="modal-title"><font
47
+ size="3">{{modelTitle}}</font></span>
48
+ </header>
49
+ <article slot="modal-body" class="modal-body clearfix">
50
+ <div v-for="(index,item) in onetomany.fields">
51
+ <!--input-->
52
+ <div :style="item.style ? item.style : ''"
53
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'app' || !item.device)"
54
+ :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped + ' form-group app-input':'col-xs-12 form-group app-input']">
55
+ <label class="control-label-justify">{{item.label}}</label>
56
+ <div :style="item.value_style ? item.value_style:''"
57
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
58
+ <input class="" style="width: 100%"
59
+ :type="item.type"
60
+ v-model="onetomany.fields[index].value"
61
+ :placeholder="item.placeholder"
62
+ :value="onetomany.fields[index].value"
63
+ :readonly="item.readonly"
64
+ :disabled="item.disabled"
65
+ @change="onchange(index)"
66
+ @blur="onblur(index)"
67
+ @input="oninput(index)"
68
+ />
69
+ </div>
70
+ </div>
71
+
72
+ <!--select-->
73
+ <div :style="item.style ? item.style : ''"
74
+ v-if="item.type==='select' && !item.hidden && (item.device === 'app' || !item.device)"
75
+ :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped + ' form-group app-input':'col-xs-12 form-group app-input']">
76
+ <label class="control-label-justify">{{item.label}}</label>
77
+ <div :style="item.value_style ? item.value_style:''"
78
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
79
+ <v-select
80
+ class="select" width="100%" align="right"
81
+ :placeholder="item.placeholder"
82
+ :search="item.search"
83
+ close-on-select value-single
84
+ :options="item.options"
85
+ v-model="onetomany.fields[index].value"
86
+ :value.sync="onetomany.fields[index].value"
87
+ :readonly="item.readonly"
88
+ :disabled="item.disabled"
89
+ @blur="onblur(index)"
90
+ @change="onchange(index)"
91
+ ></v-select>
92
+ </div>
93
+ </div>
94
+
95
+ <!--时间datepicker-->
96
+ <div :style="item.style ? item.style : ''"
97
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'app' || !item.device)"
98
+ :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped ? item.bootstraped+' form-group app-input':'col-xs-12 form-group app-input']">
99
+ <label class="control-label-justify">{{item.label}}</label>
100
+ <div :style="item.value_style ? item.value_style:''"
101
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
102
+ <datepicker
103
+ :placeholder="item.placeholder"
104
+ :value.sync="onetomany.fields[index].value"
105
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
106
+ v-model="onetomany.fields[index].value"
107
+ :readonly="item.readonly"
108
+ :disabled="item.disabled"
109
+ @change="onchange(index)"
110
+ @blur="onblur(index)"
111
+ :show-reset-button="true">
112
+ </datepicker>
113
+ </div>
114
+ </div>
115
+
116
+ <!--textarea-->
117
+ <div :style="item.style ? item.style : ''"
118
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'app' || !item.device)"
119
+ :class="[item.required && !(item.value) ? 'apply-has-error' : '', item.bootstraped?item.bootstraped+' form-group app-input':'col-xs-12 form-group app-input']">
120
+ <label class="control-label-justify">{{item.label}}</label>
121
+ <div :style="item.value_style ? item.value_style:''"
122
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-xs-8'">
123
+ <textarea
124
+ :readonly="item.readonly"
125
+ :disabled="item.disabled"
126
+ class="" rows="1"
127
+ style="width: 100%;height: 100%"
128
+ v-model="onetomany.fields[index].value"
129
+ :value="onetomany.fields[index].value"
130
+ @change="onchange(index)"
131
+ @blur="onblur(index)"
132
+ @input="oninput(index)"
133
+ ></textarea>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ </article>
138
+ <footer slot="modal-footer" class="modal-footer">
139
+ <button :class="disableButton?'btn btn-default':'btn btn-primary'"
140
+ :disabled="disableButton" type="button" @click.prevent="confirmModal()">
141
+ 确认
142
+ </button>
143
+ </footer>
144
+ </modal>
145
+ </div>
146
+ </template>
147
+
148
+ <script>
149
+ import {HttpResetClass} from 'vue-client'
150
+ import {guid, toStandardTimeString} from '../Util'
151
+ import Vue from 'vue'
152
+ export default {
153
+ title: 'onetomany',
154
+ props: ['onetomany', 'index'],
155
+ data () {
156
+ return {
157
+ showModal: false,
158
+ disableButton: true,
159
+ modelTitle: null,
160
+ rowIndex: null
161
+ }
162
+ },
163
+ ready () {
164
+ },
165
+ methods: {
166
+ confirmModal () {
167
+ if (this.modelTitle === '新增') {
168
+ if (this.onetomany.add.event) {
169
+ this.$dispatch(this.onetomany.add.event, this.index)
170
+ } else {
171
+ this.$dispatch('onetomanyadd', this.index)
172
+ }
173
+ }
174
+ if (this.modelTitle === '修改') {
175
+ if (this.onetomany.update.event) {
176
+ this.$dispatch(this.onetomany.update.event, this.index, this.rowIndex)
177
+ } else {
178
+ this.$dispatch('onetomanyupdate', this.index, this.rowIndex)
179
+ }
180
+ }
181
+
182
+ this.closeModal()
183
+ },
184
+ onchange (fieldIndex) {
185
+ this.disableModalButton()
186
+ if (this.onetomany.fields[fieldIndex].onchange) {
187
+ this.$dispatch(this.onetomany.fields[fieldIndex].onchange, this.index, fieldIndex)
188
+ } else {
189
+ this.$dispatch('onchangeModal', this.index, fieldIndex)
190
+ }
191
+ },
192
+ onblur (fieldIndex) {
193
+ this.disableModalButton()
194
+ if (this.onetomany.fields[fieldIndex].onblur) {
195
+ this.$dispatch(this.onetomany.fields[fieldIndex].onblur, this.index, fieldIndex)
196
+ } else {
197
+ this.$dispatch('onblurModal', this.index, fieldIndex)
198
+ }
199
+ },
200
+ oninput (fieldIndex) {
201
+ this.disableModalButton()
202
+ if (this.onetomany.fields[fieldIndex].oninput) {
203
+ this.$dispatch(this.onetomany.fields[fieldIndex].oninput, this.index, fieldIndex)
204
+ } else {
205
+ this.$dispatch('oninputModal', this.index, fieldIndex)
206
+ }
207
+ },
208
+ openDelete (rowIndex) {
209
+ this.$showMessage(this.onetomany.delete.message ? this.onetomany.delete.message : '您确定要删除这条记录吗?', ['confirm']).then((res) => {
210
+ if (res === 'confirm') {
211
+ if (this.onetomany.delete.event) {
212
+ this.$dispatch(this.onetomany.delete.event, this.index, rowIndex)
213
+ } else {
214
+ this.$dispatch('onetomanydelete', this.index, rowIndex)
215
+ }
216
+ }
217
+ })
218
+ },
219
+ // 修改
220
+ openUpdate (rowIndex) {
221
+ let row = this.onetomany.rows[rowIndex]
222
+ for (const item of this.onetomany.fields) {
223
+ item.value = row[item.field]
224
+ }
225
+
226
+ this.disableModalButton()
227
+
228
+ this.modelTitle = '修改'
229
+ this.rowIndex = rowIndex
230
+
231
+ if (this.onetomany.update.openEvent) {
232
+ this.$dispatch(this.onetomany.update.openEvent, this.index, this.rowIndex)
233
+ }
234
+ this.$dispatch('openUpdateModel', this.index, this.rowIndex)
235
+
236
+ this.showModal = true
237
+ },
238
+ openAdd () {
239
+ this.disableModalButton()
240
+ this.modelTitle = '新增'
241
+
242
+ if (this.onetomany.add.openEvent) {
243
+ this.$dispatch(this.onetomany.add.openEvent, this.index)
244
+ }
245
+ this.$dispatch('openAddModel', this.index)
246
+
247
+ this.showModal = true
248
+ },
249
+ closeModal () {
250
+ this.showModal = false
251
+ this.disableButton = false
252
+ this.modelTitle = null
253
+ this.rowIndex = null
254
+
255
+ for (const item of this.onetomany.fields) {
256
+ item.value = null
257
+ }
258
+ },
259
+ // 是否禁用按钮
260
+ disableModalButton () {
261
+ let flag = false
262
+
263
+ for (const field of this.onetomany.fields) {
264
+ if (field.required && !field.value && !field.hidden && field.value !== 0) {
265
+ flag = true
266
+ }
267
+ }
268
+
269
+ this.disableButton = flag
270
+ }
271
+ },
272
+ computed: {
273
+ },
274
+ events: {
275
+ }
276
+ }
277
+ </script>
278
+
279
+ <style scoped>
280
+ .control-label-justify {
281
+ width: 30%;
282
+ text-align: justify;
283
+ text-align-last: justify;
284
+ font-family: PingFang-SC-Bold;
285
+ float: left;
286
+ }
287
+ .label-justify {
288
+ text-align: justify;
289
+ text-align-last: justify;
290
+ float: left;
291
+ }
292
+ .panel-self{
293
+ border-radius: 10px;
294
+ border:1px solid #499EDF;
295
+ background-color: #F8F8F8;
296
+ }
297
+ .font{
298
+ font: 15px PingFang-SC-Medium;
299
+ color: #666666;
300
+ }
301
+ </style>