manage-client 1.8.23-33 → 1.8.23-37

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.
@@ -1,155 +1,155 @@
1
- var express = require('express')
2
- var webpack = require('webpack')
3
- var config = require('./webpack.dev.conf')
4
- var proxyMiddleware = require('http-proxy-middleware')
5
- // var httpProxy = require('http-proxy')
6
-
7
- var app = express()
8
- var compiler = webpack(config)
9
- // var proxy = httpProxy.createProxyServer()
10
-
11
- var str = 'http://112.35.127.105:8300/', str2 = 'http://112.35.127.105:8300/'
12
- var proxyTable = {
13
- /*'/rs/logic/exportfile': {
14
- target: str2
15
- },*/
16
- '/file': {
17
- target: str
18
- },
19
- // 查找资源服务数据
20
- '/rs/search': {
21
- target: str
22
- },
23
- // 用户登录服务地址
24
- '/rs/user': {
25
- target: str
26
- },
27
- '/rs/path/getParams': {
28
- target: str
29
- },
30
- '/rs/logic/getInitData': {
31
- target: str
32
- },
33
- '/rs/data': {
34
- target: str
35
- },
36
- '/rs/license': {
37
- target: str
38
- },
39
- '/rs/db': {
40
- target: str
41
- },
42
- '/excel': {
43
- target: str
44
- },
45
-
46
- '/rs/logic/getSaleInitData': {
47
- target: str
48
- },
49
- '/rs/logic/getLogin': {
50
- target: str
51
- },
52
- '/rs/config': {
53
- target: 'http://127.0.0.1:8080/manage'
54
- },
55
- '/rs/sql/getLicenseById': {
56
- target: str
57
- },
58
- /*'/rs/Invoice': {
59
- target: 'http://127.0.0.1:8090/Invoice/rs/aisino/invoice'
60
- },*/
61
- '/rs/report': {
62
- //target: 'http://127.0.0.1:8080/manage'
63
- target: 'http://127.0.0.1:8081'
64
- },
65
- '/rs/vue': {
66
- // target: 'http://127.0.0.1:8089/manage'
67
- target: str
68
- },
69
- '/rs': {
70
- //target: 'http://127.0.0.1:8080'
71
- // target: 'http://192.168.50.203:8082/manage'
72
- target: str
73
- }
74
- }
75
-
76
- var devMiddleware = require('webpack-dev-middleware')(compiler, {
77
- publicPath: config.output.publicPath,
78
- stats: {
79
- colors: true,
80
- chunks: false
81
- }
82
- })
83
-
84
- var hotMiddleware = require('webpack-hot-middleware')(compiler)
85
- // force page reload when html-webpack-plugin template changes
86
- compiler.plugin('compilation', function (compilation) {
87
- compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
88
- hotMiddleware.publish({ action: 'reload' })
89
- cb()
90
- })
91
- })
92
-
93
- // proxy api requests
94
- Object.keys(proxyTable).forEach(function (context) {
95
- var options = proxyTable[context]
96
- if (typeof options === 'string') {
97
- options = { target: options }
98
- }
99
- app.use(proxyMiddleware(context, options))
100
- })
101
-
102
- // handle fallback for HTML5 history API
103
- app.use(require('connect-history-api-fallback')())
104
-
105
- // serve webpack bundle output
106
- app.use(devMiddleware)
107
-
108
- // enable hot-reload and state-preserving
109
- // compilation error display
110
- app.use(hotMiddleware)
111
-
112
- // serve pure static assets
113
- app.use('/static', express.static('./static'))
114
-
115
- // app.all('/rs/*', function (req, res) {
116
- // proxy.web(req, res, {
117
- // target: 'http://127.0.0.1:8081/reports'
118
- // })
119
- // })
120
-
121
- // app.all('/rs/*', function (req, res) {
122
- // proxy.web(req, res, {
123
- // target: 'http://127.0.0.1:8081/ldap'
124
- // })
125
- // })
126
- // app.all('/excel/*', function (req, res) {
127
- // proxy.web(req, res, {
128
- // target: 'http://127.0.0.1:8081/charge'
129
- // })
130
- // })
131
-
132
- // app.all('/rs/*', function (req, res) {
133
- // proxy.web(req, res, {
134
- // target: 'http://127.0.0.1:82/charge'
135
- // })
136
- // })
137
-
138
- // app.all('/*', function (req, res) {
139
- // proxy.web(req, res, {
140
- // target: 'http://127.0.0.1:82'
141
- // })
142
- // })
143
- // app.all('/rs/user', function (req, res) {
144
- // proxy.web(req, res, {
145
- // target: 'http://127.0.0.1:82'
146
- // })
147
- // })
148
-
149
- module.exports = app.listen(8085, function (err) {
150
- if (err) {
151
- console.log(err)
152
- return
153
- }
154
- console.log('Listening at http://localhost:8085')
155
- })
1
+ var express = require('express')
2
+ var webpack = require('webpack')
3
+ var config = require('./webpack.dev.conf')
4
+ var proxyMiddleware = require('http-proxy-middleware')
5
+ // var httpProxy = require('http-proxy')
6
+
7
+ var app = express()
8
+ var compiler = webpack(config)
9
+ // var proxy = httpProxy.createProxyServer()
10
+
11
+ var str = 'http://112.35.127.105:8305/', str2 = 'http://127.0.0.1:8086/'
12
+ var proxyTable = {
13
+ /*'/rs/logic/exportfile': {
14
+ target: str2
15
+ },*/
16
+ '/file': {
17
+ target: str
18
+ },
19
+ // 查找资源服务数据
20
+ '/rs/search': {
21
+ target: str
22
+ },
23
+ // 用户登录服务地址
24
+ '/rs/user': {
25
+ target: str
26
+ },
27
+ '/rs/path/getParams': {
28
+ target: str
29
+ },
30
+ '/rs/logic/getInitData': {
31
+ target: str
32
+ },
33
+ '/rs/data': {
34
+ target: str
35
+ },
36
+ '/rs/license': {
37
+ target: str
38
+ },
39
+ '/rs/db': {
40
+ target: str
41
+ },
42
+ '/excel': {
43
+ target: str
44
+ },
45
+
46
+ '/rs/logic/getSaleInitData': {
47
+ target: str
48
+ },
49
+ '/rs/logic/getLogin': {
50
+ target: str
51
+ },
52
+ '/rs/config': {
53
+ target: 'http://127.0.0.1:8080/manage'
54
+ },
55
+ '/rs/sql/getLicenseById': {
56
+ target: str
57
+ },
58
+ /*'/rs/Invoice': {
59
+ target: 'http://127.0.0.1:8090/Invoice/rs/aisino/invoice'
60
+ },*/
61
+ '/rs/report': {
62
+ //target: 'http://127.0.0.1:8080/manage'
63
+ target: 'http://127.0.0.1:8081'
64
+ },
65
+ '/rs/vue': {
66
+ // target: 'http://127.0.0.1:8089/manage'
67
+ target: str
68
+ },
69
+ '/rs': {
70
+ //target: 'http://127.0.0.1:8080'
71
+ // target: 'http://192.168.50.203:8082/manage'
72
+ target: str2
73
+ }
74
+ }
75
+
76
+ var devMiddleware = require('webpack-dev-middleware')(compiler, {
77
+ publicPath: config.output.publicPath,
78
+ stats: {
79
+ colors: true,
80
+ chunks: false
81
+ }
82
+ })
83
+
84
+ var hotMiddleware = require('webpack-hot-middleware')(compiler)
85
+ // force page reload when html-webpack-plugin template changes
86
+ compiler.plugin('compilation', function (compilation) {
87
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
88
+ hotMiddleware.publish({ action: 'reload' })
89
+ cb()
90
+ })
91
+ })
92
+
93
+ // proxy api requests
94
+ Object.keys(proxyTable).forEach(function (context) {
95
+ var options = proxyTable[context]
96
+ if (typeof options === 'string') {
97
+ options = { target: options }
98
+ }
99
+ app.use(proxyMiddleware(context, options))
100
+ })
101
+
102
+ // handle fallback for HTML5 history API
103
+ app.use(require('connect-history-api-fallback')())
104
+
105
+ // serve webpack bundle output
106
+ app.use(devMiddleware)
107
+
108
+ // enable hot-reload and state-preserving
109
+ // compilation error display
110
+ app.use(hotMiddleware)
111
+
112
+ // serve pure static assets
113
+ app.use('/static', express.static('./static'))
114
+
115
+ // app.all('/rs/*', function (req, res) {
116
+ // proxy.web(req, res, {
117
+ // target: 'http://127.0.0.1:8081/reports'
118
+ // })
119
+ // })
120
+
121
+ // app.all('/rs/*', function (req, res) {
122
+ // proxy.web(req, res, {
123
+ // target: 'http://127.0.0.1:8081/ldap'
124
+ // })
125
+ // })
126
+ // app.all('/excel/*', function (req, res) {
127
+ // proxy.web(req, res, {
128
+ // target: 'http://127.0.0.1:8081/charge'
129
+ // })
130
+ // })
131
+
132
+ // app.all('/rs/*', function (req, res) {
133
+ // proxy.web(req, res, {
134
+ // target: 'http://127.0.0.1:82/charge'
135
+ // })
136
+ // })
137
+
138
+ // app.all('/*', function (req, res) {
139
+ // proxy.web(req, res, {
140
+ // target: 'http://127.0.0.1:82'
141
+ // })
142
+ // })
143
+ // app.all('/rs/user', function (req, res) {
144
+ // proxy.web(req, res, {
145
+ // target: 'http://127.0.0.1:82'
146
+ // })
147
+ // })
148
+
149
+ module.exports = app.listen(8085, function (err) {
150
+ if (err) {
151
+ console.log(err)
152
+ return
153
+ }
154
+ console.log('Listening at http://localhost:8085')
155
+ })
package/dist.zip ADDED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "manage-client",
3
- "version": "1.8.23-33",
3
+ "version": "1.8.23-37",
4
4
  "description": "经营管控模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "directories": {
@@ -55,15 +55,15 @@
55
55
  "vue-amap": "0.5.10",
56
56
  "ncp": "^2.0.0",
57
57
  "rimraf": "^2.5.0",
58
- "sale-client": "1.8.2",
58
+ "sale-client": "1.8.22-30",
59
59
  "selenium-server": "2.52.0",
60
60
  "sinon": "^2.1.0",
61
61
  "sinon-chai": "^2.8.0",
62
62
  "style": "0.0.3",
63
63
  "style-loader": "^0.20.3",
64
- "system-clients": "3.0.59-2",
64
+ "system-clients": "1.6.64",
65
65
  "url-loader": "^0.5.7",
66
- "vue-client": "1.21.35",
66
+ "vue-client": "1.21.35-6",
67
67
  "vue-hot-reload-api": "^1.2.0",
68
68
  "vue-html-loader": "^1.0.0",
69
69
  "vue-loader": "8.2.1",
@@ -1,151 +1,154 @@
1
- <template>
2
- <div class="flex" id='app'>
3
- <criteria-paged :model="model" :pager='true' v-ref:paged>
4
- <criteria @condition-changed='$parent.search' partial='criteria' v-ref:cri>
5
- <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
6
- <div class="row" width="100%">
7
- <div class="col-sm-2 form-group form-input-group">
8
- <label class="control-label">用户编号:</label>
9
- <input class="form-control" condition="f_userinfo_code = '{}'" placeholder='用户编号' type="text"
10
- v-model="model.f_userinfo_code" >
11
- </div>
12
- <div class="col-sm-2 form-group form-input-group">
13
- <label class="control-label">用户姓名:</label>
14
- <input class="form-control" condition="f_user_name like '%{}%'" placeholder='用户姓名' type="text"
15
- v-model="model.f_user_name">
16
- </div>
17
- <div class="col-sm-2 form-group form-input-group">
18
- <label class="control-label">表号:</label>
19
- <input class="form-control" condition="u.f_meternumber = '{}'" placeholder='表号' type="text"
20
- v-model="model.f_meternumber">
21
- </div>
22
- <div class="col-sm-2 form-group form-input-group">
23
- <label class="control-label">地址:</label>
24
- <input class="form-control" condition="f_address like '%{}%'" placeholder='地址' type="text"
25
- v-model="model.f_address">
26
- </div>
27
- <div class="col-sm-2 form-group form-input-group" >
28
- <label class="control-label">气表品牌</label>
29
- <v-select :value.sync="model.f_meter_brand"
30
- v-model="model.f_meter_brand"
31
- :options='$parent.$parent.meterbrands' placeholder='请选择'
32
- condition="f_meter_brand = '{}'"
33
- close-on-select></v-select>
34
- </div>
35
- <div class="col-sm-2 form-group form-input-group">
36
- <label class="control-label">未上报天数:</label>
37
- <v-input :expression.sync = 'model.tianshu' condition="datediff(DAY,isnull(f_hand_date,f.f_createfile_date ),GETDATE()) {}" placeholder='不用气天数' type="text"
38
- v-model="model.tianshu" :show-reset-button="reset"
39
- v-ref:tianshu>
40
- </v-input>
41
- </div>
42
- <div class="col-sm-2 form-group form-input-group">
43
- <label class="control-label" style="word-break:keep-all;">使用公司</label>
44
- <res-select restype='organization'
45
- @res-select="$parent.$parent.getRes"
46
- :initresid="$parent.$parent.orgid">
47
- </res-select>
48
- </div>
49
- </div>
50
- <div class="row">
51
- <div class="span" style = "float:right;margin-top:10px">
52
- <button @click="search()" class="btn btn-success">查询</button>
53
- <button class="btn btn-success" @click="$parent.$parent.clear()">清空</button>
54
- <export-excel :data="$parent.$parent.getCondition"
55
- :field="$parent.$parent.getfield"
56
- sqlurl="rs/logic/exportfile" sql-name="notupload" template-name='未上报查询' :choose-col="true"></export-excel>
57
- </div>
58
- </div>
59
- </div>
60
- </criteria>
61
- <data-grid :model="model" partial='list' v-ref:grid>
62
- <template partial='head'>
63
- <tr>
64
- <th style="text-align:center">用户编号</th>
65
- <th style="text-align:center">用户名称</th>
66
- <th style="text-align:center">联系方式</th>
67
- <th style="text-align:center">表号</th>
68
- <th style="text-align:center">不上传天数</th>
69
- <th style="text-align:center">上次通讯时间</th>
70
- <th style="text-align:center">地址</th>
71
- </tr>
72
- </template>
73
- <template partial='body'>
74
- <td style="text-align:center">{{row.f_userinfo_code}}</td>
75
- <td style="text-align:center">{{row.f_user_name}}</td>
76
- <td style="text-align:center">{{row.f_user_phone}}</td>
77
- <td style="text-align:center">{{row.f_meternumber}}</td>
78
- <td style="text-align:center">{{row.tianshu}}</td>
79
- <td style="text-align:center">{{row.f_last_time}}</td>
80
- <td style="text-align:center">{{row.f_address}}</td>
81
- </template>
82
- </data-grid>
83
- </criteria-paged>
84
-
85
-
86
- </div>
87
- </template>
88
-
89
- <script>
90
- import {PagedList} from 'vue-client'
91
- import * as Util from '../../Util'
92
- import plugins from '../../plugins/GetLoginInfoService'
93
-
94
- export default {
95
- title: '不上传用户查询',
96
- props: ['data'],
97
- data () {
98
- return {
99
- model: new PagedList('rs/sql/notupload', 20),
100
- orgCondtionStr:'('+this.$login.f.orgid+')',
101
- orgid:[this.$login.f.orgid],
102
- meterbrands: [],
103
- getfield:{'f_userinfo_code':'用户编号','f_user_name':'用户名称','f_user_phone':'联系方式','f_meternumber':'表号','tianshu':'不上传天数',
104
- 'f_last_time':'上次通讯时间','f_address':'地址'
105
- }
106
- }
107
- },
108
- ready () {
109
- this.$refs.paged.$refs.cri.search()
110
- this.initParams()
111
- },
112
- methods: {
113
- search (args) {
114
- this.model.search(args.condition + ' and u.f_orgid in ' + this.orgCondtionStr, args.model)
115
- },
116
- // 将报表保存成文件
117
- confirmReport () {
118
- this.show = true
119
- this.filename = this.data.f_report_name + Util.toStandardDateString()
120
- },
121
- getRes (obj) {
122
- this.orgCondtionStr = plugins.convertToIn(obj)
123
- },
124
- initParams () {
125
-
126
- // 初始化气表品牌
127
- let brandArr = []
128
- this.$MagGetSaleParam.getGasbrand().forEach((item) => {
129
- let temp = {}
130
- temp.label = item.label
131
- temp.value = item.value.f_meter_brand
132
- brandArr.push(temp)
133
- })
134
- this.meterbrands = [{label: '全部', value: ''}, ...brandArr]
135
- },
136
- clear(){
137
- Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
138
- this.$refs.paged.$refs.cri.model[key] = []
139
- })
140
- }
141
- },
142
- computed: {
143
- usertypes () {
144
- return this.$getParams('用户类型', [{label: '全部', value: ''}])
145
- },
146
- getCondition() {
147
- return {condition: `${this.$refs.paged.$refs.cri.condition}` + ' and u.f_orgid in ' + this.orgCondtionStr,}
148
- }
149
- }
150
- }
151
- </script>
1
+ <template>
2
+ <div class="flex" id='app'>
3
+ <criteria-paged :model="model" :pager='true' v-ref:paged>
4
+ <criteria @condition-changed='$parent.search' partial='criteria' v-ref:cri>
5
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
6
+ <div class="row" width="100%">
7
+ <div class="col-sm-2 form-group form-input-group">
8
+ <label class="control-label">用户编号:</label>
9
+ <input class="form-control" condition="f_userinfo_code = '{}'" placeholder='用户编号' type="text"
10
+ v-model="model.f_userinfo_code" >
11
+ </div>
12
+ <div class="col-sm-2 form-group form-input-group">
13
+ <label class="control-label">用户姓名:</label>
14
+ <input class="form-control" condition="f_user_name like '%{}%'" placeholder='用户姓名' type="text"
15
+ v-model="model.f_user_name">
16
+ </div>
17
+ <div class="col-sm-2 form-group form-input-group">
18
+ <label class="control-label">表号:</label>
19
+ <input class="form-control" condition="u.f_meternumber = '{}'" placeholder='表号' type="text"
20
+ v-model="model.f_meternumber">
21
+ </div>
22
+ <div class="col-sm-2 form-group form-input-group">
23
+ <label class="control-label">地址:</label>
24
+ <input class="form-control" condition="f_address like '%{}%'" placeholder='地址' type="text"
25
+ v-model="model.f_address">
26
+ </div>
27
+ <div class="col-sm-2 form-group form-input-group" >
28
+ <label class="control-label">气表品牌</label>
29
+ <v-select :value.sync="model.f_meter_brand"
30
+ v-model="model.f_meter_brand"
31
+ :options='$parent.$parent.meterbrands' placeholder='请选择'
32
+ condition="f_meter_brand = '{}'"
33
+ close-on-select></v-select>
34
+ </div>
35
+ <div class="col-sm-2 form-group form-input-group">
36
+ <label class="control-label">未上报天数:</label>
37
+ <v-input :expression.sync = 'model.tianshu' condition="datediff(DAY,isnull(f_hand_date,f.f_createfile_date ),GETDATE()) {}" placeholder='不用气天数' type="text"
38
+ v-model="model.tianshu" :show-reset-button="reset"
39
+ v-ref:tianshu>
40
+ </v-input>
41
+ </div>
42
+ <div class="col-sm-2 form-group form-input-group">
43
+ <label class="control-label" style="word-break:keep-all;">使用公司</label>
44
+ <res-select restype='organization'
45
+ @res-select="$parent.$parent.getRes"
46
+ :initresid="$parent.$parent.orgid">
47
+ </res-select>
48
+ </div>
49
+ </div>
50
+ <div class="row">
51
+ <div class="span" style = "float:right;margin-top:10px">
52
+ <button @click="search()" class="btn btn-success">查询</button>
53
+ <button class="btn btn-success" @click="$parent.$parent.clear()">清空</button>
54
+ <export-excel :data="$parent.$parent.getCondition"
55
+ :field="$parent.$parent.getfield"
56
+ sqlurl="rs/logic/exportfile" sql-name="notupload" template-name='未上报查询' :choose-col="true"></export-excel>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </criteria>
61
+ <data-grid :model="model" partial='list' v-ref:grid>
62
+ <template partial='head'>
63
+ <tr>
64
+ <th style="text-align:center">用户编号</th>
65
+ <th style="text-align:center">用户名称</th>
66
+ <th style="text-align:center">联系方式</th>
67
+ <th style="text-align:center">表号</th>
68
+ <th style="text-align:center">不上传天数</th>
69
+ <th style="text-align:center">上次通讯时间</th>
70
+ <th style="text-align:center">地址</th>
71
+ </tr>
72
+ </template>
73
+ <template partial='body'>
74
+ <td style="text-align:center">{{row.f_userinfo_code}}</td>
75
+ <td style="text-align:center">{{row.f_user_name}}</td>
76
+ <td style="text-align:center">{{row.f_user_phone}}</td>
77
+ <td style="text-align:center">{{row.f_meternumber}}</td>
78
+ <td style="text-align:center">{{row.tianshu}}</td>
79
+ <td style="text-align:center">{{row.f_last_time}}</td>
80
+ <td style="text-align:center">{{row.f_address}}</td>
81
+ </template>
82
+ </data-grid>
83
+ </criteria-paged>
84
+
85
+
86
+ </div>
87
+ </template>
88
+
89
+ <script>
90
+ import {PagedList} from 'vue-client'
91
+ import * as Util from '../../Util'
92
+ import plugins from '../../plugins/GetLoginInfoService'
93
+ let readyGen = async function (self) {
94
+ self.$refs.paged.$refs.cri.model.tianshu = `>= '10'`
95
+ console.log('this.$refs.paged.model.condition',self.$refs.paged.model.condition)
96
+ self.$refs.paged.$refs.cri.search()
97
+ await self.$LoadParams.loadParam(self.$login.f)
98
+ self.initParams()
99
+ }
100
+ export default {
101
+ title: '不上传用户查询',
102
+ props: ['data'],
103
+ data () {
104
+ return {
105
+ model: new PagedList('rs/sql/notupload', 20),
106
+ orgCondtionStr:'('+this.$login.f.orgid+')',
107
+ orgid:[this.$login.f.orgid],
108
+ meterbrands: [],
109
+ getfield:{'f_userinfo_code':'用户编号','f_user_name':'用户名称','f_user_phone':'联系方式','f_meternumber':'表号','tianshu':'不上传天数',
110
+ 'f_last_time':'上次通讯时间','f_address':'地址'
111
+ }
112
+ }
113
+ },
114
+ ready () {
115
+ readyGen(this)
116
+ },
117
+ methods: {
118
+ search (args) {
119
+ this.model.search(args.condition + ' and u.f_orgid in ' + this.orgCondtionStr, args.model)
120
+ },
121
+ // 将报表保存成文件
122
+ confirmReport () {
123
+ this.show = true
124
+ this.filename = this.data.f_report_name + Util.toStandardDateString()
125
+ },
126
+ getRes (obj) {
127
+ this.orgCondtionStr = plugins.convertToIn(obj)
128
+ },
129
+ initParams () {
130
+ let brandArr = []
131
+ this.$GetSaleParam.getGasbrand().forEach((item) => {
132
+ let temp = {}
133
+ temp.label = item.label
134
+ temp.value = item.value.f_meter_brand
135
+ brandArr.push(temp)
136
+ })
137
+ this.meterbrands = [{label: '全部', value: ''}, ...brandArr]
138
+ },
139
+ clear(){
140
+ Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
141
+ this.$refs.paged.$refs.cri.model[key] = []
142
+ })
143
+ }
144
+ },
145
+ computed: {
146
+ usertypes () {
147
+ return this.$getParams('用户类型', [{label: '全部', value: ''}])
148
+ },
149
+ getCondition() {
150
+ return {condition: `${this.$refs.paged.$refs.cri.condition}` + ' and u.f_orgid in ' + this.orgCondtionStr,}
151
+ }
152
+ }
153
+ }
154
+ </script>