system-clients 3.2.67 → 3.2.68-jinbin

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,105 +1,105 @@
1
- {
2
- "name": "system-clients",
3
- "version": "3.2.67",
4
- "description": "系统基础框架",
5
- "main": "src/index.js",
6
- "directories": {
7
- "doc": "doc",
8
- "example": "examples",
9
- "test": "test"
10
- },
11
- "scripts": {
12
- "example": "node build/example-server.js",
13
- "dev": "node build/dev-server.js",
14
- "lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
15
- "build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
16
- "e2e": "node test/e2e/runner.js",
17
- "unit": "karma start test/unit/karma.conf.js",
18
- "makeall": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_ENV=production webpack --progress --hide-modules --config build/webpack.example.conf.js",
19
- "release": "npm set registry http://registry.npmjs.org && npm publish && npm set registry http://registry.npm.taobao.org"
20
- },
21
- "dependencies": {
22
- "base64-js": "^1.3.0",
23
- "js-base64": "^2.4.9",
24
- "less": "^2.7.1",
25
- "less-loader": "^2.2.3",
26
- "nyc": "^15.1.0",
27
- "src": "^1.1.2",
28
- "vue": "^1.0.17"
29
- },
30
- "devDependencies": {
31
- "babel-core": "^6.0.0",
32
- "babel-loader": "^6.0.0",
33
- "babel-plugin-transform-runtime": "^6.0.0",
34
- "babel-preset-es2015": "^6.0.0",
35
- "babel-preset-stage-2": "^6.0.0",
36
- "chai": "^3.5.0",
37
- "connect-history-api-fallback": "^1.1.0",
38
- "cross-env": "^1.0.7",
39
- "cross-spawn": "^2.1.5",
40
- "css-loader": "^0.23.0",
41
- "eslint": "^2.0.0",
42
- "eslint-config-standard": "^5.1.0",
43
- "eslint-friendly-formatter": "^1.2.2",
44
- "eslint-loader": "^1.3.0",
45
- "eslint-plugin-html": "^1.3.0",
46
- "eslint-plugin-promise": "^1.0.8",
47
- "eslint-plugin-standard": "^1.3.2",
48
- "eslint-plugin-vue": "^0.1.1",
49
- "eventsource-polyfill": "^0.9.6",
50
- "express": "^4.13.3",
51
- "extract-text-webpack-plugin": "^1.0.1",
52
- "file-loader": "^0.8.4",
53
- "function-bind": "^1.0.2",
54
- "html-webpack-plugin": "^2.8.1",
55
- "http-proxy-middleware": "^0.11.0",
56
- "inject-loader": "^2.0.1",
57
- "isparta-loader": "^2.0.0",
58
- "jasmine-core": "^2.4.1",
59
- "jquery": "^3.3.1",
60
- "jsencrypt": "^3.0.0-rc.1",
61
- "json-loader": "^0.5.4",
62
- "karma": "^1.4.1",
63
- "karma-chrome-launcher": "^2.2.0",
64
- "karma-coverage": "^1.1.1",
65
- "karma-mocha": "^1.3.0",
66
- "karma-sinon-chai": "^1.3.1",
67
- "karma-sourcemap-loader": "^0.3.7",
68
- "karma-spec-reporter": "0.0.31",
69
- "karma-webpack": "^2.0.2",
70
- "manage-client": "^1.4.20",
71
- "mkdirp": "^0.5.1",
72
- "mocha": "^3.2.0",
73
- "ncp": "^2.0.0",
74
- "nightwatch": "^0.8.18",
75
- "rimraf": "^2.5.0",
76
- "selenium-server": "2.52.0",
77
- "sinon": "^2.1.0",
78
- "sinon-chai": "^2.8.0",
79
- "style": "0.0.3",
80
- "style-loader": "^0.20.3",
81
- "url-loader": "^0.5.7",
82
- "vue-client": "1.24.79",
83
- "vue-hot-reload-api": "^1.2.0",
84
- "vue-html-loader": "^1.0.0",
85
- "vue-loader": "^8.2.1",
86
- "vue-resource": "^1.5.0",
87
- "vue-router": "^0.7.13",
88
- "vue-strap": "^1.0.9",
89
- "vue-style-loader": "^1.0.0",
90
- "vue-validator": "2.1.7",
91
- "webpack": "^1.12.2",
92
- "webpack-dev-middleware": "^1.4.0",
93
- "webpack-hot-middleware": "^2.6.0",
94
- "webpack-merge": "^0.8.3"
95
- },
96
- "repository": {
97
- "type": "git",
98
- "url": "https://gitee.com/aotu/System"
99
- },
100
- "keywords": [
101
- "system_clients"
102
- ],
103
- "author": "杨文宇",
104
- "license": "ISC"
105
- }
1
+ {
2
+ "name": "system-clients",
3
+ "version": "3.2.68-jinbin",
4
+ "description": "系统基础框架",
5
+ "main": "src/index.js",
6
+ "directories": {
7
+ "doc": "doc",
8
+ "example": "examples",
9
+ "test": "test"
10
+ },
11
+ "scripts": {
12
+ "example": "node build/example-server.js",
13
+ "dev": "node build/dev-server.js",
14
+ "lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
15
+ "build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
16
+ "e2e": "node test/e2e/runner.js",
17
+ "unit": "karma start test/unit/karma.conf.js",
18
+ "makeall": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_ENV=production webpack --progress --hide-modules --config build/webpack.example.conf.js",
19
+ "release": "npm set registry http://registry.npmjs.org && npm publish && npm set registry http://registry.npm.taobao.org"
20
+ },
21
+ "dependencies": {
22
+ "base64-js": "^1.3.0",
23
+ "js-base64": "^2.4.9",
24
+ "less": "^2.7.1",
25
+ "less-loader": "^2.2.3",
26
+ "nyc": "^15.1.0",
27
+ "src": "^1.1.2",
28
+ "vue": "^1.0.17"
29
+ },
30
+ "devDependencies": {
31
+ "babel-core": "^6.0.0",
32
+ "babel-loader": "^6.0.0",
33
+ "babel-plugin-transform-runtime": "^6.0.0",
34
+ "babel-preset-es2015": "^6.0.0",
35
+ "babel-preset-stage-2": "^6.0.0",
36
+ "chai": "^3.5.0",
37
+ "connect-history-api-fallback": "^1.1.0",
38
+ "cross-env": "^1.0.7",
39
+ "cross-spawn": "^2.1.5",
40
+ "css-loader": "^0.23.0",
41
+ "eslint": "^2.0.0",
42
+ "eslint-config-standard": "^5.1.0",
43
+ "eslint-friendly-formatter": "^1.2.2",
44
+ "eslint-loader": "^1.3.0",
45
+ "eslint-plugin-html": "^1.3.0",
46
+ "eslint-plugin-promise": "^1.0.8",
47
+ "eslint-plugin-standard": "^1.3.2",
48
+ "eslint-plugin-vue": "^0.1.1",
49
+ "eventsource-polyfill": "^0.9.6",
50
+ "express": "^4.13.3",
51
+ "extract-text-webpack-plugin": "^1.0.1",
52
+ "file-loader": "^0.8.4",
53
+ "function-bind": "^1.0.2",
54
+ "html-webpack-plugin": "^2.8.1",
55
+ "http-proxy-middleware": "^0.11.0",
56
+ "inject-loader": "^2.0.1",
57
+ "isparta-loader": "^2.0.0",
58
+ "jasmine-core": "^2.4.1",
59
+ "jquery": "^3.3.1",
60
+ "jsencrypt": "^3.0.0-rc.1",
61
+ "json-loader": "^0.5.4",
62
+ "karma": "^1.4.1",
63
+ "karma-chrome-launcher": "^2.2.0",
64
+ "karma-coverage": "^1.1.1",
65
+ "karma-mocha": "^1.3.0",
66
+ "karma-sinon-chai": "^1.3.1",
67
+ "karma-sourcemap-loader": "^0.3.7",
68
+ "karma-spec-reporter": "0.0.31",
69
+ "karma-webpack": "^2.0.2",
70
+ "manage-client": "^1.4.20",
71
+ "mkdirp": "^0.5.1",
72
+ "mocha": "^3.2.0",
73
+ "ncp": "^2.0.0",
74
+ "nightwatch": "^0.8.18",
75
+ "rimraf": "^2.5.0",
76
+ "selenium-server": "2.52.0",
77
+ "sinon": "^2.1.0",
78
+ "sinon-chai": "^2.8.0",
79
+ "style": "0.0.3",
80
+ "style-loader": "^0.20.3",
81
+ "url-loader": "^0.5.7",
82
+ "vue-client": "1.24.79",
83
+ "vue-hot-reload-api": "^1.2.0",
84
+ "vue-html-loader": "^1.0.0",
85
+ "vue-loader": "^8.2.1",
86
+ "vue-resource": "^1.5.0",
87
+ "vue-router": "^0.7.13",
88
+ "vue-strap": "^1.0.9",
89
+ "vue-style-loader": "^1.0.0",
90
+ "vue-validator": "2.1.7",
91
+ "webpack": "^1.12.2",
92
+ "webpack-dev-middleware": "^1.4.0",
93
+ "webpack-hot-middleware": "^2.6.0",
94
+ "webpack-merge": "^0.8.3"
95
+ },
96
+ "repository": {
97
+ "type": "git",
98
+ "url": "https://gitee.com/aotu/System"
99
+ },
100
+ "keywords": [
101
+ "system_clients"
102
+ ],
103
+ "author": "杨文宇",
104
+ "license": "ISC"
105
+ }
@@ -85,7 +85,7 @@
85
85
  技术支持:西安奥枫软件有限公司
86
86
  </div>
87
87
  <div class="login-foot" v-show="$login.BAinformation">
88
- {{ $login.BAinformation }}
88
+ {{{ $login.BAinformation }}}
89
89
  </div>
90
90
 
91
91
  <modal v-if="depPromptShow" :show.sync="depPromptShow" :backdrop="false" v-ref:modal >
@@ -149,106 +149,142 @@ import {HttpResetClass} from 'vue-client'
149
149
  let daibanJson = require('../../util/Daiban.json')
150
150
 
151
151
 
152
- let saveGen = function *(self) {
152
+ let saveGen = function* (self) {
153
153
  try {
154
- if(self.$login){
154
+ if (self.$login) {
155
155
  // 账号ename,密码password,是否显示异地登陆
156
- yield self.$login.login(self.model.ename, self.model.password, self.$login.showYiDi)
156
+ yield self.$login.login(self.model.ename, self.model.password, self.$login.showYiDi);
157
157
  }
158
- if(self.$appdata){
159
- yield self.$appdata.load()
158
+ if (self.$appdata) {
159
+ yield self.$appdata.load();
160
160
  }
161
161
  if (Vue.$heatCompatibility) {
162
162
  try {
163
- if(self.$loginHeat){
164
- yield self.$loginHeat.login(self.model.ename, self.model.password)
163
+ if (self.$loginHeat) {
164
+ yield self.$loginHeat.login(self.model.ename, self.model.password);
165
165
  }
166
- if(self.$appdataHeat){
167
- yield self.$appdataHeat.load()
166
+ if (self.$appdataHeat) {
167
+ yield self.$appdataHeat.load();
168
168
  }
169
169
  } catch (e) {
170
- console.log('热力系统登陆失败!')
170
+ console.log("热力系统登陆失败!");
171
171
  }
172
172
  }
173
- yield self.$getConfig(self, 'Login')
174
- console.log('登录配置', self.config)
173
+ yield self.$getConfig(self, "Login");
174
+ console.log("登录配置", self.config);
175
+
175
176
  if (self.config.isMac) {
176
177
  // 获取该登录人分公司下的mac配置
177
- let getMacs = yield self.$resetpost('rs/sql/equipmentQuery', {data: {condition: `f_filialeids like '%${self.$login.f.f_orgids}%'`}}, {
178
- resolveMsg: null,
179
- rejectMsg: null
180
- }).catch(() => {
181
- throw new Error('获取mac配置失败')
182
- })
183
- console.log('MAC地址信息', getMacs)
178
+ let getMacs = yield self.$resetpost(
179
+ "rs/sql/equipmentQuery",
180
+ { data: { condition: `f_filialeids like '%${self.$login.f.f_orgids}%'` } },
181
+ {
182
+ resolveMsg: null,
183
+ rejectMsg: null,
184
+ }
185
+ ).catch(() => {
186
+ throw new Error("获取mac配置失败");
187
+ });
188
+ console.log("MAC地址信息", getMacs);
189
+
184
190
  // 获取本地mac地址
185
- let getLocalMac = yield self.$resetget('http://127.0.0.1:8003/loadmac', {
191
+ let getLocalMac = yield self.$resetget("http://127.0.0.1:8003/loadmac", {
186
192
  resolveMsg: null,
187
- rejectMsg: null
193
+ rejectMsg: null,
188
194
  }).catch(() => {
189
- throw new Error('获取本地mac配置失败')
190
- })
191
- console.log('本地MAC地址信息', getLocalMac)
195
+ throw new Error("获取本地mac配置失败");
196
+ });
197
+ console.log("本地MAC地址信息", getLocalMac);
198
+
192
199
  // 对Mac地址进行匹配
193
- let macValidate = false
200
+ let macValidate = false;
194
201
  for (let i = 0; i < getLocalMac.data.mac.length; i++) {
195
202
  for (let j = 0; j < getMacs.data.length; j++) {
196
203
  if (getMacs.data[j].f_mac_number.toLocaleUpperCase() === getLocalMac.data.mac[i]) {
197
- macValidate = true
204
+ macValidate = true;
198
205
  }
199
206
  }
200
207
  }
201
208
  if (!macValidate) {
202
- throw new Error('Mac地址验证失败, 请联系管理员!!')
209
+ throw new Error("Mac地址验证失败, 请联系管理员!!");
203
210
  }
204
211
  }
205
- console.log(self.$login.depPrompt)
206
- // 弱口令验证
207
- //跳转过来的不进行验证
208
- if ((!self.otherLogin) && self.config.weakPassword && !(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(self.model.password))) {
209
- self.$showMessage('登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!', ['confirm']).then((res) => {
210
- self.modifyPwShow = true
211
- })
212
- } else if ((!self.otherLogin) && self.$login.depPrompt) {
213
- self.depPromptShow = true
214
- if (self.$login.showDaiBan && self.$login.r.includes('展示预约信息')){
215
- // 获取待办
216
- self.getDaiBan()
217
- }
218
- if (self.$login.showDaiBan && self.$login.r.includes('登录预约信息')){
219
- // 获取待办 在util下有个Daiban.jsond 文件 ,在里面进行配置,在功能权限界面增加登录预约信息
220
- self.getDaiBanA()
221
- }
212
+ console.log(self.$login.depPrompt);
213
+
214
+ // 强口令验证
215
+ // 跳转过来的不进行验证
216
+ console.log("self===============");
217
+ console.log(self.$login);
218
+
219
+ if (
220
+ !self.otherLogin &&
221
+ self.config.weakPassword &&
222
+ !/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?])[a-zA-Z\d!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]{8,16}$/.test(
223
+ self.model.password
224
+ )
225
+ ) {
226
+ self.$showMessage("登录系统: 此账户的密码过于简单,请修改密码后重新登陆!!!", ["confirm"]).then((res) => {
227
+ self.modifyPwShow = true;
228
+ });
222
229
  } else {
223
- self.$goto('home-page', {functions: self.$login.f,config: self.config})
224
- if (self.$login) {
225
- console.log('登录信息', self.$login.f)
226
- global.login=self.$login.f
227
- console.log('登录信息', global.login)
230
+ // **新增:密码修改时间检查逻辑**
231
+ const lastModTime = self.$login.f.f_last_modification_time;
232
+ if (lastModTime) {
233
+ const lastModDate = new Date(lastModTime);
234
+ if (isNaN(lastModDate)) {
235
+ throw new Error("密码修改时间格式无效,请联系管理员!");
236
+ }
237
+ const currentDate = new Date();
238
+ const daysSinceLastMod = Math.floor((currentDate - lastModDate) / (1000 * 60 * 60 * 24));
239
+ if (daysSinceLastMod >= 90) {
240
+ self.modifyPwShow = true; // 弹出修改密码的提示框
241
+ throw new Error("您的密码已超过90天未更改,请修改后重新登录!");
242
+ }
243
+ } else {
244
+ console.warn("未找到密码修改时间字段,跳过密码过期检查。");
245
+ }
246
+
247
+ if (!self.otherLogin && self.$login.depPrompt) {
248
+ self.depPromptShow = true;
249
+ if (self.$login.showDaiBan && self.$login.r.includes("展示预约信息")) {
250
+ // 获取待办
251
+ self.getDaiBan();
252
+ }
253
+ if (self.$login.showDaiBan && self.$login.r.includes("登录预约信息")) {
254
+ // 获取待办 在util下有个Daiban.jsond 文件 ,在里面进行配置,在功能权限界面增加登录预约信息
255
+ self.getDaiBanA();
256
+ }
257
+ } else {
258
+ self.$goto("home-page", { functions: self.$login.f, config: self.config });
259
+ if (self.$login) {
260
+ console.log("登录信息", self.$login.f);
261
+ global.login = self.$login.f;
262
+ console.log("登录信息", global.login);
263
+ }
228
264
  }
229
265
  }
230
266
  } catch (ret) {
231
- console.error('登录失败', ret)
232
- let msg
267
+ console.error("登录失败", ret);
268
+ let msg;
233
269
  if (ret instanceof Error) {
234
- msg = ret
270
+ msg = ret;
235
271
  }
236
272
  if (ret.status === 0) {
237
- msg = '服务连接错误,请确认服务状态'
273
+ msg = "服务连接错误,请确认服务状态";
238
274
  } else if (ret.status === 401) {
239
- msg = ret.data
275
+ msg = ret.data;
240
276
  } else if (ret.status === 710) {
241
- msg = ret.data
277
+ msg = ret.data;
242
278
  } else if (ret.status === 555) {
243
- msg = ret.data
279
+ msg = ret.data;
244
280
  }
245
- self.createCode()
246
- self.picLyanzhengma = ''
247
- yield self.$showMessage(msg)
248
- self.model.ename = ''
249
- self.model.password = ''
250
- self.login = false
251
- $('form').fadeIn(500)
281
+ self.createCode();
282
+ self.picLyanzhengma = "";
283
+ yield self.$showMessage(msg);
284
+ self.model.ename = "";
285
+ self.model.password = "";
286
+ self.login = false;
287
+ $("form").fadeIn(500);
252
288
  }
253
289
  }
254
290
  export default {
@@ -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位数字与字母与字符组合</span>
29
29
  <span v-if="$v.newpassword.chinesePassword">密码不能包含中文</span>
30
30
  </div>
31
31
  </div>