system-phone 3.1.89 → 3.1.90

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-phone",
3
- "version": "3.1.89",
3
+ "version": "3.1.90",
4
4
  "description": "手机模块 前端组件",
5
5
  "author": "何宁社 <524395609@qq.com>",
6
6
  "license": "ISC",
@@ -377,7 +377,7 @@ export default {
377
377
  console.log('获取参数结束')
378
378
  this.loaderShow = false
379
379
  // 弱口令验证
380
- if (this.weakPassword && !(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])(?!.*(123|321|abc|cba))[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{8,16}$/.test(this.password))) {
380
+ if (this.weakPassword && !(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])(?!.*(123|321|abc|cba))[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{12,16}$/.test(this.password))) {
381
381
  await this.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm'])
382
382
  this.modifyPassword = true
383
383
  return
@@ -1,313 +1,313 @@
1
- <template>
2
- <div class="flex " style="background: #f8f8f8">
3
- <div class="auto bg-white" style="line-height: 32px;padding: 10px">
4
- <label style="float: left">指令:{{row.f_instruct_title}} </label>
5
- <div class="auto" style="float: right">
6
- <!--<button type="button" class="btn btn-default btn-sm" @click="$back">返回</button>-->
7
- <button type="button" class="btn btn-default btn-sm" @click="refresh">刷新</button>
8
- <button type="button" class="btn btn-primary btn-sm" @click="cancle">取消</button>
9
- <button type="button" class="btn btn-primary btn-sm" @click="resend">重送</button>
10
- </div>
11
- </div>
12
- <div class="instruct-state flex-row bg-white" style="margin-top: 5px;height:auto;padding: 10px">
13
- <div class="instruct-left col-sm-12 auto">
14
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
15
- <p class="flex-row">
16
- <span >指令状态:</span>
17
- <span class="instruct-content" style="color: #499edf;font-size: 16px;font-weight: bold">{{row.f_instruct_state}}</span>
18
- </p>
19
- </div>
20
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
21
- <p class="flex-row">
22
- <span>执行状态:</span>
23
- <span class="instruct-content" style="color: #499edf;font-size: 16px;font-weight: bold">{{row.f_receive_state}}</span>
24
- </p>
25
- </div>
26
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
27
- <p class="flex-row">
28
- <span>指令编号:</span>
29
- <span class="instruct-content">{{row.id}}</span>
30
- </p>
31
- </div>
32
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
33
-
34
- <p class="flex-row">
35
- <span>表编号:</span>
36
- <span class="instruct-content">{{row.f_user_id}}</span>
37
- </p>
38
- </div>
39
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
40
- <p class="flex-row">
41
- <span>表号:</span>
42
- <span class="instruct-content">{{row.f_meternumber}}</span>
43
- </p>
44
- </div>
45
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
46
- <p class="flex-row">
47
- <span>操作人员:</span>
48
- <span class="instruct-content">{{row.f_inputtor}}</span>
49
- </p>
50
- </div>
51
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
52
- <p class="flex-row">
53
- <span>指令说明:</span>
54
- <span class="instruct-content">{{row.f_instruct_state}}</span>
55
- </p>
56
- </div>
57
- <div class="col-sm-6 col-md-6 col-xs-6 auto">
58
- <p class="flex-row">
59
- <span>表厂别名:</span>
60
- <span class="instruct-content">{{row.f_alias}}</span>
61
- </p>
62
- </div>
63
- <div class="col-sm-6 col-md-6 col-xs-12 auto">
64
- <p class="flex-row">
65
- <span>生成时间:</span>
66
- <span class="instruct-content" style="flex:3 !important;">{{row.f_instruct_date}}</span>
67
- </p>
68
- </div>
69
- <div class="col-sm-6 col-md-6 col-xs-12 auto">
70
- <p class="flex-row">
71
- <span>最后发送时间:</span>
72
- <span class="instruct-content" style="flex:3 !important;">{{row.f_send_date}}</span>
73
- </p>
74
- </div>
75
- <div class="col-sm-6 col-md-6 col-xs-12 auto">
76
- <p class="flex-row">
77
- <span>最后响应时间:</span>
78
- <span class="instruct-content" style="flex:3 !important;">{{row.f_callback_date}}</span>
79
- </p>
80
- </div>
81
- </div>
82
-
83
- </div>
84
- <div class="auto bg-white" style="margin-top: 5px;padding: 10px">
85
- <div class="title auto">
86
- <span>指令状态</span>
87
- </div>
88
- <div class="flex-row" style="font-size: 10px;padding: 10px">
89
- <timeline>
90
- <timeline-item color="#499edf">
91
- <p>待发送</p>
92
- <p>指令已就绪</p>
93
- <p>{{row.f_instruct_date}}</p>
94
- </timeline-item>
95
- <timeline-item :color="row.f_instruct_state==='已发送'?'#499edf':''" >
96
- <p>已发送</p>
97
- <p>已发送,等待响应结果</p>
98
- <p>{{row.f_send_date}}</p>
99
- </timeline-item>
100
- <timeline-item color="red" v-if="row.f_instruct_state==='执行失败'">
101
- <p>执行失败</p>
102
- <p>失败,请查看响应结果</p>
103
- <p>{{row.f_callback_date}}</p>
104
- </timeline-item>
105
- <timeline-item :color="row.f_instruct_state==='执行成功'?'#499edf':''" v-if="row.f_instruct_state!=='执行失败'">
106
- <p>执行成功</p>
107
- <p>指令已执行成功</p>
108
- <p>{{row.f_callback_date}}</p>
109
- </timeline-item>
110
- </timeline>
111
- <!--<div class="step">-->
112
- <!--<div class="step-icon">-->
113
- <!--<img src="../../assets/对号.png" class="send-line" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
114
- <!--</div>-->
115
- <!--<p>待发送</p>-->
116
- <!--<p>指令已就绪</p>-->
117
- <!--<p>{{row.f_instruct_date}}</p>-->
118
-
119
- <!--</div>-->
120
- <!--<div class="step" >-->
121
- <!--<div class="step-icon">-->
122
- <!--<img src="../../assets/对号.png" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
123
- <!--</div>-->
124
- <!--<p class="flex-row">待发送</p>-->
125
- <!--<p class="flex-row">指令已发送</p>-->
126
- <!--<p>{{row.f_send_date}}</p>-->
127
- <!--</div>-->
128
-
129
- <!--<div class="step" >-->
130
- <!--<div style="height: auto">-->
131
- <!--<img src="../../assets/对号.png" class="" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
132
- <!--</div>-->
133
- <!--<p class="flex-row">待发送</p>-->
134
- <!--<p>指令已执行成功</p>-->
135
- <!--<p>{{row.f_callback_date}}</p>-->
136
- <!--</div>-->
137
- </div>
138
-
139
- </div>
140
- <div class="row bg-white" style="margin-top: 5px;">
141
- <div class="content-head" style="background: #fafafa;height: 2em;">
142
- <p style="padding-left: 10px;line-height: 2em">指令内容</p>
143
- </div>
144
- <div style="height: auto;padding: 10px" >
145
- <p>{</p>
146
- <p v-for="item in content">
147
- <span>{{item}}</span>
148
- <span v-if="$index<content.length-1">,</span>
149
- </p>
150
- <p>}</p>
151
- </div>
152
- </div>
153
- </div>
154
- </template>
155
- <script>
156
- import {HttpResetClass} from 'vue-client'
157
- export default {
158
- title: '指令信息',
159
- data () {
160
- return {
161
- content:[],
162
- msg: '',
163
- show: false
164
- }
165
- },
166
- props:['row'],
167
- methods:{
168
- refresh(){
169
- let data = {
170
- items: '*',
171
- tablename: 't_instruct',
172
- orderitem: 'id desc',
173
- condition: ` id = '${this.row.id}'`
174
- }
175
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/iot_singleTable_OrderBy`, {data: data}).then((row) => {
176
- // console.log('查询返回'+JSON.stringify(row))
177
- this.row = row.data[0]
178
- }).catch((e) => {
179
- // console.log('正在维护!')
180
- // console.log('错误信息+++++++'+JSON.stringify(e))
181
- })
182
- },
183
- cancle(){
184
- this.$showMessage(`您确认要取消指令吗?`, ['confirm', 'cancel']).then(async (res) => {
185
- if (res === 'confirm') {
186
- let http = new HttpResetClass()
187
- let condition = `id = '${this.row.id}'`
188
- // console.log('修改条件===' + JSON.stringify(condition))
189
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/cancelSendInstruct`, {data: {condition: condition}}).then((row) => {
190
- this.$showMessage('取消指令操作成功!')
191
- this.refresh()
192
- // console.log('修改返回' + JSON.stringify(row))
193
- // this.$showMessage('操作成功!将会在一段时间内重新生成开户指令!')
194
- }).catch((e) => {
195
- this.$showMessage('操作失败!请稍后重试!')
196
- // console.log('错误信息+++++++'+JSON.stringify(e))
197
- })
198
- }
199
- })
200
- },
201
- resend(){
202
- this.$showMessage(`您确认要重新发送指令?`, ['confirm', 'cancel']).then(async (res) => {
203
- if (res === 'confirm') {
204
- let http = new HttpResetClass()
205
- let condition = `id = '${this.row.id}'`
206
- // console.log('修改条件===' + JSON.stringify(condition))
207
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/againSendInstruct`, {data: {condition: condition}}).then((row) => {
208
- // console.log('修改返回' + JSON.stringify(row))
209
- this.refresh()
210
- this.$showMessage('操作成功!将会在一段时间内重新发送指令!')
211
- }).catch((e) => {
212
- this.$showMessage('操作失败!请稍后重试!')
213
- // console.log('错误信息+++++++'+JSON.stringify(e))
214
- })
215
- }
216
- })
217
- },
218
- getInitData(){
219
- let data = JSON.parse(this.row.f_instruct_content)
220
- this.content = []
221
- for(let key in data){
222
- let param = key+':'+data[key]
223
- this.content.push(param)
224
- }
225
- },
226
- },
227
- watch:{
228
- 'row'(val){
229
- if(val){
230
- this.getInitData()
231
- }
232
- }
233
- },
234
- ready () {
235
- this.getInitData()
236
- }
237
- }
238
- </script>
239
- <style media="screen" scoped>
240
- div::-webkit-scrollbar {
241
- width: 0 !important;
242
- height: 0 !important;
243
- }
244
-
245
- div {
246
- -ms-overflow-style: none;
247
- overflow: -moz-scrollbars-none;
248
- }
249
-
250
- .font-head{
251
- font-size: 14px;
252
- font-weight: bold;
253
- color: #333;
254
- }
255
- .instruct-content{
256
- flex:1.5 !important;
257
- }
258
- .font-content{
259
- font-size: 12px;
260
- font-weight: normal;
261
- color: #666666;
262
- }
263
- .meterinfo{
264
- border:1px solid #eeeeee;
265
- /*border-right: 2px solid #eeeeee;*/
266
- }
267
- .instruct-right div{
268
- height: auto;
269
- }
270
- .instruct-state{
271
- font-size: 14px;
272
- }
273
- .instruct{
274
- font-size: 10px;
275
- }
276
- .step{
277
- flex:1
278
- }
279
- .step-icon{
280
- height: auto;
281
- }
282
- @media screen and (max-width: 1920px){
283
- .step-icon:after{
284
- content: "";
285
- width: 30%;
286
- height: 2px;
287
- margin-top: 16px;
288
- background-color: #6eb0e3;
289
- position: absolute;
290
- /*top: 10px;*/
291
-
292
- }
293
- }
294
- @media screen and (max-width: 768px){
295
- .step-icon:after{
296
- content: "";
297
- width: 22%;
298
- height: 2px;
299
- margin-top: 16px;
300
- background-color: #6eb0e3;
301
- position: absolute;
302
- /*top: 10px;*/
303
-
304
- }
305
- }
306
-
307
- .step p{
308
- margin-bottom: 5px !important;
309
- }
310
- p span{
311
- flex:1
312
- }
313
- </style>
1
+ <template>
2
+ <div class="flex " style="background: #f8f8f8">
3
+ <div class="auto bg-white" style="line-height: 32px;padding: 10px">
4
+ <label style="float: left">指令:{{row.f_instruct_title}} </label>
5
+ <div class="auto" style="float: right">
6
+ <!--<button type="button" class="btn btn-default btn-sm" @click="$back">返回</button>-->
7
+ <button type="button" class="btn btn-default btn-sm" @click="refresh">刷新</button>
8
+ <button type="button" class="btn btn-primary btn-sm" @click="cancle">取消</button>
9
+ <button type="button" class="btn btn-primary btn-sm" @click="resend">重送</button>
10
+ </div>
11
+ </div>
12
+ <div class="instruct-state flex-row bg-white" style="margin-top: 5px;height:auto;padding: 10px">
13
+ <div class="instruct-left col-sm-12 auto">
14
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
15
+ <p class="flex-row">
16
+ <span >指令状态:</span>
17
+ <span class="instruct-content" style="color: #499edf;font-size: 16px;font-weight: bold">{{row.f_instruct_state}}</span>
18
+ </p>
19
+ </div>
20
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
21
+ <p class="flex-row">
22
+ <span>执行状态:</span>
23
+ <span class="instruct-content" style="color: #499edf;font-size: 16px;font-weight: bold">{{row.f_receive_state}}</span>
24
+ </p>
25
+ </div>
26
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
27
+ <p class="flex-row">
28
+ <span>指令编号:</span>
29
+ <span class="instruct-content">{{row.id}}</span>
30
+ </p>
31
+ </div>
32
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
33
+
34
+ <p class="flex-row">
35
+ <span>表编号:</span>
36
+ <span class="instruct-content">{{row.f_user_id}}</span>
37
+ </p>
38
+ </div>
39
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
40
+ <p class="flex-row">
41
+ <span>表号:</span>
42
+ <span class="instruct-content">{{row.f_meternumber}}</span>
43
+ </p>
44
+ </div>
45
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
46
+ <p class="flex-row">
47
+ <span>操作人员:</span>
48
+ <span class="instruct-content">{{row.f_inputtor}}</span>
49
+ </p>
50
+ </div>
51
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
52
+ <p class="flex-row">
53
+ <span>指令说明:</span>
54
+ <span class="instruct-content">{{row.f_instruct_state}}</span>
55
+ </p>
56
+ </div>
57
+ <div class="col-sm-6 col-md-6 col-xs-6 auto">
58
+ <p class="flex-row">
59
+ <span>表厂别名:</span>
60
+ <span class="instruct-content">{{row.f_alias}}</span>
61
+ </p>
62
+ </div>
63
+ <div class="col-sm-6 col-md-6 col-xs-12 auto">
64
+ <p class="flex-row">
65
+ <span>生成时间:</span>
66
+ <span class="instruct-content" style="flex:3 !important;">{{row.f_instruct_date}}</span>
67
+ </p>
68
+ </div>
69
+ <div class="col-sm-6 col-md-6 col-xs-12 auto">
70
+ <p class="flex-row">
71
+ <span>最后发送时间:</span>
72
+ <span class="instruct-content" style="flex:3 !important;">{{row.f_send_date}}</span>
73
+ </p>
74
+ </div>
75
+ <div class="col-sm-6 col-md-6 col-xs-12 auto">
76
+ <p class="flex-row">
77
+ <span>最后响应时间:</span>
78
+ <span class="instruct-content" style="flex:3 !important;">{{row.f_callback_date}}</span>
79
+ </p>
80
+ </div>
81
+ </div>
82
+
83
+ </div>
84
+ <div class="auto bg-white" style="margin-top: 5px;padding: 10px">
85
+ <div class="title auto">
86
+ <span>指令状态</span>
87
+ </div>
88
+ <div class="flex-row" style="font-size: 10px;padding: 10px">
89
+ <timeline>
90
+ <timeline-item color="#499edf">
91
+ <p>待发送</p>
92
+ <p>指令已就绪</p>
93
+ <p>{{row.f_instruct_date}}</p>
94
+ </timeline-item>
95
+ <timeline-item :color="row.f_instruct_state==='已发送'?'#499edf':''" >
96
+ <p>已发送</p>
97
+ <p>已发送,等待响应结果</p>
98
+ <p>{{row.f_send_date}}</p>
99
+ </timeline-item>
100
+ <timeline-item color="red" v-if="row.f_instruct_state==='执行失败'">
101
+ <p>执行失败</p>
102
+ <p>失败,请查看响应结果</p>
103
+ <p>{{row.f_callback_date}}</p>
104
+ </timeline-item>
105
+ <timeline-item :color="row.f_instruct_state==='执行成功'?'#499edf':''" v-if="row.f_instruct_state!=='执行失败'">
106
+ <p>执行成功</p>
107
+ <p>指令已执行成功</p>
108
+ <p>{{row.f_callback_date}}</p>
109
+ </timeline-item>
110
+ </timeline>
111
+ <!--<div class="step">-->
112
+ <!--<div class="step-icon">-->
113
+ <!--<img src="../../assets/对号.png" class="send-line" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
114
+ <!--</div>-->
115
+ <!--<p>待发送</p>-->
116
+ <!--<p>指令已就绪</p>-->
117
+ <!--<p>{{row.f_instruct_date}}</p>-->
118
+
119
+ <!--</div>-->
120
+ <!--<div class="step" >-->
121
+ <!--<div class="step-icon">-->
122
+ <!--<img src="../../assets/对号.png" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
123
+ <!--</div>-->
124
+ <!--<p class="flex-row">待发送</p>-->
125
+ <!--<p class="flex-row">指令已发送</p>-->
126
+ <!--<p>{{row.f_send_date}}</p>-->
127
+ <!--</div>-->
128
+
129
+ <!--<div class="step" >-->
130
+ <!--<div style="height: auto">-->
131
+ <!--<img src="../../assets/对号.png" class="" style="height: 32px;width:32px;margin-bottom: 5px;padding-right: 5px" alt="" >-->
132
+ <!--</div>-->
133
+ <!--<p class="flex-row">待发送</p>-->
134
+ <!--<p>指令已执行成功</p>-->
135
+ <!--<p>{{row.f_callback_date}}</p>-->
136
+ <!--</div>-->
137
+ </div>
138
+
139
+ </div>
140
+ <div class="row bg-white" style="margin-top: 5px;">
141
+ <div class="content-head" style="background: #fafafa;height: 2em;">
142
+ <p style="padding-left: 10px;line-height: 2em">指令内容</p>
143
+ </div>
144
+ <div style="height: auto;padding: 10px" >
145
+ <p>{</p>
146
+ <p v-for="item in content">
147
+ <span>{{item}}</span>
148
+ <span v-if="$index<content.length-1">,</span>
149
+ </p>
150
+ <p>}</p>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </template>
155
+ <script>
156
+ import {HttpResetClass} from 'vue-client'
157
+ export default {
158
+ title: '指令信息',
159
+ data () {
160
+ return {
161
+ content:[],
162
+ msg: '',
163
+ show: false
164
+ }
165
+ },
166
+ props:['row'],
167
+ methods:{
168
+ refresh(){
169
+ let data = {
170
+ items: '*',
171
+ tablename: 't_instruct',
172
+ orderitem: 'id desc',
173
+ condition: ` id = '${this.row.id}'`
174
+ }
175
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/iot_singleTable_OrderBy`, {data: data}).then((row) => {
176
+ // console.log('查询返回'+JSON.stringify(row))
177
+ this.row = row.data[0]
178
+ }).catch((e) => {
179
+ // console.log('正在维护!')
180
+ // console.log('错误信息+++++++'+JSON.stringify(e))
181
+ })
182
+ },
183
+ cancle(){
184
+ this.$showMessage(`您确认要取消指令吗?`, ['confirm', 'cancel']).then(async (res) => {
185
+ if (res === 'confirm') {
186
+ let http = new HttpResetClass()
187
+ let condition = `id = '${this.row.id}'`
188
+ // console.log('修改条件===' + JSON.stringify(condition))
189
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/cancelSendInstruct`, {data: {condition: condition}}).then((row) => {
190
+ this.$showMessage('取消指令操作成功!')
191
+ this.refresh()
192
+ // console.log('修改返回' + JSON.stringify(row))
193
+ // this.$showMessage('操作成功!将会在一段时间内重新生成开户指令!')
194
+ }).catch((e) => {
195
+ this.$showMessage('操作失败!请稍后重试!')
196
+ // console.log('错误信息+++++++'+JSON.stringify(e))
197
+ })
198
+ }
199
+ })
200
+ },
201
+ resend(){
202
+ this.$showMessage(`您确认要重新发送指令?`, ['confirm', 'cancel']).then(async (res) => {
203
+ if (res === 'confirm') {
204
+ let http = new HttpResetClass()
205
+ let condition = `id = '${this.row.id}'`
206
+ // console.log('修改条件===' + JSON.stringify(condition))
207
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/againSendInstruct`, {data: {condition: condition}}).then((row) => {
208
+ // console.log('修改返回' + JSON.stringify(row))
209
+ this.refresh()
210
+ this.$showMessage('操作成功!将会在一段时间内重新发送指令!')
211
+ }).catch((e) => {
212
+ this.$showMessage('操作失败!请稍后重试!')
213
+ // console.log('错误信息+++++++'+JSON.stringify(e))
214
+ })
215
+ }
216
+ })
217
+ },
218
+ getInitData(){
219
+ let data = JSON.parse(this.row.f_instruct_content)
220
+ this.content = []
221
+ for(let key in data){
222
+ let param = key+':'+data[key]
223
+ this.content.push(param)
224
+ }
225
+ },
226
+ },
227
+ watch:{
228
+ 'row'(val){
229
+ if(val){
230
+ this.getInitData()
231
+ }
232
+ }
233
+ },
234
+ ready () {
235
+ this.getInitData()
236
+ }
237
+ }
238
+ </script>
239
+ <style media="screen" scoped>
240
+ div::-webkit-scrollbar {
241
+ width: 0 !important;
242
+ height: 0 !important;
243
+ }
244
+
245
+ div {
246
+ -ms-overflow-style: none;
247
+ overflow: -moz-scrollbars-none;
248
+ }
249
+
250
+ .font-head{
251
+ font-size: 14px;
252
+ font-weight: bold;
253
+ color: #333;
254
+ }
255
+ .instruct-content{
256
+ flex:1.5 !important;
257
+ }
258
+ .font-content{
259
+ font-size: 12px;
260
+ font-weight: normal;
261
+ color: #666666;
262
+ }
263
+ .meterinfo{
264
+ border:1px solid #eeeeee;
265
+ /*border-right: 2px solid #eeeeee;*/
266
+ }
267
+ .instruct-right div{
268
+ height: auto;
269
+ }
270
+ .instruct-state{
271
+ font-size: 14px;
272
+ }
273
+ .instruct{
274
+ font-size: 10px;
275
+ }
276
+ .step{
277
+ flex:1
278
+ }
279
+ .step-icon{
280
+ height: auto;
281
+ }
282
+ @media screen and (max-width: 1920px){
283
+ .step-icon:after{
284
+ content: "";
285
+ width: 30%;
286
+ height: 2px;
287
+ margin-top: 16px;
288
+ background-color: #6eb0e3;
289
+ position: absolute;
290
+ /*top: 10px;*/
291
+
292
+ }
293
+ }
294
+ @media screen and (max-width: 768px){
295
+ .step-icon:after{
296
+ content: "";
297
+ width: 22%;
298
+ height: 2px;
299
+ margin-top: 16px;
300
+ background-color: #6eb0e3;
301
+ position: absolute;
302
+ /*top: 10px;*/
303
+
304
+ }
305
+ }
306
+
307
+ .step p{
308
+ margin-bottom: 5px !important;
309
+ }
310
+ p span{
311
+ flex:1
312
+ }
313
+ </style>
@@ -1,97 +1,97 @@
1
- <template>
2
- <div class="flex">
3
- <div class="cols-sm-12 col-md-12 col-xs-12 " >
4
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
5
- <div class="flex" style="padding: 0.5rem;align-items: center">
6
- <img src="../../assets/pinpai.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
7
- <span class="font-content">表具品牌</span>
8
- <span class="font-head">{{row.f_meter_brand}}</span>
9
- </div>
10
-
11
- </div>
12
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
13
- <div class="flex" style="padding: 0.5rem;align-items: center">
14
- <img src="../../assets/leixing.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
15
- <span class="font-content">表具类型</span>
16
- <span class="font-head">{{row.f_meter_type}}</span>
17
- </div>
18
- </div>
19
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
20
- <div class="flex" style="padding: 0.5rem;align-items: center">
21
- <img src="../../assets/biaohao.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
22
- <span class="font-content">表号</span>
23
- <span class="font-head">{{row.f_meternumber}}</span>
24
- </div>
25
- </div>
26
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
27
- <div class="flex" style="padding: 0.5rem;align-items: center">
28
- <img src="../../assets/guige.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
29
- <span class="font-content">表具规格</span>
30
- <span class="font-head">{{row.f_meter_style}}</span>
31
- </div>
32
- </div>
33
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
34
- <div class="flex" style="padding: 0.5rem;align-items: center">
35
- <img src="../../assets/xinghao.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
36
- <span class="font-content">表具型号</span>
37
- <span class="font-head">{{row.f_type}}</span>
38
- </div>
39
- </div>
40
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
41
- <div class="flex" style="padding: 0.5rem;align-items: center">
42
- <img src="../../assets/bieming.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
43
- <span class="font-content">表具别名</span>
44
- <span class="font-head">{{row.f_alias}}</span>
45
- </div>
46
- </div>
47
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
48
- <div class="flex" style="padding: 0.5rem;align-items: center">
49
- <img src="../../assets/yue.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
50
- <span class="font-content">剩余金额</span>
51
- <span class="font-head">{{row.f_balance_amount}}</span>
52
- </div>
53
- </div>
54
- <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
55
- <div class="flex" style="padding: 0.5rem;align-items: center">
56
- <img src="../../assets/qiliang.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
57
- <span class="font-content">累计用气量</span>
58
- <span class="font-head">{{row.f_balance_gas}}</span>
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
- </template>
64
-
65
- <script>
66
- export default {
67
- title: '基础信息',
68
- data () {
69
- return {
70
- msg: '',
71
- show: false
72
- }
73
- },
74
- props:['row'],
75
- ready () {
76
- // this.$appdata.load().then(() => {
77
- // this.$emit('ready')
78
- // })
79
- }
80
- }
81
- </script>
82
- <style media="screen" scoped>
83
- .font-head{
84
- font-size: 14px;
85
- font-weight: bold;
86
- color: #333;
87
- }
88
- .font-content{
89
- font-size: 12px;
90
- font-weight: normal;
91
- color: #666666;
92
- }
93
- .meterinfo{
94
- border:1px solid #eeeeee;
95
- /*border-right: 2px solid #eeeeee;*/
96
- }
97
- </style>
1
+ <template>
2
+ <div class="flex">
3
+ <div class="cols-sm-12 col-md-12 col-xs-12 " >
4
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
5
+ <div class="flex" style="padding: 0.5rem;align-items: center">
6
+ <img src="../../assets/pinpai.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
7
+ <span class="font-content">表具品牌</span>
8
+ <span class="font-head">{{row.f_meter_brand}}</span>
9
+ </div>
10
+
11
+ </div>
12
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
13
+ <div class="flex" style="padding: 0.5rem;align-items: center">
14
+ <img src="../../assets/leixing.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
15
+ <span class="font-content">表具类型</span>
16
+ <span class="font-head">{{row.f_meter_type}}</span>
17
+ </div>
18
+ </div>
19
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
20
+ <div class="flex" style="padding: 0.5rem;align-items: center">
21
+ <img src="../../assets/biaohao.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
22
+ <span class="font-content">表号</span>
23
+ <span class="font-head">{{row.f_meternumber}}</span>
24
+ </div>
25
+ </div>
26
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
27
+ <div class="flex" style="padding: 0.5rem;align-items: center">
28
+ <img src="../../assets/guige.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
29
+ <span class="font-content">表具规格</span>
30
+ <span class="font-head">{{row.f_meter_style}}</span>
31
+ </div>
32
+ </div>
33
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
34
+ <div class="flex" style="padding: 0.5rem;align-items: center">
35
+ <img src="../../assets/xinghao.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
36
+ <span class="font-content">表具型号</span>
37
+ <span class="font-head">{{row.f_type}}</span>
38
+ </div>
39
+ </div>
40
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
41
+ <div class="flex" style="padding: 0.5rem;align-items: center">
42
+ <img src="../../assets/bieming.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
43
+ <span class="font-content">表具别名</span>
44
+ <span class="font-head">{{row.f_alias}}</span>
45
+ </div>
46
+ </div>
47
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
48
+ <div class="flex" style="padding: 0.5rem;align-items: center">
49
+ <img src="../../assets/yue.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
50
+ <span class="font-content">剩余金额</span>
51
+ <span class="font-head">{{row.f_balance_amount}}</span>
52
+ </div>
53
+ </div>
54
+ <div class="col-sm-3 col-md-3 col-xs-4 meterinfo">
55
+ <div class="flex" style="padding: 0.5rem;align-items: center">
56
+ <img src="../../assets/qiliang.png" style="height:32px;width:32px;margin-bottom: 5px" alt="" >
57
+ <span class="font-content">累计用气量</span>
58
+ <span class="font-head">{{row.f_balance_gas}}</span>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </template>
64
+
65
+ <script>
66
+ export default {
67
+ title: '基础信息',
68
+ data () {
69
+ return {
70
+ msg: '',
71
+ show: false
72
+ }
73
+ },
74
+ props:['row'],
75
+ ready () {
76
+ // this.$appdata.load().then(() => {
77
+ // this.$emit('ready')
78
+ // })
79
+ }
80
+ }
81
+ </script>
82
+ <style media="screen" scoped>
83
+ .font-head{
84
+ font-size: 14px;
85
+ font-weight: bold;
86
+ color: #333;
87
+ }
88
+ .font-content{
89
+ font-size: 12px;
90
+ font-weight: normal;
91
+ color: #666666;
92
+ }
93
+ .meterinfo{
94
+ border:1px solid #eeeeee;
95
+ /*border-right: 2px solid #eeeeee;*/
96
+ }
97
+ </style>
@@ -1,5 +1,5 @@
1
1
  const REG_STRONG_PWD =
2
- /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])(?!.*(123|321|abc|cba))[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{8,16}$/;
2
+ /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])(?!.*(123|321|abc|cba))[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{12,16}$/;
3
3
 
4
4
  // 常见密码列表(可以根据需要扩展)
5
5
  const COMMON_PASSWORDS = [
@@ -125,7 +125,7 @@ export const validateStrongPasswordPhone = (password) => {
125
125
  if (!REG_STRONG_PWD.test(password)) {
126
126
  result.isValid = false;
127
127
  result.errors.push(
128
- "密码长度必须为8-16位,且需同时包含大写字母、小写字母、数字和特殊字符"
128
+ "密码长度必须为12-16位,且需同时包含大写字母、小写字母、数字和特殊字符"
129
129
  );
130
130
  return result;
131
131
  }
@@ -1,87 +0,0 @@
1
- # list of languages for which language servers are started; choose from:
2
- # al bash clojure cpp csharp csharp_omnisharp
3
- # dart elixir elm erlang fortran fsharp
4
- # go groovy haskell java julia kotlin
5
- # lua markdown nix pascal perl php
6
- # powershell python python_jedi r rego ruby
7
- # ruby_solargraph rust scala swift terraform toml
8
- # typescript typescript_vts yaml zig
9
- # Note:
10
- # - For C, use cpp
11
- # - For JavaScript, use typescript
12
- # - For Free Pascal / Lazarus, use pascal
13
- # Special requirements:
14
- # - csharp: Requires the presence of a .sln file in the project folder.
15
- # - pascal: Requires Free Pascal Compiler (fpc) and optionally Lazarus.
16
- # When using multiple languages, the first language server that supports a given file will be used for that file.
17
- # The first language is the default language and the respective language server will be used as a fallback.
18
- # Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
19
- languages:
20
- - vue
21
-
22
- # the encoding used by text files in the project
23
- # For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
24
- encoding: "utf-8"
25
-
26
- # whether to use the project's gitignore file to ignore files
27
- # Added on 2025-04-07
28
- ignore_all_files_in_gitignore: true
29
-
30
- # list of additional paths to ignore
31
- # same syntax as gitignore, so you can use * and **
32
- # Was previously called `ignored_dirs`, please update your config if you are using that.
33
- # Added (renamed) on 2025-04-07
34
- ignored_paths: []
35
-
36
- # whether the project is in read-only mode
37
- # If set to true, all editing tools will be disabled and attempts to use them will result in an error
38
- # Added on 2025-04-18
39
- read_only: false
40
-
41
- # list of tool names to exclude. We recommend not excluding any tools, see the readme for more details.
42
- # Below is the complete list of tools for convenience.
43
- # To make sure you have the latest list of tools, and to view their descriptions,
44
- # execute `uv run scripts/print_tool_overview.py`.
45
- #
46
- # * `activate_project`: Activates a project by name.
47
- # * `check_onboarding_performed`: Checks whether project onboarding was already performed.
48
- # * `create_text_file`: Creates/overwrites a file in the project directory.
49
- # * `delete_lines`: Deletes a range of lines within a file.
50
- # * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
51
- # * `execute_shell_command`: Executes a shell command.
52
- # * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
53
- # * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
54
- # * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
55
- # * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
56
- # * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
57
- # * `initial_instructions`: Gets the initial instructions for the current project.
58
- # Should only be used in settings where the system prompt cannot be set,
59
- # e.g. in clients you have no control over, like Claude Desktop.
60
- # * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
61
- # * `insert_at_line`: Inserts content at a given line in a file.
62
- # * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
63
- # * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
64
- # * `list_memories`: Lists memories in Serena's project-specific memory store.
65
- # * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
66
- # * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
67
- # * `read_file`: Reads a file within the project directory.
68
- # * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
69
- # * `remove_project`: Removes a project from the Serena configuration.
70
- # * `replace_lines`: Replaces a range of lines within a file with new content.
71
- # * `replace_symbol_body`: Replaces the full definition of a symbol.
72
- # * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
73
- # * `search_for_pattern`: Performs a search for a pattern in the project.
74
- # * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
75
- # * `switch_modes`: Activates modes by providing a list of their names
76
- # * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
77
- # * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
78
- # * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
79
- # * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
80
- excluded_tools: []
81
-
82
- # initial prompt for the project. It will always be given to the LLM upon activating the project
83
- # (contrary to the memories, which are loaded on demand).
84
- initial_prompt: ""
85
-
86
- project_name: "SystemPhone"
87
- included_optional_tools: []
Binary file