system-clients 3.2.61-taizhou → 3.2.62-fugu

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,2 +1,2 @@
1
- #Wed Oct 23 09:19:48 CST 2024
2
- gradle.version=8.2
1
+ #Fri Aug 15 16:59:37 CST 2025
2
+ gradle.version=8.5
Binary file
@@ -1,6 +1,6 @@
1
1
  distributionBase=GRADLE_USER_HOME
2
2
  distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
4
4
  networkTimeout=10000
5
5
  validateDistributionUrl=true
6
6
  zipStoreBase=GRADLE_USER_HOME
package/gradlew CHANGED
@@ -83,7 +83,8 @@ done
83
83
  # This is normally unused
84
84
  # shellcheck disable=SC2034
85
85
  APP_BASE_NAME=${0##*/}
86
- APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
86
+ # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87
+ APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
87
88
 
88
89
  # Use the maximum available, or set MAX_FD != -1 to use that value.
89
90
  MAX_FD=maximum
@@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144
145
  case $MAX_FD in #(
145
146
  max*)
146
147
  # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
147
- # shellcheck disable=SC3045
148
+ # shellcheck disable=SC2039,SC3045
148
149
  MAX_FD=$( ulimit -H -n ) ||
149
150
  warn "Could not query maximum file descriptor limit"
150
151
  esac
@@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
152
153
  '' | soft) :;; #(
153
154
  *)
154
155
  # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
155
- # shellcheck disable=SC3045
156
+ # shellcheck disable=SC2039,SC3045
156
157
  ulimit -n "$MAX_FD" ||
157
158
  warn "Could not set maximum file descriptor limit to $MAX_FD"
158
159
  esac
@@ -201,11 +202,11 @@ fi
201
202
  # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
202
203
  DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
203
204
 
204
- # Collect all arguments for the java command;
205
- # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
206
- # shell script including quotes and variable substitutions, so put them in
207
- # double quotes to make sure that they get re-expanded; and
208
- # * put everything else in single quotes, so that it's not re-expanded.
205
+ # Collect all arguments for the java command:
206
+ # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
207
+ # and any embedded shellness will be escaped.
208
+ # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
209
+ # treated as '${Hostname}' itself on the command line.
209
210
 
210
211
  set -- \
211
212
  "-Dorg.gradle.appname=$APP_BASE_NAME" \
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-clients",
3
- "version": "3.2.61-taizhou",
3
+ "version": "3.2.62-fugu",
4
4
  "description": "系统基础框架",
5
5
  "main": "src/index.js",
6
6
  "directories": {
@@ -205,7 +205,7 @@ let saveGen = function *(self) {
205
205
  console.log(self.$login.depPrompt)
206
206
  // 弱口令验证
207
207
  //跳转过来的不进行验证
208
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
208
+ if ((!self.otherLogin) && self.config.weakPassword && !(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*(123|321|abc|cba))[a-zA-Z\d!@#$%^&*()_+-=<>?]{8,16}$/.test(self.model.password))) {
209
209
  self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
210
210
  self.modifyPwShow = true
211
211
  })
@@ -22,10 +22,10 @@
22
22
  'has-success': !$v.newpassword.required && !$v.newpassword.numbersAndLetter8to16&&!$v.newpassword.minlength && !$v.newpassword.chinesePassword}">
23
23
  <label for="newpassword" class="col-sm-4 col-sm-offset-1 control-label">新的密码:&nbsp;&nbsp;</label>
24
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: 6,chinesePassword: true}'>
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
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
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位数字与字母组合</span>
28
+ <span v-if="($v.newpassword.numbersAndLetter8to16||$v.newpassword.minlength) && !($v.newpassword.required&&$v.newpassword.minlength)">密码必须是8~16位数字与大小字母外加特殊字符的组合,并且不能出现类似'123','abc'等连贯数字或者字母</span>
29
29
  <span v-if="$v.newpassword.chinesePassword">密码不能包含中文</span>
30
30
  </div>
31
31
  </div>
@@ -179,6 +179,11 @@ let loginGen = async function (name, password, cue) {
179
179
  for (let proc of Vue.$login.afterLogin) {
180
180
  await proc(Vue.$login.f)
181
181
  }
182
+ // 启动未操作下线计时器(30分钟)
183
+ if(Vue.$login.autoLoginout){
184
+ Vue.$login.startInactivityTimer(Vue.$login.autoLoginTimeOut)
185
+ }
186
+
182
187
  // 定时发送心跳
183
188
  if (cue) {
184
189
  setInterval(() => {
@@ -212,11 +217,17 @@ let loginGen = async function (name, password, cue) {
212
217
  }
213
218
 
214
219
  let GetLoginInfoService = {
215
- SinglePageToken:{},
216
220
  // 登录后要处理的异步对象
217
221
  afterLogin: [],
218
222
  //验证码开关
219
223
  Verification: true,
224
+ //构建时间开关
225
+ versionTime: true,
226
+ //长时间未操作退出开关
227
+ autoLoginout: false,
228
+ autoLoginTimeOut:10*60*1000,
229
+ //
230
+ SinglePageToken : {},
220
231
  //登录信息展示开关
221
232
  depPrompt: true,
222
233
  install(Vue, options) {
@@ -236,7 +247,6 @@ let GetLoginInfoService = {
236
247
  if (cue === undefined || cue === null || cue === '') {
237
248
  cue = true
238
249
  }
239
- Vue.$login.SinglePageToken = cryptJS.AESEncrypt(JSON.stringify({name,password}), "3KMKqvgwR8ULbR8Z")
240
250
  return loginGen(name, password, cue)
241
251
  },
242
252
 
@@ -527,6 +537,39 @@ let GetLoginInfoService = {
527
537
  let ds = date.split('-')
528
538
  let nextMonth = ds[1] - 0 + 1
529
539
  return ds[0] + '-' + (nextMonth < 10 ? '0' + nextMonth : nextMonth) + '-20 00:00:00'
540
+ },
541
+ /**
542
+ * 启动未操作强制下线计时器
543
+ * @param timeout 超时时间(毫秒),默认30分钟
544
+ */
545
+ startInactivityTimer(timeout) {
546
+ // 清除已有的定时器
547
+ if (this._inactivityTimer) {
548
+ clearTimeout(this._inactivityTimer);
549
+ }
550
+ // 事件处理函数
551
+ const resetTimer = () => {
552
+ clearTimeout(this._inactivityTimer);
553
+ this._inactivityTimer = setTimeout(() => {
554
+ // 强制下线逻辑
555
+ // Vue.cookie.delete('loginId');
556
+ Vue.$login.f = {};
557
+ Vue.showMessage("长时间未操作,您已被强制下线", ['confirm']).then(() => {
558
+ location.reload();
559
+ });
560
+ }, timeout);
561
+ };
562
+ // 需要监听的事件
563
+ const events = ['mousemove', 'keydown', 'mousedown', 'scroll', 'touchstart'];
564
+ // 只绑定一次
565
+ if (!this._inactivityListenerAdded) {
566
+ events.forEach(event => {
567
+ window.addEventListener(event, resetTimer, true);
568
+ });
569
+ this._inactivityListenerAdded = true;
570
+ }
571
+ // 初始化计时器
572
+ resetTimer();
530
573
  }
531
574
  }
532
575
 
package/src/system.js CHANGED
@@ -28,18 +28,26 @@ import TestResSelect from './components/server/TestResSelect'
28
28
  import RoleSelector from "./components/server/RoleSelector";
29
29
 
30
30
  // BAinformation备案信息展示(空不展示, 传入什么展示什么,可以传标签)
31
- export default function (val,filiale, {showLogin = false, show_daiBan = false, show_yiDi= false, BAinformation = null} = {}) {
31
+ export default function (val,filiale, {showLogin = false, show_daiBan = false, show_yiDi= false, BAinformation = null,showVersionTime=true,autoLoginout = false, autoLoginTimeOut=10*60*1000} = {}) {
32
32
  console.log(val,filiale,showLogin)
33
33
  //验证码开关赋值
34
34
  if(val!=null){
35
35
  GetLoginInfoService.Verification=val
36
36
  }
37
+ //构建时间开关赋值
38
+ if(val!=null){
39
+ GetLoginInfoService.versionTime=showVersionTime
40
+ }
37
41
  //登录提示赋值
38
42
  GetLoginInfoService.depPrompt=showLogin
39
43
  //展示待办赋值
40
44
  GetLoginInfoService.showDaiBan=show_daiBan
41
45
  //展示异地登录
42
46
  GetLoginInfoService.showYiDi=show_yiDi
47
+ //自动登出
48
+ GetLoginInfoService.autoLoginout = autoLoginout
49
+ //自动登出时长(默认10分钟)
50
+ GetLoginInfoService.autoLoginTimeOut = autoLoginTimeOut
43
51
  // 备案信息复制
44
52
  GetLoginInfoService.BAinformation = BAinformation
45
53
  Vue.use(GetLoginInfoService)
@@ -61,7 +69,7 @@ export default function (val,filiale, {showLogin = false, show_daiBan = false, s
61
69
  //资源选择
62
70
  Vue.component('res-select', ResSelect)
63
71
  Vue.component('res-select-group', ResSelectGroup)
64
- //资源选择测试
72
+ //资源选择测试
65
73
  Vue.component('test-res-select', TestResSelect)
66
74
 
67
75
  // 参数管理(新)
Binary file
File without changes
File without changes