askbot-dragon 1.1.28 → 1.2.0

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 (82) hide show
  1. package/README.md +27 -27
  2. package/babel.config.js +6 -6
  3. package/dragon.iml +7 -7
  4. package/package.json +56 -56
  5. package/public/index.html +43 -43
  6. package/src/App.vue +31 -31
  7. package/src/api/index.js +1 -1
  8. package/src/api/mock.http +2 -2
  9. package/src/api/requestUrl.js +185 -185
  10. package/src/assets/js/AliyunlssUtil.js +92 -92
  11. package/src/assets/js/Base64Util.js +22 -22
  12. package/src/assets/js/common.js +12 -0
  13. package/src/assets/js/script.js +36 -36
  14. package/src/assets/less/common.css +6773 -6773
  15. package/src/assets/less/converSationContainer/common.less +191 -191
  16. package/src/assets/less/converSationContainer/converSatonContainer.less +493 -493
  17. package/src/assets/less/iconfont.css +37 -37
  18. package/src/assets/less/ticketMessage.less +211 -211
  19. package/src/components/ActionAlertIframe.vue +112 -112
  20. package/src/components/AiGuide.vue +467 -467
  21. package/src/components/AnswerDocknowledge.vue +362 -351
  22. package/src/components/AskIFrame.vue +15 -15
  23. package/src/components/ConversationContainer.vue +4011 -4011
  24. package/src/components/FileType.vue +86 -86
  25. package/src/components/Message.vue +27 -27
  26. package/src/components/actionSatisfaction.vue +107 -107
  27. package/src/components/actionSendToBot.vue +62 -62
  28. package/src/components/answerDissatisfaction.vue +62 -62
  29. package/src/components/answerRadio.vue +76 -76
  30. package/src/components/ask-components/DissatisfactionOptions.vue +57 -57
  31. package/src/components/ask-components/Msgloading.vue +37 -37
  32. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  33. package/src/components/askVideo.vue +138 -138
  34. package/src/components/assetDetails.vue +370 -370
  35. package/src/components/assetMessage.vue +228 -228
  36. package/src/components/associationIntention.vue +300 -300
  37. package/src/components/attachmentPreview.vue +90 -90
  38. package/src/components/botActionSatisfactor.vue +68 -68
  39. package/src/components/chatContent.vue +513 -513
  40. package/src/components/feedBack.vue +136 -136
  41. package/src/components/fielListView.vue +326 -326
  42. package/src/components/file/AliyunOssComponents.vue +108 -108
  43. package/src/components/formTemplate.vue +3359 -3361
  44. package/src/components/loadingProcess.vue +164 -164
  45. package/src/components/message/ActionAlertIframe.vue +112 -112
  46. package/src/components/message/ShopMessage.vue +164 -164
  47. package/src/components/message/TextMessage.vue +924 -924
  48. package/src/components/message/TicketMessage.vue +177 -177
  49. package/src/components/message/swiper/index.js +4 -4
  50. package/src/components/message/swiper/ticketSwiper.vue +503 -503
  51. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  52. package/src/components/msgLoading.vue +231 -231
  53. package/src/components/myPopup.vue +70 -70
  54. package/src/components/popup.vue +227 -227
  55. package/src/components/previewDoc.vue +108 -108
  56. package/src/components/previewPdf.vue +195 -127
  57. package/src/components/receiverMessagePlatform.vue +65 -65
  58. package/src/components/recommend.vue +89 -89
  59. package/src/components/selector/hOption.vue +20 -20
  60. package/src/components/selector/hSelector.vue +199 -199
  61. package/src/components/selector/hWrapper.vue +216 -216
  62. package/src/components/senderMessagePlatform.vue +50 -50
  63. package/src/components/source/BotMessage.vue +24 -24
  64. package/src/components/source/CustomMessage.vue +24 -24
  65. package/src/components/test.vue +260 -260
  66. package/src/components/tree.vue +294 -294
  67. package/src/components/utils/AliyunIssUtil.js +72 -72
  68. package/src/components/utils/ckeditor.js +155 -155
  69. package/src/components/utils/ckeditorImageUpload/command.js +109 -109
  70. package/src/components/utils/ckeditorImageUpload/editing.js +11 -11
  71. package/src/components/utils/ckeditorImageUpload/plugin-image.js +11 -11
  72. package/src/components/utils/ckeditorImageUpload/toolbar-ui.js +40 -40
  73. package/src/components/utils/ckeditorfileUpload/common.js +111 -111
  74. package/src/components/utils/ckeditorfileUpload/editing.js +11 -11
  75. package/src/components/utils/ckeditorfileUpload/plugin_file.js +11 -11
  76. package/src/components/utils/ckeditorfileUpload/toolbar_ui.js +34 -34
  77. package/src/components/utils/format_date.js +25 -25
  78. package/src/components/utils/index.js +6 -6
  79. package/src/components/utils/math_utils.js +29 -29
  80. package/src/components/voiceComponent.vue +119 -119
  81. package/src/main.js +60 -60
  82. package/vue.config.js +55 -55
@@ -1,327 +1,327 @@
1
- <template>
2
- <div id="attachment-upload">
3
- <div v-if="attachmentList.length != 0" class="image-list">
4
- <template>
5
- <div v-for="(item, index) in attachmentList" class="attch-item" :key="item.url + index"
6
- >
7
- <span @click.stop="deleteAttch(index)"><i class="iconfont guoran-a-16-09"></i></span>
8
- <div class="attch-item-left" @click="lookAttach(item.url)">
9
- <i v-if="item.url == ''" class="el-icon-loading" style="color:#366AFF;margin: 5px;"></i>
10
- <img src="../assets/image/video.png"
11
- v-else-if="setSrc(item) == 'video'"/>
12
- <img src="../assets/image/image.png"
13
- v-else-if="setSrc(item) == 'image'" />
14
- <img src="../assets/image/txt.png"
15
- v-else-if="setSrc(item) == 'txt'" />
16
- <img src="../assets/image/word.png"
17
- v-else-if="setSrc(item) == 'word'" />
18
- <img src="../assets/image/pdf.png"
19
- v-else-if="setSrc(item) == 'pdf'" />
20
- <img src="../assets/image/ppt.png"
21
- v-else-if="setSrc(item) == 'ppt'" />
22
- <img src="../assets/image/excel.png"
23
- v-else-if="setSrc(item) == 'excel'" />
24
- <div class="fileName" v-if="item">
25
- <template v-if="typeof item === 'string'">
26
- <template v-if="item.indexOf('[') !== -1">
27
- {{ JSON.parse(item)[index] }}
28
- </template>
29
- </template>
30
- <template v-else>
31
- {{ item.name ? item.name : (item.url ? item.url : '') }}
32
- </template>
33
- </div>
34
- </div>
35
- </div>
36
- </template>
37
- </div>
38
- <!-- <el-dialog :visible.sync="dialogVisible" width="800px" :close-on-click-modal="false"
39
- custom-class="look-dialog">
40
- <template v-if="fieldType === 'VIDEO'">
41
- <video :src="dialogUrl" controls></video>
42
- </template>
43
- <template v-else-if="fieldType === 'IMAGE'">
44
- <img :src="dialogUrl" />
45
- </template>
46
- <div v-else-if="fieldType === 'txt' || fieldType === 'doc'" style="height: 60vh">
47
- <embed :src="dialogUrl" width="100%" height="100%" />
48
- </div>
49
- </el-dialog> -->
50
- <previewDoc ref="previewDoc" :url="previewHref"></previewDoc>
51
- </div>
52
- </template>
53
-
54
- <script>
55
- import previewDoc from './previewDoc.vue';
56
- export default {
57
- name: "customUpload",
58
- components: {previewDoc},
59
- data () {
60
- return {
61
- dialogVisible: false,
62
- previewHref:""
63
- }
64
- },
65
- props: ["attachmentList"],
66
- methods: {
67
- //查看视频
68
- openDialog (item) {
69
- let url = typeof item == 'object' ? item.url : item
70
- this.previewHref = url
71
- this.$refs.previewDoc.previewShowPopup = true
72
- },
73
- deleteAttch (index) {
74
- this.$emit('attachDeleteAttch', index)
75
- },
76
- //根据上传类型设置图标
77
- setSrc (item) {
78
- let file = "";
79
- let fileName = ''
80
- if (typeof item === 'object'){
81
- fileName = item.name ? item.name : (item.url ? item.url : '')
82
- } else {
83
- fileName = item
84
- }
85
- if (!fileName){
86
- return file
87
- }
88
- const fileType = fileName.substring(fileName.lastIndexOf('.'));
89
- if (fileType === '.mp4' || fileType === '.MP4' || fileType === '.mov' || fileType === '.MOV') {
90
- file = 'video'
91
- }
92
- else if (fileType === '.jpg' || fileType === '.png' || fileType === '.JPG' || fileType === '.PNG') {
93
- file = 'image'
94
- }
95
- else if (fileType == '.txt') {
96
- file = 'txt'
97
- }
98
- else if (fileType == '.ppt' || fileType == '.pptx') {
99
- file = 'ppt'
100
- }
101
- else if (fileType == '.doc' || fileType == '.docx') {
102
- file = 'word'
103
- }
104
- else if (fileType == '.xls' || fileType == '.xlsx') {
105
- file = 'excel'
106
- }
107
- else if (fileType == '.pdf') {
108
- file = 'pdf'
109
- }
110
- return file
111
- },
112
- //下载文件
113
- updownload () {
114
- window.location.href = this.dialogUrl
115
- /*window.open(this.dialogUrl,'_black')*/
116
- },
117
- lookAttach(url){
118
- if(url !== '') {
119
- // this.previewHref = url
120
- // this.$refs.previewDoc.previewShowPopup = true
121
- const fileType = url.substring(url.lastIndexOf('.'));
122
- if (fileType === '.jpg' || fileType === '.png' || fileType === '.JPG' || fileType === '.PNG'){
123
- this.previewHref = url
124
- this.$refs.previewDoc.previewShowPopup = true
125
- }
126
- }
127
- }
128
- }
129
- };
130
- </script>
131
-
132
- <style scoped lang="less">
133
- .custom-upload-o {
134
- display: flex;
135
- align-items: center;
136
- }
137
-
138
- #attachment-upload {
139
- .image-list {
140
- display: flex;
141
- flex-wrap: wrap;
142
- padding: 0 8px;
143
- }
144
-
145
- .image-item {
146
- margin: 0 6px;
147
- position: relative;
148
-
149
- .delete {
150
- // width: 20px;
151
- // height: 22px;
152
- position: absolute;
153
- top: 0px;
154
- right: 0px;
155
- // border-radius: 30px;
156
- background: #ffffff;
157
- display: flex;
158
- align-items: center;
159
- justify-content: flex-end;
160
- }
161
-
162
- .guoran-tongyichicun-16-09-shanchu2 {
163
- color: #366aff;
164
- // position: absolute;
165
- // top: 0px;
166
- // right: 0px;
167
- // cursor: pointer;
168
- }
169
- }
170
-
171
- .guoran-tongyichicun-16-09-shanchu2 {
172
- display: none;
173
- }
174
-
175
- .image-item:hover {
176
- .delete {
177
- width: 18px;
178
- height: 20px;
179
- }
180
-
181
- .guoran-tongyichicun-16-09-shanchu2 {
182
- display: block;
183
- }
184
- }
185
-
186
- .attch-item {
187
- margin: 10px 0 0 0;
188
- color: #606266;
189
- font-size: 13px;
190
- cursor: pointer;
191
- display: flex;
192
- align-items: center;
193
- justify-content: space-between;
194
- width: 100%;
195
-
196
- .guoran-a-16-09 {
197
- color: #366aff;
198
- }
199
-
200
- .attch-item-left {
201
- display: flex;
202
- align-items: center;
203
- flex: none;
204
- width: 97%;
205
- overflow: hidden;
206
- text-overflow: ellipsis;
207
- margin-left: 6px;
208
- img {
209
- margin-right: 4px;
210
- }
211
- }
212
- }
213
-
214
- .video-item {
215
- display: flex;
216
- align-items: center;
217
- justify-content: center;
218
- background-color: #f0f4fc;
219
- width: 60px;
220
- height: 60px;
221
- border-radius: 5px;
222
- margin: 0 6px;
223
- position: relative;
224
- overflow: hidden;
225
-
226
- img {
227
- cursor: pointer;
228
- }
229
-
230
- .delete {
231
- // width: 20px;
232
- // height: 22px;
233
- position: absolute;
234
- top: 0px;
235
- right: 0px;
236
- // border-radius: 30px;
237
- background: #ffffff;
238
- display: flex;
239
- align-items: center;
240
- justify-content: flex-end;
241
-
242
- }
243
-
244
- .guoran-tongyichicun-16-09-shanchu2 {
245
- color: #366aff;
246
- cursor: pointer;
247
- }
248
- }
249
-
250
- .video-item:hover {
251
- .delete {
252
- width: 20px;
253
- height: 22px;
254
- }
255
-
256
- .guoran-tongyichicun-16-09-shanchu2 {
257
- display: block;
258
- }
259
- }
260
-
261
- /deep/.attachment-upload {
262
- .el-upload {
263
- width: 100%;
264
- }
265
-
266
- .el-upload-dragger {
267
- width: 100%;
268
- }
269
- }
270
-
271
- .fileName {
272
- max-width: 80%;
273
- flex: none;
274
- overflow: hidden;
275
- text-overflow: ellipsis;
276
- white-space: nowrap;
277
- }
278
-
279
- /deep/ .el-upload--picture-card {
280
- width: 60px;
281
- height: 60px;
282
- display: flex;
283
- align-items: center;
284
- justify-content: center;
285
- flex: none;
286
- }
287
-
288
- /deep/.el-upload-dragger {
289
- height: 60px;
290
- display: flex;
291
- align-items: center;
292
- justify-content: space-around;
293
-
294
- .el-icon-upload {
295
- margin: 5px 10px 8px;
296
- line-height: 30px;
297
- font-size: 25px;
298
- }
299
-
300
- .el-upload__text {
301
- display: flex;
302
- // flex-direction: column;
303
- flex-wrap: wrap;
304
- flex: 1;
305
- }
306
- }
307
-
308
- .el-upload-dragger>div {
309
- display: flex;
310
- align-items: center;
311
- }
312
- }
313
-
314
- .look-dialog {
315
- video {
316
- height: 500px;
317
- object-fit: contain;
318
- width: 100%;
319
- }
320
-
321
- img {
322
- height: 500px;
323
- width: 100%;
324
- object-fit: contain;
325
- }
326
- }
1
+ <template>
2
+ <div id="attachment-upload">
3
+ <div v-if="attachmentList.length != 0" class="image-list">
4
+ <template>
5
+ <div v-for="(item, index) in attachmentList" class="attch-item" :key="item.url + index"
6
+ >
7
+ <span @click.stop="deleteAttch(index)"><i class="iconfont guoran-a-16-09"></i></span>
8
+ <div class="attch-item-left" @click="lookAttach(item.url)">
9
+ <i v-if="item.url == ''" class="el-icon-loading" style="color:#366AFF;margin: 5px;"></i>
10
+ <img src="../assets/image/video.png"
11
+ v-else-if="setSrc(item) == 'video'"/>
12
+ <img src="../assets/image/image.png"
13
+ v-else-if="setSrc(item) == 'image'" />
14
+ <img src="../assets/image/txt.png"
15
+ v-else-if="setSrc(item) == 'txt'" />
16
+ <img src="../assets/image/word.png"
17
+ v-else-if="setSrc(item) == 'word'" />
18
+ <img src="../assets/image/pdf.png"
19
+ v-else-if="setSrc(item) == 'pdf'" />
20
+ <img src="../assets/image/ppt.png"
21
+ v-else-if="setSrc(item) == 'ppt'" />
22
+ <img src="../assets/image/excel.png"
23
+ v-else-if="setSrc(item) == 'excel'" />
24
+ <div class="fileName" v-if="item">
25
+ <template v-if="typeof item === 'string'">
26
+ <template v-if="item.indexOf('[') !== -1">
27
+ {{ JSON.parse(item)[index] }}
28
+ </template>
29
+ </template>
30
+ <template v-else>
31
+ {{ item.name ? item.name : (item.url ? item.url : '') }}
32
+ </template>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </template>
37
+ </div>
38
+ <!-- <el-dialog :visible.sync="dialogVisible" width="800px" :close-on-click-modal="false"
39
+ custom-class="look-dialog">
40
+ <template v-if="fieldType === 'VIDEO'">
41
+ <video :src="dialogUrl" controls></video>
42
+ </template>
43
+ <template v-else-if="fieldType === 'IMAGE'">
44
+ <img :src="dialogUrl" />
45
+ </template>
46
+ <div v-else-if="fieldType === 'txt' || fieldType === 'doc'" style="height: 60vh">
47
+ <embed :src="dialogUrl" width="100%" height="100%" />
48
+ </div>
49
+ </el-dialog> -->
50
+ <previewDoc ref="previewDoc" :url="previewHref"></previewDoc>
51
+ </div>
52
+ </template>
53
+
54
+ <script>
55
+ import previewDoc from './previewDoc.vue';
56
+ export default {
57
+ name: "customUpload",
58
+ components: {previewDoc},
59
+ data () {
60
+ return {
61
+ dialogVisible: false,
62
+ previewHref:""
63
+ }
64
+ },
65
+ props: ["attachmentList"],
66
+ methods: {
67
+ //查看视频
68
+ openDialog (item) {
69
+ let url = typeof item == 'object' ? item.url : item
70
+ this.previewHref = url
71
+ this.$refs.previewDoc.previewShowPopup = true
72
+ },
73
+ deleteAttch (index) {
74
+ this.$emit('attachDeleteAttch', index)
75
+ },
76
+ //根据上传类型设置图标
77
+ setSrc (item) {
78
+ let file = "";
79
+ let fileName = ''
80
+ if (typeof item === 'object'){
81
+ fileName = item.name ? item.name : (item.url ? item.url : '')
82
+ } else {
83
+ fileName = item
84
+ }
85
+ if (!fileName){
86
+ return file
87
+ }
88
+ const fileType = fileName.substring(fileName.lastIndexOf('.'));
89
+ if (fileType === '.mp4' || fileType === '.MP4' || fileType === '.mov' || fileType === '.MOV') {
90
+ file = 'video'
91
+ }
92
+ else if (fileType === '.jpg' || fileType === '.png' || fileType === '.JPG' || fileType === '.PNG') {
93
+ file = 'image'
94
+ }
95
+ else if (fileType == '.txt') {
96
+ file = 'txt'
97
+ }
98
+ else if (fileType == '.ppt' || fileType == '.pptx') {
99
+ file = 'ppt'
100
+ }
101
+ else if (fileType == '.doc' || fileType == '.docx') {
102
+ file = 'word'
103
+ }
104
+ else if (fileType == '.xls' || fileType == '.xlsx') {
105
+ file = 'excel'
106
+ }
107
+ else if (fileType == '.pdf') {
108
+ file = 'pdf'
109
+ }
110
+ return file
111
+ },
112
+ //下载文件
113
+ updownload () {
114
+ window.location.href = this.dialogUrl
115
+ /*window.open(this.dialogUrl,'_black')*/
116
+ },
117
+ lookAttach(url){
118
+ if(url !== '') {
119
+ // this.previewHref = url
120
+ // this.$refs.previewDoc.previewShowPopup = true
121
+ const fileType = url.substring(url.lastIndexOf('.'));
122
+ if (fileType === '.jpg' || fileType === '.png' || fileType === '.JPG' || fileType === '.PNG'){
123
+ this.previewHref = url
124
+ this.$refs.previewDoc.previewShowPopup = true
125
+ }
126
+ }
127
+ }
128
+ }
129
+ };
130
+ </script>
131
+
132
+ <style scoped lang="less">
133
+ .custom-upload-o {
134
+ display: flex;
135
+ align-items: center;
136
+ }
137
+
138
+ #attachment-upload {
139
+ .image-list {
140
+ display: flex;
141
+ flex-wrap: wrap;
142
+ padding: 0 8px;
143
+ }
144
+
145
+ .image-item {
146
+ margin: 0 6px;
147
+ position: relative;
148
+
149
+ .delete {
150
+ // width: 20px;
151
+ // height: 22px;
152
+ position: absolute;
153
+ top: 0px;
154
+ right: 0px;
155
+ // border-radius: 30px;
156
+ background: #ffffff;
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: flex-end;
160
+ }
161
+
162
+ .guoran-tongyichicun-16-09-shanchu2 {
163
+ color: #366aff;
164
+ // position: absolute;
165
+ // top: 0px;
166
+ // right: 0px;
167
+ // cursor: pointer;
168
+ }
169
+ }
170
+
171
+ .guoran-tongyichicun-16-09-shanchu2 {
172
+ display: none;
173
+ }
174
+
175
+ .image-item:hover {
176
+ .delete {
177
+ width: 18px;
178
+ height: 20px;
179
+ }
180
+
181
+ .guoran-tongyichicun-16-09-shanchu2 {
182
+ display: block;
183
+ }
184
+ }
185
+
186
+ .attch-item {
187
+ margin: 10px 0 0 0;
188
+ color: #606266;
189
+ font-size: 13px;
190
+ cursor: pointer;
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: space-between;
194
+ width: 100%;
195
+
196
+ .guoran-a-16-09 {
197
+ color: #366aff;
198
+ }
199
+
200
+ .attch-item-left {
201
+ display: flex;
202
+ align-items: center;
203
+ flex: none;
204
+ width: 97%;
205
+ overflow: hidden;
206
+ text-overflow: ellipsis;
207
+ margin-left: 6px;
208
+ img {
209
+ margin-right: 4px;
210
+ }
211
+ }
212
+ }
213
+
214
+ .video-item {
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ background-color: #f0f4fc;
219
+ width: 60px;
220
+ height: 60px;
221
+ border-radius: 5px;
222
+ margin: 0 6px;
223
+ position: relative;
224
+ overflow: hidden;
225
+
226
+ img {
227
+ cursor: pointer;
228
+ }
229
+
230
+ .delete {
231
+ // width: 20px;
232
+ // height: 22px;
233
+ position: absolute;
234
+ top: 0px;
235
+ right: 0px;
236
+ // border-radius: 30px;
237
+ background: #ffffff;
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: flex-end;
241
+
242
+ }
243
+
244
+ .guoran-tongyichicun-16-09-shanchu2 {
245
+ color: #366aff;
246
+ cursor: pointer;
247
+ }
248
+ }
249
+
250
+ .video-item:hover {
251
+ .delete {
252
+ width: 20px;
253
+ height: 22px;
254
+ }
255
+
256
+ .guoran-tongyichicun-16-09-shanchu2 {
257
+ display: block;
258
+ }
259
+ }
260
+
261
+ /deep/.attachment-upload {
262
+ .el-upload {
263
+ width: 100%;
264
+ }
265
+
266
+ .el-upload-dragger {
267
+ width: 100%;
268
+ }
269
+ }
270
+
271
+ .fileName {
272
+ max-width: 80%;
273
+ flex: none;
274
+ overflow: hidden;
275
+ text-overflow: ellipsis;
276
+ white-space: nowrap;
277
+ }
278
+
279
+ /deep/ .el-upload--picture-card {
280
+ width: 60px;
281
+ height: 60px;
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ flex: none;
286
+ }
287
+
288
+ /deep/.el-upload-dragger {
289
+ height: 60px;
290
+ display: flex;
291
+ align-items: center;
292
+ justify-content: space-around;
293
+
294
+ .el-icon-upload {
295
+ margin: 5px 10px 8px;
296
+ line-height: 30px;
297
+ font-size: 25px;
298
+ }
299
+
300
+ .el-upload__text {
301
+ display: flex;
302
+ // flex-direction: column;
303
+ flex-wrap: wrap;
304
+ flex: 1;
305
+ }
306
+ }
307
+
308
+ .el-upload-dragger>div {
309
+ display: flex;
310
+ align-items: center;
311
+ }
312
+ }
313
+
314
+ .look-dialog {
315
+ video {
316
+ height: 500px;
317
+ object-fit: contain;
318
+ width: 100%;
319
+ }
320
+
321
+ img {
322
+ height: 500px;
323
+ width: 100%;
324
+ object-fit: contain;
325
+ }
326
+ }
327
327
  </style>