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 +105 -105
- package/src/components/server/Login.vue +100 -64
- package/src/components/server/ModifyPw.vue +2 -2
- package/src/filiale/yuchuan/Main.vue +864 -869
- package/src/plugins/validation.js +1 -1
package/package.json
CHANGED
@@ -1,105 +1,105 @@
|
|
1
|
-
{
|
2
|
-
"name": "system-clients",
|
3
|
-
"version": "3.2.
|
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
|
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,
|
174
|
-
console.log(
|
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(
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
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(
|
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(
|
190
|
-
})
|
191
|
-
console.log(
|
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(
|
209
|
+
throw new Error("Mac地址验证失败, 请联系管理员!!");
|
203
210
|
}
|
204
211
|
}
|
205
|
-
console.log(self.$login.depPrompt)
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
self.
|
214
|
-
|
215
|
-
|
216
|
-
self.
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
self.
|
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
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
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(
|
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
|
-
$(
|
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">新的密码: </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:
|
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
|
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>
|