system-clients 3.3.3 → 3.3.4-v3

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 (61) hide show
  1. package/package.info +1 -0
  2. package/package.json +103 -103
  3. package/src/LodopFuncs.js +71 -103
  4. package/src/components/Main.vue +15 -27
  5. package/src/components/Util.js +15 -0
  6. package/src/components/equipment/PcAdd.vue +1 -1
  7. package/src/components/equipment/PcList.vue +3 -3
  8. package/src/components/equipment/PhoneAdd.vue +1 -1
  9. package/src/components/equipment/PhoneList.vue +2 -2
  10. package/src/components/equipment/PosAdd.vue +11 -7
  11. package/src/components/equipment/PosList.vue +5 -3
  12. package/src/components/equipment/PosManage.vue +1 -1
  13. package/src/components/equipment/PosParamAdd.vue +2 -2
  14. package/src/components/equipment/PosParamList.vue +2 -2
  15. package/src/components/materialManage/materialList.vue +1 -1
  16. package/src/components/parammanage/ParamPage.vue +12 -12
  17. package/src/components/parammanage/ParamPages.vue +2 -2
  18. package/src/components/parammanage/SinglePage.vue +8 -8
  19. package/src/components/parammanage/SinglePages.vue +2 -2
  20. package/src/components/server/AddChangeMsg.vue +1 -1
  21. package/src/components/server/ChangeDeclare.vue +1 -1
  22. package/src/components/server/Login.vue +51 -67
  23. package/src/components/server/ModifyPw.vue +105 -35
  24. package/src/components/server/PcdBuildingSelect.vue +6 -8
  25. package/src/components/server/ResSelect.vue +0 -3
  26. package/src/components/server/ResSelectGroup.vue +1 -1
  27. package/src/components/server/RoleSelector.vue +2 -3
  28. package/src/components/server/TestResSelectGroup.vue +1 -1
  29. package/src/filiale/baole/Login.vue +24 -21
  30. package/src/filiale/chengtou/Login.vue +24 -21
  31. package/src/filiale/dongguan/Login.vue +24 -21
  32. package/src/filiale/dongguan/Main.vue +3 -5
  33. package/src/filiale/furuike/Login.vue +25 -24
  34. package/src/filiale/furuike/Main.vue +26 -39
  35. package/src/filiale/gehua/Main.vue +3 -5
  36. package/src/filiale/konggang/Login.vue +24 -21
  37. package/src/filiale/qianneng/Login.vue +24 -21
  38. package/src/filiale/qianneng/Main.vue +3 -5
  39. package/src/filiale/qianneng/ModifyPw.vue +105 -32
  40. package/src/filiale/rizhao/Login.vue +23 -20
  41. package/src/filiale/rizhao/Main.vue +3 -3
  42. package/src/filiale/shiquan/Login.vue +24 -21
  43. package/src/filiale/tianyi/Login.vue +24 -21
  44. package/src/filiale/tongchuan/Login.vue +24 -21
  45. package/src/filiale/tongchuan/Main.vue +6 -8
  46. package/src/filiale/weinan/Main.vue +6 -7
  47. package/src/filiale/wenxi/Login.vue +24 -21
  48. package/src/filiale/wenxi/Main.vue +3 -5
  49. package/src/filiale/wuhai/Main.vue +3 -6
  50. package/src/filiale/yuchuan/Login.vue +25 -22
  51. package/src/filiale/yuchuan/Main.vue +3 -5
  52. package/src/filiale/zhoukou/Main.vue +3 -5
  53. package/src/plugins/EncryptUtil.js +1 -1
  54. package/src/plugins/GetLoginInfoService.js +85 -20
  55. package/src/plugins/validation.js +12 -8
  56. package/src/stores/AppData.js +2 -1
  57. package/src/util/password-validation.js +185 -0
  58. package/build.gradle +0 -6
  59. package/src/filiale/ruihua/Login.vue +0 -576
  60. package/src/filiale/ruihua/system.js +0 -5
  61. package/static/ruihua/logo.jpg +0 -0
@@ -1,68 +1,69 @@
1
1
  <template>
2
2
  <div>
3
3
  <validator name="v">
4
- <modal :show.sync="show" v-ref:modal backdrop="false">
4
+ <modal :show.sync="show" v-ref:modal backdrop="false">
5
5
  <header slot="modal-header" class="modal-header">
6
6
  <button type="button" class="close" @click="rest"><span>&times;</span></button>
7
7
  <h4 class="modal-title">修改密码</h4>
8
8
  </header>
9
9
  <article slot="modal-body" class="modal-body modifystyle auto form-horizontal">
10
+ <div class="password-alert">
11
+ {{ passwordRuleHint }}
12
+ </div>
10
13
  <div class="has-feedback form-group"
11
14
  :class="{'has-warning':$v.password.required,'has-error': $v.password.required,
12
15
  'has-success':!$v.password.required}">
13
- <label for="password" class="col-sm-4 col-sm-offset-1 control-label">原始密码:&nbsp;&nbsp;</label>
14
- <div class="col-sm-4">
16
+ <label for="password" class="col-sm-3 control-label">原始密码</label>
17
+ <div class="col-sm-8 password-field-wrap">
15
18
  <input type="password" v-model="deliver.password" class="form-control" id="password" v-validate:password="{ required: true}">
16
19
  <span class="glyphicon glyphicon-ok form-control-feedback" v-if="!$v.password.required"></span>
17
- <span v-if="$v.password.required">不能为空</span>
20
+ <span class="field-error" v-if="$v.password.required">不能为空</span>
18
21
  </div>
19
22
  </div>
20
23
  <div class="has-feedback form-group"
21
- :class="{'has-warning':$v.newpassword.required,'has-error':($v.newpassword.numbersAndLetter8to16 || $v.newpassword.minlength)&& !$v.newpassword.required && !$v.newpassword.chinesePassword,
22
- 'has-success': !$v.newpassword.required && !$v.newpassword.numbersAndLetter8to16&&!$v.newpassword.minlength && !$v.newpassword.chinesePassword}">
23
- <label for="newpassword" class="col-sm-4 col-sm-offset-1 control-label">新的密码:&nbsp;&nbsp;</label>
24
- <div class="col-sm-4">
25
- <input type="password" v-model="deliver.newpassword" class="form-control" id="newpassword" v-validate:newpassword='{required:true, numbersAndLetter8to16: true, minlength: 8,chinesePassword: true}'>
26
- <span class="glyphicon glyphicon-ok form-control-feedback" v-if="!$v.newpassword.required && !$v.newpassword.minlength && !($v.newpassword.numbersAndLetter8to16 && !($v.newpassword.required)) && !($v.newpassword.chinesePassword) "></span>
27
- <span v-if="$v.newpassword.required">不能为空</span>
28
- <span v-if="($v.newpassword.numbersAndLetter8to16||$v.newpassword.minlength) && !($v.newpassword.required&&$v.newpassword.minlength)">密码必须是8~16位数字与大小字母外加特殊字符的组合,并且不能出现类似'123','abc'等连贯数字或者字母</span>
29
- <span v-if="$v.newpassword.chinesePassword">密码不能包含中文</span>
24
+ :class="{'has-warning':$v.newpassword.required,'has-error':($v.newpassword.numbersAndLetter8to16 || $v.newpassword.chinesePassword) && !$v.newpassword.required,
25
+ 'has-success': !$v.newpassword.required && !$v.newpassword.numbersAndLetter8to16 && !$v.newpassword.chinesePassword}">
26
+ <label for="newpassword" class="col-sm-3 control-label">新的密码</label>
27
+ <div class="col-sm-8 password-field-wrap">
28
+ <input type="password" v-model="deliver.newpassword" class="form-control" id="newpassword" v-validate:newpassword='{required:true, numbersAndLetter8to16: true, chinesePassword: true}'>
29
+ <span class="glyphicon glyphicon-ok form-control-feedback" v-if="!$v.newpassword.required && !$v.newpassword.numbersAndLetter8to16 && !$v.newpassword.chinesePassword"></span>
30
+ <span class="field-error" v-if="$v.newpassword.required">不能为空</span>
31
+ <span class="field-error" v-if="$v.newpassword.chinesePassword && !$v.newpassword.required">密码不能包含中文</span>
32
+ <div v-if="passwordStrength.visible" class="password-strength">
33
+ <span class="strength-label">密码强度</span>
34
+ <span class="strength-tag" :class="passwordStrength.type">{{ passwordStrength.label }}</span>
35
+ <span class="strength-desc">{{ passwordStrength.desc }}</span>
36
+ </div>
30
37
  </div>
31
38
  </div>
32
39
  <div class="has-feedback form-group"
33
40
  :class="{'has-warning':$v.affirmpassword.required,'has-error':$v.affirmpassword.equalValid && !($v.affirmpassword.required),
34
41
  'has-success': !$v.affirmpassword.required && !($v.affirmpassword.equalValid && !($v.affirmpassword.required))}">
35
- <label for="affirmpassword" class="col-sm-4 col-sm-offset-1 control-label">确认密码:&nbsp;&nbsp;</label>
36
- <div class="col-sm-4">
42
+ <label for="affirmpassword" class="col-sm-3 control-label">确认密码</label>
43
+ <div class="col-sm-8 password-field-wrap">
37
44
  <input type="password" v-model="deliver.affirmpassword" class="form-control" id="affirmpassword" v-validate:affirmpassword="{ required: true, equalValid: deliver.newpassword }">
38
45
  <span class="glyphicon glyphicon-ok form-control-feedback" v-if="!$v.affirmpassword.required && !($v.affirmpassword.equalValid && !($v.affirmpassword.required))"></span>
39
- <span v-if="$v.affirmpassword.required">不能为空</span>
40
- <span v-if="$v.affirmpassword.equalValid && !($v.affirmpassword.required)">两次密码不一致 !!</span>
46
+ <span class="field-error" v-if="$v.affirmpassword.required">不能为空</span>
47
+ <span class="field-error" v-if="$v.affirmpassword.equalValid && !($v.affirmpassword.required)">两次密码不一致</span>
41
48
  </div>
42
49
  </div>
43
50
  </article>
44
51
 
45
52
  <footer slot="modal-footer" class="modal-footer">
46
- <button type="button" class="btn btn-success" @click='confirm' :disabled="!$v.valid">确认</button>
47
- <button type="button" class="btn btn-default" @click='rest'>取消</button>
53
+ <button type="button" class="btn btn-success" @click='confirm' :disabled="!$v.valid">确认</button>
54
+ <button type="button" class="btn btn-default" @click='rest'>取消</button>
48
55
  </footer>
49
56
  </modal>
50
57
  </validator>
51
58
  </div>
52
-
53
-
54
59
  </template>
55
60
  <script>
56
61
  import co from 'co'
57
- import validator from '../../plugins/validation';
62
+ import validator from '../../plugins/validation'
63
+ import { getPasswordStrength, PASSWORD_RULE_HINT } from '../../util/password-validation'
58
64
 
59
65
  let saveGen = function * (self) {
60
66
  self.deliver.ename = self.functions.ename
61
- // let res = yield self.$post('rs/user/entity', {data: self.deliver})
62
- // let res = yield self.$post('rs/db/modifypassword', {data: self.deliver})
63
- // let res = yield self.$resetpost('/rs/db/modifypwd', {data: self.deliver})
64
- // Util.f.password = self.deliver.newpassword
65
- // todo v4
66
67
  let res = yield self.$resetpost('/rs/user/modifypwd', {data: self.deliver })
67
68
  self.$login.f.password = self.deliver.newpassword
68
69
  if (res.data) {
@@ -81,7 +82,13 @@
81
82
  newpassword: '',
82
83
  affirmpassword: ''
83
84
  },
84
- functions: this.$login.f
85
+ functions: this.$login.f,
86
+ passwordRuleHint: PASSWORD_RULE_HINT
87
+ }
88
+ },
89
+ computed: {
90
+ passwordStrength () {
91
+ return getPasswordStrength(this.deliver.newpassword)
85
92
  }
86
93
  },
87
94
  props: ['show'],
@@ -98,11 +105,77 @@
98
105
  }
99
106
  </script>
100
107
  <style>
101
- /*修改密码body界面样式*/
102
108
  .modifystyle {
103
- background: #FCFEEE;
109
+ background: #fff;
110
+ padding: 10px 20px 20px;
111
+ }
112
+
113
+ .modifystyle .control-label {
114
+ color: #333;
115
+ font-weight: normal;
116
+ padding-top: 7px;
117
+ }
118
+
119
+ .password-field-wrap {
120
+ padding-left: 0;
121
+ padding-right: 0;
122
+ }
123
+
124
+ .password-field-wrap .form-control {
125
+ width: 100%;
126
+ }
127
+
128
+ .password-alert {
129
+ margin: 0 0 16px;
130
+ padding: 10px 12px;
131
+ border-radius: 4px;
132
+ background: #f5f7fa;
133
+ border: 1px solid #e4e7ed;
134
+ color: #606266;
135
+ font-size: 13px;
136
+ line-height: 1.6;
104
137
  }
105
- .modifystyle span{
106
- color: red;
138
+
139
+ .field-error {
140
+ display: block;
141
+ margin-top: 6px;
142
+ color: #e74c3c;
143
+ font-size: 12px;
144
+ line-height: 1.4;
145
+ }
146
+
147
+ .password-strength {
148
+ margin-top: 8px;
149
+ font-size: 12px;
150
+ line-height: 1.6;
151
+ color: #606266;
152
+ }
153
+
154
+ .password-strength .strength-label {
155
+ margin-right: 6px;
156
+ color: #909399;
157
+ }
158
+
159
+ .password-strength .strength-tag {
160
+ display: inline-block;
161
+ margin-right: 8px;
162
+ padding: 1px 8px;
163
+ border-radius: 3px;
164
+ font-size: 12px;
165
+ line-height: 1.5;
166
+ }
167
+
168
+ .password-strength .strength-tag.success {
169
+ color: #2e7d32;
170
+ background: #e8f5e9;
171
+ }
172
+
173
+ .password-strength .strength-tag.error {
174
+ color: #c62828;
175
+ background: #ffebee;
176
+ }
177
+
178
+ .password-strength .strength-desc {
179
+ color: #606266;
107
180
  }
108
181
  </style>
@@ -121,13 +121,14 @@
121
121
 
122
122
  <script>
123
123
  import co from 'co'
124
+ import { isStrongPassword } from '../../util/password-validation'
124
125
  import $ from 'jquery'
125
126
  import Vue from 'vue'
126
127
  import {HttpResetClass} from 'vue-client'
128
+ import {isPasswordModificationExpired} from '../../components/Util'
127
129
 
128
130
 
129
131
 
130
- // todo v4
131
132
  let saveGen = function *(self) {
132
133
  try {
133
134
  if(self.$login){
@@ -183,12 +184,15 @@ let saveGen = function *(self) {
183
184
  }
184
185
  }
185
186
  console.log(self.$login.depPrompt)
186
- // 弱口令验证
187
- //跳转过来的不进行验证
188
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
187
+ // 弱口令验证(默认开启,跳转过来的不进行验证)
188
+ if ((!self.otherLogin) && !isStrongPassword(self.model.password)) {
189
189
  self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
190
190
  self.modifyPwShow = true
191
191
  })
192
+ } else if ((!self.otherLogin) && isPasswordModificationExpired(self.$login.f.f_last_modification_time)) {
193
+ self.$showMessage('登录系统: 您的密码已超过两个半月未修改,请修改密码后重新登录!!!', ['confirm']).then((res) => {
194
+ self.modifyPwShow = true
195
+ })
192
196
  } else if ((!self.otherLogin) && self.$login.depPrompt) {
193
197
  self.depPromptShow = true
194
198
  } else {
@@ -205,6 +209,8 @@ let saveGen = function *(self) {
205
209
 
206
210
  } catch (ret) {
207
211
  console.error('登录失败', ret)
212
+ self.$login.s = null
213
+ self.$login['v3-session-key'] = null
208
214
  let msg
209
215
  if (ret instanceof Error) {
210
216
  msg = ret
@@ -228,19 +234,19 @@ let saveGen = function *(self) {
228
234
  export default {
229
235
  title: '登录',
230
236
  async ready () {
231
- try{
232
- let http = new HttpResetClass()
233
- let res = await http.load('POST', 'api/af-system/sql/singleTable',
234
- {data:{
235
- tablename: 't_changedeclare',
236
- condition: ` f_type ='变更通知' `
237
- }
238
- }, {resolveMsg: null, rejectMsg: null})
239
- if(res.data.length>0){
240
- console.log("---------------获取通知",res.data[0].f_change_message)
241
- this.notice=res.data[0].f_change_message
242
- }
243
- }catch(e){}
237
+ // try{
238
+ // let http = new HttpResetClass()
239
+ // let res = await http.load('POST', 'rs/sql/singleTable',
240
+ // {data:{
241
+ // tablename: 't_changedeclare',
242
+ // condition: ` f_type ='变更通知' `
243
+ // }
244
+ // }, {resolveMsg: null, rejectMsg: null})
245
+ // if(res.data.length>0){
246
+ // console.log("---------------获取通知",res.data[0].f_change_message)
247
+ // this.notice=res.data[0].f_change_message
248
+ // }
249
+ // }catch(e){}
244
250
 
245
251
  this.loginother();
246
252
  $('#login-button').click(function (event) {
@@ -249,10 +255,8 @@ export default {
249
255
  })
250
256
  if (window.location.search && window.location.search.indexOf('af_key') !== -1&& window.location.search.indexOf('af_n') !== -1) {
251
257
  const subUrl = window.location.search.replace('?af_key=','').split('&af_n=')
252
- console.log(subUrl)
253
258
  this.model.ename = window.atob(subUrl[0])
254
259
  this.model.password = window.atob(subUrl[1])
255
- console.log('this.model.ename',this.model.ename)
256
260
  this.otherLogin = true
257
261
  this.confirm()
258
262
  }else{
@@ -299,7 +303,6 @@ export default {
299
303
  if (this.config.distanceLogin) {
300
304
  if (this.$login && this.$login.getUrlParames('name') ) {
301
305
  let ename = this.$login.getUrlParames('name');
302
- // todo v4
303
306
  let logininfo = await this.$resetpost('rs/logic/getLoginData',{data:{ename:ename}},{resolveMsg: null, rejectMsg: null});
304
307
  if(logininfo.data){
305
308
  if(logininfo.data.ename && logininfo.data.password){
@@ -68,7 +68,7 @@ let getwartermakr = async function (self) {
68
68
  tablename: 't_singlevalue',
69
69
  condition: " 1=1 and name=\'水印内容\'"
70
70
  };
71
- let result = await self.$resetpost('api/af-revenue/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: null});
71
+ let result = await self.$resetpost('rs/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: null});
72
72
  if (result && result.data.length > 0) {
73
73
  self.showwatermakeflag = true;
74
74
  createWaterMark(result.data[0].value);
@@ -216,7 +216,7 @@ export default {
216
216
  }
217
217
  },
218
218
  openUrl() {
219
- var url = `http://123.60.214.109:8406/submitTicket?contact=${this.$login.f.name}&orgName=${this.$login.f.orgs}&phone=${this.$login.f.f_user_telephone}`
219
+ var url = `https://liuli.aofengcloud.com:31467`
220
220
  window.open(url, '_blank')
221
221
  },
222
222
  hindsetting() {
@@ -295,7 +295,7 @@ export default {
295
295
  username: this.$login.f.name,
296
296
  usertelephone: this.$login.f.f_user_telephone
297
297
  }
298
- await this.$resetpost('api/af-system/user/logout', data, {resolveMsg: '退出成功', rejectMsg: null})
298
+ await this.$resetpost('rs/logic/logOut', data, {resolveMsg: '退出成功', rejectMsg: null})
299
299
  window.location.reload()
300
300
  }
301
301
  })
@@ -142,9 +142,11 @@
142
142
 
143
143
  <script>
144
144
  import co from 'co'
145
+ import { isStrongPassword } from '../../util/password-validation'
145
146
  import $ from 'jquery'
146
147
  import Vue from 'vue'
147
148
  import {HttpResetClass} from 'vue-client'
149
+ import {isPasswordModificationExpired} from '../../components/Util'
148
150
 
149
151
  let daibanJson = require('../../util/Daiban.json')
150
152
 
@@ -174,7 +176,6 @@
174
176
  console.log('登录配置', self.config)
175
177
  if (self.config.isMac) {
176
178
  // 获取该登录人分公司下的mac配置
177
- // todo v4
178
179
  let getMacs = yield self.$resetpost('rs/sql/equipmentQuery', {data: {condition: `f_filialeids like '%${self.$login.f.f_orgids}%'`}}, {
179
180
  resolveMsg: null,
180
181
  rejectMsg: null
@@ -204,12 +205,15 @@
204
205
  }
205
206
  }
206
207
  console.log(self.$login.depPrompt)
207
- // 弱口令验证
208
- //跳转过来的不进行验证
209
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
208
+ // 弱口令验证(默认开启,跳转过来的不进行验证)
209
+ if ((!self.otherLogin) && !isStrongPassword(self.model.password)) {
210
210
  self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
211
211
  self.modifyPwShow = true
212
212
  })
213
+ } else if ((!self.otherLogin) && isPasswordModificationExpired(self.$login.f.f_last_modification_time)) {
214
+ self.$showMessage('登录系统: 您的密码已超过两个半月未修改,请修改密码后重新登录!!!', ['confirm']).then((res) => {
215
+ self.modifyPwShow = true
216
+ })
213
217
  } else if ((!self.otherLogin) && self.$login.depPrompt) {
214
218
  self.depPromptShow = true
215
219
  if (self.$login.showDaiBan && self.$login.r.includes('展示预约信息')){
@@ -230,6 +234,8 @@
230
234
  }
231
235
  } catch (ret) {
232
236
  console.error('登录失败', ret)
237
+ self.$login.s = null
238
+ self.$login['v3-session-key'] = null
233
239
  let msg
234
240
  if (ret instanceof Error) {
235
241
  msg = ret
@@ -258,19 +264,19 @@
258
264
  this.titleShow = this.$appdata.getSingleValue('关于我们')
259
265
  window.versionTime = window.versionTime ? window.versionTime : new Date().getTime()
260
266
  this.vTime = this.format(new Date(window.versionTime));
261
- try{
262
- let http = new HttpResetClass()
263
- let res = await http.load('POST', 'api/af-system/sql/singleTable',
264
- {data:{
265
- tablename: 't_changedeclare',
266
- condition: ` f_type ='变更通知' `
267
- }
268
- }, {resolveMsg: null, rejectMsg: null})
269
- if(res.data.length>0){
270
- console.log("---------------获取通知",res.data[0].f_change_message)
271
- this.notice=res.data[0].f_change_message
272
- }
273
- }catch(e){}
267
+ // try{
268
+ // let http = new HttpResetClass()
269
+ // let res = await http.load('POST', 'rs/sql/singleTable',
270
+ // {data:{
271
+ // tablename: 't_changedeclare',
272
+ // condition: ` f_type ='变更通知' `
273
+ // }
274
+ // }, {resolveMsg: null, rejectMsg: null})
275
+ // if(res.data.length>0){
276
+ // console.log("---------------获取通知",res.data[0].f_change_message)
277
+ // this.notice=res.data[0].f_change_message
278
+ // }
279
+ // }catch(e){}
274
280
 
275
281
  this.loginother();
276
282
  $('#login-button').click(function (event) {
@@ -279,10 +285,8 @@
279
285
  })
280
286
  if (window.location.search && window.location.search.indexOf('af_key') !== -1&& window.location.search.indexOf('af_n') !== -1) {
281
287
  const subUrl = window.location.search.replace('?af_key=','').split('&af_n=')
282
- console.log(subUrl)
283
288
  this.model.ename = window.atob(subUrl[0])
284
289
  this.model.password = window.atob(subUrl[1])
285
- console.log('this.model.ename',this.model.ename)
286
290
  this.otherLogin = true
287
291
  this.confirm()
288
292
  }else{
@@ -360,7 +364,7 @@
360
364
  } else {
361
365
  condition =` f_orderstate is null and (f_address in( select f_address from t_user_address where f_slice_area='柠条塔') or f_address like '%柠条塔%') `
362
366
  }
363
- await http.load('POST', '/api/af-system/sql/singleTable', {data: {
367
+ await http.load('POST', '/rs/sql/singleTable', {data: {
364
368
  tablename:'t_order_center',
365
369
  condition:condition
366
370
  }}, {
@@ -436,7 +440,6 @@
436
440
  if (this.config.distanceLogin) {
437
441
  if (this.$login && this.$login.getUrlParames('name') ) {
438
442
  let ename = this.$login.getUrlParames('name');
439
- // todo v4
440
443
  let logininfo = await this.$resetpost('rs/logic/getLoginData',{data:{ename:ename}},{resolveMsg: null, rejectMsg: null});
441
444
  if(logininfo.data){
442
445
  if(logininfo.data.ename && logininfo.data.password){
@@ -145,9 +145,11 @@
145
145
 
146
146
  <script>
147
147
  import co from 'co'
148
+ import { isStrongPassword } from '../../util/password-validation'
148
149
  import $ from 'jquery'
149
150
  import Vue from 'vue'
150
151
  import {HttpResetClass} from 'vue-client'
152
+ import {isPasswordModificationExpired} from '../../components/Util'
151
153
 
152
154
  let daibanJson = require('../../util/Daiban.json')
153
155
 
@@ -178,7 +180,6 @@ let saveGen = function *(self) {
178
180
  console.log('登录配置', self.config)
179
181
  if (self.config.isMac) {
180
182
  // 获取该登录人分公司下的mac配置
181
- // todo v4
182
183
  let getMacs = yield self.$resetpost('rs/sql/equipmentQuery', {data: {condition: `f_filialeids like '%${self.$login.f.f_orgids}%'`}}, {
183
184
  resolveMsg: null,
184
185
  rejectMsg: null
@@ -208,12 +209,15 @@ let saveGen = function *(self) {
208
209
  }
209
210
  }
210
211
  console.log(self.$login.depPrompt)
211
- // 弱口令验证
212
- //跳转过来的不进行验证
213
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
212
+ // 弱口令验证(默认开启,跳转过来的不进行验证)
213
+ if ((!self.otherLogin) && !isStrongPassword(self.model.password)) {
214
214
  self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
215
215
  self.modifyPwShow = true
216
216
  })
217
+ } else if ((!self.otherLogin) && isPasswordModificationExpired(self.$login.f.f_last_modification_time)) {
218
+ self.$showMessage('登录系统: 您的密码已超过两个半月未修改,请修改密码后重新登录!!!', ['confirm']).then((res) => {
219
+ self.modifyPwShow = true
220
+ })
217
221
  } else if ((!self.otherLogin) && self.$login.depPrompt) {
218
222
  self.depPromptShow = true
219
223
  if (self.$login.showDaiBan && self.$login.r.includes('展示预约信息')){
@@ -239,6 +243,8 @@ let saveGen = function *(self) {
239
243
 
240
244
  } catch (ret) {
241
245
  console.error('登录失败', ret)
246
+ self.$login.s = null
247
+ self.$login['v3-session-key'] = null
242
248
  let msg
243
249
  if (ret instanceof Error) {
244
250
  msg = ret
@@ -265,19 +271,19 @@ export default {
265
271
  this.titleShow = this.$appdata.getSingleValue('关于我们')
266
272
  window.versionTime = window.versionTime ? window.versionTime : new Date().getTime()
267
273
  this.vTime = this.format(new Date(window.versionTime));
268
- try{
269
- let http = new HttpResetClass()
270
- let res = await http.load('POST', 'api/af-system/sql/singleTable',
271
- {data:{
272
- tablename: 't_changedeclare',
273
- condition: ` f_type ='变更通知' `
274
- }
275
- }, {resolveMsg: null, rejectMsg: null})
276
- if(res.data.length>0){
277
- console.log("---------------获取通知",res.data[0].f_change_message)
278
- this.notice=res.data[0].f_change_message
279
- }
280
- }catch(e){}
274
+ // try{
275
+ // let http = new HttpResetClass()
276
+ // let res = await http.load('POST', 'rs/sql/singleTable',
277
+ // {data:{
278
+ // tablename: 't_changedeclare',
279
+ // condition: ` f_type ='变更通知' `
280
+ // }
281
+ // }, {resolveMsg: null, rejectMsg: null})
282
+ // if(res.data.length>0){
283
+ // console.log("---------------获取通知",res.data[0].f_change_message)
284
+ // this.notice=res.data[0].f_change_message
285
+ // }
286
+ // }catch(e){}
281
287
 
282
288
  this.loginother();
283
289
  $('#login-button').click(function (event) {
@@ -286,10 +292,8 @@ export default {
286
292
  })
287
293
  if (window.location.search && window.location.search.indexOf('af_key') !== -1&& window.location.search.indexOf('af_n') !== -1) {
288
294
  const subUrl = window.location.search.replace('?af_key=','').split('&af_n=')
289
- console.log(subUrl)
290
295
  this.model.ename = window.atob(subUrl[0])
291
296
  this.model.password = window.atob(subUrl[1])
292
- console.log('this.model.ename',this.model.ename)
293
297
  this.otherLogin = true
294
298
  this.confirm()
295
299
  }else{
@@ -367,7 +371,7 @@ export default {
367
371
  } else {
368
372
  condition =` f_orderstate is null and (f_address in( select f_address from t_user_address where f_slice_area='柠条塔') or f_address like '%柠条塔%') `
369
373
  }
370
- await http.load('POST', '/api/af-system/sql/singleTable', {data: {
374
+ await http.load('POST', '/rs/sql/singleTable', {data: {
371
375
  tablename:'t_order_center',
372
376
  condition:condition
373
377
  }}, {
@@ -443,7 +447,6 @@ export default {
443
447
  if (this.config.distanceLogin) {
444
448
  if (this.$login && this.$login.getUrlParames('name') ) {
445
449
  let ename = this.$login.getUrlParames('name');
446
- // todo v4
447
450
  let logininfo = await this.$resetpost('rs/logic/getLoginData',{data:{ename:ename}},{resolveMsg: null, rejectMsg: null});
448
451
  if(logininfo.data){
449
452
  if(logininfo.data.ename && logininfo.data.password){
@@ -138,9 +138,11 @@
138
138
 
139
139
  <script>
140
140
  import co from 'co'
141
+ import { isStrongPassword } from '../../util/password-validation'
141
142
  import $ from 'jquery'
142
143
  import Vue from 'vue'
143
144
  import {HttpResetClass} from 'vue-client'
145
+ import {isPasswordModificationExpired} from '../../components/Util'
144
146
 
145
147
  let daibanJson = require('../../util/Daiban.json')
146
148
 
@@ -171,7 +173,6 @@ let saveGen = function *(self) {
171
173
  console.log('登录配置', self.config)
172
174
  if (self.config.isMac) {
173
175
  // 获取该登录人分公司下的mac配置
174
- // todo v4
175
176
  let getMacs = yield self.$resetpost('rs/sql/equipmentQuery', {data: {condition: `f_filialeids like '%${self.$login.f.f_orgids}%'`}}, {
176
177
  resolveMsg: null,
177
178
  rejectMsg: null
@@ -201,12 +202,15 @@ let saveGen = function *(self) {
201
202
  }
202
203
  }
203
204
  console.log(self.$login.depPrompt)
204
- // 弱口令验证
205
- //跳转过来的不进行验证
206
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
205
+ // 弱口令验证(默认开启,跳转过来的不进行验证)
206
+ if ((!self.otherLogin) && !isStrongPassword(self.model.password)) {
207
207
  self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
208
208
  self.modifyPwShow = true
209
209
  })
210
+ } else if ((!self.otherLogin) && isPasswordModificationExpired(self.$login.f.f_last_modification_time)) {
211
+ self.$showMessage('登录系统: 您的密码已超过两个半月未修改,请修改密码后重新登录!!!', ['confirm']).then((res) => {
212
+ self.modifyPwShow = true
213
+ })
210
214
  } else if ((!self.otherLogin) && self.$login.depPrompt) {
211
215
  self.depPromptShow = true
212
216
  if (self.$login.showDaiBan && self.$login.r.includes('展示预约信息')){
@@ -232,6 +236,8 @@ let saveGen = function *(self) {
232
236
 
233
237
  } catch (ret) {
234
238
  console.error('登录失败', ret)
239
+ self.$login.s = null
240
+ self.$login['v3-session-key'] = null
235
241
  let msg
236
242
  if (ret instanceof Error) {
237
243
  msg = ret
@@ -256,19 +262,19 @@ export default {
256
262
  title: '登录',
257
263
  async ready () {
258
264
  this.titleShow = this.$appdata.getSingleValue('关于我们')
259
- try{
260
- let http = new HttpResetClass()
261
- let res = await http.load('POST', 'api/af-system/sql/singleTable',
262
- {data:{
263
- tablename: 't_changedeclare',
264
- condition: ` f_type ='变更通知' `
265
- }
266
- }, {resolveMsg: null, rejectMsg: null})
267
- if(res.data.length>0){
268
- console.log("---------------获取通知",res.data[0].f_change_message)
269
- this.notice=res.data[0].f_change_message
270
- }
271
- }catch(e){}
265
+ // try{
266
+ // let http = new HttpResetClass()
267
+ // let res = await http.load('POST', 'rs/sql/singleTable',
268
+ // {data:{
269
+ // tablename: 't_changedeclare',
270
+ // condition: ` f_type ='变更通知' `
271
+ // }
272
+ // }, {resolveMsg: null, rejectMsg: null})
273
+ // if(res.data.length>0){
274
+ // console.log("---------------获取通知",res.data[0].f_change_message)
275
+ // this.notice=res.data[0].f_change_message
276
+ // }
277
+ // }catch(e){}
272
278
 
273
279
  this.loginother();
274
280
  $('#login-button').click(function (event) {
@@ -277,10 +283,8 @@ export default {
277
283
  })
278
284
  if (window.location.search && window.location.search.indexOf('af_key') !== -1&& window.location.search.indexOf('af_n') !== -1) {
279
285
  const subUrl = window.location.search.replace('?af_key=','').split('&af_n=')
280
- console.log(subUrl)
281
286
  this.model.ename = window.atob(subUrl[0])
282
287
  this.model.password = window.atob(subUrl[1])
283
- console.log('this.model.ename',this.model.ename)
284
288
  this.otherLogin = true
285
289
  this.confirm()
286
290
  }else{
@@ -372,7 +376,7 @@ export default {
372
376
  } else {
373
377
  condition =` f_orderstate is null and (f_address in( select f_address from t_user_address where f_slice_area='柠条塔') or f_address like '%柠条塔%') `
374
378
  }
375
- await http.load('POST', '/api/af-system/sql/singleTable', {data: {
379
+ await http.load('POST', '/rs/sql/singleTable', {data: {
376
380
  tablename:'t_order_center',
377
381
  condition:condition
378
382
  }}, {
@@ -448,7 +452,6 @@ export default {
448
452
  if (this.config.distanceLogin) {
449
453
  if (this.$login && this.$login.getUrlParames('name') ) {
450
454
  let ename = this.$login.getUrlParames('name');
451
- // todo v4
452
455
  let logininfo = await this.$resetpost('rs/logic/getLoginData',{data:{ename:ename}},{resolveMsg: null, rejectMsg: null});
453
456
  if(logininfo.data){
454
457
  if(logininfo.data.ename && logininfo.data.password){