apply-clients 3.5.1 → 3.5.3

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 (45) hide show
  1. package/build/dev-server.js +142 -133
  2. package/package.json +118 -118
  3. package/src/App.vue +26 -21
  4. package/src/applyAndroid.js +58 -58
  5. package/src/components/android/AppSign.vue +152 -152
  6. package/src/components/android/AppTakePic.vue +181 -181
  7. package/src/components/android/Process/AppChargeList.vue +224 -224
  8. package/src/components/android/Process/AppExplorationUser.vue +508 -508
  9. package/src/components/android/Process/AppOtherChargeList.vue +255 -219
  10. package/src/components/product/Install/ContractCharge.vue +210 -210
  11. package/src/filiale/fugou/android/AppChargeManagement.vue +625 -625
  12. package/src/filiale/hongda/pc/FunctionServiceControl.vue +526 -525
  13. package/src/filiale/qianneng/android/AppExplorationUser.vue +441 -441
  14. package/src/filiale/qianneng/android/AppServiceControl.vue +1608 -1608
  15. package/src/filiale/qianneng/pc/Applybatchdispatch.vue +685 -685
  16. package/src/filiale/qianneng/pc/ExplorationSelect.vue +492 -492
  17. package/src/filiale/qianneng/pc/FunctionServiceControl.vue +521 -521
  18. package/src/filiale/qianneng/pc/InstallInfoSelect.vue +392 -392
  19. package/src/filiale/qianneng/pc/InstallationDetails.vue +561 -561
  20. package/src/filiale/qianneng/pc/ServiceControl.vue +1351 -1340
  21. package/src/filiale/qianneng/pc/SupervisoryList.vue +344 -344
  22. package/src/filiale/qianneng/pc/SupervisoryServiceControl.vue +871 -871
  23. package/src/filiale/qianneng/pc/chargeManagement.vue +656 -656
  24. package/src/filiale/qianneng/pc/printactivatecard.vue +295 -295
  25. package/src/filiale/qianneng/pc/supplementalAgreement.vue +344 -344
  26. package/src/filiale/yangchunboneng/android/AppAddMaterialScience.vue +390 -390
  27. package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +120 -120
  28. package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +552 -552
  29. package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +507 -507
  30. package/src/filiale/yangchunboneng/android/AppInstallationDetails.vue +492 -492
  31. package/src/filiale/yangchunboneng/android/AppOtherChargeManagement.vue +116 -116
  32. package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1552 -1552
  33. package/src/filiale/yangchunboneng/android/AppTakePic.vue +181 -181
  34. package/src/filiale/yangchunboneng/android/chargesList.vue +170 -170
  35. package/src/filiale/yangchunboneng/android.js +16 -16
  36. package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +496 -496
  37. package/src/filiale/yangchunboneng/pc/InstallationDetails.vue +609 -609
  38. package/src/filiale/yangchunboneng/pc/ServiceControl.vue +1782 -1782
  39. package/src/filiale/yangchunboneng/pc/ServiceView.vue +1005 -1005
  40. package/src/filiale/yangchunboneng/pc/addMaterialScience.vue +374 -374
  41. package/src/filiale/yangchunboneng/pc/chargeManagement.vue +960 -960
  42. package/src/filiale/yangchunboneng/pc/devicesManagement.vue +511 -511
  43. package/src/filiale/yangchunboneng/pc/otherchargeManagement.vue +214 -214
  44. package/src/filiale/yangchunboneng/pc.js +17 -17
  45. package/src/main.js +23 -23
@@ -1,58 +1,58 @@
1
- import Vue from 'vue'
2
- import { all } from 'vue-client'
3
- Vue.config.silent = true
4
- import ApplyGetSaleParam from './stores/ApplyGetSaleParams'
5
- import ApplyLoadParams from './stores/ApplyLoadParams'
6
- /** ****************服务插件*********************/
7
-
8
- export default function (filiale) {
9
- Vue.use(ApplyGetSaleParam)
10
- Vue.use(ApplyLoadParams)
11
- /** ***************************报建模块*********************************/
12
- // 报建 总入口
13
- Vue.component('app-exploration-user', (resolve) => { require(['./components/android/Process/AppExplorationUser'], resolve) })
14
- Vue.component('app-service-control', (resolve) => { require(['./components/android/Process/AppServiceControl'], resolve) })
15
- Vue.component('app-process-supervisory', (resolve) => { require(['./components/android/Supervisory/AppProcessSupervisory'], resolve) })
16
- Vue.component('app-supervisory-cart', (resolve) => { require(['./components/android/Supervisory/AppSupervisoryCart'], resolve) })
17
- Vue.component('app-istall-function', (resolve) => { require(['./components/android/Function/AppInstallFunction'], resolve) })
18
- Vue.component('app-function-service-control', (resolve) => { require(['./components/android/Function/AppFunctionServiceControl'], resolve) })
19
-
20
- Vue.component('app-sign', (resolve) => { require(['./components/android/AppSign'], resolve) })
21
- Vue.component('app-take-pic', (resolve) => { require(['./components/android/AppTakePic'], resolve) })
22
- Vue.component('app-service-view', (resolve) => { require(['./components/android/AppServiceView'], resolve) })
23
- Vue.component('app-onetomany', (resolve) => { require(['./components/android/AppOnetomany'], resolve) })
24
-
25
- Vue.component('app-add-material-science', (resolve) => { require(['./components/android/Process/Processes/AppAddMaterialScience'], resolve) })
26
- Vue.component('app-add-material-new', (resolve) => { require(['./components/android/Process/Processes/chargesList'], resolve) })
27
- Vue.component('app-installation-details', (resolve) => { require(['./components/android/Process/Processes/AppInstallationDetails'], resolve) })
28
- Vue.component('app-apply-devices-management', (resolve) => { require(['./components/android/Process/Processes/AppDevicesManagement'], resolve) })
29
- Vue.component('app-charge-management', (resolve) => { require(['./components/android/Process/Processes/AppChargeManagement'], resolve) })
30
- Vue.component('app-supplemental-agreement', (resolve) => { require(['./components/android/Process/Processes/AppSupplementalAgreement'], resolve) })
31
- // 选择用户信息
32
- Vue.component('select-userinfo', (resolve) => { require(['./components/android/Process/Processes/selectUserinfo'], resolve) })
33
- // 选择报建项目
34
- Vue.component('select-apply', (resolve) => { require(['./components/android/Process/Processes/selectApply'], resolve) })
35
- Vue.component('app-build-sign', (resolve) => { require(['./components/android/Process/Processes/AppBuildSign'], resolve) })
36
-
37
- // 区域 地址下拉框联动组件
38
- Vue.component('app-res-area-select', (resolve) => { require(['./components/android/AreaSelect/AppResAreaSelect'], resolve) })
39
- Vue.component('app-res-area-select-group', (resolve) => { require(['./components/android/AreaSelect/AppResAreaSelectGroup'], resolve) })
40
- Vue.component('area-select', (resolve) => { require(['./components/product/AreaSelect/MyAreaSelect'], resolve) })
41
- Vue.component('apply-print-charge', (resolve) => { require(['./components/product/Process/Processes/Print/printCharge'], resolve) })
42
- // 地图组件
43
- Vue.component('app-res-area-map-group', (resolve) => { require(['./components/android/AreaSelect/AppResAreaMapGroup'], resolve) })
44
- // 扫描二维码
45
- Vue.component('app-qrcode-reader', (resolve) => { require(['./components/android/AreaSelect/AppQrcodeReader'], resolve) })
46
- Vue.component('app-ignition-ventilation', (resolve) => { require(['./components/android/Ignition/VentilationIgnition'], resolve) })
47
- Vue.component('app-ignition-handle', (resolve) => { require(['./components/android/Ignition/VentilationIgnitionHandle'], resolve) })
48
- Vue.component('material-one', (resolve) => { require(['./components/android/MaterIialOne'], resolve) })
49
- Vue.component('appinstallation-material', (resolve) => { require(['./components/android/AppInstallationMaterial.vue'], resolve) })
50
- Vue.component('app-other-charge-list', (resolve) => { require(['./components/android/Process/AppOtherChargeList.vue'], resolve) })
51
- // 特殊目录给这里加
52
- if (filiale) {
53
- let filialeComp = require(`./filiale/${filiale}/android`).specialComp
54
- for (let key in filialeComp) {
55
- Vue.component(key, filialeComp[key])
56
- }
57
- }
58
- }
1
+ import Vue from 'vue'
2
+ import { all } from 'vue-client'
3
+ Vue.config.silent = true
4
+ import ApplyGetSaleParam from './stores/ApplyGetSaleParams'
5
+ import ApplyLoadParams from './stores/ApplyLoadParams'
6
+ /** ****************服务插件*********************/
7
+
8
+ export default function (filiale) {
9
+ Vue.use(ApplyGetSaleParam)
10
+ Vue.use(ApplyLoadParams)
11
+ /** ***************************报建模块*********************************/
12
+ // 报建 总入口
13
+ Vue.component('app-exploration-user', (resolve) => { require(['./components/android/Process/AppExplorationUser'], resolve) })
14
+ Vue.component('app-service-control', (resolve) => { require(['./components/android/Process/AppServiceControl'], resolve) })
15
+ Vue.component('app-process-supervisory', (resolve) => { require(['./components/android/Supervisory/AppProcessSupervisory'], resolve) })
16
+ Vue.component('app-supervisory-cart', (resolve) => { require(['./components/android/Supervisory/AppSupervisoryCart'], resolve) })
17
+ Vue.component('app-istall-function', (resolve) => { require(['./components/android/Function/AppInstallFunction'], resolve) })
18
+ Vue.component('app-function-service-control', (resolve) => { require(['./components/android/Function/AppFunctionServiceControl'], resolve) })
19
+
20
+ Vue.component('app-sign', (resolve) => { require(['./components/android/AppSign'], resolve) })
21
+ Vue.component('app-take-pic', (resolve) => { require(['./components/android/AppTakePic'], resolve) })
22
+ Vue.component('app-service-view', (resolve) => { require(['./components/android/AppServiceView'], resolve) })
23
+ Vue.component('app-onetomany', (resolve) => { require(['./components/android/AppOnetomany'], resolve) })
24
+
25
+ Vue.component('app-add-material-science', (resolve) => { require(['./components/android/Process/Processes/AppAddMaterialScience'], resolve) })
26
+ Vue.component('app-add-material-new', (resolve) => { require(['./components/android/Process/Processes/chargesList'], resolve) })
27
+ Vue.component('app-installation-details', (resolve) => { require(['./components/android/Process/Processes/AppInstallationDetails'], resolve) })
28
+ Vue.component('app-apply-devices-management', (resolve) => { require(['./components/android/Process/Processes/AppDevicesManagement'], resolve) })
29
+ Vue.component('app-charge-management', (resolve) => { require(['./components/android/Process/Processes/AppChargeManagement'], resolve) })
30
+ Vue.component('app-supplemental-agreement', (resolve) => { require(['./components/android/Process/Processes/AppSupplementalAgreement'], resolve) })
31
+ // 选择用户信息
32
+ Vue.component('select-userinfo', (resolve) => { require(['./components/android/Process/Processes/selectUserinfo'], resolve) })
33
+ // 选择报建项目
34
+ Vue.component('select-apply', (resolve) => { require(['./components/android/Process/Processes/selectApply'], resolve) })
35
+ Vue.component('app-build-sign', (resolve) => { require(['./components/android/Process/Processes/AppBuildSign'], resolve) })
36
+
37
+ // 区域 地址下拉框联动组件
38
+ Vue.component('app-res-area-select', (resolve) => { require(['./components/android/AreaSelect/AppResAreaSelect'], resolve) })
39
+ Vue.component('app-res-area-select-group', (resolve) => { require(['./components/android/AreaSelect/AppResAreaSelectGroup'], resolve) })
40
+ Vue.component('area-select', (resolve) => { require(['./components/product/AreaSelect/MyAreaSelect'], resolve) })
41
+ Vue.component('apply-print-charge', (resolve) => { require(['./components/product/Process/Processes/Print/printCharge'], resolve) })
42
+ // 地图组件
43
+ Vue.component('app-res-area-map-group', (resolve) => { require(['./components/android/AreaSelect/AppResAreaMapGroup'], resolve) })
44
+ // 扫描二维码
45
+ Vue.component('app-qrcode-reader', (resolve) => { require(['./components/android/AreaSelect/AppQrcodeReader'], resolve) })
46
+ Vue.component('app-ignition-ventilation', (resolve) => { require(['./components/android/Ignition/VentilationIgnition'], resolve) })
47
+ Vue.component('app-ignition-handle', (resolve) => { require(['./components/android/Ignition/VentilationIgnitionHandle'], resolve) })
48
+ Vue.component('material-one', (resolve) => { require(['./components/android/MaterIialOne'], resolve) })
49
+ Vue.component('appinstallation-material', (resolve) => { require(['./components/android/AppInstallationMaterial.vue'], resolve) })
50
+ Vue.component('app-other-charge-list', (resolve) => { require(['./components/android/Process/AppOtherChargeList.vue'], resolve) })
51
+ // 特殊目录给这里加
52
+ if (filiale) {
53
+ let filialeComp = require(`./filiale/${filiale}/android`).specialComp
54
+ for (let key in filialeComp) {
55
+ Vue.component(key, filialeComp[key])
56
+ }
57
+ }
58
+ }
@@ -1,152 +1,152 @@
1
- <template>
2
- <div class="panel">
3
- <div class="panel-body panel-self" style="background-color: #F8F8F8;">
4
- <div class="row form-group" style="height: 240px;overflow: scroll;">
5
- <img :src="f_sign_path" width="100%" height="100%" />
6
- </div>
7
- <div class="row text-right form-group">
8
- <button class="btn" style="background-color: #f1e404;border-radius: 5px;margin-right: 10px" @click="clean">清除</button>
9
- <button class="btn" style="background-color: #7dc1f4;border-radius: 5px;margin-right: 10px" @click="sign">签名</button>
10
- </div>
11
- </div>
12
- </div>
13
- </template>
14
- <script>
15
- import {getNowDate, guid, isEmpty} from '../Util'
16
- import {PagedList} from 'vue-client'
17
- import {HttpResetClass} from 'vue-client'
18
- import QRCode from 'qrcodejs2'
19
- import Vue from "vue";
20
-
21
- export default {
22
- title: '签字',
23
- props: ['filePath','blobid','type', 'defname'],
24
- data () {
25
- return {
26
- f_sign_path: null,
27
- fileName: null
28
- }
29
- },
30
- ready () {
31
- console.log('在ready里打印一下this.filePath',this.filePath)
32
- this.f_sign_path = this.filePath
33
- console.log('在ready里打印一下this.f_sign_path',this.f_sign_path)
34
- this.getFiles()
35
- },
36
- methods: {
37
- clean () {
38
- this.f_sign_path = null
39
- this.fileName = null
40
- this.$emit('sign-clean')
41
- },
42
- sign () {
43
- this.type='手机签字'
44
- console.log('==============签字打印this============',this)
45
- this.delAudioFile(this.f_sign_path)
46
- this.fileName = guid() + '.jpg'
47
- HostApp.__callback__ = this.signCallback
48
- HostApp.__this__ = this
49
- HostApp.getSignature({
50
- file: this.fileName,
51
- requestCode: 111,
52
- callback: 'javascript:HostApp.__callback__("f_sign_path", "%s");'
53
- })
54
- },
55
- // 签名回调
56
- signCallback (prop, signPath) {
57
- console.log('==============签字回调============')
58
- console.log(signPath)
59
- HostApp.__this__.$set(prop, signPath)
60
- console.log(HostApp.__this__.f_sign_path)
61
-
62
- HostApp.__this__.uploadFile()
63
-
64
- HostApp.__callback__ = null
65
- HostApp.__this__ = null
66
- },
67
- uploadFile () {
68
- console.log('===================签字文件上传==============')
69
- console.log('===================打印id==============',HostApp.__this__.blobid)
70
- let data = {
71
- defname:HostApp.__this__.defname,
72
- type:HostApp.__this__.type,
73
- blodid: HostApp.__this__.blobid,
74
- username: Vue.user.name,
75
- fremarks: '报装手机签字文件',
76
- fileName: HostApp.__this__.fileName,
77
- fileUrl: HostApp.__this__.f_sign_path
78
- }
79
-
80
- console.log('-----------bzLogic-----------------')
81
- console.log(JSON.stringify(data))
82
- let res = HostApp.bzLogic({
83
- 'logic': 'appFileUpload',
84
- 'data': data
85
- })
86
- console.log('===============上传回调=================')
87
- console.log(JSON.stringify(res))
88
- HostApp.__this__.getFiles(res.id)
89
- },
90
- async getFiles (fileid) {
91
- console.log('=========进来===============')
92
- let http = new HttpResetClass()
93
- console.log('=========进来===============')
94
- let data = {
95
- tablename: 't_files',
96
- condition: `f_blobid = '${this.blobid}' and fremarks='报装手机签字文件' order by f_uploaddate desc`
97
- }
98
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data: data}, {
99
- // let res = await http.load('POST', `rs/sql/apply_singleTable`, {data: data}, {
100
- warnMsg: null,
101
- resolveMsg: null
102
- })
103
- if (res.data.length > 0){
104
- console.log('=========查询回调===============')
105
- let fileUrl = `${this.$androidUtil.getProxyUrl()}/${res.data[0].f_downloadpath.substring(res.data[0].f_downloadpath.lastIndexOf(":\\") + 2)}`
106
- console.log(fileUrl)
107
- // HostApp.__this__.$set('f_sign_path', fileUrl)
108
- // HostApp.__this__.f_sign_path = fileUrl
109
- this.f_sign_path = fileUrl
110
- this.$emit('sign-success', fileUrl)
111
- }
112
- },
113
- delAudioFile (signPath) {
114
- if (!signPath) {
115
- return
116
- }
117
- HostApp.delfile(signPath)
118
- this.f_sign_path = null
119
- this.fileName = null
120
- }
121
- },
122
- events: {
123
- },
124
- computed: {
125
- },
126
- watch: {
127
- }
128
- }
129
- </script>
130
- <style scoped lang="less">
131
- .qrcode {
132
- display: inline-block !important;
133
- margin: 10px 0px;
134
- }
135
- .panel-self{
136
- border-radius: 10px;
137
- border:1px solid #499EDF;
138
- background-color: #F8F8F8;
139
- }
140
- .vertical-center {
141
- display: flex;
142
- align-items: center;
143
- text-align: center;
144
- }
145
- /*清除model中的浮动*/
146
- .clearfix:after,.clearfix:before{
147
- display: table;
148
- }
149
- .clearfix:after{
150
- clear: both;
151
- }
152
- </style>
1
+ <template>
2
+ <div class="panel">
3
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;">
4
+ <div class="row form-group" style="height: 240px;overflow: scroll;">
5
+ <img :src="f_sign_path" width="100%" height="100%" />
6
+ </div>
7
+ <div class="row text-right form-group">
8
+ <button class="btn" style="background-color: #f1e404;border-radius: 5px;margin-right: 10px" @click="clean">清除</button>
9
+ <button class="btn" style="background-color: #7dc1f4;border-radius: 5px;margin-right: 10px" @click="sign">签名</button>
10
+ </div>
11
+ </div>
12
+ </div>
13
+ </template>
14
+ <script>
15
+ import {getNowDate, guid, isEmpty} from '../Util'
16
+ import {PagedList} from 'vue-client'
17
+ import {HttpResetClass} from 'vue-client'
18
+ import QRCode from 'qrcodejs2'
19
+ import Vue from "vue";
20
+
21
+ export default {
22
+ title: '签字',
23
+ props: ['filePath','blobid','type', 'defname'],
24
+ data () {
25
+ return {
26
+ f_sign_path: null,
27
+ fileName: null
28
+ }
29
+ },
30
+ ready () {
31
+ console.log('在ready里打印一下this.filePath',this.filePath)
32
+ this.f_sign_path = this.filePath
33
+ console.log('在ready里打印一下this.f_sign_path',this.f_sign_path)
34
+ this.getFiles()
35
+ },
36
+ methods: {
37
+ clean () {
38
+ this.f_sign_path = null
39
+ this.fileName = null
40
+ this.$emit('sign-clean')
41
+ },
42
+ sign () {
43
+ this.type='手机签字'
44
+ console.log('==============签字打印this============',this)
45
+ this.delAudioFile(this.f_sign_path)
46
+ this.fileName = guid() + '.jpg'
47
+ HostApp.__callback__ = this.signCallback
48
+ HostApp.__this__ = this
49
+ HostApp.getSignature({
50
+ file: this.fileName,
51
+ requestCode: 111,
52
+ callback: 'javascript:HostApp.__callback__("f_sign_path", "%s");'
53
+ })
54
+ },
55
+ // 签名回调
56
+ signCallback (prop, signPath) {
57
+ console.log('==============签字回调============')
58
+ console.log(signPath)
59
+ HostApp.__this__.$set(prop, signPath)
60
+ console.log(HostApp.__this__.f_sign_path)
61
+
62
+ HostApp.__this__.uploadFile()
63
+
64
+ HostApp.__callback__ = null
65
+ HostApp.__this__ = null
66
+ },
67
+ uploadFile () {
68
+ console.log('===================签字文件上传==============')
69
+ console.log('===================打印id==============',HostApp.__this__.blobid)
70
+ let data = {
71
+ defname:HostApp.__this__.defname,
72
+ type:HostApp.__this__.type,
73
+ blodid: HostApp.__this__.blobid,
74
+ username: Vue.user.name,
75
+ fremarks: '报装手机签字文件',
76
+ fileName: HostApp.__this__.fileName,
77
+ fileUrl: HostApp.__this__.f_sign_path
78
+ }
79
+
80
+ console.log('-----------bzLogic-----------------')
81
+ console.log(JSON.stringify(data))
82
+ let res = HostApp.bzLogic({
83
+ 'logic': 'appFileUpload',
84
+ 'data': data
85
+ })
86
+ console.log('===============上传回调=================')
87
+ console.log(JSON.stringify(res))
88
+ HostApp.__this__.getFiles(res.id)
89
+ },
90
+ async getFiles (fileid) {
91
+ console.log('=========进来===============')
92
+ let http = new HttpResetClass()
93
+ console.log('=========进来===============')
94
+ let data = {
95
+ tablename: 't_files',
96
+ condition: `f_blobid = '${this.blobid}' and fremarks='报装手机签字文件' order by f_uploaddate desc`
97
+ }
98
+ let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data: data}, {
99
+ // let res = await http.load('POST', `rs/sql/apply_singleTable`, {data: data}, {
100
+ warnMsg: null,
101
+ resolveMsg: null
102
+ })
103
+ if (res.data.length > 0){
104
+ console.log('=========查询回调===============')
105
+ let fileUrl = `${this.$androidUtil.getProxyUrl()}/${res.data[0].f_downloadpath.substring(res.data[0].f_downloadpath.lastIndexOf(":\\") + 2)}`
106
+ console.log(fileUrl)
107
+ // HostApp.__this__.$set('f_sign_path', fileUrl)
108
+ // HostApp.__this__.f_sign_path = fileUrl
109
+ this.f_sign_path = fileUrl
110
+ this.$emit('sign-success', fileUrl)
111
+ }
112
+ },
113
+ delAudioFile (signPath) {
114
+ if (!signPath) {
115
+ return
116
+ }
117
+ HostApp.delfile(signPath)
118
+ this.f_sign_path = null
119
+ this.fileName = null
120
+ }
121
+ },
122
+ events: {
123
+ },
124
+ computed: {
125
+ },
126
+ watch: {
127
+ }
128
+ }
129
+ </script>
130
+ <style scoped lang="less">
131
+ .qrcode {
132
+ display: inline-block !important;
133
+ margin: 10px 0px;
134
+ }
135
+ .panel-self{
136
+ border-radius: 10px;
137
+ border:1px solid #499EDF;
138
+ background-color: #F8F8F8;
139
+ }
140
+ .vertical-center {
141
+ display: flex;
142
+ align-items: center;
143
+ text-align: center;
144
+ }
145
+ /*清除model中的浮动*/
146
+ .clearfix:after,.clearfix:before{
147
+ display: table;
148
+ }
149
+ .clearfix:after{
150
+ clear: both;
151
+ }
152
+ </style>